pnpm-workspace.yaml
Rama main · réplica de lectura del repositorio original.
packages:
- "apps/web"
- "apps/tracker"
- "apps/marketing"
- "packages/*"
# Force patched versions of transitive dependencies flagged by high-severity
# advisories (DoS via quadratic/exponential parsing). All are same-major pins,
# so no API change: brace-expansion 1.1.20 (GHSA-3jxr-9vmj-r5cp,
# GHSA-rgw5-rvv9-x895, GHSA-qhr7-859c-m2p7 and GHSA-6j4f-fj2g-mc7p), js-yaml 3.15.2 for gray-matter and js-yaml 4.3.2 for
# eslint tooling (GHSA-52cp-r559-cp3m, then GHSA-2883-xcg3-v3hh).
overrides:
# 1.1.18, not 1.1.16. GHSA-rgw5-rvv9-x895 (published after this block was
# first written) is vulnerable below 1.1.18 and, unlike the advisory noted
# under brace-expansion@5 below, it DOES have a 1.x backport. Staying on
# 1.1.16 reddens the audit on every branch with no code change, which is how
# this bump was found.
brace-expansion@1: 1.1.20
# brace-expansion 5.x <=5.0.7 is a DoS via unbounded expansion length
# (GHSA-mh99-v99m-4gvg), patched in 5.0.8, and GHSA-qhr7-859c-m2p7 and GHSA-6j4f-fj2g-mc7p, patched in 5.0.11 and 5.0.10, so the pin is 5.0.11. The advisory collapses every major
# into one range, so 1.1.16 is nominally flagged too, but there is no 1.x
# backport and forcing 5.x onto the 1.x consumers breaks eslint at runtime
# (@eslint/config-array pathMatches). The 1.x chain is eslint only, which never
# ships in any deployed artifact, so it is pinned to the newest 1.x instead.
brace-expansion@5: 5.0.11
# Raised 3.15.1 -> 3.15.2 and 4.3.1 -> 4.3.2 for GHSA-2883-xcg3-v3hh, a CPU
# exhaustion where `maxTotalMergeKeys` does not bound the work done for empty
# merge sources. The 3.x chain is gray-matter, which parses the frontmatter of
# every committed .mdx file at build time; the 4.x chain is eslint tooling.
# Both are patch releases on their own major, so no API change.
js-yaml@3: 3.15.2
js-yaml@4: 4.3.2
# sharp <0.35.0 bundles a vulnerable libvips (GHSA-f88m-g3jw-g9cj). Patched in
# 0.35.0+; Next pulls it as an optional dep for image optimization and its
# transform API is unchanged across this bump. Verified the marketing build.
#
# Raised 0.35.3 -> 0.35.4 for GHSA-rgj7-g3m4-5g8c, which covers two libheif
# vulnerabilities bundled below 0.35.4 (GHSA-g89c-p67h-r497 and
# GHSA-2jg2-4ch7-h545). Patch release on the same minor, so no API change.
#
# Raised 0.35.4 -> 0.35.5 for GHSA-wq5f-xc86-pv6w, a vulnerability in the
# librsvg that sharp bundles below 0.35.5. Patch release on the same minor.
sharp: 0.35.5
# postcss path/source-map advisories (GHSA-6g55-p6wh-862q file read, then
# GHSA-r28c-9q8g-f849 path traversal in a previous source map, fixed in
# 8.5.18). Next pulls postcss transitively; these are same-major bug fixes, so
# no API change. Verified the marketing build.
#
# Raised 8.5.18 -> 8.5.26 because THIS PIN was what held nanoid back. postcss
# 8.5.18 depends on an older nanoid range that resolves to 3.3.12, which two
# high-severity advisories cover (GHSA-28wg-ghj8-5hjv, GHSA-2v37-7h3g-55p8);
# 8.5.26 declares nanoid ^3.3.17 and so pulls a patched one on its own. Fixing
# the pin that caused it beats adding a second override to paper over it, and
# it is why no `nanoid:` entry appears in this file. Both advisories published
# after the pin was written, so this reddened main with no code change at all.
postcss: 8.5.26
# source-map-js from 1.0.0 up to 1.2.1 is an event-loop denial of service
# through indexed source-map section offsets (GHSA-68fv-2mgg-jv7q), patched in
# 1.2.2. postcss declares ^1.2.1, so the pin stays inside its range; the other
# consumers are build tooling. Patch release on the same minor.
source-map-js: 1.2.2
# seroval from 0.12.0 up to 1.6.0 is critical (GHSA-p6vx-979v-rg4c, promise
# handling in fromJSON) and up to 1.6.2 is high (GHSA-jp82-f5mq-hwhp, an
# unchecked TypedArray length); both are fixed from 1.6.3. TanStack Router's
# router-core declares ^1.5.4 for seroval and for seroval-plugins, so 1.6.8 is
# inside its range, and its newest release already requires ^1.6.7.
# seroval-plugins takes seroval as a peer and the two are published together,
# so they move together.
seroval: 1.6.8
seroval-plugins: 1.6.8
# DOMPurify up to 3.4.16: a SAFE_FOR_TEMPLATES bypass in shadow-root content
# (GHSA-cg2g-xh64-v4q7, critical) and IN_PLACE hooks leaving detached
# handlers armed (GHSA-mrv2-3pqr-j5jr, high), both fixed in 3.4.17. The web app
# declares ^3.4.17 itself; this pin carries posthog-js's copy (it declares
# ^3.4.12, so 3.4.17 is inside its range).
dompurify: 3.4.17
# One copy of each Radix overlay internal (dismissable layer, focus scope,
# focus guards, portal). Each copy keeps its own record of the page's pointer
# events and focus traps, so a dialog opened from a menu built on another copy
# leaves the page unresponsive after it closes. The command palette's cmdk
# declares @radix-ui/react-dialog ^1.1.6; this keeps it on the dialog the
# dashboard itself uses.
cmdk>@radix-ui/react-dialog: ^1.3.1
# Documented audit exceptions. Every entry must state WHY the advisory cannot be
# fixed by pinning and WHAT would let us drop the exception, so this list stays
# short and reviewable rather than becoming a place to silence real findings.
auditConfig:
ignoreGhsas:
# brace-expansion DoS via unbounded expansion length. Reached ONLY through
# eslint (eslint > minimatch@3 > brace-expansion@1), which is developer and
# CI tooling: it is absent from the Go binary, the built web bundle, and the
# marketing standalone output, so it is not a production attack surface.
# The advisory collapses every major into a single "<=5.0.7" range whose only
# patched release is 5.0.8, and there is no 1.x backport to pin to. Forcing
# 5.0.8 onto the 1.x consumers was tested and breaks eslint at runtime
# (@eslint/config-array pathMatches). The 5.x line IS pinned to 5.0.11 above.
# DROP THIS when the monorepo moves to eslint 10, which no longer pulls the
# minimatch@3 chain.
- GHSA-mh99-v99m-4gvg
allowBuilds:
# Pulled in by posthog-js (marketing analytics). Its postinstall script only
# prints a funding message; core-js needs no build step to work as a runtime
# dependency. pnpm 11 writes a "set this to true or false" placeholder here on
# first install, which is not a valid value and fails every subsequent
# `pnpm install`, so this must be answered rather than left.
core-js: false
esbuild: true
# Puppeteer's postinstall downloads ~100 MB of Chromium. Disabled because
# nothing in our pipeline launches a headless browser; impeccable's critique
# uses static analysis, not screenshots. Flip to `true` if a future phase
# needs a real browser (live preview iteration, visual diffs, etc.).
puppeteer: false
sharp: true
vue-demi: false