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

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.1.6 to 1.2.0

60

lib/index.js
const parser = require("./util/parser");
module.exports = (needles, valueFn = undefined, joined = true) => {
const escape = input => String(input).replace(/[,.*[\]{}]/g, "\\$&");
module.exports = (needles, {
filterFn = undefined,
breakFn = undefined,
joined = true
} = {}) => {
const search = needles.map(parser);

@@ -10,3 +16,3 @@

if (checks.some(check => check.length === 0)) {
if (valueFn === undefined || valueFn(haystack)) {
if (filterFn === undefined || filterFn(pathIn.map(escape).join("."), haystack)) {
result.push(joined ? pathIn.reduce((p, c) => {

@@ -19,28 +25,30 @@ const isNumber = typeof c === "number";

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);
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);
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));
}
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);
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));
}
});
});
}
} else {
Object.keys(haystack).forEach(key => {
checks.filter(check => check.length !== 0).forEach(check => {
const escapedKey = key.replace(/[,.*[\]{}]/g, "\\$&");
const pathOut = [].concat(...pathIn).concat(key);
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));
}
});
});
}

@@ -54,2 +62,2 @@ }

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJwYXJzZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsIm5lZWRsZXMiLCJ2YWx1ZUZuIiwidW5kZWZpbmVkIiwiam9pbmVkIiwic2VhcmNoIiwibWFwIiwiZmluZCIsImhheXN0YWNrIiwiY2hlY2tzIiwicGF0aEluIiwicmVzdWx0Iiwic29tZSIsImNoZWNrIiwibGVuZ3RoIiwicHVzaCIsInJlZHVjZSIsInAiLCJjIiwiaXNOdW1iZXIiLCJPYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJpIiwiZmlsdGVyIiwiZm9yRWFjaCIsInBhdGhPdXQiLCJjb25jYXQiLCJzbGljZSIsImluZGV4T2YiLCJrZXlzIiwia2V5IiwiZXNjYXBlZEtleSIsInJlcGxhY2UiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLFNBQVNDLFFBQVEsZUFBUixDQUFmOztBQUVBQyxPQUFPQyxPQUFQLEdBQWlCLENBQUNDLE9BQUQsRUFBVUMsVUFBVUMsU0FBcEIsRUFBK0JDLFNBQVMsSUFBeEMsS0FBaUQ7QUFDaEUsUUFBTUMsU0FBU0osUUFBUUssR0FBUixDQUFZVCxNQUFaLENBQWY7O0FBRUEsUUFBTVUsT0FBTyxDQUFDQyxRQUFELEVBQVdDLE1BQVgsRUFBbUJDLFNBQVMsRUFBNUIsS0FBbUM7QUFDOUMsVUFBTUMsU0FBUyxFQUFmOztBQUNBLFFBQUlGLE9BQU9HLElBQVAsQ0FBWUMsU0FBU0EsTUFBTUMsTUFBTixLQUFpQixDQUF0QyxDQUFKLEVBQThDO0FBQzVDLFVBQUlaLFlBQVlDLFNBQVosSUFBeUJELFFBQVFNLFFBQVIsQ0FBN0IsRUFBZ0Q7QUFDOUNHLGVBQU9JLElBQVAsQ0FBWVgsU0FBU00sT0FBT00sTUFBUCxDQUFjLENBQUNDLENBQUQsRUFBSUMsQ0FBSixLQUFVO0FBQzNDLGdCQUFNQyxXQUFXLE9BQU9ELENBQVAsS0FBYSxRQUE5QjtBQUNBLGlCQUFRLEdBQUVELENBQUUsR0FBRUEsTUFBTSxFQUFOLElB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LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcGFyc2VyID0gcmVxdWlyZShcIi4vdXRpbC9wYXJzZXJcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gKG5lZWRsZXMsIHZhbHVlRm4gPSB1bmRlZmluZWQsIGpvaW5lZCA9IHRydWUpID0+IHtcbiAgY29uc3Qgc2VhcmNoID0gbmVlZGxlcy5tYXAocGFyc2VyKTtcblxuICBjb25zdCBmaW5kID0gKGhheXN0YWNrLCBjaGVja3MsIHBhdGhJbiA9IFtdKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgaWYgKGNoZWNrcy5zb21lKGNoZWNrID0+IGNoZWNrLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIGlmICh2YWx1ZUZuID09PSB1bmRlZmluZWQgfHwgdmFsdWVGbihoYXlzdGFjaykpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goam9pbmVkID8gcGF0aEluLnJlZHVjZSgocCwgYykgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzTnVtYmVyID0gdHlwZW9mIGMgPT09IFwibnVtYmVyXCI7XG4gICAgICAgICAgcmV0dXJuIGAke3B9JHtwID09PSBcIlwiIHx8IGlzTnVtYmVyID8gXCJcIiA6IFwiLlwifSR7aXNOdW1iZXIgPyBgWyR7Y31dYCA6IGN9YDtcbiAgICAgICAgfSwgXCJcIikgOiBwYXRoSW4pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaGF5c3RhY2sgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGhheXN0YWNrKSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhheXN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgY2hlY2tzXG4gICAgICAgICAgICAuZmlsdGVyKGNoZWNrID0+IGNoZWNrLmxlbmd0aCAhPT0gMClcbiAgICAgICAgICAgIC5mb3JFYWNoKChjaGVjaykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBwYXRoT3V0ID0gW10uY29uY2F0KC4uLnBhdGhJbikuY29uY2F0KGkpO1xuICAgICAgICAgICAgICBpZiAoY2hlY2tbMF0gPT09IFwiKipcIikge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmZpbmQoaGF5c3RhY2tbaV0sIFtjaGVjaywgY2hlY2suc2xpY2UoMSldLCBwYXRoT3V0KSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgY2hlY2tbMF0gPT09IFwiWypdXCIgfHxcbiAgICAgICAgICAgICAgICBjaGVja1swXSA9PT0gYFske2l9XWAgfHxcbiAgICAgICAgICAgICAgICAoY2hlY2tbMF0gaW5zdGFuY2VvZiBBcnJheSAmJiBjaGVja1swXS5pbmRleE9mKGBbJHtpfV1gKSAhPT0gLTEpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmZpbmQoaGF5c3RhY2tbaV0sIFtjaGVjay5zbGljZSgxKV0sIHBhdGhPdXQpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGhheXN0YWNrKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICBjaGVja3NcbiAgICAgICAgICAgIC5maWx0ZXIoY2hlY2sgPT4gY2hlY2subGVuZ3RoICE9PSAwKVxuICAgICAgICAgICAgLmZvckVhY2goKGNoZWNrKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGVzY2FwZWRLZXkgPSBrZXkucmVwbGFjZSgvWywuKltcXF17fV0vZywgXCJcXFxcJCZcIik7XG4gICAgICAgICAgICAgIGNvbnN0IHBhdGhPdXQgPSBbXS5jb25jYXQoLi4ucGF0aEluKS5jb25jYXQoa2V5KTtcbiAgICAgICAgICAgICAgaWYgKGNoZWNrWzBdID09PSBcIioqXCIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5maW5kKGhheXN0YWNrW2tleV0sIFtjaGVjaywgY2hlY2suc2xpY2UoMSldLCBwYXRoT3V0KSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgY2hlY2tbMF0gPT09IFwiKlwiIHx8XG4gICAgICAgICAgICAgICAgY2hlY2tbMF0gPT09IGVzY2FwZWRLZXkgfHxcbiAgICAgICAgICAgICAgICAoY2hlY2tbMF0gaW5zdGFuY2VvZiBBcnJheSAmJiBjaGVja1swXS5pbmRleE9mKGVzY2FwZWRLZXkpICE9PSAtMSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uZmluZChoYXlzdGFja1trZXldLCBbY2hlY2suc2xpY2UoMSldLCBwYXRoT3V0KSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICByZXR1cm4gaGF5c3RhY2sgPT4gZmluZChoYXlzdGFjaywgc2VhcmNoKTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJwYXJzZXIiLCJyZXF1aXJlIiwiZXNjYXBlIiwiaW5wdXQiLCJTdHJpbmciLCJyZXBsYWNlIiwibW9kdWxlIiwiZXhwb3J0cyIsIm5lZWRsZXMiLCJmaWx0ZXJGbiIsInVuZGVmaW5lZCIsImJyZWFrRm4iLCJqb2luZWQiLCJzZWFyY2giLCJtYXAiLCJmaW5kIiwiaGF5c3RhY2siLCJjaGVja3MiLCJwYXRoSW4iLCJyZXN1bHQiLCJzb21lIiwiY2hlY2siLCJsZW5ndGgiLCJqb2luIiwicHVzaCIsInJlZHVjZSIsInAiLCJjIiwiaXNOdW1iZXIiLCJPYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJpIiwiZmlsdGVyIiwiZm9yRWFjaCIsInBhdGhPdXQiLCJjb25jYXQiLCJzbGljZSIsImluZGV4T2YiLCJrZXlzIiwia2V5IiwiZXNjYXBlZEtleSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsU0FBU0MsUUFBUSxlQUFSLENBQWY7O0FBRUEsTUFBTUMsU0FBU0MsU0FBU0MsT0FBT0QsS0FBUCxFQUFjRSxPQUFkLENBQXNCLGFBQXRCLEVBQXFDLE1BQXJDLENBQXhCOztBQUVBQyxPQUFPQyxPQUFQLEdBQWlCLENBQUNDLE9BQUQsRUFBVTtBQUN6QkMsYUFBV0MsU0FEYztBQUV6QkMsWUFBVUQsU0FGZTtBQUd6QkUsV0FBUztBQUhnQixJQUl2QixFQUphLEtBSU47QUFDVCxRQUFNQyxTQUFTTCxRQUFRTSxHQUFSLENBQVlkLE1BQVosQ0FBZjs7QUFFQSxRQUFNZSxPQUFPLENBQUNDLFFBQUQsRUFBV0MsTUFBWCxFQUFtQkMsU0FBUyxFQUE1QixLQUFtQztBQUM5QyxVQUFNQyxTQUFTLEVBQWY7O0FBQ0EsUUFBSUYsT0FBT0csSUFBUCxDQUFZQyxTQUFTQSxNQUFNQyxNQUFOLEtBQWlCLENBQXRDLENBQUosRUFBOEM7QUFDNUMsVUFBSWIsYUFBYUMsU0FBYixJQUEwQkQsU0FBU1MsT0FBT0osR0FBUCxDQUFXWixN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S0FBcEIsSUFBNkJULE1BQU0sQ0FBTixFQUFTaUIsT0FBVCxDQUFpQkcsVUFBakIsTUFBaUMsQ0FBQyxDQUg5RCxFQUlMO0FBQ0F0Qix1QkFBT0ssSUFBUCxDQUFZLEdBQUdULEtBQUtDLFNBQVN3QixHQUFULENBQUwsRUFBb0IsQ0FBQ25CLE1BQU1nQixLQUFOLENBQVksQ0FBWixDQUFELENBQXBCLEVBQXNDRixPQUF0QyxDQUFmO0FBQ0Q7QUFDRixhQWRIO0FBZUQsV0FoQkQ7QUFpQkQ7QUFDRjtBQUNGOztBQUNELFdBQU9oQixNQUFQO0FBQ0QsR0FuREQ7O0FBcURBLFNBQU9ILFlBQVlELEtBQUtDLFFBQUwsRUFBZUgsTUFBZixDQUFuQjtBQUNELENBN0REIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcGFyc2VyID0gcmVxdWlyZShcIi4vdXRpbC9wYXJzZXJcIik7XG5cbmNvbnN0IGVzY2FwZSA9IGlucHV0ID0+IFN0cmluZyhpbnB1dCkucmVwbGFjZSgvWywuKltcXF17fV0vZywgXCJcXFxcJCZcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gKG5lZWRsZXMsIHtcbiAgZmlsdGVyRm4gPSB1bmRlZmluZWQsXG4gIGJyZWFrRm4gPSB1bmRlZmluZWQsXG4gIGpvaW5lZCA9IHRydWVcbn0gPSB7fSkgPT4ge1xuICBjb25zdCBzZWFyY2ggPSBuZWVkbGVzLm1hcChwYXJzZXIpO1xuXG4gIGNvbnN0IGZpbmQgPSAoaGF5c3RhY2ssIGNoZWNrcywgcGF0aEluID0gW10pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAoY2hlY2tzLnNvbWUoY2hlY2sgPT4gY2hlY2subGVuZ3RoID09PSAwKSkge1xuICAgICAgaWYgKGZpbHRlckZuID09PSB1bmRlZmluZWQgfHwgZmlsdGVyRm4ocGF0aEluLm1hcChlc2NhcGUpLmpvaW4oXCIuXCIpLCBoYXlzdGFjaykpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goam9pbmVkID8gcGF0aEluLnJlZHVjZSgocCwgYykgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzTnVtYmVyID0gdHlwZW9mIGMgPT09IFwibnVtYmVyXCI7XG4gICAgICAgICAgcmV0dXJuIGAke3B9JHtwID09PSBcIlwiIHx8IGlzTnVtYmVyID8gXCJcIiA6IFwiLlwifSR7aXNOdW1iZXIgPyBgWyR7Y31dYCA6IGN9YDtcbiAgICAgICAgfSwgXCJcIikgOiBwYXRoSW4pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYnJlYWtGbiA9PT0gdW5kZWZpbmVkIHx8ICFicmVha0ZuKHBhdGhJbi5tYXAoZXNjYXBlKS5qb2luKFwiLlwiKSwgaGF5c3RhY2spKSB7XG4gICAgICBpZiAoaGF5c3RhY2sgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaGF5c3RhY2spKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoYXlzdGFjay5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgY2hlY2tzXG4gICAgICAgICAgICAgIC5maWx0ZXIoY2hlY2sgPT4gY2hlY2subGVuZ3RoICE9PSAwKVxuICAgICAgICAgICAgICAuZm9yRWFjaCgoY2hlY2spID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoT3V0ID0gW10uY29uY2F0KC4uLnBhdGhJbikuY29uY2F0KGkpO1xuICAgICAgICAgICAgICAgIGlmIChjaGVja1swXSA9PT0gXCIqKlwiKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5maW5kKGhheXN0YWNrW2ldLCBbY2hlY2ssIGNoZWNrLnNsaWNlKDEpXSwgcGF0aE91dCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICBjaGVja1swXSA9PT0gXCJbKl1cIlxuICAgICAgICAgICAgICAgICAgfHwgY2hlY2tbMF0gPT09IGBbJHtpfV1gXG4gICAgICAgICAgICAgICAgICB8fCAoY2hlY2tbMF0gaW5zdGFuY2VvZiBBcnJheSAmJiBjaGVja1swXS5pbmRleE9mKGBbJHtpfV1gKSAhPT0gLTEpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5maW5kKGhheXN0YWNrW2ldLCBbY2hlY2suc2xpY2UoMSldLCBwYXRoT3V0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMoaGF5c3RhY2spLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY2hlY2tzXG4gICAgICAgICAgICAgIC5maWx0ZXIoY2hlY2sgPT4gY2hlY2subGVuZ3RoICE9PSAwKVxuICAgICAgICAgICAgICAuZm9yRWFjaCgoY2hlY2spID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlc2NhcGVkS2V5ID0gZXNjYXBlKGtleSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aE91dCA9IFtdLmNvbmNhdCguLi5wYXRoSW4pLmNvbmNhdChrZXkpO1xuICAgICAgICAgICAgICAgIGlmIChjaGVja1swXSA9PT0gXCIqKlwiKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5maW5kKGhheXN0YWNrW2tleV0sIFtjaGVjaywgY2hlY2suc2xpY2UoMSldLCBwYXRoT3V0KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgIGNoZWNrWzBdID09PSBcIipcIlxuICAgICAgICAgICAgICAgICAgfHwgY2hlY2tbMF0gPT09IGVzY2FwZWRLZXlcbiAgICAgICAgICAgICAgICAgIHx8IChjaGVja1swXSBpbnN0YW5jZW9mIEFycmF5ICYmIGNoZWNrWzBdLmluZGV4T2YoZXNjYXBlZEtleSkgIT09IC0xKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uZmluZChoYXlzdGFja1trZXldLCBbY2hlY2suc2xpY2UoMSldLCBwYXRoT3V0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHJldHVybiBoYXlzdGFjayA9PiBmaW5kKGhheXN0YWNrLCBzZWFyY2gpO1xufTtcbiJdfQ==
{
"name": "object-scan",
"version": "1.1.6",
"version": "1.2.0",
"description": "Find Keys using Wildcard matching and optional value function.",

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

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

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

"coveralls": "3.0.2",
"js-gardener": "1.26.3",
"js-gardener": "1.27.3",
"nyc": "12.0.2",
"semantic-release": "15.6.0"
"semantic-release": "15.8.1"
},

