{"version":3,"file":"metrics.mjs","names":[],"sources":["../../src/api/metrics.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Meter, MeterOptions } from '../metrics/Meter';\nimport type { MeterProvider } from '../metrics/MeterProvider';\nimport { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider';\nimport {\n  getGlobal,\n  registerGlobal,\n  unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'metrics';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n *\n * @since 1.4.1\n */\nexport class MetricsAPI {\n  private static _instance?: MetricsAPI;\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 Metrics API */\n  public static getInstance(): MetricsAPI {\n    if (!this._instance) {\n      this._instance = new MetricsAPI();\n    }\n\n    return this._instance;\n  }\n\n  /**\n   * Set the current global meter provider.\n   * Returns true if the meter provider was successfully registered, else false.\n   */\n  public setGlobalMeterProvider(provider: MeterProvider): boolean {\n    return registerGlobal(API_NAME, provider, DiagAPI.instance());\n  }\n\n  /**\n   * Returns the global meter provider.\n   */\n  public getMeterProvider(): MeterProvider {\n    return getGlobal(API_NAME) || NOOP_METER_PROVIDER;\n  }\n\n  /**\n   * Returns a meter from the global meter provider.\n   */\n  public getMeter(\n    name: string,\n    version?: string,\n    options?: MeterOptions\n  ): Meter {\n    return this.getMeterProvider().getMeter(name, version, options);\n  }\n\n  /** Remove the global meter provider */\n  public disable(): void {\n    unregisterGlobal(API_NAME, DiagAPI.instance());\n  }\n}\n"],"mappings":";;;;AAeA,MAAM,WAAW;;;;;;AAOjB,IAAa,aAAb,MAAa,WAAW;;CAItB,cAAsB,CAAC;;CAGvB,OAAc,cAA0B;EACtC,IAAI,CAAC,KAAK,WACR,KAAK,YAAY,IAAI,WAAW;EAGlC,OAAO,KAAK;CACd;;;;;CAMA,uBAA8B,UAAkC;EAC9D,OAAO,eAAe,UAAU,UAAU,QAAQ,SAAS,CAAC;CAC9D;;;;CAKA,mBAAyC;EACvC,OAAO,UAAU,QAAQ,KAAK;CAChC;;;;CAKA,SACE,MACA,SACA,SACO;EACP,OAAO,KAAK,iBAAiB,CAAC,CAAC,SAAS,MAAM,SAAS,OAAO;CAChE;;CAGA,UAAuB;EACrB,iBAAiB,UAAU,QAAQ,SAAS,CAAC;CAC/C;AACF"}