pnpm-workspace.yaml
Rama main · réplica de lectura del repositorio original.
packages:
- "apps/*"
- "packages/*"
- "packages/providers/*"
- "tooling/*"
- "e2e"
# better-call's zod peer is optional; without a pin pnpm may re-resolve it to
# zod@4 (present transitively), which breaks better-auth's type exports.
overrides:
"better-call>zod": ^3
# nwsapi is jsdom's CSS selector engine, so it decides what every
# testing-library query matches. 2.2.26 makes interaction tests hang rather
# than fail: five suites went from milliseconds to timing out at 5s each
# (currency picker, remove-holding, dividend calendar, dividends page), and
# the reported error is a bare "Test timed out" that names nothing. 2.2.25 is
# fine; the break is exactly .26.
#
# To retire this: drop the line, `pnpm install`, and run
# `apps/web` vitest. If the interaction suites still pass in milliseconds,
# upstream fixed it and the pin can go.
nwsapi: "<2.2.26"
allowBuilds:
cpu-features: false
esbuild: true
msw: false
protobufjs: false
sharp: true
ssh2: false
# Single source of truth for shared dependency versions (pnpm catalogs).
catalog:
"@changesets/cli": ^2
"@eslint/js": ^9
"@next/eslint-plugin-next": ^16
# Floor, not just a lockfile pin: <1.19.15 is path traversal in `serveStatic`
# on Windows via an encoded backslash (GHSA-frvp-7c67-39w9). Sage's API mounts
# no static middleware at all, so exposure is nil — but a public repo should
# not resolve to a known-vulnerable range. Staying on 1.x deliberately: 2.x is
# a major and carries its own open advisories at the time of writing.
"@hono/node-server": ^1.19.15
"@tailwindcss/postcss": ^4
"@tanstack/react-query": ^5
"@tanstack/react-query-devtools": ^5
"@testcontainers/postgresql": ^12
"@testing-library/jest-dom": ^6
"@testing-library/react": ^16
"@types/node": ^22
"@types/react": ^19
"@types/react-dom": ^19
# Floor, not just a lockfile pin: <1.6.22 allows account takeover by
# pre-account hijacking on magic-link and email-OTP sign-in. Sage enables
# neither — auth.ts configures emailAndPassword with no plugins, and there is
# no email capability anywhere in the tree — so it is not reachable here. The
# floor stands anyway: a public repo should not ship an auth library on a
# known-vulnerable range, and the day someone adds a plugin is not the day to
# remember this.
#
# 1.7 needs `account.issuer` — migration 0028. Below that migration the
# library refuses every write to the table, so the two move together: do not
# raise this into 1.7 territory on a checkout that lacks 0028, and do not
# lower it below 1.7 now that 0028 has run.
better-auth: ^1.7.1
class-variance-authority: ^0.7
clsx: ^2
decimal.js: ^10
drizzle-kit: ^0.31
drizzle-orm: ^0.45
esbuild: ^0.28
eslint: ^9
eslint-plugin-react: ^7
eslint-plugin-react-hooks: ^5
globals: ^16
# Floor, not just a lockfile pin: <4.12.34 carries cross-request data
# disclosure in hono/jsx, an XSS bypass in cx(), and a header de-duplication
# bug. Sage serves JSON and uses neither hono/jsx nor cx(), so exposure is
# limited — but a public repo should not resolve to a known-vulnerable range.
hono: ^4.12.34
jsdom: ^26
lucide-react: ^0.460
msw: ^2
# Floor, not just a lockfile pin: <15.5.21 carries SSRF via attacker-
# controlled rewrite destinations, SSRF in Server Actions on custom servers,
# DoS in Server Actions, and unauthenticated disclosure of internal Server
# Function endpoints.
#
# On 16, not 15, for the transitive advisories. This note used to claim that
# bumping within 15 also cleared the sharp (libvips) and postcss findings; it
# does not, and could not: 15.x pins `postcss` at exactly 8.4.31 and `sharp`
# at ^0.34.3, both of which sit under every relevant advisory, so no in-range
# bump reaches a fixed version. 16.x pins postcss 8.5.23 and sharp ^0.35.3,
# which clears both — upstream, rather than by overriding a pin Next chose.
#
# `sharp` is worth naming precisely: it arrives through `next`, which is a
# production dependency, not through build tooling. Nothing in this app
# invokes it (the single next/image is `unoptimized`), but /_next/image
# exists on the server regardless.
next: ^16.3.3
next-themes: ^0.4
postgres: ^3
prettier: ^3
react: ^19
react-dom: ^19
tailwind-merge: ^3
tailwindcss: ^4
tsx: ^4
turbo: ^2
typescript: ^5
typescript-eslint: ^8
vitest: ^3
yahoo-finance2: ^4.0.2
zod: ^3
minimumReleaseAgeExclude:
- yahoo-finance2@4.0.2