版博士V2.0程序
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/core/index.ts
  2. var _common = require('@vue-macros/common');
  3. function transformShortEmits(code, id) {
  4. if (!code.includes("SE") && !code.includes("ShortEmits"))
  5. return;
  6. const sfc = _common.parseSFC.call(void 0, code, id);
  7. const { scriptSetup, lang, getSetupAst } = sfc;
  8. if (!scriptSetup || !_common.isTs.call(void 0, lang))
  9. return;
  10. const offset = scriptSetup.loc.start.offset;
  11. const ast = getSetupAst();
  12. const nodes = [];
  13. _common.walkAST.call(void 0, ast, {
  14. enter(node) {
  15. var _a;
  16. if (node.type === "TSTypeReference" && node.typeName.type === "Identifier" && ["SE", "ShortEmits"].includes(node.typeName.name) && ((_a = node.typeParameters) == null ? void 0 : _a.params[0].type)) {
  17. nodes.push({
  18. def: node.typeParameters.params[0],
  19. type: node
  20. });
  21. }
  22. }
  23. });
  24. const s = new (0, _common.MagicString)(code);
  25. function stringifyParams(params) {
  26. return params.length > 0 ? s.sliceNode(params, { offset }) : "";
  27. }
  28. for (const { def, type } of nodes) {
  29. if (def.type !== "TSTypeLiteral")
  30. throw new SyntaxError(
  31. `accepts object literal only: ${s.sliceNode(def, { offset })}`
  32. );
  33. s.remove(offset + type.start, offset + def.start);
  34. s.remove(offset + def.end, offset + type.end);
  35. for (const _member of def.members) {
  36. if (!["TSPropertySignature", "TSMethodSignature"].includes(_member.type))
  37. throw new SyntaxError(
  38. `accepts method and property only: ${s.sliceNode(_member, {
  39. offset
  40. })}`
  41. );
  42. const member = _member;
  43. const key = _common.resolveObjectKey.call(void 0, member.key, member.computed);
  44. let params = "";
  45. switch (member.type) {
  46. case "TSPropertySignature": {
  47. if (!member.typeAnnotation || !["TSTupleType", "TSFunctionType"].includes(
  48. member.typeAnnotation.typeAnnotation.type
  49. ))
  50. throw new SyntaxError(
  51. `not supported: ${s.sliceNode(member, { offset })}`
  52. );
  53. switch (member.typeAnnotation.typeAnnotation.type) {
  54. case "TSTupleType":
  55. params = `...args: ${s.sliceNode(
  56. member.typeAnnotation.typeAnnotation,
  57. { offset }
  58. )}`;
  59. break;
  60. case "TSFunctionType":
  61. params = stringifyParams(
  62. member.typeAnnotation.typeAnnotation.parameters
  63. );
  64. break;
  65. }
  66. break;
  67. }
  68. case "TSMethodSignature": {
  69. params = stringifyParams(member.parameters);
  70. break;
  71. }
  72. }
  73. s.overwriteNode(
  74. member,
  75. `(evt: ${key}${params ? `, ${params}` : ""}): void`,
  76. { offset }
  77. );
  78. }
  79. }
  80. return _common.getTransformResult.call(void 0, s, id);
  81. }
  82. exports.transformShortEmits = transformShortEmits;