This repository has no description
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647// SPDX-License-Identifier: AGPL-3.0-or-later
import crypto from 'node:crypto';
const RANDOM_STRING_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';const RANDOM_DIGIT_ALPHABET = '0123456789';
export function randomNumericCode(length: number): string { const alphabetLength = RANDOM_DIGIT_ALPHABET.length; const rangeSize = 256 - (256 % alphabetLength); const randomBytes = new Uint8Array(length * 2); crypto.getRandomValues(randomBytes); let result = ''; let byteIndex = 0; while (result.length < length) { if (byteIndex >= randomBytes.length) { crypto.getRandomValues(randomBytes); byteIndex = 0; } const randomByte = randomBytes[byteIndex++]!; if (randomByte >= rangeSize) continue; result += RANDOM_DIGIT_ALPHABET.charAt(randomByte % alphabetLength); } return result;}
export function randomString(length: number) { const alphabetLength = RANDOM_STRING_ALPHABET.length; const rangeSize = 256 - (256 % alphabetLength); const randomBytes = new Uint8Array(length * 2); crypto.getRandomValues(randomBytes); let result = ''; let byteIndex = 0; while (result.length < length) { if (byteIndex >= randomBytes.length) { crypto.getRandomValues(randomBytes); byteIndex = 0; } const randomByte = randomBytes[byteIndex++]; if (randomByte >= rangeSize) { continue; } result += RANDOM_STRING_ALPHABET.charAt(randomByte % alphabetLength); } return result;}