@@ -50,0 +50,0 @@ "nyc": {

@@ -23,3 +23,3 @@ # Object-Scan

<!-- eslint-disable-next-line import/no-unresolved -->
<!-- eslint-disable-next-line import/no-unresolved, import/no-extraneous-dependencies -->
```js

@@ -32,12 +32,27 @@ const objectScan = require('object-scan');

### Value Function
### Options
Constructor takes second value function parameter which gets passed in the value of the key and is expected to return true or false.
Only results where the value function returns true are returned.
#### filterFn
### Joined
Type: `function`<br>
Default: `undefined`
When dealing with special characters it might be desired to not have the output merged. In this case
the constructor takes a third option which can be set to false to return each key as a list.
Takes arguments `key` (dot joined and escaped) and `value` (value for given key) and called for every potential result.
If function is defined and returns false, the entry is filtered from the result.
#### breakFn
Type: `function`<br>
Default: `undefined`
Takes arguments `key` (dot joined and escaped) and `value` (value for given key) and called for every potential result.
If function is defined and returns true, no nested entries are checked.
#### joined
Type: `boolean`<br>
Default: `true`
Can be set to false to return each key as a list. When dealing with special characters this can be useful.
## Examples

@@ -47,3 +62,3 @@

<!-- eslint-disable-next-line import/no-unresolved -->
<!-- eslint-disable-next-line import/no-unresolved, import/no-extraneous-dependencies -->
```js

@@ -78,3 +93,3 @@ const objectScan = require('object-scan');

// => ["a.b.c", "a.e.f"]
objectScan(["a.*.{c,f}"], () => true, false)(obj);
objectScan(["a.*.{c,f}"], { joined: false })(obj);
// => [["a", "b", "c"], ["a", "e", "f"]]

@@ -97,4 +112,6 @@

// value function
objectScan(["**"], e => typeof e === "string")(obj);
objectScan(["**"], { filterFn: (key, value) => typeof value === "string" })(obj);
// => ["a.b.c", "a.e.f", "a.h[0]", "a.h[1]", "k"]
objectScan(["**"], { breakFn: key => key === "a.b" })(obj);
// => ["a", "a.b", "a.e", "a.e.f", "a.h", "a.h[0]", "a.h[1]", "k"]);
```

@@ -101,0 +118,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