版博士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.
 
 
 
 

106 líneas
2.7 KiB

  1. import {
  2. MAIN_TEMPLATE,
  3. QUERY_NAMED_TEMPLATE,
  4. QUERY_TEMPLATE,
  5. parseVueRequest,
  6. postTransform,
  7. preTransform
  8. } from "./chunk-RVE44TS4.mjs";
  9. // src/index.ts
  10. import { createUnplugin } from "unplugin";
  11. import {
  12. REGEX_VUE_SFC,
  13. createFilter,
  14. detectVueVersion
  15. } from "@vue-macros/common";
  16. function resolveOption(options) {
  17. const version = options.version || detectVueVersion();
  18. return {
  19. include: [REGEX_VUE_SFC],
  20. ...options,
  21. version
  22. };
  23. }
  24. var name = "unplugin-vue-named-template";
  25. var PrePlugin = createUnplugin(
  26. (userOptions = {}) => {
  27. const options = resolveOption(userOptions);
  28. const filter = createFilter(options);
  29. const templateContent = {};
  30. return {
  31. name: `${name}-pre`,
  32. enforce: "pre",
  33. loadInclude(id) {
  34. return id.includes(QUERY_TEMPLATE);
  35. },
  36. load(id) {
  37. var _a;
  38. const { filename, query } = parseVueRequest(id);
  39. const content = (_a = templateContent[filename]) == null ? void 0 : _a["mainTemplate" in query ? MAIN_TEMPLATE : query.name];
  40. return content;
  41. },
  42. transformInclude(id) {
  43. return filter(id) || id.includes(QUERY_NAMED_TEMPLATE);
  44. },
  45. transform(code, id) {
  46. if (id.includes(QUERY_NAMED_TEMPLATE)) {
  47. const { filename, query } = parseVueRequest(id);
  48. const { name: name2 } = query;
  49. const request = `${filename}?vue&${QUERY_TEMPLATE}&name=${name2}`;
  50. return `import { createTextVNode } from 'vue'
  51. import { render } from ${JSON.stringify(request)}
  52. export default {
  53. render: (...args) => {
  54. const r = render(...args)
  55. return typeof r === 'string' ? createTextVNode(r) : r
  56. }
  57. }`;
  58. } else {
  59. return preTransform(code, id, templateContent);
  60. }
  61. }
  62. };
  63. }
  64. );
  65. var PostPlugin = createUnplugin(
  66. (userOptions = {}) => {
  67. const options = resolveOption(userOptions);
  68. const filter = createFilter(options);
  69. const customBlocks = {};
  70. function transformInclude(id) {
  71. return filter(id) || id.includes(QUERY_TEMPLATE);
  72. }
  73. return {
  74. name: `${name}-post`,
  75. enforce: "post",
  76. transformInclude,
  77. transform(code, id) {
  78. return postTransform(code, id, customBlocks);
  79. },
  80. rollup: {
  81. transform: {
  82. order: "post",
  83. handler(code, id) {
  84. if (!transformInclude(id))
  85. return;
  86. return postTransform(code, id, customBlocks);
  87. }
  88. }
  89. }
  90. };
  91. }
  92. );
  93. var plugin = createUnplugin(
  94. (userOptions = {}, meta) => {
  95. return [PrePlugin.raw(userOptions, meta), PostPlugin.raw(userOptions, meta)];
  96. }
  97. );
  98. var src_default = plugin;
  99. export {
  100. PrePlugin,
  101. PostPlugin,
  102. src_default
  103. };