Skip to content

Commit e3e7fb0

Browse files
committed
Update to Next.js 16.
This commit resolves security vulnerabilities.
1 parent 87278a9 commit e3e7fb0

13 files changed

Lines changed: 3252 additions & 1881 deletions

File tree

.github/workflows/node.js.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
timeout-minutes: 15
1919
strategy:
2020
matrix:
21-
node-version: [18.x, 20.x, 22.x]
21+
node-version: [20.x, 22.x]
2222

2323
steps:
2424
- name: Checkout Repository

client/.depcheckrc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"ignores": [
33
"autoprefixer",
44
"postcss",
5-
"postcss-load-config"
5+
"postcss-load-config",
6+
"@tailwindcss/postcss"
67
]
78
}
Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
export default {
22
ignore: [
33
'src/app/middleware.ts', // Explicitly ignore middleware file
4+
'knip.config.mjs', // Config file
45
],
5-
dependencies: {
6-
include: [
7-
'eslint-config-next', // Explicitly mark eslint-config-next as a dependency
8-
],
9-
},
106
ignorePatterns: [
117
'node_modules/',
128
'dist/',
139
'.data',
1410
'**/.next/**',
1511
],
1612
moduleResolution: 'node',
13+
ignoreBinaries: ['autoprefixer', 'postcss-load-config'],
14+
ignoreDependencies: ['autoprefixer', 'postcss-load-config'],
1715
};

client/next.config.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import type { NextConfig } from "next";
22

