@vue/compiler-ssr 3.6.0-alpha.7 → 3.6.0-beta.10

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.
@@ -1,15 +1,15 @@
1
1
  /**
2
- * @vue/compiler-ssr v3.6.0-alpha.7
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
-
2
+ * @vue/compiler-ssr v3.6.0-beta.10
3
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
+ * @license MIT
5
+ **/
6
+ Object.defineProperties(exports, {
7
+ __esModule: { value: true },
8
+ [Symbol.toStringTag]: { value: "Module" }
9
+ });
10
+ let _vue_compiler_dom = require("@vue/compiler-dom");
11
+ let _vue_shared = require("@vue/shared");
12
+ //#region packages/compiler-ssr/src/runtimeHelpers.ts
13
13
  const SSR_INTERPOLATE = Symbol(`ssrInterpolate`);
14
14
  const SSR_RENDER_VNODE = Symbol(`ssrRenderVNode`);
15
15
  const SSR_RENDER_COMPONENT = Symbol(`ssrRenderComponent`);
@@ -21,1380 +21,838 @@ const SSR_RENDER_ATTRS = Symbol(`ssrRenderAttrs`);
21
21
  const SSR_RENDER_ATTR = Symbol(`ssrRenderAttr`);
22
22
  const SSR_RENDER_DYNAMIC_ATTR = Symbol(`ssrRenderDynamicAttr`);
23
23
  const SSR_RENDER_LIST = Symbol(`ssrRenderList`);
24
- const SSR_INCLUDE_BOOLEAN_ATTR = Symbol(
25
- `ssrIncludeBooleanAttr`
26
- );
24
+ const SSR_INCLUDE_BOOLEAN_ATTR = Symbol(`ssrIncludeBooleanAttr`);
27
25
  const SSR_LOOSE_EQUAL = Symbol(`ssrLooseEqual`);
28
26
  const SSR_LOOSE_CONTAIN = Symbol(`ssrLooseContain`);
29
- const SSR_RENDER_DYNAMIC_MODEL = Symbol(
30
- `ssrRenderDynamicModel`
31
- );
32
- const SSR_GET_DYNAMIC_MODEL_PROPS = Symbol(
33
- `ssrGetDynamicModelProps`
34
- );
27
+ const SSR_RENDER_DYNAMIC_MODEL = Symbol(`ssrRenderDynamicModel`);
28
+ const SSR_GET_DYNAMIC_MODEL_PROPS = Symbol(`ssrGetDynamicModelProps`);
35
29
  const SSR_RENDER_TELEPORT = Symbol(`ssrRenderTeleport`);
36
30
  const SSR_RENDER_SUSPENSE = Symbol(`ssrRenderSuspense`);
37
31
  const SSR_GET_DIRECTIVE_PROPS = Symbol(`ssrGetDirectiveProps`);
38
32
  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`
33
+ [SSR_INTERPOLATE]: `ssrInterpolate`,
34
+ [SSR_RENDER_VNODE]: `ssrRenderVNode`,
35
+ [SSR_RENDER_COMPONENT]: `ssrRenderComponent`,
36
+ [SSR_RENDER_SLOT]: `ssrRenderSlot`,
37
+ [SSR_RENDER_SLOT_INNER]: `ssrRenderSlotInner`,
38
+ [SSR_RENDER_CLASS]: `ssrRenderClass`,
39
+ [SSR_RENDER_STYLE]: `ssrRenderStyle`,
40
+ [SSR_RENDER_ATTRS]: `ssrRenderAttrs`,
41
+ [SSR_RENDER_ATTR]: `ssrRenderAttr`,
42
+ [SSR_RENDER_DYNAMIC_ATTR]: `ssrRenderDynamicAttr`,
43
+ [SSR_RENDER_LIST]: `ssrRenderList`,
44
+ [SSR_INCLUDE_BOOLEAN_ATTR]: `ssrIncludeBooleanAttr`,
45
+ [SSR_LOOSE_EQUAL]: `ssrLooseEqual`,
46
+ [SSR_LOOSE_CONTAIN]: `ssrLooseContain`,
47
+ [SSR_RENDER_DYNAMIC_MODEL]: `ssrRenderDynamicModel`,
48
+ [SSR_GET_DYNAMIC_MODEL_PROPS]: `ssrGetDynamicModelProps`,
49
+ [SSR_RENDER_TELEPORT]: `ssrRenderTeleport`,
50
+ [SSR_RENDER_SUSPENSE]: `ssrRenderSuspense`,
51
+ [SSR_GET_DIRECTIVE_PROPS]: `ssrGetDirectiveProps`
58
52
  };
59
- compilerDom.registerRuntimeHelpers(ssrHelpers);
60
-
61
- const ssrTransformIf = compilerDom.createStructuralDirectiveTransform(
62
- /^(?:if|else|else-if)$/,
63
- compilerDom.processIf
64
- );
53
+ (0, _vue_compiler_dom.registerRuntimeHelpers)(ssrHelpers);
54
+ //#endregion
55
+ //#region packages/compiler-ssr/src/transforms/ssrVIf.ts
56
+ const ssrTransformIf = (0, _vue_compiler_dom.createStructuralDirectiveTransform)(/^(?:if|else|else-if)$/, _vue_compiler_dom.processIf);
65
57
  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
- }
58
+ const [rootBranch] = node.branches;
59
+ const ifStatement = (0, _vue_compiler_dom.createIfStatement)(rootBranch.condition, processIfBranch(rootBranch, context, disableNestedFragments));
60
+ context.pushStatement(ifStatement);
61
+ let currentIf = ifStatement;
62
+ for (let i = 1; i < node.branches.length; i++) {
63
+ const branch = node.branches[i];
64
+ const branchBlockStatement = processIfBranch(branch, context, disableNestedFragments);
65
+ if (branch.condition) currentIf = currentIf.alternate = (0, _vue_compiler_dom.createIfStatement)(branch.condition, branchBlockStatement);
66
+ else currentIf.alternate = branchBlockStatement;
67
+ }
68
+ if (!currentIf.alternate && !disableComment) currentIf.alternate = (0, _vue_compiler_dom.createBlockStatement)([(0, _vue_compiler_dom.createCallExpression)(`_push`, ["`<!---->`"])]);
94
69
  }
95
70
  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);
71
+ const { children } = branch;
72
+ return processChildrenAsStatement(branch, context, !disableNestedFragments && (children.length !== 1 || children[0].type !== 1) && !(children.length === 1 && children[0].type === 11));
100
73
  }
101
-
102
- const ssrTransformFor = compilerDom.createStructuralDirectiveTransform("for", compilerDom.processFor);
74
+ //#endregion
75
+ //#region packages/compiler-ssr/src/transforms/ssrVFor.ts
76
+ const ssrTransformFor = (0, _vue_compiler_dom.createStructuralDirectiveTransform)("for", _vue_compiler_dom.processFor);
103
77
  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
-
78
+ const needFragmentWrapper = !disableNestedFragments && (node.children.length !== 1 || node.children[0].type !== 1);
79
+ const renderLoop = (0, _vue_compiler_dom.createFunctionExpression)((0, _vue_compiler_dom.createForLoopParams)(node.parseResult));
80
+ renderLoop.body = processChildrenAsStatement(node, context, needFragmentWrapper);
81
+ if (!disableNestedFragments) context.pushStringPart(`<!--[-->`);
82
+ context.pushStatement((0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_RENDER_LIST), [node.source, renderLoop]));
83
+ if (!disableNestedFragments) context.pushStringPart(`<!--]-->`);
84
+ }
85
+ //#endregion
86
+ //#region packages/compiler-ssr/src/transforms/ssrTransformSlotOutlet.ts
127
87
  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
- }
88
+ if ((0, _vue_compiler_dom.isSlotOutlet)(node)) {
89
+ const { slotName, slotProps } = (0, _vue_compiler_dom.processSlotOutlet)(node, context);
90
+ const args = [
91
+ `_ctx.$slots`,
92
+ slotName,
93
+ slotProps || `{}`,
94
+ `null`,
95
+ `_push`,
96
+ `_parent`
97
+ ];
98
+ if (context.scopeId && context.slotted !== false) args.push(`"${context.scopeId}-s"`);
99
+ let method = SSR_RENDER_SLOT;
100
+ let parent = context.parent;
101
+ if (parent) {
102
+ const children = parent.children;
103
+ if (parent.type === 10) parent = context.grandParent;
104
+ let componentType;
105
+ if (parent.type === 1 && parent.tagType === 1 && ((componentType = (0, _vue_compiler_dom.resolveComponentType)(parent, context, true)) === _vue_compiler_dom.TRANSITION || componentType === _vue_compiler_dom.TRANSITION_GROUP) && children.filter((c) => c.type === 1).length === 1) {
106
+ method = SSR_RENDER_SLOT_INNER;
107
+ if (!(context.scopeId && context.slotted !== false)) args.push("null");
108
+ args.push("true");
109
+ }
110
+ }
111
+ node.ssrCodegenNode = (0, _vue_compiler_dom.createCallExpression)(context.helper(method), args);
112
+ }
160
113
  };
161
114
  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
-
115
+ const renderCall = node.ssrCodegenNode;
116
+ if (node.children.length) {
117
+ const fallbackRenderFn = (0, _vue_compiler_dom.createFunctionExpression)([]);
118
+ fallbackRenderFn.body = processChildrenAsStatement(node, context);
119
+ renderCall.arguments[3] = fallbackRenderFn;
120
+ }
121
+ if (context.withSlotScopeId) {
122
+ const slotScopeId = renderCall.arguments[6];
123
+ renderCall.arguments[6] = slotScopeId ? `${slotScopeId} + _scopeId` : `_scopeId`;
124
+ }
125
+ context.pushStatement(node.ssrCodegenNode);
126
+ }
127
+ //#endregion
128
+ //#region packages/compiler-ssr/src/errors.ts
175
129
  function createSSRCompilerError(code, loc) {
176
- return compilerDom.createCompilerError(code, loc, SSRErrorMessages);
130
+ return (0, _vue_compiler_dom.createCompilerError)(code, loc, SSRErrorMessages);
177
131
  }
178
132
  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.`
