Son CV dans un terminal web en Javascript! https://terminal-cv.gregandev.fr
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

27 lines
759 B

import { getRandomBytesAsync } from 'expo-random'
import { urlAlphabet } from '../url-alphabet/index.js'
let random = getRandomBytesAsync
2 years ago
let customAlphabet = (alphabet, size) => {
let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1
2 years ago
let step = Math.ceil((1.6 * mask * size) / alphabet.length)
let tick = id =>
random(step).then(bytes => {
let i = step
while (i--) {
id += alphabet[bytes[i] & mask] || ''
if (id.length === size) return id
}
2 years ago
return tick(id)
})
2 years ago
return () => tick('')
}
let nanoid = (size = 21) =>
random(size).then(bytes => {
let id = ''
while (size--) {
id += urlAlphabet[bytes[size] & 63]
}
return id
})
export { nanoid, customAlphabet, random }