field-redactor 1.6.0 → 1.6.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 +33 -0
- package/CONTRIBUTING.md +5 -3
- package/README.md +2 -2
- package/dist/api/fieldRedactor.d.ts +3 -5
- package/dist/api/fieldRedactor.d.ts.map +1 -1
- package/dist/api/fieldRedactor.js +7 -11
- 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/presets.d.ts +2 -2
- package/dist/config/presets.js +1 -1
- package/dist/config/redactionRules.d.ts +13 -7
- package/dist/config/redactionRules.d.ts.map +1 -1
- package/dist/config/redactionRules.js +20 -16
- package/dist/config/redactionRules.js.map +1 -1
- package/dist/dryrun/dryRun.d.ts.map +1 -1
- package/dist/dryrun/dryRun.js +2 -2
- package/dist/dryrun/dryRun.js.map +1 -1
- package/dist/engine/arrayRedaction.js +1 -1
- package/dist/engine/arrayRedaction.js.map +1 -1
- package/dist/engine/customObjectFieldHandler.d.ts +4 -9
- package/dist/engine/customObjectFieldHandler.d.ts.map +1 -1
- package/dist/engine/customObjectFieldHandler.js +90 -108
- package/dist/engine/customObjectFieldHandler.js.map +1 -1
- package/dist/engine/objectRedactorCustomObject.d.ts +8 -23
- package/dist/engine/objectRedactorCustomObject.d.ts.map +1 -1
- package/dist/engine/objectRedactorCustomObject.js +8 -40
- package/dist/engine/objectRedactorCustomObject.js.map +1 -1
- package/dist/engine/objectRedactorHelpers.d.ts +3 -4
- package/dist/engine/objectRedactorHelpers.d.ts.map +1 -1
- package/dist/engine/objectRedactorHelpers.js +12 -38
- 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 +2 -1
- package/dist/engine/objectRedactorTraversal.js.map +1 -1
- package/dist/rules/ruleResolver.d.ts +3 -5
- package/dist/rules/ruleResolver.d.ts.map +1 -1
- package/dist/rules/ruleResolver.js +17 -23
- package/dist/rules/ruleResolver.js.map +1 -1
- package/dist/rules/schemaSiblingKey.d.ts +4 -0
- package/dist/rules/schemaSiblingKey.d.ts.map +1 -0
- package/dist/rules/schemaSiblingKey.js +19 -0
- package/dist/rules/schemaSiblingKey.js.map +1 -0
- package/dist/rules/secretManager.d.ts +6 -7
- 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 +12 -12
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -4
- package/dist/types.js.map +1 -1
- package/dist/util/maybeAsync.d.ts +0 -1
- package/dist/util/maybeAsync.d.ts.map +1 -1
- package/dist/util/maybeAsync.js +1 -3
- package/dist/util/maybeAsync.js.map +1 -1
- package/dist/util/primitiveCoercion.d.ts +4 -0
- package/dist/util/primitiveCoercion.d.ts.map +1 -0
- package/dist/util/primitiveCoercion.js +21 -0
- package/dist/util/primitiveCoercion.js.map +1 -0
- 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 +7 -5
- package/docs/guides/secret-key-modes.md +9 -14
- package/docs/reference/config.md +2 -2
- package/docs/release-notes/README.md +3 -1
- package/docs/release-notes/v1.6.1.md +24 -0
- package/docs/release-notes/v1.6.2.md +26 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,37 @@ 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.2] - 2026-07-22
|
|
9
|
+
|
|
10
|
+
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).
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **Canonical naming** — config normalize, builder, presets, and `SecretManager` store/match on `opaqueSecretKeys` / `removeSecretKeys`; methods are `isOpaqueSecretKey` / `isRemoveSecretKey`. Legacy `fullSecretKeys` / `deleteSecretKeys` remain accepted input aliases.
|
|
15
|
+
- **Traversal wiring** — `FieldRedactor` depends on `ObjectRedactorTraversal` directly (no `ObjectRedactor` façade).
|
|
16
|
+
- **Builder** — `buildRedactor()` / `buildSafeRedactor()` use a static `FieldRedactor` import (no lazy `require()`).
|
|
17
|
+
|
|
18
|
+
### Removed
|
|
19
|
+
|
|
20
|
+
- Internal `ObjectRedactor` class (never part of the public export surface).
|
|
21
|
+
|
|
22
|
+
## [1.6.1] - 2026-07-22
|
|
23
|
+
|
|
24
|
+
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).
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- Unified custom-object field handling into a single `handleField` path and one match-type dispatcher.
|
|
29
|
+
- Sibling-key and primitive coercion helpers moved out of the engine layer (`schemaSiblingKey`, `primitiveCoercion`) so rules no longer import engine.
|
|
30
|
+
- Config construction normalizes aliases once; `resolveSecretKeys` assumes already-normalized input.
|
|
31
|
+
- Path-rule disposition uses a mode map; identical force-deep helpers merged into `forceDeepForKey`.
|
|
32
|
+
- Dry-run attribution builds `RuleResolver` directly (removed unused attribution shim).
|
|
33
|
+
|
|
34
|
+
### Removed
|
|
35
|
+
|
|
36
|
+
- Dead internal re-exports (`fieldDisposition`, unused dry-run attribution wrappers, `awaitMaybe`).
|
|
37
|
+
- Unused public convenience alias `FieldRedactor.fromConfig()` (equivalent to `new FieldRedactor(config)`).
|
|
38
|
+
|
|
8
39
|
## [1.6.0] - 2026-07-21
|
|
9
40
|
|
|
10
41
|
Path rules, pass-key allowlists, Opaque/Remove naming aliases, and architecture cleanup. See [docs/release-notes/v1.6.0.md](docs/release-notes/v1.6.0.md) and [docs/guides/migration-1.5-to-1.6.md](docs/guides/migration-1.5-to-1.6.md).
|
|
@@ -166,6 +197,8 @@ Development tags `2.0.0`–`2.3.1` track incremental work toward `1.3.0`. See [d
|
|
|
166
197
|
|
|
167
198
|
- Initial public release: regex key rules, custom object schemas with sibling-key indirection, async `redact()` / `redactInPlace()`, and configurable redactor functions.
|
|
168
199
|
|
|
200
|
+
[1.6.2]: https://github.com/mologna/field-redactor/compare/v1.6.1...v1.6.2
|
|
201
|
+
[1.6.1]: https://github.com/mologna/field-redactor/compare/v1.6.0...v1.6.1
|
|
169
202
|
[1.6.0]: https://github.com/mologna/field-redactor/compare/v1.5.0...v1.6.0
|
|
170
203
|
[1.5.0]: https://github.com/mologna/field-redactor/releases/tag/v1.5.0
|
|
171
204
|
[2.5.1]: https://github.com/mologna/field-redactor/compare/2.5.0...2.5.1
|
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` |
|
|
46
|
+
| Remove | `removeSecretKeys`, `CustomObjectMatchType.Remove`, `isRemoveSecretKey` | `deleteSecretKeys`, `Delete` |
|
|
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
|
|
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).
|
|
@@ -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`.
|
|
@@ -14,13 +14,11 @@ export declare class FieldRedactor {
|
|
|
14
14
|
constructor(config?: FieldRedactorConfig);
|
|
15
15
|
/**
|
|
16
16
|
* Creates a FieldRedactor that requires at least one explicit redaction rule: Shallow (`secretKeys`),
|
|
17
|
-
* Deep (`deepSecretKeys`), Opaque (`
|
|
18
|
-
*
|
|
17
|
+
* Deep (`deepSecretKeys`), Opaque (`opaqueSecretKeys` / legacy `fullSecretKeys`), Remove (`removeSecretKeys` /
|
|
18
|
+
* legacy `deleteSecretKeys`), Schema (`customObjects`), Value-pattern (`valuePatterns`), or Path (`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;
|
|
22
|
-
/** Convenience alias for `new FieldRedactor(config)`. */
|
|
23
|
-
static fromConfig(config?: FieldRedactorConfig): FieldRedactor;
|
|
24
22
|
/** Redacts a copy of the input and returns an audit report of affected paths without mutating the original. */
|
|
25
23
|
dryRun<T extends RedactableInput>(value: T): Promise<DryRunResult<T>>;
|
|
26
24
|
/** Synchronous {@link FieldRedactor.dryRun} without per-field Promise overhead. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactor.d.ts","sourceRoot":"","sources":["../../src/api/fieldRedactor.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,mBAAmB,EAInB,eAAe,EAEhB,MAAM,UAAU,CAAC;AAKlB;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IAEzC,+FAA+F;IAC/F,SAAgB,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;gBAEtC,MAAM,CAAC,EAAE,mBAAmB;IASxC;;;;;OAKG;WACW,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,aAAa;IAUpE
|
|
1
|
+
{"version":3,"file":"fieldRedactor.d.ts","sourceRoot":"","sources":["../../src/api/fieldRedactor.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,mBAAmB,EAInB,eAAe,EAEhB,MAAM,UAAU,CAAC;AAKlB;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IAEzC,+FAA+F;IAC/F,SAAgB,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;gBAEtC,MAAM,CAAC,EAAE,mBAAmB;IASxC;;;;;OAKG;WACW,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,aAAa;IAUpE,+GAA+G;IAClG,MAAM,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIlF,mFAAmF;IAC5E,UAAU,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IASvE,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,cAAc;IActB;;;;OAIG;IACU,MAAM,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBpE;;;OAGG;IACI,UAAU,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IAazD,uHAAuH;IAC1G,aAAa,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9E;;;OAGG;IACI,iBAAiB,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAQnE,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,sBAAsB;CAG/B"}
|
|
@@ -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`.
|
|
@@ -37,20 +37,16 @@ class FieldRedactor {
|
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Creates a FieldRedactor that requires at least one explicit redaction rule: Shallow (`secretKeys`),
|
|
40
|
-
* Deep (`deepSecretKeys`), Opaque (`
|
|
41
|
-
*
|
|
40
|
+
* Deep (`deepSecretKeys`), Opaque (`opaqueSecretKeys` / legacy `fullSecretKeys`), Remove (`removeSecretKeys` /
|
|
41
|
+
* legacy `deleteSecretKeys`), Schema (`customObjects`), Value-pattern (`valuePatterns`), or Path (`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 (legacy fullSecretKeys / deleteSecretKeys also count). Without explicit rules, new FieldRedactor() redacts all values by default.');
|
|
47
47
|
}
|
|
48
48
|
return new FieldRedactor(config);
|
|
49
49
|
}
|
|
50
|
-
/** Convenience alias for `new FieldRedactor(config)`. */
|
|
51
|
-
static fromConfig(config) {
|
|
52
|
-
return new FieldRedactor(config);
|
|
53
|
-
}
|
|
54
50
|
/** Redacts a copy of the input and returns an audit report of affected paths without mutating the original. */
|
|
55
51
|
dryRun(value) {
|
|
56
52
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -119,7 +115,7 @@ class FieldRedactor {
|
|
|
119
115
|
this.redactInPlaceSync(value);
|
|
120
116
|
return value;
|
|
121
117
|
}
|
|
122
|
-
return this.deps.
|
|
118
|
+
return this.deps.traversal.redactCopyOnWrite(value);
|
|
123
119
|
}
|
|
124
120
|
/** Conditionally redacts fields in the JSON object in place based on the configuration provided in the constructor. */
|
|
125
121
|
redactInPlace(value) {
|
|
@@ -128,7 +124,7 @@ class FieldRedactor {
|
|
|
128
124
|
this.redactInPlaceSync(value);
|
|
129
125
|
return;
|
|
130
126
|
}
|
|
131
|
-
yield this.runTraversableRedaction(value, () => this.deps.
|
|
127
|
+
yield this.runTraversableRedaction(value, () => this.deps.traversal.redactInPlaceAsync(value));
|
|
132
128
|
});
|
|
133
129
|
}
|
|
134
130
|
/**
|
|
@@ -139,7 +135,7 @@ class FieldRedactor {
|
|
|
139
135
|
if (this.deps.usesAsyncRedactor) {
|
|
140
136
|
throw new errors_1.FieldRedactorError('redactInPlaceSync requires syncRedactor configuration or the default redactor');
|
|
141
137
|
}
|
|
142
|
-
this.runTraversableRedaction(value, () => this.deps.
|
|
138
|
+
this.runTraversableRedaction(value, () => this.deps.traversal.redactInPlace(value));
|
|
143
139
|
}
|
|
144
140
|
runTraversableRedaction(value, redact) {
|
|
145
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":";;;AAAA,mDAAgD;AAChD,6DAMkC;AAQlC;;GAEG;AACH,MAAa,0BAA0B;IAAvC;QACU,WAAM,GAAwB,EAAE,CAAC;QACjC,YAAO,GAAuB,EAAE,CAAC;IAwH3C,CAAC;IAtHC,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,0BAA0B,EAAE,CAAC;IAC1C,CAAC;IAED,oEAAoE;IACpE,OAAO,CAAC,GAAG,QAAkB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,sEAAsE;IACtE,IAAI,CAAC,GAAG,QAAkB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,8EAA8E;IAC9E,MAAM,CAAC,GAAG,QAAkB;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,sEAAsE;IACtE,MAAM,CAAC,GAAG,QAAkB;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,2DAA2D;IAC3D,MAAM,CAAC,GAAG,QAAkB;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,mDAAmD;IACnD,MAAM,CAAC,YAA0B,EAAE,OAAuB;QACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,GAAG,QAAkB;QAChC,IAAA,kCAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAY,EAAE,IAAkB;;QACvC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,MAAM,CAAC,SAAS,mCAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yFAAyF;IACzF,OAAO,CAAC,GAAG,QAAkB;QAC3B,IAAA,kCAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,MAAoC;QAC5C,IAAA,mCAAkB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,EAAY;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,YAAY,CAAC,EAAgB;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,cAAc,CAAC,KAAc;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,qBAAqB,CAAC,KAAc;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,UAAU,CAAC,KAAc;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,IAAI;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,eAAe,CAAC,OAAkC;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK;QACH,uCAAY,IAAI,CAAC,MAAM,GAAK,IAAA,0CAAyB,EAAC,IAAI,CAAC,OAAO,CAAC,EAAG;IACxE,CAAC;IAED,gEAAgE;IAChE,aAAa;QACX,OAAO,IAAI,6BAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,oEAAoE;IACpE,iBAAiB;QACf,OAAO,6BAAa,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAEO,WAAW,CAAC,KAAuB,EAAE,QAAkB;QAC7D,IAAA,kCAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,GAAG,CAAsC,GAAM,EAAE,KAA6B;QACpF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA1HD,gEA0HC"}
|
|
@@ -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"}
|
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,18 +1,24 @@
|
|
|
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
|
-
* When only value patterns are configured, shallow key matching must be disabled
|
|
15
|
-
* so the legacy default does not redact every field.
|
|
19
|
+
* When only value patterns / path rules are configured, shallow key matching must be disabled
|
|
20
|
+
* (`secretKeys: []`) so the legacy default does not redact every field.
|
|
21
|
+
* Expects an already-normalized config (aliases merged).
|
|
16
22
|
*/
|
|
17
23
|
export declare const resolveSecretKeys: (config?: FieldRedactorConfig) => RegExp[] | undefined;
|
|
18
24
|
export declare const appendRegExpArray: <F extends RegexArrayConfigField>(config: FieldRedactorConfig, field: F, patterns: RegExp[]) => void;
|
|
@@ -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"}
|
|
@@ -12,8 +12,10 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.mergePartialConfig = exports.finalizeRegisteredSchemas = exports.appendRegExpArray = exports.resolveSecretKeys = exports.normalizeFieldRedactorConfig = exports.hasExplicitRedactionRules = exports.RULE_LIST_FIELDS = exports.REGEX_ARRAY_CONFIG_FIELDS = exports.PASS_KEY_FIELDS = exports.VALUE_PATTERN_FIELDS = exports.SECRET_REGEX_ALIAS_FIELDS = exports.SECRET_REGEX_FIELDS = void 0;
|
|
15
|
-
|
|
16
|
-
exports.
|
|
15
|
+
/** Canonical key-rule regex fields (preferred Opaque/Remove names). */
|
|
16
|
+
exports.SECRET_REGEX_FIELDS = ['secretKeys', 'deepSecretKeys', 'opaqueSecretKeys', 'removeSecretKeys'];
|
|
17
|
+
/** Legacy aliases accepted on input and merged into {@link SECRET_REGEX_FIELDS}. */
|
|
18
|
+
exports.SECRET_REGEX_ALIAS_FIELDS = ['fullSecretKeys', 'deleteSecretKeys'];
|
|
17
19
|
exports.VALUE_PATTERN_FIELDS = ['valuePatterns'];
|
|
18
20
|
exports.PASS_KEY_FIELDS = ['passKeys'];
|
|
19
21
|
exports.REGEX_ARRAY_CONFIG_FIELDS = [
|
|
@@ -27,36 +29,38 @@ const hasNonEmptyArray = (value) => value !== undefined && value.length > 0;
|
|
|
27
29
|
const hasExplicitRedactionRules = (config) => exports.RULE_LIST_FIELDS.some((field) => hasNonEmptyArray(config === null || config === void 0 ? void 0 : config[field])) ||
|
|
28
30
|
hasNonEmptyArray(config === null || config === void 0 ? void 0 : config.pathRules);
|
|
29
31
|
exports.hasExplicitRedactionRules = hasExplicitRedactionRules;
|
|
30
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Merge legacy `fullSecretKeys` / `deleteSecretKeys` into canonical
|
|
34
|
+
* `opaqueSecretKeys` / `removeSecretKeys` and drop the legacy keys.
|
|
35
|
+
*/
|
|
31
36
|
const normalizeFieldRedactorConfig = (config) => {
|
|
32
37
|
var _a, _b;
|
|
33
38
|
if (!config) {
|
|
34
39
|
return config;
|
|
35
40
|
}
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
if (!(
|
|
41
|
+
const fullSecretKeys = config.fullSecretKeys;
|
|
42
|
+
const deleteSecretKeys = config.deleteSecretKeys;
|
|
43
|
+
if (!(fullSecretKeys === null || fullSecretKeys === void 0 ? void 0 : fullSecretKeys.length) && !(deleteSecretKeys === null || deleteSecretKeys === void 0 ? void 0 : deleteSecretKeys.length)) {
|
|
39
44
|
return config;
|
|
40
45
|
}
|
|
41
|
-
const {
|
|
42
|
-
return Object.assign(Object.assign({}, rest), {
|
|
46
|
+
const { fullSecretKeys: _full, deleteSecretKeys: _delete } = config, rest = __rest(config, ["fullSecretKeys", "deleteSecretKeys"]);
|
|
47
|
+
return Object.assign(Object.assign({}, rest), { opaqueSecretKeys: [...((_a = config.opaqueSecretKeys) !== null && _a !== void 0 ? _a : []), ...(fullSecretKeys !== null && fullSecretKeys !== void 0 ? fullSecretKeys : [])], removeSecretKeys: [...((_b = config.removeSecretKeys) !== null && _b !== void 0 ? _b : []), ...(deleteSecretKeys !== null && deleteSecretKeys !== void 0 ? deleteSecretKeys : [])] });
|
|
43
48
|
};
|
|
44
49
|
exports.normalizeFieldRedactorConfig = normalizeFieldRedactorConfig;
|
|
45
50
|
/**
|
|
46
|
-
* When only value patterns are configured, shallow key matching must be disabled
|
|
47
|
-
* so the legacy default does not redact every field.
|
|
51
|
+
* When only value patterns / path rules are configured, shallow key matching must be disabled
|
|
52
|
+
* (`secretKeys: []`) so the legacy default does not redact every field.
|
|
53
|
+
* Expects an already-normalized config (aliases merged).
|
|
48
54
|
*/
|
|
49
|
-
const resolveSecretKeys = (config) => {
|
|
50
|
-
|
|
51
|
-
const normalized = (_a = (0, exports.normalizeFieldRedactorConfig)(config)) !== null && _a !== void 0 ? _a : {};
|
|
52
|
-
const { secretKeys, deepSecretKeys, fullSecretKeys, deleteSecretKeys, customObjects, valuePatterns, pathRules } = normalized;
|
|
55
|
+
const resolveSecretKeys = (config = {}) => {
|
|
56
|
+
const { secretKeys, deepSecretKeys, opaqueSecretKeys, removeSecretKeys, customObjects, valuePatterns, pathRules } = config;
|
|
53
57
|
if (secretKeys !== undefined) {
|
|
54
58
|
return secretKeys;
|
|
55
59
|
}
|
|
56
60
|
if (((valuePatterns === null || valuePatterns === void 0 ? void 0 : valuePatterns.length) || (pathRules === null || pathRules === void 0 ? void 0 : pathRules.length)) &&
|
|
57
61
|
!(deepSecretKeys === null || deepSecretKeys === void 0 ? void 0 : deepSecretKeys.length) &&
|
|
58
|
-
!(
|
|
59
|
-
!(
|
|
62
|
+
!(opaqueSecretKeys === null || opaqueSecretKeys === void 0 ? void 0 : opaqueSecretKeys.length) &&
|
|
63
|
+
!(removeSecretKeys === null || removeSecretKeys === void 0 ? void 0 : removeSecretKeys.length) &&
|
|
60
64
|
!(customObjects === null || customObjects === void 0 ? void 0 : customObjects.length)) {
|
|
61
65
|
return [];
|
|
62
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redactionRules.js","sourceRoot":"","sources":["../../src/config/redactionRules.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"redactionRules.js","sourceRoot":"","sources":["../../src/config/redactionRules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dryRun.d.ts","sourceRoot":"","sources":["../../src/dryrun/dryRun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAgB,SAAS,EAAE,MAAM,UAAU,CAAC;AAEjE,eAAO,MAAM,uBAAuB,QAAO,YAKzC,CAAC;AAEH,eAAO,MAAM,oBAAoB,EAAE,YAAwC,CAAC;AA0E5E,eAAO,MAAM,iBAAiB,WACpB,SAAS,GAAG,SAAS,SACtB,SAAS,GAAG,SAAS,WACnB,mBAAmB,iBACb,aAAa,uBACP,mBAAmB,mBACvB,eAAe,KAC/B,
|
|
1
|
+
{"version":3,"file":"dryRun.d.ts","sourceRoot":"","sources":["../../src/dryrun/dryRun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAgB,SAAS,EAAE,MAAM,UAAU,CAAC;AAEjE,eAAO,MAAM,uBAAuB,QAAO,YAKzC,CAAC;AAEH,eAAO,MAAM,oBAAoB,EAAE,YAAwC,CAAC;AA0E5E,eAAO,MAAM,iBAAiB,WACpB,SAAS,GAAG,SAAS,SACtB,SAAS,GAAG,SAAS,WACnB,mBAAmB,iBACb,aAAa,uBACP,mBAAmB,mBACvB,eAAe,KAC/B,YAeF,CAAC"}
|
package/dist/dryrun/dryRun.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildDryRunReport = exports.EMPTY_DRY_RUN_REPORT = exports.createEmptyDryRunReport = void 0;
|
|
4
|
-
const
|
|
4
|
+
const ruleResolver_1 = require("../rules/ruleResolver");
|
|
5
5
|
const jsonWalk_1 = require("../util/jsonWalk");
|
|
6
6
|
const types_1 = require("../types");
|
|
7
7
|
const createEmptyDryRunReport = () => ({
|
|
@@ -67,7 +67,7 @@ const buildDryRunReport = (before, after, manager, secretManager, valuePatternMa
|
|
|
67
67
|
if (before !== undefined) {
|
|
68
68
|
diffRedaction(before, after, '', report);
|
|
69
69
|
collectMatchedSchemas(before, manager, '', report);
|
|
70
|
-
report.pathRules = (0,
|
|
70
|
+
report.pathRules = (0, ruleResolver_1.buildPathRules)(before, report.redactedPaths, report.deletedPaths, new ruleResolver_1.RuleResolver(secretManager, pathRuleMatcher, valuePatternMatcher, manager));
|
|
71
71
|
}
|
|
72
72
|
return report;
|
|
73
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dryRun.js","sourceRoot":"","sources":["../../src/dryrun/dryRun.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"dryRun.js","sourceRoot":"","sources":["../../src/dryrun/dryRun.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ class ArrayRedactor {
|
|
|
11
11
|
}
|
|
12
12
|
redactArrayInObject(array, key, forceDeepRedaction, parent, pathSegments) {
|
|
13
13
|
const redacted = this.services.ruleResolver.shouldTraverseContainerByKey(key, forceDeepRedaction)
|
|
14
|
-
? this.redactAllArrayValues(array, this.services.ruleResolver.
|
|
14
|
+
? this.redactAllArrayValues(array, this.services.ruleResolver.forceDeepForKey(key, forceDeepRedaction), parent.copyOnWrite, pathSegments)
|
|
15
15
|
: this.redactObjectsInArray(array, parent.copyOnWrite, pathSegments);
|
|
16
16
|
if (redacted instanceof Promise) {
|
|
17
17
|
return redacted.then((result) => {
|