133
+ [65]: `Unsafe attribute name for SSR.`,
134
+ [66]: `Missing the 'to' prop on teleport element.`,
135
+ [67]: `Invalid AST node during SSR transform.`
182
136
  };
183
-
137
+ //#endregion
138
+ //#region packages/compiler-ssr/src/transforms/ssrTransformTeleport.ts
184
139
  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
-
140
+ const targetProp = (0, _vue_compiler_dom.findProp)(node, "to");
141
+ if (!targetProp) {
142
+ context.onError(createSSRCompilerError(66, node.loc));
143
+ return;
144
+ }
145
+ let target;
146
+ if (targetProp.type === 6) target = targetProp.value && (0, _vue_compiler_dom.createSimpleExpression)(targetProp.value.content, true);
147
+ else target = targetProp.exp;
148
+ if (!target) {
149
+ context.onError(createSSRCompilerError(66, targetProp.loc));
150
+ return;
151
+ }
152
+ const disabledProp = (0, _vue_compiler_dom.findProp)(node, "disabled", false, true);
153
+ const disabled = disabledProp ? disabledProp.type === 6 ? `true` : disabledProp.exp || `false` : `false`;
154
+ const contentRenderFn = (0, _vue_compiler_dom.createFunctionExpression)([`_push`], void 0, true, false, node.loc);
155
+ contentRenderFn.body = processChildrenAsStatement(node, context);
156
+ context.pushStatement((0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_RENDER_TELEPORT), [
157
+ `_push`,
158
+ contentRenderFn,
159
+ target,
160
+ disabled,
161
+ `_parent`
162
+ ]));
163
+ }
164
+ //#endregion
165
+ //#region packages/compiler-ssr/src/transforms/ssrTransformSuspense.ts
237
166
  const wipMap$3 = /* @__PURE__ */ new WeakMap();
238
167
  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
- };
168
+ return () => {
169
+ if (node.children.length) {
170
+ const wipEntry = {
171
+ slotsExp: null,
172
+ wipSlots: []
173
+ };
174
+ wipMap$3.set(node, wipEntry);
175
+ wipEntry.slotsExp = (0, _vue_compiler_dom.buildSlots)(node, context, (_props, _vForExp, children, loc) => {
176
+ const fn = (0, _vue_compiler_dom.createFunctionExpression)([], void 0, true, false, loc);
177
+ wipEntry.wipSlots.push({
178
+ fn,
179
+ children
180
+ });
181
+ return fn;
182
+ }).slots;
183
+ }
184
+ };
270
185
  }
271
186
  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
-
187
+ const wipEntry = wipMap$3.get(node);
188
+ if (!wipEntry) return;
189
+ const { slotsExp, wipSlots } = wipEntry;
190
+ for (let i = 0; i < wipSlots.length; i++) {
191
+ const slot = wipSlots[i];
192
+ slot.fn.body = processChildrenAsStatement(slot, context);
193
+ }
194
+ context.pushStatement((0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_RENDER_SUSPENSE), [`_push`, slotsExp]));
195
+ }
196
+ //#endregion
197
+ //#region packages/compiler-ssr/src/transforms/ssrTransformElement.ts
289
198
  const rawChildrenMap = /* @__PURE__ */ new WeakMap();
290
199
  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
