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/ruleResolver.js
DELETED
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildPathRules = exports.RuleResolver = exports.resolvePathDisposition = void 0;
|
|
4
|
-
const objectRedactorHelpers_1 = require("./objectRedactorHelpers");
|
|
5
|
-
const jsonWalk_1 = require("./jsonWalk");
|
|
6
|
-
const types_1 = require("./types");
|
|
7
|
-
const objectKeysFromPath = (segments) => segments.filter((segment) => typeof segment === 'string');
|
|
8
|
-
const toPathRule = (path, action, rule, extras = {}) => (Object.assign({ path, action, rule }, extras));
|
|
9
|
-
const patternForKey = (secretManager, key, rule) => secretManager.getKeyRulePattern(key, rule);
|
|
10
|
-
/** Shared path-rule + pass-key disposition used during traversal. */
|
|
11
|
-
const resolvePathDisposition = (secretManager, pathRuleMatcher, key, pathSegments, forceDeepRedaction) => {
|
|
12
|
-
const pathRule = pathRuleMatcher.getMatchingRule([...pathSegments, key]);
|
|
13
|
-
if ((pathRule === null || pathRule === void 0 ? void 0 : pathRule.mode) === 'pass') {
|
|
14
|
-
return { action: 'skip' };
|
|
15
|
-
}
|
|
16
|
-
if ((pathRule === null || pathRule === void 0 ? void 0 : pathRule.mode) === 'remove') {
|
|
17
|
-
return { action: 'remove' };
|
|
18
|
-
}
|
|
19
|
-
if ((pathRule === null || pathRule === void 0 ? void 0 : pathRule.mode) === 'opaque') {
|
|
20
|
-
return { action: 'opaque' };
|
|
21
|
-
}
|
|
22
|
-
if ((pathRule === null || pathRule === void 0 ? void 0 : pathRule.mode) === 'deep') {
|
|
23
|
-
return { action: 'deep' };
|
|
24
|
-
}
|
|
25
|
-
if ((pathRule === null || pathRule === void 0 ? void 0 : pathRule.mode) === 'shallow') {
|
|
26
|
-
return { action: 'shallow' };
|
|
27
|
-
}
|
|
28
|
-
if (forceDeepRedaction && secretManager.isPassKey(key)) {
|
|
29
|
-
return { action: 'pass-key-recurse' };
|
|
30
|
-
}
|
|
31
|
-
return { action: 'default' };
|
|
32
|
-
};
|
|
33
|
-
exports.resolvePathDisposition = resolvePathDisposition;
|
|
34
|
-
/**
|
|
35
|
-
* Single source of truth for field-level rule precedence shared by traversal and dry-run attribution.
|
|
36
|
-
* Precedence: schema → path rule → enclosing opaque/deep key → leaf key rule → value pattern → default.
|
|
37
|
-
*/
|
|
38
|
-
class RuleResolver {
|
|
39
|
-
constructor(secretManager, pathRuleMatcher, valuePatternMatcher, customObjectManager) {
|
|
40
|
-
this.secretManager = secretManager;
|
|
41
|
-
this.pathRuleMatcher = pathRuleMatcher;
|
|
42
|
-
this.valuePatternMatcher = valuePatternMatcher;
|
|
43
|
-
this.customObjectManager = customObjectManager;
|
|
44
|
-
}
|
|
45
|
-
resolvePathDisposition(pathSegments, key, forceDeepRedaction) {
|
|
46
|
-
return (0, exports.resolvePathDisposition)(this.secretManager, this.pathRuleMatcher, key, pathSegments, forceDeepRedaction);
|
|
47
|
-
}
|
|
48
|
-
getMatchingPathRule(segments) {
|
|
49
|
-
const match = this.pathRuleMatcher.getMatchingRule(segments);
|
|
50
|
-
return (match === null || match === void 0 ? void 0 : match.mode) === 'pass' ? undefined : match;
|
|
51
|
-
}
|
|
52
|
-
shouldRemoveByKey(key) {
|
|
53
|
-
return this.secretManager.isDeleteSecretKey(key);
|
|
54
|
-
}
|
|
55
|
-
shouldOpaqueByKey(key) {
|
|
56
|
-
return this.secretManager.isFullSecretKey(key);
|
|
57
|
-
}
|
|
58
|
-
shouldTraverseContainerByKey(key, forceDeepRedaction) {
|
|
59
|
-
return (this.secretManager.isSecretKey(key) ||
|
|
60
|
-
this.secretManager.isDeepSecretKey(key) ||
|
|
61
|
-
forceDeepRedaction);
|
|
62
|
-
}
|
|
63
|
-
containerForceDeepRedaction(key, forceDeepRedaction) {
|
|
64
|
-
return forceDeepRedaction || this.secretManager.isDeepSecretKey(key);
|
|
65
|
-
}
|
|
66
|
-
nestedObjectForceDeepRedaction(key, forceDeepRedaction) {
|
|
67
|
-
return forceDeepRedaction || this.secretManager.isDeepSecretKey(key);
|
|
68
|
-
}
|
|
69
|
-
attributeKeyRule(path, action, key) {
|
|
70
|
-
var _a;
|
|
71
|
-
const rule = (_a = this.secretManager.classifyKeyRule(key)) !== null && _a !== void 0 ? _a : 'default';
|
|
72
|
-
if (rule === 'default') {
|
|
73
|
-
return toPathRule(path, action, rule);
|
|
74
|
-
}
|
|
75
|
-
return toPathRule(path, action, rule, { pattern: patternForKey(this.secretManager, key, rule) });
|
|
76
|
-
}
|
|
77
|
-
findEnclosingOpaqueOrDeepKey(objectKeys) {
|
|
78
|
-
for (let index = objectKeys.length - 2; index >= 0; index--) {
|
|
79
|
-
const key = objectKeys[index];
|
|
80
|
-
const rule = this.secretManager.classifyKeyRule(key);
|
|
81
|
-
if (rule === 'opaque' || rule === 'deep') {
|
|
82
|
-
return { key, rule };
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return undefined;
|
|
86
|
-
}
|
|
87
|
-
resolveSchemaAttribution(context) {
|
|
88
|
-
const { parent, leaf } = (0, jsonWalk_1.getParentContext)(context.before, context.segments);
|
|
89
|
-
if (!(0, types_1.isJsonObject)(parent) || typeof leaf !== 'string') {
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
const schema = this.customObjectManager.getMatchingCustomObject(parent);
|
|
93
|
-
if (!schema || !(leaf in schema)) {
|
|
94
|
-
return undefined;
|
|
95
|
-
}
|
|
96
|
-
let pattern;
|
|
97
|
-
if (typeof schema[leaf] === 'string') {
|
|
98
|
-
const siblingSpecifier = (0, objectRedactorHelpers_1.getStringSpecifiedCustomObjectSecretKeyValueIfExists)(parent, schema, leaf);
|
|
99
|
-
if (siblingSpecifier !== undefined) {
|
|
100
|
-
const siblingRule = this.secretManager.classifyKeyRule(siblingSpecifier);
|
|
101
|
-
if (siblingRule && siblingRule !== 'default') {
|
|
102
|
-
pattern = patternForKey(this.secretManager, siblingSpecifier, siblingRule);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return toPathRule(context.path, 'redact', 'schema', Object.assign(Object.assign({}, this.customObjectManager.getSchemaMetadata(schema)), (pattern ? { pattern } : {})));
|
|
107
|
-
}
|
|
108
|
-
resolvePathRuleAttribution(context) {
|
|
109
|
-
const match = this.getMatchingPathRule(context.segments);
|
|
110
|
-
if (!match) {
|
|
111
|
-
return undefined;
|
|
112
|
-
}
|
|
113
|
-
if (match.mode === 'remove') {
|
|
114
|
-
return toPathRule(context.path, 'delete', 'remove', { pattern: match.path });
|
|
115
|
-
}
|
|
116
|
-
return toPathRule(context.path, 'redact', match.mode, { pattern: match.path });
|
|
117
|
-
}
|
|
118
|
-
resolveEnclosingKeyAttribution(context) {
|
|
119
|
-
const enclosing = this.findEnclosingOpaqueOrDeepKey(context.objectKeys);
|
|
120
|
-
if (!enclosing) {
|
|
121
|
-
return undefined;
|
|
122
|
-
}
|
|
123
|
-
return toPathRule(context.path, 'redact', enclosing.rule, {
|
|
124
|
-
pattern: patternForKey(this.secretManager, enclosing.key, enclosing.rule)
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
resolveLeafKeyAttribution(context) {
|
|
128
|
-
const leafKey = context.objectKeys.at(-1);
|
|
129
|
-
if (!leafKey || !this.secretManager.classifyKeyRule(leafKey)) {
|
|
130
|
-
return undefined;
|
|
131
|
-
}
|
|
132
|
-
return this.attributeKeyRule(context.path, 'redact', leafKey);
|
|
133
|
-
}
|
|
134
|
-
resolveValuePatternAttribution(context) {
|
|
135
|
-
const value = (0, jsonWalk_1.getJsonValueAtPath)(context.before, context.segments);
|
|
136
|
-
if (value === undefined || (typeof value !== 'string' && typeof value !== 'number')) {
|
|
137
|
-
return undefined;
|
|
138
|
-
}
|
|
139
|
-
const match = this.valuePatternMatcher.findMatching((0, objectRedactorHelpers_1.toRedactablePrimitive)(value));
|
|
140
|
-
if (!match) {
|
|
141
|
-
return undefined;
|
|
142
|
-
}
|
|
143
|
-
return toPathRule(context.path, 'redact', 'value', {
|
|
144
|
-
pattern: this.valuePatternMatcher.formatPattern(match)
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
attributeRedactPath(before, path) {
|
|
148
|
-
const segments = (0, jsonWalk_1.parseJsonPath)(path);
|
|
149
|
-
const context = {
|
|
150
|
-
before,
|
|
151
|
-
path,
|
|
152
|
-
segments,
|
|
153
|
-
objectKeys: objectKeysFromPath(segments)
|
|
154
|
-
};
|
|
155
|
-
const resolvers = [
|
|
156
|
-
() => this.resolveSchemaAttribution(context),
|
|
157
|
-
() => this.resolvePathRuleAttribution(context),
|
|
158
|
-
() => this.resolveEnclosingKeyAttribution(context),
|
|
159
|
-
() => this.resolveLeafKeyAttribution(context),
|
|
160
|
-
() => this.resolveValuePatternAttribution(context)
|
|
161
|
-
];
|
|
162
|
-
for (const resolve of resolvers) {
|
|
163
|
-
const rule = resolve();
|
|
164
|
-
if (rule) {
|
|
165
|
-
return rule;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return toPathRule(path, 'redact', 'default');
|
|
169
|
-
}
|
|
170
|
-
attributeDeletePath(before, path) {
|
|
171
|
-
const segments = (0, jsonWalk_1.parseJsonPath)(path);
|
|
172
|
-
const pathRule = this.getMatchingPathRule(segments);
|
|
173
|
-
if ((pathRule === null || pathRule === void 0 ? void 0 : pathRule.mode) === 'remove') {
|
|
174
|
-
return toPathRule(path, 'delete', 'remove', { pattern: pathRule.path });
|
|
175
|
-
}
|
|
176
|
-
const deleteKey = objectKeysFromPath(segments).at(-1);
|
|
177
|
-
if (deleteKey) {
|
|
178
|
-
return this.attributeKeyRule(path, 'delete', deleteKey);
|
|
179
|
-
}
|
|
180
|
-
return toPathRule(path, 'delete', 'default');
|
|
181
|
-
}
|
|
182
|
-
/** Returns the matching schema when a shaped object should be handled at this node. */
|
|
183
|
-
getMatchingSchema(value) {
|
|
184
|
-
return (0, types_1.isJsonObject)(value) ? this.customObjectManager.getMatchingCustomObject(value) : undefined;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
exports.RuleResolver = RuleResolver;
|
|
188
|
-
const buildPathRules = (before, redactedPaths, deletedPaths, resolver) => [
|
|
189
|
-
...deletedPaths.map((path) => resolver.attributeDeletePath(before, path)),
|
|
190
|
-
...redactedPaths.map((path) => resolver.attributeRedactPath(before, path))
|
|
191
|
-
];
|
|
192
|
-
exports.buildPathRules = buildPathRules;
|
|
193
|
-
//# sourceMappingURL=ruleResolver.js.map
|
package/dist/ruleResolver.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ruleResolver.js","sourceRoot":"","sources":["../src/ruleResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fieldDisposition.d.ts","sourceRoot":"","sources":["../../src/rules/fieldDisposition.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,sBAAsB,IAAI,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fieldDisposition.js","sourceRoot":"","sources":["../../src/rules/fieldDisposition.ts"],"names":[],"mappings":";;;AACA,+CAAmF;AAA1E,uHAAA,sBAAsB,OAA2B"}
|
package/dist/secretManager.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { SecretManagerConfig, SecretSpecifierValue } from './types';
|
|
2
|
-
type KeyRule = 'remove' | 'opaque' | 'deep' | 'shallow';
|
|
3
|
-
/**
|
|
4
|
-
* Utility class for managing secrets and determining if a given value is a secret of any type. If no secrets of
|
|
5
|
-
* any type are provided in the configuration then all values are considered secrets (but not deep or full secrets).
|
|
6
|
-
*/
|
|
7
|
-
export declare class SecretManager {
|
|
8
|
-
private secretKeys?;
|
|
9
|
-
private deepSecretKeys?;
|
|
10
|
-
private fullSecretKeys?;
|
|
11
|
-
private deleteSecretKeys?;
|
|
12
|
-
private passKeys?;
|
|
13
|
-
constructor(config: SecretManagerConfig);
|
|
14
|
-
/**
|
|
15
|
-
* Determines if the given key is a secret. If no secrets of any type are provided then this function
|
|
16
|
-
* always returns true.
|
|
17
|
-
*/
|
|
18
|
-
isSecretKey(key: SecretSpecifierValue): boolean;
|
|
19
|
-
isDeepSecretKey(key: SecretSpecifierValue): boolean;
|
|
20
|
-
isFullSecretKey(key: SecretSpecifierValue): boolean;
|
|
21
|
-
isDeleteSecretKey(key: SecretSpecifierValue): boolean;
|
|
22
|
-
/** Determines if a key is allowlisted and should not be redacted under deep parents. */
|
|
23
|
-
isPassKey(key: SecretSpecifierValue): boolean;
|
|
24
|
-
getKeyRulePattern(key: SecretSpecifierValue, rule: KeyRule): string | undefined;
|
|
25
|
-
classifyKeyRule(key: SecretSpecifierValue): KeyRule | 'default' | null;
|
|
26
|
-
private matchesRule;
|
|
27
|
-
private regexListFor;
|
|
28
|
-
private static findMatchingRegex;
|
|
29
|
-
private static matchesAnyRegex;
|
|
30
|
-
}
|
|
31
|
-
export {};
|
|
32
|
-
//# sourceMappingURL=secretManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"secretManager.d.ts","sourceRoot":"","sources":["../src/secretManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpE,KAAK,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAIxD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAC,CAAW;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAW;IAClC,OAAO,CAAC,cAAc,CAAC,CAAW;IAClC,OAAO,CAAC,gBAAgB,CAAC,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,CAAW;gBAEhB,MAAM,EAAE,mBAAmB;IAavC;;;OAGG;IACI,WAAW,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO;IAQ/C,eAAe,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO;IAInD,eAAe,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO;IAInD,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO;IAI5D,wFAAwF;IACjF,SAAS,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO;IAI7C,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAK/E,eAAe,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI;IAc7E,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAIhC,OAAO,CAAC,MAAM,CAAC,eAAe;CAG/B"}
|
package/dist/secretManager.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SecretManager = void 0;
|
|
4
|
-
const regexUtils_1 = require("./regexUtils");
|
|
5
|
-
const KEY_RULE_PRECEDENCE = ['remove', 'opaque', 'deep', 'shallow'];
|
|
6
|
-
/**
|
|
7
|
-
* Utility class for managing secrets and determining if a given value is a secret of any type. If no secrets of
|
|
8
|
-
* any type are provided in the configuration then all values are considered secrets (but not deep or full secrets).
|
|
9
|
-
*/
|
|
10
|
-
class SecretManager {
|
|
11
|
-
constructor(config) {
|
|
12
|
-
this.deepSecretKeys = config.deepSecretKeys;
|
|
13
|
-
this.fullSecretKeys = config.fullSecretKeys;
|
|
14
|
-
this.deleteSecretKeys = config.deleteSecretKeys;
|
|
15
|
-
this.passKeys = config.passKeys;
|
|
16
|
-
if (!config.secretKeys && (config.deepSecretKeys || config.fullSecretKeys || config.deleteSecretKeys)) {
|
|
17
|
-
this.secretKeys = [];
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
this.secretKeys = config.secretKeys;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Determines if the given key is a secret. If no secrets of any type are provided then this function
|
|
25
|
-
* always returns true.
|
|
26
|
-
*/
|
|
27
|
-
isSecretKey(key) {
|
|
28
|
-
if (!this.secretKeys) {
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
return this.matchesRule(key, 'shallow');
|
|
32
|
-
}
|
|
33
|
-
isDeepSecretKey(key) {
|
|
34
|
-
return this.matchesRule(key, 'deep');
|
|
35
|
-
}
|
|
36
|
-
isFullSecretKey(key) {
|
|
37
|
-
return this.matchesRule(key, 'opaque');
|
|
38
|
-
}
|
|
39
|
-
isDeleteSecretKey(key) {
|
|
40
|
-
return this.matchesRule(key, 'remove');
|
|
41
|
-
}
|
|
42
|
-
/** Determines if a key is allowlisted and should not be redacted under deep parents. */
|
|
43
|
-
isPassKey(key) {
|
|
44
|
-
return !!this.passKeys && SecretManager.matchesAnyRegex(key, this.passKeys);
|
|
45
|
-
}
|
|
46
|
-
getKeyRulePattern(key, rule) {
|
|
47
|
-
const match = SecretManager.findMatchingRegex(key, this.regexListFor(rule));
|
|
48
|
-
return match ? (0, regexUtils_1.formatRegExp)(match) : undefined;
|
|
49
|
-
}
|
|
50
|
-
classifyKeyRule(key) {
|
|
51
|
-
for (const rule of KEY_RULE_PRECEDENCE) {
|
|
52
|
-
if (this.matchesRule(key, rule)) {
|
|
53
|
-
return rule;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
if (this.isSecretKey(key)) {
|
|
57
|
-
return this.secretKeys ? 'shallow' : 'default';
|
|
58
|
-
}
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
matchesRule(key, rule) {
|
|
62
|
-
const regexes = this.regexListFor(rule);
|
|
63
|
-
return !!regexes && SecretManager.matchesAnyRegex(key, regexes);
|
|
64
|
-
}
|
|
65
|
-
regexListFor(rule) {
|
|
66
|
-
switch (rule) {
|
|
67
|
-
case 'remove':
|
|
68
|
-
return this.deleteSecretKeys;
|
|
69
|
-
case 'opaque':
|
|
70
|
-
return this.fullSecretKeys;
|
|
71
|
-
case 'deep':
|
|
72
|
-
return this.deepSecretKeys;
|
|
73
|
-
case 'shallow':
|
|
74
|
-
return this.secretKeys;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
static findMatchingRegex(key, regexes) {
|
|
78
|
-
return regexes === null || regexes === void 0 ? void 0 : regexes.find((regex) => regex.test(String(key)));
|
|
79
|
-
}
|
|
80
|
-
static matchesAnyRegex(value, regexes) {
|
|
81
|
-
return regexes.some((regex) => regex.test(String(value)));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
exports.SecretManager = SecretManager;
|
|
85
|
-
//# sourceMappingURL=secretManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"secretManager.js","sourceRoot":"","sources":["../src/secretManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { CustomObject, JsonArray, JsonLeafValue, JsonObject, JsonValue, RedactablePrimitive, SecretSpecifierValue } from './types';
|
|
2
|
-
import { ContainerMutation } from './objectRedactorMutation';
|
|
3
|
-
import { RuleResolver } from './ruleResolver';
|
|
4
|
-
import { SecretManager } from './secretManager';
|
|
5
|
-
import { ValuePatternMatcher } from './valuePatternMatcher';
|
|
6
|
-
import { MaybeAsync } from './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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traversalServices.d.ts","sourceRoot":"","sources":["../src/traversalServices.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traversalServices.js","sourceRoot":"","sources":["../src/traversalServices.ts"],"names":[],"mappings":""}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { RedactablePrimitive } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Opt-in regex matching against scalar **values** (not key names).
|
|
4
|
-
* Applied only when key-based rules do not already redact the field.
|
|
5
|
-
*/
|
|
6
|
-
export declare class ValuePatternMatcher {
|
|
7
|
-
private readonly patterns;
|
|
8
|
-
constructor(patterns?: RegExp[]);
|
|
9
|
-
hasPatterns(): boolean;
|
|
10
|
-
findMatching(value: RedactablePrimitive | undefined): RegExp | undefined;
|
|
11
|
-
formatPattern(regex: RegExp): string;
|
|
12
|
-
}
|
|
13
|
-
/** Shared empty matcher for tests and configs without value patterns. */
|
|
14
|
-
export declare const EMPTY_VALUE_PATTERN_MATCHER: ValuePatternMatcher;
|
|
15
|
-
//# sourceMappingURL=valuePatternMatcher.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"valuePatternMatcher.d.ts","sourceRoot":"","sources":["../src/valuePatternMatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,QAAQ,CAAC,EAAE,MAAM,EAAE;IAIxB,WAAW,IAAI,OAAO;IAItB,YAAY,CAAC,KAAK,EAAE,mBAAmB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IASxE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAG5C;AAED,yEAAyE;AACzE,eAAO,MAAM,2BAA2B,qBAA4B,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EMPTY_VALUE_PATTERN_MATCHER = exports.ValuePatternMatcher = void 0;
|
|
4
|
-
const regexUtils_1 = require("./regexUtils");
|
|
5
|
-
/**
|
|
6
|
-
* Opt-in regex matching against scalar **values** (not key names).
|
|
7
|
-
* Applied only when key-based rules do not already redact the field.
|
|
8
|
-
*/
|
|
9
|
-
class ValuePatternMatcher {
|
|
10
|
-
constructor(patterns) {
|
|
11
|
-
this.patterns = patterns !== null && patterns !== void 0 ? patterns : [];
|
|
12
|
-
}
|
|
13
|
-
hasPatterns() {
|
|
14
|
-
return this.patterns.length > 0;
|
|
15
|
-
}
|
|
16
|
-
findMatching(value) {
|
|
17
|
-
if (value === undefined || value === null || typeof value === 'boolean') {
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
const text = String(value);
|
|
21
|
-
return this.patterns.find((pattern) => pattern.test(text));
|
|
22
|
-
}
|
|
23
|
-
formatPattern(regex) {
|
|
24
|
-
return (0, regexUtils_1.formatRegExp)(regex);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.ValuePatternMatcher = ValuePatternMatcher;
|
|
28
|
-
/** Shared empty matcher for tests and configs without value patterns. */
|
|
29
|
-
exports.EMPTY_VALUE_PATTERN_MATCHER = new ValuePatternMatcher();
|
|
30
|
-
//# sourceMappingURL=valuePatternMatcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"valuePatternMatcher.js","sourceRoot":"","sources":["../src/valuePatternMatcher.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAG5C;;;GAGG;AACH,MAAa,mBAAmB;IAG9B,YAAY,QAAmB;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC;IACjC,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,YAAY,CAAC,KAAsC;QACxD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YACxE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IAEM,aAAa,CAAC,KAAa;QAChC,OAAO,IAAA,yBAAY,EAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF;AAvBD,kDAuBC;AAED,yEAAyE;AAC5D,QAAA,2BAA2B,GAAG,IAAI,mBAAmB,EAAE,CAAC"}
|