Skip to content

deps: override deepmerge-ts to 8.x to clear 3 HIGH audit findings - #143

Merged
GeiserX merged 1 commit into
mainfrom
deps/override-deepmerge-ts
Sep 15, 2026
Merged

GeiserX merged 1 commit into
mainfrom
deps/override-deepmerge-ts

Conversation

@GeiserX

@GeiserX GeiserX commented Sep 14, 2026

Copy link
Copy Markdown
Owner

npm audit on main reports 3 HIGH vulnerabilities. GitHub has raised no Dependabot alert for any of them, in any state, so the only way to see this is to run npm audit against the lockfile directly.

Advisory GHSA-ggr8-5vv4-36mx — HIGH, published 2026-08-17
Package deepmerge-ts 7.1.5
Reached via prisma@prisma/configdeepmerge-ts
Issue Stack exhaustion when merging recursive object graphs
Fixed in 8.0.0

The other two findings (@prisma/config, prisma) are the same vulnerability reported against the packages that carry it.

Why upgrading Prisma is not an option

@prisma/config pins deepmerge-ts to exactly 7.1.5, not a range, and still does at @latest. The newest published prisma is 8.0.0-rc.15, a release candidate, and the advisory covers prisma through 8.1.0-dev.4. There is no stable release that resolves this, so overrides is the only route.

Change

One line in package.json:

   "overrides": {
+    "deepmerge-ts": "^8.0.0",

Lockfile delta is a single package: deepmerge-ts 7.1.5 → 8.0.2. Nothing else moves.

Verification

deepmerge-ts is only reached at Prisma config-load time, so that is what I exercised:

  • npm audit: 3 high → found 0 vulnerabilities
  • npm run db:generate: all 4 Prisma clients generate (app, users, blog, support)
  • npx vitest run: 1078 passed (49 files)
  • npx tsc --noEmit: clean
  • npm run build: ✓ Compiled successfully

The generate check is not vacuous. I replaced deepmerge-ts's entry points on disk with a throwing stub and re-ran prisma generate; it failed with Unknown error during config file loading: Error: MUTATED deepmerge-ts. So @prisma/config genuinely loads and uses this package during config loading, and the pass under 8.0.2 is real evidence rather than a check that could never fail.

Note for future dependency work

This is the second time in this repo that the fix lives in overrides rather than in a version bump, and the opposite of the last one: in #140 our own override was pinning sharp below the patched version, here an upstream exact pin holds us on a vulnerable one. Worth checking overrides first either way.

Summary by CodeRabbit

  • Chores
    • Updated dependency resolution to use the specified deepmerge-ts version.

npm audit reports 3 HIGH on main: deepmerge-ts 7.1.5 (GHSA-ggr8-5vv4-36mx,
stack exhaustion merging recursive object graphs, published 2026-08-17)
and the two packages that carry it, @prisma/config and prisma. GitHub has
raised no Dependabot alert for any of them in any state, so the only way
to see this is to run npm audit against the lockfile.

Upgrading Prisma cannot fix it. @prisma/config pins deepmerge-ts to
exactly 7.1.5, and still does at @latest. The newest prisma is
8.0.0-rc.15, a release candidate, and the advisory covers prisma through
8.1.0-dev.4. There is no release to move to, so an override is the only
route.

Verified deepmerge-ts 8 does not break the one thing that consumes it:
all four Prisma clients generate, and sabotaging deepmerge-ts on disk
makes prisma generate fail with "Unknown error during config file
loading", which proves the check can go red rather than passing vacuously.

npm audit: 3 high -> 0. Lockfile delta is one package.
@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: bd624418-a019-4296-888e-e7c977213c2e

📥 Commits

Reviewing files that changed from the base of the PR and between c077714 and 53af2d6.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
📒 Files selected for processing (1)
  • package.json

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The package configuration adds a deepmerge-ts override pinned to ^8.0.0.

Changes

Dependency configuration

Layer / File(s) Summary
Add deepmerge-ts override
package.json
The overrides block now pins deepmerge-ts to ^8.0.0.

Priority: ➖ Normal

Estimated code review effort: 1 (Trivial) | ~2 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 53af2

The override removes the vulnerable dependency version without an established compatibility or installation failure.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description provides a detailed summary, rationale, change details, and verification results. It does not follow the required template because the Type of Change, Database Changes, Security Checkl… Add all required template sections. Select the applicable Type of Change, Database Changes, Testing, and Security Checklist items. State deployment considerations or indicate none. Include screenshots or state that they are not applicable.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the dependency override and its purpose of resolving three HIGH audit findings.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description provides a detailed summary, rationale, change details, and verification results. It does not follow the required template because the Type of Change, Database Changes, Security Checklist, Deployment Notes, and Screenshots sections are missing or not completed.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch deps/override-deepmerge-ts

Warning

Some tools did not complete. Review the errors below.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

package.json

ESLint skipped: missing config or dependency (missing-dependency). The ESLint configuration references a package that is not available in the sandbox.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@GeiserX
GeiserX merged commit 1b6060a into main Sep 15, 2026
13 checks passed
@GeiserX
GeiserX deleted the deps/override-deepmerge-ts branch September 15, 2026 07:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant