New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

partial.lenses

Package Overview
Dependencies
Maintainers
1
Versions
180
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

partial.lenses - npm Package Compare versions

Comparing version 3.8.0 to 3.8.1

.nyc_output/39b43a118ee626e531fdb96d82e7d7a4.json

43

lib/partial.lenses.js

@@ -10,3 +10,3 @@ "use strict";

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

@@ -49,2 +49,5 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

};
var Single = function Single(x) {
return Const([x]);
};
Constant.prototype.map = function () {

@@ -115,3 +118,3 @@ return this;

var deleteKey = function deleteKey(k) {
var o = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var o = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};

@@ -129,3 +132,3 @@ var r = void 0;

var setKey = function setKey(k, v) {
var o = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
var o = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};

@@ -233,5 +236,3 @@ if (k in o && R.equals(v, o[k])) return o;

var collectI = function collectI(l, s) {
return l(Const)(function (x) {
return Const([x]);
})(s).value;
return l(Const)(Single)(s).value;
};

@@ -294,8 +295,13 @@

var replacer = function replacer(inn, out) {
return function (x) {
return R.equals(x, inn) ? out : x;
};
};
var normalizer = function normalizer(fn) {
return lensI(fn, toConserve(fn));
};
var replace = exports.replace = R.curry(function (inn, out) {
return lensI(function (x) {
return R.equals(x, inn) ? out : x;
}, toConserve(function (y) {
return R.equals(y, out) ? inn : y;
}));
return lensI(replacer(inn, out), toConserve(replacer(out, inn)));
});

@@ -308,3 +314,3 @@

var define = exports.define = function define(v) {
return compose(required(v), defaults(v));
return normalizer(replacer(undefined, v));
};

@@ -319,3 +325,3 @@

var normalize = exports.normalize = function normalize(transform) {
return lensI(toPartial(transform), toConserve(toPartial(transform)));
return normalizer(toPartial(transform));
};

@@ -437,3 +443,3 @@

}, function () {
var o = arguments.length <= 0 || arguments[0] === undefined ? empty : arguments[0];
var o = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : empty;
var cIn = arguments[1];

@@ -500,9 +506,10 @@

};
var fantasy = function fantasy() {
throw new Error("Sorry, `toRamda` is only fantasy!");
};
var toRamda = exports.toRamda = function toRamda(l) {
return lift(l)(function () {
throw new Error("Sorry, `toRamda` is only fantasy!");
});
return lift(l)(fantasy);
};
exports.default = compose;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJ0aWFsLmxlbnNlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0lBQVksQzs7Ozs7Ozs7QUFFWjs7QUFFQSxTQUFTLFFBQVQsQ0FBa0IsS0FBbEIsRUFBeUI7QUFBQyxPQUFLLEtBQUwsR0FBYSxLQUFiO0FBQW1CO0FBQzdDLElBQU0sUUFBUSxTQUFSLEtBQVE7QUFBQSxTQUFLLElBQUksUUFBSixDQUFhLENBQWIsQ0FBTDtBQUFBLENBQWQ7QUFDQSxTQUFTLFNBQVQsQ0FBbUIsR0FBbkIsR0FBeUIsVUFBVSxHQUFWLEVBQWU7QUFBQyxTQUFPLElBQUksUUFBSixDQUFhLElBQUksS0FBSyxLQUFULENBQWIsQ0FBUDtBQUFxQyxDQUE5RTtBQUNBLFNBQVMsU0FBVCxDQUFtQixFQUFuQixHQUF3QixLQUF4QjtBQUNBLFNBQVMsU0FBVCxDQUFtQixFQUFuQixHQUF3QixVQUFVLENBQVYsRUFBYTtBQUFDLFNBQU8sSUFBSSxRQUFKLENBQWEsS0FBSyxLQUFMLENBQVcsRUFBRSxLQUFiLENBQWIsQ0FBUDtBQUF5QyxDQUEvRTs7QUFFQTs7QUFFQSxTQUFTLFFBQVQsQ0FBa0IsS0FBbEIsRUFBeUI7QUFBQyxPQUFLLEtBQUwsR0FBYSxLQUFiO0FBQW1CO0FBQzdDLElBQU0sUUFBUSxTQUFSLEtBQVE7QUFBQSxTQUFLLElBQUksUUFBSixDQUFhLENBQWIsQ0FBTDtBQUFBLENBQWQ7QUFDQSxTQUFTLFNBQVQsQ0FBbUIsR0FBbkIsR0FBeUIsWUFBWTtBQUFDLFNBQU8sSUFBUDtBQUFZLENBQWxEO0FBQ0EsU0FBUyxTQUFULENBQW1CLEVBQW5CLEdBQXdCLEtBQXhCO0FBQ0EsU0FBUyxTQUFULENBQW1CLEVBQW5CLEdBQXdCLFVBQVUsQ0FBVixFQUFhO0FBQUMsU0FBTyxJQUFJLEtBQUosQ0FBVSxFQUFFLE1BQUYsQ0FBUyxLQUFLLEtBQWQsRUFBcUIsRUFBRSxLQUF2QixDQUFWLENBQVA7QUFBZ0QsQ0FBdEY7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QU0sc0JBQVEsTUFBUixTQUFnQixLQUFoQixHQUFOLEVBQThCLHNCQUFRLE1BQVIsU0FBZ0IsS0FBaEIsR0FBOUIsQ0FEaUI7QUFBQSxDQUFaOztBQUdBLElBQU0sOEJBQVcsU0FBWCxRQUFXO0FBQUEsU0FBZTtBQUFBLFdBQVM7QUFBQSxhQUM5QyxLQUFLLDRHQUFMLEtBQ0EsRUFBRSxRQUFGLENBQVcsV0FBWCxFQUF3QixLQUF4QixFQUErQixRQUFRLE1BQVIsQ0FBL0IsRUFDQyxHQURELENBQ0ssUUFETCxDQUY4QztBQUFBLEtBQVQ7QUFBQSxHQUFmO0FBQUEsQ0FBakI7O0FBS0EsSUFBTSw4QkFDWCxRQUFRLE1BQU0sVUFBVTtBQUFBLFNBQUssQ0FBQyxDQUFELENBQUw7QUFBQSxDQUFWLENBQU4sRUFDTSxVQUFVO0FBQUE7O0FBQUEsTUFBRSxDQUFGO0FBQUEsU0FBUyxDQUFUO0FBQUEsQ0FBVixDQUROLENBQVIsRUFFUSxRQUZSLENBREs7O0FBS0EsSUFBTSxnQ0FBWSxTQUFaLFNBQVk7QUFBQSxTQUFLO0FBQUEsV0FBZ0IsQ0FBaEI7QUFBQSxHQUFMO0FBQUEsQ0FBbEI7QUFDQSxJQUFNLDRCQUFVLFNBQVYsT0FBVTtBQUFBLFNBQ3JCLEtBQUssQ0FBTCxFQUFRLFlBQU07QUFBQyxVQUFNLElBQUksS0FBSixDQUFVLG1DQUFWLENBQU47QUFBcUQsR0FBcEUsQ0FEcUI7QUFBQSxDQUFoQjs7a0JBR1EsTyIsImZpbGUiOiJwYXJ0aWFsLmxlbnNlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFIgZnJvbSBcInJhbWRhXCJcblxuLy9cblxuZnVuY3Rpb24gSWRlbnRpdHkodmFsdWUpIHt0aGlzLnZhbHVlID0gdmFsdWV9XG5jb25zdCBJZGVudCA9IHggPT4gbmV3IElkZW50aXR5KHgpXG5JZGVudGl0eS5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24gKHgyeSkge3JldHVybiBuZXcgSWRlbnRpdHkoeDJ5KHRoaXMudmFsdWUpKX1cbklkZW50aXR5LnByb3RvdHlwZS5vZiA9IElkZW50XG5JZGVudGl0eS5wcm90b3R5cGUuYXAgPSBmdW5jdGlvbiAoeCkge3JldHVybiBuZXcgSWRlbnRpdHkodGhpcy52YWx1ZSh4LnZhbHVlKSl9XG5cbi8vXG5cbmZ1bmN0aW9uIENvbnN0YW50KHZhbHVlKSB7dGhpcy52YWx1ZSA9IHZhbHVlfVxuY29uc3QgQ29uc3QgPSB4ID0+IG5ldyBDb25zdGFudCh4KVxuQ29uc3RhbnQucHJvdG90eXBlLm1hcCA9IGZ1bmN0aW9uICgpIHtyZXR1cm4gdGhpc31cbkNvbnN0YW50LnByb3RvdHlwZS5vZiA9IENvbnN0XG5Db25zdGFudC5wcm90b3R5cGUuYXAgPSBmdW5jdGlvbiAoeCkge3JldHVybiBuZXcgQ29uc3QoUi5jb25jYXQodGhpcy52YWx1ZSwgeC52YWx1ZSkpfVxuXG4vL1xuXG5jb25zdCB3YXJuZWQgPSB7fVxuXG5jb25zdCB3YXJuID0gbWVzc2FnZSA9PiB7XG4gIGlmICghKG1lc3NhZ2UgaW4gd2FybmVkKSkge1xuICAgIHdhcm5lZFttZXNzYWdlXSA9IG1lc3NhZ2VcbiAgICBjb25zb2xlLndhcm4oXCJwYXJ0aWFsLmxlbnNlczpcIiwgbWVzc2FnZSlcbiAgfVxufVxuXG4vL1xuXG5jb25zdCBpc0FycmF5ICA9IHggPT4geCAmJiB4LmNvbnN0cnVjdG9yID09PSBBcnJheVxuY29uc3QgaXNPYmplY3QgPSB4ID0+IHggJiYgeC5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0XG5cbmNvbnN0IHVuQXJyYXkgID0geCA9PiAgaXNBcnJheSh4KSA/IHggOiB1bmRlZmluZWRcbmNvbnN0IHVuT2JqZWN0ID0geCA9PiBpc09iamVjdCh4KSA/IHggOiB1bmRlZmluZWRcblxuY29uc3QgbWtBcnJheSA9IHggPT4gaXNBcnJheSh4KSA/IHggOiBbXVxuXG4vL1xuXG5jb25zdCBpZCA9IHggPT4geFxuY29uc3Qgc25kID0gKF8sIGMpID0+IGNcblxuLy9cblxuY29uc3QgY2hlY2sgPSAoZXhwZWN0ZWQsIHByZWRpY2F0ZSkgPT4geCA9PiB7XG4gIGlmIChwcmVkaWNhdGUoeCkpXG4gICAgcmV0dXJuIHhcbiAgZWxzZVxuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtleHBlY3RlZH0sIGJ1dCBnb3QgJHt4fS5gKVxufVxuXG5jb25zdCBhc3NlcnQgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyAoKSA9PiBpZCA6IGNoZWNrXG5cbi8vXG5cbmNvbnN0IGVtcHR5ID0ge31cblxuY29uc3QgZGVsZXRlS2V5ID0gKGssIG8gPSB7fSkgPT4ge1xuICBsZXQgclxuICBmb3IgKGNvbnN0IHAgaW4gbykge1xuICAgIGlmIChwICE9PSBrKSB7XG4gICAgICBpZiAodW5kZWZpbmVkID09PSByKVxuICAgICAgICByID0ge31cbiAgICAgIHJbcF0gPSBvW3BdXG4gICAgfVxuICB9XG4gIHJldHVybiByXG59XG5cbmNvbnN0IHNldEtleSA9IChrLCB2LCBvID0ge30pID0+IHtcbiAgaWYgKGsgaW4gbyAmJiBSLmVxdWFscyh2LCBvW2tdKSlcbiAgICByZXR1cm4gb1xuICBjb25zdCByID0ge1trXTogdn1cbiAgZm9yIChjb25zdCBwIGluIG8pXG4gICAgaWYgKHAgIT09IGspXG4gICAgICByW3BdID0gb1twXVxuICByZXR1cm4gclxufVxuXG4vL1xuXG5jb25zdCBkcm9wcGVkID0geHMgPT4gT2JqZWN0LmtleXMoeHMpLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IHhzXG5cbi8vXG5cbmNvbnN0IHRvUGFydGlhbCA9IHRyYW5zZm9ybSA9PiB4ID0+IHVuZGVmaW5lZCA9PT0geCA/IHggOiB0cmFuc2Zvcm0oeClcblxuLy9cblxuY29uc3QgZmlsdGVyZWQgPVxuICB0b1BhcnRpYWwoUi5waXBlKFIuZmlsdGVyKHggPT4geCAhPT0gdW5kZWZpbmVkKSwgZHJvcHBlZCkpXG5cbi8vXG5cbmNvbnN0IGNvbnNlcnZlID0gKGMxLCBjMCkgPT4gUi5lcXVhbHMoYzEsIGMwKSA/IGMwIDogYzFcblxuY29uc3QgdG9Db25zZXJ2ZSA9IGYgPT4gKHksIGMwKSA9PiBjb25zZXJ2ZShmKHksIGMwKSwgYzApXG5cbi8vXG5cbmNvbnN0IHNlZW1zTGVucyA9IHggPT4gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiAmJiB4Lmxlbmd0aCA9PT0gMVxuXG5jb25zdCBsaWZ0ZWQgPSBhc3NlcnQoXCJhIGxlbnNcIiwgc2VlbXNMZW5zKVxuXG5jb25zdCBsaWZ0ID0gbCA9PiB7XG4gIGlmIChpc1Byb3AobCkpICByZXR1cm4gbGlmdFByb3AobClcbiAgaWYgKGlzSW5kZXgobCkpIHJldHVybiBsaWZ0SW5kZXgobClcbiAgcmV0dXJuIGxpZnRlZChsKVxufVxuXG5leHBvcnQgY29uc3QgY29tcG9zZSA9ICguLi5scykgPT5cbiAgbHMubGVuZ3RoID09PSAwID8gaWRlbnRpdHkgOlxuICBscy5sZW5ndGggPT09IDEgPyBsc1swXSA6XG4gICh0b0NhdCA9PiBSLmNvbXBvc2UoLi4ubHMubWFwKGwgPT4gbGlmdChsKSh0b0NhdCkpKSlcblxuZXhwb3J0IGNvbnN0IHJlbW92ZSA9IFIuY3VycnkoKGwsIHMpID0+IHNldEkobGlmdChsKSwgdW5kZWZpbmVkLCBzKSlcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUFsbCA9IFIuY3VycnkoKGxlbnMsIGRhdGEpID0+IHtcbiAgd2FybihcImByZW1vdmVBbGxgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IG1ham9yIHZlcnNpb24gLS0tIHVzZSBhIGRpZmZlcmVudCBhcHByb2FjaC5cIilcbiAgd2hpbGUgKGdldChsZW5zLCBkYXRhKSAhPT0gdW5kZWZpbmVkKVxuICAgIGRhdGEgPSByZW1vdmUobGVucywgZGF0YSlcbiAgcmV0dXJuIGRhdGFcbn0pXG5cbmNvbnN0IHNldEkgPSAobCwgeCwgcykgPT4gbChJZGVudCkoKCkgPT4gSWRlbnQoeCkpKHMpLnZhbHVlXG5jb25zdCBnZXRJID0gKGwsIHMpID0+IGwoQ29uc3QpKENvbnN0KShzKS52YWx1ZVxuY29uc3QgbW9kaWZ5SSA9IChsLCB4MngsIHMpID0+IGwoSWRlbnQpKHkgPT4gSWRlbnQoeDJ4KHkpKSkocykudmFsdWVcbmNvbnN0IGxlbnNJID0gKGdldHRlciwgc2V0dGVyKSA9PiBfY29uc3RydWN0b3IgPT4gaW5uZXIgPT4gdGFyZ2V0ID0+XG4gIGlubmVyKGdldHRlcih0YXJnZXQpKS5tYXAoZm9jdXMgPT4gc2V0dGVyKGZvY3VzLCB0YXJnZXQpKVxuY29uc3QgY29sbGVjdEkgPSAobCwgcykgPT4gbChDb25zdCkoeCA9PiBDb25zdChbeF0pKShzKS52YWx1ZVxuXG5leHBvcnQgY29uc3QgbGVucyA9IFIuY3VycnkobGVuc0kpXG5leHBvcnQgY29uc3QgbW9kaWZ5ID0gUi5jdXJyeSgobCwgeDJ4LCBzKSA9PiBtb2RpZnlJKGxpZnQobCksIHgyeCwgcykpXG5leHBvcnQgY29uc3Qgc2V0ID0gUi5jdXJyeSgobCwgeCwgcykgPT4gc2V0SShsaWZ0KGwpLCB4LCBzKSlcbmV4cG9ydCBjb25zdCBnZXQgPSBSLmN1cnJ5KChsLCBzKSA9PiBnZXRJKGxpZnQobCksIHMpKVxuZXhwb3J0IGNvbnN0IGNvbGxlY3QgPSBSLmN1cnJ5KChsLCBzKSA9PlxuICB3YXJuKFwiYGNvbGxlY3RgIGlzIGV4cGVyaW1lbnRhbCBhbmQgbWlnaHQgYmUgcmVtb3ZlZCwgcmVuYW1lZCBvciBjaGFuZ2VkIHNlbWFudGljYWxseSBiZWZvcmUgbmV4dCBtYWpvciByZWxlYXNlXCIpIHx8XG4gIG1rQXJyYXkoZmlsdGVyZWQoY29sbGVjdEkobGlmdChsKSwgcykpKSlcblxuZXhwb3J0IGNvbnN0IGNoYWluID0gUi5jdXJyeSgoeDJ5TCwgeEwpID0+XG4gIGNvbXBvc2UoeEwsIGNob29zZSh4TyA9PiB4TyA9PT0gdW5kZWZpbmVkID8gbm90aGluZyA6IHgyeUwoeE8pKSkpXG5cbmV4cG9ydCBjb25zdCBqdXN0ID0geCA9PiBsZW5zSShSLmFsd2F5cyh4KSwgc25kKVxuXG5leHBvcnQgY29uc3QgY2hvb3NlID0geDJ5TCA9PiBjb25zdHJ1Y3RvciA9PiBpbm5lciA9PiB0YXJnZXQgPT5cbiAgbGlmdCh4MnlMKHRhcmdldCkpKGNvbnN0cnVjdG9yKShpbm5lcikodGFyZ2V0KVxuXG5leHBvcnQgY29uc3Qgbm90aGluZyA9IGxlbnNJKHNuZCwgc25kKVxuXG5leHBvcnQgY29uc3Qgb3JFbHNlID1cbiAgUi5jdXJyeSgoZCwgbCkgPT4gY2hvb3NlKHggPT4gZ2V0SShsaWZ0KGwpLCB4KSAhPT0gdW5kZWZpbmVkID8gbCA6IGQpKVxuXG5leHBvcnQgY29uc3QgY2hvaWNlID0gKC4uLmxzKSA9PiBjaG9vc2UoeCA9PiB7XG4gIGNvbnN0IGkgPSBscy5maW5kSW5kZXgobCA9PiBnZXRJKGxpZnQobCksIHgpICE9PSB1bmRlZmluZWQpXG4gIHJldHVybiAwIDw9IGkgPyBsc1tpXSA6IG5vdGhpbmdcbn0pXG5cbmV4cG9ydCBjb25zdCByZXBsYWNlID0gUi5jdXJyeSgoaW5uLCBvdXQpID0+XG4gIGxlbnNJKHggPT4gUi5lcXVhbHMoeCwgaW5uKSA/IG91dCA6IHgsXG4gICAgICAgIHRvQ29uc2VydmUoeSA9PiBSLmVxdWFscyh5LCBvdXQpID8gaW5uIDogeSkpKVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdHMgPSByZXBsYWNlKHVuZGVmaW5lZClcbmV4cG9ydCBjb25zdCByZXF1aXJlZCA9IGlubiA9PiByZXBsYWNlKGlubiwgdW5kZWZpbmVkKVxuZXhwb3J0IGNvbnN0IGRlZmluZSA9IHYgPT4gY29tcG9zZShyZXF1aXJlZCh2KSwgZGVmYXVsdHModikpXG5cbmV4cG9ydCBjb25zdCB2YWx1ZU9yID0gdiA9PlxuICBsZW5zSSh4ID0+IHggPT09IHVuZGVmaW5lZCB8fCB4ID09PSBudWxsID8gdiA6IHgsIGNvbnNlcnZlKVxuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplID0gdHJhbnNmb3JtID0+XG4gIGxlbnNJKHRvUGFydGlhbCh0cmFuc2Zvcm0pLCB0b0NvbnNlcnZlKHRvUGFydGlhbCh0cmFuc2Zvcm0pKSlcblxuY29uc3QgaXNQcm9wID0geCA9PiB0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIlxuXG5leHBvcnQgY29uc3QgcHJvcCA9IGFzc2VydChcImEgc3RyaW5nXCIsIGlzUHJvcClcblxuY29uc3QgbGlmdFByb3AgPSBrID0+IGxlbnNJKG8gPT4gdW5PYmplY3QobykgJiYgb1trXSwgKHYsIG9JbikgPT4ge1xuICBjb25zdCBvID0gdW5PYmplY3Qob0luKVxuICByZXR1cm4gdiA9PT0gdW5kZWZpbmVkID8gZGVsZXRlS2V5KGssIG8pIDogc2V0S2V5KGssIHYsIG8pXG59KVxuXG5leHBvcnQgY29uc3QgZmluZCA9IHByZWRpY2F0ZSA9PiBjaG9vc2UoeHMgPT4ge1xuICBpZiAoaXNBcnJheSh4cykpIHtcbiAgICBjb25zdCBpID0geHMuZmluZEluZGV4KHByZWRpY2F0ZSlcbiAgICByZXR1cm4gaSA8IDAgPyBhcHBlbmQgOiBpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGFwcGVuZFxuICB9XG59KVxuXG5leHBvcnQgY29uc3QgZmluZFdpdGggPSAoLi4ubHMpID0+IHtcbiAgY29uc3QgbGxzID0gbGlmdChjb21wb3NlKC4uLmxzKSlcbiAgcmV0dXJuIGNvbXBvc2UoZmluZCh4ID0+IGdldEkobGxzLCB4KSAhPT0gdW5kZWZpbmVkKSwgbGxzKVxufVxuXG5jb25zdCBpc0luZGV4ID0geCA9PiBOdW1iZXIuaXNJbnRlZ2VyKHgpICYmIDAgPD0geFxuXG5leHBvcnQgY29uc3QgaW5kZXggPSBhc3NlcnQoXCJhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyXCIsIGlzSW5kZXgpXG5cbmNvbnN0IGxpZnRJbmRleCA9IGkgPT4gbGVuc0koeHMgPT4gdW5BcnJheSh4cykgJiYgeHNbaV0sICh4LCB4cykgPT4ge1xuICBpZiAoeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFpc0FycmF5KHhzKSlcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICBpZiAoaSA8IHhzLmxlbmd0aClcbiAgICAgIHJldHVybiBkcm9wcGVkKHhzLnNsaWNlKDAsIGkpLmNvbmNhdCh4cy5zbGljZShpKzEpKSlcbiAgICByZXR1cm4gZHJvcHBlZCh4cylcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWlzQXJyYXkoeHMpKVxuICAgICAgcmV0dXJuIEFycmF5KGkpLmNvbmNhdChbeF0pXG4gICAgaWYgKHhzLmxlbmd0aCA8PSBpKVxuICAgICAgcmV0dXJuIHhzLmNvbmNhdChBcnJheShpIC0geHMubGVuZ3RoKSwgW3hdKVxuICAgIGlmIChSLmVxdWFscyh4LCB4c1tpXSkpXG4gICAgICByZXR1cm4geHNcbiAgICByZXR1cm4geHMuc2xpY2UoMCwgaSkuY29uY2F0KFt4XSwgeHMuc2xpY2UoaSsxKSlcbiAgfVxufSlcblxuZXhwb3J0IGNvbnN0IGFwcGVuZCA9IGxlbnNJKHNuZCwgKHgsIHhzKSA9PlxuICB4ID09PSB1bmRlZmluZWQgPyB1bkFycmF5KHhzKSA6IGlzQXJyYXkoeHMpID8geHMuY29uY2F0KFt4XSkgOiBbeF0pXG5cbmV4cG9ydCBjb25zdCBmaWx0ZXIgPSBwID0+IGxlbnNJKHhzID0+IHVuQXJyYXkoeHMpICYmIHhzLmZpbHRlcihwKSwgKHlzLCB4cykgPT5cbiAgY29uc2VydmUoZHJvcHBlZChSLmNvbmNhdChta0FycmF5KHlzKSwgbWtBcnJheSh4cykuZmlsdGVyKFIuY29tcGxlbWVudChwKSkpKSwgeHMpKVxuXG5leHBvcnQgY29uc3QgYXVnbWVudCA9IHRlbXBsYXRlID0+IGxlbnNJKFxuICB4ID0+IHtcbiAgICBpZiAoaXNPYmplY3QoeCkpIHtcbiAgICAgIGNvbnN0IHogPSB7Li4ueH1cbiAgICAgIGZvciAoY29uc3QgayBpbiB0ZW1wbGF0ZSlcbiAgICAgICAgeltrXSA9IHRlbXBsYXRlW2tdKHopXG4gICAgICByZXR1cm4gelxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICB9LFxuICB0b0NvbnNlcnZlKCh5LCBjSW4pID0+IHtcbiAgICBpZiAoaXNPYmplY3QoeSkpIHtcbiAgICAgIGNvbnN0IGMgPSB1bk9iamVjdChjSW4pIHx8IHt9XG4gICAgICBsZXQgelxuICAgICAgY29uc3Qgc2V0ID0gKGssIHYpID0+IHtcbiAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0geilcbiAgICAgICAgICB6ID0ge31cbiAgICAgICAgeltrXSA9IHZcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgayBpbiB5KSB7XG4gICAgICAgIGlmICghKGsgaW4gdGVtcGxhdGUpKVxuICAgICAgICAgIHNldChrLCB5W2tdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgKGsgaW4gYylcbiAgICAgICAgICAgIHNldChrLCBjW2tdKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHpcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgfSkpXG5cbmV4cG9ydCBjb25zdCBwaWNrID0gdGVtcGxhdGUgPT4gbGVuc0koXG4gIGMgPT4ge1xuICAgIGxldCByXG4gICAgZm9yIChjb25zdCBrIGluIHRlbXBsYXRlKSB7XG4gICAgICBjb25zdCB2ID0gZ2V0SShsaWZ0KHRlbXBsYXRlW2tdKSwgYylcbiAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHIgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICByID0ge31cbiAgICAgICAgcltrXSA9IHZcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJcbiAgfSxcbiAgKG8gPSBlbXB0eSwgY0luKSA9PiB7XG4gICAgbGV0IGMgPSBjSW5cbiAgICBmb3IgKGNvbnN0IGsgaW4gdGVtcGxhdGUpXG4gICAgICBjID0gc2V0SShsaWZ0KHRlbXBsYXRlW2tdKSwgb1trXSwgYylcbiAgICByZXR1cm4gY1xuICB9KVxuXG5leHBvcnQgY29uc3QgaWRlbnRpdHkgPSBsZW5zSShpZCwgY29uc2VydmUpXG5cbmV4cG9ydCBjb25zdCBwcm9wcyA9ICguLi5rcykgPT4gcGljayhSLnppcE9iaihrcywga3MpKVxuXG5jb25zdCBzaG93ID0gKC4uLmxhYmVscykgPT4geCA9PiBjb25zb2xlLmxvZyguLi5sYWJlbHMsIHgpIHx8IHhcblxuZXhwb3J0IGNvbnN0IGxvZyA9ICguLi5sYWJlbHMpID0+XG4gIGxlbnNJKHNob3coLi4ubGFiZWxzLCBcImdldFwiKSwgc2hvdyguLi5sYWJlbHMsIFwic2V0XCIpKVxuXG5leHBvcnQgY29uc3Qgc2VxdWVuY2UgPSBjb25zdHJ1Y3RvciA9PiBpbm5lciA9PiB0YXJnZXQgPT5cbiAgd2FybihcImBzZXF1ZW5jZWAgaXMgZXhwZXJpbWVudGFsIGFuZCBtaWdodCBiZSByZW1vdmVkLCByZW5hbWVkIG9yIGNoYW5nZWQgc2VtYW50aWNhbGx5IGJlZm9yZSBuZXh0IG1ham9yIHJlbGVhc2VcIikgfHxcbiAgUi50cmF2ZXJzZShjb25zdHJ1Y3RvciwgaW5uZXIsIG1rQXJyYXkodGFyZ2V0KSlcbiAgLm1hcChmaWx0ZXJlZClcblxuZXhwb3J0IGNvbnN0IG9wdGlvbmFsID1cbiAgY29tcG9zZShsZW5zSSh0b1BhcnRpYWwoeCA9PiBbeF0pLFxuICAgICAgICAgICAgICAgIHRvUGFydGlhbCgoW3hdKSA9PiB4KSksXG4gICAgICAgICAgc2VxdWVuY2UpXG5cbmV4cG9ydCBjb25zdCBmcm9tUmFtZGEgPSBsID0+IF9jb25zdHJ1Y3RvciA9PiBsXG5leHBvcnQgY29uc3QgdG9SYW1kYSA9IGwgPT5cbiAgbGlmdChsKSgoKSA9PiB7dGhyb3cgbmV3IEVycm9yKFwiU29ycnksIGB0b1JhbWRhYCBpcyBvbmx5IGZhbnRhc3khXCIpfSlcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJ0aWFsLmxlbnNlcy5qcyJdLCJuYW1lcyI6WyJSIiwiSWRlbnRpdHkiLCJ2YWx1ZSIsIklkZW50IiwieCIsInByb3RvdHlwZSIsIm1hcCIsIngyeSIsIm9mIiwiYXAiLCJDb25zdGFudCIsIkNvbnN0IiwiU2luZ2xlIiwiY29uY2F0Iiwid2FybmVkIiwid2FybiIsIm1lc3NhZ2UiLCJjb25zb2xlIiwiaXNBcnJheSIsImNvbnN0cnVjdG9yIiwiQXJyYXkiLCJpc09iamVjdCIsIk9iamVjdCIsInVuQXJyYXkiLCJ1bmRlZmluZWQiLCJ1bk9iamVjdCIsIm1rQXJyYXkiLCJpZCIsInNuZCIsIl8iLCJjIiwiY2hlY2siLCJleHBlY3RlZCIsInByZWRpY2F0ZSIsIkVycm9yIiwiYXNzZXJ0IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZW1wdHkiLCJkZWxldGVLZXkiLCJrIiwibyIsInIiLCJwIiwic2V0S2V5IiwidiIsImVxdWFscyIsImRyb3BwZWQiLCJrZXlzIiwieHMiLCJsZW5ndGgiLCJ0b1BhcnRpYWwiLCJ0cmFuc2Zvcm0iLCJmaWx0ZXJlZCIsInBpcGUiLCJmaWx0ZXIiLCJjb25zZXJ2ZSIsImMxIiwiYzAiLCJ0b0NvbnNlcnZlIiwieSIsImYiLCJzZWVtc0xlbnMiLCJsaWZ0ZWQiLCJsaWZ0IiwiaXNQcm9wIiwibCIsImxpZnRQcm9wIiwiaXNJbmRleCIsImxpZnRJbmRleCIsImNvbXBvc2UiLCJscyIsImlkZW50aXR5IiwidG9DYXQiLCJyZW1vdmUiLCJjdXJyeSIsInMiLCJzZXRJIiwicmVtb3ZlQWxsIiwibGVucyIsImRhdGEiLCJnZXQiLCJnZXRJIiwibW9kaWZ5SSIsIngyeCIsImxlbnNJIiwiZ2V0dGVyIiwic2V0dGVyIiwiaW5uZXIiLCJ0YXJnZXQiLCJmb2N1cyIsImNvbGxlY3RJIiwibW9kaWZ5Iiwic2V0IiwiY29sbGVjdCIsImNoYWluIiwieDJ5TCIsInhMIiwiY2hvb3NlIiwieE8iLCJub3RoaW5nIiwianVzdCIsImFsd2F5cyIsIm9yRWxzZSIsImQiLCJjaG9pY2UiLCJpIiwiZmluZEluZGV4IiwicmVwbGFjZXIiLCJpbm4iLCJvdXQiLCJub3JtYWxpemVyIiwiZm4iLCJyZXBsYWNlIiwiZGVmYXVsdHMiLCJyZXF1aXJlZCIsImRlZmluZSIsInZhbHVlT3IiLCJub3JtYWxpemUiLCJwcm9wIiwib0luIiwiZmluZCIsImFwcGVuZCIsImZpbmRXaXRoIiwibGxzIiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwiaW5kZXgiLCJzbGljZSIsInlzIiwiY29tcGxlbWVudCIsImF1Z21lbnQiLCJ6IiwidGVtcGxhdGUiLCJjSW4iLCJwaWNrIiwicHJvcHMiLCJrcyIsInppcE9iaiIsInNob3ciLCJsYWJlbHMiLCJsb2ciLCJzZXF1ZW5jZSIsInRyYXZlcnNlIiwib3B0aW9uYWwiLCJmcm9tUmFtZGEiLCJmYW50YXN5IiwidG9SYW1kYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztJQUFZQSxDOzs7Ozs7OztBQUVaOztBQUVBLFNBQVNDLFFBQVQsQ0FBa0JDLEtBQWxCLEVBQXlCO0FBQUMsT0FBS0EsS0FBTCxHQUFhQSxLQUFiO0FBQW1CO0FBQzdDLElBQU1DLFFBQVEsU0FBUkEsS0FBUTtBQUFBLFNBQUssSUFBSUYsUUFBSixDQUFhRyxDQUFiLENBQUw7QUFBQSxDQUFkO0FBQ0FILFNBQVNJLFNBQVQsQ0FBbUJDLEdBQW5CLEdBQXlCLFVBQVVDLEdBQVYsRUFBZTtBQUFDLFNBQU8sSUFBSU4sUUFBSixDQUFhTSxJQUFJLEtBQUtMLEtBQVQsQ0FBYixDQUFQO0FBQXFDLENBQTlFO0FBQ0FELFNBQVNJLFNBQVQsQ0FBbUJHLEVBQW5CLEdBQXdCTCxLQUF4QjtBQUNBRixTQUFTSSxTQUFULENBQW1CSSxFQUFuQixHQUF3QixVQUFVTCxDQUFWLEVBQWE7QUFBQyxTQUFPLElBQUlILFFBQUosQ0FBYSxLQUFLQyxLQUFMLENBQVdFLEVBQUVGLEtBQWIsQ0FBYixDQUFQO0FBQXlDLENBQS9FOztBQUVBOztBQUVBLFNB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REQsQ0FDS2dELFFBREwsQ0FGOEM7QUFBQSxLQUFUO0FBQUEsR0FBZjtBQUFBLENBQWpCOztBQUtBLElBQU0yRiw4QkFDWDFFLFFBQVFlLE1BQU1sQyxVQUFVO0FBQUEsU0FBSyxDQUFDaEQsQ0FBRCxDQUFMO0FBQUEsQ0FBVixDQUFOLEVBQ01nRCxVQUFVO0FBQUE7O0FBQUEsTUFBRWhELENBQUY7QUFBQSxTQUFTQSxDQUFUO0FBQUEsQ0FBVixDQUROLENBQVIsRUFFUTJJLFFBRlIsQ0FESzs7QUFLQSxJQUFNRyxnQ0FBWSxTQUFaQSxTQUFZO0FBQUEsU0FBSztBQUFBLFdBQWdCL0UsQ0FBaEI7QUFBQSxHQUFMO0FBQUEsQ0FBbEI7QUFDUCxJQUFNZ0YsVUFBVSxTQUFWQSxPQUFVLEdBQU07QUFBQyxRQUFNLElBQUlqSCxLQUFKLENBQVUsbUNBQVYsQ0FBTjtBQUFxRCxDQUE1RTtBQUNPLElBQU1rSCw0QkFBVSxTQUFWQSxPQUFVO0FBQUEsU0FBS25GLEtBQUtFLENBQUwsRUFBUWdGLE9BQVIsQ0FBTDtBQUFBLENBQWhCOztrQkFFUTVFLE8iLCJmaWxlIjoicGFydGlhbC5sZW5zZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSIGZyb20gXCJyYW1kYVwiXG5cbi8vXG5cbmZ1bmN0aW9uIElkZW50aXR5KHZhbHVlKSB7dGhpcy52YWx1ZSA9IHZhbHVlfVxuY29uc3QgSWRlbnQgPSB4ID0+IG5ldyBJZGVudGl0eSh4KVxuSWRlbnRpdHkucHJvdG90eXBlLm1hcCA9IGZ1bmN0aW9uICh4MnkpIHtyZXR1cm4gbmV3IElkZW50aXR5KHgyeSh0aGlzLnZhbHVlKSl9XG5JZGVudGl0eS5wcm90b3R5cGUub2YgPSBJZGVudFxuSWRlbnRpdHkucHJvdG90eXBlLmFwID0gZnVuY3Rpb24gKHgpIHtyZXR1cm4gbmV3IElkZW50aXR5KHRoaXMudmFsdWUoeC52YWx1ZSkpfVxuXG4vL1xuXG5mdW5jdGlvbiBDb25zdGFudCh2YWx1ZSkge3RoaXMudmFsdWUgPSB2YWx1ZX1cbmNvbnN0IENvbnN0ID0geCA9PiBuZXcgQ29uc3RhbnQoeClcbmNvbnN0IFNpbmdsZSA9IHggPT4gQ29uc3QoW3hdKVxuQ29uc3RhbnQucHJvdG90eXBlLm1hcCA9IGZ1bmN0aW9uICgpIHtyZXR1cm4gdGhpc31cbkNvbnN0YW50LnByb3RvdHlwZS5vZiA9IENvbnN0XG5Db25zdGFudC5wcm90b3R5cGUuYXAgPSBmdW5jdGlvbiAoeCkge3JldHVybiBuZXcgQ29uc3QoUi5jb25jYXQodGhpcy52YWx1ZSwgeC52YWx1ZSkpfVxuXG4vL1xuXG5jb25zdCB3YXJuZWQgPSB7fVxuXG5jb25zdCB3YXJuID0gbWVzc2FnZSA9PiB7XG4gIGlmICghKG1lc3NhZ2UgaW4gd2FybmVkKSkge1xuICAgIHdhcm5lZFttZXNzYWdlXSA9IG1lc3NhZ2VcbiAgICBjb25zb2xlLndhcm4oXCJwYXJ0aWFsLmxlbnNlczpcIiwgbWVzc2FnZSlcbiAgfVxufVxuXG4vL1xuXG5jb25zdCBpc0FycmF5ICA9IHggPT4geCAmJiB4LmNvbnN0cnVjdG9yID09PSBBcnJheVxuY29uc3QgaXNPYmplY3QgPSB4ID0+IHggJiYgeC5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0XG5cbmNvbnN0IHVuQXJyYXkgID0geCA9PiAgaXNBcnJheSh4KSA/IHggOiB1bmRlZmluZWRcbmNvbnN0IHVuT2JqZWN0ID0geCA9PiBpc09iamVjdCh4KSA/IHggOiB1bmRlZmluZWRcblxuY29uc3QgbWtBcnJheSA9IHggPT4gaXNBcnJheSh4KSA/IHggOiBbXVxuXG4vL1xuXG5jb25zdCBpZCA9IHggPT4geFxuY29uc3Qgc25kID0gKF8sIGMpID0+IGNcblxuLy9cblxuY29uc3QgY2hlY2sgPSAoZXhwZWN0ZWQsIHByZWRpY2F0ZSkgPT4geCA9PiB7XG4gIGlmIChwcmVkaWNhdGUoeCkpXG4gICAgcmV0dXJuIHhcbiAgZWxzZVxuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtleHBlY3RlZH0sIGJ1dCBnb3QgJHt4fS5gKVxufVxuXG5jb25zdCBhc3NlcnQgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyAoKSA9PiBpZCA6IGNoZWNrXG5cbi8vXG5cbmNvbnN0IGVtcHR5ID0ge31cblxuY29uc3QgZGVsZXRlS2V5ID0gKGssIG8gPSB7fSkgPT4ge1xuICBsZXQgclxuICBmb3IgKGNvbnN0IHAgaW4gbykge1xuICAgIGlmIChwICE9PSBrKSB7XG4gICAgICBpZiAodW5kZWZpbmVkID09PSByKVxuICAgICAgICByID0ge31cbiAgICAgIHJbcF0gPSBvW3BdXG4gICAgfVxuICB9XG4gIHJldHVybiByXG59XG5cbmNvbnN0IHNldEtleSA9IChrLCB2LCBvID0ge30pID0+IHtcbiAgaWYgKGsgaW4gbyAmJiBSLmVxdWFscyh2LCBvW2tdKSlcbiAgICByZXR1cm4gb1xuICBjb25zdCByID0ge1trXTogdn1cbiAgZm9yIChjb25zdCBwIGluIG8pXG4gICAgaWYgKHAgIT09IGspXG4gICAgICByW3BdID0gb1twXVxuICByZXR1cm4gclxufVxuXG4vL1xuXG5jb25zdCBkcm9wcGVkID0geHMgPT4gT2JqZWN0LmtleXMoeHMpLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IHhzXG5cbi8vXG5cbmNvbnN0IHRvUGFydGlhbCA9IHRyYW5zZm9ybSA9PiB4ID0+IHVuZGVmaW5lZCA9PT0geCA/IHggOiB0cmFuc2Zvcm0oeClcblxuLy9cblxuY29uc3QgZmlsdGVyZWQgPVxuICB0b1BhcnRpYWwoUi5waXBlKFIuZmlsdGVyKHggPT4geCAhPT0gdW5kZWZpbmVkKSwgZHJvcHBlZCkpXG5cbi8vXG5cbmNvbnN0IGNvbnNlcnZlID0gKGMxLCBjMCkgPT4gUi5lcXVhbHMoYzEsIGMwKSA/IGMwIDogYzFcblxuY29uc3QgdG9Db25zZXJ2ZSA9IGYgPT4gKHksIGMwKSA9PiBjb25zZXJ2ZShmKHksIGMwKSwgYzApXG5cbi8vXG5cbmNvbnN0IHNlZW1zTGVucyA9IHggPT4gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiAmJiB4Lmxlbmd0aCA9PT0gMVxuXG5jb25zdCBsaWZ0ZWQgPSBhc3NlcnQoXCJhIGxlbnNcIiwgc2VlbXNMZW5zKVxuXG5jb25zdCBsaWZ0ID0gbCA9PiB7XG4gIGlmIChpc1Byb3AobCkpICByZXR1cm4gbGlmdFByb3AobClcbiAgaWYgKGlzSW5kZXgobCkpIHJldHVybiBsaWZ0SW5kZXgobClcbiAgcmV0dXJuIGxpZnRlZChsKVxufVxuXG5leHBvcnQgY29uc3QgY29tcG9zZSA9ICguLi5scykgPT5cbiAgbHMubGVuZ3RoID09PSAwID8gaWRlbnRpdHkgOlxuICBscy5sZW5ndGggPT09IDEgPyBsc1swXSA6XG4gICh0b0NhdCA9PiBSLmNvbXBvc2UoLi4ubHMubWFwKGwgPT4gbGlmdChsKSh0b0NhdCkpKSlcblxuZXhwb3J0IGNvbnN0IHJlbW92ZSA9IFIuY3VycnkoKGwsIHMpID0+IHNldEkobGlmdChsKSwgdW5kZWZpbmVkLCBzKSlcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUFsbCA9IFIuY3VycnkoKGxlbnMsIGRhdGEpID0+IHtcbiAgd2FybihcImByZW1vdmVBbGxgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IG1ham9yIHZlcnNpb24gLS0tIHVzZSBhIGRpZmZlcmVudCBhcHByb2FjaC5cIilcbiAgd2hpbGUgKGdldChsZW5zLCBkYXRhKSAhPT0gdW5kZWZpbmVkKVxuICAgIGRhdGEgPSByZW1vdmUobGVucywgZGF0YSlcbiAgcmV0dXJuIGRhdGFcbn0pXG5cbmNvbnN0IHNldEkgPSAobCwgeCwgcykgPT4gbChJZGVudCkoKCkgPT4gSWRlbnQoeCkpKHMpLnZhbHVlXG5jb25zdCBnZXRJID0gKGwsIHMpID0+IGwoQ29uc3QpKENvbnN0KShzKS52YWx1ZVxuY29uc3QgbW9kaWZ5SSA9IChsLCB4MngsIHMpID0+IGwoSWRlbnQpKHkgPT4gSWRlbnQoeDJ4KHkpKSkocykudmFsdWVcbmNvbnN0IGxlbnNJID0gKGdldHRlciwgc2V0dGVyKSA9PiBfY29uc3RydWN0b3IgPT4gaW5uZXIgPT4gdGFyZ2V0ID0+XG4gIGlubmVyKGdldHRlcih0YXJnZXQpKS5tYXAoZm9jdXMgPT4gc2V0dGVyKGZvY3VzLCB0YXJnZXQpKVxuY29uc3QgY29sbGVjdEkgPSAobCwgcykgPT4gbChDb25zdCkoU2luZ2xlKShzKS52YWx1ZVxuXG5leHBvcnQgY29uc3QgbGVucyA9IFIuY3VycnkobGVuc0kpXG5leHBvcnQgY29uc3QgbW9kaWZ5ID0gUi5jdXJyeSgobCwgeDJ4LCBzKSA9PiBtb2RpZnlJKGxpZnQobCksIHgyeCwgcykpXG5leHBvcnQgY29uc3Qgc2V0ID0gUi5jdXJyeSgobCwgeCwgcykgPT4gc2V0SShsaWZ0KGwpLCB4LCBzKSlcbmV4cG9ydCBjb25zdCBnZXQgPSBSLmN1cnJ5KChsLCBzKSA9PiBnZXRJKGxpZnQobCksIHMpKVxuZXhwb3J0IGNvbnN0IGNvbGxlY3QgPSBSLmN1cnJ5KChsLCBzKSA9PlxuICB3YXJuKFwiYGNvbGxlY3RgIGlzIGV4cGVyaW1lbnRhbCBhbmQgbWlnaHQgYmUgcmVtb3ZlZCwgcmVuYW1lZCBvciBjaGFuZ2VkIHNlbWFudGljYWxseSBiZWZvcmUgbmV4dCBtYWpvciByZWxlYXNlXCIpIHx8XG4gIG1rQXJyYXkoZmlsdGVyZWQoY29sbGVjdEkobGlmdChsKSwgcykpKSlcblxuZXhwb3J0IGNvbnN0IGNoYWluID0gUi5jdXJyeSgoeDJ5TCwgeEwpID0+XG4gIGNvbXBvc2UoeEwsIGNob29zZSh4TyA9PiB4TyA9PT0gdW5kZWZpbmVkID8gbm90aGluZyA6IHgyeUwoeE8pKSkpXG5cbmV4cG9ydCBjb25zdCBqdXN0ID0geCA9PiBsZW5zSShSLmFsd2F5cyh4KSwgc25kKVxuXG5leHBvcnQgY29uc3QgY2hvb3NlID0geDJ5TCA9PiBjb25zdHJ1Y3RvciA9PiBpbm5lciA9PiB0YXJnZXQgPT5cbiAgbGlmdCh4MnlMKHRhcmdldCkpKGNvbnN0cnVjdG9yKShpbm5lcikodGFyZ2V0KVxuXG5leHBvcnQgY29uc3Qgbm90aGluZyA9IGxlbnNJKHNuZCwgc25kKVxuXG5leHBvcnQgY29uc3Qgb3JFbHNlID1cbiAgUi5jdXJyeSgoZCwgbCkgPT4gY2hvb3NlKHggPT4gZ2V0SShsaWZ0KGwpLCB4KSAhPT0gdW5kZWZpbmVkID8gbCA6IGQpKVxuXG5leHBvcnQgY29uc3QgY2hvaWNlID0gKC4uLmxzKSA9PiBjaG9vc2UoeCA9PiB7XG4gIGNvbnN0IGkgPSBscy5maW5kSW5kZXgobCA9PiBnZXRJKGxpZnQobCksIHgpICE9PSB1bmRlZmluZWQpXG4gIHJldHVybiAwIDw9IGkgPyBsc1tpXSA6IG5vdGhpbmdcbn0pXG5cbmNvbnN0IHJlcGxhY2VyID0gKGlubiwgb3V0KSA9PiB4ID0+IFIuZXF1YWxzKHgsIGlubikgPyBvdXQgOiB4XG5jb25zdCBub3JtYWxpemVyID0gZm4gPT4gbGVuc0koZm4sIHRvQ29uc2VydmUoZm4pKVxuXG5leHBvcnQgY29uc3QgcmVwbGFjZSA9IFIuY3VycnkoKGlubiwgb3V0KSA9PlxuICBsZW5zSShyZXBsYWNlcihpbm4sIG91dCksIHRvQ29uc2VydmUocmVwbGFjZXIob3V0LCBpbm4pKSkpXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0cyA9IHJlcGxhY2UodW5kZWZpbmVkKVxuZXhwb3J0IGNvbnN0IHJlcXVpcmVkID0gaW5uID0+IHJlcGxhY2UoaW5uLCB1bmRlZmluZWQpXG5leHBvcnQgY29uc3QgZGVmaW5lID0gdiA9PiBub3JtYWxpemVyKHJlcGxhY2VyKHVuZGVmaW5lZCwgdikpXG5cbmV4cG9ydCBjb25zdCB2YWx1ZU9yID0gdiA9PlxuICBsZW5zSSh4ID0+IHggPT09IHVuZGVmaW5lZCB8fCB4ID09PSBudWxsID8gdiA6IHgsIGNvbnNlcnZlKVxuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplID0gdHJhbnNmb3JtID0+IG5vcm1hbGl6ZXIodG9QYXJ0aWFsKHRyYW5zZm9ybSkpXG5cbmNvbnN0IGlzUHJvcCA9IHggPT4gdHlwZW9mIHggPT09IFwic3RyaW5nXCJcblxuZXhwb3J0IGNvbnN0IHByb3AgPSBhc3NlcnQoXCJhIHN0cmluZ1wiLCBpc1Byb3ApXG5cbmNvbnN0IGxpZnRQcm9wID0gayA9PiBsZW5zSShvID0+IHVuT2JqZWN0KG8pICYmIG9ba10sICh2LCBvSW4pID0+IHtcbiAgY29uc3QgbyA9IHVuT2JqZWN0KG9JbilcbiAgcmV0dXJuIHYgPT09IHVuZGVmaW5lZCA/IGRlbGV0ZUtleShrLCBvKSA6IHNldEtleShrLCB2LCBvKVxufSlcblxuZXhwb3J0IGNvbnN0IGZpbmQgPSBwcmVkaWNhdGUgPT4gY2hvb3NlKHhzID0+IHtcbiAgaWYgKGlzQXJyYXkoeHMpKSB7XG4gICAgY29uc3QgaSA9IHhzLmZpbmRJbmRleChwcmVkaWNhdGUpXG4gICAgcmV0dXJuIGkgPCAwID8gYXBwZW5kIDogaVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBhcHBlbmRcbiAgfVxufSlcblxuZXhwb3J0IGNvbnN0IGZpbmRXaXRoID0gKC4uLmxzKSA9PiB7XG4gIGNvbnN0IGxscyA9IGxpZnQoY29tcG9zZSguLi5scykpXG4gIHJldHVybiBjb21wb3NlKGZpbmQoeCA9PiBnZXRJKGxscywgeCkgIT09IHVuZGVmaW5lZCksIGxscylcbn1cblxuY29uc3QgaXNJbmRleCA9IHggPT4gTnVtYmVyLmlzSW50ZWdlcih4KSAmJiAwIDw9IHhcblxuZXhwb3J0IGNvbnN0IGluZGV4ID0gYXNzZXJ0KFwiYSBub24tbmVnYXRpdmUgaW50ZWdlclwiLCBpc0luZGV4KVxuXG5jb25zdCBsaWZ0SW5kZXggPSBpID0+IGxlbnNJKHhzID0+IHVuQXJyYXkoeHMpICYmIHhzW2ldLCAoeCwgeHMpID0+IHtcbiAgaWYgKHggPT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghaXNBcnJheSh4cykpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKGkgPCB4cy5sZW5ndGgpXG4gICAgICByZXR1cm4gZHJvcHBlZCh4cy5zbGljZSgwLCBpKS5jb25jYXQoeHMuc2xpY2UoaSsxKSkpXG4gICAgcmV0dXJuIGRyb3BwZWQoeHMpXG4gIH0gZWxzZSB7XG4gICAgaWYgKCFpc0FycmF5KHhzKSlcbiAgICAgIHJldHVybiBBcnJheShpKS5jb25jYXQoW3hdKVxuICAgIGlmICh4cy5sZW5ndGggPD0gaSlcbiAgICAgIHJldHVybiB4cy5jb25jYXQoQXJyYXkoaSAtIHhzLmxlbmd0aCksIFt4XSlcbiAgICBpZiAoUi5lcXVhbHMoeCwgeHNbaV0pKVxuICAgICAgcmV0dXJuIHhzXG4gICAgcmV0dXJuIHhzLnNsaWNlKDAsIGkpLmNvbmNhdChbeF0sIHhzLnNsaWNlKGkrMSkpXG4gIH1cbn0pXG5cbmV4cG9ydCBjb25zdCBhcHBlbmQgPSBsZW5zSShzbmQsICh4LCB4cykgPT5cbiAgeCA9PT0gdW5kZWZpbmVkID8gdW5BcnJheSh4cykgOiBpc0FycmF5KHhzKSA/IHhzLmNvbmNhdChbeF0pIDogW3hdKVxuXG5leHBvcnQgY29uc3QgZmlsdGVyID0gcCA9PiBsZW5zSSh4cyA9PiB1bkFycmF5KHhzKSAmJiB4cy5maWx0ZXIocCksICh5cywgeHMpID0+XG4gIGNvbnNlcnZlKGRyb3BwZWQoUi5jb25jYXQobWtBcnJheSh5cyksIG1rQXJyYXkoeHMpLmZpbHRlcihSLmNvbXBsZW1lbnQocCkpKSksIHhzKSlcblxuZXhwb3J0IGNvbnN0IGF1Z21lbnQgPSB0ZW1wbGF0ZSA9PiBsZW5zSShcbiAgeCA9PiB7XG4gICAgaWYgKGlzT2JqZWN0KHgpKSB7XG4gICAgICBjb25zdCB6ID0gey4uLnh9XG4gICAgICBmb3IgKGNvbnN0IGsgaW4gdGVtcGxhdGUpXG4gICAgICAgIHpba10gPSB0ZW1wbGF0ZVtrXSh6KVxuICAgICAgcmV0dXJuIHpcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgfSxcbiAgdG9Db25zZXJ2ZSgoeSwgY0luKSA9PiB7XG4gICAgaWYgKGlzT2JqZWN0KHkpKSB7XG4gICAgICBjb25zdCBjID0gdW5PYmplY3QoY0luKSB8fCB7fVxuICAgICAgbGV0IHpcbiAgICAgIGNvbnN0IHNldCA9IChrLCB2KSA9PiB7XG4gICAgICAgIGlmICh1bmRlZmluZWQgPT09IHopXG4gICAgICAgICAgeiA9IHt9XG4gICAgICAgIHpba10gPSB2XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGsgaW4geSkge1xuICAgICAgICBpZiAoIShrIGluIHRlbXBsYXRlKSlcbiAgICAgICAgICBzZXQoaywgeVtrXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIChrIGluIGMpXG4gICAgICAgICAgICBzZXQoaywgY1trXSlcbiAgICAgIH1cbiAgICAgIHJldHVybiB6XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gIH0pKVxuXG5leHBvcnQgY29uc3QgcGljayA9IHRlbXBsYXRlID0+IGxlbnNJKFxuICBjID0+IHtcbiAgICBsZXQgclxuICAgIGZvciAoY29uc3QgayBpbiB0ZW1wbGF0ZSkge1xuICAgICAgY29uc3QgdiA9IGdldEkobGlmdCh0ZW1wbGF0ZVtrXSksIGMpXG4gICAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgciA9IHt9XG4gICAgICAgIHJba10gPSB2XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByXG4gIH0sXG4gIChvID0gZW1wdHksIGNJbikgPT4ge1xuICAgIGxldCBjID0gY0luXG4gICAgZm9yIChjb25zdCBrIGluIHRlbXBsYXRlKVxuICAgICAgYyA9IHNldEkobGlmdCh0ZW1wbGF0ZVtrXSksIG9ba10sIGMpXG4gICAgcmV0dXJuIGNcbiAgfSlcblxuZXhwb3J0IGNvbnN0IGlkZW50aXR5ID0gbGVuc0koaWQsIGNvbnNlcnZlKVxuXG5leHBvcnQgY29uc3QgcHJvcHMgPSAoLi4ua3MpID0+IHBpY2soUi56aXBPYmooa3MsIGtzKSlcblxuY29uc3Qgc2hvdyA9ICguLi5sYWJlbHMpID0+IHggPT4gY29uc29sZS5sb2coLi4ubGFiZWxzLCB4KSB8fCB4XG5cbmV4cG9ydCBjb25zdCBsb2cgPSAoLi4ubGFiZWxzKSA9PlxuICBsZW5zSShzaG93KC4uLmxhYmVscywgXCJnZXRcIiksIHNob3coLi4ubGFiZWxzLCBcInNldFwiKSlcblxuZXhwb3J0IGNvbnN0IHNlcXVlbmNlID0gY29uc3RydWN0b3IgPT4gaW5uZXIgPT4gdGFyZ2V0ID0+XG4gIHdhcm4oXCJgc2VxdWVuY2VgIGlzIGV4cGVyaW1lbnRhbCBhbmQgbWlnaHQgYmUgcmVtb3ZlZCwgcmVuYW1lZCBvciBjaGFuZ2VkIHNlbWFudGljYWxseSBiZWZvcmUgbmV4dCBtYWpvciByZWxlYXNlXCIpIHx8XG4gIFIudHJhdmVyc2UoY29uc3RydWN0b3IsIGlubmVyLCBta0FycmF5KHRhcmdldCkpXG4gIC5tYXAoZmlsdGVyZWQpXG5cbmV4cG9ydCBjb25zdCBvcHRpb25hbCA9XG4gIGNvbXBvc2UobGVuc0kodG9QYXJ0aWFsKHggPT4gW3hdKSxcbiAgICAgICAgICAgICAgICB0b1BhcnRpYWwoKFt4XSkgPT4geCkpLFxuICAgICAgICAgIHNlcXVlbmNlKVxuXG5leHBvcnQgY29uc3QgZnJvbVJhbWRhID0gbCA9PiBfY29uc3RydWN0b3IgPT4gbFxuY29uc3QgZmFudGFzeSA9ICgpID0+IHt0aHJvdyBuZXcgRXJyb3IoXCJTb3JyeSwgYHRvUmFtZGFgIGlzIG9ubHkgZmFudGFzeSFcIil9XG5leHBvcnQgY29uc3QgdG9SYW1kYSA9IGwgPT4gbGlmdChsKShmYW50YXN5KVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlXG4iXX0=
{
"name": "partial.lenses",
"version": "3.8.0",
"version": "3.8.1",
"description": "Partial lenses",

@@ -31,12 +31,12 @@ "main": "lib/partial.lenses.js",

"devDependencies": {
"babel-cli": "^6.11.4",
"babel-eslint": "^6.1.2",
"babel-plugin-transform-es2015-modules-commonjs": "^6.11.5",
"babel-preset-es2015": "^6.13.2",
"babel-preset-stage-2": "^6.13.0",
"babel-register": "^6.11.6",
"eslint": "^3.2.2",
"mocha": "^3.0.1",
"nyc": "^7.1.0"
"babel-cli": "^6.16.0",
"babel-eslint": "^7.0.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.16.0",
"babel-preset-es2015": "^6.16.0",
"babel-preset-stage-2": "^6.17.0",
"babel-register": "^6.16.3",
"eslint": "^3.8.1",
"mocha": "^3.1.2",
"nyc": "^8.3.2"
}
}

