occam-languages 0.0.206 → 0.0.207

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/index.js CHANGED
@@ -30,6 +30,9 @@ _export(exports, {
30
30
  get ForwardPass () {
31
31
  return _forward.default;
32
32
  },
33
+ get ForwardZipPass () {
34
+ return _forwardZip.default;
35
+ },
33
36
  get Log () {
34
37
  return _log.default;
35
38
  },
@@ -75,6 +78,7 @@ const _zip = /*#__PURE__*/ _interop_require_default(require("./pass/zip"));
75
78
  const _async = /*#__PURE__*/ _interop_require_default(require("./pass/async"));
76
79
  const _simple = /*#__PURE__*/ _interop_require_default(require("./pass/simple"));
77
80
  const _forward = /*#__PURE__*/ _interop_require_default(require("./pass/forward"));
81
+ const _forwardZip = /*#__PURE__*/ _interop_require_default(require("./pass/forwardZip"));
78
82
  const _equivalence = /*#__PURE__*/ _interop_require_default(require("./pass/equivalence"));
79
83
  const _node = /*#__PURE__*/ _interop_require_default(require("./utilities/node"));
80
84
  const _query = /*#__PURE__*/ _interop_require_default(require("./utilities/query"));
@@ -88,4 +92,4 @@ function _interop_require_default(obj) {
88
92
  };
89
93
  }
90
94
 
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQnJlYWtQb2ludCB9IGZyb20gXCIuL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTm9uVGVybWluYWxOb2RlIH0gZnJvbSBcIi4vbm9uVGVybWluYWxOb2RlXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgWmlwUGFzcyB9IGZyb20gXCIuL3Bhc3MvemlwXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEFzeW5jUGFzcyB9IGZyb20gXCIuL3Bhc3MvYXN5bmNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2ltcGxlUGFzcyB9IGZyb20gXCIuL3Bhc3Mvc2ltcGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZvcndhcmRQYXNzIH0gZnJvbSBcIi4vcGFzcy9mb3J3YXJkXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVxdWl2YWxlbmNlUGFzcyB9IGZyb20gXCIuL3Bhc3MvZXF1aXZhbGVuY2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcXVlcnlVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZUNvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmVyaWZpY2F0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3ZlcmlmaWNhdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXN5bmNocm9ub3VzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiQXN5bmNQYXNzIiwiQnJlYWtQb2ludCIsIkNvbnRleHQiLCJFbGVtZW50IiwiRXF1aXZhbGVuY2VQYXNzIiwiRmlsZUNvbnRleHQiLCJGb3J3YXJkUGFzcyIsIkxvZyIsIk5vblRlcm1pbmFsTm9kZSIsIlJlbGVhc2VDb250ZXh0IiwiU2ltcGxlUGFzcyIsIlppcFBhc3MiLCJhc3luY2hyb25vdXNVdGlsaXRpZXMiLCJmaWxlQ29udGV4dFV0aWxpdGllcyIsIm5vZGVVdGlsaXRpZXMiLCJxdWVyeVV0aWxpdGllcyIsInJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIiwidmVyaWZpY2F0aW9uVXRpbGl0aWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFXb0JBO2VBQUFBLGNBQVM7O1FBTlRDO2VBQUFBLG1CQUFVOztRQURWQztlQUFBQSxnQkFBTzs7UUFEUEM7ZUFBQUEsZ0JBQU87O1FBV1BDO2VBQUFBLG9CQUFlOztRQVJmQztlQUFBQSxhQUFXOztRQU9YQztlQUFBQSxnQkFBVzs7UUFYWEM7ZUFBQUEsWUFBRzs7UUFNSEM7ZUFBQUEsd0JBQWU7O1FBRGZDO2VBQUFBLGdCQUFjOztRQUtkQztlQUFBQSxlQUFVOztRQUZWQztlQUFBQSxZQUFPOztRQVVQQztlQUFBQSxxQkFBcUI7O1FBRnJCQztlQUFBQSxvQkFBb0I7O1FBRnBCQztlQUFBQSxhQUFhOztRQUNiQztlQUFBQSxjQUFjOztRQUlkQztlQUFBQSx1QkFBdUI7O1FBRnZCQztlQUFBQSxxQkFBcUI7Ozs0REFqQlY7Z0VBQ0k7Z0VBQ0E7bUVBQ0c7NkRBQ0M7Z0VBQ0c7d0VBQ0M7NERBRVI7OERBQ0U7K0RBQ0M7Z0VBQ0M7b0VBQ0k7NkRBRUY7OERBQ0M7b0VBQ007cUVBQ0M7cUVBQ0E7dUVBQ0UifQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQnJlYWtQb2ludCB9IGZyb20gXCIuL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTm9uVGVybWluYWxOb2RlIH0gZnJvbSBcIi4vbm9uVGVybWluYWxOb2RlXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgWmlwUGFzcyB9IGZyb20gXCIuL3Bhc3MvemlwXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEFzeW5jUGFzcyB9IGZyb20gXCIuL3Bhc3MvYXN5bmNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2ltcGxlUGFzcyB9IGZyb20gXCIuL3Bhc3Mvc2ltcGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZvcndhcmRQYXNzIH0gZnJvbSBcIi4vcGFzcy9mb3J3YXJkXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZvcndhcmRaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy9mb3J3YXJkWmlwXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVxdWl2YWxlbmNlUGFzcyB9IGZyb20gXCIuL3Bhc3MvZXF1aXZhbGVuY2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcXVlcnlVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZUNvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmVyaWZpY2F0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3ZlcmlmaWNhdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXN5bmNocm9ub3VzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiQXN5bmNQYXNzIiwiQnJlYWtQb2ludCIsIkNvbnRleHQiLCJFbGVtZW50IiwiRXF1aXZhbGVuY2VQYXNzIiwiRmlsZUNvbnRleHQiLCJGb3J3YXJkUGFzcyIsIkZvcndhcmRaaXBQYXNzIiwiTG9nIiwiTm9uVGVybWluYWxOb2RlIiwiUmVsZWFzZUNvbnRleHQiLCJTaW1wbGVQYXNzIiwiWmlwUGFzcyIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImZpbGVDb250ZXh0VXRpbGl0aWVzIiwibm9kZVV0aWxpdGllcyIsInF1ZXJ5VXRpbGl0aWVzIiwicmVsZWFzZUNvbnRleHRVdGlsaXRpZXMiLCJ2ZXJpZmljYXRpb25VdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVdvQkE7ZUFBQUEsY0FBUzs7UUFOVEM7ZUFBQUEsbUJBQVU7O1FBRFZDO2VBQUFBLGdCQUFPOztRQURQQztlQUFBQSxnQkFBTzs7UUFZUEM7ZUFBQUEsb0JBQWU7O1FBVGZDO2VBQUFBLGFBQVc7O1FBT1hDO2VBQUFBLGdCQUFXOztRQUNYQztlQUFBQSxtQkFBYzs7UUFaZEM7ZUFBQUEsWUFBRzs7UUFNSEM7ZUFBQUEsd0JBQWU7O1FBRGZDO2VBQUFBLGdCQUFjOztRQUtkQztlQUFBQSxlQUFVOztRQUZWQztlQUFBQSxZQUFPOztRQVdQQztlQUFBQSxxQkFBcUI7O1FBRnJCQztlQUFBQSxvQkFBb0I7O1FBRnBCQztlQUFBQSxhQUFhOztRQUNiQztlQUFBQSxjQUFjOztRQUlkQztlQUFBQSx1QkFBdUI7O1FBRnZCQztlQUFBQSxxQkFBcUI7Ozs0REFsQlY7Z0VBQ0k7Z0VBQ0E7bUVBQ0c7NkRBQ0M7Z0VBQ0c7d0VBQ0M7NERBRVI7OERBQ0U7K0RBQ0M7Z0VBQ0M7bUVBQ0c7b0VBQ0M7NkRBRUY7OERBQ0M7b0VBQ007cUVBQ0M7cUVBQ0E7dUVBQ0UifQ==
@@ -17,19 +17,13 @@ class EquivalencePass {
17
17
  return success;
18
18
  }
19
19
  descend(leftChildNodes, rightChildNodes, ...remainingArguments) {
20
- let descended = false;
21
- const leftChildNodesLength = leftChildNodes.length, rightChildNodesLength = rightChildNodes.length;
22
- if (leftChildNodesLength === rightChildNodesLength) {
23
- const leftTerminalNodeMap = (0, _pass.terminalNodeMapFromNodes)(leftChildNodes), rightTerminalNodeMap = (0, _pass.terminalNodeMapFromNodes)(rightChildNodes), terminalNodeMapsEqual = (0, _pass.areTerminalNodeMapsEqual)(leftTerminalNodeMap, rightTerminalNodeMap);
24
- if (terminalNodeMapsEqual) {
25
- descended = leftChildNodes.every((leftChildNode, index)=>{
26
- const rightChildNode = rightChildNodes[index], leftNode = leftChildNode, rightNode = rightChildNode, visited = this.visitNode(leftNode, rightNode, ...remainingArguments);
27
- if (visited) {
28
- return true;
29
- }
30
- });
20
+ let descended;
21
+ descended = leftChildNodes.every((leftChildNode, index)=>{
22
+ const rightChildNode = rightChildNodes[index], leftNode = leftChildNode, rightNode = rightChildNode, visited = this.visitNode(leftNode, rightNode, ...remainingArguments);
23
+ if (visited) {
24
+ return true;
31
25
  }
32
- }
26
+ });
33
27
  return descended;
34
28
  }
35
29
  visitNode(leftNode, rightNode, ...remainingArguments) {
@@ -63,9 +57,12 @@ class EquivalencePass {
63
57
  let visited = false;
64
58
  const leftNonTerminalNodeRuleName = leftNonTerminalNode.getRuleName(), rightNonTerminalNodeRuleName = rightNonTerminalNode.getRuleName(); ///
65
59
  if (leftNonTerminalNodeRuleName === rightNonTerminalNodeRuleName) {
66
- const leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(), rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(), leftChildNodes = leftNonTerminalNodeChildNodes, rightChildNodes = rightNonTerminalNodeChildNodes, descended = this.descend(leftChildNodes, rightChildNodes, ...remainingArguments);
67
- if (descended) {
68
- visited = true;
60
+ const leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(), rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(), leftChildNodes = leftNonTerminalNodeChildNodes, rightChildNodes = rightNonTerminalNodeChildNodes, childNodesCongruent = (0, _pass.areChildNodesCongruent)(leftChildNodes, rightChildNodes);
61
+ if (childNodesCongruent) {
62
+ const descended = this.descend(leftChildNodes, rightChildNodes, ...remainingArguments);
63
+ if (descended) {
64
+ visited = true;
65
+ }
69
66
  }
70
67
  }
71
68
  return visited;
@@ -85,4 +82,4 @@ class EquivalencePass {
85
82
  }
86
83
  }
87
84
 
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2VxdWl2YWxlbmNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBub25UZXJtaW5hbE5vZGVRdWVyeSwgdGVybWluYWxOb2RlTWFwRnJvbU5vZGVzLCBhcmVUZXJtaW5hbE5vZGVNYXBzRXF1YWwgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Bhc3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXF1aXZhbGVuY2VQYXNzIHtcbiAgcnVuKGxlZnROb2RlLCByaWdodE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgY29uc3QgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKGxlZnROb2RlLCByaWdodE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBzdWNjZXNzID0gdmlzaXRlZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBkZXNjZW5kKGxlZnRDaGlsZE5vZGVzLCByaWdodENoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBkZXNjZW5kZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGxlZnRDaGlsZE5vZGVzTGVuZ3RoID0gbGVmdENoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgcmlnaHRDaGlsZE5vZGVzTGVuZ3RoID0gcmlnaHRDaGlsZE5vZGVzLmxlbmd0aDtcblxuICAgIGlmIChsZWZ0Q2hpbGROb2Rlc0xlbmd0aCA9PT0gcmlnaHRDaGlsZE5vZGVzTGVuZ3RoKSB7XG4gICAgICBjb25zdCBsZWZ0VGVybWluYWxOb2RlTWFwID0gdGVybWluYWxOb2RlTWFwRnJvbU5vZGVzKGxlZnRDaGlsZE5vZGVzKSxcbiAgICAgICAgICAgIHJpZ2h0VGVybWluYWxOb2RlTWFwID0gdGVybWluYWxOb2RlTWFwRnJvbU5vZGVzKHJpZ2h0Q2hpbGROb2RlcyksXG4gICAgICAgICAgICB0ZXJtaW5hbE5vZGVNYXBzRXF1YWwgPSBhcmVUZXJtaW5hbE5vZGVNYXBzRXF1YWwobGVmdFRlcm1pbmFsTm9kZU1hcCwgcmlnaHRUZXJtaW5hbE5vZGVNYXApO1xuXG4gICAgICBpZiAodGVybWluYWxOb2RlTWFwc0VxdWFsKSB7XG4gICAgICAgIGRlc2NlbmRlZCA9IGxlZnRDaGlsZE5vZGVzLmV2ZXJ5KChsZWZ0Q2hpbGROb2RlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJpZ2h0Q2hpbGROb2RlID0gcmlnaHRDaGlsZE5vZGVzW2luZGV4XSxcbiAgICAgICAgICAgICAgICBsZWZ0Tm9kZSA9IGxlZnRDaGlsZE5vZGUsIC8vL1xuICAgICAgICAgICAgICAgIHJpZ2h0Tm9kZSA9IHJpZ2h0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgICAgICB2aXNpdGVkID0gdGhpcy52aXNpdE5vZGUobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgIGlmICh2aXNpdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZXNjZW5kZWQ7XG4gIH1cblxuICB2aXNpdE5vZGUobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGxlZnROb2RlVGVybWluYWxOb2RlID0gbGVmdE5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICByaWdodE5vZGVUZXJtaW5hbE5vZGUgPSByaWdodE5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBsZWZ0Tm9kZU5vblRlcm1pbmFsTm9kZSA9IGxlZnROb2RlLmlzTm9uVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgcmlnaHROb2RlTm9uVGVybWluYWxOb2RlID0gcmlnaHROb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAobGVmdE5vZGVUZXJtaW5hbE5vZGUgJiYgcmlnaHROb2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBsZWZ0VGVybWluYWxOb2RlID0gbGVmdE5vZGUsICAvLy9cbiAgICAgICAgICAgIHJpZ2h0VGVybWluYWxOb2RlID0gcmlnaHROb2RlOyAgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0VGVybWluYWxOb2RlKGxlZnRUZXJtaW5hbE5vZGUsIHJpZ2h0VGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH0gZWxzZSBpZiAobGVmdE5vZGVOb25UZXJtaW5hbE5vZGUgJiYgcmlnaHROb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlID0gbGVmdE5vZGUsICAvLy9cbiAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlID0gcmlnaHROb2RlOyAvLy9cblxuICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb25UZXJtaW5hbE5vZGUobGVmdE5vblRlcm1pbmFsTm9kZSwgcmlnaHROb25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cblxuICB2aXNpdFRlcm1pbmFsTm9kZShsZWZ0VGVybWluYWxOb2RlLCByaWdodFRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7IC8vL1xuICAgIGxldCB2aXNpdGVkO1xuXG4gICAgdmlzaXRlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIHZpc2l0Tm9uVGVybWluYWxOb2RlKGxlZnROb25UZXJtaW5hbE5vZGUsIHJpZ2h0Tm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgbGV0IHsgbWFwcyB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIG1hcHMgPSBbIC8vL1xuICAgICAgLi4ubWFwcyxcbiAgICAgIHtcbiAgICAgICAgbGVmdE5vZGVRdWVyeTogbm9uVGVybWluYWxOb2RlUXVlcnksXG4gICAgICAgIHJpZ2h0Tm9kZVF1ZXJ5OiBub25UZXJtaW5hbE5vZGVRdWVyeSxcbiAgICAgICAgcnVuOiAobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSA9PiB7XG4gICAgICAgICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIGNvbnN0IGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IGxlZnROb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSwgLy8vXG4gICAgICAgICAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gICAgICAgICAgaWYgKGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gcmlnaHROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBsZWZ0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIGxlZnRDaGlsZE5vZGVzID0gbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICAgICAgcmlnaHRDaGlsZE5vZGVzID0gcmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICAgIGRlc2NlbmRlZCA9IHRoaXMuZGVzY2VuZChsZWZ0Q2hpbGROb2RlcywgcmlnaHRDaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgICAgICBpZiAoZGVzY2VuZGVkKSB7XG4gICAgICAgICAgICAgIHZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2aXNpdGVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuXG4gICAgbWFwcy5zb21lKChtYXApID0+IHtcbiAgICAgIGNvbnN0IHsgbGVmdE5vZGVRdWVyeSwgcmlnaHROb2RlUXVlcnksIHJ1biB9ID0gbWFwO1xuXG4gICAgICBjb25zdCBsZWZ0Tm9kZSA9IGxlZnROb2RlUXVlcnkobGVmdE5vblRlcm1pbmFsTm9kZSksICAvLy9cbiAgICAgICAgICAgIHJpZ2h0Tm9kZSA9IHJpZ2h0Tm9kZVF1ZXJ5KHJpZ2h0Tm9uVGVybWluYWxOb2RlKTsgIC8vL1xuXG4gICAgICBpZiAoKGxlZnROb2RlICE9PSBudWxsKSAmJiAocmlnaHROb2RlICE9PSBudWxsKSkge1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gcnVuKGxlZnROb2RlLCByaWdodE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgdmlzaXRlZCA9IHN1Y2Nlc3M7ICAvLy9cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG59XG4iXSwibmFtZXMiOlsiRXF1aXZhbGVuY2VQYXNzIiwicnVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJzdWNjZXNzIiwidmlzaXRlZCIsInZpc2l0Tm9kZSIsImRlc2NlbmQiLCJsZWZ0Q2hpbGROb2RlcyIsInJpZ2h0Q2hpbGROb2RlcyIsImRlc2NlbmRlZCIsImxlZnRDaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwicmlnaHRDaGlsZE5vZGVzTGVuZ3RoIiwibGVmdFRlcm1pbmFsTm9kZU1hcCIsInRlcm1pbmFsTm9kZU1hcEZyb21Ob2RlcyIsInJpZ2h0VGVybWluYWxOb2RlTWFwIiwidGVybWluYWxOb2RlTWFwc0VxdWFsIiwiYXJlVGVybWluYWxOb2RlTWFwc0VxdWFsIiwiZXZlcnkiLCJsZWZ0Q2hpbGROb2RlIiwiaW5kZXgiLCJyaWdodENoaWxkTm9kZSIsImxlZnROb2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJyaWdodE5vZGVUZXJtaW5hbE5vZGUiLCJsZWZ0Tm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwicmlnaHROb2RlTm9uVGVybWluYWxOb2RlIiwibGVmdFRlcm1pbmFsTm9kZSIsInJpZ2h0VGVybWluYWxOb2RlIiwidmlzaXRUZXJtaW5hbE5vZGUiLCJsZWZ0Tm9uVGVybWluYWxOb2RlIiwicmlnaHROb25UZXJtaW5hbE5vZGUiLCJ2aXNpdE5vblRlcm1pbmFsTm9kZSIsIm1hcHMiLCJsZWZ0Tm9kZVF1ZXJ5Iiwibm9uVGVybWluYWxOb2RlUXVlcnkiLCJyaWdodE5vZGVRdWVyeSIsImxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwicmlnaHROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImxlZnROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsInNvbWUiLCJtYXAiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBcUJBOzs7c0JBRm9FO0FBRTFFLE1BQU1BO0lBQ25CQyxJQUFJQyxRQUFRLEVBQUVDLFNBQVMsRUFBRSxHQUFHQyxrQkFBa0IsRUFBRTtRQUM5QyxJQUFJQztRQUVKLE1BQU1DLFVBQVUsSUFBSSxDQUFDQyxTQUFTLENBQUNMLFVBQVVDLGNBQWNDO1FBRXZEQyxVQUFVQyxTQUFVLEdBQUc7UUFFdkIsT0FBT0Q7SUFDVDtJQUVBRyxRQUFRQyxjQUFj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
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2VxdWl2YWxlbmNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBub25UZXJtaW5hbE5vZGVRdWVyeSwgYXJlQ2hpbGROb2Rlc0NvbmdydWVudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvcGFzc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcXVpdmFsZW5jZVBhc3Mge1xuICBydW4obGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBjb25zdCB2aXNpdGVkID0gdGhpcy52aXNpdE5vZGUobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIHN1Y2Nlc3MgPSB2aXNpdGVkOyAgLy8vXG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIGRlc2NlbmQobGVmdENoaWxkTm9kZXMsIHJpZ2h0Q2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IGRlc2NlbmRlZDtcblxuICAgIGRlc2NlbmRlZCA9IGxlZnRDaGlsZE5vZGVzLmV2ZXJ5KChsZWZ0Q2hpbGROb2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgcmlnaHRDaGlsZE5vZGUgPSByaWdodENoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbGVmdE5vZGUgPSBsZWZ0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHJpZ2h0Tm9kZSA9IHJpZ2h0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9kZShsZWZ0Tm9kZSwgcmlnaHROb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZXNjZW5kZWQ7XG4gIH1cblxuICB2aXNpdE5vZGUobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGxlZnROb2RlVGVybWluYWxOb2RlID0gbGVmdE5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICByaWdodE5vZGVUZXJtaW5hbE5vZGUgPSByaWdodE5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBsZWZ0Tm9kZU5vblRlcm1pbmFsTm9kZSA9IGxlZnROb2RlLmlzTm9uVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgcmlnaHROb2RlTm9uVGVybWluYWxOb2RlID0gcmlnaHROb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAobGVmdE5vZGVUZXJtaW5hbE5vZGUgJiYgcmlnaHROb2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBsZWZ0VGVybWluYWxOb2RlID0gbGVmdE5vZGUsICAvLy9cbiAgICAgICAgICAgIHJpZ2h0VGVybWluYWxOb2RlID0gcmlnaHROb2RlOyAgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0VGVybWluYWxOb2RlKGxlZnRUZXJtaW5hbE5vZGUsIHJpZ2h0VGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH0gZWxzZSBpZiAobGVmdE5vZGVOb25UZXJtaW5hbE5vZGUgJiYgcmlnaHROb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlID0gbGVmdE5vZGUsICAvLy9cbiAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlID0gcmlnaHROb2RlOyAvLy9cblxuICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb25UZXJtaW5hbE5vZGUobGVmdE5vblRlcm1pbmFsTm9kZSwgcmlnaHROb25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cblxuICB2aXNpdFRlcm1pbmFsTm9kZShsZWZ0VGVybWluYWxOb2RlLCByaWdodFRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7IC8vL1xuICAgIGxldCB2aXNpdGVkO1xuXG4gICAgdmlzaXRlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIHZpc2l0Tm9uVGVybWluYWxOb2RlKGxlZnROb25UZXJtaW5hbE5vZGUsIHJpZ2h0Tm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgbGV0IHsgbWFwcyB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIG1hcHMgPSBbIC8vL1xuICAgICAgLi4ubWFwcyxcbiAgICAgIHtcbiAgICAgICAgbGVmdE5vZGVRdWVyeTogbm9uVGVybWluYWxOb2RlUXVlcnksXG4gICAgICAgIHJpZ2h0Tm9kZVF1ZXJ5OiBub25UZXJtaW5hbE5vZGVRdWVyeSxcbiAgICAgICAgcnVuOiAobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSA9PiB7XG4gICAgICAgICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIGNvbnN0IGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IGxlZnROb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSwgLy8vXG4gICAgICAgICAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gICAgICAgICAgaWYgKGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gcmlnaHROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBsZWZ0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIGxlZnRDaGlsZE5vZGVzID0gbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICAgICAgcmlnaHRDaGlsZE5vZGVzID0gcmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZXNDb25ncnVlbnQgPSBhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50KGxlZnRDaGlsZE5vZGVzLCByaWdodENoaWxkTm9kZXMpO1xuXG4gICAgICAgICAgICBpZiAoY2hpbGROb2Rlc0NvbmdydWVudCkge1xuICAgICAgICAgICAgICBjb25zdCBkZXNjZW5kZWQgPSB0aGlzLmRlc2NlbmQobGVmdENoaWxkTm9kZXMsIHJpZ2h0Q2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgICBpZiAoZGVzY2VuZGVkKSB7XG4gICAgICAgICAgICAgICAgdmlzaXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmlzaXRlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cblxuICAgIG1hcHMuc29tZSgobWFwKSA9PiB7XG4gICAgICBjb25zdCB7IGxlZnROb2RlUXVlcnksIHJpZ2h0Tm9kZVF1ZXJ5LCBydW4gfSA9IG1hcDtcblxuICAgICAgY29uc3QgbGVmdE5vZGUgPSBsZWZ0Tm9kZVF1ZXJ5KGxlZnROb25UZXJtaW5hbE5vZGUpLCAgLy8vXG4gICAgICAgICAgICByaWdodE5vZGUgPSByaWdodE5vZGVRdWVyeShyaWdodE5vblRlcm1pbmFsTm9kZSk7ICAvLy9cblxuICAgICAgaWYgKChsZWZ0Tm9kZSAhPT0gbnVsbCkgJiYgKHJpZ2h0Tm9kZSAhPT0gbnVsbCkpIHtcbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9IHJ1bihsZWZ0Tm9kZSwgcmlnaHROb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgIHZpc2l0ZWQgPSBzdWNjZXNzOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkVxdWl2YWxlbmNlUGFzcyIsInJ1biIsImxlZnROb2RlIiwicmlnaHROb2RlIiwicmVtYWluaW5nQXJndW1lbnRzIiwic3VjY2VzcyIsInZpc2l0ZWQiLCJ2aXNpdE5vZGUiLCJkZXNjZW5kIiwibGVmdENoaWxkTm9kZXMiLCJyaWdodENoaWxkTm9kZXMiLCJkZXNjZW5kZWQiLCJldmVyeSIsImxlZnRDaGlsZE5vZGUiLCJpbmRleCIsInJpZ2h0Q2hpbGROb2RlIiwibGVmdE5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInJpZ2h0Tm9kZVRlcm1pbmFsTm9kZSIsImxlZnROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJyaWdodE5vZGVOb25UZXJtaW5hbE5vZGUiLCJsZWZ0VGVybWluYWxOb2RlIiwicmlnaHRUZXJtaW5hbE5vZGUiLCJ2aXNpdFRlcm1pbmFsTm9kZSIsImxlZnROb25UZXJtaW5hbE5vZGUiLCJyaWdodE5vblRlcm1pbmFsTm9kZSIsInZpc2l0Tm9uVGVybWluYWxOb2RlIiwibWFwcyIsImxlZnROb2RlUXVlcnkiLCJub25UZXJtaW5hbE5vZGVRdWVyeSIsInJpZ2h0Tm9kZVF1ZXJ5IiwibGVmdE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJyaWdodE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwibGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwicmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiY2hpbGROb2Rlc0NvbmdydWVudCIsImFyZUNoaWxkTm9kZXNDb25ncnVlbnQiLCJzb21lIiwibWFwIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXFCQTs7O3NCQUZ3QztBQUU5QyxNQUFNQTtJQUNuQkMsSUFBSUMsUUFBUSxFQUFFQyxTQUFTLEVBQUUsR0FBR0Msa0JBQWtCLEVBQUU7UUFDOUMsSUFBSUM7UUFFSixNQUFNQyxVQUFVLElBQUksQ0FBQ0MsU0FBUyxDQUFDTCxVQUFVQyxjQUFjQztRQUV2REMsVUFBVUMsU0FBVSxHQUFHO1FBRXZCLE9BQU9EO0lBQ1Q7SUFFQUcsUUFBUUMsY0FBYyxFQUFFQyxlQUFlLEVBQUUsR0FBR04sa0JBQWtCLEVBQUU7UUFDOUQsSUFBSU87UUFFSkEsWUFBWUYsZUFBZUcsS0FBSyxDQUFDLENBQUNDLGVBQWVDO1lBQy9DLE1BQU1DLGlCQUFpQkwsZUFBZSxDQUFDSSxNQUFNLEVBQ3ZDWixXQUFXVyxlQUNYVixZQUFZWSxnQkFDWlQsVUFBVSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0wsVUFBVUMsY0FBY0M7WUFFdkQsSUFBSUUsU0FBUztnQkFDWCxPQUFPO1lBQ1Q7UUFDRjtRQUVBLE9BQU9LO0lBQ1Q7SUFFQUosVUFBVUwsUUFBUSxFQUFFQyxTQUFTLEVBQUUsR0FBR0Msa0JBQWtCLEVBQUU7UUFDcEQsSUFBSUUsVUFBVTtRQUVkLE1BQU1VLHVCQUF1QmQsU0FBU2UsY0FBYyxJQUM5Q0Msd0JBQXdCZixVQUFVYyxjQUFjLElBQ2hERSwwQkFBMEJqQixTQUFTa0IsaUJBQWlCLElBQ3BEQywyQkFBMkJsQixVQUFVaUIsaUJBQWlCO1FBRTVELElBQUksT0FBTztRQUNULEdBQUc7UUFDTCxPQUFPLElBQUlKLHdCQUF3QkUsdUJBQXVCO1lBQ3hELE1BQU1JLG1CQUFtQnBCLFVBQ25CcUIsb0JBQW9CcEIsV0FBWSxHQUFHO1lBRXpDRyxVQUFVLElBQUksQ0FBQ2tCLGlCQUFpQixDQUFDRixrQkFBa0JDLHNCQUFzQm5CO1FBQzNFLE9BQU8sSUFBSWUsMkJBQTJCRSwwQkFBMEI7WUFDOUQsTUFBTUksc0JBQXNCdkIsVUFDdEJ3Qix1QkFBdUJ2QixXQUFXLEdBQUc7WUFFM0NHLFVBQVUsSUFBSSxDQUFDcUIsb0JBQW9CLENBQUNGLHFCQUFxQkMseUJBQXlCdEI7UUFDcEY7UUFFQSxPQUFPRTtJQUNUO0lBRUFrQixrQkFBa0JGLGdCQUFnQixFQUFFQyxpQkFBaUIsRUFBRSxHQUFHbkIsa0JBQWtCLEVBQUU7UUFDNUUsSUFBSUU7UUFFSkEsVUFBVTtRQUVWLE9BQU9BO0lBQ1Q7SUFFQXFCLHFCQUFxQkYsbUJBQW1CLEVBQUVDLG9CQUFvQixFQUFFLEdBQUd0QixrQkFBa0IsRUFBRTtRQUNyRixJQUFJRSxVQUFVO1FBRWQsSUFBSSxFQUFFc0IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVc7UUFFL0JBLE9BQU87ZUFDRkE7WUFDSDtnQkFDRUMsZUFBZUMsMEJBQW9CO2dCQUNuQ0MsZ0JBQWdCRCwwQkFBb0I7Z0JBQ3BDN0IsS0FBSyxDQUFDQyxVQUFVQyxXQUFXLEdBQUdDO29CQUM1QixJQUFJRSxVQUFVO29CQUVkLE1BQU0wQiw4QkFBOEJQLG9CQUFvQlEsV0FBVyxJQUM3REMsK0JBQStCUixxQkFBcUJPLFdBQVcsSUFBSSxHQUFHO29CQUU1RSxJQUFJRCxnQ0FBZ0NFLDhCQUE4Qjt3QkFDaEUsTUFBTUMsZ0NBQWdDVixvQkFBb0JXLGFBQWEsSUFDakVDLGlDQUFpQ1gscUJBQXFCVSxhQUFhLElBQ25FM0IsaUJBQWlCMEIsK0JBQ2pCekIsa0JBQWtCMkIsZ0NBQ2xCQyxzQkFBc0JDLElBQUFBLDRCQUFzQixFQUFDOUIsZ0JBQWdCQzt3QkFFbkUsSUFBSTRCLHFCQUFxQjs0QkFDdkIsTUFBTTNCLFlBQVksSUFBSSxDQUFDSCxPQUFPLENBQUNDLGdCQUFnQkMsb0JBQW9CTjs0QkFFbkUsSUFBSU8sV0FBVztnQ0FDYkwsVUFBVTs0QkFDWjt3QkFDRjtvQkFDRjtvQkFFQSxPQUFPQTtnQkFDVDtZQUNGO1NBQ0Q7UUFFRHNCLEtBQUtZLElBQUksQ0FBQyxDQUFDQztZQUNULE1BQU0sRUFBRVosYUFBYSxFQUFFRSxjQUFjLEVBQUU5QixHQUFHLEVBQUUsR0FBR3dDO1lBRS9DLE1BQU12QyxXQUFXMkIsY0FBY0osc0JBQ3pCdEIsWUFBWTRCLGVBQWVMLHVCQUF3QixHQUFHO1lBRTVELElBQUksQUFBQ3hCLGFBQWEsUUFBVUMsY0FBYyxNQUFPO2dCQUMvQyxNQUFNRSxVQUFVSixJQUFJQyxVQUFVQyxjQUFjQztnQkFFNUNFLFVBQVVELFNBQVUsR0FBRztnQkFFdkIsT0FBTztZQUNUO1FBQ0Y7UUFFQSxPQUFPQztJQUNUO0FBQ0YifQ==
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ForwardZipPass;
9
+ }
10
+ });
11
+ const _pass = require("../utilities/pass");
12
+ class ForwardZipPass {
13
+ run(generalNode, specificNode, ...remainingArguments) {
14
+ let success;
15
+ const visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
16
+ success = visited; ///
17
+ return success;
18
+ }
19
+ descend(index, generalChildNodes, specificChildNodes, ...remainingArguments) {
20
+ let descendedForward = false;
21
+ const descendForward = remainingArguments.pop(), generalChildNodesLength = generalChildNodes.length;
22
+ if (index === generalChildNodesLength) {
23
+ descendedForward = descendForward();
24
+ } else {
25
+ const generalChildNode = generalChildNodes[index], specificChildNode = specificChildNodes[index], generalNode = generalChildNode, specificNode = specificChildNode, visited = this.visitNode(generalNode, specificNode, ...remainingArguments, ()=>{
26
+ remainingArguments.push(descendForward);
27
+ const aheadIndex = index + 1, descendedForward = this.descend(aheadIndex, generalChildNodes, specificChildNodes, ...remainingArguments);
28
+ return descendedForward;
29
+ });
30
+ if (visited) {
31
+ descendedForward = true;
32
+ }
33
+ }
34
+ return descendedForward;
35
+ }
36
+ visitNode(generalNode, specificNode, ...remainingArguments) {
37
+ let visited = false;
38
+ const generalNodeTerminalNode = generalNode.isTerminalNode(), specificNodeTerminalNode = specificNode.isTerminalNode(), generalNodeNonTerminalNode = generalNode.isNonTerminalNode(), specificNodeNonTerminalNode = specificNode.isNonTerminalNode();
39
+ if (false) {
40
+ ///
41
+ } else if (generalNodeTerminalNode && specificNodeTerminalNode) {
42
+ const generalTerminalNode = generalNode, specificTerminalNode = specificNode; ///
43
+ visited = this.visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments);
44
+ } else if (generalNodeNonTerminalNode && specificNodeNonTerminalNode) {
45
+ const generalNonTerminalNode = generalNode, specificNonTerminalNode = specificNode; ///
46
+ visited = this.visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments);
47
+ }
48
+ return visited;
49
+ }
50
+ visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments) {
51
+ let visited = false;
52
+ const descendForward = remainingArguments.pop(), descendedForward = descendForward();
53
+ if (descendedForward) {
54
+ visited = true;
55
+ }
56
+ remainingArguments.push(descendForward);
57
+ return visited;
58
+ }
59
+ visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
60
+ let visited = false;
61
+ let { maps } = this.constructor;
62
+ maps = [
63
+ ...maps,
64
+ {
65
+ generalNodeQuery: _pass.nonTerminalNodeQuery,
66
+ specificNodeQuery: _pass.nonTerminalNodeQuery,
67
+ run: (generalNode, specificNode, ...remainingArguments)=>{
68
+ let visited = false;
69
+ const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
70
+ if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
71
+ const index = 0, generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(), specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(), generalChildNodes = generalNonTerminalNodeChildNodes, specificChildNodes = specificNonTerminalNodeChildNodes, childNodesCongruent = (0, _pass.areChildNodesCongruent)(generalChildNodes, specificChildNodes);
72
+ if (childNodesCongruent) {
73
+ const descended = this.descend(index, generalChildNodes, specificChildNodes, ...remainingArguments);
74
+ if (descended) {
75
+ visited = true;
76
+ }
77
+ }
78
+ }
79
+ return visited;
80
+ }
81
+ }
82
+ ];
83
+ maps.some((map)=>{
84
+ const { generalNodeQuery, specificNodeQuery, run } = map;
85
+ const generalNode = generalNodeQuery(generalNonTerminalNode), specificNode = specificNodeQuery(specificNonTerminalNode); ///
86
+ if (generalNode !== null && specificNode !== null) {
87
+ const success = run(generalNode, specificNode, ...remainingArguments);
88
+ visited = success; ///
89
+ return true;
90
+ }
91
+ });
92
+ return visited;
93
+ }
94
+ }
95
+
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2ZvcndhcmRaaXAuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LCBhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9wYXNzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcndhcmRaaXBQYXNzIHtcbiAgcnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgY29uc3QgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBzdWNjZXNzID0gdmlzaXRlZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBkZXNjZW5kKGluZGV4LCBnZW5lcmFsQ2hpbGROb2Rlcywgc3BlY2lmaWNDaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgZGVzY2VuZGVkRm9yd2FyZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGVzY2VuZEZvcndhcmQgPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksICAvLy9cbiAgICAgICAgICBnZW5lcmFsQ2hpbGROb2Rlc0xlbmd0aCA9IGdlbmVyYWxDaGlsZE5vZGVzLmxlbmd0aDtcblxuICAgIGlmIChpbmRleCA9PT0gZ2VuZXJhbENoaWxkTm9kZXNMZW5ndGgpIHtcbiAgICAgIGRlc2NlbmRlZEZvcndhcmQgPSBkZXNjZW5kRm9yd2FyZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBnZW5lcmFsQ2hpbGROb2RlID0gZ2VuZXJhbENoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgc3BlY2lmaWNDaGlsZE5vZGUgPSBzcGVjaWZpY0NoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsQ2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljTm9kZSA9IHNwZWNpZmljQ2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9kZShnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMsICgpID0+IHtcbiAgICAgICAgICAgICAgcmVtYWluaW5nQXJndW1lbnRzLnB1c2goZGVzY2VuZEZvcndhcmQpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGFoZWFkSW5kZXggPSBpbmRleCArIDEsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NlbmRlZEZvcndhcmQgPSB0aGlzLmRlc2NlbmQoYWhlYWRJbmRleCwgZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgICByZXR1cm4gZGVzY2VuZGVkRm9yd2FyZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICBkZXNjZW5kZWRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVzY2VuZGVkRm9yd2FyZDtcbiAgfVxuXG4gIHZpc2l0Tm9kZShnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZ2VuZXJhbE5vZGVUZXJtaW5hbE5vZGUgPSBnZW5lcmFsTm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHNwZWNpZmljTm9kZVRlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIGdlbmVyYWxOb2RlTm9uVGVybWluYWxOb2RlID0gZ2VuZXJhbE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBzcGVjaWZpY05vZGVOb25UZXJtaW5hbE5vZGUgPSBzcGVjaWZpY05vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmIChnZW5lcmFsTm9kZVRlcm1pbmFsTm9kZSAmJiBzcGVjaWZpY05vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IGdlbmVyYWxUZXJtaW5hbE5vZGUgPSBnZW5lcmFsTm9kZSwgIC8vL1xuICAgICAgICAgICAgc3BlY2lmaWNUZXJtaW5hbE5vZGUgPSBzcGVjaWZpY05vZGU7ICAvLy9cblxuICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXRUZXJtaW5hbE5vZGUoZ2VuZXJhbFRlcm1pbmFsTm9kZSwgc3BlY2lmaWNUZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfSBlbHNlIGlmIChnZW5lcmFsTm9kZU5vblRlcm1pbmFsTm9kZSAmJiBzcGVjaWZpY05vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IGdlbmVyYWxOb25UZXJtaW5hbE5vZGUgPSBnZW5lcmFsTm9kZSwgIC8vL1xuICAgICAgICAgICAgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUgPSBzcGVjaWZpY05vZGU7IC8vL1xuXG4gICAgICB2aXNpdGVkID0gdGhpcy52aXNpdE5vblRlcm1pbmFsTm9kZShnZW5lcmFsTm9uVGVybWluYWxOb2RlLCBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIHZpc2l0VGVybWluYWxOb2RlKGdlbmVyYWxUZXJtaW5hbE5vZGUsIHNwZWNpZmljVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGVzY2VuZEZvcndhcmQgPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksIC8vL1xuICAgICAgICAgIGRlc2NlbmRlZEZvcndhcmQgPSBkZXNjZW5kRm9yd2FyZCgpO1xuXG4gICAgaWYgKGRlc2NlbmRlZEZvcndhcmQpIHtcbiAgICAgIHZpc2l0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJlbWFpbmluZ0FyZ3VtZW50cy5wdXNoKGRlc2NlbmRGb3J3YXJkKTtcblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG5cbiAgdmlzaXROb25UZXJtaW5hbE5vZGUoZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSwgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICBsZXQgeyBtYXBzIH0gPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gICAgbWFwcyA9IFsgLy8vXG4gICAgICAuLi5tYXBzLFxuICAgICAge1xuICAgICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBub25UZXJtaW5hbE5vZGVRdWVyeSxcbiAgICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LFxuICAgICAgICBydW46IChnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpID0+IHtcbiAgICAgICAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgY29uc3QgZ2VuZXJhbE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gZ2VuZXJhbE5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLCAvLy9cbiAgICAgICAgICAgICAgICBzcGVjaWZpY05vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgICAgICAgICBpZiAoZ2VuZXJhbE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID09PSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZVJ1bGVOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IDAsXG4gICAgICAgICAgICAgICAgICBnZW5lcmFsTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGdlbmVyYWxOb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICAgICAgZ2VuZXJhbENoaWxkTm9kZXMgPSBnZW5lcmFsTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY0NoaWxkTm9kZXMgPSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICAgICAgY2hpbGROb2Rlc0NvbmdydWVudCA9IGFyZUNoaWxkTm9kZXNDb25ncnVlbnQoZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2Rlcyk7XG5cbiAgICAgICAgICAgIGlmIChjaGlsZE5vZGVzQ29uZ3J1ZW50KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRlc2NlbmRlZCA9IHRoaXMuZGVzY2VuZChpbmRleCwgZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgICBpZiAoZGVzY2VuZGVkKSB7XG4gICAgICAgICAgICAgICAgdmlzaXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmlzaXRlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cblxuICAgIG1hcHMuc29tZSgobWFwKSA9PiB7XG4gICAgICBjb25zdCB7IGdlbmVyYWxOb2RlUXVlcnksIHNwZWNpZmljTm9kZVF1ZXJ5LCBydW4gfSA9IG1hcDtcblxuICAgICAgY29uc3QgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsTm9kZVF1ZXJ5KGdlbmVyYWxOb25UZXJtaW5hbE5vZGUpLCAgLy8vXG4gICAgICAgIHNwZWNpZmljTm9kZSA9IHNwZWNpZmljTm9kZVF1ZXJ5KHNwZWNpZmljTm9uVGVybWluYWxOb2RlKTsgIC8vL1xuXG4gICAgICBpZiAoKGdlbmVyYWxOb2RlICE9PSBudWxsKSAmJiAoc3BlY2lmaWNOb2RlICE9PSBudWxsKSkge1xuICAgICAgICBjb25zdCBzdWNjZXNzICA9IHJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgIHZpc2l0ZWQgPSBzdWNjZXNzOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkZvcndhcmRaaXBQYXNzIiwicnVuIiwiZ2VuZXJhbE5vZGUiLCJzcGVjaWZpY05vZGUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJzdWNjZXNzIiwidmlzaXRlZCIsInZpc2l0Tm9kZSIsImRlc2NlbmQiLCJpbmRleCIsImdlbmVyYWxDaGlsZE5vZGVzIiwic3BlY2lmaWNDaGlsZE5vZGVzIiwiZGVzY2VuZGVkRm9yd2FyZCIsImRlc2NlbmRGb3J3YXJkIiwicG9wIiwiZ2VuZXJhbENoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJnZW5lcmFsQ2hpbGROb2RlIiwic3BlY2lmaWNDaGlsZE5vZGUiLCJwdXNoIiwiYWhlYWRJbmRleCIsImdlbmVyYWxOb2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vZGVUZXJtaW5hbE5vZGUiLCJnZW5lcmFsTm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwic3BlY2lmaWNOb2RlTm9uVGVybWluYWxOb2RlIiwiZ2VuZXJhbFRlcm1pbmFsTm9kZSIsInNwZWNpZmljVGVybWluYWxOb2RlIiwidmlzaXRUZXJtaW5hbE5vZGUiLCJnZW5lcmFsTm9uVGVybWluYWxOb2RlIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGUiLCJ2aXNpdE5vblRlcm1pbmFsTm9kZSIsIm1hcHMiLCJnZW5lcmFsTm9kZVF1ZXJ5Iiwibm9uVGVybWluYWxOb2RlUXVlcnkiLCJzcGVjaWZpY05vZGVRdWVyeSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInNwZWNpZmljTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsImNoaWxkTm9kZXNDb25ncnVlbnQiLCJhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50IiwiZGVzY2VuZGVkIiwic29tZSIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OztzQkFGd0M7QUFFOUMsTUFBTUE7SUFDbkJDLElBQUlDLFdBQVcsRUFBRUMsWUFBWSxFQUFFLEdBQUdDLGtCQUFrQixFQUFFO1FBQ3BELElBQUlDO1FBRUosTUFBTUMsVUFBVSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0wsYUFBYUMsaUJBQWlCQztRQUU3REMsVUFBVUMsU0FBVSxHQUFHO1FBRXZCLE9BQU9EO0lBQ1Q7SUFFQUcsUUFBUUMsS0FBSyxFQUFFQyxpQkFBaUIsRUFBRUMsa0JBQWtCLEVBQUUsR0FBR1Asa0JBQWtCLEVBQUU7UUFDM0UsSUFBSVEsbUJBQW1CO1FBRXZCLE1BQU1DLGlCQUFpQlQsbUJBQW1CVSxHQUFHLElBQ3ZDQywwQkFBMEJMLGtCQUFrQk0sTUFBTTtRQUV4RCxJQUFJUCxVQUFVTSx5QkFBeUI7WUFDckNILG1CQUFtQkM7UUFDckIsT0FBTztZQUNMLE1BQU1JLG1CQUFtQlAsaUJBQWlCLENBQUNELE1BQU0sRUFDM0NTLG9CQUFvQlAsa0JBQWtCLENBQUNGLE1BQU0sRUFDN0NQLGNB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
package/lib/pass/zip.js CHANGED
@@ -18,20 +18,14 @@ class ZipPass {
18
18
  }
