ast.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.isCompoundExpressionNode = exports.isSimpleExpressionNode = exports.isDirectiveNode = exports.isAttributeNode = exports.isElementNode = exports.parseVue = exports.createCallExpression = exports.createIdentifier = exports.createLiteral = exports.isReference = exports.isExportSpecifier = exports.isMethodDefinition = exports.isMemberExpression = exports.isCallExpression = exports.isAssignmentExpression = exports.isIdentifier = exports.isProperty = void 0;
  4. const compiler_dom_1 = require("@vue/compiler-dom");
  5. const isProperty = (node) => node.type === 'Property';
  6. exports.isProperty = isProperty;
  7. const isIdentifier = (node) => node.type === 'Identifier';
  8. exports.isIdentifier = isIdentifier;
  9. const isAssignmentExpression = (node) => node.type === 'AssignmentExpression';
  10. exports.isAssignmentExpression = isAssignmentExpression;
  11. const isCallExpression = (node) => node.type === 'CallExpression';
  12. exports.isCallExpression = isCallExpression;
  13. const isMemberExpression = (node) => node.type === 'MemberExpression';
  14. exports.isMemberExpression = isMemberExpression;
  15. const isMethodDefinition = (node) => node.type === 'MethodDefinition';
  16. exports.isMethodDefinition = isMethodDefinition;
  17. const isExportSpecifier = (node) => node.type === 'ExportSpecifier';
  18. exports.isExportSpecifier = isExportSpecifier;
  19. const isReference = (node, parent) => {
  20. if ((0, exports.isMemberExpression)(node)) {
  21. return !node.computed && (0, exports.isReference)(node.object, node);
  22. }
  23. if ((0, exports.isIdentifier)(node)) {
  24. if ((0, exports.isMemberExpression)(parent))
  25. return parent.computed || node === parent.object;
  26. // `bar` in { bar: foo }
  27. if ((0, exports.isProperty)(parent) && node !== parent.value)
  28. return false;
  29. // `bar` in `class Foo { bar () {...} }`
  30. if ((0, exports.isMethodDefinition)(parent))
  31. return false;
  32. // `bar` in `export { foo as bar }`
  33. if ((0, exports.isExportSpecifier)(parent) && node !== parent.local)
  34. return false;
  35. return true;
  36. }
  37. return false;
  38. };
  39. exports.isReference = isReference;
  40. function createLiteral(value) {
  41. return {
  42. type: 'Literal',
  43. value,
  44. raw: `'${value}'`,
  45. };
  46. }
  47. exports.createLiteral = createLiteral;
  48. function createIdentifier(name) {
  49. return {
  50. type: 'Identifier',
  51. name,
  52. };
  53. }
  54. exports.createIdentifier = createIdentifier;
  55. function createCallExpression(callee, args) {
  56. return {
  57. type: 'CallExpression',
  58. callee,
  59. arguments: args,
  60. };
  61. }
  62. exports.createCallExpression = createCallExpression;
  63. function parseVue(code, errors) {
  64. return (0, compiler_dom_1.parse)(code, {
  65. isNativeTag: () => true,
  66. isPreTag: () => true,
  67. getTextMode: () => 0 /* TextModes.DATA */,
  68. onError: (e) => {
  69. errors.push(e);
  70. },
  71. });
  72. }
  73. exports.parseVue = parseVue;
  74. function isElementNode(node) {
  75. return node.type === 1 /* NodeTypes.ELEMENT */;
  76. }
  77. exports.isElementNode = isElementNode;
  78. function isAttributeNode(node) {
  79. return node.type === 6 /* NodeTypes.ATTRIBUTE */;
  80. }
  81. exports.isAttributeNode = isAttributeNode;
  82. function isDirectiveNode(node) {
  83. return node.type === 7 /* NodeTypes.DIRECTIVE */;
  84. }
  85. exports.isDirectiveNode = isDirectiveNode;
  86. function isSimpleExpressionNode(node) {
  87. return node.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */;
  88. }
  89. exports.isSimpleExpressionNode = isSimpleExpressionNode;
  90. function isCompoundExpressionNode(node) {
  91. return node.type === 8 /* NodeTypes.COMPOUND_EXPRESSION */;
  92. }
  93. exports.isCompoundExpressionNode = isCompoundExpressionNode;