- };
200
+ if (node.type !== 1 || node.tagType !== 0) return;
201
+ return function ssrPostTransformElement() {
202
+ const openTag = [`<${node.tag}`];
203
+ const needTagForRuntime = node.tag === "textarea" || node.tag.indexOf("-") > 0;
204
+ const hasDynamicVBind = (0, _vue_compiler_dom.hasDynamicKeyVBind)(node);
205
+ const hasCustomDir = node.props.some((p) => p.type === 7 && !(0, _vue_shared.isBuiltInDirective)(p.name));
206
+ const vShowPropIndex = node.props.findIndex((i) => i.type === 7 && i.name === "show");
207
+ if (vShowPropIndex !== -1) {
208
+ const vShowProp = node.props[vShowPropIndex];
209
+ node.props.splice(vShowPropIndex, 1);
210
+ node.props.push(vShowProp);
211
+ }
212
+ const needMergeProps = hasDynamicVBind || hasCustomDir;
213
+ if (needMergeProps) {
214
+ const { props, directives } = (0, _vue_compiler_dom.buildProps)(node, context, node.props, false, false, true);
215
+ if (props || directives.length) {
216
+ const mergedProps = buildSSRProps(props, directives, context);
217
+ const propsExp = (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_RENDER_ATTRS), [mergedProps]);
218
+ if (node.tag === "textarea") {
219
+ const existingText = node.children[0];
220
+ if (!hasContentOverrideDirective(node) && (!existingText || existingText.type !== 5)) {
221
+ const tempId = `_temp${context.temps++}`;
222
+ propsExp.arguments = [(0, _vue_compiler_dom.createAssignmentExpression)((0, _vue_compiler_dom.createSimpleExpression)(tempId, false), mergedProps)];
223
+ rawChildrenMap.set(node, (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_INTERPOLATE), [(0, _vue_compiler_dom.createConditionalExpression)((0, _vue_compiler_dom.createSimpleExpression)(`"value" in ${tempId}`, false), (0, _vue_compiler_dom.createSimpleExpression)(`${tempId}.value`, false), (0, _vue_compiler_dom.createSimpleExpression)(existingText ? existingText.content : ``, true), false)]));
224
+ }
225
+ } else if (node.tag === "input") {
226
+ const vModel = findVModel(node);
227
+ if (vModel) {
228
+ const tempExp = (0, _vue_compiler_dom.createSimpleExpression)(`_temp${context.temps++}`, false);
229
+ propsExp.arguments = [(0, _vue_compiler_dom.createSequenceExpression)([(0, _vue_compiler_dom.createAssignmentExpression)(tempExp, mergedProps), (0, _vue_compiler_dom.createCallExpression)(context.helper(_vue_compiler_dom.MERGE_PROPS), [tempExp, (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_GET_DYNAMIC_MODEL_PROPS), [tempExp, vModel.exp])])])];
230
+ }
231
+ } else if (directives.length && !node.children.length) {
232
+ if (!hasContentOverrideDirective(node)) {
233
+ const tempId = `_temp${context.temps++}`;
234
+ propsExp.arguments = [(0, _vue_compiler_dom.createAssignmentExpression)((0, _vue_compiler_dom.createSimpleExpression)(tempId, false), mergedProps)];
235
+ rawChildrenMap.set(node, (0, _vue_compiler_dom.createConditionalExpression)((0, _vue_compiler_dom.createSimpleExpression)(`"textContent" in ${tempId}`, false), (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_INTERPOLATE), [(0, _vue_compiler_dom.createSimpleExpression)(`${tempId}.textContent`, false)]), (0, _vue_compiler_dom.createSimpleExpression)(`${tempId}.innerHTML ?? ''`, false), false));
236
+ }
237
+ }
238
+ if (needTagForRuntime) propsExp.arguments.push(`"${node.tag}"`);
239
+ openTag.push(propsExp);
240
+ }
241
+ }
242
+ let dynamicClassBinding = void 0;
243
+ let staticClassBinding = void 0;
244
+ let dynamicStyleBinding = void 0;
245
+ for (let i = 0; i < node.props.length; i++) {
246
+ const prop = node.props[i];
247
+ if (node.tag === "input" && isTrueFalseValue(prop)) continue;
248
+ if (prop.type === 7) {
249
+ if (prop.name === "html" && prop.exp) rawChildrenMap.set(node, (0, _vue_compiler_dom.createCompoundExpression)([
250
+ `(`,
251
+ prop.exp,
252
+ `) ?? ''`
253
+ ]));
254
+ else if (prop.name === "text" && prop.exp) node.children = [(0, _vue_compiler_dom.createInterpolation)(prop.exp, prop.loc)];
255
+ else if (prop.name === "slot") context.onError((0, _vue_compiler_dom.createCompilerError)(40, prop.loc));
256
+ else if (isTextareaWithValue(node, prop) && prop.exp) {
257
+ if (!needMergeProps) node.children = [(0, _vue_compiler_dom.createInterpolation)(prop.exp, prop.loc)];
258
+ } else if (!needMergeProps && prop.name !== "on") {
259
+ const directiveTransform = context.directiveTransforms[prop.name];
260
+ if (directiveTransform) {
261
+ const { props, ssrTagParts } = directiveTransform(prop, node, context);
262
+ if (ssrTagParts) openTag.push(...ssrTagParts);
263
+ for (let j = 0; j < props.length; j++) {
264
+ const { key, value } = props[j];
265
+ if ((0, _vue_compiler_dom.isStaticExp)(key)) {
266
+ let attrName = key.content;
267
+ if (attrName === "key" || attrName === "ref") continue;
268
+ if (attrName === "class") openTag.push(` class="`, dynamicClassBinding = (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_RENDER_CLASS), [value]), `"`);
269
+ else if (attrName === "style") if (dynamicStyleBinding) mergeCall(dynamicStyleBinding, value);
270
+ else openTag.push(` style="`, dynamicStyleBinding = (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_RENDER_STYLE), [value]), `"`);
271
+ else {
272
+ attrName = node.tag.indexOf("-") > 0 ? attrName : _vue_shared.propsToAttrMap[attrName] || attrName.toLowerCase();
273
+ if ((0, _vue_shared.isBooleanAttr)(attrName)) openTag.push((0, _vue_compiler_dom.createConditionalExpression)((0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_INCLUDE_BOOLEAN_ATTR), [value]), (0, _vue_compiler_dom.createSimpleExpression)(" " + attrName, true), (0, _vue_compiler_dom.createSimpleExpression)("", true), false));
274
+ else if ((0, _vue_shared.isSSRSafeAttrName)(attrName)) openTag.push((0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_RENDER_ATTR), [key, value]));
275
+ else context.onError(createSSRCompilerError(65, key.loc));
276
+ }
277
+ } else {
278
+ const args = [key, value];
279
+ if (needTagForRuntime) args.push(`"${node.tag}"`);
280
+ openTag.push((0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_RENDER_DYNAMIC_ATTR), args));
281
+ }
282
+ }
283
+ }
284
+ }
285
+ } else {
286
+ const name = prop.name;
287
+ if (node.tag === "textarea" && name === "value" && prop.value) rawChildrenMap.set(node, (0, _vue_shared.escapeHtml)(prop.value.content));
288
+ else if (!needMergeProps) {
289
+ if (name === "key" || name === "ref") continue;
290
+ if (name === "class" && prop.value) staticClassBinding = JSON.stringify(prop.value.content);
291
+ openTag.push(` ${prop.name}` + (prop.value ? `="${(0, _vue_shared.escapeHtml)(prop.value.content)}"` : ``));
292
+ }
293
+ }
294
+ }
295
+ if (dynamicClassBinding && staticClassBinding) {
296
+ mergeCall(dynamicClassBinding, staticClassBinding);
297
+ removeStaticBinding(openTag, "class");
298
+ }
299
+ if (context.scopeId) openTag.push(` ${context.scopeId}`);
300
+ node.ssrCodegenNode = (0, _vue_compiler_dom.createTemplateLiteral)(openTag);
301
+ };
536
302
  };
537
303
  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];
