field-redactor 1.6.2 → 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 +17 -0
- package/CONTRIBUTING.md +23 -2
- package/README.md +1 -0
- package/dist/api/fieldRedactor.d.ts +3 -3
- package/dist/api/fieldRedactor.js +4 -4
- package/dist/api/fieldRedactor.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/types.d.ts +27 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/docs/guides/migration-1.5-to-1.6.md +4 -3
- package/docs/release-notes/README.md +4 -1
- 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
package/dist/pathParsing.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parsePathRulePattern = exports.parseJsonPath = exports.parsePathSegments = void 0;
|
|
4
|
-
const pushPatternSegment = (segments, segment, coerceNumericSegments) => {
|
|
5
|
-
if (!segment) {
|
|
6
|
-
return;
|
|
7
|
-
}
|
|
8
|
-
if (coerceNumericSegments && /^\d+$/.test(segment)) {
|
|
9
|
-
segments.push(Number(segment));
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
segments.push(segment);
|
|
13
|
-
};
|
|
14
|
-
/** Parse dot/bracket path syntax shared by JSON paths and path-rule patterns. */
|
|
15
|
-
const parsePathSegments = (path, options = {}) => {
|
|
16
|
-
if (!path) {
|
|
17
|
-
return [];
|
|
18
|
-
}
|
|
19
|
-
const { allowWildcard = false, coerceNumericSegments = false } = options;
|
|
20
|
-
const segments = [];
|
|
21
|
-
let current = '';
|
|
22
|
-
for (let index = 0; index < path.length; index++) {
|
|
23
|
-
const char = path[index];
|
|
24
|
-
if (char === '.') {
|
|
25
|
-
pushPatternSegment(segments, current, coerceNumericSegments);
|
|
26
|
-
current = '';
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
if (char === '[') {
|
|
30
|
-
pushPatternSegment(segments, current, coerceNumericSegments);
|
|
31
|
-
current = '';
|
|
32
|
-
const close = path.indexOf(']', index);
|
|
33
|
-
segments.push(Number(path.slice(index + 1, close)));
|
|
34
|
-
index = close;
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
if (allowWildcard && char === '*') {
|
|
38
|
-
pushPatternSegment(segments, current, coerceNumericSegments);
|
|
39
|
-
current = '';
|
|
40
|
-
segments.push('*');
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
current += char;
|
|
44
|
-
}
|
|
45
|
-
pushPatternSegment(segments, current, coerceNumericSegments);
|
|
46
|
-
return segments;
|
|
47
|
-
};
|
|
48
|
-
exports.parsePathSegments = parsePathSegments;
|
|
49
|
-
const parseJsonPath = (path) => (0, exports.parsePathSegments)(path, { coerceNumericSegments: false });
|
|
50
|
-
exports.parseJsonPath = parseJsonPath;
|
|
51
|
-
const parsePathRulePattern = (pattern) => (0, exports.parsePathSegments)(pattern, { allowWildcard: true, coerceNumericSegments: true });
|
|
52
|
-
exports.parsePathRulePattern = parsePathRulePattern;
|
|
53
|
-
//# sourceMappingURL=pathParsing.js.map
|
package/dist/pathParsing.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pathParsing.js","sourceRoot":"","sources":["../src/pathParsing.ts"],"names":[],"mappings":";;;AAQA,MAAM,kBAAkB,GAAG,CACzB,QAA8B,EAC9B,OAAe,EACf,qBAA8B,EACxB,EAAE;IACR,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAI,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,iFAAiF;AAC1E,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,UAA4B,EAAE,EAAwB,EAAE;IACtG,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,aAAa,GAAG,KAAK,EAAE,qBAAqB,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACzE,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC;YAC7D,OAAO,GAAG,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC;YAC7D,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACpD,KAAK,GAAG,KAAK,CAAC;YACd,SAAS;QACX,CAAC;QAED,IAAI,aAAa,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAClC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC;YAC7D,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,SAAS;QACX,CAAC;QAED,OAAO,IAAI,IAAI,CAAC;IAClB,CAAC;IAED,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAvCW,QAAA,iBAAiB,qBAuC5B;AAEK,MAAM,aAAa,GAAG,CAAC,IAAY,EAAqB,EAAE,CAC/D,IAAA,yBAAiB,EAAC,IAAI,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAsB,CAAC;AADpE,QAAA,aAAa,iBACuD;AAE1E,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAwB,EAAE,CAC5E,IAAA,yBAAiB,EAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AADtE,QAAA,oBAAoB,wBACkD"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { PathPatternSegment } from './pathParsing';
|
|
2
|
-
import { PathRule, PathRuleMode } from './types';
|
|
3
|
-
type CompiledPathRule = {
|
|
4
|
-
segments: PathPatternSegment[];
|
|
5
|
-
mode: PathRuleMode;
|
|
6
|
-
path: string;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Matches configured path rules against traversal paths. Longest matching rule wins.
|
|
10
|
-
*/
|
|
11
|
-
export declare class PathRuleMatcher {
|
|
12
|
-
private readonly rules;
|
|
13
|
-
constructor(pathRules?: PathRule[]);
|
|
14
|
-
getMatchingRule(path: Array<string | number>): CompiledPathRule | undefined;
|
|
15
|
-
hasRules(): boolean;
|
|
16
|
-
}
|
|
17
|
-
export { parsePathRulePattern } from './pathParsing';
|
|
18
|
-
export declare const EMPTY_PATH_RULE_MATCHER: PathRuleMatcher;
|
|
19
|
-
//# sourceMappingURL=pathRuleMatcher.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pathRuleMatcher.d.ts","sourceRoot":"","sources":["../src/pathRuleMatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEjD,KAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAUF;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAE/B,SAAS,CAAC,EAAE,QAAQ,EAAE;IAoBlC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,gBAAgB,GAAG,SAAS;IAI3E,QAAQ,IAAI,OAAO;CAGpB;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,eAAO,MAAM,uBAAuB,iBAAwB,CAAC"}
|
package/dist/pathRuleMatcher.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EMPTY_PATH_RULE_MATCHER = exports.parsePathRulePattern = exports.PathRuleMatcher = void 0;
|
|
4
|
-
const pathParsing_1 = require("./pathParsing");
|
|
5
|
-
const segmentsMatch = (rule, path) => {
|
|
6
|
-
if (rule.length !== path.length) {
|
|
7
|
-
return false;
|
|
8
|
-
}
|
|
9
|
-
return rule.every((segment, index) => segment === '*' || segment === path[index]);
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Matches configured path rules against traversal paths. Longest matching rule wins.
|
|
13
|
-
*/
|
|
14
|
-
class PathRuleMatcher {
|
|
15
|
-
constructor(pathRules) {
|
|
16
|
-
this.rules = (pathRules !== null && pathRules !== void 0 ? pathRules : [])
|
|
17
|
-
.map((rule) => ({
|
|
18
|
-
segments: (0, pathParsing_1.parsePathRulePattern)(rule.path),
|
|
19
|
-
mode: rule.mode,
|
|
20
|
-
path: rule.path
|
|
21
|
-
}))
|
|
22
|
-
.filter((rule) => rule.segments.length > 0)
|
|
23
|
-
.sort((left, right) => {
|
|
24
|
-
if (right.segments.length !== left.segments.length) {
|
|
25
|
-
return right.segments.length - left.segments.length;
|
|
26
|
-
}
|
|
27
|
-
const wildcardCount = (segments) => segments.filter((segment) => segment === '*').length;
|
|
28
|
-
return wildcardCount(left.segments) - wildcardCount(right.segments);
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
getMatchingRule(path) {
|
|
32
|
-
return this.rules.find((rule) => segmentsMatch(rule.segments, path));
|
|
33
|
-
}
|
|
34
|
-
hasRules() {
|
|
35
|
-
return this.rules.length > 0;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
exports.PathRuleMatcher = PathRuleMatcher;
|
|
39
|
-
var pathParsing_2 = require("./pathParsing");
|
|
40
|
-
Object.defineProperty(exports, "parsePathRulePattern", { enumerable: true, get: function () { return pathParsing_2.parsePathRulePattern; } });
|
|
41
|
-
exports.EMPTY_PATH_RULE_MATCHER = new PathRuleMatcher();
|
|
42
|
-
//# sourceMappingURL=pathRuleMatcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pathRuleMatcher.js","sourceRoot":"","sources":["../src/pathRuleMatcher.ts"],"names":[],"mappings":";;;AAAA,+CAAyE;AASzE,MAAM,aAAa,GAAG,CAAC,IAA0B,EAAE,IAA4B,EAAW,EAAE;IAC1F,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACpF,CAAC,CAAC;AAEF;;GAEG;AACH,MAAa,eAAe;IAG1B,YAAY,SAAsB;QAChC,IAAI,CAAC,KAAK,GAAG,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC;aAC3B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,QAAQ,EAAE,IAAA,kCAAoB,EAAC,IAAI,CAAC,IAAI,CAAC;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;aACF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;aAC1C,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACpB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACnD,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtD,CAAC;YAED,MAAM,aAAa,GAAG,CAAC,QAA8B,EAAU,EAAE,CAC/D,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;YAEvD,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,eAAe,CAAC,IAA4B;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,CAAC;CACF;AA9BD,0CA8BC;AAED,6CAAqD;AAA5C,mHAAA,oBAAoB,OAAA;AAEhB,QAAA,uBAAuB,GAAG,IAAI,eAAe,EAAE,CAAC"}
|
package/dist/presets.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { FieldRedactorConfig } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Opinionated configuration presets derived from integration test fixtures.
|
|
4
|
-
* Spread into {@link FieldRedactor} or {@link FieldRedactor.createSafe} config and extend as needed.
|
|
5
|
-
*/
|
|
6
|
-
export declare const presets: {
|
|
7
|
-
/**
|
|
8
|
-
* `{ name, type, value }` metadata entries with sibling-key redaction and auth key removal.
|
|
9
|
-
* Pair with your own `secretKeys` for field names that should trigger redaction.
|
|
10
|
-
*/
|
|
11
|
-
loggingMetadata(): Pick<FieldRedactorConfig, "customObjects" | "deleteSecretKeys">;
|
|
12
|
-
/**
|
|
13
|
-
* Application log preset from `realExamples.spec.ts`: common PII field patterns,
|
|
14
|
-
* auth key removal, and `{ name, value }` event metadata schemas.
|
|
15
|
-
*/
|
|
16
|
-
applicationLogging(): Pick<FieldRedactorConfig, "secretKeys" | "deleteSecretKeys" | "customObjects">;
|
|
17
|
-
/**
|
|
18
|
-
* `{ key, value }` shaped entries (blanket coverage small schema).
|
|
19
|
-
*/
|
|
20
|
-
keyValueEntries(): Pick<FieldRedactorConfig, "customObjects">;
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=presets.d.ts.map
|
package/dist/presets.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAwBnF;;;GAGG;AACH,eAAO,MAAM,OAAO;IAClB;;;OAGG;uBACgB,IAAI,CAAC,mBAAmB,EAAE,eAAe,GAAG,kBAAkB,CAAC;IAOlF;;;OAGG;0BACmB,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,kBAAkB,GAAG,eAAe,CAAC;IAQpG;;OAEG;uBACgB,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC;CAK9D,CAAC"}
|
package/dist/presets.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.presets = void 0;
|
|
4
|
-
const types_1 = require("./types");
|
|
5
|
-
const AUTH_KEY_REMOVAL = {
|
|
6
|
-
deleteSecretKeys: [/authKey/i]
|
|
7
|
-
};
|
|
8
|
-
const NAME_VALUE_EVENT_SCHEMA = {
|
|
9
|
-
name: types_1.CustomObjectMatchType.Ignore,
|
|
10
|
-
value: 'name'
|
|
11
|
-
};
|
|
12
|
-
const NAME_TYPE_VALUE_METADATA_SCHEMA = {
|
|
13
|
-
name: types_1.CustomObjectMatchType.Ignore,
|
|
14
|
-
type: types_1.CustomObjectMatchType.Ignore,
|
|
15
|
-
value: 'name'
|
|
16
|
-
};
|
|
17
|
-
const KEY_VALUE_ENTRY_SCHEMA = {
|
|
18
|
-
key: types_1.CustomObjectMatchType.Ignore,
|
|
19
|
-
value: 'key'
|
|
20
|
-
};
|
|
21
|
-
const APPLICATION_LOG_SECRET_KEYS = [/email/i, /mdn/i, /phone/i, /.+name$/i, /auth/i];
|
|
22
|
-
/**
|
|
23
|
-
* Opinionated configuration presets derived from integration test fixtures.
|
|
24
|
-
* Spread into {@link FieldRedactor} or {@link FieldRedactor.createSafe} config and extend as needed.
|
|
25
|
-
*/
|
|
26
|
-
exports.presets = {
|
|
27
|
-
/**
|
|
28
|
-
* `{ name, type, value }` metadata entries with sibling-key redaction and auth key removal.
|
|
29
|
-
* Pair with your own `secretKeys` for field names that should trigger redaction.
|
|
30
|
-
*/
|
|
31
|
-
loggingMetadata() {
|
|
32
|
-
return Object.assign(Object.assign({}, AUTH_KEY_REMOVAL), { customObjects: [NAME_TYPE_VALUE_METADATA_SCHEMA] });
|
|
33
|
-
},
|
|
34
|
-
/**
|
|
35
|
-
* Application log preset from `realExamples.spec.ts`: common PII field patterns,
|
|
36
|
-
* auth key removal, and `{ name, value }` event metadata schemas.
|
|
37
|
-
*/
|
|
38
|
-
applicationLogging() {
|
|
39
|
-
return Object.assign(Object.assign({ secretKeys: APPLICATION_LOG_SECRET_KEYS }, AUTH_KEY_REMOVAL), { customObjects: [NAME_VALUE_EVENT_SCHEMA] });
|
|
40
|
-
},
|
|
41
|
-
/**
|
|
42
|
-
* `{ key, value }` shaped entries (blanket coverage small schema).
|
|
43
|
-
*/
|
|
44
|
-
keyValueEntries() {
|
|
45
|
-
return {
|
|
46
|
-
customObjects: [KEY_VALUE_ENTRY_SCHEMA]
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
//# sourceMappingURL=presets.js.map
|
package/dist/presets.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":";;;AAAA,mCAAmF;AAEnF,MAAM,gBAAgB,GAAkD;IACtE,gBAAgB,EAAE,CAAC,UAAU,CAAC;CAC/B,CAAC;AAEF,MAAM,uBAAuB,GAAiB;IAC5C,IAAI,EAAE,6BAAqB,CAAC,MAAM;IAClC,KAAK,EAAE,MAAM;CACd,CAAC;AAEF,MAAM,+BAA+B,GAAiB;IACpD,IAAI,EAAE,6BAAqB,CAAC,MAAM;IAClC,IAAI,EAAE,6BAAqB,CAAC,MAAM;IAClC,KAAK,EAAE,MAAM;CACd,CAAC;AAEF,MAAM,sBAAsB,GAAiB;IAC3C,GAAG,EAAE,6BAAqB,CAAC,MAAM;IACjC,KAAK,EAAE,KAAK;CACb,CAAC;AAEF,MAAM,2BAA2B,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAEtF;;;GAGG;AACU,QAAA,OAAO,GAAG;IACrB;;;OAGG;IACH,eAAe;QACb,uCACK,gBAAgB,KACnB,aAAa,EAAE,CAAC,+BAA+B,CAAC,IAChD;IACJ,CAAC;IAED;;;OAGG;IACH,kBAAkB;QAChB,qCACE,UAAU,EAAE,2BAA2B,IACpC,gBAAgB,KACnB,aAAa,EAAE,CAAC,uBAAuB,CAAC,IACxC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO;YACL,aAAa,EAAE,CAAC,sBAAsB,CAAC;SACxC,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"primitiveRedactor.d.ts","sourceRoot":"","sources":["../src/primitiveRedactor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EAIlB,MAAM,SAAS,CAAC;AAEjB;;;;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"}
|
|
@@ -1,75 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"primitiveRedactor.js","sourceRoot":"","sources":["../src/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"}
|
package/dist/redactionRules.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { CustomObject, FieldRedactorConfig } from './types';
|
|
2
|
-
export declare const SECRET_REGEX_FIELDS: readonly ["secretKeys", "deepSecretKeys", "fullSecretKeys", "deleteSecretKeys"];
|
|
3
|
-
export declare const VALUE_PATTERN_FIELDS: readonly ["valuePatterns"];
|
|
4
|
-
export declare const PASS_KEY_FIELDS: readonly ["passKeys"];
|
|
5
|
-
export declare const REGEX_ARRAY_CONFIG_FIELDS: readonly ["secretKeys", "deepSecretKeys", "fullSecretKeys", "deleteSecretKeys", "valuePatterns", "passKeys"];
|
|
6
|
-
export type SecretRegexField = (typeof SECRET_REGEX_FIELDS)[number];
|
|
7
|
-
export type RegexArrayConfigField = (typeof REGEX_ARRAY_CONFIG_FIELDS)[number];
|
|
8
|
-
export declare const RULE_LIST_FIELDS: readonly ["secretKeys", "deepSecretKeys", "fullSecretKeys", "deleteSecretKeys", "valuePatterns", "passKeys", "customObjects"];
|
|
9
|
-
export declare const hasExplicitRedactionRules: (config?: FieldRedactorConfig) => boolean;
|
|
10
|
-
/**
|
|
11
|
-
* When only value patterns are configured, shallow key matching must be disabled (`secretKeys: []`)
|
|
12
|
-
* so the legacy default does not redact every field.
|
|
13
|
-
*/
|
|
14
|
-
export declare const resolveSecretKeys: (config?: FieldRedactorConfig) => RegExp[] | undefined;
|
|
15
|
-
export declare const appendRegExpArray: <F extends RegexArrayConfigField>(config: FieldRedactorConfig, field: F, patterns: RegExp[]) => void;
|
|
16
|
-
export type RegisteredSchema = {
|
|
17
|
-
object: CustomObject;
|
|
18
|
-
name?: string;
|
|
19
|
-
};
|
|
20
|
-
export declare const finalizeRegisteredSchemas: (schemas: RegisteredSchema[]) => Pick<FieldRedactorConfig, "customObjects" | "schemaNames">;
|
|
21
|
-
export declare const mergePartialConfig: (target: FieldRedactorConfig, schemas: RegisteredSchema[], partial: Partial<FieldRedactorConfig>) => void;
|
|
22
|
-
//# sourceMappingURL=redactionRules.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redactionRules.d.ts","sourceRoot":"","sources":["../src/redactionRules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE5D,eAAO,MAAM,mBAAmB,iFAAkF,CAAC;AAEnH,eAAO,MAAM,oBAAoB,4BAA6B,CAAC;AAE/D,eAAO,MAAM,eAAe,uBAAwB,CAAC;AAErD,eAAO,MAAM,yBAAyB,8GAAiF,CAAC;AAExH,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,+HAA2D,CAAC;AAIzF,eAAO,MAAM,yBAAyB,YAAa,mBAAmB,KAAG,OAEpC,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,YAAa,mBAAmB,KAAG,MAAM,EAAE,GAAG,SAmB3E,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"}
|
package/dist/redactionRules.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mergePartialConfig = exports.finalizeRegisteredSchemas = exports.appendRegExpArray = exports.resolveSecretKeys = exports.hasExplicitRedactionRules = exports.RULE_LIST_FIELDS = exports.REGEX_ARRAY_CONFIG_FIELDS = exports.PASS_KEY_FIELDS = exports.VALUE_PATTERN_FIELDS = exports.SECRET_REGEX_FIELDS = void 0;
|
|
4
|
-
exports.SECRET_REGEX_FIELDS = ['secretKeys', 'deepSecretKeys', 'fullSecretKeys', 'deleteSecretKeys'];
|
|
5
|
-
exports.VALUE_PATTERN_FIELDS = ['valuePatterns'];
|
|
6
|
-
exports.PASS_KEY_FIELDS = ['passKeys'];
|
|
7
|
-
exports.REGEX_ARRAY_CONFIG_FIELDS = [...exports.SECRET_REGEX_FIELDS, ...exports.VALUE_PATTERN_FIELDS, ...exports.PASS_KEY_FIELDS];
|
|
8
|
-
exports.RULE_LIST_FIELDS = [...exports.REGEX_ARRAY_CONFIG_FIELDS, 'customObjects'];
|
|
9
|
-
const hasNonEmptyArray = (value) => value !== undefined && value.length > 0;
|
|
10
|
-
const hasExplicitRedactionRules = (config) => exports.RULE_LIST_FIELDS.some((field) => hasNonEmptyArray(config === null || config === void 0 ? void 0 : config[field])) ||
|
|
11
|
-
hasNonEmptyArray(config === null || config === void 0 ? void 0 : config.pathRules);
|
|
12
|
-
exports.hasExplicitRedactionRules = hasExplicitRedactionRules;
|
|
13
|
-
/**
|
|
14
|
-
* When only value patterns are configured, shallow key matching must be disabled (`secretKeys: []`)
|
|
15
|
-
* so the legacy default does not redact every field.
|
|
16
|
-
*/
|
|
17
|
-
const resolveSecretKeys = (config) => {
|
|
18
|
-
const { secretKeys, deepSecretKeys, fullSecretKeys, deleteSecretKeys, customObjects, valuePatterns, pathRules } = config !== null && config !== void 0 ? config : {};
|
|
19
|
-
if (secretKeys !== undefined) {
|
|
20
|
-
return secretKeys;
|
|
21
|
-
}
|
|
22
|
-
if (((valuePatterns === null || valuePatterns === void 0 ? void 0 : valuePatterns.length) || (pathRules === null || pathRules === void 0 ? void 0 : pathRules.length)) &&
|
|
23
|
-
!(deepSecretKeys === null || deepSecretKeys === void 0 ? void 0 : deepSecretKeys.length) &&
|
|
24
|
-
!(fullSecretKeys === null || fullSecretKeys === void 0 ? void 0 : fullSecretKeys.length) &&
|
|
25
|
-
!(deleteSecretKeys === null || deleteSecretKeys === void 0 ? void 0 : deleteSecretKeys.length) &&
|
|
26
|
-
!(customObjects === null || customObjects === void 0 ? void 0 : customObjects.length)) {
|
|
27
|
-
return [];
|
|
28
|
-
}
|
|
29
|
-
return undefined;
|
|
30
|
-
};
|
|
31
|
-
exports.resolveSecretKeys = resolveSecretKeys;
|
|
32
|
-
const appendRegExpArray = (config, field, patterns) => {
|
|
33
|
-
var _a;
|
|
34
|
-
config[field] = [...((_a = config[field]) !== null && _a !== void 0 ? _a : []), ...patterns];
|
|
35
|
-
};
|
|
36
|
-
exports.appendRegExpArray = appendRegExpArray;
|
|
37
|
-
const finalizeRegisteredSchemas = (schemas) => {
|
|
38
|
-
if (schemas.length === 0) {
|
|
39
|
-
return {};
|
|
40
|
-
}
|
|
41
|
-
const customObjects = schemas.map((entry) => entry.object);
|
|
42
|
-
const schemaNames = schemas.map((entry) => entry.name);
|
|
43
|
-
return schemaNames.some((name) => name !== undefined) ? { customObjects, schemaNames } : { customObjects };
|
|
44
|
-
};
|
|
45
|
-
exports.finalizeRegisteredSchemas = finalizeRegisteredSchemas;
|
|
46
|
-
const PRESET_SCALAR_FIELDS = [
|
|
47
|
-
'redactor',
|
|
48
|
-
'syncRedactor',
|
|
49
|
-
'ignoreBooleans',
|
|
50
|
-
'ignoreNullOrUndefined',
|
|
51
|
-
'cloneInput',
|
|
52
|
-
'strict',
|
|
53
|
-
'onConfigWarning'
|
|
54
|
-
];
|
|
55
|
-
const applyUnsetScalars = (target, partial) => {
|
|
56
|
-
for (const field of PRESET_SCALAR_FIELDS) {
|
|
57
|
-
const value = partial[field];
|
|
58
|
-
if (value !== undefined && target[field] === undefined) {
|
|
59
|
-
Object.assign(target, { [field]: value });
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
const mergePartialConfig = (target, schemas, partial) => {
|
|
64
|
-
var _a, _b;
|
|
65
|
-
for (const field of exports.REGEX_ARRAY_CONFIG_FIELDS) {
|
|
66
|
-
if ((_a = partial[field]) === null || _a === void 0 ? void 0 : _a.length) {
|
|
67
|
-
(0, exports.appendRegExpArray)(target, field, partial[field]);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
(_b = partial.customObjects) === null || _b === void 0 ? void 0 : _b.forEach((object) => schemas.push({ object }));
|
|
71
|
-
applyUnsetScalars(target, partial);
|
|
72
|
-
};
|
|
73
|
-
exports.mergePartialConfig = mergePartialConfig;
|
|
74
|
-
//# sourceMappingURL=redactionRules.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redactionRules.js","sourceRoot":"","sources":["../src/redactionRules.ts"],"names":[],"mappings":"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"}
|
package/dist/regexUtils.d.ts
DELETED
package/dist/regexUtils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"regexUtils.d.ts","sourceRoot":"","sources":["../src/regexUtils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,UAAW,MAAM,KAAG,MAA2C,CAAC;AAEzF,eAAO,MAAM,aAAa,UAAW,MAAM,KAAG,MAA2C,CAAC"}
|
package/dist/regexUtils.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.regexIdentity = exports.formatRegExp = void 0;
|
|
4
|
-
const formatRegExp = (regex) => `/${regex.source}/${regex.flags}`;
|
|
5
|
-
exports.formatRegExp = formatRegExp;
|
|
6
|
-
const regexIdentity = (regex) => `${regex.source}\0${regex.flags}`;
|
|
7
|
-
exports.regexIdentity = regexIdentity;
|
|
8
|
-
//# sourceMappingURL=regexUtils.js.map
|
package/dist/regexUtils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"regexUtils.js","sourceRoot":"","sources":["../src/regexUtils.ts"],"names":[],"mappings":";;;AAAO,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;AAA5E,QAAA,YAAY,gBAAgE;AAElF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;AAA7E,QAAA,aAAa,iBAAgE"}
|
package/dist/ruleResolver.d.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { CustomObjectManager } from './customObjectManager';
|
|
2
|
-
import { PathRuleMatcher } from './pathRuleMatcher';
|
|
3
|
-
import { SecretManager } from './secretManager';
|
|
4
|
-
import { ValuePatternMatcher } from './valuePatternMatcher';
|
|
5
|
-
import { CustomObject, DryRunPathRule, JsonValue, PathRule, SecretSpecifierValue } from './types';
|
|
6
|
-
export type KeyRule = 'remove' | 'opaque' | 'deep' | 'shallow';
|
|
7
|
-
export type KeyRuleLabel = KeyRule | 'default';
|
|
8
|
-
export type FieldDisposition = {
|
|
9
|
-
action: 'default';
|
|
10
|
-
} | {
|
|
11
|
-
action: 'skip';
|
|
12
|
-
} | {
|
|
13
|
-
action: 'remove';
|
|
14
|
-
} | {
|
|
15
|
-
action: 'opaque';
|
|
16
|
-
} | {
|
|
17
|
-
action: 'deep';
|
|
18
|
-
} | {
|
|
19
|
-
action: 'shallow';
|
|
20
|
-
} | {
|
|
21
|
-
action: 'pass-key-recurse';
|
|
22
|
-
};
|
|
23
|
-
type AttributionContext = {
|
|
24
|
-
before: JsonValue | undefined;
|
|
25
|
-
path: string;
|
|
26
|
-
segments: Array<string | number>;
|
|
27
|
-
objectKeys: string[];
|
|
28
|
-
};
|
|
29
|
-
/** Shared path-rule + pass-key disposition used during traversal. */
|
|
30
|
-
export declare const resolvePathDisposition: (secretManager: SecretManager, pathRuleMatcher: PathRuleMatcher, key: string, pathSegments: Array<string | number>, forceDeepRedaction: boolean) => FieldDisposition;
|
|
31
|
-
/**
|
|
32
|
-
* Single source of truth for field-level rule precedence shared by traversal and dry-run attribution.
|
|
33
|
-
* Precedence: schema → path rule → enclosing opaque/deep key → leaf key rule → value pattern → default.
|
|
34
|
-
*/
|
|
35
|
-
export declare class RuleResolver {
|
|
36
|
-
private readonly secretManager;
|
|
37
|
-
private readonly pathRuleMatcher;
|
|
38
|
-
private readonly valuePatternMatcher;
|
|
39
|
-
private readonly customObjectManager;
|
|
40
|
-
constructor(secretManager: SecretManager, pathRuleMatcher: PathRuleMatcher, valuePatternMatcher: ValuePatternMatcher, customObjectManager: CustomObjectManager);
|
|
41
|
-
resolvePathDisposition(pathSegments: Array<string | number>, key: string, forceDeepRedaction: boolean): FieldDisposition;
|
|
42
|
-
getMatchingPathRule(segments: Array<string | number>): PathRule | undefined;
|
|
43
|
-
shouldRemoveByKey(key: SecretSpecifierValue): boolean;
|
|
44
|
-
shouldOpaqueByKey(key: SecretSpecifierValue): boolean;
|
|
45
|
-
shouldTraverseContainerByKey(key: SecretSpecifierValue, forceDeepRedaction: boolean): boolean;
|
|
46
|
-
containerForceDeepRedaction(key: SecretSpecifierValue, forceDeepRedaction: boolean): boolean;
|
|
47
|
-
nestedObjectForceDeepRedaction(key: SecretSpecifierValue, forceDeepRedaction: boolean): boolean;
|
|
48
|
-
attributeKeyRule(path: string, action: DryRunPathRule['action'], key: SecretSpecifierValue): DryRunPathRule;
|
|
49
|
-
findEnclosingOpaqueOrDeepKey(objectKeys: string[]): {
|
|
50
|
-
key: string;
|
|
51
|
-
rule: 'opaque' | 'deep';
|
|
52
|
-
} | undefined;
|
|
53
|
-
resolveSchemaAttribution(context: AttributionContext): DryRunPathRule | undefined;
|
|
54
|
-
resolvePathRuleAttribution(context: AttributionContext): DryRunPathRule | undefined;
|
|
55
|
-
resolveEnclosingKeyAttribution(context: AttributionContext): DryRunPathRule | undefined;
|
|
56
|
-
resolveLeafKeyAttribution(context: AttributionContext): DryRunPathRule | undefined;
|
|
57
|
-
resolveValuePatternAttribution(context: AttributionContext): DryRunPathRule | undefined;
|
|
58
|
-
attributeRedactPath(before: JsonValue | undefined, path: string): DryRunPathRule;
|
|
59
|
-
attributeDeletePath(before: JsonValue | undefined, path: string): DryRunPathRule;
|
|
60
|
-
/** Returns the matching schema when a shaped object should be handled at this node. */
|
|
61
|
-
getMatchingSchema(value: JsonValue): CustomObject | undefined;
|
|
62
|
-
}
|
|
63
|
-
export declare const buildPathRules: (before: JsonValue | undefined, redactedPaths: readonly string[], deletedPaths: readonly string[], resolver: RuleResolver) => DryRunPathRule[];
|
|
64
|
-
export {};
|
|
65
|
-
//# sourceMappingURL=ruleResolver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ruleResolver.d.ts","sourceRoot":"","sources":["../src/ruleResolver.ts"],"names":[],"mappings":"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"}
|