shelfware 0.0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/.output/nitro.json +15 -0
  2. package/.output/public/_nuxt/6IstVYrV.js +1 -0
  3. package/.output/public/_nuxt/9C5WUlLE.js +36 -0
  4. package/.output/public/_nuxt/BDNMzG2s.js +1 -0
  5. package/.output/public/_nuxt/BW3xJdEx.js +1 -0
  6. package/.output/public/_nuxt/BXXtFil5.js +1 -0
  7. package/.output/public/_nuxt/BZuUK3cr.js +1 -0
  8. package/.output/public/_nuxt/BeLyMmd4.js +1 -0
  9. package/.output/public/_nuxt/C_VgD9ZI.js +3 -0
  10. package/.output/public/_nuxt/DB5Vxbte.js +2 -0
  11. package/.output/public/_nuxt/DMg0j7gv.js +14 -0
  12. package/.output/public/_nuxt/builds/latest.json +1 -0
  13. package/.output/public/_nuxt/builds/meta/e0d2b6a3-3a30-44b7-8c79-a56f66400005.json +1 -0
  14. package/.output/public/_nuxt/entry.b3_DJTEt.css +2 -0
  15. package/.output/public/_nuxt/error-404.CHsn7XF-.css +1 -0
  16. package/.output/public/_nuxt/error-500.Bawx2bLr.css +1 -0
  17. package/.output/server/chunks/_/api-handler.mjs +44 -0
  18. package/.output/server/chunks/_/batch.mjs +27 -0
  19. package/.output/server/chunks/_/catalog.mjs +1115 -0
  20. package/.output/server/chunks/_/detail.mjs +16 -0
  21. package/.output/server/chunks/_/error-500.mjs +19 -0
  22. package/.output/server/chunks/_/quarantine.mjs +159 -0
  23. package/.output/server/chunks/nitro/nitro.mjs +5399 -0
  24. package/.output/server/chunks/routes/api/_..._.mjs +16 -0
  25. package/.output/server/chunks/routes/api/health.get.mjs +13 -0
  26. package/.output/server/chunks/routes/api/skills/_id/file.get.mjs +25 -0
  27. package/.output/server/chunks/routes/api/skills/_id_.get.mjs +25 -0
  28. package/.output/server/chunks/routes/api/skills/_id_.put.mjs +74 -0
  29. package/.output/server/chunks/routes/api/skills/delete.post.mjs +48 -0
  30. package/.output/server/chunks/routes/api/skills/quarantine.post.mjs +26 -0
  31. package/.output/server/chunks/routes/api/skills/restore.post.mjs +26 -0
  32. package/.output/server/chunks/routes/api/skills.get.mjs +41 -0
  33. package/.output/server/chunks/routes/renderer.mjs +341 -0
  34. package/.output/server/chunks/virtual/_virtual_spa-template.mjs +3 -0
  35. package/.output/server/chunks/virtual/precomputed.mjs +3 -0
  36. package/.output/server/index.mjs +9 -0
  37. package/.output/server/node_modules/@babel/parser/lib/index.js +14611 -0
  38. package/.output/server/node_modules/@babel/parser/package.json +50 -0
  39. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6801 -0
  40. package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  41. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +692 -0
  42. package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  43. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1420 -0
  44. package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  45. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1903 -0
  46. package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  47. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6980 -0
  48. package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  49. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1867 -0
  50. package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  51. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +904 -0
  52. package/.output/server/node_modules/@vue/server-renderer/package.json +53 -0
  53. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +636 -0
  54. package/.output/server/node_modules/@vue/shared/package.json +47 -0
  55. package/.output/server/node_modules/devalue/index.js +17 -0
  56. package/.output/server/node_modules/devalue/package.json +39 -0
  57. package/.output/server/node_modules/devalue/src/base64.js +60 -0
  58. package/.output/server/node_modules/devalue/src/constants.js +12 -0
  59. package/.output/server/node_modules/devalue/src/operations.js +193 -0
  60. package/.output/server/node_modules/devalue/src/parse.js +274 -0
  61. package/.output/server/node_modules/devalue/src/stringify.js +428 -0
  62. package/.output/server/node_modules/devalue/src/uneval.js +606 -0
  63. package/.output/server/node_modules/devalue/src/utils.js +185 -0
  64. package/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  65. package/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  66. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  67. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  68. package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  69. package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  70. package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
  71. package/.output/server/node_modules/entities/package.json +120 -0
  72. package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  73. package/.output/server/node_modules/estree-walker/package.json +37 -0
  74. package/.output/server/node_modules/hookable/dist/index.mjs +257 -0
  75. package/.output/server/node_modules/hookable/package.json +53 -0
  76. package/.output/server/node_modules/nostics/dist/formatters/ansi.mjs +19 -0
  77. package/.output/server/node_modules/nostics/dist/index.mjs +187 -0
  78. package/.output/server/node_modules/nostics/package.json +125 -0
  79. package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  80. package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  81. package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  82. package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  83. package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  84. package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  85. package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  86. package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  87. package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
  88. package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  89. package/.output/server/node_modules/source-map-js/package.json +71 -0
  90. package/.output/server/node_modules/source-map-js/source-map.js +8 -0
  91. package/.output/server/node_modules/ufo/dist/index.mjs +645 -0
  92. package/.output/server/node_modules/ufo/package.json +48 -0
  93. package/.output/server/node_modules/unhead/dist/client.mjs +22 -0
  94. package/.output/server/node_modules/unhead/dist/legacy.mjs +33 -0
  95. package/.output/server/node_modules/unhead/dist/minify.mjs +183 -0
  96. package/.output/server/node_modules/unhead/dist/parser.mjs +518 -0
  97. package/.output/server/node_modules/unhead/dist/plugins.mjs +720 -0
  98. package/.output/server/node_modules/unhead/dist/server.mjs +99 -0
  99. package/.output/server/node_modules/unhead/dist/shared/unhead.-hZVKou0.mjs +400 -0
  100. package/.output/server/node_modules/unhead/dist/shared/unhead.BEmVMkeA.mjs +673 -0
  101. package/.output/server/node_modules/unhead/dist/shared/unhead.BGFxPGPQ.mjs +47 -0
  102. package/.output/server/node_modules/unhead/dist/shared/unhead.BQWSw36o.mjs +192 -0
  103. package/.output/server/node_modules/unhead/dist/shared/unhead.Bf_fPVYA.mjs +6 -0
  104. package/.output/server/node_modules/unhead/dist/shared/unhead.Bjbp1C8D.mjs +224 -0
  105. package/.output/server/node_modules/unhead/dist/shared/unhead.Bm4Y6XQI.mjs +17 -0
  106. package/.output/server/node_modules/unhead/dist/shared/unhead.C5Bksi2B.mjs +49 -0
  107. package/.output/server/node_modules/unhead/dist/shared/unhead.CGPOfp5O.mjs +32 -0
  108. package/.output/server/node_modules/unhead/dist/shared/unhead.CHEy9ana.mjs +7 -0
  109. package/.output/server/node_modules/unhead/dist/shared/unhead.D7HkBzZn.mjs +59 -0
  110. package/.output/server/node_modules/unhead/dist/shared/unhead.Dssd7L5I.mjs +196 -0
  111. package/.output/server/node_modules/unhead/dist/shared/unhead.jEy9BmRq.mjs +264 -0
  112. package/.output/server/node_modules/unhead/dist/shared/unhead.oZ7pkTV1.mjs +19 -0
  113. package/.output/server/node_modules/unhead/dist/shared/unhead.tQnRaXfX.mjs +240 -0
  114. package/.output/server/node_modules/unhead/dist/stream/client.mjs +33 -0
  115. package/.output/server/node_modules/unhead/dist/stream/iife.mjs +2 -0
  116. package/.output/server/node_modules/unhead/dist/stream/server.mjs +445 -0
  117. package/.output/server/node_modules/unhead/dist/utils.mjs +7 -0
  118. package/.output/server/node_modules/unhead/package.json +179 -0
  119. package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  120. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  121. package/.output/server/node_modules/vue/index.js +7 -0
  122. package/.output/server/node_modules/vue/index.mjs +1 -0
  123. package/.output/server/node_modules/vue/package.json +112 -0
  124. package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  125. package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +278 -0
  126. package/.output/server/node_modules/vue-bundle-renderer/package.json +54 -0
  127. package/.output/server/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  128. package/.output/server/node_modules/yaml/dist/compose/compose-doc.js +45 -0
  129. package/.output/server/node_modules/yaml/dist/compose/compose-node.js +112 -0
  130. package/.output/server/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
  131. package/.output/server/node_modules/yaml/dist/compose/composer.js +224 -0
  132. package/.output/server/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
  133. package/.output/server/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  134. package/.output/server/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
  135. package/.output/server/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  136. package/.output/server/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
  137. package/.output/server/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
  138. package/.output/server/node_modules/yaml/dist/compose/resolve-props.js +148 -0
  139. package/.output/server/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  140. package/.output/server/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
  141. package/.output/server/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  142. package/.output/server/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
  143. package/.output/server/node_modules/yaml/dist/doc/Document.js +337 -0
  144. package/.output/server/node_modules/yaml/dist/doc/anchors.js +76 -0
  145. package/.output/server/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  146. package/.output/server/node_modules/yaml/dist/doc/createNode.js +90 -0
  147. package/.output/server/node_modules/yaml/dist/doc/directives.js +178 -0
  148. package/.output/server/node_modules/yaml/dist/errors.js +62 -0
  149. package/.output/server/node_modules/yaml/dist/index.js +50 -0
  150. package/.output/server/node_modules/yaml/dist/log.js +19 -0
  151. package/.output/server/node_modules/yaml/dist/nodes/Alias.js +118 -0
  152. package/.output/server/node_modules/yaml/dist/nodes/Collection.js +151 -0
  153. package/.output/server/node_modules/yaml/dist/nodes/Node.js +40 -0
  154. package/.output/server/node_modules/yaml/dist/nodes/Pair.js +39 -0
  155. package/.output/server/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  156. package/.output/server/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  157. package/.output/server/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  158. package/.output/server/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
  159. package/.output/server/node_modules/yaml/dist/nodes/identity.js +53 -0
  160. package/.output/server/node_modules/yaml/dist/nodes/toJS.js +39 -0
  161. package/.output/server/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  162. package/.output/server/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  163. package/.output/server/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  164. package/.output/server/node_modules/yaml/dist/parse/cst.js +112 -0
  165. package/.output/server/node_modules/yaml/dist/parse/lexer.js +723 -0
  166. package/.output/server/node_modules/yaml/dist/parse/line-counter.js +41 -0
  167. package/.output/server/node_modules/yaml/dist/parse/parser.js +980 -0
  168. package/.output/server/node_modules/yaml/dist/public-api.js +107 -0
  169. package/.output/server/node_modules/yaml/dist/schema/Schema.js +39 -0
  170. package/.output/server/node_modules/yaml/dist/schema/common/map.js +19 -0
  171. package/.output/server/node_modules/yaml/dist/schema/common/null.js +17 -0
  172. package/.output/server/node_modules/yaml/dist/schema/common/seq.js +19 -0
  173. package/.output/server/node_modules/yaml/dist/schema/common/string.js +16 -0
  174. package/.output/server/node_modules/yaml/dist/schema/core/bool.js +21 -0
  175. package/.output/server/node_modules/yaml/dist/schema/core/float.js +47 -0
  176. package/.output/server/node_modules/yaml/dist/schema/core/int.js +42 -0
  177. package/.output/server/node_modules/yaml/dist/schema/core/schema.js +25 -0
  178. package/.output/server/node_modules/yaml/dist/schema/json/schema.js +64 -0
  179. package/.output/server/node_modules/yaml/dist/schema/tags.js +99 -0
  180. package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
  181. package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  182. package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  183. package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  184. package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
  185. package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  186. package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  187. package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
  188. package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  189. package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  190. package/.output/server/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  191. package/.output/server/node_modules/yaml/dist/stringify/stringify.js +132 -0
  192. package/.output/server/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
  193. package/.output/server/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  194. package/.output/server/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  195. package/.output/server/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
  196. package/.output/server/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  197. package/.output/server/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
  198. package/.output/server/node_modules/yaml/dist/visit.js +236 -0
  199. package/.output/server/node_modules/yaml/package.json +97 -0
  200. package/.output/server/package.json +28 -0
  201. package/LICENSE +21 -0
  202. package/README.md +57 -1
  203. package/bin/launch.mjs +216 -0
  204. package/bin/shelfware.mjs +11 -0
  205. package/package.json +64 -5
  206. package/cli.mjs +0 -3