304
+ let mergePropsArgs = [];
305
+ if (props) if (props.type === 14) mergePropsArgs = props.arguments;
306
+ else mergePropsArgs.push(props);
307
+ if (directives.length) for (const dir of directives) mergePropsArgs.push((0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_GET_DIRECTIVE_PROPS), [`_ctx`, ...(0, _vue_compiler_dom.buildDirectiveArgs)(dir, context).elements]));
308
+ return mergePropsArgs.length > 1 ? (0, _vue_compiler_dom.createCallExpression)(context.helper(_vue_compiler_dom.MERGE_PROPS), mergePropsArgs) : mergePropsArgs[0];
557
309
  }
558
310
  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
- }
311
+ if (prop.type === 7) return prop.name === "bind" && prop.arg && (0, _vue_compiler_dom.isStaticExp)(prop.arg) && (prop.arg.content === "true-value" || prop.arg.content === "false-value");
312
+ else return prop.name === "true-value" || prop.name === "false-value";
564
313
  }
565
314
  function isTextareaWithValue(node, prop) {
566
- return !!(node.tag === "textarea" && prop.name === "bind" && compilerDom.isStaticArgOf(prop.arg, "value"));
315
+ return !!(node.tag === "textarea" && prop.name === "bind" && (0, _vue_compiler_dom.isStaticArgOf)(prop.arg, "value"));
567
316
  }
568
317
  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
- }
318
+ const existing = call.arguments[0];
319
+ if (existing.type === 17) existing.elements.push(arg);
320
+ else call.arguments[0] = (0, _vue_compiler_dom.createArrayExpression)([existing, arg]);
575
321
  }
576
322
  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
- }
323
+ const regExp = new RegExp(`^ ${binding}=".+"$`);
324
+ const i = tag.findIndex((e) => typeof e === "string" && regExp.test(e));
325
+ if (i > -1) tag.splice(i, 1);
582
326
  }
583
327
  function findVModel(node) {
584
- return node.props.find(
585
- (p) => p.type === 7 && p.name === "model" && p.exp
586
- );
328
+ return node.props.find((p) => p.type === 7 && p.name === "model" && p.exp);
587
329
  }
588
330
  function hasContentOverrideDirective(node) {
589
- return !!compilerDom.findDir(node, "text") || !!compilerDom.findDir(node, "html");
331
+ return !!(0, _vue_compiler_dom.findDir)(node, "text") || !!(0, _vue_compiler_dom.findDir)(node, "html");
590
332
  }
591
333
  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
-
334
+ const isVoidTag = context.options.isVoidTag || _vue_shared.NO;
335
+ const elementsToAdd = node.ssrCodegenNode.elements;
336
+ for (let j = 0; j < elementsToAdd.length; j++) context.pushStringPart(elementsToAdd[j]);
337
+ if (context.withSlotScopeId) context.pushStringPart((0, _vue_compiler_dom.createSimpleExpression)(`_scopeId`, false));
338
+ context.pushStringPart(`>`);
339
+ const rawChildren = rawChildrenMap.get(node);
340
+ if (rawChildren) context.pushStringPart(rawChildren);
341
+ else if (node.children.length) processChildren(node, context);
342
+ if (!isVoidTag(node.tag)) context.pushStringPart(`</${node.tag}>`);
343
+ }
344
+ //#endregion
345
+ //#region packages/compiler-ssr/src/transforms/ssrTransformTransitionGroup.ts
612
346
  const wipMap$2 = /* @__PURE__ */ new WeakMap();
613
347
  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
- };
348
+ return () => {
349
+ const tag = (0, _vue_compiler_dom.findProp)(node, "tag");
350
+ if (tag) {
351
+ const { props, directives } = (0, _vue_compiler_dom.buildProps)(node, context, node.props.filter((p) => p !== tag), true, false, true);
352
+ let propsExp = null;
353
+ if (props || directives.length) propsExp = (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_RENDER_ATTRS), [buildSSRProps(props, directives, context)]);
354
+ wipMap$2.set(node, {
355
+ tag,
356
+ propsExp,
357
+ scopeId: context.scopeId || null
358
+ });
359
+ }
360
+ };
639
361
  }
640
362
  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
-
363
+ const entry = wipMap$2.get(node);
364
+ if (entry) {
365
+ const { tag, propsExp, scopeId } = entry;
366
+ if (tag.type === 7) {
367
+ context.pushStringPart(`<`);
368
+ context.pushStringPart(tag.exp);
369
+ if (propsExp) context.pushStringPart(propsExp);
370
+ if (scopeId) context.pushStringPart(` ${scopeId}`);
371
+ context.pushStringPart(`>`);
372
+ processChildren(
373
+ node,
374
+ context,
375
+ false,
376
+ /**
377
+ * TransitionGroup has the special runtime behavior of flattening and
378
+ * concatenating all children into a single fragment (in order for them to
379
+ * be patched using the same key map) so we need to account for that here
380
+ * by disabling nested fragment wrappers from being generated.
381
+ */
382
+ true,
383
+ /**
384
+ * TransitionGroup filters out comment children at runtime and thus
385
+ * doesn't expect comments to be present during hydration. We need to
386
+ * account for that by disabling the empty comment that is otherwise
387
+ * rendered for a falsy v-if that has no v-else specified. (#6715)
388
+ */
389
+ true
390
+ );
391
+ context.pushStringPart(`</`);
392
+ context.pushStringPart(tag.exp);
393
+ context.pushStringPart(`>`);
394
+ } else {
395
+ context.pushStringPart(`<${tag.value.content}`);
396
+ if (propsExp) context.pushStringPart(propsExp);
397
+ if (scopeId) context.pushStringPart(` ${scopeId}`);
398
+ context.pushStringPart(`>`);
399
+ processChildren(node, context, false, true, true);
400
+ context.pushStringPart(`</${tag.value.content}>`);
401
+ }
402
+ } else processChildren(node, context, true, true, true);
403
+ }
404
+ //#endregion
405
+ //#region packages/compiler-ssr/src/transforms/ssrTransformTransition.ts
693
406
  const wipMap$1 = /* @__PURE__ */ new WeakMap();
694
407
  function ssrTransformTransition(node, context) {
695
- return () => {
696
- const appear = compilerDom.findProp(node, "appear", false, true);
697
- wipMap$1.set(node, !!appear);
698
- };
408
+ return () => {
409
+ const appear = (0, _vue_compiler_dom.findProp)(node, "appear", false, true);
410
+ wipMap$1.set(node, !!appear);
411
+ };
699
412
  }
700
413
  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
-
414
+ node.children = node.children.filter((c) => c.type !== 3);
415
+ if (wipMap$1.get(node)) {
416
+ context.pushStringPart(`<template>`);
417
+ processChildren(node, context, false, true);
418
+ context.pushStringPart(`</template>`);
419
+ } else processChildren(node, context, false, true);
420
+ }
421
+ //#endregion
422
+ //#region packages/compiler-ssr/src/transforms/ssrTransformComponent.ts
712
423
  const wipMap = /* @__PURE__ */ new WeakMap();
713
424
  const WIP_SLOT = Symbol();
714
425
  const componentTypeMap = /* @__PURE__ */ new WeakMap();
715
426
  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