3+
const isProduction = process.env.NODE_ENV === "production";
4+
35
const cspHeader = `
46
default-src 'self';
57
script-src 'self' 'unsafe-inline' https://cdnjs.buymeacoffee.com https://cdn.buymeacoffee.com https://www.googletagmanager.com https://www.google-analytics.com https://m.stripe.network;
@@ -12,7 +14,7 @@ const cspHeader = `
1214
base-uri 'self';
1315
form-action 'self';
1416
frame-ancestors 'none';
15-
upgrade-insecure-requests;
17+
${isProduction ? "upgrade-insecure-requests;" : ""}
1618
`;
1719

1820
const nextConfig: NextConfig = {

client/package.json

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,63 +2,65 @@
22
"name": "boba-client",
33
"version": "0.1.0",
44
"private": true,
5+
"type": "module",
56
"scripts": {
67
"dev": "next dev --turbopack",
78
"build": "next build",
89
"start": "next start",
9-
"lint": "tsc --noEmit && eslint 'src/**/*.{ts,tsx}' && knip && depcheck",
10-
"lint:fix": "tsc --noEmit && eslint 'src/**/*.{ts,tsx}' --fix && knip && depcheck",
10+
"lint": "tsc --noEmit && eslint 'src/**/*.{ts,tsx}' && knip --exclude dependencies,files && depcheck",
11+
"lint:fix": "tsc --noEmit && eslint 'src/**/*.{ts,tsx}' --fix && knip --exclude dependencies,files && depcheck",
1112
"format": "prettier --write \"src/**/*.ts\""
1213
},
1314
"dependencies": {
14-
"@hookform/resolvers": "^3.10.0",
15-
"@radix-ui/react-avatar": "^1.1.3",
16-
"@radix-ui/react-dialog": "^1.1.6",
17-
"@radix-ui/react-dropdown-menu": "^2.1.6",
18-
"@radix-ui/react-label": "^2.1.2",
19-
"@radix-ui/react-slot": "^1.1.2",
20-
"@vercel/analytics": "^1.5.0",
15+
"@hookform/resolvers": "^5.2.2",
16+
"@radix-ui/react-avatar": "^1.1.11",
17+
"@radix-ui/react-dialog": "^1.1.15",
18+
"@radix-ui/react-dropdown-menu": "^2.1.16",
19+
"@radix-ui/react-label": "^2.1.8",
20+
"@radix-ui/react-slot": "^1.2.4",
21+
"@vercel/analytics": "^1.6.1",
2122
"class-variance-authority": "^0.7.1",
2223
"clsx": "^2.1.1",
23-
"firebase-admin": "^13.2.0",
24+
"firebase-admin": "^13.6.0",
2425
"js-cookie": "^3.0.5",
25-
"lucide-react": "^0.473.0",
26-
"next": "15.2.3",
26+
"lucide-react": "^0.555.0",
27+
"next": "16.0.7",
2728
"next-themes": "^0.4.6",
2829
"nextjs-google-analytics": "^2.3.7",
29-
"nodemailer": "^6.10.0",
30-
"react": "^19.1.0",
30+
"nodemailer": "^7.0.11",
31+
"react": "^19.2.1",
3132
"react-cookie-consent": "^9.0.0",
32-
"react-dom": "^19.1.0",
33-
"react-hook-form": "^7.55.0",
33+
"react-dom": "^19.2.1",
34+
"react-hook-form": "^7.68.0",
3435
"react-icons": "^5.5.0",
35-
"tailwind-merge": "^2.6.0",
36+
"tailwind-merge": "^3.4.0",
3637
"tailwindcss-animate": "^1.0.7",
37-
"validator": "^13.15.0",
38-
"zod": "^3.24.2"
38+
"validator": "^13.15.23",
39+
"zod": "^4.1.13"
3940
},
4041
"devDependencies": {
42+
"@tailwindcss/postcss": "^4.1.17",
4143
"@types/js-cookie": "^3.0.6",
42-
"@types/node": "^20.17.28",
43-
"@types/nodemailer": "^6.4.17",
44-
"@types/react": "^19.0.12",
45-
"@types/react-dom": "^19.0.4",
46-
"@types/validator": "^13.12.3",
47-
"@typescript-eslint/eslint-plugin": "^8.28.0",
48-
"@typescript-eslint/parser": "^8.28.0",
49-
"autoprefixer": "^10.4.21",
44+
"@types/node": "^24.10.1",
45+
"@types/nodemailer": "^7.0.4",
46+
"@types/react": "^19.2.7",
47+
"@types/react-dom": "^19.2.3",
48+
"@types/validator": "^13.15.10",
49+
"@typescript-eslint/eslint-plugin": "^8.48.1",
50+
"@typescript-eslint/parser": "^8.48.1",
51+
"autoprefixer": "^10.4.22",
5052
"depcheck": "^1.4.7",
51-
"eslint": "^9.23.0",
52-
"eslint-config-prettier": "^10.1.1",
53-
"eslint-plugin-prettier": "^5.2.5",
54-
"eslint-plugin-react-hooks": "^5.2.0",
55-
"eslint-plugin-unused-imports": "^4.1.4",
56-
"knip": "^5.46.4",
57-
"postcss": "^8.5.3",
53+
"eslint": "^9.39.1",
54+
"eslint-config-prettier": "^10.1.8",
55+
"eslint-plugin-prettier": "^5.5.4",
56+
"eslint-plugin-react-hooks": "^7.0.1",
57+
"eslint-plugin-unused-imports": "^4.3.0",
58+
"knip": "^5.71.0",
59+
"postcss": "^8.5.6",
5860
"postcss-load-config": "^6.0.1",
59-
"prettier": "^3.5.3",
60-
"tailwindcss": "^3.4.17",
61-
"typescript": "^5.8.2"
61+
"prettier": "^3.7.4",
62+
"tailwindcss": "^4.1.17",
63+
"typescript": "^5.9.3"
6264
},
6365
"packageManager": "pnpm@9.15.4+sha512.b2dc20e2fc72b3e18848459b37359a32064663e5627a51e4c74b2c29dd8e8e0491483c3abb40789cfd578bf362fb6ba8261b05f0387d76792ed6e23ea3b1b6a0"
6466
}

0 commit comments

Comments
 (0)