occam-furtle 3.0.325 → 3.0.326

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.
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "default", {
11
11
  const _occamlanguages = require("occam-languages");
12
12
  const _necessary = require("necessary");
13
13
  const _exception = /*#__PURE__*/ _interop_require_default(require("../exception"));
14
+ const _nominalValue = /*#__PURE__*/ _interop_require_default(require("../nominalValue"));
14
15
  const _elements = require("../elements");
15
16
  const _typeNames = require("../typeNames");
16
17
  const _value = require("../utilities/value");
@@ -54,13 +55,19 @@ const _default = (0, _elements.define)(class NodeQuery extends _occamlanguages.E
54
55
  throw exception;
55
56
  }
56
57
  const nodes = this.query.execute(node), nodesLength = nodes.length;
57
- if (nodesLength !== 1) {
58
- const message = `The length of the returned nodes is ${nodesLength} when it should be 1.`, exception = _exception.default.fromMessage(message);
58
+ if (false) {
59
+ ///
60
+ } else if (nodesLength === 0) {
61
+ const nominalValue = _nominalValue.default.fromNothing();
62
+ value = (0, _value.valueFromNominalValue)(nominalValue);
63
+ } else if (nodesLength === 1) {
64
+ const firstNode = first(nodes);
65
+ node = firstNode; ///
66
+ value = (0, _value.valueFromNodeAndNominalValue)(node, nominalValue);
67
+ } else {
68
+ const message = `The length of the returned nodes is ${nodesLength} when it should be 0 or 1.`, exception = _exception.default.fromMessage(message);
59
69
  throw exception;
60
70
  }
61
- const firstNode = first(nodes);
62
- node = firstNode; ///
63
- value = (0, _value.valueFromNodeAndNominalValue)(node, nominalValue);
64
71
  const valueString = value.getString();
65
72
  context.debug(`...evaluated the '${nodeQueryString}' function as '${valueString}'.`);
66
73
  return value;
@@ -68,4 +75,4 @@ const _default = (0, _elements.define)(class NodeQuery extends _occamlanguages.E
68
75
  static name = "NodeQuery";
69
76
  });
70
77
 
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L25vZGVRdWVyeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gXCIuLi9leGNlcHRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBOT01JTkFMX1ZBTFVFX1RZUEVfTkFNRSB9IGZyb20gXCIuLi90eXBlTmFtZXNcIjtcbmltcG9ydCB7IHZhbHVlRnJvbU5vZGVBbmROb21pbmFsVmFsdWUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZhbHVlXCI7XG5cbmNvbnN0IHsgZmlyc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgTm9kZVF1ZXJ5IGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIHF1ZXJ5KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudmFyaWFibGUgPSB2YXJpYWJsZTtcbiAgICB0aGlzLnF1ZXJ5ID0gcXVlcnk7XG4gIH1cblxuICBnZXRWYXJpYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZTtcbiAgfVxuXG4gIGdldFF1ZXJ5KCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5O1xuICB9XG5cbiAgZXZhbHVhdGUoY29udGV4dCkge1xuICAgIGxldCB2YWx1ZTtcblxuICAgIGNvbnN0IG5vZGVRdWVyeVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEV2YWx1YXRpbmcgdGhlICcke25vZGVRdWVyeVN0cmluZ30nIGZ1bmN0aW9uLi4uYCk7XG5cbiAgICBpZiAodGhpcy5xdWVyeSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBDYW5ub3QgZXZhbHVhdGUgdGhlICcke25vZGVRdWVyeVN0cmluZ30nIGZ1bmN0aW9uIGJlY2F1c2UgaXRzIGV4cHJlc3Npb24gaXMgbWFsZm9ybWVkLmAsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IHRoaXMudmFyaWFibGUuZXZhbHVhdGUoY29udGV4dCk7XG5cbiAgICBjb25zdCB2YWx1ZVR5cGUgPSB2YWx1ZS5nZXRUeXBlKCksXG4gICAgICAgICAgdmFsdWVUeXBlTm9taW5hbFZhbHVlVHlwZSA9IHZhbHVlVHlwZS5pc05vbWluYWxWYWx1ZVR5cGUoKTtcblxuICAgIGlmICghdmFsdWVUeXBlTm9taW5hbFZhbHVlVHlwZSkge1xuICAgICAgY29uc3QgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgVGhlICcke3ZhbHVlU3RyaW5nfScgdmFsdWUncyAnJHt2YWx1ZVR5cGV9JyB0eXBlIHNob3VsZCBiZSAnJHtOT01JTkFMX1ZBTFVFX1RZUEVfTkFNRX0nLmAsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICB9XG5cbiAgICBsZXQgbm9kZTtcblxuICAgIGNvbnN0IHByaW1pdGl2ZVZhbHVlID0gdmFsdWUuZ2V0UHJpbWl0aXZlVmFsdWUoKSxcbiAgICAgICAgICBub21pbmFsVmFsdWUgPSBwcmltaXRpdmVWYWx1ZTsgIC8vL1xuXG4gICAgbm9kZSA9IG5vbWluYWxWYWx1ZS5nZXROb2RlKCk7XG5cbiAgICBpZiAobm9kZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgVGhlICcke3ZhbHVlU3RyaW5nfScgdmFsdWUncyBub2RlIGlzIG51bGwuYCxcbiAgICAgICAgICAgIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbi5mcm9tTWVzc2FnZShtZXNzYWdlKTtcblxuICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGVzID0gdGhpcy5xdWVyeS5leGVjdXRlKG5vZGUpLFxuICAgICAgICAgIG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuXG4gICAgaWYgKG5vZGVzTGVuZ3RoICE9PSAxKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFRoZSBsZW5ndGggb2YgdGhlIHJldHVybmVkIG5vZGVzIGlzICR7bm9kZXNMZW5ndGh9IHdoZW4gaXQgc2hvdWxkIGJlIDEuYCxcbiAgICAgICAgICAgIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbi5mcm9tTWVzc2FnZShtZXNzYWdlKTtcblxuICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0Tm9kZSA9IGZpcnN0KG5vZGVzKTtcblxuICAgIG5vZGUgPSBmaXJzdE5vZGUgLy8vXG5cbiAgICB2YWx1ZSA9IHZhbHVlRnJvbU5vZGVBbmROb21pbmFsVmFsdWUobm9kZSwgbm9taW5hbFZhbHVlKTtcblxuICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gdmFsdWUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5ldmFsdWF0ZWQgdGhlICcke25vZGVRdWVyeVN0cmluZ30nIGZ1bmN0aW9uIGFzICcke3ZhbHVlU3RyaW5nfScuYCk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiTm9kZVF1ZXJ5XCI7XG59KTtcbiJdLCJuYW1lcyI6WyJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZGVmaW5lIiwiTm9kZVF1ZXJ5IiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInZhcmlhYmxlIiwicXVlcnkiLCJnZXRWYXJpYWJsZSIsImdldFF1ZXJ5IiwiZXZhbHVhdGUiLCJ2YWx1ZSIsIm5vZGVRdWVyeVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwibWVzc2FnZSIsImV4Y2VwdGlvbiIsIkV4Y2VwdGlvbiIsImZyb21NZXNzYWdlIiwidmFsdWVUeXBlIiwiZ2V0VHlwZSIsInZhbHVlVHlwZU5vbWluYWxWYWx1ZVR5cGUiLCJpc05vbWluYWxWYWx1ZVR5cGUiLCJ2YWx1ZVN0cmluZyIsIk5PTUlOQUxfVkFMVUVfVFlQRV9OQU1FIiwicHJpbWl0aXZlVmFsdWUiLCJnZXRQcmltaXRpdmVWYWx1ZSIsIm5vbWluYWxWYWx1ZSIsImdldE5vZGUiLCJub2RlcyIsImV4ZWN1dGUiLCJub2Rlc0xlbmd0aCIsImxlbmd0aCIsImZpcnN0Tm9kZSIsInZhbHVlRnJvbU5vZGVBbmROb21pbmFsVmFsdWUiLCJkZWJ1ZyIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBQTs7O2dDQVh3QjsyQkFDTztrRUFFVDswQkFFQzsyQkFDaUI7dUJBQ0s7Ozs7OztBQUU3QyxNQUFNLEVBQUVBLEtBQUssRUFBRSxHQUFHQyx5QkFBYztNQUVoQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGtCQUFrQkMsdUJBQU87SUFDbkQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxRQUFRLEVBQUVDLEtBQUssQ0FBRTtRQUM5RCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsUUFBUSxHQUFHQTtRQUNoQixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUNGLFFBQVE7SUFDdEI7SUFFQUcsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDRixLQUFLO0lBQ25CO0lBRUFHLFNBQVNSLE9BQU8sRUFBRTtRQUNoQixJQUFJUztRQUVKLE1BQU1DLGtCQUFrQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRTlDWCxRQUFRWSxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsZ0JBQWdCLGFBQWEsQ0FBQztRQUUvRCxJQUFJLElBQUksQ0FBQ0wsS0FBSyxLQUFLLE1BQU07WUFDdkIsTUFBTVEsVUFBVSxDQUFDLHFCQUFxQixFQUFFSCxnQkFBZ0IsK0NBQStDLENBQUMsRUFDbEdJLFlBQVlDLGtCQUFTLENBQUNDLFdBQVcsQ0FBQ0g7WUFFeEMsTUFBTUM7UUFDUjtRQUVBTCxRQUFRLElBQUksQ0FBQ0wsUUFBUSxDQUFDSSxRQUFRLENBQUNSO1FBRS9CLE1BQU1pQixZQUFZUixNQUFNUyxPQUFPLElBQ3pCQyw0QkFBNEJGLFVBQVVHLGtCQUFrQjtRQUU5RCxJQUFJLENBQUNELDJCQUEyQjtZQUM5QixNQUFNRSxjQUFjWixNQUFNRSxTQUFTLElBQzdCRSxVQUFVLENBQUMsS0FBSyxFQUFFUSxZQUFZLFdBQVcsRUFBRUosVUFBVSxrQkFBa0IsRUFBRUssa0NBQXVCLENBQUMsRUFBRSxDQUFDLEVBQ3BHUixZQUFZQyxrQkFBUyxDQUFDQyxXQUFXLENBQUNIO1lBRXhDLE1BQU1DO1FBQ1I7UUFFQSxJQUFJWjtRQUVKLE1BQU1xQixpQkFBaUJkLE1BQU1lLGlCQUFpQixJQUN4Q0MsZUFBZUYsZ0JBQWlCLEdBQUc7UUFFekNyQixPQUFPdUIsYUFBYUMsT0FBTztRQUUzQixJQUFJeEIsU0FBUyxNQUFNO1lBQ2pCLE1BQU1tQixjQUFjWixNQUFNRSxTQUFTLElBQzdCRSxVQUFVLENBQUMsS0FBSyxFQUFFUSxZQUFZLHVCQUF1QixDQUFDLEVBQ3REUCxZQUFZQyxrQkFBUyxDQUFDQyxXQUFXLENBQUNIO1lBRXhDLE1BQU1DO1FBQ1I7UUFFQSxNQUFNYSxRQUFRLElBQUksQ0FBQ3RCLEtBQUssQ0FBQ3VCLE9BQU8sQ0FBQzFCLE9BQzNCMkIsY0FBY0YsTUFBTUcsTUFBTTtRQUVoQyxJQUFJRCxnQkFBZ0IsR0FBRztZQUNyQixNQUFNaEIsVUFBVSxDQUFDLG9DQUFvQyxFQUFFZ0IsWUFBWSxxQkFBcUIsQ0FBQyxFQUNuRmYsWUFBWUMsa0JBQVMsQ0FBQ0MsV0FBVyxDQUFDSDtZQUV4QyxNQUFNQztRQUNSO1FBRUEsTUFBTWlCLFlBQVlwQyxNQUFNZ0M7UUFFeEJ6QixPQUFPNkIsV0FBVSxHQUFHO1FBRXBCdEIsUUFBUXVCLElBQUFBLG1DQUE0QixFQUFDOUIsTUFBTXVCO1FBRTNDLE1BQU1KLGNBQWNaLE1BQU1FLFNBQVM7UUFFbkNYLFFBQVFpQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRXZCLGdCQUFnQixlQUFlLEVBQUVXLFlBQVksRUFBRSxDQUFDO1FBRW5GLE9BQU9aO0lBQ1Q7SUFFQSxPQUFPeUIsT0FBTyxZQUFZO0FBQzVCIn0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L25vZGVRdWVyeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gXCIuLi9leGNlcHRpb25cIjtcbmltcG9ydCBOb21pbmFsVmFsdWUgZnJvbSBcIi4uL25vbWluYWxWYWx1ZVwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IE5PTUlOQUxfVkFMVUVfVFlQRV9OQU1FIH0gZnJvbSBcIi4uL3R5cGVOYW1lc1wiO1xuaW1wb3J0IHsgdmFsdWVGcm9tTm9taW5hbFZhbHVlLCB2YWx1ZUZyb21Ob2RlQW5kTm9taW5hbFZhbHVlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy92YWx1ZVwiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIE5vZGVRdWVyeSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBxdWVyeSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnZhcmlhYmxlID0gdmFyaWFibGU7XG4gICAgdGhpcy5xdWVyeSA9IHF1ZXJ5O1xuICB9XG5cbiAgZ2V0VmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGU7XG4gIH1cblxuICBnZXRRdWVyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeTtcbiAgfVxuXG4gIGV2YWx1YXRlKGNvbnRleHQpIHtcbiAgICBsZXQgdmFsdWU7XG5cbiAgICBjb25zdCBub2RlUXVlcnlTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBFdmFsdWF0aW5nIHRoZSAnJHtub2RlUXVlcnlTdHJpbmd9JyBmdW5jdGlvbi4uLmApO1xuXG4gICAgaWYgKHRoaXMucXVlcnkgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ2Fubm90IGV2YWx1YXRlIHRoZSAnJHtub2RlUXVlcnlTdHJpbmd9JyBmdW5jdGlvbiBiZWNhdXNlIGl0cyBleHByZXNzaW9uIGlzIG1hbGZvcm1lZC5gLFxuICAgICAgICAgICAgZXhjZXB0aW9uID0gRXhjZXB0aW9uLmZyb21NZXNzYWdlKG1lc3NhZ2UpO1xuXG4gICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgfVxuXG4gICAgdmFsdWUgPSB0aGlzLnZhcmlhYmxlLmV2YWx1YXRlKGNvbnRleHQpO1xuXG4gICAgY29uc3QgdmFsdWVUeXBlID0gdmFsdWUuZ2V0VHlwZSgpLFxuICAgICAgICAgIHZhbHVlVHlwZU5vbWluYWxWYWx1ZVR5cGUgPSB2YWx1ZVR5cGUuaXNOb21pbmFsVmFsdWVUeXBlKCk7XG5cbiAgICBpZiAoIXZhbHVlVHlwZU5vbWluYWxWYWx1ZVR5cGUpIHtcbiAgICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gdmFsdWUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICBtZXNzYWdlID0gYFRoZSAnJHt2YWx1ZVN0cmluZ30nIHZhbHVlJ3MgJyR7dmFsdWVUeXBlfScgdHlwZSBzaG91bGQgYmUgJyR7Tk9NSU5BTF9WQUxVRV9UWVBFX05BTUV9Jy5gLFxuICAgICAgICAgICAgZXhjZXB0aW9uID0gRXhjZXB0aW9uLmZyb21NZXNzYWdlKG1lc3NhZ2UpO1xuXG4gICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgfVxuXG4gICAgbGV0IG5vZGU7XG5cbiAgICBjb25zdCBwcmltaXRpdmVWYWx1ZSA9IHZhbHVlLmdldFByaW1pdGl2ZVZhbHVlKCksXG4gICAgICAgICAgbm9taW5hbFZhbHVlID0gcHJpbWl0aXZlVmFsdWU7ICAvLy9cblxuICAgIG5vZGUgPSBub21pbmFsVmFsdWUuZ2V0Tm9kZSgpO1xuXG4gICAgaWYgKG5vZGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gdmFsdWUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICBtZXNzYWdlID0gYFRoZSAnJHt2YWx1ZVN0cmluZ30nIHZhbHVlJ3Mgbm9kZSBpcyBudWxsLmAsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlcyA9IHRoaXMucXVlcnkuZXhlY3V0ZShub2RlKSxcbiAgICAgICAgICBub2Rlc0xlbmd0aCA9IG5vZGVzLmxlbmd0aDtcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmIChub2Rlc0xlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3Qgbm9taW5hbFZhbHVlID0gTm9taW5hbFZhbHVlLmZyb21Ob3RoaW5nKCk7XG5cbiAgICAgIHZhbHVlID0gdmFsdWVGcm9tTm9taW5hbFZhbHVlKG5vbWluYWxWYWx1ZSk7XG4gICAgfSBlbHNlIGlmIChub2Rlc0xlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3ROb2RlID0gZmlyc3Qobm9kZXMpO1xuXG4gICAgICBub2RlID0gZmlyc3ROb2RlIC8vL1xuXG4gICAgICB2YWx1ZSA9IHZhbHVlRnJvbU5vZGVBbmROb21pbmFsVmFsdWUobm9kZSwgbm9taW5hbFZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBUaGUgbGVuZ3RoIG9mIHRoZSByZXR1cm5lZCBub2RlcyBpcyAke25vZGVzTGVuZ3RofSB3aGVuIGl0IHNob3VsZCBiZSAwIG9yIDEuYCxcbiAgICAgICAgICAgIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbi5mcm9tTWVzc2FnZShtZXNzYWdlKTtcblxuICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gdmFsdWUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5ldmFsdWF0ZWQgdGhlICcke25vZGVRdWVyeVN0cmluZ30nIGZ1bmN0aW9uIGFzICcke3ZhbHVlU3RyaW5nfScuYCk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiTm9kZVF1ZXJ5XCI7XG59KTtcbiJdLCJuYW1lcyI6WyJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZGVmaW5lIiwiTm9kZVF1ZXJ5IiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInZhcmlhYmxlIiwicXVlcnkiLCJnZXRWYXJpYWJsZSIsImdldFF1ZXJ5IiwiZXZhbHVhdGUiLCJ2YWx1ZSIsIm5vZGVRdWVyeVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwibWVzc2FnZSIsImV4Y2VwdGlvbiIsIkV4Y2VwdGlvbiIsImZyb21NZXNzYWdlIiwidmFsdWVUeXBlIiwiZ2V0VHlwZSIsInZhbHVlVHlwZU5vbWluYWxWYWx1ZVR5cGUiLCJpc05vbWluYWxWYWx1ZVR5cGUiLCJ2YWx1ZVN0cmluZyIsIk5PTUlOQUxfVkFMVUVfVFlQRV9OQU1FIiwicHJpbWl0aXZlVmFsdWUiLCJnZXRQcmltaXRpdmVWYWx1ZSIsIm5vbWluYWxWYWx1ZSIsImdldE5vZGUiLCJub2RlcyIsImV4ZWN1dGUiLCJub2Rlc0xlbmd0aCIsImxlbmd0aCIsIk5vbWluYWxWYWx1ZSIsImZyb21Ob3RoaW5nIiwidmFsdWVGcm9tTm9taW5hbFZhbHVlIiwiZmlyc3ROb2RlIiwidmFsdWVGcm9tTm9kZUFuZE5vbWluYWxWYWx1ZSIsImRlYnVnIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWndCOzJCQUNPO2tFQUVUO3FFQUNHOzBCQUVGOzJCQUNp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
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  const _occamlanguages = require("occam-languages");
12
12
  const _exception = /*#__PURE__*/ _interop_require_default(require("../exception"));
13
+ const _context = require("../utilities/context");
13
14
  const _elements = require("../elements");
14
15
  function _interop_require_default(obj) {
15
16
  return obj && obj.__esModule ? obj : {
@@ -40,11 +41,16 @@ const _default = (0, _elements.define)(class ProcedureCall extends _occamlanguag
40
41
  const message = `The '${procedureCallString}' function is not present.'`, exception = _exception.default.fromMessage(message);
41
42
  throw exception;
42
43
  }
43
- const procedure = context.findProcedureByProcedureName(procedureName), values = this.values.evaluate(context), value = await procedure.call(values, context), valueString = value.getString();
44
+ let value;
45
+ const procedure = context.findProcedureByProcedureName(procedureName), values = this.values.evaluate(context);
46
+ await (0, _context.free)(async (context)=>{
47
+ value = await procedure.call(values, context);
48
+ }, context);
49
+ const valueString = value.getString();
44
50
  context.debug(`...evaluated the '${procedureCallString}' function call as '${valueString}'.`);
45
51
  return value;
46
52
  }
47
53
  static name = "ProcedureCall";
48
54
  });
