🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
38 lines
837 B
JavaScript
Executable File
38 lines
837 B
JavaScript
Executable File
import crypto from 'crypto';
|
|
import URLSearchParams from './classes/URLSearchParams.js';
|
|
import FormData from './classes/FormData.js';
|
|
|
|
const ALPHA = 'abcdefghijklmnopqrstuvwxyz';
|
|
|
|
const DIGIT = '0123456789';
|
|
|
|
const ALPHABET = {
|
|
DIGIT,
|
|
ALPHA,
|
|
ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT,
|
|
};
|
|
|
|
const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {
|
|
let str = '';
|
|
const { length } = alphabet;
|
|
const randomValues = new Uint32Array(size);
|
|
crypto.randomFillSync(randomValues);
|
|
for (let i = 0; i < size; i++) {
|
|
str += alphabet[randomValues[i] % length];
|
|
}
|
|
|
|
return str;
|
|
};
|
|
|
|
export default {
|
|
isNode: true,
|
|
classes: {
|
|
URLSearchParams,
|
|
FormData,
|
|
Blob: (typeof Blob !== 'undefined' && Blob) || null,
|
|
},
|
|
ALPHABET,
|
|
generateString,
|
|
protocols: ['http', 'https', 'file', 'data'],
|
|
};
|