field-redactor 1.5.0 → 1.6.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/CHANGELOG.md +41 -0
- package/CONTRIBUTING.md +64 -0
- package/README.md +3 -0
- package/dist/api/fieldRedactor.d.ts +51 -0
- package/dist/api/fieldRedactor.d.ts.map +1 -0
- package/dist/api/fieldRedactor.js +165 -0
- package/dist/api/fieldRedactor.js.map +1 -0
- package/dist/api/fieldRedactorConfigBuilder.d.ts +57 -0
- package/dist/api/fieldRedactorConfigBuilder.d.ts.map +1 -0
- package/dist/api/fieldRedactorConfigBuilder.js +115 -0
- package/dist/api/fieldRedactorConfigBuilder.js.map +1 -0
- package/dist/api/fieldRedactorDeps.d.ts +19 -0
- package/dist/api/fieldRedactorDeps.d.ts.map +1 -0
- package/dist/api/fieldRedactorDeps.js +45 -0
- package/dist/api/fieldRedactorDeps.js.map +1 -0
- package/dist/arrayRedaction.d.ts +12 -0
- package/dist/arrayRedaction.d.ts.map +1 -0
- package/dist/arrayRedaction.js +70 -0
- package/dist/arrayRedaction.js.map +1 -0
- package/dist/config/configValidator.d.ts +9 -0
- package/dist/config/configValidator.d.ts.map +1 -0
- package/dist/config/configValidator.js +77 -0
- package/dist/config/configValidator.js.map +1 -0
- package/dist/config/customObjectSchemas.d.ts +7 -0
- package/dist/config/customObjectSchemas.d.ts.map +1 -0
- package/dist/config/customObjectSchemas.js +35 -0
- package/dist/config/customObjectSchemas.js.map +1 -0
- package/dist/config/presets.d.ts +22 -0
- package/dist/config/presets.d.ts.map +1 -0
- package/dist/config/presets.js +50 -0
- package/dist/config/presets.js.map +1 -0
- package/dist/config/redactionRules.d.ts +26 -0
- package/dist/config/redactionRules.d.ts.map +1 -0
- package/dist/config/redactionRules.js +107 -0
- package/dist/config/redactionRules.js.map +1 -0
- package/dist/configValidator.d.ts +3 -4
- package/dist/configValidator.d.ts.map +1 -1
- package/dist/configValidator.js +9 -26
- package/dist/configValidator.js.map +1 -1
- package/dist/customObjectFieldHandler.d.ts +21 -0
- package/dist/customObjectFieldHandler.d.ts.map +1 -0
- package/dist/customObjectFieldHandler.js +159 -0
- package/dist/customObjectFieldHandler.js.map +1 -0
- package/dist/customObjectManager.d.ts +1 -1
- package/dist/customObjectManager.js +3 -3
- package/dist/customObjectManager.js.map +1 -1
- package/dist/customObjectSchemas.d.ts +7 -0
- package/dist/customObjectSchemas.d.ts.map +1 -0
- package/dist/customObjectSchemas.js +35 -0
- package/dist/customObjectSchemas.js.map +1 -0
- package/dist/dryRun.d.ts +2 -1
- package/dist/dryRun.d.ts.map +1 -1
- package/dist/dryRun.js +2 -2
- package/dist/dryRun.js.map +1 -1
- package/dist/dryRunAttribution.d.ts +5 -3
- package/dist/dryRunAttribution.d.ts.map +1 -1
- package/dist/dryRunAttribution.js +9 -101
- package/dist/dryRunAttribution.js.map +1 -1
- package/dist/dryrun/dryRun.d.ts +9 -0
- package/dist/dryrun/dryRun.d.ts.map +1 -0
- package/dist/dryrun/dryRun.js +75 -0
- package/dist/dryrun/dryRun.js.map +1 -0
- package/dist/dryrun/dryRunAttribution.d.ts +10 -0
- package/dist/dryrun/dryRunAttribution.d.ts.map +1 -0
- package/dist/dryrun/dryRunAttribution.js +14 -0
- package/dist/dryrun/dryRunAttribution.js.map +1 -0
- package/dist/engine/arrayRedaction.d.ts +12 -0
- package/dist/engine/arrayRedaction.d.ts.map +1 -0
- package/dist/engine/arrayRedaction.js +70 -0
- package/dist/engine/arrayRedaction.js.map +1 -0
- package/dist/engine/customObjectFieldHandler.d.ts +30 -0
- package/dist/engine/customObjectFieldHandler.d.ts.map +1 -0
- package/dist/engine/customObjectFieldHandler.js +149 -0
- package/dist/engine/customObjectFieldHandler.js.map +1 -0
- package/dist/engine/objectRedactor.d.ts +18 -0
- package/dist/engine/objectRedactor.d.ts.map +1 -0
- package/dist/engine/objectRedactor.js +38 -0
- package/dist/engine/objectRedactor.js.map +1 -0
- package/dist/engine/objectRedactorCustomObject.d.ts +12 -0
- package/dist/engine/objectRedactorCustomObject.d.ts.map +1 -0
- package/dist/engine/objectRedactorCustomObject.js +22 -0
- package/dist/engine/objectRedactorCustomObject.js.map +1 -0
- package/dist/engine/objectRedactorHelpers.d.ts +8 -0
- package/dist/engine/objectRedactorHelpers.d.ts.map +1 -0
- package/dist/engine/objectRedactorHelpers.js +35 -0
- package/dist/engine/objectRedactorHelpers.js.map +1 -0
- package/dist/engine/objectRedactorMutation.d.ts +10 -0
- package/dist/engine/objectRedactorMutation.d.ts.map +1 -0
- package/dist/engine/objectRedactorMutation.js +89 -0
- package/dist/engine/objectRedactorMutation.js.map +1 -0
- package/dist/engine/objectRedactorSync.d.ts +2 -0
- package/dist/engine/objectRedactorSync.d.ts.map +1 -0
- package/dist/engine/objectRedactorSync.js +7 -0
- package/dist/engine/objectRedactorSync.js.map +1 -0
- package/dist/engine/objectRedactorTraversal.d.ts +41 -0
- package/dist/engine/objectRedactorTraversal.d.ts.map +1 -0
- package/dist/engine/objectRedactorTraversal.js +201 -0
- package/dist/engine/objectRedactorTraversal.js.map +1 -0
- package/dist/engine/primitiveRedactor.d.ts +33 -0
- package/dist/engine/primitiveRedactor.d.ts.map +1 -0
- package/dist/engine/primitiveRedactor.js +75 -0
- package/dist/engine/primitiveRedactor.js.map +1 -0
- package/dist/engine/traversalServices.d.ts +21 -0
- package/dist/engine/traversalServices.d.ts.map +1 -0
- package/dist/engine/traversalServices.js +3 -0
- package/dist/engine/traversalServices.js.map +1 -0
- package/dist/fieldDisposition.d.ts +3 -0
- package/dist/fieldDisposition.d.ts.map +1 -0
- package/dist/fieldDisposition.js +6 -0
- package/dist/fieldDisposition.js.map +1 -0
- package/dist/fieldRedactor.d.ts +6 -21
- package/dist/fieldRedactor.d.ts.map +1 -1
- package/dist/fieldRedactor.js +37 -56
- package/dist/fieldRedactor.js.map +1 -1
- package/dist/fieldRedactorConfigBuilder.d.ts +7 -1
- package/dist/fieldRedactorConfigBuilder.d.ts.map +1 -1
- package/dist/fieldRedactorConfigBuilder.js +14 -1
- package/dist/fieldRedactorConfigBuilder.js.map +1 -1
- package/dist/fieldRedactorDeps.d.ts +2 -0
- package/dist/fieldRedactorDeps.d.ts.map +1 -1
- package/dist/fieldRedactorDeps.js +11 -9
- package/dist/fieldRedactorDeps.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/jsonWalk.d.ts +1 -1
- package/dist/jsonWalk.d.ts.map +1 -1
- package/dist/jsonWalk.js +2 -33
- package/dist/jsonWalk.js.map +1 -1
- package/dist/maybeAsync.d.ts +7 -0
- package/dist/maybeAsync.d.ts.map +1 -0
- package/dist/maybeAsync.js +56 -0
- package/dist/maybeAsync.js.map +1 -0
- package/dist/objectRedactor.d.ts +2 -1
- package/dist/objectRedactor.d.ts.map +1 -1
- package/dist/objectRedactor.js +2 -2
- package/dist/objectRedactor.js.map +1 -1
- package/dist/objectRedactorCustomObject.d.ts +19 -40
- package/dist/objectRedactorCustomObject.d.ts.map +1 -1
- package/dist/objectRedactorCustomObject.js +20 -101
- package/dist/objectRedactorCustomObject.js.map +1 -1
- package/dist/objectRedactorHelpers.d.ts.map +1 -1
- package/dist/objectRedactorHelpers.js +3 -0
- package/dist/objectRedactorHelpers.js.map +1 -1
- package/dist/objectRedactorTraversal.d.ts +20 -36
- package/dist/objectRedactorTraversal.d.ts.map +1 -1
- package/dist/objectRedactorTraversal.js +141 -516
- package/dist/objectRedactorTraversal.js.map +1 -1
- package/dist/pathParsing.d.ts +11 -0
- package/dist/pathParsing.d.ts.map +1 -0
- package/dist/pathParsing.js +53 -0
- package/dist/pathParsing.js.map +1 -0
- package/dist/pathRuleMatcher.d.ts +19 -0
- package/dist/pathRuleMatcher.d.ts.map +1 -0
- package/dist/pathRuleMatcher.js +42 -0
- package/dist/pathRuleMatcher.js.map +1 -0
- package/dist/redactionRules.d.ts +3 -4
- package/dist/redactionRules.d.ts.map +1 -1
- package/dist/redactionRules.js +7 -9
- package/dist/redactionRules.js.map +1 -1
- package/dist/ruleResolver.d.ts +65 -0
- package/dist/ruleResolver.d.ts.map +1 -0
- package/dist/ruleResolver.js +193 -0
- package/dist/ruleResolver.js.map +1 -0
- package/dist/rules/customObjectManager.d.ts +28 -0
- package/dist/rules/customObjectManager.d.ts.map +1 -0
- package/dist/rules/customObjectManager.js +60 -0
- package/dist/rules/customObjectManager.js.map +1 -0
- package/dist/rules/fieldDisposition.d.ts +3 -0
- package/dist/rules/fieldDisposition.d.ts.map +1 -0
- package/dist/rules/fieldDisposition.js +6 -0
- package/dist/rules/fieldDisposition.js.map +1 -0
- package/dist/rules/pathRuleMatcher.d.ts +19 -0
- package/dist/rules/pathRuleMatcher.d.ts.map +1 -0
- package/dist/rules/pathRuleMatcher.js +40 -0
- package/dist/rules/pathRuleMatcher.js.map +1 -0
- package/dist/rules/ruleResolver.d.ts +63 -0
- package/dist/rules/ruleResolver.d.ts.map +1 -0
- package/dist/rules/ruleResolver.js +188 -0
- package/dist/rules/ruleResolver.js.map +1 -0
- 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 +31 -0
- package/dist/rules/secretManager.d.ts.map +1 -0
- package/dist/rules/secretManager.js +85 -0
- package/dist/rules/secretManager.js.map +1 -0
- package/dist/rules/valuePatternMatcher.d.ts +15 -0
- package/dist/rules/valuePatternMatcher.d.ts.map +1 -0
- package/dist/rules/valuePatternMatcher.js +30 -0
- package/dist/rules/valuePatternMatcher.js.map +1 -0
- package/dist/secretManager.d.ts +6 -19
- package/dist/secretManager.d.ts.map +1 -1
- package/dist/secretManager.js +19 -30
- package/dist/secretManager.js.map +1 -1
- package/dist/traversalServices.d.ts +21 -0
- package/dist/traversalServices.d.ts.map +1 -0
- package/dist/traversalServices.js +3 -0
- package/dist/traversalServices.js.map +1 -0
- package/dist/types.d.ts +41 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -1
- package/dist/types.js.map +1 -1
- package/dist/util/jsonWalk.d.ts +10 -0
- package/dist/util/jsonWalk.d.ts.map +1 -0
- package/dist/util/jsonWalk.js +53 -0
- package/dist/util/jsonWalk.js.map +1 -0
- package/dist/util/maybeAsync.d.ts +6 -0
- package/dist/util/maybeAsync.d.ts.map +1 -0
- package/dist/util/maybeAsync.js +54 -0
- package/dist/util/maybeAsync.js.map +1 -0
- package/dist/util/pathParsing.d.ts +11 -0
- package/dist/util/pathParsing.d.ts.map +1 -0
- package/dist/util/pathParsing.js +53 -0
- package/dist/util/pathParsing.js.map +1 -0
- 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/dist/util/regexUtils.d.ts +3 -0
- package/dist/util/regexUtils.d.ts.map +1 -0
- package/dist/util/regexUtils.js +8 -0
- package/dist/util/regexUtils.js.map +1 -0
- package/docs/guides/migration-1.5-to-1.6.md +57 -0
- package/docs/guides/path-rules.md +47 -0
- package/docs/reference/config.md +5 -1
- package/docs/release-notes/README.md +4 -1
- package/docs/release-notes/v1.6.0.md +59 -0
- package/docs/release-notes/v1.6.1.md +24 -0
- package/jest.config.js +3 -1
- package/package.json +8 -2
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { TraversableJson } from '../types';
|
|
2
|
+
import { SecretManager } from '../rules/secretManager';
|
|
3
|
+
import { CustomObjectManager } from '../rules/customObjectManager';
|
|
4
|
+
import { PrimitiveRedactor } from './primitiveRedactor';
|
|
5
|
+
import { ValuePatternMatcher } from '../rules/valuePatternMatcher';
|
|
6
|
+
import { PathRuleMatcher } from '../rules/pathRuleMatcher';
|
|
7
|
+
/**
|
|
8
|
+
* Unified JSON traversal for in-place and copy-on-write redaction.
|
|
9
|
+
* Sync and async paths share one implementation; async mode propagates Promises only when configured.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ObjectRedactorTraversal {
|
|
12
|
+
private readonly primitiveRedactor;
|
|
13
|
+
private readonly secretManager;
|
|
14
|
+
private readonly valuePatternMatcher;
|
|
15
|
+
private readonly ruleResolver;
|
|
16
|
+
private readonly arrayRedactor;
|
|
17
|
+
private readonly customObjectHandler;
|
|
18
|
+
private readonly services;
|
|
19
|
+
constructor(primitiveRedactor: PrimitiveRedactor, secretManager: SecretManager, customObjManager: CustomObjectManager, valuePatternMatcher: ValuePatternMatcher, pathRuleMatcher: PathRuleMatcher);
|
|
20
|
+
usesAsyncRedactor(): boolean;
|
|
21
|
+
redactInPlace<T extends TraversableJson>(value: T): T;
|
|
22
|
+
redactCopyOnWrite<T extends TraversableJson>(value: T): T;
|
|
23
|
+
redactInPlaceAsync<T extends TraversableJson>(value: T): Promise<T>;
|
|
24
|
+
private get asyncMode();
|
|
25
|
+
private traverseRedact;
|
|
26
|
+
private handleCustomObject;
|
|
27
|
+
private redactArrayInObject;
|
|
28
|
+
private redactAllArrayValues;
|
|
29
|
+
private redactPrimitive;
|
|
30
|
+
private setPrimitive;
|
|
31
|
+
private setPrimitiveFromValue;
|
|
32
|
+
private chainHandled;
|
|
33
|
+
private applyFieldDisposition;
|
|
34
|
+
private redactFieldValue;
|
|
35
|
+
private redactSecretFields;
|
|
36
|
+
private processSecretField;
|
|
37
|
+
private applyDefaultSecretRules;
|
|
38
|
+
private redactNestedObject;
|
|
39
|
+
private setPrimitiveValueIfSecret;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=objectRedactorTraversal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objectRedactorTraversal.d.ts","sourceRoot":"","sources":["../../src/engine/objectRedactorTraversal.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAY3D;;;GAGG;AACH,qBAAa,uBAAuB;IAOhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IATtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2B;IAC/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;gBAG1B,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,aAAa,EAC7C,gBAAgB,EAAE,mBAAmB,EACpB,mBAAmB,EAAE,mBAAmB,EACzD,eAAe,EAAE,eAAe;IAiClC,iBAAiB,IAAI,OAAO;IAI5B,aAAa,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IASrD,iBAAiB,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IASzD,kBAAkB,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAInE,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,qBAAqB;IAkC7B,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,uBAAuB;IA2B/B,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,yBAAyB;CAwBlC"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ObjectRedactorTraversal = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
const objectRedactorMutation_1 = require("./objectRedactorMutation");
|
|
6
|
+
const objectRedactorHelpers_1 = require("./objectRedactorHelpers");
|
|
7
|
+
const ruleResolver_1 = require("../rules/ruleResolver");
|
|
8
|
+
const maybeAsync_1 = require("../util/maybeAsync");
|
|
9
|
+
const arrayRedaction_1 = require("./arrayRedaction");
|
|
10
|
+
const customObjectFieldHandler_1 = require("./customObjectFieldHandler");
|
|
11
|
+
/**
|
|
12
|
+
* Unified JSON traversal for in-place and copy-on-write redaction.
|
|
13
|
+
* Sync and async paths share one implementation; async mode propagates Promises only when configured.
|
|
14
|
+
*/
|
|
15
|
+
class ObjectRedactorTraversal {
|
|
16
|
+
constructor(primitiveRedactor, secretManager, customObjManager, valuePatternMatcher, pathRuleMatcher) {
|
|
17
|
+
this.primitiveRedactor = primitiveRedactor;
|
|
18
|
+
this.secretManager = secretManager;
|
|
19
|
+
this.valuePatternMatcher = valuePatternMatcher;
|
|
20
|
+
this.ruleResolver = new ruleResolver_1.RuleResolver(secretManager, pathRuleMatcher, valuePatternMatcher, customObjManager);
|
|
21
|
+
this.services = {
|
|
22
|
+
get asyncMode() {
|
|
23
|
+
return primitiveRedactor.usesAsyncRedactor();
|
|
24
|
+
},
|
|
25
|
+
ruleResolver: this.ruleResolver,
|
|
26
|
+
secretManager,
|
|
27
|
+
valuePatternMatcher,
|
|
28
|
+
setPrimitive: (container, key, primitive) => this.setPrimitive(container, key, primitive),
|
|
29
|
+
setPrimitiveFromValue: (container, key, value) => this.setPrimitiveFromValue(container, key, value),
|
|
30
|
+
setPrimitiveValueIfSecret: (container, key, secretKey, value, forceDeepRedaction) => this.setPrimitiveValueIfSecret(container, key, secretKey, value, forceDeepRedaction),
|
|
31
|
+
redactSecretFields: (container, forceDeepRedaction, pathSegments) => this.redactSecretFields(container, forceDeepRedaction, pathSegments),
|
|
32
|
+
handleCustomObject: (container, customObject) => this.handleCustomObject(container, customObject),
|
|
33
|
+
redactArrayInObject: (array, key, forceDeepRedaction, parent, pathSegments) => this.redactArrayInObject(array, key, forceDeepRedaction, parent, pathSegments),
|
|
34
|
+
redactAllArrayValues: (array, forceDeepRedaction, copyOnWrite, pathSegments) => this.redactAllArrayValues(array, forceDeepRedaction, copyOnWrite, pathSegments)
|
|
35
|
+
};
|
|
36
|
+
this.arrayRedactor = new arrayRedaction_1.ArrayRedactor(this.services);
|
|
37
|
+
this.customObjectHandler = new customObjectFieldHandler_1.CustomObjectFieldHandler(this.services);
|
|
38
|
+
}
|
|
39
|
+
usesAsyncRedactor() {
|
|
40
|
+
return this.primitiveRedactor.usesAsyncRedactor();
|
|
41
|
+
}
|
|
42
|
+
redactInPlace(value) {
|
|
43
|
+
const result = this.traverseRedact(value, false);
|
|
44
|
+
if (result instanceof Promise) {
|
|
45
|
+
throw new Error('Unexpected async work on sync traversal path');
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
redactCopyOnWrite(value) {
|
|
50
|
+
const result = this.traverseRedact(value, true);
|
|
51
|
+
if (result instanceof Promise) {
|
|
52
|
+
throw new Error('Unexpected async work on sync traversal path');
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
redactInPlaceAsync(value) {
|
|
57
|
+
return Promise.resolve(this.traverseRedact(value, false));
|
|
58
|
+
}
|
|
59
|
+
get asyncMode() {
|
|
60
|
+
return this.primitiveRedactor.usesAsyncRedactor();
|
|
61
|
+
}
|
|
62
|
+
traverseRedact(value, copyOnWrite) {
|
|
63
|
+
const container = (0, objectRedactorMutation_1.createContainerMutation)(value, copyOnWrite);
|
|
64
|
+
const customObject = this.ruleResolver.getMatchingSchema(value);
|
|
65
|
+
const work = customObject && (0, types_1.isJsonObject)(value)
|
|
66
|
+
? this.handleCustomObject(container, customObject)
|
|
67
|
+
: this.redactSecretFields(container, false, []);
|
|
68
|
+
return (0, maybeAsync_1.finalizeMaybeAsync)(work, () => (copyOnWrite ? container.result() : value), this.asyncMode);
|
|
69
|
+
}
|
|
70
|
+
handleCustomObject(container, customObject) {
|
|
71
|
+
return this.customObjectHandler.handleCustomObject(container, customObject);
|
|
72
|
+
}
|
|
73
|
+
redactArrayInObject(array, key, forceDeepRedaction, parent, pathSegments) {
|
|
74
|
+
return this.arrayRedactor.redactArrayInObject(array, key, forceDeepRedaction, parent, pathSegments);
|
|
75
|
+
}
|
|
76
|
+
redactAllArrayValues(array, forceDeepRedaction, copyOnWrite, pathSegments) {
|
|
77
|
+
return this.arrayRedactor.redactAllArrayValues(array, forceDeepRedaction, copyOnWrite, pathSegments);
|
|
78
|
+
}
|
|
79
|
+
redactPrimitive(value) {
|
|
80
|
+
return this.asyncMode ? this.primitiveRedactor.redactValue(value) : this.primitiveRedactor.redactValueSync(value);
|
|
81
|
+
}
|
|
82
|
+
setPrimitive(container, key, primitive) {
|
|
83
|
+
const redacted = this.redactPrimitive(primitive);
|
|
84
|
+
if (redacted instanceof Promise) {
|
|
85
|
+
return redacted.then((result) => {
|
|
86
|
+
container.set(key, result);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
container.set(key, redacted);
|
|
90
|
+
}
|
|
91
|
+
setPrimitiveFromValue(container, key, value) {
|
|
92
|
+
return this.setPrimitive(container, key, (0, objectRedactorHelpers_1.getStringValue)(value));
|
|
93
|
+
}
|
|
94
|
+
chainHandled(work) {
|
|
95
|
+
if (work instanceof Promise) {
|
|
96
|
+
return work.then(() => 'handled');
|
|
97
|
+
}
|
|
98
|
+
return 'handled';
|
|
99
|
+
}
|
|
100
|
+
applyFieldDisposition(disposition, value, key, fieldPath, container) {
|
|
101
|
+
switch (disposition.action) {
|
|
102
|
+
case 'skip':
|
|
103
|
+
return 'handled';
|
|
104
|
+
case 'remove':
|
|
105
|
+
container.remove(key);
|
|
106
|
+
return 'handled';
|
|
107
|
+
case 'opaque':
|
|
108
|
+
return this.chainHandled(this.setPrimitiveFromValue(container, key, value));
|
|
109
|
+
case 'deep':
|
|
110
|
+
return this.chainHandled(this.redactFieldValue(value, key, true, container, fieldPath));
|
|
111
|
+
case 'shallow':
|
|
112
|
+
if (Array.isArray(value) || (0, types_1.isJsonObject)(value)) {
|
|
113
|
+
return this.chainHandled(this.redactFieldValue(value, key, false, container, fieldPath));
|
|
114
|
+
}
|
|
115
|
+
return this.chainHandled(this.setPrimitive(container, key, (0, objectRedactorHelpers_1.toRedactablePrimitive)(value)));
|
|
116
|
+
case 'pass-key-recurse':
|
|
117
|
+
if (Array.isArray(value) || (0, types_1.isJsonObject)(value)) {
|
|
118
|
+
return this.chainHandled(this.redactFieldValue(value, key, false, container, fieldPath));
|
|
119
|
+
}
|
|
120
|
+
return 'handled';
|
|
121
|
+
default:
|
|
122
|
+
return 'default';
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
redactFieldValue(value, key, forceDeepRedaction, container, fieldPath) {
|
|
126
|
+
if (Array.isArray(value)) {
|
|
127
|
+
return this.redactArrayInObject(value, key, forceDeepRedaction, container, fieldPath);
|
|
128
|
+
}
|
|
129
|
+
if ((0, types_1.isJsonObject)(value)) {
|
|
130
|
+
return this.redactNestedObject(value, key, forceDeepRedaction, container, fieldPath);
|
|
131
|
+
}
|
|
132
|
+
return this.setPrimitiveValueIfSecret(container, key, key, value, forceDeepRedaction);
|
|
133
|
+
}
|
|
134
|
+
redactSecretFields(container, forceDeepRedaction, pathSegments) {
|
|
135
|
+
const record = container.source;
|
|
136
|
+
return (0, maybeAsync_1.runSequential)(Object.keys(record), (key) => this.processSecretField(record, key, forceDeepRedaction, pathSegments, container), this.asyncMode);
|
|
137
|
+
}
|
|
138
|
+
processSecretField(record, key, forceDeepRedaction, pathSegments, container) {
|
|
139
|
+
const fieldValue = record[key];
|
|
140
|
+
const fieldPath = [...pathSegments, key];
|
|
141
|
+
const customObject = (0, types_1.isJsonObject)(fieldValue) ? this.ruleResolver.getMatchingSchema(fieldValue) : undefined;
|
|
142
|
+
if (customObject && (0, types_1.isJsonObject)(fieldValue)) {
|
|
143
|
+
const child = (0, objectRedactorMutation_1.createContainerMutation)(fieldValue, container.copyOnWrite);
|
|
144
|
+
return (0, maybeAsync_1.finalizeMaybeAsync)(this.handleCustomObject(child, customObject), () => {
|
|
145
|
+
if (container.copyOnWrite) {
|
|
146
|
+
container.set(key, child.result());
|
|
147
|
+
}
|
|
148
|
+
}, this.asyncMode);
|
|
149
|
+
}
|
|
150
|
+
const disposition = this.ruleResolver.resolvePathDisposition(pathSegments, key, forceDeepRedaction);
|
|
151
|
+
const dispositionResult = this.applyFieldDisposition(disposition, fieldValue, key, fieldPath, container);
|
|
152
|
+
if (dispositionResult instanceof Promise) {
|
|
153
|
+
return dispositionResult.then((handled) => handled === 'handled'
|
|
154
|
+
? undefined
|
|
155
|
+
: this.applyDefaultSecretRules(fieldValue, key, forceDeepRedaction, container, fieldPath));
|
|
156
|
+
}
|
|
157
|
+
if (dispositionResult === 'handled') {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
return this.applyDefaultSecretRules(fieldValue, key, forceDeepRedaction, container, fieldPath);
|
|
161
|
+
}
|
|
162
|
+
applyDefaultSecretRules(fieldValue, key, forceDeepRedaction, container, fieldPath) {
|
|
163
|
+
if (this.ruleResolver.shouldRemoveByKey(key)) {
|
|
164
|
+
container.remove(key);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (this.ruleResolver.shouldOpaqueByKey(key)) {
|
|
168
|
+
return this.setPrimitiveFromValue(container, key, fieldValue);
|
|
169
|
+
}
|
|
170
|
+
if (Array.isArray(fieldValue)) {
|
|
171
|
+
return this.redactArrayInObject(fieldValue, key, forceDeepRedaction, container, fieldPath);
|
|
172
|
+
}
|
|
173
|
+
if ((0, types_1.isJsonObject)(fieldValue)) {
|
|
174
|
+
return this.redactNestedObject(fieldValue, key, forceDeepRedaction, container, fieldPath);
|
|
175
|
+
}
|
|
176
|
+
return this.setPrimitiveValueIfSecret(container, key, key, fieldValue, forceDeepRedaction);
|
|
177
|
+
}
|
|
178
|
+
redactNestedObject(value, key, forceDeepRedaction, parent, pathSegments) {
|
|
179
|
+
const child = (0, objectRedactorMutation_1.createContainerMutation)(value, parent.copyOnWrite);
|
|
180
|
+
const customObject = this.ruleResolver.getMatchingSchema(value);
|
|
181
|
+
const work = customObject
|
|
182
|
+
? this.handleCustomObject(child, customObject)
|
|
183
|
+
: this.redactSecretFields(child, this.ruleResolver.forceDeepForKey(key, forceDeepRedaction), pathSegments);
|
|
184
|
+
return (0, maybeAsync_1.finalizeMaybeAsync)(work, () => {
|
|
185
|
+
if (parent.copyOnWrite) {
|
|
186
|
+
parent.set(key, child.result());
|
|
187
|
+
}
|
|
188
|
+
}, this.asyncMode);
|
|
189
|
+
}
|
|
190
|
+
setPrimitiveValueIfSecret(container, key, secretKey, value, forceDeepRedaction) {
|
|
191
|
+
const redacted = (0, objectRedactorHelpers_1.redactPrimitiveValueIfSecret)(this.secretManager, this.valuePatternMatcher, (primitive) => this.redactPrimitive(primitive), secretKey, value, forceDeepRedaction);
|
|
192
|
+
if (redacted instanceof Promise) {
|
|
193
|
+
return redacted.then((result) => {
|
|
194
|
+
container.set(key, result);
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
container.set(key, redacted);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
exports.ObjectRedactorTraversal = ObjectRedactorTraversal;
|
|
201
|
+
//# sourceMappingURL=objectRedactorTraversal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objectRedactorTraversal.js","sourceRoot":"","sources":["../../src/engine/objectRedactorTraversal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { PrimitiveRedactorConfig, RedactablePrimitive, RedactedPrimitive } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Redacts primitive values based on the configuration provided in the constructor. Uses the redactor
|
|
4
|
+
* privded in the constructor to redact values, or a basic redactor which returns 'REDACTED' if no redactor
|
|
5
|
+
* provided. Null and undefined values are ignored by default.
|
|
6
|
+
*/
|
|
7
|
+
export declare class PrimitiveRedactor {
|
|
8
|
+
private static DEFAULT_REDACTED_TEXT;
|
|
9
|
+
private readonly ignoreBooleans;
|
|
10
|
+
private readonly ignoreNullOrUndefined;
|
|
11
|
+
private readonly useAsyncRedactor;
|
|
12
|
+
private readonly syncRedactor;
|
|
13
|
+
private readonly asyncRedactor?;
|
|
14
|
+
/**
|
|
15
|
+
* Creates a PrimitiveRedactor with the specified configuration.
|
|
16
|
+
* @param config The PrimitiveRedactor configuration which specifies the redactor to use, whether to
|
|
17
|
+
* ignore booleans, and whether to ignore null or undefined values.
|
|
18
|
+
*/
|
|
19
|
+
constructor(config: PrimitiveRedactorConfig);
|
|
20
|
+
usesAsyncRedactor(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Redacts the primitive value based on the configuration provided in the constructor.
|
|
23
|
+
* @param value The value to redact.
|
|
24
|
+
* @returns The redacted value.
|
|
25
|
+
*/
|
|
26
|
+
redactValue(value: RedactablePrimitive): Promise<RedactedPrimitive>;
|
|
27
|
+
/**
|
|
28
|
+
* Synchronously redacts a primitive value without Promise allocation.
|
|
29
|
+
*/
|
|
30
|
+
redactValueSync(value: RedactablePrimitive): RedactedPrimitive;
|
|
31
|
+
private redactWith;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=primitiveRedactor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitiveRedactor.d.ts","sourceRoot":"","sources":["../../src/engine/primitiveRedactor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EAIlB,MAAM,UAAU,CAAC;AAElB;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAW;IAE1C;;;;OAIG;gBACS,MAAM,EAAE,uBAAuB;IAepC,iBAAiB,IAAI,OAAO;IAInC;;;;OAIG;IACU,WAAW,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQhF;;OAEG;IACI,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,iBAAiB;IAIrE,OAAO,CAAC,UAAU;CAkBnB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PrimitiveRedactor = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* Redacts primitive values based on the configuration provided in the constructor. Uses the redactor
|
|
15
|
+
* privded in the constructor to redact values, or a basic redactor which returns 'REDACTED' if no redactor
|
|
16
|
+
* provided. Null and undefined values are ignored by default.
|
|
17
|
+
*/
|
|
18
|
+
class PrimitiveRedactor {
|
|
19
|
+
/**
|
|
20
|
+
* Creates a PrimitiveRedactor with the specified configuration.
|
|
21
|
+
* @param config The PrimitiveRedactor configuration which specifies the redactor to use, whether to
|
|
22
|
+
* ignore booleans, and whether to ignore null or undefined values.
|
|
23
|
+
*/
|
|
24
|
+
constructor(config) {
|
|
25
|
+
var _a;
|
|
26
|
+
this.ignoreBooleans = config.ignoreBooleans;
|
|
27
|
+
this.ignoreNullOrUndefined = config.ignoreNullOrUndefined;
|
|
28
|
+
this.useAsyncRedactor = !!config.redactor && !config.syncRedactor;
|
|
29
|
+
this.syncRedactor = (_a = config.syncRedactor) !== null && _a !== void 0 ? _a : (config.redactor
|
|
30
|
+
? () => {
|
|
31
|
+
throw new Error('Sync redaction is not available without syncRedactor configuration');
|
|
32
|
+
}
|
|
33
|
+
: () => PrimitiveRedactor.DEFAULT_REDACTED_TEXT);
|
|
34
|
+
if (config.redactor) {
|
|
35
|
+
this.asyncRedactor = config.redactor;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
usesAsyncRedactor() {
|
|
39
|
+
return this.useAsyncRedactor;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Redacts the primitive value based on the configuration provided in the constructor.
|
|
43
|
+
* @param value The value to redact.
|
|
44
|
+
* @returns The redacted value.
|
|
45
|
+
*/
|
|
46
|
+
redactValue(value) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
if (!this.useAsyncRedactor) {
|
|
49
|
+
return this.redactValueSync(value);
|
|
50
|
+
}
|
|
51
|
+
return this.redactWith(value, (input) => this.asyncRedactor(input));
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Synchronously redacts a primitive value without Promise allocation.
|
|
56
|
+
*/
|
|
57
|
+
redactValueSync(value) {
|
|
58
|
+
return this.redactWith(value, (input) => this.syncRedactor(input));
|
|
59
|
+
}
|
|
60
|
+
redactWith(value, apply) {
|
|
61
|
+
if (typeof value === 'boolean') {
|
|
62
|
+
return this.ignoreBooleans ? value : apply(value);
|
|
63
|
+
}
|
|
64
|
+
if (value === null || value === undefined) {
|
|
65
|
+
return this.ignoreNullOrUndefined ? value : apply(value);
|
|
66
|
+
}
|
|
67
|
+
if (value === '' || value === 0) {
|
|
68
|
+
return this.ignoreNullOrUndefined ? value : apply(value);
|
|
69
|
+
}
|
|
70
|
+
return apply(value);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.PrimitiveRedactor = PrimitiveRedactor;
|
|
74
|
+
PrimitiveRedactor.DEFAULT_REDACTED_TEXT = 'REDACTED';
|
|
75
|
+
//# sourceMappingURL=primitiveRedactor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitiveRedactor.js","sourceRoot":"","sources":["../../src/engine/primitiveRedactor.ts"],"names":[],"mappings":";;;;;;;;;;;;AASA;;;;GAIG;AACH,MAAa,iBAAiB;IAQ5B;;;;OAIG;IACH,YAAY,MAA+B;;QACzC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;QAC1D,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAClE,IAAI,CAAC,YAAY,GAAG,MAAA,MAAM,CAAC,YAAY,mCAAI,CAAC,MAAM,CAAC,QAAQ;YACzD,CAAC,CAAC,GAAG,EAAE;gBACH,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACxF,CAAC;YACH,CAAC,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;QAEnD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACU,WAAW,CAAC,KAA0B;;YACjD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;YAED,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAc,CAAC,KAAK,CAAC,CAA+B,CAAC;QACrG,CAAC;KAAA;IAED;;OAEG;IACI,eAAe,CAAC,KAA0B;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAsB,CAAC;IAC1F,CAAC;IAEO,UAAU,CAChB,KAA0B,EAC1B,KAA+E;QAE/E,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;;AArEH,8CAsEC;AArEgB,uCAAqB,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CustomObject, JsonArray, JsonLeafValue, JsonObject, JsonValue, RedactablePrimitive, SecretSpecifierValue } from '../types';
|
|
2
|
+
import { ContainerMutation } from './objectRedactorMutation';
|
|
3
|
+
import { RuleResolver } from '../rules/ruleResolver';
|
|
4
|
+
import { SecretManager } from '../rules/secretManager';
|
|
5
|
+
import { ValuePatternMatcher } from '../rules/valuePatternMatcher';
|
|
6
|
+
import { MaybeAsync } from '../util/maybeAsync';
|
|
7
|
+
/** Shared capabilities used by array and custom-object redaction modules. */
|
|
8
|
+
export type TraversalServices = {
|
|
9
|
+
readonly asyncMode: boolean;
|
|
10
|
+
readonly ruleResolver: RuleResolver;
|
|
11
|
+
readonly secretManager: SecretManager;
|
|
12
|
+
readonly valuePatternMatcher: ValuePatternMatcher;
|
|
13
|
+
setPrimitive(container: ContainerMutation<JsonObject | JsonArray>, key: string, primitive: RedactablePrimitive): MaybeAsync<void>;
|
|
14
|
+
setPrimitiveFromValue(container: ContainerMutation<JsonObject | JsonArray>, key: string, value: JsonValue | undefined): MaybeAsync<void>;
|
|
15
|
+
setPrimitiveValueIfSecret(container: ContainerMutation<JsonObject | JsonArray>, key: string, secretKey: SecretSpecifierValue, value: JsonLeafValue | undefined, forceDeepRedaction: boolean): MaybeAsync<void>;
|
|
16
|
+
redactSecretFields(container: ContainerMutation<JsonObject | JsonArray>, forceDeepRedaction: boolean, pathSegments: Array<string | number>): MaybeAsync<void>;
|
|
17
|
+
handleCustomObject(container: ContainerMutation<JsonObject>, customObject: CustomObject): MaybeAsync<void>;
|
|
18
|
+
redactArrayInObject(array: JsonArray, key: string, forceDeepRedaction: boolean, parent: ContainerMutation<JsonObject | JsonArray>, pathSegments: Array<string | number>): MaybeAsync<void>;
|
|
19
|
+
redactAllArrayValues(array: JsonArray, forceDeepRedaction: boolean, copyOnWrite: boolean, pathSegments: Array<string | number>): MaybeAsync<JsonArray>;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=traversalServices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traversalServices.d.ts","sourceRoot":"","sources":["../../src/engine/traversalServices.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,6EAA6E;AAC7E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAClD,YAAY,CACV,SAAS,EAAE,iBAAiB,CAAC,UAAU,GAAG,SAAS,CAAC,EACpD,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,mBAAmB,GAC7B,UAAU,CAAC,IAAI,CAAC,CAAC;IACpB,qBAAqB,CACnB,SAAS,EAAE,iBAAiB,CAAC,UAAU,GAAG,SAAS,CAAC,EACpD,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,GAAG,SAAS,GAC3B,UAAU,CAAC,IAAI,CAAC,CAAC;IACpB,yBAAyB,CACvB,SAAS,EAAE,iBAAiB,CAAC,UAAU,GAAG,SAAS,CAAC,EACpD,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,oBAAoB,EAC/B,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,kBAAkB,EAAE,OAAO,GAC1B,UAAU,CAAC,IAAI,CAAC,CAAC;IACpB,kBAAkB,CAChB,SAAS,EAAE,iBAAiB,CAAC,UAAU,GAAG,SAAS,CAAC,EACpD,kBAAkB,EAAE,OAAO,EAC3B,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GACnC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3G,mBAAmB,CACjB,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,MAAM,EACX,kBAAkB,EAAE,OAAO,EAC3B,MAAM,EAAE,iBAAiB,CAAC,UAAU,GAAG,SAAS,CAAC,EACjD,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GACnC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpB,oBAAoB,CAClB,KAAK,EAAE,SAAS,EAChB,kBAAkB,EAAE,OAAO,EAC3B,WAAW,EAAE,OAAO,EACpB,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GACnC,UAAU,CAAC,SAAS,CAAC,CAAC;CAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traversalServices.js","sourceRoot":"","sources":["../../src/engine/traversalServices.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldDisposition.d.ts","sourceRoot":"","sources":["../src/fieldDisposition.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,sBAAsB,IAAI,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveFieldDisposition = void 0;
|
|
4
|
+
var ruleResolver_1 = require("./ruleResolver");
|
|
5
|
+
Object.defineProperty(exports, "resolveFieldDisposition", { enumerable: true, get: function () { return ruleResolver_1.resolvePathDisposition; } });
|
|
6
|
+
//# sourceMappingURL=fieldDisposition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldDisposition.js","sourceRoot":"","sources":["../src/fieldDisposition.ts"],"names":[],"mappings":";;;AACA,+CAAmF;AAA1E,uHAAA,sBAAsB,OAA2B"}
|
package/dist/fieldRedactor.d.ts
CHANGED
|
@@ -8,12 +8,7 @@ import { DryRunResult, FieldRedactorConfig, RedactableInput } from './types';
|
|
|
8
8
|
*/
|
|
9
9
|
export declare class FieldRedactor {
|
|
10
10
|
private readonly deepCopy;
|
|
11
|
-
private readonly
|
|
12
|
-
private readonly customObjectManager;
|
|
13
|
-
private readonly secretManager;
|
|
14
|
-
private readonly usesAsyncRedactor;
|
|
15
|
-
private readonly cloneInput;
|
|
16
|
-
private readonly valuePatternMatcher;
|
|
11
|
+
private readonly deps;
|
|
17
12
|
/** Non-fatal configuration warnings from the last construction (empty when `strict` threw). */
|
|
18
13
|
readonly configWarnings: readonly string[];
|
|
19
14
|
constructor(config?: FieldRedactorConfig);
|
|
@@ -24,22 +19,17 @@ export declare class FieldRedactor {
|
|
|
24
19
|
* Unlike `new FieldRedactor()`, omitting all rules does not default to redacting every value.
|
|
25
20
|
*/
|
|
26
21
|
static createSafe(config: FieldRedactorConfig): FieldRedactor;
|
|
27
|
-
/**
|
|
28
|
-
* Redacts a copy of the input and returns an audit report of affected paths without mutating the original.
|
|
29
|
-
*/
|
|
22
|
+
/** Redacts a copy of the input and returns an audit report of affected paths without mutating the original. */
|
|
30
23
|
dryRun<T extends RedactableInput>(value: T): Promise<DryRunResult<T>>;
|
|
31
|
-
/**
|
|
32
|
-
* Synchronous {@link FieldRedactor.dryRun} without per-field Promise overhead.
|
|
33
|
-
*/
|
|
24
|
+
/** Synchronous {@link FieldRedactor.dryRun} without per-field Promise overhead. */
|
|
34
25
|
dryRunSync<T extends RedactableInput>(value: T): DryRunResult<T>;
|
|
26
|
+
private runDryRun;
|
|
35
27
|
private emptyDryRunResult;
|
|
36
28
|
private toDryRunResult;
|
|
37
29
|
/**
|
|
38
30
|
* Conditionally redacts fields in the JSON object based on the configuration provided in the constructor and returns the
|
|
39
31
|
* redacted result.
|
|
40
32
|
* If the value is a primitive, undefined, or date, returns the value as-is.
|
|
41
|
-
* @param value The JSON value to redact. If primitive it will be resolved as-is.
|
|
42
|
-
* @returns The redacted JSON object.
|
|
43
33
|
*/
|
|
44
34
|
redact<T extends RedactableInput>(value: T): Promise<T>;
|
|
45
35
|
/**
|
|
@@ -47,19 +37,14 @@ export declare class FieldRedactor {
|
|
|
47
37
|
* Uses copy-on-write structural sharing by default so only mutated branches are cloned.
|
|
48
38
|
*/
|
|
49
39
|
redactSync<T extends RedactableInput>(value: T): T;
|
|
50
|
-
/**
|
|
51
|
-
* Conditionally redacts fields in the JSON object in place based on the configuration provided in the constructor.
|
|
52
|
-
* If the value is a primitive, undefined, or date, returns the value as-is.
|
|
53
|
-
* @param value The JSON value to redact in place. If primitive it will be resolved as-is.
|
|
54
|
-
*/
|
|
40
|
+
/** Conditionally redacts fields in the JSON object in place based on the configuration provided in the constructor. */
|
|
55
41
|
redactInPlace<T extends RedactableInput>(value: T): Promise<void>;
|
|
56
42
|
/**
|
|
57
43
|
* Synchronously redacts fields in the JSON object in place without per-field Promise overhead.
|
|
58
44
|
* Requires a `syncRedactor` or the default redactor; throws when only an async `redactor` is configured.
|
|
59
45
|
*/
|
|
60
46
|
redactInPlaceSync<T extends RedactableInput>(value: T): void;
|
|
61
|
-
private
|
|
62
|
-
private runTraversableRedactionAsync;
|
|
47
|
+
private runTraversableRedaction;
|
|
63
48
|
private toFieldRedactorError;
|
|
64
49
|
private isPrimitiveOrUndefined;
|
|
65
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactor.d.ts","sourceRoot":"","sources":["../src/fieldRedactor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fieldRedactor.d.ts","sourceRoot":"","sources":["../src/fieldRedactor.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,mBAAmB,EAInB,eAAe,EAEhB,MAAM,SAAS,CAAC;AAKjB;;;;;;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"}
|