@vue/server-renderer 3.6.0-beta.7 → 3.6.0-beta.9

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,9 +1,12 @@
1
1
  /**
2
- * @vue/server-renderer v3.6.0-beta.7
2
+ * @vue/server-renderer v3.6.0-beta.9
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
6
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
6
+ Object.defineProperties(exports, {
7
+ __esModule: { value: true },
8
+ [Symbol.toStringTag]: { value: "Module" }
9
+ });
7
10
  //#region \0rolldown/runtime.js
8
11
  var __create = Object.create;
9
12
  var __defProp = Object.defineProperty;
@@ -13,28 +16,20 @@ var __getProtoOf = Object.getPrototypeOf;
13
16
  var __hasOwnProp = Object.prototype.hasOwnProperty;
14
17
  var __exportAll = (all, no_symbols) => {
15
18
  let target = {};
16
- for (var name in all) {
17
- __defProp(target, name, {
18
- get: all[name],
19
- enumerable: true
20
- });
21
- }
22
- if (!no_symbols) {
23
- __defProp(target, Symbol.toStringTag, { value: "Module" });
24
- }
19
+ for (var name in all) __defProp(target, name, {
20
+ get: all[name],
21
+ enumerable: true
22
+ });
23
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
25
24
  return target;
26
25
  };
27
26
  var __copyProps = (to, from, except, desc) => {
28
- if (from && typeof from === "object" || typeof from === "function") {
29
- for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
30
- key = keys[i];
31
- if (!__hasOwnProp.call(to, key) && key !== except) {
32
- __defProp(to, key, {
33
- get: ((k) => from[k]).bind(null, key),
34
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
35
- });
36
- }
37
- }
27
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
28
+ key = keys[i];
29
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
30
+ get: ((k) => from[k]).bind(null, key),
31
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
32
+ });
38
33
  }
39
34
  return to;
40
35
  };
@@ -42,13 +37,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
42
37
  value: mod,
43
38
  enumerable: true
44
39
  }) : target, mod));
45
-
46
40
  //#endregion
47
41
  let vue = require("vue");
48
42
  vue = __toESM(vue);
49
43
  let _vue_shared = require("@vue/shared");
50
44
  let _vue_compiler_ssr = require("@vue/compiler-ssr");
51
-
52
45
  //#region packages/server-renderer/src/helpers/ssrRenderAttrs.ts
53
46
  const shouldIgnoreProp = /* @__PURE__ */ (0, _vue_shared.makeMap)(`,key,ref,innerHTML,textContent,ref_key,ref_for`);
54
47
  function ssrRenderAttrs(props, tag) {
@@ -96,13 +89,11 @@ function ssrResetCssVars(raw) {
96
89
  }
97
90
  return raw;
98
91
  }
99
-
100
92
  //#endregion
101
93
  //#region packages/server-renderer/src/helpers/ssrRenderComponent.ts
102
94
  function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) {
103
95
  return renderComponentVNode((0, vue.createVNode)(comp, props, children), parentComponent, slotScopeId);
104
96
  }
105
-
106
97
  //#endregion
107
98
  //#region packages/server-renderer/src/helpers/ssrRenderSlot.ts
108
99
  const { ensureValidVNode } = vue.ssrUtils;
@@ -154,7 +145,6 @@ function isComment(item) {
154
145
  if (item.length <= 8) return true;
155
146
  return !item.replace(commentRE, "").trim();
156
147
  }
157
-
158
148
  //#endregion
159
149
  //#region packages/server-renderer/src/helpers/ssrRenderTeleport.ts
160
150
  function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) {
@@ -177,13 +167,11 @@ function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parent
177
167
  targetBuffer.splice(bufferIndex, 0, teleportContent);
178
168
  parentPush("<!--teleport end-->");
179
169
  }
180
-
181
170
  //#endregion
182
171
  //#region packages/server-renderer/src/helpers/ssrInterpolate.ts
