@vue/server-renderer 3.6.0-beta.9 → 3.6.0-rc.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,5 +1,5 @@
1
1
  /**
2
- * @vue/server-renderer v3.6.0-beta.9
2
+ * @vue/server-renderer v3.6.0-rc.10
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -33,17 +33,17 @@ var __copyProps = (to, from, except, desc) => {
33
33
  }
34
34
  return to;
35
35
  };
36
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
36
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
37
37
  value: mod,
38
38
  enumerable: true
39
39
  }) : target, mod));
40
40
  //#endregion
41
- let vue = require("vue");
42
- vue = __toESM(vue);
41
+ let _vue_runtime_dom = require("@vue/runtime-dom");
42
+ _vue_runtime_dom = __toESM(_vue_runtime_dom);
43
43
  let _vue_shared = require("@vue/shared");
44
44
  let _vue_compiler_ssr = require("@vue/compiler-ssr");
45
45
  //#region packages/server-renderer/src/helpers/ssrRenderAttrs.ts
46
- const shouldIgnoreProp = /* @__PURE__ */ (0, _vue_shared.makeMap)(`,key,ref,innerHTML,textContent,ref_key,ref_for`);
46
+ const shouldIgnoreProp = /*@__PURE__*/ (0, _vue_shared.makeMap)(`,key,ref,innerHTML,textContent,ref_key,ref_for`);
47
47
  function ssrRenderAttrs(props, tag) {
48
48
  let ret = "";
49
49
  for (let key in props) {
@@ -61,7 +61,7 @@ function ssrRenderAttrs(props, tag) {
61
61
  function ssrRenderDynamicAttr(key, value, tag) {
62
62
  if (!(0, _vue_shared.isRenderableAttrValue)(value)) return ``;
63
63
  const attrKey = tag && (tag.indexOf("-") > 0 || (0, _vue_shared.isSVGTag)(tag)) ? key : _vue_shared.propsToAttrMap[key] || key.toLowerCase();
64
- if ((0, _vue_shared.isBooleanAttr)(attrKey)) return (0, _vue_shared.includeBooleanAttr)(value) ? ` ${attrKey}` : ``;
64
+ if ((0, _vue_shared.isBooleanAttr)(attrKey) || attrKey === "hidden" && (typeof value === "boolean" || typeof value === "number")) return (0, _vue_shared.includeBooleanAttr)(value) ? ` ${attrKey}` : ``;
65
65
  else if ((0, _vue_shared.isSSRSafeAttrName)(attrKey)) return value === "" ? ` ${attrKey}` : ` ${attrKey}="${(0, _vue_shared.escapeHtml)(value)}"`;
66
66
  else {
67
67
  console.warn(`[@vue/server-renderer] Skipped rendering unsafe attribute name: ${attrKey}`);
@@ -78,7 +78,8 @@ function ssrRenderClass(raw) {
78
78
  function ssrRenderStyle(raw) {
79
79
  if (!raw) return "";
80
80
  if ((0, _vue_shared.isString)(raw)) return (0, _vue_shared.escapeHtml)(raw);
81
- return (0, _vue_shared.escapeHtml)((0, _vue_shared.stringifyStyle)((0, _vue_shared.normalizeStyle)(ssrResetCssVars(raw))));
81
+ const styles = (0, _vue_shared.normalizeStyle)(ssrResetCssVars(raw));
82
+ return (0, _vue_shared.escapeHtml)((0, _vue_shared.stringifyStyle)(styles));
82
83
  }
83
84
  function ssrResetCssVars(raw) {
84
85
  if (!(0, _vue_shared.isArray)(raw) && (0, _vue_shared.isObject)(raw)) {
@@ -90,53 +91,76 @@ function ssrResetCssVars(raw) {
90
91
  return raw;
91
92
  }
92
93
  //#endregion
93
- //#region packages/server-renderer/src/helpers/ssrRenderComponent.ts
94
- function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) {
95
- return renderComponentVNode((0, vue.createVNode)(comp, props, children), parentComponent, slotScopeId);
96
- }
97
- //#endregion
98
94
  //#region packages/server-renderer/src/helpers/ssrRenderSlot.ts
99
- const { ensureValidVNode } = vue.ssrUtils;
95
+ const { ensureValidVNode, rawVaporSlotKey: rawVaporSlotKey$1 } = _vue_runtime_dom.ssrUtils;
96
+ let vaporSlots = 0;
100
97
  function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) {
101
- push(`<!--[-->`);
102
98
  ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId);
103
- push(`<!--]-->`);
104
99
  }
105
100
  function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) {
106
101
  const slotFn = slots[slotName];
102
+ let fallback = false;
107
103
  if (slotFn) {
104
+ if (slotFn[rawVaporSlotKey$1]) vaporSlots++;
105
+ const before = vaporSlots;
108
106
  const slotBuffer = [];
109
107
  const bufferedPush = (item) => {
110
108
  slotBuffer.push(item);
111
109
  };
112
- const ret = slotFn(slotProps, bufferedPush, parentComponent, slotScopeId ? " " + slotScopeId : "");
110
+ const ret = slotFn(slotProps || {}, bufferedPush, parentComponent, slotScopeId ? " " + slotScopeId : "");
111
+ let vnodes;
113
112
  if ((0, _vue_shared.isArray)(ret)) {
114
- const validSlotContent = ensureValidVNode(ret);
115
- if (validSlotContent) renderVNodeChildren(push, validSlotContent, parentComponent, slotScopeId);
113
+ vnodes = ensureValidVNode(ret);
114
+ if (vnodes && isVaporSlotContent(vnodes)) {
115
+ renderVNodeChildren(bufferedPush, vnodes, parentComponent, slotScopeId);
116
+ vnodes = void 0;
117
+ }
118
+ }
119
+ if (vnodes !== void 0) {
120
+ if (!transition) {
121
+ fallback = !vnodes && !!fallbackRenderFn;
122
+ push(fallback ? `<!--(-->` : `<!--[-->`);
123
+ }
124
+ if (vnodes) renderVNodeChildren(push, vnodes, parentComponent, slotScopeId);
116
125
  else if (fallbackRenderFn) fallbackRenderFn();
117
126
  else if (transition) push(`<!---->`);
118
127
  } else {
119
128
  let isEmptySlot = true;
120
- if (transition) isEmptySlot = false;
129
+ const owner = (0, _vue_runtime_dom.getCurrentInstance)();
130
+ if (transition || !(owner && owner.type.__vapor) && !fallbackRenderFn && vaporSlots !== before) isEmptySlot = false;
121
131
  else for (let i = 0; i < slotBuffer.length; i++) if (!isComment(slotBuffer[i])) {
122
132
  isEmptySlot = false;
123
133
  break;
124
134
  }
135
+ if (!transition) {
136
+ fallback = isEmptySlot && !!fallbackRenderFn;
137
+ push(fallback ? `<!--(-->` : `<!--[-->`);
138
+ }
125
139
  if (isEmptySlot) {
126
140
  if (fallbackRenderFn) fallbackRenderFn();
127
141
  } else {
128
142
  let start = 0;
129
143
  let end = slotBuffer.length;
130
- if (transition && slotBuffer[0] === "<!--[-->" && slotBuffer[end - 1] === "<!--]-->") {
131
- start++;
132
- end--;
144
+ if (transition) {
145
+ const first = slotBuffer[0];
146
+ if ((first === "<!--[-->" || first === "<!--(-->") && slotBuffer[end - 1] === (first === "<!--(-->" ? "<!--)-->" : "<!--]-->")) {
147
+ start++;
148
+ end--;
149
+ }
133
150
  }
134
151
  if (start < end) for (let i = start; i < end; i++) push(slotBuffer[i]);
135
152
  else if (transition) push(`<!---->`);
136
153
  }
137
154
  }
138
- } else if (fallbackRenderFn) fallbackRenderFn();
139
- else if (transition) push(`<!---->`);
155
+ } else {
156
+ if (!transition) {
157
+ fallback = !!fallbackRenderFn;
158
+ push(fallback ? `<!--(-->` : `<!--[-->`);
159
+ }
160
+ if (fallbackRenderFn) fallbackRenderFn();
161
+ else if (transition) push(`<!---->`);
162
+ }
163
+ if (!transition) push(fallback ? `<!--)-->` : `<!--]-->`);
140
164
  }
141
165
  const commentTestRE = /^<!--[\s\S]*-->$/;
142
166
  const commentRE = /<!--[^]*?-->/gm;
@@ -146,10 +170,20 @@ function isComment(item) {
146
170
  return !item.replace(commentRE, "").trim();
147
171
  }
148
172
  //#endregion
173
+ //#region packages/server-renderer/src/helpers/ssrRenderComponent.ts
174
+ function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) {
175
+ if ((0, _vue_shared.isString)(comp)) {
176
+ const { getBuffer, push } = createBuffer();
177
+ renderVNode(push, (0, _vue_runtime_dom.createVNode)(comp, props, children), parentComponent, slotScopeId);
178
+ return getBuffer();
179
+ }
180
+ return renderComponentVNode((0, _vue_runtime_dom.createVNode)(comp, props, children), parentComponent, slotScopeId);
181
+ }
182
+ //#endregion
149
183
  //#region packages/server-renderer/src/helpers/ssrRenderTeleport.ts
150
184
  function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) {
151
185
  parentPush("<!--teleport start-->");
152
- const context = parentComponent.appContext.provides[vue.ssrContextKey];
186
+ const context = parentComponent.appContext.provides[_vue_runtime_dom.ssrContextKey];
153
187
  const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {});
154
188
  const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []);
155
189
  const bufferIndex = targetBuffer.length;
@@ -165,6 +199,7 @@ function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parent
165
199
  teleportContent = getBuffer();
166
200
  }
