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.
Files changed (162) hide show
  1. package/.github/workflows/publish.yml +55 -0
  2. package/CHANGELOG.md +17 -0
  3. package/CONTRIBUTING.md +23 -2
  4. package/README.md +1 -0
  5. package/dist/api/fieldRedactor.d.ts +3 -3
  6. package/dist/api/fieldRedactor.js +4 -4
  7. package/dist/api/fieldRedactor.js.map +1 -1
  8. package/dist/config/configValidator.d.ts.map +1 -1
  9. package/dist/config/configValidator.js +16 -0
  10. package/dist/config/configValidator.js.map +1 -1
  11. package/dist/types.d.ts +27 -9
  12. package/dist/types.d.ts.map +1 -1
  13. package/dist/types.js.map +1 -1
  14. package/docs/guides/migration-1.5-to-1.6.md +4 -3
  15. package/docs/release-notes/README.md +4 -1
  16. package/docs/release-notes/v1.6.3.md +25 -0
  17. package/examples/README.md +14 -0
  18. package/examples/dry-run.ts +21 -0
  19. package/examples/logging-metadata.ts +18 -0
  20. package/examples/path-rules.ts +23 -0
  21. package/examples/value-patterns.ts +16 -0
  22. package/package.json +1 -1
  23. package/dist/arrayRedaction.d.ts +0 -12
  24. package/dist/arrayRedaction.d.ts.map +0 -1
  25. package/dist/arrayRedaction.js +0 -70
  26. package/dist/arrayRedaction.js.map +0 -1
  27. package/dist/configValidator.d.ts +0 -9
  28. package/dist/configValidator.d.ts.map +0 -1
  29. package/dist/configValidator.js +0 -77
  30. package/dist/configValidator.js.map +0 -1
  31. package/dist/copyOnWriteHelpers.d.ts +0 -20
  32. package/dist/copyOnWriteHelpers.d.ts.map +0 -1
  33. package/dist/copyOnWriteHelpers.js +0 -58
  34. package/dist/copyOnWriteHelpers.js.map +0 -1
  35. package/dist/customObjectFieldHandler.d.ts +0 -21
  36. package/dist/customObjectFieldHandler.d.ts.map +0 -1
  37. package/dist/customObjectFieldHandler.js +0 -159
  38. package/dist/customObjectFieldHandler.js.map +0 -1
  39. package/dist/customObjectManager.d.ts +0 -28
  40. package/dist/customObjectManager.d.ts.map +0 -1
  41. package/dist/customObjectManager.js +0 -60
  42. package/dist/customObjectManager.js.map +0 -1
  43. package/dist/customObjectSchemas.d.ts +0 -7
  44. package/dist/customObjectSchemas.d.ts.map +0 -1
  45. package/dist/customObjectSchemas.js +0 -35
  46. package/dist/customObjectSchemas.js.map +0 -1
  47. package/dist/dryRun.d.ts +0 -9
  48. package/dist/dryRun.d.ts.map +0 -1
  49. package/dist/dryRun.js +0 -75
  50. package/dist/dryRun.js.map +0 -1
  51. package/dist/dryRunAttribution.d.ts +0 -10
  52. package/dist/dryRunAttribution.d.ts.map +0 -1
  53. package/dist/dryRunAttribution.js +0 -14
  54. package/dist/dryRunAttribution.js.map +0 -1
  55. package/dist/dryrun/dryRunAttribution.d.ts +0 -10
  56. package/dist/dryrun/dryRunAttribution.d.ts.map +0 -1
  57. package/dist/dryrun/dryRunAttribution.js +0 -14
  58. package/dist/dryrun/dryRunAttribution.js.map +0 -1
  59. package/dist/engine/objectRedactor.d.ts +0 -18
  60. package/dist/engine/objectRedactor.d.ts.map +0 -1
  61. package/dist/engine/objectRedactor.js +0 -38
  62. package/dist/engine/objectRedactor.js.map +0 -1
  63. package/dist/engine/objectRedactorSync.d.ts +0 -2
  64. package/dist/engine/objectRedactorSync.d.ts.map +0 -1
  65. package/dist/engine/objectRedactorSync.js +0 -7
  66. package/dist/engine/objectRedactorSync.js.map +0 -1
  67. package/dist/fieldDisposition.d.ts +0 -3
  68. package/dist/fieldDisposition.d.ts.map +0 -1
  69. package/dist/fieldDisposition.js +0 -6
  70. package/dist/fieldDisposition.js.map +0 -1
  71. package/dist/fieldRedactor.d.ts +0 -51
  72. package/dist/fieldRedactor.d.ts.map +0 -1
  73. package/dist/fieldRedactor.js +0 -165
  74. package/dist/fieldRedactor.js.map +0 -1
  75. package/dist/fieldRedactorConfigBuilder.d.ts +0 -55
  76. package/dist/fieldRedactorConfigBuilder.d.ts.map +0 -1
  77. package/dist/fieldRedactorConfigBuilder.js +0 -111
  78. package/dist/fieldRedactorConfigBuilder.js.map +0 -1
  79. package/dist/fieldRedactorDeps.d.ts +0 -19
  80. package/dist/fieldRedactorDeps.d.ts.map +0 -1
  81. package/dist/fieldRedactorDeps.js +0 -43
  82. package/dist/fieldRedactorDeps.js.map +0 -1
  83. package/dist/jsonWalk.d.ts +0 -11
  84. package/dist/jsonWalk.d.ts.map +0 -1
  85. package/dist/jsonWalk.js +0 -55
  86. package/dist/jsonWalk.js.map +0 -1
  87. package/dist/maybeAsync.d.ts +0 -7
  88. package/dist/maybeAsync.d.ts.map +0 -1
  89. package/dist/maybeAsync.js +0 -56
  90. package/dist/maybeAsync.js.map +0 -1
  91. package/dist/objectRedactor.d.ts +0 -18
  92. package/dist/objectRedactor.d.ts.map +0 -1
  93. package/dist/objectRedactor.js +0 -38
  94. package/dist/objectRedactor.js.map +0 -1
  95. package/dist/objectRedactorCow.d.ts +0 -35
  96. package/dist/objectRedactorCow.d.ts.map +0 -1
  97. package/dist/objectRedactorCow.js +0 -300
  98. package/dist/objectRedactorCow.js.map +0 -1
  99. package/dist/objectRedactorCustomObject.d.ts +0 -28
  100. package/dist/objectRedactorCustomObject.d.ts.map +0 -1
  101. package/dist/objectRedactorCustomObject.js +0 -57
  102. package/dist/objectRedactorCustomObject.js.map +0 -1
  103. package/dist/objectRedactorHelpers.d.ts +0 -9
  104. package/dist/objectRedactorHelpers.d.ts.map +0 -1
  105. package/dist/objectRedactorHelpers.js +0 -61
  106. package/dist/objectRedactorHelpers.js.map +0 -1
  107. package/dist/objectRedactorMutation.d.ts +0 -10
  108. package/dist/objectRedactorMutation.d.ts.map +0 -1
  109. package/dist/objectRedactorMutation.js +0 -89
  110. package/dist/objectRedactorMutation.js.map +0 -1
  111. package/dist/objectRedactorSync.d.ts +0 -2
  112. package/dist/objectRedactorSync.d.ts.map +0 -1
  113. package/dist/objectRedactorSync.js +0 -7
  114. package/dist/objectRedactorSync.js.map +0 -1
  115. package/dist/objectRedactorTraversal.d.ts +0 -41
  116. package/dist/objectRedactorTraversal.d.ts.map +0 -1
  117. package/dist/objectRedactorTraversal.js +0 -201
  118. package/dist/objectRedactorTraversal.js.map +0 -1
  119. package/dist/pathParsing.d.ts +0 -11
  120. package/dist/pathParsing.d.ts.map +0 -1
  121. package/dist/pathParsing.js +0 -53
  122. package/dist/pathParsing.js.map +0 -1
  123. package/dist/pathRuleMatcher.d.ts +0 -19
  124. package/dist/pathRuleMatcher.d.ts.map +0 -1
  125. package/dist/pathRuleMatcher.js +0 -42
  126. package/dist/pathRuleMatcher.js.map +0 -1
  127. package/dist/presets.d.ts +0 -22
  128. package/dist/presets.d.ts.map +0 -1
  129. package/dist/presets.js +0 -50
  130. package/dist/presets.js.map +0 -1
  131. package/dist/primitiveRedactor.d.ts +0 -33
  132. package/dist/primitiveRedactor.d.ts.map +0 -1
  133. package/dist/primitiveRedactor.js +0 -75
  134. package/dist/primitiveRedactor.js.map +0 -1
  135. package/dist/redactionRules.d.ts +0 -22
  136. package/dist/redactionRules.d.ts.map +0 -1
  137. package/dist/redactionRules.js +0 -74
  138. package/dist/redactionRules.js.map +0 -1
  139. package/dist/regexUtils.d.ts +0 -3
  140. package/dist/regexUtils.d.ts.map +0 -1
  141. package/dist/regexUtils.js +0 -8
  142. package/dist/regexUtils.js.map +0 -1
  143. package/dist/ruleResolver.d.ts +0 -65
  144. package/dist/ruleResolver.d.ts.map +0 -1
  145. package/dist/ruleResolver.js +0 -193
  146. package/dist/ruleResolver.js.map +0 -1
  147. package/dist/rules/fieldDisposition.d.ts +0 -3
  148. package/dist/rules/fieldDisposition.d.ts.map +0 -1
  149. package/dist/rules/fieldDisposition.js +0 -6
  150. package/dist/rules/fieldDisposition.js.map +0 -1
  151. package/dist/secretManager.d.ts +0 -32
  152. package/dist/secretManager.d.ts.map +0 -1
  153. package/dist/secretManager.js +0 -85
  154. package/dist/secretManager.js.map +0 -1
  155. package/dist/traversalServices.d.ts +0 -21
  156. package/dist/traversalServices.d.ts.map +0 -1
  157. package/dist/traversalServices.js +0 -3
  158. package/dist/traversalServices.js.map +0 -1
  159. package/dist/valuePatternMatcher.d.ts +0 -15
  160. package/dist/valuePatternMatcher.d.ts.map +0 -1
  161. package/dist/valuePatternMatcher.js +0 -30
  162. package/dist/valuePatternMatcher.js.map +0 -1
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"ruleResolver.js","sourceRoot":"","sources":["../src/ruleResolver.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export type { FieldDisposition } from './ruleResolver';
2
- export { resolvePathDisposition as resolveFieldDisposition } from './ruleResolver';
3
- //# sourceMappingURL=fieldDisposition.d.ts.map
@@ -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"}
@@ -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"}
@@ -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,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=traversalServices.js.map
@@ -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"}