path.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _scope = _interopRequireDefault(require("./scope"));
  7. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  8. function _defineProperties(target, props) {
  9. for (var i = 0; i < props.length; i++) {
  10. var descriptor = props[i];
  11. descriptor.enumerable = descriptor.enumerable || false;
  12. descriptor.configurable = true;
  13. if ("value" in descriptor) descriptor.writable = true;
  14. Object.defineProperty(target, descriptor.key, descriptor);
  15. }
  16. }
  17. function _createClass(Constructor, protoProps, staticProps) {
  18. if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  19. if (staticProps) _defineProperties(Constructor, staticProps);
  20. return Constructor;
  21. }
  22. var WalkerPath = /*#__PURE__*/function () {
  23. function WalkerPath(node, parent, parentKey) {
  24. var _this = this;
  25. if (parent === void 0) {
  26. parent = null;
  27. }
  28. if (parentKey === void 0) {
  29. parentKey = null;
  30. }
  31. this.node = node;
  32. this.parent = parent;
  33. this.parentKey = parentKey;
  34. this.scope = parent ? parent.scope.child(node) : new _scope.default(node); // Consume in scope values
  35. if (node.type === 'PathExpression') {
  36. this.scope.useLocal(node);
  37. }
  38. if (node.type === 'ElementNode') {
  39. this.scope.useLocal(node);
  40. node.children.forEach(function (node) {
  41. return _this.scope.useLocal(node);
  42. });
  43. }
  44. }
  45. var _proto = WalkerPath.prototype;
  46. _proto.parents = function parents() {
  47. var _this2 = this,
  48. _ref;
  49. return _ref = {}, _ref[Symbol.iterator] = function () {
  50. return new PathParentsIterator(_this2);
  51. }, _ref;
  52. };
  53. _createClass(WalkerPath, [{
  54. key: "parentNode",
  55. get: function get() {
  56. return this.parent ? this.parent.node : null;
  57. }
  58. }]);
  59. return WalkerPath;
  60. }();
  61. exports.default = WalkerPath;
  62. var PathParentsIterator = /*#__PURE__*/function () {
  63. function PathParentsIterator(path) {
  64. this.path = path;
  65. }
  66. var _proto2 = PathParentsIterator.prototype;
  67. _proto2.next = function next() {
  68. if (this.path.parent) {
  69. this.path = this.path.parent;
  70. return {
  71. done: false,
  72. value: this.path
  73. };
  74. } else {
  75. return {
  76. done: true,
  77. value: null
  78. };
  79. }
  80. };
  81. return PathParentsIterator;
  82. }();
  83. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVjLFU7QUFNWixXQUFBLFVBQUEsQ0FBQSxJQUFBLEVBQUEsTUFBQSxFQUFBLFNBQUEsRUFHaUM7QUFBQSxRQUFBLEtBQUEsR0FBQSxJQUFBOztBQUFBLFFBRC9CLE1BQytCLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFEL0IsTUFBQSxNQUMrQixHQUhqQyxJQUVFO0FBQytCOztBQUFBLFFBQS9CLFNBQStCLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBL0IsTUFBQSxTQUErQixHQUhqQyxJQUdFO0FBQStCOztBQUUvQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxNQUFBLEdBQUEsTUFBQTtBQUNBLFNBQUEsU0FBQSxHQUFBLFNBQUE7QUFDQSxTQUFBLEtBQUEsR0FBYSxNQUFNLEdBQUcsTUFBTSxDQUFOLEtBQUEsQ0FBQSxLQUFBLENBQUgsSUFBRyxDQUFILEdBQThCLElBQUEsY0FBQSxDQUxsQixJQUtrQixDQUFqRCxDQUwrQixDQU8vQjs7QUFDQSxRQUFJLElBQUksQ0FBSixJQUFBLEtBQUosZ0JBQUEsRUFBb0M7QUFDbEMsV0FBQSxLQUFBLENBQUEsUUFBQSxDQUFBLElBQUE7QUFDRDs7QUFFRCxRQUFJLElBQUksQ0FBSixJQUFBLEtBQUosYUFBQSxFQUFpQztBQUMvQixXQUFBLEtBQUEsQ0FBQSxRQUFBLENBQUEsSUFBQTtBQUVDLE1BQUEsSUFBMEIsQ0FBMUIsUUFBQSxDQUFBLE9BQUEsQ0FBNkMsVUFBRCxJQUFDLEVBQUQ7QUFBQSxlQUMzQyxLQUFBLENBQUEsS0FBQSxDQUFBLFFBQUEsQ0FERCxJQUNDLENBRDJDO0FBQTVDLE9BQUE7QUFHRjtBQUNGOzs7O1NBTUQsTyxHQUFBLFNBQUEsT0FBQSxHQUFPO0FBQUEsUUFBQSxNQUFBLEdBQUEsSUFBQTtBQUFBLFFBQUEsSUFBQTs7QUFDTCxXQUFBLElBQUEsR0FBQSxFQUFBLEVBQUEsSUFBQSxDQUNHLE1BQU0sQ0FEVCxRQUFBLENBQUEsR0FDcUIsWUFBSztBQUN0QixhQUFPLElBQUEsbUJBQUEsQ0FBUCxNQUFPLENBQVA7QUFGSixLQUFBLEVBQUEsSUFBQTs7Ozs7d0JBTFk7QUFDWixhQUFPLEtBQUEsTUFBQSxHQUFjLEtBQUEsTUFBQSxDQUFkLElBQUEsR0FBUCxJQUFBO0FBQ0Q7Ozs7Ozs7O0lBV0gsbUI7QUFHRSxXQUFBLG1CQUFBLENBQUEsSUFBQSxFQUF3QztBQUN0QyxTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0Q7Ozs7VUFFRCxJLEdBQUEsU0FBQSxJQUFBLEdBQUk7QUFDRixRQUFJLEtBQUEsSUFBQSxDQUFKLE1BQUEsRUFBc0I7QUFDcEIsV0FBQSxJQUFBLEdBQVksS0FBQSxJQUFBLENBQVosTUFBQTtBQUNBLGFBQU87QUFBRSxRQUFBLElBQUksRUFBTixLQUFBO0FBQWUsUUFBQSxLQUFLLEVBQUUsS0FBSztBQUEzQixPQUFQO0FBRkYsS0FBQSxNQUdPO0FBQ0wsYUFBTztBQUFFLFFBQUEsSUFBSSxFQUFOLElBQUE7QUFBYyxRQUFBLEtBQUssRUFBRTtBQUFyQixPQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBBU1R2MSBmcm9tICcuLi92MS9hcGknO1xuaW1wb3J0IFJvb3RUcmFuc2Zvcm1TY29wZSwgeyBUcmFuc2Zvcm1TY29wZSB9IGZyb20gJy4vc2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXYWxrZXJQYXRoPE4gZXh0ZW5kcyBBU1R2MS5Ob2RlPiB7XG4gIG5vZGU6IE47XG4gIHBhcmVudDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGw7XG4gIHBhcmVudEtleTogc3RyaW5nIHwgbnVsbDtcbiAgc2NvcGU6IFRyYW5zZm9ybVNjb3BlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG5vZGU6IE4sXG4gICAgcGFyZW50OiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbCA9IG51bGwsXG4gICAgcGFyZW50S2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApIHtcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIHRoaXMucGFyZW50S2V5ID0gcGFyZW50S2V5O1xuICAgIHRoaXMuc2NvcGUgPSBwYXJlbnQgPyBwYXJlbnQuc2NvcGUuY2hpbGQobm9kZSkgOiBuZXcgUm9vdFRyYW5zZm9ybVNjb3BlKG5vZGUpO1xuXG4gICAgLy8gQ29uc3VtZSBpbiBzY29wZSB2YWx1ZXNcbiAgICBpZiAobm9kZS50eXBlID09PSAnUGF0aEV4cHJlc3Npb24nKSB7XG4gICAgICB0aGlzLnNjb3BlLnVzZUxvY2FsKG5vZGUpO1xuICAgIH1cblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdFbGVtZW50Tm9kZScpIHtcbiAgICAgIHRoaXMuc2NvcGUudXNlTG9jYWwobm9kZSk7XG5cbiAgICAgIChub2RlIGFzIEFTVHYxLkVsZW1lbnROb2RlKS5jaGlsZHJlbi5mb3JFYWNoKChub2RlOiBBU1R2MS5TdGF0ZW1lbnQpID0+XG4gICAgICAgIHRoaXMuc2NvcGUudXNlTG9jYWwobm9kZSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHBhcmVudE5vZGUoKTogQVNUdjEuTm9kZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50Lm5vZGUgOiBudWxsO1xuICB9XG5cbiAgcGFyZW50cygpOiBJdGVyYWJsZTxXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbD4ge1xuICAgIHJldHVybiB7XG4gICAgICBbU3ltYm9sLml0ZXJhdG9yXTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFBhdGhQYXJlbnRzSXRlcmF0b3IodGhpcyk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgUGF0aFBhcmVudHNJdGVyYXRvciBpbXBsZW1lbnRzIEl0ZXJhdG9yPFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsPiB7XG4gIHBhdGg6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT47XG5cbiAgY29uc3RydWN0b3IocGF0aDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPikge1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIGlmICh0aGlzLnBhdGgucGFyZW50KSB7XG4gICAgICB0aGlzLnBhdGggPSB0aGlzLnBhdGgucGFyZW50O1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiB0aGlzLnBhdGggfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG51bGwgfTtcbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=