| 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' ] |
| }; |
|
|