49
55
 
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb2NlZHVyZUNhbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBFeGNlcHRpb24gZnJvbSBcIi4uL2V4Y2VwdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFByb2NlZHVyZUNhbGwgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCByZWZlcmVuY2UsIHZhbHVlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcbiAgfVxuXG4gIGdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBnZXRWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlTmFtZSgpIHsgcmV0dXJuIHRoaXMucmVmZXJlbmNlLmdldFByb2NlZHVyZU5hbWUoKTsgfVxuXG4gIGFzeW5jIGV2YWx1YXRlKGNvbnRleHQpIHtcbiAgICBhd2FpdCB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3QgcHJvY2VkdXJlQ2FsbFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEV2YWx1YXRpbmcgdGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBmdW5jdGlvbiBjYWxsLi4uYCk7XG5cbiAgICBjb25zdCBwcm9jZWR1cmVOYW1lID0gdGhpcy5nZXRQcm9jZWR1cmVOYW1lKCksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IGNvbnRleHQuaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgaWYgKCFwcm9jZWR1cmVQcmVzZW50KSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFRoZSAnJHtwcm9jZWR1cmVDYWxsU3RyaW5nfScgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQuJ2AsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9jZWR1cmUgPSBjb250ZXh0LmZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSksXG4gICAgICAgICAgdmFsdWVzID0gdGhpcy52YWx1ZXMuZXZhbHVhdGUoY29udGV4dCksXG4gICAgICAgICAgdmFsdWUgPSBhd2FpdCBwcm9jZWR1cmUuY2FsbCh2YWx1ZXMsIGNvbnRleHQpLFxuICAgICAgICAgIHZhbHVlU3RyaW5nID0gdmFsdWUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5ldmFsdWF0ZWQgdGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBmdW5jdGlvbiBjYWxsIGFzICcke3ZhbHVlU3RyaW5nfScuYCk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiUHJvY2VkdXJlQ2FsbFwiO1xufSk7XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiUHJvY2VkdXJlQ2FsbCIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJyZWZlcmVuY2UiLCJ2YWx1ZXMiLCJnZXRSZWZlcmVuY2UiLCJnZXRWYWx1ZXMiLCJnZXRQcm9jZWR1cmVOYW1lIiwiZXZhbHVhdGUiLCJicmVhayIsInByb2NlZHVyZUNhbGxTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVQcmVzZW50IiwiaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lIiwibWVzc2FnZSIsImV4Y2VwdGlvbiIsIkV4Y2VwdGlvbiIsImZyb21NZXNzYWdlIiwicHJvY2VkdXJlIiwiZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZSIsInZhbHVlIiwiY2FsbCIsInZhbHVlU3RyaW5nIiwiZGVidWciLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQUE7OztnQ0FOd0I7a0VBRUY7MEJBRUM7Ozs7OztNQUV2QixXQUFlQSxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLHNCQUFzQkMsdUJBQU87SUFDdkQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sQ0FBRTtRQUNoRSxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLE1BQU0sR0FBR0E7SUFDaEI7SUFFQUMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO0lBQ3ZCO0lBRUFHLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ0YsTUFBTTtJQUNwQjtJQUVBRyxtQkFBbUI7UUFBRSxPQUFPLElBQUksQ0FBQ0osU0FBUyxDQUFDSSxnQkFBZ0I7SUFBSTtJQUUvRCxNQUFNQyxTQUFTVCxPQUFPLEVBQUU7UUFDdEIsTUFBTSxJQUFJLENBQUNVLEtBQUssQ0FBQ1Y7UUFFakIsTUFBTVcsc0JBQXNCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFbERaLFFBQVFhLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixvQkFBb0Isa0JBQWtCLENBQUM7UUFFeEUsTUFBTUcsZ0JBQWdCLElBQUksQ0FBQ04sZ0JBQWdCLElBQ3JDTyxtQkFBbUJmLFFBQVFnQixpQ0FBaUMsQ0FBQ0Y7UUFFbkUsSUFBSSxDQUFDQyxrQkFBa0I7WUFDckIsTUFBTUUsVUFBVSxDQUFDLEtBQUssRUFBRU4sb0JBQW9CLDJCQUEyQixDQUFDLEVBQ2xFTyxZQUFZQyxrQkFBUyxDQUFDQyxXQUFXLENBQUNIO1lBRXhDLE1BQU1DO1FBQ1I7UUFFQSxNQUFNRyxZQUFZckIsUUFBUXNCLDRCQUE0QixDQUFDUixnQkFDakRULFNBQVMsSUFBSSxDQUFDQSxNQUFNLENBQUNJLFFBQVEsQ0FBQ1QsVUFDOUJ1QixRQUFRLE1BQU1GLFVBQVVHLElBQUksQ0FBQ25CLFFBQVFMLFVBQ3JDeUIsY0FBY0YsTUFBTVgsU0FBUztRQUVuQ1osUUFBUTBCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFZixvQkFBb0Isb0JBQW9CLEVBQUVjLFlBQVksRUFBRSxDQUFDO1FBRTVGLE9BQU9GO0lBQ1Q7SUFFQSxPQUFPSSxPQUFPLGdCQUFnQjtBQUNoQyJ9
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb2NlZHVyZUNhbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBFeGNlcHRpb24gZnJvbSBcIi4uL2V4Y2VwdGlvblwiO1xuXG5pbXBvcnQgeyBmcmVlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFByb2NlZHVyZUNhbGwgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCByZWZlcmVuY2UsIHZhbHVlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcbiAgfVxuXG4gIGdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBnZXRWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlTmFtZSgpIHsgcmV0dXJuIHRoaXMucmVmZXJlbmNlLmdldFByb2NlZHVyZU5hbWUoKTsgfVxuXG4gIGFzeW5jIGV2YWx1YXRlKGNvbnRleHQpIHtcbiAgICBhd2FpdCB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3QgcHJvY2VkdXJlQ2FsbFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEV2YWx1YXRpbmcgdGhlICcke3Byb2NlZHVyZUNhbGxTdHJpbmd9JyBmdW5jdGlvbiBjYWxsLi4uYCk7XG5cbiAgICBjb25zdCBwcm9jZWR1cmVOYW1lID0gdGhpcy5nZXRQcm9jZWR1cmVOYW1lKCksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IGNvbnRleHQuaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgaWYgKCFwcm9jZWR1cmVQcmVzZW50KSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFRoZSAnJHtwcm9jZWR1cmVDYWxsU3RyaW5nfScgZnVuY3Rpb24gaXMgbm90IHByZXNlbnQuJ2AsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWU7XG5cbiAgICBjb25zdCBwcm9jZWR1cmUgPSBjb250ZXh0LmZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSksXG4gICAgICAgICAgdmFsdWVzID0gdGhpcy52YWx1ZXMuZXZhbHVhdGUoY29udGV4dCk7XG5cbiAgICBhd2FpdCBmcmVlKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICB2YWx1ZSA9IGF3YWl0IHByb2NlZHVyZS5jYWxsKHZhbHVlcywgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBjb25zdCB2YWx1ZVN0cmluZyA9IHZhbHVlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uZXZhbHVhdGVkIHRoZSAnJHtwcm9jZWR1cmVDYWxsU3RyaW5nfScgZnVuY3Rpb24gY2FsbCBhcyAnJHt2YWx1ZVN0cmluZ30nLmApO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlByb2NlZHVyZUNhbGxcIjtcbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIlByb2NlZHVyZUNhbGwiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwicmVmZXJlbmNlIiwidmFsdWVzIiwiZ2V0UmVmZXJlbmNlIiwiZ2V0VmFsdWVzIiwiZ2V0UHJvY2VkdXJlTmFtZSIsImV2YWx1YXRlIiwiYnJlYWsiLCJwcm9jZWR1cmVDYWxsU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlUHJlc2VudCIsImlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZSIsIm1lc3NhZ2UiLCJleGNlcHRpb24iLCJFeGNlcHRpb24iLCJmcm9tTWVzc2FnZSIsInZhbHVlIiwicHJvY2VkdXJlIiwiZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZSIsImZyZWUiLCJjYWxsIiwidmFsdWVTdHJpbmciLCJkZWJ1ZyIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBQTs7O2dDQVB3QjtrRUFFRjt5QkFFRDswQkFDRTs7Ozs7O01BRXZCLFdBQWVBLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsc0JBQXNCQyx1QkFBTztJQUN2RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxDQUFFO1FBQ2hFLEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtJQUNoQjtJQUVBQyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNGLFNBQVM7SUFDdkI7SUFFQUcsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDRixNQUFNO0lBQ3BCO0lBRUFHLG1CQUFtQjtRQUFFLE9BQU8sSUFBSSxDQUFDSixTQUFTLENBQUNJLGdCQUFnQjtJQUFJO0lBRS9ELE1BQU1DLFNBQVNULE9BQU8sRUFBRTtRQUN0QixNQUFNLElBQUksQ0FBQ1UsS0FBSyxDQUFDVjtRQUVqQixNQUFNVyxzQkFBc0IsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUVsRFosUUFBUWEsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLG9CQUFvQixrQkFBa0IsQ0FBQztRQUV4RSxNQUFNRyxnQkFBZ0IsSUFBSSxDQUFDTixnQkFBZ0IsSUFDckNPLG1CQUFtQmYsUUFBUWdCLGlDQUFpQyxDQUFDRjtRQUVuRSxJQUFJLENBQUNDLGtCQUFrQjtZQUNyQixNQUFNRSxVQUFVLENBQUMsS0FBSyxFQUFFTixvQkFBb0IsMkJBQTJCLENBQUMsRUFDbEVPLFlBQVlDLGtCQUFTLENBQUNDLFdBQVcsQ0FBQ0g7WUFFeEMsTUFBTUM7UUFDUjtRQUVBLElBQUlHO1FBRUosTUFBTUMsWUFBWXRCLFFBQVF1Qiw0QkFBNEIsQ0FBQ1QsZ0JBQ2pEVCxTQUFTLElBQUksQ0FBQ0EsTUFBTSxDQUFDSSxRQUFRLENBQUNUO1FBRXBDLE1BQU13QixJQUFBQSxhQUFJLEVBQUMsT0FBT3hCO1lBQ2hCcUIsUUFBUSxNQUFNQyxVQUFVRyxJQUFJLENBQUNwQixRQUFRTDtRQUN2QyxHQUFHQTtRQUVILE1BQU0wQixjQUFjTCxNQUFNVCxTQUFTO1FBRW5DWixRQUFRMkIsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVoQixvQkFBb0Isb0JBQW9CLEVBQUVlLFlBQVksRUFBRSxDQUFDO1FBRTVGLE9BQU9MO0lBQ1Q7SUFFQSxPQUFPTyxPQUFPLGdCQUFnQjtBQUNoQyJ9
@@ -2,10 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "confine", {
6
- enumerable: true,
7
- get: function() {
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get confine () {
8
13
  return confine;
14
+ },
15
+ get free () {
16
+ return free;
9
17
  }
10
18
  });
