Skip to content

Commit f8e6fd8

Browse files
committed
chore: bump Node to 24 and replace jsonwebtoken
1 parent 465a376 commit f8e6fd8

File tree

12 files changed

+1027
-942
lines changed

12 files changed

+1027
-942
lines changed

.github/workflows/ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
branches: [main]
88

99
env:
10-
NODE_VER: 22.18
10+
NODE_VER: 24.13
1111
CI: true
1212

1313
jobs:

.github/workflows/deploy-docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
workflow_dispatch:
99

1010
env:
11-
NODE_VER: 22.18
11+
NODE_VER: 24.13
1212
CI: true
1313

1414
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages

.github/workflows/pkg.pr.new.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
pull_request:
99

1010
env:
11-
NODE_VER: 22.18
11+
NODE_VER: 24.13
1212

1313
jobs:
1414
build:

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ permissions:
99
id-token: write # required for npm provenance
1010

1111
env:
12-
NODE_VER: 22.18
12+
NODE_VER: 24.13
1313
CI: true
1414

1515
jobs:

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"test:unit": "vitest"
4242
},
4343
"dependencies": {
44-
"@nuxt/kit": "^3.20.2",
44+
"@nuxt/kit": "^3.21.0",
4545
"defu": "^6.1.4",
4646
"h3": "^1.15.5",
4747
"knitwork": "^1.3.0",
@@ -61,13 +61,13 @@
6161
"devDependencies": {
6262
"@antfu/eslint-config": "^6.7.3",
6363
"@nuxt/module-builder": "^1.0.2",
64-
"@nuxt/schema": "^3.20.2",
64+
"@nuxt/schema": "^3.21.0",
6565
"@nuxtjs/eslint-config-typescript": "^12.1.0",
66-
"@types/node": "^20.19.29",
66+
"@types/node": "^24.10.11",
6767
"eslint": "^9.39.2",
68-
"nuxt": "^3.20.2",
68+
"nuxt": "^3.21.0",
6969
"ofetch": "^1.5.1",
70-
"oxlint": "^1.39.0",
70+
"oxlint": "^1.43.0",
7171
"ts-essentials": "^9.4.2",
7272
"typescript": "^5.8.3",
7373
"vitepress": "^1.6.4",

playground-authjs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"postinstall": "nuxt prepare"
1010
},
1111
"devDependencies": {
12-
"nuxt": "^3.20.2",
12+
"nuxt": "^3.21.0",
1313
"typescript": "^5.8.3",
1414
"vue-tsc": "^2.2.12"
1515
}

playground-local/nuxt.config.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
export default defineNuxtConfig({
22
compatibilityDate: '2024-04-03',
33
modules: ['../src/module.ts'],
4-
build: {
5-
transpile: ['jsonwebtoken']
6-
},
74
auth: {
85
provider: {
96
type: 'local',

playground-local/package.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,15 @@
1212
"test:e2e": "vitest"
1313
},
1414
"dependencies": {
15-
"jsonwebtoken": "^9.0.3",
15+
"jose": "^6.1.3",
1616
"zod": "^3.25.76"
1717
},
1818
"devDependencies": {
1919
"@nuxt/test-utils": "^3.23.0",
20-
"@playwright/test": "^1.57.0",
21-
"@types/jsonwebtoken": "^9.0.10",
22-
"@types/node": "^20.19.29",
20+
"@playwright/test": "^1.58.2",
21+
"@types/node": "^24.10.11",
2322
"@vue/test-utils": "^2.4.6",
24-
"nuxt": "^3.20.2",
23+
"nuxt": "^3.21.0",
2524
"typescript": "^5.8.3",
2625
"vitest": "^3.2.4",
2726
"vue-tsc": "^2.2.12"

playground-local/server/api/auth/refresh.post.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { createError, eventHandler, getRequestHeader, readBody } from 'h3'
2-
import { checkUserTokens, decodeToken, extractTokenFromAuthorizationHeader, getTokensByUser, refreshUserAccessToken } from '~/server/utils/session'
2+
import { checkUserTokens, decodeToken, extractTokenFromAuthorizationHeader, getTokensByUser, refreshUserAccessToken, userSchema } from '~/server/utils/session'
33

44
/*
55
* DISCLAIMER!
@@ -19,16 +19,24 @@ export default eventHandler(async (event) => {
1919
}
2020

2121
// Verify
22-
const decoded = decodeToken(refreshToken)
22+
const decoded = await decodeToken(refreshToken)
2323
if (!decoded) {
2424
throw createError({
2525
statusCode: 401,
2626
message: 'Unauthorized, refreshToken can\'t be verified'
2727
})
2828
}
2929

30+
const user = userSchema.safeParse(decoded)
31+
if (!user.success) {
32+
throw createError({
33+
statusCode: 401,
34+
message: 'Unauthorized, user shape mismatch'
35+
})
36+
}
37+
3038
// Get the helper (only for demo, use a DB in your implementation)
31-
const userTokens = getTokensByUser(decoded.username)
39+
const userTokens = getTokensByUser(user.data.username)
3240
if (!userTokens) {
3341
throw createError({
3442
statusCode: 401,

playground-local/server/api/auth/user.get.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,25 @@
11
import { createError, eventHandler, getRequestHeader } from 'h3'
2-
import { checkUserAccessToken, decodeToken, extractTokenFromAuthorizationHeader, getTokensByUser } from '~/server/utils/session'
3-
import type { JwtPayload } from '~/server/utils/session'
2+
import { checkUserAccessToken, decodeToken, extractTokenFromAuthorizationHeader, getTokensByUser, userSchema, type User } from '~/server/utils/session'
43

5-
export default eventHandler((event) => {
4+
export default eventHandler(async (event) => {
65
const authorizationHeader = getRequestHeader(event, 'Authorization')
76
if (typeof authorizationHeader === 'undefined') {
87
throw createError({ statusCode: 403, message: 'Need to pass valid Bearer-authorization header to access this endpoint' })
98
}
109

1110
const requestAccessToken = extractTokenFromAuthorizationHeader(authorizationHeader)
12-
let decoded: JwtPayload
11+
let decoded: User
1312
try {
14-
const decodeTokenResult = decodeToken(requestAccessToken)
13+
const decodeTokenResult = await decodeToken(requestAccessToken)
1514

1615
if (!decodeTokenResult) {
1716
throw new Error('Expected decoded JwtPayload to be non-empty')
1817
}
19-
decoded = decodeTokenResult
18+
const userParseResult = userSchema.safeParse(decodeTokenResult)
19+
if (!userParseResult.success) {
20+
throw new Error('User shape mismatched')
21+
}
22+
decoded = userParseResult.data
2023
}
2124
catch (error) {
2225
console.error({

0 commit comments

Comments
 (0)