{"version":3,"file":"password.mjs","names":["result: PasswordValidation"],"sources":["../../../../../src/internal/clerk-js/passwords/password.ts"],"sourcesContent":["import type { PasswordSettingsData, PasswordValidation, ValidatePasswordCallbacks, ZxcvbnResult } from '@/types';\nimport { noop } from '@/utils';\n\nimport { createValidateComplexity } from './complexity';\nimport { createValidatePasswordStrength } from './strength';\n\ntype zxcvbnFN = (password: string, userInputs?: (string | number)[]) => ZxcvbnResult;\n\nexport type UsePasswordConfig = PasswordSettingsData & {\n validatePassword: boolean;\n};\n\nexport type UsePasswordCbs = {\n onValidationError?: (error: string | undefined) => void;\n onValidationSuccess?: () => void;\n onValidationWarning?: (warning: string) => void;\n onValidationInfo?: (info: string) => void;\n onValidationComplexity?: (b: boolean) => void;\n};\n\nexport const createValidatePassword = (\n loadZxcvbn: () => Promise,\n config: UsePasswordConfig,\n callbacks?: ValidatePasswordCallbacks,\n) => {\n const { onValidation = noop, onValidationComplexity = noop } = callbacks || {};\n const { show_zxcvbn, validatePassword: validatePasswordProp } = config;\n const getComplexity = createValidateComplexity(config);\n const getScore = createValidatePasswordStrength(config);\n let result: PasswordValidation = {} satisfies PasswordValidation;\n\n return (password: string, internalCallbacks?: ValidatePasswordCallbacks) => {\n const {\n onValidation: internalOnValidation = onValidation,\n onValidationComplexity: internalOnValidationComplexity = onValidationComplexity,\n } = internalCallbacks || {};\n if (!validatePasswordProp) {\n return;\n }\n\n /**\n * Validate Complexity\n */\n const failedValidationsComplexity = getComplexity(password);\n internalOnValidationComplexity(Object.keys(failedValidationsComplexity).length === 0);\n result = {\n ...result,\n complexity: failedValidationsComplexity,\n };\n /**\n * Validate score\n */\n if (show_zxcvbn) {\n /**\n * Lazy load zxcvbn without preventing a complexityError to be thrown if it exists\n */\n void loadZxcvbn().then(zxcvbn => {\n const setPasswordScore = getScore(zxcvbn);\n const strength = setPasswordScore(password);\n\n result = {\n ...result,\n strength,\n };\n internalOnValidation({\n ...result,\n strength,\n });\n });\n }\n\n if (result.complexity && Object.keys(result.complexity).length === 0 && show_zxcvbn) {\n return;\n }\n\n internalOnValidation(result);\n };\n};\n"],"mappings":";;;;;;;;;;AAoBA,MAAa,0BACX,YACA,QACA,cACG;CACH,MAAM,EAAE,eAAe,MAAM,yBAAyB,SAAS,aAAa,EAAE;CAC9E,MAAM,EAAE,aAAa,kBAAkB,yBAAyB;CAChE,MAAM,gBAAgB,yBAAyB,OAAO;CACtD,MAAM,WAAW,+BAA+B,OAAO;CACvD,IAAIA,SAA6B,EAAE;AAEnC,SAAQ,UAAkB,sBAAkD;EAC1E,MAAM,EACJ,cAAc,uBAAuB,cACrC,wBAAwB,iCAAiC,2BACvD,qBAAqB,EAAE;AAC3B,MAAI,CAAC,qBACH;;;;EAMF,MAAM,8BAA8B,cAAc,SAAS;AAC3D,iCAA+B,OAAO,KAAK,4BAA4B,CAAC,WAAW,EAAE;AACrF,WAAS;GACP,GAAG;GACH,YAAY;GACb;;;;AAID,MAAI;;;;AAIF,EAAK,YAAY,CAAC,MAAK,WAAU;GAE/B,MAAM,WADmB,SAAS,OAAO,CACP,SAAS;AAE3C,YAAS;IACP,GAAG;IACH;IACD;AACD,wBAAqB;IACnB,GAAG;IACH;IACD,CAAC;IACF;AAGJ,MAAI,OAAO,cAAc,OAAO,KAAK,OAAO,WAAW,CAAC,WAAW,KAAK,YACtE;AAGF,uBAAqB,OAAO"}