Skip to content

Commit eecc8b3

Browse files
committed
chore: add app config to ssrContext
1 parent bf3d909 commit eecc8b3

File tree

5 files changed

+21
-13
lines changed

5 files changed

+21
-13
lines changed

src/runtime/plugins/critical.server.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { writeHeaders } from './headers'
44
import { useHttpClientHintsOptions, useHttpClientHintsState } from './utils'
55
import { defineNuxtPlugin, useCookie, useRequestHeaders } from '#imports'
66
import type { Plugin } from '#app'
7+
import type { HttpClientHintsOptions } from '~/src/types'
8+
import type { ResolvedHttpClientHintsOptions } from '~/src/runtime/shared-types/types'
79

810
const plugin: Plugin = defineNuxtPlugin({
911
name: 'http-client-hints:critical-server:plugin',
@@ -12,10 +14,11 @@ const plugin: Plugin = defineNuxtPlugin({
1214
// @ts-expect-error missing at build time
1315
dependsOn: ['http-client-hints:init-server:plugin'],
1416
async setup(nuxtApp) {
17+
const ssrContext = nuxtApp.ssrContext!
18+
const httpClientHints = ssrContext._httpClientHintsOptions as ResolvedHttpClientHintsOptions
19+
const userAgent = ssrContext._httpClientHintsUserAgent as ReturnType<typeof parseUserAgent>
1520
const state = useHttpClientHintsState()
16-
const httpClientHints = useHttpClientHintsOptions()
1721
const requestHeaders = useRequestHeaders<string>(CriticalHintsHeaders)
18-
const userAgent = nuxtApp.ssrContext?._httpClientHintsUserAgent as ReturnType<typeof parseUserAgent>
1922
state.value.critical = extractCriticalHints(
2023
httpClientHints,
2124
requestHeaders,

src/runtime/plugins/detect.server.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import {
66
parseUserAgent,
77
} from 'detect-browser-es'
88
import { appendHeader } from 'h3'
9-
import type { UserAgentHints } from '../shared-types/types'
9+
import type { ResolvedHttpClientHintsOptions, UserAgentHints } from '../shared-types/types'
1010
import { extractBrowser } from '../utils/detect'
11-
import { useHttpClientHintsOptions, useHttpClientHintsState } from './utils'
11+
import { useHttpClientHintsState } from './utils'
1212
import {
1313
defineNuxtPlugin,
1414
useNuxtApp,
@@ -23,9 +23,9 @@ const plugin: Plugin = defineNuxtPlugin({
2323
parallel: true,
2424
// @ts-expect-error missing at build time
2525
dependsOn: ['http-client-hints:init-server:plugin'],
26-
async setup() {
26+
async setup(nuxtApp) {
2727
const state = useHttpClientHintsState()
28-
const httpClientHints = useHttpClientHintsOptions()
28+
const httpClientHints = nuxtApp.ssrContext!._httpClientHintsOptions as ResolvedHttpClientHintsOptions
2929
const requestHeaders = useRequestHeaders()
3030

3131
const userAgentHeader = requestHeaders['user-agent']

src/runtime/plugins/device.server.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { parseUserAgent } from 'detect-browser-es'
22
import { extractDeviceHints, HttpRequestHeaders } from '../utils/device'
3-
import { useHttpClientHintsOptions, useHttpClientHintsState } from './utils'
3+
import type { ResolvedHttpClientHintsOptions } from '../shared-types/types'
4+
import { useHttpClientHintsState } from './utils'
45
import { writeHeaders } from './headers'
56
import { defineNuxtPlugin, useRequestHeaders } from '#imports'
67
import type { Plugin } from '#app'
@@ -12,9 +13,10 @@ const plugin: Plugin = defineNuxtPlugin({
1213
// @ts-expect-error missing at build time
1314
dependsOn: ['http-client-hints:init-server:plugin'],
1415
setup(nuxtApp) {
15-
const userAgent = nuxtApp.ssrContext?._httpClientHintsUserAgent as ReturnType<typeof parseUserAgent>
16+
const ssrContext = nuxtApp.ssrContext!
17+
const httpClientHints = ssrContext._httpClientHintsOptions as ResolvedHttpClientHintsOptions
18+
const userAgent = ssrContext._httpClientHintsUserAgent as ReturnType<typeof parseUserAgent>
1619
const state = useHttpClientHintsState()
17-
const httpClientHints = useHttpClientHintsOptions()
1820
const requestHeaders = useRequestHeaders<string>(HttpRequestHeaders)
1921
state.value.device = extractDeviceHints(httpClientHints, requestHeaders, userAgent, writeHeaders)
2022
},

src/runtime/plugins/init.server.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { parseUserAgent } from 'detect-browser-es'
2-
import { useHttpClientHintsState } from './utils'
2+
import { useHttpClientHintsOptions, useHttpClientHintsState } from './utils'
33
import { defineNuxtPlugin, useRequestHeaders } from '#imports'
44
import type { Plugin } from '#app'
55

@@ -12,6 +12,7 @@ const plugin: Plugin = defineNuxtPlugin({
1212
const ssrContext = nuxtApp.ssrContext!
1313
const requestHeaders = useRequestHeaders<string>(['user-agent'])
1414
const userAgentHeader = requestHeaders['user-agent']
15+
ssrContext._httpClientHintsOptions = useHttpClientHintsOptions()
1516
ssrContext._httpClientHintsUserAgent = userAgentHeader
1617
? parseUserAgent(userAgentHeader)
1718
: null

src/runtime/plugins/network.server.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { parseUserAgent } from 'detect-browser-es'
22
import { extractNetworkHints, NetworkHintsHeaders } from '../utils/network'
3-
import { useHttpClientHintsOptions, useHttpClientHintsState } from './utils'
3+
import type { ResolvedHttpClientHintsOptions } from '../shared-types/types'
4+
import { useHttpClientHintsState } from './utils'
45
import { writeHeaders } from './headers'
56
import { defineNuxtPlugin, useRequestHeaders } from '#imports'
67
import type { Plugin } from '#app'
@@ -12,9 +13,10 @@ const plugin: Plugin = defineNuxtPlugin({
1213
// @ts-expect-error missing at build time
1314
dependsOn: ['http-client-hints:init-server:plugin'],
1415
setup(nuxtApp) {
16+
const ssrContext = nuxtApp.ssrContext!
17+
const httpClientHints = ssrContext._httpClientHintsOptions as ResolvedHttpClientHintsOptions
18+
const userAgent = ssrContext._httpClientHintsUserAgent as ReturnType<typeof parseUserAgent>
1519
const state = useHttpClientHintsState()
16-
const userAgent = nuxtApp.ssrContext?._httpClientHintsUserAgent as ReturnType<typeof parseUserAgent>
17-
const httpClientHints = useHttpClientHintsOptions()
1820
const requestHeaders = useRequestHeaders<string>(NetworkHintsHeaders)
1921
state.value.network = extractNetworkHints(httpClientHints, requestHeaders, userAgent, writeHeaders)
2022
},

0 commit comments

Comments
 (0)