@@ -9,16 +9,16 @@ export interface ModuleDependencies {
99}
1010
1111export interface SSRContext {
12- renderResourceHints ?: Function
13- renderScripts ?: Function
14- renderStyles ?: Function
12+ renderResourceHints ?: ( ... args : unknown [ ] ) => unknown
13+ renderScripts ?: ( ... args : unknown [ ] ) => unknown
14+ renderStyles ?: ( ... args : unknown [ ] ) => unknown
1515 // @vitejs /plugin-vue: https://vitejs.dev/guide/ssr.html#generating-preload-directives
1616 modules ?: Set < string >
1717 // vue-loader (webpack)
1818 _registeredComponents ?: Set < string >
1919 // Cache
2020 _requestDependencies ?: ModuleDependencies
21- [ key : string ] : any
21+ [ key : string ] : unknown
2222}
2323
2424export interface RenderOptions {
@@ -237,17 +237,22 @@ export function renderScripts (ssrContext: SSRContext, rendererContext: Renderer
237237 } ) ) . join ( '' )
238238}
239239
240- export type RenderFunction = ( ssrContext : SSRContext , rendererContext : RendererContext ) => any
240+ export type RenderFunction = ( ssrContext : SSRContext , rendererContext : RendererContext ) => unknown
241241
242- export function createRenderer ( createApp : any , renderOptions : RenderOptions & { renderToString : Function } ) {
242+ type CreateApp < App > = ( ssrContext : SSRContext ) => App | Promise < App >
243+ type ImportOf < T > = T | { default : T } | Promise < T > | Promise < { default : T } >
244+
245+ type RenderToString < App > = ( app : App , ssrContext : SSRContext ) => string | Promise < string >
246+
247+ export function createRenderer < App > ( createApp : ImportOf < CreateApp < App > > , renderOptions : RenderOptions & { renderToString : RenderToString < App > } ) {
243248 const rendererContext = createRendererContext ( renderOptions )
244249
245250 return {
246251 rendererContext,
247252 async renderToString ( ssrContext : SSRContext ) {
248253 ssrContext . _registeredComponents = ssrContext . _registeredComponents || new Set ( )
249254
250- const _createApp = await Promise . resolve ( createApp ) . then ( r => r . default || r )
255+ const _createApp = await Promise . resolve ( createApp ) . then ( r => 'default' in r ? r . default : r )
251256 const app = await _createApp ( ssrContext )
252257 const html = await renderOptions . renderToString ( app , ssrContext )
253258
0 commit comments