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 0.1.1 to 0.2.0

22

lib/partial.lenses.js

@@ -23,6 +23,10 @@ "use strict";

if (o === undefined || !(k in o)) return o;
var r = {};
var r = undefined;
for (var p in o) {
if (p !== k) r[p] = o[p];
}return r;
if (p !== k) {
if (undefined === r) r = {};
r[p] = o[p];
}
}
return r;
};

@@ -41,2 +45,8 @@

var dropped = function dropped(xs) {
return Object.keys(xs).length === 0 ? undefined : xs;
};
//
var conserve = function conserve(f) {

@@ -99,3 +109,3 @@ return function (n0, o) {

if (i < 0) return xs;
return xs.slice(0, i).concat(xs.slice(i + 1));
return dropped(xs.slice(0, i).concat(xs.slice(i + 1)));
} else {

@@ -117,3 +127,3 @@ if (xs === undefined) return [x];

if (xs === undefined) return undefined;
if (i < xs.length) return xs.slice(0, i).concat(xs.slice(i + 1));
if (i < xs.length) return dropped(xs.slice(0, i).concat(xs.slice(i + 1)));
return xs;

@@ -130,2 +140,2 @@ } else {

exports.default = L;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJ0aWFsLmxlbnNlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLElBQU0sWUFBWSxTQUFaLFNBQVksQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFVO0FBQzFCLE1BQUksTUFBTSxTQUFOLElBQW1CLEVBQUUsS0FBSyxDQUFMLENBQUYsRUFDckIsT0FBTyxDQUFQLENBREY7QUFFQSxNQUFNLElBQUksRUFBSixDQUhvQjtBQUkxQixPQUFLLElBQU0sQ0FBTixJQUFXLENBQWhCO0FBQ0UsUUFBSSxNQUFNLENBQU4sRUFDRixFQUFFLENBQUYsSUFBTyxFQUFFLENBQUYsQ0FBUCxDQURGO0dBREYsT0FHTyxDQUFQLENBUDBCO0NBQVY7O0FBVWxCLElBQU0sU0FBUyxTQUFULE1BQVMsQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBYTtBQUMxQixNQUFJLE1BQU0sU0FBTixFQUNGLDJCQUFTLEdBQUksRUFBYixDQURGO0FBRUEsTUFBSSxLQUFLLENBQUwsSUFBVSxnQkFBRSxNQUFGLENBQVMsQ0FBVCxFQUFZLEVBQUUsQ0FBRixDQUFaLENBQVYsRUFDRixPQUFPLENBQVAsQ0FERjtBQUVBLE1BQU0sd0JBQU0sR0FBSSxFQUFWLENBTG9CO0FBTTFCLE9BQUssSUFBTSxDQUFOLElBQVcsQ0FBaEI7QUFDRSxRQUFJLE1BQU0sQ0FBTixFQUNGLEVBQUUsQ0FBRixJQUFPLEVBQUUsQ0FBRixDQUFQLENBREY7R0FERixPQUdPLENBQVAsQ0FUMEI7Q0FBYjs7OztBQWNmLElBQU0sV0FBVyxTQUFYLFFBQVc7U0FBSyxVQUFDLEVBQUQsRUFBSyxDQUFMLEVBQVc7QUFDL0IsUUFBTSxJQUFJLEVBQUUsRUFBRixFQUFNLENBQU4sQ0FBSixDQUR5QjtBQUUvQixXQUFPLGdCQUFFLE1BQUYsQ0FBUyxDQUFULEVBQVksQ0FBWixJQUFpQixDQUFqQixHQUFxQixDQUFyQixDQUZ3QjtHQUFYO0NBQUw7Ozs7QUFPakIsSUFBTSxPQUFPLFNBQVAsSUFBTyxJQUFLO0FBQ2hCLGlCQUFlLDRDQUFmO0FBQ0EsU0FBSyxRQUFMO0FBQWUsYUFBTyxFQUFFLElBQUYsQ0FBTyxDQUFQLENBQVAsQ0FBZjtBQURBLFNBRUssUUFBTDtBQUFlLGFBQU8sRUFBRSxLQUFGLENBQVEsQ0FBUixDQUFQLENBQWY7QUFGQTtBQUdlLGFBQU8sQ0FBUCxDQUFmO0FBSEEsR0FEZ0I7Q0FBTDs7QUFRYixJQUFNLElBQUksU0FBSixDQUFJO29DQUFJOzs7O1NBQU8sR0FBRyxNQUFILEtBQWMsQ0FBZCxHQUFrQixLQUFLLEdBQUcsQ0FBSCxDQUFMLENBQWxCLEdBQWdDLGdCQUFFLE9BQUYsMkNBQWEsR0FBRyxHQUFILENBQU8sSUFBUCxFQUFiLENBQWhDO0NBQVg7O0FBRVYsRUFBRSxJQUFGLEdBQVMsZ0JBQUUsSUFBRjtBQUNULEVBQUUsSUFBRixHQUFTLGdCQUFFLElBQUY7QUFDVCxFQUFFLEdBQUYsR0FBUyxnQkFBRSxHQUFGO0FBQ1QsRUFBRSxJQUFGLEdBQVMsZ0JBQUUsSUFBRjs7QUFFVCxFQUFFLE9BQUYsR0FBWSxVQUFDLEdBQUQsRUFBTSxHQUFOO1NBQ1YsZ0JBQUUsSUFBRixDQUFPO1dBQUssZ0JBQUUsTUFBRixDQUFTLENBQVQsRUFBWSxHQUFaLElBQW1CLEdBQW5CLEdBQXlCLENBQXpCO0dBQUwsRUFDQSxTQUFTO1dBQUssZ0JBQUUsTUFBRixDQUFTLENBQVQsRUFBWSxHQUFaLElBQW1CLEdBQW5CLEdBQXlCLENBQXpCO0dBQUwsQ0FEaEI7Q0FEVTs7QUFJWixFQUFFLElBQUYsR0FBUztTQUNQLGdCQUFFLElBQUYsQ0FBTztXQUFLLEtBQUssRUFBRSxDQUFGLENBQUw7R0FBTCxFQUNBLFVBQUMsQ0FBRCxFQUFJLENBQUo7V0FBVSxNQUFNLFNBQU4sR0FBa0IsVUFBVSxDQUFWLEVBQWEsQ0FBYixDQUFsQixHQUFvQyxPQUFPLENBQVAsRUFBVSxDQUFWLEVBQWEsQ0FBYixDQUFwQztHQUFWO0NBRkE7O0FBSVQsRUFBRSxJQUFGLEdBQVM7U0FBYSxnQkFBRSxJQUFGLENBQU87V0FBTSxNQUFNLEdBQUcsSUFBSCxDQUFRLFNBQVIsQ0FBTjtHQUFOLEVBQWdDLFVBQUMsQ0FBRCxFQUFJLEVBQUosRUFBVztBQUN0RSxRQUFJLE1BQU0sU0FBTixFQUFpQjtBQUNuQixVQUFJLE9BQU8sU0FBUCxFQUNGLE9BQU8sU0FBUCxDQURGO0FBRUEsVUFBTSxJQUFJLEdBQUcsU0FBSCxDQUFhLFNBQWIsQ0FBSixDQUhhO0FBSW5CLFVBQUksSUFBSSxDQUFKLEVBQ0YsT0FBTyxFQUFQLENBREY7QUFFQSxhQUFPLEdBQUcsS0FBSCxDQUFTLENBQVQsRUFBWSxDQUFaLEVBQWUsTUFBZixDQUFzQixHQUFHLEtBQUgsQ0FBUyxJQUFFLENBQUYsQ0FBL0IsQ0FBUCxDQU5tQjtLQUFyQixNQU9PO0FBQ0wsVUFBSSxPQUFPLFNBQVAsRUFDRixPQUFPLENBQUMsQ0FBRCxDQUFQLENBREY7QUFFQSxVQUFNLElBQUksR0FBRyxTQUFILENBQWEsU0FBYixDQUFKLENBSEQ7QUFJTCxVQUFJLElBQUksQ0FBSixFQUNGLE9BQU8sR0FBRyxNQUFILENBQVUsQ0FBQyxDQUFELENBQVYsQ0FBUCxDQURGO0FBRUEsVUFBSSxnQkFBRSxNQUFGLENBQVMsQ0FBVCxFQUFZLEdBQUcsQ0FBSCxDQUFaLENBQUosRUFDRSxPQUFPLEVBQVAsQ0FERjtBQUVBLGFBQU8sR0FBRyxLQUFILENBQVMsQ0FBVCxFQUFZLENBQVosRUFBZSxNQUFmLENBQXNCLENBQUMsQ0FBRCxDQUF0QixFQUEyQixHQUFHLEtBQUgsQ0FBUyxJQUFFLENBQUYsQ0FBcEMsQ0FBUCxDQVJLO0tBUFA7R0FEMkQ7Q0FBcEQ7O0FBb0JULEVBQUUsS0FBRixHQUFVO1NBQUssZ0JBQUUsSUFBRixDQUFPO1dBQU0sTUFBTSxHQUFHLENBQUgsQ0FBTjtHQUFOLEVBQW1CLFVBQUMsQ0FBRCxFQUFJLEVBQUosRUFBVztBQUNsRCxRQUFJLE1BQU0sU0FBTixFQUFpQjtBQUNuQixVQUFJLE9BQU8sU0FBUCxFQUNGLE9BQU8sU0FBUCxDQURGO0FBRUEsVUFBSSxJQUFJLEdBQUcsTUFBSCxFQUNOLE9BQU8sR0FBRyxLQUFILENBQVMsQ0FBVCxFQUFZLENBQVosRUFBZSxNQUFmLENBQXNCLEdBQUcsS0FBSCxDQUFTLElBQUUsQ0FBRixDQUEvQixDQUFQLENBREY7QUFFQSxhQUFPLEVBQVAsQ0FMbUI7S0FBckIsTUFNTztBQUNMLFVBQUksT0FBTyxTQUFQLEVBQ0YsT0FBTyxNQUFNLENBQU4sRUFBUyxNQUFULENBQWdCLENBQUMsQ0FBRCxDQUFoQixDQUFQLENBREY7QUFFQSxVQUFJLEdBQUcsTUFBSCxJQUFhLENBQWIsRUFDRixPQUFPLEdBQUcsTUFBSCxDQUFVLE1BQU0sSUFBSSxHQUFHLE1BQUgsQ0FBcEIsRUFBZ0MsQ0FBQyxDQUFELENBQWhDLENBQVAsQ0FERjtBQUVBLFVBQUksZ0JBQUUsTUFBRixDQUFTLENBQVQsRUFBWSxHQUFHLENBQUgsQ0FBWixDQUFKLEVBQ0UsT0FBTyxFQUFQLENBREY7QUFFQSxhQUFPLEdBQUcsS0FBSCxDQUFTLENBQVQsRUFBWSxDQUFaLEVBQWUsTUFBZixDQUFzQixDQUFDLENBQUQsQ0FBdEIsRUFBMkIsR0FBRyxLQUFILENBQVMsSUFBRSxDQUFGLENBQXBDLENBQVAsQ0FQSztLQU5QO0dBRHVDO0NBQS9COztrQkFrQksiLCJmaWxlIjoicGFydGlhbC5sZW5zZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUiBmcm9tIFwicmFtZGFcIlxuXG4vL1xuXG5jb25zdCBkZWxldGVLZXkgPSAoaywgbykgPT4ge1xuICBpZiAobyA9PT0gdW5kZWZpbmVkIHx8ICEoayBpbiBvKSlcbiAgICByZXR1cm4gb1xuICBjb25zdCByID0ge31cbiAgZm9yIChjb25zdCBwIGluIG8pXG4gICAgaWYgKHAgIT09IGspXG4gICAgICByW3BdID0gb1twXVxuICByZXR1cm4gclxufVxuXG5jb25zdCBzZXRLZXkgPSAoaywgdiwgbykgPT4ge1xuICBpZiAobyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiB7W2tdOiB2fVxuICBpZiAoayBpbiBvICYmIFIuZXF1YWxzKHYsIG9ba10pKVxuICAgIHJldHVybiBvXG4gIGNvbnN0IHIgPSB7W2tdOiB2fVxuICBmb3IgKGNvbnN0IHAgaW4gbylcbiAgICBpZiAocCAhPT0gaylcbiAgICAgIHJbcF0gPSBvW3BdXG4gIHJldHVybiByXG59XG5cbi8vXG5cbmNvbnN0IGNvbnNlcnZlID0gZiA9PiAobjAsIG8pID0+IHtcbiAgY29uc3QgbiA9IGYobjAsIG8pXG4gIHJldHVybiBSLmVxdWFscyhuLCBvKSA/IG8gOiBuXG59XG5cbi8vXG5cbmNvbnN0IGxpZnQgPSBsID0+IHtcbiAgc3dpdGNoICh0eXBlb2YgbCkge1xuICBjYXNlIFwic3RyaW5nXCI6IHJldHVybiBMLnByb3AobClcbiAgY2FzZSBcIm51bWJlclwiOiByZXR1cm4gTC5pbmRleChsKVxuICBkZWZhdWx0OiAgICAgICByZXR1cm4gbFxuICB9XG59XG5cbmNvbnN0IEwgPSAoLi4ubHMpID0+IGxzLmxlbmd0aCA9PT0gMSA/IGxpZnQobHNbMF0pIDogUi5jb21wb3NlKC4uLmxzLm1hcChsaWZ0KSlcblxuTC5sZW5zID0gUi5sZW5zXG5MLm92ZXIgPSBSLm92ZXJcbkwuc2V0ICA9IFIuc2V0XG5MLnZpZXcgPSBSLnZpZXdcblxuTC5yZXBsYWNlID0gKGlubiwgb3V0KSA9PlxuICBSLmxlbnMoeCA9PiBSLmVxdWFscyh4LCBpbm4pID8gb3V0IDogeCxcbiAgICAgICAgIGNvbnNlcnZlKHkgPT4gUi5lcXVhbHMoeSwgb3V0KSA/IGlubiA6IHkpKVxuXG5MLnByb3AgPSBrID0+XG4gIFIubGVucyhvID0+IG8gJiYgb1trXSxcbiAgICAgICAgICh2LCBvKSA9PiB2ID09PSB1bmRlZmluZWQgPyBkZWxldGVLZXkoaywgbykgOiBzZXRLZXkoaywgdiwgbykpXG5cbkwuZmluZCA9IHByZWRpY2F0ZSA9PiBSLmxlbnMoeHMgPT4geHMgJiYgeHMuZmluZChwcmVkaWNhdGUpLCAoeCwgeHMpID0+IHtcbiAgaWYgKHggPT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh4cyA9PT0gdW5kZWZpbmVkKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGNvbnN0IGkgPSB4cy5maW5kSW5kZXgocHJlZGljYXRlKVxuICAgIGlmIChpIDwgMClcbiAgICAgIHJldHVybiB4c1xuICAgIHJldHVybiB4cy5zbGljZSgwLCBpKS5jb25jYXQoeHMuc2xpY2UoaSsxKSlcbiAgfSBlbHNlIHtcbiAgICBpZiAoeHMgPT09IHVuZGVmaW5lZClcbiAgICAgIHJldHVybiBbeF1cbiAgICBjb25zdCBpID0geHMuZmluZEluZGV4KHByZWRpY2F0ZSlcbiAgICBpZiAoaSA8IDApXG4gICAgICByZXR1cm4geHMuY29uY2F0KFt4XSlcbiAgICBpZiAoUi5lcXVhbHMoeCwgeHNbaV0pKVxuICAgICAgcmV0dXJuIHhzXG4gICAgcmV0dXJuIHhzLnNsaWNlKDAsIGkpLmNvbmNhdChbeF0sIHhzLnNsaWNlKGkrMSkpXG4gIH1cbn0pXG5cbkwuaW5kZXggPSBpID0+IFIubGVucyh4cyA9PiB4cyAmJiB4c1tpXSwgKHgsIHhzKSA9PiB7XG4gIGlmICh4ID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoeHMgPT09IHVuZGVmaW5lZClcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICBpZiAoaSA8IHhzLmxlbmd0aClcbiAgICAgIHJldHVybiB4cy5zbGljZSgwLCBpKS5jb25jYXQoeHMuc2xpY2UoaSsxKSlcbiAgICByZXR1cm4geHNcbiAgfSBlbHNlIHtcbiAgICBpZiAoeHMgPT09IHVuZGVmaW5lZClcbiAgICAgIHJldHVybiBBcnJheShpKS5jb25jYXQoW3hdKVxuICAgIGlmICh4cy5sZW5ndGggPD0gaSlcbiAgICAgIHJldHVybiB4cy5jb25jYXQoQXJyYXkoaSAtIHhzLmxlbmd0aCksIFt4XSlcbiAgICBpZiAoUi5lcXVhbHMoeCwgeHNbaV0pKVxuICAgICAgcmV0dXJuIHhzXG4gICAgcmV0dXJuIHhzLnNsaWNlKDAsIGkpLmNvbmNhdChbeF0sIHhzLnNsaWNlKGkrMSkpXG4gIH1cbn0pXG5cbmV4cG9ydCBkZWZhdWx0IExcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJ0aWFsLmxlbnNlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLElBQU0sWUFBWSxTQUFaLFNBQVksQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFVO0FBQzFCLE1BQUksTUFBTSxTQUFOLElBQW1CLEVBQUUsS0FBSyxDQUFMLENBQUYsRUFDckIsT0FBTyxDQUFQLENBREY7QUFFQSxNQUFJLGFBQUosQ0FIMEI7QUFJMUIsT0FBSyxJQUFNLENBQU4sSUFBVyxDQUFoQixFQUFtQjtBQUNqQixRQUFJLE1BQU0sQ0FBTixFQUFTO0FBQ1gsVUFBSSxjQUFjLENBQWQsRUFDRixJQUFJLEVBQUosQ0FERjtBQUVBLFFBQUUsQ0FBRixJQUFPLEVBQUUsQ0FBRixDQUFQLENBSFc7S0FBYjtHQURGO0FBT0EsU0FBTyxDQUFQLENBWDBCO0NBQVY7O0FBY2xCLElBQU0sU0FBUyxTQUFULE1BQVMsQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBYTtBQUMxQixNQUFJLE1BQU0sU0FBTixFQUNGLDJCQUFTLEdBQUksRUFBYixDQURGO0FBRUEsTUFBSSxLQUFLLENBQUwsSUFBVSxnQkFBRSxNQUFGLENBQVMsQ0FBVCxFQUFZLEVBQUUsQ0FBRixDQUFaLENBQVYsRUFDRixPQUFPLENBQVAsQ0FERjtBQUVBLE1BQU0sd0JBQU0sR0FBSSxFQUFWLENBTG9CO0FBTTFCLE9BQUssSUFBTSxDQUFOLElBQVcsQ0FBaEI7QUFDRSxRQUFJLE1BQU0sQ0FBTixFQUNGLEVBQUUsQ0FBRixJQUFPLEVBQUUsQ0FBRixDQUFQLENBREY7R0FERixPQUdPLENBQVAsQ0FUMEI7Q0FBYjs7OztBQWNmLElBQU0sVUFBVSxTQUFWLE9BQVU7U0FBTSxPQUFPLElBQVAsQ0FBWSxFQUFaLEVBQWdCLE1BQWhCLEtBQTJCLENBQTNCLEdBQStCLFNBQS9CLEdBQTJDLEVBQTNDO0NBQU47Ozs7QUFLaEIsSUFBTSxXQUFXLFNBQVgsUUFBVztTQUFLLFVBQUMsRUFBRCxFQUFLLENBQUwsRUFBVztBQUMvQixRQUFNLElBQUksRUFBRSxFQUFGLEVBQU0sQ0FBTixDQUFKLENBRHlCO0FBRS9CLFdBQU8sZ0JBQUUsTUFBRixDQUFTLENBQVQsRUFBWSxDQUFaLElBQWlCLENBQWpCLEdBQXFCLENBQXJCLENBRndCO0dBQVg7Q0FBTDs7OztBQU9qQixJQUFNLE9BQU8sU0FBUCxJQUFPLElBQUs7QUFDaEIsaUJBQWUsNENBQWY7QUFDQSxTQUFLLFFBQUw7QUFBZSxhQUFPLEVBQUUsSUFBRixDQUFPLENBQVAsQ0FBUCxDQUFmO0FBREEsU0FFSyxRQUFMO0FBQWUsYUFBTyxFQUFFLEtBQUYsQ0FBUSxDQUFSLENBQVAsQ0FBZjtBQUZBO0FBR2UsYUFBTyxDQUFQLENBQWY7QUFIQSxHQURnQjtDQUFMOztBQVFiLElBQU0sSUFBSSxTQUFKLENBQUk7b0NBQUk7Ozs7U0FBTyxHQUFHLE1BQUgsS0FBYyxDQUFkLEdBQWtCLEtBQUssR0FBRyxDQUFILENBQUwsQ0FBbEIsR0FBZ0MsZ0JBQUUsT0FBRiwyQ0FBYSxHQUFHLEdBQUgsQ0FBTyxJQUFQLEVBQWIsQ0FBaEM7Q0FBWDs7QUFFVixFQUFFLElBQUYsR0FBUyxnQkFBRSxJQUFGO0FBQ1QsRUFBRSxJQUFGLEdBQVMsZ0JBQUUsSUFBRjtBQUNULEVBQUUsR0FBRixHQUFTLGdCQUFFLEdBQUY7QUFDVCxFQUFFLElBQUYsR0FBUyxnQkFBRSxJQUFGOztBQUVULEVBQUUsT0FBRixHQUFZLFVBQUMsR0FBRCxFQUFNLEdBQU47U0FDVixnQkFBRSxJQUFGLENBQU87V0FBSyxnQkFBRSxNQUFGLENBQVMsQ0FBVCxFQUFZLEdBQVosSUFBbUIsR0FBbkIsR0FBeUIsQ0FBekI7R0FBTCxFQUNBLFNBQVM7V0FBSyxnQkFBRSxNQUFGLENBQVMsQ0FBVCxFQUFZLEdBQVosSUFBbUIsR0FBbkIsR0FBeUIsQ0FBekI7R0FBTCxDQURoQjtDQURVOztBQUlaLEVBQUUsSUFBRixHQUFTO1NBQ1AsZ0JBQUUsSUFBRixDQUFPO1dBQUssS0FBSyxFQUFFLENBQUYsQ0FBTDtHQUFMLEVBQ0EsVUFBQyxDQUFELEVBQUksQ0FBSjtXQUFVLE1BQU0sU0FBTixHQUFrQixVQUFVLENBQVYsRUFBYSxDQUFiLENBQWxCLEdBQW9DLE9BQU8sQ0FBUCxFQUFVLENBQVYsRUFBYSxDQUFiLENBQXBDO0dBQVY7Q0FGQTs7QUFJVCxFQUFFLElBQUYsR0FBUztTQUFhLGdCQUFFLElBQUYsQ0FBTztXQUFNLE1BQU0sR0FBRyxJQUFILENBQVEsU0FBUixDQUFOO0dBQU4sRUFBZ0MsVUFBQyxDQUFELEVBQUksRUFBSixFQUFXO0FBQ3RFLFFBQUksTUFBTSxTQUFOLEVBQWlCO0FBQ25CLFVBQUksT0FBTyxTQUFQLEVBQ0YsT0FBTyxTQUFQLENBREY7QUFFQSxVQUFNLElBQUksR0FBRyxTQUFILENBQWEsU0FBYixDQUFKLENBSGE7QUFJbkIsVUFBSSxJQUFJLENBQUosRUFDRixPQUFPLEVBQVAsQ0FERjtBQUVBLGFBQU8sUUFBUSxHQUFHLEtBQUgsQ0FBUyxDQUFULEVBQVksQ0FBWixFQUFlLE1BQWYsQ0FBc0IsR0FBRyxLQUFILENBQVMsSUFBRSxDQUFGLENBQS9CLENBQVIsQ0FBUCxDQU5tQjtLQUFyQixNQU9PO0FBQ0wsVUFBSSxPQUFPLFNBQVAsRUFDRixPQUFPLENBQUMsQ0FBRCxDQUFQLENBREY7QUFFQSxVQUFNLElBQUksR0FBRyxTQUFILENBQWEsU0FBYixDQUFKLENBSEQ7QUFJTCxVQUFJLElBQUksQ0FBSixFQUNGLE9BQU8sR0FBRyxNQUFILENBQVUsQ0FBQyxDQUFELENBQVYsQ0FBUCxDQURGO0FBRUEsVUFBSSxnQkFBRSxNQUFGLENBQVMsQ0FBVCxFQUFZLEdBQUcsQ0FBSCxDQUFaLENBQUosRUFDRSxPQUFPLEVBQVAsQ0FERjtBQUVBLGFBQU8sR0FBRyxLQUFILENBQVMsQ0FBVCxFQUFZLENBQVosRUFBZSxNQUFmLENBQXNCLENBQUMsQ0FBRCxDQUF0QixFQUEyQixHQUFHLEtBQUgsQ0FBUyxJQUFFLENBQUYsQ0FBcEMsQ0FBUCxDQVJLO0tBUFA7R0FEMkQ7Q0FBcEQ7O0FBb0JULEVBQUUsS0FBRixHQUFVO1NBQUssZ0JBQUUsSUFBRixDQUFPO1dBQU0sTUFBTSxHQUFHLENBQUgsQ0FBTjtHQUFOLEVBQW1CLFVBQUMsQ0FBRCxFQUFJLEVBQUosRUFBVztBQUNsRCxRQUFJLE1BQU0sU0FBTixFQUFpQjtBQUNuQixVQUFJLE9BQU8sU0FBUCxFQUNGLE9BQU8sU0FBUCxDQURGO0FBRUEsVUFBSSxJQUFJLEdBQUcsTUFBSCxFQUNOLE9BQU8sUUFBUSxHQUFHLEtBQUgsQ0FBUyxDQUFULEVBQVksQ0FBWixFQUFlLE1BQWYsQ0FBc0IsR0FBRyxLQUFILENBQVMsSUFBRSxDQUFGLENBQS9CLENBQVIsQ0FBUCxDQURGO0FBRUEsYUFBTyxFQUFQLENBTG1CO0tBQXJCLE1BTU87QUFDTCxVQUFJLE9BQU8sU0FBUCxFQUNGLE9BQU8sTUFBTSxDQUFOLEVBQVMsTUFBVCxDQUFnQixDQUFDLENBQUQsQ0FBaEIsQ0FBUCxDQURGO0FBRUEsVUFBSSxHQUFHLE1BQUgsSUFBYSxDQUFiLEVBQ0YsT0FBTyxHQUFHLE1BQUgsQ0FBVSxNQUFNLElBQUksR0FBRyxNQUFILENBQXBCLEVBQWdDLENBQUMsQ0FBRCxDQUFoQyxDQUFQLENBREY7QUFFQSxVQUFJLGdCQUFFLE1BQUYsQ0FBUyxDQUFULEVBQVksR0FBRyxDQUFILENBQVosQ0FBSixFQUNFLE9BQU8sRUFBUCxDQURGO0FBRUEsYUFBTyxHQUFHLEtBQUgsQ0FBUyxDQUFULEVBQVksQ0FBWixFQUFlLE1BQWYsQ0FBc0IsQ0FBQyxDQUFELENBQXRCLEVBQTJCLEdBQUcsS0FBSCxDQUFTLElBQUUsQ0FBRixDQUFwQyxDQUFQLENBUEs7S0FOUDtHQUR1QztDQUEvQjs7a0JBa0JLIiwiZmlsZSI6InBhcnRpYWwubGVuc2VzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFIgZnJvbSBcInJhbWRhXCJcblxuLy9cblxuY29uc3QgZGVsZXRlS2V5ID0gKGssIG8pID0+IHtcbiAgaWYgKG8gPT09IHVuZGVmaW5lZCB8fCAhKGsgaW4gbykpXG4gICAgcmV0dXJuIG9cbiAgbGV0IHJcbiAgZm9yIChjb25zdCBwIGluIG8pIHtcbiAgICBpZiAocCAhPT0gaykge1xuICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gcilcbiAgICAgICAgciA9IHt9XG4gICAgICByW3BdID0gb1twXVxuICAgIH1cbiAgfVxuICByZXR1cm4gclxufVxuXG5jb25zdCBzZXRLZXkgPSAoaywgdiwgbykgPT4ge1xuICBpZiAobyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiB7W2tdOiB2fVxuICBpZiAoayBpbiBvICYmIFIuZXF1YWxzKHYsIG9ba10pKVxuICAgIHJldHVybiBvXG4gIGNvbnN0IHIgPSB7W2tdOiB2fVxuICBmb3IgKGNvbnN0IHAgaW4gbylcbiAgICBpZiAocCAhPT0gaylcbiAgICAgIHJbcF0gPSBvW3BdXG4gIHJldHVybiByXG59XG5cbi8vXG5cbmNvbnN0IGRyb3BwZWQgPSB4cyA9PiBPYmplY3Qua2V5cyh4cykubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogeHNcblxuXG4vL1xuXG5jb25zdCBjb25zZXJ2ZSA9IGYgPT4gKG4wLCBvKSA9PiB7XG4gIGNvbnN0IG4gPSBmKG4wLCBvKVxuICByZXR1cm4gUi5lcXVhbHMobiwgbykgPyBvIDogblxufVxuXG4vL1xuXG5jb25zdCBsaWZ0ID0gbCA9PiB7XG4gIHN3aXRjaCAodHlwZW9mIGwpIHtcbiAgY2FzZSBcInN0cmluZ1wiOiByZXR1cm4gTC5wcm9wKGwpXG4gIGNhc2UgXCJudW1iZXJcIjogcmV0dXJuIEwuaW5kZXgobClcbiAgZGVmYXVsdDogICAgICAgcmV0dXJuIGxcbiAgfVxufVxuXG5jb25zdCBMID0gKC4uLmxzKSA9PiBscy5sZW5ndGggPT09IDEgPyBsaWZ0KGxzWzBdKSA6IFIuY29tcG9zZSguLi5scy5tYXAobGlmdCkpXG5cbkwubGVucyA9IFIubGVuc1xuTC5vdmVyID0gUi5vdmVyXG5MLnNldCAgPSBSLnNldFxuTC52aWV3ID0gUi52aWV3XG5cbkwucmVwbGFjZSA9IChpbm4sIG91dCkgPT5cbiAgUi5sZW5zKHggPT4gUi5lcXVhbHMoeCwgaW5uKSA/IG91dCA6IHgsXG4gICAgICAgICBjb25zZXJ2ZSh5ID0+IFIuZXF1YWxzKHksIG91dCkgPyBpbm4gOiB5KSlcblxuTC5wcm9wID0gayA9PlxuICBSLmxlbnMobyA9PiBvICYmIG9ba10sXG4gICAgICAgICAodiwgbykgPT4gdiA9PT0gdW5kZWZpbmVkID8gZGVsZXRlS2V5KGssIG8pIDogc2V0S2V5KGssIHYsIG8pKVxuXG5MLmZpbmQgPSBwcmVkaWNhdGUgPT4gUi5sZW5zKHhzID0+IHhzICYmIHhzLmZpbmQocHJlZGljYXRlKSwgKHgsIHhzKSA9PiB7XG4gIGlmICh4ID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoeHMgPT09IHVuZGVmaW5lZClcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICBjb25zdCBpID0geHMuZmluZEluZGV4KHByZWRpY2F0ZSlcbiAgICBpZiAoaSA8IDApXG4gICAgICByZXR1cm4geHNcbiAgICByZXR1cm4gZHJvcHBlZCh4cy5zbGljZSgwLCBpKS5jb25jYXQoeHMuc2xpY2UoaSsxKSkpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHhzID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gW3hdXG4gICAgY29uc3QgaSA9IHhzLmZpbmRJbmRleChwcmVkaWNhdGUpXG4gICAgaWYgKGkgPCAwKVxuICAgICAgcmV0dXJuIHhzLmNvbmNhdChbeF0pXG4gICAgaWYgKFIuZXF1YWxzKHgsIHhzW2ldKSlcbiAgICAgIHJldHVybiB4c1xuICAgIHJldHVybiB4cy5zbGljZSgwLCBpKS5jb25jYXQoW3hdLCB4cy5zbGljZShpKzEpKVxuICB9XG59KVxuXG5MLmluZGV4ID0gaSA9PiBSLmxlbnMoeHMgPT4geHMgJiYgeHNbaV0sICh4LCB4cykgPT4ge1xuICBpZiAoeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHhzID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKGkgPCB4cy5sZW5ndGgpXG4gICAgICByZXR1cm4gZHJvcHBlZCh4cy5zbGljZSgwLCBpKS5jb25jYXQoeHMuc2xpY2UoaSsxKSkpXG4gICAgcmV0dXJuIHhzXG4gIH0gZWxzZSB7XG4gICAgaWYgKHhzID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gQXJyYXkoaSkuY29uY2F0KFt4XSlcbiAgICBpZiAoeHMubGVuZ3RoIDw9IGkpXG4gICAgICByZXR1cm4geHMuY29uY2F0KEFycmF5KGkgLSB4cy5sZW5ndGgpLCBbeF0pXG4gICAgaWYgKFIuZXF1YWxzKHgsIHhzW2ldKSlcbiAgICAgIHJldHVybiB4c1xuICAgIHJldHVybiB4cy5zbGljZSgwLCBpKS5jb25jYXQoW3hdLCB4cy5zbGljZShpKzEpKVxuICB9XG59KVxuXG5leHBvcnQgZGVmYXVsdCBMXG4iXX0=
{
"name": "partial.lenses",
"version": "0.1.1",
"version": "0.2.0",
"description": "Ramda compatible lenses",

@@ -5,0 +5,0 @@ "main": "lib/partial.lenses.js",

[![npm version](https://badge.fury.io/js/partial.lenses.svg)](http://badge.fury.io/js/partial.lenses)
This library provides a collection of Ramda compatible partial (dealing with
`undefined` results) lenses.
This library provides a collection of [Ramda](http://ramdajs.com/) compatible
partial (dealing with `undefined` results) lenses. The intention is to make
modification or editing of JSON data convenient and *compositional*.
## Motivation
Consider the following REPL session using Ramda 0.19.1:
```js
> R.set(R.lensPath(["x", "y"]), 1, {})
{ x: { y: 1 } }
> R.set(R.compose(R.lensProp("x"), R.lensProp("y")), 1, {})
TypeError: Cannot read property 'y' of undefined
> R.view(R.lensPath(["x", "y"]), {})
undefined
> R.view(R.compose(R.lensProp("x"), R.lensProp("y")), {})
TypeError: Cannot read property 'y' of undefined
> R.set(R.lensPath(["x", "y"]), undefined, {x: {y: 1}})
{ x: { y: undefined } }
> R.set(R.compose(R.lensProp("x"), R.lensProp("y")), undefined, {x: {y: 1}})
{ x: { y: undefined } }
```
One might assume that `R.lensPath([p1, ..., pN])` is equivalent to
`R.compose(R.lensProp(p1), ..., R.lensProp(pN))`, but that is not the case.
## Usage
The lenses and operations on lenses are accessed via the default import:
```js
import L from "partial.lenses"
```
## Operations on lenses
For convenience, you can access basic operations on lenses via the default
import `L`:
* `L.lens(get, set)` is the same as `R.lens(get, set)` (see [lens](http://ramdajs.com/0.19.0/docs/#lens)).
* `L.over(lens, x2x, s)` is the same as `R.over(lens, x2x, s)` (see [over](http://ramdajs.com/0.19.0/docs/#over)).
* `L.set(lens, x, s)` is the same as `R.set(lens, x, s)` (see [set](http://ramdajs.com/0.19.0/docs/#set)).
* `L.view(lens, s)` is the same as `R.view(lens, s)` (see [view](http://ramdajs.com/0.19.0/docs/#view)).
## Shorthand composition and lifting
The default import, `L`, is also a shorthand function for lens composition and
lifting. The semantics can be described as
```
L(l1, ..., lN) === R.compose(lift(l1), ..., lift(lN))
```
where
```js
const lift = l => {
switch (typeof l) {
case "string": return L.prop(l)
case "number": return L.index(l)
default: return l
}
}
```
## Lenses
### L.prop(string)
`L.prop(string)` is much like `R.lensProp(string)` (see
[lensProp](http://ramdajs.com/0.19.0/docs/#lensProp)), but composes as a partial
lens:
* When viewing an undefined property or an undefined object, the result is
undefined.
* When setting property to undefined, the property is removed from the result.
If the result would be an empty object, the whole result will be undefined.
Examples:
```js
> L.set(L("x", "y"), undefined, {x: {y: 1}})
undefined
> L.set(L("x", "y"), 2, {x: {y: 1}})
{ x: { y: 2 } }
> L.set(L("x", "y"), undefined, {x: {y: 1}, z: 3})
{ z: 3 }
> L.set(L("x", "y"), 2, {x: {y: 1}, z: 3})
{ x: { y: 2 }, z: 3 }
> L.view(L("x", "y"), undefined)
undefined
```
### L.index(integer)
`L.index(integer)` is like `R.lensIndex(integer)` (see
[lensIndex](http://ramdajs.com/0.19.0/docs/#lensIndex)), but composes as a
partial lens:
* When viewing an undefined array index or an undefined array, the result is
undefined.
* When setting an array index to undefined, the element is removed from the
resulting array, shifting all higher indices down by one. If the result would
be an array without indices (ignoring length), the whole result will be
undefined.
### L.find(predicate)
`L.find(predicate)` operates on arrays like `L.index`, but the index to be
viewed is determined by finding the first element from the input array that
matches the given unary predicate. When no matching element is found the effect
is same as with `R.index` when the index set to the length of the array.
### L.replace(inn, out)
`L.replace(inn, out)`, when viewed, replaces the value `inn` with `out` and vice
versa when set. Values are compared using `R.equals` (see
[equals](http://ramdajs.com/0.19.0/docs/#equals)).
Examples:
```js
> L.view(L(L.replace(undefined, {type: "title", text: ""}), "text"), undefined)
""
> L.set(L(L.replace(undefined, {type: "title", text: ""}), "text"), "", {type: "title", text: "not empty"})
undefined
```

@@ -8,6 +8,10 @@ import R from "ramda"

return o
const r = {}
for (const p in o)
if (p !== k)
let r
for (const p in o) {
if (p !== k) {
if (undefined === r)
r = {}
r[p] = o[p]
}
}
return r

@@ -30,2 +34,7 @@ }

const dropped = xs => Object.keys(xs).length === 0 ? undefined : xs
//
const conserve = f => (n0, o) => {

@@ -68,3 +77,3 @@ const n = f(n0, o)

return xs
return xs.slice(0, i).concat(xs.slice(i+1))
return dropped(xs.slice(0, i).concat(xs.slice(i+1)))
} else {

@@ -87,3 +96,3 @@ if (xs === undefined)

if (i < xs.length)
return xs.slice(0, i).concat(xs.slice(i+1))
return dropped(xs.slice(0, i).concat(xs.slice(i+1)))
return xs

@@ -90,0 +99,0 @@ } else {

@@ -22,2 +22,4 @@ import R from "ramda"

describe('L.find', () => {
testEq('L.set(L.find(R.equals(2)), undefined, [,,2])', () =>
L.set(L.find(R.equals(2)), undefined, [,,2]), undefined)
testEq('L.set(L.find(R.equals(2)), undefined, [1, 2, 3])', () =>

@@ -40,2 +42,4 @@ L.set(L.find(R.equals(2)), undefined, [1, 2, 3]), [1, 3])

describe('L.index', () => {
testEq('L.set(L(1), undefined, [,,])', () =>
L.set(L(1), undefined, [,,]), undefined)
testEq('L.set(L(1), 4, [1, 2, 3])', () =>

@@ -62,2 +66,4 @@ L.set(L(1), 4, [1, 2, 3]), [1, 4, 3])

describe('L.prop', () => {
testEq('L.set(L("x"), undefined, {x: 1})', () =>
L.set(L("x"), undefined, {x: 1}), undefined)
testEq('L.set(L("y"), undefined, {x: 1, y: 2})', () =>

@@ -64,0 +70,0 @@ L.set(L("y"), undefined, {x: 1, y: 2}), {x: 1})

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