{"version":3,"file":"SessionAPI.cjs","names":["NoOpUserSessionManager","ProxyUserSessionManager","createSafeProxy","diag"],"sources":["../../../../src/api-sessions/api/SessionAPI/SessionAPI.ts"],"sourcesContent":["import { diag } from '@opentelemetry/api';\nimport type { UserSessionManagerInternal } from '../../../managers/EmbraceUserSessionManager/types.ts';\nimport { createSafeProxy } from '../../../utils/index.ts';\nimport type { UserSessionManager } from '../../manager/index.ts';\nimport {\n  NoOpUserSessionManager,\n  ProxyUserSessionManager,\n} from '../../manager/index.ts';\n\n/**\n * Public interface for SessionAPI including SDK-internal methods.\n */\nexport interface SessionAPIInstance extends UserSessionManager {\n  /** @internal SDK use only */\n  setGlobalUserSessionManager(\n    userSessionManager: UserSessionManagerInternal,\n  ): void;\n  /** @internal SDK use only */\n  getUserSessionManager(): UserSessionManagerInternal;\n}\n\nconst NOOP_USER_SESSION_MANAGER = new NoOpUserSessionManager();\nconst INTERNAL_METHODS = new Set(['setDelegate', 'getDelegate']);\n\nexport class SessionAPI {\n  private static _instance?: SessionAPIInstance;\n\n  public static getInstance(): SessionAPIInstance {\n    if (!SessionAPI._instance) {\n      const proxyManager = new ProxyUserSessionManager();\n\n      const safeManager = createSafeProxy(\n        proxyManager,\n        NOOP_USER_SESSION_MANAGER,\n        diag.createComponentLogger({ namespace: 'SessionAPI' }),\n        INTERNAL_METHODS,\n      );\n\n      // Combine safe-wrapped manager methods with SDK-internal methods\n      SessionAPI._instance = Object.assign(safeManager, {\n        setGlobalUserSessionManager(\n          userSessionManager: UserSessionManagerInternal,\n        ): void {\n          proxyManager.setDelegate(userSessionManager);\n        },\n        getUserSessionManager(): UserSessionManagerInternal {\n          return proxyManager;\n        },\n      }) as SessionAPIInstance;\n    }\n\n    return SessionAPI._instance;\n  }\n\n  /** @internal For testing only. Resets the global singleton between tests. */\n  public static resetInstance(): void {\n    SessionAPI._instance = undefined;\n  }\n}\n"],"mappings":";;;;;;AAqBA,MAAM,4BAA4B,IAAIA,2EAAAA,uBAAuB;AAC7D,MAAM,mCAAmB,IAAI,IAAI,CAAC,eAAe,aAAa,CAAC;AAE/D,IAAa,aAAb,MAAa,WAAW;CACtB,OAAe;CAEf,OAAc,cAAkC;EAC9C,IAAI,CAAC,WAAW,WAAW;GACzB,MAAM,eAAe,IAAIC,6EAAAA,wBAAwB;GAEjD,MAAM,cAAcC,8CAAAA,gBAClB,cACA,2BACAC,mBAAAA,KAAK,sBAAsB,EAAE,WAAW,aAAa,CAAC,GACtD,gBACF;GAGA,WAAW,YAAY,OAAO,OAAO,aAAa;IAChD,4BACE,oBACM;KACN,aAAa,YAAY,kBAAkB;IAC7C;IACA,wBAAoD;KAClD,OAAO;IACT;GACF,CAAC;EACH;EAEA,OAAO,WAAW;CACpB;;CAGA,OAAc,gBAAsB;EAClC,WAAW,YAAY,KAAA;CACzB;AACF"}