@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
1 lines • 1.87 kB
Source Map (JSON)
{"version":3,"file":"strength.mjs","names":[],"sources":["../../../../src/internal/clerk-js/passwords/strength.ts"],"sourcesContent":["import type { PasswordSettingsData, ZxcvbnResult } from '@/types';\n\ntype zxcvbnFN = (password: string, userInputs?: (string | number)[]) => ZxcvbnResult;\n\ntype PasswordStrength =\n | {\n state: 'excellent';\n result: ZxcvbnResult;\n }\n | {\n state: 'pass' | 'fail';\n keys: string[];\n result: ZxcvbnResult;\n };\n\ntype CreateValidatePasswordStrength = (\n options: Pick<PasswordSettingsData, 'min_zxcvbn_strength'> & { onResult?: (res: ZxcvbnResult) => void },\n) => (zxcvbn: zxcvbnFN) => (password: string) => PasswordStrength;\n\nexport const createValidatePasswordStrength: CreateValidatePasswordStrength = ({ min_zxcvbn_strength, onResult }) => {\n return zxcvbn => password => {\n const result = zxcvbn(password);\n onResult?.(result);\n\n if (result.score >= min_zxcvbn_strength && result.score < 3) {\n return {\n state: 'pass',\n keys: ['unstable__errors.zxcvbn.couldBeStronger'],\n result,\n };\n }\n\n if (result.score >= min_zxcvbn_strength) {\n return {\n state: 'excellent',\n result,\n };\n }\n\n return {\n state: 'fail',\n keys: [\n 'unstable__errors.zxcvbn.notEnough',\n ...result.feedback.suggestions.map(er => `unstable__errors.zxcvbn.suggestions.${er}` as any),\n ],\n result,\n };\n };\n};\n"],"mappings":";AAmBA,MAAa,kCAAkE,EAAE,qBAAqB,eAAe;CACnH,QAAO,YAAU,aAAY;EAC3B,MAAM,SAAS,OAAO,QAAQ;EAC9B,WAAW,MAAM;EAEjB,IAAI,OAAO,SAAS,uBAAuB,OAAO,QAAQ,GACxD,OAAO;GACL,OAAO;GACP,MAAM,CAAC,yCAAyC;GAChD;EACF;EAGF,IAAI,OAAO,SAAS,qBAClB,OAAO;GACL,OAAO;GACP;EACF;EAGF,OAAO;GACL,OAAO;GACP,MAAM,CACJ,qCACA,GAAG,OAAO,SAAS,YAAY,KAAI,OAAM,uCAAuC,IAAW,CAC7F;GACA;EACF;CACF;AACF"}