|
@@ -11,7 +11,9 @@ import {
|
|
|
withCtx,
|
|
withCtx,
|
|
|
KeepAlive,
|
|
KeepAlive,
|
|
|
Transition,
|
|
Transition,
|
|
|
- watchEffect
|
|
|
|
|
|
|
+ watchEffect,
|
|
|
|
|
+ createVNode,
|
|
|
|
|
+ resolveDynamicComponent
|
|
|
} from 'vue'
|
|
} from 'vue'
|
|
|
import { escapeHtml } from '@vue/shared'
|
|
import { escapeHtml } from '@vue/shared'
|
|
|
import { renderToString } from '../src/renderToString'
|
|
import { renderToString } from '../src/renderToString'
|
|
@@ -19,6 +21,7 @@ import { renderToStream as _renderToStream } from '../src/renderToStream'
|
|
|
import { ssrRenderSlot, SSRSlot } from '../src/helpers/ssrRenderSlot'
|
|
import { ssrRenderSlot, SSRSlot } from '../src/helpers/ssrRenderSlot'
|
|
|
import { ssrRenderComponent } from '../src/helpers/ssrRenderComponent'
|
|
import { ssrRenderComponent } from '../src/helpers/ssrRenderComponent'
|
|
|
import { Readable } from 'stream'
|
|
import { Readable } from 'stream'
|
|
|
|
|
+import { ssrRenderVNode } from '../src'
|
|
|
|
|
|
|
|
const promisifyStream = (stream: Readable) => {
|
|
const promisifyStream = (stream: Readable) => {
|
|
|
return new Promise<string>((resolve, reject) => {
|
|
return new Promise<string>((resolve, reject) => {
|
|
@@ -824,5 +827,34 @@ function testRender(type: string, render: typeof renderToString) {
|
|
|
})
|
|
})
|
|
|
expect(await render(app)).toBe('<!---->')
|
|
expect(await render(app)).toBe('<!---->')
|
|
|
})
|
|
})
|
|
|
|
|
+
|
|
|
|
|
+ // #2863
|
|
|
|
|
+ test('assets should be resolved correctly', async () => {
|
|
|
|
|
+ expect(
|
|
|
|
|
+ await render(
|
|
|
|
|
+ createApp({
|
|
|
|
|
+ components: {
|
|
|
|
|
+ A: {
|
|
|
|
|
+ ssrRender(_ctx, _push) {
|
|
|
|
|
+ _push(`<div>A</div>`)
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ B: {
|
|
|
|
|
+ render: () => h('div', 'B')
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ ssrRender(_ctx, _push, _parent) {
|
|
|
|
|
+ const A: any = resolveComponent('A')
|
|
|
|
|
+ _push(ssrRenderComponent(A, null, null, _parent))
|
|
|
|
|
+ ssrRenderVNode(
|
|
|
|
|
+ _push,
|
|
|
|
|
+ createVNode(resolveDynamicComponent('B'), null, null),
|
|
|
|
|
+ _parent
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ )
|
|
|
|
|
+ ).toBe(`<div>A</div><div>B</div>`)
|
|
|
|
|
+ })
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|