object-scan
Advanced tools
Comparing version 1.10.9 to 1.11.0
/* 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 @@ }, |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
48933
322
1