summaryrefslogtreecommitdiff
path: root/node_modules/nanoid/async/index.browser.cjs
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/nanoid/async/index.browser.cjs')
-rw-r--r--node_modules/nanoid/async/index.browser.cjs34
1 files changed, 34 insertions, 0 deletions
diff --git a/node_modules/nanoid/async/index.browser.cjs b/node_modules/nanoid/async/index.browser.cjs
new file mode 100644
index 0000000..7e5bba8
--- /dev/null
+++ b/node_modules/nanoid/async/index.browser.cjs
@@ -0,0 +1,34 @@
+let random = async bytes => crypto.getRandomValues(new Uint8Array(bytes))
+let customAlphabet = (alphabet, defaultSize = 21) => {
+ let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1
+ let step = -~((1.6 * mask * defaultSize) / alphabet.length)
+ return async (size = defaultSize) => {
+ let id = ''
+ while (true) {
+ let bytes = crypto.getRandomValues(new Uint8Array(step))
+ let i = step
+ while (i--) {
+ id += alphabet[bytes[i] & mask] || ''
+ if (id.length === size) return id
+ }
+ }
+ }
+}
+let nanoid = async (size = 21) => {
+ let id = ''
+ let bytes = crypto.getRandomValues(new Uint8Array(size))
+ while (size--) {
+ let byte = bytes[size] & 63
+ if (byte < 36) {
+ id += byte.toString(36)
+ } else if (byte < 62) {
+ id += (byte - 26).toString(36).toUpperCase()
+ } else if (byte < 63) {
+ id += '_'
+ } else {
+ id += '-'
+ }
+ }
+ return id
+}
+module.exports = { nanoid, customAlphabet, random }