refactor(api): tidy the api and shared packages (#2733)

This commit is contained in:
Hampus authored and GitHub committed 2026-09-13 17:37:48 +02:00
1 parent 580401d2dc
commit 5afbf67a70
333 files changed
+10180 -7910

No files matched your search

+11 -22
View File
@@ -1,12 +1,14 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import assert from 'node:assert/strict';
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;
function randomFromAlphabet(length: number, alphabet: string): string {
assert(Number.isSafeInteger(length) && length >= 0, 'Random string length must be a nonnegative safe integer');
const alphabetLength = alphabet.length;
const rangeSize = 256 - (256 % alphabetLength);
const randomBytes = new Uint8Array(length * 2);
crypto.getRandomValues(randomBytes);
@@ -19,28 +21,15 @@ export function randomNumericCode(length: number): string {
}
const randomByte = randomBytes[byteIndex++]!;
if (randomByte >= rangeSize) continue;
result += RANDOM_DIGIT_ALPHABET.charAt(randomByte % alphabetLength);
result += 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;
export function randomNumericCode(length: number): string {
return randomFromAlphabet(length, RANDOM_DIGIT_ALPHABET);
}
export function randomString(length: number): string {
return randomFromAlphabet(length, RANDOM_STRING_ALPHABET);
}