@vue/server-renderer 3.6.0-rc.11 → 3.6.0-rc.13
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.
- package/dist/server-renderer.cjs.js +66 -28
- package/dist/server-renderer.cjs.prod.js +70 -30
- package/dist/server-renderer.d.ts +3 -2
- package/dist/server-renderer.esm-browser.js +256 -105
- package/dist/server-renderer.esm-browser.prod.js +2 -2
- package/dist/server-renderer.esm-bundler.js +68 -32
- package/package.json +4 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vue/server-renderer v3.6.0-rc.
|
|
2
|
+
* @vue/server-renderer v3.6.0-rc.13
|
|
3
3
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
4
|
* @license MIT
|
|
5
5
|
**/
|
|
@@ -284,6 +284,7 @@ var internal_exports = /* @__PURE__ */ __exportAll({
|
|
|
284
284
|
ssrRenderClass: () => ssrRenderClass,
|
|
285
285
|
ssrRenderComponent: () => ssrRenderComponent,
|
|
286
286
|
ssrRenderDynamicAttr: () => ssrRenderDynamicAttr,
|
|
287
|
+
ssrRenderDynamicComponent: () => renderDynamicComponent,
|
|
287
288
|
ssrRenderDynamicModel: () => ssrRenderDynamicModel,
|
|
288
289
|
ssrRenderList: () => ssrRenderList,
|
|
289
290
|
ssrRenderSlot: () => ssrRenderSlot,
|
|
@@ -412,7 +413,10 @@ function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
|
|
|
412
413
|
slots[name] = wrapped;
|
|
413
414
|
}
|
|
414
415
|
}
|
|
415
|
-
if (!ctx.appContext.vapor)
|
|
416
|
+
if (!ctx.appContext.vapor) {
|
|
417
|
+
ctx.appContext.vapor = vaporInterface;
|
|
418
|
+
(0, _vue_runtime_dom.setVaporInteropEnabled)();
|
|
419
|
+
}
|
|
416
420
|
}
|
|
417
421
|
const instance = vnode.component = createComponentInstance(vnode, parentComponent, null);
|
|
418
422
|
const context = instance.appContext.provides[_vue_runtime_dom.ssrContextKey];
|
|
@@ -422,15 +426,20 @@ function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
|
|
|
422
426
|
popWarningContext();
|
|
423
427
|
const hasAsyncSetup = (0, _vue_shared.isPromise)(res);
|
|
424
428
|
let prefetches = instance.sp;
|
|
425
|
-
|
|
429
|
+
let p;
|
|
430
|
+
if (hasAsyncSetup || prefetches) p = Promise.resolve(res).then(() => {
|
|
426
431
|
if (hasAsyncSetup) prefetches = instance.sp;
|
|
427
|
-
if (prefetches)
|
|
428
|
-
|
|
432
|
+
if (prefetches) try {
|
|
433
|
+
return Promise.all(prefetches.map((prefetch) => prefetch.call(instance.proxy))).catch(_vue_shared.NOOP);
|
|
434
|
+
} catch {}
|
|
435
|
+
}).then(() => renderComponentSubTree(instance, slotScopeId));
|
|
429
436
|
else try {
|
|
430
437
|
return renderComponentSubTree(instance, slotScopeId);
|
|
431
438
|
} catch (err) {
|
|
432
|
-
|
|
439
|
+
p = Promise.reject(err);
|
|
433
440
|
}
|
|
441
|
+
p.catch(_vue_shared.NOOP);
|
|
442
|
+
return p;
|
|
434
443
|
}
|
|
435
444
|
function renderComponentSubTree(instance, slotScopeId) {
|
|
436
445
|
pushWarningContext(instance.vnode);
|
|
@@ -513,8 +522,8 @@ function renderVNode(push, vnode, parentComponent, slotScopeId) {
|
|
|
513
522
|
}
|
|
514
523
|
case VaporSlot: {
|
|
515
524
|
if (vnode.slotScopeIds) slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" ");
|
|
516
|
-
const { slot, outlets } = vnode.vs;
|
|
517
|
-
renderVaporOutlet(push, slot, vnode.props, outlets && outlets[0], parentComponent, slotScopeId);
|
|
525
|
+
const { slot, outlets, props } = vnode.vs;
|
|
526
|
+
renderVaporOutlet(push, slot, props || vnode.props, outlets && outlets[0], parentComponent, slotScopeId);
|
|
518
527
|
break;
|
|
519
528
|
}
|
|
520
529
|
default: if (shapeFlag & 1) renderElementVNode(push, vnode, parentComponent, slotScopeId);
|
|
@@ -532,7 +541,13 @@ function renderVaporOutlet(push, slot, props, outlet, parentComponent, slotScope
|
|
|
532
541
|
function renderVNodeChildren(push, children, parentComponent, slotScopeId) {
|
|
533
542
|
for (let i = 0; i < children.length; i++) renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId);
|
|
534
543
|
}
|
|
535
|
-
function
|
|
544
|
+
function renderDynamicComponent(push, type, props, slots, parentComponent, slotScopeId) {
|
|
545
|
+
if ((0, _vue_shared.isString)(type) && type) {
|
|
546
|
+
const slot = slots && slots.default;
|
|
547
|
+
renderElementVNode(push, (0, _vue_runtime_dom.createVNode)(type, props), parentComponent, slotScopeId, slot && (() => slot(void 0, push, parentComponent, slotScopeId || "")));
|
|
548
|
+
} else renderVNode(push, (0, _vue_runtime_dom.createVNode)(type, props, slots), parentComponent, slotScopeId);
|
|
549
|
+
}
|
|
550
|
+
function renderElementVNode(push, vnode, parentComponent, slotScopeId, renderChildren) {
|
|
536
551
|
const tag = vnode.type;
|
|
537
552
|
let { props, children, shapeFlag, scopeId } = vnode;
|
|
538
553
|
let openTag = `<${tag}`;
|
|
@@ -560,19 +575,20 @@ function renderElementVNode(push, vnode, parentComponent, slotScopeId) {
|
|
|
560
575
|
if (!(0, _vue_shared.isVoidTag)(tag)) {
|
|
561
576
|
let hasChildrenOverride = false;
|
|
562
577
|
if (props) {
|
|
563
|
-
if (props.innerHTML) {
|
|
578
|
+
if (props.innerHTML != null) {
|
|
564
579
|
hasChildrenOverride = true;
|
|
565
|
-
push(props.innerHTML);
|
|
566
|
-
} else if (props.textContent) {
|
|
580
|
+
push(String(props.innerHTML));
|
|
581
|
+
} else if (props.textContent != null) {
|
|
567
582
|
hasChildrenOverride = true;
|
|
568
583
|
push((0, _vue_shared.escapeHtml)(props.textContent));
|
|
569
|
-
} else if (tag === "textarea" && props.value) {
|
|
584
|
+
} else if (tag === "textarea" && props.value != null) {
|
|
570
585
|
hasChildrenOverride = true;
|
|
571
586
|
push((0, _vue_shared.escapeHtml)(props.value));
|
|
572
587
|
}
|
|
573
588
|
}
|
|
574
589
|
if (!hasChildrenOverride) {
|
|
575
|
-
if (
|
|
590
|
+
if (renderChildren) renderChildren();
|
|
591
|
+
else if (shapeFlag & 8) push((0, _vue_shared.escapeHtml)(children));
|
|
576
592
|
else if (shapeFlag & 16) renderVNodeChildren(push, children, parentComponent, slotScopeId);
|
|
577
593
|
}
|
|
578
594
|
push(`</${tag}>`);
|
|
@@ -647,13 +663,41 @@ async function renderToString(input, context = {}) {
|
|
|
647
663
|
const vnode = (0, _vue_runtime_dom.createVNode)(input._component, input._props);
|
|
648
664
|
vnode.appContext = input._context;
|
|
649
665
|
input.provide(_vue_runtime_dom.ssrContextKey, context);
|
|
666
|
+
let buffer;
|
|
667
|
+
let result;
|
|
650
668
|
try {
|
|
651
|
-
|
|
669
|
+
buffer = await renderComponentVNode(vnode);
|
|
670
|
+
result = await unrollBuffer$1(buffer);
|
|
652
671
|
await resolveTeleports(context);
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
672
|
+
} catch (err) {
|
|
673
|
+
cleanupFailedRender(buffer, context);
|
|
674
|
+
throw err;
|
|
656
675
|
}
|
|
676
|
+
cleanupContext(context);
|
|
677
|
+
return result;
|
|
678
|
+
}
|
|
679
|
+
/**
|
|
680
|
+
* Stops watchers without masking the render error. Components after the
|
|
681
|
+
* failure point are still in flight and can register watchers once the render
|
|
682
|
+
* has settled, so those are stopped when they finish.
|
|
683
|
+
* Cleanup errors here have already been reported by the watcher.
|
|
684
|
+
*/
|
|
685
|
+
function cleanupFailedRender(buffer, context) {
|
|
686
|
+
try {
|
|
687
|
+
cleanupContext(context);
|
|
688
|
+
} catch {}
|
|
689
|
+
(async () => {
|
|
690
|
+
if (buffer) await settleBuffer(buffer);
|
|
691
|
+
for (const key in context.__teleportBuffers) await settleBuffer(context.__teleportBuffers[key]);
|
|
692
|
+
cleanupContext(context);
|
|
693
|
+
})().catch(_vue_shared.NOOP);
|
|
694
|
+
}
|
|
695
|
+
async function settleBuffer(buffer) {
|
|
696
|
+
if (!buffer.hasAsync) return;
|
|
697
|
+
for (let item of buffer) try {
|
|
698
|
+
if ((0, _vue_shared.isPromise)(item)) item = await item;
|
|
699
|
+
if (!(0, _vue_shared.isString)(item)) await settleBuffer(item);
|
|
700
|
+
} catch {}
|
|
657
701
|
}
|
|
658
702
|
async function resolveTeleports(context) {
|
|
659
703
|
if (context.__teleportBuffers) {
|
|
@@ -685,19 +729,12 @@ function renderToSimpleStream(input, context, stream) {
|
|
|
685
729
|
const vnode = (0, _vue_runtime_dom.createVNode)(input._component, input._props);
|
|
686
730
|
vnode.appContext = input._context;
|
|
687
731
|
input.provide(_vue_runtime_dom.ssrContextKey, context);
|
|
688
|
-
let
|
|
689
|
-
|
|
690
|
-
if (cleaned) return;
|
|
691
|
-
cleaned = true;
|
|
732
|
+
let buffer;
|
|
733
|
+
Promise.resolve().then(() => renderComponentVNode(vnode)).then((b) => unrollBuffer(buffer = b, stream)).then(() => resolveTeleports(context)).then(() => {
|
|
692
734
|
cleanupContext(context);
|
|
693
|
-
};
|
|
694
|
-
Promise.resolve().then(() => renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => {
|
|
695
|
-
finalize();
|
|
696
735
|
return stream.push(null);
|
|
697
736
|
}).catch((error) => {
|
|
698
|
-
|
|
699
|
-
finalize();
|
|
700
|
-
} catch {}
|
|
737
|
+
cleanupFailedRender(buffer, context);
|
|
701
738
|
stream.destroy(error);
|
|
702
739
|
});
|
|
703
740
|
return stream;
|
|
@@ -788,6 +825,7 @@ exports.ssrRenderAttrs = ssrRenderAttrs;
|
|
|
788
825
|
exports.ssrRenderClass = ssrRenderClass;
|
|
789
826
|
exports.ssrRenderComponent = ssrRenderComponent;
|
|
790
827
|
exports.ssrRenderDynamicAttr = ssrRenderDynamicAttr;
|
|
828
|
+
exports.ssrRenderDynamicComponent = renderDynamicComponent;
|
|
791
829
|
exports.ssrRenderDynamicModel = ssrRenderDynamicModel;
|
|
792
830
|
exports.ssrRenderList = ssrRenderList;
|
|
793
831
|
exports.ssrRenderSlot = ssrRenderSlot;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vue/server-renderer v3.6.0-rc.
|
|
2
|
+
* @vue/server-renderer v3.6.0-rc.13
|
|
3
3
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
4
|
* @license MIT
|
|
5
5
|
**/
|
|
@@ -211,8 +211,10 @@ function ssrInterpolate(value) {
|
|
|
211
211
|
//#region packages/server-renderer/src/helpers/ssrRenderList.ts
|
|
212
212
|
function ssrRenderList(source, renderItem) {
|
|
213
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);
|
|
214
|
-
else if (typeof source === "number")
|
|
215
|
-
|
|
214
|
+
else if (typeof source === "number") {
|
|
215
|
+
if (!Number.isInteger(source) || source < 0) return;
|
|
216
|
+
for (let i = 0; i < source; i++) renderItem(i + 1, i);
|
|
217
|
+
} else if ((0, _vue_shared.isObject)(source)) {
|
|
216
218
|
if (source[Symbol.iterator]) {
|
|
217
219
|
let i = 0;
|
|
218
220
|
for (const item of source) renderItem(item, i++);
|
|
@@ -279,6 +281,7 @@ var internal_exports = /* @__PURE__ */ __exportAll({
|
|
|
279
281
|
ssrRenderClass: () => ssrRenderClass,
|
|
280
282
|
ssrRenderComponent: () => ssrRenderComponent,
|
|
281
283
|
ssrRenderDynamicAttr: () => ssrRenderDynamicAttr,
|
|
284
|
+
ssrRenderDynamicComponent: () => renderDynamicComponent,
|
|
282
285
|
ssrRenderDynamicModel: () => ssrRenderDynamicModel,
|
|
283
286
|
ssrRenderList: () => ssrRenderList,
|
|
284
287
|
ssrRenderSlot: () => ssrRenderSlot,
|
|
@@ -403,7 +406,10 @@ function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
|
|
|
403
406
|
slots[name] = wrapped;
|
|
404
407
|
}
|
|
405
408
|
}
|
|
406
|
-
if (!ctx.appContext.vapor)
|
|
409
|
+
if (!ctx.appContext.vapor) {
|
|
410
|
+
ctx.appContext.vapor = vaporInterface;
|
|
411
|
+
(0, _vue_runtime_dom.setVaporInteropEnabled)();
|
|
412
|
+
}
|
|
407
413
|
}
|
|
408
414
|
const instance = vnode.component = createComponentInstance(vnode, parentComponent, null);
|
|
409
415
|
const context = instance.appContext.provides[_vue_runtime_dom.ssrContextKey];
|
|
@@ -411,15 +417,20 @@ function renderComponentVNode(vnode, parentComponent = null, slotScopeId) {
|
|
|
411
417
|
const res = setupComponent(instance, true);
|
|
412
418
|
const hasAsyncSetup = (0, _vue_shared.isPromise)(res);
|
|
413
419
|
let prefetches = instance.sp;
|
|
414
|
-
|
|
420
|
+
let p;
|
|
421
|
+
if (hasAsyncSetup || prefetches) p = Promise.resolve(res).then(() => {
|
|
415
422
|
if (hasAsyncSetup) prefetches = instance.sp;
|
|
416
|
-
if (prefetches)
|
|
417
|
-
|
|
423
|
+
if (prefetches) try {
|
|
424
|
+
return Promise.all(prefetches.map((prefetch) => prefetch.call(instance.proxy))).catch(_vue_shared.NOOP);
|
|
425
|
+
} catch {}
|
|
426
|
+
}).then(() => renderComponentSubTree(instance, slotScopeId));
|
|
418
427
|
else try {
|
|
419
428
|
return renderComponentSubTree(instance, slotScopeId);
|
|
420
429
|
} catch (err) {
|
|
421
|
-
|
|
430
|
+
p = Promise.reject(err);
|
|
422
431
|
}
|
|
432
|
+
p.catch(_vue_shared.NOOP);
|
|
433
|
+
return p;
|
|
423
434
|
}
|
|
424
435
|
function renderComponentSubTree(instance, slotScopeId) {
|
|
425
436
|
const comp = instance.type;
|
|
@@ -500,8 +511,8 @@ function renderVNode(push, vnode, parentComponent, slotScopeId) {
|
|
|
500
511
|
}
|
|
501
512
|
case VaporSlot: {
|
|
502
513
|
if (vnode.slotScopeIds) slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" ");
|
|
503
|
-
const { slot, outlets } = vnode.vs;
|
|
504
|
-
renderVaporOutlet(push, slot, vnode.props, outlets && outlets[0], parentComponent, slotScopeId);
|
|
514
|
+
const { slot, outlets, props } = vnode.vs;
|
|
515
|
+
renderVaporOutlet(push, slot, props || vnode.props, outlets && outlets[0], parentComponent, slotScopeId);
|
|
505
516
|
break;
|
|
506
517
|
}
|
|
507
518
|
default: if (shapeFlag & 1) renderElementVNode(push, vnode, parentComponent, slotScopeId);
|
|
@@ -519,7 +530,13 @@ function renderVaporOutlet(push, slot, props, outlet, parentComponent, slotScope
|
|
|
519
530
|
function renderVNodeChildren(push, children, parentComponent, slotScopeId) {
|
|
520
531
|
for (let i = 0; i < children.length; i++) renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId);
|
|
521
532
|
}
|
|
522
|
-
function
|
|
533
|
+
function renderDynamicComponent(push, type, props, slots, parentComponent, slotScopeId) {
|
|
534
|
+
if ((0, _vue_shared.isString)(type) && type) {
|
|
535
|
+
const slot = slots && slots.default;
|
|
536
|
+
renderElementVNode(push, (0, _vue_runtime_dom.createVNode)(type, props), parentComponent, slotScopeId, slot && (() => slot(void 0, push, parentComponent, slotScopeId || "")));
|
|
537
|
+
} else renderVNode(push, (0, _vue_runtime_dom.createVNode)(type, props, slots), parentComponent, slotScopeId);
|
|
538
|
+
}
|
|
539
|
+
function renderElementVNode(push, vnode, parentComponent, slotScopeId, renderChildren) {
|
|
523
540
|
const tag = vnode.type;
|
|
524
541
|
let { props, children, shapeFlag, scopeId } = vnode;
|
|
525
542
|
let openTag = `<${tag}`;
|
|
@@ -547,19 +564,20 @@ function renderElementVNode(push, vnode, parentComponent, slotScopeId) {
|
|
|
547
564
|
if (!(0, _vue_shared.isVoidTag)(tag)) {
|
|
548
565
|
let hasChildrenOverride = false;
|
|
549
566
|
if (props) {
|
|
550
|
-
if (props.innerHTML) {
|
|
567
|
+
if (props.innerHTML != null) {
|
|
551
568
|
hasChildrenOverride = true;
|
|
552
|
-
push(props.innerHTML);
|
|
553
|
-
} else if (props.textContent) {
|
|
569
|
+
push(String(props.innerHTML));
|
|
570
|
+
} else if (props.textContent != null) {
|
|
554
571
|
hasChildrenOverride = true;
|
|
555
572
|
push((0, _vue_shared.escapeHtml)(props.textContent));
|
|
556
|
-
} else if (tag === "textarea" && props.value) {
|
|
573
|
+
} else if (tag === "textarea" && props.value != null) {
|
|
557
574
|
hasChildrenOverride = true;
|
|
558
575
|
push((0, _vue_shared.escapeHtml)(props.value));
|
|
559
576
|
}
|
|
560
577
|
}
|
|
561
578
|
if (!hasChildrenOverride) {
|
|
562
|
-
if (
|
|
579
|
+
if (renderChildren) renderChildren();
|
|
580
|
+
else if (shapeFlag & 8) push((0, _vue_shared.escapeHtml)(children));
|
|
563
581
|
else if (shapeFlag & 16) renderVNodeChildren(push, children, parentComponent, slotScopeId);
|
|
564
582
|
}
|
|
565
583
|
push(`</${tag}>`);
|
|
@@ -634,13 +652,41 @@ async function renderToString(input, context = {}) {
|
|
|
634
652
|
const vnode = (0, _vue_runtime_dom.createVNode)(input._component, input._props);
|
|
635
653
|
vnode.appContext = input._context;
|
|
636
654
|
input.provide(_vue_runtime_dom.ssrContextKey, context);
|
|
655
|
+
let buffer;
|
|
656
|
+
let result;
|
|
637
657
|
try {
|
|
638
|
-
|
|
658
|
+
buffer = await renderComponentVNode(vnode);
|
|
659
|
+
result = await unrollBuffer$1(buffer);
|
|
639
660
|
await resolveTeleports(context);
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
661
|
+
} catch (err) {
|
|
662
|
+
cleanupFailedRender(buffer, context);
|
|
663
|
+
throw err;
|
|
643
664
|
}
|
|
665
|
+
cleanupContext(context);
|
|
666
|
+
return result;
|
|
667
|
+
}
|
|
668
|
+
/**
|
|
669
|
+
* Stops watchers without masking the render error. Components after the
|
|
670
|
+
* failure point are still in flight and can register watchers once the render
|
|
671
|
+
* has settled, so those are stopped when they finish.
|
|
672
|
+
* Cleanup errors here have already been reported by the watcher.
|
|
673
|
+
*/
|
|
674
|
+
function cleanupFailedRender(buffer, context) {
|
|
675
|
+
try {
|
|
676
|
+
cleanupContext(context);
|
|
677
|
+
} catch {}
|
|
678
|
+
(async () => {
|
|
679
|
+
if (buffer) await settleBuffer(buffer);
|
|
680
|
+
for (const key in context.__teleportBuffers) await settleBuffer(context.__teleportBuffers[key]);
|
|
681
|
+
cleanupContext(context);
|
|
682
|
+
})().catch(_vue_shared.NOOP);
|
|
683
|
+
}
|
|
684
|
+
async function settleBuffer(buffer) {
|
|
685
|
+
if (!buffer.hasAsync) return;
|
|
686
|
+
for (let item of buffer) try {
|
|
687
|
+
if ((0, _vue_shared.isPromise)(item)) item = await item;
|
|
688
|
+
if (!(0, _vue_shared.isString)(item)) await settleBuffer(item);
|
|
689
|
+
} catch {}
|
|
644
690
|
}
|
|
645
691
|
async function resolveTeleports(context) {
|
|
646
692
|
if (context.__teleportBuffers) {
|
|
@@ -672,19 +718,12 @@ function renderToSimpleStream(input, context, stream) {
|
|
|
672
718
|
const vnode = (0, _vue_runtime_dom.createVNode)(input._component, input._props);
|
|
673
719
|
vnode.appContext = input._context;
|
|
674
720
|
input.provide(_vue_runtime_dom.ssrContextKey, context);
|
|
675
|
-
let
|
|
676
|
-
|
|
677
|
-
if (cleaned) return;
|
|
678
|
-
cleaned = true;
|
|
721
|
+
let buffer;
|
|
722
|
+
Promise.resolve().then(() => renderComponentVNode(vnode)).then((b) => unrollBuffer(buffer = b, stream)).then(() => resolveTeleports(context)).then(() => {
|
|
679
723
|
cleanupContext(context);
|
|
680
|
-
};
|
|
681
|
-
Promise.resolve().then(() => renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => {
|
|
682
|
-
finalize();
|
|
683
724
|
return stream.push(null);
|
|
684
725
|
}).catch((error) => {
|
|
685
|
-
|
|
686
|
-
finalize();
|
|
687
|
-
} catch {}
|
|
726
|
+
cleanupFailedRender(buffer, context);
|
|
688
727
|
stream.destroy(error);
|
|
689
728
|
});
|
|
690
729
|
return stream;
|
|
@@ -775,6 +814,7 @@ exports.ssrRenderAttrs = ssrRenderAttrs;
|
|
|
775
814
|
exports.ssrRenderClass = ssrRenderClass;
|
|
776
815
|
exports.ssrRenderComponent = ssrRenderComponent;
|
|
777
816
|
exports.ssrRenderDynamicAttr = ssrRenderDynamicAttr;
|
|
817
|
+
exports.ssrRenderDynamicComponent = renderDynamicComponent;
|
|
778
818
|
exports.ssrRenderDynamicModel = ssrRenderDynamicModel;
|
|
779
819
|
exports.ssrRenderList = ssrRenderList;
|
|
780
820
|
exports.ssrRenderSlot = ssrRenderSlot;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { App, Component, ComponentInternalInstance, ComponentPublicInstance, Directive, Slots, VNode } from "@vue/runtime-dom";
|
|
1
|
+
import { App, Component, ComponentInternalInstance, ComponentPublicInstance, Directive, Slots, VNode, VNodeTypes } from "@vue/runtime-dom";
|
|
2
2
|
import { Readable, Writable } from "node:stream";
|
|
3
3
|
import { includeBooleanAttr as ssrIncludeBooleanAttr } from "@vue/shared";
|
|
4
4
|
//#region temp/packages/server-renderer/src/render.d.ts
|
|
@@ -13,6 +13,7 @@ export type SSRContext = {
|
|
|
13
13
|
teleports?: Record<string, string>;
|
|
14
14
|
};
|
|
15
15
|
export declare function renderVNode(push: PushFn, vnode: VNode, parentComponent: ComponentInternalInstance, slotScopeId?: string): void;
|
|
16
|
+
export declare function renderDynamicComponent(push: PushFn, type: VNodeTypes, props: Props | null, slots: Record<string, any> | null, parentComponent: ComponentInternalInstance, slotScopeId?: string): void;
|
|
16
17
|
//#endregion
|
|
17
18
|
//#region temp/packages/server-renderer/src/renderToString.d.ts
|
|
18
19
|
export declare function renderToString(input: App | VNode, context?: SSRContext): Promise<string>;
|
|
@@ -73,4 +74,4 @@ export declare function ssrGetDynamicModelProps(existingProps: any | undefined,
|
|
|
73
74
|
value: any;
|
|
74
75
|
} | null;
|
|
75
76
|
//#endregion
|
|
76
|
-
export { ssrIncludeBooleanAttr, renderVNode as ssrRenderVNode };
|
|
77
|
+
export { ssrIncludeBooleanAttr, renderDynamicComponent as ssrRenderDynamicComponent, renderVNode as ssrRenderVNode };
|