183
172
  function ssrInterpolate(value) {
184
173
  return (0, _vue_shared.escapeHtml)((0, _vue_shared.toDisplayString)(value));
185
174
  }
186
-
187
175
  //#endregion
188
176
  //#region packages/reactivity/src/system.ts
189
177
  let activeSub = void 0;
@@ -194,7 +182,6 @@ function setActiveSub(sub) {
194
182
  activeSub = sub;
195
183
  }
196
184
  }
197
-
198
185
  //#endregion
199
186
  //#region packages/reactivity/src/reactive.ts
200
187
  /**
@@ -225,14 +212,12 @@ function toRaw(observed) {
225
212
  const raw = observed && observed["__v_raw"];
226
213
  return raw ? /* @__PURE__ */ toRaw(raw) : observed;
227
214
  }
228
-
229
215
  //#endregion
230
216
  //#region packages/reactivity/src/ref.ts
231
217
  /* @__NO_SIDE_EFFECTS__ */
232
218
  function isRef(r) {
233
219
  return r ? r["__v_isRef"] === true : false;
234
220
  }
235
-
236
221
  //#endregion
237
222
  //#region packages/runtime-core/src/warning.ts
238
223
  const stack = [];
@@ -259,8 +244,8 @@ function warn$3(msg, ...args) {
259
244
  const trace = getComponentTrace();
260
245
  if (appWarnHandler) callWithErrorHandling(appWarnHandler, instance, 11, [
261
246
  msg + args.map((a) => {
262
- var _a$toString, _a$toString2;
263
- return (_a$toString = (_a$toString2 = a.toString) === null || _a$toString2 === void 0 ? void 0 : _a$toString2.call(a)) !== null && _a$toString !== void 0 ? _a$toString : JSON.stringify(a);
247
+ const toString = a.toString;
248
+ return toString == null ? JSON.stringify(a) : toString.call(a);
264
249
  }).join(""),
265
250
  instance && instance.proxy || instance,
266
251
  trace.map(({ ctx }) => `at <${formatComponentName(instance, ctx.type)}>`).join("\n"),
@@ -342,7 +327,6 @@ function formatProp(key, value, raw) {
342
327
  }
343
328
  }
344
329
  /* v8 ignore stop */
345
-
346
330
  //#endregion
347
331
  //#region packages/runtime-core/src/errorHandling.ts
348
332
  const ErrorTypeStrings = {
@@ -421,18 +405,11 @@ function logError(err, type, instance, throwInDev = true, throwInProd = false) {
421
405
  else console.error(err);
422
406
  }
423
407
  }
424
-
425
408
  //#endregion
426
409
  //#region packages/runtime-core/src/vnode.ts
427
- const Fragment$1 = Symbol.for("v-fgt");
428
- const Text$1 = Symbol.for("v-txt");
429
- const Comment$1 = Symbol.for("v-cmt");
430
- const Static$1 = Symbol.for("v-stc");
431
- const VaporSlot = Symbol.for("v-vps");
432
410
  function isVNode$2(value) {
433
411
  return value ? value.__v_isVNode === true : false;
434
412
  }
435
-
436
413
  //#endregion
437
414
  //#region packages/runtime-core/src/component.ts
438
415
  const classifyRE = /(?:^|[-_])\w/g;
@@ -454,18 +431,16 @@ function formatComponentName(instance, Component, isRoot = false) {
454
431
  }
455
432
  return name ? classify(name) : isRoot ? `App` : `Anonymous`;
456
433
  }
457
-
458
434
  //#endregion
459
435
  //#region packages/runtime-core/src/index.ts
460
436
  const warn$2 = warn$3;
461
-
462
437
  //#endregion
463
438
  //#region packages/server-renderer/src/helpers/ssrRenderList.ts
464
439
  function ssrRenderList(source, renderItem) {
465
440
  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);
466
441
  else if (typeof source === "number") {
467
- if (!Number.isInteger(source)) {
468
- warn$2(`The v-for range expect an integer value but got ${source}.`);
442
+ if (!Number.isInteger(source) || source < 0) {
443
+ warn$2(`The v-for range expects a positive integer value but got ${source}.`);
469
444
  return;
470
445
  }
471
446
  for (let i = 0; i < source; i++) renderItem(i + 1, i);
@@ -480,14 +455,12 @@ function ssrRenderList(source, renderItem) {
480
455
  }
481
456
  }
482
457
  }
483
-
484
458
  //#endregion
485
459
  //#region packages/server-renderer/src/helpers/ssrRenderSuspense.ts
486
460
  async function ssrRenderSuspense(push, { default: renderContent }) {
487
461
  if (renderContent) renderContent();
488
462
  else push(`<!---->`);
489
463
  }
490
-
491
464
  //#endregion
492
465
  //#region packages/server-renderer/src/helpers/ssrGetDirectiveProps.ts
493
466
  function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {
@@ -501,7 +474,6 @@ function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {
501
474
  }, null) || {};
502
475
  return {};
503
476
  }
