root / HServer / 00.Server / 00.Program / node_modules / uid-safe / index.js
이력 | 보기 | 이력해설 | 다운로드 (1.89 KB)
1 |
/*!
|
---|---|
2 |
* uid-safe
|
3 |
* Copyright(c) 2014 Jonathan Ong
|
4 |
* Copyright(c) 2015-2017 Douglas Christopher Wilson
|
5 |
* MIT Licensed
|
6 |
*/
|
7 |
|
8 |
'use strict'
|
9 |
|
10 |
/**
|
11 |
* Module dependencies.
|
12 |
* @private
|
13 |
*/
|
14 |
|
15 |
var randomBytes = require('random-bytes') |
16 |
|
17 |
/**
|
18 |
* Module variables.
|
19 |
* @private
|
20 |
*/
|
21 |
|
22 |
var EQUAL_END_REGEXP = /=+$/ |
23 |
var PLUS_GLOBAL_REGEXP = /\+/g |
24 |
var SLASH_GLOBAL_REGEXP = /\//g |
25 |
|
26 |
/**
|
27 |
* Module exports.
|
28 |
* @public
|
29 |
*/
|
30 |
|
31 |
module.exports = uid |
32 |
module.exports.sync = uidSync |
33 |
|
34 |
/**
|
35 |
* Create a unique ID.
|
36 |
*
|
37 |
* @param {number} length
|
38 |
* @param {function} [callback]
|
39 |
* @return {Promise}
|
40 |
* @public
|
41 |
*/
|
42 |
|
43 |
function uid (length, callback) { |
44 |
// validate callback is a function, if provided
|
45 |
if (callback !== undefined && typeof callback !== 'function') { |
46 |
throw new TypeError('argument callback must be a function') |
47 |
} |
48 |
|
49 |
// require the callback without promises
|
50 |
if (!callback && !global.Promise) {
|
51 |
throw new TypeError('argument callback is required') |
52 |
} |
53 |
|
54 |
if (callback) {
|
55 |
// classic callback style
|
56 |
return generateUid(length, callback)
|
57 |
} |
58 |
|
59 |
return new Promise(function executor (resolve, reject) { |
60 |
generateUid(length, function onUid (err, str) { |
61 |
if (err) return reject(err) |
62 |
resolve(str) |
63 |
}) |
64 |
}) |
65 |
} |
66 |
|
67 |
/**
|
68 |
* Create a unique ID sync.
|
69 |
*
|
70 |
* @param {number} length
|
71 |
* @return {string}
|
72 |
* @public
|
73 |
*/
|
74 |
|
75 |
function uidSync (length) { |
76 |
return toString(randomBytes.sync(length))
|
77 |
} |
78 |
|
79 |
/**
|
80 |
* Generate a unique ID string.
|
81 |
*
|
82 |
* @param {number} length
|
83 |
* @param {function} callback
|
84 |
* @private
|
85 |
*/
|
86 |
|
87 |
function generateUid (length, callback) { |
88 |
randomBytes(length, function (err, buf) {
|
89 |
if (err) return callback(err) |
90 |
callback(null, toString(buf))
|
91 |
}) |
92 |
} |
93 |
|
94 |
/**
|
95 |
* Change a Buffer into a string.
|
96 |
*
|
97 |
* @param {Buffer} buf
|
98 |
* @return {string}
|
99 |
* @private
|
100 |
*/
|
101 |
|
102 |
function toString (buf) { |
103 |
return buf.toString('base64') |
104 |
.replace(EQUAL_END_REGEXP, '')
|
105 |
.replace(PLUS_GLOBAL_REGEXP, '-')
|
106 |
.replace(SLASH_GLOBAL_REGEXP, '_')
|
107 |
} |