occam-query 4.1.203 → 4.1.205

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/query.js CHANGED
@@ -18,17 +18,16 @@ function _interop_require_default(obj) {
18
18
  }
19
19
  const { WILDCARD_CHARACTER } = _necessary.characters;
20
20
  class Query {
21
- constructor(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent, intermediateNodes){
21
+ constructor(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent){
22
22
  this.spread = spread;
23
23
  this.subQuery = subQuery;
24
24
  this.ruleNames = ruleNames;
25
25
  this.tokenTypes = tokenTypes;
26
26
  this.maximumDepth = maximumDepth;
27
27
  this.infiniteDescent = infiniteDescent;
28
- this.intermediateNodes = intermediateNodes;
29
28
  }
30
29
  getSpread() {
31
- return this.sprea;
30
+ return this.spread;
32
31
  }
33
32
  getSubQuery() {
34
33
  return this.subQuery;
@@ -45,80 +44,71 @@ class Query {
45
44
  isInfiniteDescent() {
46
45
  return this.infiniteDescent;
47
46
  }
48
- getIntermediateNodes() {
49
- return this.intermediateNodes;
50
- }
51
47
  execute(node, depth = 0, maximumDepth = this.maximumDepth) {
52
48
  const nodes = [];
53
- this.clear();
54
- this.find(node, depth, maximumDepth);
55
- this.apply(nodes, depth, maximumDepth);
49
+ const intermediateNodes = this.find(node, depth, maximumDepth);
50
+ this.apply(nodes, depth, maximumDepth, intermediateNodes);
56
51
  return nodes;
57
52
  }
58
- clear() {
59
- (0, _array.clear)(this.intermediateNodes);
60
- }
61
- find(node, depth, maximumDepth) {
62
- if (depth > maximumDepth) {
63
- return;
64
- }
65
- const nodeTerminalNode = node.isTerminalNode(), nodeNonTerminalNode = !nodeTerminalNode;
66
- let found;
67
- if (nodeTerminalNode) {
68
- const terminalNode = node, types = this.tokenTypes, type = terminalNode.getType();
69
- found = (0, _array.includes)(types, type, WILDCARD_CHARACTER);
70
- }
71
- if (nodeNonTerminalNode) {
72
- const nonTerminalNode = node, ruleName = nonTerminalNode.getRuleName();
73
- found = (0, _array.includes)(this.ruleNames, ruleName, WILDCARD_CHARACTER);
74
- }
75
- if (found) {
76
- const intermediateNode = node; ///
77
- this.intermediateNodes.push(intermediateNode);
78
- }
79
- if (this.infiniteDescent) {
80
- if (nodeNonTerminalNode) {
81
- depth++;
82
- const nonTerminalNode = node; ///
83
- nonTerminalNode.forEachChildNode((childNode)=>{
84
- this.find(childNode, depth, maximumDepth);
85
- });
53
+ find(node, depth, maximumDepth, intermediateNodes = []) {
54
+ if (depth <= maximumDepth) {
55
+ const nodeTerminalNode = node.isTerminalNode(), nodeNonTerminalNode = !nodeTerminalNode;
56
+ if (nodeTerminalNode) {
57
+ const terminalNode = node, type = terminalNode.getType(), tokenType = type, found = (0, _array.includes)(this.tokenTypes, tokenType, WILDCARD_CHARACTER);
58
+ if (found) {
59
+ const intermediateNode = terminalNode; ///
60
+ intermediateNodes.push(intermediateNode);
61
+ }
86
62
  }
87
- }
88
- }
89
- apply(nodes, depth, maximumDepth) {
90
- this.spread.adjustNodes(this.intermediateNodes);
91
- if (this.subQuery === null) {
92
- (0, _array.push)(nodes, this.intermediateNodes);
93
- } else {
94
- this.intermediateNodes.forEach((intermediateNode)=>{
95
- const intermediateNodeNonTerminalNode = intermediateNode.isNonTerminalNode();
96
- if (intermediateNodeNonTerminalNode) {
63
+ if (nodeNonTerminalNode) {
64
+ const nonTerminalNode = node, ruleName = nonTerminalNode.getRuleName(), found = (0, _array.includes)(this.ruleNames, ruleName, WILDCARD_CHARACTER);
65
+ if (found) {
66
+ const intermediateNode = nonTerminalNode; ///
67
+ intermediateNodes.push(intermediateNode);
68
+ }
69
+ if (this.infiniteDescent) {
97
70
  depth++;
98
- const nonTerminalNode = intermediateNode; ///
99
- this.subQuery.clear();
100
71
  nonTerminalNode.forEachChildNode((childNode)=>{
101
- this.subQuery.find(childNode, depth, maximumDepth);
72
+ this.find(childNode, depth, maximumDepth, intermediateNodes);
102
73
  });
103
- this.subQuery.apply(nodes, depth, maximumDepth);
104
74
  }
105
- });
75
+ }
76
+ }
77
+ return intermediateNodes;
78
+ }
79
+ apply(nodes, depth, maximumDepth, intermediateNodes) {
80
+ this.spread.adjustNodes(intermediateNodes);
81
+ if (this.subQuery === null) {
82
+ (0, _array.push)(nodes, intermediateNodes);
83
+ return;
106
84
  }
85
+ depth++;
86
+ intermediateNodes.forEach((intermediateNode)=>{
87
+ const intermedidateNodeNonTerminalNode = intermediateNode.isNonTerminalNode();
88
+ if (intermedidateNodeNonTerminalNode) {
89
+ const nonTerminalNode = intermediateNode, intermediateNodes = [];
90
+ nonTerminalNode.forEachChildNode((childNode)=>{
91
+ const node = childNode; ///
92
+ this.subQuery.find(node, depth, maximumDepth, intermediateNodes);
93
+ });
94
+ this.subQuery.apply(nodes, depth, maximumDepth, intermediateNodes);
95
+ }
96
+ });
107
97
  }
108
98
  static fromExpression(expression, maximumDepth = Infinity) {
109
99
  const spread = expression.getSpread(), subQuery = subQueryFromExpression(expression), ruleNames = expression.getRuleNames(), tokenTypes = expression.getTokenTypes(), infiniteDescent = expression.isInfiniteDescent(), intermediateNodes = [], query = new Query(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent, intermediateNodes);
110
100
  return query;
111
101
  }
112
102
  static fromSubExpression(subExpression) {
113
- const spread = subExpression.getSpread(), subQuery = subQueryFromSubExpression(subExpression), ruleNames = subExpression.getRuleNames(), tokenTypes = subExpression.getTokenTypes(), maximumDepth = Infinity, infiniteDescent = subExpression.isInfiniteDescent(), intermediateNodes = [], query = new Query(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent, intermediateNodes);
103
+ const spread = subExpression.getSpread(), subQuery = subQueryFromSubExpression(subExpression), ruleNames = subExpression.getRuleNames(), tokenTypes = subExpression.getTokenTypes(), maximumDepth = Infinity, infiniteDescent = subExpression.isInfiniteDescent(), query = new Query(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent);
114
104
  return query;
115
105
  }
116
106
  static fromExpressionString(expressionString, maximumDepth = Infinity) {
117
107
  let query = null;
118
108
  const expression = _expression.default.fromExpressionString(expressionString);
119
109
  if (expression !== null) {
120
- const spread = expression.getSpread(), subQuery = subQueryFromExpression(expression), ruleNames = expression.getRuleNames(), tokenTypes = expression.getTokenTypes(), infiniteDescent = expression.isInfiniteDescent(), intermediateNodes = [];
121
- query = new Query(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent, intermediateNodes);
110
+ const spread = expression.getSpread(), subQuery = subQueryFromExpression(expression), ruleNames = expression.getRuleNames(), tokenTypes = expression.getTokenTypes(), infiniteDescent = expression.isInfiniteDescent();
111
+ query = new Query(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent);
122
112
  }
123
113
  return query;
124
114
  }
@@ -142,4 +132,4 @@ function subQueryFromSubExpression(subExpression) {
142
132
  return subQuery;
143
133
  }
144
134
 
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWVyeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgY2hhcmFjdGVycyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IEV4cHJlc3Npb24gZnJvbSBcIi4vZXhwcmVzc2lvblwiO1xuXG5pbXBvcnQgeyBwdXNoLCBjbGVhciwgaW5jbHVkZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcblxuY29uc3QgeyBXSUxEQ0FSRF9DSEFSQUNURVIgfSA9IGNoYXJhY3RlcnM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFF1ZXJ5IHtcbiAgY29uc3RydWN0b3Ioc3ByZWFkLCBzdWJRdWVyeSwgcnVsZU5hbWVzLCB0b2tlblR5cGVzLCBtYXhpbXVtRGVwdGgsIGluZmluaXRlRGVzY2VudCwgaW50ZXJtZWRpYXRlTm9kZXMpIHtcbiAgICB0aGlzLnNwcmVhZCA9IHNwcmVhZDtcbiAgICB0aGlzLnN1YlF1ZXJ5ID0gc3ViUXVlcnk7XG4gICAgdGhpcy5ydWxlTmFtZXMgPSBydWxlTmFtZXM7XG4gICAgdGhpcy50b2tlblR5cGVzID0gdG9rZW5UeXBlcztcbiAgICB0aGlzLm1heGltdW1EZXB0aCA9IG1heGltdW1EZXB0aDtcbiAgICB0aGlzLmluZmluaXRlRGVzY2VudCA9IGluZmluaXRlRGVzY2VudDtcbiAgICB0aGlzLmludGVybWVkaWF0ZU5vZGVzID0gaW50ZXJtZWRpYXRlTm9kZXM7XG4gIH1cblxuICBnZXRTcHJlYWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ByZWE7XG4gIH1cblxuICBnZXRTdWJRdWVyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJRdWVyeTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lcygpIHtcbiAgICByZXR1cm4gdGhpcy5ydWxlTmFtZXM7XG4gIH1cblxuICBnZXRUb2tlblR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuVHlwZXM7XG4gIH1cblxuICBnZXRNYXhpbXVtRGVwdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMubWF4aW11bURlcHRoO1xuICB9XG5cbiAgaXNJbmZpbml0ZURlc2NlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5maW5pdGVEZXNjZW50O1xuICB9XG5cbiAgZ2V0SW50ZXJtZWRpYXRlTm9kZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJtZWRpYXRlTm9kZXM7XG4gIH1cblxuICBleGVjdXRlKG5vZGUsIGRlcHRoID0gMCwgbWF4aW11bURlcHRoID0gdGhpcy5tYXhpbXVtRGVwdGgpIHtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuXG4gICAgdGhpcy5jbGVhcigpO1xuXG4gICAgdGhpcy5maW5kKG5vZGUsIGRlcHRoLCBtYXhpbXVtRGVwdGgpO1xuXG4gICAgdGhpcy5hcHBseShub2RlcywgZGVwdGgsIG1heGltdW1EZXB0aCk7XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICBjbGVhcih0aGlzLmludGVybWVkaWF0ZU5vZGVzKTtcbiAgfVxuXG4gIGZpbmQobm9kZSwgZGVwdGgsIG1heGltdW1EZXB0aCkge1xuICAgIGlmIChkZXB0aCA+IG1heGltdW1EZXB0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgbm9kZU5vblRlcm1pbmFsTm9kZSA9ICFub2RlVGVybWluYWxOb2RlO1xuXG4gICAgbGV0IGZvdW5kO1xuXG4gICAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGUsICAvLy9cbiAgICAgICAgICAgIHR5cGVzID0gdGhpcy50b2tlblR5cGVzLCAgLy8vXG4gICAgICAgICAgICB0eXBlID0gdGVybWluYWxOb2RlLmdldFR5cGUoKTtcblxuICAgICAgZm91bmQgPSBpbmNsdWRlcyh0eXBlcywgdHlwZSwgV0lMRENBUkRfQ0hBUkFDVEVSKTtcbiAgICB9XG5cbiAgICBpZiAobm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gICAgICBmb3VuZCA9IGluY2x1ZGVzKHRoaXMucnVsZU5hbWVzLCBydWxlTmFtZSwgV0lMRENBUkRfQ0hBUkFDVEVSKTtcbiAgICB9XG5cbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIGNvbnN0IGludGVybWVkaWF0ZU5vZGUgPSBub2RlOyAvLy9cblxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVOb2Rlcy5wdXNoKGludGVybWVkaWF0ZU5vZGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmluZmluaXRlRGVzY2VudCkge1xuICAgICAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgICAgZGVwdGgrKztcblxuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlOyAvLy9cblxuICAgICAgICBub25UZXJtaW5hbE5vZGUuZm9yRWFjaENoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgdGhpcy5maW5kKGNoaWxkTm9kZSwgZGVwdGgsIG1heGltdW1EZXB0aCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFwcGx5KG5vZGVzLCBkZXB0aCwgbWF4aW11bURlcHRoKSB7XG4gICAgdGhpcy5zcHJlYWQuYWRqdXN0Tm9kZXModGhpcy5pbnRlcm1lZGlhdGVOb2Rlcyk7XG5cbiAgICBpZiAodGhpcy5zdWJRdWVyeSA9PT0gbnVsbCkge1xuICAgICAgcHVzaChub2RlcywgdGhpcy5pbnRlcm1lZGlhdGVOb2Rlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlTm9kZXMuZm9yRWFjaCgoaW50ZXJtZWRpYXRlTm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBpbnRlcm1lZGlhdGVOb2RlTm9uVGVybWluYWxOb2RlID0gaW50ZXJtZWRpYXRlTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgICAgIGlmIChpbnRlcm1lZGlhdGVOb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICAgICAgZGVwdGgrKztcblxuICAgICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGludGVybWVkaWF0ZU5vZGU7IC8vL1xuXG4gICAgICAgICAgdGhpcy5zdWJRdWVyeS5jbGVhcigpO1xuXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlLmZvckVhY2hDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJRdWVyeS5maW5kKGNoaWxkTm9kZSwgZGVwdGgsIG1heGltdW1EZXB0aCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLnN1YlF1ZXJ5LmFwcGx5KG5vZGVzLCBkZXB0aCwgbWF4aW11bURlcHRoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGZyb21FeHByZXNzaW9uKGV4cHJlc3Npb24sIG1heGltdW1EZXB0aCA9IEluZmluaXR5KSB7XG4gICAgY29uc3Qgc3ByZWFkID0gZXhwcmVzc2lvbi5nZXRTcHJlYWQoKSxcbiAgICAgICAgICBzdWJRdWVyeSA9IHN1YlF1ZXJ5RnJvbUV4cHJlc3Npb24oZXhwcmVzc2lvbiksXG4gICAgICAgICAgcnVsZU5hbWVzID0gZXhwcmVzc2lvbi5nZXRSdWxlTmFtZXMoKSxcbiAgICAgICAgICB0b2tlblR5cGVzID0gZXhwcmVzc2lvbi5nZXRUb2tlblR5cGVzKCksXG4gICAgICAgICAgaW5maW5pdGVEZXNjZW50ID0gZXhwcmVzc2lvbi5pc0luZmluaXRlRGVzY2VudCgpLFxuICAgICAgICAgIGludGVybWVkaWF0ZU5vZGVzID0gW10sXG4gICAgICAgICAgcXVlcnkgPSBuZXcgUXVlcnkoc3ByZWFkLCBzdWJRdWVyeSwgcnVsZU5hbWVzLCB0b2tlblR5cGVzLCBtYXhpbXVtRGVwdGgsIGluZmluaXRlRGVzY2VudCwgaW50ZXJtZWRpYXRlTm9kZXMpO1xuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgc3RhdGljIGZyb21TdWJFeHByZXNzaW9uKHN1YkV4cHJlc3Npb24pIHtcbiAgICBjb25zdCBzcHJlYWQgPSBzdWJFeHByZXNzaW9uLmdldFNwcmVhZCgpLFxuICAgICAgICAgIHN1YlF1ZXJ5ID0gc3ViUXVlcnlGcm9tU3ViRXhwcmVzc2lvbihzdWJFeHByZXNzaW9uKSxcbiAgICAgICAgICBydWxlTmFtZXMgPSBzdWJFeHByZXNzaW9uLmdldFJ1bGVOYW1lcygpLFxuICAgICAgICAgIHRva2VuVHlwZXMgPSBzdWJFeHByZXNzaW9uLmdldFRva2VuVHlwZXMoKSxcbiAgICAgICAgICBtYXhpbXVtRGVwdGggPSBJbmZpbml0eSxcbiAgICAgICAgICBpbmZpbml0ZURlc2NlbnQgPSBzdWJFeHByZXNzaW9uLmlzSW5maW5pdGVEZXNjZW50KCksXG4gICAgICAgICAgaW50ZXJtZWRpYXRlTm9kZXMgPSBbXSxcbiAgICAgICAgICBxdWVyeSA9IG5ldyBRdWVyeShzcHJlYWQsIHN1YlF1ZXJ5LCBydWxlTmFtZXMsIHRva2VuVHlwZXMsIG1heGltdW1EZXB0aCwgaW5maW5pdGVEZXNjZW50LCBpbnRlcm1lZGlhdGVOb2Rlcyk7XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUV4cHJlc3Npb25TdHJpbmcoZXhwcmVzc2lvblN0cmluZywgbWF4aW11bURlcHRoID0gSW5maW5pdHkpIHtcbiAgICBsZXQgcXVlcnkgPSBudWxsO1xuXG4gICAgY29uc3QgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb24uZnJvbUV4cHJlc3Npb25TdHJpbmcoZXhwcmVzc2lvblN0cmluZyk7XG5cbiAgICBpZiAoZXhwcmVzc2lvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3ByZWFkID0gZXhwcmVzc2lvbi5nZXRTcHJlYWQoKSxcbiAgICAgICAgICAgIHN1YlF1ZXJ5ID0gc3ViUXVlcnlGcm9tRXhwcmVzc2lvbihleHByZXNzaW9uKSxcbiAgICAgICAgICAgIHJ1bGVOYW1lcyA9IGV4cHJlc3Npb24uZ2V0UnVsZU5hbWVzKCksXG4gICAgICAgICAgICB0b2tlblR5cGVzID0gZXhwcmVzc2lvbi5nZXRUb2tlblR5cGVzKCksXG4gICAgICAgICAgICBpbmZpbml0ZURlc2NlbnQgPSBleHByZXNzaW9uLmlzSW5maW5pdGVEZXNjZW50KCksXG4gICAgICAgICAgICBpbnRlcm1lZGlhdGVOb2RlcyA9IFtdO1xuXG4gICAgICBxdWVyeSA9IG5ldyBRdWVyeShzcHJlYWQsIHN1YlF1ZXJ5LCBydWxlTmFtZXMsIHRva2VuVHlwZXMsIG1heGltdW1EZXB0aCwgaW5maW5pdGVEZXNjZW50LCBpbnRlcm1lZGlhdGVOb2Rlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG59XG5cbmZ1bmN0aW9uIHN1YlF1ZXJ5RnJvbUV4cHJlc3Npb24oZXhwcmVzc2lvbikge1xuICBsZXQgc3ViUXVlcnkgPSBudWxsO1xuXG4gIGNvbnN0IHN1YkV4cHJlc3Npb24gPSBleHByZXNzaW9uLmdldFN1YkV4cHJlc3Npb24oKTtcblxuICBpZiAoc3ViRXhwcmVzc2lvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gUXVlcnkuZnJvbVN1YkV4cHJlc3Npb24oc3ViRXhwcmVzc2lvbik7XG5cbiAgICBzdWJRdWVyeSA9IHF1ZXJ5OyAvLy9cbiAgfVxuXG4gIHJldHVybiBzdWJRdWVyeTtcbn1cblxuZnVuY3Rpb24gc3ViUXVlcnlGcm9tU3ViRXhwcmVzc2lvbihzdWJFeHByZXNzaW9uKSB7XG4gIGxldCBzdWJRdWVyeSA9IG51bGw7XG5cbiAgc3ViRXhwcmVzc2lvbiA9IHN1YkV4cHJlc3Npb24uZ2V0U3ViRXhwcmVzc2lvbigpOyAvLy9cblxuICBpZiAoc3ViRXhwcmVzc2lvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gUXVlcnkuZnJvbVN1YkV4cHJlc3Npb24oc3ViRXhwcmVzc2lvbik7XG5cbiAgICBzdWJRdWVyeSA9IHF1ZXJ5OyAvLy9cbiAgfVxuXG4gIHJldHVybiBzdWJRdWVyeTtcbn1cbiJdLCJuYW1lcyI6WyJRdWVyeSIsIldJTERDQVJEX0NIQVJBQ1RFUiIsImNoYXJhY3RlcnMiLCJzcHJlYWQiLCJzdWJRdWVyeSIsInJ1bGVOYW1lcyIsInRva2VuVHlwZXMiLCJtYXhpbXVtRGVwdGgiLCJpbmZpbml0ZURlc2NlbnQiLCJpbnRlcm1lZGlhdGVOb2RlcyIsImdldFNwcmVhZCIsInNwcmVhIiwiZ2V0U3ViUXVlcnkiLCJnZXRSdWxlTmFtZXMiLCJnZXRUb2tlblR5cGVzIiwiZ2V0TWF4aW11bURlcHRoIiwiaXNJbmZpbml0ZURlc2NlbnQiLCJnZXRJbnRlcm1lZGlhdGVOb2RlcyIsImV4ZWN1dGUiLCJub2RlIiwiZGVwdGgiLCJub2RlcyIsImNsZWFyIiwiZmluZCIsImFwcGx5Iiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwibm9kZU5vblRlcm1pbmFsTm9kZSIsImZvdW5kIiwidGVybWluYWxOb2RlIiwidHlwZXMiLCJ0eXBlIiwiZ2V0VHlwZSIsImluY2x1ZGVzIiwibm9uVGVybWluYWxOb2RlIiwicnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsImludGVybWVkaWF0ZU5vZGUiLCJwdXNoIiwiZm9yRWFjaENoaWxkTm9kZSIsImNoaWxkTm9kZSIsImFkanVzdE5vZGVzIiwiZm9yRWFjaCIsImludGVybWVkaWF0ZU5vZGVOb25UZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsImZyb21FeHByZXNzaW9uIiwiZXhwcmVzc2lvbiIsIkluZmluaXR5Iiwic3ViUXVlcnlGcm9tRXhwcmVzc2lvbiIsInF1ZXJ5IiwiZnJvbVN1YkV4cHJlc3Npb24iLCJzdWJFeHByZXNzaW9uIiwic3ViUXVlcnlGcm9tU3ViRXhwcmVzc2lvbiIsImZyb21FeHByZXNzaW9uU3RyaW5nIiwiZXhwcmVzc2lvblN0cmlu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
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWVyeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgY2hhcmFjdGVycyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IEV4cHJlc3Npb24gZnJvbSBcIi4vZXhwcmVzc2lvblwiO1xuXG5pbXBvcnQgeyBwdXNoLCBpbmNsdWRlcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuXG5jb25zdCB7IFdJTERDQVJEX0NIQVJBQ1RFUiB9ID0gY2hhcmFjdGVycztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUXVlcnkge1xuICBjb25zdHJ1Y3RvcihzcHJlYWQsIHN1YlF1ZXJ5LCBydWxlTmFtZXMsIHRva2VuVHlwZXMsIG1heGltdW1EZXB0aCwgaW5maW5pdGVEZXNjZW50KSB7XG4gICAgdGhpcy5zcHJlYWQgPSBzcHJlYWQ7XG4gICAgdGhpcy5zdWJRdWVyeSA9IHN1YlF1ZXJ5O1xuICAgIHRoaXMucnVsZU5hbWVzID0gcnVsZU5hbWVzO1xuICAgIHRoaXMudG9rZW5UeXBlcyA9IHRva2VuVHlwZXM7XG4gICAgdGhpcy5tYXhpbXVtRGVwdGggPSBtYXhpbXVtRGVwdGg7XG4gICAgdGhpcy5pbmZpbml0ZURlc2NlbnQgPSBpbmZpbml0ZURlc2NlbnQ7XG4gIH1cblxuICBnZXRTcHJlYWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ByZWFkO1xuICB9XG5cbiAgZ2V0U3ViUXVlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViUXVlcnk7XG4gIH1cblxuICBnZXRSdWxlTmFtZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucnVsZU5hbWVzO1xuICB9XG5cbiAgZ2V0VG9rZW5UeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlblR5cGVzO1xuICB9XG5cbiAgZ2V0TWF4aW11bURlcHRoKCkge1xuICAgIHJldHVybiB0aGlzLm1heGltdW1EZXB0aDtcbiAgfVxuXG4gIGlzSW5maW5pdGVEZXNjZW50KCkge1xuICAgIHJldHVybiB0aGlzLmluZmluaXRlRGVzY2VudDtcbiAgfVxuXG4gIGV4ZWN1dGUobm9kZSwgZGVwdGggPSAwLCBtYXhpbXVtRGVwdGggPSB0aGlzLm1heGltdW1EZXB0aCkge1xuICAgIGNvbnN0IG5vZGVzID0gW107XG5cbiAgICBjb25zdCBpbnRlcm1lZGlhdGVOb2RlcyA9IHRoaXMuZmluZChub2RlLCBkZXB0aCwgbWF4aW11bURlcHRoKTtcblxuICAgIHRoaXMuYXBwbHkobm9kZXMsIGRlcHRoLCBtYXhpbXVtRGVwdGgsIGludGVybWVkaWF0ZU5vZGVzKTtcblxuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIGZpbmQobm9kZSwgZGVwdGgsIG1heGltdW1EZXB0aCwgaW50ZXJtZWRpYXRlTm9kZXMgPSBbXSkge1xuICAgIGlmIChkZXB0aCA8PSBtYXhpbXVtRGVwdGgpIHtcbiAgICAgIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgICBub2RlTm9uVGVybWluYWxOb2RlID0gIW5vZGVUZXJtaW5hbE5vZGU7XG5cbiAgICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGUsICAvLy9cbiAgICAgICAgICAgICAgdHlwZSA9IHRlcm1pbmFsTm9kZS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgIHRva2VuVHlwZSA9IHR5cGUsXG4gICAgICAgICAgICAgIGZvdW5kID0gaW5jbHVkZXModGhpcy50b2tlblR5cGVzLCB0b2tlblR5cGUsIFdJTERDQVJEX0NIQVJBQ1RFUik7XG5cbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgY29uc3QgaW50ZXJtZWRpYXRlTm9kZSA9IHRlcm1pbmFsTm9kZTsgLy8vXG5cbiAgICAgICAgICBpbnRlcm1lZGlhdGVOb2Rlcy5wdXNoKGludGVybWVkaWF0ZU5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChub2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgICBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgICBmb3VuZCA9IGluY2x1ZGVzKHRoaXMucnVsZU5hbWVzLCBydWxlTmFtZSwgV0lMRENBUkRfQ0hBUkFDVEVSKTtcblxuICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICBjb25zdCBpbnRlcm1lZGlhdGVOb2RlID0gbm9uVGVybWluYWxOb2RlOyAvLy9cblxuICAgICAgICAgIGludGVybWVkaWF0ZU5vZGVzLnB1c2goaW50ZXJtZWRpYXRlTm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pbmZpbml0ZURlc2NlbnQpIHtcbiAgICAgICAgICBkZXB0aCsrO1xuXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlLmZvckVhY2hDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5maW5kKGNoaWxkTm9kZSwgZGVwdGgsIG1heGltdW1EZXB0aCwgaW50ZXJtZWRpYXRlTm9kZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGludGVybWVkaWF0ZU5vZGVzO1xuICB9XG5cbiAgYXBwbHkobm9kZXMsIGRlcHRoLCBtYXhpbXVtRGVwdGgsIGludGVybWVkaWF0ZU5vZGVzKSB7XG4gICAgdGhpcy5zcHJlYWQuYWRqdXN0Tm9kZXMoaW50ZXJtZWRpYXRlTm9kZXMpO1xuXG4gICAgaWYgKHRoaXMuc3ViUXVlcnkgPT09IG51bGwpIHtcbiAgICAgIHB1c2gobm9kZXMsIGludGVybWVkaWF0ZU5vZGVzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRlcHRoKys7XG5cbiAgICBpbnRlcm1lZGlhdGVOb2Rlcy5mb3JFYWNoKChpbnRlcm1lZGlhdGVOb2RlKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcm1lZGlkYXRlTm9kZU5vblRlcm1pbmFsTm9kZSA9IGludGVybWVkaWF0ZU5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgICAgaWYgKGludGVybWVkaWRhdGVOb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGludGVybWVkaWF0ZU5vZGUsIC8vL1xuICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVOb2RlcyA9IFtdO1xuXG4gICAgICAgIG5vblRlcm1pbmFsTm9kZS5mb3JFYWNoQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgICAgICAgIHRoaXMuc3ViUXVlcnkuZmluZChub2RlLCBkZXB0aCwgbWF4aW11bURlcHRoLCBpbnRlcm1lZGlhdGVOb2Rlcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3ViUXVlcnkuYXBwbHkobm9kZXMsIGRlcHRoLCBtYXhpbXVtRGVwdGgsIGludGVybWVkaWF0ZU5vZGVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRXhwcmVzc2lvbihleHByZXNzaW9uLCBtYXhpbXVtRGVwdGggPSBJbmZpbml0eSkge1xuICAgIGNvbnN0IHNwcmVhZCA9IGV4cHJlc3Npb24uZ2V0U3ByZWFkKCksXG4gICAgICAgICAgc3ViUXVlcnkgPSBzdWJRdWVyeUZyb21FeHByZXNzaW9uKGV4cHJlc3Npb24pLFxuICAgICAgICAgIHJ1bGVOYW1lcyA9IGV4cHJlc3Npb24uZ2V0UnVsZU5hbWVzKCksXG4gICAgICAgICAgdG9rZW5UeXBlcyA9IGV4cHJlc3Npb24uZ2V0VG9rZW5UeXBlcygpLFxuICAgICAgICAgIGluZmluaXRlRGVzY2VudCA9IGV4cHJlc3Npb24uaXNJbmZpbml0ZURlc2NlbnQoKSxcbiAgICAgICAgICBpbnRlcm1lZGlhdGVOb2RlcyA9IFtdLFxuICAgICAgICAgIHF1ZXJ5ID0gbmV3IFF1ZXJ5KHNwcmVhZCwgc3ViUXVlcnksIHJ1bGVOYW1lcywgdG9rZW5UeXBlcywgbWF4aW11bURlcHRoLCBpbmZpbml0ZURlc2NlbnQsIGludGVybWVkaWF0ZU5vZGVzKTtcblxuICAgIHJldHVybiBxdWVyeTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3ViRXhwcmVzc2lvbihzdWJFeHByZXNzaW9uKSB7XG4gICAgY29uc3Qgc3ByZWFkID0gc3ViRXhwcmVzc2lvbi5nZXRTcHJlYWQoKSxcbiAgICAgICAgICBzdWJRdWVyeSA9IHN1YlF1ZXJ5RnJvbVN1YkV4cHJlc3Npb24oc3ViRXhwcmVzc2lvbiksXG4gICAgICAgICAgcnVsZU5hbWVzID0gc3ViRXhwcmVzc2lvbi5nZXRSdWxlTmFtZXMoKSxcbiAgICAgICAgICB0b2tlblR5cGVzID0gc3ViRXhwcmVzc2lvbi5nZXRUb2tlblR5cGVzKCksXG4gICAgICAgICAgbWF4aW11bURlcHRoID0gSW5maW5pdHksXG4gICAgICAgICAgaW5maW5pdGVEZXNjZW50ID0gc3ViRXhwcmVzc2lvbi5pc0luZmluaXRlRGVzY2VudCgpLFxuICAgICAgICAgIHF1ZXJ5ID0gbmV3IFF1ZXJ5KHNwcmVhZCwgc3ViUXVlcnksIHJ1bGVOYW1lcywgdG9rZW5UeXBlcywgbWF4aW11bURlcHRoLCBpbmZpbml0ZURlc2NlbnQpO1xuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgc3RhdGljIGZyb21FeHByZXNzaW9uU3RyaW5nKGV4cHJlc3Npb25TdHJpbmcsIG1heGltdW1EZXB0aCA9IEluZmluaXR5KSB7XG4gICAgbGV0IHF1ZXJ5ID0gbnVsbDtcblxuICAgIGNvbnN0IGV4cHJlc3Npb24gPSBFeHByZXNzaW9uLmZyb21FeHByZXNzaW9uU3RyaW5nKGV4cHJlc3Npb25TdHJpbmcpO1xuXG4gICAgaWYgKGV4cHJlc3Npb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNwcmVhZCA9IGV4cHJlc3Npb24uZ2V0U3ByZWFkKCksXG4gICAgICAgICAgICBzdWJRdWVyeSA9IHN1YlF1ZXJ5RnJvbUV4cHJlc3Npb24oZXhwcmVzc2lvbiksXG4gICAgICAgICAgICBydWxlTmFtZXMgPSBleHByZXNzaW9uLmdldFJ1bGVOYW1lcygpLFxuICAgICAgICAgICAgdG9rZW5UeXBlcyA9IGV4cHJlc3Npb24uZ2V0VG9rZW5UeXBlcygpLFxuICAgICAgICAgICAgaW5maW5pdGVEZXNjZW50ID0gZXhwcmVzc2lvbi5pc0luZmluaXRlRGVzY2VudCgpO1xuXG4gICAgICBxdWVyeSA9IG5ldyBRdWVyeShzcHJlYWQsIHN1YlF1ZXJ5LCBydWxlTmFtZXMsIHRva2VuVHlwZXMsIG1heGltdW1EZXB0aCwgaW5maW5pdGVEZXNjZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3ViUXVlcnlGcm9tRXhwcmVzc2lvbihleHByZXNzaW9uKSB7XG4gIGxldCBzdWJRdWVyeSA9IG51bGw7XG5cbiAgY29uc3Qgc3ViRXhwcmVzc2lvbiA9IGV4cHJlc3Npb24uZ2V0U3ViRXhwcmVzc2lvbigpO1xuXG4gIGlmIChzdWJFeHByZXNzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgcXVlcnkgPSBRdWVyeS5mcm9tU3ViRXhwcmVzc2lvbihzdWJFeHByZXNzaW9uKTtcblxuICAgIHN1YlF1ZXJ5ID0gcXVlcnk7IC8vL1xuICB9XG5cbiAgcmV0dXJuIHN1YlF1ZXJ5O1xufVxuXG5mdW5jdGlvbiBzdWJRdWVyeUZyb21TdWJFeHByZXNzaW9uKHN1YkV4cHJlc3Npb24pIHtcbiAgbGV0IHN1YlF1ZXJ5ID0gbnVsbDtcblxuICBzdWJFeHByZXNzaW9uID0gc3ViRXhwcmVzc2lvbi5nZXRTdWJFeHByZXNzaW9uKCk7IC8vL1xuXG4gIGlmIChzdWJFeHByZXNzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgcXVlcnkgPSBRdWVyeS5mcm9tU3ViRXhwcmVzc2lvbihzdWJFeHByZXNzaW9uKTtcblxuICAgIHN1YlF1ZXJ5ID0gcXVlcnk7IC8vL1xuICB9XG5cbiAgcmV0dXJuIHN1YlF1ZXJ5O1xufVxuIl0sIm5hbWVzIjpbIlF1ZXJ5IiwiV0lMRENBUkRfQ0hBUkFDVEVSIiwiY2hhcmFjdGVycyIsInNwcmVhZCIsInN1YlF1ZXJ5IiwicnVsZU5hbWVzIiwidG9rZW5UeXBlcyIsIm1heGltdW1EZXB0aCIsImluZmluaXRlRGVzY2VudCIsImdldFNwcmVhZCIsImdldFN1YlF1ZXJ5IiwiZ2V0UnVsZU5hbWVzIiwiZ2V0VG9rZW5UeXBlcyIsImdldE1heGltdW1EZXB0aCIsImlzSW5maW5pdGVEZXNjZW50IiwiZXhlY3V0ZSIsIm5vZGUiLCJkZXB0aCIsIm5vZGVzIiwiaW50ZXJtZWRpYXRlTm9kZXMiLCJmaW5kIiwiYXBwbHkiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJub2RlTm9uVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwidHlwZSIsImdldFR5cGUiLCJ0b2tlblR5cGUiLCJmb3VuZCIsImluY2x1ZGVzIiwiaW50ZXJtZWRpYXRlTm9kZSIsInB1c2giLCJub25UZXJtaW5hbE5vZGUiLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiZm9yRWFjaENoaWxkTm9kZSIsImNoaWxkTm9kZSIsImFkanVzdE5vZGVzIiwiZm9yRWFjaCIsImludGVybWVkaWRhdGVOb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJmcm9tRXhwcmVzc2lvbiIsImV4cHJlc3Npb24iLCJJbmZpbml0eSIsInN1YlF1ZXJ5RnJvbUV4cHJlc3Npb24iLCJxdWVyeSIsImZyb21TdWJFeHByZXNzaW9uIiwic3ViRXhwcmVzc2lvbiIsInN1YlF1ZXJ5RnJvbVN1YkV4cHJlc3Npb24iLCJmcm9tRXhwcmVzc2lvblN0cmluZyIsImV4cHJlc3Npb25TdHJpbmciLCJFeHByZXNzaW9uIiwiZ2V0U3ViRXhwcmVzc2lvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVUE7OztlQUFxQkE7OzsyQkFSTTttRUFFSjt1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
@@ -43,9 +43,11 @@ _export(exports, {
43
43
  const _necessary = require("necessary");
44
44
  const { clear, push, first, second, third, fourth, fifth, last } = _necessary.arrayUtilities;
45
45
  function trim(array, startIndex, endIndex) {
46
+ const length = array.length; ///
46
47
  if (startIndex < 0) {
47
- const length = array.length; ///
48
48
  startIndex = length + startIndex; ///
49
+ }
50
+ if (endIndex < 0) {
49
51
  endIndex = length + endIndex; ///
50
52
  }
51
53
  if (endIndex !== Infinity) {
@@ -56,7 +58,13 @@ function trim(array, startIndex, endIndex) {
56
58
  array.splice(start, deleteCount);
57
59
  }
58
60
  function includes(array, ...elements) {
59
- return elements.some((element)=>array.includes(element));
61
+ const found = elements.some((element)=>{
62
+ const found = array.includes(element);
63
+ if (found) {
64
+ return true;
65
+ }
66
+ });
67
+ return found;
60
68
  }
61
69
 
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5leHBvcnQgY29uc3QgeyBjbGVhciwgcHVzaCwgZmlyc3QsIHNlY29uZCwgdGhpcmQsIGZvdXJ0aCwgZmlmdGgsIGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gdHJpbShhcnJheSwgc3RhcnRJbmRleCwgZW5kSW5kZXgpIHtcbiAgaWYgKHN0YXJ0SW5kZXggPCAwKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyAvLy9cblxuICAgIHN0YXJ0SW5kZXggPSBsZW5ndGggKyBzdGFydEluZGV4OyAvLy9cblxuICAgIGVuZEluZGV4ID0gbGVuZ3RoICsgZW5kSW5kZXg7IC8vL1xuICB9XG5cbiAgaWYgKGVuZEluZGV4ICE9PSBJbmZpbml0eSkge1xuICAgIGNvbnN0IHN0YXJ0ID0gZW5kSW5kZXggKyAxO1xuXG4gICAgYXJyYXkuc3BsaWNlKHN0YXJ0KTtcbiAgfVxuXG4gIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBzdGFydEluZGV4OyAvLy9cblxuICBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluY2x1ZGVzKGFycmF5LCAuLi5lbGVtZW50cykge1xuICByZXR1cm4gZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gYXJyYXkuaW5jbHVkZXMoZWxlbWVudCkpO1xufVxuIl0sIm5hbWVzIjpbImNsZWFyIiwiZmlmdGgiLCJmaXJzdCIsImZvdXJ0aCIsImluY2x1ZGVzIiwibGFzdCIsInB1c2giLCJzZWNvbmQiLCJ0aGlyZCIsInRyaW0iLCJhcnJheVV0aWxpdGllcyIsImFycmF5Iiwic3RhcnRJbmRleCIsImVuZEluZGV4IiwibGVuZ3RoIiwiSW5maW5pdHkiLCJzdGFydCIsInNwbGljZSIsImRlbGV0ZUNvdW50IiwiZWxlbWVudHMiLCJzb21lIiwiZWxlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBSWVBO2VBQUFBOztRQUEyQ0M7ZUFBQUE7O1FBQTlCQztlQUFBQTs7UUFBc0JDO2VBQUFBOztRQXVCbENDO2VBQUFBOztRQXZCaURDO2VBQUFBOztRQUEzQ0M7ZUFBQUE7O1FBQWFDO2VBQUFBOztRQUFRQztlQUFBQTs7UUFFM0JDO2VBQUFBOzs7MkJBSmU7QUFFeEIsTUFBTSxFQUFFVCxLQUFLLEVBQUVNLElBQUksRUFBRUosS0FBSyxFQUFFSyxNQUFNLEVBQUVDLEtBQUssRUFBRUwsTUFBTSxFQUFFRixLQUFLLEVBQUVJLElBQUksRUFBRSxHQUFHSyx5QkFBYztBQUVqRixTQUFTRCxLQUFLRSxLQUFLLEVBQUVDLFVBQVUsRUFBRUMsUUFBUTtJQUM5QyxJQUFJRCxhQUFhLEdBQUc7UUFDbEIsTUFBTUUsU0FBU0gsTUFBTUcsTUFBTSxFQUFFLEdBQUc7UUFFaENGLGFBQWFFLFNBQVNGLFlBQVksR0FBRztRQUVyQ0MsV0FBV0MsU0FBU0QsVUFBVSxHQUFHO0lBQ25DO0lBRUEsSUFBSUEsYUFBYUUsVUFBVTtRQUN6QixNQUFNQyxRQUFRSCxXQUFXO1FBRXpCRixNQUFNTSxNQUFNLENBQUNEO0lBQ2Y7SUFFQSxNQUFNQSxRQUFRLEdBQ1JFLGNBQWNOLFlBQVksR0FBRztJQUVuQ0QsTUFBTU0sTUFBTSxDQUFDRCxPQUFPRTtBQUN0QjtBQUVPLFNBQVNkLFNBQVNPLEtBQUssRUFBRSxHQUFHUSxRQUFRO0lBQ3pDLE9BQU9BLFNBQVNDLElBQUksQ0FBQyxDQUFDQyxVQUFZVixNQUFNUCxRQUFRLENBQUNpQjtBQUNuRCJ9
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5leHBvcnQgY29uc3QgeyBjbGVhciwgcHVzaCwgZmlyc3QsIHNlY29uZCwgdGhpcmQsIGZvdXJ0aCwgZmlmdGgsIGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gdHJpbShhcnJheSwgc3RhcnRJbmRleCwgZW5kSW5kZXgpIHtcbiAgY29uc3QgbGVuZ3RoID0gYXJyYXkubGVuZ3RoOyAvLy9cblxuICBpZiAoc3RhcnRJbmRleCA8IDApIHtcbiAgICBzdGFydEluZGV4ID0gbGVuZ3RoICsgc3RhcnRJbmRleDsgLy8vXG4gIH1cblxuICBpZiAoZW5kSW5kZXggPCAwKSB7XG4gICAgZW5kSW5kZXggPSBsZW5ndGggKyBlbmRJbmRleDsgLy8vXG4gIH1cblxuICBpZiAoZW5kSW5kZXggIT09IEluZmluaXR5KSB7XG4gICAgY29uc3Qgc3RhcnQgPSBlbmRJbmRleCArIDE7XG5cbiAgICBhcnJheS5zcGxpY2Uoc3RhcnQpO1xuICB9XG5cbiAgY29uc3Qgc3RhcnQgPSAwLFxuICAgICAgICBkZWxldGVDb3VudCA9IHN0YXJ0SW5kZXg7IC8vL1xuXG4gIGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5jbHVkZXMoYXJyYXksIC4uLmVsZW1lbnRzKSB7XG4gIGNvbnN0IGZvdW5kID0gZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGZvdW5kID0gYXJyYXkuaW5jbHVkZXMoZWxlbWVudCk7XG5cbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGZvdW5kO1xufVxuIl0sIm5hbWVzIjpbImNsZWFyIiwiZmlmdGgiLCJmaXJzdCIsImZvdXJ0aCIsImluY2x1ZGVzIiwibGFzdCIsInB1c2giLCJzZWNvbmQiLCJ0aGlyZCIsInRyaW0iLCJhcnJheVV0aWxpdGllcyIsImFycmF5Iiwic3RhcnRJbmRleCIsImVuZEluZGV4IiwibGVuZ3RoIiwiSW5maW5pdHkiLCJzdGFydCIsInNwbGljZSIsImRlbGV0ZUNvdW50IiwiZWxlbWVudHMiLCJmb3VuZCIsInNvbWUiLCJlbGVtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFJZUE7ZUFBQUE7O1FBQTJDQztlQUFBQTs7UUFBOUJDO2VBQUFBOztRQUFzQkM7ZUFBQUE7O1FBeUJsQ0M7ZUFBQUE7O1FBekJpREM7ZUFBQUE7O1FBQTNDQztlQUFBQTs7UUFBYUM7ZUFBQUE7O1FBQVFDO2VBQUFBOztRQUUzQkM7ZUFBQUE7OzsyQkFKZTtBQUV4QixNQUFNLEVBQUVULEtBQUssRUFBRU0sSUFBSSxFQUFFSixLQUFLLEVBQUVLLE1BQU0sRUFBRUMsS0FBSyxFQUFFTCxNQUFNLEVBQUVGLEtBQUssRUFBRUksSUFBSSxFQUFFLEdBQUdLLHlCQUFjO0FBRWpGLFNBQVNELEtBQUtFLEtBQUssRUFBRUMsVUFBVSxFQUFFQyxRQUFRO0lBQzlDLE1BQU1DLFNBQVNILE1BQU1HLE1BQU0sRUFBRSxHQUFHO0lBRWhDLElBQUlGLGFBQWEsR0FBRztRQUNsQkEsYUFBYUUsU0FBU0YsWUFBWSxHQUFHO0lBQ3ZDO0lBRUEsSUFBSUMsV0FBVyxHQUFHO1FBQ2hCQSxXQUFXQyxTQUFTRCxVQUFVLEdBQUc7SUFDbkM7SUFFQSxJQUFJQSxhQUFhRSxVQUFVO1FBQ3pCLE1BQU1DLFFBQVFILFdBQVc7UUFFekJGLE1BQU1NLE1BQU0sQ0FBQ0Q7SUFDZjtJQUVBLE1BQU1BLFFBQVEsR0FDUkUsY0FBY04sWUFBWSxHQUFHO0lBRW5DRCxNQUFNTSxNQUFNLENBQUNELE9BQU9FO0FBQ3RCO0FBRU8sU0FBU2QsU0FBU08sS0FBSyxFQUFFLEdBQUdRLFFBQVE7SUFDekMsTUFBTUMsUUFBUUQsU0FBU0UsSUFBSSxDQUFDLENBQUNDO1FBQzNCLE1BQU1GLFFBQVFULE1BQU1QLFFBQVEsQ0FBQ2tCO1FBRTdCLElBQUlGLE9BQU87WUFDVCxPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU9BO0FBQ1QifQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-query",
3
3
  "author": "James Smith",
4
- "version": "4.1.203",
4
+ "version": "4.1.205",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-query",
7
7
  "description": "Occam's query functionality.",
@@ -17,14 +17,14 @@
17
17
  "devDependencies": {
18
18
  "@swc/core": "1.13.20",
19
19
  "easy": "^25.0.8",
20
- "easy-layout": "^6.0.334",
21
- "easy-with-style": "^3.0.575",
20
+ "easy-layout": "^6.0.335",
21
+ "easy-with-style": "^3.0.576",
22
22
  "esbuild": "0.11.14",
23
23
  "express": "^4.17.1",
24
24
  "juxtapose": "^4.0.143",
25
25
  "lively-cli": "^3.0.3",
26
26
  "watchful-cli": "^1.7.102",
27
- "with-style": "^5.0.322"
27
+ "with-style": "^5.0.325"
28
28
  },
29
29
  "scripts": {
30
30
  "start": "node ./bin/main.js",
package/src/query.js CHANGED
@@ -4,23 +4,22 @@ import { characters } from "necessary";
4
4
 
5
5
  import Expression from "./expression";
6
6
 
7
- import { push, clear, includes } from "./utilities/array";
7
+ import { push, includes } from "./utilities/array";
8
8
 
9
9
  const { WILDCARD_CHARACTER } = characters;
10
10
 
11
11
  export default class Query {
12
- constructor(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent, intermediateNodes) {
12
+ constructor(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent) {
13
13
  this.spread = spread;
14
14
  this.subQuery = subQuery;
15
15
  this.ruleNames = ruleNames;
16
16
  this.tokenTypes = tokenTypes;
17
17
  this.maximumDepth = maximumDepth;
18
18
  this.infiniteDescent = infiniteDescent;
19
- this.intermediateNodes = intermediateNodes;
20
19
  }
21
20
 
22
21
  getSpread() {
23
- return this.sprea;
22
+ return this.spread;
24
23
  }
25
24
 
26
25
  getSubQuery() {
@@ -43,94 +42,85 @@ export default class Query {
43
42
  return this.infiniteDescent;
44
43
  }
45
44
 
46
- getIntermediateNodes() {
47
- return this.intermediateNodes;
48
- }
49
-
50
45
  execute(node, depth = 0, maximumDepth = this.maximumDepth) {
51
46
  const nodes = [];
52
47
 
53
- this.clear();
54
-
55
- this.find(node, depth, maximumDepth);
48
+ const intermediateNodes = this.find(node, depth, maximumDepth);
56
49
 
57
- this.apply(nodes, depth, maximumDepth);
50
+ this.apply(nodes, depth, maximumDepth, intermediateNodes);
58
51
 
59
52
  return nodes;
60
53
  }
61
54
 
62
- clear() {
63
- clear(this.intermediateNodes);
64
- }
65
-
66
- find(node, depth, maximumDepth) {
67
- if (depth > maximumDepth) {
68
- return;
69
- }
70
-
71
- const nodeTerminalNode = node.isTerminalNode(),
72
- nodeNonTerminalNode = !nodeTerminalNode;
73
-
74
- let found;
75
-
76
- if (nodeTerminalNode) {
77
- const terminalNode = node, ///
78
- types = this.tokenTypes, ///
79
- type = terminalNode.getType();
55
+ find(node, depth, maximumDepth, intermediateNodes = []) {
56
+ if (depth <= maximumDepth) {
57
+ const nodeTerminalNode = node.isTerminalNode(),
58
+ nodeNonTerminalNode = !nodeTerminalNode;
80
59
 
81
- found = includes(types, type, WILDCARD_CHARACTER);
82
- }
60
+ if (nodeTerminalNode) {
61
+ const terminalNode = node, ///
62
+ type = terminalNode.getType(),
63
+ tokenType = type,
64
+ found = includes(this.tokenTypes, tokenType, WILDCARD_CHARACTER);
83
65
 
84
- if (nodeNonTerminalNode) {
85
- const nonTerminalNode = node, ///
86
- ruleName = nonTerminalNode.getRuleName();
66
+ if (found) {
67
+ const intermediateNode = terminalNode; ///
87
68
 
88
- found = includes(this.ruleNames, ruleName, WILDCARD_CHARACTER);
89
- }
69
+ intermediateNodes.push(intermediateNode);
70
+ }
71
+ }
90
72
 
91
- if (found) {
92
- const intermediateNode = node; ///
73
+ if (nodeNonTerminalNode) {
74
+ const nonTerminalNode = node, ///
75
+ ruleName = nonTerminalNode.getRuleName(),
76
+ found = includes(this.ruleNames, ruleName, WILDCARD_CHARACTER);
93
77
 
94
- this.intermediateNodes.push(intermediateNode);
95
- }
78
+ if (found) {
79
+ const intermediateNode = nonTerminalNode; ///
96
80
 
97
- if (this.infiniteDescent) {
98
- if (nodeNonTerminalNode) {
99
- depth++;
81
+ intermediateNodes.push(intermediateNode);
82
+ }
100
83
 
101
- const nonTerminalNode = node; ///
84
+ if (this.infiniteDescent) {
85
+ depth++;
102
86
 
103
- nonTerminalNode.forEachChildNode((childNode) => {
104
- this.find(childNode, depth, maximumDepth);
105
- });
87
+ nonTerminalNode.forEachChildNode((childNode) => {
88
+ this.find(childNode, depth, maximumDepth, intermediateNodes);
89
+ });
90
+ }
106
91
  }
107
92
  }
93
+
94
+ return intermediateNodes;
108
95
  }
109
96
 
110
- apply(nodes, depth, maximumDepth) {
111
- this.spread.adjustNodes(this.intermediateNodes);
97
+ apply(nodes, depth, maximumDepth, intermediateNodes) {
98
+ this.spread.adjustNodes(intermediateNodes);
112
99
 
113
100
  if (this.subQuery === null) {
114
- push(nodes, this.intermediateNodes);
115
- } else {
116
- this.intermediateNodes.forEach((intermediateNode) => {
117
- const intermediateNodeNonTerminalNode = intermediateNode.isNonTerminalNode();
101
+ push(nodes, intermediateNodes);
118
102
 
119
- if (intermediateNodeNonTerminalNode) {
120
- depth++;
103
+ return;
104
+ }
121
105
 
122
- const nonTerminalNode = intermediateNode; ///
106
+ depth++;
123
107
 
124
- this.subQuery.clear();
108
+ intermediateNodes.forEach((intermediateNode) => {
109
+ const intermedidateNodeNonTerminalNode = intermediateNode.isNonTerminalNode();
125
110
 
126
- nonTerminalNode.forEachChildNode((childNode) => {
127
- this.subQuery.find(childNode, depth, maximumDepth);
128
- });
111
+ if (intermedidateNodeNonTerminalNode) {
112
+ const nonTerminalNode = intermediateNode, ///
113
+ intermediateNodes = [];
129
114
 
130
- this.subQuery.apply(nodes, depth, maximumDepth);
131
- }
132
- });
133
- }
115
+ nonTerminalNode.forEachChildNode((childNode) => {
116
+ const node = childNode; ///
117
+
118
+ this.subQuery.find(node, depth, maximumDepth, intermediateNodes);
119
+ });
120
+
121
+ this.subQuery.apply(nodes, depth, maximumDepth, intermediateNodes);
122
+ }
123
+ });
134
124
  }
135
125
 
136
126
  static fromExpression(expression, maximumDepth = Infinity) {
@@ -152,8 +142,7 @@ export default class Query {
152
142
  tokenTypes = subExpression.getTokenTypes(),
153
143
  maximumDepth = Infinity,
154
144
  infiniteDescent = subExpression.isInfiniteDescent(),
155
- intermediateNodes = [],
156
- query = new Query(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent, intermediateNodes);
145
+ query = new Query(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent);
157
146
 
158
147
  return query;
159
148
  }
@@ -168,10 +157,9 @@ export default class Query {
168
157
  subQuery = subQueryFromExpression(expression),
169
158
  ruleNames = expression.getRuleNames(),
170
159
  tokenTypes = expression.getTokenTypes(),
171
- infiniteDescent = expression.isInfiniteDescent(),
172
- intermediateNodes = [];
160
+ infiniteDescent = expression.isInfiniteDescent();
173
161
 
174
- query = new Query(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent, intermediateNodes);
162
+ query = new Query(spread, subQuery, ruleNames, tokenTypes, maximumDepth, infiniteDescent);
175
163
  }
176
164
 
177
165
  return query;
@@ -5,11 +5,13 @@ import { arrayUtilities } from "necessary";
5
5
  export const { clear, push, first, second, third, fourth, fifth, last } = arrayUtilities;
6
6
 
7
7
  export function trim(array, startIndex, endIndex) {
8
- if (startIndex < 0) {
9
- const length = array.length; ///
8
+ const length = array.length; ///
10
9
 
10
+ if (startIndex < 0) {
11
11
  startIndex = length + startIndex; ///
12
+ }
12
13
 
14
+ if (endIndex < 0) {
13
15
  endIndex = length + endIndex; ///
14
16
  }
15
17
 
@@ -26,5 +28,13 @@ export function trim(array, startIndex, endIndex) {
26
28
  }
27
29
 
28
30
  export function includes(array, ...elements) {
29
- return elements.some((element) => array.includes(element));
31
+ const found = elements.some((element) => {
32
+ const found = array.includes(element);
33
+
34
+ if (found) {
35
+ return true;
36
+ }
37
+ });
38
+
39
+ return found;
30
40
  }