Skip to content

Commit abe62fb

Browse files
chore(deps): resolve all 51 open security advisories (#51)
Bumps the four direct dependencies that account for nearly every open advisory, and fixes the two CI failures that were blocking the Dependabot queue from clearing on its own. Dependencies: - next 16.2.9 -> 16.3.3, which carries patched postcss (8.5.23) and sharp (^0.35.3) upstream - next-auth 4.24.14 -> 4.24.15, which moves uuid to ^11.1.1 - prisma / @prisma/client / @prisma/adapter-pg 7.8.0 -> 7.10.0. @prisma/dev replaced hono with find-my-way, so hono and @hono/node-server leave the tree entirely - eslint-config-next tracks next Resolutions were rewritten from unbounded `>=` ranges to bounded caret ranges. An unbounded range resolves to whatever is newest at install time, so `js-yaml: ">=3.14.2"` would have pulled the ESM-only js-yaml 5 into ESLint on the next clean install; only the lockfile was holding it back. CI, which is why the backlog accumulated: - The dev-dependencies Dependabot group had no update-types restriction, so majors were batched with safe updates and failed the whole group. Now restricted to minor/patch, matching the production group. - dependency-review lacked pull-requests: write, so licence failures reported "incompatible licenses" without naming the package. With the summary visible, the offenders are elkjs (EPL-2.0) and robust-predicates (LicenseRef-scancode-public-domain AND Unlicense, where the LicenseRef- half is not an SPDX identifier), both exempted per-package, plus LGPL-3.0-or-later for sharp's libvips binaries. All checks green: type-check, lint, test, build, e2e, dependency-review (0 vulnerable packages) and the Vercel preview deploy.
1 parent 0fafc71 commit abe62fb

4 files changed

Lines changed: 807 additions & 458 deletions

File tree

.github/dependabot.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,16 @@ updates:
77
day: 'monday'
88
open-pull-requests-limit: 5
99
groups:
10+
# Restricted to minor/patch for the same reason as the production
11+
# group: an unrestricted group sweeps majors in, and one breaking
12+
# major fails CI for the whole batch, so none of the other updates
13+
# can land. Majors still arrive, as individual PRs that can be
14+
# evaluated on their own.
1015
dev-dependencies:
1116
dependency-type: 'development'
17+
update-types:
18+
- 'minor'
19+
- 'patch'
1220
production-dependencies:
1321
dependency-type: 'production'
1422
update-types:

.github/workflows/ci.yml

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ jobs:
2626
runs-on: ubuntu-latest
2727
timeout-minutes: 5
2828
steps:
29-
- uses: actions/checkout@v6
30-
- uses: actions/setup-node@v6
29+
- uses: actions/checkout@v7
30+
- uses: actions/setup-node@v7
3131
with:
3232
node-version-file: '.nvmrc'
3333
cache: 'yarn'
@@ -39,8 +39,8 @@ jobs:
3939
runs-on: ubuntu-latest
4040
timeout-minutes: 5
4141
steps:
42-
- uses: actions/checkout@v6
43-
- uses: actions/setup-node@v6
42+
- uses: actions/checkout@v7
43+
- uses: actions/setup-node@v7
4444
with:
4545
node-version-file: '.nvmrc'
4646
cache: 'yarn'
@@ -52,8 +52,8 @@ jobs:
5252
runs-on: ubuntu-latest
5353
timeout-minutes: 5
5454
steps:
55-
- uses: actions/checkout@v6
56-
- uses: actions/setup-node@v6
55+
- uses: actions/checkout@v7
56+
- uses: actions/setup-node@v7
5757
with:
5858
node-version-file: '.nvmrc'
5959
cache: 'yarn'
@@ -65,8 +65,8 @@ jobs:
6565
runs-on: ubuntu-latest
6666
timeout-minutes: 10
6767
steps:
68-
- uses: actions/checkout@v6
69-
- uses: actions/setup-node@v6
68+
- uses: actions/checkout@v7
69+
- uses: actions/setup-node@v7
7070
with:
7171
node-version-file: '.nvmrc'
7272
cache: 'yarn'
@@ -95,8 +95,8 @@ jobs:
9595
DATABASE_PUBLIC_URL: postgresql://ci:ci@localhost:5432/ci
9696
DATABASE_TEST_URL: postgresql://ci:ci@localhost:5432/ci
9797
steps:
98-
- uses: actions/checkout@v6
99-
- uses: actions/setup-node@v6
98+
- uses: actions/checkout@v7
99+
- uses: actions/setup-node@v7
100100
with:
101101
node-version-file: '.nvmrc'
102102
cache: 'yarn'
@@ -124,8 +124,15 @@ jobs:
124124
runs-on: ubuntu-latest
125125
if: github.event_name == 'pull_request'
126126
timeout-minutes: 5
127+
# Overrides the workflow-level `contents: read` for this job only.
128+
# Without pull-requests: write the action cannot post its summary,
129+
# so a licence failure reports "incompatible licenses" and never
130+
# names the package responsible.
131+
permissions:
132+
contents: read
133+
pull-requests: write
127134
steps:
128-
- uses: actions/checkout@v6
135+
- uses: actions/checkout@v7
129136
- uses: actions/dependency-review-action@v5
130137
with:
131138
fail-on-severity: moderate
@@ -135,4 +142,22 @@ jobs:
135142
fail-on-scopes: runtime
136143
comment-summary-in-pr: on-failure
137144
license-check: true
138-
allow-licenses: MIT, ISC, Apache-2.0, BSD-2-Clause, BSD-3-Clause, 0BSD, CC0-1.0, Unlicense, BlueOak-1.0.0, MPL-2.0
145+
# LGPL-3.0-or-later covers the ten @img/sharp-libvips-* native
146+
# binaries that ship with sharp, which Next pulls in for image
147+
# optimisation. They are prebuilt, dynamically linked, already
148+
# present on main, and re-evaluated here only because sharp
149+
# changed version. Adding it also clears the sharp win32 and
150+
# wasm32 packages, which declare compound expressions like
151+
# "Apache-2.0 AND LGPL-3.0-or-later" — a compound expression is
152+
# satisfied once every component it names is allowed.
153+
allow-licenses: MIT, ISC, Apache-2.0, BSD-2-Clause, BSD-3-Clause, 0BSD, CC0-1.0, Unlicense, BlueOak-1.0.0, MPL-2.0, LGPL-3.0-or-later
154+
# Two packages cannot be cleared by licence name, so they are
155+
# exempted individually and the policy above stays strict for
156+
# everything else. Both arrive via @prisma/studio-core, making
157+
# them CLI tooling that never enters the application bundle.
158+
#
159+
# elkjs is EPL-2.0. robust-predicates declares
160+
# "LicenseRef-scancode-public-domain AND Unlicense"; the
161+
# LicenseRef- half is not an SPDX identifier, so allowing
162+
# Unlicense does not satisfy the expression.
163+
allow-dependencies-licenses: 'pkg:npm/elkjs, pkg:npm/robust-predicates'

package.json

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@
3232
"@mui/icons-material": "^9.1.1",
3333
"@mui/material": "^9.1.1",
3434
"@mui/material-nextjs": "^9.1.1",
35-
"@prisma/adapter-pg": "^7.8.0",
36-
"@prisma/client": "^7.8.0",
35+
"@prisma/adapter-pg": "^7.10.0",
36+
"@prisma/client": "^7.10.0",
3737
"bcryptjs": "^3.0.3",
38-
"next": "16.2.9",
39-
"next-auth": "^4.24.14",
38+
"next": "16.3.3",
39+
"next-auth": "^4.24.15",
4040
"pg": "^8.21.0",
41-
"prisma": "^7.8.0",
41+
"prisma": "^7.10.0",
4242
"react": "^19.2.7",
4343
"react-dom": "^19.2.7",
4444
"react-hook-form": "^7.79.0",
@@ -62,7 +62,7 @@
6262
"@typescript-eslint/parser": "^8.61.0",
6363
"dotenv-cli": "^11.0.0",
6464
"eslint": "^9.39.4",
65-
"eslint-config-next": "16.2.9",
65+
"eslint-config-next": "16.3.3",
6666
"eslint-config-prettier": "^10.1.8",
6767
"eslint-plugin-import-x": "^4.16.2",
6868
"eslint-plugin-prettier": "^5.5.6",
@@ -98,14 +98,17 @@
9898
"node": ">=24.0.0"
9999
},
100100
"resolutions": {
101-
"@hono/node-server": ">=1.19.13",
102-
"diff": ">=4.0.4",
103-
"flatted": ">=3.4.2",
104-
"js-yaml": ">=3.14.2",
105-
"minimatch": ">=3.1.3",
106-
"picomatch": ">=4.0.4",
107-
"postcss": ">=8.5.10",
108-
"preact": ">=10.26.10",
109-
"yaml": ">=1.10.3"
101+
"brace-expansion": "^5.0.9",
102+
"deepmerge-ts": "^8.0.2",
103+
"diff": "^9.0.0",
104+
"fast-uri": "^3.1.5",
105+
"flatted": "^3.4.2",
106+
"js-yaml": "^4.3.1",
107+
"minimatch": "^10.2.5",
108+
"nanoid": "^3.3.18",
109+
"picomatch": "^4.0.4",
110+
"postcss": "^8.5.23",
111+
"preact": "^10.29.1",
112+
"yaml": "^2.8.4"
110113
}
111114
}

0 commit comments

Comments
 (0)