@vue/server-renderer 3.6.0-beta.8 → 3.6.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/server-renderer v3.6.0-beta.8
2
+ * @vue/server-renderer v3.6.0-rc.1
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -38,8 +38,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
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
@@ -92,11 +92,16 @@ function ssrResetCssVars(raw) {
92
92
  //#endregion
93
93
  //#region packages/server-renderer/src/helpers/ssrRenderComponent.ts
94
94
  function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) {
95
- return renderComponentVNode((0, vue.createVNode)(comp, props, children), parentComponent, slotScopeId);
95
+ if ((0, _vue_shared.isString)(comp)) {
96
+ const { getBuffer, push } = createBuffer();
97
+ renderVNode(push, (0, _vue_runtime_dom.createVNode)(comp, props, children), parentComponent, slotScopeId);
98
+ return getBuffer();
99
+ }
100
+ return renderComponentVNode((0, _vue_runtime_dom.createVNode)(comp, props, children), parentComponent, slotScopeId);
96
101
  }
97
102
  //#endregion
98
103
  //#region packages/server-renderer/src/helpers/ssrRenderSlot.ts
99
- const { ensureValidVNode } = vue.ssrUtils;
104
+ const { ensureValidVNode } = _vue_runtime_dom.ssrUtils;
100
105
  function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) {
101
106
  push(`<!--[-->`);
102
107
  ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId);
@@ -149,7 +154,7 @@ function isComment(item) {
149
154
  //#region packages/server-renderer/src/helpers/ssrRenderTeleport.ts
150
155
  function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) {
151
156
  parentPush("<!--teleport start-->");
152
- const context = parentComponent.appContext.provides[vue.ssrContextKey];
157
+ const context = parentComponent.appContext.provides[_vue_runtime_dom.ssrContextKey];
153
158
  const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {});
154
159
  const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []);
155
160
  const bufferIndex = targetBuffer.length;
@@ -165,6 +170,7 @@ function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parent
165
170
  teleportContent = getBuffer();
166
171
  }
167
172
  targetBuffer.splice(bufferIndex, 0, teleportContent);
173
+ if ((0, _vue_shared.isPromise)(teleportContent) || (0, _vue_shared.isArray)(teleportContent) && teleportContent.hasAsync) targetBuffer.hasAsync = true;
168
174
  parentPush("<!--teleport end-->");
169
175
  }
170
176
  //#endregion
@@ -173,278 +179,18 @@ function ssrInterpolate(value) {
173
179
  return (0, _vue_shared.escapeHtml)((0, _vue_shared.toDisplayString)(value));
174
180
  }
175
181
  //#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