11
19
  const _block = /*#__PURE__*/ _interop_require_default(require("../context/block"));
@@ -14,10 +22,22 @@ function _interop_require_default(obj) {
14
22
  default: obj
15
23
  };
16
24
  }
25
+ function free(innerFunction, context) {
26
+ context = freeContext(context); ///
27
+ return innerFunction(context);
28
+ }
17
29
  function confine(innerFunction, variables, context) {
18
30
  const blockContext = _block.default.fromVariables(variables, context);
19
31
  context = blockContext; ///
20
32
  return innerFunction(context);
21
33
  }
34
+ function freeContext(context) {
35
+ let contextBlockContext = context instanceof _block.default;
36
+ while(contextBlockContext){
37
+ context = context.getContext();
38
+ contextBlockContext = context instanceof _block.default;
39
+ }
40
+ return context;
41
+ }
22
42
 
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEJsb2NrQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9ibG9ja1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uZmluZShpbm5lckZ1bmN0aW9uLCB2YXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgYmxvY2tDb250ZXh0ID0gQmxvY2tDb250ZXh0LmZyb21WYXJpYWJsZXModmFyaWFibGVzLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gYmxvY2tDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG4iXSwibmFtZXMiOlsiY29uZmluZSIsImlubmVyRnVuY3Rpb24iLCJ2YXJpYWJsZXMiLCJjb250ZXh0IiwiYmxvY2tDb250ZXh0IiwiQmxvY2tDb250ZXh0IiwiZnJvbVZhcmlhYmxlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSWdCQTs7O2VBQUFBOzs7OERBRlM7Ozs7OztBQUVsQixTQUFTQSxRQUFRQyxhQUFhLEVBQUVDLFNBQVMsRUFBRUMsT0FBTztJQUN2RCxNQUFNQyxlQUFlQyxjQUFZLENBQUNDLGFBQWEsQ0FBQ0osV0FBV0M7SUFFM0RBLFVBQVVDLGNBQWUsR0FBRztJQUU1QixPQUFPSCxjQUFjRTtBQUN2QiJ9
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEJsb2NrQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9ibG9ja1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZnJlZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnRleHQgPSBmcmVlQ29udGV4dChjb250ZXh0KTsgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maW5lKGlubmVyRnVuY3Rpb24sIHZhcmlhYmxlcywgY29udGV4dCkge1xuICBjb25zdCBibG9ja0NvbnRleHQgPSBCbG9ja0NvbnRleHQuZnJvbVZhcmlhYmxlcyh2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBibG9ja0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZnVuY3Rpb24gZnJlZUNvbnRleHQoY29udGV4dCkge1xuICBsZXQgY29udGV4dEJsb2NrQ29udGV4dCA9IChjb250ZXh0IGluc3RhbmNlb2YgQmxvY2tDb250ZXh0KTtcblxuICB3aGlsZSAoY29udGV4dEJsb2NrQ29udGV4dCkge1xuICAgIGNvbnRleHQgPSBjb250ZXh0LmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHRCbG9ja0NvbnRleHQgPSAoY29udGV4dCBpbnN0YW5jZW9mIEJsb2NrQ29udGV4dClcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0O1xufVxuIl0sIm5hbWVzIjpbImNvbmZpbmUiLCJmcmVlIiwiaW5uZXJGdW5jdGlvbiIsImNvbnRleHQiLCJmcmVlQ29udGV4dCIsInZhcmlhYmxlcyIsImJsb2NrQ29udGV4dCIsIkJsb2NrQ29udGV4dCIsImZyb21WYXJpYWJsZXMiLCJjb250ZXh0QmxvY2tDb250ZXh0IiwiZ2V0Q29udGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBVWdCQTtlQUFBQTs7UUFOQUM7ZUFBQUE7Ozs4REFGUzs7Ozs7O0FBRWxCLFNBQVNBLEtBQUtDLGFBQWEsRUFBRUMsT0FBTztJQUN6Q0EsVUFBVUMsWUFBWUQsVUFBVSxHQUFHO0lBRW5DLE9BQU9ELGNBQWNDO0FBQ3ZCO0FBRU8sU0FBU0gsUUFBUUUsYUFBYSxFQUFFRyxTQUFTLEVBQUVGLE9BQU87SUFDdkQsTUFBTUcsZUFBZUMsY0FBWSxDQUFDQyxhQUFhLENBQUNILFdBQVdGO0lBRTNEQSxVQUFVRyxjQUFlLEdBQUc7SUFFNUIsT0FBT0osY0FBY0M7QUFDdkI7QUFFQSxTQUFTQyxZQUFZRCxPQUFPO0lBQzFCLElBQUlNLHNCQUF1Qk4sbUJBQW1CSSxjQUFZO0lBRTFELE1BQU9FLG9CQUFxQjtRQUMxQk4sVUFBVUEsUUFBUU8sVUFBVTtRQUU1QkQsc0JBQXVCTixtQkFBbUJJLGNBQVk7SUFDeEQ7SUFFQSxPQUFPSjtBQUNUIn0=
@@ -85,4 +85,4 @@ function valueFromNominalValues(nominalValues) {
85
85
  return value;
86
86
  }
