'use strict'; var helper = require('./utils/helper.cjs'); var matching$7 = require('./matcher/date/matching.cjs'); var matching$6 = require('./matcher/dictionary/matching.cjs'); var l33t = require('./matcher/dictionary/variants/matching/l33t.cjs'); var reverse = require('./matcher/dictionary/variants/matching/reverse.cjs'); var matching$5 = require('./matcher/regex/matching.cjs'); var matching$4 = require('./matcher/repeat/matching.cjs'); var matching$3 = require('./matcher/sequence/matching.cjs'); var matching$2 = require('./matcher/spatial/matching.cjs'); var matching$1 = require('./matcher/separator/matching.cjs'); var matching = require('./matcher/wordSequence/matching.cjs'); /* * ------------------------------------------------------------------------------- * Omnimatch combine matchers --------------------------------------------------------------- * ------------------------------------------------------------------------------- */ class Matching { constructor(options) { this.options = options; this.matchers = {}; this.matchers = { date: new matching$7(this.options), dictionary: new matching$6(this.options), dictionaryL33t: new l33t(this.options), dictionaryReverse: new reverse(this.options), regex: new matching$5(this.options), repeat: new matching$4(this.options), sequence: new matching$3(this.options), spatial: new matching$2(this.options), separator: new matching$1(this.options), wordSequence: new matching(this.options) }; Object.entries(this.options.matchers).forEach(([key, Matcher]) => { this.matchers[key] = new Matcher.Matching(this.options); }); } processResult(matches, promises, result) { if (result instanceof Promise) { const wrappedPromise = result.then(response => { helper.extend(matches, response); return response; }); promises.push(wrappedPromise); } else { helper.extend(matches, result); } } handlePromises(matches, promises) { if (promises.length > 0) { return new Promise((resolve, reject) => { Promise.all(promises).then(() => { resolve(helper.sorted(matches)); }).catch(error => { // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors reject(error); }); }); } return helper.sorted(matches); } match(password, userInputsOptions) { const matches = []; const promises = []; Object.values(this.matchers).forEach(matcher => { const result = matcher.match({ password, omniMatch: this, userInputsOptions }); // extends matches and promises by references this.processResult(matches, promises, result); }); return this.handlePromises(matches, promises); } } module.exports = Matching; //# sourceMappingURL=Matching.cjs.map