@embrace-io/web-sdk
Version:
1 lines • 6.82 kB
Source Map (JSON)
{"version":3,"file":"EmbraceInstrumentationBase.cjs","names":["InstrumentationAbstract","OTelPerformanceManager","session","log"],"sources":["../../../src/instrumentations/EmbraceInstrumentationBase/EmbraceInstrumentationBase.ts"],"sourcesContent":["import type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport type { LogManager } from '../../api-logs/index.ts';\nimport { log } from '../../api-logs/index.ts';\nimport type { SessionPartStartedEvent } from '../../api-sessions/index.ts';\nimport { session } from '../../api-sessions/index.ts';\nimport type {\n LimitManagerInternal,\n UserSessionManagerInternal,\n} from '../../managers/index.ts';\nimport type { PerformanceManager } from '../../utils/index.ts';\nimport { OTelPerformanceManager } from '../../utils/index.ts';\nimport { InstrumentationAbstract } from '../InstrumentationAbstract/index.ts';\nimport type { EmbraceInstrumentationBaseArgs } from './types.ts';\n\ntype SessionPartListeners = {\n start?: (event: SessionPartStartedEvent) => void;\n end?: () => void;\n};\ntype RemoveSessionPartListeners = {\n start?: () => void;\n end?: () => void;\n};\nexport abstract class EmbraceInstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract<ConfigType>\n implements Instrumentation<ConfigType>\n{\n private _userSessionManager: UserSessionManagerInternal;\n private _logManager: LogManager;\n private readonly _perf: PerformanceManager;\n private _limitManager: LimitManagerInternal | undefined;\n protected _isEnabled = false;\n private _removeSessionPartListeners: RemoveSessionPartListeners = {};\n private _sessionPartListeners: SessionPartListeners = {};\n\n protected constructor({\n instrumentationName,\n instrumentationVersion,\n config,\n diag,\n perf,\n limitManager,\n }: EmbraceInstrumentationBaseArgs<ConfigType>) {\n super(instrumentationName, instrumentationVersion, config);\n // optionally override the diag logger from the base class\n if (diag) {\n this._diag = diag;\n }\n this._perf = perf ?? new OTelPerformanceManager();\n this._limitManager = limitManager;\n this._userSessionManager = session.getUserSessionManager();\n this._logManager = log.getLogManager();\n }\n\n /* Returns session provider */\n protected get userSessionManager(): UserSessionManagerInternal {\n return this._userSessionManager;\n }\n\n /* Returns log manager */\n protected get logManager(): LogManager {\n return this._logManager;\n }\n\n /* Returns the performance manager */\n protected get perf(): PerformanceManager {\n return this._perf;\n }\n\n /* Returns the limit manager */\n protected get limitManager(): LimitManagerInternal | undefined {\n return this._limitManager;\n }\n\n public setLimitManager(limitManager: LimitManagerInternal): void {\n this._limitManager = limitManager;\n }\n\n // no-op\n // Note: OTel uses `| void` but we use `| undefined` for semantic clarity.\n // `void` in union types is confusing because it mixes \"returns nothing\" with \"returns data or nothing\".\n // `undefined` better expresses the intent: this method may or may not return a value.\n protected override init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | undefined {\n return;\n }\n\n public setLogManager(logManager: LogManager): void {\n this._logManager = logManager;\n }\n\n public setUserSessionManager(\n userSessionManager: UserSessionManagerInternal,\n ): void {\n this._userSessionManager = userSessionManager;\n this._registerSessionPartListeners();\n }\n\n /*\n * Management of session part listeners\n */\n\n protected setSessionPartListeners(listeners: SessionPartListeners): void {\n this._sessionPartListeners = listeners;\n this._registerSessionPartListeners();\n }\n\n protected unregisterSessionPartListeners(): void {\n if (this._removeSessionPartListeners.start) {\n this._removeSessionPartListeners.start();\n }\n\n if (this._removeSessionPartListeners.end) {\n this._removeSessionPartListeners.end();\n }\n\n this._removeSessionPartListeners = {};\n }\n\n private _registerSessionPartListeners(): void {\n if (this._isEnabled && this.userSessionManager) {\n this.unregisterSessionPartListeners();\n\n if (this._sessionPartListeners.start) {\n this._removeSessionPartListeners.start =\n this.userSessionManager.addSessionPartStartedListener((event) =>\n this._sessionPartListeners.start?.(event),\n );\n }\n\n if (this._sessionPartListeners.end) {\n this._removeSessionPartListeners.end =\n this.userSessionManager.addSessionPartEndedListener(() =>\n this._sessionPartListeners.end?.(),\n );\n }\n }\n }\n\n public override disable(): void {\n if (!this._isEnabled) {\n return;\n }\n\n this._isEnabled = false;\n this.onDisable();\n this.unregisterSessionPartListeners();\n }\n\n public override enable(): void {\n if (this._isEnabled) {\n return;\n }\n\n this._isEnabled = true;\n this.onEnable();\n }\n\n /* Only triggered when the instrumentation transitions to disabled */\n protected abstract onDisable(): void;\n\n /* Only triggered when the instrumentation transitions to enabled */\n public abstract onEnable(): void;\n}\n"],"mappings":";;;;;;AA0BA,IAAsB,6BAAtB,cAGUA,yEAAAA,wBAEV;CACE;CACA;CACA;CACA;CACA,aAAuB;CACvB,8BAAkE,CAAC;CACnE,wBAAsD,CAAC;CAEvD,YAAsB,EACpB,qBACA,wBACA,QACA,MACA,MACA,gBAC6C;EAC7C,MAAM,qBAAqB,wBAAwB,MAAM;EAEzD,IAAI,MACF,KAAK,QAAQ;EAEf,KAAK,QAAQ,QAAQ,IAAIC,wDAAAA,uBAAuB;EAChD,KAAK,gBAAgB;EACrB,KAAK,sBAAsBC,gCAAAA,QAAQ,sBAAsB;EACzD,KAAK,cAAcC,wBAAAA,IAAI,cAAc;CACvC;CAGA,IAAc,qBAAiD;EAC7D,OAAO,KAAK;CACd;CAGA,IAAc,aAAyB;EACrC,OAAO,KAAK;CACd;CAGA,IAAc,OAA2B;EACvC,OAAO,KAAK;CACd;CAGA,IAAc,eAAiD;EAC7D,OAAO,KAAK;CACd;CAEA,gBAAuB,cAA0C;EAC/D,KAAK,gBAAgB;CACvB;CAMA,OAGc,CAEd;CAEA,cAAqB,YAA8B;EACjD,KAAK,cAAc;CACrB;CAEA,sBACE,oBACM;EACN,KAAK,sBAAsB;EAC3B,KAAK,8BAA8B;CACrC;CAMA,wBAAkC,WAAuC;EACvE,KAAK,wBAAwB;EAC7B,KAAK,8BAA8B;CACrC;CAEA,iCAAiD;EAC/C,IAAI,KAAK,4BAA4B,OACnC,KAAK,4BAA4B,MAAM;EAGzC,IAAI,KAAK,4BAA4B,KACnC,KAAK,4BAA4B,IAAI;EAGvC,KAAK,8BAA8B,CAAC;CACtC;CAEA,gCAA8C;EAC5C,IAAI,KAAK,cAAc,KAAK,oBAAoB;GAC9C,KAAK,+BAA+B;GAEpC,IAAI,KAAK,sBAAsB,OAC7B,KAAK,4BAA4B,QAC/B,KAAK,mBAAmB,+BAA+B,UACrD,KAAK,sBAAsB,QAAQ,KAAK,CAC1C;GAGJ,IAAI,KAAK,sBAAsB,KAC7B,KAAK,4BAA4B,MAC/B,KAAK,mBAAmB,kCACtB,KAAK,sBAAsB,MAAM,CACnC;EAEN;CACF;CAEA,UAAgC;EAC9B,IAAI,CAAC,KAAK,YACR;EAGF,KAAK,aAAa;EAClB,KAAK,UAAU;EACf,KAAK,+BAA+B;CACtC;CAEA,SAA+B;EAC7B,IAAI,KAAK,YACP;EAGF,KAAK,aAAa;EAClB,KAAK,SAAS;CAChB;AAOF"}