"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _scope = _interopRequireDefault(require("./scope")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var WalkerPath = /*#__PURE__*/function () { function WalkerPath(node, parent, parentKey) { var _this = this; if (parent === void 0) { parent = null; } if (parentKey === void 0) { parentKey = null; } this.node = node; this.parent = parent; this.parentKey = parentKey; this.scope = parent ? parent.scope.child(node) : new _scope.default(node); // Consume in scope values if (node.type === 'PathExpression') { this.scope.useLocal(node); } if (node.type === 'ElementNode') { this.scope.useLocal(node); node.children.forEach(function (node) { return _this.scope.useLocal(node); }); } } var _proto = WalkerPath.prototype; _proto.parents = function parents() { var _this2 = this, _ref; return _ref = {}, _ref[Symbol.iterator] = function () { return new PathParentsIterator(_this2); }, _ref; }; _createClass(WalkerPath, [{ key: "parentNode", get: function get() { return this.parent ? this.parent.node : null; } }]); return WalkerPath; }(); exports.default = WalkerPath; var PathParentsIterator = /*#__PURE__*/function () { function PathParentsIterator(path) { this.path = path; } var _proto2 = PathParentsIterator.prototype; _proto2.next = function next() { if (this.path.parent) { this.path = this.path.parent; return { done: false, value: this.path }; } else { return { done: true, value: null }; } }; return PathParentsIterator; }(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVjLFU7QUFNWixXQUFBLFVBQUEsQ0FBQSxJQUFBLEVBQUEsTUFBQSxFQUFBLFNBQUEsRUFHaUM7QUFBQSxRQUFBLEtBQUEsR0FBQSxJQUFBOztBQUFBLFFBRC9CLE1BQytCLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFEL0IsTUFBQSxNQUMrQixHQUhqQyxJQUVFO0FBQytCOztBQUFBLFFBQS9CLFNBQStCLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBL0IsTUFBQSxTQUErQixHQUhqQyxJQUdFO0FBQStCOztBQUUvQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxNQUFBLEdBQUEsTUFBQTtBQUNBLFNBQUEsU0FBQSxHQUFBLFNBQUE7QUFDQSxTQUFBLEtBQUEsR0FBYSxNQUFNLEdBQUcsTUFBTSxDQUFOLEtBQUEsQ0FBQSxLQUFBLENBQUgsSUFBRyxDQUFILEdBQThCLElBQUEsY0FBQSxDQUxsQixJQUtrQixDQUFqRCxDQUwrQixDQU8vQjs7QUFDQSxRQUFJLElBQUksQ0FBSixJQUFBLEtBQUosZ0JBQUEsRUFBb0M7QUFDbEMsV0FBQSxLQUFBLENBQUEsUUFBQSxDQUFBLElBQUE7QUFDRDs7QUFFRCxRQUFJLElBQUksQ0FBSixJQUFBLEtBQUosYUFBQSxFQUFpQztBQUMvQixXQUFBLEtBQUEsQ0FBQSxRQUFBLENBQUEsSUFBQTtBQUVDLE1BQUEsSUFBMEIsQ0FBMUIsUUFBQSxDQUFBLE9BQUEsQ0FBNkMsVUFBRCxJQUFDLEVBQUQ7QUFBQSxlQUMzQyxLQUFBLENBQUEsS0FBQSxDQUFBLFFBQUEsQ0FERCxJQUNDLENBRDJDO0FBQTVDLE9BQUE7QUFHRjtBQUNGOzs7O1NBTUQsTyxHQUFBLFNBQUEsT0FBQSxHQUFPO0FBQUEsUUFBQSxNQUFBLEdBQUEsSUFBQTtBQUFBLFFBQUEsSUFBQTs7QUFDTCxXQUFBLElBQUEsR0FBQSxFQUFBLEVBQUEsSUFBQSxDQUNHLE1BQU0sQ0FEVCxRQUFBLENBQUEsR0FDcUIsWUFBSztBQUN0QixhQUFPLElBQUEsbUJBQUEsQ0FBUCxNQUFPLENBQVA7QUFGSixLQUFBLEVBQUEsSUFBQTs7Ozs7d0JBTFk7QUFDWixhQUFPLEtBQUEsTUFBQSxHQUFjLEtBQUEsTUFBQSxDQUFkLElBQUEsR0FBUCxJQUFBO0FBQ0Q7Ozs7Ozs7O0lBV0gsbUI7QUFHRSxXQUFBLG1CQUFBLENBQUEsSUFBQSxFQUF3QztBQUN0QyxTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0Q7Ozs7VUFFRCxJLEdBQUEsU0FBQSxJQUFBLEdBQUk7QUFDRixRQUFJLEtBQUEsSUFBQSxDQUFKLE1BQUEsRUFBc0I7QUFDcEIsV0FBQSxJQUFBLEdBQVksS0FBQSxJQUFBLENBQVosTUFBQTtBQUNBLGFBQU87QUFBRSxRQUFBLElBQUksRUFBTixLQUFBO0FBQWUsUUFBQSxLQUFLLEVBQUUsS0FBSztBQUEzQixPQUFQO0FBRkYsS0FBQSxNQUdPO0FBQ0wsYUFBTztBQUFFLFFBQUEsSUFBSSxFQUFOLElBQUE7QUFBYyxRQUFBLEtBQUssRUFBRTtBQUFyQixPQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBBU1R2MSBmcm9tICcuLi92MS9hcGknO1xuaW1wb3J0IFJvb3RUcmFuc2Zvcm1TY29wZSwgeyBUcmFuc2Zvcm1TY29wZSB9IGZyb20gJy4vc2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXYWxrZXJQYXRoPE4gZXh0ZW5kcyBBU1R2MS5Ob2RlPiB7XG4gIG5vZGU6IE47XG4gIHBhcmVudDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGw7XG4gIHBhcmVudEtleTogc3RyaW5nIHwgbnVsbDtcbiAgc2NvcGU6IFRyYW5zZm9ybVNjb3BlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG5vZGU6IE4sXG4gICAgcGFyZW50OiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbCA9IG51bGwsXG4gICAgcGFyZW50S2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApIHtcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIHRoaXMucGFyZW50S2V5ID0gcGFyZW50S2V5O1xuICAgIHRoaXMuc2NvcGUgPSBwYXJlbnQgPyBwYXJlbnQuc2NvcGUuY2hpbGQobm9kZSkgOiBuZXcgUm9vdFRyYW5zZm9ybVNjb3BlKG5vZGUpO1xuXG4gICAgLy8gQ29uc3VtZSBpbiBzY29wZSB2YWx1ZXNcbiAgICBpZiAobm9kZS50eXBlID09PSAnUGF0aEV4cHJlc3Npb24nKSB7XG4gICAgICB0aGlzLnNjb3BlLnVzZUxvY2FsKG5vZGUpO1xuICAgIH1cblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdFbGVtZW50Tm9kZScpIHtcbiAgICAgIHRoaXMuc2NvcGUudXNlTG9jYWwobm9kZSk7XG5cbiAgICAgIChub2RlIGFzIEFTVHYxLkVsZW1lbnROb2RlKS5jaGlsZHJlbi5mb3JFYWNoKChub2RlOiBBU1R2MS5TdGF0ZW1lbnQpID0+XG4gICAgICAgIHRoaXMuc2NvcGUudXNlTG9jYWwobm9kZSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHBhcmVudE5vZGUoKTogQVNUdjEuTm9kZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50Lm5vZGUgOiBudWxsO1xuICB9XG5cbiAgcGFyZW50cygpOiBJdGVyYWJsZTxXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbD4ge1xuICAgIHJldHVybiB7XG4gICAgICBbU3ltYm9sLml0ZXJhdG9yXTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFBhdGhQYXJlbnRzSXRlcmF0b3IodGhpcyk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgUGF0aFBhcmVudHNJdGVyYXRvciBpbXBsZW1lbnRzIEl0ZXJhdG9yPFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsPiB7XG4gIHBhdGg6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT47XG5cbiAgY29uc3RydWN0b3IocGF0aDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPikge1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIGlmICh0aGlzLnBhdGgucGFyZW50KSB7XG4gICAgICB0aGlzLnBhdGggPSB0aGlzLnBhdGgucGFyZW50O1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiB0aGlzLnBhdGggfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG51bGwgfTtcbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=