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.10.9 to 1.11.0

16

lib/util/compiler.js
/* compile needles to hierarchical map object */
const parser = require("./parser");
const {
parse,
isOr
} = require("./parser");

@@ -73,3 +76,8 @@ const IS_MATCH = Symbol("isMatch");

if (Array.isArray(path[0])) {
path[0].forEach(c => buildRecursive(tower, [c, ...path.slice(1)], needle));
if (isOr(path[0])) {
path[0].forEach(c => buildRecursive(tower, [c, ...path.slice(1)], needle));
} else {
buildRecursive(tower, [...path[0], ...path.slice(1)], needle);
}
return;

@@ -90,5 +98,5 @@ }

const tower = {};
needles.forEach(needle => buildRecursive(tower, parser(needle), needle));
needles.forEach(needle => buildRecursive(tower, [parse(needle)], needle));
return tower;
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2NvbXBpbGVyLmpzIl0sIm5hbWVzIjpbInBhcnNlciIsInJlcXVpcmUiLCJJU19NQVRDSCIsIlN5bWJvbCIsIm1hcmtNYXRjaCIsImlucHV0IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsIndyaXRhYmxlIiwiaXNNYXRjaCIsIm1vZHVsZSIsImV4cG9ydHMiLCJORUVETEUiLCJzZXROZWVkbGUiLCJuZWVkbGUiLCJnZXROZWVkbGUiLCJ1bmRlZmluZWQiLCJORUVETEVTIiwiYWRkTmVlZGxlIiwiU2V0IiwiYWRkIiwiZ2V0TmVlZGxlcyIsIldJTERDQVJEX1JFR0VYIiwic2V0V2lsZGNhcmRSZWdleCIsIndpbGRjYXJkIiwiUmVnRXhwIiwic3BsaXQiLCJtYXAiLCJwIiwicmVwbGFjZSIsImpvaW4iLCJnZXRXaWxkY2FyZFJlZ2V4IiwiZ2V0TWV0YSIsIm5lZWRsZXMiLCJidWlsZFJlY3Vyc2l2ZSIsInRvd2VyIiwicGF0aCIsImxlbmd0aCIsIkVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9yRWFjaCIsImMiLCJzbGljZSIsImFzc2lnbiIsImNvbXBpbGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsTUFBTUEsU0FBU0MsUUFBUSxVQUFSLENBQWY7O0FBRUEsTUFBTUMsV0FBV0MsT0FBTyxTQUFQLENBQWpCOztBQUNBLE1BQU1DLFlBQVlDLFNBQVNDLE9BQU9DLGNBQVAsQ0FBc0JGLEtBQXRCLEVBQTZCSCxRQUE3QixFQUF1QztBQUFFTSxTQUFPLElBQVQ7QUFBZUMsWUFBVTtBQUF6QixDQUF2QyxDQUEzQjs7QUFDQSxNQUFNQyxVQUFVTCxTQUFTQSxNQUFNSCxRQUFOLE1BQW9CLElBQTdDOztBQUNBUyxPQUFPQyxPQUFQLENBQWVGLE9BQWYsR0FBeUJBLE9BQXpCO0FBRUEsTUFBTUcsU0FBU1YsT0FBTyxRQUFQLENBQWY7O0FBQ0EsTUFBTVcsWUFBWSxDQUFDVCxLQUFELEVBQVFVLE1BQVIsS0FBbUJULE9B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QUFXO0FBQWIsS0FBckI7QUFDQWIscUJBQWlCWSxNQUFNQyxLQUFLLENBQUwsQ0FBTixDQUFqQixFQUFpQ0EsS0FBSyxDQUFMLENBQWpDO0FBQ0Q7O0FBQ0RGLGlCQUFlQyxNQUFNQyxLQUFLLENBQUwsQ0FBTixDQUFmLEVBQStCQSxLQUFLTyxLQUFMLENBQVcsQ0FBWCxDQUEvQixFQUE4QzdCLE1BQTlDO0FBQ0QsQ0FuQkQ7O0FBcUJBSixPQUFPQyxPQUFQLENBQWVrQyxPQUFmLEdBQTBCWixPQUFELElBQWE7QUFDcEMsUUFBTUUsUUFBUSxFQUFkO0FBQ0FGLFVBQVFRLE9BQVIsQ0FBZ0IzQixVQUFVb0IsZUFBZUMsS0FBZixFQUFzQnBDLE9BQU9lLE1BQVAsQ0FBdEIsRUFBc0NBLE1BQXRDLENBQTFCO0FBQ0EsU0FBT3FCLEtBQVA7QUFDRCxDQUpEIiwiZmlsZSI6ImNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogY29tcGlsZSBuZWVkbGVzIHRvIGhpZXJhcmNoaWNhbCBtYXAgb2JqZWN0ICovXG5jb25zdCBwYXJzZXIgPSByZXF1aXJlKFwiLi9wYXJzZXJcIik7XG5cbmNvbnN0IElTX01BVENIID0gU3ltYm9sKFwiaXNNYXRjaFwiKTtcbmNvbnN0IG1hcmtNYXRjaCA9IGlucHV0ID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnB1dCwgSVNfTUFUQ0gsIHsgdmFsdWU6IHRydWUsIHdyaXRhYmxlOiBmYWxzZSB9KTtcbmNvbnN0IGlzTWF0Y2ggPSBpbnB1dCA9PiBpbnB1dFtJU19NQVRDSF0gPT09IHRydWU7XG5tb2R1bGUuZXhwb3J0cy5pc01hdGNoID0gaXNNYXRjaDtcblxuY29uc3QgTkVFRExFID0gU3ltYm9sKFwibmVlZGxlXCIpO1xuY29uc3Qgc2V0TmVlZGxlID0gKGlucHV0LCBuZWVkbGUpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnB1dCwgTkVFRExFLCB7IHZhbHVlOiBuZWVkbGUsIHdyaXRhYmxlOiBmYWxzZSB9KTtcbmNvbnN0IGdldE5lZWRsZSA9IGlucHV0ID0+IChpbnB1dFtORUVETEVdID09PSB1bmRlZmluZWQgPyBudWxsIDogaW5wdXRbTkVFRExFXSk7XG5tb2R1bGUuZXhwb3J0cy5nZXROZWVkbGUgPSBnZXROZWVkbGU7XG5cbmNvbnN0IE5FRURMRVMgPSBTeW1ib2woXCJuZWVkbGVzXCIpO1xuY29uc3QgYWRkTmVlZGxlID0gKGlucHV0LCBuZWVkbGUpID0+IHtcbiAgaWYgKGlucHV0W05FRURMRVNdID09PSB1bmRlZmluZWQpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5wdXQsIE5FRURMRVMsIHsgdmFsdWU6IG5ldyBTZXQoKSwgd3JpdGFibGU6IGZhbHNlIH0pO1xuICB9XG4gIGlucHV0W05FRURMRVNdLmFkZChuZWVkbGUpO1xufTtcbmNvbnN0IGdldE5lZWRsZXMgPSBpbnB1dCA9PiBbLi4uaW5wdXRbTkVFRExFU11dO1xubW9kdWxlLmV4cG9ydHMuZ2V0TmVlZGxlcyA9IGdldE5lZWRsZXM7XG5cbmNvbnN0IFdJTERDQVJEX1JFR0VYID0gU3ltYm9sKFwid2lsZGNhcmQtcmVnZXhcIik7XG5jb25zdCBzZXRXaWxkY2FyZFJlZ2V4ID0gKGlucHV0LCB3aWxkY2FyZCkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5wdXQsIFdJTERDQVJEX1JFR0VYLCB7XG4gICAgdmFsdWU6IG5ldyBSZWdFeHAoYF4ke3dpbGRjYXJkXG4gICAgICAuc3BsaXQoLyg/PCFcXFxcKSg/OlxcXFxcXFxcKSpcXCovKVxuICAgICAgLm1hcChwID0+IHAucmVwbGFjZSgvW3xcXFxce30oKVtcXF1eJCsqPy5dL2csICdcXFxcJCYnKSlcbiAgICAgIC5qb2luKFwiLipcIil9JGApLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KTtcbn07XG5jb25zdCBnZXRXaWxkY2FyZFJlZ2V4ID0gaW5wdXQgPT4gaW5wdXRbV0lMRENBUkRfUkVHRVhdO1xubW9kdWxlLmV4cG9ydHMuZ2V0V2lsZGNhcmRSZWdleCA9IGdldFdpbGRjYXJkUmVnZXg7XG5cbm1vZHVsZS5leHBvcnRzLmdldE1ldGEgPSBpbnB1dCA9PiAoe1xuICBpc01hdGNoOiBpc01hdGNoKGlucHV0KSxcbiAgbmVlZGxlOiBnZXROZWVkbGUoaW5wdXQpLFxuICBuZWVkbGVzOiBnZXROZWVkbGVzKGlucHV0KVxufSk7XG5cbmNvbnN0IGJ1aWxkUmVjdXJzaXZlID0gKHRvd2VyLCBwYXRoLCBuZWVkbGUpID0+IHtcbiAgYWRkTmVlZGxlKHRvd2VyLCBuZWVkbGUpO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICBpZiAodG93ZXJbTkVFRExFXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlZHVuZGFudCBOZWVkbGUgVGFyZ2V0OiBcIiR7dG93ZXJbTkVFRExFXX1cIiB2cyBcIiR7bmVlZGxlfVwiYCk7XG4gICAgfVxuICAgIHNldE5lZWRsZSh0b3dlciwgbmVlZGxlKTtcbiAgICBtYXJrTWF0Y2godG93ZXIpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShwYXRoWzBdKSkge1xuICAgIHBhdGhbMF0uZm9yRWFjaChjID0+IGJ1aWxkUmVjdXJzaXZlKHRvd2VyLCBbYywgLi4ucGF0aC5zbGljZSgxKV0sIG5lZWRsZSkpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodG93ZXJbcGF0aFswXV0gPT09IHVuZGVmaW5lZCkge1xuICAgIE9iamVjdC5hc3NpZ24odG93ZXIsIHsgW3BhdGhbMF1dOiB7fSB9KTtcbiAgICBzZXRXaWxkY2FyZFJlZ2V4KHRvd2VyW3BhdGhbMF1dLCBwYXRoWzBdKTtcbiAgfVxuICBidWlsZFJlY3Vyc2l2ZSh0b3dlcltwYXRoWzBdXSwgcGF0aC5zbGljZSgxKSwgbmVlZGxlKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzLmNvbXBpbGUgPSAobmVlZGxlcykgPT4ge1xuICBjb25zdCB0b3dlciA9IHt9O1xuICBuZWVkbGVzLmZvckVhY2gobmVlZGxlID0+IGJ1aWxkUmVjdXJzaXZlKHRvd2VyLCBwYXJzZXIobmVlZGxlKSwgbmVlZGxlKSk7XG4gIHJldHVybiB0b3dlcjtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2NvbXBpbGVyLmpzIl0sIm5hbWVzIjpbInBhcnNlIiwiaXNPciIsInJlcXVpcmUiLCJJU19NQVRDSCIsIlN5bWJvbCIsIm1hcmtNYXRjaCIsImlucHV0IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsIndyaXRhYmxlIiwiaXNNYXRjaCIsIm1vZHVsZSIsImV4cG9ydHMiLCJORUVETEUiLCJzZXROZWVkbGUiLCJuZWVkbGUiLCJnZXROZWVkbGUiLCJ1bmRlZmluZWQiLCJORUVETEVTIiwiYWRkTmVlZGxlIiwiU2V0IiwiYWRkIiwiZ2V0TmVlZGxlcyIsIldJTERDQVJEX1JFR0VYIiwic2V0V2lsZGNhcmRSZWdleCIsIndpbGRjYXJkIiwiUmVnRXhwIiwic3BsaXQiLCJtYXAiLCJwIiwicmVwbGFjZSIsImpvaW4iLCJnZXRXaWxkY2FyZFJlZ2V4IiwiZ2V0TWV0YSIsIm5lZWRsZXMiLCJidWlsZFJlY3Vyc2l2ZSIsInRvd2VyIiwicGF0aCIsImxlbmd0aCIsIkVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9yRWFjaCIsImMiLCJzbGljZSIsImFzc2lnbiIsImNvbXBpbGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsTUFBTTtBQUFFQSxPQUFGO0FBQVNDO0FBQVQsSUFBa0JDLFFBQVEsVUFBUixDQUF4Qjs7QUFFQSxNQUFNQyxXQUFXQyxPQUFPLFNBQVAsQ0FBakI7O0FBQ0EsTUFBTUMsWUFBWUMsU0FBU0MsT0FBT0MsY0FBUCxDQUFzQkYsS0FBdEIsRUFBNkJILFFBQTdCLEVBQXVDO0FBQUVNLFNBQU8sSUFBVDtBQUFlQyxZQUFVO0FBQXpCLENBQXZDLENBQTNCOztBQUNBLE1BQU1DLFVBQVVMLFNBQVNBLE1BQU1ILFFBQU4sTUFBb0IsSUFBN0M7O0FBQ0FTLE9BQU9DLE9BQVAsQ0FBZUYsT0FBZixHQUF5QkEsT0FBekI7QUFFQSxNQUFNRyxTQUFTVixPQUFPLFFBQVAsQ0FBZjs7QUFDQSxNQUFNVyxZQUFZLENB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QUFLLENBQUwsQ0FBSixFQUFhLEdBQUdBLEtBQUtPLEtBQUwsQ0FBVyxDQUFYLENBQWhCLENBQXRCLEVBQXNEN0IsTUFBdEQ7QUFDRDs7QUFDRDtBQUNEOztBQUNELE1BQUlxQixNQUFNQyxLQUFLLENBQUwsQ0FBTixNQUFtQnBCLFNBQXZCLEVBQWtDO0FBQ2hDWCxXQUFPdUMsTUFBUCxDQUFjVCxLQUFkLEVBQXFCO0FBQUUsT0FBQ0MsS0FBSyxDQUFMLENBQUQsR0FBVztBQUFiLEtBQXJCO0FBQ0FiLHFCQUFpQlksTUFBTUMsS0FBSyxDQUFMLENBQU4sQ0FBakIsRUFBaUNBLEtBQUssQ0FBTCxDQUFqQztBQUNEOztBQUNERixpQkFBZUMsTUFBTUMsS0FBSyxDQUFMLENBQU4sQ0FBZixFQUErQkEsS0FBS08sS0FBTCxDQUFXLENBQVgsQ0FBL0IsRUFBOEM3QixNQUE5QztBQUNELENBdkJEOztBQXlCQUosT0FBT0MsT0FBUCxDQUFla0MsT0FBZixHQUEwQlosT0FBRCxJQUFhO0FBQ3BDLFFBQU1FLFFBQVEsRUFBZDtBQUNBRixVQUFRUSxPQUFSLENBQWdCM0IsVUFBVW9CLGVBQWVDLEtBQWYsRUFBc0IsQ0FBQ3JDLE1BQU1nQixNQUFOLENBQUQsQ0FBdEIsRUFBdUNBLE1BQXZDLENBQTFCO0FBQ0EsU0FBT3FCLEtBQVA7QUFDRCxDQUpEIiwiZmlsZSI6ImNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogY29tcGlsZSBuZWVkbGVzIHRvIGhpZXJhcmNoaWNhbCBtYXAgb2JqZWN0ICovXG5jb25zdCB7IHBhcnNlLCBpc09yIH0gPSByZXF1aXJlKFwiLi9wYXJzZXJcIik7XG5cbmNvbnN0IElTX01BVENIID0gU3ltYm9sKFwiaXNNYXRjaFwiKTtcbmNvbnN0IG1hcmtNYXRjaCA9IGlucHV0ID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnB1dCwgSVNfTUFUQ0gsIHsgdmFsdWU6IHRydWUsIHdyaXRhYmxlOiBmYWxzZSB9KTtcbmNvbnN0IGlzTWF0Y2ggPSBpbnB1dCA9PiBpbnB1dFtJU19NQVRDSF0gPT09IHRydWU7XG5tb2R1bGUuZXhwb3J0cy5pc01hdGNoID0gaXNNYXRjaDtcblxuY29uc3QgTkVFRExFID0gU3ltYm9sKFwibmVlZGxlXCIpO1xuY29uc3Qgc2V0TmVlZGxlID0gKGlucHV0LCBuZWVkbGUpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnB1dCwgTkVFRExFLCB7IHZhbHVlOiBuZWVkbGUsIHdyaXRhYmxlOiBmYWxzZSB9KTtcbmNvbnN0IGdldE5lZWRsZSA9IGlucHV0ID0+IChpbnB1dFtORUVETEVdID09PSB1bmRlZmluZWQgPyBudWxsIDogaW5wdXRbTkVFRExFXSk7XG5tb2R1bGUuZXhwb3J0cy5nZXROZWVkbGUgPSBnZXROZWVkbGU7XG5cbmNvbnN0IE5FRURMRVMgPSBTeW1ib2woXCJuZWVkbGVzXCIpO1xuY29uc3QgYWRkTmVlZGxlID0gKGlucHV0LCBuZWVkbGUpID0+IHtcbiAgaWYgKGlucHV0W05FRURMRVNdID09PSB1bmRlZmluZWQpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5wdXQsIE5FRURMRVMsIHsgdmFsdWU6IG5ldyBTZXQoKSwgd3JpdGFibGU6IGZhbHNlIH0pO1xuICB9XG4gIGlucHV0W05FRURMRVNdLmFkZChuZWVkbGUpO1xufTtcbmNvbnN0IGdldE5lZWRsZXMgPSBpbnB1dCA9PiBbLi4uaW5wdXRbTkVFRExFU11dO1xubW9kdWxlLmV4cG9ydHMuZ2V0TmVlZGxlcyA9IGdldE5lZWRsZXM7XG5cbmNvbnN0IFdJTERDQVJEX1JFR0VYID0gU3ltYm9sKFwid2lsZGNhcmQtcmVnZXhcIik7XG5jb25zdCBzZXRXaWxkY2FyZFJlZ2V4ID0gKGlucHV0LCB3aWxkY2FyZCkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5wdXQsIFdJTERDQVJEX1JFR0VYLCB7XG4gICAgdmFsdWU6IG5ldyBSZWdFeHAoYF4ke3dpbGRjYXJkXG4gICAgICAuc3BsaXQoLyg/PCFcXFxcKSg/OlxcXFxcXFxcKSpcXCovKVxuICAgICAgLm1hcChwID0+IHAucmVwbGFjZSgvW3xcXFxce30oKVtcXF1eJCsqPy5dL2csICdcXFxcJCYnKSlcbiAgICAgIC5qb2luKFwiLipcIil9JGApLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KTtcbn07XG5jb25zdCBnZXRXaWxkY2FyZFJlZ2V4ID0gaW5wdXQgPT4gaW5wdXRbV0lMRENBUkRfUkVHRVhdO1xubW9kdWxlLmV4cG9ydHMuZ2V0V2lsZGNhcmRSZWdleCA9IGdldFdpbGRjYXJkUmVnZXg7XG5cbm1vZHVsZS5leHBvcnRzLmdldE1ldGEgPSBpbnB1dCA9PiAoe1xuICBpc01hdGNoOiBpc01hdGNoKGlucHV0KSxcbiAgbmVlZGxlOiBnZXROZWVkbGUoaW5wdXQpLFxuICBuZWVkbGVzOiBnZXROZWVkbGVzKGlucHV0KVxufSk7XG5cbmNvbnN0IGJ1aWxkUmVjdXJzaXZlID0gKHRvd2VyLCBwYXRoLCBuZWVkbGUpID0+IHtcbiAgYWRkTmVlZGxlKHRvd2VyLCBuZWVkbGUpO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICBpZiAodG93ZXJbTkVFRExFXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlZHVuZGFudCBOZWVkbGUgVGFyZ2V0OiBcIiR7dG93ZXJbTkVFRExFXX1cIiB2cyBcIiR7bmVlZGxlfVwiYCk7XG4gICAgfVxuICAgIHNldE5lZWRsZSh0b3dlciwgbmVlZGxlKTtcbiAgICBtYXJrTWF0Y2godG93ZXIpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShwYXRoWzBdKSkge1xuICAgIGlmIChpc09yKHBhdGhbMF0pKSB7XG4gICAgICBwYXRoWzBdLmZvckVhY2goYyA9PiBidWlsZFJlY3Vyc2l2ZSh0b3dlciwgW2MsIC4uLnBhdGguc2xpY2UoMSldLCBuZWVkbGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVpbGRSZWN1cnNpdmUodG93ZXIsIFsuLi5wYXRoWzBdLCAuLi5wYXRoLnNsaWNlKDEpXSwgbmVlZGxlKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0b3dlcltwYXRoWzBdXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgT2JqZWN0LmFzc2lnbih0b3dlciwgeyBbcGF0aFswXV06IHt9IH0pO1xuICAgIHNldFdpbGRjYXJkUmVnZXgodG93ZXJbcGF0aFswXV0sIHBhdGhbMF0pO1xuICB9XG4gIGJ1aWxkUmVjdXJzaXZlKHRvd2VyW3BhdGhbMF1dLCBwYXRoLnNsaWNlKDEpLCBuZWVkbGUpO1xufTtcblxubW9kdWxlLmV4cG9ydHMuY29tcGlsZSA9IChuZWVkbGVzKSA9PiB7XG4gIGNvbnN0IHRvd2VyID0ge307XG4gIG5lZWRsZXMuZm9yRWFjaChuZWVkbGUgPT4gYnVpbGRSZWN1cnNpdmUodG93ZXIsIFtwYXJzZShuZWVkbGUpXSwgbmVlZGxlKSk7XG4gIHJldHVybiB0b3dlcjtcbn07XG4iXX0=

