{"version":3,"file":"SpanScrubProcessor.cjs","names":[],"sources":["../../../src/processors/SpanScrubProcessor/SpanScrubProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport type { AttributeScrubber } from '../../common/index.ts';\nimport type { SpanScrubProcessorArgs } from './types.ts';\n\nexport class SpanScrubProcessor implements SpanProcessor {\n  private readonly _attributeScrubbers: AttributeScrubber[];\n\n  public constructor({ attributeScrubbers }: SpanScrubProcessorArgs) {\n    this._attributeScrubbers = attributeScrubbers;\n  }\n\n  public forceFlush(): Promise<void> {\n    return Promise.resolve(undefined);\n  }\n\n  // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n  public onEnd(span: ReadableSpan): void {\n    this._attributeScrubbers.forEach((scrubber) => {\n      const value = span.attributes[scrubber.key];\n      if (value && typeof value === 'string') {\n        span.attributes[scrubber.key] = scrubber.scrub(value);\n      }\n    });\n  }\n\n  public onStart(this: void): void {\n    // do nothing.\n  }\n\n  public shutdown(): Promise<void> {\n    return Promise.resolve(undefined);\n  }\n}\n"],"mappings":";;AAIA,IAAa,qBAAb,MAAyD;CACvD;CAEA,YAAmB,EAAE,sBAA8C;AACjE,OAAK,sBAAsB;;CAG7B,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAInC,MAAa,MAA0B;AACrC,OAAK,oBAAoB,SAAS,aAAa;GAC7C,MAAM,QAAQ,KAAK,WAAW,SAAS;AACvC,OAAI,SAAS,OAAO,UAAU,SAC5B,MAAK,WAAW,SAAS,OAAO,SAAS,MAAM,MAAM;IAEvD;;CAGJ,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}