it-tools/src/tools/token-generator/token-generator.service.ts

29 lines
758 B
TypeScript
Raw Normal View History

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