@@ -1,17 +0,209 @@

const crypto = require("crypto");
const assert = require("assert");
module.exports = input => {
const tmpSep = crypto.randomBytes(16).toString('base64');
return input // split at "." and before "[", but only if not escaped
.replace(/(?<!\\|^)((?:\\{2})*)(?:\.|(?=\[))(?!\[?$)/g, (_, esc) => `${esc}${tmpSep}`).split(tmpSep) // handle or groups
.map(e => {
const orMatches = []; // handle basic or-groups
const PARENT = Symbol("parent");
e.replace(/^{(.+)}$/g, (complete, m) => orMatches.push(...m // split at ",", but only if not escaped
.replace(/(?<!\\|^)((?:\\{2})*)(?:,)(?!$)/g, (_, esc) => `${esc}${tmpSep}`).split(tmpSep))); // handle list or-groups (only numbers)
const setParent = (input, parent) => Object.defineProperty(input, PARENT, {
value: parent,
writable: true
});
e.replace(/^\[{(\d+(?:,\d+)*)}]$/g, (complete, m) => orMatches.push(...m.split(",").map(idx => `[${idx}]`)));
return orMatches.length === 0 ? e : orMatches;
const getParent = input => input[PARENT] === undefined ? null : input[PARENT];
const OR = Symbol("or");
const markOr = input => Object.defineProperty(input, OR, {
value: true,
writable: false
});
const isOr = input => input[OR] === true;
module.exports.isOr = isOr;
const throwError = (msg, input, context = {}) => {
throw new Error(Object.entries(context).reduce((p, [k, v]) => `${p}, ${k} ${v}`, `${msg}: ${input}`));
};
const Result = input => {
let cResult = markOr([]);
let inArray = false;
let cursor = 0; // group related
const newChild = asOr => {
const child = setParent(asOr ? markOr([]) : [], cResult);
cResult.push(child);
cResult = child;
};
const finishChild = () => {
if (cResult.length === 1) {
const parent = getParent(cResult);
parent.splice(-1, 1);
parent.push(cResult[0]); // update parent as required
const hasParent = getParent(cResult[0]) !== null;
assert(hasParent === (typeof cResult[0] === "object"));
if (hasParent) {
setParent(cResult[0], parent);
}
}
cResult = getParent(cResult);
};
newChild(false);
return {
setInArray: (flag, idx) => {
if (inArray === flag) {
throwError(inArray ? "Bad Array Start" : "Bad Array Terminator", input, {
char: idx
});
}
inArray = flag;
},
finishElement: (idx, {
err,
fins,
finishedReq = false
}) => {
const isFinished = cursor === idx;
if (finishedReq && !isFinished) {
throwError(err, input, {
char: idx
});
}
if (isFinished && !fins.includes(input[idx - 1] || null)) {
throwError(err, input, {
char: idx
});
}
const ele = input.slice(cursor, idx);
if (cursor !== idx) {
if (inArray && !/^[*\d]+$/g.test(ele)) {
throwError("Bad Array Selector", input, {
selector: ele
});
}
cResult.push(inArray ? `[${ele}]` : ele);
}
cursor = idx + 1;
},
startGroup: () => {
newChild(true);
newChild(false);
},
newGroupElement: () => {
finishChild();
newChild(false);
},
finishGroup: idx => {
if (getParent(getParent(cResult)) === null) {
throwError("Unexpected Group Terminator", input, {
char: idx
});
}
finishChild();
finishChild();
},
finalizeResult: () => {
finishChild();
if (getParent(cResult) !== null) {
throwError("Non Terminated Group", input);
}
if (inArray) {
throwError("Non Terminated Array", input);
}
return cResult.length === 1 ? cResult[0] : cResult;
}
};
};
module.exports.parse = input => {
if (input === "") {
return "";
}
const result = Result(input);
const inputLength = input.length;
let escaped = false;
for (let idx = 0; idx < inputLength; idx += 1) {
const char = input[idx];
if (escaped === false) {
switch (char) {
case ".":
result.finishElement(idx, {
err: "Bad Path Separator",
fins: ["]", "}"]
});
break;
case "[":
result.finishElement(idx, {
err: "Bad Array Start",
fins: [null, "{", ",", "}"]
});
result.setInArray(true, idx);
break;
case "]":
result.finishElement(idx, {
err: "Bad Array Terminator",
fins: ["}"]
});
result.setInArray(false, idx);
break;
case "{":
result.finishElement(idx, {
err: "Bad Group Start",
fins: [null, ".", "[", "{", ","],
finishedReq: true
});
result.startGroup();
break;
case ",":
result.finishElement(idx, {
err: "Bad Group Separator",
fins: ["]", "}"]
});
result.newGroupElement();
break;
case "}":
result.finishElement(idx, {
err: "Bad Group Terminator",
fins: ["]", "}"]
});
result.finishGroup(idx);
break;
default:
break;
}
}
escaped = char === "\\" ? !escaped : false;
}
result.finishElement(inputLength, {
err: "Bad Terminator",
fins: ["]", "}"]
});
return result.finalizeResult();
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcnNlci5qcyJdLCJuYW1lcyI6WyJjcnlwdG8iLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImlucHV0IiwidG1wU2VwIiwicmFuZG9tQnl0ZXMiLCJ0b1N0cmluZyIsInJlcGxhY2UiLCJfIiwiZXNjIiwic3BsaXQiLCJtYXAiLCJlIiwib3JNYXRjaGVzIiwiY29tcGxldGUiLCJtIiwicHVzaCIsImlkeCIsImxlbmd0aCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsU0FBU0MsUUFBUSxRQUFSLENBQWY7O0FBRUFDLE9BQU9DLE9BQVAsR0FBa0JDLEtBQUQsSUFBVztBQUMxQixRQUFNQyxTQUFTTCxPQUFPTSxXQUFQLENBQW1CLEVBQW5CLEVBQXVCQyxRQUF2QixDQUFnQyxRQUFoQyxDQUFmO0FBQ0EsU0FBT0gsTUFDTDtBQURLLEdBRUpJLE9BRkksQ0FFSSw2Q0FGSixFQUVtRCxDQUFDQyxDQUFELEVBQUlDLEdBQUosS0FBYSxHQUFFQSxHQUFJLEdBQUVMLE1BQU8sRUFGL0UsRUFHSk0sS0FISSxDQUdFTixNQUhGLEVBSUw7QUFKSyxHQUtKTyxHQUxJLENBS0NDLENBQUQsSUFBTztBQUNWLFVBQU1DLFlBQVksRUFBbEIsQ0FEVSxDQUVWOztBQUNBRCxNQUFFTCxPQUFGLENBQVUsV0FBVixFQUF1QixDQUFDTyxRQUFELEVBQVdDLENBQVgsS0FBaUJGLFVBQVVHLElBQVYsQ0FBZSxHQUFHRCxFQUN4RDtBQUR3RCxLQUV2RFIsT0FGdUQsQ0FFL0Msa0NBRitDLEVBRVgsQ0FBQ0MsQ0FBRCxFQUFJQyxHQUFKLEtBQWEsR0FBRUEsR0FBSSxHQUFFTCxNQUFPLEVBRmpCLEVBR3ZETSxLQUh1RCxDQUdqRE4sTUFIaUQsQ0FBbEIsQ0FBeEMsRUFIVSxDQU9WOztBQUNBUSxNQUFFTCxPQUFGLENBQVUsd0JBQVYsRUFBb0MsQ0FBQ08sUUFBRCxFQUFXQyxDQUFYLEtBQWlCRixVQUFVRyxJQUFWLENBQWUsR0FBR0QsRUFBRUwsS0FBRixDQUFRLEdBQVIsRUFBYUMsR0FBYixDQUFpQk0sT0FBUSxJQUFHQSxHQUFJLEdBQWhDLENBQWxCLENBQXJEO0FBQ0EsV0FBT0osVUFBVUssTUFBVixLQUFxQixDQUFyQixHQUF5Qk4sQ0FBekIsR0FBNkJDLFNBQXBDO0FBQ0QsR0FmSSxDQUFQO0FBZ0JELENBbEJEIiwiZmlsZSI6InBhcnNlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNyeXB0byA9IHJlcXVpcmUoXCJjcnlwdG9cIik7XG5cbm1vZHVsZS5leHBvcnRzID0gKGlucHV0KSA9PiB7XG4gIGNvbnN0IHRtcFNlcCA9IGNyeXB0by5yYW5kb21CeXRlcygxNikudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICByZXR1cm4gaW5wdXRcbiAgICAvLyBzcGxpdCBhdCBcIi5cIiBhbmQgYmVmb3JlIFwiW1wiLCBidXQgb25seSBpZiBub3QgZXNjYXBlZFxuICAgIC5yZXBsYWNlKC8oPzwhXFxcXHxeKSgoPzpcXFxcezJ9KSopKD86XFwufCg/PVxcWykpKD8hXFxbPyQpL2csIChfLCBlc2MpID0+IGAke2VzY30ke3RtcFNlcH1gKVxuICAgIC5zcGxpdCh0bXBTZXApXG4gICAgLy8gaGFuZGxlIG9yIGdyb3Vwc1xuICAgIC5tYXAoKGUpID0+IHtcbiAgICAgIGNvbnN0IG9yTWF0Y2hlcyA9IFtdO1xuICAgICAgLy8gaGFuZGxlIGJhc2ljIG9yLWdyb3Vwc1xuICAgICAgZS5yZXBsYWNlKC9eeyguKyl9JC9nLCAoY29tcGxldGUsIG0pID0+IG9yTWF0Y2hlcy5wdXNoKC4uLm1cbiAgICAgICAgLy8gc3BsaXQgYXQgXCIsXCIsIGJ1dCBvbmx5IGlmIG5vdCBlc2NhcGVkXG4gICAgICAgIC5yZXBsYWNlKC8oPzwhXFxcXHxeKSgoPzpcXFxcezJ9KSopKD86LCkoPyEkKS9nLCAoXywgZXNjKSA9PiBgJHtlc2N9JHt0bXBTZXB9YClcbiAgICAgICAgLnNwbGl0KHRtcFNlcCkpKTtcbiAgICAgIC8vIGhhbmRsZSBsaXN0IG9yLWdyb3VwcyAob25seSBudW1iZXJzKVxuICAgICAgZS5yZXBsYWNlKC9eXFxbeyhcXGQrKD86LFxcZCspKil9XSQvZywgKGNvbXBsZXRlLCBtKSA9PiBvck1hdGNoZXMucHVzaCguLi5tLnNwbGl0KFwiLFwiKS5tYXAoaWR4ID0+IGBbJHtpZHh9XWApKSk7XG4gICAgICByZXR1cm4gb3JNYXRjaGVzLmxlbmd0aCA9PT0gMCA/IGUgOiBvck1hdGNoZXM7XG4gICAgfSk7XG59O1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcnNlci5qcyJdLCJuYW1lcyI6WyJhc3NlcnQiLCJyZXF1aXJlIiwiUEFSRU5UIiwiU3ltYm9sIiwic2V0UGFyZW50IiwiaW5wdXQiLCJwYXJlbnQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwid3JpdGFibGUiLCJnZXRQYXJlbnQiLCJ1bmRlZmluZWQiLCJPUiIsIm1hcmtPciIsImlzT3IiLCJtb2R1bGUiLCJleHBvcnRzIiwidGhyb3dFcnJvciIsIm1zZyIsImNvbnRleHQiLCJFcnJvciIsImVudHJpZXMiLCJyZWR1Y2UiLCJwIiwiayIsInYiLCJSZXN1bHQiLCJjUmVzdWx0IiwiaW5BcnJheSIsImN1cnNvciIsIm5ld0NoaWxkIiwiYXNPciIsImNoaWxkIiwicHVzaCIsImZpbmlzaENoaWxkIiwibGVuZ3RoIiwic3BsaWNlIiwiaGFzUGFyZW50Iiwic2V0SW5BcnJheSIsImZsYWciLCJpZHgiLCJjaGFyIiwiZmluaXNoRWxlbWVudCIsImVyciIsImZpbnMiLCJmaW5pc2hlZFJlcSIsImlzRmluaXNoZWQiLCJpbmNsdWRlcyIsImVsZSIsInNsaWNlIiwidGVzdCIsInNlbGVjdG9yIiwic3RhcnRHcm91cCIsIm5ld0dyb3VwRWxlbWVudCIsImZpbmlzaEdyb3VwIiwiZmluYWxpemVSZXN1bHQiLCJwYXJzZSIsInJlc3VsdCIsImlucHV0TGVuZ3RoIiwiZXNjYXBlZCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsU0FBU0MsUUFBUSxRQUFSLENBQWY7O0FBRUEsTUFBTUMsU0FBU0MsT0FBTyxRQUFQLENBQWY7O0FBQ0EsTUFBTUMsWUFBWSxDQUFDQyxLQUFELEVBQVFDLE1BQVIsS0FBbUJDLE9BQU9DLGNBQVAsQ0FBc0JILEtBQXRCLEVBQTZCSCxNQUE3QixFQUFxQztBQUFFTyxTQUFPSCxNQUFUO0FBQWlCSSxZQUFVO0FBQTNCLENBQXJDLENBQXJDOztBQUNBLE1BQU1DLFlBQVlOLFNBQVVBLE1BQU1ILE1B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QUFBMEJDLGtCQUFNLENBQUMsSUFBRCxFQUFPLEdBQVAsRUFBWSxHQUFaLEVBQWlCLEdBQWpCLEVBQXNCLEdBQXRCLENBQWhDO0FBQTREQyx5QkFBYTtBQUF6RSxXQUExQjtBQUNBWSxpQkFBT0wsVUFBUDtBQUNBOztBQUNGLGFBQUssR0FBTDtBQUNFSyxpQkFBT2YsYUFBUCxDQUFxQkYsR0FBckIsRUFBMEI7QUFBRUcsaUJBQUsscUJBQVA7QUFBOEJDLGtCQUFNLENBQUMsR0FBRCxFQUFNLEdBQU47QUFBcEMsV0FBMUI7QUFDQWEsaUJBQU9KLGVBQVA7QUFDQTs7QUFDRixhQUFLLEdBQUw7QUFDRUksaUJBQU9mLGFBQVAsQ0FBcUJGLEdBQXJCLEVBQTBCO0FBQUVHLGlCQUFLLHNCQUFQO0FBQStCQyxrQkFBTSxDQUFDLEdBQUQsRUFBTSxHQUFOO0FBQXJDLFdBQTFCO0FBQ0FhLGlCQUFPSCxXQUFQLENBQW1CZCxHQUFuQjtBQUNBOztBQUNGO0FBQ0U7QUF6Qko7QUEyQkQ7O0FBQ0RtQixjQUFVbEIsU0FBUyxJQUFULEdBQWdCLENBQUNrQixPQUFqQixHQUEyQixLQUFyQztBQUNEOztBQUVERixTQUFPZixhQUFQLENBQXFCZ0IsV0FBckIsRUFBa0M7QUFBRWYsU0FBSyxnQkFBUDtBQUF5QkMsVUFBTSxDQUFDLEdBQUQsRUFBTSxHQUFOO0FBQS9CLEdBQWxDO0FBQ0EsU0FBT2EsT0FBT0YsY0FBUCxFQUFQO0FBQ0QsQ0E3Q0QiLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgYXNzZXJ0ID0gcmVxdWlyZShcImFzc2VydFwiKTtcblxuY29uc3QgUEFSRU5UID0gU3ltYm9sKFwicGFyZW50XCIpO1xuY29uc3Qgc2V0UGFyZW50ID0gKGlucHV0LCBwYXJlbnQpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnB1dCwgUEFSRU5ULCB7IHZhbHVlOiBwYXJlbnQsIHdyaXRhYmxlOiB0cnVlIH0pO1xuY29uc3QgZ2V0UGFyZW50ID0gaW5wdXQgPT4gKGlucHV0W1BBUkVOVF0gPT09IHVuZGVmaW5lZCA/IG51bGwgOiBpbnB1dFtQQVJFTlRdKTtcblxuY29uc3QgT1IgPSBTeW1ib2woXCJvclwiKTtcbmNvbnN0IG1hcmtPciA9IGlucHV0ID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnB1dCwgT1IsIHsgdmFsdWU6IHRydWUsIHdyaXRhYmxlOiBmYWxzZSB9KTtcbmNvbnN0IGlzT3IgPSBpbnB1dCA9PiAoaW5wdXRbT1JdID09PSB0cnVlKTtcbm1vZHVsZS5leHBvcnRzLmlzT3IgPSBpc09yO1xuXG5jb25zdCB0aHJvd0Vycm9yID0gKG1zZywgaW5wdXQsIGNvbnRleHQgPSB7fSkgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoT2JqZWN0LmVudHJpZXMoY29udGV4dClcbiAgICAucmVkdWNlKChwLCBbaywgdl0pID0+IGAke3B9LCAke2t9ICR7dn1gLCBgJHttc2d9OiAke2lucHV0fWApKTtcbn07XG5cbmNvbnN0IFJlc3VsdCA9IChpbnB1dCkgPT4ge1xuICBsZXQgY1Jlc3VsdCA9IG1hcmtPcihbXSk7XG4gIGxldCBpbkFycmF5ID0gZmFsc2U7XG4gIGxldCBjdXJzb3IgPSAwO1xuXG4gIC8vIGdyb3VwIHJlbGF0ZWRcbiAgY29uc3QgbmV3Q2hpbGQgPSAoYXNPcikgPT4ge1xuICAgIGNvbnN0IGNoaWxkID0gc2V0UGFyZW50KGFzT3IgPyBtYXJrT3IoW10pIDogW10sIGNSZXN1bHQpO1xuICAgIGNSZXN1bHQucHVzaChjaGlsZCk7XG4gICAgY1Jlc3VsdCA9IGNoaWxkO1xuICB9O1xuICBjb25zdCBmaW5pc2hDaGlsZCA9ICgpID0+IHtcbiAgICBpZiAoY1Jlc3VsdC5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IGdldFBhcmVudChjUmVzdWx0KTtcbiAgICAgIHBhcmVudC5zcGxpY2UoLTEsIDEpO1xuICAgICAgcGFyZW50LnB1c2goY1Jlc3VsdFswXSk7XG4gICAgICAvLyB1cGRhdGUgcGFyZW50IGFzIHJlcXVpcmVkXG4gICAgICBjb25zdCBoYXNQYXJlbnQgPSBnZXRQYXJlbnQoY1Jlc3VsdFswXSkgIT09IG51bGw7XG4gICAgICBhc3NlcnQoaGFzUGFyZW50ID09PSAodHlwZW9mIGNSZXN1bHRbMF0gPT09IFwib2JqZWN0XCIpKTtcbiAgICAgIGlmIChoYXNQYXJlbnQpIHtcbiAgICAgICAgc2V0UGFyZW50KGNSZXN1bHRbMF0sIHBhcmVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNSZXN1bHQgPSBnZXRQYXJlbnQoY1Jlc3VsdCk7XG4gIH07XG5cbiAgbmV3Q2hpbGQoZmFsc2UpO1xuXG4gIHJldHVybiB7XG4gICAgc2V0SW5BcnJheTogKGZsYWcsIGlkeCkgPT4ge1xuICAgICAgaWYgKGluQXJyYXkgPT09IGZsYWcpIHtcbiAgICAgICAgdGhyb3dFcnJvcihpbkFycmF5ID8gXCJCYWQgQXJyYXkgU3RhcnRcIiA6IFwiQmFkIEFycmF5IFRlcm1pbmF0b3JcIiwgaW5wdXQsIHsgY2hhcjogaWR4IH0pO1xuICAgICAgfVxuICAgICAgaW5BcnJheSA9IGZsYWc7XG4gICAgfSxcbiAgICBmaW5pc2hFbGVtZW50OiAoaWR4LCB7IGVyciwgZmlucywgZmluaXNoZWRSZXEgPSBmYWxzZSB9KSA9PiB7XG4gICAgICBjb25zdCBpc0ZpbmlzaGVkID0gY3Vyc29yID09PSBpZHg7XG4gICAgICBpZiAoZmluaXNoZWRSZXEgJiYgIWlzRmluaXNoZWQpIHtcbiAgICAgICAgdGhyb3dFcnJvcihlcnIsIGlucHV0LCB7IGNoYXI6IGlkeCB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0ZpbmlzaGVkICYmICFmaW5zLmluY2x1ZGVzKGlucHV0W2lkeCAtIDFdIHx8IG51bGwpKSB7XG4gICAgICAgIHRocm93RXJyb3IoZXJyLCBpbnB1dCwgeyBjaGFyOiBpZHggfSk7XG4gICAgICB9XG4gICAgICBjb25zdCBlbGUgPSBpbnB1dC5zbGljZShjdXJzb3IsIGlkeCk7XG4gICAgICBpZiAoY3Vyc29yICE9PSBpZHgpIHtcbiAgICAgICAgaWYgKGluQXJyYXkgJiYgIS9eWypcXGRdKyQvZy50ZXN0KGVsZSkpIHtcbiAgICAgICAgICB0aHJvd0Vycm9yKFwiQmFkIEFycmF5IFNlbGVjdG9yXCIsIGlucHV0LCB7IHNlbGVjdG9yOiBlbGUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY1Jlc3VsdC5wdXNoKGluQXJyYXkgPyBgWyR7ZWxlfV1gIDogZWxlKTtcbiAgICAgIH1cbiAgICAgIGN1cnNvciA9IGlkeCArIDE7XG4gICAgfSxcbiAgICBzdGFydEdyb3VwOiAoKSA9PiB7XG4gICAgICBuZXdDaGlsZCh0cnVlKTtcbiAgICAgIG5ld0NoaWxkKGZhbHNlKTtcbiAgICB9LFxuICAgIG5ld0dyb3VwRWxlbWVudDogKCkgPT4ge1xuICAgICAgZmluaXNoQ2hpbGQoKTtcbiAgICAgIG5ld0NoaWxkKGZhbHNlKTtcbiAgICB9LFxuICAgIGZpbmlzaEdyb3VwOiAoaWR4KSA9PiB7XG4gICAgICBpZiAoZ2V0UGFyZW50KGdldFBhcmVudChjUmVzdWx0KSkgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3dFcnJvcihcIlVuZXhwZWN0ZWQgR3JvdXAgVGVybWluYXRvclwiLCBpbnB1dCwgeyBjaGFyOiBpZHggfSk7XG4gICAgICB9XG4gICAgICBmaW5pc2hDaGlsZCgpO1xuICAgICAgZmluaXNoQ2hpbGQoKTtcbiAgICB9LFxuICAgIGZpbmFsaXplUmVzdWx0OiAoKSA9PiB7XG4gICAgICBmaW5pc2hDaGlsZCgpO1xuICAgICAgaWYgKGdldFBhcmVudChjUmVzdWx0KSAhPT0gbnVsbCkge1xuICAgICAgICB0aHJvd0Vycm9yKFwiTm9uIFRlcm1pbmF0ZWQgR3JvdXBcIiwgaW5wdXQpO1xuICAgICAgfVxuICAgICAgaWYgKGluQXJyYXkpIHtcbiAgICAgICAgdGhyb3dFcnJvcihcIk5vbiBUZXJtaW5hdGVkIEFycmF5XCIsIGlucHV0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjUmVzdWx0Lmxlbmd0aCA9PT0gMSA/IGNSZXN1bHRbMF0gOiBjUmVzdWx0O1xuICAgIH1cbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzLnBhcnNlID0gKGlucHV0KSA9PiB7XG4gIGlmIChpbnB1dCA9PT0gXCJcIikge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0gUmVzdWx0KGlucHV0KTtcbiAgY29uc3QgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGg7XG4gIGxldCBlc2NhcGVkID0gZmFsc2U7XG5cbiAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgaW5wdXRMZW5ndGg7IGlkeCArPSAxKSB7XG4gICAgY29uc3QgY2hhciA9IGlucHV0W2lkeF07XG4gICAgaWYgKGVzY2FwZWQgPT09IGZhbHNlKSB7XG4gICAgICBzd2l0Y2ggKGNoYXIpIHtcbiAgICAgICAgY2FzZSBcIi5cIjpcbiAgICAgICAgICByZXN1bHQuZmluaXNoRWxlbWVudChpZHgsIHsgZXJyOiBcIkJhZCBQYXRoIFNlcGFyYXRvclwiLCBmaW5zOiBbXCJdXCIsIFwifVwiXSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIltcIjpcbiAgICAgICAgICByZXN1bHQuZmluaXNoRWxlbWVudChpZHgsIHsgZXJyOiBcIkJhZCBBcnJheSBTdGFydFwiLCBmaW5zOiBbbnVsbCwgXCJ7XCIsIFwiLFwiLCBcIn1cIl0gfSk7XG4gICAgICAgICAgcmVzdWx0LnNldEluQXJyYXkodHJ1ZSwgaWR4KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIl1cIjpcbiAgICAgICAgICByZXN1bHQuZmluaXNoRWxlbWVudChpZHgsIHsgZXJyOiBcIkJhZCBBcnJheSBUZXJtaW5hdG9yXCIsIGZpbnM6IFtcIn1cIl0gfSk7XG4gICAgICAgICAgcmVzdWx0LnNldEluQXJyYXkoZmFsc2UsIGlkeCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ7XCI6XG4gICAgICAgICAgcmVzdWx0LmZpbmlzaEVsZW1lbnQoaWR4LCB7IGVycjogXCJCYWQgR3JvdXAgU3RhcnRcIiwgZmluczogW251bGwsIFwiLlwiLCBcIltcIiwgXCJ7XCIsIFwiLFwiXSwgZmluaXNoZWRSZXE6IHRydWUgfSk7XG4gICAgICAgICAgcmVzdWx0LnN0YXJ0R3JvdXAoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIixcIjpcbiAgICAgICAgICByZXN1bHQuZmluaXNoRWxlbWVudChpZHgsIHsgZXJyOiBcIkJhZCBHcm91cCBTZXBhcmF0b3JcIiwgZmluczogW1wiXVwiLCBcIn1cIl0gfSk7XG4gICAgICAgICAgcmVzdWx0Lm5ld0dyb3VwRWxlbWVudCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwifVwiOlxuICAgICAgICAgIHJlc3VsdC5maW5pc2hFbGVtZW50KGlkeCwgeyBlcnI6IFwiQmFkIEdyb3VwIFRlcm1pbmF0b3JcIiwgZmluczogW1wiXVwiLCBcIn1cIl0gfSk7XG4gICAgICAgICAgcmVzdWx0LmZpbmlzaEdyb3VwKGlkeCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGVzY2FwZWQgPSBjaGFyID09PSBcIlxcXFxcIiA/ICFlc2NhcGVkIDogZmFsc2U7XG4gIH1cblxuICByZXN1bHQuZmluaXNoRWxlbWVudChpbnB1dExlbmd0aCwgeyBlcnI6IFwiQmFkIFRlcm1pbmF0b3JcIiwgZmluczogW1wiXVwiLCBcIn1cIl0gfSk7XG4gIHJldHVybiByZXN1bHQuZmluYWxpemVSZXN1bHQoKTtcbn07XG4iXX0=
{
"name": "object-scan",
"version": "1.10.9",
"version": "1.11.0",
"description": "Find Keys using Wildcard matching and optional value function.",

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

"js-gardener": "1.31.7",
"nyc": "13.0.1",
"nyc": "13.1.0",
"semantic-release": "15.9.17"

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