87
87
 
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmFsdWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCBOb21pbmFsVmFsdWUgZnJvbSBcIi4uL25vbWluYWxWYWx1ZVwiO1xuXG5pbXBvcnQgeyBwcmltaXRpdmVGcm9tQm9vbGVhbiwgcHJpbWl0aXZlRnJvbUludGVnZXIsIHByaW1pdGl2ZUZyb21Ob21pbmFsVmFsdWUsIHByaW1pdGl2ZUZyb21Ob21pbmFsVmFsdWVzLCBwcmltaXRpdmVGcm9tU3RyaW5nTGl0ZXJhbCB9IGZyb20gXCIuLi91dGlsaXRpZXMvcHJpbWl0aXZlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZyb21Cb29sZWFuKGJvb2xlYW4sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYWx1ZSB9ID0gZWxlbWVudHMsXG4gICAgdmFyaWFibGUgPSBudWxsLFxuICAgIHByaW1pdGl2ZSA9IHByaW1pdGl2ZUZyb21Cb29sZWFuKGJvb2xlYW4sIGNvbnRleHQpLFxuICAgIHN0cmluZyA9IHByaW1pdGl2ZS5nZXRTdHJpbmcoKSxcbiAgICBub2RlID0gbnVsbCxcbiAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB2YWx1ZSA9IG5ldyBWYWx1ZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBwcmltaXRpdmUpO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbUludGVnZXIoaW50ZWdlciwgY29udGV4dCkge1xuICBjb25zdCB7IFZhbHVlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdmFyaWFibGUgPSBudWxsLFxuICAgICAgICBwcmltaXRpdmUgPSBwcmltaXRpdmVGcm9tSW50ZWdlcihpbnRlZ2VyLCBjb250ZXh0KSxcbiAgICAgICAgc3RyaW5nID0gcHJpbWl0aXZlLmdldFN0cmluZygpLFxuICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgYnJlYWtQb2ludCA9IG51bGw7XG5cbiAgY29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgdmFsdWUgPSBuZXcgVmFsdWUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgcHJpbWl0aXZlKTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZyb21Ob21pbmFsVmFsdWUobm9taW5hbFZhbHVlKSB7XG4gIGNvbnN0IHsgVmFsdWUgfSA9IGVsZW1lbnRzLFxuICAgICAgICB2YXJpYWJsZSA9IG51bGwsXG4gICAgICAgIHByaW1pdGl2ZSA9IHByaW1pdGl2ZUZyb21Ob21pbmFsVmFsdWUobm9taW5hbFZhbHVlKSxcbiAgICAgICAgc3RyaW5nID0gcHJpbWl0aXZlLmdldFN0cmluZygpLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgIGNvbnRleHQgPSBudWxsLCAgLy8vXG4gICAgICAgIHZhbHVlID0gbmV3IFZhbHVlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIHByaW1pdGl2ZSk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGcm9tU3RyaW5nTGl0ZXJhbChzdHJpbmdMaXRlcmFsLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVmFsdWUgfSA9IGVsZW1lbnRzLFxuICAgICAgICB2YXJpYWJsZSA9IG51bGwsXG4gICAgICAgIHByaW1pdGl2ZSA9IHByaW1pdGl2ZUZyb21TdHJpbmdMaXRlcmFsKHN0cmluZ0xpdGVyYWwsIGNvbnRleHQpLFxuICAgICAgICBzdHJpbmcgPSBwcmltaXRpdmUuZ2V0U3RyaW5nKCksXG4gICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB2YWx1ZSA9IG5ldyBWYWx1ZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBwcmltaXRpdmUpO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbU5vZGVBbmROb21pbmFsVmFsdWUobm9kZSwgbm9taW5hbFZhbHVlKSB7XG4gIGNvbnN0IGNvbnRleHQgPSBub21pbmFsVmFsdWUuZ2V0Q29udGV4dCgpO1xuXG4gIG5vbWluYWxWYWx1ZSA9IE5vbWluYWxWYWx1ZS5mcm9tTm9kZShub2RlLCBjb250ZXh0KTtcblxuICBjb25zdCB2YWx1ZSA9IHZhbHVlRnJvbU5vbWluYWxWYWx1ZShub21pbmFsVmFsdWUpO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbU5vZGVzQW5kTm9taW5hbFZhbHVlKG5vZGVzLCBub21pbmFsVmFsdWUpIHtcbiAgY29uc3QgY29udGV4dCA9IG5vbWluYWxWYWx1ZS5nZXRDb250ZXh0KCksXG4gICAgICAgIG5vbWluYWxWdmFsdWVzID0gbm9kZXMubWFwKChub2RlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgbm9taW5hbFZhbHVlID0gTm9taW5hbFZhbHVlLmZyb21Ob2RlKG5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIG5vbWluYWxWYWx1ZTtcbiAgICAgICAgfSksXG4gICAgICAgIHZhbHVlID0gdmFsdWVGcm9tTm9taW5hbFZhbHVlcyhub21pbmFsVnZhbHVlcyk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHZhbHVlRnJvbUJvb2xlYW4sXG4gIHZhbHVlRnJvbVN0cmluZ0xpdGVyYWwsXG4gIHZhbHVlRnJvbU5vZGVBbmROb21pbmFsVmFsdWUsXG4gIHZhbHVlRnJvbU5vZGVzQW5kTm9taW5hbFZhbHVlXG59O1xuXG5mdW5jdGlvbiB2YWx1ZUZyb21Ob21pbmFsVmFsdWVzKG5vbWluYWxWYWx1ZXMpIHtcbiAgY29uc3QgeyBWYWx1ZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHZhcmlhYmxlID0gbnVsbCxcbiAgICAgICAgY29udGV4dCA9IG51bGwsXG4gICAgICAgIHByaW1pdGl2ZSA9IHByaW1pdGl2ZUZyb21Ob21pbmFsVmFsdWVzKG5vbWluYWxWYWx1ZXMsIGNvbnRleHQpLFxuICAgICAgICBzdHJpbmcgPSBwcmltaXRpdmUuZ2V0U3RyaW5nKCksXG4gICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgdmFsdWUgPSBuZXcgVmFsdWUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgcHJpbWl0aXZlKTtcblxuICByZXR1cm4gdmFsdWU7XG59XG4iXSwibmFtZXMiOlsidmFsdWVGcm9tQm9vbGVhbiIsInZhbHVlRnJvbUludGVnZXIiLCJ2YWx1ZUZyb21Ob2RlQW5kTm9taW5hbFZhbHVlIiwidmFsdWVGcm9tTm9kZXNBbmROb21pbmFsVmFsdWUiLCJ2YWx1ZUZyb21Ob21pbmFsVmFsdWUiLCJ2YWx1ZUZyb21TdHJpbmdMaXRlcmFsIiwiYm9vbGVhbiIsImNvbnRleHQiLCJWYWx1ZSIsImVsZW1lbnRzIiwidmFyaWFibGUiLCJwcmltaXRpdmUiLCJwcmltaXRpdmVGcm9tQm9vbGVhbiIsInN0cmluZyIsImdldFN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidmFsdWUiLCJpbnRlZ2VyIiwicHJpbWl0aXZlRnJvbUludGVnZXIiLCJub21pbmFsVmFsdWUiLCJwcmltaXRpdmVGcm9tTm9taW5hbFZhbHVlIiwic3RyaW5nTGl0ZXJhbCIsInByaW1pdGl2ZUZyb21TdHJpbmdMaXRlcmFsIiwiZ2V0Q29udGV4dCIsIk5vbWluYWxWYWx1ZSIsImZyb21Ob2RlIiwibm9kZXMiLCJub21pbmFsVnZhbHVlcyIsIm1hcCIsInZhbHVlRnJvbU5vbWlu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
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmFsdWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCBOb21pbmFsVmFsdWUgZnJvbSBcIi4uL25vbWluYWxWYWx1ZVwiO1xuXG5pbXBvcnQgeyBwcmltaXRpdmVGcm9tQm9vbGVhbiwgcHJpbWl0aXZlRnJvbUludGVnZXIsIHByaW1pdGl2ZUZyb21Ob21pbmFsVmFsdWUsIHByaW1pdGl2ZUZyb21Ob21pbmFsVmFsdWVzLCBwcmltaXRpdmVGcm9tU3RyaW5nTGl0ZXJhbCB9IGZyb20gXCIuLi91dGlsaXRpZXMvcHJpbWl0aXZlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZyb21Cb29sZWFuKGJvb2xlYW4sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYWx1ZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHZhcmlhYmxlID0gbnVsbCxcbiAgICAgICAgcHJpbWl0aXZlID0gcHJpbWl0aXZlRnJvbUJvb2xlYW4oYm9vbGVhbiwgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHByaW1pdGl2ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHZhbHVlID0gbmV3IFZhbHVlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIHByaW1pdGl2ZSk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGcm9tSW50ZWdlcihpbnRlZ2VyLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVmFsdWUgfSA9IGVsZW1lbnRzLFxuICAgICAgICB2YXJpYWJsZSA9IG51bGwsXG4gICAgICAgIHByaW1pdGl2ZSA9IHByaW1pdGl2ZUZyb21JbnRlZ2VyKGludGVnZXIsIGNvbnRleHQpLFxuICAgICAgICBzdHJpbmcgPSBwcmltaXRpdmUuZ2V0U3RyaW5nKCksXG4gICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICBicmVha1BvaW50ID0gbnVsbDtcblxuICBjb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB2YWx1ZSA9IG5ldyBWYWx1ZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBwcmltaXRpdmUpO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbU5vbWluYWxWYWx1ZShub21pbmFsVmFsdWUpIHtcbiAgY29uc3QgeyBWYWx1ZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHZhcmlhYmxlID0gbnVsbCxcbiAgICAgICAgcHJpbWl0aXZlID0gcHJpbWl0aXZlRnJvbU5vbWluYWxWYWx1ZShub21pbmFsVmFsdWUpLFxuICAgICAgICBzdHJpbmcgPSBwcmltaXRpdmUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgY29udGV4dCA9IG51bGwsICAvLy9cbiAgICAgICAgdmFsdWUgPSBuZXcgVmFsdWUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB2YXJpYWJsZSwgcHJpbWl0aXZlKTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZyb21TdHJpbmdMaXRlcmFsKHN0cmluZ0xpdGVyYWwsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYWx1ZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHZhcmlhYmxlID0gbnVsbCxcbiAgICAgICAgcHJpbWl0aXZlID0gcHJpbWl0aXZlRnJvbVN0cmluZ0xpdGVyYWwoc3RyaW5nTGl0ZXJhbCwgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHByaW1pdGl2ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsO1xuXG4gIGNvbnRleHQgPSBudWxsO1xuXG4gIGNvbnN0IHZhbHVlID0gbmV3IFZhbHVlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdmFyaWFibGUsIHByaW1pdGl2ZSk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGcm9tTm9kZUFuZE5vbWluYWxWYWx1ZShub2RlLCBub21pbmFsVmFsdWUpIHtcbiAgY29uc3QgY29udGV4dCA9IG5vbWluYWxWYWx1ZS5nZXRDb250ZXh0KCk7XG5cbiAgbm9taW5hbFZhbHVlID0gTm9taW5hbFZhbHVlLmZyb21Ob2RlKG5vZGUsIGNvbnRleHQpO1xuXG4gIGNvbnN0IHZhbHVlID0gdmFsdWVGcm9tTm9taW5hbFZhbHVlKG5vbWluYWxWYWx1ZSk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGcm9tTm9kZXNBbmROb21pbmFsVmFsdWUobm9kZXMsIG5vbWluYWxWYWx1ZSkge1xuICBjb25zdCBjb250ZXh0ID0gbm9taW5hbFZhbHVlLmdldENvbnRleHQoKSxcbiAgICAgICAgbm9taW5hbFZ2YWx1ZXMgPSBub2Rlcy5tYXAoKG5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBub21pbmFsVmFsdWUgPSBOb21pbmFsVmFsdWUuZnJvbU5vZGUobm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gbm9taW5hbFZhbHVlO1xuICAgICAgICB9KSxcbiAgICAgICAgdmFsdWUgPSB2YWx1ZUZyb21Ob21pbmFsVmFsdWVzKG5vbWluYWxWdmFsdWVzKTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdmFsdWVGcm9tQm9vbGVhbixcbiAgdmFsdWVGcm9tU3RyaW5nTGl0ZXJhbCxcbiAgdmFsdWVGcm9tTm9kZUFuZE5vbWluYWxWYWx1ZSxcbiAgdmFsdWVGcm9tTm9kZXNBbmROb21pbmFsVmFsdWVcbn07XG5cbmZ1bmN0aW9uIHZhbHVlRnJvbU5vbWluYWxWYWx1ZXMobm9taW5hbFZhbHVlcykge1xuICBjb25zdCB7IFZhbHVlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdmFyaWFibGUgPSBudWxsLFxuICAgICAgICBjb250ZXh0ID0gbnVsbCxcbiAgICAgICAgcHJpbWl0aXZlID0gcHJpbWl0aXZlRnJvbU5vbWluYWxWYWx1ZXMobm9taW5hbFZhbHVlcywgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHByaW1pdGl2ZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICB2YWx1ZSA9IG5ldyBWYWx1ZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHZhcmlhYmxlLCBwcmltaXRpdmUpO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cbiJdLCJuYW1lcyI6WyJ2YWx1ZUZyb21Cb29sZWFuIiwidmFsdWVGcm9tSW50ZWdlciIsInZhbHVlRnJvbU5vZGVBbmROb21pbmFsVmFsdWUiLCJ2YWx1ZUZyb21Ob2Rlc0FuZE5vbWluYWxWYWx1ZSIsInZhbHVlRnJvbU5vbWluYWxWYWx1ZSIsInZhbHVlRnJvbVN0cmluZ0xpdGVyYWwiLCJib29sZWFuIiwiY29udGV4dCIsIlZhbHVlIiwiZWxlbWVudHMiLCJ2YXJpYWJsZSIsInByaW1pdGl2ZSIsInByaW1pdGl2ZUZyb21Cb29sZWFuIiwic3RyaW5nIiwiZ2V0U3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ2YWx1ZSIsImludGVnZXIiLCJwcmltaXRpdmVGcm9tSW50ZWdlciIsIm5vbWluYWxWYWx1ZSIsInByaW1pdGl2ZUZyb21Ob21pbmFsVmFsdWUiLCJzdHJpbmdMaXRlcmFsIiwicHJpbWl0aXZlRnJvbVN0cmluZ0xpdGVyYWwiLCJnZXRDb250ZXh0IiwiTm9taW5hbFZhbHVlIiwiZnJvbU5vZGUiLCJub2RlcyIsIm5vbWluYWxWdmFsdWVzIiwibWFwIiwidmFsdWVGcm9tTm9taW5hbFZhbHVlcyIsIm5vbWluYWxWYWx1ZXMiLCJwcmltaXRpdmVGcm9tTm9taW5hbFZhbHVlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBdUZBO2VBQUE7O1FBaEZnQkE7ZUFBQUE7O1FBZUFDO2VBQUFBOztRQTJDQUM7ZUFBQUE7O1FBVUFDO2VBQUFBOztRQXRDQUM7ZUFBQUE7O1FBYUFDO2VBQUFBOzs7aUVBaERLO3FFQUNJOzJCQUVxSDs7Ozs7O0FBRXZJLFNBQVNMLGlCQUFpQk0sT0FBTyxFQUFFQyxPQUFPO0lBQy9DLE1BQU0sRUFBRUMsS0FBSyxFQUFFLEdBQUdDLGlCQUFRLEVBQ3BCQyxXQUFXLE1BQ1hDLFlBQVlDLElBQUFBLCtCQUFvQixFQUFDTixTQUFTQyxVQUMxQ00sU0FBU0YsVUFBVUcsU0FBUyxJQUM1QkMsT0FBTyxNQUNQQyxhQUFhO0lBRW5CVCxVQUFVO0lBRVYsTUFBTVUsUUFBUSxJQUFJVCxNQUFNRCxTQUFTTSxRQUFRRSxNQUFNQyxZQUFZTixVQUFVQztJQUVyRSxPQUFPTTtBQUNUO0FBRU8sU0FBU2hCLGlCQUFpQmlCLE9BQU8sRUFBRVgsT0FBTztJQUMvQyxNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyxpQkFBUSxFQUNwQkMsV0FBVyxNQUNYQyxZQUFZUSxJQUFBQSwrQkFBb0IsRUFBQ0QsU0FBU1gsVUFDMUNNLFNBQVNGLFVBQVVHLFNBQVMsSUFDNUJDLE9BQU8sTUFDUEMsYUFBYTtJQUVuQlQsVUFBVTtJQUVWLE1BQU1VLFFBQVEsSUFBSVQsTUFBTUQsU0FBU00sUUFBUUUsTUFBTUMsWUFBWU4sVUFBVUM7SUFFckUsT0FBT007QUFDVDtBQUVPLFNBQVNiLHNCQUFzQmdCLFlBQVk7SUFDaEQsTUFBTSxFQUFFWixLQUFLLEVBQUUsR0FBR0MsaUJBQVEsRUFDcEJDLFdBQVcsTUFDWEMsWUFBWVUsSUFBQUEsb0NBQXlCLEVBQUNELGVBQ3RDUCxTQUFTRixVQUFVRyxTQUFTLElBQzVCRSxhQUFhLE1BQ2JELE9BQU8sTUFDUFIsVUFBVSxNQUNWVSxRQUFRLElBQUlULE1BQU1ELFNBQVNNLFFBQVFFLE1BQU1DLFlBQVlOLFVBQVVDO0lBRXJFLE9BQU9NO0FBQ1Q7QUFFTyxTQUFTWix1QkFBdUJpQixhQUFhLEVBQUVmLE9BQU87SUFDM0QsTUFBTSxFQUFFQyxLQUFLLEVBQUUsR0FBR0MsaUJBQVEsRUFDcEJDLFdBQVcsTUFDWEMsWUFBWVksSUFBQUEscUNBQTBCLEVBQUNELGVBQWVmLFVBQ3RETSxTQUFTRixVQUFVRyxTQUFTLElBQzVCQyxPQUFPLE1BQ1BDLGFBQWE7SUFFbkJULFVBQVU7SUFFVixNQUFNVSxRQUFRLElBQUlULE1BQU1ELFNBQVNNLFFBQVFFLE1BQU1DLFlBQVlOLFVBQVVDO0lBRXJFLE9BQU9NO0FBQ1Q7QUFFTyxTQUFTZiw2QkFBNkJhLElBQUksRUFBRUssWUFBWTtJQUM3RCxNQUFNYixVQUFVYSxhQUFhSSxVQUFVO0lBRXZDSixlQUFlSyxxQkFBWSxDQUFDQyxRQUFRLENBQUNYLE1BQU1SO0lBRTNDLE1BQU1VLFFBQVFiLHNCQUFzQmdCO0lBRXBDLE9BQU9IO0FBQ1Q7QUFFTyxTQUFTZCw4QkFBOEJ3QixLQUFLLEVBQUVQLFlBQVk7SUFDL0QsTUFBTWIsVUFBVWEsYUFBYUksVUFBVSxJQUNqQ0ksaUJBQWlCRCxNQUFNRSxHQUFHLENBQUMsQ0FBQ2Q7UUFDMUIsTUFBTUssZUFBZUsscUJBQVksQ0FBQ0MsUUFBUSxDQUFDWCxNQUFNUjtRQUVqRCxPQUFPYTtJQUNULElBQ0FILFFBQVFhLHVCQUF1QkY7SUFFckMsT0FBT1g7QUFDVDtNQUVBLFdBQWU7SUFDYmpCO0lBQ0FLO0lBQ0FIO0lBQ0FDO0FBQ0Y7QUFFQSxTQUFTMkIsdUJBQXVCQyxhQUFhO0lBQzNDLE1BQU0sRUFBRXZCLEtBQUssRUFBRSxHQUFHQyxpQkFBUSxFQUNwQkMsV0FBVyxNQUNYSCxVQUFVLE1BQ1ZJLFlBQVlxQixJQUFBQSxxQ0FBMEIsRUFBQ0QsZUFBZXhCLFVBQ3RETSxTQUFTRixVQUFVRyxTQUFTLElBQzVCQyxPQUFPLE1BQ1BDLGFBQWEsTUFDYkMsUUFBUSxJQUFJVCxNQUFNRCxTQUFTTSxRQUFRRSxNQUFNQyxZQUFZTixVQUFVQztJQUVyRSxPQUFPTTtBQUNUIn0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-furtle",
3
3
  "author": "James Smith",
