scriptRanges.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.parseScriptRanges = void 0;
  4. const scriptSetupRanges_1 = require("./scriptSetupRanges");
  5. function parseScriptRanges(ts, ast, hasScriptSetup, withNode) {
  6. let exportDefault;
  7. const bindings = hasScriptSetup ? (0, scriptSetupRanges_1.parseBindingRanges)(ts, ast) : [];
  8. ast.forEachChild(raw => {
  9. if (ts.isExportAssignment(raw)) {
  10. let node = raw;
  11. while (ts.isAsExpression(node.expression) || ts.isParenthesizedExpression(node.expression)) { // fix https://github.com/vuejs/language-tools/issues/1882
  12. node = node.expression;
  13. }
  14. let obj;
  15. if (ts.isObjectLiteralExpression(node.expression)) {
  16. obj = node.expression;
  17. }
  18. else if (ts.isCallExpression(node.expression) && node.expression.arguments.length) {
  19. const arg0 = node.expression.arguments[0];
  20. if (ts.isObjectLiteralExpression(arg0)) {
  21. obj = arg0;
  22. }
  23. }
  24. if (obj) {
  25. let componentsOptionNode;
  26. let nameOptionNode;
  27. obj.forEachChild(node => {
  28. if (ts.isPropertyAssignment(node) && ts.isIdentifier(node.name)) {
  29. if (node.name.escapedText === 'components' && ts.isObjectLiteralExpression(node.initializer)) {
  30. componentsOptionNode = node.initializer;
  31. }
  32. if (node.name.escapedText === 'name') {
  33. nameOptionNode = node.initializer;
  34. }
  35. }
  36. });
  37. exportDefault = {
  38. ..._getStartEnd(raw),
  39. expression: _getStartEnd(node.expression),
  40. args: _getStartEnd(obj),
  41. argsNode: withNode ? obj : undefined,
  42. componentsOption: componentsOptionNode ? _getStartEnd(componentsOptionNode) : undefined,
  43. componentsOptionNode: withNode ? componentsOptionNode : undefined,
  44. nameOption: nameOptionNode ? _getStartEnd(nameOptionNode) : undefined,
  45. };
  46. }
  47. }
  48. });
  49. return {
  50. exportDefault,
  51. bindings,
  52. };
  53. function _getStartEnd(node) {
  54. return (0, scriptSetupRanges_1.getStartEnd)(node, ast);
  55. }
  56. }
  57. exports.parseScriptRanges = parseScriptRanges;
  58. //# sourceMappingURL=scriptRanges.js.map