field-redactor 1.6.1 → 1.6.3
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/.github/workflows/publish.yml +55 -0
- package/CHANGELOG.md +32 -0
- package/CONTRIBUTING.md +26 -3
- package/README.md +3 -2
- package/dist/api/fieldRedactor.d.ts +4 -4
- package/dist/api/fieldRedactor.js +8 -8
- package/dist/api/fieldRedactor.js.map +1 -1
- package/dist/api/fieldRedactorConfigBuilder.d.ts +3 -3
- package/dist/api/fieldRedactorConfigBuilder.d.ts.map +1 -1
- package/dist/api/fieldRedactorConfigBuilder.js +7 -9
- package/dist/api/fieldRedactorConfigBuilder.js.map +1 -1
- package/dist/api/fieldRedactorDeps.d.ts +2 -2
- package/dist/api/fieldRedactorDeps.d.ts.map +1 -1
- package/dist/api/fieldRedactorDeps.js +6 -6
- package/dist/api/fieldRedactorDeps.js.map +1 -1
- package/dist/config/configValidator.d.ts.map +1 -1
- package/dist/config/configValidator.js +16 -0
- package/dist/config/configValidator.js.map +1 -1
- package/dist/config/presets.d.ts +2 -2
- package/dist/config/presets.js +1 -1
- package/dist/config/redactionRules.d.ts +10 -5
- package/dist/config/redactionRules.d.ts.map +1 -1
- package/dist/config/redactionRules.js +16 -11
- package/dist/config/redactionRules.js.map +1 -1
- package/dist/engine/objectRedactorHelpers.js +2 -2
- package/dist/engine/objectRedactorHelpers.js.map +1 -1
- package/dist/engine/objectRedactorTraversal.d.ts +1 -0
- package/dist/engine/objectRedactorTraversal.d.ts.map +1 -1
- package/dist/engine/objectRedactorTraversal.js +1 -0
- package/dist/engine/objectRedactorTraversal.js.map +1 -1
- package/dist/rules/ruleResolver.js +2 -2
- package/dist/rules/ruleResolver.js.map +1 -1
- package/dist/rules/secretManager.d.ts +5 -5
- package/dist/rules/secretManager.d.ts.map +1 -1
- package/dist/rules/secretManager.js +13 -8
- package/dist/rules/secretManager.js.map +1 -1
- package/dist/types.d.ts +39 -21
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -4
- package/dist/types.js.map +1 -1
- package/docs/guides/anti-patterns.md +1 -1
- package/docs/guides/metadata-redaction.md +2 -2
- package/docs/guides/migration-1.5-to-1.6.md +6 -4
- package/docs/guides/secret-key-modes.md +9 -14
- package/docs/reference/config.md +2 -2
- package/docs/release-notes/README.md +5 -1
- package/docs/release-notes/v1.6.2.md +26 -0
- package/docs/release-notes/v1.6.3.md +25 -0
- package/examples/README.md +14 -0
- package/examples/dry-run.ts +21 -0
- package/examples/logging-metadata.ts +18 -0
- package/examples/path-rules.ts +23 -0
- package/examples/value-patterns.ts +16 -0
- package/package.json +1 -1
- package/dist/arrayRedaction.d.ts +0 -12
- package/dist/arrayRedaction.d.ts.map +0 -1
- package/dist/arrayRedaction.js +0 -70
- package/dist/arrayRedaction.js.map +0 -1
- package/dist/configValidator.d.ts +0 -9
- package/dist/configValidator.d.ts.map +0 -1
- package/dist/configValidator.js +0 -77
- package/dist/configValidator.js.map +0 -1
- package/dist/copyOnWriteHelpers.d.ts +0 -20
- package/dist/copyOnWriteHelpers.d.ts.map +0 -1
- package/dist/copyOnWriteHelpers.js +0 -58
- package/dist/copyOnWriteHelpers.js.map +0 -1
- package/dist/customObjectFieldHandler.d.ts +0 -21
- package/dist/customObjectFieldHandler.d.ts.map +0 -1
- package/dist/customObjectFieldHandler.js +0 -159
- package/dist/customObjectFieldHandler.js.map +0 -1
- package/dist/customObjectManager.d.ts +0 -28
- package/dist/customObjectManager.d.ts.map +0 -1
- package/dist/customObjectManager.js +0 -60
- package/dist/customObjectManager.js.map +0 -1
- package/dist/customObjectSchemas.d.ts +0 -7
- package/dist/customObjectSchemas.d.ts.map +0 -1
- package/dist/customObjectSchemas.js +0 -35
- package/dist/customObjectSchemas.js.map +0 -1
- package/dist/dryRun.d.ts +0 -9
- package/dist/dryRun.d.ts.map +0 -1
- package/dist/dryRun.js +0 -75
- package/dist/dryRun.js.map +0 -1
- package/dist/dryRunAttribution.d.ts +0 -10
- package/dist/dryRunAttribution.d.ts.map +0 -1
- package/dist/dryRunAttribution.js +0 -14
- package/dist/dryRunAttribution.js.map +0 -1
- package/dist/dryrun/dryRunAttribution.d.ts +0 -10
- package/dist/dryrun/dryRunAttribution.d.ts.map +0 -1
- package/dist/dryrun/dryRunAttribution.js +0 -14
- package/dist/dryrun/dryRunAttribution.js.map +0 -1
- package/dist/engine/objectRedactor.d.ts +0 -18
- package/dist/engine/objectRedactor.d.ts.map +0 -1
- package/dist/engine/objectRedactor.js +0 -38
- package/dist/engine/objectRedactor.js.map +0 -1
- package/dist/engine/objectRedactorSync.d.ts +0 -2
- package/dist/engine/objectRedactorSync.d.ts.map +0 -1
- package/dist/engine/objectRedactorSync.js +0 -7
- package/dist/engine/objectRedactorSync.js.map +0 -1
- package/dist/fieldDisposition.d.ts +0 -3
- package/dist/fieldDisposition.d.ts.map +0 -1
- package/dist/fieldDisposition.js +0 -6
- package/dist/fieldDisposition.js.map +0 -1
- package/dist/fieldRedactor.d.ts +0 -51
- package/dist/fieldRedactor.d.ts.map +0 -1
- package/dist/fieldRedactor.js +0 -165
- package/dist/fieldRedactor.js.map +0 -1
- package/dist/fieldRedactorConfigBuilder.d.ts +0 -55
- package/dist/fieldRedactorConfigBuilder.d.ts.map +0 -1
- package/dist/fieldRedactorConfigBuilder.js +0 -111
- package/dist/fieldRedactorConfigBuilder.js.map +0 -1
- package/dist/fieldRedactorDeps.d.ts +0 -19
- package/dist/fieldRedactorDeps.d.ts.map +0 -1
- package/dist/fieldRedactorDeps.js +0 -43
- package/dist/fieldRedactorDeps.js.map +0 -1
- package/dist/jsonWalk.d.ts +0 -11
- package/dist/jsonWalk.d.ts.map +0 -1
- package/dist/jsonWalk.js +0 -55
- package/dist/jsonWalk.js.map +0 -1
- package/dist/maybeAsync.d.ts +0 -7
- package/dist/maybeAsync.d.ts.map +0 -1
- package/dist/maybeAsync.js +0 -56
- package/dist/maybeAsync.js.map +0 -1
- package/dist/objectRedactor.d.ts +0 -18
- package/dist/objectRedactor.d.ts.map +0 -1
- package/dist/objectRedactor.js +0 -38
- package/dist/objectRedactor.js.map +0 -1
- package/dist/objectRedactorCow.d.ts +0 -35
- package/dist/objectRedactorCow.d.ts.map +0 -1
- package/dist/objectRedactorCow.js +0 -300
- package/dist/objectRedactorCow.js.map +0 -1
- package/dist/objectRedactorCustomObject.d.ts +0 -28
- package/dist/objectRedactorCustomObject.d.ts.map +0 -1
- package/dist/objectRedactorCustomObject.js +0 -57
- package/dist/objectRedactorCustomObject.js.map +0 -1
- package/dist/objectRedactorHelpers.d.ts +0 -9
- package/dist/objectRedactorHelpers.d.ts.map +0 -1
- package/dist/objectRedactorHelpers.js +0 -61
- package/dist/objectRedactorHelpers.js.map +0 -1
- package/dist/objectRedactorMutation.d.ts +0 -10
- package/dist/objectRedactorMutation.d.ts.map +0 -1
- package/dist/objectRedactorMutation.js +0 -89
- package/dist/objectRedactorMutation.js.map +0 -1
- package/dist/objectRedactorSync.d.ts +0 -2
- package/dist/objectRedactorSync.d.ts.map +0 -1
- package/dist/objectRedactorSync.js +0 -7
- package/dist/objectRedactorSync.js.map +0 -1
- package/dist/objectRedactorTraversal.d.ts +0 -41
- package/dist/objectRedactorTraversal.d.ts.map +0 -1
- package/dist/objectRedactorTraversal.js +0 -201
- package/dist/objectRedactorTraversal.js.map +0 -1
- package/dist/pathParsing.d.ts +0 -11
- package/dist/pathParsing.d.ts.map +0 -1
- package/dist/pathParsing.js +0 -53
- package/dist/pathParsing.js.map +0 -1
- package/dist/pathRuleMatcher.d.ts +0 -19
- package/dist/pathRuleMatcher.d.ts.map +0 -1
- package/dist/pathRuleMatcher.js +0 -42
- package/dist/pathRuleMatcher.js.map +0 -1
- package/dist/presets.d.ts +0 -22
- package/dist/presets.d.ts.map +0 -1
- package/dist/presets.js +0 -50
- package/dist/presets.js.map +0 -1
- package/dist/primitiveRedactor.d.ts +0 -33
- package/dist/primitiveRedactor.d.ts.map +0 -1
- package/dist/primitiveRedactor.js +0 -75
- package/dist/primitiveRedactor.js.map +0 -1
- package/dist/redactionRules.d.ts +0 -22
- package/dist/redactionRules.d.ts.map +0 -1
- package/dist/redactionRules.js +0 -74
- package/dist/redactionRules.js.map +0 -1
- package/dist/regexUtils.d.ts +0 -3
- package/dist/regexUtils.d.ts.map +0 -1
- package/dist/regexUtils.js +0 -8
- package/dist/regexUtils.js.map +0 -1
- package/dist/ruleResolver.d.ts +0 -65
- package/dist/ruleResolver.d.ts.map +0 -1
- package/dist/ruleResolver.js +0 -193
- package/dist/ruleResolver.js.map +0 -1
- package/dist/rules/fieldDisposition.d.ts +0 -3
- package/dist/rules/fieldDisposition.d.ts.map +0 -1
- package/dist/rules/fieldDisposition.js +0 -6
- package/dist/rules/fieldDisposition.js.map +0 -1
- package/dist/secretManager.d.ts +0 -32
- package/dist/secretManager.d.ts.map +0 -1
- package/dist/secretManager.js +0 -85
- package/dist/secretManager.js.map +0 -1
- package/dist/traversalServices.d.ts +0 -21
- package/dist/traversalServices.d.ts.map +0 -1
- package/dist/traversalServices.js +0 -3
- package/dist/traversalServices.js.map +0 -1
- package/dist/valuePatternMatcher.d.ts +0 -15
- package/dist/valuePatternMatcher.d.ts.map +0 -1
- package/dist/valuePatternMatcher.js +0 -30
- package/dist/valuePatternMatcher.js.map +0 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Publish to npm when a version tag is pushed (e.g. v1.6.3).
|
|
2
|
+
# Uses npm Trusted Publishing (OIDC) — no NPM_TOKEN secret.
|
|
3
|
+
#
|
|
4
|
+
# One-time setup on npmjs.com → package Settings → Trusted Publisher:
|
|
5
|
+
# Provider: GitHub Actions
|
|
6
|
+
# Repository: mologna/field-redactor
|
|
7
|
+
# Workflow filename: publish.yml (filename only, must match exactly)
|
|
8
|
+
#
|
|
9
|
+
# Requires npm CLI ≥ 11.5.1 and Node ≥ 22.14 (ensured in this job).
|
|
10
|
+
# Pin npm to the 11.x line — npm@latest (12+) needs newer Node than the OIDC minimum.
|
|
11
|
+
name: Publish
|
|
12
|
+
|
|
13
|
+
on:
|
|
14
|
+
push:
|
|
15
|
+
tags:
|
|
16
|
+
- 'v*.*.*'
|
|
17
|
+
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
id-token: write # Required for OIDC trusted publishing
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
publish:
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
timeout-minutes: 15
|
|
26
|
+
steps:
|
|
27
|
+
- name: Checkout
|
|
28
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
29
|
+
|
|
30
|
+
- name: Setup Node.js
|
|
31
|
+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
|
32
|
+
with:
|
|
33
|
+
# npm docs recommend Node 24 for trusted publishing; includes a recent npm.
|
|
34
|
+
node-version: '24'
|
|
35
|
+
cache: yarn
|
|
36
|
+
registry-url: https://registry.npmjs.org
|
|
37
|
+
|
|
38
|
+
- name: Ensure npm supports OIDC trusted publishing
|
|
39
|
+
run: npm install -g npm@11
|
|
40
|
+
|
|
41
|
+
- name: Install dependencies
|
|
42
|
+
run: yarn install --frozen-lockfile --non-interactive
|
|
43
|
+
|
|
44
|
+
- name: Build
|
|
45
|
+
run: yarn build
|
|
46
|
+
|
|
47
|
+
- name: Test
|
|
48
|
+
run: yarn test
|
|
49
|
+
|
|
50
|
+
# Do not set NODE_AUTH_TOKEN — the CLI uses OIDC when id-token permission is present.
|
|
51
|
+
# setup-node may inject a placeholder; clear it so publish prefers OIDC.
|
|
52
|
+
- name: Publish
|
|
53
|
+
run: npm publish --access public
|
|
54
|
+
env:
|
|
55
|
+
NODE_AUTH_TOKEN: ''
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,36 @@ All notable changes to this project are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.6.3] - 2026-07-27
|
|
9
|
+
|
|
10
|
+
DX and release-hygiene patch: examples, legacy naming warnings, OIDC publish workflow, and test cleanup. See [docs/release-notes/v1.6.3.md](docs/release-notes/v1.6.3.md).
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Examples** — [examples/](examples/) recipes for logging metadata, path rules, value patterns, and dry-run.
|
|
15
|
+
- **Publish workflow** — tag-triggered `.github/workflows/publish.yml` using npm Trusted Publishing (OIDC).
|
|
16
|
+
- **Legacy naming warnings** — constructing with `fullSecretKeys` / `deleteSecretKeys` emits deprecation warnings (behavior unchanged).
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- `createSafe` error text prefers Opaque/Remove field names.
|
|
21
|
+
- Incidental JSON/engine types marked `@internal` in JSDoc (still exported).
|
|
22
|
+
- Slimmed overlapping dry-run attribution tests; contract suite remains the SSOT.
|
|
23
|
+
|
|
24
|
+
## [1.6.2] - 2026-07-22
|
|
25
|
+
|
|
26
|
+
Canonical Opaque/Remove naming internally and removal of the thin `ObjectRedactor` orchestrator. See [docs/release-notes/v1.6.2.md](docs/release-notes/v1.6.2.md).
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- **Canonical naming** — config normalize, builder, presets, and `SecretManager` store/match on `opaqueSecretKeys` / `removeSecretKeys`; methods are `isOpaqueSecretKey` / `isRemoveSecretKey`. Legacy `fullSecretKeys` / `deleteSecretKeys` remain accepted input aliases.
|
|
31
|
+
- **Traversal wiring** — `FieldRedactor` depends on `ObjectRedactorTraversal` directly (no `ObjectRedactor` façade).
|
|
32
|
+
- **Builder** — `buildRedactor()` / `buildSafeRedactor()` use a static `FieldRedactor` import (no lazy `require()`).
|
|
33
|
+
|
|
34
|
+
### Removed
|
|
35
|
+
|
|
36
|
+
- Internal `ObjectRedactor` class (never part of the public export surface).
|
|
37
|
+
|
|
8
38
|
## [1.6.1] - 2026-07-22
|
|
9
39
|
|
|
10
40
|
Internal simplification and layering cleanup with no intended public API changes for typical consumers. See [docs/release-notes/v1.6.1.md](docs/release-notes/v1.6.1.md).
|
|
@@ -183,6 +213,8 @@ Development tags `2.0.0`–`2.3.1` track incremental work toward `1.3.0`. See [d
|
|
|
183
213
|
|
|
184
214
|
- Initial public release: regex key rules, custom object schemas with sibling-key indirection, async `redact()` / `redactInPlace()`, and configurable redactor functions.
|
|
185
215
|
|
|
216
|
+
[1.6.3]: https://github.com/mologna/field-redactor/compare/v1.6.2...v1.6.3
|
|
217
|
+
[1.6.2]: https://github.com/mologna/field-redactor/compare/v1.6.1...v1.6.2
|
|
186
218
|
[1.6.1]: https://github.com/mologna/field-redactor/compare/v1.6.0...v1.6.1
|
|
187
219
|
[1.6.0]: https://github.com/mologna/field-redactor/compare/v1.5.0...v1.6.0
|
|
188
220
|
[1.5.0]: https://github.com/mologna/field-redactor/releases/tag/v1.5.0
|
package/CONTRIBUTING.md
CHANGED
|
@@ -16,7 +16,7 @@ Prefer npm version numbers in user-facing docs. Internal release notes under `do
|
|
|
16
16
|
```
|
|
17
17
|
src/
|
|
18
18
|
api/ Public facade: FieldRedactor, ConfigBuilder, DI wiring
|
|
19
|
-
engine/ Traversal, array/custom-object handlers, PrimitiveRedactor
|
|
19
|
+
engine/ Traversal (`ObjectRedactorTraversal`), array/custom-object handlers, PrimitiveRedactor
|
|
20
20
|
rules/ SecretManager, matchers, RuleResolver, CustomObjectManager
|
|
21
21
|
dryrun/ Structural diff + rule attribution
|
|
22
22
|
config/ Validation, presets, redactionRules, schema helpers
|
|
@@ -42,8 +42,10 @@ Traversal and dry-run attribution both use this module. When adding a rule type,
|
|
|
42
42
|
|------|-------------------------|----------------|
|
|
43
43
|
| Shallow | `secretKeys`, `CustomObjectMatchType.Shallow` | — |
|
|
44
44
|
| Deep | `deepSecretKeys` | — |
|
|
45
|
-
| Opaque | `opaqueSecretKeys`, `CustomObjectMatchType.Opaque` | `fullSecretKeys`, `Full` |
|
|
46
|
-
| Remove | `removeSecretKeys`, `CustomObjectMatchType.Remove` | `deleteSecretKeys`, `Delete` |
|
|
45
|
+
| Opaque | `opaqueSecretKeys`, `CustomObjectMatchType.Opaque`, `isOpaqueSecretKey` | `fullSecretKeys`, `Full` (deprecated; config fields warn at construct) |
|
|
46
|
+
| Remove | `removeSecretKeys`, `CustomObjectMatchType.Remove`, `isRemoveSecretKey` | `deleteSecretKeys`, `Delete` (deprecated; config fields warn at construct) |
|
|
47
|
+
|
|
48
|
+
Internally, normalize + `SecretManager` store and match on the preferred field names. Legacy config keys are input-only aliases.
|
|
47
49
|
|
|
48
50
|
## Development
|
|
49
51
|
|
|
@@ -56,6 +58,27 @@ yarn test
|
|
|
56
58
|
- Unit tests: `tests/unit/`
|
|
57
59
|
- Integration / end-to-end: `tests/integration/` (keep these few and scenario-focused; prefer unit tests for rule edge cases)
|
|
58
60
|
- Shared test helpers: `tests/helpers/`
|
|
61
|
+
- Copy-paste recipes: `examples/`
|
|
62
|
+
|
|
63
|
+
## Publishing
|
|
64
|
+
|
|
65
|
+
CI runs on push/PR to `master` (`.github/workflows/ci.yml`).
|
|
66
|
+
|
|
67
|
+
Pushing a version tag (`v*.*.*`) runs `.github/workflows/publish.yml`: build, test, then `npm publish` via **npm Trusted Publishing (OIDC)**. No `NPM_TOKEN` secret is required.
|
|
68
|
+
|
|
69
|
+
### One-time npm setup
|
|
70
|
+
|
|
71
|
+
1. Open [field-redactor](https://www.npmjs.com/package/field-redactor) → **Settings → Trusted Publisher**
|
|
72
|
+
2. Choose **GitHub Actions**
|
|
73
|
+
3. Set:
|
|
74
|
+
- **Owner / repository:** `mologna/field-redactor`
|
|
75
|
+
- **Workflow filename:** `publish.yml` (filename only — must match exactly, including `.yml`)
|
|
76
|
+
4. Save. After a successful OIDC publish, you can optionally restrict token-based publishing in **Publishing access**.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git tag -a v1.6.3 -m "v1.6.3"
|
|
80
|
+
git push origin v1.6.3
|
|
81
|
+
```
|
|
59
82
|
|
|
60
83
|
## Pull requests
|
|
61
84
|
|
package/README.md
CHANGED
|
@@ -55,8 +55,8 @@ Do you know which JSON keys are always sensitive?
|
|
|
55
55
|
| --- | --- |
|
|
56
56
|
| Shallow | `secretKeys` |
|
|
57
57
|
| Deep | `deepSecretKeys` |
|
|
58
|
-
| Opaque | `fullSecretKeys` |
|
|
59
|
-
| Remove | `deleteSecretKeys` |
|
|
58
|
+
| Opaque | `opaqueSecretKeys` (legacy: `fullSecretKeys`) |
|
|
59
|
+
| Remove | `removeSecretKeys` (legacy: `deleteSecretKeys`) |
|
|
60
60
|
| Schema | `customObjects` |
|
|
61
61
|
|
|
62
62
|
Use `FieldRedactor.createSafe({ ... })` or `FieldRedactorConfigBuilder` so you never accidentally redact every field. `new FieldRedactor()` without rules still redacts all values (legacy default).
|
|
@@ -71,6 +71,7 @@ Use `FieldRedactor.createSafe({ ... })` or `FieldRedactorConfigBuilder` so you n
|
|
|
71
71
|
| [Value-pattern redaction](docs/guides/value-pattern-redaction.md) | Detect PII in free-text field values |
|
|
72
72
|
| [Path rules & allowlists](docs/guides/path-rules.md) | Target stable JSON paths; exempt keys under deep redaction |
|
|
73
73
|
| [Configuration reference](docs/reference/config.md) | Full option table, API, presets, validation |
|
|
74
|
+
| [Examples](examples/README.md) | Copy-paste recipes (logging, path rules, value patterns, dryRun) |
|
|
74
75
|
| [Migration 1.5 → 1.6](docs/guides/migration-1.5-to-1.6.md) | Upgrade from 1.5.x (path rules, naming, exports) |
|
|
75
76
|
| [Migration 1.2 → 1.5](docs/guides/migration-1.2-to-1.5.md) | Upgrade from the previous npm line |
|
|
76
77
|
| [Release notes](docs/release-notes/README.md) | Per-version notes for every published tag |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DryRunResult, FieldRedactorConfig, RedactableInput } from '../types';
|
|
2
2
|
/**
|
|
3
3
|
* FieldRedactor is a highly customizable JSON object field redactor. It conditionally redacts fields based on
|
|
4
|
-
* the
|
|
4
|
+
* the secret key rules, path rules, value patterns, and custom object schemas in the configuration. Refer to the README.md
|
|
5
5
|
* for more details.
|
|
6
6
|
*
|
|
7
7
|
* Defaults: `ignoreNullOrUndefined` is `true`, `ignoreBooleans` is `false`, `cloneInput` is `true`.
|
|
@@ -13,9 +13,9 @@ export declare class FieldRedactor {
|
|
|
13
13
|
readonly configWarnings: readonly string[];
|
|
14
14
|
constructor(config?: FieldRedactorConfig);
|
|
15
15
|
/**
|
|
16
|
-
* Creates a FieldRedactor that requires at least one explicit redaction rule:
|
|
17
|
-
*
|
|
18
|
-
* or
|
|
16
|
+
* Creates a FieldRedactor that requires at least one explicit redaction rule:
|
|
17
|
+
* `secretKeys`, `deepSecretKeys`, `opaqueSecretKeys`, `removeSecretKeys`, `customObjects`,
|
|
18
|
+
* `valuePatterns`, or `pathRules`.
|
|
19
19
|
* Unlike `new FieldRedactor()`, omitting all rules does not default to redacting every value.
|
|
20
20
|
*/
|
|
21
21
|
static createSafe(config: FieldRedactorConfig): FieldRedactor;
|
|
@@ -20,7 +20,7 @@ const rfdc_1 = __importDefault(require("rfdc"));
|
|
|
20
20
|
const configValidator_1 = require("../config/configValidator");
|
|
21
21
|
/**
|
|
22
22
|
* FieldRedactor is a highly customizable JSON object field redactor. It conditionally redacts fields based on
|
|
23
|
-
* the
|
|
23
|
+
* the secret key rules, path rules, value patterns, and custom object schemas in the configuration. Refer to the README.md
|
|
24
24
|
* for more details.
|
|
25
25
|
*
|
|
26
26
|
* Defaults: `ignoreNullOrUndefined` is `true`, `ignoreBooleans` is `false`, `cloneInput` is `true`.
|
|
@@ -36,14 +36,14 @@ class FieldRedactor {
|
|
|
36
36
|
this.deps = (0, fieldRedactorDeps_1.buildFieldRedactorDeps)(config);
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
* Creates a FieldRedactor that requires at least one explicit redaction rule:
|
|
40
|
-
*
|
|
41
|
-
* or
|
|
39
|
+
* Creates a FieldRedactor that requires at least one explicit redaction rule:
|
|
40
|
+
* `secretKeys`, `deepSecretKeys`, `opaqueSecretKeys`, `removeSecretKeys`, `customObjects`,
|
|
41
|
+
* `valuePatterns`, or `pathRules`.
|
|
42
42
|
* Unlike `new FieldRedactor()`, omitting all rules does not default to redacting every value.
|
|
43
43
|
*/
|
|
44
44
|
static createSafe(config) {
|
|
45
45
|
if (!(0, configValidator_1.hasExplicitRedactionRules)(config)) {
|
|
46
|
-
throw new errors_1.FieldRedactorConfigurationError('FieldRedactor.createSafe() requires at least one non-empty secretKeys, deepSecretKeys,
|
|
46
|
+
throw new errors_1.FieldRedactorConfigurationError('FieldRedactor.createSafe() requires at least one non-empty secretKeys, deepSecretKeys, opaqueSecretKeys, removeSecretKeys, customObjects, valuePatterns, or pathRules entry. Without explicit rules, new FieldRedactor() redacts all values by default.');
|
|
47
47
|
}
|
|
48
48
|
return new FieldRedactor(config);
|
|
49
49
|
}
|
|
@@ -115,7 +115,7 @@ class FieldRedactor {
|
|
|
115
115
|
this.redactInPlaceSync(value);
|
|
116
116
|
return value;
|
|
117
117
|
}
|
|
118
|
-
return this.deps.
|
|
118
|
+
return this.deps.traversal.redactCopyOnWrite(value);
|
|
119
119
|
}
|
|
120
120
|
/** Conditionally redacts fields in the JSON object in place based on the configuration provided in the constructor. */
|
|
121
121
|
redactInPlace(value) {
|
|
@@ -124,7 +124,7 @@ class FieldRedactor {
|
|
|
124
124
|
this.redactInPlaceSync(value);
|
|
125
125
|
return;
|
|
126
126
|
}
|
|
127
|
-
yield this.runTraversableRedaction(value, () => this.deps.
|
|
127
|
+
yield this.runTraversableRedaction(value, () => this.deps.traversal.redactInPlaceAsync(value));
|
|
128
128
|
});
|
|
129
129
|
}
|
|
130
130
|
/**
|
|
@@ -135,7 +135,7 @@ class FieldRedactor {
|
|
|
135
135
|
if (this.deps.usesAsyncRedactor) {
|
|
136
136
|
throw new errors_1.FieldRedactorError('redactInPlaceSync requires syncRedactor configuration or the default redactor');
|
|
137
137
|
}
|
|
138
|
-
this.runTraversableRedaction(value, () => this.deps.
|
|
138
|
+
this.runTraversableRedaction(value, () => this.deps.traversal.redactInPlace(value));
|
|
139
139
|
}
|
|
140
140
|
runTraversableRedaction(value, redact) {
|
|
141
141
|
if (this.isPrimitiveOrUndefined(value)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactor.js","sourceRoot":"","sources":["../../src/api/fieldRedactor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sCAAgF;AAChF,2DAAgF;AAUhF,6CAA2E;AAC3E,gDAAwB;AACxB,+DAAmG;AAEnG;;;;;;GAMG;AACH,MAAa,aAAa;IAOxB,YAAY,MAA4B;;QANvB,aAAQ,GAAG,IAAA,cAAI,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAO/D,IAAI,CAAC,cAAc,GAAG,IAAA,6CAA2B,EAAC,MAAM,CAAC,CAAC;QAC1D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,uDAAG,OAAO,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAA,0CAAsB,EAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,UAAU,CAAC,MAA2B;QAClD,IAAI,CAAC,IAAA,2CAAyB,EAAC,MAAM,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,wCAA+B,CACvC,
|
|
1
|
+
{"version":3,"file":"fieldRedactor.js","sourceRoot":"","sources":["../../src/api/fieldRedactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { FieldRedactor } from './fieldRedactor';
|
|
2
2
|
import { CustomObject, FieldRedactorConfig, PathRuleMode, Redactor, SyncRedactor } from '../types';
|
|
3
3
|
export type SchemaOptions = {
|
|
4
4
|
/** Optional label surfaced in {@link FieldRedactor.dryRun} `matchedSchemas` reports. */
|
|
@@ -15,9 +15,9 @@ export declare class FieldRedactorConfigBuilder {
|
|
|
15
15
|
shallow(...patterns: RegExp[]): this;
|
|
16
16
|
/** Deep — redact matching keys and descendants (`deepSecretKeys`). */
|
|
17
17
|
deep(...patterns: RegExp[]): this;
|
|
18
|
-
/** Opaque — stringify entire values at matching keys (`
|
|
18
|
+
/** Opaque — stringify entire values at matching keys (`opaqueSecretKeys`). */
|
|
19
19
|
opaque(...patterns: RegExp[]): this;
|
|
20
|
-
/** Remove — delete matching keys from output (`
|
|
20
|
+
/** Remove — delete matching keys from output (`removeSecretKeys`). */
|
|
21
21
|
remove(...patterns: RegExp[]): this;
|
|
22
22
|
/** Alias for {@link FieldRedactorConfigBuilder.remove}. */
|
|
23
23
|
delete(...patterns: RegExp[]): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactorConfigBuilder.d.ts","sourceRoot":"","sources":["../../src/api/fieldRedactorConfigBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"fieldRedactorConfigBuilder.d.ts","sourceRoot":"","sources":["../../src/api/fieldRedactorConfigBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEnG,MAAM,MAAM,aAAa,GAAG;IAC1B,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAA0B;IAEzC,MAAM,CAAC,MAAM,IAAI,0BAA0B;IAI3C,oEAAoE;IACpE,OAAO,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIpC,sEAAsE;IACtE,IAAI,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjC,8EAA8E;IAC9E,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAInC,sEAAsE;IACtE,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAInC,2DAA2D;IAC3D,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAInC,mDAAmD;IACnD,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAKjE;;;OAGG;IACH,YAAY,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKzC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;IAKhD,yFAAyF;IACzF,OAAO,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKpC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI;IAKrD,QAAQ,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI;IAI5B,YAAY,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAIpC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIpC,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI3C,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIhC,MAAM,CAAC,KAAK,UAAO,GAAG,IAAI;IAI1B,eAAe,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIzD,KAAK,IAAI,mBAAmB;IAI5B,gEAAgE;IAChE,aAAa,IAAI,aAAa;IAI9B,oEAAoE;IACpE,iBAAiB,IAAI,aAAa;IAIlC,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,GAAG;CAIZ"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FieldRedactorConfigBuilder = void 0;
|
|
4
|
+
const fieldRedactor_1 = require("./fieldRedactor");
|
|
4
5
|
const redactionRules_1 = require("../config/redactionRules");
|
|
5
6
|
/**
|
|
6
7
|
* Fluent builder for {@link FieldRedactorConfig} using doc labels (Shallow, Deep, Opaque, Remove, Schema).
|
|
@@ -21,13 +22,13 @@ class FieldRedactorConfigBuilder {
|
|
|
21
22
|
deep(...patterns) {
|
|
22
23
|
return this.appendRegex('deepSecretKeys', patterns);
|
|
23
24
|
}
|
|
24
|
-
/** Opaque — stringify entire values at matching keys (`
|
|
25
|
+
/** Opaque — stringify entire values at matching keys (`opaqueSecretKeys`). */
|
|
25
26
|
opaque(...patterns) {
|
|
26
|
-
return this.appendRegex('
|
|
27
|
+
return this.appendRegex('opaqueSecretKeys', patterns);
|
|
27
28
|
}
|
|
28
|
-
/** Remove — delete matching keys from output (`
|
|
29
|
+
/** Remove — delete matching keys from output (`removeSecretKeys`). */
|
|
29
30
|
remove(...patterns) {
|
|
30
|
-
return this.appendRegex('
|
|
31
|
+
return this.appendRegex('removeSecretKeys', patterns);
|
|
31
32
|
}
|
|
32
33
|
/** Alias for {@link FieldRedactorConfigBuilder.remove}. */
|
|
33
34
|
delete(...patterns) {
|
|
@@ -93,14 +94,11 @@ class FieldRedactorConfigBuilder {
|
|
|
93
94
|
}
|
|
94
95
|
/** Constructs a {@link FieldRedactor} from the built config. */
|
|
95
96
|
buildRedactor() {
|
|
96
|
-
|
|
97
|
-
const { FieldRedactor: Redactor } = require('./fieldRedactor');
|
|
98
|
-
return new Redactor(this.build());
|
|
97
|
+
return new fieldRedactor_1.FieldRedactor(this.build());
|
|
99
98
|
}
|
|
100
99
|
/** Like {@link FieldRedactor.createSafe} using the built config. */
|
|
101
100
|
buildSafeRedactor() {
|
|
102
|
-
|
|
103
|
-
return Redactor.createSafe(this.build());
|
|
101
|
+
return fieldRedactor_1.FieldRedactor.createSafe(this.build());
|
|
104
102
|
}
|
|
105
103
|
appendRegex(field, patterns) {
|
|
106
104
|
(0, redactionRules_1.appendRegExpArray)(this.config, field, patterns);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactorConfigBuilder.js","sourceRoot":"","sources":["../../src/api/fieldRedactorConfigBuilder.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"fieldRedactorConfigBuilder.js","sourceRoot":"","sources":["../../src/api/fieldRedactorConfigBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CustomObjectManager } from '../rules/customObjectManager';
|
|
2
|
-
import {
|
|
2
|
+
import { ObjectRedactorTraversal } from '../engine/objectRedactorTraversal';
|
|
3
3
|
import { PrimitiveRedactor } from '../engine/primitiveRedactor';
|
|
4
4
|
import { SecretManager } from '../rules/secretManager';
|
|
5
5
|
import { FieldRedactorConfig } from '../types';
|
|
@@ -11,7 +11,7 @@ export type FieldRedactorDeps = {
|
|
|
11
11
|
valuePatternMatcher: ValuePatternMatcher;
|
|
12
12
|
pathRuleMatcher: PathRuleMatcher;
|
|
13
13
|
customObjectManager: CustomObjectManager;
|
|
14
|
-
|
|
14
|
+
traversal: ObjectRedactorTraversal;
|
|
15
15
|
usesAsyncRedactor: boolean;
|
|
16
16
|
cloneInput: boolean;
|
|
17
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactorDeps.d.ts","sourceRoot":"","sources":["../../src/api/fieldRedactorDeps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"fieldRedactorDeps.d.ts","sourceRoot":"","sources":["../../src/api/fieldRedactorDeps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAA2B,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAA+B,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEhG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,eAAe,EAAE,eAAe,CAAC;IACjC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,SAAS,EAAE,uBAAuB,CAAC;IACnC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAKF,eAAO,MAAM,sBAAsB,YAAa,mBAAmB,KAAG,iBAiDrE,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildFieldRedactorDeps = void 0;
|
|
4
4
|
const customObjectManager_1 = require("../rules/customObjectManager");
|
|
5
|
-
const
|
|
5
|
+
const objectRedactorTraversal_1 = require("../engine/objectRedactorTraversal");
|
|
6
6
|
const primitiveRedactor_1 = require("../engine/primitiveRedactor");
|
|
7
7
|
const redactionRules_1 = require("../config/redactionRules");
|
|
8
8
|
const secretManager_1 = require("../rules/secretManager");
|
|
@@ -12,7 +12,7 @@ const resolveBoolean = (value, defaultValue) => typeof value === 'boolean' ? val
|
|
|
12
12
|
const buildFieldRedactorDeps = (config) => {
|
|
13
13
|
var _a;
|
|
14
14
|
const normalized = (_a = (0, redactionRules_1.normalizeFieldRedactorConfig)(config)) !== null && _a !== void 0 ? _a : {};
|
|
15
|
-
const { redactor, syncRedactor, deepSecretKeys,
|
|
15
|
+
const { redactor, syncRedactor, deepSecretKeys, opaqueSecretKeys, removeSecretKeys, customObjects, valuePatterns, pathRules, passKeys } = normalized;
|
|
16
16
|
const primitiveRedactor = new primitiveRedactor_1.PrimitiveRedactor({
|
|
17
17
|
ignoreBooleans: resolveBoolean(normalized.ignoreBooleans, false),
|
|
18
18
|
ignoreNullOrUndefined: resolveBoolean(normalized.ignoreNullOrUndefined, true),
|
|
@@ -22,21 +22,21 @@ const buildFieldRedactorDeps = (config) => {
|
|
|
22
22
|
const secretManager = new secretManager_1.SecretManager({
|
|
23
23
|
secretKeys: (0, redactionRules_1.resolveSecretKeys)(normalized),
|
|
24
24
|
deepSecretKeys,
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
opaqueSecretKeys,
|
|
26
|
+
removeSecretKeys,
|
|
27
27
|
passKeys
|
|
28
28
|
});
|
|
29
29
|
const valuePatternMatcher = (valuePatterns === null || valuePatterns === void 0 ? void 0 : valuePatterns.length) ? new valuePatternMatcher_1.ValuePatternMatcher(valuePatterns) : valuePatternMatcher_1.EMPTY_VALUE_PATTERN_MATCHER;
|
|
30
30
|
const pathRuleMatcher = (pathRules === null || pathRules === void 0 ? void 0 : pathRules.length) ? new pathRuleMatcher_1.PathRuleMatcher(pathRules) : pathRuleMatcher_1.EMPTY_PATH_RULE_MATCHER;
|
|
31
31
|
const customObjectManager = new customObjectManager_1.CustomObjectManager(customObjects, normalized.schemaNames);
|
|
32
|
-
const
|
|
32
|
+
const traversal = new objectRedactorTraversal_1.ObjectRedactorTraversal(primitiveRedactor, secretManager, customObjectManager, valuePatternMatcher, pathRuleMatcher);
|
|
33
33
|
return {
|
|
34
34
|
primitiveRedactor,
|
|
35
35
|
secretManager,
|
|
36
36
|
valuePatternMatcher,
|
|
37
37
|
pathRuleMatcher,
|
|
38
38
|
customObjectManager,
|
|
39
|
-
|
|
39
|
+
traversal,
|
|
40
40
|
usesAsyncRedactor: primitiveRedactor.usesAsyncRedactor(),
|
|
41
41
|
cloneInput: normalized.cloneInput !== false
|
|
42
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactorDeps.js","sourceRoot":"","sources":["../../src/api/fieldRedactorDeps.ts"],"names":[],"mappings":";;;AAAA,sEAAmE;AACnE
|
|
1
|
+
{"version":3,"file":"fieldRedactorDeps.js","sourceRoot":"","sources":["../../src/api/fieldRedactorDeps.ts"],"names":[],"mappings":";;;AAAA,sEAAmE;AACnE,+EAA4E;AAC5E,mEAAgE;AAChE,6DAA2F;AAC3F,0DAAuD;AAEvD,8DAAoF;AACpF,sEAAgG;AAahG,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAE,YAAqB,EAAW,EAAE,CACpF,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;AAE7C,MAAM,sBAAsB,GAAG,CAAC,MAA4B,EAAqB,EAAE;;IACxF,MAAM,UAAU,GAAG,MAAA,IAAA,6CAA4B,EAAC,MAAM,CAAC,mCAAI,EAAE,CAAC;IAC9D,MAAM,EACJ,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,SAAS,EACT,QAAQ,EACT,GAAG,UAAU,CAAC;IAEf,MAAM,iBAAiB,GAAG,IAAI,qCAAiB,CAAC;QAC9C,cAAc,EAAE,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC;QAChE,qBAAqB,EAAE,cAAc,CAAC,UAAU,CAAC,qBAAqB,EAAE,IAAI,CAAC;QAC7E,QAAQ;QACR,YAAY;KACb,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC;QACtC,UAAU,EAAE,IAAA,kCAAiB,EAAC,UAAU,CAAC;QACzC,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,mBAAmB,GAAG,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,EAAC,CAAC,CAAC,IAAI,yCAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,iDAA2B,CAAC;IACzH,MAAM,eAAe,GAAG,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,EAAC,CAAC,CAAC,IAAI,iCAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,yCAAuB,CAAC;IACrG,MAAM,mBAAmB,GAAG,IAAI,yCAAmB,CAAC,aAAa,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3F,MAAM,SAAS,GAAG,IAAI,iDAAuB,CAC3C,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,CAChB,CAAC;IAEF,OAAO;QACL,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,eAAe;QACf,mBAAmB;QACnB,SAAS;QACT,iBAAiB,EAAE,iBAAiB,CAAC,iBAAiB,EAAE;QACxD,UAAU,EAAE,UAAU,CAAC,UAAU,KAAK,KAAK;KAC5C,CAAC;AACJ,CAAC,CAAC;AAjDW,QAAA,sBAAsB,0BAiDjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configValidator.d.ts","sourceRoot":"","sources":["../../src/config/configValidator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,oCAAoC,EAAE,MAAM,uBAAuB,CAAC;AAgE7E;;;GAGG;AACH,eAAO,MAAM,2BAA2B,YAAa,mBAAmB,KAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"configValidator.d.ts","sourceRoot":"","sources":["../../src/config/configValidator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,oCAAoC,EAAE,MAAM,uBAAuB,CAAC;AAgE7E;;;GAGG;AACH,eAAO,MAAM,2BAA2B,YAAa,mBAAmB,KAAG,MAAM,EAmBhF,CAAC"}
|
|
@@ -59,9 +59,11 @@ const collectSchemaWarnings = (customObjects) => {
|
|
|
59
59
|
*/
|
|
60
60
|
const validateFieldRedactorConfig = (config) => {
|
|
61
61
|
var _a, _b;
|
|
62
|
+
const legacyNamingWarnings = collectLegacyNamingWarnings(config);
|
|
62
63
|
const resolved = (_a = (0, redactionRules_1.normalizeFieldRedactorConfig)(config)) !== null && _a !== void 0 ? _a : {};
|
|
63
64
|
(0, customObjectSchemas_1.assertNoIdenticalCustomObjectSchemas)(resolved.customObjects);
|
|
64
65
|
const warnings = [
|
|
66
|
+
...legacyNamingWarnings,
|
|
65
67
|
...(!(0, redactionRules_1.hasExplicitRedactionRules)(resolved)
|
|
66
68
|
? ['All values will be redacted. Did you mean to set `secretKeys` or use `FieldRedactor.createSafe()`?']
|
|
67
69
|
: []),
|
|
@@ -74,4 +76,18 @@ const validateFieldRedactorConfig = (config) => {
|
|
|
74
76
|
return warnings;
|
|
75
77
|
};
|
|
76
78
|
exports.validateFieldRedactorConfig = validateFieldRedactorConfig;
|
|
79
|
+
const collectLegacyNamingWarnings = (config) => {
|
|
80
|
+
var _a, _b;
|
|
81
|
+
if (!config) {
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
84
|
+
const warnings = [];
|
|
85
|
+
if ((_a = config.fullSecretKeys) === null || _a === void 0 ? void 0 : _a.length) {
|
|
86
|
+
warnings.push('`fullSecretKeys` is deprecated; prefer `opaqueSecretKeys` (same behavior). Legacy input remains supported in 1.x.');
|
|
87
|
+
}
|
|
88
|
+
if ((_b = config.deleteSecretKeys) === null || _b === void 0 ? void 0 : _b.length) {
|
|
89
|
+
warnings.push('`deleteSecretKeys` is deprecated; prefer `removeSecretKeys` (same behavior). Legacy input remains supported in 1.x.');
|
|
90
|
+
}
|
|
91
|
+
return warnings;
|
|
92
|
+
};
|
|
77
93
|
//# sourceMappingURL=configValidator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configValidator.js","sourceRoot":"","sources":["../../src/config/configValidator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"configValidator.js","sourceRoot":"","sources":["../../src/config/configValidator.ts"],"names":[],"mappings":"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"}
|
package/dist/config/presets.d.ts
CHANGED
|
@@ -8,12 +8,12 @@ export declare const presets: {
|
|
|
8
8
|
* `{ name, type, value }` metadata entries with sibling-key redaction and auth key removal.
|
|
9
9
|
* Pair with your own `secretKeys` for field names that should trigger redaction.
|
|
10
10
|
*/
|
|
11
|
-
loggingMetadata(): Pick<FieldRedactorConfig, "customObjects" | "
|
|
11
|
+
loggingMetadata(): Pick<FieldRedactorConfig, "customObjects" | "removeSecretKeys">;
|
|
12
12
|
/**
|
|
13
13
|
* Application log preset from `realExamples.spec.ts`: common PII field patterns,
|
|
14
14
|
* auth key removal, and `{ name, value }` event metadata schemas.
|
|
15
15
|
*/
|
|
16
|
-
applicationLogging(): Pick<FieldRedactorConfig, "secretKeys" | "
|
|
16
|
+
applicationLogging(): Pick<FieldRedactorConfig, "secretKeys" | "removeSecretKeys" | "customObjects">;
|
|
17
17
|
/**
|
|
18
18
|
* `{ key, value }` shaped entries (blanket coverage small schema).
|
|
19
19
|
*/
|
package/dist/config/presets.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.presets = void 0;
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
const AUTH_KEY_REMOVAL = {
|
|
6
|
-
|
|
6
|
+
removeSecretKeys: [/authKey/i]
|
|
7
7
|
};
|
|
8
8
|
const NAME_VALUE_EVENT_SCHEMA = {
|
|
9
9
|
name: types_1.CustomObjectMatchType.Ignore,
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import { CustomObject, FieldRedactorConfig } from '../types';
|
|
2
|
-
|
|
3
|
-
export declare const
|
|
2
|
+
/** Canonical key-rule regex fields (preferred Opaque/Remove names). */
|
|
3
|
+
export declare const SECRET_REGEX_FIELDS: readonly ["secretKeys", "deepSecretKeys", "opaqueSecretKeys", "removeSecretKeys"];
|
|
4
|
+
/** Legacy aliases accepted on input and merged into {@link SECRET_REGEX_FIELDS}. */
|
|
5
|
+
export declare const SECRET_REGEX_ALIAS_FIELDS: readonly ["fullSecretKeys", "deleteSecretKeys"];
|
|
4
6
|
export declare const VALUE_PATTERN_FIELDS: readonly ["valuePatterns"];
|
|
5
7
|
export declare const PASS_KEY_FIELDS: readonly ["passKeys"];
|
|
6
|
-
export declare const REGEX_ARRAY_CONFIG_FIELDS: readonly ["secretKeys", "deepSecretKeys", "
|
|
8
|
+
export declare const REGEX_ARRAY_CONFIG_FIELDS: readonly ["secretKeys", "deepSecretKeys", "opaqueSecretKeys", "removeSecretKeys", "fullSecretKeys", "deleteSecretKeys", "valuePatterns", "passKeys"];
|
|
7
9
|
export type SecretRegexField = (typeof SECRET_REGEX_FIELDS)[number];
|
|
8
10
|
export type RegexArrayConfigField = (typeof REGEX_ARRAY_CONFIG_FIELDS)[number];
|
|
9
|
-
export declare const RULE_LIST_FIELDS: readonly ["secretKeys", "deepSecretKeys", "
|
|
11
|
+
export declare const RULE_LIST_FIELDS: readonly ["secretKeys", "deepSecretKeys", "opaqueSecretKeys", "removeSecretKeys", "fullSecretKeys", "deleteSecretKeys", "valuePatterns", "passKeys", "customObjects"];
|
|
10
12
|
export declare const hasExplicitRedactionRules: (config?: FieldRedactorConfig) => boolean;
|
|
11
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Merge legacy `fullSecretKeys` / `deleteSecretKeys` into canonical
|
|
15
|
+
* `opaqueSecretKeys` / `removeSecretKeys` and drop the legacy keys.
|
|
16
|
+
*/
|
|
12
17
|
export declare const normalizeFieldRedactorConfig: (config?: FieldRedactorConfig) => FieldRedactorConfig | undefined;
|
|
13
18
|
/**
|
|
14
19
|
* When only value patterns / path rules are configured, shallow key matching must be disabled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redactionRules.d.ts","sourceRoot":"","sources":["../../src/config/redactionRules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE7D,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"redactionRules.d.ts","sourceRoot":"","sources":["../../src/config/redactionRules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE7D,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,mFAAoF,CAAC;AAErH,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,iDAAkD,CAAC;AAEzF,eAAO,MAAM,oBAAoB,4BAA6B,CAAC;AAE/D,eAAO,MAAM,eAAe,uBAAwB,CAAC;AAErD,eAAO,MAAM,yBAAyB,sJAK5B,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E,eAAO,MAAM,gBAAgB,uKAA2D,CAAC;AAIzF,eAAO,MAAM,yBAAyB,YAAa,mBAAmB,KAAG,OAEpC,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,4BAA4B,YAAa,mBAAmB,KAAG,mBAAmB,GAAG,SAiBjG,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,YAAY,mBAAmB,KAAQ,MAAM,EAAE,GAAG,SAmB/E,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,qBAAqB,UACvD,mBAAmB,SACpB,CAAC,YACE,MAAM,EAAE,KACjB,IAEF,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,eAAO,MAAM,yBAAyB,YAC3B,gBAAgB,EAAE,KAC1B,IAAI,CAAC,mBAAmB,EAAE,eAAe,GAAG,aAAa,CAS3D,CAAC;AAqBF,eAAO,MAAM,kBAAkB,WACrB,mBAAmB,WAClB,gBAAgB,EAAE,WAClB,OAAO,CAAC,mBAAmB,CAAC,KACpC,IASF,CAAC"}
|