- function isVNode$2(value) {
409
- return value ? value.__v_isVNode === true : false;
410
- }
411
- //#endregion
412
- //#region packages/runtime-core/src/component.ts
413
- const classifyRE = /(?:^|[-_])\w/g;
414
- const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, "");
415
- function getComponentName(Component, includeInferred = true) {
416
- return (0, _vue_shared.isFunction)(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
417
- }
418
- function formatComponentName(instance, Component, isRoot = false) {
419
- let name = getComponentName(Component);
420
- if (!name && Component.__file) {
421
- const match = Component.__file.match(/([^/\\]+)\.\w+$/);
422
- if (match) name = match[1];
423
- }
424
- if (!name && instance) {
425
- const inferFromRegistry = (registry) => {
426
- for (const key in registry) if (registry[key] === Component) return key;
427
- };
428
- name = inferFromRegistry(instance.components) || instance.parent && inferFromRegistry(instance.parent.type.components) || inferFromRegistry(instance.appContext.components);
429
- }
430
- return name ? classify(name) : isRoot ? `App` : `Anonymous`;
431
- }
432
- //#endregion
433
- //#region packages/runtime-core/src/index.ts
434
- const warn$2 = warn$3;
435
- //#endregion
436
182
  //#region packages/server-renderer/src/helpers/ssrRenderList.ts
437
183
  function ssrRenderList(source, renderItem) {
438
184
  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);
439
185
  else if (typeof source === "number") {
440
186
  if (!Number.isInteger(source) || source < 0) {
441
- warn$2(`The v-for range expects a positive integer value but got ${source}.`);
187
+ (0, _vue_runtime_dom.warn)(`The v-for range expects a positive integer value but got ${source}.`);
442
188
  return;
443
189
  }
444
190
  for (let i = 0; i < source; i++) renderItem(i + 1, i);
445
191
  } else if ((0, _vue_shared.isObject)(source)) if (source[Symbol.iterator]) {
446
- const arr = Array.from(source);
447
- for (let i = 0, l = arr.length; i < l; i++) renderItem(arr[i], i);
192
+ let i = 0;
193
+ for (const item of source) renderItem(item, i++);
448
194
  } else {
449
195
  const keys = Object.keys(source);
450
196
  for (let i = 0, l = keys.length; i < l; i++) {
@@ -455,7 +201,7 @@ function ssrRenderList(source, renderItem) {
455
201
  }
456
202
  //#endregion
457
203
  //#region packages/server-renderer/src/helpers/ssrRenderSuspense.ts
458
- async function ssrRenderSuspense(push, { default: renderContent }) {
204
+ function ssrRenderSuspense(push, { default: renderContent }) {
459
205
  if (renderContent) renderContent();
460
206
  else push(`<!---->`);
461
207
  }
@@ -464,7 +210,7 @@ async function ssrRenderSuspense(push, { default: renderContent }) {
464
210
  function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {
465
211
  if (typeof dir !== "function" && dir.getSSRProps) return dir.getSSRProps({
466
212
  dir,
467
- instance: vue.ssrUtils.getComponentPublicInstance(instance.$),
213
+ instance: _vue_runtime_dom.ssrUtils.getComponentPublicInstance(instance.$),
468
214
  value,
469
215
  oldValue: void 0,
470
216
  arg,
@@ -541,12 +287,12 @@ function ssrCompile(template, instance) {
541
287
  {
542
288
  const message = `[@vue/server-renderer] Template compilation error: ${err.message}`;
543
289
  const codeFrame = err.loc && (0, _vue_shared.generateCodeFrame)(template, err.loc.start.offset, err.loc.end.offset);
544
- (0, vue.warn)(codeFrame ? `${message}\n${codeFrame}` : message);
290
+ (0, _vue_runtime_dom.warn)(codeFrame ? `${message}\n${codeFrame}` : message);
545
291
  }
546
292
  };
547
293
  const { code } = (0, _vue_compiler_ssr.compile)(template, finalCompilerOptions);
548
294
  const requireMap = {
549
- vue,
295
+ vue: _vue_runtime_dom,
550
296
  "vue/server-renderer": internal_exports
551
297
  };
552
298
  const fakeRequire = (id) => requireMap[id];
@@ -554,7 +300,27 @@ function ssrCompile(template, instance) {
554
300
  }
555
301
  //#endregion
556
302
  //#region packages/server-renderer/src/render.ts
557
- const { createComponentInstance, setCurrentRenderingInstance, setupComponent, renderComponentRoot, normalizeVNode, pushWarningContext, popWarningContext } = vue.ssrUtils;
303
+ const { createComponentInstance, setCurrentRenderingInstance, setupComponent, renderComponentRoot, normalizeVNode, pushWarningContext, popWarningContext } = _vue_runtime_dom.ssrUtils;
304
+ function cleanupContext(context) {
305
+ let firstError;
306
+ if (context.__watcherHandles) {
307
+ for (const unwatch of context.__watcherHandles) try {
308
+ unwatch();
309
+ } catch (err) {
310
+ if (firstError === void 0) firstError = err;
311
+ }
312
+ context.__watcherHandles.length = 0;
313
+ }
314
+ if (context.__instanceScopes) {
315
+ for (const scope of context.__instanceScopes) try {
316
+ scope.stop();
317
+ } catch (err) {
318
+ if (firstError === void 0) firstError = err;
319
+ }
320
+ context.__instanceScopes.length = 0;
321
+ }
322
+ if (firstError !== void 0) throw firstError;
323
+ }
558
324
  function createBuffer() {
559
325
  let appendable = false;
560
326
  const buffer = [];
@@ -576,6 +342,8 @@ function createBuffer() {
576
342
  }
577
343
  function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
578
344
  const instance = vnode.component = createComponentInstance(vnode, parentComponent, null);
345
+ const context = instance.appContext.provides[_vue_runtime_dom.ssrContextKey];
346
+ if (context) (context.__instanceScopes || (context.__instanceScopes = [])).push(instance.scope);
579
347
  pushWarningContext(vnode);
580
348
  const res = setupComponent(instance, true);
581
349
  popWarningContext();
@@ -585,7 +353,11 @@ function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
585
353
  if (hasAsyncSetup) prefetches = instance.sp;
586
354
  if (prefetches) return Promise.all(prefetches.map((prefetch) => prefetch.call(instance.proxy)));
587
355
  }).catch(_vue_shared.NOOP).then(() => renderComponentSubTree(instance, slotScopeId));
588
- else return renderComponentSubTree(instance, slotScopeId);
356
+ else try {
357
+ return renderComponentSubTree(instance, slotScopeId);
358
+ } catch (err) {
359
+ return Promise.reject(err);
360
+ }
589
361
  }
590
362
  function renderComponentSubTree(instance, slotScopeId) {
591
363
  pushWarningContext(instance.vnode);
@@ -625,12 +397,14 @@ function renderComponentSubTree(instance, slotScopeId) {
625
397
  const prev = setCurrentRenderingInstance(instance);
626
398
  try {
627
399
  ssrRender(instance.proxy, push, instance, attrs, instance.props, instance.setupState, instance.data, instance.ctx);
400
+ } catch (err) {
401
+ (0, _vue_runtime_dom.handleError)(err, instance, 1);
628
402
  } finally {
629
403
  setCurrentRenderingInstance(prev);
630
404
  }
631
405
  } else if (instance.render && instance.render !== _vue_shared.NOOP) renderVNode(push, instance.subTree = renderComponentRoot(instance), instance, slotScopeId);
632
406
  else {
633
- (0, vue.warn)(`Component ${comp.name || comp.__file || `<Anonymous>`} is missing template or render function.`);
407
+ (0, _vue_runtime_dom.warn)(`Component ${comp.name || comp.__file || `<Anonymous>`} is missing template or render function.`);
634
408
  push(`<!---->`);
635
409
  }
636
410
  }
@@ -641,16 +415,16 @@ function renderVNode(push, vnode, parentComponent, slotScopeId) {
641
415
  const { type, shapeFlag, children, dirs, props } = vnode;
642
416
  if (dirs) vnode.props = applySSRDirectives(vnode, props, dirs);
643
417
  switch (type) {
644
- case vue.Text:
418
+ case _vue_runtime_dom.Text:
645
419
  push((0, _vue_shared.escapeHtml)(children));
646
420
  break;
647
- case vue.Comment:
421
+ case _vue_runtime_dom.Comment:
648
422
  push(children ? `<!--${(0, _vue_shared.escapeHtmlComment)(children)}-->` : `<!---->`);
649
423
  break;
650
- case vue.Static:
424
+ case _vue_runtime_dom.Static:
651
425
  push(children);
652
426
  break;
653
- case vue.Fragment:
427
+ case _vue_runtime_dom.Fragment:
654
428
  if (vnode.slotScopeIds) slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" ");
655
429
  push(`<!--[-->`);
656
430
  renderVNodeChildren(push, children, parentComponent, slotScopeId);
@@ -660,7 +434,7 @@ function renderVNode(push, vnode, parentComponent, slotScopeId) {
660
434
  else if (shapeFlag & 6) push(renderComponentVNode(vnode, parentComponent, slotScopeId));
661
435
  else if (shapeFlag & 64) renderTeleportVNode(push, vnode, parentComponent, slotScopeId);
662
436
  else if (shapeFlag & 128) renderVNode(push, vnode.ssContent, parentComponent, slotScopeId);
663
- else (0, vue.warn)("[@vue/server-renderer] Invalid VNode type:", type, `(${typeof type})`);
437
+ else (0, _vue_runtime_dom.warn)("[@vue/server-renderer] Invalid VNode type:", type, `(${typeof type})`);
664
438
  }
665
439
  }
666
440
  function renderVNodeChildren(push, children, parentComponent, slotScopeId) {
@@ -671,15 +445,25 @@ function renderElementVNode(push, vnode, parentComponent, slotScopeId) {
671
445
  let { props, children, shapeFlag, scopeId } = vnode;
672
446
  let openTag = `<${tag}`;
673
447
  if (props) openTag += ssrRenderAttrs(props, tag);
674
- if (scopeId) openTag += ` ${scopeId}`;
448
+ const renderedScopeIds = [];
449
+ const appendScopeId = (id) => {
450
+ if (id && (!props || !(0, _vue_shared.hasOwn)(props, id)) && !renderedScopeIds.includes(id)) {
451
+ openTag += ` ${id}`;
452
+ renderedScopeIds.push(id);
453
+ }
454
+ };
455
+ if (scopeId) appendScopeId(scopeId);
675
456
  let curParent = parentComponent;
676
457
  let curVnode = vnode;
677
458
  while (curParent && curVnode === curParent.subTree) {
678
459
  curVnode = curParent.vnode;
679
- if (curVnode.scopeId) openTag += ` ${curVnode.scopeId}`;
460
+ if (curVnode.scopeId) appendScopeId(curVnode.scopeId);
680
461
  curParent = curParent.parent;
681
462
  }
682
- if (slotScopeId) openTag += ` ${slotScopeId}`;
463
+ if (slotScopeId) {
464
+ const slotScopeIdList = slotScopeId.trim().split(" ");
465
+ for (let i = 0; i < slotScopeIdList.length; i++) appendScopeId(slotScopeIdList[i]);
466
+ }
683
467
  push(openTag + `>`);
684
468
  if (!(0, _vue_shared.isVoidTag)(tag)) {
685
469
  let hasChildrenOverride = false;
@@ -712,17 +496,17 @@ function applySSRDirectives(vnode, rawProps, dirs) {
712
496
  if (props) toMerge.push(props);
713
497
  }
714
498
  }
715
- return (0, vue.mergeProps)(rawProps || {}, ...toMerge);
499
+ return (0, _vue_runtime_dom.mergeProps)(rawProps || {}, ...toMerge);
716
500
  }
717
501
  function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
718
502
  const target = vnode.props && vnode.props.to;
719
503
  const disabled = vnode.props && vnode.props.disabled;
720
504
  if (!target) {
721
- if (!disabled) (0, vue.warn)(`[@vue/server-renderer] Teleport is missing target prop.`);
505
+ if (!disabled) (0, _vue_runtime_dom.warn)(`[@vue/server-renderer] Teleport is missing target prop.`);
722
506
  return [];
723
507
  }
724
508
  if (!(0, _vue_shared.isString)(target)) {
725
- (0, vue.warn)(`[@vue/server-renderer] Teleport target must be a query selector string.`);
509
+ (0, _vue_runtime_dom.warn)(`[@vue/server-renderer] Teleport target must be a query selector string.`);
726
510
  return [];
727
511
  }
728
512
  ssrRenderTeleport(push, (push) => {
@@ -731,7 +515,7 @@ function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
731
515
  }
732
516
  //#endregion
733
517
  //#region packages/server-renderer/src/renderToString.ts
734
- const { isVNode: isVNode$1 } = vue.ssrUtils;
518
+ const { isVNode: isVNode$1 } = _vue_runtime_dom.ssrUtils;
735
519
  function nestedUnrollBuffer(buffer, parentRet, startIndex) {
736
520
  if (!buffer.hasAsync) return parentRet + unrollBufferSync$1(buffer);
737
521
  let ret = parentRet;
@@ -767,24 +551,27 @@ function unrollBufferSync$1(buffer) {
767
551
  return ret;
768
552
  }
769
553
  async function renderToString(input, context = {}) {
770
- if (isVNode$1(input)) return renderToString((0, vue.createApp)({ render: () => input }), context);
771
- const vnode = (0, vue.createVNode)(input._component, input._props);
554
+ if (isVNode$1(input)) return renderToString((0, _vue_runtime_dom.createApp)({ render: () => input }), context);
555
+ const vnode = (0, _vue_runtime_dom.createVNode)(input._component, input._props);
772
556
  vnode.appContext = input._context;
773
- input.provide(vue.ssrContextKey, context);
774
- const result = await unrollBuffer$1(await renderComponentVNode(vnode));
775
- await resolveTeleports(context);
776
- if (context.__watcherHandles) for (const unwatch of context.__watcherHandles) unwatch();
777
- return result;
557
+ input.provide(_vue_runtime_dom.ssrContextKey, context);
558
+ try {
559
+ const result = await unrollBuffer$1(await renderComponentVNode(vnode));
560
+ await resolveTeleports(context);
561
+ return result;
562
+ } finally {
563
+ cleanupContext(context);
564
+ }
778
565
  }
779
566
  async function resolveTeleports(context) {
780
567
  if (context.__teleportBuffers) {
781
568
  context.teleports = context.teleports || {};
782
- for (const key in context.__teleportBuffers) context.teleports[key] = await unrollBuffer$1(await Promise.all([context.__teleportBuffers[key]]));
569
+ for (const key in context.__teleportBuffers) context.teleports[key] = await unrollBuffer$1(context.__teleportBuffers[key]);
783
570
  }
784
571
  }
785
572
  //#endregion
786
573
  //#region packages/server-renderer/src/renderToStream.ts
787
- const { isVNode } = vue.ssrUtils;
574
+ const { isVNode } = _vue_runtime_dom.ssrUtils;
788
575
  async function unrollBuffer(buffer, stream) {
789
576
  if (buffer.hasAsync) for (let i = 0; i < buffer.length; i++) {
790
577
  let item = buffer[i];
@@ -796,19 +583,29 @@ async function unrollBuffer(buffer, stream) {
796
583
  }
797
584
  function unrollBufferSync(buffer, stream) {
798
585
  for (let i = 0; i < buffer.length; i++) {
799
- let item = buffer[i];
586
+ const item = buffer[i];
800
587
  if ((0, _vue_shared.isString)(item)) stream.push(item);
801
588
  else unrollBufferSync(item, stream);
802
589
  }
803
590
  }
804
591
  function renderToSimpleStream(input, context, stream) {
805
- if (isVNode(input)) return renderToSimpleStream((0, vue.createApp)({ render: () => input }), context, stream);
806
- const vnode = (0, vue.createVNode)(input._component, input._props);
592
+ if (isVNode(input)) return renderToSimpleStream((0, _vue_runtime_dom.createApp)({ render: () => input }), context, stream);
593
+ const vnode = (0, _vue_runtime_dom.createVNode)(input._component, input._props);
807
594
  vnode.appContext = input._context;
808
- input.provide(vue.ssrContextKey, context);
809
- Promise.resolve(renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => {
810
- if (context.__watcherHandles) for (const unwatch of context.__watcherHandles) unwatch();
811
- }).then(() => stream.push(null)).catch((error) => {
595
+ input.provide(_vue_runtime_dom.ssrContextKey, context);
596
+ let cleaned = false;
597
+ const finalize = () => {
598
+ if (cleaned) return;
599
+ cleaned = true;
600
+ cleanupContext(context);
601
+ };
602
+ Promise.resolve().then(() => renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => {
603
+ finalize();
604
+ return stream.push(null);
605
+ }).catch((error) => {
606
+ try {
607
+ finalize();
608
+ } catch {}
812
609
  stream.destroy(error);
813
610
  });
814
611
  return stream;
@@ -879,7 +676,7 @@ function pipeToWebWritable(input, context = {}, writable) {
879
676
  }
880
677
  //#endregion
881
678
  //#region packages/server-renderer/src/index.ts
882
- (0, vue.initDirectivesForSSR)();
679
+ (0, _vue_runtime_dom.initDirectivesForSSR)();
883
680
  //#endregion
884
681
  exports.pipeToNodeWritable = pipeToNodeWritable;
885
682
  exports.pipeToWebWritable = pipeToWebWritable;