{"version":3,"file":"initSDK-CA5vGy0p.mjs","names":["OTLPMetricExporterGRPC","OTLPMetricExporterHTTP","OTLPTraceExporterGRPC","OTLPTraceExporterHTTP"],"sources":["../src/context/AbstractAsyncHooksContextManager.ts","../src/context/MutableAsyncLocalStorageContextManager.ts","../src/context/contextManager.ts","../src/instrumentations/console.ts","../src/instrumentations/exceptions/ExceptionInstrumentation.ts","../src/instrumentations/exceptions/sentry.ts","../src/instrumentations/http.ts","../src/processors/CompositeSpanProcessor.ts","../src/processors/FilterWhenDrainedSpanProcessor.ts","../src/processors/NodeSpanProcessor.ts","../src/resources/nodeSdkResource.ts","../src/exporters/metricReader.ts","../src/exporters/traceExporter.ts","../src/sdk/sampler.ts","../src/sdk/config.ts","../src/sdk/state.ts","../src/sdk/initSDK.ts"],"sourcesContent":["/* eslint-disable */\nimport { Context, ContextManager } from '@opentelemetry/api';\nimport { EventEmitter } from 'node:events';\n\ntype Func<T = unknown> = (...args: unknown[]) => T;\n\ninterface PatchMap {\n  [name: string]: WeakMap<Func, Func>;\n}\n\nconst ADD_LISTENER_METHODS = [\n  'addListener' as const,\n  'on' as const,\n  'once' as const,\n  'prependListener' as const,\n  'prependOnceListener' as const,\n];\n\nexport abstract class AbstractAsyncHooksContextManager\n  implements ContextManager\n{\n  abstract active(): Context;\n\n  abstract with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n    context: Context,\n    fn: F,\n    thisArg?: ThisParameterType<F>,\n    ...args: A\n  ): ReturnType<F>;\n\n  abstract enable(): this;\n\n  abstract disable(): this;\n\n  bind<T>(context: Context, target: T): T {\n    if (target instanceof EventEmitter) {\n      return this._bindEventEmitter(context, target);\n    }\n    if (typeof target === 'function') {\n      return this._bindFunction(context, target);\n    }\n    return target;\n  }\n\n  private _bindFunction<T extends Function>(context: Context, target: T): T {\n    const manager = this;\n    const contextWrapper = function (this: never, ...args: unknown[]) {\n      return manager.with(context, () => target.apply(this, args));\n    };\n    Object.defineProperty(contextWrapper, 'length', {\n      enumerable: false,\n      configurable: true,\n      writable: false,\n      value: target.length,\n    });\n    return contextWrapper as never;\n  }\n\n  private _bindEventEmitter<T extends EventEmitter>(\n    context: Context,\n    ee: T,\n  ): T {\n    const map = this._getPatchMap(ee);\n    if (map !== undefined) {\n      return ee;\n    }\n    this._createPatchMap(ee);\n\n    ADD_LISTENER_METHODS.forEach((methodName) => {\n      if (ee[methodName] === undefined) {\n        return;\n      }\n      ee[methodName] = this._patchAddListener(ee, ee[methodName], context);\n    });\n    if (typeof ee.removeListener === 'function') {\n      ee.removeListener = this._patchRemoveListener(ee, ee.removeListener);\n    }\n    if (typeof ee.off === 'function') {\n      ee.off = this._patchRemoveListener(ee, ee.off);\n    }\n    if (typeof ee.removeAllListeners === 'function') {\n      ee.removeAllListeners = this._patchRemoveAllListeners(\n        ee,\n        ee.removeAllListeners,\n      );\n    }\n    return ee;\n  }\n\n  private _patchRemoveListener(ee: EventEmitter, original: Function) {\n    const contextManager = this;\n    return function (this: never, event: string, listener: Func) {\n      const events = contextManager._getPatchMap(ee)?.[event];\n      if (events === undefined) {\n        return original.call(this, event, listener);\n      }\n      const patchedListener = events.get(listener);\n      return original.call(this, event, patchedListener || listener);\n    };\n  }\n\n  private _patchRemoveAllListeners(ee: EventEmitter, original: Function) {\n    const contextManager = this;\n    return function (this: never, event: string) {\n      const map = contextManager._getPatchMap(ee);\n      if (map !== undefined) {\n        if (arguments.length === 0) {\n          contextManager._createPatchMap(ee);\n        } else if (map[event] !== undefined) {\n          delete map[event];\n        }\n      }\n      return original.apply(this, arguments);\n    };\n  }\n\n  private _patchAddListener(\n    ee: EventEmitter,\n    original: Function,\n    context: Context,\n  ) {\n    const contextManager = this;\n    return function (this: never, event: string, listener: Func) {\n      if (contextManager._wrapped) {\n        return original.call(this, event, listener);\n      }\n      let map = contextManager._getPatchMap(ee);\n      if (map === undefined) {\n        map = contextManager._createPatchMap(ee);\n      }\n      let listeners = map[event];\n      if (listeners === undefined) {\n        listeners = new WeakMap();\n        map[event] = listeners;\n      }\n      const patchedListener = contextManager.bind(context, listener);\n      listeners.set(listener, patchedListener);\n      contextManager._wrapped = true;\n      try {\n        return original.call(this, event, patchedListener);\n      } finally {\n        contextManager._wrapped = false;\n      }\n    };\n  }\n\n  private _createPatchMap(ee: EventEmitter): PatchMap {\n    const map = Object.create(null) as PatchMap;\n    (ee as any)[this._kOtListeners] = map;\n    return map;\n  }\n\n  private _getPatchMap(ee: EventEmitter): PatchMap | undefined {\n    return (ee as never)[this._kOtListeners];\n  }\n\n  private readonly _kOtListeners = Symbol('OtListeners');\n  private _wrapped = false;\n}\n","import { Context, ROOT_CONTEXT } from '@opentelemetry/api';\nimport { AsyncLocalStorage } from 'node:async_hooks';\nimport { AbstractAsyncHooksContextManager } from './AbstractAsyncHooksContextManager.ts';\n\nexport type MutableContextStore = {\n  context?: Context;\n  mutableContext?: {\n    traceAttributes: Map<string, unknown>;\n  };\n};\n\nexport class MutableAsyncLocalStorageContextManager extends AbstractAsyncHooksContextManager {\n  private readonly asyncLocalStorage: AsyncLocalStorage<MutableContextStore>;\n\n  constructor() {\n    super();\n    this.asyncLocalStorage = new AsyncLocalStorage<MutableContextStore>();\n  }\n\n  active(): Context {\n    return this.asyncLocalStorage.getStore()?.context ?? ROOT_CONTEXT;\n  }\n\n  with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n    context: Context,\n    fn: F,\n    thisArg?: ThisParameterType<F>,\n    ...args: A\n  ): ReturnType<F> {\n    const mutableContext = this.asyncLocalStorage.getStore()?.mutableContext ?? {\n      traceAttributes: new Map<string, unknown>(),\n    };\n    const callback = thisArg == null ? fn : fn.bind(thisArg);\n    return this.asyncLocalStorage.run(\n      { context, mutableContext },\n      callback as never,\n      ...args,\n    );\n  }\n\n  getMutableContext() {\n    return this.asyncLocalStorage.getStore()?.mutableContext;\n  }\n\n  enable(): this {\n    return this;\n  }\n\n  disable(): this {\n    this.asyncLocalStorage.disable();\n    return this;\n  }\n}\n","import { Attributes } from '@opentelemetry/api';\nimport { MutableAsyncLocalStorageContextManager } from './MutableAsyncLocalStorageContextManager.ts';\n\nlet mutableContextManager: MutableAsyncLocalStorageContextManager | undefined;\n\nexport function setMutableContextManager(\n  manager: MutableAsyncLocalStorageContextManager | undefined,\n) {\n  mutableContextManager = manager;\n}\n\nexport function getMutableContextManager() {\n  return mutableContextManager;\n}\n\nexport function setTraceAttributes(attributes: Attributes) {\n  const mutableContext = mutableContextManager?.getMutableContext();\n  if (!mutableContext) {\n    return;\n  }\n  for (const [key, value] of Object.entries(attributes)) {\n    mutableContext.traceAttributes.set(key, value);\n  }\n}\n\nexport function getTraceAttributes(): Attributes {\n  const mutableContext = mutableContextManager?.getMutableContext();\n  if (!mutableContext) {\n    return {};\n  }\n  return Object.fromEntries(mutableContext.traceAttributes) as Attributes;\n}\n","import opentelemetry, { Attributes } from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport isObject from 'lodash.isobject';\nimport isPlainObject from 'lodash.isplainobject';\nimport { getTraceAttributes } from '../context/index.ts';\nimport { OTelLogger } from '../logger/otelLogger.ts';\nimport { parseWinstonLog } from '../logger/winston.ts';\nimport type { ResolvedSDKConfig } from '../sdk/types.ts';\n\nconst PACKAGE_NAME = '@safaricom-mxl/instrumentation-console';\nconst PACKAGE_VERSION = '0.0.4';\n\nfunction parseConsoleArgs(args: unknown[]) {\n  const stringified: unknown[] = [];\n  let firstObject: Record<string, unknown> | undefined;\n\n  for (const arg of args) {\n    if (isObject(arg)) {\n      if (!firstObject && isPlainObject(arg)) {\n        firstObject = arg as Record<string, unknown>;\n      }\n      try {\n        stringified.push(JSON.stringify(arg));\n      } catch {\n        // ignore\n      }\n      continue;\n    }\n    stringified.push(arg);\n  }\n\n  return firstObject\n    ? {\n        ...firstObject,\n        ...(args.length > 1 ? { message: stringified.join(' ') } : {}),\n      }\n    : stringified.join(' ');\n}\n\nexport interface ConsoleInstrumentationConfig extends InstrumentationConfig {\n  config: ResolvedSDKConfig;\n}\n\nexport class ConsoleInstrumentation extends InstrumentationBase {\n  private readonly otelLogger: OTelLogger;\n\n  constructor(config: ConsoleInstrumentationConfig) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this.otelLogger = new OTelLogger({ config: config.config });\n  }\n\n  private patchConsoleMethod(type: string, ...args: unknown[]) {\n    const level = type === 'log' ? 'info' : type;\n    const parsed = parseWinstonLog(\n      {\n        message: parseConsoleArgs(args),\n        level,\n      } as never,\n    );\n    const activeSpan = opentelemetry.trace.getActiveSpan();\n    const spanContext = activeSpan?.spanContext();\n    let attributes: Attributes = {\n      ...parsed.meta,\n      ...(spanContext\n        ? {\n            trace_id: spanContext.traceId,\n            span_id: spanContext.spanId,\n            trace_flags: spanContext.traceFlags,\n          }\n        : {}),\n    };\n    if ((this.getConfig() as ConsoleInstrumentationConfig).config.betaMode) {\n      attributes = { ...attributes, ...getTraceAttributes() };\n    }\n    this.otelLogger.postMessage(parsed.level, parsed.message, attributes);\n  }\n\n  private wrapHandler(\n    type: 'debug' | 'log' | 'info' | 'warn' | 'error',\n    original: (...args: unknown[]) => unknown,\n  ) {\n    return (...args: unknown[]) => {\n      this.patchConsoleMethod(type, ...args);\n      return original.apply(this, args);\n    };\n  }\n\n  private onPatch(moduleExports: Console) {\n    this._wrap(moduleExports, 'debug', (original) =>\n      this.wrapHandler('debug', original),\n    );\n    this._wrap(moduleExports, 'log', (original) => this.wrapHandler('log', original));\n    this._wrap(moduleExports, 'info', (original) =>\n      this.wrapHandler('info', original),\n    );\n    this._wrap(moduleExports, 'warn', (original) =>\n      this.wrapHandler('warn', original),\n    );\n    this._wrap(moduleExports, 'error', (original) =>\n      this.wrapHandler('error', original),\n    );\n    return moduleExports;\n  }\n\n  private onUnpatch(moduleExports: Console) {\n    this._unwrap(moduleExports, 'debug');\n    this._unwrap(moduleExports, 'log');\n    this._unwrap(moduleExports, 'info');\n    this._unwrap(moduleExports, 'warn');\n    this._unwrap(moduleExports, 'error');\n  }\n\n  init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'console',\n        ['*'],\n        (moduleExports: Console) => this.onPatch(moduleExports),\n        (moduleExports: Console) => {\n          this.onUnpatch(moduleExports);\n          return moduleExports;\n        },\n      ),\n    ];\n  }\n}\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n} from '@opentelemetry/instrumentation';\nimport { recordException } from './recordException.ts';\n\nexport type ExceptionInstrumentationConfig = {\n  captureExceptionHook?: (error: unknown) => void;\n  forceFlush?: () => Promise<void>;\n  unhandledRejectionMode?: 'none' | 'warn' | 'strict';\n  exitEvenIfOtherHandlersAreRegistered?: boolean;\n} & InstrumentationConfig;\n\nexport class ExceptionInstrumentation extends InstrumentationBase {\n  private forceFlush?: () => Promise<void>;\n  private uncaughtExceptionListener?: (error: Error) => void;\n  private unhandledRejectionListener?: (reason: unknown) => void;\n\n  constructor(config: ExceptionInstrumentationConfig = {}) {\n    super('@safaricom-mxl/instrumentation-exception', '0.0.4', config);\n    this.forceFlush = config.forceFlush;\n  }\n\n  init() {\n    return;\n  }\n\n  override enable() {\n    const config = this.getConfig() as ExceptionInstrumentationConfig;\n    const rejectionMode = config.unhandledRejectionMode ?? 'warn';\n\n    this.uncaughtExceptionListener = (error: Error) => {\n      config.captureExceptionHook?.(error);\n      void recordException(error).finally(() => {\n        void (config.forceFlush?.() ?? this.forceFlush?.());\n      });\n      if (config.exitEvenIfOtherHandlersAreRegistered) {\n        process.exitCode = 1;\n      }\n    };\n\n    this.unhandledRejectionListener = (reason: unknown) => {\n      config.captureExceptionHook?.(reason);\n      void recordException(reason).finally(() => {\n        if (rejectionMode === 'warn') {\n          console.warn(\n            'Unhandled promise rejection captured by MXL Node SDK. ' +\n              'Set unhandledRejectionMode=strict to terminate the process.',\n          );\n        }\n        if (rejectionMode === 'strict') {\n          void (config.forceFlush?.() ?? this.forceFlush?.()).finally(() => {\n            process.exitCode = 1;\n          });\n        }\n      });\n    };\n\n    process.on('uncaughtException', this.uncaughtExceptionListener);\n    process.on('unhandledRejection', this.unhandledRejectionListener);\n  }\n\n  override disable() {\n    if (this.uncaughtExceptionListener) {\n      process.off('uncaughtException', this.uncaughtExceptionListener);\n    }\n    if (this.unhandledRejectionListener) {\n      process.off('unhandledRejection', this.unhandledRejectionListener);\n    }\n    this.uncaughtExceptionListener = undefined;\n    this.unhandledRejectionListener = undefined;\n  }\n}\n","import { createRequire } from 'node:module';\n\nconst require = createRequire(import.meta.url);\n\nexport type SentryBridge = {\n  captureException: (error: unknown) => void;\n};\n\nexport function createSentryBridge(\n  enabled: boolean,\n): SentryBridge | undefined {\n  if (!enabled) {\n    return undefined;\n  }\n\n  try {\n    const sentry = require('@sentry/node');\n    return {\n      captureException(error: unknown) {\n        sentry.captureException(error);\n      },\n    };\n  } catch {\n    return undefined;\n  }\n}\n","import { Span, diag } from '@opentelemetry/api';\nimport * as http from 'node:http';\nimport { PassThrough, Readable } from 'node:stream';\nimport zlib from 'node:zlib';\n\nconst SENSITIVE_DATA_SUBSTITUTE = '[Filtered]';\n\nconst DEFAULT_DENYLIST = [\n  'password',\n  'passwd',\n  'secret',\n  'api_key',\n  'apikey',\n  'auth',\n  'credentials',\n  'private_key',\n  'token',\n  'session',\n  'cookie',\n  'authorization',\n  'x_api_key',\n  '_csrf',\n  'phpsessid',\n  'xsrf-token',\n];\n\nfunction captureSelectedHeaders(\n  span: Span,\n  prefix: 'request' | 'response',\n  headers: string[],\n  getter: (header: string) => unknown,\n) {\n  for (const header of headers) {\n    const value = getter(header);\n    if (Array.isArray(value)) {\n      span.setAttribute(`http.${prefix}.header.${header.toLowerCase()}`, value.join(','));\n    } else if (value != null) {\n      span.setAttribute(\n        `http.${prefix}.header.${header.toLowerCase()}`,\n        String(value),\n      );\n    }\n  }\n}\n\nexport function splitCommaSeparatedStrings(headers?: string) {\n  return headers?.split(',').map((header) => header.trim()).filter(Boolean);\n}\n\nexport function getShouldRecordBody(defaultFilter?: string) {\n  return (body: string) => {\n    const lowerCaseBody = body.toLowerCase();\n    const keywords =\n      splitCommaSeparatedStrings(defaultFilter)?.map((item) => item.toLowerCase()) ??\n      DEFAULT_DENYLIST;\n    return !keywords.some((keyword) => lowerCaseBody.includes(keyword));\n  };\n}\n\nfunction interceptReadableStream(stream: Readable, passThrough: PassThrough) {\n  const emit = stream.emit;\n  stream.emit = function (\n    this: Readable,\n    event: string | symbol,\n    ...args: unknown[]\n  ) {\n    if (event === 'data') passThrough.write(args[0]);\n    else if (event === 'end') passThrough.end();\n    return emit.call(this, event, ...args);\n  } as typeof stream.emit;\n  return stream;\n}\n\nfunction captureBodyAttribute({\n  targetSpan,\n  attributeName,\n  body,\n  shouldRecordBody,\n}: {\n  targetSpan: Span;\n  attributeName: 'http.request.body' | 'http.response.body';\n  body: string;\n  shouldRecordBody: (body: string) => boolean;\n}) {\n  if (!targetSpan.isRecording()) return;\n  targetSpan.setAttribute(\n    attributeName,\n    shouldRecordBody(body) ? body : SENSITIVE_DATA_SUBSTITUTE,\n  );\n}\n\nfunction handleOutgoingClientRequest({\n  request,\n  span,\n  shouldRecordBody,\n  captureHeaders,\n}: {\n  request: http.ClientRequest;\n  span: Span;\n  shouldRecordBody: (body: string) => boolean;\n  captureHeaders?: string;\n}) {\n  try {\n    const headers = splitCommaSeparatedStrings(captureHeaders) ?? request.getRawHeaderNames();\n    captureSelectedHeaders(span, 'request', headers, (header) =>\n      request.getHeader(header),\n    );\n  } catch (error) {\n    diag.debug('Failed to capture outgoing request headers', error);\n  }\n\n  const chunks: Buffer[] = [];\n  const oldWrite = request.write.bind(request);\n  request.write = ((data: unknown) => {\n    chunks.push(Buffer.isBuffer(data) ? data : Buffer.from(String(data)));\n    return oldWrite(data as never);\n  }) as never;\n\n  const oldEnd = request.end.bind(request);\n  request.end = ((data: unknown) => {\n    if (data != null) {\n      chunks.push(Buffer.isBuffer(data) ? data : Buffer.from(String(data)));\n    }\n    if (chunks.length > 0) {\n      captureBodyAttribute({\n        targetSpan: span,\n        attributeName: 'http.request.body',\n        body: Buffer.concat(chunks).toString('utf8'),\n        shouldRecordBody,\n      });\n    }\n    return oldEnd(data as never);\n  }) as never;\n}\n\nfunction handleIncomingServerRequest({\n  request,\n  span,\n  shouldRecordBody,\n  captureHeaders,\n  headerAttributeMap,\n}: {\n  request: http.IncomingMessage;\n  span: Span;\n  shouldRecordBody: (body: string) => boolean;\n  captureHeaders?: string;\n  headerAttributeMap?: Record<string, string>;\n}) {\n  try {\n    const headers = splitCommaSeparatedStrings(captureHeaders) ?? Object.keys(request.headers);\n    captureSelectedHeaders(span, 'request', headers, (header) => request.headers[header]);\n  } catch (error) {\n    diag.debug('Failed to capture incoming request headers', error);\n  }\n\n  if (headerAttributeMap) {\n    for (const [headerName, attributeName] of Object.entries(headerAttributeMap)) {\n      const value = request.headers[headerName];\n      if (Array.isArray(value)) {\n        span.setAttribute(attributeName, value.join(','));\n      } else if (value) {\n        span.setAttribute(attributeName, value);\n      }\n    }\n  }\n\n  const chunks: Buffer[] = [];\n  const passThrough = new PassThrough();\n  passThrough.on('data', (chunk) => {\n    chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));\n  });\n  passThrough.on('end', () => {\n    if (chunks.length === 0) {\n      return;\n    }\n    captureBodyAttribute({\n      targetSpan: span,\n      attributeName: 'http.request.body',\n      body: Buffer.concat(chunks).toString('utf8'),\n      shouldRecordBody,\n    });\n  });\n  interceptReadableStream(request, passThrough);\n}\n\nfunction handleIncomingServerResponse({\n  response,\n  span,\n  shouldRecordBody,\n  captureHeaders,\n}: {\n  response: http.ServerResponse;\n  span: Span;\n  shouldRecordBody: (body: string) => boolean;\n  captureHeaders?: string;\n}) {\n  const chunks: Buffer[] = [];\n  const oldWrite = response.write.bind(response);\n  response.write = ((data: unknown) => {\n    chunks.push(Buffer.isBuffer(data) ? data : Buffer.from(String(data)));\n    return oldWrite(data as never);\n  }) as never;\n\n  const oldEnd = response.end.bind(response);\n  response.end = ((data: unknown) => {\n    if (data != null) {\n      chunks.push(Buffer.isBuffer(data) ? data : Buffer.from(String(data)));\n    }\n    if (chunks.length > 0) {\n      const payload = Buffer.concat(chunks);\n      const isGzip = response.getHeader('content-encoding') === 'gzip';\n      const body = (isGzip ? zlib.gunzipSync(payload) : payload).toString('utf8');\n      captureBodyAttribute({\n        targetSpan: span,\n        attributeName: 'http.response.body',\n        body,\n        shouldRecordBody,\n      });\n    }\n\n    try {\n      const headers = splitCommaSeparatedStrings(captureHeaders) ?? response.getHeaderNames();\n      captureSelectedHeaders(span, 'response', headers, (header) =>\n        response.getHeader(header),\n      );\n    } catch (error) {\n      diag.debug('Failed to capture incoming response headers', error);\n    }\n    return oldEnd(data as never);\n  }) as never;\n}\n\nfunction handleOutgoingClientResponse({\n  response,\n  span,\n  shouldRecordBody,\n  captureHeaders,\n}: {\n  response: http.IncomingMessage;\n  span: Span;\n  shouldRecordBody: (body: string) => boolean;\n  captureHeaders?: string;\n}) {\n  try {\n    const headers = splitCommaSeparatedStrings(captureHeaders) ?? Object.keys(response.headers);\n    captureSelectedHeaders(span, 'response', headers, (header) => response.headers[header]);\n  } catch (error) {\n    diag.debug('Failed to capture outgoing response headers', error);\n  }\n\n  const chunks: Buffer[] = [];\n  const passThrough = new PassThrough();\n  passThrough.on('data', (chunk) => {\n    chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));\n  });\n  passThrough.on('end', () => {\n    if (chunks.length === 0) {\n      return;\n    }\n    const payload = Buffer.concat(chunks);\n    const isGzip = response.headers['content-encoding'] === 'gzip';\n    const body = (isGzip ? zlib.gunzipSync(payload) : payload).toString('utf8');\n    captureBodyAttribute({\n      targetSpan: span,\n      attributeName: 'http.response.body',\n      body,\n      shouldRecordBody,\n    });\n  });\n  interceptReadableStream(response, passThrough);\n}\n\nexport function getAdvancedHttpInstrumentationConfig({\n  captureBodyKeywordsFilter,\n  captureHeadersClientRequest,\n  captureHeadersClientResponse,\n  captureHeadersServerRequest,\n  captureHeadersServerResponse,\n  headerAttributeMap,\n}: {\n  captureBodyKeywordsFilter?: string;\n  captureHeadersClientRequest?: string;\n  captureHeadersClientResponse?: string;\n  captureHeadersServerRequest?: string;\n  captureHeadersServerResponse?: string;\n  headerAttributeMap?: Record<string, string>;\n}) {\n  const shouldRecordBody = getShouldRecordBody(captureBodyKeywordsFilter);\n\n  return {\n    requestHook(span: Span, request: http.ClientRequest | http.IncomingMessage) {\n      if (request instanceof http.ClientRequest) {\n        handleOutgoingClientRequest({\n          request,\n          span,\n          shouldRecordBody,\n          captureHeaders: captureHeadersClientRequest,\n        });\n      } else {\n        handleIncomingServerRequest({\n          request,\n          span,\n          shouldRecordBody,\n          captureHeaders: captureHeadersServerRequest,\n          headerAttributeMap,\n        });\n      }\n    },\n    responseHook(span: Span, response: http.ServerResponse | http.IncomingMessage) {\n      if (response instanceof http.ServerResponse) {\n        handleIncomingServerResponse({\n          response,\n          span,\n          shouldRecordBody,\n          captureHeaders: captureHeadersServerResponse,\n        });\n      } else {\n        handleOutgoingClientResponse({\n          response,\n          span,\n          shouldRecordBody,\n          captureHeaders: captureHeadersClientResponse,\n        });\n      }\n    },\n  };\n}\n","import { Context, diag } from '@opentelemetry/api';\nimport type { ReadableSpan, Span, SpanProcessor } from '@opentelemetry/sdk-trace-base';\n\nexport class CompositeSpanProcessor implements SpanProcessor {\n  constructor(private readonly processors: SpanProcessor[]) {}\n\n  forceFlush() {\n    return Promise.all(\n      this.processors.map((processor) =>\n        processor.forceFlush().catch((error) => {\n          diag.error('@safaricom-mxl/node-sdk: forceFlush failed', error);\n        }),\n      ),\n    ).then(() => undefined);\n  }\n\n  shutdown() {\n    return Promise.all(\n      this.processors.map((processor) =>\n        processor.shutdown().catch((error) => {\n          diag.error('@safaricom-mxl/node-sdk: shutdown failed', error);\n        }),\n      ),\n    ).then(() => undefined);\n  }\n\n  onStart(span: Span, parentContext: Context) {\n    for (const processor of this.processors) {\n      processor.onStart(span, parentContext);\n    }\n  }\n\n  onEnd(span: ReadableSpan) {\n    for (const processor of this.processors) {\n      processor.onEnd(span);\n    }\n  }\n}\n","import { Context } from '@opentelemetry/api';\nimport type { ReadableSpan, Span, SpanProcessor } from '@opentelemetry/sdk-trace-base';\n\nexport class FilterWhenDrainedSpanProcessor implements SpanProcessor {\n  private drained = false;\n\n  constructor(private readonly delegate: SpanProcessor) {}\n\n  drain() {\n    this.drained = true;\n  }\n\n  onStart(span: Span, parentContext: Context) {\n    if (this.drained) {\n      return;\n    }\n    this.delegate.onStart(span, parentContext);\n  }\n\n  onEnd(span: ReadableSpan) {\n    if (this.drained) {\n      return;\n    }\n    this.delegate.onEnd(span);\n  }\n\n  forceFlush() {\n    return this.delegate.forceFlush();\n  }\n\n  shutdown() {\n    this.drained = true;\n    return this.delegate.shutdown();\n  }\n}\n","import { Context } from '@opentelemetry/api';\nimport { BatchSpanProcessor, Span, SpanExporter } from '@opentelemetry/sdk-trace-base';\nimport { getTraceAttributes } from '../context/index.ts';\n\nexport class NodeSpanProcessor extends BatchSpanProcessor {\n  constructor(exporter: SpanExporter) {\n    super(exporter);\n  }\n\n  private applyTraceAttributes(span: Span) {\n    const attributes = getTraceAttributes();\n    for (const [key, value] of Object.entries(attributes)) {\n      if (span.attributes[key] == null) {\n        span.setAttribute(key, value as never);\n      }\n    }\n  }\n\n  onStart(span: Span, parentContext: Context) {\n    this.applyTraceAttributes(span);\n    super.onStart(span, parentContext);\n  }\n\n  onEnd(span: Span) {\n    // Best effort: some instrumentations end spans with a stale context.\n    // We temporarily re-open to append inherited attributes before export.\n    (span as unknown as { _ended?: boolean })._ended = false;\n    this.applyTraceAttributes(span);\n    (span as unknown as { _ended?: boolean })._ended = true;\n    super.onEnd(span);\n  }\n}\n","import { resourceFromAttributes, defaultServiceName } from '@opentelemetry/resources';\nimport {\n  ATTR_SERVICE_NAME,\n  ATTR_SERVICE_VERSION,\n  ATTR_TELEMETRY_SDK_NAME,\n  ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { NODE_SDK_NAME, NODE_SDK_VERSION } from '../constants/index.ts';\nimport type { ResolvedSDKConfig } from '../sdk/types.ts';\n\nexport function createNodeSdkResource(config: ResolvedSDKConfig) {\n  return resourceFromAttributes({\n    [ATTR_SERVICE_NAME]: config.serviceName || defaultServiceName(),\n    [ATTR_SERVICE_VERSION]: process.env.VERCEL_DEPLOYMENT_ID ?? process.env.npm_package_version,\n    [ATTR_TELEMETRY_SDK_NAME]: NODE_SDK_NAME,\n    [ATTR_TELEMETRY_SDK_VERSION]: NODE_SDK_VERSION,\n    'telemetry.distro.name': 'mxl-node-sdk',\n    'telemetry.distro.version': NODE_SDK_VERSION,\n    ...config.additionalResourceAttributes,\n  });\n}\n","import { OTLPMetricExporter as OTLPMetricExporterGRPC } from '@opentelemetry/exporter-metrics-otlp-grpc';\nimport { OTLPMetricExporter as OTLPMetricExporterHTTP } from '@opentelemetry/exporter-metrics-otlp-proto';\nimport { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';\nimport {\n  DEFAULT_METRIC_EXPORT_INTERVAL_MS,\n  DEFAULT_METRIC_EXPORT_TIMEOUT_MS,\n} from '../constants/index.ts';\nimport type { ResolvedSDKConfig } from '../sdk/types.ts';\nimport { parseOtlpHeaders } from '../utils/env.ts';\nimport { resolveOtlpExporterUrl } from './urls.ts';\n\nexport function createMetricReader(config: ResolvedSDKConfig) {\n  const url = resolveOtlpExporterUrl({\n    kind: 'metric',\n    endpoint: config.otlpEndpoint,\n  });\n  const headers = parseOtlpHeaders(config.otlpHeaders);\n\n  const exporter =\n    config.otlpProtocol === 'grpc'\n      ? new OTLPMetricExporterGRPC({ url, headers })\n      : new OTLPMetricExporterHTTP({ url, headers });\n\n  return new PeriodicExportingMetricReader({\n    exporter,\n    exportIntervalMillis: DEFAULT_METRIC_EXPORT_INTERVAL_MS,\n    exportTimeoutMillis: DEFAULT_METRIC_EXPORT_TIMEOUT_MS,\n  });\n}\n","import { OTLPTraceExporter as OTLPTraceExporterGRPC } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { OTLPTraceExporter as OTLPTraceExporterHTTP } from '@opentelemetry/exporter-trace-otlp-proto';\nimport {\n  DEFAULT_TRACE_TIMEOUT_MS,\n} from '../constants/index.ts';\nimport type { ResolvedSDKConfig } from '../sdk/types.ts';\nimport { parseOtlpHeaders } from '../utils/env.ts';\nimport { resolveOtlpExporterUrl } from './urls.ts';\n\nexport function createTraceExporter(config: ResolvedSDKConfig) {\n  const url = resolveOtlpExporterUrl({\n    kind: 'trace',\n    endpoint: config.otlpEndpoint,\n    explicitUrl: config.traceExporterUrl,\n  });\n  const headers = parseOtlpHeaders(config.otlpHeaders);\n\n  if (config.otlpProtocol === 'grpc') {\n    return new OTLPTraceExporterGRPC({\n      url,\n      timeoutMillis: DEFAULT_TRACE_TIMEOUT_MS,\n      headers,\n    } as ConstructorParameters<typeof OTLPTraceExporterGRPC>[0]);\n  }\n\n  return new OTLPTraceExporterHTTP({\n    url,\n    timeoutMillis: DEFAULT_TRACE_TIMEOUT_MS,\n    headers,\n  });\n}\n","import { diag } from '@opentelemetry/api';\nimport {\n  AlwaysOffSampler,\n  AlwaysOnSampler,\n  ParentBasedSampler,\n  TraceIdRatioBasedSampler,\n} from '@opentelemetry/sdk-trace-base';\nimport type { Sampler } from '@opentelemetry/sdk-trace-base';\nimport type { TraceSamplerName } from './types.ts';\n\nconst DEFAULT_RATIO = 1;\n\nexport function resolveTraceSampler(\n  traceSampler: TraceSamplerName | Sampler,\n  traceSamplerArg: string,\n): Sampler {\n  if (typeof traceSampler !== 'string') {\n    return traceSampler;\n  }\n\n  switch (traceSampler) {\n    case 'always_on':\n      return new AlwaysOnSampler();\n    case 'always_off':\n      return new AlwaysOffSampler();\n    case 'parentbased_always_on':\n      return new ParentBasedSampler({ root: new AlwaysOnSampler() });\n    case 'parentbased_always_off':\n      return new ParentBasedSampler({ root: new AlwaysOffSampler() });\n    case 'traceidratio':\n      return new TraceIdRatioBasedSampler(resolveSamplerRatio(traceSamplerArg));\n    case 'parentbased_traceidratio':\n      return new ParentBasedSampler({\n        root: new TraceIdRatioBasedSampler(resolveSamplerRatio(traceSamplerArg)),\n      });\n    default:\n      diag.error(\n        `@safaricom-mxl/node-sdk: unknown sampler \"${traceSampler}\", defaulting to always_on`,\n      );\n      return new AlwaysOnSampler();\n  }\n}\n\nfunction resolveSamplerRatio(arg: string): number {\n  const parsed = Number(arg);\n  if (!Number.isFinite(parsed) || parsed < 0 || parsed > 1) {\n    return DEFAULT_RATIO;\n  }\n  return parsed;\n}\n","import {\n  DEFAULT_ADVANCED_NETWORK_CAPTURE,\n  DEFAULT_BETA_MODE,\n  DEFAULT_CAPTURE_BODY_KEYWORDS_FILTER,\n  DEFAULT_CAPTURE_HEADERS_CLIENT_REQUEST,\n  DEFAULT_CAPTURE_HEADERS_CLIENT_RESPONSE,\n  DEFAULT_CAPTURE_HEADERS_SERVER_REQUEST,\n  DEFAULT_CAPTURE_HEADERS_SERVER_RESPONSE,\n  DEFAULT_CONSOLE_CAPTURE,\n  DEFAULT_EXCEPTION_CAPTURE_ENABLED,\n  DEFAULT_OTLP_PROTOCOL,\n  DEFAULT_SENTRY_INTEGRATION_ENABLED,\n  DEFAULT_SERVICE_NAME,\n  DEFAULT_STARTUP_LOGS_ENABLED,\n  DEFAULT_STOP_ON_TERMINATION_SIGNALS,\n  DEFAULT_TRACE_SAMPLER,\n  DEFAULT_TRACE_SAMPLER_ARG,\n} from '../constants/index.ts';\nimport {\n  getBooleanFromEnv,\n  getStringFromEnv,\n  parseHeaderAttributeMap,\n} from '../utils/env.ts';\nimport type { ResolvedSDKConfig, SDKConfig } from './types.ts';\n\nexport function resolveSDKConfig(config: SDKConfig = {}): ResolvedSDKConfig {\n  return {\n    additionalInstrumentations: config.additionalInstrumentations ?? [],\n    additionalResourceAttributes: config.additionalResourceAttributes ?? {},\n    advancedNetworkCapture:\n      config.advancedNetworkCapture ??\n      getBooleanFromEnv('MXL_NODE_ADVANCED_NETWORK_CAPTURE') ??\n      DEFAULT_ADVANCED_NETWORK_CAPTURE,\n    apiKey: config.apiKey ?? getStringFromEnv('MXL_API_KEY'),\n    betaMode:\n      config.betaMode ??\n      getBooleanFromEnv('MXL_NODE_BETA_MODE') ??\n      DEFAULT_BETA_MODE,\n    captureBodyKeywordsFilter:\n      config.captureBodyKeywordsFilter ??\n      getStringFromEnv('OTEL_INSTRUMENTATION_HTTP_CAPTURE_BODY_KEYWORDS_FILTER') ??\n      DEFAULT_CAPTURE_BODY_KEYWORDS_FILTER,\n    captureHeadersClientRequest:\n      config.captureHeadersClientRequest ??\n      getStringFromEnv('OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_CLIENT_REQUEST') ??\n      DEFAULT_CAPTURE_HEADERS_CLIENT_REQUEST,\n    captureHeadersClientResponse:\n      config.captureHeadersClientResponse ??\n      getStringFromEnv('OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_CLIENT_RESPONSE') ??\n      DEFAULT_CAPTURE_HEADERS_CLIENT_RESPONSE,\n    captureHeadersServerRequest:\n      config.captureHeadersServerRequest ??\n      getStringFromEnv('OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST') ??\n      DEFAULT_CAPTURE_HEADERS_SERVER_REQUEST,\n    captureHeadersServerResponse:\n      config.captureHeadersServerResponse ??\n      getStringFromEnv('OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE') ??\n      DEFAULT_CAPTURE_HEADERS_SERVER_RESPONSE,\n    consoleCapture:\n      config.consoleCapture ??\n      getBooleanFromEnv('MXL_NODE_CONSOLE_CAPTURE') ??\n      DEFAULT_CONSOLE_CAPTURE,\n    contextManager: config.contextManager,\n    detectResources: config.detectResources ?? true,\n    disableLogs: config.disableLogs ?? getStringFromEnv('OTEL_LOGS_EXPORTER') === 'none',\n    disableMetrics:\n      config.disableMetrics ?? getStringFromEnv('OTEL_METRICS_EXPORTER') === 'none',\n    disableStartupLogs:\n      config.disableStartupLogs ??\n      !(getBooleanFromEnv('MXL_STARTUP_LOGS') ?? DEFAULT_STARTUP_LOGS_ENABLED),\n    disableTracing:\n      config.disableTracing ?? getStringFromEnv('OTEL_TRACES_EXPORTER') === 'none',\n    exceptionCaptureEnabled:\n      config.exceptionCaptureEnabled ??\n      getBooleanFromEnv('MXL_NODE_EXPERIMENTAL_EXCEPTION_CAPTURE') ??\n      DEFAULT_EXCEPTION_CAPTURE_ENABLED,\n    headerAttributeMap:\n      config.headerAttributeMap ??\n      parseHeaderAttributeMap(getStringFromEnv('MXL_NODE_ROOT_SPAN_HEADER_ATTRIBUTES')),\n    instrumentations: config.instrumentations,\n    metricReader: config.metricReader,\n    otlpEndpoint: config.otlpEndpoint ?? getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT'),\n    otlpHeaders: config.otlpHeaders ?? getStringFromEnv('OTEL_EXPORTER_OTLP_HEADERS'),\n    otlpProtocol:\n      config.otlpProtocol ??\n      (getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL') as ResolvedSDKConfig['otlpProtocol'] | undefined) ??\n      DEFAULT_OTLP_PROTOCOL,\n    sentryIntegrationEnabled:\n      config.sentryIntegrationEnabled ??\n      getBooleanFromEnv('MXL_NODE_SENTRY_INTEGRATION_ENABLED') ??\n      DEFAULT_SENTRY_INTEGRATION_ENABLED,\n    serviceName: config.serviceName ?? getStringFromEnv('OTEL_SERVICE_NAME') ?? DEFAULT_SERVICE_NAME,\n    spanLimits: config.spanLimits,\n    spanProcessors: config.spanProcessors ?? [],\n    stopOnTerminationSignals:\n      config.stopOnTerminationSignals ??\n      getBooleanFromEnv('MXL_NODE_STOP_ON_TERMINATION_SIGNALS') ??\n      DEFAULT_STOP_ON_TERMINATION_SIGNALS,\n    traceExporterUrl: config.traceExporterUrl ?? getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT'),\n    traceSampler:\n      config.traceSampler ??\n      (getStringFromEnv('OTEL_TRACES_SAMPLER') as ResolvedSDKConfig['traceSampler']) ??\n      DEFAULT_TRACE_SAMPLER,\n    traceSamplerArg:\n      config.traceSamplerArg ??\n      getStringFromEnv('OTEL_TRACES_SAMPLER_ARG') ??\n      DEFAULT_TRACE_SAMPLER_ARG,\n  };\n}\n","import type { ResolvedSDKConfig } from './types.ts';\n\nlet activeConfig: ResolvedSDKConfig | undefined;\n\nexport function setActiveSDKConfig(config: ResolvedSDKConfig | undefined) {\n  activeConfig = config;\n}\n\nexport function getActiveSDKConfig() {\n  return activeConfig;\n}\n","import { diag } from '@opentelemetry/api';\nimport {\n  getNodeAutoInstrumentations,\n  InstrumentationConfigMap,\n} from '@opentelemetry/auto-instrumentations-node';\nimport { RuntimeNodeInstrumentation } from '@opentelemetry/instrumentation-runtime-node';\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport {\n  ConsoleInstrumentation,\n  ExceptionInstrumentation,\n  getAdvancedHttpInstrumentationConfig,\n} from '../instrumentations/index.ts';\nimport { createSentryBridge } from '../instrumentations/exceptions/sentry.ts';\nimport {\n  CompositeSpanProcessor,\n  FilterWhenDrainedSpanProcessor,\n  NodeSpanProcessor,\n} from '../processors/index.ts';\nimport { createNodeSdkResource } from '../resources/index.ts';\nimport { createMetricReader, createTraceExporter } from '../exporters/index.ts';\nimport { OTelLogger } from '../logger/otelLogger.ts';\nimport {\n  MutableAsyncLocalStorageContextManager,\n  setMutableContextManager,\n  setTraceAttributes,\n} from '../context/index.ts';\nimport { resolveTraceSampler } from './sampler.ts';\nimport { resolveSDKConfig } from './config.ts';\nimport { setActiveSDKConfig } from './state.ts';\nimport type { SDKConfig, SDKControl } from './types.ts';\n\nlet sdk: NodeSDK | undefined;\nlet logger: OTelLogger | undefined;\nlet contextManager: MutableAsyncLocalStorageContextManager | undefined;\nlet drainableSpanProcessor: FilterWhenDrainedSpanProcessor | undefined;\nlet signalHandlersRegistered = false;\n\nconst terminationHandlers: Array<[NodeJS.Signals, () => void]> = [];\n\nexport function initSDK(config: SDKConfig = {}): SDKControl {\n  const resolved = resolveSDKConfig(config);\n  setActiveSDKConfig(resolved);\n\n  if (sdk) {\n    return getControl();\n  }\n\n  if (!resolved.disableStartupLogs) {\n    diag.info('@safaricom-mxl/node-sdk: initializing');\n  }\n\n  contextManager =\n    resolved.contextManager instanceof MutableAsyncLocalStorageContextManager\n      ? resolved.contextManager\n      : new MutableAsyncLocalStorageContextManager();\n  setMutableContextManager(contextManager);\n\n  const autoInstrumentationConfig: InstrumentationConfigMap = {\n    '@opentelemetry/instrumentation-http': resolved.advancedNetworkCapture\n      ? getAdvancedHttpInstrumentationConfig({\n          captureBodyKeywordsFilter: resolved.captureBodyKeywordsFilter,\n          captureHeadersClientRequest: resolved.captureHeadersClientRequest,\n          captureHeadersClientResponse: resolved.captureHeadersClientResponse,\n          captureHeadersServerRequest: resolved.captureHeadersServerRequest,\n          captureHeadersServerResponse: resolved.captureHeadersServerResponse,\n          headerAttributeMap: resolved.headerAttributeMap,\n        })\n      : { enabled: true },\n    '@opentelemetry/instrumentation-fs': { enabled: false },\n    ...(resolved.instrumentations ?? {}),\n  };\n\n  logger = new OTelLogger({ config: resolved });\n  const traceExporter = createTraceExporter(resolved);\n  const traceProcessor = new NodeSpanProcessor(traceExporter as never);\n  const spanProcessors = resolved.disableTracing\n    ? []\n    : [\n        (drainableSpanProcessor = new FilterWhenDrainedSpanProcessor(\n          new CompositeSpanProcessor([traceProcessor, ...resolved.spanProcessors]),\n        )),\n      ];\n\n  const instrumentations = [\n    ...getNodeAutoInstrumentations(autoInstrumentationConfig),\n    new RuntimeNodeInstrumentation(),\n    ...(resolved.consoleCapture ? [new ConsoleInstrumentation({ config: resolved })] : []),\n    ...(resolved.exceptionCaptureEnabled\n      ? [\n          new ExceptionInstrumentation({\n            forceFlush,\n            captureExceptionHook: createSentryBridge(resolved.sentryIntegrationEnabled)\n              ?.captureException,\n          }),\n        ]\n      : []),\n    ...resolved.additionalInstrumentations,\n  ];\n\n  sdk = new NodeSDK({\n    resource: createNodeSdkResource(resolved),\n    contextManager,\n    instrumentations,\n    metricReaders: resolved.disableMetrics\n      ? undefined\n      : [resolved.metricReader ?? createMetricReader(resolved)],\n    logRecordProcessors: resolved.disableLogs ? [] : [logger.getProcessor()],\n    spanProcessors,\n    sampler: resolveTraceSampler(resolved.traceSampler, resolved.traceSamplerArg),\n    spanLimits: resolved.spanLimits,\n  } as unknown as ConstructorParameters<typeof NodeSDK>[0]);\n\n  sdk.start();\n  logger.setGlobalProvider();\n\n  if (resolved.stopOnTerminationSignals && !signalHandlersRegistered) {\n    registerTerminationHandlers();\n  }\n\n  if (!resolved.disableStartupLogs) {\n    diag.info('@safaricom-mxl/node-sdk: initialized');\n  }\n\n  return getControl();\n}\n\nfunction registerTerminationHandlers() {\n  const createTerminationHandler = (signal: NodeJS.Signals) => {\n    return () => {\n      diag.debug(`@safaricom-mxl/node-sdk: ${signal} received`);\n      void shutdown().finally(() => {\n        process.exit();\n      });\n    };\n  };\n\n  const sigterm = createTerminationHandler('SIGTERM');\n  const sigint = createTerminationHandler('SIGINT');\n\n  terminationHandlers.push(['SIGTERM', sigterm], ['SIGINT', sigint]);\n  process.on('SIGTERM', sigterm);\n  process.on('SIGINT', sigint);\n  signalHandlersRegistered = true;\n}\n\nexport async function forceFlush() {\n  await Promise.all([\n    logger?.forceFlush(),\n    // The tracer and meter providers are intentionally accessed through the NodeSDK internals.\n    // This keeps the flush API small while still forcing all active signals to drain.\n    (sdk as any)?._tracerProvider?.forceFlush?.(),\n    (sdk as any)?._loggerProvider?.forceFlush?.(),\n    (sdk as any)?._meterProvider?.forceFlush?.(),\n  ]);\n}\n\nexport function getInitializedOTelLogger() {\n  return logger;\n}\n\nexport async function shutdown() {\n  if (signalHandlersRegistered) {\n    for (const [signal, handler] of terminationHandlers) {\n      process.off(signal, handler);\n    }\n    terminationHandlers.length = 0;\n    signalHandlersRegistered = false;\n  }\n\n  drainableSpanProcessor?.drain();\n  await Promise.allSettled([logger?.shutdown(), sdk?.shutdown()]);\n  sdk = undefined;\n  logger = undefined;\n  drainableSpanProcessor = undefined;\n  setMutableContextManager(undefined);\n  setActiveSDKConfig(undefined);\n}\n\nfunction getControl(): SDKControl {\n  return {\n    forceFlush,\n    shutdown,\n    setTraceAttributes,\n  };\n}\n"],"mappings":"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"}