- };
427
+ if (node.type !== 1 || node.tagType !== 1) return;
428
+ const component = (0, _vue_compiler_dom.resolveComponentType)(node, context, true);
429
+ const isDynamicComponent = (0, _vue_shared.isObject)(component) && component.callee === _vue_compiler_dom.RESOLVE_DYNAMIC_COMPONENT;
430
+ componentTypeMap.set(node, component);
431
+ if ((0, _vue_shared.isSymbol)(component)) {
432
+ if (component === _vue_compiler_dom.SUSPENSE) return ssrTransformSuspense(node, context);
433
+ else if (component === _vue_compiler_dom.TRANSITION_GROUP) return ssrTransformTransitionGroup(node, context);
434
+ else if (component === _vue_compiler_dom.TRANSITION) return ssrTransformTransition(node, context);
435
+ return;
436
+ }
437
+ const vnodeBranches = [];
438
+ const clonedNode = clone(node);
439
+ return function ssrPostTransformComponent() {
440
+ if (clonedNode.children.length) (0, _vue_compiler_dom.buildSlots)(clonedNode, context, (props, vFor, children) => {
441
+ vnodeBranches.push(createVNodeSlotBranch(props, vFor, children, context));
442
+ return (0, _vue_compiler_dom.createFunctionExpression)(void 0);
443
+ });
444
+ let propsExp = `null`;
445
+ if (node.props.length) {
446
+ const { props, directives } = (0, _vue_compiler_dom.buildProps)(node, context, void 0, true, isDynamicComponent);
447
+ if (props || directives.length) propsExp = buildSSRProps(props, directives, context);
448
+ }
449
+ const wipEntries = [];
450
+ wipMap.set(node, wipEntries);
451
+ const buildSSRSlotFn = (props, _vForExp, children, loc) => {
452
+ const fn = (0, _vue_compiler_dom.createFunctionExpression)([
453
+ props && (0, _vue_compiler_dom.stringifyExpression)(props) || `_`,
454
+ `_push`,
455
+ `_parent`,
456
+ `_scopeId`
457
+ ], void 0, true, true, loc);
458
+ wipEntries.push({
459
+ type: WIP_SLOT,
460
+ fn,
461
+ children,
462
+ vnodeBranch: vnodeBranches[wipEntries.length]
463
+ });
464
+ return fn;
465
+ };
466
+ const slots = node.children.length ? (0, _vue_compiler_dom.buildSlots)(node, context, buildSSRSlotFn).slots : `null`;
467
+ if (typeof component !== "string") node.ssrCodegenNode = (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_RENDER_VNODE), [
468
+ `_push`,
469
+ (0, _vue_compiler_dom.createCallExpression)(context.helper(_vue_compiler_dom.CREATE_VNODE), [
470
+ component,
471
+ propsExp,
472
+ slots
473
+ ]),
474
+ `_parent`
475
+ ]);
476
+ else node.ssrCodegenNode = (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_RENDER_COMPONENT), [
477
+ component,
478
+ propsExp,
479
+ slots,
480
+ `_parent`
481
+ ]);
482
+ };
805
483
  };
806
484
  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
- }
485
+ const component = componentTypeMap.get(node);
486
+ if (!node.ssrCodegenNode) if (component === _vue_compiler_dom.TELEPORT) return ssrProcessTeleport(node, context);
487
+ else if (component === _vue_compiler_dom.SUSPENSE) return ssrProcessSuspense(node, context);
488
+ else if (component === _vue_compiler_dom.TRANSITION_GROUP) return ssrProcessTransitionGroup(node, context);
489
+ else {
490
+ if (parent.type === WIP_SLOT) context.pushStringPart(``);
491
+ if (component === _vue_compiler_dom.TRANSITION) return ssrProcessTransition(node, context);
492
+ processChildren(node, context);
493
+ }
494
+ else {
495
+ const wipEntries = wipMap.get(node) || [];
496
+ for (let i = 0; i < wipEntries.length; i++) {
497
+ const { fn, vnodeBranch } = wipEntries[i];
498
+ fn.body = (0, _vue_compiler_dom.createIfStatement)((0, _vue_compiler_dom.createSimpleExpression)(`_push`, false), processChildrenAsStatement(wipEntries[i], context, false, true), vnodeBranch);
499
+ }
500
+ if (context.withSlotScopeId) node.ssrCodegenNode.arguments.push(`_scopeId`);
501
+ if (typeof component === "string") context.pushStatement((0, _vue_compiler_dom.createCallExpression)(`_push`, [node.ssrCodegenNode]));
502
+ else context.pushStatement(node.ssrCodegenNode);
503
+ }
850
504
  }
851
505
  const rawOptionsMap = /* @__PURE__ */ new WeakMap();
852
- const [baseNodeTransforms, baseDirectiveTransforms] = compilerDom.getBaseTransformPreset(true);
853
- const vnodeNodeTransforms = [...baseNodeTransforms, ...compilerDom.DOMNodeTransforms];
506
+ const [baseNodeTransforms, baseDirectiveTransforms] = (0, _vue_compiler_dom.getBaseTransformPreset)(true);
507
+ const vnodeNodeTransforms = [...baseNodeTransforms, ..._vue_compiler_dom.DOMNodeTransforms];
854
508
  const vnodeDirectiveTransforms = {
855
- ...baseDirectiveTransforms,
856
- ...compilerDom.DOMDirectiveTransforms
509
+ ...baseDirectiveTransforms,
510
+ ..._vue_compiler_dom.DOMDirectiveTransforms
857
511
  };
858
512
  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);
513
+ const rawOptions = rawOptionsMap.get(parentContext.root);
514
+ const subOptions = {
515
+ ...rawOptions,
516
+ nodeTransforms: [...vnodeNodeTransforms, ...rawOptions.nodeTransforms || []],
517
+ directiveTransforms: {
518
+ ...vnodeDirectiveTransforms,
519
+ ...rawOptions.directiveTransforms || {}
520
+ }
521
+ };
522
+ const wrapperProps = [];
523
+ if (slotProps) wrapperProps.push({
524
+ type: 7,
525
+ name: "slot",
526
+ exp: slotProps,
527
+ arg: void 0,
528
+ modifiers: [],
529
+ loc: _vue_compiler_dom.locStub
530
+ });
531
+ if (vFor) wrapperProps.push((0, _vue_shared.extend)({}, vFor));
532
+ subTransform({
533
+ type: 1,
534
+ ns: 0,
535
+ tag: "template",
536
+ tagType: 3,
537
+ props: wrapperProps,
538
+ children,
539
+ loc: _vue_compiler_dom.locStub,
540
+ codegenNode: void 0
541
+ }, subOptions, parentContext);
542
+ return (0, _vue_compiler_dom.createReturnStatement)(children);
898
543
  }
899
544
  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
