Skip to content

Commit 8a3dc15

Browse files
committed
chore: cleanup
1 parent a6bab29 commit 8a3dc15

14 files changed

+97
-151
lines changed

playground/nuxt.config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ export default defineNuxtConfig({
77
detectBrowser: true,
88
detectOS: 'windows-11',
99
device: 'memory',
10-
network: ['savedata', 'downlink', 'ect', 'rtt'],
10+
network: true,
11+
userAgent: true,
1112
critical: {
1213
width: true,
1314
viewportSize: true,

src/module.ts

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createResolver, defineNuxtModule } from '@nuxt/kit'
1+
import { createResolver, defineNuxtModule, useLogger } from '@nuxt/kit'
22
import type { HookResult } from '@nuxt/schema'
33
import { version } from '../package.json'
44
import type { HttpClientHintsOptions as ModuleOptions } from './types'
@@ -12,9 +12,11 @@ export interface ModuleRuntimeHooks {
1212
'http-client-hints:ssr-client-hints': (clientHints: HttpClientHintsState) => HookResult
1313
}
1414

15+
const NAME = 'http-client-hints'
16+
1517
export default defineNuxtModule<ModuleOptions>({
1618
meta: {
17-
name: 'http-client-hints',
19+
name: NAME,
1820
configKey: 'httpClientHints',
1921
compatibility: {
2022
nuxt: '>=3.9.0',
@@ -25,6 +27,22 @@ export default defineNuxtModule<ModuleOptions>({
2527
detectBrowser: false,
2628
}),
2729
setup(options, nuxt) {
28-
configure(createResolver(import.meta.url), options, nuxt)
30+
configure(
31+
{
32+
resolver: createResolver(import.meta.url),
33+
logger: useLogger(`nuxt:${NAME}`),
34+
options,
35+
resolvedOptions: {
36+
detectBrowser: false,
37+
detectOS: false,
38+
userAgent: [],
39+
network: [],
40+
device: [],
41+
},
42+
clientDependsOn: [],
43+
serverDependsOn: [],
44+
},
45+
nuxt,
46+
)
2947
},
3048
})

src/runtime/plugins/critical.client.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/runtime/plugins/critical.server.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import type { Browser } from 'detect-browser-es'
2-
import { parseUserAgent } from 'detect-browser-es'
1+
import type { Browser, parseUserAgent } from 'detect-browser-es'
32
import type {
43
ResolvedHttpClientHintsOptions,
54
CriticalInfo,
@@ -40,16 +39,13 @@ export default defineNuxtPlugin({
4039
parallel: true,
4140
// @ts-expect-error missing at build time
4241
dependsOn: ['http-client-hints:init-server:plugin'],
43-
async setup() {
42+
async setup(nuxtApp) {
4443
const state = useHttpClientHintsState()
4544
const httpClientHints = useRuntimeConfig().public.httpClientHints as ResolvedHttpClientHintsOptions
4645
const requestHeaders = useRequestHeaders<string>(HttpRequestHeaders)
47-
const userAgentHeader = requestHeaders['user-agent']
4846

4947
// 1. extract browser info
50-
const userAgent = userAgentHeader
51-
? parseUserAgent(userAgentHeader)
52-
: null
48+
const userAgent = nuxtApp.ssrContext?._httpClientHintsUserAgent as ReturnType<typeof parseUserAgent>
5349
// 2. prepare client hints request
5450
const clientHintsRequest = collectClientHints(userAgent, httpClientHints.critical!, requestHeaders)
5551
// 3. write client hints response headers

src/runtime/plugins/device.client.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/runtime/plugins/device.server.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import type { Browser } from 'detect-browser-es'
2-
import { parseUserAgent } from 'detect-browser-es'
1+
import type { Browser, parseUserAgent } from 'detect-browser-es'
32
import type {
43
DeviceInfo,
54
DeviceHints,
@@ -32,16 +31,13 @@ export default defineNuxtPlugin({
3231
parallel: true,
3332
// @ts-expect-error missing at build time
3433
dependsOn: ['http-client-hints:init-server:plugin'],
35-
setup() {
34+
setup(nuxtApp) {
3635
const state = useHttpClientHintsState()
3736
const httpClientHints = useRuntimeConfig().public.httpClientHints as ResolvedHttpClientHintsOptions
3837
const requestHeaders = useRequestHeaders<string>(HttpRequestHeaders)
39-
const userAgentHeader = requestHeaders['user-agent']
4038

4139
// 1. extract browser info
42-
const userAgent = userAgentHeader
43-
? parseUserAgent(userAgentHeader)
44-
: null
40+
const userAgent = nuxtApp.ssrContext?._httpClientHintsUserAgent as ReturnType<typeof parseUserAgent>
4541
// 2. prepare client hints request
4642
const clientHintsRequest = collectClientHints(userAgent, httpClientHints.device!, requestHeaders)
4743
// 3. write client hints response headers

src/runtime/plugins/init.client.ts

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/runtime/plugins/init.server.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1+
import { parseUserAgent } from 'detect-browser-es'
12
import { useHttpClientHintsState } from './state'
2-
import { defineNuxtPlugin } from '#imports'
3+
import { defineNuxtPlugin, useRequestHeaders } from '#imports'
34

45
export default defineNuxtPlugin({
56
name: 'http-client-hints:init-server:plugin',
67
enforce: 'pre',
78
parallel: false,
8-
setup() {
9+
setup(nuxtApp) {
910
useHttpClientHintsState()
11+
const ssrContext = nuxtApp.ssrContext!
12+
const requestHeaders = useRequestHeaders<string>(['user-agent'])
13+
const userAgentHeader = requestHeaders['user-agent']
14+
ssrContext._httpClientHintsUserAgent = userAgentHeader
15+
? parseUserAgent(userAgentHeader)
16+
: null
1017
},
1118
})

src/runtime/plugins/network.client.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/runtime/plugins/network.server.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import type { Browser } from 'detect-browser-es'
2-
import { parseUserAgent } from 'detect-browser-es'
1+
import type { Browser, parseUserAgent } from 'detect-browser-es'
32
import type { NetworkInfo, NetworkHints, ResolvedHttpClientHintsOptions } from '../shared-types/types'
43
import { useHttpClientHintsState } from './state'
54
import type { GetHeaderType } from './headers'
@@ -35,16 +34,13 @@ export default defineNuxtPlugin({
3534
parallel: true,
3635
// @ts-expect-error missing at build time
3736
dependsOn: ['http-client-hints:init-server:plugin'],
38-
setup() {
37+
setup(nuxtApp) {
3938
const state = useHttpClientHintsState()
4039
const httpClientHints = useRuntimeConfig().public.httpClientHints as ResolvedHttpClientHintsOptions
4140
const requestHeaders = useRequestHeaders<string>(HttpRequestHeaders)
42-
const userAgentHeader = requestHeaders['user-agent']
4341

4442
// 1. extract browser info
45-
const userAgent = userAgentHeader
46-
? parseUserAgent(userAgentHeader)
47-
: null
43+
const userAgent = nuxtApp.ssrContext?._httpClientHintsUserAgent as ReturnType<typeof parseUserAgent>
4844
// 2. prepare client hints request
4945
const clientHintsRequest = collectClientHints(userAgent, httpClientHints.network!, requestHeaders)
5046
// 3. write client hints response headers
@@ -147,7 +143,6 @@ function collectClientHints(
147143
AcceptClientHintsRequestHeaders[hint],
148144
headers,
149145
)
150-
console.log({ hint, value })
151146
if (typeof value !== 'undefined') {
152147
// @ts-expect-error Type 'number | "on" | NetworkECT | undefined' is not assignable to type 'undefined'.
153148
hints[hint] = value as typeof hints[typeof hint]

0 commit comments

Comments
 (0)