@@ -0,0 +1,1420 @@
1
+ /**
2
+ * @vue/compiler-ssr v3.5.42
3
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
+ * @license MIT
5
+ **/
6
+ 'use strict';
7
+
8
+ Object.defineProperty(exports, '__esModule', { value: true });
9
+
10
+ var compilerDom = require('@vue/compiler-dom');
11
+ var shared = require('@vue/shared');
12
+
13
+ const SSR_INTERPOLATE = /* @__PURE__ */ Symbol(`ssrInterpolate`);
14
+ const SSR_RENDER_VNODE = /* @__PURE__ */ Symbol(`ssrRenderVNode`);
15
+ const SSR_RENDER_COMPONENT = /* @__PURE__ */ Symbol(`ssrRenderComponent`);
16
+ const SSR_RENDER_SLOT = /* @__PURE__ */ Symbol(`ssrRenderSlot`);
17
+ const SSR_RENDER_SLOT_INNER = /* @__PURE__ */ Symbol(`ssrRenderSlotInner`);
18
+ const SSR_RENDER_CLASS = /* @__PURE__ */ Symbol(`ssrRenderClass`);
19
+ const SSR_RENDER_STYLE = /* @__PURE__ */ Symbol(`ssrRenderStyle`);
20
+ const SSR_RENDER_ATTRS = /* @__PURE__ */ Symbol(`ssrRenderAttrs`);
21
+ const SSR_RENDER_ATTR = /* @__PURE__ */ Symbol(`ssrRenderAttr`);
22
+ const SSR_RENDER_DYNAMIC_ATTR = /* @__PURE__ */ Symbol(`ssrRenderDynamicAttr`);
23
+ const SSR_RENDER_LIST = /* @__PURE__ */ Symbol(`ssrRenderList`);
24
+ const SSR_INCLUDE_BOOLEAN_ATTR = /* @__PURE__ */ Symbol(
25
+ `ssrIncludeBooleanAttr`
26
+ );
27
+ const SSR_LOOSE_EQUAL = /* @__PURE__ */ Symbol(`ssrLooseEqual`);
28
+ const SSR_LOOSE_CONTAIN = /* @__PURE__ */ Symbol(`ssrLooseContain`);
29
+ const SSR_RENDER_DYNAMIC_MODEL = /* @__PURE__ */ Symbol(
30
+ `ssrRenderDynamicModel`
31
+ );
32
+ const SSR_GET_DYNAMIC_MODEL_PROPS = /* @__PURE__ */ Symbol(
33
+ `ssrGetDynamicModelProps`
34
+ );
35
+ const SSR_RENDER_TELEPORT = /* @__PURE__ */ Symbol(`ssrRenderTeleport`);
36
+ const SSR_RENDER_SUSPENSE = /* @__PURE__ */ Symbol(`ssrRenderSuspense`);
37
+ const SSR_GET_DIRECTIVE_PROPS = /* @__PURE__ */ Symbol(`ssrGetDirectiveProps`);
38
+ const ssrHelpers = {
39
+ [SSR_INTERPOLATE]: `ssrInterpolate`,
40
+ [SSR_RENDER_VNODE]: `ssrRenderVNode`,
41
+ [SSR_RENDER_COMPONENT]: `ssrRenderComponent`,
42
+ [SSR_RENDER_SLOT]: `ssrRenderSlot`,
43
+ [SSR_RENDER_SLOT_INNER]: `ssrRenderSlotInner`,
44
+ [SSR_RENDER_CLASS]: `ssrRenderClass`,
45
+ [SSR_RENDER_STYLE]: `ssrRenderStyle`,
46
+ [SSR_RENDER_ATTRS]: `ssrRenderAttrs`,
47
+ [SSR_RENDER_ATTR]: `ssrRenderAttr`,
48
+ [SSR_RENDER_DYNAMIC_ATTR]: `ssrRenderDynamicAttr`,
49
+ [SSR_RENDER_LIST]: `ssrRenderList`,
50
+ [SSR_INCLUDE_BOOLEAN_ATTR]: `ssrIncludeBooleanAttr`,
51
+ [SSR_LOOSE_EQUAL]: `ssrLooseEqual`,
52
+ [SSR_LOOSE_CONTAIN]: `ssrLooseContain`,
53
+ [SSR_RENDER_DYNAMIC_MODEL]: `ssrRenderDynamicModel`,
54
+ [SSR_GET_DYNAMIC_MODEL_PROPS]: `ssrGetDynamicModelProps`,
55
+ [SSR_RENDER_TELEPORT]: `ssrRenderTeleport`,
56
+ [SSR_RENDER_SUSPENSE]: `ssrRenderSuspense`,
57
+ [SSR_GET_DIRECTIVE_PROPS]: `ssrGetDirectiveProps`
58
+ };
59
+ compilerDom.registerRuntimeHelpers(ssrHelpers);
60
+
61
+ const ssrTransformIf = compilerDom.createStructuralDirectiveTransform(
62
+ /^(?:if|else|else-if)$/,
63
+ compilerDom.processIf
64
+ );
65
+ function ssrProcessIf(node, context, disableNestedFragments = false, disableComment = false) {
66
+ const [rootBranch] = node.branches;
67
+ const ifStatement = compilerDom.createIfStatement(
68
+ rootBranch.condition,
69
+ processIfBranch(rootBranch, context, disableNestedFragments)
70
+ );
71
+ context.pushStatement(ifStatement);
72
+ let currentIf = ifStatement;
73
+ for (let i = 1; i < node.branches.length; i++) {
74
+ const branch = node.branches[i];
75
+ const branchBlockStatement = processIfBranch(
76
+ branch,
77
+ context,
78
+ disableNestedFragments
79
+ );
80
+ if (branch.condition) {
81
+ currentIf = currentIf.alternate = compilerDom.createIfStatement(
82
+ branch.condition,
83
+ branchBlockStatement
84
+ );
85
+ } else {
86
+ currentIf.alternate = branchBlockStatement;
87
+ }
88
+ }
89
+ if (!currentIf.alternate && !disableComment) {
90
+ currentIf.alternate = compilerDom.createBlockStatement([
91
+ compilerDom.createCallExpression(`_push`, ["`<!---->`"])
92
+ ]);
93
+ }
94
+ }
95
+ function processIfBranch(branch, context, disableNestedFragments = false) {
96
+ const { children } = branch;
97
+ const needFragmentWrapper = !disableNestedFragments && (children.length !== 1 || children[0].type !== 1) && // optimize away nested fragments when the only child is a ForNode
98
+ !(children.length === 1 && children[0].type === 11);
99
+ return processChildrenAsStatement(branch, context, needFragmentWrapper);
100
+ }
101
+
102
+ const ssrTransformFor = compilerDom.createStructuralDirectiveTransform("for", compilerDom.processFor);
103
+ function ssrProcessFor(node, context, disableNestedFragments = false) {
104
+ const needFragmentWrapper = !disableNestedFragments && (node.children.length !== 1 || node.children[0].type !== 1);
105
+ const renderLoop = compilerDom.createFunctionExpression(
106
+ compilerDom.createForLoopParams(node.parseResult)
107
+ );
108
+ renderLoop.body = processChildrenAsStatement(
109
+ node,
110
+ context,
111
+ needFragmentWrapper
112
+ );
113
+ if (!disableNestedFragments) {
114
+ context.pushStringPart(`<!--[-->`);
115
+ }
116
+ context.pushStatement(
117
+ compilerDom.createCallExpression(context.helper(SSR_RENDER_LIST), [
118
+ node.source,
119
+ renderLoop
120
+ ])
121
+ );
122
+ if (!disableNestedFragments) {
123
+ context.pushStringPart(`<!--]-->`);
124
+ }
125
+ }
126
+
127
+ const ssrTransformSlotOutlet = (node, context) => {
128
+ if (compilerDom.isSlotOutlet(node)) {
129
+ const { slotName, slotProps } = compilerDom.processSlotOutlet(node, context);
130
+ const args = [
131
+ `_ctx.$slots`,
132
+ slotName,
133
+ slotProps || `{}`,
134
+ // fallback content placeholder. will be replaced in the process phase
135
+ `null`,
136
+ `_push`,
137
+ `_parent`
138
+ ];
139
+ if (context.scopeId && context.slotted !== false) {
140
+ args.push(`"${context.scopeId}-s"`);
141
+ }
142
+ let method = SSR_RENDER_SLOT;
143
+ let parent = context.parent;
144
+ if (parent) {
145
+ const children = parent.children;
146
+ if (parent.type === 10) {
147
+ parent = context.grandParent;
148
+ }
149
+ let componentType;
150
+ if (parent.type === 1 && parent.tagType === 1 && ((componentType = compilerDom.resolveComponentType(parent, context, true)) === compilerDom.TRANSITION || componentType === compilerDom.TRANSITION_GROUP) && children.filter((c) => c.type === 1).length === 1) {
151
+ method = SSR_RENDER_SLOT_INNER;
152
+ if (!(context.scopeId && context.slotted !== false)) {
153
+ args.push("null");
154
+ }
155
+ args.push("true");
156
+ }
157
+ }
158
+ node.ssrCodegenNode = compilerDom.createCallExpression(context.helper(method), args);
159
+ }
160
+ };
161
+ function ssrProcessSlotOutlet(node, context) {
162
+ const renderCall = node.ssrCodegenNode;
163
+ if (node.children.length) {
164
+ const fallbackRenderFn = compilerDom.createFunctionExpression([]);
165
+ fallbackRenderFn.body = processChildrenAsStatement(node, context);
166
+ renderCall.arguments[3] = fallbackRenderFn;
167
+ }
168
+ if (context.withSlotScopeId) {
169
+ const slotScopeId = renderCall.arguments[6];
170
+ renderCall.arguments[6] = slotScopeId ? `${slotScopeId} + _scopeId` : `_scopeId`;
171
+ }
172
+ context.pushStatement(node.ssrCodegenNode);
173
+ }
174
+
175
+ function createSSRCompilerError(code, loc) {
176
+ return compilerDom.createCompilerError(code, loc, SSRErrorMessages);
177
+ }
178
+ const SSRErrorMessages = {
179
+ [65]: `Unsafe attribute name for SSR.`,
180
+ [66]: `Missing the 'to' prop on teleport element.`,
181
+ [67]: `Invalid AST node during SSR transform.`
182
+ };
183
+
184
+ function ssrProcessTeleport(node, context) {
185
+ const targetProp = compilerDom.findProp(node, "to");
186
+ if (!targetProp) {
187
+ context.onError(
188
+ createSSRCompilerError(66, node.loc)
189
+ );
190
+ return;
191
+ }
192
+ let target;
193
+ if (targetProp.type === 6) {
194
+ target = targetProp.value && compilerDom.createSimpleExpression(targetProp.value.content, true);
195
+ } else {
196
+ target = targetProp.exp;
197
+ }
198
+ if (!target) {
199
+ context.onError(
200
+ createSSRCompilerError(
201
+ 66,
202
+ targetProp.loc
203
+ )
204
+ );
205
+ return;
206
+ }
207
+ const disabledProp = compilerDom.findProp(
208
+ node,
209
+ "disabled",
210
+ false,
211
+ true
212
+ /* allow empty */
213
+ );
214
+ const disabled = disabledProp ? disabledProp.type === 6 ? `true` : disabledProp.exp || `false` : `false`;
215
+ const contentRenderFn = compilerDom.createFunctionExpression(
216
+ [`_push`],
217
+ void 0,
218
+ // Body is added later
219
+ true,
220
+ // newline
221
+ false,
222
+ // isSlot
223
+ node.loc
224
+ );
225
+ contentRenderFn.body = processChildrenAsStatement(node, context);
226
+ context.pushStatement(
227
+ compilerDom.createCallExpression(context.helper(SSR_RENDER_TELEPORT), [
228
+ `_push`,
229
+ contentRenderFn,
230
+ target,
231
+ disabled,
232
+ `_parent`
233
+ ])
234
+ );
235
+ }
236
+
237
+ const wipMap$3 = /* @__PURE__ */ new WeakMap();
238
+ function ssrTransformSuspense(node, context) {
239
+ return () => {
240
+ if (node.children.length) {
241
+ const wipEntry = {
242
+ slotsExp: null,
243
+ // to be immediately set
244
+ wipSlots: []
245
+ };
246
+ wipMap$3.set(node, wipEntry);
247
+ wipEntry.slotsExp = compilerDom.buildSlots(
248
+ node,
249
+ context,
250
+ (_props, _vForExp, children, loc) => {
251
+ const fn = compilerDom.createFunctionExpression(
252
+ [],
253
+ void 0,
254
+ // no return, assign body later
255
+ true,
256
+ // newline
257
+ false,
258
+ // suspense slots are not treated as normal slots
259
+ loc
260
+ );
261
+ wipEntry.wipSlots.push({
262
+ fn,
263
+ children
264
+ });
265
+ return fn;
266
+ }
267
+ ).slots;
268
+ }
269
+ };
270
+ }
271
+ function ssrProcessSuspense(node, context) {
272
+ const wipEntry = wipMap$3.get(node);
273
+ if (!wipEntry) {
274
+ return;
275
+ }
276
+ const { slotsExp, wipSlots } = wipEntry;
277
+ for (let i = 0; i < wipSlots.length; i++) {
278
+ const slot = wipSlots[i];
279
+ slot.fn.body = processChildrenAsStatement(slot, context);
280
+ }
281
+ context.pushStatement(
282
+ compilerDom.createCallExpression(context.helper(SSR_RENDER_SUSPENSE), [
283
+ `_push`,
284
+ slotsExp
285
+ ])
286
+ );
287
+ }
288
+
289
+ const rawChildrenMap = /* @__PURE__ */ new WeakMap();
290
+ const ssrTransformElement = (node, context) => {
291
+ if (node.type !== 1 || node.tagType !== 0) {
292
+ return;
293
+ }
294
+ return function ssrPostTransformElement() {
295
+ const openTag = [`<${node.tag}`];
296
+ const needTagForRuntime = node.tag === "textarea" || node.tag.indexOf("-") > 0;
297
+ const hasDynamicVBind = compilerDom.hasDynamicKeyVBind(node);
298
+ const hasCustomDir = node.props.some(
299
+ (p) => p.type === 7 && !shared.isBuiltInDirective(p.name)
300
+ );
301
+ const vShowPropIndex = node.props.findIndex(
302
+ (i) => i.type === 7 && i.name === "show"
303
+ );
304
+ if (vShowPropIndex !== -1) {
305
+ const vShowProp = node.props[vShowPropIndex];
306
+ node.props.splice(vShowPropIndex, 1);
307
+ node.props.push(vShowProp);
308
+ }
309
+ const needMergeProps = hasDynamicVBind || hasCustomDir;
310
+ if (needMergeProps) {
311
+ const { props, directives } = compilerDom.buildProps(
312
+ node,
313
+ context,
314
+ node.props,
315
+ false,
316
+ false,
317
+ true
318
+ );
319
+ if (props || directives.length) {
320
+ const mergedProps = buildSSRProps(props, directives, context);
321
+ const propsExp = compilerDom.createCallExpression(
322
+ context.helper(SSR_RENDER_ATTRS),
323
+ [mergedProps]
324
+ );
325
+ if (node.tag === "textarea") {
326
+ const existingText = node.children[0];
327
+ if (!hasContentOverrideDirective(node) && (!existingText || existingText.type !== 5)) {
328
+ const tempId = `_temp${context.temps++}`;
329
+ propsExp.arguments = [
330
+ compilerDom.createAssignmentExpression(
331
+ compilerDom.createSimpleExpression(tempId, false),
332
+ mergedProps
333
+ )
334
+ ];
335
+ rawChildrenMap.set(
336
+ node,
337
+ compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [
338
+ compilerDom.createConditionalExpression(
339
+ compilerDom.createSimpleExpression(`"value" in ${tempId}`, false),
340
+ compilerDom.createSimpleExpression(`${tempId}.value`, false),
341
+ compilerDom.createSimpleExpression(
342
+ existingText ? existingText.content : ``,
343
+ true
344
+ ),
345
+ false
346
+ )
347
+ ])
348
+ );
349
+ }
350
+ } else if (node.tag === "input") {
351
+ const vModel = findVModel(node);
352
+ if (vModel) {
353
+ const tempId = `_temp${context.temps++}`;
354
+ const tempExp = compilerDom.createSimpleExpression(tempId, false);
355
+ propsExp.arguments = [
356
+ compilerDom.createSequenceExpression([
357
+ compilerDom.createAssignmentExpression(tempExp, mergedProps),
358
+ compilerDom.createCallExpression(context.helper(compilerDom.MERGE_PROPS), [
359
+ tempExp,
360
+ compilerDom.createCallExpression(
361
+ context.helper(SSR_GET_DYNAMIC_MODEL_PROPS),
362
+ [
363
+ tempExp,
364
+ // existing props
365
+ vModel.exp
366
+ // model
367
+ ]
368
+ )
369
+ ])
370
+ ])
371
+ ];
372
+ }
373
+ } else if (directives.length && !node.children.length) {
374
+ if (!hasContentOverrideDirective(node)) {
375
+ const tempId = `_temp${context.temps++}`;
376
+ propsExp.arguments = [
377
+ compilerDom.createAssignmentExpression(
378
+ compilerDom.createSimpleExpression(tempId, false),
379
+ mergedProps
380
+ )
381
+ ];
382
+ rawChildrenMap.set(
383
+ node,
384
+ compilerDom.createConditionalExpression(
385
+ compilerDom.createSimpleExpression(`"textContent" in ${tempId}`, false),
386
+ compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [
387
+ compilerDom.createSimpleExpression(`${tempId}.textContent`, false)
388
+ ]),
389
+ compilerDom.createSimpleExpression(`${tempId}.innerHTML ?? ''`, false),
390
+ false
391
+ )
392
+ );
393
+ }
394
+ }
395
+ if (needTagForRuntime) {
396
+ propsExp.arguments.push(`"${node.tag}"`);
397
+ }
398
+ openTag.push(propsExp);
399
+ }
400
+ }
401
+ let dynamicClassBinding = void 0;
402
+ let staticClassBinding = void 0;
403
+ let dynamicStyleBinding = void 0;
404
+ for (let i = 0; i < node.props.length; i++) {
405
+ const prop = node.props[i];
406
+ if (node.tag === "input" && isTrueFalseValue(prop)) {
407
+ continue;
408
+ }
409
+ if (prop.type === 7) {
410
+ if (prop.name === "html" && prop.exp) {
411
+ rawChildrenMap.set(
412
+ node,
413
+ compilerDom.createCompoundExpression([`(`, prop.exp, `) ?? ''`])
414
+ );
415
+ } else if (prop.name === "text" && prop.exp) {
416
+ node.children = [compilerDom.createInterpolation(prop.exp, prop.loc)];
417
+ } else if (prop.name === "slot") {
418
+ context.onError(
419
+ compilerDom.createCompilerError(40, prop.loc)
420
+ );
421
+ } else if (isTextareaWithValue(node, prop) && prop.exp) {
422
+ if (!needMergeProps) {
423
+ node.children = [compilerDom.createInterpolation(prop.exp, prop.loc)];
424
+ }
425
+ } else if (!needMergeProps && prop.name !== "on") {
426
+ const directiveTransform = context.directiveTransforms[prop.name];
427
+ if (directiveTransform) {
428
+ const { props, ssrTagParts } = directiveTransform(
429
+ prop,
430
+ node,
431
+ context
432
+ );
433
+ if (ssrTagParts) {
434
+ openTag.push(...ssrTagParts);
435
+ }
436
+ for (let j = 0; j < props.length; j++) {
437
+ const { key, value } = props[j];
438
+ if (compilerDom.isStaticExp(key)) {
439
+ let attrName = key.content;
440
+ if (attrName === "key" || attrName === "ref") {
441
+ continue;
442
+ }
443
+ if (attrName === "class") {
444
+ openTag.push(
445
+ ` class="`,
446
+ dynamicClassBinding = compilerDom.createCallExpression(
447
+ context.helper(SSR_RENDER_CLASS),
448
+ [value]
449
+ ),
450
+ `"`
451
+ );
452
+ } else if (attrName === "style") {
453
+ if (dynamicStyleBinding) {
454
+ mergeCall(dynamicStyleBinding, value);
455
+ } else {
456
+ openTag.push(
457
+ ` style="`,
458
+ dynamicStyleBinding = compilerDom.createCallExpression(
459
+ context.helper(SSR_RENDER_STYLE),
460
+ [value]
461
+ ),
462
+ `"`
463
+ );
464
+ }
465
+ } else {
466
+ attrName = node.tag.indexOf("-") > 0 ? attrName : shared.propsToAttrMap[attrName] || attrName.toLowerCase();
467
+ if (shared.isBooleanAttr(attrName)) {
468
+ openTag.push(
469
+ compilerDom.createConditionalExpression(
470
+ compilerDom.createCallExpression(
471
+ context.helper(SSR_INCLUDE_BOOLEAN_ATTR),
472
+ [value]
473
+ ),
474
+ compilerDom.createSimpleExpression(" " + attrName, true),
475
+ compilerDom.createSimpleExpression("", true),
476
+ false
477
+ )
478
+ );
479
+ } else if (attrName === "hidden") {
480
+ openTag.push(
481
+ compilerDom.createCallExpression(
482
+ context.helper(SSR_RENDER_DYNAMIC_ATTR),
483
+ [key, value]
484
+ )
485
+ );
486
+ } else if (shared.isSSRSafeAttrName(attrName)) {
487
+ openTag.push(
488
+ compilerDom.createCallExpression(context.helper(SSR_RENDER_ATTR), [
489
+ key,
490
+ value
491
+ ])
492
+ );
493
+ } else {
494
+ context.onError(
495
+ createSSRCompilerError(
496
+ 65,
497
+ key.loc
498
+ )
499
+ );
500
+ }
501
+ }
502
+ } else {
503
+ const args = [key, value];
504
+ if (needTagForRuntime) {
505
+ args.push(`"${node.tag}"`);
506
+ }
507
+ openTag.push(
508
+ compilerDom.createCallExpression(
509
+ context.helper(SSR_RENDER_DYNAMIC_ATTR),
510
+ args
511
+ )
512
+ );
513
+ }
514
+ }
515
+ }
516
+ }
517
+ } else {
518
+ const name = prop.name;
519
+ if (node.tag === "textarea" && name === "value" && prop.value) {
520
+ rawChildrenMap.set(node, shared.escapeHtml(prop.value.content));
521
+ } else if (!needMergeProps) {
522
+ if (name === "key" || name === "ref") {
523
+ continue;
524
+ }
525
+ if (name === "class" && prop.value) {
526
+ staticClassBinding = JSON.stringify(prop.value.content);
527
+ }
528
+ openTag.push(
529
+ ` ${prop.name}` + (prop.value ? `="${shared.escapeHtml(prop.value.content)}"` : ``)
530
+ );
531
+ }
532
+ }
533
+ }
534
+ if (dynamicClassBinding && staticClassBinding) {
535
+ mergeCall(dynamicClassBinding, staticClassBinding);
536
+ removeStaticBinding(openTag, "class");
537
+ }
538
+ if (context.scopeId) {
539
+ openTag.push(` ${context.scopeId}`);
540
+ }
541
+ node.ssrCodegenNode = compilerDom.createTemplateLiteral(openTag);
542
+ };
543
+ };
544
+ function buildSSRProps(props, directives, context) {
545
+ let mergePropsArgs = [];
546
+ if (props) {
547
+ if (props.type === 14) {
548
+ mergePropsArgs = props.arguments;
549
+ } else {
550
+ mergePropsArgs.push(props);
551
+ }
552
+ }
553
+ if (directives.length) {
554
+ for (const dir of directives) {
555
+ mergePropsArgs.push(
556
+ compilerDom.createCallExpression(context.helper(SSR_GET_DIRECTIVE_PROPS), [
557
+ `_ctx`,
558
+ ...compilerDom.buildDirectiveArgs(dir, context).elements
559
+ ])
560
+ );
561
+ }
562
+ }
563
+ return mergePropsArgs.length > 1 ? compilerDom.createCallExpression(context.helper(compilerDom.MERGE_PROPS), mergePropsArgs) : mergePropsArgs[0];
564
+ }
565
+ function isTrueFalseValue(prop) {
566
+ if (prop.type === 7) {
567
+ return prop.name === "bind" && prop.arg && compilerDom.isStaticExp(prop.arg) && (prop.arg.content === "true-value" || prop.arg.content === "false-value");
568
+ } else {
569
+ return prop.name === "true-value" || prop.name === "false-value";
570
+ }
571
+ }
572
+ function isTextareaWithValue(node, prop) {
573
+ return !!(node.tag === "textarea" && prop.name === "bind" && compilerDom.isStaticArgOf(prop.arg, "value"));
574
+ }
575
+ function mergeCall(call, arg) {
576
+ const existing = call.arguments[0];
577
+ if (existing.type === 17) {
578
+ existing.elements.push(arg);
579
+ } else {
580
+ call.arguments[0] = compilerDom.createArrayExpression([existing, arg]);
581
+ }
582
+ }
583
+ function removeStaticBinding(tag, binding) {
584
+ const regExp = new RegExp(`^ ${binding}=".+"$`);
585
+ const i = tag.findIndex((e) => typeof e === "string" && regExp.test(e));
586
+ if (i > -1) {
587
+ tag.splice(i, 1);
588
+ }
589
+ }
590
+ function findVModel(node) {
591
+ return node.props.find(
592
+ (p) => p.type === 7 && p.name === "model" && p.exp
593
+ );
594
+ }
595
+ function hasContentOverrideDirective(node) {
596
+ return !!compilerDom.findDir(node, "text") || !!compilerDom.findDir(node, "html");
597
+ }
598
+ function ssrProcessElement(node, context) {
599
+ const isVoidTag = context.options.isVoidTag || shared.NO;
600
+ const elementsToAdd = node.ssrCodegenNode.elements;
601
+ for (let j = 0; j < elementsToAdd.length; j++) {
602
+ context.pushStringPart(elementsToAdd[j]);
603
+ }
604
+ if (context.withSlotScopeId) {
605
+ context.pushStringPart(compilerDom.createSimpleExpression(`_scopeId`, false));
606
+ }
607
+ context.pushStringPart(`>`);
608
+ const rawChildren = rawChildrenMap.get(node);
609
+ if (rawChildren) {
610
+ context.pushStringPart(rawChildren);
611
+ } else if (node.children.length) {
612
+ processChildren(node, context);
613
+ }
614
+ if (!isVoidTag(node.tag)) {
615
+ context.pushStringPart(`</${node.tag}>`);
616
+ }
617
+ }
618
+
619
+ const wipMap$2 = /* @__PURE__ */ new WeakMap();
620
+ function ssrTransformTransitionGroup(node, context) {
621
+ return () => {
622
+ const tag = compilerDom.findProp(node, "tag");
623
+ if (tag) {
624
+ const otherProps = node.props.filter((p) => p !== tag);
625
+ const { props, directives } = compilerDom.buildProps(
626
+ node,
627
+ context,
628
+ otherProps,
629
+ true,
630
+ false,
631
+ true
632
+ );
633
+ let propsExp = null;
634
+ if (props || directives.length) {
635
+ propsExp = compilerDom.createCallExpression(context.helper(SSR_RENDER_ATTRS), [
636
+ buildSSRProps(props, directives, context)
637
+ ]);
638
+ }
639
+ wipMap$2.set(node, {
640
+ tag,
641
+ propsExp,
642
+ scopeId: context.scopeId || null
643
+ });
644
+ }
645
+ };
646
+ }
647
+ function ssrProcessTransitionGroup(node, context) {
648
+ const entry = wipMap$2.get(node);
649
+ if (entry) {
650
+ const { tag, propsExp, scopeId } = entry;
651
+ if (tag.type === 7) {
652
+ context.pushStringPart(`<`);
653
+ context.pushStringPart(tag.exp);
654
+ if (propsExp) {
655
+ context.pushStringPart(propsExp);
656
+ }
657
+ if (scopeId) {
658
+ context.pushStringPart(` ${scopeId}`);
659
+ }
660
+ context.pushStringPart(`>`);
661
+ processChildren(
662
+ node,
663
+ context,
664
+ false,
665
+ /**
666
+ * TransitionGroup has the special runtime behavior of flattening and
667
+ * concatenating all children into a single fragment (in order for them to
668
+ * be patched using the same key map) so we need to account for that here
669
+ * by disabling nested fragment wrappers from being generated.
670
+ */
671
+ true,
672
+ /**
673
+ * TransitionGroup filters out comment children at runtime and thus
674
+ * doesn't expect comments to be present during hydration. We need to
675
+ * account for that by disabling the empty comment that is otherwise
676
+ * rendered for a falsy v-if that has no v-else specified. (#6715)
677
+ */
678
+ true
679
+ );
680
+ context.pushStringPart(`</`);
681
+ context.pushStringPart(tag.exp);
682
+ context.pushStringPart(`>`);
683
+ } else {
684
+ context.pushStringPart(`<${tag.value.content}`);
685
+ if (propsExp) {
686
+ context.pushStringPart(propsExp);
687
+ }
688
+ if (scopeId) {
689
+ context.pushStringPart(` ${scopeId}`);
690
+ }
691
+ context.pushStringPart(`>`);
692
+ processChildren(node, context, false, true, true);
693
+ context.pushStringPart(`</${tag.value.content}>`);
694
+ }
695
+ } else {
696
+ processChildren(node, context, true, true, true);
697
+ }
698
+ }
699
+
700
+ const wipMap$1 = /* @__PURE__ */ new WeakMap();
701
+ function ssrTransformTransition(node, context) {
702
+ return () => {
703
+ const appear = compilerDom.findProp(node, "appear", false, true);
704
+ wipMap$1.set(node, !!appear);
705
+ };
706
+ }
707
+ function ssrProcessTransition(node, context) {
708
+ node.children = node.children.filter((c) => c.type !== 3);
709
+ const appear = wipMap$1.get(node);
710
+ if (appear) {
711
+ context.pushStringPart(`<template>`);
712
+ processChildren(node, context, false, true);
713
+ context.pushStringPart(`</template>`);
714
+ } else {
715
+ processChildren(node, context, false, true);
716
+ }
717
+ }
718
+
719
+ const wipMap = /* @__PURE__ */ new WeakMap();
720
+ const WIP_SLOT = /* @__PURE__ */ Symbol();
721
+ const componentTypeMap = /* @__PURE__ */ new WeakMap();
722
+ const ssrTransformComponent = (node, context) => {
723
+ if (node.type !== 1 || node.tagType !== 1) {
724
+ return;
725
+ }
726
+ const component = compilerDom.resolveComponentType(
727
+ node,
728
+ context,
729
+ true
730
+ /* ssr */
731
+ );
732
+ const isDynamicComponent = shared.isObject(component) && component.callee === compilerDom.RESOLVE_DYNAMIC_COMPONENT;
733
+ componentTypeMap.set(node, component);
734
+ if (shared.isSymbol(component)) {
735
+ if (component === compilerDom.SUSPENSE) {
736
+ return ssrTransformSuspense(node, context);
737
+ } else if (component === compilerDom.TRANSITION_GROUP) {
738
+ return ssrTransformTransitionGroup(node, context);
739
+ } else if (component === compilerDom.TRANSITION) {
740
+ return ssrTransformTransition(node);
741
+ }
742
+ return;
743
+ }
744
+ const vnodeBranches = [];
745
+ const clonedNode = clone(node);
746
+ return function ssrPostTransformComponent() {
747
+ if (clonedNode.children.length) {
748
+ compilerDom.buildSlots(clonedNode, context, (props, vFor, children) => {
749
+ vnodeBranches.push(
750
+ createVNodeSlotBranch(props, vFor, children, context)
751
+ );
752
+ return compilerDom.createFunctionExpression(void 0);
753
+ });
754
+ }
755
+ let propsExp = `null`;
756
+ if (node.props.length) {
757
+ const { props, directives } = compilerDom.buildProps(
758
+ node,
759
+ context,
760
+ void 0,
761
+ true,
762
+ isDynamicComponent
763
+ );
764
+ if (props || directives.length) {
765
+ propsExp = buildSSRProps(props, directives, context);
766
+ }
767
+ }
768
+ const wipEntries = [];
769
+ wipMap.set(node, wipEntries);
770
+ const buildSSRSlotFn = (props, _vForExp, children, loc) => {
771
+ const param0 = props && compilerDom.stringifyExpression(props) || `_`;
772
+ const fn = compilerDom.createFunctionExpression(
773
+ [param0, `_push`, `_parent`, `_scopeId`],
774
+ void 0,
775
+ // no return, assign body later
776
+ true,
777
+ // newline
778
+ true,
779
+ // isSlot
780
+ loc
781
+ );
782
+ wipEntries.push({
783
+ type: WIP_SLOT,
784
+ fn,
785
+ children,
786
+ // also collect the corresponding vnode branch built earlier
787
+ vnodeBranch: vnodeBranches[wipEntries.length]
788
+ });
789
+ return fn;
790
+ };
791
+ const slots = node.children.length ? compilerDom.buildSlots(node, context, buildSSRSlotFn).slots : `null`;
792
+ if (typeof component !== "string") {
793
+ node.ssrCodegenNode = compilerDom.createCallExpression(
794
+ context.helper(SSR_RENDER_VNODE),
795
+ [
796
+ `_push`,
797
+ compilerDom.createCallExpression(context.helper(compilerDom.CREATE_VNODE), [
798
+ component,
799
+ propsExp,
800
+ slots
801
+ ]),
802
+ `_parent`
803
+ ]
804
+ );
805
+ } else {
806
+ node.ssrCodegenNode = compilerDom.createCallExpression(
807
+ context.helper(SSR_RENDER_COMPONENT),
808
+ [component, propsExp, slots, `_parent`]
809
+ );
810
+ }
811
+ };
812
+ };
813
+ function ssrProcessComponent(node, context, parent) {
814
+ const component = componentTypeMap.get(node);
815
+ if (!node.ssrCodegenNode) {
816
+ if (component === compilerDom.TELEPORT) {
817
+ return ssrProcessTeleport(node, context);
818
+ } else if (component === compilerDom.SUSPENSE) {
819
+ return ssrProcessSuspense(node, context);
820
+ } else if (component === compilerDom.TRANSITION_GROUP) {
821
+ return ssrProcessTransitionGroup(node, context);
822
+ } else {
823
+ if (parent.type === WIP_SLOT) {
824
+ context.pushStringPart(``);
825
+ }
826
+ if (component === compilerDom.TRANSITION) {
827
+ return ssrProcessTransition(node, context);
828
+ }
829
+ processChildren(node, context);
830
+ }
831
+ } else {
832
+ const wipEntries = wipMap.get(node) || [];
833
+ for (let i = 0; i < wipEntries.length; i++) {
834
+ const { fn, vnodeBranch } = wipEntries[i];
835
+ fn.body = compilerDom.createIfStatement(
836
+ compilerDom.createSimpleExpression(`_push`, false),
837
+ processChildrenAsStatement(
838
+ wipEntries[i],
839
+ context,
840
+ false,
841
+ true
842
+ ),
843
+ vnodeBranch
844
+ );
845
+ }
846
+ if (context.withSlotScopeId) {
847
+ node.ssrCodegenNode.arguments.push(`_scopeId`);
848
+ }
849
+ if (typeof component === "string") {
850
+ context.pushStatement(
851
+ compilerDom.createCallExpression(`_push`, [node.ssrCodegenNode])
852
+ );
853
+ } else {
854
+ context.pushStatement(node.ssrCodegenNode);
855
+ }
856
+ }
857
+ }
858
+ const rawOptionsMap = /* @__PURE__ */ new WeakMap();
859
+ const [baseNodeTransforms, baseDirectiveTransforms] = compilerDom.getBaseTransformPreset(true);
860
+ const vnodeNodeTransforms = [...baseNodeTransforms, ...compilerDom.DOMNodeTransforms];
861
+ const vnodeDirectiveTransforms = {
862
+ ...baseDirectiveTransforms,
863
+ ...compilerDom.DOMDirectiveTransforms
864
+ };
865
+ function createVNodeSlotBranch(slotProps, vFor, children, parentContext) {
866
+ const rawOptions = rawOptionsMap.get(parentContext.root);
867
+ const subOptions = {
868
+ ...rawOptions,
869
+ // overwrite with vnode-based transforms
870
+ nodeTransforms: [
871
+ ...vnodeNodeTransforms,
872
+ ...rawOptions.nodeTransforms || []
873
+ ],
874
+ directiveTransforms: {
875
+ ...vnodeDirectiveTransforms,
876
+ ...rawOptions.directiveTransforms || {}
877
+ }
878
+ };
879
+ const wrapperProps = [];
880
+ if (slotProps) {
881
+ wrapperProps.push({
882
+ type: 7,
883
+ name: "slot",
884
+ exp: slotProps,
885
+ arg: void 0,
886
+ modifiers: [],
887
+ loc: compilerDom.locStub
888
+ });
889
+ }
890
+ if (vFor) {
891
+ wrapperProps.push(shared.extend({}, vFor));
892
+ }
893
+ const wrapperNode = {
894
+ type: 1,
895
+ ns: 0,
896
+ tag: "template",
897
+ tagType: 3,
898
+ props: wrapperProps,
899
+ children,
900
+ loc: compilerDom.locStub,
901
+ codegenNode: void 0
902
+ };
903
+ subTransform(wrapperNode, subOptions, parentContext);
904
+ return compilerDom.createReturnStatement(children);
905
+ }
906
+ function subTransform(node, options, parentContext) {
907
+ const childRoot = compilerDom.createRoot([node]);
908
+ const childContext = compilerDom.createTransformContext(childRoot, options);
909
+ childContext.ssr = false;
910
+ childContext.scopes = { ...parentContext.scopes };
911
+ childContext.identifiers = { ...parentContext.identifiers };
912
+ childContext.imports = parentContext.imports;
913
+ compilerDom.traverseNode(childRoot, childContext);
914
+ ["helpers", "components", "directives"].forEach((key) => {
915
+ childContext[key].forEach((value, helperKey) => {
916
+ if (key === "helpers") {
917
+ const parentCount = parentContext.helpers.get(helperKey);
918
+ if (parentCount === void 0) {
919
+ parentContext.helpers.set(helperKey, value);
920
+ } else {
921
+ parentContext.helpers.set(helperKey, value + parentCount);
922
+ }
923
+ } else {
924
+ parentContext[key].add(value);
925
+ }
926
+ });
927
+ });
928
+ }
929
+ function clone(v) {
930
+ if (shared.isArray(v)) {
931
+ return v.map(clone);
932
+ } else if (shared.isPlainObject(v)) {
933
+ const res = {};
934
+ for (const key in v) {
935
+ res[key] = clone(v[key]);
936
+ }
937
+ return res;
938
+ } else {
939
+ return v;
940
+ }
941
+ }
942
+
943
+ function ssrCodegenTransform(ast, options) {
944
+ const context = createSSRTransformContext(ast, options);
945
+ if (options.ssrCssVars) {
946
+ const cssContext = compilerDom.createTransformContext(compilerDom.createRoot([]), options);
947
+ const varsExp = compilerDom.processExpression(
948
+ compilerDom.createSimpleExpression(options.ssrCssVars, false),
949
+ cssContext
950
+ );
951
+ context.body.push(
952
+ compilerDom.createCompoundExpression([`const _cssVars = { style: `, varsExp, `}`])
953
+ );
954
+ Array.from(cssContext.helpers.keys()).forEach((helper) => {
955
+ ast.helpers.add(helper);
956
+ });
957
+ }
958
+ const isFragment = ast.children.length > 1 && ast.children.some((c) => !compilerDom.isText(c));
959
+ processChildren(ast, context, isFragment);
960
+ ast.codegenNode = compilerDom.createBlockStatement(context.body);
961
+ ast.ssrHelpers = Array.from(
962
+ /* @__PURE__ */ new Set([
963
+ ...Array.from(ast.helpers).filter((h) => h in ssrHelpers),
964
+ ...context.helpers
965
+ ])
966
+ );
967
+ ast.helpers = new Set(Array.from(ast.helpers).filter((h) => !(h in ssrHelpers)));
968
+ }
969
+ function createSSRTransformContext(root, options, helpers = /* @__PURE__ */ new Set(), withSlotScopeId = false) {
970
+ const body = [];
971
+ let currentString = null;
972
+ return {
973
+ root,
974
+ options,
975
+ body,
976
+ helpers,
977
+ withSlotScopeId,
978
+ onError: options.onError || ((e) => {
979
+ throw e;
980
+ }),
981
+ helper(name) {
982
+ helpers.add(name);
983
+ return name;
984
+ },
985
+ pushStringPart(part) {
986
+ if (!currentString) {
987
+ const currentCall = compilerDom.createCallExpression(`_push`);
988
+ body.push(currentCall);
989
+ currentString = compilerDom.createTemplateLiteral([]);
990
+ currentCall.arguments.push(currentString);
991
+ }
992
+ const bufferedElements = currentString.elements;
993
+ const lastItem = bufferedElements[bufferedElements.length - 1];
994
+ if (shared.isString(part) && shared.isString(lastItem)) {
995
+ bufferedElements[bufferedElements.length - 1] += part;
996
+ } else {
997
+ bufferedElements.push(part);
998
+ }
999
+ },
1000
+ pushStatement(statement) {
1001
+ currentString = null;
1002
+ body.push(statement);
1003
+ }
1004
+ };
1005
+ }
1006
+ function createChildContext(parent, withSlotScopeId = parent.withSlotScopeId) {
1007
+ return createSSRTransformContext(
1008
+ parent.root,
1009
+ parent.options,
1010
+ parent.helpers,
1011
+ withSlotScopeId
1012
+ );
1013
+ }
1014
+ function processChildren(parent, context, asFragment = false, disableNestedFragments = false, disableComment = false) {
1015
+ if (asFragment) {
1016
+ context.pushStringPart(`<!--[-->`);
1017
+ }
1018
+ const { children } = parent;
1019
+ for (let i = 0; i < children.length; i++) {
1020
+ const child = children[i];
1021
+ switch (child.type) {
1022
+ case 1:
1023
+ switch (child.tagType) {
1024
+ case 0:
1025
+ ssrProcessElement(child, context);
1026
+ break;
1027
+ case 1:
1028
+ ssrProcessComponent(child, context, parent);
1029
+ break;
1030
+ case 2:
1031
+ ssrProcessSlotOutlet(child, context);
1032
+ break;
1033
+ case 3:
1034
+ break;
1035
+ default:
1036
+ context.onError(
1037
+ createSSRCompilerError(
1038
+ 67,
1039
+ child.loc
1040
+ )
1041
+ );
1042
+ const exhaustiveCheck2 = child;
1043
+ return exhaustiveCheck2;
1044
+ }
1045
+ break;
1046
+ case 2:
1047
+ context.pushStringPart(shared.escapeHtml(child.content));
1048
+ break;
1049
+ case 3:
1050
+ if (!disableComment) {
1051
+ context.pushStringPart(`<!--${child.content}-->`);
1052
+ }
1053
+ break;
1054
+ case 5:
1055
+ context.pushStringPart(
1056
+ compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [
1057
+ child.content
1058
+ ])
1059
+ );
1060
+ break;
1061
+ case 9:
1062
+ ssrProcessIf(child, context, disableNestedFragments, disableComment);
1063
+ break;
1064
+ case 11:
1065
+ ssrProcessFor(child, context, disableNestedFragments);
1066
+ break;
1067
+ case 10:
1068
+ break;
1069
+ case 12:
1070
+ case 8:
1071
+ break;
1072
+ default:
1073
+ context.onError(
1074
+ createSSRCompilerError(
1075
+ 67,
1076
+ child.loc
1077
+ )
1078
+ );
1079
+ const exhaustiveCheck = child;
1080
+ return exhaustiveCheck;
1081
+ }
1082
+ }
1083
+ if (asFragment) {
1084
+ context.pushStringPart(`<!--]-->`);
1085
+ }
1086
+ }
1087
+ function processChildrenAsStatement(parent, parentContext, asFragment = false, withSlotScopeId = parentContext.withSlotScopeId) {
1088
+ const childContext = createChildContext(parentContext, withSlotScopeId);
1089
+ processChildren(parent, childContext, asFragment);
1090
+ return compilerDom.createBlockStatement(childContext.body);
1091
+ }
1092
+
1093
+ const ssrTransformModel = (dir, node, context) => {
1094
+ const model = dir.exp;
1095
+ function checkDuplicatedValue() {
1096
+ const value = compilerDom.findProp(node, "value");
1097
+ if (value) {
1098
+ context.onError(
1099
+ compilerDom.createDOMCompilerError(
1100
+ 61,
1101
+ value.loc
1102
+ )
1103
+ );
1104
+ }
1105
+ }
1106
+ const processSelectChildren = (children) => {
1107
+ children.forEach((child) => {
1108
+ if (child.type === 1) {
1109
+ processOption(child);
1110
+ } else if (child.type === 11) {
1111
+ processSelectChildren(child.children);
1112
+ } else if (child.type === 9) {
1113
+ child.branches.forEach((b) => processSelectChildren(b.children));
1114
+ }
1115
+ });
1116
+ };
1117
+ function processOption(plainNode) {
1118
+ if (plainNode.tag === "option") {
1119
+ if (plainNode.props.findIndex((p) => p.name === "selected") === -1) {
1120
+ const value = findValueBinding(plainNode);
1121
+ plainNode.ssrCodegenNode.elements.push(
1122
+ compilerDom.createConditionalExpression(
1123
+ compilerDom.createCallExpression(context.helper(SSR_INCLUDE_BOOLEAN_ATTR), [
1124
+ compilerDom.createConditionalExpression(
1125
+ compilerDom.createCallExpression(`Array.isArray`, [model]),
1126
+ compilerDom.createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [
1127
+ model,
1128
+ value
1129
+ ]),
1130
+ compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [
1131
+ model,
1132
+ value
1133
+ ])
1134
+ )
1135
+ ]),
1136
+ compilerDom.createSimpleExpression(" selected", true),
1137
+ compilerDom.createSimpleExpression("", true),
1138
+ false
1139
+ )
1140
+ );
1141
+ }
1142
+ } else if (plainNode.tag === "optgroup") {
1143
+ processSelectChildren(plainNode.children);
1144
+ }
1145
+ }
1146
+ if (node.tagType === 0) {
1147
+ const res = { props: [] };
1148
+ if (node.tag === "input") {
1149
+ const defaultProps = [
1150
+ // default value binding for text type inputs
1151
+ compilerDom.createObjectProperty(`value`, model)
1152
+ ];
1153
+ const type = compilerDom.findProp(node, "type");
1154
+ if (type) {
1155
+ const value = findValueBinding(node);
1156
+ if (type.type === 7) {
1157
+ res.ssrTagParts = [
1158
+ compilerDom.createCallExpression(context.helper(SSR_RENDER_DYNAMIC_MODEL), [
1159
+ type.exp,
1160
+ model,
1161
+ value
1162
+ ])
1163
+ ];
1164
+ } else if (type.value) {
1165
+ switch (type.value.content) {
1166
+ case "radio":
1167
+ res.props = [
1168
+ compilerDom.createObjectProperty(
1169
+ `checked`,
1170
+ compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [
1171
+ model,
1172
+ value
1173
+ ])
1174
+ )
1175
+ ];
1176
+ break;
1177
+ case "checkbox":
1178
+ const trueValueBinding = compilerDom.findProp(node, "true-value");
1179
+ if (trueValueBinding) {
1180
+ const trueValue = trueValueBinding.type === 6 ? JSON.stringify(trueValueBinding.value.content) : trueValueBinding.exp;
1181
+ res.props = [
1182
+ compilerDom.createObjectProperty(
1183
+ `checked`,
1184
+ compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [
1185
+ model,
1186
+ trueValue
1187
+ ])
1188
+ )
1189
+ ];
1190
+ } else {
1191
+ res.props = [
1192
+ compilerDom.createObjectProperty(
1193
+ `checked`,
1194
+ compilerDom.createConditionalExpression(
1195
+ compilerDom.createCallExpression(`Array.isArray`, [model]),
1196
+ compilerDom.createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [
1197
+ model,
1198
+ value
1199
+ ]),
1200
+ model
1201
+ )
1202
+ )
1203
+ ];
1204
+ }
1205
+ break;
1206
+ case "file":
1207
+ context.onError(
1208
+ compilerDom.createDOMCompilerError(
1209
+ 60,
1210
+ dir.loc
1211
+ )
1212
+ );
1213
+ break;
1214
+ default:
1215
+ checkDuplicatedValue();
1216
+ res.props = defaultProps;
1217
+ break;
1218
+ }
1219
+ }
1220
+ } else if (compilerDom.hasDynamicKeyVBind(node)) ; else {
1221
+ checkDuplicatedValue();
1222
+ res.props = defaultProps;
1223
+ }
1224
+ } else if (node.tag === "textarea") {
1225
+ checkDuplicatedValue();
1226
+ node.children = [compilerDom.createInterpolation(model, model.loc)];
1227
+ } else if (node.tag === "select") {
1228
+ processSelectChildren(node.children);
1229
+ } else {
1230
+ context.onError(
1231
+ compilerDom.createDOMCompilerError(
1232
+ 58,
1233
+ dir.loc
1234
+ )
1235
+ );
1236
+ }
1237
+ return res;
1238
+ } else {
1239
+ return compilerDom.transformModel(dir, node, context);
1240
+ }
1241
+ };
1242
+ function findValueBinding(node) {
1243
+ const valueBinding = compilerDom.findProp(node, "value");
1244
+ return valueBinding ? valueBinding.type === 7 ? valueBinding.exp : compilerDom.createSimpleExpression(valueBinding.value.content, true) : compilerDom.createSimpleExpression(`null`, false);
1245
+ }
1246
+
1247
+ const ssrTransformShow = (dir, node, context) => {
1248
+ if (!dir.exp) {
1249
+ context.onError(
1250
+ compilerDom.createDOMCompilerError(62)
1251
+ );
1252
+ }
1253
+ return {
1254
+ props: [
1255
+ compilerDom.createObjectProperty(
1256
+ `style`,
1257
+ compilerDom.createConditionalExpression(
1258
+ dir.exp,
1259
+ compilerDom.createSimpleExpression(`null`, false),
1260
+ compilerDom.createObjectExpression([
1261
+ compilerDom.createObjectProperty(
1262
+ `display`,
1263
+ compilerDom.createSimpleExpression(`none`, true)
1264
+ )
1265
+ ]),
1266
+ false
1267
+ )
1268
+ )
1269
+ ]
1270
+ };
1271
+ };
1272
+
1273
+ const filterChild = (node) => node.children.filter((n) => !compilerDom.isCommentOrWhitespace(n));
1274
+ const hasSingleChild = (node) => filterChild(node).length === 1;
1275
+ const ssrInjectFallthroughAttrs = (node, context) => {
1276
+ if (node.type === 0) {
1277
+ context.identifiers._attrs = 1;
1278
+ }
1279
+ if (node.type === 1 && node.tagType === 1 && (node.tag === "transition" || node.tag === "Transition" || node.tag === "KeepAlive" || node.tag === "keep-alive")) {
1280
+ const rootChildren = filterChild(context.root);
1281
+ if (rootChildren.length === 1 && rootChildren[0] === node) {
1282
+ if (hasSingleChild(node)) {
1283
+ injectFallthroughAttrs(node.children[0]);
1284
+ }
1285
+ return;
1286
+ }
1287
+ }
1288
+ const parent = context.parent;
1289
+ if (!parent || parent.type !== 0) {
1290
+ return;
1291
+ }
1292
+ if (node.type === 10 && hasSingleChild(node)) {
1293
+ let hasEncounteredIf = false;
1294
+ for (const c of filterChild(parent)) {
1295
+ if (c.type === 9 || c.type === 1 && compilerDom.findDir(c, "if")) {
1296
+ if (hasEncounteredIf) return;
1297
+ hasEncounteredIf = true;
1298
+ } else if (
1299
+ // node before v-if
1300
+ !hasEncounteredIf || // non else nodes
1301
+ !(c.type === 1 && compilerDom.findDir(c, /else/, true))
1302
+ ) {
1303
+ return;
1304
+ }
1305
+ }
1306
+ injectFallthroughAttrs(node.children[0]);
1307
+ } else if (hasSingleChild(parent)) {
1308
+ injectFallthroughAttrs(node);
1309
+ }
1310
+ };
1311
+ function injectFallthroughAttrs(node) {
1312
+ if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) {
1313
+ node.props.push({
1314
+ type: 7,
1315
+ name: "bind",
1316
+ arg: void 0,
1317
+ exp: compilerDom.createSimpleExpression(`_attrs`, false),
1318
+ modifiers: [],
1319
+ loc: compilerDom.locStub
1320
+ });
1321
+ }
1322
+ }
1323
+
1324
+ const ssrInjectCssVars = (node, context) => {
1325
+ if (!context.ssrCssVars) {
1326
+ return;
1327
+ }
1328
+ if (node.type === 0) {
1329
+ context.identifiers._cssVars = 1;
1330
+ }
1331
+ const parent = context.parent;
1332
+ if (!parent || parent.type !== 0) {
1333
+ return;
1334
+ }
1335
+ if (node.type === 10) {
1336
+ for (const child of node.children) {
1337
+ injectCssVars(child);
1338
+ }
1339
+ } else {
1340
+ injectCssVars(node);
1341
+ }
1342
+ };
1343
+ function injectCssVars(node) {
1344
+ if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) {
1345
+ if (node.tag === "suspense" || node.tag === "Suspense") {
1346
+ for (const child of node.children) {
1347
+ if (child.type === 1 && child.tagType === 3) {
1348
+ child.children.forEach(injectCssVars);
1349
+ } else {
1350
+ injectCssVars(child);
1351
+ }
1352
+ }
1353
+ } else {
1354
+ node.props.push({
1355
+ type: 7,
1356
+ name: "bind",
1357
+ arg: void 0,
1358
+ exp: compilerDom.createSimpleExpression(`_cssVars`, false),
1359
+ modifiers: [],
1360
+ loc: compilerDom.locStub
1361
+ });
1362
+ }
1363
+ }
1364
+ }
1365
+
1366
+ function compile(source, options = {}) {
1367
+ options = {
1368
+ ...options,
1369
+ ...compilerDom.parserOptions,
1370
+ ssr: true,
1371
+ inSSR: true,
1372
+ scopeId: options.mode === "function" ? null : options.scopeId,
1373
+ // always prefix since compiler-ssr doesn't have size concern
1374
+ prefixIdentifiers: true,
1375
+ // disable optimizations that are unnecessary for ssr
1376
+ cacheHandlers: false,
1377
+ hoistStatic: false
1378
+ };
1379
+ const ast = typeof source === "string" ? compilerDom.baseParse(source, options) : source;
1380
+ rawOptionsMap.set(ast, options);
1381
+ compilerDom.transform(ast, {
1382
+ ...options,
1383
+ hoistStatic: false,
1384
+ nodeTransforms: [
1385
+ compilerDom.transformVBindShorthand,
1386
+ ssrTransformIf,
1387
+ ssrTransformFor,
1388
+ compilerDom.trackVForSlotScopes,
1389
+ compilerDom.transformExpression,
1390
+ ssrTransformSlotOutlet,
1391
+ ssrInjectFallthroughAttrs,
1392
+ ssrInjectCssVars,
1393
+ ssrTransformElement,
1394
+ ssrTransformComponent,
1395
+ compilerDom.trackSlotScopes,
1396
+ compilerDom.transformStyle,
1397
+ ...options.nodeTransforms || []
1398
+ // user transforms
1399
+ ],
1400
+ directiveTransforms: {
1401
+ // reusing core v-bind
1402
+ bind: compilerDom.transformBind,
1403
+ on: compilerDom.transformOn,
1404
+ // model and show have dedicated SSR handling
1405
+ model: ssrTransformModel,
1406
+ show: ssrTransformShow,
1407
+ // the following are ignored during SSR
1408
+ // on: noopDirectiveTransform,
1409
+ cloak: compilerDom.noopDirectiveTransform,
1410
+ once: compilerDom.noopDirectiveTransform,
1411
+ memo: compilerDom.noopDirectiveTransform,
1412
+ ...options.directiveTransforms || {}
1413
+ // user transforms
1414
+ }
1415
+ });
1416
+ ssrCodegenTransform(ast, options);
1417
+ return compilerDom.generate(ast, options);
1418
+ }
1419
+
1420
+ exports.compile = compile;