@bymax-one/nest-logger 1.4.1 → 1.4.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/CHANGELOG.md CHANGED
@@ -11,6 +11,47 @@ heading here.
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [1.4.2] - 2026-10-30
15
+
16
+ No breaking changes. Dependency and build-tooling maintenance only. No source file under `src/` changes and the
17
+ runtime JavaScript in `dist/` is byte-identical to `1.4.1`.
18
+
19
+ ### Security
20
+
21
+ - Raise the pnpm override floors for transitive devDependencies that resolved to versions
22
+ with new advisories: `body-parser` `^2.4.0` (GHSA-27r3-jxmh-p828, DoS on trailing bytes after a
23
+ compressed body), `multer` `^2.5.0` (GHSA-q7qp-rjg7-q26m, DoS from a pending async
24
+ `fileFilter`), `qs` `^6.16.1` (GHSA-6pq8-jhm2-2vcw, `qs.stringify` DoS) and `zod` `^4.6.6`
25
+ (GHSA-mrhx-c7xc-m3w5, memory exhaustion on oversized collections). Dev-only: the published
26
+ package has zero runtime dependencies.
27
+ - Ignore GHSA-gcqx-w48m-w2h4 (`deepmerge` <= 4.3.1, prototype poisoning in `mergeObject`) in
28
+ `osv-scanner.toml` until 2027-01-27. No patched release exists, and `deepmerge` is reached
29
+ only through `jest-config`, a devDependency. Remove the entry when a fixed `deepmerge` ships
30
+ or jest drops it.
31
+
32
+ ### Changed
33
+
34
+ - Build with `tsup` 9 (devDependency, was 8.5). The published `.mjs` and `.cjs` bundles are
35
+ byte-identical; the `.d.ts` and `.d.cts` files re-emit type exports as a separate
36
+ `export type { … }` statement instead of inline `type` modifiers, which declares the same
37
+ public surface. `attw` reports no problems and the bundle-size budgets hold.
38
+ - Resolve `@opentelemetry/api` to 1.10.0 in the lockfile (was 1.9.1), so the test suite runs
39
+ against the current API release. The `^1.9.0` range in `package.json`, devDependency and peer
40
+ alike, is unchanged.
41
+ - Bump `github/codeql-action/upload-sarif` to 4.39.1 in the Scorecard workflow. CI only; nothing
42
+ ships.
43
+
44
+ ### Documentation
45
+
46
+ - The runtime bundles are unchanged, and the type declarations were regenerated by `tsup` 9.
47
+ - The 1.0.1 and 1.0.8 release notes are corrected: 1.0.8 now records the id-safe charset
48
+ validation of inbound `x-request-id` and tenant ids that it already shipped.
49
+
50
+ #### Apply to a consumer
51
+
52
+ No action required. There is no new public API, no peer range changed, and the runtime JavaScript
53
+ is byte-identical to `1.4.1`; only the grouping of type exports in the declaration files differs.
54
+
14
55
  ## [1.4.1] - 2026-10-23
15
56
 
16
57
  No breaking changes.
@@ -1699,8 +1740,9 @@ identical to `1.0.8`, and nothing changed but the version number.
1699
1740
 
1700
1741
  ## [1.0.8] - 2026-08-10
1701
1742
 
1702
- Remediation of a local audit's redaction, attribution and correlation-id findings. No API
1703
- changed; the fixes are in the default redact set, the acting-user resolution and the docs.
1743
+ Remediation of a local audit's redaction, attribution and correlation-id findings. The public
1744
+ API is unchanged; the fixes are in the default redact set, the acting-user resolution, the
1745
+ correlation-id validation and the docs.
1704
1746
 
1705
1747
  ### Fixed
1706
1748
 
@@ -1712,6 +1754,14 @@ changed; the fixes are in the default redact set, the acting-user resolution and
1712
1754
  exception filter now resolve the acting user as `sub ?? id`, so a JWT principal (every
1713
1755
  `@bymax-one/nest-auth` token) is attributed to its subject rather than an ORM `id` when a
1714
1756
  principal carries both.
