版博士V2.0程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

67 lines
1.7 KiB

  1. "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/core/index.ts
  2. var _common = require('@vue-macros/common');
  3. function transformDefinePropsRefs(code, id) {
  4. if (!code.includes(_common.DEFINE_PROPS_REFS))
  5. return;
  6. const { scriptSetup, getSetupAst } = _common.parseSFC.call(void 0, code, id);
  7. if (!scriptSetup)
  8. return;
  9. const offset = scriptSetup.loc.start.offset;
  10. const s = new (0, _common.MagicString)(code);
  11. const setupAst = getSetupAst();
  12. let changed = false;
  13. _common.walkAST.call(void 0, setupAst, {
  14. enter(node) {
  15. if (_common.isCallOf.call(void 0, node, _common.WITH_DEFAULTS) && node.arguments) {
  16. processDefinePropsRefs(node.arguments[0], node);
  17. this.skip();
  18. } else if (_common.isCallOf.call(void 0, node, _common.DEFINE_PROPS_REFS)) {
  19. processDefinePropsRefs(node);
  20. }
  21. }
  22. });
  23. if (changed) {
  24. _common.importHelperFn.call(void 0, s, offset, "toRefs", "vue");
  25. }
  26. return _common.getTransformResult.call(void 0, s, id);
  27. function processDefinePropsRefs(propsCall, defaultsCall) {
  28. let code2 = `${_common.DEFINE_PROPS}${s.slice(
  29. offset + propsCall.callee.end,
  30. offset + propsCall.end
  31. )}`;
  32. if (defaultsCall) {
  33. code2 = `${_common.WITH_DEFAULTS}(${code2}, ${s.sliceNode(
  34. defaultsCall.arguments[1],
  35. {
  36. offset
  37. }
  38. )})`;
  39. }
  40. s.prependLeft(offset, `
  41. const ${_common.HELPER_PREFIX}props = ${code2}`);
  42. s.overwriteNode(
  43. defaultsCall || propsCall,
  44. `${_common.HELPER_PREFIX}toRefs(${_common.HELPER_PREFIX}props)`,
  45. {
  46. offset
  47. }
  48. );
  49. changed = true;
  50. }
  51. }
  52. exports.transformDefinePropsRefs = transformDefinePropsRefs;