Socket
Socket
Sign inDemoInstall

object-scan

Package Overview
Dependencies
Maintainers
1
Versions
200
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

object-scan - npm Package Compare versions

Comparing version 1.2.2 to 1.3.0

107

lib/index.js

@@ -0,1 +1,3 @@

const uniq = require("lodash.uniq");
const parser = require("./util/parser");

@@ -5,57 +7,74 @@

module.exports = (needles, {
filterFn = undefined,
breakFn = undefined,
joined = true
} = {}) => {
const search = needles.map(parser);
const compare = (wildcard, input, arr, ctx) => {
if (arr && !wildcard.match(/^\[.*]$/)) {
return false;
}
const find = (haystack, checks, pathIn = []) => {
const result = [];
if (ctx.regexCache[wildcard] === undefined) {
ctx.regexCache[wildcard] = new RegExp(`^${wildcard.split(/(?<!\\)(?:\\\\)*\*/).map(p => p.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')).join(".*")}$`);
}
if (checks.some(check => check.length === 0)) {
if (filterFn === undefined || filterFn(pathIn.map(escape).join("."), haystack)) {
result.push(joined ? pathIn.reduce((p, c) => {
const isNumber = typeof c === "number";
return `${p}${p === "" || isNumber ? "" : "."}${isNumber ? `[${c}]` : c}`;
}, "") : pathIn);
}
}
return input.match(ctx.regexCache[wildcard]);
};
if (breakFn === undefined || !breakFn(pathIn.map(escape).join("."), haystack)) {
if (haystack instanceof Object) {
if (Array.isArray(haystack)) {
for (let i = 0; i < haystack.length; i += 1) {
checks.filter(check => check.length !== 0).forEach(check => {
const pathOut = [].concat(...pathIn).concat(i);
const matches = (wildcard, input, arr, ctx) => Array.isArray(wildcard) ? wildcard.some(wc => matches(wc, input, arr, ctx)) : wildcard === (arr ? "[*]" : "*") || compare(wildcard, input, arr, ctx);
if (check[0] === "**") {
result.push(...find(haystack[i], [check, check.slice(1)], pathOut));
} else if (check[0] === "[*]" || check[0] === `[${i}]` || check[0] instanceof Array && check[0].indexOf(`[${i}]`) !== -1) {
result.push(...find(haystack[i], [check.slice(1)], pathOut));
}
});
}
} else {
Object.keys(haystack).forEach(key => {
checks.filter(check => check.length !== 0).forEach(check => {
const escapedKey = escape(key);
const pathOut = [].concat(...pathIn).concat(key);
const find = (haystack, checks, pathIn, ctx) => {
const result = [];
if (check[0] === "**") {
result.push(...find(haystack[key], [check, check.slice(1)], pathOut));
} else if (check[0] === "*" || check[0] === escapedKey || check[0] instanceof Array && check[0].indexOf(escapedKey) !== -1) {
result.push(...find(haystack[key], [check.slice(1)], pathOut));
}
});
if (checks.some(check => check.length === 0)) {
if (ctx.filterFn === undefined || ctx.filterFn(pathIn.map(escape).join("."), haystack)) {
result.push(ctx.joined ? pathIn.reduce((p, c) => {
const isNumber = typeof c === "number";
return `${p}${p === "" || isNumber ? "" : "."}${isNumber ? `[${c}]` : c}`;
}, "") : pathIn);
}
}
if (ctx.breakFn === undefined || !ctx.breakFn(pathIn.map(escape).join("."), haystack)) {
if (typeof haystack === "object") {
if (Array.isArray(haystack)) {
for (let i = 0; i < haystack.length; i += 1) {
const pathOut = pathIn.concat(i);
checks.filter(check => check.length !== 0).forEach(check => {
if (check[0] === "**") {
result.push(...find(haystack[i], [check, check.slice(1)], pathOut, ctx));
} else if (matches(check[0], `[${i}]`, true, ctx)) {
result.push(...find(haystack[i], [check.slice(1)], pathOut, ctx));
}
});
}
} else {
Object.entries(haystack).forEach(([key, value]) => {
const escapedKey = escape(key);
const pathOut = pathIn.concat(key);
checks.filter(check => check.length !== 0).forEach(check => {
if (check[0] === "**") {
result.push(...find(value, [check, check.slice(1)], pathOut, ctx));
} else if (matches(check[0], escapedKey, false, ctx)) {
result.push(...find(value, [check.slice(1)], pathOut, ctx));
}
});
});
}
}
}
return result;
};
return result;
};
return haystack => find(haystack, search);
module.exports = (needles, {
filterFn = undefined,
breakFn = undefined,
joined = true
} = {}) => {
const search = uniq(needles).map(parser);
const regexCache = {};
return haystack => uniq(find(haystack, search, [], {
filterFn,
breakFn,
joined,
regexCache
}));
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJwYXJzZXIiLCJyZXF1aXJlIiwiZXNjYXBlIiwiaW5wdXQiLCJTdHJpbmciLCJyZXBsYWNlIiwibW9kdWxlIiwiZXhwb3J0cyIsIm5lZWRsZXMiLCJmaWx0ZXJGbiIsInVuZGVmaW5lZCIsImJyZWFrRm4iLCJqb2luZWQiLCJzZWFyY2giLCJtYXAiLCJmaW5kIiwiaGF5c3RhY2siLCJjaGVja3MiLCJwYXRoSW4iLCJyZXN1bHQiLCJzb21lIiwiY2hlY2siLCJsZW5ndGgiLCJqb2luIiwicHVzaCIsInJlZHVjZSIsInAiLCJjIiwiaXNOdW1iZXIiLCJPYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJpIiwiZmlsdGVyIiwiZm9yRWFjaCIsInBhdGhPdXQiLCJjb25jYXQiLCJzbGljZSIsImluZGV4T2YiLCJrZXlzIiwia2V5IiwiZXNjYXBlZEtleSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsU0FBU0MsUUFBUSxlQUFSLENBQWY7O0FBRUEsTUFBTUMsU0FBU0MsU0FBU0MsT0FBT0QsS0FBUCxFQUFjRSxPQUFkLENBQXNCLGFBQXRCLEVBQXFDLE1BQXJDLENBQXhCOztBQUVBQyxPQUFPQyxPQUFQLEdBQWlCLENBQUNDLE9BQUQsRUFBVTtBQUN6QkMsYUFBV0MsU0FEYztBQUV6QkMsWUFBVUQsU0FGZTtBQUd6QkUsV0FBUztBQUhnQixJQUl2QixFQUphLEtBSU47QUFDVCxRQUFNQyxTQUFTTCxRQUFRTSxHQUFSLENBQVlkLE1BQVosQ0FBZjs7QUFFQSxRQUFNZSxPQUFPLENBQUNDLFFBQUQsRUFBV0MsTUFBWCxFQUFtQkMsU0FBUyxFQUE1QixLQUFtQztBQUM5QyxVQUFNQyxTQUFTLEVBQWY7O0FBQ0EsUUFBSUYsT0FBT0csSUFBUCxDQUFZQyxTQUFTQSxNQUFNQyxNQUFOLEtBQWlCLENBQXRDLENBQUosRUFBOEM7QUFDNUMsVUFBSWIsYUFBYUMsU0FBYixJQUEwQkQsU0FBU1MsT0FBT0osR0FBUCxDQUFXWixN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S0FBcEIsSUFBNkJULE1BQU0sQ0FBTixFQUFTaUIsT0FBVCxDQUFpQkcsVUFBakIsTUFBaUMsQ0FBQyxDQUg5RCxFQUlMO0FBQ0F0Qix1QkFBT0ssSUFBUCxDQUFZLEdBQUdULEtBQUtDLFNBQVN3QixHQUFULENBQUwsRUFBb0IsQ0FBQ25CLE1BQU1nQixLQUFOLENBQVksQ0FBWixDQUFELENBQXBCLEVBQXNDRixPQUF0QyxDQUFmO0FBQ0Q7QUFDRixhQWRIO0FBZUQsV0FoQkQ7QUFpQkQ7QUFDRjtBQUNGOztBQUNELFdBQU9oQixNQUFQO0FBQ0QsR0FuREQ7O0FBcURBLFNBQU9ILFlBQVlELEtBQUtDLFFBQUwsRUFBZUgsTUFBZixDQUFuQjtBQUNELENBN0REIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcGFyc2VyID0gcmVxdWlyZShcIi4vdXRpbC9wYXJzZXJcIik7XG5cbmNvbnN0IGVzY2FwZSA9IGlucHV0ID0+IFN0cmluZyhpbnB1dCkucmVwbGFjZSgvWywuKltcXF17fV0vZywgXCJcXFxcJCZcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gKG5lZWRsZXMsIHtcbiAgZmlsdGVyRm4gPSB1bmRlZmluZWQsXG4gIGJyZWFrRm4gPSB1bmRlZmluZWQsXG4gIGpvaW5lZCA9IHRydWVcbn0gPSB7fSkgPT4ge1xuICBjb25zdCBzZWFyY2ggPSBuZWVkbGVzLm1hcChwYXJzZXIpO1xuXG4gIGNvbnN0IGZpbmQgPSAoaGF5c3RhY2ssIGNoZWNrcywgcGF0aEluID0gW10pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAoY2hlY2tzLnNvbWUoY2hlY2sgPT4gY2hlY2subGVuZ3RoID09PSAwKSkge1xuICAgICAgaWYgKGZpbHRlckZuID09PSB1bmRlZmluZWQgfHwgZmlsdGVyRm4ocGF0aEluLm1hcChlc2NhcGUpLmpvaW4oXCIuXCIpLCBoYXlzdGFjaykpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goam9pbmVkID8gcGF0aEluLnJlZHVjZSgocCwgYykgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzTnVtYmVyID0gdHlwZW9mIGMgPT09IFwibnVtYmVyXCI7XG4gICAgICAgICAgcmV0dXJuIGAke3B9JHtwID09PSBcIlwiIHx8IGlzTnVtYmVyID8gXCJcIiA6IFwiLlwifSR7aXNOdW1iZXIgPyBgWyR7Y31dYCA6IGN9YDtcbiAgICAgICAgfSwgXCJcIikgOiBwYXRoSW4pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYnJlYWtGbiA9PT0gdW5kZWZpbmVkIHx8ICFicmVha0ZuKHBhdGhJbi5tYXAoZXNjYXBlKS5qb2luKFwiLlwiKSwgaGF5c3RhY2spKSB7XG4gICAgICBpZiAoaGF5c3RhY2sgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaGF5c3RhY2spKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoYXlzdGFjay5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgY2hlY2tzXG4gICAgICAgICAgICAgIC5maWx0ZXIoY2hlY2sgPT4gY2hlY2subGVuZ3RoICE9PSAwKVxuICAgICAgICAgICAgICAuZm9yRWFjaCgoY2hlY2spID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoT3V0ID0gW10uY29uY2F0KC4uLnBhdGhJbikuY29uY2F0KGkpO1xuICAgICAgICAgICAgICAgIGlmIChjaGVja1swXSA9PT0gXCIqKlwiKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5maW5kKGhheXN0YWNrW2ldLCBbY2hlY2ssIGNoZWNrLnNsaWNlKDEpXSwgcGF0aE91dCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICBjaGVja1swXSA9PT0gXCJbKl1cIlxuICAgICAgICAgICAgICAgICAgfHwgY2hlY2tbMF0gPT09IGBbJHtpfV1gXG4gICAgICAgICAgICAgICAgICB8fCAoY2hlY2tbMF0gaW5zdGFuY2VvZiBBcnJheSAmJiBjaGVja1swXS5pbmRleE9mKGBbJHtpfV1gKSAhPT0gLTEpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5maW5kKGhheXN0YWNrW2ldLCBbY2hlY2suc2xpY2UoMSldLCBwYXRoT3V0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMoaGF5c3RhY2spLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY2hlY2tzXG4gICAgICAgICAgICAgIC5maWx0ZXIoY2hlY2sgPT4gY2hlY2subGVuZ3RoICE9PSAwKVxuICAgICAgICAgICAgICAuZm9yRWFjaCgoY2hlY2spID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlc2NhcGVkS2V5ID0gZXNjYXBlKGtleSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aE91dCA9IFtdLmNvbmNhdCguLi5wYXRoSW4pLmNvbmNhdChrZXkpO1xuICAgICAgICAgICAgICAgIGlmIChjaGVja1swXSA9PT0gXCIqKlwiKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5maW5kKGhheXN0YWNrW2tleV0sIFtjaGVjaywgY2hlY2suc2xpY2UoMSldLCBwYXRoT3V0KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgIGNoZWNrWzBdID09PSBcIipcIlxuICAgICAgICAgICAgICAgICAgfHwgY2hlY2tbMF0gPT09IGVzY2FwZWRLZXlcbiAgICAgICAgICAgICAgICAgIHx8IChjaGVja1swXSBpbnN0YW5jZW9mIEFycmF5ICYmIGNoZWNrWzBdLmluZGV4T2YoZXNjYXBlZEtleSkgIT09IC0xKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uZmluZChoYXlzdGFja1trZXldLCBbY2hlY2suc2xpY2UoMSldLCBwYXRoT3V0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHJldHVybiBoYXlzdGFjayA9PiBmaW5kKGhheXN0YWNrLCBzZWFyY2gpO1xufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJ1bmlxIiwicmVxdWlyZSIsInBhcnNlciIsImVzY2FwZSIsImlucHV0IiwiU3RyaW5nIiwicmVwbGFjZSIsImNvbXBhcmUiLCJ3aWxkY2FyZCIsImFyciIsImN0eCIsIm1hdGNoIiwicmVnZXhDYWNoZSIsInVuZGVmaW5lZCIsIlJlZ0V4cCIsInNwbGl0IiwibWFwIiwicCIsImpvaW4iLCJtYXRjaGVzIiwiQXJyYXkiLCJpc0FycmF5Iiwic29tZSIsIndjIiwiZmluZCIsImhheXN0YWNrIiwiY2hlY2tzIiwicGF0aEluIiwicmVzdWx0IiwiY2hlY2siLCJsZW5ndGgiLCJmaWx0ZXJGbiIsInB1c2giLCJqb2luZWQiLCJyZWR1Y2UiLCJjIiwiaXNOdW1iZXIiLCJicmVha0ZuIiwiaSIsInBhdGhPdXQiLCJjb25jYXQiLCJmaWx0ZXIiLCJmb3JFYWNoIiwic2xpY2UiLCJPYmplY3QiLCJlbnRyaWVzIiwia2V5IiwidmFsdWUiLCJlc2NhcGVkS2V5IiwibW9kdWxlIiwiZXhwb3J0cyIsIm5lZWRsZXMiLCJzZWFyY2giXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU9DLFFBQVEsYUFBUixDQUFiOztBQUNBLE1BQU1DLFNBQVNELFFBQVEsZUFBUixDQUFmOztBQUVBLE1BQU1FLFNBQVNDLFNBQVNDLE9BQU9ELEtBQVAsRUFBY0UsT0FBZCxDQUFzQixhQUF0QixFQUFxQyxNQUFyQyxDQUF4Qjs7QUFFQSxNQUFNQyxVQUFVLENBQUNDLFFBQUQsRUFBV0osS0FBWCxFQUFrQkssR0FBbEIsRUFBdUJDLEdBQXZCLEtBQStCO0FBQzdDLE1BQUlELE9BQU8sQ0FBQ0QsU0FBU0csS0FBVCxDQUFlLFNBQWYsQ0FBWixFQUF1QztBQUNyQyxXQUFPLEtBQVA7QUFDRDs7QUFDRCxNQUFJRCxJQUFJRSxVQUFKLENBQWVKLFFBQWYsTUFBNkJLLFNBQWpDLEVBQTRDO0FBQzFDSCxRQUFJRSxVQUFKLENBQWVKLFFBQWYsSUFBMkIs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cUIsT0FBT0MsT0FBUCxHQUFpQixDQUFDQyxPQUFELEVBQVU7QUFDekJwQixhQUFXbEIsU0FEYztBQUV6QndCLFlBQVV4QixTQUZlO0FBR3pCb0IsV0FBUztBQUhnQixJQUl2QixFQUphLEtBSU47QUFDVCxRQUFNbUIsU0FBU3BELEtBQUttRCxPQUFMLEVBQWNuQyxHQUFkLENBQWtCZCxNQUFsQixDQUFmO0FBQ0EsUUFBTVUsYUFBYSxFQUFuQjtBQUVBLFNBQU9hLFlBQVl6QixLQUFLd0IsS0FBS0MsUUFBTCxFQUFlMkIsTUFBZixFQUF1QixFQUF2QixFQUEyQjtBQUNqRHJCLFlBRGlEO0FBQ3ZDTSxXQUR1QztBQUM5QkosVUFEOEI7QUFDdEJyQjtBQURzQixHQUEzQixDQUFMLENBQW5CO0FBR0QsQ0FYRCIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHVuaXEgPSByZXF1aXJlKFwibG9kYXNoLnVuaXFcIik7XG5jb25zdCBwYXJzZXIgPSByZXF1aXJlKFwiLi91dGlsL3BhcnNlclwiKTtcblxuY29uc3QgZXNjYXBlID0gaW5wdXQgPT4gU3RyaW5nKGlucHV0KS5yZXBsYWNlKC9bLC4qW1xcXXt9XS9nLCBcIlxcXFwkJlwiKTtcblxuY29uc3QgY29tcGFyZSA9ICh3aWxkY2FyZCwgaW5wdXQsIGFyciwgY3R4KSA9PiB7XG4gIGlmIChhcnIgJiYgIXdpbGRjYXJkLm1hdGNoKC9eXFxbLipdJC8pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChjdHgucmVnZXhDYWNoZVt3aWxkY2FyZF0gPT09IHVuZGVmaW5lZCkge1xuICAgIGN0eC5yZWdleENhY2hlW3dpbGRjYXJkXSA9IG5ldyBSZWdFeHAoYF4ke3dpbGRjYXJkXG4gICAgICAuc3BsaXQoLyg/PCFcXFxcKSg/OlxcXFxcXFxcKSpcXCovKVxuICAgICAgLm1hcChwID0+IHAucmVwbGFjZSgvW3xcXFxce30oKVtcXF1eJCsqPy5dL2csICdcXFxcJCYnKSlcbiAgICAgIC5qb2luKFwiLipcIil9JGApO1xuICB9XG4gIHJldHVybiBpbnB1dC5tYXRjaChjdHgucmVnZXhDYWNoZVt3aWxkY2FyZF0pO1xufTtcblxuY29uc3QgbWF0Y2hlcyA9ICh3aWxkY2FyZCwgaW5wdXQsIGFyciwgY3R4KSA9PiAoQXJyYXkuaXNBcnJheSh3aWxkY2FyZClcbiAgPyB3aWxkY2FyZC5zb21lKHdjID0+IG1hdGNoZXMod2MsIGlucHV0LCBhcnIsIGN0eCkpXG4gIDogKHdpbGRjYXJkID09PSAoYXJyID8gXCJbKl1cIiA6IFwiKlwiKSB8fCBjb21wYXJlKHdpbGRjYXJkLCBpbnB1dCwgYXJyLCBjdHgpKSk7XG5cbmNvbnN0IGZpbmQgPSAoaGF5c3RhY2ssIGNoZWNrcywgcGF0aEluLCBjdHgpID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGlmIChjaGVja3Muc29tZShjaGVjayA9PiBjaGVjay5sZW5ndGggPT09IDApKSB7XG4gICAgaWYgKGN0eC5maWx0ZXJGbiA9PT0gdW5kZWZpbmVkIHx8IGN0eC5maWx0ZXJGbihwYXRoSW4ubWFwKGVzY2FwZSkuam9pbihcIi5cIiksIGhheXN0YWNrKSkge1xuICAgICAgcmVzdWx0LnB1c2goY3R4LmpvaW5lZCA/IHBhdGhJbi5yZWR1Y2UoKHAsIGMpID0+IHtcbiAgICAgICAgY29uc3QgaXNOdW1iZXIgPSB0eXBlb2YgYyA9PT0gXCJudW1iZXJcIjtcbiAgICAgICAgcmV0dXJuIGAke3B9JHtwID09PSBcIlwiIHx8IGlzTnVtYmVyID8gXCJcIiA6IFwiLlwifSR7aXNOdW1iZXIgPyBgWyR7Y31dYCA6IGN9YDtcbiAgICAgIH0sIFwiXCIpIDogcGF0aEluKTtcbiAgICB9XG4gIH1cbiAgaWYgKGN0eC5icmVha0ZuID09PSB1bmRlZmluZWQgfHwgIWN0eC5icmVha0ZuKHBhdGhJbi5tYXAoZXNjYXBlKS5qb2luKFwiLlwiKSwgaGF5c3RhY2spKSB7XG4gICAgaWYgKHR5cGVvZiBoYXlzdGFjayA9PT0gXCJvYmplY3RcIikge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaGF5c3RhY2spKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGF5c3RhY2subGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICBjb25zdCBwYXRoT3V0ID0gcGF0aEluLmNvbmNhdChpKTtcbiAgICAgICAgICBjaGVja3NcbiAgICAgICAgICAgIC5maWx0ZXIoY2hlY2sgPT4gY2hlY2subGVuZ3RoICE9PSAwKVxuICAgICAgICAgICAgLmZvckVhY2goKGNoZWNrKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChjaGVja1swXSA9PT0gXCIqKlwiKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uZmluZChoYXlzdGFja1tpXSwgW2NoZWNrLCBjaGVjay5zbGljZSgxKV0sIHBhdGhPdXQsIGN0eCkpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoZXMoY2hlY2tbMF0sIGBbJHtpfV1gLCB0cnVlLCBjdHgpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uZmluZChoYXlzdGFja1tpXSwgW2NoZWNrLnNsaWNlKDEpXSwgcGF0aE91dCwgY3R4KSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3QuZW50cmllcyhoYXlzdGFjaykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXNjYXBlZEtleSA9IGVzY2FwZShrZXkpO1xuICAgICAgICAgIGNvbnN0IHBhdGhPdXQgPSBwYXRoSW4uY29uY2F0KGtleSk7XG4gICAgICAgICAgY2hlY2tzXG4gICAgICAgICAgICAuZmlsdGVyKGNoZWNrID0+IGNoZWNrLmxlbmd0aCAhPT0gMClcbiAgICAgICAgICAgIC5mb3JFYWNoKChjaGVjaykgPT4ge1xuICAgICAgICAgICAgICBpZiAoY2hlY2tbMF0gPT09IFwiKipcIikge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmZpbmQodmFsdWUsIFtjaGVjaywgY2hlY2suc2xpY2UoMSldLCBwYXRoT3V0LCBjdHgpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaGVzKGNoZWNrWzBdLCBlc2NhcGVkS2V5LCBmYWxzZSwgY3R4KSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmZpbmQodmFsdWUsIFtjaGVjay5zbGljZSgxKV0sIHBhdGhPdXQsIGN0eCkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IChuZWVkbGVzLCB7XG4gIGZpbHRlckZuID0gdW5kZWZpbmVkLFxuICBicmVha0ZuID0gdW5kZWZpbmVkLFxuICBqb2luZWQgPSB0cnVlXG59ID0ge30pID0+IHtcbiAgY29uc3Qgc2VhcmNoID0gdW5pcShuZWVkbGVzKS5tYXAocGFyc2VyKTtcbiAgY29uc3QgcmVnZXhDYWNoZSA9IHt9O1xuXG4gIHJldHVybiBoYXlzdGFjayA9PiB1bmlxKGZpbmQoaGF5c3RhY2ssIHNlYXJjaCwgW10sIHtcbiAgICBmaWx0ZXJGbiwgYnJlYWtGbiwgam9pbmVkLCByZWdleENhY2hlXG4gIH0pKTtcbn07XG4iXX0=
{
"name": "object-scan",
"version": "1.2.2",
"version": "1.3.0",
"description": "Find Keys using Wildcard matching and optional value function.",

@@ -28,3 +28,4 @@ "main": "lib/index.js",

"scan",
"find"
"find",
"filter"
],

@@ -39,3 +40,3 @@ "author": "Lukas Siemon",

"babel-cli": "7.0.0-beta.3",
"babel-eslint": "8.2.6",
"babel-eslint": "9.0.0",
"babel-plugin-transform-flow-comments": "7.0.0-beta.3",

@@ -46,5 +47,5 @@ "babel-preset-flow": "7.0.0-beta.3",

"coveralls": "3.0.2",
"js-gardener": "1.30.2",
"nyc": "12.0.2",
"semantic-release": "15.8.1"
"js-gardener": "1.31.4",
"nyc": "13.0.1",
"semantic-release": "15.9.14"
},

@@ -94,4 +95,6 @@ "nyc": {

],
"dependencies": {},
"dependencies": {
"lodash.uniq": "4.5.0"
},
"peerDependencies": {}
}

@@ -5,2 +5,3 @@ # Object-Scan

[![Test Coverage](https://img.shields.io/coveralls/simlu/object-scan/master.svg)](https://coveralls.io/github/simlu/object-scan?branch=master)
[![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=simlu/object-scan)](https://dependabot.com)
[![Dependencies](https://david-dm.org/simlu/object-scan/status.svg)](https://david-dm.org/simlu/object-scan)

@@ -31,2 +32,12 @@ [![NPM](https://img.shields.io/npm/v/object-scan.svg)](https://www.npmjs.com/package/object-scan)

### Features
- Object and array matching with e.g. `key.path` and `[1]`
- Key and index wildcard matching with `*` and `[*]`
- Partial key and index wildcard matching, e.g. `mark*` or `[1*]`
- Infinite nested matches with `**`
- Simple or-clause for key and index with `{a,b}` and `[{0,1}]`
- Full support for escaping
- Lots of tests to ensure correctness
### Options

@@ -33,0 +44,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