Roughing out the demo app
This commit is contained in:
56
node_modules/nanoid/async/format.js
generated
vendored
Normal file
56
node_modules/nanoid/async/format.js
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* Secure random string generator with custom alphabet.
|
||||
*
|
||||
* Alphabet must contain 256 symbols or less. Otherwise, the generator
|
||||
* will not be secure.
|
||||
*
|
||||
* @param {asyncGenerator} random The random bytes generator.
|
||||
* @param {string} alphabet Symbols to be used in new random string.
|
||||
* @param {size} size The number of symbols in new random string.
|
||||
*
|
||||
* @return {Promise} Promise with random string.
|
||||
*
|
||||
* @example
|
||||
* const formatAsync = require('nanoid/async/format')
|
||||
*
|
||||
* function random (size) {
|
||||
* const result = []
|
||||
* for (let i = 0; i < size; i++) {
|
||||
* result.push(randomByte())
|
||||
* }
|
||||
* return Promise.resolve(result)
|
||||
* }
|
||||
*
|
||||
* formatAsync(random, "abcdef", 5).then(id => {
|
||||
* model.id = id //=> "fbaef"
|
||||
* })
|
||||
*
|
||||
* @name formatAsync
|
||||
* @function
|
||||
*/
|
||||
module.exports = function (random, alphabet, size) {
|
||||
var mask = (2 << 31 - Math.clz32((alphabet.length - 1) | 1)) - 1
|
||||
var step = Math.ceil(1.6 * mask * size / alphabet.length)
|
||||
size = +size
|
||||
|
||||
function tick (id) {
|
||||
return random(step).then(function (bytes) {
|
||||
for (var i = step; i--;) {
|
||||
var byte = bytes[i] & mask
|
||||
if (alphabet[byte]) {
|
||||
id += alphabet[byte]
|
||||
if (id.length === size) return id
|
||||
}
|
||||
}
|
||||
return tick(id)
|
||||
})
|
||||
}
|
||||
|
||||
return tick('')
|
||||
}
|
||||
|
||||
/**
|
||||
* @callback asyncGenerator
|
||||
* @param {number} bytes The number of bytes to generate.
|
||||
* @return {Promise} Promise with array of random bytes.
|
||||
*/
|
||||
24
node_modules/nanoid/async/generate.js
generated
vendored
Normal file
24
node_modules/nanoid/async/generate.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
var random = require('./random')
|
||||
var format = require('./format')
|
||||
|
||||
/**
|
||||
* Low-level function to change alphabet and ID size.
|
||||
*
|
||||
* Alphabet must contain 256 symbols or less. Otherwise, the generator
|
||||
* will not be secure.
|
||||
*
|
||||
* @param {string} alphabet Symbols to be used in ID.
|
||||
* @param {number} size The number of symbols in ID.
|
||||
*
|
||||
* @return {Promise} Promise with random string.
|
||||
*
|
||||
* @example
|
||||
* const generateAsync = require('nanoid/async/generate')
|
||||
* generateAsync('0123456789абвгдеё', 5).then(id => {
|
||||
* model.id = id //=> "8ё56а"
|
||||
* })
|
||||
*
|
||||
* @name generateAsync
|
||||
* @function
|
||||
*/
|
||||
module.exports = format.bind(null, random)
|
||||
17
node_modules/nanoid/async/index.browser.js
generated
vendored
Normal file
17
node_modules/nanoid/async/index.browser.js
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
var crypto = self.crypto || self.msCrypto
|
||||
|
||||
/*
|
||||
* This alphabet uses a-z A-Z 0-9 _- symbols.
|
||||
* Symbols order was changed for better gzip compression.
|
||||
*/
|
||||
var url = 'Uint8ArModuleSymbhasOw-012345679BCDEFGHIJKLNPQRTVWXYZ_cfgjkpqvxz'
|
||||
|
||||
module.exports = function (size) {
|
||||
size = size || 21
|
||||
var id = ''
|
||||
var bytes = crypto.getRandomValues(new Uint8Array(size))
|
||||
while (size--) {
|
||||
id += url[bytes[size] & 63]
|
||||
}
|
||||
return Promise.resolve(id)
|
||||
}
|
||||
32
node_modules/nanoid/async/index.js
generated
vendored
Normal file
32
node_modules/nanoid/async/index.js
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
var random = require('./random')
|
||||
var url = require('../url')
|
||||
|
||||
/**
|
||||
* Generate secure URL-friendly unique ID. Non-blocking version.
|
||||
*
|
||||
* By default, ID will have 21 symbols to have a collision probability similar
|
||||
* to UUID v4.
|
||||
*
|
||||
* @param {number} [size=21] The number of symbols in ID.
|
||||
*
|
||||
* @return {Promise} Promise with random string.
|
||||
*
|
||||
* @example
|
||||
* const nanoidAsync = require('nanoid/async')
|
||||
* nanoidAsync.then(id => {
|
||||
* model.id = id
|
||||
* })
|
||||
*
|
||||
* @name async
|
||||
* @function
|
||||
*/
|
||||
module.exports = function (size) {
|
||||
size = size || 21
|
||||
return random(size).then(function (bytes) {
|
||||
var id = ''
|
||||
while (size--) {
|
||||
id += url[bytes[size] & 63]
|
||||
}
|
||||
return id
|
||||
})
|
||||
}
|
||||
5
node_modules/nanoid/async/random.browser.js
generated
vendored
Normal file
5
node_modules/nanoid/async/random.browser.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
var crypto = self.crypto || self.msCrypto
|
||||
|
||||
module.exports = function (bytes) {
|
||||
return Promise.resolve(crypto.getRandomValues(new Uint8Array(bytes)))
|
||||
}
|
||||
27
node_modules/nanoid/async/random.js
generated
vendored
Normal file
27
node_modules/nanoid/async/random.js
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
var crypto = require('crypto')
|
||||
|
||||
if (crypto.randomFill) {
|
||||
module.exports = function (bytes) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
crypto.randomFill(Buffer.allocUnsafe(bytes), function (err, buf) {
|
||||
if (err) {
|
||||
reject(err)
|
||||
} else {
|
||||
resolve(buf)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
} else {
|
||||
module.exports = function (bytes) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
crypto.randomBytes(bytes, function (err, buf) {
|
||||
if (err) {
|
||||
reject(err)
|
||||
} else {
|
||||
resolve(buf)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
14
node_modules/nanoid/async/random.rn.js
generated
vendored
Normal file
14
node_modules/nanoid/async/random.rn.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
var random
|
||||
try {
|
||||
random = require('expo-random')
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
'React-Native does not have a built-in secure random generator. ' +
|
||||
'Install `expo-random` locally or ' +
|
||||
'if you don’t need unpredictable IDs, you can use `nanoid/non-secure`.'
|
||||
)
|
||||
}
|
||||
|
||||
module.exports = function (bytes) {
|
||||
return random.getRandomBytesAsync(bytes)
|
||||
}
|
||||
Reference in New Issue
Block a user