2022-04-04 00:25:29 +02:00
|
|
|
import { shuffleString } from '@/utils/random';
|
|
|
|
|
|
|
|
export function createToken({
|
|
|
|
withUppercase = true,
|
|
|
|
withLowercase = true,
|
|
|
|
withNumbers = true,
|
|
|
|
withSymbols = false,
|
|
|
|
length = 64,
|
2022-08-24 00:09:16 +02:00
|
|
|
alphabet,
|
2022-04-04 00:25:29 +02:00
|
|
|
}: {
|
|
|
|
withUppercase?: boolean;
|
|
|
|
withLowercase?: boolean;
|
|
|
|
withNumbers?: boolean;
|
|
|
|
withSymbols?: boolean;
|
|
|
|
length?: number;
|
2022-08-24 00:09:16 +02:00
|
|
|
alphabet?: string;
|
2022-04-04 00:25:29 +02:00
|
|
|
}) {
|
2022-08-24 00:09:16 +02:00
|
|
|
const allAlphabet =
|
|
|
|
alphabet ??
|
|
|
|
[
|
|
|
|
...(withUppercase ? 'ABCDEFGHIJKLMOPQRSTUVWXYZ' : ''),
|
|
|
|
...(withLowercase ? 'abcdefghijklmopqrstuvwxyz' : ''),
|
|
|
|
...(withNumbers ? '0123456789' : ''),
|
|
|
|
...(withSymbols ? '.,;:!?./-"\'#{([-|\\@)]=}*+' : ''),
|
|
|
|
].join('');
|
2022-04-04 00:25:29 +02:00
|
|
|
|
2022-08-24 00:09:16 +02:00
|
|
|
return shuffleString(allAlphabet.repeat(length)).substring(0, length);
|
2022-04-04 00:25:29 +02:00
|
|
|
}
|