path.js 6.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. 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); } }
  2. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
  3. import RootTransformScope from './scope';
  4. var WalkerPath = /*#__PURE__*/function () {
  5. function WalkerPath(node, parent, parentKey) {
  6. var _this = this;
  7. if (parent === void 0) {
  8. parent = null;
  9. }
  10. if (parentKey === void 0) {
  11. parentKey = null;
  12. }
  13. this.node = node;
  14. this.parent = parent;
  15. this.parentKey = parentKey;
  16. this.scope = parent ? parent.scope.child(node) : new RootTransformScope(node); // Consume in scope values
  17. if (node.type === 'PathExpression') {
  18. this.scope.useLocal(node);
  19. }
  20. if (node.type === 'ElementNode') {
  21. this.scope.useLocal(node);
  22. node.children.forEach(function (node) {
  23. return _this.scope.useLocal(node);
  24. });
  25. }
  26. }
  27. var _proto = WalkerPath.prototype;
  28. _proto.parents = function parents() {
  29. var _this2 = this,
  30. _ref;
  31. return _ref = {}, _ref[Symbol.iterator] = function () {
  32. return new PathParentsIterator(_this2);
  33. }, _ref;
  34. };
  35. _createClass(WalkerPath, [{
  36. key: "parentNode",
  37. get: function get() {
  38. return this.parent ? this.parent.node : null;
  39. }
  40. }]);
  41. return WalkerPath;
  42. }();
  43. export { WalkerPath as default };
  44. var PathParentsIterator = /*#__PURE__*/function () {
  45. function PathParentsIterator(path) {
  46. this.path = path;
  47. }
  48. var _proto2 = PathParentsIterator.prototype;
  49. _proto2.next = function next() {
  50. if (this.path.parent) {
  51. this.path = this.path.parent;
  52. return {
  53. done: false,
  54. value: this.path
  55. };
  56. } else {
  57. return {
  58. done: true,
  59. value: null
  60. };
  61. }
  62. };
  63. return PathParentsIterator;
  64. }();
  65. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQUEsa0JBQUEsTUFBQSxTQUFBOztJQUVjLFU7QUFNWixzQkFBQSxJQUFBLEVBRUUsTUFGRixFQUdFLFNBSEYsRUFHaUM7QUFBQTs7QUFBQSxRQUQvQixNQUMrQjtBQUQvQixNQUFBLE1BQytCLEdBSGpDLElBR2lDO0FBQUE7O0FBQUEsUUFBL0IsU0FBK0I7QUFBL0IsTUFBQSxTQUErQixHQUhqQyxJQUdpQztBQUFBOztBQUUvQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxNQUFBLEdBQUEsTUFBQTtBQUNBLFNBQUEsU0FBQSxHQUFBLFNBQUE7QUFDQSxTQUFBLEtBQUEsR0FBYSxNQUFNLEdBQUcsTUFBTSxDQUFOLEtBQUEsQ0FBQSxLQUFBLENBQUgsSUFBRyxDQUFILEdBQThCLElBQUEsa0JBQUEsQ0FMbEIsSUFLa0IsQ0FBakQsQ0FMK0IsQ0FPL0I7O0FBQ0EsUUFBSSxJQUFJLENBQUosSUFBQSxLQUFKLGdCQUFBLEVBQW9DO0FBQ2xDLFdBQUEsS0FBQSxDQUFBLFFBQUEsQ0FBQSxJQUFBO0FBQ0Q7O0FBRUQsUUFBSSxJQUFJLENBQUosSUFBQSxLQUFKLGFBQUEsRUFBaUM7QUFDL0IsV0FBQSxLQUFBLENBQUEsUUFBQSxDQUFBLElBQUE7QUFFQyxNQUFBLElBQTBCLENBQTFCLFFBQUEsQ0FBQSxPQUFBLENBQTZDLFVBQUEsSUFBRDtBQUFBLGVBQzNDLEtBQUEsQ0FBQSxLQUFBLENBQUEsUUFBQSxDQURELElBQ0MsQ0FEMkM7QUFBQSxPQUE1QztBQUdGO0FBQ0Y7Ozs7U0FNRCxPLEdBQUEsbUJBQU87QUFBQTtBQUFBOztBQUNMLDJCQUNHLE1BQU0sQ0FBUCxRQURGLElBQ3FCLFlBQUs7QUFDdEIsYUFBTyxJQUFBLG1CQUFBLENBQVAsTUFBTyxDQUFQO0FBQ0QsS0FISDtBQUtELEc7Ozs7d0JBVmE7QUFDWixhQUFPLEtBQUEsTUFBQSxHQUFjLEtBQUEsTUFBQSxDQUFkLElBQUEsR0FBUCxJQUFBO0FBQ0Q7Ozs7OztTQWhDVyxVOztJQTJDZCxtQjtBQUdFLCtCQUFBLElBQUEsRUFBd0M7QUFDdEMsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNEOzs7O1VBRUQsSSxHQUFBLGdCQUFJO0FBQ0YsUUFBSSxLQUFBLElBQUEsQ0FBSixNQUFBLEVBQXNCO0FBQ3BCLFdBQUEsSUFBQSxHQUFZLEtBQUEsSUFBQSxDQUFaLE1BQUE7QUFDQSxhQUFPO0FBQUUsUUFBQSxJQUFJLEVBQU4sS0FBQTtBQUFlLFFBQUEsS0FBSyxFQUFFLEtBQUs7QUFBM0IsT0FBUDtBQUZGLEtBQUEsTUFHTztBQUNMLGFBQU87QUFBRSxRQUFBLElBQUksRUFBTixJQUFBO0FBQWMsUUFBQSxLQUFLLEVBQUU7QUFBckIsT0FBUDtBQUNEO0FBQ0YsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEFTVHYxIGZyb20gJy4uL3YxL2FwaSc7XG5pbXBvcnQgUm9vdFRyYW5zZm9ybVNjb3BlLCB7IFRyYW5zZm9ybVNjb3BlIH0gZnJvbSAnLi9zY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhbGtlclBhdGg8TiBleHRlbmRzIEFTVHYxLk5vZGU+IHtcbiAgbm9kZTogTjtcbiAgcGFyZW50OiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbDtcbiAgcGFyZW50S2V5OiBzdHJpbmcgfCBudWxsO1xuICBzY29wZTogVHJhbnNmb3JtU2NvcGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbm9kZTogTixcbiAgICBwYXJlbnQ6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsID0gbnVsbCxcbiAgICBwYXJlbnRLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICkge1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5wYXJlbnRLZXkgPSBwYXJlbnRLZXk7XG4gICAgdGhpcy5zY29wZSA9IHBhcmVudCA/IHBhcmVudC5zY29wZS5jaGlsZChub2RlKSA6IG5ldyBSb290VHJhbnNmb3JtU2NvcGUobm9kZSk7XG5cbiAgICAvLyBDb25zdW1lIGluIHNjb3BlIHZhbHVlc1xuICAgIGlmIChub2RlLnR5cGUgPT09ICdQYXRoRXhwcmVzc2lvbicpIHtcbiAgICAgIHRoaXMuc2NvcGUudXNlTG9jYWwobm9kZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ0VsZW1lbnROb2RlJykge1xuICAgICAgdGhpcy5zY29wZS51c2VMb2NhbChub2RlKTtcblxuICAgICAgKG5vZGUgYXMgQVNUdjEuRWxlbWVudE5vZGUpLmNoaWxkcmVuLmZvckVhY2goKG5vZGU6IEFTVHYxLlN0YXRlbWVudCkgPT5cbiAgICAgICAgdGhpcy5zY29wZS51c2VMb2NhbChub2RlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcGFyZW50Tm9kZSgpOiBBU1R2MS5Ob2RlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50ID8gdGhpcy5wYXJlbnQubm9kZSA6IG51bGw7XG4gIH1cblxuICBwYXJlbnRzKCk6IEl0ZXJhYmxlPFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtTeW1ib2wuaXRlcmF0b3JdOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUGF0aFBhcmVudHNJdGVyYXRvcih0aGlzKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBQYXRoUGFyZW50c0l0ZXJhdG9yIGltcGxlbWVudHMgSXRlcmF0b3I8V2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGw+IHtcbiAgcGF0aDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPjtcblxuICBjb25zdHJ1Y3RvcihwYXRoOiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+KSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKHRoaXMucGF0aC5wYXJlbnQpIHtcbiAgICAgIHRoaXMucGF0aCA9IHRoaXMucGF0aC5wYXJlbnQ7XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IHRoaXMucGF0aCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbnVsbCB9O1xuICAgIH1cbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==