{"version":3,"file":"trace.mjs","names":[],"sources":["../../src/api/trace.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n  getGlobal,\n  registerGlobal,\n  unregisterGlobal,\n} from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport {\n  isSpanContextValid,\n  wrapSpanContext,\n} from '../trace/spancontext-utils';\nimport type { Tracer } from '../trace/tracer';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport {\n  deleteSpan,\n  getActiveSpan,\n  getSpan,\n  getSpanContext,\n  setSpan,\n  setSpanContext,\n} from '../trace/context-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'trace';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n *\n * @since 1.0.0\n */\nexport class TraceAPI {\n  private static _instance?: TraceAPI;\n\n  private _proxyTracerProvider = new ProxyTracerProvider();\n\n  /** Empty private constructor prevents end users from constructing a new instance of the API */\n  private constructor() {}\n\n  /** Get the singleton instance of the Trace API */\n  public static getInstance(): TraceAPI {\n    if (!this._instance) {\n      this._instance = new TraceAPI();\n    }\n\n    return this._instance;\n  }\n\n  /**\n   * Set the current global tracer.\n   *\n   * @returns true if the tracer provider was successfully registered, else false\n   */\n  public setGlobalTracerProvider(provider: TracerProvider): boolean {\n    const success = registerGlobal(\n      API_NAME,\n      this._proxyTracerProvider,\n      DiagAPI.instance()\n    );\n    if (success) {\n      this._proxyTracerProvider.setDelegate(provider);\n    }\n    return success;\n  }\n\n  /**\n   * Returns the global tracer provider.\n   */\n  public getTracerProvider(): TracerProvider {\n    return getGlobal(API_NAME) || this._proxyTracerProvider;\n  }\n\n  /**\n   * Returns a tracer from the global tracer provider.\n   */\n  public getTracer(name: string, version?: string): Tracer {\n    return this.getTracerProvider().getTracer(name, version);\n  }\n\n  /** Remove the global tracer provider */\n  public disable() {\n    unregisterGlobal(API_NAME, DiagAPI.instance());\n    this._proxyTracerProvider = new ProxyTracerProvider();\n  }\n\n  public wrapSpanContext = wrapSpanContext;\n\n  public isSpanContextValid = isSpanContextValid;\n\n  public deleteSpan = deleteSpan;\n\n  public getSpan = getSpan;\n\n  /** @since 1.2.0 */\n  public getActiveSpan = getActiveSpan;\n\n  public getSpanContext = getSpanContext;\n\n  public setSpan = setSpan;\n\n  public setSpanContext = setSpanContext;\n}\n"],"mappings":";;;;;;AA2BA,MAAM,WAAW;;;;;;AAOjB,IAAa,WAAb,MAAa,SAAS;;CAMpB,cAAsB;EAHtB,KAAQ,uBAAuB,IAAI,oBAAoB;EAmDvD,KAAO,kBAAkB;EAEzB,KAAO,qBAAqB;EAE5B,KAAO,aAAa;EAEpB,KAAO,UAAU;EAGjB,KAAO,gBAAgB;EAEvB,KAAO,iBAAiB;EAExB,KAAO,UAAU;EAEjB,KAAO,iBAAiB;CA/DD;;CAGvB,OAAc,cAAwB;EACpC,IAAI,CAAC,KAAK,WACR,KAAK,YAAY,IAAI,SAAS;EAGhC,OAAO,KAAK;CACd;;;;;;CAOA,wBAA+B,UAAmC;EAChE,MAAM,UAAU,eACd,UACA,KAAK,sBACL,QAAQ,SAAS,CACnB;EACA,IAAI,SACF,KAAK,qBAAqB,YAAY,QAAQ;EAEhD,OAAO;CACT;;;;CAKA,oBAA2C;EACzC,OAAO,UAAU,QAAQ,KAAK,KAAK;CACrC;;;;CAKA,UAAiB,MAAc,SAA0B;EACvD,OAAO,KAAK,kBAAkB,CAAC,CAAC,UAAU,MAAM,OAAO;CACzD;;CAGA,UAAiB;EACf,iBAAiB,UAAU,QAAQ,SAAS,CAAC;EAC7C,KAAK,uBAAuB,IAAI,oBAAoB;CACtD;AAkBF"}