field-redactor 1.6.1 → 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 +32 -0
- package/CONTRIBUTING.md +26 -3
- package/README.md +3 -2
- package/dist/api/fieldRedactor.d.ts +4 -4
- package/dist/api/fieldRedactor.js +8 -8
- package/dist/api/fieldRedactor.js.map +1 -1
- package/dist/api/fieldRedactorConfigBuilder.d.ts +3 -3
- package/dist/api/fieldRedactorConfigBuilder.d.ts.map +1 -1
- package/dist/api/fieldRedactorConfigBuilder.js +7 -9
- package/dist/api/fieldRedactorConfigBuilder.js.map +1 -1
- package/dist/api/fieldRedactorDeps.d.ts +2 -2
- package/dist/api/fieldRedactorDeps.d.ts.map +1 -1
- package/dist/api/fieldRedactorDeps.js +6 -6
- package/dist/api/fieldRedactorDeps.js.map +1 -1
- package/dist/config/configValidator.d.ts.map +1 -1
- package/dist/config/configValidator.js +16 -0
- package/dist/config/configValidator.js.map +1 -1
- package/dist/config/presets.d.ts +2 -2
- package/dist/config/presets.js +1 -1
- package/dist/config/redactionRules.d.ts +10 -5
- package/dist/config/redactionRules.d.ts.map +1 -1
- package/dist/config/redactionRules.js +16 -11
- package/dist/config/redactionRules.js.map +1 -1
- package/dist/engine/objectRedactorHelpers.js +2 -2
- package/dist/engine/objectRedactorHelpers.js.map +1 -1
- package/dist/engine/objectRedactorTraversal.d.ts +1 -0
- package/dist/engine/objectRedactorTraversal.d.ts.map +1 -1
- package/dist/engine/objectRedactorTraversal.js +1 -0
- package/dist/engine/objectRedactorTraversal.js.map +1 -1
- package/dist/rules/ruleResolver.js +2 -2
- package/dist/rules/ruleResolver.js.map +1 -1
- package/dist/rules/secretManager.d.ts +5 -5
- package/dist/rules/secretManager.d.ts.map +1 -1
- package/dist/rules/secretManager.js +13 -8
- package/dist/rules/secretManager.js.map +1 -1
- package/dist/types.d.ts +39 -21
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -4
- package/dist/types.js.map +1 -1
- package/docs/guides/anti-patterns.md +1 -1
- package/docs/guides/metadata-redaction.md +2 -2
- package/docs/guides/migration-1.5-to-1.6.md +6 -4
- package/docs/guides/secret-key-modes.md +9 -14
- package/docs/reference/config.md +2 -2
- package/docs/release-notes/README.md +5 -1
- package/docs/release-notes/v1.6.2.md +26 -0
- 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/fieldRedactor.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { DryRunResult, FieldRedactorConfig, RedactableInput } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* FieldRedactor is a highly customizable JSON object field redactor. It conditionally redacts fields based on
|
|
4
|
-
* the secrets, deepSecrets, fullSecrets, and custom objects provided in the configuration. Refer to the README.md
|
|
5
|
-
* for more details.
|
|
6
|
-
*
|
|
7
|
-
* Defaults: `ignoreNullOrUndefined` is `true`, `ignoreBooleans` is `false`, `cloneInput` is `true`.
|
|
8
|
-
*/
|
|
9
|
-
export declare class FieldRedactor {
|
|
10
|
-
private readonly deepCopy;
|
|
11
|
-
private readonly deps;
|
|
12
|
-
/** Non-fatal configuration warnings from the last construction (empty when `strict` threw). */
|
|
13
|
-
readonly configWarnings: readonly string[];
|
|
14
|
-
constructor(config?: FieldRedactorConfig);
|
|
15
|
-
/**
|
|
16
|
-
* Creates a FieldRedactor that requires at least one explicit redaction rule: Shallow (`secretKeys`),
|
|
17
|
-
* Deep (`deepSecretKeys`), Opaque (`fullSecretKeys`), Remove (`deleteSecretKeys`), Schema (`customObjects`),
|
|
18
|
-
* or Value-pattern (`valuePatterns`).
|
|
19
|
-
* Unlike `new FieldRedactor()`, omitting all rules does not default to redacting every value.
|
|
20
|
-
*/
|
|
21
|
-
static createSafe(config: FieldRedactorConfig): FieldRedactor;
|
|
22
|
-
/** Redacts a copy of the input and returns an audit report of affected paths without mutating the original. */
|
|
23
|
-
dryRun<T extends RedactableInput>(value: T): Promise<DryRunResult<T>>;
|
|
24
|
-
/** Synchronous {@link FieldRedactor.dryRun} without per-field Promise overhead. */
|
|
25
|
-
dryRunSync<T extends RedactableInput>(value: T): DryRunResult<T>;
|
|
26
|
-
private runDryRun;
|
|
27
|
-
private emptyDryRunResult;
|
|
28
|
-
private toDryRunResult;
|
|
29
|
-
/**
|
|
30
|
-
* Conditionally redacts fields in the JSON object based on the configuration provided in the constructor and returns the
|
|
31
|
-
* redacted result.
|
|
32
|
-
* If the value is a primitive, undefined, or date, returns the value as-is.
|
|
33
|
-
*/
|
|
34
|
-
redact<T extends RedactableInput>(value: T): Promise<T>;
|
|
35
|
-
/**
|
|
36
|
-
* Synchronously redacts fields and returns a copy without per-field Promise overhead.
|
|
37
|
-
* Uses copy-on-write structural sharing by default so only mutated branches are cloned.
|
|
38
|
-
*/
|
|
39
|
-
redactSync<T extends RedactableInput>(value: T): T;
|
|
40
|
-
/** Conditionally redacts fields in the JSON object in place based on the configuration provided in the constructor. */
|
|
41
|
-
redactInPlace<T extends RedactableInput>(value: T): Promise<void>;
|
|
42
|
-
/**
|
|
43
|
-
* Synchronously redacts fields in the JSON object in place without per-field Promise overhead.
|
|
44
|
-
* Requires a `syncRedactor` or the default redactor; throws when only an async `redactor` is configured.
|
|
45
|
-
*/
|
|
46
|
-
redactInPlaceSync<T extends RedactableInput>(value: T): void;
|
|
47
|
-
private runTraversableRedaction;
|
|
48
|
-
private toFieldRedactorError;
|
|
49
|
-
private isPrimitiveOrUndefined;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=fieldRedactor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactor.d.ts","sourceRoot":"","sources":["../src/fieldRedactor.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,mBAAmB,EAInB,eAAe,EAEhB,MAAM,SAAS,CAAC;AAKjB;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IAEzC,+FAA+F;IAC/F,SAAgB,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;gBAEtC,MAAM,CAAC,EAAE,mBAAmB;IASxC;;;;;OAKG;WACW,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,aAAa;IAUpE,+GAA+G;IAClG,MAAM,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIlF,mFAAmF;IAC5E,UAAU,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IASvE,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,cAAc;IActB;;;;OAIG;IACU,MAAM,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBpE;;;OAGG;IACI,UAAU,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IAazD,uHAAuH;IAC1G,aAAa,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9E;;;OAGG;IACI,iBAAiB,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAQnE,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,sBAAsB;CAG/B"}
|
package/dist/fieldRedactor.js
DELETED
|
@@ -1,165 +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
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.FieldRedactor = void 0;
|
|
16
|
-
const errors_1 = require("./errors");
|
|
17
|
-
const fieldRedactorDeps_1 = require("./fieldRedactorDeps");
|
|
18
|
-
const dryRun_1 = require("./dryRun");
|
|
19
|
-
const rfdc_1 = __importDefault(require("rfdc"));
|
|
20
|
-
const configValidator_1 = require("./configValidator");
|
|
21
|
-
/**
|
|
22
|
-
* FieldRedactor is a highly customizable JSON object field redactor. It conditionally redacts fields based on
|
|
23
|
-
* the secrets, deepSecrets, fullSecrets, and custom objects provided in the configuration. Refer to the README.md
|
|
24
|
-
* for more details.
|
|
25
|
-
*
|
|
26
|
-
* Defaults: `ignoreNullOrUndefined` is `true`, `ignoreBooleans` is `false`, `cloneInput` is `true`.
|
|
27
|
-
*/
|
|
28
|
-
class FieldRedactor {
|
|
29
|
-
constructor(config) {
|
|
30
|
-
var _a;
|
|
31
|
-
this.deepCopy = (0, rfdc_1.default)({ proto: true, circles: true });
|
|
32
|
-
this.configWarnings = (0, configValidator_1.validateFieldRedactorConfig)(config);
|
|
33
|
-
for (const warning of this.configWarnings) {
|
|
34
|
-
(_a = config === null || config === void 0 ? void 0 : config.onConfigWarning) === null || _a === void 0 ? void 0 : _a.call(config, warning);
|
|
35
|
-
}
|
|
36
|
-
this.deps = (0, fieldRedactorDeps_1.buildFieldRedactorDeps)(config);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Creates a FieldRedactor that requires at least one explicit redaction rule: Shallow (`secretKeys`),
|
|
40
|
-
* Deep (`deepSecretKeys`), Opaque (`fullSecretKeys`), Remove (`deleteSecretKeys`), Schema (`customObjects`),
|
|
41
|
-
* or Value-pattern (`valuePatterns`).
|
|
42
|
-
* Unlike `new FieldRedactor()`, omitting all rules does not default to redacting every value.
|
|
43
|
-
*/
|
|
44
|
-
static createSafe(config) {
|
|
45
|
-
if (!(0, configValidator_1.hasExplicitRedactionRules)(config)) {
|
|
46
|
-
throw new errors_1.FieldRedactorConfigurationError('FieldRedactor.createSafe() requires at least one non-empty secretKeys, deepSecretKeys, fullSecretKeys, deleteSecretKeys, customObjects, or valuePatterns entry. Without explicit rules, new FieldRedactor() redacts all values by default.');
|
|
47
|
-
}
|
|
48
|
-
return new FieldRedactor(config);
|
|
49
|
-
}
|
|
50
|
-
/** Redacts a copy of the input and returns an audit report of affected paths without mutating the original. */
|
|
51
|
-
dryRun(value) {
|
|
52
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
-
return this.runDryRun(value, (input) => this.redact(input));
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
/** Synchronous {@link FieldRedactor.dryRun} without per-field Promise overhead. */
|
|
57
|
-
dryRunSync(value) {
|
|
58
|
-
if (this.isPrimitiveOrUndefined(value)) {
|
|
59
|
-
return this.emptyDryRunResult(value);
|
|
60
|
-
}
|
|
61
|
-
const snapshot = this.deepCopy(value);
|
|
62
|
-
return this.toDryRunResult(snapshot, this.redactSync(value));
|
|
63
|
-
}
|
|
64
|
-
runDryRun(value, redact) {
|
|
65
|
-
if (this.isPrimitiveOrUndefined(value)) {
|
|
66
|
-
return this.emptyDryRunResult(value);
|
|
67
|
-
}
|
|
68
|
-
const snapshot = this.deepCopy(value);
|
|
69
|
-
const result = redact(value);
|
|
70
|
-
if (result instanceof Promise) {
|
|
71
|
-
return result.then((redacted) => this.toDryRunResult(snapshot, redacted));
|
|
72
|
-
}
|
|
73
|
-
return this.toDryRunResult(snapshot, result);
|
|
74
|
-
}
|
|
75
|
-
emptyDryRunResult(value) {
|
|
76
|
-
return { result: value, report: dryRun_1.EMPTY_DRY_RUN_REPORT };
|
|
77
|
-
}
|
|
78
|
-
toDryRunResult(snapshot, result) {
|
|
79
|
-
return {
|
|
80
|
-
result,
|
|
81
|
-
report: (0, dryRun_1.buildDryRunReport)(snapshot, result, this.deps.customObjectManager, this.deps.secretManager, this.deps.valuePatternMatcher, this.deps.pathRuleMatcher)
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Conditionally redacts fields in the JSON object based on the configuration provided in the constructor and returns the
|
|
86
|
-
* redacted result.
|
|
87
|
-
* If the value is a primitive, undefined, or date, returns the value as-is.
|
|
88
|
-
*/
|
|
89
|
-
redact(value) {
|
|
90
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
-
if (this.isPrimitiveOrUndefined(value)) {
|
|
92
|
-
return value;
|
|
93
|
-
}
|
|
94
|
-
if (!this.deps.cloneInput) {
|
|
95
|
-
yield this.redactInPlace(value);
|
|
96
|
-
return value;
|
|
97
|
-
}
|
|
98
|
-
if (!this.deps.usesAsyncRedactor) {
|
|
99
|
-
return Promise.resolve(this.redactSync(value));
|
|
100
|
-
}
|
|
101
|
-
const copy = this.deepCopy(value);
|
|
102
|
-
yield this.redactInPlace(copy);
|
|
103
|
-
return copy;
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Synchronously redacts fields and returns a copy without per-field Promise overhead.
|
|
108
|
-
* Uses copy-on-write structural sharing by default so only mutated branches are cloned.
|
|
109
|
-
*/
|
|
110
|
-
redactSync(value) {
|
|
111
|
-
if (this.isPrimitiveOrUndefined(value)) {
|
|
112
|
-
return value;
|
|
113
|
-
}
|
|
114
|
-
if (!this.deps.cloneInput) {
|
|
115
|
-
this.redactInPlaceSync(value);
|
|
116
|
-
return value;
|
|
117
|
-
}
|
|
118
|
-
return this.deps.objectRedactor.redactCopyOnWrite(value);
|
|
119
|
-
}
|
|
120
|
-
/** Conditionally redacts fields in the JSON object in place based on the configuration provided in the constructor. */
|
|
121
|
-
redactInPlace(value) {
|
|
122
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
if (!this.deps.usesAsyncRedactor) {
|
|
124
|
-
this.redactInPlaceSync(value);
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
yield this.runTraversableRedaction(value, () => this.deps.objectRedactor.redactInPlace(value));
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Synchronously redacts fields in the JSON object in place without per-field Promise overhead.
|
|
132
|
-
* Requires a `syncRedactor` or the default redactor; throws when only an async `redactor` is configured.
|
|
133
|
-
*/
|
|
134
|
-
redactInPlaceSync(value) {
|
|
135
|
-
if (this.deps.usesAsyncRedactor) {
|
|
136
|
-
throw new errors_1.FieldRedactorError('redactInPlaceSync requires syncRedactor configuration or the default redactor');
|
|
137
|
-
}
|
|
138
|
-
this.runTraversableRedaction(value, () => this.deps.objectRedactor.redactInPlaceSync(value));
|
|
139
|
-
}
|
|
140
|
-
runTraversableRedaction(value, redact) {
|
|
141
|
-
if (this.isPrimitiveOrUndefined(value)) {
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
try {
|
|
145
|
-
const result = redact();
|
|
146
|
-
if (result instanceof Promise) {
|
|
147
|
-
return result.catch((error) => {
|
|
148
|
-
throw this.toFieldRedactorError(error);
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
catch (error) {
|
|
153
|
-
throw this.toFieldRedactorError(error);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
toFieldRedactorError(error) {
|
|
157
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
158
|
-
return new errors_1.FieldRedactorError(message);
|
|
159
|
-
}
|
|
160
|
-
isPrimitiveOrUndefined(value) {
|
|
161
|
-
return !value || typeof value !== 'object' || value instanceof Date;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
exports.FieldRedactor = FieldRedactor;
|
|
165
|
-
//# sourceMappingURL=fieldRedactor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactor.js","sourceRoot":"","sources":["../src/fieldRedactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { FieldRedactor } from './fieldRedactor';
|
|
2
|
-
import { CustomObject, FieldRedactorConfig, PathRuleMode, Redactor, SyncRedactor } from './types';
|
|
3
|
-
export type SchemaOptions = {
|
|
4
|
-
/** Optional label surfaced in {@link FieldRedactor.dryRun} `matchedSchemas` reports. */
|
|
5
|
-
name?: string;
|
|
6
|
-
};
|
|
7
|
-
/**
|
|
8
|
-
* Fluent builder for {@link FieldRedactorConfig} using doc labels (Shallow, Deep, Opaque, Remove, Schema).
|
|
9
|
-
*/
|
|
10
|
-
export declare class FieldRedactorConfigBuilder {
|
|
11
|
-
private config;
|
|
12
|
-
private schemas;
|
|
13
|
-
static create(): FieldRedactorConfigBuilder;
|
|
14
|
-
/** Shallow — redact matching keys' scalar values (`secretKeys`). */
|
|
15
|
-
shallow(...patterns: RegExp[]): this;
|
|
16
|
-
/** Deep — redact matching keys and descendants (`deepSecretKeys`). */
|
|
17
|
-
deep(...patterns: RegExp[]): this;
|
|
18
|
-
/** Opaque — stringify entire values at matching keys (`fullSecretKeys`). */
|
|
19
|
-
opaque(...patterns: RegExp[]): this;
|
|
20
|
-
/** Remove — delete matching keys from output (`deleteSecretKeys`). */
|
|
21
|
-
remove(...patterns: RegExp[]): this;
|
|
22
|
-
/** Alias for {@link FieldRedactorConfigBuilder.remove}. */
|
|
23
|
-
delete(...patterns: RegExp[]): this;
|
|
24
|
-
/** Register an object schema (`customObjects`). */
|
|
25
|
-
schema(customObject: CustomObject, options?: SchemaOptions): this;
|
|
26
|
-
/**
|
|
27
|
-
* Value-pattern — redact scalar fields whose string form matches a pattern, regardless of key name (`valuePatterns`).
|
|
28
|
-
* Lowest precedence; opt-in defense in depth beyond key-name rules.
|
|
29
|
-
*/
|
|
30
|
-
valuePattern(...patterns: RegExp[]): this;
|
|
31
|
-
/**
|
|
32
|
-
* Path rule — apply a redaction mode at a JSON path (`metadata.*.value`, `accountInfo.id`).
|
|
33
|
-
*/
|
|
34
|
-
pathRule(path: string, mode: PathRuleMode): this;
|
|
35
|
-
/** Allowlist — matching key names are never redacted under deep parents (`passKeys`). */
|
|
36
|
-
passKey(...patterns: RegExp[]): this;
|
|
37
|
-
/**
|
|
38
|
-
* Merge a {@link presets} return value (or any partial config) into the builder.
|
|
39
|
-
* Regex arrays and schemas accumulate; scalar options apply only when not already set.
|
|
40
|
-
*/
|
|
41
|
-
usePreset(preset: Partial<FieldRedactorConfig>): this;
|
|
42
|
-
redactor(fn: Redactor): this;
|
|
43
|
-
syncRedactor(fn: SyncRedactor): this;
|
|
44
|
-
ignoreBooleans(value: boolean): this;
|
|
45
|
-
ignoreNullOrUndefined(value: boolean): this;
|
|
46
|
-
cloneInput(value: boolean): this;
|
|
47
|
-
strict(value?: boolean): this;
|
|
48
|
-
onConfigWarning(handler: (message: string) => void): this;
|
|
49
|
-
build(): FieldRedactorConfig;
|
|
50
|
-
buildRedactor(): FieldRedactor;
|
|
51
|
-
buildSafeRedactor(): FieldRedactor;
|
|
52
|
-
private appendRegex;
|
|
53
|
-
private set;
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=fieldRedactorConfigBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactorConfigBuilder.d.ts","sourceRoot":"","sources":["../src/fieldRedactorConfigBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAElG,MAAM,MAAM,aAAa,GAAG;IAC1B,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAA0B;IAEzC,MAAM,CAAC,MAAM,IAAI,0BAA0B;IAI3C,oEAAoE;IACpE,OAAO,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIpC,sEAAsE;IACtE,IAAI,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjC,4EAA4E;IAC5E,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAInC,sEAAsE;IACtE,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAInC,2DAA2D;IAC3D,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAInC,mDAAmD;IACnD,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAKjE;;;OAGG;IACH,YAAY,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKzC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;IAKhD,yFAAyF;IACzF,OAAO,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKpC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI;IAKrD,QAAQ,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI;IAI5B,YAAY,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAIpC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIpC,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI3C,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIhC,MAAM,CAAC,KAAK,UAAO,GAAG,IAAI;IAI1B,eAAe,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIzD,KAAK,IAAI,mBAAmB;IAI5B,aAAa,IAAI,aAAa;IAI9B,iBAAiB,IAAI,aAAa;IAIlC,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,GAAG;CAIZ"}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FieldRedactorConfigBuilder = void 0;
|
|
4
|
-
const fieldRedactor_1 = require("./fieldRedactor");
|
|
5
|
-
const redactionRules_1 = require("./redactionRules");
|
|
6
|
-
/**
|
|
7
|
-
* Fluent builder for {@link FieldRedactorConfig} using doc labels (Shallow, Deep, Opaque, Remove, Schema).
|
|
8
|
-
*/
|
|
9
|
-
class FieldRedactorConfigBuilder {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.config = {};
|
|
12
|
-
this.schemas = [];
|
|
13
|
-
}
|
|
14
|
-
static create() {
|
|
15
|
-
return new FieldRedactorConfigBuilder();
|
|
16
|
-
}
|
|
17
|
-
/** Shallow — redact matching keys' scalar values (`secretKeys`). */
|
|
18
|
-
shallow(...patterns) {
|
|
19
|
-
return this.appendRegex('secretKeys', patterns);
|
|
20
|
-
}
|
|
21
|
-
/** Deep — redact matching keys and descendants (`deepSecretKeys`). */
|
|
22
|
-
deep(...patterns) {
|
|
23
|
-
return this.appendRegex('deepSecretKeys', patterns);
|
|
24
|
-
}
|
|
25
|
-
/** Opaque — stringify entire values at matching keys (`fullSecretKeys`). */
|
|
26
|
-
opaque(...patterns) {
|
|
27
|
-
return this.appendRegex('fullSecretKeys', patterns);
|
|
28
|
-
}
|
|
29
|
-
/** Remove — delete matching keys from output (`deleteSecretKeys`). */
|
|
30
|
-
remove(...patterns) {
|
|
31
|
-
return this.appendRegex('deleteSecretKeys', patterns);
|
|
32
|
-
}
|
|
33
|
-
/** Alias for {@link FieldRedactorConfigBuilder.remove}. */
|
|
34
|
-
delete(...patterns) {
|
|
35
|
-
return this.remove(...patterns);
|
|
36
|
-
}
|
|
37
|
-
/** Register an object schema (`customObjects`). */
|
|
38
|
-
schema(customObject, options) {
|
|
39
|
-
this.schemas.push({ object: customObject, name: options === null || options === void 0 ? void 0 : options.name });
|
|
40
|
-
return this;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Value-pattern — redact scalar fields whose string form matches a pattern, regardless of key name (`valuePatterns`).
|
|
44
|
-
* Lowest precedence; opt-in defense in depth beyond key-name rules.
|
|
45
|
-
*/
|
|
46
|
-
valuePattern(...patterns) {
|
|
47
|
-
(0, redactionRules_1.appendRegExpArray)(this.config, 'valuePatterns', patterns);
|
|
48
|
-
return this;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Path rule — apply a redaction mode at a JSON path (`metadata.*.value`, `accountInfo.id`).
|
|
52
|
-
*/
|
|
53
|
-
pathRule(path, mode) {
|
|
54
|
-
var _a;
|
|
55
|
-
this.config.pathRules = [...((_a = this.config.pathRules) !== null && _a !== void 0 ? _a : []), { path, mode }];
|
|
56
|
-
return this;
|
|
57
|
-
}
|
|
58
|
-
/** Allowlist — matching key names are never redacted under deep parents (`passKeys`). */
|
|
59
|
-
passKey(...patterns) {
|
|
60
|
-
(0, redactionRules_1.appendRegExpArray)(this.config, 'passKeys', patterns);
|
|
61
|
-
return this;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Merge a {@link presets} return value (or any partial config) into the builder.
|
|
65
|
-
* Regex arrays and schemas accumulate; scalar options apply only when not already set.
|
|
66
|
-
*/
|
|
67
|
-
usePreset(preset) {
|
|
68
|
-
(0, redactionRules_1.mergePartialConfig)(this.config, this.schemas, preset);
|
|
69
|
-
return this;
|
|
70
|
-
}
|
|
71
|
-
redactor(fn) {
|
|
72
|
-
return this.set('redactor', fn);
|
|
73
|
-
}
|
|
74
|
-
syncRedactor(fn) {
|
|
75
|
-
return this.set('syncRedactor', fn);
|
|
76
|
-
}
|
|
77
|
-
ignoreBooleans(value) {
|
|
78
|
-
return this.set('ignoreBooleans', value);
|
|
79
|
-
}
|
|
80
|
-
ignoreNullOrUndefined(value) {
|
|
81
|
-
return this.set('ignoreNullOrUndefined', value);
|
|
82
|
-
}
|
|
83
|
-
cloneInput(value) {
|
|
84
|
-
return this.set('cloneInput', value);
|
|
85
|
-
}
|
|
86
|
-
strict(value = true) {
|
|
87
|
-
return this.set('strict', value);
|
|
88
|
-
}
|
|
89
|
-
onConfigWarning(handler) {
|
|
90
|
-
return this.set('onConfigWarning', handler);
|
|
91
|
-
}
|
|
92
|
-
build() {
|
|
93
|
-
return Object.assign(Object.assign({}, this.config), (0, redactionRules_1.finalizeRegisteredSchemas)(this.schemas));
|
|
94
|
-
}
|
|
95
|
-
buildRedactor() {
|
|
96
|
-
return new fieldRedactor_1.FieldRedactor(this.build());
|
|
97
|
-
}
|
|
98
|
-
buildSafeRedactor() {
|
|
99
|
-
return fieldRedactor_1.FieldRedactor.createSafe(this.build());
|
|
100
|
-
}
|
|
101
|
-
appendRegex(field, patterns) {
|
|
102
|
-
(0, redactionRules_1.appendRegExpArray)(this.config, field, patterns);
|
|
103
|
-
return this;
|
|
104
|
-
}
|
|
105
|
-
set(key, value) {
|
|
106
|
-
this.config[key] = value;
|
|
107
|
-
return this;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
exports.FieldRedactorConfigBuilder = FieldRedactorConfigBuilder;
|
|
111
|
-
//# sourceMappingURL=fieldRedactorConfigBuilder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactorConfigBuilder.js","sourceRoot":"","sources":["../src/fieldRedactorConfigBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { CustomObjectManager } from './customObjectManager';
|
|
2
|
-
import { ObjectRedactor } from './objectRedactor';
|
|
3
|
-
import { PrimitiveRedactor } from './primitiveRedactor';
|
|
4
|
-
import { SecretManager } from './secretManager';
|
|
5
|
-
import { FieldRedactorConfig } from './types';
|
|
6
|
-
import { PathRuleMatcher } from './pathRuleMatcher';
|
|
7
|
-
import { ValuePatternMatcher } from './valuePatternMatcher';
|
|
8
|
-
export type FieldRedactorDeps = {
|
|
9
|
-
primitiveRedactor: PrimitiveRedactor;
|
|
10
|
-
secretManager: SecretManager;
|
|
11
|
-
valuePatternMatcher: ValuePatternMatcher;
|
|
12
|
-
pathRuleMatcher: PathRuleMatcher;
|
|
13
|
-
customObjectManager: CustomObjectManager;
|
|
14
|
-
objectRedactor: ObjectRedactor;
|
|
15
|
-
usesAsyncRedactor: boolean;
|
|
16
|
-
cloneInput: boolean;
|
|
17
|
-
};
|
|
18
|
-
export declare const buildFieldRedactorDeps: (config?: FieldRedactorConfig) => FieldRedactorDeps;
|
|
19
|
-
//# sourceMappingURL=fieldRedactorDeps.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactorDeps.d.ts","sourceRoot":"","sources":["../src/fieldRedactorDeps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAA2B,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAA+B,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEzF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,eAAe,EAAE,eAAe,CAAC;IACjC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAKF,eAAO,MAAM,sBAAsB,YAAa,mBAAmB,KAAG,iBAgDrE,CAAC"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildFieldRedactorDeps = void 0;
|
|
4
|
-
const customObjectManager_1 = require("./customObjectManager");
|
|
5
|
-
const objectRedactor_1 = require("./objectRedactor");
|
|
6
|
-
const primitiveRedactor_1 = require("./primitiveRedactor");
|
|
7
|
-
const redactionRules_1 = require("./redactionRules");
|
|
8
|
-
const secretManager_1 = require("./secretManager");
|
|
9
|
-
const pathRuleMatcher_1 = require("./pathRuleMatcher");
|
|
10
|
-
const valuePatternMatcher_1 = require("./valuePatternMatcher");
|
|
11
|
-
const resolveBoolean = (value, defaultValue) => typeof value === 'boolean' ? value : defaultValue;
|
|
12
|
-
const buildFieldRedactorDeps = (config) => {
|
|
13
|
-
const { redactor, syncRedactor, deepSecretKeys, fullSecretKeys, deleteSecretKeys, customObjects, valuePatterns, pathRules, passKeys } = config !== null && config !== void 0 ? config : {};
|
|
14
|
-
const primitiveRedactor = new primitiveRedactor_1.PrimitiveRedactor({
|
|
15
|
-
ignoreBooleans: resolveBoolean(config === null || config === void 0 ? void 0 : config.ignoreBooleans, false),
|
|
16
|
-
ignoreNullOrUndefined: resolveBoolean(config === null || config === void 0 ? void 0 : config.ignoreNullOrUndefined, true),
|
|
17
|
-
redactor,
|
|
18
|
-
syncRedactor
|
|
19
|
-
});
|
|
20
|
-
const secretManager = new secretManager_1.SecretManager({
|
|
21
|
-
secretKeys: (0, redactionRules_1.resolveSecretKeys)(config),
|
|
22
|
-
deepSecretKeys,
|
|
23
|
-
fullSecretKeys,
|
|
24
|
-
deleteSecretKeys,
|
|
25
|
-
passKeys
|
|
26
|
-
});
|
|
27
|
-
const valuePatternMatcher = (valuePatterns === null || valuePatterns === void 0 ? void 0 : valuePatterns.length) ? new valuePatternMatcher_1.ValuePatternMatcher(valuePatterns) : valuePatternMatcher_1.EMPTY_VALUE_PATTERN_MATCHER;
|
|
28
|
-
const pathRuleMatcher = (pathRules === null || pathRules === void 0 ? void 0 : pathRules.length) ? new pathRuleMatcher_1.PathRuleMatcher(pathRules) : pathRuleMatcher_1.EMPTY_PATH_RULE_MATCHER;
|
|
29
|
-
const customObjectManager = new customObjectManager_1.CustomObjectManager(customObjects, config === null || config === void 0 ? void 0 : config.schemaNames);
|
|
30
|
-
const objectRedactor = new objectRedactor_1.ObjectRedactor(primitiveRedactor, secretManager, customObjectManager, valuePatternMatcher, pathRuleMatcher);
|
|
31
|
-
return {
|
|
32
|
-
primitiveRedactor,
|
|
33
|
-
secretManager,
|
|
34
|
-
valuePatternMatcher,
|
|
35
|
-
pathRuleMatcher,
|
|
36
|
-
customObjectManager,
|
|
37
|
-
objectRedactor,
|
|
38
|
-
usesAsyncRedactor: primitiveRedactor.usesAsyncRedactor(),
|
|
39
|
-
cloneInput: (config === null || config === void 0 ? void 0 : config.cloneInput) !== false
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
exports.buildFieldRedactorDeps = buildFieldRedactorDeps;
|
|
43
|
-
//# sourceMappingURL=fieldRedactorDeps.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRedactorDeps.js","sourceRoot":"","sources":["../src/fieldRedactorDeps.ts"],"names":[],"mappings":";;;AAAA,+DAA4D;AAC5D,qDAAkD;AAClD,2DAAwD;AACxD,qDAAqD;AACrD,mDAAgD;AAEhD,uDAA6E;AAC7E,+DAAyF;AAazF,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAE,YAAqB,EAAW,EAAE,CACpF,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;AAE7C,MAAM,sBAAsB,GAAG,CAAC,MAA4B,EAAqB,EAAE;IACxF,MAAM,EACJ,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,SAAS,EACT,QAAQ,EACT,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;IAEjB,MAAM,iBAAiB,GAAG,IAAI,qCAAiB,CAAC;QAC9C,cAAc,EAAE,cAAc,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,EAAE,KAAK,CAAC;QAC7D,qBAAqB,EAAE,cAAc,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,qBAAqB,EAAE,IAAI,CAAC;QAC1E,QAAQ;QACR,YAAY;KACb,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC;QACtC,UAAU,EAAE,IAAA,kCAAiB,EAAC,MAAM,CAAC;QACrC,cAAc;QACd,cAAc;QACd,gBAAgB;QAChB,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,mBAAmB,GAAG,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,EAAC,CAAC,CAAC,IAAI,yCAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,iDAA2B,CAAC;IACzH,MAAM,eAAe,GAAG,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,EAAC,CAAC,CAAC,IAAI,iCAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,yCAAuB,CAAC;IACrG,MAAM,mBAAmB,GAAG,IAAI,yCAAmB,CAAC,aAAa,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAC,CAAC;IACxF,MAAM,cAAc,GAAG,IAAI,+BAAc,CACvC,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,CAChB,CAAC;IAEF,OAAO;QACL,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,eAAe;QACf,mBAAmB;QACnB,cAAc;QACd,iBAAiB,EAAE,iBAAiB,CAAC,iBAAiB,EAAE;QACxD,UAAU,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,MAAK,KAAK;KACzC,CAAC;AACJ,CAAC,CAAC;AAhDW,QAAA,sBAAsB,0BAgDjC"}
|
package/dist/jsonWalk.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { JsonArray, JsonObject, JsonValue } from './types';
|
|
2
|
-
export { parseJsonPath } from './pathParsing';
|
|
3
|
-
export declare const getJsonValueAtPath: (value: JsonValue | undefined, segments: Array<string | number>) => JsonValue | undefined;
|
|
4
|
-
export declare const getParentContext: (value: JsonValue | undefined, segments: Array<string | number>) => {
|
|
5
|
-
parent: JsonObject | JsonArray | undefined;
|
|
6
|
-
leaf: string | number | undefined;
|
|
7
|
-
};
|
|
8
|
-
export declare const joinPath: (base: string, segment: string | number) => string;
|
|
9
|
-
export declare const isTraversableJson: (value: JsonValue | undefined) => value is JsonObject | JsonValue[];
|
|
10
|
-
export declare const walkTraversableJson: (value: JsonValue | undefined, path: string, visit: (value: JsonValue, path: string) => void) => void;
|
|
11
|
-
//# sourceMappingURL=jsonWalk.d.ts.map
|
package/dist/jsonWalk.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsonWalk.d.ts","sourceRoot":"","sources":["../src/jsonWalk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,eAAO,MAAM,kBAAkB,UAAW,SAAS,GAAG,SAAS,YAAY,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,SAAS,GAAG,SAsB/G,CAAC;AAEF,eAAO,MAAM,gBAAgB,UACpB,SAAS,GAAG,SAAS,YAClB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAC/B;IAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CASjF,CAAC;AAEF,eAAO,MAAM,QAAQ,SAAU,MAAM,WAAW,MAAM,GAAG,MAAM,KAAG,MACqD,CAAC;AAExH,eAAO,MAAM,iBAAiB,UAAW,SAAS,GAAG,SAAS,KAAG,KAAK,IAAI,UAAU,GAAG,SAAS,EAC9B,CAAC;AAEnE,eAAO,MAAM,mBAAmB,UACvB,SAAS,GAAG,SAAS,QACtB,MAAM,SACL,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,KAC9C,IAgBF,CAAC"}
|
package/dist/jsonWalk.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.walkTraversableJson = exports.isTraversableJson = exports.joinPath = exports.getParentContext = exports.getJsonValueAtPath = exports.parseJsonPath = void 0;
|
|
4
|
-
const types_1 = require("./types");
|
|
5
|
-
var pathParsing_1 = require("./pathParsing");
|
|
6
|
-
Object.defineProperty(exports, "parseJsonPath", { enumerable: true, get: function () { return pathParsing_1.parseJsonPath; } });
|
|
7
|
-
const getJsonValueAtPath = (value, segments) => {
|
|
8
|
-
let current = value;
|
|
9
|
-
for (const segment of segments) {
|
|
10
|
-
if (current === undefined || current === null || typeof current !== 'object') {
|
|
11
|
-
return undefined;
|
|
12
|
-
}
|
|
13
|
-
if (Array.isArray(current) && typeof segment === 'number') {
|
|
14
|
-
current = current[segment];
|
|
15
|
-
continue;
|
|
16
|
-
}
|
|
17
|
-
if ((0, types_1.isJsonObject)(current) && typeof segment === 'string') {
|
|
18
|
-
current = current[segment];
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
return undefined;
|
|
22
|
-
}
|
|
23
|
-
return current;
|
|
24
|
-
};
|
|
25
|
-
exports.getJsonValueAtPath = getJsonValueAtPath;
|
|
26
|
-
const getParentContext = (value, segments) => {
|
|
27
|
-
if (segments.length === 0) {
|
|
28
|
-
return { parent: undefined, leaf: undefined };
|
|
29
|
-
}
|
|
30
|
-
const leaf = segments.at(-1);
|
|
31
|
-
const parent = segments.length === 1 ? value : (0, exports.getJsonValueAtPath)(value, segments.slice(0, -1));
|
|
32
|
-
return (0, exports.isTraversableJson)(parent) ? { parent, leaf } : { parent: undefined, leaf };
|
|
33
|
-
};
|
|
34
|
-
exports.getParentContext = getParentContext;
|
|
35
|
-
const joinPath = (base, segment) => typeof segment === 'number' ? (base ? `${base}[${segment}]` : `[${segment}]`) : base ? `${base}.${segment}` : segment;
|
|
36
|
-
exports.joinPath = joinPath;
|
|
37
|
-
const isTraversableJson = (value) => !!value && typeof value === 'object' && !(value instanceof Date);
|
|
38
|
-
exports.isTraversableJson = isTraversableJson;
|
|
39
|
-
const walkTraversableJson = (value, path, visit) => {
|
|
40
|
-
if (!(0, exports.isTraversableJson)(value)) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
if (Array.isArray(value)) {
|
|
44
|
-
value.forEach((item, index) => (0, exports.walkTraversableJson)(item, (0, exports.joinPath)(path, index), visit));
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
if ((0, types_1.isJsonObject)(value)) {
|
|
48
|
-
visit(value, path);
|
|
49
|
-
for (const key of Object.keys(value)) {
|
|
50
|
-
(0, exports.walkTraversableJson)(value[key], (0, exports.joinPath)(path, key), visit);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
exports.walkTraversableJson = walkTraversableJson;
|
|
55
|
-
//# sourceMappingURL=jsonWalk.js.map
|
package/dist/jsonWalk.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsonWalk.js","sourceRoot":"","sources":["../src/jsonWalk.ts"],"names":[],"mappings":"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"}
|
package/dist/maybeAsync.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export type MaybeAsync<T> = T | Promise<T>;
|
|
2
|
-
export declare const awaitMaybe: <T>(value: MaybeAsync<T>) => Promise<T>;
|
|
3
|
-
/** Normalizes sync results for async traversal without forcing Promises on the sync path. */
|
|
4
|
-
export declare const resolveMaybeAsync: <T>(value: MaybeAsync<T>, asyncMode: boolean) => MaybeAsync<T>;
|
|
5
|
-
export declare const runSequential: <T>(items: readonly T[], process: (item: T, index: number) => MaybeAsync<void>, asyncMode: boolean) => MaybeAsync<void>;
|
|
6
|
-
export declare const finalizeMaybeAsync: <T>(work: MaybeAsync<void>, result: () => T, asyncMode: boolean) => MaybeAsync<T>;
|
|
7
|
-
//# sourceMappingURL=maybeAsync.d.ts.map
|
package/dist/maybeAsync.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"maybeAsync.d.ts","sourceRoot":"","sources":["../src/maybeAsync.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3C,eAAO,MAAM,UAAU,GAAU,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAAU,CAAC;AAE/E,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,aAAa,OAAO,KAAG,UAAU,CAAC,CAAC,CAU3F,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,CAAC,SACtB,SAAS,CAAC,EAAE,WACV,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC,IAAI,CAAC,aAC1C,OAAO,KACjB,UAAU,CAAC,IAAI,CAgBjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,CAAC,QAAQ,UAAU,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,aAAa,OAAO,KAAG,UAAU,CAAC,CAAC,CAa/G,CAAC"}
|
package/dist/maybeAsync.js
DELETED
|
@@ -1,56 +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.finalizeMaybeAsync = exports.runSequential = exports.resolveMaybeAsync = exports.awaitMaybe = void 0;
|
|
13
|
-
const awaitMaybe = (value) => __awaiter(void 0, void 0, void 0, function* () { return value; });
|
|
14
|
-
exports.awaitMaybe = awaitMaybe;
|
|
15
|
-
/** Normalizes sync results for async traversal without forcing Promises on the sync path. */
|
|
16
|
-
const resolveMaybeAsync = (value, asyncMode) => {
|
|
17
|
-
if (!asyncMode) {
|
|
18
|
-
if (value instanceof Promise) {
|
|
19
|
-
throw new Error('Unexpected async work on sync traversal path');
|
|
20
|
-
}
|
|
21
|
-
return value;
|
|
22
|
-
}
|
|
23
|
-
return value instanceof Promise ? value : Promise.resolve(value);
|
|
24
|
-
};
|
|
25
|
-
exports.resolveMaybeAsync = resolveMaybeAsync;
|
|
26
|
-
const runSequential = (items, process, asyncMode) => {
|
|
27
|
-
if (!asyncMode) {
|
|
28
|
-
for (let index = 0; index < items.length; index++) {
|
|
29
|
-
const result = process(items[index], index);
|
|
30
|
-
if (result instanceof Promise) {
|
|
31
|
-
throw new Error('Unexpected async work on sync traversal path');
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
return (() => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
-
for (let index = 0; index < items.length; index++) {
|
|
38
|
-
yield process(items[index], index);
|
|
39
|
-
}
|
|
40
|
-
}))();
|
|
41
|
-
};
|
|
42
|
-
exports.runSequential = runSequential;
|
|
43
|
-
const finalizeMaybeAsync = (work, result, asyncMode) => {
|
|
44
|
-
if (!asyncMode) {
|
|
45
|
-
if (work instanceof Promise) {
|
|
46
|
-
throw new Error('Unexpected async work on sync traversal path');
|
|
47
|
-
}
|
|
48
|
-
return result();
|
|
49
|
-
}
|
|
50
|
-
if (work instanceof Promise) {
|
|
51
|
-
return work.then(result);
|
|
52
|
-
}
|
|
53
|
-
return result();
|
|
54
|
-
};
|
|
55
|
-
exports.finalizeMaybeAsync = finalizeMaybeAsync;
|
|
56
|
-
//# sourceMappingURL=maybeAsync.js.map
|
package/dist/maybeAsync.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"maybeAsync.js","sourceRoot":"","sources":["../src/maybeAsync.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEO,MAAM,UAAU,GAAG,CAAU,KAAoB,EAAc,EAAE,kDAAC,OAAA,KAAK,CAAA,GAAA,CAAC;AAAlE,QAAA,UAAU,cAAwD;AAE/E,6FAA6F;AACtF,MAAM,iBAAiB,GAAG,CAAI,KAAoB,EAAE,SAAkB,EAAiB,EAAE;IAC9F,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC,CAAC;AAVW,QAAA,iBAAiB,qBAU5B;AAEK,MAAM,aAAa,GAAG,CAC3B,KAAmB,EACnB,OAAqD,EACrD,SAAkB,EACA,EAAE;IACpB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAS,EAAE;QACjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAA,CAAC,EAAE,CAAC;AACP,CAAC,CAAC;AApBW,QAAA,aAAa,iBAoBxB;AAEK,MAAM,kBAAkB,GAAG,CAAI,IAAsB,EAAE,MAAe,EAAE,SAAkB,EAAiB,EAAE;IAClH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,EAAE,CAAC;AAClB,CAAC,CAAC;AAbW,QAAA,kBAAkB,sBAa7B"}
|