@embrace-io/web-sdk
Version:
57 lines (56 loc) • 1.67 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
let _opentelemetry_semantic_conventions = require("@opentelemetry/semantic-conventions");
//#region src/sdk/defaultAttributeScrubbers.ts
const HOST_CREDENTIALS_REGEX = /\/\/(.+):(.+)@(.+)\//;
const DEFAULT_SENSITIVE_TOKENS = [
"AWSAccessKeyId",
"Signature",
"sig",
"`X-Goog-Signature",
"password",
"auth",
"pw",
"token"
];
const scrubURL = ({ value, queryParamRegex, scrubPath, scrubQuery }) => {
let scrubbed = value;
if (scrubPath) scrubbed = scrubbed.replace(HOST_CREDENTIALS_REGEX, "//REDACTED:REDACTED@$3/");
if (scrubQuery) scrubbed = scrubbed.replaceAll(queryParamRegex, "$1$2=REDACTED");
return scrubbed;
};
const getDefaultAttributeScrubbers = (additionalSensitiveQueryTokens) => {
const sensitiveQueryTokens = [...DEFAULT_SENSITIVE_TOKENS, ...additionalSensitiveQueryTokens || []];
const queryParamRegex = new RegExp(`(^|&|\\?)(${sensitiveQueryTokens.join("|")})=[^&]+`, "g");
return [
{
key: _opentelemetry_semantic_conventions.ATTR_URL_FULL,
scrub: (value) => scrubURL({
value,
queryParamRegex,
scrubPath: true,
scrubQuery: true
})
},
{
key: _opentelemetry_semantic_conventions.ATTR_URL_PATH,
scrub: (value) => scrubURL({
value,
queryParamRegex,
scrubPath: true,
scrubQuery: false
})
},
{
key: _opentelemetry_semantic_conventions.ATTR_URL_QUERY,
scrub: (value) => scrubURL({
value,
queryParamRegex,
scrubPath: false,
scrubQuery: true
})
}
];
};
//#endregion
exports.getDefaultAttributeScrubbers = getDefaultAttributeScrubbers;
//# sourceMappingURL=defaultAttributeScrubbers.cjs.map