@cqrs-ddd/safe-stringify 0.3.0 → 0.4.1

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/README.md CHANGED
@@ -3,16 +3,7 @@
3
3
  Two JSON serializers with opposite goals, and the key-segment helpers that build
4
4
  identity keys. No runtime dependencies and no framework.
5
5
 
6
- | | Strict: `stableStringify`, `toStrictJsonValue` | Safe: `safeStringify`, `safeSanitize`, `redactValue` |
7
- | --- | --- | --- |
8
- | Use for | identity: cache keys, idempotency fingerprints, stored snapshots | display: logs, audit and dead-letter payloads |
9
- | Output | deterministic JSON, object keys sorted at every level, stable across releases | readable JSON in insertion order; the format may evolve |
10
- | Unsupported input | throws a `TypeError` | never throws |
11
- | Secrets | never redacts, because a key must not change | excludes and redacts on request |
12
-
13
- **Use the strict serializer for anything that identifies data. Never use `safeStringify`
14
- for a key or a fingerprint:** its output is not sorted, it replaces values it cannot
15
- represent, and its format may change.
6
+ **Documentation:** [guide](https://aristoteliss.github.io/nestjs-pipeline/packages/cqrs-ddd/safe-stringify/) · [API reference](https://aristoteliss.github.io/nestjs-pipeline/api/cqrs-ddd/safe-stringify/) · [all packages](https://aristoteliss.github.io/nestjs-pipeline/)
16
7
 
17
8
  ## Installation
18
9
 
@@ -24,141 +15,7 @@ pnpm add @cqrs-ddd/safe-stringify
24
15
 
25
16
  Requires Node.js 22.12 or later.
26
17
 
27
- ## Strict serializer
28
-
29
- ```typescript
30
- import { stableStringify, toStrictJsonValue } from '@cqrs-ddd/safe-stringify';
31
-
32
- stableStringify({ z: 1, a: { d: 2, c: new Date(0) } });
33
- // '{"a":{"c":"1970-01-01T00:00:00.000Z","d":2},"z":1}'
34
-
35
- toStrictJsonValue({ b: 2, a: 1 }, true); // { a: 1, b: 2 }, a null-prototype object
36
- ```
37
-
38
- - Strings, booleans, `null` and finite numbers are kept. Dates become ISO-8601 strings.
39
- An object with `toJSON()` is replaced by what that method returns.
40
- - Everything else throws a `TypeError`: `undefined`, functions, `bigint`, symbols and
41
- symbol-keyed properties, non-finite numbers, invalid dates, cycles, sparse arrays,
42
- `Map`, `Set`, `WeakMap`, `WeakSet`, `Error`, `RegExp`, `Promise`, `ArrayBuffer` and
43
- typed arrays.
44
- - `stableStringify` wraps that failure in a `TypeError` whose `cause` is the original.
45
- - Structurally equal values produce byte-identical strings, whatever their property
46
- insertion order. Keys sort by UTF-16 code unit, as `Array.prototype.sort` does.
47
-
48
- ## Safe serializer
49
-
50
- ```typescript
51
- import {
52
- DEFAULT_REDACT_KEYS,
53
- redactValue,
54
- safeStringify,
55
- } from '@cqrs-ddd/safe-stringify';
56
-
57
- const payload: Record<string, unknown> = { user: 'jane', password: 'secret', amount: 10n };
58
- payload.self = payload;
59
-
60
- safeStringify(payload);
61
- // '{"user":"jane","password":"secret","amount":"[bigint]","self":"[Circular]"}'
62
-
63
- safeStringify(payload, { redactKeys: DEFAULT_REDACT_KEYS });
64
- // '{"user":"jane","password":"[REDACTED]","amount":"[bigint]","self":"[Circular]"}'
65
-
66
- redactValue(payload); // a deep clone with DEFAULT_REDACT_KEYS masked
67
- ```
68
-
69
- - `safeStringify(value, options?, indent?)` and `safeSanitize(value, options?)` never
70
- throw. Cycles become `"[Circular]"`, errors are expanded to `name`, `message`, `stack`
71
- and their own enumerable properties, and values JSON cannot hold are replaced by a
72
- readable marker (`"[bigint]"`, `"[Function]"`, `"[Invalid Date]"`, `"[Binary Data]"`,
73
- `"[Stream]"`). A `Set<string>` in place of `options` is read as `excludeKeys`.
74
- `safeStringify(undefined)` returns the string `'undefined'`.
75
- - **They redact nothing unless you pass `redactKeys`.** `redactValue(value, keys?)`
76
- applies `DEFAULT_REDACT_KEYS` by default and keeps rich types (`mode: 'clone'`).
77
- - `SanitizeOptions`:
78
-
79
- | Option | Effect |
80
- | --- | --- |
81
- | `excludeKeys` | keys or dot-paths removed from the output; exact, case-sensitive match |
82
- | `redactKeys` | keys or dot-paths masked; matched ignoring case, `_` and `-`, so `refreshToken` also masks `refresh_token` |
83
- | `redactReplacement` | the mask; default `REDACTED` (`"[REDACTED]"`) |
84
- | `mode` | `'json'` (default) turns rich types into JSON-friendly values; `'clone'` deep-clones them keeping their classes |
85
-
86
- - Exclusion and redaction, with a key matched at any depth or a dot-path matched at one
87
- place only:
88
-
89
- ```typescript
90
- safeStringify(
91
- { user: { profile: { email: 'x' }, token: 't' } },
92
- { excludeKeys: ['user.profile'], redactKeys: ['token'], redactReplacement: '***' },
93
- );
94
- // '{"user":{"token":"***"}}'
95
-
96
- safeStringify({ when: new Date(0), tags: new Set(['a']), limits: new Map([['k', 1]]) });
97
- // '{"when":"1970-01-01T00:00:00.000Z","tags":["a"],"limits":{"k":1}}'
98
- ```
99
-
100
- - `DEFAULT_REDACT_KEYS` lists common secret names (passwords, tokens, API keys,
101
- authorization headers, cookies, card data). No list recognizes every secret: add your
102
- application's own names.
103
-
104
- ## Key segments
105
-
106
- ```typescript
107
- import {
108
- ABSENT_SEGMENT,
109
- escapeKeySegment,
110
- joinKeySegments,
111
- } from '@cqrs-ddd/safe-stringify';
112
-
113
- joinKeySegments(['cache', 'tenant:a', undefined, 'user']);
114
- // 'cache:tenant\\:a:\\-:user'
115
- ```
116
-
117
- - `joinKeySegments(segments)` escapes each segment and joins them with `:`.
118
- `undefined` and `null` become `ABSENT_SEGMENT` (`\-`), so `['a', undefined]` and
119
- `['a', '']` produce different keys.
120
- - `escapeKeySegment(value)` escapes `\` first, then `:`. A segment that is literally
121
- `\-` is written `\\-`, so it never collides with an absent segment.
122
-
123
- Build a cache key from a tenant, a request name and a strict fingerprint of the payload:
124
-
125
- ```typescript
126
- import { joinKeySegments, stableStringify } from '@cqrs-ddd/safe-stringify';
127
- import { createHash } from 'node:crypto';
128
-
129
- function cacheKey(tenantId: string | undefined, name: string, payload: unknown): string {
130
- const fingerprint = createHash('sha256').update(stableStringify(payload)).digest('hex');
131
- return joinKeySegments(['cache', tenantId, name, fingerprint]);
132
- }
133
- ```
134
-
135
- The strict serializer's output and these key formats are part of the package contract:
136
- changing them would orphan every stored cache entry, rate-limit bucket and idempotency
137
- fingerprint. The package's golden-output specs pin them.
138
-
139
- ## Migrating from @nestjs-pipeline/core 0.1.x
140
-
141
- `@nestjs-pipeline/core` 0.1.x did not export any serializer or key-segment helper from its
142
- entry point: `safeStringify` and `safeSanitize` lived in its internal
143
- `dist/helpers/safeStringify` module, and `stableStringify`, `toStrictJsonValue`,
144
- `redactValue`, `DEFAULT_REDACT_KEYS`, `REDACTED` and the key-segment helpers did not exist.
145
- Code that deep-imported the internal module moves to this package:
146
-
147
- ```typescript
148
- // Before (0.1.x, an internal path)
149
- import { safeSanitize, safeStringify } from '@nestjs-pipeline/core/dist/helpers/safeStringify';
150
-
151
- safeStringify(value, new Set(['token', 'ctx.sessionUser']), 2);
152
-
153
- // After (0.2.0)
154
- import { safeSanitize, safeStringify } from '@cqrs-ddd/safe-stringify';
155
-
156
- safeStringify(value, { excludeKeys: ['token', 'ctx.sessionUser'] }, 2);
157
- ```
158
-
159
- - The `Set<string>` second argument is still accepted and means `excludeKeys`.
160
- - `safeStringify(undefined)` now returns `'undefined'` instead of `undefined`.
161
- - Use `stableStringify`, not `safeStringify`, for any key or fingerprint you build.
18
+ Published as an ES module; a CommonJS application loads it with `require()`. Coming from 0.3.x, see [Upgrading from 0.3.x](https://aristoteliss.github.io/nestjs-pipeline/upgrading/from-0-3/).
162
19
 
163
20
  ## License
164
21
 
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { ABSENT_SEGMENT, escapeKeySegment, joinKeySegments, } from './key-segment';
2
- export * from './safeStringify';
3
- export * from './stableStringify';
1
+ export { ABSENT_SEGMENT, escapeKeySegment, joinKeySegments, } from './key-segment.js';
2
+ export * from './safeStringify.js';
3
+ export * from './stableStringify.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,25 +1,5 @@
1
- "use strict";
2
1
  /* Copyright (C) 2026-present Aristotelis — see repository license. */
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
- };
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.joinKeySegments = exports.escapeKeySegment = exports.ABSENT_SEGMENT = void 0;
19
- var key_segment_1 = require("./key-segment");
20
- Object.defineProperty(exports, "ABSENT_SEGMENT", { enumerable: true, get: function () { return key_segment_1.ABSENT_SEGMENT; } });
21
- Object.defineProperty(exports, "escapeKeySegment", { enumerable: true, get: function () { return key_segment_1.escapeKeySegment; } });
22
- Object.defineProperty(exports, "joinKeySegments", { enumerable: true, get: function () { return key_segment_1.joinKeySegments; } });
23
- __exportStar(require("./safeStringify"), exports);
24
- __exportStar(require("./stableStringify"), exports);
2
+ export { ABSENT_SEGMENT, escapeKeySegment, joinKeySegments, } from './key-segment.js';
3
+ export * from './safeStringify.js';
4
+ export * from './stableStringify.js';
25
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,sEAAsE;;;;;;;;;;;;;;;;;AAEtE,6CAIuB;AAHrB,6GAAA,cAAc,OAAA;AACd,+GAAA,gBAAgB,OAAA;AAChB,8GAAA,eAAe,OAAA;AAEjB,kDAAgC;AAChC,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
@@ -1,9 +1,4 @@
1
- "use strict";
2
1
  /* Copyright (C) 2026-present Aristotelis — see repository license. */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ABSENT_SEGMENT = void 0;
5
- exports.escapeKeySegment = escapeKeySegment;
6
- exports.joinKeySegments = joinKeySegments;
7
2
  /** Character that separates the segments of a composite key. */
8
3
  const SEGMENT_SEPARATOR = ':';
9
4
  /**
@@ -14,7 +9,7 @@ const SEGMENT_SEPARATOR = ':';
14
9
  * value only ever produces `\\` or `\:`, so no genuine segment can render as
15
10
  * `\-`, and a literal `\-` inside a value escapes to `\\-`.
16
11
  */
17
- exports.ABSENT_SEGMENT = '\\-';
12
+ export const ABSENT_SEGMENT = '\\-';
18
13
  /**
19
14
  * Escapes the structural characters of a `:`-joined composite key.
20
15
  *
@@ -33,7 +28,7 @@ exports.ABSENT_SEGMENT = '\\-';
33
28
  * The backslash is escaped first so that an input already containing one cannot
34
29
  * be used to forge a separator.
35
30
  */
36
- function escapeKeySegment(value) {
31
+ export function escapeKeySegment(value) {
37
32
  return value.replace(/\\/g, '\\\\').replace(/:/g, '\\:');
38
33
  }
39
34
  /**
@@ -44,10 +39,10 @@ function escapeKeySegment(value) {
44
39
  * had that position at all. Omitting an absent tenant, for example, would make a
45
40
  * tenant-less key identical to the key of a single-tenant deployment.
46
41
  */
47
- function joinKeySegments(segments) {
42
+ export function joinKeySegments(segments) {
48
43
  return segments
49
44
  .map((segment) => segment === undefined || segment === null
50
- ? exports.ABSENT_SEGMENT
45
+ ? ABSENT_SEGMENT
51
46
  : escapeKeySegment(segment))
52
47
  .join(SEGMENT_SEPARATOR);
53
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"key-segment.js","sourceRoot":"","sources":["../src/key-segment.ts"],"names":[],"mappings":";AAAA,sEAAsE;;;;;AAEtE,gEAAgE;AAChE,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B;;;;;;;GAOG;AACU,QAAA,cAAc,GAAG,KAAK,CAAC;AAEpC;;;;;;;;;;;;;;;;;GAiBG;AACH,0BAAiC,KAAa;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;GAOG;AACH,yBACE,QAAgD;IAEhD,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACf,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI;QACvC,CAAC,CAAC,QAAA,cAAc;QAChB,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAC9B;SACA,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"key-segment.js","sourceRoot":"","sources":["../src/key-segment.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,gEAAgE;AAChE,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgD;IAEhD,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACf,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI;QACvC,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAC9B;SACA,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC7B,CAAC"}
@@ -1,19 +1,13 @@
1
- "use strict";
2
1
  /* Copyright (C) 2026-present Aristotelis — see repository license. */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.DEFAULT_REDACT_KEYS = exports.REDACTED = void 0;
5
- exports.safeSanitize = safeSanitize;
6
- exports.safeStringify = safeStringify;
7
- exports.redactValue = redactValue;
8
2
  /** Placeholder substituted for the value of a redacted field. */
9
- exports.REDACTED = '[REDACTED]';
3
+ export const REDACTED = '[REDACTED]';
10
4
  /**
11
5
  * Commonly sensitive field names. Redaction matches a key ignoring case, `_`
12
6
  * and `-`, so `refreshToken` also masks `refresh_token` and `REFRESH-TOKEN`;
13
7
  * a name list cannot recognize every secret, so add application-specific
14
8
  * names through `redactKeys`.
15
9
  */
16
- exports.DEFAULT_REDACT_KEYS = [
10
+ export const DEFAULT_REDACT_KEYS = [
17
11
  'password',
18
12
  'passwordHash',
19
13
  'pass',
@@ -43,7 +37,7 @@ function buildMatchers(options) {
43
37
  const pathExclude = new Set();
44
38
  const flatRedact = new Set();
45
39
  const pathRedact = new Set();
46
- let redactReplacement = exports.REDACTED;
40
+ let redactReplacement = REDACTED;
47
41
  let mode = 'json';
48
42
  if (options instanceof Set)
49
43
  options = { excludeKeys: options };
@@ -228,7 +222,7 @@ function copyProperties(source, target, path, matchers, ancestors) {
228
222
  * Sanitizes a value for structured logging or general processing: handles
229
223
  * circular references, non-serializable types, exclusion, and redaction.
230
224
  */
231
- function safeSanitize(value, options) {
225
+ export function safeSanitize(value, options) {
232
226
  const matchers = buildMatchers(options);
233
227
  return sanitizeValue(value, '', matchers, new WeakSet());
234
228
  }
@@ -236,7 +230,7 @@ function safeSanitize(value, options) {
236
230
  * Safely converts a value to a JSON string, handling circular references,
237
231
  * non-serializable types, and optional key exclusion/redaction.
238
232
  */
239
- function safeStringify(value, options, indent) {
233
+ export function safeStringify(value, options, indent) {
240
234
  const sanitized = safeSanitize(value, options);
241
235
  return JSON.stringify(sanitized, undefined, indent) ?? 'undefined';
242
236
  }
@@ -250,7 +244,7 @@ function safeStringify(value, options, indent) {
250
244
  * streams and Multer files become placeholder strings, and functions are
251
245
  * returned by reference.
252
246
  */
253
- function redactValue(value, keys = exports.DEFAULT_REDACT_KEYS) {
247
+ export function redactValue(value, keys = DEFAULT_REDACT_KEYS) {
254
248
  return safeSanitize(value, {
255
249
  redactKeys: keys,
256
250
  mode: 'clone',
@@ -1 +1 @@
1
- {"version":3,"file":"safeStringify.js","sourceRoot":"","sources":["../src/safeStringify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safeStringify.js","sourceRoot":"","sources":["../src/safeStringify.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,4 @@
1
- "use strict";
2
1
  /* Copyright (C) 2026-present Aristotelis — see repository license. */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.toStrictJsonValue = toStrictJsonValue;
5
- exports.stableStringify = stableStringify;
6
2
  /**
7
3
  * Normalizes a value to the strict, portable JSON domain used for deterministic
8
4
  * hashing, idempotency fingerprints, and cache key generation.
@@ -28,7 +24,7 @@ exports.stableStringify = stableStringify;
28
24
  * // → { a: 1, b: 2 }
29
25
  * ```
30
26
  */
31
- function toStrictJsonValue(value, sortKeys = false) {
27
+ export function toStrictJsonValue(value, sortKeys = false) {
32
28
  return normalize(value, new WeakSet(), sortKeys);
33
29
  }
34
30
  function normalize(value, ancestors, sortKeys) {
@@ -138,7 +134,7 @@ function isUnsupportedObject(value) {
138
134
  * // → '{"a":2,"z":1}'
139
135
  * ```
140
136
  */
141
- function stableStringify(value) {
137
+ export function stableStringify(value) {
142
138
  try {
143
139
  return JSON.stringify(toStrictJsonValue(value, true));
144
140
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stableStringify.js","sourceRoot":"","sources":["../src/stableStringify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stableStringify.js","sourceRoot":"","sources":["../src/stableStringify.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@cqrs-ddd/safe-stringify",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
4
4
  "description": "Deterministic JSON for identity (cache keys, fingerprints) and safe, redacting JSON for logs, with no dependencies and no framework.",
5
5
  "author": "Aristotelis",
6
6
  "license": "SEE LICENSE IN LICENSE",
7
+ "type": "module",
7
8
  "engines": {
8
9
  "node": ">=22.12.0"
9
10
  },
@@ -23,6 +24,13 @@
23
24
  "redaction",
24
25
  "cache-key"
25
26
  ],
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/index.d.ts",
30
+ "default": "./dist/index.js"
31
+ },
32
+ "./package.json": "./package.json"
33
+ },
26
34
  "main": "dist/index.js",
27
35
  "types": "dist/index.d.ts",
28
36
  "files": [