4
- "version": "3.0.325",
4
+ "version": "3.0.326",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-furtle",
7
7
  "description": "Occam's Furtle language.",
@@ -4,10 +4,11 @@ import { Element } from "occam-languages";
4
4
  import { arrayUtilities } from "necessary";
5
5
 
6
6
  import Exception from "../exception";
7
+ import NominalValue from "../nominalValue";
7
8
 
8
9
  import { define } from "../elements";
9
10
  import { NOMINAL_VALUE_TYPE_NAME } from "../typeNames";
10
- import { valueFromNodeAndNominalValue } from "../utilities/value";
11
+ import { valueFromNominalValue, valueFromNodeAndNominalValue } from "../utilities/value";
11
12
 
12
13
  const { first } = arrayUtilities;
13
14
 
@@ -72,18 +73,24 @@ export default define(class NodeQuery extends Element {
72
73
  const nodes = this.query.execute(node),
73
74
  nodesLength = nodes.length;
74
75
 
75
- if (nodesLength !== 1) {
76
- const message = `The length of the returned nodes is ${nodesLength} when it should be 1.`,
77
- exception = Exception.fromMessage(message);
76
+ if (false) {
77
+ ///
78
+ } else if (nodesLength === 0) {
79
+ const nominalValue = NominalValue.fromNothing();
78
80
 
79
- throw exception;
80
- }
81
+ value = valueFromNominalValue(nominalValue);
82
+ } else if (nodesLength === 1) {
83
+ const firstNode = first(nodes);
81
84
 
82
- const firstNode = first(nodes);
85
+ node = firstNode ///
83
86
 
84
- node = firstNode ///
87
+ value = valueFromNodeAndNominalValue(node, nominalValue);
88
+ } else {
89
+ const message = `The length of the returned nodes is ${nodesLength} when it should be 0 or 1.`,
90
+ exception = Exception.fromMessage(message);
85
91
 
86
- value = valueFromNodeAndNominalValue(node, nominalValue);
92
+ throw exception;
93
+ }
87
94
 
88
95
  const valueString = value.getString();
89
96
 
@@ -4,6 +4,7 @@ import { Element } from "occam-languages";
4
4
 
5
5
  import Exception from "../exception";
6
6
 
7
+ import { free } from "../utilities/context";
7
8
  import { define } from "../elements";
8
9
 
9
10
  export default define(class ProcedureCall extends Element {
@@ -41,10 +42,16 @@ export default define(class ProcedureCall extends Element {
41
42
  throw exception;
42
43
  }
43
44
 
45
+ let value;
46
+
44
47
  const procedure = context.findProcedureByProcedureName(procedureName),
45
- values = this.values.evaluate(context),
46
- value = await procedure.call(values, context),
47
- valueString = value.getString();
48
+ values = this.values.evaluate(context);
49
+
50
+ await free(async (context) => {
51
+ value = await procedure.call(values, context);
52
+ }, context);
53
+
54
+ const valueString = value.getString();
48
55
 
49
56
  context.debug(`...evaluated the '${procedureCallString}' function call as '${valueString}'.`);
50
57
 
@@ -2,6 +2,12 @@
2
2
 
3
3
  import BlockContext from "../context/block";
4
4
 
5
+ export function free(innerFunction, context) {
6
+ context = freeContext(context); ///
7
+
8
+ return innerFunction(context);
9
+ }
10
+
5
11
  export function confine(innerFunction, variables, context) {
6
12
  const blockContext = BlockContext.fromVariables(variables, context);
7
13
 
@@ -9,3 +15,15 @@ export function confine(innerFunction, variables, context) {
9
15
 
10
16
  return innerFunction(context);
11
17
  }
18
+
19
+ function freeContext(context) {
20
+ let contextBlockContext = (context instanceof BlockContext);
21
+
22
+ while (contextBlockContext) {
23
+ context = context.getContext();
24
+
25
+ contextBlockContext = (context instanceof BlockContext)
26
+ }
27
+
28
+ return context;
29
+ }
@@ -7,11 +7,11 @@ import { primitiveFromBoolean, primitiveFromInteger, primitiveFromNominalValue,
7
7
 
8
8
  export function valueFromBoolean(boolean, context) {
9
9
  const { Value } = elements,
10
- variable = null,
11
- primitive = primitiveFromBoolean(boolean, context),
12
- string = primitive.getString(),
13
- node = null,
14
- breakPoint = null;
10
+ variable = null,
11
+ primitive = primitiveFromBoolean(boolean, context),
12
+ string = primitive.getString(),
13
+ node = null,
14
+ breakPoint = null;
15
15
 
16
16
  context = null;
17
17