1757
+ - **Inbound correlation and tenant ids are confined to an id-safe charset.** The inbound
1758
+ `x-request-id` and tenant-id header values are now accepted only when they are drawn from an
1759
+ id-safe character set and fit the length bound; anything else (control bytes, whitespace,
1760
+ markup characters) is rejected. A rejected request id is replaced by a generated one (when
1761
+ `shouldGenerateRequestId` is on) and a rejected tenant id is omitted. The request id is echoed
1762
+ on the `x-request-id` response header and both ids are stored in the log context, so this keeps
1763
+ a client from planting a control byte or markup fragment in the logs and the header of every
1764
+ request it makes.
1715
1765
 
1716
1766
  ### Documentation
1717
1767
 
@@ -1956,11 +2006,11 @@ published `dist/` is identical — no runtime behaviour changes for consumers.
1956
2006
  Dev-only: the published package has zero runtime dependencies.
1957
2007
  - Force `qs` to `^6.15.3` (via `pnpm.overrides`) to clear GHSA-q8mj-m7cp-5q26
1958
2008
  (`qs.stringify` DoS). `typed-rest-client`, pulled in by Stryker, pins `qs` at
1959
- the affected `6.15.1` exactly, so no dependency refresh could resolve it
2009
+ the affected `6.15.1` exactly, so no dependency refresh could resolve it.
1960
2010
  - Pin every third-party and GitHub-owned action to a full commit SHA, with the
1961
2011
  release tag kept as a trailing comment so Dependabot can still bump them. The
1962
2012
  org's own `bymaxone/.github` reusable workflows and composite action stay on
1963
- the `@v1` moving tag by design, so shared-pipeline fixes keep propagating
2013
+ the `@v1` moving tag by design, so shared-pipeline fixes keep propagating.
1964
2014
 
1965
2015
  ### Changed
1966
2016
 
@@ -2026,7 +2076,8 @@ published `dist/` is identical — no runtime behaviour changes for consumers.
2026
2076
  - Professional CI suite: `ci.yml`, `bench.yml`, `codeql.yml`, `scorecard.yml`,
2027
2077
  `release.yml`, Dependabot, and issue templates
2028
2078
 
2029
- [Unreleased]: https://github.com/bymaxone/nest-logger/compare/v1.4.1...HEAD
2079
+ [Unreleased]: https://github.com/bymaxone/nest-logger/compare/v1.4.2...HEAD
2080
+ [1.4.2]: https://github.com/bymaxone/nest-logger/compare/v1.4.1...v1.4.2
2030
2081
  [1.4.1]: https://github.com/bymaxone/nest-logger/compare/v1.4.0...v1.4.1
2031
2082
  [1.4.0]: https://github.com/bymaxone/nest-logger/compare/v1.3.1...v1.4.0
2032
2083
  [1.3.1]: https://github.com/bymaxone/nest-logger/compare/v1.3.0...v1.3.1