- });
545
+ const childRoot = (0, _vue_compiler_dom.createRoot)([node]);
546
+ const childContext = (0, _vue_compiler_dom.createTransformContext)(childRoot, options);
547
+ childContext.ssr = false;
548
+ childContext.scopes = { ...parentContext.scopes };
549
+ childContext.identifiers = { ...parentContext.identifiers };
550
+ childContext.imports = parentContext.imports;
551
+ (0, _vue_compiler_dom.traverseNode)(childRoot, childContext);
552
+ [
553
+ "helpers",
554
+ "components",
555
+ "directives"
556
+ ].forEach((key) => {
557
+ childContext[key].forEach((value, helperKey) => {
558
+ if (key === "helpers") {
559
+ const parentCount = parentContext.helpers.get(helperKey);
560
+ if (parentCount === void 0) parentContext.helpers.set(helperKey, value);
561
+ else parentContext.helpers.set(helperKey, value + parentCount);
562
+ } else parentContext[key].add(value);
563
+ });
564
+ });
921
565
  }
922
566
  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
-
567
+ if ((0, _vue_shared.isArray)(v)) return v.map(clone);
568
+ else if ((0, _vue_shared.isPlainObject)(v)) {
569
+ const res = {};
570
+ for (const key in v) res[key] = clone(v[key]);
571
+ return res;
572
+ } else return v;
573
+ }
574
+ //#endregion
575
+ //#region packages/compiler-ssr/src/ssrCodegenTransform.ts
936
576
  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)));
577
+ const context = createSSRTransformContext(ast, options);
578
+ if (options.ssrCssVars) {
579
+ const cssContext = (0, _vue_compiler_dom.createTransformContext)((0, _vue_compiler_dom.createRoot)([]), options);
580
+ const varsExp = (0, _vue_compiler_dom.processExpression)((0, _vue_compiler_dom.createSimpleExpression)(options.ssrCssVars, false), cssContext);
581
+ context.body.push((0, _vue_compiler_dom.createCompoundExpression)([
582
+ `const _cssVars = { style: `,
583
+ varsExp,
584
+ `}`
585
+ ]));
586
+ Array.from(cssContext.helpers.keys()).forEach((helper) => {
587
+ ast.helpers.add(helper);
588
+ });
589
+ }
590
+ processChildren(ast, context, ast.children.length > 1 && ast.children.some((c) => !(0, _vue_compiler_dom.isText)(c)));
591
+ ast.codegenNode = (0, _vue_compiler_dom.createBlockStatement)(context.body);
592
+ ast.ssrHelpers = Array.from(new Set([...Array.from(ast.helpers).filter((h) => h in ssrHelpers), ...context.helpers]));
593
+ ast.helpers = new Set(Array.from(ast.helpers).filter((h) => !(h in ssrHelpers)));
961
594
  }
962
595
  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
- };
596
+ const body = [];
597
+ let currentString = null;
598
+ return {
599
+ root,
600
+ options,
601
+ body,
602
+ helpers,
603
+ withSlotScopeId,
604
+ onError: options.onError || ((e) => {
605
+ throw e;
606
+ }),
607
+ helper(name) {
608
+ helpers.add(name);
609
+ return name;
610
+ },
611
+ pushStringPart(part) {
612
+ if (!currentString) {
613
+ const currentCall = (0, _vue_compiler_dom.createCallExpression)(`_push`);
614
+ body.push(currentCall);
615
+ currentString = (0, _vue_compiler_dom.createTemplateLiteral)([]);
616
+ currentCall.arguments.push(currentString);
617
+ }
618
+ const bufferedElements = currentString.elements;
619
+ const lastItem = bufferedElements[bufferedElements.length - 1];
620
+ if ((0, _vue_shared.isString)(part) && (0, _vue_shared.isString)(lastItem)) bufferedElements[bufferedElements.length - 1] += part;
621
+ else bufferedElements.push(part);
622
+ },
623
+ pushStatement(statement) {
624
+ currentString = null;
625
+ body.push(statement);
626
+ }
627
+ };
998
628
  }
999
629
  function createChildContext(parent, withSlotScopeId = parent.withSlotScopeId) {
1000
- return createSSRTransformContext(
1001
- parent.root,
1002
- parent.options,
1003
- parent.helpers,
1004
- withSlotScopeId
1005
- );
630
+ return createSSRTransformContext(parent.root, parent.options, parent.helpers, withSlotScopeId);
1006
631
  }
1007
632
  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
- }
633
+ if (asFragment) context.pushStringPart(`<!--[-->`);
634
+ const { children } = parent;
635
+ for (let i = 0; i < children.length; i++) {
636
+ const child = children[i];
637
+ switch (child.type) {
638
+ case 1:
639
+ switch (child.tagType) {
640
+ case 0:
641
+ ssrProcessElement(child, context);
642
+ break;
643
+ case 1:
644
+ ssrProcessComponent(child, context, parent);
645
+ break;
646
+ case 2:
647
+ ssrProcessSlotOutlet(child, context);
648
+ break;
649
+ case 3: break;
650
+ default:
651
+ context.onError(createSSRCompilerError(67, child.loc));
652
+ return child;
653
+ }
654
+ break;
655
+ case 2:
656
+ context.pushStringPart((0, _vue_shared.escapeHtml)(child.content));
657
+ break;
658
+ case 3:
659
+ if (!disableComment) context.pushStringPart(`<!--${child.content}-->`);
660
+ break;
661
+ case 5:
662
+ context.pushStringPart((0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_INTERPOLATE), [child.content]));
663
+ break;
664
+ case 9:
665
+ ssrProcessIf(child, context, disableNestedFragments, disableComment);
666
+ break;
667
+ case 11:
668
+ ssrProcessFor(child, context, disableNestedFragments);
669
+ break;
670
+ case 10: break;
671
+ case 12:
672
+ case 8: break;
673
+ default:
674
+ context.onError(createSSRCompilerError(67, child.loc));
675
+ return child;
676
+ }
677
+ }
678
+ if (asFragment) context.pushStringPart(`<!--]-->`);
1079
679
  }
1080
680
  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);
681
+ const childContext = createChildContext(parentContext, withSlotScopeId);
682
+ processChildren(parent, childContext, asFragment);
683
+ return (0, _vue_compiler_dom.createBlockStatement)(childContext.body);
1084
684
  }
1085
-
685
+ //#endregion
686
+ //#region packages/compiler-ssr/src/transforms/ssrVModel.ts
1086
687
  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
