{"version":3,"file":"strength-DPtAse7d.mjs","names":["createValidatePasswordStrength: CreateValidatePasswordStrength"],"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,MAAaA,kCAAkE,EAAE,qBAAqB,eAAe;AACnH,SAAO,YAAU,aAAY;EAC3B,MAAM,SAAS,OAAO,SAAS;AAC/B,aAAW,OAAO;AAElB,MAAI,OAAO,SAAS,uBAAuB,OAAO,QAAQ,EACxD,QAAO;GACL,OAAO;GACP,MAAM,CAAC,0CAA0C;GACjD;GACD;AAGH,MAAI,OAAO,SAAS,oBAClB,QAAO;GACL,OAAO;GACP;GACD;AAGH,SAAO;GACL,OAAO;GACP,MAAM,CACJ,qCACA,GAAG,OAAO,SAAS,YAAY,KAAI,OAAM,uCAAuC,KAAY,CAC7F;GACD;GACD"}