Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

shift-reducer

Package Overview
Dependencies
Maintainers
3
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

shift-reducer - npm Package Compare versions

Comparing version 1.0.1 to 1.0.2

lib/monoidal-reducer.js

280

lib/index.js
"use strict";
var _extends = function (child, parent) {
child.prototype = Object.create(parent.prototype, {
constructor: {
value: child,
enumerable: false,
writable: true,
configurable: true
}
});
child.__proto__ = parent;
};
var Shift = require("shift-ast");
var MonoidalReducer = require("./monoidal-reducer")["default"];
exports.MonoidalReducer = MonoidalReducer;

@@ -131,267 +121,3 @@

}
exports["default"] = reduce;
var Reducer = function Reducer() {};
exports.Reducer = Reducer;
var MonoidalReducer = (function (Reducer) {
var MonoidalReducer = function MonoidalReducer(monoid) {
var empty = monoid.empty();
this.identity = function () {
return empty;
};
var concat = monoid.prototype && monoid.prototype.concat || monoid.concat;
this.append = this.append2 = function (a, b) {
return concat.call(a, b);
};
};
_extends(MonoidalReducer, Reducer);
MonoidalReducer.prototype.fromNull = function (a) {
return a == null ? this.identity() : a;
};
MonoidalReducer.prototype.append3 = function (a, b, c) {
return this.append(this.append(a, b), c);
};
MonoidalReducer.prototype.append4 = function (a, b, c, d) {
return this.append(this.append3(a, b, c), d);
};
MonoidalReducer.prototype.fold = function (as, a) {
var _this = this;
return as.reduce(function (memo, x) {
return _this.append(memo, x);
}, a == null ? this.identity() : a);
};
MonoidalReducer.prototype.reduceArrayExpression = function (node, elements) {
return this.fold(elements.filter(function (x) {
return x != null;
}));
};
MonoidalReducer.prototype.reduceAssignmentExpression = function (node, binding, expression) {
return this.append(binding, expression);
};
MonoidalReducer.prototype.reduceBinaryExpression = function (node, left, right) {
return this.append(left, right);
};
MonoidalReducer.prototype.reduceBlock = function (node, statements) {
return this.fold(statements);
};
MonoidalReducer.prototype.reduceBlockStatement = function (node, block) {
return block;
};
MonoidalReducer.prototype.reduceBreakStatement = function (node, label) {
return this.fromNull(label);
};
MonoidalReducer.prototype.reduceCallExpression = function (node, callee, args) {
return this.fold(args, callee);
};
MonoidalReducer.prototype.reduceCatchClause = function (node, binding, body) {
return this.append(binding, body);
};
MonoidalReducer.prototype.reduceComputedMemberExpression = function (node, object, expression) {
return this.append(object, expression);
};
MonoidalReducer.prototype.reduceConditionalExpression = function (node, test, consequent, alternate) {
return this.append3(test, consequent, alternate);
};
MonoidalReducer.prototype.reduceContinueStatement = function (node, label) {
return this.fromNull(label);
};
MonoidalReducer.prototype.reduceDataProperty = function (node, name, expression) {
return this.append(name, expression);
};
MonoidalReducer.prototype.reduceDebuggerStatement = function (node) {
return this.identity();
};
MonoidalReducer.prototype.reduceDoWhileStatement = function (node, body, test) {
return this.append(body, test);
};
MonoidalReducer.prototype.reduceEmptyStatement = function (node) {
return this.identity();
};
MonoidalReducer.prototype.reduceExpressionStatement = function (node, expression) {
return expression;
};
MonoidalReducer.prototype.reduceForInStatement = function (node, left, right, body) {
return this.append3(left, right, body);
};
MonoidalReducer.prototype.reduceForStatement = function (node, init, test, update, body) {
return this.append4(this.fromNull(init), this.fromNull(test), this.fromNull(update), body);
};
MonoidalReducer.prototype.reduceFunctionBody = function (node, directives, statements) {
return this.append(this.fold(directives), this.fold(statements));
};
MonoidalReducer.prototype.reduceFunctionDeclaration = function (node, name, parameters, body) {
return this.append(this.fold(parameters, name), body);
};
MonoidalReducer.prototype.reduceFunctionExpression = function (node, name, parameters, body) {
return this.append(this.fold(parameters, this.fromNull(name)), body);
};
MonoidalReducer.prototype.reduceGetter = function (node, name, body) {
return this.append(name, body);
};
MonoidalReducer.prototype.reduceIdentifier = function (node) {
return this.identity();
};
MonoidalReducer.prototype.reduceIdentifierExpression = function (node, name) {
return name;
};
MonoidalReducer.prototype.reduceIfStatement = function (node, test, consequent, alternate) {
return this.append3(test, consequent, this.fromNull(alternate));
};
MonoidalReducer.prototype.reduceLabeledStatement = function (node, label, body) {
return this.append(label, body);
};
MonoidalReducer.prototype.reduceLiteralBooleanExpression = function (node) {
return this.identity();
};
MonoidalReducer.prototype.reduceLiteralNullExpression = function (node) {
return this.identity();
};
MonoidalReducer.prototype.reduceLiteralNumericExpression = function (node) {
return this.identity();
};
MonoidalReducer.prototype.reduceLiteralRegExpExpression = function (node) {
return this.identity();
};
MonoidalReducer.prototype.reduceLiteralStringExpression = function (node) {
return this.identity();
};
MonoidalReducer.prototype.reduceNewExpression = function (node, callee, args) {
return this.fold(args, callee);
};
MonoidalReducer.prototype.reduceObjectExpression = function (node, properties) {
return this.fold(properties);
};
MonoidalReducer.prototype.reducePostfixExpression = function (node, operand) {
return operand;
};
MonoidalReducer.prototype.reducePrefixExpression = function (node, operand) {
return operand;
};
MonoidalReducer.prototype.reducePropertyName = function (node) {
return this.identity();
};
MonoidalReducer.prototype.reduceReturnStatement = function (node, expression) {
return this.fromNull(expression);
};
MonoidalReducer.prototype.reduceScript = function (node, body) {
return body;
};
MonoidalReducer.prototype.reduceSetter = function (node, name, parameter, body) {
return this.append3(name, parameter, body);
};
MonoidalReducer.prototype.reduceStaticMemberExpression = function (node, object, property) {
return this.append(object, property);
};
MonoidalReducer.prototype.reduceSwitchCase = function (node, test, consequent) {
return this.fold(consequent, test);
};
MonoidalReducer.prototype.reduceSwitchDefault = function (node, consequent) {
return this.fold(consequent);
};
MonoidalReducer.prototype.reduceSwitchStatement = function (node, discriminant, cases) {
return this.fold(cases, discriminant);
};
MonoidalReducer.prototype.reduceSwitchStatementWithDefault = function (node, discriminant, preDefaultCases, defaultCase, postDefaultCases) {
return this.append4(discriminant, this.fold(preDefaultCases), defaultCase, this.fold(postDefaultCases));
};
MonoidalReducer.prototype.reduceThisExpression = function (node) {
return this.identity();
};
MonoidalReducer.prototype.reduceThrowStatement = function (node, expression) {
return this.fromNull(expression);
};
MonoidalReducer.prototype.reduceTryCatchStatement = function (node, block, catchClause) {
return this.append(block, catchClause);
};
MonoidalReducer.prototype.reduceTryFinallyStatement = function (node, block, catchClause, finalizer) {
return this.append3(block, this.fromNull(catchClause), finalizer);
};
MonoidalReducer.prototype.reduceUnknownDirective = function (node) {
return this.identity();
};
MonoidalReducer.prototype.reduceUseStrictDirective = function (node) {
return this.identity();
};
MonoidalReducer.prototype.reduceVariableDeclaration = function (node, declarators) {
return this.fold(declarators);
};
MonoidalReducer.prototype.reduceVariableDeclarationStatement = function (node, declaration) {
return declaration;
};
MonoidalReducer.prototype.reduceVariableDeclarator = function (node, binding, init) {
return this.append(binding, this.fromNull(init));
};
MonoidalReducer.prototype.reduceWhileStatement = function (node, test, body) {
return this.append(test, body);
};
MonoidalReducer.prototype.reduceWithStatement = function (node, object, body) {
return this.append(object, body);
};
return MonoidalReducer;
})(Reducer);
exports.MonoidalReducer = MonoidalReducer;
//# sourceMappingURL=data:application/json;base64,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LElBQUksRUFBRTtBQUMzQixXQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztHQUN4Qjs7QUF2S1UsaUJBQWUsV0F3SzFCLHdCQUF3QixHQUFBLFVBQUMsSUFBSSxFQUFFO0FBQzdCLFdBQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0dBQ3hCOztBQTFLVSxpQkFBZSxXQTJLMUIseUJBQXlCLEdBQUEsVUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQzNDLFdBQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztHQUMvQjs7QUE3S1UsaUJBQWUsV0E4SzFCLGtDQUFrQyxHQUFBLFVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtBQUNwRCxXQUFPLFdBQVcsQ0FBQztHQUNwQjs7QUFoTFUsaUJBQWUsV0FpTDFCLHdCQUF3QixHQUFBLFVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDNUMsV0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7R0FDbEQ7O0FBbkxVLGlCQUFlLFdBb0wxQixvQkFBb0IsR0FBQSxVQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3JDLFdBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7R0FDaEM7O0FBdExVLGlCQUFlLFdBdUwxQixtQkFBbUIsR0FBQSxVQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQ3RDLFdBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7R0FDbEM7O1NBekxVLGVBQWU7R0FBUyxPQUFPOztRQUEvQixlQUFlLEdBQWYsZUFBZSIsImZpbGUiOiJzcmMvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAyMDE0IFNoYXBlIFNlY3VyaXR5LCBJbmMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKVxuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0ICogYXMgU2hpZnQgZnJvbSBcInNoaWZ0LWFzdFwiXG5cblxuZnVuY3Rpb24gcmVjdXJzZShicmFuY2gpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHJlZHVjZXIsIG5vZGUpIHtcbiAgICBsZXQgYnJhbmNoTm9kZSA9IG5vZGVbYnJhbmNoXTtcbiAgICByZXR1cm4gRFJJVkVSW2JyYW5jaE5vZGUudHlwZV0ocmVkdWNlciwgYnJhbmNoTm9kZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlY3Vyc2VNYXliZShicmFuY2gpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHJlZHVjZXIsIG5vZGUpIHtcbiAgICBsZXQgYnJhbmNoTm9kZSA9IG5vZGVbYnJhbmNoXTtcbiAgICBpZiAoYnJhbmNoTm9kZSA9PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gRFJJVkVSW2JyYW5jaE5vZGUudHlwZV0ocmVkdWNlciwgYnJhbmNoTm9kZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlY3Vyc2VMaXN0KGJyYW5jaCkge1xuICByZXR1cm4gZnVuY3Rpb24ocmVkdWNlciwgbm9kZSkge1xuICAgIHJldHVybiBbXS5tYXAuY2FsbChub2RlW2JyYW5jaF0sIChuKSA9PiBEUklWRVJbbi50eXBlXShyZWR1Y2VyLCBuKSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlY3Vyc2VMaXN0TWF5YmUoYnJhbmNoKSB7XG4gIHJldHVybiBmdW5jdGlvbihyZWR1Y2VyLCBub2RlKSB7XG4gICAgcmV0dXJuIFtdLm1hcC5jYWxsKG5vZGVbYnJhbmNoXSwgKG4pID0+IHtcbiAgICAgIGlmIChuID09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIERSSVZFUltuLnR5cGVdKHJlZHVjZXIsIG4pO1xuICAgIH0pO1xuICB9O1xufVxuXG5jb25zdCBSRURVQ0VSX1NQRUMgPSB7XG4gIEFycmF5RXhwcmVzc2lvbjogW3JlY3Vyc2VMaXN0TWF5YmUoJ2VsZW1lbnRzJyldLFxuICBBc3NpZ25tZW50RXhwcmVzc2lvbjogW3JlY3Vyc2UoJ2JpbmRpbmcnKSwgcmVjdXJzZSgnZXhwcmVzc2lvbicpXSxcbiAgQmluYXJ5RXhwcmVzc2lvbjogW3JlY3Vyc2UoJ2xlZnQnKSwgcmVjdXJzZSgncmlnaHQnKV0sXG4gIEJsb2NrOiBbcmVjdXJzZUxpc3QoJ3N0YXRlbWVudHMnKV0sXG4gIEJsb2NrU3RhdGVtZW50OiBbcmVjdXJzZSgnYmxvY2snKV0sXG4gIEJyZWFrU3RhdGVtZW50OiBbcmVjdXJzZU1heWJlKCdsYWJlbCcpXSxcbiAgQ2FsbEV4cHJlc3Npb246IFtyZWN1cnNlKCdjYWxsZWUnKSwgcmVjdXJzZUxpc3QoJ2FyZ3VtZW50cycpXSxcbiAgQ2F0Y2hDbGF1c2U6IFtyZWN1cnNlKCdiaW5kaW5nJyksIHJlY3Vyc2UoJ2JvZHknKV0sXG4gIENvbXB1dGVkTWVtYmVyRXhwcmVzc2lvbjogW3JlY3Vyc2UoJ29iamVjdCcpLCByZWN1cnNlKCdleHByZXNzaW9uJyldLFxuICBDb25kaXRpb25hbEV4cHJlc3Npb246IFtyZWN1cnNlKCd0ZXN0JyksIHJlY3Vyc2UoJ2NvbnNlcXVlbnQnKSwgcmVjdXJzZSgnYWx0ZXJuYXRlJyldLFxuICBDb250aW51ZVN0YXRlbWVudDogW3JlY3Vyc2VNYXliZSgnbGFiZWwnKV0sXG4gIERhdGFQcm9wZXJ0eTogW3JlY3Vyc2UoJ25hbWUnKSwgcmVjdXJzZSgnZXhwcmVzc2lvbicpXSxcbiAgRGVidWdnZXJTdGF0ZW1lbnQ6IFtdLFxuICBEb1doaWxlU3RhdGVtZW50OiBbcmVjdXJzZSgnYm9keScpLCByZWN1cnNlKCd0ZXN0JyldLFxuICBFbXB0eVN0YXRlbWVudDogW10sXG4gIEV4cHJlc3Npb25TdGF0ZW1lbnQ6IFtyZWN1cnNlKCdleHByZXNzaW9uJyldLFxuICBGb3JJblN0YXRlbWVudDogW3JlY3Vyc2UoJ2xlZnQnKSwgcmVjdXJzZSgncmlnaHQnKSwgcmVjdXJzZSgnYm9keScpXSxcbiAgRm9yU3RhdGVtZW50OiBbcmVjdXJzZU1heWJlKCdpbml0JyksIHJlY3Vyc2VNYXliZSgndGVzdCcpLCByZWN1cnNlTWF5YmUoJ3VwZGF0ZScpLCByZWN1cnNlKCdib2R5JyldLFxuICBGdW5jdGlvbkJvZHk6IFtyZWN1cnNlTGlzdCgnZGlyZWN0aXZlcycpLCByZWN1cnNlTGlzdCgnc3RhdGVtZW50cycpXSxcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbjogW3JlY3Vyc2UoJ25hbWUnKSwgcmVjdXJzZUxpc3QoJ3BhcmFtZXRlcnMnKSwgcmVjdXJzZSgnYm9keScpXSxcbiAgRnVuY3Rpb25FeHByZXNzaW9uOiBbcmVjdXJzZU1heWJlKCduYW1lJyksIHJlY3Vyc2VMaXN0KCdwYXJhbWV0ZXJzJyksIHJlY3Vyc2UoJ2JvZHknKV0sXG4gIEdldHRlcjogW3JlY3Vyc2UoJ25hbWUnKSwgcmVjdXJzZSgnYm9keScpXSxcbiAgSWRlbnRpZmllcjogW10sXG4gIElkZW50aWZpZXJFeHByZXNzaW9uOiBbcmVjdXJzZSgnaWRlbnRpZmllcicpXSxcbiAgSWZTdGF0ZW1lbnQ6IFtyZWN1cnNlKCd0ZXN0JyksIHJlY3Vyc2UoJ2NvbnNlcXVlbnQnKSwgcmVjdXJzZU1heWJlKCdhbHRlcm5hdGUnKV0sXG4gIExhYmVsZWRTdGF0ZW1lbnQ6IFtyZWN1cnNlKCdsYWJlbCcpLCByZWN1cnNlKCdib2R5JyldLFxuICBMaXRlcmFsQm9vbGVhbkV4cHJlc3Npb246IFtdLFxuICBMaXRlcmFsTnVsbEV4cHJlc3Npb246IFtdLFxuICBMaXRlcmFsTnVtZXJpY0V4cHJlc3Npb246IFtdLFxuICBMaXRlcmFsUmVnRXhwRXhwcmVzc2lvbjogW10sXG4gIExpdGVyYWxTdHJpbmdFeHByZXNzaW9uOiBbXSxcbiAgTmV3RXhwcmVzc2lvbjogW3JlY3Vyc2UoJ2NhbGxlZScpLCByZWN1cnNlTGlzdCgnYXJndW1lbnRzJyldLFxuICBPYmplY3RFeHByZXNzaW9uOiBbcmVjdXJzZUxpc3QoJ3Byb3BlcnRpZXMnKV0sXG4gIFBvc3RmaXhFeHByZXNzaW9uOiBbcmVjdXJzZSgnb3BlcmFuZCcpXSxcbiAgUHJlZml4RXhwcmVzc2lvbjogW3JlY3Vyc2UoJ29wZXJhbmQnKV0sXG4gIFByb3BlcnR5TmFtZTogW10sXG4gIFJldHVyblN0YXRlbWVudDogW3JlY3Vyc2VNYXliZSgnZXhwcmVzc2lvbicpXSxcbiAgU2NyaXB0OiBbcmVjdXJzZSgnYm9keScpXSxcbiAgU2V0dGVyOiBbcmVjdXJzZSgnbmFtZScpLCByZWN1cnNlKCdwYXJhbWV0ZXInKSwgcmVjdXJzZSgnYm9keScpXSxcbiAgU3RhdGljTWVtYmVyRXhwcmVzc2lvbjogW3JlY3Vyc2UoJ29iamVjdCcpLCByZWN1cnNlKCdwcm9wZXJ0eScpXSxcbiAgU3dpdGNoQ2FzZTogW3JlY3Vyc2UoJ3Rlc3QnKSwgcmVjdXJzZUxpc3QoJ2NvbnNlcXVlbnQnKV0sXG4gIFN3aXRjaERlZmF1bHQ6IFtyZWN1cnNlTGlzdCgnY29uc2VxdWVudCcpXSxcbiAgU3dpdGNoU3RhdGVtZW50OiBbcmVjdXJzZSgnZGlzY3JpbWluYW50JyksIHJlY3Vyc2VMaXN0KCdjYXNlcycpXSxcbiAgU3dpdGNoU3RhdGVtZW50V2l0aERlZmF1bHQ6IFtyZWN1cnNlKCdkaXNjcmltaW5hbnQnKSwgcmVjdXJzZUxpc3QoJ3ByZURlZmF1bHRDYXNlcycpLCByZWN1cnNlKCdkZWZhdWx0Q2FzZScpLCByZWN1cnNlTGlzdCgncG9zdERlZmF1bHRDYXNlcycpXSxcbiAgVGhpc0V4cHJlc3Npb246IFtdLFxuICBUaHJvd1N0YXRlbWVudDogW3JlY3Vyc2UoJ2V4cHJlc3Npb24nKV0sXG4gIFRyeUNhdGNoU3RhdGVtZW50OiBbcmVjdXJzZSgnYm9keScpLCByZWN1cnNlKCdjYXRjaENsYXVzZScpXSxcbiAgVHJ5RmluYWxseVN0YXRlbWVudDogW3JlY3Vyc2UoJ2JvZHknKSwgcmVjdXJzZU1heWJlKCdjYXRjaENsYXVzZScpLCByZWN1cnNlKCdmaW5hbGl6ZXInKV0sXG4gIFVua25vd25EaXJlY3RpdmU6IFtdLFxuICBVc2VTdHJpY3REaXJlY3RpdmU6IFtdLFxuICBWYXJpYWJsZURlY2xhcmF0aW9uOiBbcmVjdXJzZUxpc3QoJ2RlY2xhcmF0b3JzJyldLFxuICBWYXJpYWJsZURlY2xhcmF0aW9uU3RhdGVtZW50OiBbcmVjdXJzZSgnZGVjbGFyYXRpb24nKV0sXG4gIFZhcmlhYmxlRGVjbGFyYXRvcjogW3JlY3Vyc2UoJ2JpbmRpbmcnKSwgcmVjdXJzZU1heWJlKCdpbml0JyldLFxuICBXaGlsZVN0YXRlbWVudDogW3JlY3Vyc2UoJ3Rlc3QnKSwgcmVjdXJzZSgnYm9keScpXSxcbiAgV2l0aFN0YXRlbWVudDogW3JlY3Vyc2UoJ29iamVjdCcpLCByZWN1cnNlKCdib2R5JyldLFxufTtcblxuY29uc3QgRFJJVkVSID0gKGZ1bmN0aW9uKCl7XG4gIHZhciBvID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZm9yKGxldCBUIGluIFJFRFVDRVJfU1BFQykge1xuICAgIGlmKCF7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFJFRFVDRVJfU1BFQywgVCkpIGNvbnRpbnVlO1xuICAgIGxldCByZWR1Y2luZ0Z1bmN0aW9uTmFtZSA9ICdyZWR1Y2UnICsgVDtcbiAgICBvW1RdID0gZnVuY3Rpb24ocmVkdWNlciwgbm9kZSkge1xuICAgICAgcmV0dXJuIHJlZHVjZXJbcmVkdWNpbmdGdW5jdGlvbk5hbWVdLmFwcGx5KHJlZHVjZXIsIFtub2RlXS5jb25jYXQoXG4gICAgICAgIFJFRFVDRVJfU1BFQ1tUXS5tYXAoKGYpID0+IGYocmVkdWNlciwgbm9kZSkpXG4gICAgICApKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBvO1xufSgpKTtcblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWR1Y2UocmVkdWNlciwgcmVkdWNpYmxlKSB7XG4gIHJldHVybiBEUklWRVJbcmVkdWNpYmxlLnR5cGVdKHJlZHVjZXIsIHJlZHVjaWJsZSk7XG59XG5cblxuZXhwb3J0IGNsYXNzIFJlZHVjZXIgeyB9XG5cbmV4cG9ydCBjbGFzcyBNb25vaWRhbFJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgY29uc3RydWN0b3IobW9ub2lkKSB7XG4gICAgbGV0IGVtcHR5ID0gbW9ub2lkLmVtcHR5KCk7XG4gICAgdGhpcy5pZGVudGl0eSA9ICgpID0+IGVtcHR5O1xuICAgIGxldCBjb25jYXQgPSBtb25vaWQucHJvdG90eXBlICYmIG1vbm9pZC5wcm90b3R5cGUuY29uY2F0IHx8IG1vbm9pZC5jb25jYXQ7XG4gICAgdGhpcy5hcHBlbmQgPSB0aGlzLmFwcGVuZDIgPSAoYSwgYikgPT4gY29uY2F0LmNhbGwoYSwgYik7XG4gIH1cblxuICBmcm9tTnVsbChhKSB7XG4gICAgcmV0dXJuIGEgPT0gbnVsbCA/IHRoaXMuaWRlbnRpdHkoKSA6IGE7XG4gIH1cbiAgYXBwZW5kMyhhLCBiLCBjKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwZW5kKHRoaXMuYXBwZW5kKGEsIGIpLCBjKTtcbiAgfVxuICBhcHBlbmQ0KGEsIGIsIGMsIGQpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBlbmQodGhpcy5hcHBlbmQzKGEsIGIsIGMpLCBkKTtcbiAgfVxuICBmb2xkKGFzLCBhKSB7XG4gICAgcmV0dXJuIGFzLnJlZHVjZSgobWVtbywgeCkgPT4gdGhpcy5hcHBlbmQobWVtbywgeCksIGEgPT0gbnVsbCA/IHRoaXMuaWRlbnRpdHkoKSA6IGEpO1xuICB9XG5cbiAgcmVkdWNlQXJyYXlFeHByZXNzaW9uKG5vZGUsIGVsZW1lbnRzKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9sZChlbGVtZW50cy5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkpO1xuICB9XG4gIHJlZHVjZUFzc2lnbm1lbnRFeHByZXNzaW9uKG5vZGUsIGJpbmRpbmcsIGV4cHJlc3Npb24pIHtcbiAgICByZXR1cm4gdGhpcy5hcHBlbmQoYmluZGluZywgZXhwcmVzc2lvbik7XG4gIH1cbiAgcmVkdWNlQmluYXJ5RXhwcmVzc2lvbihub2RlLCBsZWZ0LCByaWdodCkge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZChsZWZ0LCByaWdodCk7XG4gIH1cbiAgcmVkdWNlQmxvY2sobm9kZSwgc3RhdGVtZW50cykge1xuICAgIHJldHVybiB0aGlzLmZvbGQoc3RhdGVtZW50cyk7XG4gIH1cbiAgcmVkdWNlQmxvY2tTdGF0ZW1lbnQobm9kZSwgYmxvY2spIHtcbiAgICByZXR1cm4gYmxvY2s7XG4gIH1cbiAgcmVkdWNlQnJlYWtTdGF0ZW1lbnQobm9kZSwgbGFiZWwpIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tTnVsbChsYWJlbCk7XG4gIH1cbiAgcmVkdWNlQ2FsbEV4cHJlc3Npb24obm9kZSwgY2FsbGVlLCBhcmdzKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9sZChhcmdzLCBjYWxsZWUpO1xuICB9XG4gIHJlZHVjZUNhdGNoQ2xhdXNlKG5vZGUsIGJpbmRpbmcsIGJvZHkpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBlbmQoYmluZGluZywgYm9keSk7XG4gIH1cbiAgcmVkdWNlQ29tcHV0ZWRNZW1iZXJFeHByZXNzaW9uKG5vZGUsIG9iamVjdCwgZXhwcmVzc2lvbikge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZChvYmplY3QsIGV4cHJlc3Npb24pO1xuICB9XG4gIHJlZHVjZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihub2RlLCB0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBlbmQzKHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSk7XG4gIH1cbiAgcmVkdWNlQ29udGludWVTdGF0ZW1lbnQobm9kZSwgbGFiZWwpIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tTnVsbChsYWJlbCk7XG4gIH1cbiAgcmVkdWNlRGF0YVByb3BlcnR5KG5vZGUsIG5hbWUsIGV4cHJlc3Npb24pIHtcbiAgICByZXR1cm4gdGhpcy5hcHBlbmQobmFtZSwgZXhwcmVzc2lvbik7XG4gIH1cbiAgcmVkdWNlRGVidWdnZXJTdGF0ZW1lbnQobm9kZSkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5KCk7XG4gIH1cbiAgcmVkdWNlRG9XaGlsZVN0YXRlbWVudChub2RlLCBib2R5LCB0ZXN0KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwZW5kKGJvZHksIHRlc3QpO1xuICB9XG4gIHJlZHVjZUVtcHR5U3RhdGVtZW50KG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0eSgpO1xuICB9XG4gIHJlZHVjZUV4cHJlc3Npb25TdGF0ZW1lbnQobm9kZSwgZXhwcmVzc2lvbikge1xuICAgIHJldHVybiBleHByZXNzaW9uO1xuICB9XG4gIHJlZHVjZUZvckluU3RhdGVtZW50KG5vZGUsIGxlZnQsIHJpZ2h0LCBib2R5KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwZW5kMyhsZWZ0LCByaWdodCwgYm9keSk7XG4gIH1cbiAgcmVkdWNlRm9yU3RhdGVtZW50KG5vZGUsIGluaXQsIHRlc3QsIHVwZGF0ZSwgYm9keSkge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZDQodGhpcy5mcm9tTnVsbChpbml0KSwgdGhpcy5mcm9tTnVsbCh0ZXN0KSwgdGhpcy5mcm9tTnVsbCh1cGRhdGUpLCBib2R5KTtcbiAgfVxuICByZWR1Y2VGdW5jdGlvbkJvZHkobm9kZSwgZGlyZWN0aXZlcywgc3RhdGVtZW50cykge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZCh0aGlzLmZvbGQoZGlyZWN0aXZlcyksIHRoaXMuZm9sZChzdGF0ZW1lbnRzKSk7XG4gIH1cbiAgcmVkdWNlRnVuY3Rpb25EZWNsYXJhdGlvbihub2RlLCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwZW5kKHRoaXMuZm9sZChwYXJhbWV0ZXJzLCBuYW1lKSwgYm9keSk7XG4gIH1cbiAgcmVkdWNlRnVuY3Rpb25FeHByZXNzaW9uKG5vZGUsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHkpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBlbmQodGhpcy5mb2xkKHBhcmFtZXRlcnMsIHRoaXMuZnJvbU51bGwobmFtZSkpLCBib2R5KTtcbiAgfVxuICByZWR1Y2VHZXR0ZXIobm9kZSwgbmFtZSwgYm9keSkge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZChuYW1lLCBib2R5KTtcbiAgfVxuICByZWR1Y2VJZGVudGlmaWVyKG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0eSgpO1xuICB9XG4gIHJlZHVjZUlkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUsIG5hbWUpIHtcbiAgICByZXR1cm4gbmFtZTtcbiAgfVxuICByZWR1Y2VJZlN0YXRlbWVudChub2RlLCB0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBlbmQzKHRlc3QsIGNvbnNlcXVlbnQsIHRoaXMuZnJvbU51bGwoYWx0ZXJuYXRlKSk7XG4gIH1cbiAgcmVkdWNlTGFiZWxlZFN0YXRlbWVudChub2RlLCBsYWJlbCwgYm9keSkge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZChsYWJlbCwgYm9keSk7XG4gIH1cbiAgcmVkdWNlTGl0ZXJhbEJvb2xlYW5FeHByZXNzaW9uKG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0eSgpO1xuICB9XG4gIHJlZHVjZUxpdGVyYWxOdWxsRXhwcmVzc2lvbihub2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHkoKTtcbiAgfVxuICByZWR1Y2VMaXRlcmFsTnVtZXJpY0V4cHJlc3Npb24obm9kZSkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5KCk7XG4gIH1cbiAgcmVkdWNlTGl0ZXJhbFJlZ0V4cEV4cHJlc3Npb24obm9kZSkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5KCk7XG4gIH1cbiAgcmVkdWNlTGl0ZXJhbFN0cmluZ0V4cHJlc3Npb24obm9kZSkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5KCk7XG4gIH1cbiAgcmVkdWNlTmV3RXhwcmVzc2lvbihub2RlLCBjYWxsZWUsIGFyZ3MpIHtcbiAgICByZXR1cm4gdGhpcy5mb2xkKGFyZ3MsIGNhbGxlZSk7XG4gIH1cbiAgcmVkdWNlT2JqZWN0RXhwcmVzc2lvbihub2RlLCBwcm9wZXJ0aWVzKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9sZChwcm9wZXJ0aWVzKTtcbiAgfVxuICByZWR1Y2VQb3N0Zml4RXhwcmVzc2lvbihub2RlLCBvcGVyYW5kKSB7XG4gICAgcmV0dXJuIG9wZXJhbmQ7XG4gIH1cbiAgcmVkdWNlUHJlZml4RXhwcmVzc2lvbihub2RlLCBvcGVyYW5kKSB7XG4gICAgcmV0dXJuIG9wZXJhbmQ7XG4gIH1cbiAgcmVkdWNlUHJvcGVydHlOYW1lKG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0eSgpO1xuICB9XG4gIHJlZHVjZVJldHVyblN0YXRlbWVudChub2RlLCBleHByZXNzaW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU51bGwoZXhwcmVzc2lvbik7XG4gIH1cbiAgcmVkdWNlU2NyaXB0KG5vZGUsIGJvZHkpIHtcbiAgICByZXR1cm4gYm9keTtcbiAgfVxuICByZWR1Y2VTZXR0ZXIobm9kZSwgbmFtZSwgcGFyYW1ldGVyLCBib2R5KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwZW5kMyhuYW1lLCBwYXJhbWV0ZXIsIGJvZHkpO1xuICB9XG4gIHJlZHVjZVN0YXRpY01lbWJlckV4cHJlc3Npb24obm9kZSwgb2JqZWN0LCBwcm9wZXJ0eSkge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZChvYmplY3QsIHByb3BlcnR5KTtcbiAgfVxuICByZWR1Y2VTd2l0Y2hDYXNlKG5vZGUsIHRlc3QsIGNvbnNlcXVlbnQpIHtcbiAgICByZXR1cm4gdGhpcy5mb2xkKGNvbnNlcXVlbnQsIHRlc3QpO1xuICB9XG4gIHJlZHVjZVN3aXRjaERlZmF1bHQobm9kZSwgY29uc2VxdWVudCkge1xuICAgIHJldHVybiB0aGlzLmZvbGQoY29uc2VxdWVudCk7XG4gIH1cbiAgcmVkdWNlU3dpdGNoU3RhdGVtZW50KG5vZGUsIGRpc2NyaW1pbmFudCwgY2FzZXMpIHtcbiAgICByZXR1cm4gdGhpcy5mb2xkKGNhc2VzLCBkaXNjcmltaW5hbnQpO1xuICB9XG4gIHJlZHVjZVN3aXRjaFN0YXRlbWVudFdpdGhEZWZhdWx0KG5vZGUsIGRpc2NyaW1pbmFudCwgcHJlRGVmYXVsdENhc2VzLCBkZWZhdWx0Q2FzZSwgcG9zdERlZmF1bHRDYXNlcykge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZDQoZGlzY3JpbWluYW50LCB0aGlzLmZvbGQocHJlRGVmYXVsdENhc2VzKSwgZGVmYXVsdENhc2UsIHRoaXMuZm9sZChwb3N0RGVmYXVsdENhc2VzKSk7XG4gIH1cbiAgcmVkdWNlVGhpc0V4cHJlc3Npb24obm9kZSkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5KCk7XG4gIH1cbiAgcmVkdWNlVGhyb3dTdGF0ZW1lbnQobm9kZSwgZXhwcmVzc2lvbikge1xuICAgIHJldHVybiB0aGlzLmZyb21OdWxsKGV4cHJlc3Npb24pO1xuICB9XG4gIHJlZHVjZVRyeUNhdGNoU3RhdGVtZW50KG5vZGUsIGJsb2NrLCBjYXRjaENsYXVzZSkge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZChibG9jaywgY2F0Y2hDbGF1c2UpO1xuICB9XG4gIHJlZHVjZVRyeUZpbmFsbHlTdGF0ZW1lbnQobm9kZSwgYmxvY2ssIGNhdGNoQ2xhdXNlLCBmaW5hbGl6ZXIpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBlbmQzKGJsb2NrLCB0aGlzLmZyb21OdWxsKGNhdGNoQ2xhdXNlKSwgZmluYWxpemVyKTtcbiAgfVxuICByZWR1Y2VVbmtub3duRGlyZWN0aXZlKG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0eSgpO1xuICB9XG4gIHJlZHVjZVVzZVN0cmljdERpcmVjdGl2ZShub2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHkoKTtcbiAgfVxuICByZWR1Y2VWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUsIGRlY2xhcmF0b3JzKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9sZChkZWNsYXJhdG9ycyk7XG4gIH1cbiAgcmVkdWNlVmFyaWFibGVEZWNsYXJhdGlvblN0YXRlbWVudChub2RlLCBkZWNsYXJhdGlvbikge1xuICAgIHJldHVybiBkZWNsYXJhdGlvbjtcbiAgfVxuICByZWR1Y2VWYXJpYWJsZURlY2xhcmF0b3Iobm9kZSwgYmluZGluZywgaW5pdCkge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZChiaW5kaW5nLCB0aGlzLmZyb21OdWxsKGluaXQpKTtcbiAgfVxuICByZWR1Y2VXaGlsZVN0YXRlbWVudChub2RlLCB0ZXN0LCBib2R5KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwZW5kKHRlc3QsIGJvZHkpO1xuICB9XG4gIHJlZHVjZVdpdGhTdGF0ZW1lbnQobm9kZSwgb2JqZWN0LCBib2R5KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwZW5kKG9iamVjdCwgYm9keSk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,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S1IsQ0FBQztBQUpsQixVQUFHLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLGtCQUFTO0FBQ3RELFVBQUksb0JBQW9CLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUN4QyxPQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBUyxPQUFPLEVBQUUsSUFBSSxFQUFFO0FBQzdCLGVBQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FDL0QsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFDLENBQUM7aUJBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7U0FBQSxDQUFDLENBQzdDLENBQUMsQ0FBQztPQUNKLENBQUM7T0FGZSxDQUFDOzs7R0FHbkI7QUFDRCxTQUFPLENBQUMsQ0FBQztDQUNWLEVBQUUsQ0FBQyxDQUFDOzs7QUFHVSxTQUFTLE1BQU0sQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFO0FBQ2pELFNBQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7Q0FDbkQ7cUJBRnVCLE1BQU0iLCJmaWxlIjoic3JjL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNCBTaGFwZSBTZWN1cml0eSwgSW5jLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIilcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIFNoaWZ0IGZyb20gXCJzaGlmdC1hc3RcIlxuaW1wb3J0IE1vbm9pZGFsUmVkdWNlciBmcm9tIFwiLi9tb25vaWRhbC1yZWR1Y2VyXCJcbmV4cG9ydCB7TW9ub2lkYWxSZWR1Y2VyfTtcblxuXG5mdW5jdGlvbiByZWN1cnNlKGJyYW5jaCkge1xuICByZXR1cm4gZnVuY3Rpb24ocmVkdWNlciwgbm9kZSkge1xuICAgIGxldCBicmFuY2hOb2RlID0gbm9kZVticmFuY2hdO1xuICAgIHJldHVybiBEUklWRVJbYnJhbmNoTm9kZS50eXBlXShyZWR1Y2VyLCBicmFuY2hOb2RlKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVjdXJzZU1heWJlKGJyYW5jaCkge1xuICByZXR1cm4gZnVuY3Rpb24ocmVkdWNlciwgbm9kZSkge1xuICAgIGxldCBicmFuY2hOb2RlID0gbm9kZVticmFuY2hdO1xuICAgIGlmIChicmFuY2hOb2RlID09IG51bGwpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBEUklWRVJbYnJhbmNoTm9kZS50eXBlXShyZWR1Y2VyLCBicmFuY2hOb2RlKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVjdXJzZUxpc3QoYnJhbmNoKSB7XG4gIHJldHVybiBmdW5jdGlvbihyZWR1Y2VyLCBub2RlKSB7XG4gICAgcmV0dXJuIFtdLm1hcC5jYWxsKG5vZGVbYnJhbmNoXSwgKG4pID0+IERSSVZFUltuLnR5cGVdKHJlZHVjZXIsIG4pKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVjdXJzZUxpc3RNYXliZShicmFuY2gpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHJlZHVjZXIsIG5vZGUpIHtcbiAgICByZXR1cm4gW10ubWFwLmNhbGwobm9kZVticmFuY2hdLCAobikgPT4ge1xuICAgICAgaWYgKG4gPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gRFJJVkVSW24udHlwZV0ocmVkdWNlciwgbik7XG4gICAgfSk7XG4gIH07XG59XG5cbmNvbnN0IFJFRFVDRVJfU1BFQyA9IHtcbiAgQXJyYXlFeHByZXNzaW9uOiBbcmVjdXJzZUxpc3RNYXliZSgnZWxlbWVudHMnKV0sXG4gIEFzc2lnbm1lbnRFeHByZXNzaW9uOiBbcmVjdXJzZSgnYmluZGluZycpLCByZWN1cnNlKCdleHByZXNzaW9uJyldLFxuICBCaW5hcnlFeHByZXNzaW9uOiBbcmVjdXJzZSgnbGVmdCcpLCByZWN1cnNlKCdyaWdodCcpXSxcbiAgQmxvY2s6IFtyZWN1cnNlTGlzdCgnc3RhdGVtZW50cycpXSxcbiAgQmxvY2tTdGF0ZW1lbnQ6IFtyZWN1cnNlKCdibG9jaycpXSxcbiAgQnJlYWtTdGF0ZW1lbnQ6IFtyZWN1cnNlTWF5YmUoJ2xhYmVsJyldLFxuICBDYWxsRXhwcmVzc2lvbjogW3JlY3Vyc2UoJ2NhbGxlZScpLCByZWN1cnNlTGlzdCgnYXJndW1lbnRzJyldLFxuICBDYXRjaENsYXVzZTogW3JlY3Vyc2UoJ2JpbmRpbmcnKSwgcmVjdXJzZSgnYm9keScpXSxcbiAgQ29tcHV0ZWRNZW1iZXJFeHByZXNzaW9uOiBbcmVjdXJzZSgnb2JqZWN0JyksIHJlY3Vyc2UoJ2V4cHJlc3Npb24nKV0sXG4gIENvbmRpdGlvbmFsRXhwcmVzc2lvbjogW3JlY3Vyc2UoJ3Rlc3QnKSwgcmVjdXJzZSgnY29uc2VxdWVudCcpLCByZWN1cnNlKCdhbHRlcm5hdGUnKV0sXG4gIENvbnRpbnVlU3RhdGVtZW50OiBbcmVjdXJzZU1heWJlKCdsYWJlbCcpXSxcbiAgRGF0YVByb3BlcnR5OiBbcmVjdXJzZSgnbmFtZScpLCByZWN1cnNlKCdleHByZXNzaW9uJyldLFxuICBEZWJ1Z2dlclN0YXRlbWVudDogW10sXG4gIERvV2hpbGVTdGF0ZW1lbnQ6IFtyZWN1cnNlKCdib2R5JyksIHJlY3Vyc2UoJ3Rlc3QnKV0sXG4gIEVtcHR5U3RhdGVtZW50OiBbXSxcbiAgRXhwcmVzc2lvblN0YXRlbWVudDogW3JlY3Vyc2UoJ2V4cHJlc3Npb24nKV0sXG4gIEZvckluU3RhdGVtZW50OiBbcmVjdXJzZSgnbGVmdCcpLCByZWN1cnNlKCdyaWdodCcpLCByZWN1cnNlKCdib2R5JyldLFxuICBGb3JTdGF0ZW1lbnQ6IFtyZWN1cnNlTWF5YmUoJ2luaXQnKSwgcmVjdXJzZU1heWJlKCd0ZXN0JyksIHJlY3Vyc2VNYXliZSgndXBkYXRlJyksIHJlY3Vyc2UoJ2JvZHknKV0sXG4gIEZ1bmN0aW9uQm9keTogW3JlY3Vyc2VMaXN0KCdkaXJlY3RpdmVzJyksIHJlY3Vyc2VMaXN0KCdzdGF0ZW1lbnRzJyldLFxuICBGdW5jdGlvbkRlY2xhcmF0aW9uOiBbcmVjdXJzZSgnbmFtZScpLCByZWN1cnNlTGlzdCgncGFyYW1ldGVycycpLCByZWN1cnNlKCdib2R5JyldLFxuICBGdW5jdGlvbkV4cHJlc3Npb246IFtyZWN1cnNlTWF5YmUoJ25hbWUnKSwgcmVjdXJzZUxpc3QoJ3BhcmFtZXRlcnMnKSwgcmVjdXJzZSgnYm9keScpXSxcbiAgR2V0dGVyOiBbcmVjdXJzZSgnbmFtZScpLCByZWN1cnNlKCdib2R5JyldLFxuICBJZGVudGlmaWVyOiBbXSxcbiAgSWRlbnRpZmllckV4cHJlc3Npb246IFtyZWN1cnNlKCdpZGVudGlmaWVyJyldLFxuICBJZlN0YXRlbWVudDogW3JlY3Vyc2UoJ3Rlc3QnKSwgcmVjdXJzZSgnY29uc2VxdWVudCcpLCByZWN1cnNlTWF5YmUoJ2FsdGVybmF0ZScpXSxcbiAgTGFiZWxlZFN0YXRlbWVudDogW3JlY3Vyc2UoJ2xhYmVsJyksIHJlY3Vyc2UoJ2JvZHknKV0sXG4gIExpdGVyYWxCb29sZWFuRXhwcmVzc2lvbjogW10sXG4gIExpdGVyYWxOdWxsRXhwcmVzc2lvbjogW10sXG4gIExpdGVyYWxOdW1lcmljRXhwcmVzc2lvbjogW10sXG4gIExpdGVyYWxSZWdFeHBFeHByZXNzaW9uOiBbXSxcbiAgTGl0ZXJhbFN0cmluZ0V4cHJlc3Npb246IFtdLFxuICBOZXdFeHByZXNzaW9uOiBbcmVjdXJzZSgnY2FsbGVlJyksIHJlY3Vyc2VMaXN0KCdhcmd1bWVudHMnKV0sXG4gIE9iamVjdEV4cHJlc3Npb246IFtyZWN1cnNlTGlzdCgncHJvcGVydGllcycpXSxcbiAgUG9zdGZpeEV4cHJlc3Npb246IFtyZWN1cnNlKCdvcGVyYW5kJyldLFxuICBQcmVmaXhFeHByZXNzaW9uOiBbcmVjdXJzZSgnb3BlcmFuZCcpXSxcbiAgUHJvcGVydHlOYW1lOiBbXSxcbiAgUmV0dXJuU3RhdGVtZW50OiBbcmVjdXJzZU1heWJlKCdleHByZXNzaW9uJyldLFxuICBTY3JpcHQ6IFtyZWN1cnNlKCdib2R5JyldLFxuICBTZXR0ZXI6IFtyZWN1cnNlKCduYW1lJyksIHJlY3Vyc2UoJ3BhcmFtZXRlcicpLCByZWN1cnNlKCdib2R5JyldLFxuICBTdGF0aWNNZW1iZXJFeHByZXNzaW9uOiBbcmVjdXJzZSgnb2JqZWN0JyksIHJlY3Vyc2UoJ3Byb3BlcnR5JyldLFxuICBTd2l0Y2hDYXNlOiBbcmVjdXJzZSgndGVzdCcpLCByZWN1cnNlTGlzdCgnY29uc2VxdWVudCcpXSxcbiAgU3dpdGNoRGVmYXVsdDogW3JlY3Vyc2VMaXN0KCdjb25zZXF1ZW50JyldLFxuICBTd2l0Y2hTdGF0ZW1lbnQ6IFtyZWN1cnNlKCdkaXNjcmltaW5hbnQnKSwgcmVjdXJzZUxpc3QoJ2Nhc2VzJyldLFxuICBTd2l0Y2hTdGF0ZW1lbnRXaXRoRGVmYXVsdDogW3JlY3Vyc2UoJ2Rpc2NyaW1pbmFudCcpLCByZWN1cnNlTGlzdCgncHJlRGVmYXVsdENhc2VzJyksIHJlY3Vyc2UoJ2RlZmF1bHRDYXNlJyksIHJlY3Vyc2VMaXN0KCdwb3N0RGVmYXVsdENhc2VzJyldLFxuICBUaGlzRXhwcmVzc2lvbjogW10sXG4gIFRocm93U3RhdGVtZW50OiBbcmVjdXJzZSgnZXhwcmVzc2lvbicpXSxcbiAgVHJ5Q2F0Y2hTdGF0ZW1lbnQ6IFtyZWN1cnNlKCdib2R5JyksIHJlY3Vyc2UoJ2NhdGNoQ2xhdXNlJyldLFxuICBUcnlGaW5hbGx5U3RhdGVtZW50OiBbcmVjdXJzZSgnYm9keScpLCByZWN1cnNlTWF5YmUoJ2NhdGNoQ2xhdXNlJyksIHJlY3Vyc2UoJ2ZpbmFsaXplcicpXSxcbiAgVW5rbm93bkRpcmVjdGl2ZTogW10sXG4gIFVzZVN0cmljdERpcmVjdGl2ZTogW10sXG4gIFZhcmlhYmxlRGVjbGFyYXRpb246IFtyZWN1cnNlTGlzdCgnZGVjbGFyYXRvcnMnKV0sXG4gIFZhcmlhYmxlRGVjbGFyYXRpb25TdGF0ZW1lbnQ6IFtyZWN1cnNlKCdkZWNsYXJhdGlvbicpXSxcbiAgVmFyaWFibGVEZWNsYXJhdG9yOiBbcmVjdXJzZSgnYmluZGluZycpLCByZWN1cnNlTWF5YmUoJ2luaXQnKV0sXG4gIFdoaWxlU3RhdGVtZW50OiBbcmVjdXJzZSgndGVzdCcpLCByZWN1cnNlKCdib2R5JyldLFxuICBXaXRoU3RhdGVtZW50OiBbcmVjdXJzZSgnb2JqZWN0JyksIHJlY3Vyc2UoJ2JvZHknKV0sXG59O1xuXG5jb25zdCBEUklWRVIgPSAoZnVuY3Rpb24oKXtcbiAgdmFyIG8gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBmb3IobGV0IFQgaW4gUkVEVUNFUl9TUEVDKSB7XG4gICAgaWYoIXt9Lmhhc093blByb3BlcnR5LmNhbGwoUkVEVUNFUl9TUEVDLCBUKSkgY29udGludWU7XG4gICAgbGV0IHJlZHVjaW5nRnVuY3Rpb25OYW1lID0gJ3JlZHVjZScgKyBUO1xuICAgIG9bVF0gPSBmdW5jdGlvbihyZWR1Y2VyLCBub2RlKSB7XG4gICAgICByZXR1cm4gcmVkdWNlcltyZWR1Y2luZ0Z1bmN0aW9uTmFtZV0uYXBwbHkocmVkdWNlciwgW25vZGVdLmNvbmNhdChcbiAgICAgICAgUkVEVUNFUl9TUEVDW1RdLm1hcCgoZikgPT4gZihyZWR1Y2VyLCBub2RlKSlcbiAgICAgICkpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIG87XG59KCkpO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlZHVjZShyZWR1Y2VyLCByZWR1Y2libGUpIHtcbiAgcmV0dXJuIERSSVZFUltyZWR1Y2libGUudHlwZV0ocmVkdWNlciwgcmVkdWNpYmxlKTtcbn1cbiJdfQ==
{
"name": "shift-reducer",
"version": "1.0.1",
"version": "1.0.2",
"description": "reducer for the Shift AST format",

@@ -5,0 +5,0 @@ "author": "Shape Security Labs",

@@ -74,2 +74,10 @@ Shift Reducer

### Fantasy Land
![Fantasy Land logo](https://github.com/fantasyland/fantasy-land/raw/master/logo.png "Fantasy Land")
The `MonoidalReducer` is compatible with [Fantasy Land](https://github.com/fantasyland/fantasy-land) Monoids.
## Contributing

@@ -76,0 +84,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc