8000 refactor(nitro): add explicit return types for runtime utils · nuxt/nuxt@74bb6dd · GitHub
[go: up one dir, main page]

Skip to content

Commit 74bb6dd

Browse files
committed
refactor(nitro): add explicit return types for runtime utils
1 parent fb47208 commit 74bb6dd

File tree

5 files changed

+31
-11
lines changed

5 files changed

+31
-11
lines changed

packages/nitro-server/src/runtime/utils/error.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type { H3Event } from 'h3'
55
* Nitro internal functions extracted from https://github.com/nitrojs/nitro/blob/v2/src/runtime/internal/utils.ts
66
*/
77

8-
export function isJsonRequest (event: H3Event) {
8+
export function isJsonRequest (event: H3Event): boolean {
99
// If the client specifically requests HTML, then avoid classifying as JSON.
1010
if (hasReqHeader(event, 'accept', 'text/html')) {
1111
return false

packages/nitro-server/src/runtime/utils/renderer/app.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export function createSSRContext (event: H3Event): NuxtSSRContext {
3333
return ssrContext
3434
}
3535

36-
export function setSSRError (ssrContext: NuxtSSRContext, error: NuxtPayload['error'] & { url: string }) {
36+
export function setSSRError (ssrContext: NuxtSSRContext, error: NuxtPayload['error'] & { url: string }): void {
3737
ssrContext.error = true
3838
ssrContext.payload = { error }
3939
ssrContext.url = error.url

packages/nitro-server/src/runtime/utils/renderer/build-files.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import process from 'node:process'
2+
import type { RendererContext } from 'vue-bundle-renderer/runtime'
23
import { createRenderer } from 'vue-bundle-renderer/runtime'
34
import type { Manifest, PrecomputedData } from 'vue-bundle-renderer'
45
import { renderToString as _renderToString } from 'vue/server-renderer'
@@ -27,8 +28,19 @@ const getPrecomputedDependencies: () => Promise<PrecomputedData> = () => import(
2728
.then(r => r.default || r)
2829
.then(r => typeof r === 'function' ? r() : r) as Promise<PrecomputedData>
2930

31+
interface Renderer {
32+
rendererContext: RendererContext
33+
renderToString(ssrContext: NuxtSSRContext): Promise<{
34+
html: string
35+
renderResourceHeaders: () => Record<string, string>
36+
renderResourceHints: () => string
37+
renderStyles: () => string
38+
renderScripts: () => string
39+
}>
40+
}
41+
3042
// -- SSR Renderer --
31-
export const getSSRRenderer = lazyCachedFunction(async () => {
43+
export const getSSRRenderer = lazyCachedFunction(async (): Promise<Renderer> => {
3244
// Load server bundle
3345
const createSSRApp = await getServerEntry()
3446
if (!createSSRApp) { throw new Error('Server bundle is not available') }
@@ -58,7 +70,7 @@ export const getSSRRenderer = lazyCachedFunction(async () => {
5870
})
5971

6072
// -- SPA Renderer --
61-
const getSPARenderer = lazyCachedFunction(async () => {
73+
const getSPARenderer = lazyCachedFunction(async (): Promise<Renderer> => {
6274< 8000 /code>
const precomputed = import.meta.dev ? undefined : await getPrecomputedDependencies()
6375

6476
// @ts-expect-error virtual file
@@ -111,7 +123,7 @@ function lazyCachedFunction<T> (fn: () => Promise<T>): () => Promise<T> {
111123
}
112124
}
113125

114-
export function getRenderer (ssrContext: NuxtSSRContext) {
126+
export function getRenderer (ssrContext: NuxtSSRContext): Promise<Renderer> {
115127
return (process.env.NUXT_NO_SSR || ssrContext.noSSR) ? getSPARenderer() : getSSRRenderer()
116128
}
117129

packages/nitro-server/src/runtime/utils/renderer/islands.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export function getClientIslandResponse (ssrContext: NuxtSSRContext): NuxtIsland
4444
return response
4545
}
4646

47-
export function getComponentSlotTeleport (clientUid: string, teleports: Record<string, string>) {
47+
export function getComponentSlotTeleport (clientUid: string, teleports: Record<string, string>): Record<string, string> {
4848
const entries = Object.entries(teleports)
4949
const slots: Record<string, string> = {}
5050

@@ -59,7 +59,7 @@ export function getComponentSlotTeleport (clientUid: string, teleports: Record<s
5959
return slots
6060
}
6161

62-
export function replaceIslandTeleports (ssrContext: NuxtSSRContext, html: string) {
62+
export function replaceIslandTeleports (ssrContext: NuxtSSRContext, html: string): string {
6363
const { teleports, islandContext } = ssrContext
6464

6565
if (islandContext || !teleports) { return html }

packages/nitro-server/src/runtime/utils/renderer/payload.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import devalue from '@nuxt/devalue'
55
import { stringify, uneval } from 'devalue'
66
import type { Script } from '@unhead/vue'
77

8-
import type { NuxtSSRContext } from 'nuxt/app'
8+
import type { NuxtPayload, NuxtSSRContext } from 'nuxt/app'
99

1010
// @ts-expect-error virtual file
1111
import { appId, multiApp } from '#internal/nuxt.config.mjs'
1212

13-
export function renderPayloadResponse (ssrContext: NuxtSSRContext) {
13+
export function renderPayloadResponse (ssrContext: NuxtSSRContext): RenderResponse {
1414
return {
1515
body: process.env.NUXT_JSON_PAYLOADS
1616
? stringify(splitPayload(ssrContext).payload, ssrContext['~payloadReducers'])
@@ -21,7 +21,7 @@ export function renderPayloadResponse (ssrContext: NuxtSSRContext) {
2121
'content-type': process.env.NUXT_JSON_PAYLOADS ? 'application/json;charset=utf-8' : 'text/javascript;charset=utf-8',
2222
'x-powered-by': 'Nuxt',
2323
},
24-
} satisfies RenderResponse
24+
}
2525
}
2626

2727
export function renderPayloadJsonScript (opts: { ssrContext: NuxtSSRContext, data?: any, src?: string }): Script[] {
@@ -72,7 +72,15 @@ export function renderPayloadScript (opts: { ssrContext: NuxtSSRContext, data?:
7272
]
7373
}
7474

75-
export function splitPayload (ssrContext: NuxtSSRContext) {
75+
interface SplitPayload {
76+
initial: Omit<NuxtPayload, 'data'>
77+
payload: {
78+
data?: NuxtPayload['data']
79+
prerenderedAt?: NuxtPayload['prerenderedAt']
80+
}
81+
}
82+
83+
export function splitPayload (ssrContext: NuxtSSRContext): SplitPayload {
7684
const { data, prerenderedAt, ...initial } = ssrContext.payload
7785
return {
7886
initial: { ...initial, prerenderedAt },

0 commit comments

Comments
 (0)
0