504
-
505
477
  //#endregion
506
478
  //#region packages/server-renderer/src/helpers/ssrVModelHelpers.ts
507
479
  const ssrLooseEqual = _vue_shared.looseEqual;
@@ -523,7 +495,6 @@ function ssrGetDynamicModelProps(existingProps = {}, model) {
523
495
  default: return { value: model };
524
496
  }
525
497
  }
526
-
527
498
  //#endregion
528
499
  //#region packages/server-renderer/src/internal.ts
529
500
  var internal_exports = /* @__PURE__ */ __exportAll({
@@ -547,7 +518,6 @@ var internal_exports = /* @__PURE__ */ __exportAll({
547
518
  ssrRenderTeleport: () => ssrRenderTeleport,
548
519
  ssrRenderVNode: () => renderVNode
549
520
  });
550
-
551
521
  //#endregion
552
522
  //#region packages/server-renderer/src/helpers/ssrCompile.ts
553
523
  const compileCache = Object.create(null);
@@ -584,10 +554,29 @@ function ssrCompile(template, instance) {
584
554
  const fakeRequire = (id) => requireMap[id];
585
555
  return compileCache[cacheKey] = Function("require", code)(fakeRequire);
586
556
  }
587
-
588
557
  //#endregion
589
558
  //#region packages/server-renderer/src/render.ts
590
559
  const { createComponentInstance, setCurrentRenderingInstance, setupComponent, renderComponentRoot, normalizeVNode, pushWarningContext, popWarningContext } = vue.ssrUtils;
560
+ function cleanupContext(context) {
561
+ let firstError;
562
+ if (context.__watcherHandles) {
563
+ for (const unwatch of context.__watcherHandles) try {
564
+ unwatch();
565
+ } catch (err) {
566
+ if (firstError === void 0) firstError = err;
567
+ }
568
+ context.__watcherHandles.length = 0;
569
+ }
570
+ if (context.__instanceScopes) {
571
+ for (const scope of context.__instanceScopes) try {
572
+ scope.stop();
573
+ } catch (err) {
574
+ if (firstError === void 0) firstError = err;
575
+ }
576
+ context.__instanceScopes.length = 0;
577
+ }
578
+ if (firstError !== void 0) throw firstError;
579
+ }
591
580
  function createBuffer() {
592
581
  let appendable = false;
593
582
  const buffer = [];
@@ -609,6 +598,8 @@ function createBuffer() {
609
598
  }
610
599
  function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
611
600
  const instance = vnode.component = createComponentInstance(vnode, parentComponent, null);
601
+ const context = instance.appContext.provides[vue.ssrContextKey];
602
+ if (context) (context.__instanceScopes || (context.__instanceScopes = [])).push(instance.scope);
612
603
  pushWarningContext(vnode);
613
604
  const res = setupComponent(instance, true);
614
605
  popWarningContext();
@@ -762,7 +753,6 @@ function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
762
753
  renderVNodeChildren(push, vnode.children, parentComponent, slotScopeId);
763
754
  }, target, disabled || disabled === "", parentComponent);
764
755
  }