- 60,
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
- 59,
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
- 57,
1226
- dir.loc
1227
- )
1228
- );
1229
- }
1230
- return res;
1231
- } else {
1232
- return compilerDom.transformModel(dir, node, context);
1233
- }
688
+ const model = dir.exp;
689
+ function checkDuplicatedValue() {
690
+ const value = (0, _vue_compiler_dom.findProp)(node, "value");
691
+ if (value) context.onError((0, _vue_compiler_dom.createDOMCompilerError)(61, value.loc));
692
+ }
693
+ const processSelectChildren = (children) => {
694
+ children.forEach((child) => {
695
+ if (child.type === 1) processOption(child);
696
+ else if (child.type === 11) processSelectChildren(child.children);
697
+ else if (child.type === 9) child.branches.forEach((b) => processSelectChildren(b.children));
698
+ });
699
+ };
700
+ function processOption(plainNode) {
701
+ if (plainNode.tag === "option") {
702
+ if (plainNode.props.findIndex((p) => p.name === "selected") === -1) {
703
+ const value = findValueBinding(plainNode);
704
+ plainNode.ssrCodegenNode.elements.push((0, _vue_compiler_dom.createConditionalExpression)((0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_INCLUDE_BOOLEAN_ATTR), [(0, _vue_compiler_dom.createConditionalExpression)((0, _vue_compiler_dom.createCallExpression)(`Array.isArray`, [model]), (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_LOOSE_CONTAIN), [model, value]), (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_LOOSE_EQUAL), [model, value]))]), (0, _vue_compiler_dom.createSimpleExpression)(" selected", true), (0, _vue_compiler_dom.createSimpleExpression)("", true), false));
705
+ }
706
+ } else if (plainNode.tag === "optgroup") processSelectChildren(plainNode.children);
707
+ }
708
+ if (node.tagType === 0) {
709
+ const res = { props: [] };
710
+ if (node.tag === "input") {
711
+ const defaultProps = [(0, _vue_compiler_dom.createObjectProperty)(`value`, model)];
712
+ const type = (0, _vue_compiler_dom.findProp)(node, "type");
713
+ if (type) {
714
+ const value = findValueBinding(node);
715
+ if (type.type === 7) res.ssrTagParts = [(0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_RENDER_DYNAMIC_MODEL), [
716
+ type.exp,
717
+ model,
718
+ value
719
+ ])];
720
+ else if (type.value) switch (type.value.content) {
721
+ case "radio":
722
+ res.props = [(0, _vue_compiler_dom.createObjectProperty)(`checked`, (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_LOOSE_EQUAL), [model, value]))];
723
+ break;
724
+ case "checkbox":
725
+ const trueValueBinding = (0, _vue_compiler_dom.findProp)(node, "true-value");
726
+ if (trueValueBinding) {
727
+ const trueValue = trueValueBinding.type === 6 ? JSON.stringify(trueValueBinding.value.content) : trueValueBinding.exp;
728
+ res.props = [(0, _vue_compiler_dom.createObjectProperty)(`checked`, (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_LOOSE_EQUAL), [model, trueValue]))];
729
+ } else res.props = [(0, _vue_compiler_dom.createObjectProperty)(`checked`, (0, _vue_compiler_dom.createConditionalExpression)((0, _vue_compiler_dom.createCallExpression)(`Array.isArray`, [model]), (0, _vue_compiler_dom.createCallExpression)(context.helper(SSR_LOOSE_CONTAIN), [model, value]), model))];
730
+ break;
731
+ case "file":
732
+ context.onError((0, _vue_compiler_dom.createDOMCompilerError)(60, dir.loc));
733
+ break;
734
+ default:
735
+ checkDuplicatedValue();
736
+ res.props = defaultProps;
737
+ break;
738
+ }
739
+ } else if ((0, _vue_compiler_dom.hasDynamicKeyVBind)(node)) {} else {
740
+ checkDuplicatedValue();
741
+ res.props = defaultProps;
742
+ }
743
+ } else if (node.tag === "textarea") {
744
+ checkDuplicatedValue();
745
+ node.children = [(0, _vue_compiler_dom.createInterpolation)(model, model.loc)];
746
+ } else if (node.tag === "select") processSelectChildren(node.children);
747
+ else context.onError((0, _vue_compiler_dom.createDOMCompilerError)(58, dir.loc));
748
+ return res;
749
+ } else return (0, _vue_compiler_dom.transformModel)(dir, node, context);
1234
750
  };
1235
751
  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);
752
+ const valueBinding = (0, _vue_compiler_dom.findProp)(node, "value");
753
+ return valueBinding ? valueBinding.type === 7 ? valueBinding.exp : (0, _vue_compiler_dom.createSimpleExpression)(valueBinding.value.content, true) : (0, _vue_compiler_dom.createSimpleExpression)(`null`, false);
1238
754
  }
1239
-
755
+ //#endregion
756
+ //#region packages/compiler-ssr/src/transforms/ssrVShow.ts
1240
757
  const ssrTransformShow = (dir, node, context) => {
1241
- if (!dir.exp) {
1242
- context.onError(
1243
- compilerDom.createDOMCompilerError(61)
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
- };
758
+ if (!dir.exp) context.onError((0, _vue_compiler_dom.createDOMCompilerError)(62));
759
+ return { props: [(0, _vue_compiler_dom.createObjectProperty)(`style`, (0, _vue_compiler_dom.createConditionalExpression)(dir.exp, (0, _vue_compiler_dom.createSimpleExpression)(`null`, false), (0, _vue_compiler_dom.createObjectExpression)([(0, _vue_compiler_dom.createObjectProperty)(`display`, (0, _vue_compiler_dom.createSimpleExpression)(`none`, true))]), false))] };
1264
760
  };
1265
-
761
+ //#endregion
762
+ //#region packages/compiler-ssr/src/transforms/ssrInjectFallthroughAttrs.ts
1266
763
  const ssrInjectFallthroughAttrs = (node, context) => {
1267
- if (node.type === 0) {
1268
- context.identifiers._attrs = 1;
1269
- }
1270
- if (node.type === 1 && node.tagType === 1 && (node.tag === "transition" || node.tag === "Transition" || node.tag === "KeepAlive" || node.tag === "keep-alive")) {
1271
- const rootChildren = compilerDom.filterNonCommentChildren(context.root);
1272
- if (rootChildren.length === 1 && rootChildren[0] === node) {
1273
- if (compilerDom.hasSingleChild(node)) {
1274
- injectFallthroughAttrs(node.children[0]);
1275
- }
1276
- return;
1277
- }
1278
- }
1279
- const parent = context.parent;
1280
- if (!parent || parent.type !== 0) {
1281
- return;
1282
- }
1283
- if (node.type === 10 && compilerDom.hasSingleChild(node)) {
1284
- if (compilerDom.isSingleIfBlock(parent)) {
1285
- injectFallthroughAttrs(node.children[0]);
1286
- }
1287
- } else if (compilerDom.hasSingleChild(parent)) {
1288
- injectFallthroughAttrs(node);
1289
- }
764
+ if (node.type === 0) context.identifiers._attrs = 1;
765
+ if (node.type === 1 && node.tagType === 1 && (node.tag === "transition" || node.tag === "Transition" || node.tag === "KeepAlive" || node.tag === "keep-alive")) {
766
+ const rootChildren = (0, _vue_compiler_dom.filterNonCommentChildren)(context.root);
767
+ if (rootChildren.length === 1 && rootChildren[0] === node) {
768
+ if ((0, _vue_compiler_dom.hasSingleChild)(node)) injectFallthroughAttrs(node.children[0]);
769
+ return;
770
+ }
771
+ }
772
+ const parent = context.parent;
773
+ if (!parent || parent.type !== 0) return;
774
+ if (node.type === 10 && (0, _vue_compiler_dom.hasSingleChild)(node)) {
775
+ if ((0, _vue_compiler_dom.isSingleIfBlock)(parent)) injectFallthroughAttrs(node.children[0]);
776
+ } else if ((0, _vue_compiler_dom.hasSingleChild)(parent)) injectFallthroughAttrs(node);
1290
777
  };
1291
778
  function injectFallthroughAttrs(node) {
1292
- if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) {
1293
- node.props.push({
1294
- type: 7,
1295
- name: "bind",
1296
- arg: void 0,
1297
- exp: compilerDom.createSimpleExpression(`_attrs`, false),
1298
- modifiers: [],
1299
- loc: compilerDom.locStub
1300
- });
1301
- }
1302
- }
1303
-
779
+ if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !(0, _vue_compiler_dom.findDir)(node, "for")) node.props.push({
780
+ type: 7,
781
+ name: "bind",
782
+ arg: void 0,
783
+ exp: (0, _vue_compiler_dom.createSimpleExpression)(`_attrs`, false),
784
+ modifiers: [],
785
+ loc: _vue_compiler_dom.locStub
786
+ });
787
+ }
788
+ //#endregion
789
+ //#region packages/compiler-ssr/src/transforms/ssrInjectCssVars.ts
1304
790
  const ssrInjectCssVars = (node, context) => {
1305
- if (!context.ssrCssVars) {
1306
- return;
1307
- }
1308
- if (node.type === 0) {
1309
- context.identifiers._cssVars = 1;
1310
- }
1311
- const parent = context.parent;
1312
- if (!parent || parent.type !== 0) {
1313
- return;
1314
- }
1315
- if (node.type === 10) {
1316
- for (const child of node.children) {
1317
- injectCssVars(child);
1318
- }
1319
- } else {
1320
- injectCssVars(node);
1321
- }
791
+ if (!context.ssrCssVars) return;
792
+ if (node.type === 0) context.identifiers._cssVars = 1;
793
+ const parent = context.parent;
794
+ if (!parent || parent.type !== 0) return;
795
+ if (node.type === 10) for (const child of node.children) injectCssVars(child);
796
+ else injectCssVars(node);
1322
797
  };
