@lenne.tech/nest-server 11.27.1 → 11.27.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/FRAMEWORK-API.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @lenne.tech/nest-server — Framework API Reference
2
2
 
3
- > Auto-generated from source code on 2026-06-22 (v11.27.1)
3
+ > Auto-generated from source code on 2026-06-22 (v11.27.2)
4
4
  > File: `FRAMEWORK-API.md` — compact, machine-readable API surface for Claude Code
5
5
 
6
6
  ## CoreModule.forRoot()
@@ -0,0 +1,191 @@
1
+ # Migration Guide: 11.27.1 → 11.27.2
2
+
3
+ ## Overview
4
+
5
+ | Category | Details |
6
+ |----------|---------|
7
+ | **Breaking Changes** | None |
8
+ | **New Features** | None |
9
+ | **Bugfixes** | `scripts/check.mjs` no longer hides devDependency vulnerabilities for library packages. The audit step now runs the chain's own audit command verbatim (same scope / `--prod` flag / `--audit-level`) instead of a hardcoded `pnpm audit --prod --json`. Repo-internal tooling — no consumer impact. |
10
+ | **Security** | 3 new / refreshed `pnpm.overrides` entries — `undici` range widened to `<7.28.0`, plus new entries for `piscina <4.9.3` and `@babel/core <7.29.6`. All transitive via the build/test toolchain. |
11
+ | **Migration Effort** | 0 minutes (automatic) — `pnpm update` is enough. ~2 minutes optional to mirror the security overrides into your own project's `package.json`. |
12
+
13
+ This is a **maintenance release**. No source-code or config changes are required.
14
+
15
+ ---
16
+
17
+ ## Quick Migration
18
+
19
+ No code changes required.
20
+
21
+ ```bash
22
+ # Update package
23
+ pnpm add @lenne.tech/nest-server@11.27.2
24
+
25
+ # Verify build
26
+ pnpm run build
27
+
28
+ # Run tests
29
+ pnpm test
30
+
31
+ # Re-run audit to confirm advisories cleared
32
+ pnpm audit
33
+ ```
34
+
35
+ ---
36
+
37
+ ## What's New in 11.27.2
38
+
39
+ ### 1. Security overrides refreshed
40
+
41
+ `pnpm.overrides` in this repo's `package.json` gained two new entries and
42
+ widened one existing range. Every override targets a **fixed version** (per
43
+ `.claude/rules/package-management.md` override rules — no `>=` / `^` / `~`):
44
+
45
+ | Package | Override | Advisory | Pulled in via |
46
+ |---------|----------|----------|---------------|
47
+ | `undici` | `7.28.0` (was `7.25.0`) | Various CVEs `<7.28.0` (incl. high) | `@compodoc/compodoc > cheerio`, `better-auth` |
48
+ | `piscina` | `4.9.3` *(new)* | High CVE in `piscina <4.9.3` | build/test toolchain |
49
+ | `@babel/core` | `7.29.6` *(new)* | `@babel/core <7.29.6` advisory | `@compodoc/compodoc > @babel/preset-env` |
50
+
51
+ #### Why your project may still see CVEs after upgrading
52
+
53
+ `pnpm.overrides` is **scoped to the package that declares it**. The framework's
54
+ overrides do **not** propagate into consumer projects' lockfiles. If your own
55
+ `pnpm audit` flags `undici / piscina / @babel/core`, mirror the entries into
56
+ your project's `package.json`:
57
+
58
+ ```jsonc
59
+ // projects/api/package.json (or your project's package.json)
60
+ "pnpm": {
61
+ "//overrides": {
62
+ "undici@>=7.0.0 <7.28.0": "Security: various CVEs <7.28.0 (incl. high) - transitive via @compodoc/compodoc>cheerio + better-auth",
63
+ "piscina@<4.9.3": "Security: high CVE in piscina <4.9.3 - transitive via the build/test toolchain",
64
+ "@babel/core@<7.29.6": "Security: @babel/core <7.29.6 advisory - transitive via @compodoc/compodoc>@babel/preset-env"
65
+ },
66
+ "overrides": {
67
+ "undici@>=7.0.0 <7.28.0": "7.28.0",
68
+ "piscina@<4.9.3": "4.9.3",
69
+ "@babel/core@<7.29.6": "7.29.6"
70
+ }
71
+ }
72
+ ```
73
+
74
+ After adding, run `pnpm install && pnpm audit && pnpm test`.
75
+
76
+ ### 2. `scripts/check.mjs` audit step is now chain-faithful
77
+
78
+ The audit step in the `check.mjs` wrapper previously hardcoded
79
+ `pnpm audit --prod --json` with a separate gate level extracted from the
80
+ chain's `--audit-level` flag. For library packages where dev-only dependencies
81
+ ship vulnerabilities, this **masked the vulnerabilities** that a bare
82
+ `pnpm audit` would have surfaced — because `--prod` excludes devDependencies.
83
+
84
+ The audit step now runs the **chain's own audit command verbatim** (same scope,
85
+ same `--prod` flag if any, same `--audit-level` if any), only appending `--json`
86
+ for the structured counts. The blocking gate becomes the command's own exit
87
+ code, so `check` blocks **precisely when a bare `<auditCmd>` would** —
88
+ never with a narrower scope than the chain.
89
+
90
+ What this means in practice:
91
+
92
+ - **Library packages** (this repo, plus any consumer that runs `pnpm audit` —
93
+ not `pnpm audit --prod` — in their `check` script) now see devDep vulns
94
+ surface in the wrapper run, matching what their bare audit command reports.
95
+ - **Application packages** that use `pnpm audit --prod` keep the exact same
96
+ behaviour — their scope is unchanged.
97
+ - The status header now shows the **full audit command** (e.g.
98
+ `audit: pnpm audit --audit-level=high`) instead of just `audit gate: high`,
99
+ so the gate is auditable at a glance.
100
+
101
+ If your `check` chain has no audit step at all, the wrapper now correctly
102
+ **skips** the audit phase (previously it ran a hardcoded one anyway).
103
+
104
+ > **Consumer impact:** None unless you copied `scripts/check.mjs` into your
105
+ > own project from 11.27.1. If you did, the upgrade fixes a silent gap in your
106
+ > security gate — review the next `pnpm run check` for previously hidden
107
+ > devDep findings.
108
+
109
+ ---
110
+
111
+ ## Breaking Changes
112
+
113
+ None.
114
+
115
+ ---
116
+
117
+ ## Compatibility Notes
118
+
119
+ - **`IServerOptions` / `CoreModule.forRoot()`:** unchanged.
120
+ - **`FRAMEWORK-API.md`:** regenerated for the new version stamp only — no API
121
+ surface differences vs. 11.27.1.
122
+ - **`config.env.ts`:** no new fields, no deprecations.
123
+ - **Vendor-mode consumers:** nothing to sync. The override changes live in
124
+ `package.json` at the **repo root**, which is excluded from
125
+ `convertCloneToVendored`. The `scripts/check.mjs` wrapper also lives outside
126
+ `src/core/`, so vendor projects keep their existing `check` setup.
127
+ - **Custom controllers / resolvers extending Core* classes:** no impact —
128
+ no Core method signatures changed.
129
+
130
+ ---
131
+
132
+ ## Verifying
133
+
134
+ ```bash
135
+ # 1. Update + install
136
+ pnpm add @lenne.tech/nest-server@11.27.2
137
+ pnpm install
138
+
139
+ # 2. Confirm advisories cleared (or only show unaffected residuals)
140
+ pnpm audit
141
+
142
+ # 3. Smoke-test the new check wrapper (only relevant in this repo)
143
+ pnpm run check # quiet, report-driven — audit now mirrors the chain
144
+ pnpm run check:raw # original chain, full noise
145
+
146
+ # 4. Tests + build
147
+ pnpm test
148
+ pnpm run build
149
+ ```
150
+
151
+ ---
152
+
153
+ ## Troubleshooting
154
+
155
+ ### `pnpm audit` in my consumer project still reports `undici` / `piscina` / `@babel/core`
156
+
157
+ Expected — `pnpm.overrides` is scoped to the declaring package. Mirror the
158
+ entries listed under [Why your project may still see CVEs after upgrading](#why-your-project-may-still-see-cves-after-upgrading).
159
+
160
+ ### `pnpm run check` suddenly reports more vulnerabilities than 11.27.1
161
+
162
+ Working as intended — the previous wrapper silently narrowed the audit to
163
+ `--prod` scope. The new wrapper mirrors your chain's own audit command, so
164
+ devDep vulnerabilities a bare `pnpm audit` would have flagged now appear in
165
+ the wrapper run. Either:
166
+
167
+ - Mirror the relevant overrides from this guide (recommended), or
168
+ - Narrow your chain's audit command to `pnpm audit --prod --audit-level=high`
169
+ if devDep vulns are out of scope for your gate.
170
+
171
+ ### Audit step is skipped — "audit: none" in the header
172
+
173
+ Your `check` chain has no audit step. Add `pnpm audit` (or
174
+ `pnpm audit --prod --audit-level=high`) at the start of the chain in
175
+ `package.json` to re-enable the gate.
176
+
177
+ ---
178
+
179
+ ## Module Documentation
180
+
181
+ No module documentation changes in this release. Reference documentation:
182
+
183
+ - **Package management rules:** [`.claude/rules/package-management.md`](../.claude/rules/package-management.md) — fixed-version overrides only, never ranges
184
+ - **Framework compatibility:** [`.claude/rules/framework-compatibility.md`](../.claude/rules/framework-compatibility.md) — what ships in the npm package
185
+
186
+ ---
187
+
188
+ ## References
189
+
190
+ - [Migration Guide 11.27.0 → 11.27.1](./11.27.0-to-11.27.1.md) — Previous release (initial `scripts/check.mjs` introduction + 7 security overrides)
191
+ - [nest-server-starter](https://github.com/lenneTech/nest-server-starter) — reference implementation
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lenne.tech/nest-server",
3
- "version": "11.27.1",
3
+ "version": "11.27.2",
4
4
  "description": "Modern, fast, powerful Node.js web framework in TypeScript based on Nest with a GraphQL API and a connection to MongoDB (or other databases).",
5
5
  "keywords": [
6
6
  "node",
@@ -192,7 +192,9 @@
192
192
  "minimatch@>=10.0.0 <10.2.5": "Security: RegExp DoS - transitive via @nestjs/apollo>ts-morph>@ts-morph/common and nodemon",
193
193
  "ajv@<6.14.0": "Security: prototype pollution - transitive via @getbrevo/brevo>rewire>eslint",
194
194
  "ajv@>=7.0.0-alpha.0 <8.18.0": "Security: prototype pollution - transitive via @nestjs/cli>@angular-devkit",
195
- "undici@>=7.0.0 <7.25.0": "Security: various CVEs - transitive via @compodoc/compodoc>cheerio",
195
+ "undici@>=7.0.0 <7.28.0": "Security: various CVEs <7.28.0 (incl. high) - transitive via @compodoc/compodoc>cheerio + better-auth",
196
+ "piscina@<4.9.3": "Security: high CVE in piscina <4.9.3 - transitive via the build/test toolchain",
197
+ "@babel/core@<7.29.6": "Security: @babel/core <7.29.6 advisory - transitive via @compodoc/compodoc>@babel/preset-env",
196
198
  "handlebars@>=4.0.0 <4.7.9": "Security: prototype pollution (GHSA-q42p-pg8m-cqh6) - transitive via @compodoc/compodoc",
197
199
  "brace-expansion@<1.1.13": "Security: RegExp DoS - transitive via eslint>minimatch",
198
200
  "brace-expansion@>=4.0.0 <5.0.6": "Security: RegExp DoS - Large numeric range defeats brace expansion (GHSA-jxxr-4gwj-5jf2) - transitive via nodemon>minimatch and @ts-morph/common>minimatch and @compodoc/compodoc>glob>minimatch",
@@ -225,7 +227,9 @@
225
227
  "minimatch@>=10.0.0 <10.2.5": "10.2.5",
226
228
  "ajv@<6.14.0": "6.14.0",
227
229
  "ajv@>=7.0.0-alpha.0 <8.18.0": "8.18.0",
228
- "undici@>=7.0.0 <7.25.0": "7.25.0",
230
+ "undici@>=7.0.0 <7.28.0": "7.28.0",
231
+ "piscina@<4.9.3": "4.9.3",
232
+ "@babel/core@<7.29.6": "7.29.6",
229
233
  "handlebars@>=4.0.0 <4.7.9": "4.7.9",
230
234
  "brace-expansion@<1.1.13": "1.1.13",
231
235
  "brace-expansion@>=4.0.0 <5.0.6": "5.0.6",