@mkrause/match
Advanced tools
+205
| import "core-js/modules/es.symbol"; | ||
| import "core-js/modules/es.symbol.description"; | ||
| import "core-js/modules/es.symbol.iterator"; | ||
| import "core-js/modules/es.array.iterator"; | ||
| import "core-js/modules/es.object.assign"; | ||
| import "core-js/modules/es.object.keys"; | ||
| import "core-js/modules/es.object.to-string"; | ||
| import "core-js/modules/es.string.iterator"; | ||
| import "core-js/modules/web.dom-collections.iterator"; | ||
| function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } | ||
| function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } | ||
| function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | ||
| function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | ||
| import _ from 'lodash'; // Utility | ||
| var getSingleKey = function getSingleKey(obj) { | ||
| if (!_.isPlainObject(obj)) { | ||
| throw new Error("Error: expected object, given '".concat(JSON.stringify(obj), "'")); | ||
| } | ||
| var keys = Object.keys(obj); | ||
| if (keys.length !== 1) { | ||
| throw new Error("Error: expected object with single key, given '".concat(JSON.stringify(obj), "'")); | ||
| } | ||
| var key = keys[0]; | ||
| return { | ||
| key: key, | ||
| value: obj[key] | ||
| }; | ||
| }; // Common definitions | ||
| var defaultCase = Symbol('match.default'); | ||
| var defs = { | ||
| case: function _case(predicate, value) { | ||
| return [predicate, value]; | ||
| }, | ||
| otherwise: function otherwise(fn) { | ||
| return [defaultCase, fn]; | ||
| }, | ||
| default: defaultCase | ||
| }; // Match against an object, where each property is one case: | ||
| // match('x', { x: 1, y: 2 }) | ||
| var matchAgainstObject = function matchAgainstObject(discriminator, body, cases) { | ||
| var matchedCase; | ||
| if (cases.hasOwnProperty(discriminator)) { | ||
| matchedCase = cases[discriminator]; | ||
| } else if (cases.hasOwnProperty(defs.default)) { | ||
| matchedCase = cases[defs.default]; | ||
| } else { | ||
| throw new Error("[match.js] Unmatched case: ".concat(JSON.stringify(discriminator))); | ||
| } // If the property is a function, pass the subject body | ||
| var result; | ||
| if (_.isFunction(matchedCase)) { | ||
| result = matchedCase(body); | ||
| } else { | ||
| result = matchedCase; | ||
| } | ||
| return result; | ||
| }; // Match against a list of predicate functions: | ||
| // match({ type: 'x' }, [{ type: 'x' }, 1], [{ type: 'y' }, 2]) | ||
| var matchAgainstPredicates = function matchAgainstPredicates(discriminator, body, predicates) { | ||
| var _iteratorNormalCompletion = true; | ||
| var _didIteratorError = false; | ||
| var _iteratorError = undefined; | ||
| try { | ||
| for (var _iterator = predicates[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
| var _step$value = _slicedToArray(_step.value, 2), | ||
| predicate = _step$value[0], | ||
| predicateCase = _step$value[1]; | ||
| // If given an object | ||
| if (_.isObjectLike(predicate)) { | ||
| predicate = _.matches(predicate); | ||
| } | ||
| var matchedCase = void 0; | ||
| if (predicate === discriminator) { | ||
| matchedCase = predicateCase; | ||
| } else if (_.isFunction(predicate) && predicate(discriminator) == true) { | ||
| // Note: using weak equality (==) for predicate check | ||
| matchedCase = predicateCase; | ||
| } else if (predicate === defs.default) { | ||
| matchedCase = predicateCase; | ||
| } | ||
| if (matchedCase !== undefined) { | ||
| if (_.isFunction(matchedCase)) { | ||
| return matchedCase(body); | ||
| } else { | ||
| return matchedCase; | ||
| } | ||
| } | ||
| } // Fall-through: no match | ||
| } catch (err) { | ||
| _didIteratorError = true; | ||
| _iteratorError = err; | ||
| } finally { | ||
| try { | ||
| if (!_iteratorNormalCompletion && _iterator.return != null) { | ||
| _iterator.return(); | ||
| } | ||
| } finally { | ||
| if (_didIteratorError) { | ||
| throw _iteratorError; | ||
| } | ||
| } | ||
| } | ||
| throw new Error("[match.js] Unmatched case: ".concat(JSON.stringify(discriminator))); | ||
| }; // Create a new matcher using the given parser | ||
| var matcher = function matcher(parseSubject) { | ||
| var matcher = function matcher(subject) { | ||
| var _parseSubject = parseSubject(subject), | ||
| discriminator = _parseSubject.discriminator, | ||
| body = _parseSubject.body; | ||
| var result; | ||
| for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
| args[_key - 1] = arguments[_key]; | ||
| } | ||
| if (args.length === 1 && _.isPlainObject(args[0])) { | ||
| var cases = args[0]; | ||
| result = matchAgainstObject(discriminator, body, cases); | ||
| } else if (args.length === 1 && _.isArray(args[0])) { | ||
| var predicates = args[0]; | ||
| result = matchAgainstPredicates(discriminator, body, predicates); | ||
| } else if (args.length >= 1) { | ||
| var _predicates = args; | ||
| result = matchAgainstPredicates(discriminator, body, _predicates); | ||
| } else { | ||
| throw new Error("[match.js] Invalid arguments given"); | ||
| } | ||
| return result; | ||
| }; | ||
| return Object.assign(matcher, defs); | ||
| }; // Specific matchers | ||
| // Generic match. Accept any subject, and discriminate using the value itself | ||
| var match = matcher(function (subject) { | ||
| return { | ||
| discriminator: subject, | ||
| body: subject | ||
| }; | ||
| }); // Match on objects with a `type` property | ||
| var matchType = matcher(function (subject) { | ||
| if (!_.isObjectLike(subject)) { | ||
| throw new Error("[match.js] Expected an object, given ".concat(JSON.stringify(subject))); | ||
| } | ||
| if (!subject.hasOwnProperty('type')) { | ||
| throw new Error("[match.js] Missing 'type' property, given ".concat(JSON.stringify(subject))); | ||
| } | ||
| return { | ||
| discriminator: subject.type, | ||
| body: subject | ||
| }; | ||
| }); | ||
| var matchSingleKey = matcher(function (subject) { | ||
| if (!_.isObjectLike(subject)) { | ||
| throw new Error("[match.js] Expected an object, given ".concat(JSON.stringify(subject))); | ||
| } | ||
| var keys = Object.keys(subject); | ||
| if (keys.length !== 1) { | ||
| throw new Error("[match.js] Expected an object with a single key, given ".concat(JSON.stringify(subject))); | ||
| } | ||
| var discriminator = keys[0]; | ||
| return { | ||
| discriminator: discriminator, | ||
| body: subject[discriminator] | ||
| }; | ||
| }); | ||
| export { matcher, match, matchType, getSingleKey, matchSingleKey }; | ||
| export default match; | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXRjaC5qcyJdLCJuYW1lcyI6WyJfIiwiZ2V0U2luZ2xlS2V5Iiwib2JqIiwiaXNQbGFpbk9iamVjdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImtleXMiLCJPYmplY3QiLCJsZW5ndGgiLCJrZXkiLCJ2YWx1ZSIsImRlZmF1bHRDYXNlIiwiU3ltYm9sIiwiZGVmcyIsImNhc2UiLCJwcmVkaWNhdGUiLCJvdGhlcndpc2UiLCJmbiIsImRlZmF1bHQiLCJtYXRjaEFnYWluc3RPYmplY3QiLCJkaXNjcmltaW5hdG9yIiwiYm9keSIsImNhc2VzIiwibWF0Y2hlZENhc2UiLCJoYXNPd25Qcm9wZXJ0eSIsInJlc3VsdCIsImlzRnVuY3Rpb24iLCJtYXRjaEFnYWluc3RQcmVkaWNhdGVzIiwicHJlZGljYXRlcyIsInByZWRpY2F0ZUNhc2UiLCJpc09iamVjdExpa2UiLCJtYXRjaGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlciIsInBhcnNlU3ViamVjdCIsInN1YmplY3QiLCJhcmdzIiwiaXNBcnJheSIsImFzc2lnbiIsIm1hdGNoIiwibWF0Y2hUeXBlIiwidHlwZSIsIm1hdGNoU2luZ2xlS2V5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPQSxDQUFQLE1BQWMsUUFBZCxDLENBR0E7O0FBRUEsSUFBTUMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQUMsR0FBRyxFQUFJO0FBQ3hCLE1BQUksQ0FBQ0YsQ0FBQyxDQUFDRyxhQUFGLENBQWdCRCxHQUFoQixDQUFMLEVBQTJCO0FBQ3ZCLFVBQU0sSUFBSUUsS0FBSiwwQ0FBNENDLElBQUksQ0FBQ0MsU0FBTCxDQUFlSixHQUFmLENBQTVDLE9BQU47QUFDSDs7QUFFRCxNQUFNSyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0QsSUFBUCxDQUFZTCxHQUFaLENBQWI7O0FBQ0EsTUFBSUssSUFBSSxDQUFDRSxNQUFMLEtBQWdCLENBQXBCLEVBQXVCO0FBQ25CLFVBQU0sSUFBSUwsS0FB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QUFFYztBQUFyQyxHQUFQO0FBQ0gsQ0FUd0IsQ0FBekI7QUFXQSxJQUFNTyxjQUFjLEdBQUdULE9BQU8sQ0FBQyxVQUFBRSxPQUFPLEVBQUk7QUFDdEMsTUFBSSxDQUFDcEMsQ0FBQyxDQUFDK0IsWUFBRixDQUFlSyxPQUFmLENBQUwsRUFBOEI7QUFDMUIsVUFBTSxJQUFJaEMsS0FBSixnREFBa0RDLElBQUksQ0FBQ0MsU0FBTCxDQUFlOEIsT0FBZixDQUFsRCxFQUFOO0FBQ0g7O0FBRUQsTUFBTTdCLElBQUksR0FBR0MsTUFBTSxDQUFDRCxJQUFQLENBQVk2QixPQUFaLENBQWI7O0FBRUEsTUFBSTdCLElBQUksQ0FBQ0UsTUFBTCxLQUFnQixDQUFwQixFQUF1QjtBQUNuQixVQUFNLElBQUlMLEtBQUosa0VBQW9FQyxJQUFJLENBQUNDLFNBQUwsQ0FBZThCLE9BQWYsQ0FBcEUsRUFBTjtBQUNIOztBQUVELE1BQU1mLGFBQWEsR0FBR2QsSUFBSSxDQUFDLENBQUQsQ0FBMUI7QUFDQSxTQUFPO0FBQUVjLElBQUFBLGFBQWEsRUFBYkEsYUFBRjtBQUFpQkMsSUFBQUEsSUFBSSxFQUFFYyxPQUFPLENBQUNmLGFBQUQ7QUFBOUIsR0FBUDtBQUNILENBYjZCLENBQTlCO0FBZUEsU0FBU2EsT0FBVCxFQUFrQk0sS0FBbEIsRUFBeUJDLFNBQXpCLEVBQW9DeEMsWUFBcEMsRUFBa0QwQyxjQUFsRDtBQUNBLGVBQWVILEtBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cblxuLy8gVXRpbGl0eVxuXG5jb25zdCBnZXRTaW5nbGVLZXkgPSBvYmogPT4ge1xuICAgIGlmICghXy5pc1BsYWluT2JqZWN0KG9iaikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvcjogZXhwZWN0ZWQgb2JqZWN0LCBnaXZlbiAnJHtKU09OLnN0cmluZ2lmeShvYmopfSdgKTtcbiAgICB9XG4gICAgXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3I6IGV4cGVjdGVkIG9iamVjdCB3aXRoIHNpbmdsZSBrZXksIGdpdmVuICcke0pTT04uc3RyaW5naWZ5KG9iail9J2ApO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBrZXkgPSBrZXlzWzBdO1xuICAgIHJldHVybiB7IGtleSwgdmFsdWU6IG9ialtrZXldIH07XG59O1xuXG5cbi8vIENvbW1vbiBkZWZpbml0aW9uc1xuY29uc3QgZGVmYXVsdENhc2UgPSBTeW1ib2woJ21hdGNoLmRlZmF1bHQnKTtcbmNvbnN0IGRlZnMgPSB7XG4gICAgY2FzZTogKHByZWRpY2F0ZSwgdmFsdWUpID0+IFtwcmVkaWNhdGUsIHZhbHVlXSxcbiAgICBvdGhlcndpc2U6IGZuID0+IFtkZWZhdWx0Q2FzZSwgZm5dLFxuICAgIGRlZmF1bHQ6IGRlZmF1bHRDYXNlLFxufTtcblxuXG4vLyBNYXRjaCBhZ2FpbnN0IGFuIG9iamVjdCwgd2hlcmUgZWFjaCBwcm9wZXJ0eSBpcyBvbmUgY2FzZTpcbi8vICAgbWF0Y2goJ3gnLCB7IHg6IDEsIHk6IDIgfSlcbmNvbnN0IG1hdGNoQWdhaW5zdE9iamVjdCA9IChkaXNjcmltaW5hdG9yLCBib2R5LCBjYXNlcykgPT4ge1xuICAgIGxldCBtYXRjaGVkQ2FzZTtcbiAgICBpZiAoY2FzZXMuaGFzT3duUHJvcGVydHkoZGlzY3JpbWluYXRvcikpIHtcbiAgICAgICAgbWF0Y2hlZENhc2UgPSBjYXNlc1tkaXNjcmltaW5hdG9yXTtcbiAgICB9IGVsc2UgaWYgKGNhc2VzLmhhc093blByb3BlcnR5KGRlZnMuZGVmYXVsdCkpIHtcbiAgICAgICAgbWF0Y2hlZENhc2UgPSBjYXNlc1tkZWZzLmRlZmF1bHRdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW21hdGNoLmpzXSBVbm1hdGNoZWQgY2FzZTogJHtKU09OLnN0cmluZ2lmeShkaXNjcmltaW5hdG9yKX1gKTtcbiAgICB9XG4gICAgXG4gICAgLy8gSWYgdGhlIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24sIHBhc3MgdGhlIHN1YmplY3QgYm9keVxuICAgIGxldCByZXN1bHQ7XG4gICAgaWYgKF8uaXNGdW5jdGlvbihtYXRjaGVkQ2FzZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gbWF0Y2hlZENhc2UoYm9keSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gbWF0Y2hlZENhc2U7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBNYXRjaCBhZ2FpbnN0IGEgbGlzdCBvZiBwcmVkaWNhdGUgZnVuY3Rpb25zOlxuLy8gICBtYXRjaCh7IHR5cGU6ICd4JyB9LCBbeyB0eXBlOiAneCcgfSwgMV0sIFt7IHR5cGU6ICd5JyB9LCAyXSlcbmNvbnN0IG1hdGNoQWdhaW5zdFByZWRpY2F0ZXMgPSAoZGlzY3JpbWluYXRvciwgYm9keSwgcHJlZGljYXRlcykgPT4ge1xuICAgIGZvciAobGV0IFtwcmVkaWNhdGUsIHByZWRpY2F0ZUNhc2VdIG9mIHByZWRpY2F0ZXMpIHtcbiAgICAgICAgLy8gSWYgZ2l2ZW4gYW4gb2JqZWN0XG4gICAgICAgIGlmIChfLmlzT2JqZWN0TGlrZShwcmVkaWNhdGUpKSB7XG4gICAgICAgICAgICBwcmVkaWNhdGUgPSBfLm1hdGNoZXMocHJlZGljYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgbGV0IG1hdGNoZWRDYXNlO1xuICAgICAgICBpZiAocHJlZGljYXRlID09PSBkaXNjcmltaW5hdG9yKSB7XG4gICAgICAgICAgICBtYXRjaGVkQ2FzZSA9IHByZWRpY2F0ZUNhc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5pc0Z1bmN0aW9uKHByZWRpY2F0ZSkgJiYgcHJlZGljYXRlKGRpc2NyaW1pbmF0b3IpID09IHRydWUpIHtcbiAgICAgICAgICAgIC8vIE5vdGU6IHVzaW5nIHdlYWsgZXF1YWxpdHkgKD09KSBmb3IgcHJlZGljYXRlIGNoZWNrXG4gICAgICAgICAgICBtYXRjaGVkQ2FzZSA9IHByZWRpY2F0ZUNhc2U7XG4gICAgICAgIH0gZWxzZSBpZiAocHJlZGljYXRlID09PSBkZWZzLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIG1hdGNoZWRDYXNlID0gcHJlZGljYXRlQ2FzZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKG1hdGNoZWRDYXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChfLmlzRnVuY3Rpb24obWF0Y2hlZENhc2UpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWRDYXNlKGJvZHkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlZENhc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gRmFsbC10aHJvdWdoOiBubyBtYXRjaFxuICAgIHRocm93IG5ldyBFcnJvcihgW21hdGNoLmpzXSBVbm1hdGNoZWQgY2FzZTogJHtKU09OLnN0cmluZ2lmeShkaXNjcmltaW5hdG9yKX1gKTtcbn07XG5cblxuLy8gQ3JlYXRlIGEgbmV3IG1hdGNoZXIgdXNpbmcgdGhlIGdpdmVuIHBhcnNlclxuY29uc3QgbWF0Y2hlciA9IHBhcnNlU3ViamVjdCA9PiB7XG4gICAgY29uc3QgbWF0Y2hlciA9IChzdWJqZWN0LCAuLi5hcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGlzY3JpbWluYXRvciwgYm9keSB9ID0gcGFyc2VTdWJqZWN0KHN1YmplY3QpO1xuICAgICAgICBcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIF8uaXNQbGFpbk9iamVjdChhcmdzWzBdKSkge1xuICAgICAgICAgICAgY29uc3QgY2FzZXMgPSBhcmdzWzBdO1xuICAgICAgICAgICAgcmVzdWx0ID0gbWF0Y2hBZ2FpbnN0T2JqZWN0KGRpc2NyaW1pbmF0b3IsIGJvZHksIGNhc2VzKTtcbiAgICAgICAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PT0gMSAmJiBfLmlzQXJyYXkoYXJnc1swXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZWRpY2F0ZXMgPSBhcmdzWzBdO1xuICAgICAgICAgICAgcmVzdWx0ID0gbWF0Y2hBZ2FpbnN0UHJlZGljYXRlcyhkaXNjcmltaW5hdG9yLCBib2R5LCBwcmVkaWNhdGVzKTtcbiAgICAgICAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBwcmVkaWNhdGVzID0gYXJncztcbiAgICAgICAgICAgIHJlc3VsdCA9IG1hdGNoQWdhaW5zdFByZWRpY2F0ZXMoZGlzY3JpbWluYXRvciwgYm9keSwgcHJlZGljYXRlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFttYXRjaC5qc10gSW52YWxpZCBhcmd1bWVudHMgZ2l2ZW5gKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG1hdGNoZXIsIGRlZnMpO1xufTtcblxuXG4vLyBTcGVjaWZpYyBtYXRjaGVyc1xuXG4vLyBHZW5lcmljIG1hdGNoLiBBY2NlcHQgYW55IHN1YmplY3QsIGFuZCBkaXNjcmltaW5hdGUgdXNpbmcgdGhlIHZhbHVlIGl0c2VsZlxuY29uc3QgbWF0Y2ggPSBtYXRjaGVyKHN1YmplY3QgPT4gKHsgZGlzY3JpbWluYXRvcjogc3ViamVjdCwgYm9keTogc3ViamVjdCB9KSk7XG5cbi8vIE1hdGNoIG9uIG9iamVjdHMgd2l0aCBhIGB0eXBlYCBwcm9wZXJ0eVxuY29uc3QgbWF0Y2hUeXBlID0gbWF0Y2hlcihzdWJqZWN0ID0+IHtcbiAgICBpZiAoIV8uaXNPYmplY3RMaWtlKHN1YmplY3QpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW21hdGNoLmpzXSBFeHBlY3RlZCBhbiBvYmplY3QsIGdpdmVuICR7SlNPTi5zdHJpbmdpZnkoc3ViamVjdCl9YCk7XG4gICAgfVxuICAgIGlmICghc3ViamVjdC5oYXNPd25Qcm9wZXJ0eSgndHlwZScpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW21hdGNoLmpzXSBNaXNzaW5nICd0eXBlJyBwcm9wZXJ0eSwgZ2l2ZW4gJHtKU09OLnN0cmluZ2lmeShzdWJqZWN0KX1gKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHsgZGlzY3JpbWluYXRvcjogc3ViamVjdC50eXBlLCBib2R5OiBzdWJqZWN0IH07XG59KTtcblxuY29uc3QgbWF0Y2hTaW5nbGVLZXkgPSBtYXRjaGVyKHN1YmplY3QgPT4ge1xuICAgIGlmICghXy5pc09iamVjdExpa2Uoc3ViamVjdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbbWF0Y2guanNdIEV4cGVjdGVkIGFuIG9iamVjdCwgZ2l2ZW4gJHtKU09OLnN0cmluZ2lmeShzdWJqZWN0KX1gKTtcbiAgICB9XG4gICAgXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHN1YmplY3QpO1xuICAgIFxuICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFttYXRjaC5qc10gRXhwZWN0ZWQgYW4gb2JqZWN0IHdpdGggYSBzaW5nbGUga2V5LCBnaXZlbiAke0pTT04uc3RyaW5naWZ5KHN1YmplY3QpfWApO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBkaXNjcmltaW5hdG9yID0ga2V5c1swXTtcbiAgICByZXR1cm4geyBkaXNjcmltaW5hdG9yLCBib2R5OiBzdWJqZWN0W2Rpc2NyaW1pbmF0b3JdIH07XG59KTtcblxuZXhwb3J0IHsgbWF0Y2hlciwgbWF0Y2gsIG1hdGNoVHlwZSwgZ2V0U2luZ2xlS2V5LCBtYXRjaFNpbmdsZUtleSB9O1xuZXhwb3J0IGRlZmF1bHQgbWF0Y2g7XG4iXX0= |
+23
-11
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| exports.default = exports.matchSingleKey = exports.getSingleKey = exports.matchType = exports.match = exports.matcher = void 0; | ||
| require("core-js/modules/es.symbol"); | ||
| require("core-js/modules/es6.object.assign"); | ||
| require("core-js/modules/es.symbol.description"); | ||
| require("core-js/modules/es7.symbol.async-iterator"); | ||
| require("core-js/modules/es.symbol.iterator"); | ||
| require("core-js/modules/es6.symbol"); | ||
| require("core-js/modules/es.array.iterator"); | ||
| require("core-js/modules/web.dom.iterable"); | ||
| require("core-js/modules/es.object.assign"); | ||
| require("core-js/modules/es6.array.iterator"); | ||
| require("core-js/modules/es.object.define-property"); | ||
| require("core-js/modules/es6.object.keys"); | ||
| require("core-js/modules/es.object.keys"); | ||
| require("core-js/modules/es.object.to-string"); | ||
| require("core-js/modules/es.regexp.exec"); | ||
| require("core-js/modules/es.string.iterator"); | ||
| require("core-js/modules/es.string.match"); | ||
| require("core-js/modules/web.dom-collections.iterator"); | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| exports.default = exports.matchSingleKey = exports.getSingleKey = exports.matchType = exports.match = exports.matcher = void 0; | ||
| var _lodash = _interopRequireDefault(require("lodash")); | ||
@@ -222,2 +234,2 @@ | ||
| exports.default = _default; | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXRjaC5qcyJdLCJuYW1lcyI6WyJnZXRTaW5nbGVLZXkiLCJvYmoiLCJfIiwiaXNQbGFpbk9iamVjdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImtleXMiLCJPYmplY3QiLCJsZW5ndGgiLCJrZXkiLCJ2YWx1ZSIsImRlZmF1bHRDYXNlIiwiU3ltYm9sIiwiZGVmcyIsImNhc2UiLCJwcmVkaWNhdGUiLCJvdGhlcndpc2UiLCJmbiIsImRlZmF1bHQiLCJtYXRjaEFnYWluc3RPYmplY3QiLCJkaXNjcmltaW5hdG9yIiwiYm9keSIsImNhc2VzIiwibWF0Y2hlZENhc2UiLCJoYXNPd25Qcm9wZXJ0eSIsInJlc3VsdCIsImlzRnVuY3Rpb24iLCJtYXRjaEFnYWluc3RQcmVkaWNhdGVzIiwicHJlZGljYXRlcyIsInByZWRpY2F0ZUNhc2UiLCJpc09iamVjdExpa2UiLCJtYXRjaGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlciIsInBhcnNlU3ViamVjdCIsInN1YmplY3QiLCJhcmdzIiwiaXNBcnJheSIsImFzc2lnbiIsIm1hdGNoIiwibWF0Y2hUeXBlIiwidHlwZSIsIm1hdGNoU2luZ2xlS2V5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUdBO0FBRUEsSUFBTUEsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQUMsR0FBRyxFQUFJO0FBQ3hCLE1BQUksQ0FBQ0MsZ0JBQUVDLGFBQUYsQ0FBZ0JGLEdBQWhCLENBQUwsRUFBMkI7QUFDdkIsVUFBTSxJQUFJRyxLQUFKLDBDQUE0Q0MsSUFBSSxDQUFDQyxTQUFMLENBQWVMLEdBQWYsQ0FBNUMsT0FBTjtBQUNIOztBQUVELE1BQU1NLElBQUksR0FBR0MsTUFBTSxDQUFDRCxJQUFQLENBQVlOLEdBQVosQ0FBYjs7QUFDQSxNQUFJTSxJQUFJLENBQUNFLE1BQUwsS0FBZ0IsQ0FBcEIsRUFBdUI7QUFDbkIsVUFBTSxJQUFJTCxLQUFKLDBEQUE0REMsSUFBSSxD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QUFjLEdBQUdULE9BQU8sQ0FBQyxVQUFBRSxPQUFPLEVBQUk7QUFDdEMsTUFBSSxDQUFDbEMsZ0JBQUU2QixZQUFGLENBQWVLLE9BQWYsQ0FBTCxFQUE4QjtBQUMxQixVQUFNLElBQUloQyxLQUFKLGdEQUFrREMsSUFBSSxDQUFDQyxTQUFMLENBQWU4QixPQUFmLENBQWxELEVBQU47QUFDSDs7QUFFRCxNQUFNN0IsSUFBSSxHQUFHQyxNQUFNLENBQUNELElBQVAsQ0FBWTZCLE9BQVosQ0FBYjs7QUFFQSxNQUFJN0IsSUFBSSxDQUFDRSxNQUFMLEtBQWdCLENBQXBCLEVBQXVCO0FBQ25CLFVBQU0sSUFBSUwsS0FBSixrRUFBb0VDLElBQUksQ0FBQ0MsU0FBTCxDQUFlOEIsT0FBZixDQUFwRSxFQUFOO0FBQ0g7O0FBRUQsTUFBTWYsYUFBYSxHQUFHZCxJQUFJLENBQUMsQ0FBRCxDQUExQjtBQUNBLFNBQU87QUFBRWMsSUFBQUEsYUFBYSxFQUFiQSxhQUFGO0FBQWlCQyxJQUFBQSxJQUFJLEVBQUVjLE9BQU8sQ0FBQ2YsYUFBRDtBQUE5QixHQUFQO0FBQ0gsQ0FiNkIsQ0FBOUI7O2VBZ0JlbUIsSyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG4vLyBVdGlsaXR5XG5cbmNvbnN0IGdldFNpbmdsZUtleSA9IG9iaiA9PiB7XG4gICAgaWYgKCFfLmlzUGxhaW5PYmplY3Qob2JqKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yOiBleHBlY3RlZCBvYmplY3QsIGdpdmVuICcke0pTT04uc3RyaW5naWZ5KG9iail9J2ApO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvcjogZXhwZWN0ZWQgb2JqZWN0IHdpdGggc2luZ2xlIGtleSwgZ2l2ZW4gJyR7SlNPTi5zdHJpbmdpZnkob2JqKX0nYCk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGtleSA9IGtleXNbMF07XG4gICAgcmV0dXJuIHsga2V5LCB2YWx1ZTogb2JqW2tleV0gfTtcbn07XG5cblxuLy8gQ29tbW9uIGRlZmluaXRpb25zXG5jb25zdCBkZWZhdWx0Q2FzZSA9IFN5bWJvbCgnbWF0Y2guZGVmYXVsdCcpO1xuY29uc3QgZGVmcyA9IHtcbiAgICBjYXNlOiAocHJlZGljYXRlLCB2YWx1ZSkgPT4gW3ByZWRpY2F0ZSwgdmFsdWVdLFxuICAgIG90aGVyd2lzZTogZm4gPT4gW2RlZmF1bHRDYXNlLCBmbl0sXG4gICAgZGVmYXVsdDogZGVmYXVsdENhc2UsXG59O1xuXG5cbi8vIE1hdGNoIGFnYWluc3QgYW4gb2JqZWN0LCB3aGVyZSBlYWNoIHByb3BlcnR5IGlzIG9uZSBjYXNlOlxuLy8gICBtYXRjaCgneCcsIHsgeDogMSwgeTogMiB9KVxuY29uc3QgbWF0Y2hBZ2FpbnN0T2JqZWN0ID0gKGRpc2NyaW1pbmF0b3IsIGJvZHksIGNhc2VzKSA9PiB7XG4gICAgbGV0IG1hdGNoZWRDYXNlO1xuICAgIGlmIChjYXNlcy5oYXNPd25Qcm9wZXJ0eShkaXNjcmltaW5hdG9yKSkge1xuICAgICAgICBtYXRjaGVkQ2FzZSA9IGNhc2VzW2Rpc2NyaW1pbmF0b3JdO1xuICAgIH0gZWxzZSBpZiAoY2FzZXMuaGFzT3duUHJvcGVydHkoZGVmcy5kZWZhdWx0KSkge1xuICAgICAgICBtYXRjaGVkQ2FzZSA9IGNhc2VzW2RlZnMuZGVmYXVsdF07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbbWF0Y2guanNdIFVubWF0Y2hlZCBjYXNlOiAke0pTT04uc3RyaW5naWZ5KGRpc2NyaW1pbmF0b3IpfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBJZiB0aGUgcHJvcGVydHkgaXMgYSBmdW5jdGlvbiwgcGFzcyB0aGUgc3ViamVjdCBib2R5XG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAoXy5pc0Z1bmN0aW9uKG1hdGNoZWRDYXNlKSkge1xuICAgICAgICByZXN1bHQgPSBtYXRjaGVkQ2FzZShib2R5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBtYXRjaGVkQ2FzZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIE1hdGNoIGFnYWluc3QgYSBsaXN0IG9mIHByZWRpY2F0ZSBmdW5jdGlvbnM6XG4vLyAgIG1hdGNoKHsgdHlwZTogJ3gnIH0sIFt7IHR5cGU6ICd4JyB9LCAxXSwgW3sgdHlwZTogJ3knIH0sIDJdKVxuY29uc3QgbWF0Y2hBZ2FpbnN0UHJlZGljYXRlcyA9IChkaXNjcmltaW5hdG9yLCBib2R5LCBwcmVkaWNhdGVzKSA9PiB7XG4gICAgZm9yIChsZXQgW3ByZWRpY2F0ZSwgcHJlZGljYXRlQ2FzZV0gb2YgcHJlZGljYXRlcykge1xuICAgICAgICAvLyBJZiBnaXZlbiBhbiBvYmplY3RcbiAgICAgICAgaWYgKF8uaXNPYmplY3RMaWtlKHByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgIHByZWRpY2F0ZSA9IF8ubWF0Y2hlcyhwcmVkaWNhdGUpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsZXQgbWF0Y2hlZENhc2U7XG4gICAgICAgIGlmIChwcmVkaWNhdGUgPT09IGRpc2NyaW1pbmF0b3IpIHtcbiAgICAgICAgICAgIG1hdGNoZWRDYXNlID0gcHJlZGljYXRlQ2FzZTtcbiAgICAgICAgfSBlbHNlIGlmIChfLmlzRnVuY3Rpb24ocHJlZGljYXRlKSAmJiBwcmVkaWNhdGUoZGlzY3JpbWluYXRvcikgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgLy8gTm90ZTogdXNpbmcgd2VhayBlcXVhbGl0eSAoPT0pIGZvciBwcmVkaWNhdGUgY2hlY2tcbiAgICAgICAgICAgIG1hdGNoZWRDYXNlID0gcHJlZGljYXRlQ2FzZTtcbiAgICAgICAgfSBlbHNlIGlmIChwcmVkaWNhdGUgPT09IGRlZnMuZGVmYXVsdCkge1xuICAgICAgICAgICAgbWF0Y2hlZENhc2UgPSBwcmVkaWNhdGVDYXNlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAobWF0Y2hlZENhc2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKF8uaXNGdW5jdGlvbihtYXRjaGVkQ2FzZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlZENhc2UoYm9keSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVkQ2FzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBGYWxsLXRocm91Z2g6IG5vIG1hdGNoXG4gICAgdGhyb3cgbmV3IEVycm9yKGBbbWF0Y2guanNdIFVubWF0Y2hlZCBjYXNlOiAke0pTT04uc3RyaW5naWZ5KGRpc2NyaW1pbmF0b3IpfWApO1xufTtcblxuXG4vLyBDcmVhdGUgYSBuZXcgbWF0Y2hlciB1c2luZyB0aGUgZ2l2ZW4gcGFyc2VyXG5jb25zdCBtYXRjaGVyID0gcGFyc2VTdWJqZWN0ID0+IHtcbiAgICBjb25zdCBtYXRjaGVyID0gKHN1YmplY3QsIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgeyBkaXNjcmltaW5hdG9yLCBib2R5IH0gPSBwYXJzZVN1YmplY3Qoc3ViamVjdCk7XG4gICAgICAgIFxuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgXy5pc1BsYWluT2JqZWN0KGFyZ3NbMF0pKSB7XG4gICAgICAgICAgICBjb25zdCBjYXNlcyA9IGFyZ3NbMF07XG4gICAgICAgICAgICByZXN1bHQgPSBtYXRjaEFnYWluc3RPYmplY3QoZGlzY3JpbWluYXRvciwgYm9keSwgY2FzZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIF8uaXNBcnJheShhcmdzWzBdKSkge1xuICAgICAgICAgICAgY29uc3QgcHJlZGljYXRlcyA9IGFyZ3NbMF07XG4gICAgICAgICAgICByZXN1bHQgPSBtYXRjaEFnYWluc3RQcmVkaWNhdGVzKGRpc2NyaW1pbmF0b3IsIGJvZHksIHByZWRpY2F0ZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZWRpY2F0ZXMgPSBhcmdzO1xuICAgICAgICAgICAgcmVzdWx0ID0gbWF0Y2hBZ2FpbnN0UHJlZGljYXRlcyhkaXNjcmltaW5hdG9yLCBib2R5LCBwcmVkaWNhdGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW21hdGNoLmpzXSBJbnZhbGlkIGFyZ3VtZW50cyBnaXZlbmApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obWF0Y2hlciwgZGVmcyk7XG59O1xuXG5cbi8vIFNwZWNpZmljIG1hdGNoZXJzXG5cbi8vIEdlbmVyaWMgbWF0Y2guIEFjY2VwdCBhbnkgc3ViamVjdCwgYW5kIGRpc2NyaW1pbmF0ZSB1c2luZyB0aGUgdmFsdWUgaXRzZWxmXG5jb25zdCBtYXRjaCA9IG1hdGNoZXIoc3ViamVjdCA9PiAoeyBkaXNjcmltaW5hdG9yOiBzdWJqZWN0LCBib2R5OiBzdWJqZWN0IH0pKTtcblxuLy8gTWF0Y2ggb24gb2JqZWN0cyB3aXRoIGEgYHR5cGVgIHByb3BlcnR5XG5jb25zdCBtYXRjaFR5cGUgPSBtYXRjaGVyKHN1YmplY3QgPT4ge1xuICAgIGlmICghXy5pc09iamVjdExpa2Uoc3ViamVjdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbbWF0Y2guanNdIEV4cGVjdGVkIGFuIG9iamVjdCwgZ2l2ZW4gJHtKU09OLnN0cmluZ2lmeShzdWJqZWN0KX1gKTtcbiAgICB9XG4gICAgaWYgKCFzdWJqZWN0Lmhhc093blByb3BlcnR5KCd0eXBlJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbbWF0Y2guanNdIE1pc3NpbmcgJ3R5cGUnIHByb3BlcnR5LCBnaXZlbiAke0pTT04uc3RyaW5naWZ5KHN1YmplY3QpfWApO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4geyBkaXNjcmltaW5hdG9yOiBzdWJqZWN0LnR5cGUsIGJvZHk6IHN1YmplY3QgfTtcbn0pO1xuXG5jb25zdCBtYXRjaFNpbmdsZUtleSA9IG1hdGNoZXIoc3ViamVjdCA9PiB7XG4gICAgaWYgKCFfLmlzT2JqZWN0TGlrZShzdWJqZWN0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFttYXRjaC5qc10gRXhwZWN0ZWQgYW4gb2JqZWN0LCBnaXZlbiAke0pTT04uc3RyaW5naWZ5KHN1YmplY3QpfWApO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc3ViamVjdCk7XG4gICAgXG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW21hdGNoLmpzXSBFeHBlY3RlZCBhbiBvYmplY3Qgd2l0aCBhIHNpbmdsZSBrZXksIGdpdmVuICR7SlNPTi5zdHJpbmdpZnkoc3ViamVjdCl9YCk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBrZXlzWzBdO1xuICAgIHJldHVybiB7IGRpc2NyaW1pbmF0b3IsIGJvZHk6IHN1YmplY3RbZGlzY3JpbWluYXRvcl0gfTtcbn0pO1xuXG5leHBvcnQgeyBtYXRjaGVyLCBtYXRjaCwgbWF0Y2hUeXBlLCBnZXRTaW5nbGVLZXksIG1hdGNoU2luZ2xlS2V5IH07XG5leHBvcnQgZGVmYXVsdCBtYXRjaDtcbiJdfQ== | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXRjaC5qcyJdLCJuYW1lcyI6WyJnZXRTaW5nbGVLZXkiLCJvYmoiLCJfIiwiaXNQbGFpbk9iamVjdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImtleXMiLCJPYmplY3QiLCJsZW5ndGgiLCJrZXkiLCJ2YWx1ZSIsImRlZmF1bHRDYXNlIiwiU3ltYm9sIiwiZGVmcyIsImNhc2UiLCJwcmVkaWNhdGUiLCJvdGhlcndpc2UiLCJmbiIsImRlZmF1bHQiLCJtYXRjaEFnYWluc3RPYmplY3QiLCJkaXNjcmltaW5hdG9yIiwiYm9keSIsImNhc2VzIiwibWF0Y2hlZENhc2UiLCJoYXNPd25Qcm9wZXJ0eSIsInJlc3VsdCIsImlzRnVuY3Rpb24iLCJtYXRjaEFnYWluc3RQcmVkaWNhdGVzIiwicHJlZGljYXRlcyIsInByZWRpY2F0ZUNhc2UiLCJpc09iamVjdExpa2UiLCJtYXRjaGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlciIsInBhcnNlU3ViamVjdCIsInN1YmplY3QiLCJhcmdzIiwiaXNBcnJheSIsImFzc2lnbiIsIm1hdGNoIiwibWF0Y2hUeXBlIiwidHlwZSIsIm1hdGNoU2luZ2xlS2V5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUdBO0FBRUEsSUFBTUEsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQUMsR0FBRyxFQUFJO0FBQ3hCLE1BQUksQ0FBQ0MsZ0JBQUVDLGFBQUYsQ0FBZ0JGLEdBQWhCLENBQUwsRUFBMkI7QUFDdkIsVUFBTSxJQUFJRyxLQUFKLDBDQUE0Q0MsSUFBSSxDQUFDQyxTQUFMLENBQWVMLEdBQWYsQ0FBNUMsT0FBTjtBQUNIOztBQUVELE1BQU1NLElBQUksR0FBR0MsTUFBTSxDQUFDRCxJQUFQLENBQVlOLEdBQVosQ0FBYjs7QUFDQSxNQUFJTSxJQUFJLENBQUNFLE1BQUwsS0FBZ0IsQ0FBcEIsRUFBdUI7QUFDbkIsVUFBTSxJQUFJTCxLQUFKLDBE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QUFXQSxJQUFNTyxjQUFjLEdBQUdULE9BQU8sQ0FBQyxVQUFBRSxPQUFPLEVBQUk7QUFDdEMsTUFBSSxDQUFDbEMsZ0JBQUU2QixZQUFGLENBQWVLLE9BQWYsQ0FBTCxFQUE4QjtBQUMxQixVQUFNLElBQUloQyxLQUFKLGdEQUFrREMsSUFBSSxDQUFDQyxTQUFMLENBQWU4QixPQUFmLENBQWxELEVBQU47QUFDSDs7QUFFRCxNQUFNN0IsSUFBSSxHQUFHQyxNQUFNLENBQUNELElBQVAsQ0FBWTZCLE9BQVosQ0FBYjs7QUFFQSxNQUFJN0IsSUFBSSxDQUFDRSxNQUFMLEtBQWdCLENBQXBCLEVBQXVCO0FBQ25CLFVBQU0sSUFBSUwsS0FBSixrRUFBb0VDLElBQUksQ0FBQ0MsU0FBTCxDQUFlOEIsT0FBZixDQUFwRSxFQUFOO0FBQ0g7O0FBRUQsTUFBTWYsYUFBYSxHQUFHZCxJQUFJLENBQUMsQ0FBRCxDQUExQjtBQUNBLFNBQU87QUFBRWMsSUFBQUEsYUFBYSxFQUFiQSxhQUFGO0FBQWlCQyxJQUFBQSxJQUFJLEVBQUVjLE9BQU8sQ0FBQ2YsYUFBRDtBQUE5QixHQUFQO0FBQ0gsQ0FiNkIsQ0FBOUI7O2VBZ0JlbUIsSyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG4vLyBVdGlsaXR5XG5cbmNvbnN0IGdldFNpbmdsZUtleSA9IG9iaiA9PiB7XG4gICAgaWYgKCFfLmlzUGxhaW5PYmplY3Qob2JqKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yOiBleHBlY3RlZCBvYmplY3QsIGdpdmVuICcke0pTT04uc3RyaW5naWZ5KG9iail9J2ApO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvcjogZXhwZWN0ZWQgb2JqZWN0IHdpdGggc2luZ2xlIGtleSwgZ2l2ZW4gJyR7SlNPTi5zdHJpbmdpZnkob2JqKX0nYCk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGtleSA9IGtleXNbMF07XG4gICAgcmV0dXJuIHsga2V5LCB2YWx1ZTogb2JqW2tleV0gfTtcbn07XG5cblxuLy8gQ29tbW9uIGRlZmluaXRpb25zXG5jb25zdCBkZWZhdWx0Q2FzZSA9IFN5bWJvbCgnbWF0Y2guZGVmYXVsdCcpO1xuY29uc3QgZGVmcyA9IHtcbiAgICBjYXNlOiAocHJlZGljYXRlLCB2YWx1ZSkgPT4gW3ByZWRpY2F0ZSwgdmFsdWVdLFxuICAgIG90aGVyd2lzZTogZm4gPT4gW2RlZmF1bHRDYXNlLCBmbl0sXG4gICAgZGVmYXVsdDogZGVmYXVsdENhc2UsXG59O1xuXG5cbi8vIE1hdGNoIGFnYWluc3QgYW4gb2JqZWN0LCB3aGVyZSBlYWNoIHByb3BlcnR5IGlzIG9uZSBjYXNlOlxuLy8gICBtYXRjaCgneCcsIHsgeDogMSwgeTogMiB9KVxuY29uc3QgbWF0Y2hBZ2FpbnN0T2JqZWN0ID0gKGRpc2NyaW1pbmF0b3IsIGJvZHksIGNhc2VzKSA9PiB7XG4gICAgbGV0IG1hdGNoZWRDYXNlO1xuICAgIGlmIChjYXNlcy5oYXNPd25Qcm9wZXJ0eShkaXNjcmltaW5hdG9yKSkge1xuICAgICAgICBtYXRjaGVkQ2FzZSA9IGNhc2VzW2Rpc2NyaW1pbmF0b3JdO1xuICAgIH0gZWxzZSBpZiAoY2FzZXMuaGFzT3duUHJvcGVydHkoZGVmcy5kZWZhdWx0KSkge1xuICAgICAgICBtYXRjaGVkQ2FzZSA9IGNhc2VzW2RlZnMuZGVmYXVsdF07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbbWF0Y2guanNdIFVubWF0Y2hlZCBjYXNlOiAke0pTT04uc3RyaW5naWZ5KGRpc2NyaW1pbmF0b3IpfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBJZiB0aGUgcHJvcGVydHkgaXMgYSBmdW5jdGlvbiwgcGFzcyB0aGUgc3ViamVjdCBib2R5XG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAoXy5pc0Z1bmN0aW9uKG1hdGNoZWRDYXNlKSkge1xuICAgICAgICByZXN1bHQgPSBtYXRjaGVkQ2FzZShib2R5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBtYXRjaGVkQ2FzZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIE1hdGNoIGFnYWluc3QgYSBsaXN0IG9mIHByZWRpY2F0ZSBmdW5jdGlvbnM6XG4vLyAgIG1hdGNoKHsgdHlwZTogJ3gnIH0sIFt7IHR5cGU6ICd4JyB9LCAxXSwgW3sgdHlwZTogJ3knIH0sIDJdKVxuY29uc3QgbWF0Y2hBZ2FpbnN0UHJlZGljYXRlcyA9IChkaXNjcmltaW5hdG9yLCBib2R5LCBwcmVkaWNhdGVzKSA9PiB7XG4gICAgZm9yIChsZXQgW3ByZWRpY2F0ZSwgcHJlZGljYXRlQ2FzZV0gb2YgcHJlZGljYXRlcykge1xuICAgICAgICAvLyBJZiBnaXZlbiBhbiBvYmplY3RcbiAgICAgICAgaWYgKF8uaXNPYmplY3RMaWtlKHByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgIHByZWRpY2F0ZSA9IF8ubWF0Y2hlcyhwcmVkaWNhdGUpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsZXQgbWF0Y2hlZENhc2U7XG4gICAgICAgIGlmIChwcmVkaWNhdGUgPT09IGRpc2NyaW1pbmF0b3IpIHtcbiAgICAgICAgICAgIG1hdGNoZWRDYXNlID0gcHJlZGljYXRlQ2FzZTtcbiAgICAgICAgfSBlbHNlIGlmIChfLmlzRnVuY3Rpb24ocHJlZGljYXRlKSAmJiBwcmVkaWNhdGUoZGlzY3JpbWluYXRvcikgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgLy8gTm90ZTogdXNpbmcgd2VhayBlcXVhbGl0eSAoPT0pIGZvciBwcmVkaWNhdGUgY2hlY2tcbiAgICAgICAgICAgIG1hdGNoZWRDYXNlID0gcHJlZGljYXRlQ2FzZTtcbiAgICAgICAgfSBlbHNlIGlmIChwcmVkaWNhdGUgPT09IGRlZnMuZGVmYXVsdCkge1xuICAgICAgICAgICAgbWF0Y2hlZENhc2UgPSBwcmVkaWNhdGVDYXNlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAobWF0Y2hlZENhc2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKF8uaXNGdW5jdGlvbihtYXRjaGVkQ2FzZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlZENhc2UoYm9keSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVkQ2FzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBGYWxsLXRocm91Z2g6IG5vIG1hdGNoXG4gICAgdGhyb3cgbmV3IEVycm9yKGBbbWF0Y2guanNdIFVubWF0Y2hlZCBjYXNlOiAke0pTT04uc3RyaW5naWZ5KGRpc2NyaW1pbmF0b3IpfWApO1xufTtcblxuXG4vLyBDcmVhdGUgYSBuZXcgbWF0Y2hlciB1c2luZyB0aGUgZ2l2ZW4gcGFyc2VyXG5jb25zdCBtYXRjaGVyID0gcGFyc2VTdWJqZWN0ID0+IHtcbiAgICBjb25zdCBtYXRjaGVyID0gKHN1YmplY3QsIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgeyBkaXNjcmltaW5hdG9yLCBib2R5IH0gPSBwYXJzZVN1YmplY3Qoc3ViamVjdCk7XG4gICAgICAgIFxuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgXy5pc1BsYWluT2JqZWN0KGFyZ3NbMF0pKSB7XG4gICAgICAgICAgICBjb25zdCBjYXNlcyA9IGFyZ3NbMF07XG4gICAgICAgICAgICByZXN1bHQgPSBtYXRjaEFnYWluc3RPYmplY3QoZGlzY3JpbWluYXRvciwgYm9keSwgY2FzZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIF8uaXNBcnJheShhcmdzWzBdKSkge1xuICAgICAgICAgICAgY29uc3QgcHJlZGljYXRlcyA9IGFyZ3NbMF07XG4gICAgICAgICAgICByZXN1bHQgPSBtYXRjaEFnYWluc3RQcmVkaWNhdGVzKGRpc2NyaW1pbmF0b3IsIGJvZHksIHByZWRpY2F0ZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZWRpY2F0ZXMgPSBhcmdzO1xuICAgICAgICAgICAgcmVzdWx0ID0gbWF0Y2hBZ2FpbnN0UHJlZGljYXRlcyhkaXNjcmltaW5hdG9yLCBib2R5LCBwcmVkaWNhdGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW21hdGNoLmpzXSBJbnZhbGlkIGFyZ3VtZW50cyBnaXZlbmApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obWF0Y2hlciwgZGVmcyk7XG59O1xuXG5cbi8vIFNwZWNpZmljIG1hdGNoZXJzXG5cbi8vIEdlbmVyaWMgbWF0Y2guIEFjY2VwdCBhbnkgc3ViamVjdCwgYW5kIGRpc2NyaW1pbmF0ZSB1c2luZyB0aGUgdmFsdWUgaXRzZWxmXG5jb25zdCBtYXRjaCA9IG1hdGNoZXIoc3ViamVjdCA9PiAoeyBkaXNjcmltaW5hdG9yOiBzdWJqZWN0LCBib2R5OiBzdWJqZWN0IH0pKTtcblxuLy8gTWF0Y2ggb24gb2JqZWN0cyB3aXRoIGEgYHR5cGVgIHByb3BlcnR5XG5jb25zdCBtYXRjaFR5cGUgPSBtYXRjaGVyKHN1YmplY3QgPT4ge1xuICAgIGlmICghXy5pc09iamVjdExpa2Uoc3ViamVjdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbbWF0Y2guanNdIEV4cGVjdGVkIGFuIG9iamVjdCwgZ2l2ZW4gJHtKU09OLnN0cmluZ2lmeShzdWJqZWN0KX1gKTtcbiAgICB9XG4gICAgaWYgKCFzdWJqZWN0Lmhhc093blByb3BlcnR5KCd0eXBlJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbbWF0Y2guanNdIE1pc3NpbmcgJ3R5cGUnIHByb3BlcnR5LCBnaXZlbiAke0pTT04uc3RyaW5naWZ5KHN1YmplY3QpfWApO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4geyBkaXNjcmltaW5hdG9yOiBzdWJqZWN0LnR5cGUsIGJvZHk6IHN1YmplY3QgfTtcbn0pO1xuXG5jb25zdCBtYXRjaFNpbmdsZUtleSA9IG1hdGNoZXIoc3ViamVjdCA9PiB7XG4gICAgaWYgKCFfLmlzT2JqZWN0TGlrZShzdWJqZWN0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFttYXRjaC5qc10gRXhwZWN0ZWQgYW4gb2JqZWN0LCBnaXZlbiAke0pTT04uc3RyaW5naWZ5KHN1YmplY3QpfWApO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc3ViamVjdCk7XG4gICAgXG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW21hdGNoLmpzXSBFeHBlY3RlZCBhbiBvYmplY3Qgd2l0aCBhIHNpbmdsZSBrZXksIGdpdmVuICR7SlNPTi5zdHJpbmdpZnkoc3ViamVjdCl9YCk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSBrZXlzWzBdO1xuICAgIHJldHVybiB7IGRpc2NyaW1pbmF0b3IsIGJvZHk6IHN1YmplY3RbZGlzY3JpbWluYXRvcl0gfTtcbn0pO1xuXG5leHBvcnQgeyBtYXRjaGVyLCBtYXRjaCwgbWF0Y2hUeXBlLCBnZXRTaW5nbGVLZXksIG1hdGNoU2luZ2xlS2V5IH07XG5leHBvcnQgZGVmYXVsdCBtYXRjaDtcbiJdfQ== |
+14
-16
| { | ||
| "name": "@mkrause/match", | ||
| "version": "1.1.2", | ||
| "description": "Case matching utility.", | ||
| "version": "1.2.0", | ||
| "description": "JavaScript case matching utility.", | ||
| "author": "mkrause", | ||
@@ -10,28 +10,26 @@ "license": "MIT", | ||
| "main": "lib-cjs/match.js", | ||
| "module": "lib-es/match.js", | ||
| "browser": "lib-es/match.js", | ||
| "module": "lib-esm/match.js", | ||
| "browser": "lib-esm/match.js", | ||
| "files": [ | ||
| "src/", | ||
| "lib-cjs/", | ||
| "lib-es/" | ||
| "lib-esm/" | ||
| ], | ||
| "scripts": { | ||
| "build:cjs": "NODE_ENV=production BABEL_ENV=cjs babel src --out-dir lib-cjs --source-maps inline", | ||
| "build:es": "NODE_ENV=production BABEL_ENV=es babel src --out-dir lib-es --source-maps inline", | ||
| "build:bundle": "NODE_ENV=production webpack -p", | ||
| "test": "NODE_ENV=development BABEL_ENV=cjs mocha --compilers js:@babel/register --recursive tests", | ||
| "prepublishOnly": "npm run build:cjs && npm run build:es" | ||
| "build:esm": "NODE_ENV=production BABEL_ENV=esm babel src --out-dir lib-esm --source-maps inline", | ||
| "test": "NODE_ENV=development BABEL_ENV=cjs mocha --require @babel/register --recursive tests", | ||
| "prepublishOnly": "npm run build:cjs && npm run build:esm" | ||
| }, | ||
| "devDependencies": { | ||
| "@babel/core": "^7.1.2", | ||
| "@babel/register": "^7.0.0", | ||
| "@babel/cli": "^7.1.2", | ||
| "@babel/preset-env": "^7.1.0", | ||
| "@babel/plugin-proposal-object-rest-spread": "^7.0.0", | ||
| "mocha": "^5.2.0" | ||
| "@babel/core": "^7.4.3", | ||
| "@babel/register": "^7.4.0", | ||
| "@babel/cli": "^7.4.3", | ||
| "@babel/preset-env": "^7.4.3", | ||
| "mocha": "^6.1.4" | ||
| }, | ||
| "dependencies": { | ||
| "core-js": "^2.5.7", | ||
| "core-js": "^3.0.1", | ||
| "lodash": "^4.17.11" | ||
| } | ||
| } |
-202
| import "core-js/modules/es6.object.assign"; | ||
| import "core-js/modules/es7.symbol.async-iterator"; | ||
| import "core-js/modules/es6.symbol"; | ||
| import "core-js/modules/web.dom.iterable"; | ||
| import "core-js/modules/es6.array.iterator"; | ||
| import "core-js/modules/es6.object.keys"; | ||
| function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } | ||
| function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } | ||
| function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | ||
| function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | ||
| import _ from 'lodash'; // Utility | ||
| var getSingleKey = function getSingleKey(obj) { | ||
| if (!_.isPlainObject(obj)) { | ||
| throw new Error("Error: expected object, given '".concat(JSON.stringify(obj), "'")); | ||
| } | ||
| var keys = Object.keys(obj); | ||
| if (keys.length !== 1) { | ||
| throw new Error("Error: expected object with single key, given '".concat(JSON.stringify(obj), "'")); | ||
| } | ||
| var key = keys[0]; | ||
| return { | ||
| key: key, | ||
| value: obj[key] | ||
| }; | ||
| }; // Common definitions | ||
| var defaultCase = Symbol('match.default'); | ||
| var defs = { | ||
| case: function _case(predicate, value) { | ||
| return [predicate, value]; | ||
| }, | ||
| otherwise: function otherwise(fn) { | ||
| return [defaultCase, fn]; | ||
| }, | ||
| default: defaultCase | ||
| }; // Match against an object, where each property is one case: | ||
| // match('x', { x: 1, y: 2 }) | ||
| var matchAgainstObject = function matchAgainstObject(discriminator, body, cases) { | ||
| var matchedCase; | ||
| if (cases.hasOwnProperty(discriminator)) { | ||
| matchedCase = cases[discriminator]; | ||
| } else if (cases.hasOwnProperty(defs.default)) { | ||
| matchedCase = cases[defs.default]; | ||
| } else { | ||
| throw new Error("[match.js] Unmatched case: ".concat(JSON.stringify(discriminator))); | ||
| } // If the property is a function, pass the subject body | ||
| var result; | ||
| if (_.isFunction(matchedCase)) { | ||
| result = matchedCase(body); | ||
| } else { | ||
| result = matchedCase; | ||
| } | ||
| return result; | ||
| }; // Match against a list of predicate functions: | ||
| // match({ type: 'x' }, [{ type: 'x' }, 1], [{ type: 'y' }, 2]) | ||
| var matchAgainstPredicates = function matchAgainstPredicates(discriminator, body, predicates) { | ||
| var _iteratorNormalCompletion = true; | ||
| var _didIteratorError = false; | ||
| var _iteratorError = undefined; | ||
| try { | ||
| for (var _iterator = predicates[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
| var _step$value = _slicedToArray(_step.value, 2), | ||
| predicate = _step$value[0], | ||
| predicateCase = _step$value[1]; | ||
| // If given an object | ||
| if (_.isObjectLike(predicate)) { | ||
| predicate = _.matches(predicate); | ||
| } | ||
| var matchedCase = void 0; | ||
| if (predicate === discriminator) { | ||
| matchedCase = predicateCase; | ||
| } else if (_.isFunction(predicate) && predicate(discriminator) == true) { | ||
| // Note: using weak equality (==) for predicate check | ||
| matchedCase = predicateCase; | ||
| } else if (predicate === defs.default) { | ||
| matchedCase = predicateCase; | ||
| } | ||
| if (matchedCase !== undefined) { | ||
| if (_.isFunction(matchedCase)) { | ||
| return matchedCase(body); | ||
| } else { | ||
| return matchedCase; | ||
| } | ||
| } | ||
| } // Fall-through: no match | ||
| } catch (err) { | ||
| _didIteratorError = true; | ||
| _iteratorError = err; | ||
| } finally { | ||
| try { | ||
| if (!_iteratorNormalCompletion && _iterator.return != null) { | ||
| _iterator.return(); | ||
| } | ||
| } finally { | ||
| if (_didIteratorError) { | ||
| throw _iteratorError; | ||
| } | ||
| } | ||
| } | ||
| throw new Error("[match.js] Unmatched case: ".concat(JSON.stringify(discriminator))); | ||
| }; // Create a new matcher using the given parser | ||
| var matcher = function matcher(parseSubject) { | ||
| var matcher = function matcher(subject) { | ||
| var _parseSubject = parseSubject(subject), | ||
| discriminator = _parseSubject.discriminator, | ||
| body = _parseSubject.body; | ||
| var result; | ||
| for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
| args[_key - 1] = arguments[_key]; | ||
| } | ||
| if (args.length === 1 && _.isPlainObject(args[0])) { | ||
| var cases = args[0]; | ||
| result = matchAgainstObject(discriminator, body, cases); | ||
| } else if (args.length === 1 && _.isArray(args[0])) { | ||
| var predicates = args[0]; | ||
| result = matchAgainstPredicates(discriminator, body, predicates); | ||
| } else if (args.length >= 1) { | ||
| var _predicates = args; | ||
| result = matchAgainstPredicates(discriminator, body, _predicates); | ||
| } else { | ||
| throw new Error("[match.js] Invalid arguments given"); | ||
| } | ||
| return result; | ||
| }; | ||
| return Object.assign(matcher, defs); | ||
| }; // Specific matchers | ||
| // Generic match. Accept any subject, and discriminate using the value itself | ||
| var match = matcher(function (subject) { | ||
| return { | ||
| discriminator: subject, | ||
| body: subject | ||
| }; | ||
| }); // Match on objects with a `type` property | ||
| var matchType = matcher(function (subject) { | ||
| if (!_.isObjectLike(subject)) { | ||
| throw new Error("[match.js] Expected an object, given ".concat(JSON.stringify(subject))); | ||
| } | ||
| if (!subject.hasOwnProperty('type')) { | ||
| throw new Error("[match.js] Missing 'type' property, given ".concat(JSON.stringify(subject))); | ||
| } | ||
| return { | ||
| discriminator: subject.type, | ||
| body: subject | ||
| }; | ||
| }); | ||
| var matchSingleKey = matcher(function (subject) { | ||
| if (!_.isObjectLike(subject)) { | ||
| throw new Error("[match.js] Expected an object, given ".concat(JSON.stringify(subject))); | ||
| } | ||
| var keys = Object.keys(subject); | ||
| if (keys.length !== 1) { | ||
| throw new Error("[match.js] Expected an object with a single key, given ".concat(JSON.stringify(subject))); | ||
| } | ||
| var discriminator = keys[0]; | ||
| return { | ||
| discriminator: discriminator, | ||
| body: subject[discriminator] | ||
| }; | ||
| }); | ||
| export { matcher, match, matchType, getSingleKey, matchSingleKey }; | ||
| export default match; | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXRjaC5qcyJdLCJuYW1lcyI6WyJfIiwiZ2V0U2luZ2xlS2V5Iiwib2JqIiwiaXNQbGFpbk9iamVjdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImtleXMiLCJPYmplY3QiLCJsZW5ndGgiLCJrZXkiLCJ2YWx1ZSIsImRlZmF1bHRDYXNlIiwiU3ltYm9sIiwiZGVmcyIsImNhc2UiLCJwcmVkaWNhdGUiLCJvdGhlcndpc2UiLCJmbiIsImRlZmF1bHQiLCJtYXRjaEFnYWluc3RPYmplY3QiLCJkaXNjcmltaW5hdG9yIiwiYm9keSIsImNhc2VzIiwibWF0Y2hlZENhc2UiLCJoYXNPd25Qcm9wZXJ0eSIsInJlc3VsdCIsImlzRnVuY3Rpb24iLCJtYXRjaEFnYWluc3RQcmVkaWNhdGVzIiwicHJlZGljYXRlcyIsInByZWRpY2F0ZUNhc2UiLCJpc09iamVjdExpa2UiLCJtYXRjaGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlciIsInBhcnNlU3ViamVjdCIsInN1YmplY3QiLCJhcmdzIiwiaXNBcnJheSIsImFzc2lnbiIsIm1hdGNoIiwibWF0Y2hUeXBlIiwidHlwZSIsIm1hdGNoU2luZ2xlS2V5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPQSxDQUFQLE1BQWMsUUFBZCxDLENBR0E7O0FBRUEsSUFBTUMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQUMsR0FBRyxFQUFJO0FBQ3hCLE1BQUksQ0FBQ0YsQ0FBQyxDQUFDRyxhQUFGLENBQWdCRCxHQUFoQixDQUFMLEVBQTJCO0FBQ3ZCLFVBQU0sSUFBSUUsS0FBSiwwQ0FBNENDLElBQUksQ0FBQ0MsU0FBTCxDQUFlSixHQUFmLENBQTVDLE9BQU47QUFDSDs7QUFFRCxNQUFNSyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0QsSUFBUCxDQUFZTCxHQUFaLENBQWI7O0FBQ0EsTUFBSUssSUFBSSxDQUFDRSxNQUFMLEtBQWdCLENBQXBCLEVBQXVCO0FBQ25CLFVBQU0sSUFBSUwsS0FBSiwwREFBNERDLElBQUksQ0FBQ0MsU0FBTCxDQUFlSixHQUFmLENBQTVELE9BQU47QUFDSDs7QUFFRCxNQUFNUSxHQUFHLEdBQUdILElBQUksQ0FBQyxDQUFELENBQWhCO0FBQ0EsU0FBTztBQUFFRyxJQUFBQSxHQUFHLEVBQUhBLEdBQUY7QUFBT0MsSUFBQUEsS0FBSyxFQUFFVCxHQUFHLENBQUNRLEdBQUQ7QUFBakIsR0FBUDtBQUNILENBWkQsQyxDQWVBOzs7QUFDQSxJQUFNRSxXQUFXLEdBQUdDLE1BQU0sQ0FBQyxlQUFELENBQTFCO0FBQ0EsSUFBTUMsSUFBSSxHQUFHO0FBQ1RDLEVBQUFBLElBQUksRUFBRSxlQUFDQyxTQUFELEVBQVlMLEtBQVo7QUFBQSxXQUFzQixDQUFDSyxTQUFELEVBQVlMLEtBQVosQ0FBdEI7QUFBQSxHQURHO0FBRVRNLEVBQUFBLFNBQVMsRUFBRSxtQkFBQUMsRUFBRTtBQUFBLFdBQUksQ0FBQ04sV0FBRCxFQUFjTSxFQUFkLENBQUo7QUFBQSxHQUZKO0FBR1RDLEVBQUFBLE9BQU8sRUFBRVA7QUFIQSxDQUFiLEMsQ0FPQTtBQUNBOztBQUNBLElBQU1RLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBcUIsQ0FBQ0MsYUFBRCxFQUFnQkMsSUFBaEIsRUFBc0JDLEtBQXRCLEVBQWdDO0FBQ3ZELE1BQUlDLFdBQUo7O0FBQ0EsTUFBSUQsS0FBSyxDQUFDRSxjQUFOLENBQXFCSixhQUFyQixDQUFKLEVBQXlDO0FBQ3JDRyxJQUFBQSxXQUFXLEdBQUdELEtBQUssQ0FBQ0YsYUFBRCxDQUFuQjtBQUNILEdBRkQsTUFFTyxJQUFJRSxLQUFLLENBQUNFLGNBQU4sQ0FBcUJYLElBQUksQ0FBQ0ssT0FBMUIsQ0FBSixFQUF3QztBQUMzQ0ssSUFBQUEsV0FBVyxHQUFHRCxLQUFLLENBQUNULElBQUksQ0FBQ0ssT0FBTixDQUFuQjtBQUNILEdBRk0sTUFFQTtBQUNILFVBQU0sSUFBSWYsS0FBSixzQ0FBd0NDLElBQUksQ0FBQ0MsU0FBTCxDQUFlZSxhQUFmLENBQXhDLEVBQU47QUFDSCxHQVJzRCxDQVV2RDs7O0FBQ0EsTUFBSUssTUFBSjs7QUFDQSxNQUFJMUIsQ0FBQyxDQUFDMkIsVUFBRixDQUFhSCxXQUFiLENBQUosRUFBK0I7QUFDM0JFLElBQUFBLE1BQU0sR0FBR0YsV0FBVyxDQUFDRixJQUFELENBQXBCO0FBQ0gsR0FGRCxNQUVPO0FBQ0hJLElBQUFBLE1BQU0sR0FBR0YsV0FBVDtBQUNIOztBQUVELFNBQU9FLE1BQVA7QUFDSCxDQW5CRCxDLENBcUJBO0FBQ0E7OztBQUNBLElBQU1FLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBeUIsQ0FBQ1AsYUFBRCxFQUFnQkMsSUFBaEIsRUFBc0JPLFVBQXRCLEVBQXFDO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQ2hFLHlCQUF1Q0EsVUFBdkMsOEhBQW1EO0FBQUE7QUFBQSxVQUF6Q2IsU0FBeUM7QUFBQSxVQUE5QmMsYUFBOEI7O0FBQy9DO0FBQ0EsVUFBSTlCLENBQUMsQ0FBQytCLFlBQUYsQ0FBZWYsU0FBZixDQUFKLEVBQStCO0FBQzNCQSxRQUFBQSxTQUFTLEdBQUdoQixDQUFDLENBQUNnQyxPQUFGLENBQVVoQixTQUFWLENBQVo7QUFDSDs7QUFFRCxVQUFJUSxXQUFXLFNBQWY7O0FBQ0EsVUFBSVIsU0FBUyxLQUFLSyxhQUFsQixFQUFpQztBQUM3QkcsUUFBQUEsV0FBVyxHQUFHTSxhQUFkO0FBQ0gsT0FGRCxNQUVPLElBQUk5QixDQUFDLENBQUMyQixVQUFGLENBQWFYLFNBQWIsS0FBMkJBLFNBQVMsQ0FBQ0ssYUFBRCxDQUFULElBQTRCLElBQTNELEVBQWlFO0FBQ3BFO0FBQ0FHLFFBQUFBLFdBQVcsR0FBR00sYUFBZDtBQUNILE9BSE0sTUFHQSxJQUFJZCxTQUFTLEtBQUtGLElBQUksQ0FBQ0ssT0FBdkIsRUFBZ0M7QUFDbkNLLFFBQUFBLFdBQVcsR0FBR00sYUFBZDtBQUNIOztBQUVELFVBQUlOLFdBQVcsS0FBS1MsU0FBcEIsRUFBK0I7QUFDM0IsWUFBSWpDLENBQUMsQ0FBQzJCLFVBQUYsQ0FBYUgsV0FBYixDQUFKLEVBQStCO0FBQzNCLGlCQUFPQSxXQUFXLENBQUNGLElBQUQsQ0FBbEI7QUFDSCxTQUZELE1BRU87QUFDSCxpQkFBT0UsV0FBUDtBQUNIO0FBQ0o7QUFDSixLQXhCK0QsQ0EwQmhFOztBQTFCZ0U7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUEyQmhFLFFBQU0sSUFBSXBCLEtBQUosc0NBQXdDQyxJQUFJLENBQUNDLFNBQUwsQ0FBZWUsYUFBZixDQUF4QyxFQUFOO0FBQ0gsQ0E1QkQsQyxDQStCQTs7O0FBQ0EsSUFBTWEsT0FBTyxHQUFHLGlCQUFBQyxZQUFZLEVBQUk7QUFDNUIsTUFBTUQsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQ0UsT0FBRCxFQUFzQjtBQUFBLHdCQUNGRCxZQUFZLENBQUNDLE9BQUQsQ0FEVjtBQUFBLFFBQzFCZixhQUQwQixpQkFDMUJBLGFBRDBCO0FBQUEsUUFDWEMsSUFEVyxpQkFDWEEsSUFEVzs7QUFHbEMsUUFBSUksTUFBSjs7QUFIa0Msc0NBQVRXLElBQVM7QUFBVEEsTUFBQUEsSUFBUztBQUFBOztBQUlsQyxRQUFJQSxJQUFJLENBQUM1QixNQUFMLEtBQWdCLENBQWhCLElBQXFCVCxDQUFDLENBQUNHLGFBQUYsQ0FBZ0JrQyxJQUFJLENBQUMsQ0FBRCxDQUFwQixDQUF6QixFQUFtRDtBQUMvQyxVQUFNZCxLQUFLLEdBQUdjLElBQUksQ0FBQyxDQUFELENBQWxCO0FBQ0FYLE1BQUFBLE1BQU0sR0FBR04sa0JBQWtCLENBQUNDLGFBQUQsRUFBZ0JDLElBQWhCLEVBQXNCQyxLQUF0QixDQUEzQjtBQUNILEtBSEQsTUFHTyxJQUFJYyxJQUFJLENBQUM1QixNQUFMLEtBQWdCLENBQWhCLElBQXFCVCxDQUFDLENBQUNzQyxPQUFGLENBQVVELElBQUksQ0FBQyxDQUFELENBQWQsQ0FBekIsRUFBNkM7QUFDaEQsVUFBTVIsVUFBVSxHQUFHUSxJQUFJLENBQUMsQ0FBRCxDQUF2QjtBQUNBWCxNQUFBQSxNQUFNLEdBQUdFLHNCQUFzQixDQUFDUCxhQUFELEVBQWdCQyxJQUFoQixFQUFzQk8sVUFBdEIsQ0FBL0I7QUFDSCxLQUhNLE1BR0EsSUFBSVEsSUFBSSxDQUFDNUIsTUFBTCxJQUFlLENBQW5CLEVBQXNCO0FBQ3pCLFVBQU1vQixXQUFVLEdBQUdRLElBQW5CO0FBQ0FYLE1BQUFBLE1BQU0sR0FBR0Usc0JBQXNCLENBQUNQLGFBQUQsRUFBZ0JDLElBQWhCLEVBQXNCTyxXQUF0QixDQUEvQjtBQUNILEtBSE0sTUFHQTtBQUNILFlBQU0sSUFBSXpCLEtBQUosc0NBQU47QUFDSDs7QUFFRCxXQUFPc0IsTUFBUDtBQUNILEdBbEJEOztBQW9CQSxTQUFPbEIsTUFBTSxDQUFDK0IsTUFBUCxDQUFjTCxPQUFkLEVBQXVCcEIsSUFBdkIsQ0FBUDtBQUNILENBdEJELEMsQ0F5QkE7QUFFQTs7O0FBQ0EsSUFBTTBCLEtBQUssR0FBR04sT0FBTyxDQUFDLFVBQUFFLE9BQU87QUFBQSxTQUFLO0FBQUVmLElBQUFBLGFBQWEsRUFBRWUsT0FBakI7QUFBMEJkLElBQUFBLElBQUksRUFBRWM7QUFBaEMsR0FBTDtBQUFBLENBQVIsQ0FBckIsQyxDQUVBOztBQUNBLElBQU1LLFNBQVMsR0FBR1AsT0FBTyxDQUFDLFVBQUFFLE9BQU8sRUFBSTtBQUNqQyxNQUFJLENBQUNwQyxDQUFDLENBQUMrQixZQUFGLENBQWVLLE9BQWYsQ0FBTCxFQUE4QjtBQUMxQixVQUFNLElBQUloQyxLQUFKLGdEQUFrREMsSUFBSSxDQUFDQyxTQUFMLENBQWU4QixPQUFmLENBQWxELEVBQU47QUFDSDs7QUFDRCxNQUFJLENBQUNBLE9BQU8sQ0FBQ1gsY0FBUixDQUF1QixNQUF2QixDQUFMLEVBQXFDO0FBQ2pDLFVBQU0sSUFBSXJCLEtBQUoscURBQXVEQyxJQUFJLENBQUNDLFNBQUwsQ0FBZThCLE9BQWYsQ0FBdkQsRUFBTjtBQUNIOztBQUVELFNBQU87QUFBRWYsSUFBQUEsYUFBYSxFQUFFZSxPQUFPLENBQUNNLElBQXpCO0FBQStCcEIsSUFBQUEsSUFBSSxFQUFFYztBQUFyQyxHQUFQO0FBQ0gsQ0FUd0IsQ0FBekI7QUFXQSxJQUFNTyxjQUFjLEdBQUdULE9BQU8sQ0FBQyxVQUFBRSxPQUFPLEVBQUk7QUFDdEMsTUFBSSxDQUFDcEMsQ0FBQyxDQUFDK0IsWUFBRixDQUFlSyxPQUFmLENBQUwsRUFBOEI7QUFDMUIsVUFBTSxJQUFJaEMsS0FBSixnREFBa0RDLElBQUksQ0FBQ0MsU0FBTCxDQUFlOEIsT0FBZixDQUFsRCxFQUFOO0FBQ0g7O0FBRUQsTUFBTTdCLElBQUksR0FBR0MsTUFBTSxDQUFDRCxJQUFQLENBQVk2QixPQUFaLENBQWI7O0FBRUEsTUFBSTdCLElBQUksQ0FBQ0UsTUFBTCxLQUFnQixDQUFwQixFQUF1QjtBQUNuQixVQUFNLElBQUlMLEtBQUosa0VBQW9FQyxJQUFJLENBQUNDLFNBQUwsQ0FBZThCLE9BQWYsQ0FBcEUsRUFBTjtBQUNIOztBQUVELE1BQU1mLGFBQWEsR0FBR2QsSUFBSSxDQUFDLENBQUQsQ0FBMUI7QUFDQSxTQUFPO0FBQUVjLElBQUFBLGFBQWEsRUFBYkEsYUFBRjtBQUFpQkMsSUFBQUEsSUFBSSxFQUFFYyxPQUFPLENBQUNmLGFBQUQ7QUFBOUIsR0FBUDtBQUNILENBYjZCLENBQTlCO0FBZUEsU0FBU2EsT0FBVCxFQUFrQk0sS0FBbEIsRUFBeUJDLFNBQXpCLEVBQW9DeEMsWUFBcEMsRUFBa0QwQyxjQUFsRDtBQUNBLGVBQWVILEtBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cblxuLy8gVXRpbGl0eVxuXG5jb25zdCBnZXRTaW5nbGVLZXkgPSBvYmogPT4ge1xuICAgIGlmICghXy5pc1BsYWluT2JqZWN0KG9iaikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvcjogZXhwZWN0ZWQgb2JqZWN0LCBnaXZlbiAnJHtKU09OLnN0cmluZ2lmeShvYmopfSdgKTtcbiAgICB9XG4gICAgXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3I6IGV4cGVjdGVkIG9iamVjdCB3aXRoIHNpbmdsZSBrZXksIGdpdmVuICcke0pTT04uc3RyaW5naWZ5KG9iail9J2ApO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBrZXkgPSBrZXlzWzBdO1xuICAgIHJldHVybiB7IGtleSwgdmFsdWU6IG9ialtrZXldIH07XG59O1xuXG5cbi8vIENvbW1vbiBkZWZpbml0aW9uc1xuY29uc3QgZGVmYXVsdENhc2UgPSBTeW1ib2woJ21hdGNoLmRlZmF1bHQnKTtcbmNvbnN0IGRlZnMgPSB7XG4gICAgY2FzZTogKHByZWRpY2F0ZSwgdmFsdWUpID0+IFtwcmVkaWNhdGUsIHZhbHVlXSxcbiAgICBvdGhlcndpc2U6IGZuID0+IFtkZWZhdWx0Q2FzZSwgZm5dLFxuICAgIGRlZmF1bHQ6IGRlZmF1bHRDYXNlLFxufTtcblxuXG4vLyBNYXRjaCBhZ2FpbnN0IGFuIG9iamVjdCwgd2hlcmUgZWFjaCBwcm9wZXJ0eSBpcyBvbmUgY2FzZTpcbi8vICAgbWF0Y2goJ3gnLCB7IHg6IDEsIHk6IDIgfSlcbmNvbnN0IG1hdGNoQWdhaW5zdE9iamVjdCA9IChkaXNjcmltaW5hdG9yLCBib2R5LCBjYXNlcykgPT4ge1xuICAgIGxldCBtYXRjaGVkQ2FzZTtcbiAgICBpZiAoY2FzZXMuaGFzT3duUHJvcGVydHkoZGlzY3JpbWluYXRvcikpIHtcbiAgICAgICAgbWF0Y2hlZENhc2UgPSBjYXNlc1tkaXNjcmltaW5hdG9yXTtcbiAgICB9IGVsc2UgaWYgKGNhc2VzLmhhc093blByb3BlcnR5KGRlZnMuZGVmYXVsdCkpIHtcbiAgICAgICAgbWF0Y2hlZENhc2UgPSBjYXNlc1tkZWZzLmRlZmF1bHRdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW21hdGNoLmpzXSBVbm1hdGNoZWQgY2FzZTogJHtKU09OLnN0cmluZ2lmeShkaXNjcmltaW5hdG9yKX1gKTtcbiAgICB9XG4gICAgXG4gICAgLy8gSWYgdGhlIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24sIHBhc3MgdGhlIHN1YmplY3QgYm9keVxuICAgIGxldCByZXN1bHQ7XG4gICAgaWYgKF8uaXNGdW5jdGlvbihtYXRjaGVkQ2FzZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gbWF0Y2hlZENhc2UoYm9keSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gbWF0Y2hlZENhc2U7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBNYXRjaCBhZ2FpbnN0IGEgbGlzdCBvZiBwcmVkaWNhdGUgZnVuY3Rpb25zOlxuLy8gICBtYXRjaCh7IHR5cGU6ICd4JyB9LCBbeyB0eXBlOiAneCcgfSwgMV0sIFt7IHR5cGU6ICd5JyB9LCAyXSlcbmNvbnN0IG1hdGNoQWdhaW5zdFByZWRpY2F0ZXMgPSAoZGlzY3JpbWluYXRvciwgYm9keSwgcHJlZGljYXRlcykgPT4ge1xuICAgIGZvciAobGV0IFtwcmVkaWNhdGUsIHByZWRpY2F0ZUNhc2VdIG9mIHByZWRpY2F0ZXMpIHtcbiAgICAgICAgLy8gSWYgZ2l2ZW4gYW4gb2JqZWN0XG4gICAgICAgIGlmIChfLmlzT2JqZWN0TGlrZShwcmVkaWNhdGUpKSB7XG4gICAgICAgICAgICBwcmVkaWNhdGUgPSBfLm1hdGNoZXMocHJlZGljYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgbGV0IG1hdGNoZWRDYXNlO1xuICAgICAgICBpZiAocHJlZGljYXRlID09PSBkaXNjcmltaW5hdG9yKSB7XG4gICAgICAgICAgICBtYXRjaGVkQ2FzZSA9IHByZWRpY2F0ZUNhc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5pc0Z1bmN0aW9uKHByZWRpY2F0ZSkgJiYgcHJlZGljYXRlKGRpc2NyaW1pbmF0b3IpID09IHRydWUpIHtcbiAgICAgICAgICAgIC8vIE5vdGU6IHVzaW5nIHdlYWsgZXF1YWxpdHkgKD09KSBmb3IgcHJlZGljYXRlIGNoZWNrXG4gICAgICAgICAgICBtYXRjaGVkQ2FzZSA9IHByZWRpY2F0ZUNhc2U7XG4gICAgICAgIH0gZWxzZSBpZiAocHJlZGljYXRlID09PSBkZWZzLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIG1hdGNoZWRDYXNlID0gcHJlZGljYXRlQ2FzZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKG1hdGNoZWRDYXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChfLmlzRnVuY3Rpb24obWF0Y2hlZENhc2UpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWRDYXNlKGJvZHkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlZENhc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gRmFsbC10aHJvdWdoOiBubyBtYXRjaFxuICAgIHRocm93IG5ldyBFcnJvcihgW21hdGNoLmpzXSBVbm1hdGNoZWQgY2FzZTogJHtKU09OLnN0cmluZ2lmeShkaXNjcmltaW5hdG9yKX1gKTtcbn07XG5cblxuLy8gQ3JlYXRlIGEgbmV3IG1hdGNoZXIgdXNpbmcgdGhlIGdpdmVuIHBhcnNlclxuY29uc3QgbWF0Y2hlciA9IHBhcnNlU3ViamVjdCA9PiB7XG4gICAgY29uc3QgbWF0Y2hlciA9IChzdWJqZWN0LCAuLi5hcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGlzY3JpbWluYXRvciwgYm9keSB9ID0gcGFyc2VTdWJqZWN0KHN1YmplY3QpO1xuICAgICAgICBcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIF8uaXNQbGFpbk9iamVjdChhcmdzWzBdKSkge1xuICAgICAgICAgICAgY29uc3QgY2FzZXMgPSBhcmdzWzBdO1xuICAgICAgICAgICAgcmVzdWx0ID0gbWF0Y2hBZ2FpbnN0T2JqZWN0KGRpc2NyaW1pbmF0b3IsIGJvZHksIGNhc2VzKTtcbiAgICAgICAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PT0gMSAmJiBfLmlzQXJyYXkoYXJnc1swXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZWRpY2F0ZXMgPSBhcmdzWzBdO1xuICAgICAgICAgICAgcmVzdWx0ID0gbWF0Y2hBZ2FpbnN0UHJlZGljYXRlcyhkaXNjcmltaW5hdG9yLCBib2R5LCBwcmVkaWNhdGVzKTtcbiAgICAgICAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBwcmVkaWNhdGVzID0gYXJncztcbiAgICAgICAgICAgIHJlc3VsdCA9IG1hdGNoQWdhaW5zdFByZWRpY2F0ZXMoZGlzY3JpbWluYXRvciwgYm9keSwgcHJlZGljYXRlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFttYXRjaC5qc10gSW52YWxpZCBhcmd1bWVudHMgZ2l2ZW5gKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG1hdGNoZXIsIGRlZnMpO1xufTtcblxuXG4vLyBTcGVjaWZpYyBtYXRjaGVyc1xuXG4vLyBHZW5lcmljIG1hdGNoLiBBY2NlcHQgYW55IHN1YmplY3QsIGFuZCBkaXNjcmltaW5hdGUgdXNpbmcgdGhlIHZhbHVlIGl0c2VsZlxuY29uc3QgbWF0Y2ggPSBtYXRjaGVyKHN1YmplY3QgPT4gKHsgZGlzY3JpbWluYXRvcjogc3ViamVjdCwgYm9keTogc3ViamVjdCB9KSk7XG5cbi8vIE1hdGNoIG9uIG9iamVjdHMgd2l0aCBhIGB0eXBlYCBwcm9wZXJ0eVxuY29uc3QgbWF0Y2hUeXBlID0gbWF0Y2hlcihzdWJqZWN0ID0+IHtcbiAgICBpZiAoIV8uaXNPYmplY3RMaWtlKHN1YmplY3QpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW21hdGNoLmpzXSBFeHBlY3RlZCBhbiBvYmplY3QsIGdpdmVuICR7SlNPTi5zdHJpbmdpZnkoc3ViamVjdCl9YCk7XG4gICAgfVxuICAgIGlmICghc3ViamVjdC5oYXNPd25Qcm9wZXJ0eSgndHlwZScpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW21hdGNoLmpzXSBNaXNzaW5nICd0eXBlJyBwcm9wZXJ0eSwgZ2l2ZW4gJHtKU09OLnN0cmluZ2lmeShzdWJqZWN0KX1gKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHsgZGlzY3JpbWluYXRvcjogc3ViamVjdC50eXBlLCBib2R5OiBzdWJqZWN0IH07XG59KTtcblxuY29uc3QgbWF0Y2hTaW5nbGVLZXkgPSBtYXRjaGVyKHN1YmplY3QgPT4ge1xuICAgIGlmICghXy5pc09iamVjdExpa2Uoc3ViamVjdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbbWF0Y2guanNdIEV4cGVjdGVkIGFuIG9iamVjdCwgZ2l2ZW4gJHtKU09OLnN0cmluZ2lmeShzdWJqZWN0KX1gKTtcbiAgICB9XG4gICAgXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHN1YmplY3QpO1xuICAgIFxuICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFttYXRjaC5qc10gRXhwZWN0ZWQgYW4gb2JqZWN0IHdpdGggYSBzaW5nbGUga2V5LCBnaXZlbiAke0pTT04uc3RyaW5naWZ5KHN1YmplY3QpfWApO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBkaXNjcmltaW5hdG9yID0ga2V5c1swXTtcbiAgICByZXR1cm4geyBkaXNjcmltaW5hdG9yLCBib2R5OiBzdWJqZWN0W2Rpc2NyaW1pbmF0b3JdIH07XG59KTtcblxuZXhwb3J0IHsgbWF0Y2hlciwgbWF0Y2gsIG1hdGNoVHlwZSwgZ2V0U2luZ2xlS2V5LCBtYXRjaFNpbmdsZUtleSB9O1xuZXhwb3J0IGRlZmF1bHQgbWF0Y2g7XG4iXX0= |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
50289
0.69%5
-16.67%458
2%1
Infinity%+ Added
- Removed
Updated