UNPKG

@embrace-io/web-sdk

Version:
1 lines 1.65 kB
{"version":3,"file":"UserSpanProcessor.cjs","names":["ATTR_USER_ID"],"sources":["../../../src/processors/UserSpanProcessor/UserSpanProcessor.ts"],"sourcesContent":["import type { Span, SpanProcessor } from '@opentelemetry/sdk-trace';\nimport { ATTR_USER_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type { UserManager } from '../../api-users/index.ts';\nimport type { UserSpanProcessorArgs } from './types.ts';\n\n/**\n * UserSpanProcessor sets the userId attribute on all spans if the userId is set in the UserManager.\n */\nexport class UserSpanProcessor implements SpanProcessor {\n private readonly _userManager: UserManager;\n\n public constructor({ userManager }: UserSpanProcessorArgs) {\n this._userManager = userManager;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // Read the userId in onEnding to catch an identity set after the span started.\n public onEnding(span: Span): void {\n const userId = this._userManager.getUserId();\n\n if (userId) {\n span.attributes[ATTR_USER_ID] = userId;\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public onEnd(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,oBAAb,MAAwD;CACtD;CAEA,YAAmB,EAAE,eAAsC;EACzD,KAAK,eAAe;CACtB;CAEA,aAAmC;EACjC,OAAO,QAAQ,QAAQ,KAAA,CAAS;CAClC;CAGA,SAAgB,MAAkB;EAChC,MAAM,SAAS,KAAK,aAAa,UAAU;EAE3C,IAAI,QACF,KAAK,WAAWA,+CAAAA,gBAAgB;CAEpC;CAEA,UAAiC,CAEjC;CAEA,QAA+B,CAE/B;CAEA,WAAiC;EAC/B,OAAO,QAAQ,QAAQ,KAAA,CAAS;CAClC;AACF"}