@logtape/redaction
Version:
Redact sensitive data from log messages
30 lines (28 loc) • 947 B
JavaScript
//#region src/traversal.ts
const redactionTruncatedValue = "[truncated]";
const defaultMaxDepth = 20;
const defaultMaxProperties = 1e3;
function createRedactionTraversalContext(options, reportLimitExceeded, visited = /* @__PURE__ */ new Map()) {
const limits = {
maxDepth: normalizeLimit(options.maxDepth, defaultMaxDepth),
maxProperties: normalizeLimit(options.maxProperties, defaultMaxProperties)
};
const exceededLimits = /* @__PURE__ */ new Set();
return {
limits,
visited,
exceededLimits,
reportLimitExceeded(limit) {
exceededLimits.add(limit);
reportLimitExceeded(limit, limits);
}
};
}
function normalizeLimit(value, defaultValue) {
if (value == null) return defaultValue;
if (!Number.isFinite(value) || value < 0) return defaultValue;
return Math.floor(value);
}
//#endregion
exports.createRedactionTraversalContext = createRedactionTraversalContext;
exports.redactionTruncatedValue = redactionTruncatedValue;