@@ -16,3 +16,3 @@ [ [Tutorial](#tutorial) | [Reference](#reference) | [Background](#background) ]

[![npm version](https://badge.fury.io/js/partial.lenses.svg)](http://badge.fury.io/js/partial.lenses) [![Build Status](https://travis-ci.org/calmm-js/partial.lenses.svg?branch=master)](https://travis-ci.org/calmm-js/partial.lenses) [![](https://david-dm.org/calmm-js/partial.lenses.svg)](https://david-dm.org/calmm-js/partial.lenses) [![](https://david-dm.org/calmm-js/partial.lenses/dev-status.svg)](https://david-dm.org/calmm-js/partial.lenses#info=devDependencies)
[![npm version](https://badge.fury.io/js/partial.lenses.svg)](http://badge.fury.io/js/partial.lenses) [![Build Status](https://travis-ci.org/calmm-js/partial.lenses.svg?branch=master)](https://travis-ci.org/calmm-js/partial.lenses) [![](https://david-dm.org/calmm-js/partial.lenses.svg)](https://david-dm.org/calmm-js/partial.lenses) [![](https://david-dm.org/calmm-js/partial.lenses/dev-status.svg)](https://david-dm.org/calmm-js/partial.lenses?type=dev)

@@ -638,5 +638,4 @@ ## Tutorial

It is not uncommon, however, to have cases where removing the last element from
an array must not remove the array itself. In such cases you want to use
[`L.required([])`](#required) to access the array. Consider the following
examples without [`L.required([])`](#required):
an array must not remove the array itself. Consider the following examples
without [`L.required([])`](#required):

@@ -663,2 +662,17 @@ ```js

There is a related gotcha with [`L.required`](#required). Consider the
following example:
```js
L.remove(L.required([]), [])
// []
L.get(L.required([]), [])
// undefined
```
In other words, [`L.required`](#required) works in both directions. Thanks to
the handling of `undefined` within partial lenses, this is often not a problem,
but sometimes you need the "default" value both ways. In that case you can
use [`L.define`](#define).
#### <a name="just"></a>[`L.just(value)`](#just "L.just :: a -> PLens s a")

@@ -722,3 +736,3 @@

a change, the data has actually changed. By keeping the data normalized, a
simple [`R.equals`](http://ramdajs.com/0.21.0/docs/#equals) comparison will do.
simple [`R.equals`](http://ramdajs.com/docs/#equals) comparison will do.

@@ -740,7 +754,7 @@ #### <a name="nothing"></a>[`L.nothing`](#nothing "L.nothing :: PLens s s")

`L.orElse(backup, primary)` acts like `primary` when its view is not undefined
and otherwise like `backup`. You can use `L.orElse` on its own with
[`R.reduceRight`](http://ramdajs.com/0.21.0/docs/#reduceRight) (and
[`R.reduce`](http://ramdajs.com/0.21.0/docs/#reduce)) to create an associative
choice over lenses or use `L.orElse` to specify a default or backup lens for
[`L.choice`](#choice), for example.
and otherwise like `backup`. You can use `L.orElse` on its own
with [`R.reduceRight`](http://ramdajs.com/docs/#reduceRight)
(and [`R.reduce`](http://ramdajs.com/docs/#reduce)) to create an associative
choice over lenses or use `L.orElse` to specify a default or backup lens
for [`L.choice`](#choice), for example.

@@ -823,4 +837,4 @@ #### <a name="pick"></a>[`L.pick({p1: l1, ...pls})`](#pick "L.pick :: {p1 :: PLens s a1, ...pls} -> PLens s {p1 :: a1, ...pls}")

`L.replace(inn, out)`, when viewed, replaces the value `inn` with `out` and vice
versa when set. Values are compared using
[`R.equals`](http://ramdajs.com/0.21.0/docs/#equals).
versa when set. Values are compared
using [`R.equals`](http://ramdajs.com/docs/#equals).

@@ -838,3 +852,4 @@ For example:

and elements. In most cases, rather than using `replace`, you will make
selective use of `defaults` and `required`.
selective use of [`defaults`](#defaults), [`required`](#required)
and [`define`](#define).

@@ -1062,6 +1077,5 @@ #### <a name="required"></a>[`L.required(inn)`](#required "L.required :: s -> PLens s s")

One might assume that
[`R.lensPath([p0, ...ps])`](http://ramdajs.com/0.21.0/docs/#lensPath) is
equivalent to `R.compose(R.lensProp(p0), ...ps.map(R.lensProp))`, but that is
not the case.
One might assume that [`R.lensPath([p0,
...ps])`](http://ramdajs.com/docs/#lensPath) is equivalent to
`R.compose(R.lensProp(p0), ...ps.map(R.lensProp))`, but that is not the case.

@@ -1096,3 +1110,3 @@ With partial lenses you can robustly compose a path lens from prop lenses

lenses (e.g. [`L.prop`](#prop)) are not necessarily the same as primitive
ordinary lenses (e.g. Ramda's
[`R.lensProp`](http://ramdajs.com/0.21.0/docs/#lensProp)).
ordinary lenses
(e.g. Ramda's [`R.lensProp`](http://ramdajs.com/docs/#lensProp)).

@@ -15,2 +15,3 @@ import * as R from "ramda"

const Const = x => new Constant(x)
const Single = x => Const([x])
Constant.prototype.map = function () {return this}

@@ -133,3 +134,3 @@ Constant.prototype.of = Const

inner(getter(target)).map(focus => setter(focus, target))
const collectI = (l, s) => l(Const)(x => Const([x]))(s).value
const collectI = (l, s) => l(Const)(Single)(s).value

@@ -162,9 +163,11 @@ export const lens = R.curry(lensI)

const replacer = (inn, out) => x => R.equals(x, inn) ? out : x
const normalizer = fn => lensI(fn, toConserve(fn))
export const replace = R.curry((inn, out) =>
lensI(x => R.equals(x, inn) ? out : x,
toConserve(y => R.equals(y, out) ? inn : y)))
lensI(replacer(inn, out), toConserve(replacer(out, inn))))
export const defaults = replace(undefined)
export const required = inn => replace(inn, undefined)
export const define = v => compose(required(v), defaults(v))
export const define = v => normalizer(replacer(undefined, v))

@@ -174,4 +177,3 @@ export const valueOr = v =>

export const normalize = transform =>
lensI(toPartial(transform), toConserve(toPartial(transform)))
export const normalize = transform => normalizer(toPartial(transform))

@@ -302,5 +304,5 @@ const isProp = x => typeof x === "string"

export const fromRamda = l => _constructor => l
export const toRamda = l =>
lift(l)(() => {throw new Error("Sorry, `toRamda` is only fantasy!")})
const fantasy = () => {throw new Error("Sorry, `toRamda` is only fantasy!")}
export const toRamda = l => lift(l)(fantasy)
export default compose

@@ -156,2 +156,3 @@ import * as R from "ramda"

testEq('L.get(P("related", L.define([])), {})', [])
testEq('L.set(L.define([]), undefined, undefined)', [])
})

@@ -158,0 +159,0 @@

Sorry, the diff of this file is not supported yet

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