765
-
766
756
  //#endregion
767
757
  //#region packages/server-renderer/src/renderToString.ts
768
758
  const { isVNode: isVNode$1 } = vue.ssrUtils;
@@ -805,10 +795,13 @@ async function renderToString(input, context = {}) {
805
795
  const vnode = (0, vue.createVNode)(input._component, input._props);
806
796
  vnode.appContext = input._context;
807
797
  input.provide(vue.ssrContextKey, context);
808
- const result = await unrollBuffer$1(await renderComponentVNode(vnode));
809
- await resolveTeleports(context);
810
- if (context.__watcherHandles) for (const unwatch of context.__watcherHandles) unwatch();
811
- return result;
798
+ try {
799
+ const result = await unrollBuffer$1(await renderComponentVNode(vnode));
800
+ await resolveTeleports(context);
801
+ return result;
802
+ } finally {
803
+ cleanupContext(context);
804
+ }
812
805
  }
813
806
  async function resolveTeleports(context) {
814
807
  if (context.__teleportBuffers) {
@@ -816,7 +809,6 @@ async function resolveTeleports(context) {
816
809
  for (const key in context.__teleportBuffers) context.teleports[key] = await unrollBuffer$1(await Promise.all([context.__teleportBuffers[key]]));
817
810
  }
818
811
  }
819
-
820
812
  //#endregion
821
813
  //#region packages/server-renderer/src/renderToStream.ts
822
814
  const { isVNode } = vue.ssrUtils;
@@ -831,7 +823,7 @@ async function unrollBuffer(buffer, stream) {
831
823
  }
832
824
  function unrollBufferSync(buffer, stream) {
833
825
  for (let i = 0; i < buffer.length; i++) {
834
- let item = buffer[i];
826
+ const item = buffer[i];
835
827
  if ((0, _vue_shared.isString)(item)) stream.push(item);
836
828
  else unrollBufferSync(item, stream);
837
829
  }
@@ -841,9 +833,19 @@ function renderToSimpleStream(input, context, stream) {
841
833
  const vnode = (0, vue.createVNode)(input._component, input._props);
842
834
  vnode.appContext = input._context;
843
835
  input.provide(vue.ssrContextKey, context);
844
- Promise.resolve(renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => {
845
- if (context.__watcherHandles) for (const unwatch of context.__watcherHandles) unwatch();
846
- }).then(() => stream.push(null)).catch((error) => {
836
+ let cleaned = false;
837
+ const finalize = () => {
838
+ if (cleaned) return;
839
+ cleaned = true;
840
+ cleanupContext(context);
841
+ };
842
+ Promise.resolve().then(() => renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => {
843
+ finalize();
844
+ return stream.push(null);
845
+ }).catch((error) => {
846
+ try {
847
+ finalize();
848
+ } catch {}
847
849
  stream.destroy(error);
848
850
  });
849
851
  return stream;
@@ -912,11 +914,9 @@ function pipeToWebWritable(input, context = {}, writable) {
912
914
  }
913
915
  });
914
916
  }
915
-
916
917
  //#endregion
917
918
  //#region packages/server-renderer/src/index.ts
918
919
  (0, vue.initDirectivesForSSR)();
919
-
920
920
  //#endregion
921
921
  exports.pipeToNodeWritable = pipeToNodeWritable;
922
922
  exports.pipeToWebWritable = pipeToWebWritable;
@@ -943,4 +943,4 @@ exports.ssrRenderSlotInner = ssrRenderSlotInner;
943
943
  exports.ssrRenderStyle = ssrRenderStyle;
944
944
  exports.ssrRenderSuspense = ssrRenderSuspense;
945
945
  exports.ssrRenderTeleport = ssrRenderTeleport;
946
- exports.ssrRenderVNode = renderVNode;
946
+ exports.ssrRenderVNode = renderVNode;
@@ -1,9 +1,12 @@
1
1
  /**
2
- * @vue/server-renderer v3.6.0-beta.7
2
+ * @vue/server-renderer v3.6.0-beta.9
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
6
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
6
+ Object.defineProperties(exports, {
7
+ __esModule: { value: true },
8
+ [Symbol.toStringTag]: { value: "Module" }
9
+ });
7
10
  //#region \0rolldown/runtime.js
8
11
  var __create = Object.create;
9
12
  var __defProp = Object.defineProperty;
@@ -13,28 +16,20 @@ var __getProtoOf = Object.getPrototypeOf;
13
16
  var __hasOwnProp = Object.prototype.hasOwnProperty;
14
17
  var __exportAll = (all, no_symbols) => {
15
18
  let target = {};
16
- for (var name in all) {
17
- __defProp(target, name, {
18
- get: all[name],
19
- enumerable: true
20
- });
21
- }
22
- if (!no_symbols) {
23
- __defProp(target, Symbol.toStringTag, { value: "Module" });
24
- }
19
+ for (var name in all) __defProp(target, name, {
20
+ get: all[name],
21
+ enumerable: true
22
+ });
23
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
25
24
  return target;
26
25
  };
27
26
  var __copyProps = (to, from, except, desc) => {
28
- if (from && typeof from === "object" || typeof from === "function") {
29
- for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
30
- key = keys[i];
31
- if (!__hasOwnProp.call(to, key) && key !== except) {
32
- __defProp(to, key, {
33
- get: ((k) => from[k]).bind(null, key),
34
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
35
- });
36
- }
37
- }
27
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
28
+ key = keys[i];
29
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
30
+ get: ((k) => from[k]).bind(null, key),
31
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
32
+ });
38
33
  }
39
34
  return to;
40
35
  };
@@ -42,13 +37,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
42
37
  value: mod,
43
38
  enumerable: true
44
39
  }) : target, mod));
45
-
46
40
  //#endregion
47
41
  let vue = require("vue");
48
42
  vue = __toESM(vue);
49
43
  let _vue_shared = require("@vue/shared");
50
44
  let _vue_compiler_ssr = require("@vue/compiler-ssr");
51
-
52
45
  //#region packages/server-renderer/src/helpers/ssrRenderAttrs.ts
53
46
  const shouldIgnoreProp = /* @__PURE__ */ (0, _vue_shared.makeMap)(`,key,ref,innerHTML,textContent,ref_key,ref_for`);
54
47
  function ssrRenderAttrs(props, tag) {
@@ -96,13 +89,11 @@ function ssrResetCssVars(raw) {
96
89
  }
97
90
  return raw;
98
91
  }
99
-
100
92
  //#endregion
101
93
  //#region packages/server-renderer/src/helpers/ssrRenderComponent.ts
102
94
  function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) {
103
95
  return renderComponentVNode((0, vue.createVNode)(comp, props, children), parentComponent, slotScopeId);
104
96
  }
105
-
106
97
  //#endregion
107
98
  //#region packages/server-renderer/src/helpers/ssrRenderSlot.ts
108
99
  const { ensureValidVNode } = vue.ssrUtils;
@@ -154,7 +145,6 @@ function isComment(item) {
154
145
  if (item.length <= 8) return true;
155
146
  return !item.replace(commentRE, "").trim();
156
147
  }
157
-
158
148
  //#endregion
159
149
  //#region packages/server-renderer/src/helpers/ssrRenderTeleport.ts
160
150
  function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) {
@@ -177,13 +167,11 @@ function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parent
177
167
  targetBuffer.splice(bufferIndex, 0, teleportContent);
178
168
  parentPush("<!--teleport end-->");
179
169
  }
