zxcvbn-typescript
Version:
realistic password strength estimation, updated and ported to Typescript from Dan Wheeler's zxcvbn
40 lines • 1.77 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.zxcvbn = void 0;
var matching_1 = require("./matching");
var time_estimates_1 = require("./time_estimates");
var feedback_1 = require("./feedback");
var scoring_1 = require("./scoring");
var dictionary_match_1 = require("./matching/dictionary_match");
var time = function () { return new Date().getTime(); };
function zxcvbn(password, user_inputs) {
if (user_inputs === void 0) { user_inputs = []; }
var start = time();
// reset the user inputs matcher on a per-request basis to keep things stateless
var sanitized_inputs = [];
for (var _i = 0, user_inputs_1 = user_inputs; _i < user_inputs_1.length; _i++) {
var arg = user_inputs_1[_i];
sanitized_inputs.push(arg.toString().toLowerCase());
}
dictionary_match_1.set_user_input_dictionary(sanitized_inputs);
var matches = matching_1.omnimatch(password);
var result = scoring_1.most_guessable_match_sequence(password, matches);
var calc_time = time() - start;
var attack_times = time_estimates_1.estimate_attack_times(result.guesses);
var fb = feedback_1.get_feedback(result.score, result.sequence);
return __assign(__assign(__assign({}, result), attack_times), { calc_time: calc_time, feedback: fb });
}
exports.zxcvbn = zxcvbn;
exports.default = zxcvbn;
//# sourceMappingURL=index.js.map