yansu 0.0.0-beta.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 (142) hide show
  1. package/README.md +1 -0
  2. package/bin.mjs +18 -0
  3. package/dist/cli.d.mts +2 -0
  4. package/dist/cli.mjs +68 -0
  5. package/dist/dirs.d.mts +4 -0
  6. package/dist/dirs.mjs +6 -0
  7. package/dist/index.d.mts +78 -0
  8. package/dist/index.mjs +121 -0
  9. package/dist/nitro.json +15 -0
  10. package/dist/public/_nuxt/BHIHUtPz.js +4 -0
  11. package/dist/public/_nuxt/CCgOhniq.js +1 -0
  12. package/dist/public/_nuxt/CR6vfq1R.js +1 -0
  13. package/dist/public/_nuxt/DmxzK6E8.js +1 -0
  14. package/dist/public/_nuxt/builds/latest.json +1 -0
  15. package/dist/public/_nuxt/builds/meta/e9079134-f314-434b-b3a7-092c4a1e187d.json +1 -0
  16. package/dist/public/_nuxt/entry.DJ3VOi_0.css +1 -0
  17. package/dist/public/_nuxt/error-404.lC6KBLNm.css +1 -0
  18. package/dist/public/_nuxt/error-500.NtBcR2wE.css +1 -0
  19. package/dist/server/chunks/_/error-500.mjs +9 -0
  20. package/dist/server/chunks/build/_plugin-vue_export-helper-DjsbPc54.mjs +29 -0
  21. package/dist/server/chunks/build/client.precomputed.mjs +3 -0
  22. package/dist/server/chunks/build/error-404-Du0ot2hm.mjs +369 -0
  23. package/dist/server/chunks/build/error-500-Y3RUV6n2.mjs +73 -0
  24. package/dist/server/chunks/build/server.mjs +727 -0
  25. package/dist/server/chunks/nitro/nitro.mjs +5176 -0
  26. package/dist/server/chunks/routes/api/metadata.json.mjs +147 -0
  27. package/dist/server/chunks/routes/api/platform.json.mjs +20 -0
  28. package/dist/server/chunks/routes/renderer.mjs +408 -0
  29. package/dist/server/chunks/virtual/_virtual_spa-template.mjs +3 -0
  30. package/dist/server/index.mjs +9 -0
  31. package/dist/server/node_modules/.nitro/@vue/shared@3.5.25/dist/shared.cjs.prod.js +604 -0
  32. package/dist/server/node_modules/.nitro/@vue/shared@3.5.25/package.json +47 -0
  33. package/dist/server/node_modules/.nitro/@vue/shared@3.5.26/dist/shared.cjs.prod.js +604 -0
  34. package/dist/server/node_modules/.nitro/@vue/shared@3.5.26/package.json +47 -0
  35. package/dist/server/node_modules/@babel/parser/lib/index.js +14662 -0
  36. package/dist/server/node_modules/@babel/parser/package.json +50 -0
  37. package/dist/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6763 -0
  38. package/dist/server/node_modules/@vue/compiler-core/package.json +58 -0
  39. package/dist/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
  40. package/dist/server/node_modules/@vue/compiler-dom/package.json +57 -0
  41. package/dist/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
  42. package/dist/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  43. package/dist/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1853 -0
  44. package/dist/server/node_modules/@vue/reactivity/package.json +55 -0
  45. package/dist/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6770 -0
  46. package/dist/server/node_modules/@vue/runtime-core/package.json +52 -0
  47. package/dist/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1732 -0
  48. package/dist/server/node_modules/@vue/runtime-dom/package.json +60 -0
  49. package/dist/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +879 -0
  50. package/dist/server/node_modules/@vue/server-renderer/package.json +55 -0
  51. package/dist/server/node_modules/ansis/index.cjs +1 -0
  52. package/dist/server/node_modules/ansis/index.mjs +1 -0
  53. package/dist/server/node_modules/ansis/package.json +25 -0
  54. package/dist/server/node_modules/birpc/dist/index.mjs +173 -0
  55. package/dist/server/node_modules/birpc/package.json +56 -0
  56. package/dist/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
  57. package/dist/server/node_modules/consola/dist/core.mjs +512 -0
  58. package/dist/server/node_modules/consola/dist/index.mjs +651 -0
  59. package/dist/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  60. package/dist/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  61. package/dist/server/node_modules/consola/package.json +136 -0
  62. package/dist/server/node_modules/devalue/index.js +4 -0
  63. package/dist/server/node_modules/devalue/package.json +37 -0
  64. package/dist/server/node_modules/devalue/src/base64.js +110 -0
  65. package/dist/server/node_modules/devalue/src/constants.js +6 -0
  66. package/dist/server/node_modules/devalue/src/parse.js +205 -0
  67. package/dist/server/node_modules/devalue/src/stringify.js +265 -0
  68. package/dist/server/node_modules/devalue/src/uneval.js +407 -0
  69. package/dist/server/node_modules/devalue/src/utils.js +118 -0
  70. package/dist/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  71. package/dist/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  72. package/dist/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  73. package/dist/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  74. package/dist/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  75. package/dist/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  76. package/dist/server/node_modules/entities/dist/commonjs/package.json +3 -0
  77. package/dist/server/node_modules/entities/package.json +113 -0
  78. package/dist/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  79. package/dist/server/node_modules/estree-walker/package.json +37 -0
  80. package/dist/server/node_modules/get-port-please/dist/index.mjs +430 -0
  81. package/dist/server/node_modules/get-port-please/package.json +39 -0
  82. package/dist/server/node_modules/hookable/dist/index.mjs +290 -0
  83. package/dist/server/node_modules/hookable/package.json +49 -0
  84. package/dist/server/node_modules/source-map-js/lib/array-set.js +121 -0
  85. package/dist/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  86. package/dist/server/node_modules/source-map-js/lib/base64.js +67 -0
  87. package/dist/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  88. package/dist/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  89. package/dist/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  90. package/dist/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  91. package/dist/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  92. package/dist/server/node_modules/source-map-js/lib/source-node.js +413 -0
  93. package/dist/server/node_modules/source-map-js/lib/util.js +594 -0
  94. package/dist/server/node_modules/source-map-js/package.json +71 -0
  95. package/dist/server/node_modules/source-map-js/source-map.js +8 -0
  96. package/dist/server/node_modules/structured-clone-es/dist/index.mjs +285 -0
  97. package/dist/server/node_modules/structured-clone-es/package.json +56 -0
  98. package/dist/server/node_modules/ufo/dist/index.mjs +638 -0
  99. package/dist/server/node_modules/ufo/package.json +47 -0
  100. package/dist/server/node_modules/unhead/dist/index.mjs +9 -0
  101. package/dist/server/node_modules/unhead/dist/parser.mjs +508 -0
  102. package/dist/server/node_modules/unhead/dist/plugins.mjs +101 -0
  103. package/dist/server/node_modules/unhead/dist/scripts.mjs +30 -0
  104. package/dist/server/node_modules/unhead/dist/server.mjs +182 -0
  105. package/dist/server/node_modules/unhead/dist/shared/unhead.B578PsDV.mjs +266 -0
  106. package/dist/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs +44 -0
  107. package/dist/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
  108. package/dist/server/node_modules/unhead/dist/shared/unhead.BpRRHAhY.mjs +194 -0
  109. package/dist/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +148 -0
  110. package/dist/server/node_modules/unhead/dist/shared/unhead.DH45uomy.mjs +180 -0
  111. package/dist/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
  112. package/dist/server/node_modules/unhead/dist/shared/unhead.DZbvapt-.mjs +70 -0
  113. package/dist/server/node_modules/unhead/dist/shared/unhead.Djo8ep_Y.mjs +166 -0
  114. package/dist/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
  115. package/dist/server/node_modules/unhead/dist/utils.mjs +5 -0
  116. package/dist/server/node_modules/unhead/package.json +105 -0
  117. package/dist/server/node_modules/vue/dist/vue.cjs.js +80 -0
  118. package/dist/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  119. package/dist/server/node_modules/vue/index.js +7 -0
  120. package/dist/server/node_modules/vue/index.mjs +1 -0
  121. package/dist/server/node_modules/vue/package.json +112 -0
  122. package/dist/server/node_modules/vue/server-renderer/index.mjs +1 -0
  123. package/dist/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +301 -0
  124. package/dist/server/node_modules/vue-bundle-renderer/package.json +55 -0
  125. package/dist/server/node_modules/ws/lib/buffer-util.js +131 -0
  126. package/dist/server/node_modules/ws/lib/constants.js +19 -0
  127. package/dist/server/node_modules/ws/lib/event-target.js +292 -0
  128. package/dist/server/node_modules/ws/lib/extension.js +203 -0
  129. package/dist/server/node_modules/ws/lib/limiter.js +55 -0
  130. package/dist/server/node_modules/ws/lib/permessage-deflate.js +528 -0
  131. package/dist/server/node_modules/ws/lib/receiver.js +706 -0
  132. package/dist/server/node_modules/ws/lib/sender.js +602 -0
  133. package/dist/server/node_modules/ws/lib/stream.js +161 -0
  134. package/dist/server/node_modules/ws/lib/subprotocol.js +62 -0
  135. package/dist/server/node_modules/ws/lib/validation.js +152 -0
  136. package/dist/server/node_modules/ws/lib/websocket-server.js +554 -0
  137. package/dist/server/node_modules/ws/lib/websocket.js +1393 -0
  138. package/dist/server/node_modules/ws/package.json +69 -0
  139. package/dist/server/node_modules/ws/wrapper.mjs +8 -0
  140. package/dist/server/package.json +32 -0
  141. package/dist/shared/yansu.DmdNF4qf.mjs +151 -0
  142. package/package.json +50 -0