1323
798
  function injectCssVars(node) {
1324
- if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) {
1325
- if (node.tag === "suspense" || node.tag === "Suspense") {
1326
- for (const child of node.children) {
1327
- if (child.type === 1 && child.tagType === 3) {
1328
- child.children.forEach(injectCssVars);
1329
- } else {
1330
- injectCssVars(child);
1331
- }
1332
- }
1333
- } else {
1334
- node.props.push({
1335
- type: 7,
1336
- name: "bind",
1337
- arg: void 0,
1338
- exp: compilerDom.createSimpleExpression(`_cssVars`, false),
1339
- modifiers: [],
1340
- loc: compilerDom.locStub
1341
- });
1342
- }
1343
- }
1344
- }
1345
-
799
+ if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !(0, _vue_compiler_dom.findDir)(node, "for")) if (node.tag === "suspense" || node.tag === "Suspense") for (const child of node.children) if (child.type === 1 && child.tagType === 3) child.children.forEach(injectCssVars);
800
+ else injectCssVars(child);
801
+ else node.props.push({
802
+ type: 7,
803
+ name: "bind",
804
+ arg: void 0,
805
+ exp: (0, _vue_compiler_dom.createSimpleExpression)(`_cssVars`, false),
806
+ modifiers: [],
807
+ loc: _vue_compiler_dom.locStub
808
+ });
809
+ }
810
+ //#endregion
811
+ //#region packages/compiler-ssr/src/index.ts
1346
812
  function compile(source, options = {}) {
1347
- options = {
1348
- ...options,
1349
- ...compilerDom.parserOptions,
1350
- ssr: true,
1351
- inSSR: true,
1352
- scopeId: options.mode === "function" ? null : options.scopeId,
1353
- // always prefix since compiler-ssr doesn't have size concern
1354
- prefixIdentifiers: true,
1355
- // disable optimizations that are unnecessary for ssr
1356
- cacheHandlers: false,
1357
- hoistStatic: false
1358
- };
1359
- const ast = typeof source === "string" ? compilerDom.baseParse(source, options) : source;
1360
- rawOptionsMap.set(ast, options);
1361
- compilerDom.transform(ast, {
1362
- ...options,
1363
- hoistStatic: false,
1364
- nodeTransforms: [
1365
- compilerDom.transformVBindShorthand,
1366
- ssrTransformIf,
1367
- ssrTransformFor,
1368
- compilerDom.trackVForSlotScopes,
1369
- compilerDom.transformExpression,
1370
- ssrTransformSlotOutlet,
1371
- ssrInjectFallthroughAttrs,
1372
- ssrInjectCssVars,
1373
- ssrTransformElement,
1374
- ssrTransformComponent,
1375
- compilerDom.trackSlotScopes,
1376
- compilerDom.transformStyle,
1377
- ...options.nodeTransforms || []
1378
- // user transforms
1379
- ],
1380
- directiveTransforms: {
1381
- // reusing core v-bind
1382
- bind: compilerDom.transformBind,
1383
- on: compilerDom.transformOn,
1384
- // model and show have dedicated SSR handling
1385
- model: ssrTransformModel,
1386
- show: ssrTransformShow,
1387
- // the following are ignored during SSR
1388
- // on: noopDirectiveTransform,
1389
- cloak: compilerDom.noopDirectiveTransform,
1390
- once: compilerDom.noopDirectiveTransform,
1391
- memo: compilerDom.noopDirectiveTransform,
1392
- ...options.directiveTransforms || {}
1393
- // user transforms
1394
- }
1395
- });
1396
- ssrCodegenTransform(ast, options);
1397
- return compilerDom.generate(ast, options);
1398
- }
1399
-
813
+ options = {
814
+ ...options,
815
+ ..._vue_compiler_dom.parserOptions,
816
+ ssr: true,
817
+ inSSR: true,
818
+ scopeId: options.mode === "function" ? null : options.scopeId,
819
+ prefixIdentifiers: true,
820
+ cacheHandlers: false,
821
+ hoistStatic: false
822
+ };
823
+ const ast = typeof source === "string" ? (0, _vue_compiler_dom.baseParse)(source, options) : source;
824
+ rawOptionsMap.set(ast, options);
825
+ (0, _vue_compiler_dom.transform)(ast, {
826
+ ...options,
827
+ hoistStatic: false,
828
+ nodeTransforms: [
829
+ _vue_compiler_dom.transformVBindShorthand,
830
+ ssrTransformIf,
831
+ ssrTransformFor,
832
+ _vue_compiler_dom.trackVForSlotScopes,
833
+ _vue_compiler_dom.transformExpression,
834
+ ssrTransformSlotOutlet,
835
+ ssrInjectFallthroughAttrs,
836
+ ssrInjectCssVars,
837
+ ssrTransformElement,
838
+ ssrTransformComponent,
839
+ _vue_compiler_dom.trackSlotScopes,
840
+ _vue_compiler_dom.transformStyle,
841
+ ...options.nodeTransforms || []
842
+ ],
843
+ directiveTransforms: {
844
+ bind: _vue_compiler_dom.transformBind,
845
+ on: _vue_compiler_dom.transformOn,
846
+ model: ssrTransformModel,
847
+ show: ssrTransformShow,
848
+ cloak: _vue_compiler_dom.noopDirectiveTransform,
849
+ once: _vue_compiler_dom.noopDirectiveTransform,
850
+ memo: _vue_compiler_dom.noopDirectiveTransform,
851
+ ...options.directiveTransforms || {}
852
+ }
853
+ });
854
+ ssrCodegenTransform(ast, options);
855
+ return (0, _vue_compiler_dom.generate)(ast, options);
856
+ }
857
+ //#endregion
1400
858
  exports.compile = compile;