Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / uid-safe / index.js
1 /*!
2  * uid-safe
3  * Copyright(c) 2014 Jonathan Ong
4  * Copyright(c) 2015-2016 Douglas Christopher Wilson
5  * MIT Licensed
6  */
7
8 'use strict'
9
10 /**
11  * Module dependencies.
12  * @private
13  */
14
15 var escape = require('base64-url').escape
16 var randomBytes = require('random-bytes')
17
18 /**
19  * Module exports.
20  * @public
21  */
22
23 module.exports = uid
24 module.exports.sync = uidSync
25
26 /**
27  * Create a unique ID.
28  *
29  * @param {number} length
30  * @param {function} [callback]
31  * @return {Promise}
32  * @public
33  */
34
35 function uid (length, callback) {
36   // validate callback is a function, if provided
37   if (callback !== undefined && typeof callback !== 'function') {
38     throw new TypeError('argument callback must be a function')
39   }
40
41   // require the callback without promises
42   if (!callback && !global.Promise) {
43     throw new TypeError('argument callback is required')
44   }
45
46   if (callback) {
47     // classic callback style
48     return generateUid(length, callback)
49   }
50
51   return new Promise(function executor (resolve, reject) {
52     generateUid(length, function onUid (err, str) {
53       if (err) return reject(err)
54       resolve(str)
55     })
56   })
57 }
58
59 /**
60  * Create a unique ID sync.
61  *
62  * @param {number} length
63  * @return {string}
64  * @public
65  */
66
67 function uidSync (length) {
68   return toString(randomBytes.sync(length))
69 }
70
71 /**
72  * Generate a unique ID string.
73  *
74  * @param {number} length
75  * @param {function} callback
76  * @private
77  */
78
79 function generateUid (length, callback) {
80   randomBytes(length, function (err, buf) {
81     if (err) return callback(err)
82     callback(null, toString(buf))
83   })
84 }
85
86 /**
87  * Change a Buffer into a string.
88  *
89  * @param {Buffer} buf
90  * @return {string}
91  * @private
92  */
93
94 function toString (buf) {
95   return escape(buf.toString('base64'))
96 }