UNPKG

@embrace-io/web-sdk

Version:
56 lines (55 loc) 1.47 kB
import { ATTR_URL_FULL, ATTR_URL_PATH, ATTR_URL_QUERY } from "@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: ATTR_URL_FULL, scrub: (value) => scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }) }, { key: ATTR_URL_PATH, scrub: (value) => scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: false }) }, { key: ATTR_URL_QUERY, scrub: (value) => scrubURL({ value, queryParamRegex, scrubPath: false, scrubQuery: true }) } ]; }; //#endregion export { getDefaultAttributeScrubbers }; //# sourceMappingURL=defaultAttributeScrubbers.js.map