19
19
  descend(generalChildNodes, specificChildNodes, ...remainingArguments) {
20
20
  let descended = false;
21
- const generalChildNodesLength = generalChildNodes.length, specificChildNodesLength = specificChildNodes.length;
22
- if (generalChildNodesLength === specificChildNodesLength) {
23
- const specificTerminalNodeMap = (0, _pass.terminalNodeMapFromNodes)(specificChildNodes), generalTerminalNodeMap = (0, _pass.terminalNodeMapFromNodes)(generalChildNodes), terminalNodeMapsEqual = (0, _pass.areTerminalNodeMapsEqual)(generalTerminalNodeMap, specificTerminalNodeMap);
24
- if (terminalNodeMapsEqual) {
25
- const visited = generalChildNodes.every((generalChildNode, index)=>{
26
- const specificChildNode = specificChildNodes[index], specificNode = specificChildNode, generalNode = generalChildNode, visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
27
- if (visited) {
28
- return true;
29
- }
30
- });
31
- if (visited) {
32
- descended = true;
33
- }
21
+ const visited = generalChildNodes.every((generalChildNode, index)=>{
22
+ const specificChildNode = specificChildNodes[index], specificNode = specificChildNode, generalNode = generalChildNode, visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
23
+ if (visited) {
24
+ return true;
34
25
  }
26
+ });
27
+ if (visited) {
28
+ descended = true;
35
29
  }
36
30
  return descended;
37
31
  }
@@ -66,9 +60,12 @@ class ZipPass {
66
60
  let visited = false;
67
61
  const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
68
62
  if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
69
- const generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(), specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(), generalChildNodes = generalNonTerminalNodeChildNodes, specificChildNodes = specificNonTerminalNodeChildNodes, descended = this.descend(generalChildNodes, specificChildNodes, ...remainingArguments);
70
- if (descended) {
71
- visited = true;
63
+ const generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(), specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(), generalChildNodes = generalNonTerminalNodeChildNodes, specificChildNodes = specificNonTerminalNodeChildNodes, childNodesCongruent = (0, _pass.areChildNodesCongruent)(generalChildNodes, specificChildNodes);
64
+ if (childNodesCongruent) {
65
+ const descended = this.descend(generalChildNodes, specificChildNodes, ...remainingArguments);
66
+ if (descended) {
67
+ visited = true;
68
+ }
72
69
  }
73
70
  }
74
71
  return visited;
@@ -88,4 +85,4 @@ class ZipPass {
88
85
  }
89
86
  }
90
87
 
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL3ppcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgbm9uVGVybWluYWxOb2RlUXVlcnksIHRlcm1pbmFsTm9kZU1hcEZyb21Ob2RlcywgYXJlVGVybWluYWxOb2RlTWFwc0VxdWFsIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9wYXNzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFppcFBhc3Mge1xuICBydW4oZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBjb25zdCB2aXNpdGVkID0gdGhpcy52aXNpdE5vZGUoZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIHN1Y2Nlc3MgPSB2aXNpdGVkOyAgLy8vXG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIGRlc2NlbmQoZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IGRlc2NlbmRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZ2VuZXJhbENoaWxkTm9kZXNMZW5ndGggPSBnZW5lcmFsQ2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgc3BlY2lmaWNDaGlsZE5vZGVzTGVuZ3RoID0gc3BlY2lmaWNDaGlsZE5vZGVzLmxlbmd0aDtcblxuICAgIGlmIChnZW5lcmFsQ2hpbGROb2Rlc0xlbmd0aCA9PT0gc3BlY2lmaWNDaGlsZE5vZGVzTGVuZ3RoKSB7XG4gICAgICBjb25zdCBzcGVjaWZpY1Rlcm1pbmFsTm9kZU1hcCA9IHRlcm1pbmFsTm9kZU1hcEZyb21Ob2RlcyhzcGVjaWZpY0NoaWxkTm9kZXMpLFxuICAgICAgICAgICAgZ2VuZXJhbFRlcm1pbmFsTm9kZU1hcCA9IHRlcm1pbmFsTm9kZU1hcEZyb21Ob2RlcyhnZW5lcmFsQ2hpbGROb2RlcyksXG4gICAgICAgICAgICB0ZXJtaW5hbE5vZGVNYXBzRXF1YWwgPSBhcmVUZXJtaW5hbE5vZGVNYXBzRXF1YWwoZ2VuZXJhbFRlcm1pbmFsTm9kZU1hcCwgc3BlY2lmaWNUZXJtaW5hbE5vZGVNYXApO1xuXG4gICAgICBpZiAodGVybWluYWxOb2RlTWFwc0VxdWFsKSB7XG4gICAgICAgIGNvbnN0IHZpc2l0ZWQgPSBnZW5lcmFsQ2hpbGROb2Rlcy5ldmVyeSgoZ2VuZXJhbENoaWxkTm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBzcGVjaWZpY0NoaWxkTm9kZSA9IHNwZWNpZmljQ2hpbGROb2Rlc1tpbmRleF0sXG4gICAgICAgICAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNDaGlsZE5vZGUsIC8vL1xuICAgICAgICAgICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbENoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICAgIGRlc2NlbmRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVzY2VuZGVkO1xuICB9XG5cbiAgdmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBnZW5lcmFsTm9kZVRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgc3BlY2lmaWNOb2RlVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgZ2VuZXJhbE5vZGVOb25UZXJtaW5hbE5vZGUgPSBnZW5lcmFsTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHNwZWNpZmljTm9kZU5vblRlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKGdlbmVyYWxOb2RlVGVybWluYWxOb2RlICYmIHNwZWNpZmljTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgZ2VuZXJhbFRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY1Rlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZTsgIC8vL1xuXG4gICAgICB2aXNpdGVkID0gdGhpcy52aXNpdFRlcm1pbmFsTm9kZShnZW5lcmFsVGVybWluYWxOb2RlLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgICB9IGVsc2UgaWYgKGdlbmVyYWxOb2RlTm9uVGVybWluYWxOb2RlICYmIHNwZWNpZmljTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZTsgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9uVGVybWluYWxOb2RlKGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG5cbiAgdmlzaXRUZXJtaW5hbE5vZGUoZ2VuZXJhbFRlcm1pbmFsTm9kZSwgc3BlY2lmaWNUZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykgeyAvLy9cbiAgICBsZXQgdmlzaXRlZDtcblxuICAgIHZpc2l0ZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cblxuICB2aXNpdE5vblRlcm1pbmFsTm9kZShnZW5lcmFsTm9uVGVybWluYWxOb2RlLCBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGxldCB7IG1hcHMgfSA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgICBtYXBzID0gWyAvLy9cbiAgICAgIC4uLm1hcHMsXG4gICAgICB7XG4gICAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LFxuICAgICAgICBzcGVjaWZpY05vZGVRdWVyeTogbm9uVGVybWluYWxOb2RlUXVlcnksXG4gICAgICAgIHJ1bjogKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykgPT4ge1xuICAgICAgICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICAgICAgICBjb25zdCBnZW5lcmFsTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBnZW5lcmFsTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksIC8vL1xuICAgICAgICAgICAgICAgIHNwZWNpZmljTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICAgICAgICAgIGlmIChnZW5lcmFsTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IHNwZWNpZmljTm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gZ2VuZXJhbE5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgICAgICBnZW5lcmFsQ2hpbGROb2RlcyA9IGdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICAgIHNwZWNpZmljQ2hpbGROb2RlcyA9IHNwZWNpZmljTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgICAgICBkZXNjZW5kZWQgPSB0aGlzLmRlc2NlbmQoZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgaWYgKGRlc2NlbmRlZCkge1xuICAgICAgICAgICAgICB2aXNpdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmlzaXRlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cblxuICAgIG1hcHMuc29tZSgobWFwKSA9PiB7XG4gICAgICBjb25zdCB7IGdlbmVyYWxOb2RlUXVlcnksIHNwZWNpZmljTm9kZVF1ZXJ5LCBydW4gfSA9IG1hcDtcblxuICAgICAgY29uc3QgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsTm9kZVF1ZXJ5KGdlbmVyYWxOb25UZXJtaW5hbE5vZGUpLCAgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY05vZGVRdWVyeShzcGVjaWZpY05vblRlcm1pbmFsTm9kZSk7ICAvLy9cblxuICAgICAgaWYgKChnZW5lcmFsTm9kZSAhPT0gbnVsbCkgJiYgKHNwZWNpZmljTm9kZSAhPT0gbnVsbCkpIHtcbiAgICAgICAgY29uc3Qgc3VjY2VzcyAgPSBydW4oZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICB2aXNpdGVkID0gc3VjY2VzczsgIC8vL1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJaaXBQYXNzIiwicnVuIiwiZ2VuZXJhbE5vZGUiLCJzcGVjaWZpY05vZGUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJzdWNjZXNzIiwidmlzaXRlZCIsInZpc2l0Tm9kZSIsImRlc2NlbmQiLCJnZW5lcmFsQ2hpbGROb2RlcyIsInNwZWNpZmljQ2hpbGROb2RlcyIsImRlc2NlbmRlZCIsImdlbmVyYWxDaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwic3BlY2lmaWNDaGlsZE5vZGVzTGVuZ3RoIiwic3BlY2lmaWNUZXJtaW5hbE5vZGVNYXAiLCJ0ZXJtaW5hbE5vZGVNYXBGcm9tTm9kZXMiLCJnZW5lcmFsVGVybWluYWxOb2RlTWFwIiwidGVybWluYWxOb2RlTWFwc0VxdWFsIiwiYXJlVGVybWluYWxOb2RlTWFwc0VxdWFsIiwiZXZlcnkiLCJnZW5lcmFsQ2hpbGROb2RlIiwiaW5kZXgiLCJzcGVjaWZpY0NoaWxkTm9kZSIsImdlbmVyYWxOb2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vZGVUZXJtaW5hbE5vZGUiLCJnZW5lcmFsTm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwic3BlY2lmaWNOb2RlTm9uVGVybWluYWxOb2RlIiwiZ2VuZXJhbFRlcm1pbmFsTm9kZSIsInNwZWNpZmljVGVybWluYWxOb2RlIiwidmlzaXRUZXJtaW5hbE5vZGUiLCJnZW5lcmFsTm9uVGVybWluYWxOb2RlIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGUiLCJ2aXNpdE5vblRlcm1pbmFsTm9kZSIsIm1hcHMiLCJnZW5lcmFsTm9kZVF1ZXJ5Iiwibm9uVGVybWluYWxOb2RlUXVlcnkiLCJzcGVjaWZpY05vZGVRdWVyeSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInNwZWNpZmljTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsInNvbWUiLCJtYXAiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBcUJBOzs7c0JBRm9FO0FBRTFFLE1BQU1BO0lBQ25CQyxJQUFJQyxXQUFXLEVBQUVDLFlBQVksRUFBRSxHQUFHQyxrQkFBa0IsRUFBRTtRQUNwRCxJQUFJQztRQUVKLE1BQU1DLFVBQVUsSUFBSSxDQUFDQyxTQUFTLENBQUNMLGFBQWFDLGlCQUFpQkM7UUFFN0RDLFVBQVVDLFNBQVUsR0FBRztRQUV2QixPQUFPRDtJQUNUO0lBRUFHLFFBQVFDLGlCQUFpQixFQUFFQyxrQkFBa0IsRUFBRSxHQUFHTixrQkFBa0IsRUFBRTtRQUNwRSxJQUFJTyxZQUFZO1FBRWhCLE1BQU1DLDBCQUEwQkgsa0JBQWtCSSxNQUFNLEVBQ2xEQywyQkFBMkJKLG1CQUFtQkcsTUFBTTtRQUUxRCxJQUFJRCw0QkFBNEJFLDBCQUEwQjtZQUN4RCxNQUFNQywwQkFBMEJDLElBQUFBLDhCQUF3QixFQUFDTixxQkFDbkRPLHlCQUF5QkQsSUFBQUEsOEJBQXdCLEVBQUNQLG9CQUNsRFMsd0JBQXdCQyxJQUFBQSw4QkFBd0IsRUFBQ0Ysd0JBQXdCRjtZQUUvRSxJQUFJRyx1QkFBdUI7Z0JBQ3pCLE1BQU1aLFVBQVVHLGtCQUFrQlcsS0FBSyxDQUFDLENBQUNDLGtCQUFrQkM7b0JBQ3pELE1BQU1DLG9CQUFvQmIsa0JBQWtCLENBQUNZLE1BQU0sRUFDN0NuQixlQUFlb0IsbUJBQ2ZyQixjQUFjbUIsa0JBQ2RmLFVBQVUsSUFBSSxDQUFDQyxTQUFTLENBQUNMLGFBQWFDLGlCQUFpQkM7b0JBRTdELElBQUlFLFNBQVM7d0JBQ1gsT0FBTztvQkFDVDtnQkFDRjtnQkFFQSxJQUFJQSxTQUFT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
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL3ppcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgbm9uVGVybWluYWxOb2RlUXVlcnksIGFyZUNoaWxkTm9kZXNDb25ncnVlbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Bhc3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgWmlwUGFzcyB7XG4gIHJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgc3VjY2VzcztcblxuICAgIGNvbnN0IHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9kZShnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgc3VjY2VzcyA9IHZpc2l0ZWQ7ICAvLy9cblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgZGVzY2VuZChnZW5lcmFsQ2hpbGROb2Rlcywgc3BlY2lmaWNDaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgZGVzY2VuZGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCB2aXNpdGVkID0gZ2VuZXJhbENoaWxkTm9kZXMuZXZlcnkoKGdlbmVyYWxDaGlsZE5vZGUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzcGVjaWZpY0NoaWxkTm9kZSA9IHNwZWNpZmljQ2hpbGROb2Rlc1tpbmRleF0sXG4gICAgICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY0NoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxDaGlsZE5vZGUsIC8vL1xuICAgICAgICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgIGlmICh2aXNpdGVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHZpc2l0ZWQpIHtcbiAgICAgIGRlc2NlbmRlZCA9IHRydWU7XG4gICAgfVxuXG5cbiAgICByZXR1cm4gZGVzY2VuZGVkO1xuICB9XG5cbiAgdmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBnZW5lcmFsTm9kZVRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgc3BlY2lmaWNOb2RlVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgZ2VuZXJhbE5vZGVOb25UZXJtaW5hbE5vZGUgPSBnZW5lcmFsTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHNwZWNpZmljTm9kZU5vblRlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKGdlbmVyYWxOb2RlVGVybWluYWxOb2RlICYmIHNwZWNpZmljTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgZ2VuZXJhbFRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY1Rlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZTsgIC8vL1xuXG4gICAgICB2aXNpdGVkID0gdGhpcy52aXNpdFRlcm1pbmFsTm9kZShnZW5lcmFsVGVybWluYWxOb2RlLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgICB9IGVsc2UgaWYgKGdlbmVyYWxOb2RlTm9uVGVybWluYWxOb2RlICYmIHNwZWNpZmljTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSA9IHNwZWNpZmljTm9kZTsgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9uVGVybWluYWxOb2RlKGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG5cbiAgdmlzaXRUZXJtaW5hbE5vZGUoZ2VuZXJhbFRlcm1pbmFsTm9kZSwgc3BlY2lmaWNUZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykgeyAvLy9cbiAgICBsZXQgdmlzaXRlZDtcblxuICAgIHZpc2l0ZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cblxuICB2aXNpdE5vblRlcm1pbmFsTm9kZShnZW5lcmFsTm9uVGVybWluYWxOb2RlLCBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGxldCB7IG1hcHMgfSA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgICBtYXBzID0gWyAvLy9cbiAgICAgIC4uLm1hcHMsXG4gICAgICB7XG4gICAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LFxuICAgICAgICBzcGVjaWZpY05vZGVRdWVyeTogbm9uVGVybWluYWxOb2RlUXVlcnksXG4gICAgICAgIHJ1bjogKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykgPT4ge1xuICAgICAgICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICAgICAgICBjb25zdCBnZW5lcmFsTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBnZW5lcmFsTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksIC8vL1xuICAgICAgICAgICAgICAgIHNwZWNpZmljTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICAgICAgICAgIGlmIChnZW5lcmFsTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IHNwZWNpZmljTm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gZ2VuZXJhbE5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBzcGVjaWZpY05vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgICAgICBnZW5lcmFsQ2hpbGROb2RlcyA9IGdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICAgIHNwZWNpZmljQ2hpbGROb2RlcyA9IHNwZWNpZmljTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgICAgICBjaGlsZE5vZGVzQ29uZ3J1ZW50ID0gYXJlQ2hpbGROb2Rlc0NvbmdydWVudChnZW5lcmFsQ2hpbGROb2Rlcywgc3BlY2lmaWNDaGlsZE5vZGVzKTtcblxuICAgICAgICAgICAgaWYgKGNoaWxkTm9kZXNDb25ncnVlbnQpIHtcbiAgICAgICAgICAgICAgY29uc3QgZGVzY2VuZGVkID0gdGhpcy5kZXNjZW5kKGdlbmVyYWxDaGlsZE5vZGVzLCBzcGVjaWZpY0NoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgICAgICAgaWYgKGRlc2NlbmRlZCkge1xuICAgICAgICAgICAgICAgIHZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZpc2l0ZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG5cbiAgICBtYXBzLnNvbWUoKG1hcCkgPT4ge1xuICAgICAgY29uc3QgeyBnZW5lcmFsTm9kZVF1ZXJ5LCBzcGVjaWZpY05vZGVRdWVyeSwgcnVuIH0gPSBtYXA7XG5cbiAgICAgIGNvbnN0IGdlbmVyYWxOb2RlID0gZ2VuZXJhbE5vZGVRdWVyeShnZW5lcmFsTm9uVGVybWluYWxOb2RlKSwgIC8vL1xuICAgICAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNOb2RlUXVlcnkoc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUpOyAgLy8vXG5cbiAgICAgIGlmICgoZ2VuZXJhbE5vZGUgIT09IG51bGwpICYmIChzcGVjaWZpY05vZGUgIT09IG51bGwpKSB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3MgID0gcnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgdmlzaXRlZCA9IHN1Y2Nlc3M7ICAvLy9cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG59XG4iXSwibmFtZXMiOlsiWmlwUGFzcyIsInJ1biIsImdlbmVyYWxOb2RlIiwic3BlY2lmaWNOb2RlIiwicmVtYWluaW5nQXJndW1lbnRzIiwic3VjY2VzcyIsInZpc2l0ZWQiLCJ2aXNpdE5vZGUiLCJkZXNjZW5kIiwiZ2VuZXJhbENoaWxkTm9kZXMiLCJzcGVjaWZpY0NoaWxkTm9kZXMiLCJkZXNjZW5kZWQiLCJldmVyeSIsImdlbmVyYWxDaGlsZE5vZGUiLCJpbmRleCIsInNwZWNpZmljQ2hpbGROb2RlIiwiZ2VuZXJhbE5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInNwZWNpZmljTm9kZVRlcm1pbmFsTm9kZSIsImdlbmVyYWxOb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vZGVOb25UZXJtaW5hbE5vZGUiLCJnZW5lcmFsVGVybWluYWxOb2RlIiwic3BlY2lmaWNUZXJtaW5hbE5vZGUiLCJ2aXNpdFRlcm1pbmFsTm9kZSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vblRlcm1pbmFsTm9kZSIsInZpc2l0Tm9uVGVybWluYWxOb2RlIiwibWFwcyIsImdlbmVyYWxOb2RlUXVlcnkiLCJub25UZXJtaW5hbE5vZGVRdWVyeSIsInNwZWNpZmljTm9kZVF1ZXJ5IiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJzcGVjaWZpY05vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiY2hpbGROb2Rlc0NvbmdydWVudCIsImFyZUNoaWxkTm9kZXNDb25ncnVlbnQiLCJzb21lIiwibWFwIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXFCQTs7O3NCQUZ3QztBQUU5QyxNQUFNQTtJQUNuQkMsSUFBSUMsV0FBVyxFQUFFQyxZQUFZLEVBQUUsR0FBR0Msa0JBQWtCLEVBQUU7UUFDcEQsSUFBSUM7UUFFSixNQUFNQyxVQUFVLElBQUksQ0FBQ0MsU0FBUyxDQUFDTCxhQUFhQyxpQkFBaUJDO1FBRTdEQyxVQUFVQyxTQUFVLEdBQUc7UUFFdkIsT0FBT0Q7SUFDVDtJQUVBRyxRQUFRQyxpQkFBaUIsRUFBRUMsa0JBQWtCLEVBQUUsR0FBR04sa0JBQWtCLEVBQUU7UUFDcEUsSUFBSU8sWUFBWTtRQUVoQixNQUFNTCxVQUFVRyxrQkFBa0JHLEtBQUssQ0FBQyxDQUFDQyxrQkFBa0JDO1lBQ3pELE1BQU1DLG9CQUFvQkwsa0JBQWtCLENBQUNJLE1BQU0sRUFDN0NYLGVBQWVZLG1CQUNmYixjQUFjVyxrQkFDZFAsVUFBVSxJ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
@@ -9,26 +9,34 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- get areTerminalNodeMapsEqual () {
13
- return areTerminalNodeMapsEqual;
12
+ get areChildNodesCongruent () {
13
+ return areChildNodesCongruent;
14
14
  },
15
15
  get nonTerminalNodeQuery () {
16
16
  return nonTerminalNodeQuery;
17
- },
18
- get terminalNodeMapFromNodes () {
19
- return terminalNodeMapFromNodes;
20
17
  }
21
18
  });
22
19
  const _necessary = require("necessary");
23
20
  const _query = require("../utilities/query");
24
21
  const { match } = _necessary.arrayUtilities;
25
22
  const nonTerminalNodeQuery = (0, _query.nodeQuery)("/*");
26
- function terminalNodeMapFromNodes(nodes) {
23
+ function areChildNodesCongruent(childNodesA, childNodesB) {
24
+ let areChildNodesCongruent = false;
25
+ const childNodesALength = childNodesA.length, childNodesBLength = childNodesB.length;
26
+ if (childNodesALength === childNodesBLength) {
27
+ const specificTerminalNodeMap = terminalNodeMapFromChildNodes(childNodesB), generalTerminalNodeMap = terminalNodeMapFromChildNodes(childNodesA), terminalNodeMapsEqual = areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMap);
28
+ if (terminalNodeMapsEqual) {
29
+ areChildNodesCongruent = true;
30
+ }
31
+ }
32
+ return areChildNodesCongruent;
33
+ }
34
+ function terminalNodeMapFromChildNodes(childNodes) {
27
35
  const terminalNodeMap = {};
28
- nodes.forEach((node, index)=>{
29
- const nodeTerminalNode = node.isTerminalNode();
30
- if (nodeTerminalNode) {
31
- const terminalNode = node; //
36
+ childNodes.forEach((childNode, index)=>{
37
+ const childNodeTerminalNode = childNode.isTerminalNode();
38
+ if (childNodeTerminalNode) {
39
+ const terminalNode = childNode; //
32
40
  terminalNodeMap[index] = terminalNode;
33
41
  }
34
42
  });
@@ -53,4 +61,4 @@ function areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMa
53
61
  return terminalNodeMapsEqual;
54
62
  }
55
63
 
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcGFzcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBjb25zdCBub25UZXJtaW5hbE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi8qXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybWluYWxOb2RlTWFwRnJvbU5vZGVzKG5vZGVzKSB7XG4gIGNvbnN0IHRlcm1pbmFsTm9kZU1hcCA9IHt9O1xuXG4gIG5vZGVzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlOyAgLy9cblxuICAgICAgdGVybWluYWxOb2RlTWFwW2luZGV4XSA9IHRlcm1pbmFsTm9kZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtaW5hbE5vZGVNYXA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcmVUZXJtaW5hbE5vZGVNYXBzRXF1YWwoZ2VuZXJhbFRlcm1pbmFsTm9kZU1hcCwgc3BlY2lmaWNUZXJtaW5hbE5vZGVNYXApIHtcbiAgbGV0IHRlcm1pbmFsTm9kZU1hcHNFcXVhbCA9IGZhbHNlO1xuXG4gIGNvbnN0IGdlbmVyYWxJbmRleGVzID0gT2JqZWN0LmtleXMoZ2VuZXJhbFRlcm1pbmFsTm9kZU1hcCksIC8vL1xuICAgICAgICBzcGVjaWZpY0luZGV4ZXMgPSBPYmplY3Qua2V5cyhzcGVjaWZpY1Rlcm1pbmFsTm9kZU1hcCksIC8vL1xuICAgICAgICB0ZXJtaW5hbE5vZGVNYXBLZXlzTWF0Y2ggPSBtYXRjaChnZW5lcmFsSW5kZXhlcywgc3BlY2lmaWNJbmRleGVzLCAoZ2VuZXJhbEluZGV4LCBzcGVjaWZpY0luZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKGdlbmVyYWxJbmRleCA9PT0gc3BlY2lmaWNJbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICBpZiAodGVybWluYWxOb2RlTWFwS2V5c01hdGNoKSB7XG4gICAgY29uc3QgZ2VuZXJhbFRlcm1pbmFsTm9kZXMgPSBPYmplY3QudmFsdWVzKGdlbmVyYWxUZXJtaW5hbE5vZGVNYXApLCAvLy9cbiAgICAgICAgICBzcGVjaWZpY1Rlcm1pbmFsTm9kZXMgPSBPYmplY3QudmFsdWVzKHNwZWNpZmljVGVybWluYWxOb2RlTWFwKSwgLy8vXG4gICAgICAgICAgdGVybWluYWxOb2RlTWFwVmFsdWVzTWF0Y2ggPSBtYXRjaChnZW5lcmFsVGVybWluYWxOb2Rlcywgc3BlY2lmaWNUZXJtaW5hbE5vZGVzLCAoZ2VuZXJhbFRlcm1pbmFsTm9kZSwgc3BlY2lmaWNUZXJtaW5hbE5vZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYWxUZXJtaW5hbE5vZGVNYXRjaGVzU3BlY2lmaWNUZXJtaW5hbE5vZGUgPSBnZW5lcmFsVGVybWluYWxOb2RlLm1hdGNoKHNwZWNpZmljVGVybWluYWxOb2RlKTtcblxuICAgICAgICAgICAgaWYgKGdlbmVyYWxUZXJtaW5hbE5vZGVNYXRjaGVzU3BlY2lmaWNUZXJtaW5hbE5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICB0ZXJtaW5hbE5vZGVNYXBzRXF1YWwgPSB0ZXJtaW5hbE5vZGVNYXBWYWx1ZXNNYXRjaDsgLy8vXG4gIH1cblxuICByZXR1cm4gdGVybWluYWxOb2RlTWFwc0VxdWFsO1xufVxuIl0sIm5hbWVzIjpbImFyZVRlcm1pbmFsTm9kZU1hcHNFcXVhbCIsIm5vblRlcm1pbmFsTm9kZVF1ZXJ5IiwidGVybWluYWxOb2RlTWFwRnJvbU5vZGVzIiwibWF0Y2giLCJhcnJheVV0aWxpdGllcyIsIm5vZGVRdWVyeSIsIm5vZGVzIiwidGVybWluYWxOb2RlTWFwIiwiZm9yRWFjaCIsIm5vZGUiLCJpbmRleCIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImdlbmVyYWxUZXJtaW5hbE5vZGVNYXAiLCJzcGVjaWZpY1Rlcm1pbmFsTm9kZU1hcCIsInRlcm1pbmFsTm9kZU1hcHNFcXVhbCIsImdlbmVyYWxJbmRleGVzIiwiT2JqZWN0Iiwia2V5cyIsInNwZWNpZmljSW5kZXhlcyIsInRlcm1pbmFsTm9kZU1hcEtleXNNYXRjaCIsImdlbmVyYWxJbmRleCIsInNwZWNpZmljSW5kZXgiLCJnZW5lcmFsVGVybWluYWxOb2RlcyIsInZhbHVlcyIsInNwZWNpZmljVGVybWluYWxOb2RlcyIsInRlcm1pbmFsTm9kZU1hcFZhbHVlc01hdGNoIiwiZ2VuZXJhbFRlcm1pbmFsTm9kZSIsInNwZWNpZmljVGVybWluYWxOb2RlIiwiZ2VuZXJhbFRlcm1pbmFsTm9kZU1hdGNoZXNTcGVjaWZpY1Rlcm1pbmFsTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBMEJnQkE7ZUFBQUE7O1FBbEJIQztlQUFBQTs7UUFFR0M7ZUFBQUE7OzsyQkFSZTt1QkFFTDtBQUUxQixNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYztBQUV6QixNQUFNSCx1QkFBdUJJLElBQUFBLGdCQUFTLEVBQUM7QUFFdkMsU0FBU0gseUJBQXlCSSxLQUFLO0lBQzVDLE1BQU1DLGtCQUFrQixDQUFDO0lBRXpCRCxNQUFNRSxPQUFPLENBQUMsQ0FBQ0MsTUFBTUM7UUFDbkIsTUFBTUMsbUJBQW1CRixLQUFLRyxjQUFjO1FBRTVDLElBQUlELGtCQUFrQjtZQUNwQixNQUFNRSxlQUFlSixNQUFPLEVBQUU7WUFFOUJGLGVBQWUsQ0FBQ0csTUFBTSxHQUFHRztRQUMzQjtJQUNGO0lBRUEsT0FBT047QUFDVDtBQUVPLFNBQVNQLHlCQUF5QmMsc0JBQXNCLEVBQUVDLHVCQUF1QjtJQUN0RixJQUFJQyx3QkFBd0I7SUFFNUIsTUFBTUMsaUJBQWlCQyxPQUFPQyxJQUFJLENBQUNMLHlCQUM3Qk0sa0JBQWtCRixPQUFPQyxJQUFJLENBQUNKLDBCQUM5Qk0sMkJBQTJCbEIsTUFBTWMsZ0JBQWdCRyxpQkFBaUIsQ0FBQ0UsY0FBY0M7UUFDL0UsSUFBSUQsaUJBQWlCQyxlQUFlO1lBQ2xDLE9BQU87UUFDVDtJQUNGO0lBRU4sSUFBSUYsMEJBQTBCO1FBQzVCLE1BQU1HLHVCQUF1Qk4sT0FBT08sTUFBTSxDQUFDWCx5QkFDckNZLHdCQUF3QlIsT0FBT08sTUFBTSxDQUFDViwwQkFDdENZLDZCQUE2QnhCLE1BQU1xQixzQkFBc0JFLHVCQUF1QixDQUFDRSxxQkFBcUJDO1lBQ3BHLE1BQU1DLGlEQUFpREYsb0JBQW9CekIsS0FBSyxDQUFDMEI7WUFFakYsSUFBSUMsZ0RBQWdEO2dCQUNsRCxPQUFPO1lBQ1Q7UUFDRjtRQUVOZCx3QkFBd0JXLDRCQUE0QixHQUFHO0lBQ3pEO0lBRUEsT0FBT1g7QUFDVCJ9
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcGFzcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBjb25zdCBub25UZXJtaW5hbE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi8qXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gYXJlQ2hpbGROb2Rlc0NvbmdydWVudChjaGlsZE5vZGVzQSwgY2hpbGROb2Rlc0IpIHtcbiAgbGV0IGFyZUNoaWxkTm9kZXNDb25ncnVlbnQgPSBmYWxzZTtcblxuICBjb25zdCBjaGlsZE5vZGVzQUxlbmd0aCA9IGNoaWxkTm9kZXNBLmxlbmd0aCxcbiAgICAgICAgY2hpbGROb2Rlc0JMZW5ndGggPSBjaGlsZE5vZGVzQi5sZW5ndGg7XG5cbiAgaWYgKGNoaWxkTm9kZXNBTGVuZ3RoID09PSBjaGlsZE5vZGVzQkxlbmd0aCkge1xuICAgIGNvbnN0IHNwZWNpZmljVGVybWluYWxOb2RlTWFwID0gdGVybWluYWxOb2RlTWFwRnJvbUNoaWxkTm9kZXMoY2hpbGROb2Rlc0IpLFxuICAgICAgICAgIGdlbmVyYWxUZXJtaW5hbE5vZGVNYXAgPSB0ZXJtaW5hbE5vZGVNYXBGcm9tQ2hpbGROb2RlcyhjaGlsZE5vZGVzQSksXG4gICAgICAgICAgdGVybWluYWxOb2RlTWFwc0VxdWFsID0gYXJlVGVybWluYWxOb2RlTWFwc0VxdWFsKGdlbmVyYWxUZXJtaW5hbE5vZGVNYXAsIHNwZWNpZmljVGVybWluYWxOb2RlTWFwKTtcblxuICAgIGlmICh0ZXJtaW5hbE5vZGVNYXBzRXF1YWwpIHtcbiAgICAgIGFyZUNoaWxkTm9kZXNDb25ncnVlbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50O1xufVxuXG5mdW5jdGlvbiB0ZXJtaW5hbE5vZGVNYXBGcm9tQ2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gIGNvbnN0IHRlcm1pbmFsTm9kZU1hcCA9IHt9O1xuXG4gIGNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGNoaWxkTm9kZVRlcm1pbmFsTm9kZSA9IGNoaWxkTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGNoaWxkTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gY2hpbGROb2RlOyAgLy9cblxuICAgICAgdGVybWluYWxOb2RlTWFwW2luZGV4XSA9IHRlcm1pbmFsTm9kZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtaW5hbE5vZGVNYXA7XG59XG5cbmZ1bmN0aW9uIGFyZVRlcm1pbmFsTm9kZU1hcHNFcXVhbChnZW5lcmFsVGVybWluYWxOb2RlTWFwLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZU1hcCkge1xuICBsZXQgdGVybWluYWxOb2RlTWFwc0VxdWFsID0gZmFsc2U7XG5cbiAgY29uc3QgZ2VuZXJhbEluZGV4ZXMgPSBPYmplY3Qua2V5cyhnZW5lcmFsVGVybWluYWxOb2RlTWFwKSwgLy8vXG4gICAgICAgIHNwZWNpZmljSW5kZXhlcyA9IE9iamVjdC5rZXlzKHNwZWNpZmljVGVybWluYWxOb2RlTWFwKSwgLy8vXG4gICAgICAgIHRlcm1pbmFsTm9kZU1hcEtleXNNYXRjaCA9IG1hdGNoKGdlbmVyYWxJbmRleGVzLCBzcGVjaWZpY0luZGV4ZXMsIChnZW5lcmFsSW5kZXgsIHNwZWNpZmljSW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoZ2VuZXJhbEluZGV4ID09PSBzcGVjaWZpY0luZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gIGlmICh0ZXJtaW5hbE5vZGVNYXBLZXlzTWF0Y2gpIHtcbiAgICBjb25zdCBnZW5lcmFsVGVybWluYWxOb2RlcyA9IE9iamVjdC52YWx1ZXMoZ2VuZXJhbFRlcm1pbmFsTm9kZU1hcCksIC8vL1xuICAgICAgICAgIHNwZWNpZmljVGVybWluYWxOb2RlcyA9IE9iamVjdC52YWx1ZXMoc3BlY2lmaWNUZXJtaW5hbE5vZGVNYXApLCAvLy9cbiAgICAgICAgICB0ZXJtaW5hbE5vZGVNYXBWYWx1ZXNNYXRjaCA9IG1hdGNoKGdlbmVyYWxUZXJtaW5hbE5vZGVzLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZXMsIChnZW5lcmFsVGVybWluYWxOb2RlLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhbFRlcm1pbmFsTm9kZU1hdGNoZXNTcGVjaWZpY1Rlcm1pbmFsTm9kZSA9IGdlbmVyYWxUZXJtaW5hbE5vZGUubWF0Y2goc3BlY2lmaWNUZXJtaW5hbE5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZ2VuZXJhbFRlcm1pbmFsTm9kZU1hdGNoZXNTcGVjaWZpY1Rlcm1pbmFsTm9kZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHRlcm1pbmFsTm9kZU1hcHNFcXVhbCA9IHRlcm1pbmFsTm9kZU1hcFZhbHVlc01hdGNoOyAvLy9cbiAgfVxuXG4gIHJldHVybiB0ZXJtaW5hbE5vZGVNYXBzRXF1YWw7XG59XG4iXSwibmFtZXMiOlsiYXJlQ2hpbGROb2Rlc0NvbmdydWVudCIsIm5vblRlcm1pbmFsTm9kZVF1ZXJ5IiwibWF0Y2giLCJhcnJheVV0aWxpdGllcyIsIm5vZGVRdWVyeSIsImNoaWxkTm9kZXNBIiwiY2hpbGROb2Rlc0IiLCJjaGlsZE5vZGVzQUxlbmd0aCIsImxlbmd0aCIsImNoaWxkTm9kZXNCTGVuZ3RoIiwic3BlY2lmaWNUZXJtaW5hbE5vZGVNYXAiLCJ0ZXJtaW5hbE5vZGVNYXBGcm9tQ2hpbGROb2RlcyIsImdlbmVyYWxUZXJtaW5hbE5vZGVNYXAiLCJ0ZXJtaW5hbE5vZGVNYXBzRXF1YWwiLCJhcmVUZXJtaW5hbE5vZGVNYXBzRXF1YWwiLCJjaGlsZE5vZGVzIiwidGVybWluYWxOb2RlTWFwIiwiZm9yRWFjaCIsImNoaWxkTm9kZSIsImluZGV4IiwiY2hpbGROb2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJnZW5lcmFsSW5kZXhlcyIsIk9iamVjdCIsImtleXMiLCJzcGVjaWZpY0luZGV4ZXMiLCJ0ZXJtaW5hbE5vZGVNYXBLZXlzTWF0Y2giLCJnZW5lcmFsSW5kZXgiLCJzcGVjaWZpY0luZGV4IiwiZ2VuZXJhbFRlcm1pbmFsTm9kZXMiLCJ2YWx1ZXMiLCJzcGVjaWZpY1Rlcm1pbmFsTm9kZXMiLCJ0ZXJtaW5hbE5vZGVNYXBWYWx1ZXNNYXRjaCIsImdlbmVyYWxUZXJtaW5hbE5vZGUiLCJzcGVjaWZpY1Rlcm1pbmFsTm9kZSIsImdlbmVyYWxUZXJtaW5hbE5vZGVNYXRjaGVzU3BlY2lmaWNUZXJtaW5hbE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVVnQkE7ZUFBQUE7O1FBRkhDO2VBQUFBOzs7MkJBTmtCO3VCQUVMO0FBRTFCLE1BQU0sRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjO0FBRXpCLE1BQU1GLHVCQUF1QkcsSUFBQUEsZ0JBQVMsRUFBQztBQUV2QyxTQUFTSix1QkFBdUJLLFdBQVcsRUFBRUMsV0FBVztJQUM3RCxJQUFJTix5QkFBeUI7SUFFN0IsTUFBTU8sb0JBQW9CRixZQUFZRyxNQUFNLEVBQ3RDQyxvQkFBb0JILFlBQVlFLE1BQU07SUFFNUMsSUFBSUQsc0JBQXNCRSxtQkFBbUI7UUFDM0MsTUFBTUMsMEJBQTBCQyw4QkFBOEJMLGNBQ3hETSx5QkFBeUJELDhCQUE4Qk4sY0FDdkRRLHdCQUF3QkMseUJBQXlCRix3QkFBd0JGO1FBRS9FLElBQUlHLHVCQUF1QjtZQUN6QmIseUJBQXlCO1FBQzNCO0lBQ0Y7SUFFQSxPQUFPQTtBQUNUO0FBRUEsU0FBU1csOEJBQThCSSxVQUFVO0lBQy9DLE1BQU1DLGtCQUFrQixDQUFDO0lBRXpCRCxXQUFXRSxPQUFPLENBQUMsQ0FBQ0MsV0FBV0M7UUFDN0IsTUFBTUMsd0JBQXdCRixVQUFVRyxjQUFjO1FBRXRELElBQUlELHVCQUF1QjtZQUN6QixNQUFNRSxlQUFlSixXQUFZLEVBQUU7WUFFbkNGLGVBQWUsQ0FBQ0csTUFBTSxHQUFHRztRQUMzQjtJQUNGO0lBRUEsT0FBT047QUFDVDtBQUVBLFNBQVNGLHlCQUF5QkYsc0JBQXNCLEVBQUVGLHVCQUF1QjtJQUMvRSxJQUFJRyx3QkFBd0I7SUFFNUIsTUFBTVUsaUJBQWlCQyxPQUFPQyxJQUFJLENBQUNiLHlCQUM3QmMsa0JBQWtCRixPQUFPQyxJQUFJLENBQUNmLDBCQUM5QmlCLDJCQUEyQnpCLE1BQU1xQixnQkFBZ0JHLGlCQUFpQixDQUFDRSxjQUFjQztRQUMvRSxJQUFJRCxpQkFBaUJDLGVBQWU7WUFDbEMsT0FBTztRQUNUO0lBQ0Y7SUFFTixJQUFJRiwwQkFBMEI7UUFDNUIsTUFBTUcsdUJBQXVCTixPQUFPTyxNQUFNLENBQUNuQix5QkFDckNvQix3QkFBd0JSLE9BQU9PLE1BQU0sQ0FBQ3JCLDBCQUN0Q3VCLDZCQUE2Qi9CLE1BQU00QixzQkFBc0JFLHVCQUF1QixDQUFDRSxxQkFBcUJDO1lBQ3BHLE1BQU1DLGlEQUFpREYsb0JBQW9CaEMsS0FBSyxDQUFDaUM7WUFFakYsSUFBSUMsZ0RBQWdEO2dCQUNsRCxPQUFPO1lBQ1Q7UUFDRjtRQUVOdkIsd0JBQXdCb0IsNEJBQTRCLEdBQUc7SUFDekQ7SUFFQSxPQUFPcEI7QUFDVCJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-languages",
3
3
  "author": "James Smith",
4
- "version": "0.0.206",
4
+ "version": "0.0.207",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-languages",
7
7
  "description": "Occam's common language functionality.",
package/src/index.js CHANGED
@@ -12,6 +12,7 @@ export { default as ZipPass } from "./pass/zip";
12
12
  export { default as AsyncPass } from "./pass/async";
13
13
  export { default as SimplePass } from "./pass/simple";
14
14
  export { default as ForwardPass } from "./pass/forward";
15
+ export { default as ForwardZipPass } from "./pass/forwardZip";
15
16
  export { default as EquivalencePass } from "./pass/equivalence";
16
17
 
17
18
  export { default as nodeUtilities } from "./utilities/node";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { nonTerminalNodeQuery, terminalNodeMapFromNodes, areTerminalNodeMapsEqual } from "../utilities/pass";
3
+ import { nonTerminalNodeQuery, areChildNodesCongruent } from "../utilities/pass";
4
4
 
5
5
  export default class EquivalencePass {
6
6
  run(leftNode, rightNode, ...remainingArguments) {
@@ -14,29 +14,18 @@ export default class EquivalencePass {
14
14
  }
15
15
 
16
16
  descend(leftChildNodes, rightChildNodes, ...remainingArguments) {
17
- let descended = false;
17
+ let descended;
18
18
 
19
- const leftChildNodesLength = leftChildNodes.length,
20
- rightChildNodesLength = rightChildNodes.length;
19
+ descended = leftChildNodes.every((leftChildNode, index) => {
20
+ const rightChildNode = rightChildNodes[index],
21
+ leftNode = leftChildNode, ///
22
+ rightNode = rightChildNode, ///
23
+ visited = this.visitNode(leftNode, rightNode, ...remainingArguments);
21
24
 
22
- if (leftChildNodesLength === rightChildNodesLength) {
23
- const leftTerminalNodeMap = terminalNodeMapFromNodes(leftChildNodes),
24
- rightTerminalNodeMap = terminalNodeMapFromNodes(rightChildNodes),
25
- terminalNodeMapsEqual = areTerminalNodeMapsEqual(leftTerminalNodeMap, rightTerminalNodeMap);
26
-
27
- if (terminalNodeMapsEqual) {
28
- descended = leftChildNodes.every((leftChildNode, index) => {
29
- const rightChildNode = rightChildNodes[index],
30
- leftNode = leftChildNode, ///
31
- rightNode = rightChildNode, ///
32
- visited = this.visitNode(leftNode, rightNode, ...remainingArguments);
33
-
34
- if (visited) {
35
- return true;
36
- }
37
- });
25
+ if (visited) {
26
+ return true;
38
27
  }
39
- }
28
+ });
40
29
 
41
30
  return descended;
42
31
  }
@@ -95,10 +84,14 @@ export default class EquivalencePass {
95
84
  rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(),
96
85
  leftChildNodes = leftNonTerminalNodeChildNodes, ///
97
86
  rightChildNodes = rightNonTerminalNodeChildNodes, ///
98
- descended = this.descend(leftChildNodes, rightChildNodes, ...remainingArguments);
87
+ childNodesCongruent = areChildNodesCongruent(leftChildNodes, rightChildNodes);
88
+
89
+ if (childNodesCongruent) {
90
+ const descended = this.descend(leftChildNodes, rightChildNodes, ...remainingArguments);
99
91
 
100
- if (descended) {
101
- visited = true;
92
+ if (descended) {
93
+ visited = true;
94
+ }
102
95
  }
103
96
  }
104
97
 
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ import { nonTerminalNodeQuery, areChildNodesCongruent } from "../utilities/pass";
4
+
5
+ export default class ForwardZipPass {
6
+ run(generalNode, specificNode, ...remainingArguments) {
7
+ let success;
8
+
9
+ const visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
10
+
11
+ success = visited; ///
12
+
13
+ return success;
14
+ }
15
+
16
+ descend(index, generalChildNodes, specificChildNodes, ...remainingArguments) {
17
+ let descendedForward = false;
18
+
19
+ const descendForward = remainingArguments.pop(), ///
20
+ generalChildNodesLength = generalChildNodes.length;
21
+
22
+ if (index === generalChildNodesLength) {
23
+ descendedForward = descendForward();
24
+ } else {
25
+ const generalChildNode = generalChildNodes[index],
26
+ specificChildNode = specificChildNodes[index],
27
+ generalNode = generalChildNode, ///
28
+ specificNode = specificChildNode, ///
29
+ visited = this.visitNode(generalNode, specificNode, ...remainingArguments, () => {
30
+ remainingArguments.push(descendForward);
31
+
32
+ const aheadIndex = index + 1,
33
+ descendedForward = this.descend(aheadIndex, generalChildNodes, specificChildNodes, ...remainingArguments);
34
+
35
+ return descendedForward;
36
+ });
37
+
38
+ if (visited) {
39
+ descendedForward = true;
40
+ }
41
+ }
42
+
43
+ return descendedForward;
44
+ }
45
+
46
+ visitNode(generalNode, specificNode, ...remainingArguments) {
47
+ let visited = false;
48
+
49
+ const generalNodeTerminalNode = generalNode.isTerminalNode(),
50
+ specificNodeTerminalNode = specificNode.isTerminalNode(),
51
+ generalNodeNonTerminalNode = generalNode.isNonTerminalNode(),
52
+ specificNodeNonTerminalNode = specificNode.isNonTerminalNode();
53
+
54
+ if (false) {
55
+ ///
56
+ } else if (generalNodeTerminalNode && specificNodeTerminalNode) {
57
+ const generalTerminalNode = generalNode, ///
58
+ specificTerminalNode = specificNode; ///
59
+
60
+ visited = this.visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments);
61
+ } else if (generalNodeNonTerminalNode && specificNodeNonTerminalNode) {
62
+ const generalNonTerminalNode = generalNode, ///
63
+ specificNonTerminalNode = specificNode; ///
64
+
65
+ visited = this.visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments);
66
+ }
67
+
68
+ return visited;
69
+ }
70
+
71
+ visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments) {
72
+ let visited = false;
73
+
74
+ const descendForward = remainingArguments.pop(), ///
75
+ descendedForward = descendForward();
76
+
77
+ if (descendedForward) {
78
+ visited = true;
79
+ }
80
+
81
+ remainingArguments.push(descendForward);
82
+
83
+ return visited;
84
+ }
85
+
86
+ visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
87
+ let visited = false;
88
+
89
+ let { maps } = this.constructor;
90
+
91
+ maps = [ ///
92
+ ...maps,
93
+ {
94
+ generalNodeQuery: nonTerminalNodeQuery,
95
+ specificNodeQuery: nonTerminalNodeQuery,
96
+ run: (generalNode, specificNode, ...remainingArguments) => {
97
+ let visited = false;
98
+
99
+ const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), ///
100
+ specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
101
+
102
+ if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
103
+ const index = 0,
104
+ generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(),
105
+ specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(),
106
+ generalChildNodes = generalNonTerminalNodeChildNodes, ///
107
+ specificChildNodes = specificNonTerminalNodeChildNodes, ///
108
+ childNodesCongruent = areChildNodesCongruent(generalChildNodes, specificChildNodes);
109
+
110
+ if (childNodesCongruent) {
111
+ const descended = this.descend(index, generalChildNodes, specificChildNodes, ...remainingArguments);
112
+
113
+ if (descended) {
114
+ visited = true;
115
+ }
116
+ }
117
+ }
118
+
119
+ return visited;
120
+ }
121
+ }
122
+ ]
123
+
124
+ maps.some((map) => {
125
+ const { generalNodeQuery, specificNodeQuery, run } = map;
126
+
127
+ const generalNode = generalNodeQuery(generalNonTerminalNode), ///
128
+ specificNode = specificNodeQuery(specificNonTerminalNode); ///
129
+
130
+ if ((generalNode !== null) && (specificNode !== null)) {
131
+ const success = run(generalNode, specificNode, ...remainingArguments);
132
+
133
+ visited = success; ///
134
+
135
+ return true;
136
+ }
137
+ });
138
+
139
+ return visited;
140
+ }
141
+ }
package/src/pass/zip.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { nonTerminalNodeQuery, terminalNodeMapFromNodes, areTerminalNodeMapsEqual } from "../utilities/pass";
3
+ import { nonTerminalNodeQuery, areChildNodesCongruent } from "../utilities/pass";
4
4
 
5
5
  export default class ZipPass {
6
6
  run(generalNode, specificNode, ...remainingArguments) {
@@ -16,32 +16,22 @@ export default class ZipPass {
16
16
  descend(generalChildNodes, specificChildNodes, ...remainingArguments) {
17
17
  let descended = false;
18
18
 
19
- const generalChildNodesLength = generalChildNodes.length,
20
- specificChildNodesLength = specificChildNodes.length;
19
+ const visited = generalChildNodes.every((generalChildNode, index) => {
20
+ const specificChildNode = specificChildNodes[index],
21
+ specificNode = specificChildNode, ///
22
+ generalNode = generalChildNode, ///
23
+ visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
21
24
 
22
- if (generalChildNodesLength === specificChildNodesLength) {
23
- const specificTerminalNodeMap = terminalNodeMapFromNodes(specificChildNodes),
24
- generalTerminalNodeMap = terminalNodeMapFromNodes(generalChildNodes),
25
- terminalNodeMapsEqual = areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMap);
26
-
27
- if (terminalNodeMapsEqual) {
28
- const visited = generalChildNodes.every((generalChildNode, index) => {
29
- const specificChildNode = specificChildNodes[index],
30
- specificNode = specificChildNode, ///
31
- generalNode = generalChildNode, ///
32
- visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
33
-
34
- if (visited) {
35
- return true;
36
- }
37
- });
38
-
39
- if (visited) {
40
- descended = true;
41
- }
25
+ if (visited) {
26
+ return true;
42
27
  }
28
+ });
29
+
30
+ if (visited) {
31
+ descended = true;
43
32
  }
44
33
 
34
+
45
35
  return descended;
46
36
  }
47
37
 
@@ -99,10 +89,14 @@ export default class ZipPass {
99
89
  specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(),
100
90
  generalChildNodes = generalNonTerminalNodeChildNodes, ///
101
91
  specificChildNodes = specificNonTerminalNodeChildNodes, ///
102
- descended = this.descend(generalChildNodes, specificChildNodes, ...remainingArguments);
92
+ childNodesCongruent = areChildNodesCongruent(generalChildNodes, specificChildNodes);
93
+
94
+ if (childNodesCongruent) {
95
+ const descended = this.descend(generalChildNodes, specificChildNodes, ...remainingArguments);
103
96
 
104
- if (descended) {
105
- visited = true;
97
+ if (descended) {
98
+ visited = true;
99
+ }
106
100
  }
107
101
  }
108
102
 
@@ -8,14 +8,33 @@ const { match } = arrayUtilities;
8
8
 
9
9
  export const nonTerminalNodeQuery = nodeQuery("/*");
10
10
 
11
- export function terminalNodeMapFromNodes(nodes) {
11
+ export function areChildNodesCongruent(childNodesA, childNodesB) {
12
+ let areChildNodesCongruent = false;
13
+
14
+ const childNodesALength = childNodesA.length,
15
+ childNodesBLength = childNodesB.length;
16
+
17
+ if (childNodesALength === childNodesBLength) {
18
+ const specificTerminalNodeMap = terminalNodeMapFromChildNodes(childNodesB),
19
+ generalTerminalNodeMap = terminalNodeMapFromChildNodes(childNodesA),
20
+ terminalNodeMapsEqual = areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMap);
21
+
22
+ if (terminalNodeMapsEqual) {
23
+ areChildNodesCongruent = true;
24
+ }
25
+ }
26
+
27
+ return areChildNodesCongruent;
28
+ }
29
+
30
+ function terminalNodeMapFromChildNodes(childNodes) {
12
31
  const terminalNodeMap = {};
13
32
 
14
- nodes.forEach((node, index) => {
15
- const nodeTerminalNode = node.isTerminalNode();
33
+ childNodes.forEach((childNode, index) => {
34
+ const childNodeTerminalNode = childNode.isTerminalNode();
16
35
 
17
- if (nodeTerminalNode) {
18
- const terminalNode = node; //
36
+ if (childNodeTerminalNode) {
37
+ const terminalNode = childNode; //
19
38
 
20
39
  terminalNodeMap[index] = terminalNode;
21
40
  }
@@ -24,7 +43,7 @@ export function terminalNodeMapFromNodes(nodes) {
24
43
  return terminalNodeMap;
25
44
  }
26
45
 
27
- export function areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMap) {
46
+ function areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMap) {
28
47
  let terminalNodeMapsEqual = false;
29
48
 
30
49
  const generalIndexes = Object.keys(generalTerminalNodeMap), ///