@lenne.tech/nest-server 11.41.5 → 11.41.6
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/.claude/rules/testing.md
CHANGED
|
@@ -680,6 +680,22 @@ copy: its models' `securityCheck()` **records its own invocation** (`checkedFor`
|
|
|
680
680
|
narrowing fields, so "the response looks redacted" — which a `@Restricted` rule, `prepareOutput` or
|
|
681
681
|
a typo in the fixture would produce too — becomes "the hook ran, with this user, on this object".
|
|
682
682
|
|
|
683
|
+
## Mail: one real SMTP round trip
|
|
684
|
+
|
|
685
|
+
Every other mail test runs on `jsonTransport`, so the mail library could change its wire behaviour and
|
|
686
|
+
every suite would stay green. That stopped being acceptable when 11.41.5 moved nodemailer across a
|
|
687
|
+
major (9 → 10, a TypeScript rewrite) with no test that had ever sent a message through a real
|
|
688
|
+
handshake. `tests/unit/email-smtp-roundtrip.spec.ts` closes that: an in-process `smtp-server`
|
|
689
|
+
(devDependency, no Docker, hence the unit runner) on 127.0.0.1 with STARTTLS and AUTH-over-TLS-only,
|
|
690
|
+
and `EmailService.sendMail()` against it — delivered, upgraded, authenticated, attachment intact,
|
|
691
|
+
paired with refusals (wrong password; `requireTLS` against a server that cannot do STARTTLS).
|
|
692
|
+
|
|
693
|
+
One trap worth knowing before you extend it: `smtp-server`'s `hideSTARTTLS` only removes the
|
|
694
|
+
capability from the EHLO reply — the command still works, and nodemailer with `requireTLS` issues it
|
|
695
|
+
anyway and upgrades. So `hideSTARTTLS` simulates a STRIPPED capability line (and the spec asserts the
|
|
696
|
+
upgrade there), while a server that genuinely cannot encrypt needs `disabledCommands: ['STARTTLS']`.
|
|
697
|
+
A refusal test written against `hideSTARTTLS` fails for the right reason: the mail went out encrypted.
|
|
698
|
+
|
|
683
699
|
## Structural invariants over `src/`
|
|
684
700
|
|
|
685
701
|
Some properties cannot be observed by running the code, only by reading it — and a runtime guard
|
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 as of 2026-10-
|
|
3
|
+
> Auto-generated from source code as of 2026-10-02 (v11.41.6)
|
|
4
4
|
> File: `FRAMEWORK-API.md` — compact, machine-readable API surface for Claude Code
|
|
5
5
|
|
|
6
6
|
## CoreModule.forRoot()
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Migration Guide: 11.41.5 → 11.41.6
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
| Category | Details |
|
|
6
|
+
| --------------------- | ----------------------------------------------------------------------------------------- |
|
|
7
|
+
| **Breaking Changes** | None |
|
|
8
|
+
| **Dependencies** | `@types/nodemailer` dropped (nodemailer 10 ships its own declarations) |
|
|
9
|
+
| **Security** | Two critical advisories in the SWC dev tooling (`piscina`, `@xhmikosr/decompress`) (§2) |
|
|
10
|
+
| **Migration Effort** | No code changes; a lockfile refresh, and one override key to widen in starter-based projects |
|
|
11
|
+
|
|
12
|
+
## Quick Migration
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pnpm update @lenne.tech/nest-server
|
|
16
|
+
pnpm update piscina --depth Infinity # only if `pnpm audit` reports GHSA-67c8-pqhq-4rmx (§2)
|
|
17
|
+
# starter-based projects: widen the @xhmikosr/decompress override key (§2)
|
|
18
|
+
pnpm run build && pnpm test
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Vendor-mode projects have nothing to pick up from `src/core/` in this release.
|
|
22
|
+
|
|
23
|
+
## What's New in 11.41.6
|
|
24
|
+
|
|
25
|
+
### 1. `@types/nodemailer` is gone
|
|
26
|
+
|
|
27
|
+
nodemailer 10 (since 11.41.5) is a TypeScript rewrite that ships its own declarations, so the
|
|
28
|
+
separate `@types/nodemailer` package is no longer read. This repository dropped it from its
|
|
29
|
+
devDependencies. If your project lists it, you can remove it as well:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pnpm remove @types/nodemailer
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Keeping it does no harm — TypeScript resolves the declarations bundled with `nodemailer` first —
|
|
36
|
+
but it is a package to keep updated that nothing uses.
|
|
37
|
+
|
|
38
|
+
### 2. Two critical advisories in the SWC dev tooling — fix them in YOUR project
|
|
39
|
+
|
|
40
|
+
Both reach a project through `@swc/cli` (which `@nestjs/cli` uses for SWC builds), and neither
|
|
41
|
+
can be fixed from here: this repository's lockfile and overrides do not reach your project.
|
|
42
|
+
|
|
43
|
+
#### `piscina`
|
|
44
|
+
|
|
45
|
+
`piscina` < 4.9.4 is covered by **GHSA-67c8-pqhq-4rmx** (critical, prototype-pollution gadget in
|
|
46
|
+
`ThreadPool.options`). `@swc/cli` depends on `piscina@^4.3.1`, and the fixed 4.9.4 is inside
|
|
47
|
+
that range, so no override is needed — only a lockfile refresh:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
pnpm update piscina --depth Infinity
|
|
51
|
+
pnpm audit
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
nest-server-starter 11.41.6 already resolves 4.9.4.
|
|
55
|
+
|
|
56
|
+
#### `@xhmikosr/decompress`
|
|
57
|
+
|
|
58
|
+
**GHSA-hrh2-vp3x-79xf** (critical, path traversal via a symlink chain) covers
|
|
59
|
+
`@xhmikosr/decompress >= 11.0.0, <= 11.1.3`; 11.1.4 is fixed. Projects created from
|
|
60
|
+
nest-server-starter carry this override in `pnpm-workspace.yaml`:
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
'@xhmikosr/decompress@>=11.0.0 <11.1.3': 11.1.4
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Its key stops one patch short: 11.1.3 is vulnerable too, and a project that resolves it is not
|
|
67
|
+
caught. Widen the key and refresh:
|
|
68
|
+
|
|
69
|
+
```yaml
|
|
70
|
+
'@xhmikosr/decompress@>=11.0.0 <11.1.4': 11.1.4
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pnpm install
|
|
75
|
+
pnpm audit
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
nest-server-starter 11.41.6 ships the widened key.
|
|
79
|
+
|
|
80
|
+
### 3. Under the hood
|
|
81
|
+
|
|
82
|
+
`EmailService` is now covered by a test that sends through a real SMTP handshake (STARTTLS,
|
|
83
|
+
authentication, attachment, `requireTLS` refusing a server without STARTTLS) instead of only
|
|
84
|
+
`jsonTransport`. No behaviour changed.
|
|
85
|
+
|
|
86
|
+
## Compatibility Notes
|
|
87
|
+
|
|
88
|
+
| Pattern | Status |
|
|
89
|
+
| ------- | ------ |
|
|
90
|
+
| `@types/nodemailer` in your devDependencies | Unused; safe to remove |
|
|
91
|
+
| Code typing `nodemailer/lib/…` transports as `X.default` (11.41.5) | Unchanged |
|
|
92
|
+
| A lockfile resolving `piscina@4.9.3` | Vulnerable — refresh it (§2) |
|
|
93
|
+
| Override `'@xhmikosr/decompress@>=11.0.0 <11.1.3': 11.1.4` | Misses 11.1.3 — widen the key to `<11.1.4` (§2) |
|
|
94
|
+
|
|
95
|
+
## Troubleshooting
|
|
96
|
+
|
|
97
|
+
| Symptom | Cause | Fix |
|
|
98
|
+
| ------- | ----- | --- |
|
|
99
|
+
| `pnpm audit` reports GHSA-67c8-pqhq-4rmx (`piscina`) | Lockfile still resolves 4.9.3 | `pnpm update piscina --depth Infinity` |
|
|
100
|
+
| `pnpm update piscina` changes nothing | An override pins `piscina` | Raise or remove the override to `4.9.4` |
|
|
101
|
+
| `pnpm audit` reports GHSA-hrh2-vp3x-79xf (`@xhmikosr/decompress`) | Override key `<11.1.3` misses 11.1.3 | Widen the key to `<11.1.4` |
|
|
102
|
+
|
|
103
|
+
## Module Documentation
|
|
104
|
+
|
|
105
|
+
- [Migration guide 11.41.4 → 11.41.5](./11.41.4-to-11.41.5.md) — the nodemailer 10 upgrade this release builds on
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lenne.tech/nest-server",
|
|
3
|
-
"version": "11.41.
|
|
3
|
+
"version": "11.41.6",
|
|
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",
|
|
@@ -196,7 +196,6 @@
|
|
|
196
196
|
"@types/lodash": "4.17.25",
|
|
197
197
|
"@types/multer": "2.3.0",
|
|
198
198
|
"@types/node": "26.6.3",
|
|
199
|
-
"@types/nodemailer": "8.0.2",
|
|
200
199
|
"@types/passport": "1.0.17",
|
|
201
200
|
"@vitest/coverage-v8": "4.1.11",
|
|
202
201
|
"ansi-colors": "4.1.3",
|
|
@@ -212,6 +211,7 @@
|
|
|
212
211
|
"oxfmt": "0.71.0",
|
|
213
212
|
"oxlint": "1.86.0",
|
|
214
213
|
"rimraf": "6.1.3",
|
|
214
|
+
"smtp-server": "3.19.16",
|
|
215
215
|
"ts-node": "10.9.2",
|
|
216
216
|
"tsconfig-paths": "4.2.0",
|
|
217
217
|
"tsx": "4.23.15",
|