diff options
| author | nanalelfe <nargiza.nosirova@mail.utoronto.ca> | 2016-07-21 06:40:43 +0000 |
|---|---|---|
| committer | nanalelfe <nargiza.nosirova@mail.utoronto.ca> | 2016-07-21 06:40:43 +0000 |
| commit | 39ef1b6fd37bb9b725676d3a98f13e3450798200 (patch) | |
| tree | eeec60d5b56e5c69a3ba251d98a27f4684d47066 /node_modules/uid-safe/index.js | |
| parent | ee8e1a13b60a6adfdc691b2a9b57289188397641 (diff) | |
| parent | 76757d227f64e35a093d47facc260d9266e2bf38 (diff) | |
MERGED
Diffstat (limited to 'node_modules/uid-safe/index.js')
| -rw-r--r-- | node_modules/uid-safe/index.js | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/node_modules/uid-safe/index.js b/node_modules/uid-safe/index.js new file mode 100644 index 0000000..9bef704 --- /dev/null +++ b/node_modules/uid-safe/index.js @@ -0,0 +1,96 @@ +/*! + * uid-safe + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var escape = require('base64-url').escape +var randomBytes = require('random-bytes') + +/** + * Module exports. + * @public + */ + +module.exports = uid +module.exports.sync = uidSync + +/** + * Create a unique ID. + * + * @param {number} length + * @param {function} [callback] + * @return {Promise} + * @public + */ + +function uid(length, callback) { + // validate callback is a function, if provided + if (callback !== undefined && typeof callback !== 'function') { + throw new TypeError('argument callback must be a function') + } + + // require the callback without promises + if (!callback && !global.Promise) { + throw new TypeError('argument callback is required') + } + + if (callback) { + // classic callback style + return generateUid(length, callback) + } + + return new Promise(function executor(resolve, reject) { + generateUid(length, function onUid(err, str) { + if (err) return reject(err) + resolve(str) + }) + }) +} + +/** + * Create a unique ID sync. + * + * @param {number} length + * @return {string} + * @public + */ + +function uidSync(length) { + return toString(randomBytes.sync(length)) +} + +/** + * Generate a unique ID string. + * + * @param {number} length + * @param {function} callback + * @private + */ + +function generateUid(length, callback) { + randomBytes(length, function (err, buf) { + if (err) return callback(err) + callback(null, toString(buf)) + }) +} + +/** + * Change a Buffer into a string. + * + * @param {Buffer} buf + * @return {string} + * @private + */ + +function toString(buf) { + return escape(buf.toString('base64')) +} |