@@ -0,0 +1,1413 @@
1
+ /**
2
+ * @vue/compiler-ssr v3.5.26
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 (shared.isSSRSafeAttrName(attrName)) {
480
+ openTag.push(
481
+ compilerDom.createCallExpression(context.helper(SSR_RENDER_ATTR), [
482
+ key,
483
+ value
484
+ ])
485
+ );
486
+ } else {
487
+ context.onError(
488
+ createSSRCompilerError(
489
+ 65,
490
+ key.loc
491
+ )
492
+ );
493
+ }
494
+ }
495
+ } else {
496
+ const args = [key, value];
497
+ if (needTagForRuntime) {
498
+ args.push(`"${node.tag}"`);
499
+ }
500
+ openTag.push(
501
+ compilerDom.createCallExpression(
502
+ context.helper(SSR_RENDER_DYNAMIC_ATTR),
503
+ args
504
+ )
505
+ );
506
+ }
507
+ }
508
+ }
509
+ }
510
+ } else {
511
+ const name = prop.name;
512
+ if (node.tag === "textarea" && name === "value" && prop.value) {
513
+ rawChildrenMap.set(node, shared.escapeHtml(prop.value.content));
514
+ } else if (!needMergeProps) {
515
+ if (name === "key" || name === "ref") {
516
+ continue;
517
+ }
518
+ if (name === "class" && prop.value) {
519
+ staticClassBinding = JSON.stringify(prop.value.content);
520
+ }
521
+ openTag.push(
522
+ ` ${prop.name}` + (prop.value ? `="${shared.escapeHtml(prop.value.content)}"` : ``)
523
+ );
524
+ }
525
+ }
526
+ }
527
+ if (dynamicClassBinding && staticClassBinding) {
528
+ mergeCall(dynamicClassBinding, staticClassBinding);
529
+ removeStaticBinding(openTag, "class");
530
+ }
531
+ if (context.scopeId) {
532
+ openTag.push(` ${context.scopeId}`);
533
+ }
534
+ node.ssrCodegenNode = compilerDom.createTemplateLiteral(openTag);
535
+ };
536
+ };
537
+ function buildSSRProps(props, directives, context) {
538
+ let mergePropsArgs = [];
539
+ if (props) {
540
+ if (props.type === 14) {
541
+ mergePropsArgs = props.arguments;
542
+ } else {
543
+ mergePropsArgs.push(props);
544
+ }
545
+ }
546
+ if (directives.length) {
547
+ for (const dir of directives) {
548
+ mergePropsArgs.push(
549
+ compilerDom.createCallExpression(context.helper(SSR_GET_DIRECTIVE_PROPS), [
550
+ `_ctx`,
551
+ ...compilerDom.buildDirectiveArgs(dir, context).elements
552
+ ])
553
+ );
554
+ }
555
+ }
556
+ return mergePropsArgs.length > 1 ? compilerDom.createCallExpression(context.helper(compilerDom.MERGE_PROPS), mergePropsArgs) : mergePropsArgs[0];
557
+ }
558
+ function isTrueFalseValue(prop) {
559
+ if (prop.type === 7) {
560
+ return prop.name === "bind" && prop.arg && compilerDom.isStaticExp(prop.arg) && (prop.arg.content === "true-value" || prop.arg.content === "false-value");
561
+ } else {
562
+ return prop.name === "true-value" || prop.name === "false-value";
563
+ }
564
+ }
565
+ function isTextareaWithValue(node, prop) {
566
+ return !!(node.tag === "textarea" && prop.name === "bind" && compilerDom.isStaticArgOf(prop.arg, "value"));
567
+ }
568
+ function mergeCall(call, arg) {
569
+ const existing = call.arguments[0];
570
+ if (existing.type === 17) {
571
+ existing.elements.push(arg);
572
+ } else {
573
+ call.arguments[0] = compilerDom.createArrayExpression([existing, arg]);
574
+ }
575
+ }
576
+ function removeStaticBinding(tag, binding) {
577
+ const regExp = new RegExp(`^ ${binding}=".+"$`);
578
+ const i = tag.findIndex((e) => typeof e === "string" && regExp.test(e));
579
+ if (i > -1) {
580
+ tag.splice(i, 1);
581
+ }
582
+ }
583
+ function findVModel(node) {
584
+ return node.props.find(
585
+ (p) => p.type === 7 && p.name === "model" && p.exp
586
+ );
587
+ }
588
+ function hasContentOverrideDirective(node) {
589
+ return !!compilerDom.findDir(node, "text") || !!compilerDom.findDir(node, "html");
590
+ }
591
+ function ssrProcessElement(node, context) {
592
+ const isVoidTag = context.options.isVoidTag || shared.NO;
593
+ const elementsToAdd = node.ssrCodegenNode.elements;
594
+ for (let j = 0; j < elementsToAdd.length; j++) {
595
+ context.pushStringPart(elementsToAdd[j]);
596
+ }
597
+ if (context.withSlotScopeId) {
598
+ context.pushStringPart(compilerDom.createSimpleExpression(`_scopeId`, false));
599
+ }
600
+ context.pushStringPart(`>`);
601
+ const rawChildren = rawChildrenMap.get(node);
602
+ if (rawChildren) {
603
+ context.pushStringPart(rawChildren);
604
+ } else if (node.children.length) {
605
+ processChildren(node, context);
606
+ }
607
+ if (!isVoidTag(node.tag)) {
608
+ context.pushStringPart(`</${node.tag}>`);
609
+ }
610
+ }
611
+
612
+ const wipMap$2 = /* @__PURE__ */ new WeakMap();
613
+ function ssrTransformTransitionGroup(node, context) {
614
+ return () => {
615
+ const tag = compilerDom.findProp(node, "tag");
616
+ if (tag) {
617
+ const otherProps = node.props.filter((p) => p !== tag);
618
+ const { props, directives } = compilerDom.buildProps(
619
+ node,
620
+ context,
621
+ otherProps,
622
+ true,
623
+ false,
624
+ true
625
+ );
626
+ let propsExp = null;
627
+ if (props || directives.length) {
628
+ propsExp = compilerDom.createCallExpression(context.helper(SSR_RENDER_ATTRS), [
629
+ buildSSRProps(props, directives, context)
630
+ ]);
631
+ }
632
+ wipMap$2.set(node, {
633
+ tag,
634
+ propsExp,
635
+ scopeId: context.scopeId || null
636
+ });
637
+ }
638
+ };
639
+ }
640
+ function ssrProcessTransitionGroup(node, context) {
641
+ const entry = wipMap$2.get(node);
642
+ if (entry) {
643
+ const { tag, propsExp, scopeId } = entry;
644
+ if (tag.type === 7) {
645
+ context.pushStringPart(`<`);
646
+ context.pushStringPart(tag.exp);
647
+ if (propsExp) {
648
+ context.pushStringPart(propsExp);
649
+ }
650
+ if (scopeId) {
651
+ context.pushStringPart(` ${scopeId}`);
652
+ }
653
+ context.pushStringPart(`>`);
654
+ processChildren(
655
+ node,
656
+ context,
657
+ false,
658
+ /**
659
+ * TransitionGroup has the special runtime behavior of flattening and
660
+ * concatenating all children into a single fragment (in order for them to
661
+ * be patched using the same key map) so we need to account for that here
662
+ * by disabling nested fragment wrappers from being generated.
663
+ */
664
+ true,
665
+ /**
666
+ * TransitionGroup filters out comment children at runtime and thus
667
+ * doesn't expect comments to be present during hydration. We need to
668
+ * account for that by disabling the empty comment that is otherwise
669
+ * rendered for a falsy v-if that has no v-else specified. (#6715)
670
+ */
671
+ true
672
+ );
673
+ context.pushStringPart(`</`);
674
+ context.pushStringPart(tag.exp);
675
+ context.pushStringPart(`>`);
676
+ } else {
677
+ context.pushStringPart(`<${tag.value.content}`);
678
+ if (propsExp) {
679
+ context.pushStringPart(propsExp);
680
+ }
681
+ if (scopeId) {
682
+ context.pushStringPart(` ${scopeId}`);
683
+ }
684
+ context.pushStringPart(`>`);
685
+ processChildren(node, context, false, true, true);
686
+ context.pushStringPart(`</${tag.value.content}>`);
687
+ }
688
+ } else {
689
+ processChildren(node, context, true, true, true);
690
+ }
691
+ }
692
+
693
+ const wipMap$1 = /* @__PURE__ */ new WeakMap();
694
+ function ssrTransformTransition(node, context) {
695
+ return () => {
696
+ const appear = compilerDom.findProp(node, "appear", false, true);
697
+ wipMap$1.set(node, !!appear);
698
+ };
699
+ }
700
+ function ssrProcessTransition(node, context) {
701
+ node.children = node.children.filter((c) => c.type !== 3);
702
+ const appear = wipMap$1.get(node);
703
+ if (appear) {
704
+ context.pushStringPart(`<template>`);
705
+ processChildren(node, context, false, true);
706
+ context.pushStringPart(`</template>`);
707
+ } else {
708
+ processChildren(node, context, false, true);
709
+ }
710
+ }
711
+
712
+ const wipMap = /* @__PURE__ */ new WeakMap();
713
+ const WIP_SLOT = /* @__PURE__ */ Symbol();
714
+ const componentTypeMap = /* @__PURE__ */ new WeakMap();
715
+ const ssrTransformComponent = (node, context) => {
716
+ if (node.type !== 1 || node.tagType !== 1) {
717
+ return;
718
+ }
719
+ const component = compilerDom.resolveComponentType(
720
+ node,
721
+ context,
722
+ true
723
+ /* ssr */
724
+ );
725
+ const isDynamicComponent = shared.isObject(component) && component.callee === compilerDom.RESOLVE_DYNAMIC_COMPONENT;
726
+ componentTypeMap.set(node, component);
727
+ if (shared.isSymbol(component)) {
728
+ if (component === compilerDom.SUSPENSE) {
729
+ return ssrTransformSuspense(node, context);
730
+ } else if (component === compilerDom.TRANSITION_GROUP) {
731
+ return ssrTransformTransitionGroup(node, context);
732
+ } else if (component === compilerDom.TRANSITION) {
733
+ return ssrTransformTransition(node);
734
+ }
735
+ return;
736
+ }
737
+ const vnodeBranches = [];
738
+ const clonedNode = clone(node);
739
+ return function ssrPostTransformComponent() {
740
+ if (clonedNode.children.length) {
741
+ compilerDom.buildSlots(clonedNode, context, (props, vFor, children) => {
742
+ vnodeBranches.push(
743
+ createVNodeSlotBranch(props, vFor, children, context)
744
+ );
745
+ return compilerDom.createFunctionExpression(void 0);
746
+ });
747
+ }
748
+ let propsExp = `null`;
749
+ if (node.props.length) {
750
+ const { props, directives } = compilerDom.buildProps(
751
+ node,
752
+ context,
753
+ void 0,
754
+ true,
755
+ isDynamicComponent
756
+ );
757
+ if (props || directives.length) {
758
+ propsExp = buildSSRProps(props, directives, context);
759
+ }
760
+ }
761
+ const wipEntries = [];
762
+ wipMap.set(node, wipEntries);
763
+ const buildSSRSlotFn = (props, _vForExp, children, loc) => {
764
+ const param0 = props && compilerDom.stringifyExpression(props) || `_`;
765
+ const fn = compilerDom.createFunctionExpression(
766
+ [param0, `_push`, `_parent`, `_scopeId`],
767
+ void 0,
768
+ // no return, assign body later
769
+ true,
770
+ // newline
771
+ true,
772
+ // isSlot
773
+ loc
774
+ );
775
+ wipEntries.push({
776
+ type: WIP_SLOT,
777
+ fn,
778
+ children,
779
+ // also collect the corresponding vnode branch built earlier
780
+ vnodeBranch: vnodeBranches[wipEntries.length]
781
+ });
782
+ return fn;
783
+ };
784
+ const slots = node.children.length ? compilerDom.buildSlots(node, context, buildSSRSlotFn).slots : `null`;
785
+ if (typeof component !== "string") {
786
+ node.ssrCodegenNode = compilerDom.createCallExpression(
787
+ context.helper(SSR_RENDER_VNODE),
788
+ [
789
+ `_push`,
790
+ compilerDom.createCallExpression(context.helper(compilerDom.CREATE_VNODE), [
791
+ component,
792
+ propsExp,
793
+ slots
794
+ ]),
795
+ `_parent`
796
+ ]
797
+ );
798
+ } else {
799
+ node.ssrCodegenNode = compilerDom.createCallExpression(
800
+ context.helper(SSR_RENDER_COMPONENT),
801
+ [component, propsExp, slots, `_parent`]
802
+ );
803
+ }
804
+ };
805
+ };
806
+ function ssrProcessComponent(node, context, parent) {
807
+ const component = componentTypeMap.get(node);
808
+ if (!node.ssrCodegenNode) {
809
+ if (component === compilerDom.TELEPORT) {
810
+ return ssrProcessTeleport(node, context);
811
+ } else if (component === compilerDom.SUSPENSE) {
812
+ return ssrProcessSuspense(node, context);
813
+ } else if (component === compilerDom.TRANSITION_GROUP) {
814
+ return ssrProcessTransitionGroup(node, context);
815
+ } else {
816
+ if (parent.type === WIP_SLOT) {
817
+ context.pushStringPart(``);
818
+ }
819
+ if (component === compilerDom.TRANSITION) {
820
+ return ssrProcessTransition(node, context);
821
+ }
822
+ processChildren(node, context);
823
+ }
824
+ } else {
825
+ const wipEntries = wipMap.get(node) || [];
826
+ for (let i = 0; i < wipEntries.length; i++) {
827
+ const { fn, vnodeBranch } = wipEntries[i];
828
+ fn.body = compilerDom.createIfStatement(
829
+ compilerDom.createSimpleExpression(`_push`, false),
830
+ processChildrenAsStatement(
831
+ wipEntries[i],
832
+ context,
833
+ false,
834
+ true
835
+ ),
836
+ vnodeBranch
837
+ );
838
+ }
839
+ if (context.withSlotScopeId) {
840
+ node.ssrCodegenNode.arguments.push(`_scopeId`);
841
+ }
842
+ if (typeof component === "string") {
843
+ context.pushStatement(
844
+ compilerDom.createCallExpression(`_push`, [node.ssrCodegenNode])
845
+ );
846
+ } else {
847
+ context.pushStatement(node.ssrCodegenNode);
848
+ }
849
+ }
850
+ }
851
+ const rawOptionsMap = /* @__PURE__ */ new WeakMap();
852
+ const [baseNodeTransforms, baseDirectiveTransforms] = compilerDom.getBaseTransformPreset(true);
853
+ const vnodeNodeTransforms = [...baseNodeTransforms, ...compilerDom.DOMNodeTransforms];
854
+ const vnodeDirectiveTransforms = {
855
+ ...baseDirectiveTransforms,
856
+ ...compilerDom.DOMDirectiveTransforms
857
+ };
858
+ function createVNodeSlotBranch(slotProps, vFor, children, parentContext) {
859
+ const rawOptions = rawOptionsMap.get(parentContext.root);
860
+ const subOptions = {
861
+ ...rawOptions,
862
+ // overwrite with vnode-based transforms
863
+ nodeTransforms: [
864
+ ...vnodeNodeTransforms,
865
+ ...rawOptions.nodeTransforms || []
866
+ ],
867
+ directiveTransforms: {
868
+ ...vnodeDirectiveTransforms,
869
+ ...rawOptions.directiveTransforms || {}
870
+ }
871
+ };
872
+ const wrapperProps = [];
873
+ if (slotProps) {
874
+ wrapperProps.push({
875
+ type: 7,
876
+ name: "slot",
877
+ exp: slotProps,
878
+ arg: void 0,
879
+ modifiers: [],
880
+ loc: compilerDom.locStub
881
+ });
882
+ }
883
+ if (vFor) {
884
+ wrapperProps.push(shared.extend({}, vFor));
885
+ }
886
+ const wrapperNode = {
887
+ type: 1,
888
+ ns: 0,
889
+ tag: "template",
890
+ tagType: 3,
891
+ props: wrapperProps,
892
+ children,
893
+ loc: compilerDom.locStub,
894
+ codegenNode: void 0
895
+ };
896
+ subTransform(wrapperNode, subOptions, parentContext);
897
+ return compilerDom.createReturnStatement(children);
898
+ }
899
+ function subTransform(node, options, parentContext) {
900
+ const childRoot = compilerDom.createRoot([node]);
901
+ const childContext = compilerDom.createTransformContext(childRoot, options);
902
+ childContext.ssr = false;
903
+ childContext.scopes = { ...parentContext.scopes };
904
+ childContext.identifiers = { ...parentContext.identifiers };
905
+ childContext.imports = parentContext.imports;
906
+ compilerDom.traverseNode(childRoot, childContext);
907
+ ["helpers", "components", "directives"].forEach((key) => {
908
+ childContext[key].forEach((value, helperKey) => {
909
+ if (key === "helpers") {
910
+ const parentCount = parentContext.helpers.get(helperKey);
911
+ if (parentCount === void 0) {
912
+ parentContext.helpers.set(helperKey, value);
913
+ } else {
914
+ parentContext.helpers.set(helperKey, value + parentCount);
915
+ }
916
+ } else {
917
+ parentContext[key].add(value);
918
+ }
919
+ });
920
+ });
921
+ }
922
+ function clone(v) {
923
+ if (shared.isArray(v)) {
924
+ return v.map(clone);
925
+ } else if (shared.isPlainObject(v)) {
926
+ const res = {};
927
+ for (const key in v) {
928
+ res[key] = clone(v[key]);
929
+ }
930
+ return res;
931
+ } else {
932
+ return v;
933
+ }
934
+ }
935
+
936
+ function ssrCodegenTransform(ast, options) {
937
+ const context = createSSRTransformContext(ast, options);
938
+ if (options.ssrCssVars) {
939
+ const cssContext = compilerDom.createTransformContext(compilerDom.createRoot([]), options);
940
+ const varsExp = compilerDom.processExpression(
941
+ compilerDom.createSimpleExpression(options.ssrCssVars, false),
942
+ cssContext
943
+ );
944
+ context.body.push(
945
+ compilerDom.createCompoundExpression([`const _cssVars = { style: `, varsExp, `}`])
946
+ );
947
+ Array.from(cssContext.helpers.keys()).forEach((helper) => {
948
+ ast.helpers.add(helper);
949
+ });
950
+ }
951
+ const isFragment = ast.children.length > 1 && ast.children.some((c) => !compilerDom.isText(c));
952
+ processChildren(ast, context, isFragment);
953
+ ast.codegenNode = compilerDom.createBlockStatement(context.body);
954
+ ast.ssrHelpers = Array.from(
955
+ /* @__PURE__ */ new Set([
956
+ ...Array.from(ast.helpers).filter((h) => h in ssrHelpers),
957
+ ...context.helpers
958
+ ])
959
+ );
960
+ ast.helpers = new Set(Array.from(ast.helpers).filter((h) => !(h in ssrHelpers)));
961
+ }
962
+ function createSSRTransformContext(root, options, helpers = /* @__PURE__ */ new Set(), withSlotScopeId = false) {
963
+ const body = [];
964
+ let currentString = null;
965
+ return {
966
+ root,
967
+ options,
968
+ body,
969
+ helpers,
970
+ withSlotScopeId,
971
+ onError: options.onError || ((e) => {
972
+ throw e;
973
+ }),
974
+ helper(name) {
975
+ helpers.add(name);
976
+ return name;
977
+ },
978
+ pushStringPart(part) {
979
+ if (!currentString) {
980
+ const currentCall = compilerDom.createCallExpression(`_push`);
981
+ body.push(currentCall);
982
+ currentString = compilerDom.createTemplateLiteral([]);
983
+ currentCall.arguments.push(currentString);
984
+ }
985
+ const bufferedElements = currentString.elements;
986
+ const lastItem = bufferedElements[bufferedElements.length - 1];
987
+ if (shared.isString(part) && shared.isString(lastItem)) {
988
+ bufferedElements[bufferedElements.length - 1] += part;
989
+ } else {
990
+ bufferedElements.push(part);
991
+ }
992
+ },
993
+ pushStatement(statement) {
994
+ currentString = null;
995
+ body.push(statement);
996
+ }
997
+ };
998
+ }
999
+ function createChildContext(parent, withSlotScopeId = parent.withSlotScopeId) {
1000
+ return createSSRTransformContext(
1001
+ parent.root,
1002
+ parent.options,
1003
+ parent.helpers,
1004
+ withSlotScopeId
1005
+ );
1006
+ }
1007
+ function processChildren(parent, context, asFragment = false, disableNestedFragments = false, disableComment = false) {
1008
+ if (asFragment) {
1009
+ context.pushStringPart(`<!--[-->`);
1010
+ }
1011
+ const { children } = parent;
1012
+ for (let i = 0; i < children.length; i++) {
1013
+ const child = children[i];
1014
+ switch (child.type) {
1015
+ case 1:
1016
+ switch (child.tagType) {
1017
+ case 0:
1018
+ ssrProcessElement(child, context);
1019
+ break;
1020
+ case 1:
1021
+ ssrProcessComponent(child, context, parent);
1022
+ break;
1023
+ case 2:
1024
+ ssrProcessSlotOutlet(child, context);
1025
+ break;
1026
+ case 3:
1027
+ break;
1028
+ default:
1029
+ context.onError(
1030
+ createSSRCompilerError(
1031
+ 67,
1032
+ child.loc
1033
+ )
1034
+ );
1035
+ const exhaustiveCheck2 = child;
1036
+ return exhaustiveCheck2;
1037
+ }
1038
+ break;
1039
+ case 2:
1040
+ context.pushStringPart(shared.escapeHtml(child.content));
1041
+ break;
1042
+ case 3:
1043
+ if (!disableComment) {
1044
+ context.pushStringPart(`<!--${child.content}-->`);
1045
+ }
1046
+ break;
1047
+ case 5:
1048
+ context.pushStringPart(
1049
+ compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [
1050
+ child.content
1051
+ ])
1052
+ );
1053
+ break;
1054
+ case 9:
1055
+ ssrProcessIf(child, context, disableNestedFragments, disableComment);
1056
+ break;
1057
+ case 11:
1058
+ ssrProcessFor(child, context, disableNestedFragments);
1059
+ break;
1060
+ case 10:
1061
+ break;
1062
+ case 12:
1063
+ case 8:
1064
+ break;
1065
+ default:
1066
+ context.onError(
1067
+ createSSRCompilerError(
1068
+ 67,
1069
+ child.loc
1070
+ )
1071
+ );
1072
+ const exhaustiveCheck = child;
1073
+ return exhaustiveCheck;
1074
+ }
1075
+ }
1076
+ if (asFragment) {
1077
+ context.pushStringPart(`<!--]-->`);
1078
+ }
1079
+ }
1080
+ function processChildrenAsStatement(parent, parentContext, asFragment = false, withSlotScopeId = parentContext.withSlotScopeId) {
1081
+ const childContext = createChildContext(parentContext, withSlotScopeId);
1082
+ processChildren(parent, childContext, asFragment);
1083
+ return compilerDom.createBlockStatement(childContext.body);
1084
+ }
1085
+
1086
+ const ssrTransformModel = (dir, node, context) => {
1087
+ const model = dir.exp;
1088
+ function checkDuplicatedValue() {
1089
+ const value = compilerDom.findProp(node, "value");
1090
+ if (value) {
1091
+ context.onError(
1092
+ compilerDom.createDOMCompilerError(
1093
+ 61,
1094
+ value.loc
1095
+ )
1096
+ );
1097
+ }
1098
+ }
1099
+ const processSelectChildren = (children) => {
1100
+ children.forEach((child) => {
1101
+ if (child.type === 1) {
1102
+ processOption(child);
1103
+ } else if (child.type === 11) {
1104
+ processSelectChildren(child.children);
1105
+ } else if (child.type === 9) {
1106
+ child.branches.forEach((b) => processSelectChildren(b.children));
1107
+ }
1108
+ });
1109
+ };
1110
+ function processOption(plainNode) {
1111
+ if (plainNode.tag === "option") {
1112
+ if (plainNode.props.findIndex((p) => p.name === "selected") === -1) {
1113
+ const value = findValueBinding(plainNode);
1114
+ plainNode.ssrCodegenNode.elements.push(
1115
+ compilerDom.createConditionalExpression(
1116
+ compilerDom.createCallExpression(context.helper(SSR_INCLUDE_BOOLEAN_ATTR), [
1117
+ compilerDom.createConditionalExpression(
1118
+ compilerDom.createCallExpression(`Array.isArray`, [model]),
1119
+ compilerDom.createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [
1120
+ model,
1121
+ value
1122
+ ]),
1123
+ compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [
1124
+ model,
1125
+ value
1126
+ ])
1127
+ )
1128
+ ]),
1129
+ compilerDom.createSimpleExpression(" selected", true),
1130
+ compilerDom.createSimpleExpression("", true),
1131
+ false
1132
+ )
1133
+ );
1134
+ }
1135
+ } else if (plainNode.tag === "optgroup") {
1136
+ processSelectChildren(plainNode.children);
1137
+ }
1138
+ }
1139
+ if (node.tagType === 0) {
1140
+ const res = { props: [] };
1141
+ if (node.tag === "input") {
1142
+ const defaultProps = [
1143
+ // default value binding for text type inputs
1144
+ compilerDom.createObjectProperty(`value`, model)
1145
+ ];
1146
+ const type = compilerDom.findProp(node, "type");
1147
+ if (type) {
1148
+ const value = findValueBinding(node);
1149
+ if (type.type === 7) {
1150
+ res.ssrTagParts = [
1151
+ compilerDom.createCallExpression(context.helper(SSR_RENDER_DYNAMIC_MODEL), [
1152
+ type.exp,
1153
+ model,
1154
+ value
1155
+ ])
1156
+ ];
1157
+ } else if (type.value) {
1158
+ switch (type.value.content) {
1159
+ case "radio":
1160
+ res.props = [
1161
+ compilerDom.createObjectProperty(
1162
+ `checked`,
1163
+ compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [
1164
+ model,
1165
+ value
1166
+ ])
1167
+ )
1168
+ ];
1169
+ break;
1170
+ case "checkbox":
1171
+ const trueValueBinding = compilerDom.findProp(node, "true-value");
1172
+ if (trueValueBinding) {
1173
+ const trueValue = trueValueBinding.type === 6 ? JSON.stringify(trueValueBinding.value.content) : trueValueBinding.exp;
1174
+ res.props = [
1175
+ compilerDom.createObjectProperty(
1176
+ `checked`,
1177
+ compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [
1178
+ model,
1179
+ trueValue
1180
+ ])
1181
+ )
1182
+ ];
1183
+ } else {
1184
+ res.props = [
1185
+ compilerDom.createObjectProperty(
1186
+ `checked`,
1187
+ compilerDom.createConditionalExpression(
1188
+ compilerDom.createCallExpression(`Array.isArray`, [model]),
1189
+ compilerDom.createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [
1190
+ model,
1191
+ value
1192
+ ]),
1193
+ model
1194
+ )
1195
+ )
1196
+ ];
1197
+ }
1198
+ break;
1199
+ case "file":
1200
+ context.onError(
1201
+ compilerDom.createDOMCompilerError(
1202
+ 60,
1203
+ dir.loc
1204
+ )
1205
+ );
1206
+ break;
1207
+ default:
1208
+ checkDuplicatedValue();
1209
+ res.props = defaultProps;
1210
+ break;
1211
+ }
1212
+ }
1213
+ } else if (compilerDom.hasDynamicKeyVBind(node)) ; else {
1214
+ checkDuplicatedValue();
1215
+ res.props = defaultProps;
1216
+ }
1217
+ } else if (node.tag === "textarea") {
1218
+ checkDuplicatedValue();
1219
+ node.children = [compilerDom.createInterpolation(model, model.loc)];
1220
+ } else if (node.tag === "select") {
1221
+ processSelectChildren(node.children);
1222
+ } else {
1223
+ context.onError(
1224
+ compilerDom.createDOMCompilerError(
1225
+ 58,
1226
+ dir.loc
1227
+ )
1228
+ );
1229
+ }
1230
+ return res;
1231
+ } else {
1232
+ return compilerDom.transformModel(dir, node, context);
1233
+ }
1234
+ };
1235
+ function findValueBinding(node) {
1236
+ const valueBinding = compilerDom.findProp(node, "value");
1237
+ return valueBinding ? valueBinding.type === 7 ? valueBinding.exp : compilerDom.createSimpleExpression(valueBinding.value.content, true) : compilerDom.createSimpleExpression(`null`, false);
1238
+ }
1239
+
1240
+ const ssrTransformShow = (dir, node, context) => {
1241
+ if (!dir.exp) {
1242
+ context.onError(
1243
+ compilerDom.createDOMCompilerError(62)
1244
+ );
1245
+ }
1246
+ return {
1247
+ props: [
1248
+ compilerDom.createObjectProperty(
1249
+ `style`,
1250
+ compilerDom.createConditionalExpression(
1251
+ dir.exp,
1252
+ compilerDom.createSimpleExpression(`null`, false),
1253
+ compilerDom.createObjectExpression([
1254
+ compilerDom.createObjectProperty(
1255
+ `display`,
1256
+ compilerDom.createSimpleExpression(`none`, true)
1257
+ )
1258
+ ]),
1259
+ false
1260
+ )
1261
+ )
1262
+ ]
1263
+ };
1264
+ };
1265
+
1266
+ const filterChild = (node) => node.children.filter((n) => !compilerDom.isCommentOrWhitespace(n));
1267
+ const hasSingleChild = (node) => filterChild(node).length === 1;
1268
+ const ssrInjectFallthroughAttrs = (node, context) => {
1269
+ if (node.type === 0) {
1270
+ context.identifiers._attrs = 1;
1271
+ }
1272
+ if (node.type === 1 && node.tagType === 1 && (node.tag === "transition" || node.tag === "Transition" || node.tag === "KeepAlive" || node.tag === "keep-alive")) {
1273
+ const rootChildren = filterChild(context.root);
1274
+ if (rootChildren.length === 1 && rootChildren[0] === node) {
1275
+ if (hasSingleChild(node)) {
1276
+ injectFallthroughAttrs(node.children[0]);
1277
+ }
1278
+ return;
1279
+ }
1280
+ }
1281
+ const parent = context.parent;
1282
+ if (!parent || parent.type !== 0) {
1283
+ return;
1284
+ }
1285
+ if (node.type === 10 && hasSingleChild(node)) {
1286
+ let hasEncounteredIf = false;
1287
+ for (const c of filterChild(parent)) {
1288
+ if (c.type === 9 || c.type === 1 && compilerDom.findDir(c, "if")) {
1289
+ if (hasEncounteredIf) return;
1290
+ hasEncounteredIf = true;
1291
+ } else if (
1292
+ // node before v-if
1293
+ !hasEncounteredIf || // non else nodes
1294
+ !(c.type === 1 && compilerDom.findDir(c, /else/, true))
1295
+ ) {
1296
+ return;
1297
+ }
1298
+ }
1299
+ injectFallthroughAttrs(node.children[0]);
1300
+ } else if (hasSingleChild(parent)) {
1301
+ injectFallthroughAttrs(node);
1302
+ }
1303
+ };
1304
+ function injectFallthroughAttrs(node) {
1305
+ if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) {
1306
+ node.props.push({
1307
+ type: 7,
1308
+ name: "bind",
1309
+ arg: void 0,
1310
+ exp: compilerDom.createSimpleExpression(`_attrs`, false),
1311
+ modifiers: [],
1312
+ loc: compilerDom.locStub
1313
+ });
1314
+ }
1315
+ }
1316
+
1317
+ const ssrInjectCssVars = (node, context) => {
1318
+ if (!context.ssrCssVars) {
1319
+ return;
1320
+ }
1321
+ if (node.type === 0) {
1322
+ context.identifiers._cssVars = 1;
1323
+ }
1324
+ const parent = context.parent;
1325
+ if (!parent || parent.type !== 0) {
1326
+ return;
1327
+ }
1328
+ if (node.type === 10) {
1329
+ for (const child of node.children) {
1330
+ injectCssVars(child);
1331
+ }
1332
+ } else {
1333
+ injectCssVars(node);
1334
+ }
1335
+ };
1336
+ function injectCssVars(node) {
1337
+ if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) {
1338
+ if (node.tag === "suspense" || node.tag === "Suspense") {
1339
+ for (const child of node.children) {
1340
+ if (child.type === 1 && child.tagType === 3) {
1341
+ child.children.forEach(injectCssVars);
1342
+ } else {
1343
+ injectCssVars(child);
1344
+ }
1345
+ }
1346
+ } else {
1347
+ node.props.push({
1348
+ type: 7,
1349
+ name: "bind",
1350
+ arg: void 0,
1351
+ exp: compilerDom.createSimpleExpression(`_cssVars`, false),
1352
+ modifiers: [],
1353
+ loc: compilerDom.locStub
1354
+ });
1355
+ }
1356
+ }
1357
+ }
1358
+
1359
+ function compile(source, options = {}) {
1360
+ options = {
1361
+ ...options,
1362
+ ...compilerDom.parserOptions,
1363
+ ssr: true,
1364
+ inSSR: true,
1365
+ scopeId: options.mode === "function" ? null : options.scopeId,
1366
+ // always prefix since compiler-ssr doesn't have size concern
1367
+ prefixIdentifiers: true,
1368
+ // disable optimizations that are unnecessary for ssr
1369
+ cacheHandlers: false,
1370
+ hoistStatic: false
1371
+ };
1372
+ const ast = typeof source === "string" ? compilerDom.baseParse(source, options) : source;
1373
+ rawOptionsMap.set(ast, options);
1374
+ compilerDom.transform(ast, {
1375
+ ...options,
1376
+ hoistStatic: false,
1377
+ nodeTransforms: [
1378
+ compilerDom.transformVBindShorthand,
1379
+ ssrTransformIf,
1380
+ ssrTransformFor,
1381
+ compilerDom.trackVForSlotScopes,
1382
+ compilerDom.transformExpression,
1383
+ ssrTransformSlotOutlet,
1384
+ ssrInjectFallthroughAttrs,
1385
+ ssrInjectCssVars,
1386
+ ssrTransformElement,
1387
+ ssrTransformComponent,
1388
+ compilerDom.trackSlotScopes,
1389
+ compilerDom.transformStyle,
1390
+ ...options.nodeTransforms || []
1391
+ // user transforms
1392
+ ],
1393
+ directiveTransforms: {
1394
+ // reusing core v-bind
1395
+ bind: compilerDom.transformBind,
1396
+ on: compilerDom.transformOn,
1397
+ // model and show have dedicated SSR handling
1398
+ model: ssrTransformModel,
1399
+ show: ssrTransformShow,
1400
+ // the following are ignored during SSR
1401
+ // on: noopDirectiveTransform,
1402
+ cloak: compilerDom.noopDirectiveTransform,
1403
+ once: compilerDom.noopDirectiveTransform,
1404
+ memo: compilerDom.noopDirectiveTransform,
1405
+ ...options.directiveTransforms || {}
1406
+ // user transforms
1407
+ }
1408
+ });
1409
+ ssrCodegenTransform(ast, options);
1410
+ return compilerDom.generate(ast, options);
1411
+ }
1412
+
1413
+ exports.compile = compile;