180
-
181
170
  //#endregion
182
171
  //#region packages/server-renderer/src/helpers/ssrInterpolate.ts
183
172
  function ssrInterpolate(value) {
184
173
  return (0, _vue_shared.escapeHtml)((0, _vue_shared.toDisplayString)(value));
185
174
  }
186
-
187
175
  //#endregion
188
176
  //#region packages/server-renderer/src/helpers/ssrRenderList.ts
189
177
  function ssrRenderList(source, renderItem) {
@@ -200,14 +188,12 @@ function ssrRenderList(source, renderItem) {
200
188
  }
201
189
  }
202
190
  }
203
-
204
191
  //#endregion
205
192
  //#region packages/server-renderer/src/helpers/ssrRenderSuspense.ts
206
193
  async function ssrRenderSuspense(push, { default: renderContent }) {
207
194
  if (renderContent) renderContent();
208
195
  else push(`<!---->`);
209
196
  }
210
-
211
197
  //#endregion
212
198
  //#region packages/server-renderer/src/helpers/ssrGetDirectiveProps.ts
213
199
  function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {
@@ -221,7 +207,6 @@ function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {
221
207
  }, null) || {};
222
208
  return {};
223
209
  }
224
-
225
210
  //#endregion
226
211
  //#region packages/server-renderer/src/helpers/ssrVModelHelpers.ts