@@ -1944,4 +1944,5 @@ interface LogEntry {
1944
1944
  */
1945
1945
  declare const LOG_KEYS_CONVENTION_REGEX: RegExp;
1946
1946
 
1947
- export { BymaxLoggerModule, type BymaxLoggerModuleAsyncOptions, type BymaxLoggerModuleOptions, type BymaxLoggerModuleOptionsFactory, DEFAULT_REDACT_PATHS, DefaultStdoutDestination, type EmittedDeploymentResource, type EmittedServiceResource, HttpAccessLogMiddleware, HttpExceptionFilter, HttpLoggingInterceptor, type HttpOptions, type ILogDestination, type IUnexpectedErrorSink, type IncomingHeaders, InjectLogger, LOGGER_DESTINATIONS_TOKEN, LOGGER_OPTIONS_TOKEN, LOGGER_PINO_INSTANCE_TOKEN, LOG_CONTEXT_METADATA_KEY, LOG_CONTEXT_TOKEN, LOG_KEYS_CONVENTION_REGEX, LogContext, type LogContext$1 as LogContextBag, LogContextService, type LogEntry, type LogLevel, LogPerformance, type LoggableRequest, type LoggableResponse, type NextHandler, type OtelOptions, PINO_LEVEL_NAMES, PINO_LEVEL_NUMBERS, PinoLoggerService, PinoUnexpectedErrorSink, PrettyDevDestination, type PrettyViewOptions, RESERVED_LOG_KEYS, RESERVED_LOG_KEYS_NOT_EMITTED, RequestIdMiddleware, type ReservedLogKey, type ResolvedBymaxLoggerModuleOptions, type ResolvedServiceMetadata, type ServiceMetadata, type UnexpectedErrorReport, applyAccessLog, applyRequestIdMiddleware };
1947
+ export { BymaxLoggerModule, DEFAULT_REDACT_PATHS, DefaultStdoutDestination, HttpAccessLogMiddleware, HttpExceptionFilter, HttpLoggingInterceptor, InjectLogger, LOGGER_DESTINATIONS_TOKEN, LOGGER_OPTIONS_TOKEN, LOGGER_PINO_INSTANCE_TOKEN, LOG_CONTEXT_METADATA_KEY, LOG_CONTEXT_TOKEN, LOG_KEYS_CONVENTION_REGEX, LogContext, LogContextService, LogPerformance, PINO_LEVEL_NAMES, PINO_LEVEL_NUMBERS, PinoLoggerService, PinoUnexpectedErrorSink, PrettyDevDestination, RESERVED_LOG_KEYS, RESERVED_LOG_KEYS_NOT_EMITTED, RequestIdMiddleware, applyAccessLog, applyRequestIdMiddleware };
1948
+ export type { BymaxLoggerModuleAsyncOptions, BymaxLoggerModuleOptions, BymaxLoggerModuleOptionsFactory, EmittedDeploymentResource, EmittedServiceResource, HttpOptions, ILogDestination, IUnexpectedErrorSink, IncomingHeaders, LogContext$1 as LogContextBag, LogEntry, LogLevel, LoggableRequest, LoggableResponse, NextHandler, OtelOptions, PrettyViewOptions, ReservedLogKey, ResolvedBymaxLoggerModuleOptions, ResolvedServiceMetadata, ServiceMetadata, UnexpectedErrorReport };
@@ -1944,4 +1944,5 @@ interface LogEntry {
1944
1944
  */
1945
1945
  declare const LOG_KEYS_CONVENTION_REGEX: RegExp;
1946
1946
 
1947
- export { BymaxLoggerModule, type BymaxLoggerModuleAsyncOptions, type BymaxLoggerModuleOptions, type BymaxLoggerModuleOptionsFactory, DEFAULT_REDACT_PATHS, DefaultStdoutDestination, type EmittedDeploymentResource, type EmittedServiceResource, HttpAccessLogMiddleware, HttpExceptionFilter, HttpLoggingInterceptor, type HttpOptions, type ILogDestination, type IUnexpectedErrorSink, type IncomingHeaders, InjectLogger, LOGGER_DESTINATIONS_TOKEN, LOGGER_OPTIONS_TOKEN, LOGGER_PINO_INSTANCE_TOKEN, LOG_CONTEXT_METADATA_KEY, LOG_CONTEXT_TOKEN, LOG_KEYS_CONVENTION_REGEX, LogContext, type LogContext$1 as LogContextBag, LogContextService, type LogEntry, type LogLevel, LogPerformance, type LoggableRequest, type LoggableResponse, type NextHandler, type OtelOptions, PINO_LEVEL_NAMES, PINO_LEVEL_NUMBERS, PinoLoggerService, PinoUnexpectedErrorSink, PrettyDevDestination, type PrettyViewOptions, RESERVED_LOG_KEYS, RESERVED_LOG_KEYS_NOT_EMITTED, RequestIdMiddleware, type ReservedLogKey, type ResolvedBymaxLoggerModuleOptions, type ResolvedServiceMetadata, type ServiceMetadata, type UnexpectedErrorReport, applyAccessLog, applyRequestIdMiddleware };
1947
+ export { BymaxLoggerModule, DEFAULT_REDACT_PATHS, DefaultStdoutDestination, HttpAccessLogMiddleware, HttpExceptionFilter, HttpLoggingInterceptor, InjectLogger, LOGGER_DESTINATIONS_TOKEN, LOGGER_OPTIONS_TOKEN, LOGGER_PINO_INSTANCE_TOKEN, LOG_CONTEXT_METADATA_KEY, LOG_CONTEXT_TOKEN, LOG_KEYS_CONVENTION_REGEX, LogContext, LogContextService, LogPerformance, PINO_LEVEL_NAMES, PINO_LEVEL_NUMBERS, PinoLoggerService, PinoUnexpectedErrorSink, PrettyDevDestination, RESERVED_LOG_KEYS, RESERVED_LOG_KEYS_NOT_EMITTED, RequestIdMiddleware, applyAccessLog, applyRequestIdMiddleware };
1948
+ export type { BymaxLoggerModuleAsyncOptions, BymaxLoggerModuleOptions, BymaxLoggerModuleOptionsFactory, EmittedDeploymentResource, EmittedServiceResource, HttpOptions, ILogDestination, IUnexpectedErrorSink, IncomingHeaders, LogContext$1 as LogContextBag, LogEntry, LogLevel, LoggableRequest, LoggableResponse, NextHandler, OtelOptions, PrettyViewOptions, ReservedLogKey, ResolvedBymaxLoggerModuleOptions, ResolvedServiceMetadata, ServiceMetadata, UnexpectedErrorReport };
@@ -270,4 +270,5 @@ declare const RESERVED_LOG_KEYS_NOT_EMITTED: Readonly<{
270
270
  */
271
271
  type ReservedLogKey = (typeof RESERVED_LOG_KEYS)[keyof typeof RESERVED_LOG_KEYS];
272
272
 
273
- export { type EmittedDeploymentResource, type EmittedServiceResource, LOG_KEYS_CONVENTION_REGEX, type LogEntry, type LogLevel, RESERVED_LOG_KEYS, RESERVED_LOG_KEYS_NOT_EMITTED, type ReservedLogKey, type ResolvedServiceMetadata, type ServiceMetadata };
273
+ export { LOG_KEYS_CONVENTION_REGEX, RESERVED_LOG_KEYS, RESERVED_LOG_KEYS_NOT_EMITTED };
274
+ export type { EmittedDeploymentResource, EmittedServiceResource, LogEntry, LogLevel, ReservedLogKey, ResolvedServiceMetadata, ServiceMetadata };
@@ -270,4 +270,5 @@ declare const RESERVED_LOG_KEYS_NOT_EMITTED: Readonly<{
270
270
  */
271
271
  type ReservedLogKey = (typeof RESERVED_LOG_KEYS)[keyof typeof RESERVED_LOG_KEYS];
272
272
 
273
- export { type EmittedDeploymentResource, type EmittedServiceResource, LOG_KEYS_CONVENTION_REGEX, type LogEntry, type LogLevel, RESERVED_LOG_KEYS, RESERVED_LOG_KEYS_NOT_EMITTED, type ReservedLogKey, type ResolvedServiceMetadata, type ServiceMetadata };
273
+ export { LOG_KEYS_CONVENTION_REGEX, RESERVED_LOG_KEYS, RESERVED_LOG_KEYS_NOT_EMITTED };
274
+ export type { EmittedDeploymentResource, EmittedServiceResource, LogEntry, LogLevel, ReservedLogKey, ResolvedServiceMetadata, ServiceMetadata };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bymax-one/nest-logger",
3
- "version": "1.4.1",
3
+ "version": "1.4.2",
4
4
  "description": "Structured JSON logging for NestJS based on Pino 10, with optional OpenTelemetry correlation.",
5
5
  "author": "Bymax One <support@bymax.one>",
6
6
  "license": "MIT",
@@ -142,7 +142,7 @@
142
142
  "tinybench": "^6.0.2",
143
143
  "ts-jest": "^29.4.9",
144
144
  "ts-node": "^10.9.2",
145
- "tsup": "^8.5.1",
145
+ "tsup": "^9.0.0",
146
146
  "tsx": "^4.19.2",
147
147
  "typescript": "^5.9.3"
148
148
  },