167
201
  targetBuffer.splice(bufferIndex, 0, teleportContent);
202
+ if ((0, _vue_shared.isPromise)(teleportContent) || (0, _vue_shared.isArray)(teleportContent) && teleportContent.hasAsync) targetBuffer.hasAsync = true;
168
203
  parentPush("<!--teleport end-->");
169
204
  }
170
205
  //#endregion
@@ -173,291 +208,31 @@ function ssrInterpolate(value) {
173
208
  return (0, _vue_shared.escapeHtml)((0, _vue_shared.toDisplayString)(value));
174
209
  }
175
210
  //#endregion
176
- //#region packages/reactivity/src/system.ts
177
- let activeSub = void 0;
178
- function setActiveSub(sub) {
179
- try {
180
- return activeSub;
181
- } finally {
182
- activeSub = sub;
183
- }
184
- }
185
- //#endregion
186
- //#region packages/reactivity/src/reactive.ts
187
- /**
188
- * Returns the raw, original object of a Vue-created proxy.
189
- *
190
- * `toRaw()` can return the original object from proxies created by
191
- * {@link reactive}, {@link readonly}, {@link shallowReactive} or
192
- * {@link shallowReadonly}.
193
- *
194
- * This is an escape hatch that can be used to temporarily read without
195
- * incurring proxy access / tracking overhead or write without triggering
196
- * changes. It is **not** recommended to hold a persistent reference to the
197
- * original object. Use with caution.
198
- *
199
- * @example
200
- * ```js
201
- * const foo = {}
202
- * const reactiveFoo = reactive(foo)
203
- *
204
- * console.log(toRaw(reactiveFoo) === foo) // true
205
- * ```
206
- *
207
- * @param observed - The object for which the "raw" value is requested.
208
- * @see {@link https://vuejs.org/api/reactivity-advanced.html#toraw}
209
- */
210
- /* @__NO_SIDE_EFFECTS__ */
211
- function toRaw(observed) {
212
- const raw = observed && observed["__v_raw"];
213
- return raw ? /* @__PURE__ */ toRaw(raw) : observed;
214
- }
215
- //#endregion
216
- //#region packages/reactivity/src/ref.ts
217
- /* @__NO_SIDE_EFFECTS__ */
218
- function isRef(r) {
219
- return r ? r["__v_isRef"] === true : false;
220
- }
221
- //#endregion
222
- //#region packages/runtime-core/src/warning.ts
223
- const stack = [];
224
- /**
225
- * @internal
226
- */
227
- function pushWarningContext$1(ctx) {
228
- stack.push(ctx);
229
- }
230
- /**
231
- * @internal
232
- */
233
- function popWarningContext$1() {
234
- stack.pop();
235
- }
236
- let isWarning = false;
237
- function warn$3(msg, ...args) {
238
- if (isWarning) return;
239
- isWarning = true;
240
- const prevSub = setActiveSub();
241
- const entry = stack.length ? stack[stack.length - 1] : null;
242
- const instance = isVNode$2(entry) ? entry.component : entry;
243
- const appWarnHandler = instance && instance.appContext.config.warnHandler;
244
- const trace = getComponentTrace();
245
- if (appWarnHandler) callWithErrorHandling(appWarnHandler, instance, 11, [
246
- msg + args.map((a) => {
247
- const toString = a.toString;
248
- return toString == null ? JSON.stringify(a) : toString.call(a);
249
- }).join(""),
250
- instance && instance.proxy || instance,
251
- trace.map(({ ctx }) => `at <${formatComponentName(instance, ctx.type)}>`).join("\n"),
252
- trace
253
- ]);
254
- else {
255
- const warnArgs = [`[Vue warn]: ${msg}`, ...args];
256
- if (trace.length && true)
257
- /* v8 ignore next 2 */
258
- warnArgs.push(`\n`, ...formatTrace(trace));
259
- console.warn(...warnArgs);
260
- }
261
- setActiveSub(prevSub);
262
- isWarning = false;
263
- }
264
- function getComponentTrace() {
265
- let currentCtx = stack[stack.length - 1];
266
- if (!currentCtx) return [];
267
- const normalizedStack = [];
268
- while (currentCtx) {
269
- const last = normalizedStack[0];
270
- if (last && last.ctx === currentCtx) last.recurseCount++;
271
- else normalizedStack.push({
272
- ctx: currentCtx,
273
- recurseCount: 0
274
- });
275
- if (isVNode$2(currentCtx)) {
276
- const parent = currentCtx.component && currentCtx.component.parent;
277
- currentCtx = parent && parent.vnode || parent;
278
- } else currentCtx = currentCtx.parent;
279
- }
280
- return normalizedStack;
281
- }
282
- /* v8 ignore start */
283
- function formatTrace(trace) {
284
- const logs = [];
285
- trace.forEach((entry, i) => {
286
- logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));
287
- });
288
- return logs;
289
- }
290
- function formatTraceEntry({ ctx, recurseCount }) {
291
- const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;
292
- const instance = isVNode$2(ctx) ? ctx.component : ctx;
293
- const isRoot = instance ? instance.parent == null : false;
294
- const open = ` at <${formatComponentName(instance, ctx.type, isRoot)}`;
295
- const close = `>` + postfix;
296
- return ctx.props ? [
297
- open,
298
- ...formatProps(ctx.props),
299
- close
300
- ] : [open + close];
301
- }
302
- function formatProps(props) {
303
- const res = [];
304
- const keys = Object.keys(props);
305
- keys.slice(0, 3).forEach((key) => {
306
- res.push(...formatProp(key, props[key]));
307
- });
308
- if (keys.length > 3) res.push(` ...`);
309
- return res;
310
- }
311
- function formatProp(key, value, raw) {
312
- if ((0, _vue_shared.isString)(value)) {
313
- value = JSON.stringify(value);
314
- return raw ? value : [`${key}=${value}`];
315
- } else if (typeof value === "number" || typeof value === "boolean" || value == null) return raw ? value : [`${key}=${value}`];
316
- else if (/* @__PURE__ */ isRef(value)) {
317
- value = formatProp(key, /* @__PURE__ */ toRaw(value.value), true);
318
- return raw ? value : [
319
- `${key}=Ref<`,
320
- value,
321
- `>`
322
- ];
323
- } else if ((0, _vue_shared.isFunction)(value)) return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];
324
- else {
325
- value = /* @__PURE__ */ toRaw(value);
326
- return raw ? value : [`${key}=`, value];
327
- }
328
- }
329
- /* v8 ignore stop */
330
- //#endregion
331
- //#region packages/runtime-core/src/errorHandling.ts
332
- const ErrorTypeStrings = {
333
- ["sp"]: "serverPrefetch hook",
334
- ["bc"]: "beforeCreate hook",
335
- ["c"]: "created hook",
336
- ["bm"]: "beforeMount hook",
337
- ["m"]: "mounted hook",
338
- ["bu"]: "beforeUpdate hook",
339
- ["u"]: "updated",
340
- ["bum"]: "beforeUnmount hook",
341
- ["um"]: "unmounted hook",
342
- ["a"]: "activated hook",
343
- ["da"]: "deactivated hook",
344
- ["ec"]: "errorCaptured hook",
345
- ["rtc"]: "renderTracked hook",
346
- ["rtg"]: "renderTriggered hook",
347
- [0]: "setup function",
348
- [1]: "render function",
349
- [2]: "watcher getter",
350
- [3]: "watcher callback",
351
- [4]: "watcher cleanup function",
352
- [5]: "native event handler",
353
- [6]: "component event handler",
354
- [7]: "vnode hook",
355
- [8]: "directive hook",
356
- [9]: "transition hook",
357
- [10]: "app errorHandler",
358
- [11]: "app warnHandler",
359
- [12]: "ref function",
360
- [13]: "async component loader",
361
- [14]: "scheduler flush",
362
- [15]: "component update",
363
- [16]: "app unmount cleanup function"
364
- };
365
- function callWithErrorHandling(fn, instance, type, args) {
366
- try {
367
- return args ? fn(...args) : fn();
368
- } catch (err) {
369
- handleError(err, instance, type);
370
- }
371
- }
372
- function handleError(err, instance, type, throwInDev = true) {
373
- const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || _vue_shared.EMPTY_OBJ;
374
- if (instance) {
375
- let cur = instance.parent;
376
- const exposedInstance = instance.proxy || instance;
377
- const errorInfo = ErrorTypeStrings[type];
378
- while (cur) {
379
- const errorCapturedHooks = cur.ec;
380
- if (errorCapturedHooks) {
381
- for (let i = 0; i < errorCapturedHooks.length; i++) if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) return;
382
- }
383
- cur = cur.parent;
384
- }
385
- if (errorHandler) {
386
- const prevSub = setActiveSub();
387
- callWithErrorHandling(errorHandler, null, 10, [
388
- err,
389
- exposedInstance,
390
- errorInfo
391
- ]);
392
- setActiveSub(prevSub);
393
- return;
394
- }
395
- }
396
- logError(err, type, instance, throwInDev, throwUnhandledErrorInProduction);
397
- }
398
- function logError(err, type, instance, throwInDev = true, throwInProd = false) {
399
- {
400
- const info = ErrorTypeStrings[type];
401
- if (instance) pushWarningContext$1(instance);
402
- warn$3(`Unhandled error${info ? ` during execution of ${info}` : ``}`);
403
- if (instance) popWarningContext$1();
404
- if (throwInDev) throw err;
405
- else console.error(err);
406
- }
407
- }
408
- //#endregion
409
- //#region packages/runtime-core/src/vnode.ts
410
- function isVNode$2(value) {
411
- return value ? value.__v_isVNode === true : false;
412
- }
413
- //#endregion
414
- //#region packages/runtime-core/src/component.ts
415
- const classifyRE = /(?:^|[-_])\w/g;
416
- const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, "");
417
- function getComponentName(Component, includeInferred = true) {
418
- return (0, _vue_shared.isFunction)(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
419
- }
420
- function formatComponentName(instance, Component, isRoot = false) {
421
- let name = getComponentName(Component);
422
- if (!name && Component.__file) {
423
- const match = Component.__file.match(/([^/\\]+)\.\w+$/);
424
- if (match) name = match[1];
425
- }
426
- if (!name && instance) {
427
- const inferFromRegistry = (registry) => {
428
- for (const key in registry) if (registry[key] === Component) return key;
429
- };
430
- name = inferFromRegistry(instance.components) || instance.parent && inferFromRegistry(instance.parent.type.components) || inferFromRegistry(instance.appContext.components);
431
- }
432
- return name ? classify(name) : isRoot ? `App` : `Anonymous`;
433
- }
434
- //#endregion
435
- //#region packages/runtime-core/src/index.ts
436
- const warn$2 = warn$3;
437
- //#endregion
438
211
  //#region packages/server-renderer/src/helpers/ssrRenderList.ts
439
212
  function ssrRenderList(source, renderItem) {
440
213
  if ((0, _vue_shared.isArray)(source) || (0, _vue_shared.isString)(source)) for (let i = 0, l = source.length; i < l; i++) renderItem(source[i], i);
441
214
  else if (typeof source === "number") {
442
215
  if (!Number.isInteger(source) || source < 0) {
443
- warn$2(`The v-for range expects a positive integer value but got ${source}.`);
216
+ (0, _vue_runtime_dom.warn)(`The v-for range expects a positive integer value but got ${source}.`);
444
217
  return;
445
218
  }
446
219
  for (let i = 0; i < source; i++) renderItem(i + 1, i);
447
- } else if ((0, _vue_shared.isObject)(source)) if (source[Symbol.iterator]) {
448
- const arr = Array.from(source);
449
- for (let i = 0, l = arr.length; i < l; i++) renderItem(arr[i], i);
450
- } else {
451
- const keys = Object.keys(source);
452
- for (let i = 0, l = keys.length; i < l; i++) {
453
- const key = keys[i];
454
- renderItem(source[key], key, i);
220
+ } else if ((0, _vue_shared.isObject)(source)) {
221
+ if (source[Symbol.iterator]) {
222
+ let i = 0;
223
+ for (const item of source) renderItem(item, i++);
224
+ } else {
225
+ const keys = Object.keys(source);
226
+ for (let i = 0, l = keys.length; i < l; i++) {
227
+ const key = keys[i];
228
+ renderItem(source[key], key, i);
229
+ }
455
230
  }
456
231
  }
457
232
  }
458
233
  //#endregion
459
234
  //#region packages/server-renderer/src/helpers/ssrRenderSuspense.ts
460
- async function ssrRenderSuspense(push, { default: renderContent }) {
235
+ function ssrRenderSuspense(push, { default: renderContent }) {
461
236
  if (renderContent) renderContent();
462
237
  else push(`<!---->`);
463
238
  }
@@ -466,7 +241,7 @@ async function ssrRenderSuspense(push, { default: renderContent }) {
466
241
  function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {
467
242
  if (typeof dir !== "function" && dir.getSSRProps) return dir.getSSRProps({
468
243
  dir,
469
- instance: vue.ssrUtils.getComponentPublicInstance(instance.$),
244
+ instance: _vue_runtime_dom.ssrUtils.getComponentPublicInstance(instance.$),
470
245
  value,
471
246
  oldValue: void 0,
472
247
  arg,
@@ -543,12 +318,12 @@ function ssrCompile(template, instance) {
543
318
  {
544
319
  const message = `[@vue/server-renderer] Template compilation error: ${err.message}`;
545
320
  const codeFrame = err.loc && (0, _vue_shared.generateCodeFrame)(template, err.loc.start.offset, err.loc.end.offset);
546
- (0, vue.warn)(codeFrame ? `${message}\n${codeFrame}` : message);
321
+ (0, _vue_runtime_dom.warn)(codeFrame ? `${message}\n${codeFrame}` : message);
547
322
  }
548
323
  };
549
324
  const { code } = (0, _vue_compiler_ssr.compile)(template, finalCompilerOptions);
550
325
  const requireMap = {
551
- vue,
326
+ vue: _vue_runtime_dom,
552
327
  "vue/server-renderer": internal_exports
553
328
  };
554
329
  const fakeRequire = (id) => requireMap[id];
@@ -556,7 +331,7 @@ function ssrCompile(template, instance) {
556
331
  }
557
332
  //#endregion
558
333
  //#region packages/server-renderer/src/render.ts
559
- const { createComponentInstance, setCurrentRenderingInstance, setupComponent, renderComponentRoot, normalizeVNode, pushWarningContext, popWarningContext } = vue.ssrUtils;
334
+ const { createComponentInstance, setCurrentRenderingInstance, setupComponent, renderComponentRoot, isVNode: isVNode$2, normalizeVNode, pushWarningContext, popWarningContext, VaporSlot, rawVaporSlotKey, invokeSlotFallback } = _vue_runtime_dom.ssrUtils;
560
335
  function cleanupContext(context) {
561
336
  let firstError;
562
337
  if (context.__watcherHandles) {
@@ -596,9 +371,43 @@ function createBuffer() {
596
371
  }
597
372
  };
598
373
  }
374
+ const vaporOutlets = /* @__PURE__ */ new WeakMap();
375
+ const vaporInterface = { attachSlotOutlet(content, fallback, owner) {
376
+ const lone = isVaporSlotContent(content);
377
+ if (lone) vaporOutlets.set(content, {
378
+ fallback,
379
+ owner
380
+ });
381
+ return lone;
382
+ } };
383
+ function isVaporSlotContent(children) {
384
+ const lone = findVaporSlot(children);
385
+ vaporSlot = null;
386
+ return lone;
387
+ }
388
+ let vaporSlot = null;
389
+ function findVaporSlot(children) {
390
+ for (let i = 0; i < children.length; i++) {
391
+ const child = children[i];
392
+ if (!isVNode$2(child)) return false;
393
+ if (child.type === VaporSlot) {
394
+ if (vaporSlot) return false;
395
+ vaporSlot = child;
396
+ } else if (child.type === _vue_runtime_dom.Fragment) {
397
+ if (child.patchFlag > 0 && child.patchFlag & 384 || !findVaporSlot(child.children)) return false;
398
+ } else if (child.type !== _vue_runtime_dom.Comment) return false;
399
+ }
400
+ return true;
401
+ }
599
402
  function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
403
+ const ctx = vnode.ctx;
404
+ if (vnode.shapeFlag & 32 && ctx && ctx.type.__vapor) {
405
+ const slots = vnode.children;
406
+ for (const name in slots) if ((0, _vue_shared.isFunction)(slots[name])) slots[name][rawVaporSlotKey] = slots[name];
407
+ if (!ctx.appContext.vapor) ctx.appContext.vapor = vaporInterface;
408
+ }
600
409
  const instance = vnode.component = createComponentInstance(vnode, parentComponent, null);
601
- const context = instance.appContext.provides[vue.ssrContextKey];
410
+ const context = instance.appContext.provides[_vue_runtime_dom.ssrContextKey];
602
411
  if (context) (context.__instanceScopes || (context.__instanceScopes = [])).push(instance.scope);
603
412
  pushWarningContext(vnode);
604
413
  const res = setupComponent(instance, true);
@@ -609,7 +418,11 @@ function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
609
418
  if (hasAsyncSetup) prefetches = instance.sp;
610
419
  if (prefetches) return Promise.all(prefetches.map((prefetch) => prefetch.call(instance.proxy)));
611
420
  }).catch(_vue_shared.NOOP).then(() => renderComponentSubTree(instance, slotScopeId));
612
- else return renderComponentSubTree(instance, slotScopeId);
421
+ else try {
422
+ return renderComponentSubTree(instance, slotScopeId);
423
+ } catch (err) {
424
+ return Promise.reject(err);
425
+ }
613
426
  }
614
427
  function renderComponentSubTree(instance, slotScopeId) {
615
428
  pushWarningContext(instance.vnode);
@@ -649,12 +462,15 @@ function renderComponentSubTree(instance, slotScopeId) {
649
462
  const prev = setCurrentRenderingInstance(instance);
650
463
  try {
651
464
  ssrRender(instance.proxy, push, instance, attrs, instance.props, instance.setupState, instance.data, instance.ctx);
465
+ } catch (err) {
466
+ (0, _vue_runtime_dom.handleError)(err, instance, 1);
652
467
  } finally {
653
468
  setCurrentRenderingInstance(prev);
654
469
  }
655
470
  } else if (instance.render && instance.render !== _vue_shared.NOOP) renderVNode(push, instance.subTree = renderComponentRoot(instance), instance, slotScopeId);
656
471
  else {
657
- (0, vue.warn)(`Component ${comp.name || comp.__file || `<Anonymous>`} is missing template or render function.`);
472
+ const componentName = comp.name || comp.__file || `<Anonymous>`;
473
+ (0, _vue_runtime_dom.warn)(`Component ${componentName} is missing template or render function.`);
658
474
  push(`<!---->`);
659
475
  }
660
476
  }
@@ -665,28 +481,46 @@ function renderVNode(push, vnode, parentComponent, slotScopeId) {
665
481
  const { type, shapeFlag, children, dirs, props } = vnode;
666
482
  if (dirs) vnode.props = applySSRDirectives(vnode, props, dirs);
667
483
  switch (type) {
668
- case vue.Text:
484
+ case _vue_runtime_dom.Text:
669
485
  push((0, _vue_shared.escapeHtml)(children));
670
486
  break;
671
- case vue.Comment:
487
+ case _vue_runtime_dom.Comment:
672
488
  push(children ? `<!--${(0, _vue_shared.escapeHtmlComment)(children)}-->` : `<!---->`);
673
489
  break;
674
- case vue.Static:
490
+ case _vue_runtime_dom.Static:
675
491
  push(children);
676
492
  break;
677
- case vue.Fragment:
493
+ case _vue_runtime_dom.Fragment: {
678
494
  if (vnode.slotScopeIds) slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" ");
679
- push(`<!--[-->`);
495
+ const outlet = vnode.vo && vaporOutlets.get(children);
496
+ if (outlet) {
497
+ renderVaporOutlet(push, (_, push) => renderVNodeChildren(push, children, parentComponent, slotScopeId), null, outlet, parentComponent, slotScopeId);
498
+ break;
499
+ }
500
+ const isFallback = shapeFlag & 1024;
501
+ push(isFallback ? `<!--(-->` : `<!--[-->`);
680
502
  renderVNodeChildren(push, children, parentComponent, slotScopeId);
681
- push(`<!--]-->`);
503
+ push(isFallback ? `<!--)-->` : `<!--]-->`);
504
+ break;
505
+ }
506
+ case VaporSlot: {
507
+ if (vnode.slotScopeIds) slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" ");
508
+ const { slot, outlets } = vnode.vs;
509
+ renderVaporOutlet(push, slot, vnode.props, outlets && outlets[0], parentComponent, slotScopeId);
682
510
  break;
511
+ }
683
512
  default: if (shapeFlag & 1) renderElementVNode(push, vnode, parentComponent, slotScopeId);
684
513
  else if (shapeFlag & 6) push(renderComponentVNode(vnode, parentComponent, slotScopeId));
685
514
  else if (shapeFlag & 64) renderTeleportVNode(push, vnode, parentComponent, slotScopeId);
686
515
  else if (shapeFlag & 128) renderVNode(push, vnode.ssContent, parentComponent, slotScopeId);
687
- else (0, vue.warn)("[@vue/server-renderer] Invalid VNode type:", type, `(${typeof type})`);
516
+ else (0, _vue_runtime_dom.warn)("[@vue/server-renderer] Invalid VNode type:", type, `(${typeof type})`);
688
517
  }
689
518
  }
519
+ function renderVaporOutlet(push, slot, props, outlet, parentComponent, slotScopeId) {
520
+ const prev = setCurrentRenderingInstance(parentComponent);
521
+ ssrRenderSlot({ default: slot }, "default", props, outlet ? () => renderVNodeChildren(push, invokeSlotFallback(outlet.fallback, outlet.owner), parentComponent, slotScopeId) : null, push, parentComponent, slotScopeId);
522
+ setCurrentRenderingInstance(prev);
523
+ }
690
524
  function renderVNodeChildren(push, children, parentComponent, slotScopeId) {
691
525
  for (let i = 0; i < children.length; i++) renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId);
692
526
  }
@@ -695,15 +529,25 @@ function renderElementVNode(push, vnode, parentComponent, slotScopeId) {
695
529
  let { props, children, shapeFlag, scopeId } = vnode;
696
530
  let openTag = `<${tag}`;
697
531
  if (props) openTag += ssrRenderAttrs(props, tag);
698
- if (scopeId) openTag += ` ${scopeId}`;
532
+ const renderedScopeIds = [];
533
+ const appendScopeId = (id) => {
534
+ if (id && (!props || !(0, _vue_shared.hasOwn)(props, id)) && !renderedScopeIds.includes(id)) {
535
+ openTag += ` ${id}`;
536
+ renderedScopeIds.push(id);
537
+ }
538
+ };
539
+ if (scopeId) appendScopeId(scopeId);
699
540
  let curParent = parentComponent;
700
541
  let curVnode = vnode;
701
542
  while (curParent && curVnode === curParent.subTree) {
702
543
  curVnode = curParent.vnode;
703
- if (curVnode.scopeId) openTag += ` ${curVnode.scopeId}`;
544
+ if (curVnode.scopeId) appendScopeId(curVnode.scopeId);
704
545
  curParent = curParent.parent;
705
546
  }
706
- if (slotScopeId) openTag += ` ${slotScopeId}`;
547
+ if (slotScopeId) {
548
+ const slotScopeIdList = slotScopeId.trim().split(" ");
549
+ for (let i = 0; i < slotScopeIdList.length; i++) appendScopeId(slotScopeIdList[i]);
550
+ }
707
551
  push(openTag + `>`);
708
552
  if (!(0, _vue_shared.isVoidTag)(tag)) {
709
553
  let hasChildrenOverride = false;
@@ -736,17 +580,17 @@ function applySSRDirectives(vnode, rawProps, dirs) {
736
580
  if (props) toMerge.push(props);
737
581
  }
738
582
  }
739
- return (0, vue.mergeProps)(rawProps || {}, ...toMerge);
583
+ return (0, _vue_runtime_dom.mergeProps)(rawProps || {}, ...toMerge);
740
584
  }
741
585
  function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
742
586
  const target = vnode.props && vnode.props.to;
743
587
  const disabled = vnode.props && vnode.props.disabled;
744
588
  if (!target) {
745
- if (!disabled) (0, vue.warn)(`[@vue/server-renderer] Teleport is missing target prop.`);
589
+ if (!disabled) (0, _vue_runtime_dom.warn)(`[@vue/server-renderer] Teleport is missing target prop.`);
746
590
  return [];
747
591
  }
748
592
  if (!(0, _vue_shared.isString)(target)) {
749
- (0, vue.warn)(`[@vue/server-renderer] Teleport target must be a query selector string.`);
593
+ (0, _vue_runtime_dom.warn)(`[@vue/server-renderer] Teleport target must be a query selector string.`);
750
594
  return [];
751
595
  }
752
596
  ssrRenderTeleport(push, (push) => {
@@ -755,7 +599,7 @@ function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
755
599
  }
756
600
  //#endregion
757
601
  //#region packages/server-renderer/src/renderToString.ts
758
- const { isVNode: isVNode$1 } = vue.ssrUtils;
602
+ const { isVNode: isVNode$1 } = _vue_runtime_dom.ssrUtils;
759
603
  function nestedUnrollBuffer(buffer, parentRet, startIndex) {
760
604
  if (!buffer.hasAsync) return parentRet + unrollBufferSync$1(buffer);
761
605
  let ret = parentRet;
@@ -791,10 +635,10 @@ function unrollBufferSync$1(buffer) {
791
635
  return ret;
792
636
  }
793
637
  async function renderToString(input, context = {}) {
794
- if (isVNode$1(input)) return renderToString((0, vue.createApp)({ render: () => input }), context);
795
- const vnode = (0, vue.createVNode)(input._component, input._props);
638
+ if (isVNode$1(input)) return renderToString((0, _vue_runtime_dom.createApp)({ render: () => input }), context);
639
+ const vnode = (0, _vue_runtime_dom.createVNode)(input._component, input._props);
796
640
  vnode.appContext = input._context;
797
- input.provide(vue.ssrContextKey, context);
641
+ input.provide(_vue_runtime_dom.ssrContextKey, context);
798
642
  try {
799
643
  const result = await unrollBuffer$1(await renderComponentVNode(vnode));
800
644
  await resolveTeleports(context);
@@ -806,12 +650,12 @@ async function renderToString(input, context = {}) {
806
650
  async function resolveTeleports(context) {
807
651
  if (context.__teleportBuffers) {
808
652
  context.teleports = context.teleports || {};
809
- for (const key in context.__teleportBuffers) context.teleports[key] = await unrollBuffer$1(await Promise.all([context.__teleportBuffers[key]]));
653
+ for (const key in context.__teleportBuffers) context.teleports[key] = await unrollBuffer$1(context.__teleportBuffers[key]);
810
654
  }
811
655
  }
812
656
  //#endregion
813
657
  //#region packages/server-renderer/src/renderToStream.ts
814
- const { isVNode } = vue.ssrUtils;
658
+ const { isVNode } = _vue_runtime_dom.ssrUtils;
815
659
  async function unrollBuffer(buffer, stream) {
816
660
  if (buffer.hasAsync) for (let i = 0; i < buffer.length; i++) {
817
661
  let item = buffer[i];
@@ -829,10 +673,10 @@ function unrollBufferSync(buffer, stream) {
829
673
  }
830
674
  }
831
675
  function renderToSimpleStream(input, context, stream) {
832
- if (isVNode(input)) return renderToSimpleStream((0, vue.createApp)({ render: () => input }), context, stream);
833
- const vnode = (0, vue.createVNode)(input._component, input._props);
676
+ if (isVNode(input)) return renderToSimpleStream((0, _vue_runtime_dom.createApp)({ render: () => input }), context, stream);
677
+ const vnode = (0, _vue_runtime_dom.createVNode)(input._component, input._props);
834
678
  vnode.appContext = input._context;
835
- input.provide(vue.ssrContextKey, context);
679
+ input.provide(_vue_runtime_dom.ssrContextKey, context);
836
680
  let cleaned = false;
837
681
  const finalize = () => {
838
682
  if (cleaned) return;
@@ -916,7 +760,7 @@ function pipeToWebWritable(input, context = {}, writable) {
916
760
  }
917
761
  //#endregion
918
762
  //#region packages/server-renderer/src/index.ts
919
- (0, vue.initDirectivesForSSR)();
763
+ (0, _vue_runtime_dom.initDirectivesForSSR)();
920
764
  //#endregion
921
765
  exports.pipeToNodeWritable = pipeToNodeWritable;
922
766
  exports.pipeToWebWritable = pipeToWebWritable;