227
212
  const ssrLooseEqual = _vue_shared.looseEqual;
@@ -243,7 +228,6 @@ function ssrGetDynamicModelProps(existingProps = {}, model) {
243
228
  default: return { value: model };
244
229
  }
245
230
  }
246
-
247
231
  //#endregion
248
232
  //#region packages/server-renderer/src/internal.ts
249
233
  var internal_exports = /* @__PURE__ */ __exportAll({
@@ -267,7 +251,6 @@ var internal_exports = /* @__PURE__ */ __exportAll({
267
251
  ssrRenderTeleport: () => ssrRenderTeleport,
268
252
  ssrRenderVNode: () => renderVNode
269
253
  });
270
-
271
254
  //#endregion
272
255
  //#region packages/server-renderer/src/helpers/ssrCompile.ts
273
256
  const compileCache = Object.create(null);
@@ -300,10 +283,29 @@ function ssrCompile(template, instance) {
300
283
  const fakeRequire = (id) => requireMap[id];
301
284
  return compileCache[cacheKey] = Function("require", code)(fakeRequire);
302
285
  }
303
-
304
286
  //#endregion
305
287
  //#region packages/server-renderer/src/render.ts
306
288
  const { createComponentInstance, setCurrentRenderingInstance, setupComponent, renderComponentRoot, normalizeVNode, pushWarningContext, popWarningContext } = vue.ssrUtils;
289
+ function cleanupContext(context) {
290
+ let firstError;
291
+ if (context.__watcherHandles) {
292
+ for (const unwatch of context.__watcherHandles) try {
293
+ unwatch();
294
+ } catch (err) {
295
+ if (firstError === void 0) firstError = err;
296
+ }
297
+ context.__watcherHandles.length = 0;
298
+ }
299
+ if (context.__instanceScopes) {
300
+ for (const scope of context.__instanceScopes) try {
301
+ scope.stop();
302
+ } catch (err) {
303
+ if (firstError === void 0) firstError = err;
304
+ }
305
+ context.__instanceScopes.length = 0;
306
+ }
307
+ if (firstError !== void 0) throw firstError;
308
+ }
307
309
  function createBuffer() {
308
310
  let appendable = false;
309
311
  const buffer = [];
@@ -325,6 +327,8 @@ function createBuffer() {
325
327
  }
326
328
  function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
327
329
  const instance = vnode.component = createComponentInstance(vnode, parentComponent, null);
330
+ const context = instance.appContext.provides[vue.ssrContextKey];
331
+ if (context) (context.__instanceScopes || (context.__instanceScopes = [])).push(instance.scope);
328
332
  const res = setupComponent(instance, true);
329
333
  const hasAsyncSetup = (0, _vue_shared.isPromise)(res);
330
334
  let prefetches = instance.sp;
@@ -474,7 +478,6 @@ function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {
474
478
  renderVNodeChildren(push, vnode.children, parentComponent, slotScopeId);
475
479
  }, target, disabled || disabled === "", parentComponent);
476
480
  }
477
-
478
481
  //#endregion
479
482
  //#region packages/server-renderer/src/renderToString.ts
480
483
  const { isVNode: isVNode$1 } = vue.ssrUtils;
@@ -517,10 +520,13 @@ async function renderToString(input, context = {}) {
517
520
  const vnode = (0, vue.createVNode)(input._component, input._props);
518
521
  vnode.appContext = input._context;
519
522
  input.provide(vue.ssrContextKey, context);
520
- const result = await unrollBuffer$1(await renderComponentVNode(vnode));
521
- await resolveTeleports(context);
522
- if (context.__watcherHandles) for (const unwatch of context.__watcherHandles) unwatch();
523
- return result;
523
+ try {
524
+ const result = await unrollBuffer$1(await renderComponentVNode(vnode));
525
+ await resolveTeleports(context);
526
+ return result;
527
+ } finally {
528
+ cleanupContext(context);
529
+ }
524
530
  }
525
531
  async function resolveTeleports(context) {
526
532
  if (context.__teleportBuffers) {
@@ -528,7 +534,6 @@ async function resolveTeleports(context) {
528
534
  for (const key in context.__teleportBuffers) context.teleports[key] = await unrollBuffer$1(await Promise.all([context.__teleportBuffers[key]]));
529
535
  }
530
536
  }
531
-
532
537
  //#endregion
533
538
  //#region packages/server-renderer/src/renderToStream.ts
534
539
  const { isVNode } = vue.ssrUtils;
@@ -543,7 +548,7 @@ async function unrollBuffer(buffer, stream) {
543
548
  }
544
549
  function unrollBufferSync(buffer, stream) {
545
550
  for (let i = 0; i < buffer.length; i++) {
546
- let item = buffer[i];
551
+ const item = buffer[i];
547
552
  if ((0, _vue_shared.isString)(item)) stream.push(item);
548
553
  else unrollBufferSync(item, stream);
549
554
  }
@@ -553,9 +558,19 @@ function renderToSimpleStream(input, context, stream) {
553
558
  const vnode = (0, vue.createVNode)(input._component, input._props);
554
559
  vnode.appContext = input._context;
555
560
  input.provide(vue.ssrContextKey, context);
556
- Promise.resolve(renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => {
557
- if (context.__watcherHandles) for (const unwatch of context.__watcherHandles) unwatch();
558
- }).then(() => stream.push(null)).catch((error) => {
561
+ let cleaned = false;
562
+ const finalize = () => {
563
+ if (cleaned) return;
564
+ cleaned = true;
565
+ cleanupContext(context);
566
+ };
567
+ Promise.resolve().then(() => renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => {
568
+ finalize();
569
+ return stream.push(null);
570
+ }).catch((error) => {
571
+ try {
572
+ finalize();
573
+ } catch {}
559
574
  stream.destroy(error);
560
575
  });
561
576
  return stream;
@@ -624,11 +639,9 @@ function pipeToWebWritable(input, context = {}, writable) {
624
639
  }
625
640
  });
626
641
  }
627
-
628
642
  //#endregion
629
643
  //#region packages/server-renderer/src/index.ts
630
644
  (0, vue.initDirectivesForSSR)();
631
-
632
645
  //#endregion
633
646
  exports.pipeToNodeWritable = pipeToNodeWritable;
634
647
  exports.pipeToWebWritable = pipeToWebWritable;
@@ -655,4 +668,4 @@ exports.ssrRenderSlotInner = ssrRenderSlotInner;
655
668
  exports.ssrRenderStyle = ssrRenderStyle;
656
669
  exports.ssrRenderSuspense = ssrRenderSuspense;
657
670
  exports.ssrRenderTeleport = ssrRenderTeleport;
658
- exports.ssrRenderVNode = renderVNode;
671
+ exports.ssrRenderVNode = renderVNode;