UNPKG

@opentelemetry/api

Version:
93 lines 3.65 kB
"use strict"; /* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var __spreadArray = (this && this.__spreadArray) || function (to, from) { for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) to[j] = from[i]; return to; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ContextAPI = void 0; var NoopContextManager_1 = require("../context/NoopContextManager"); var global_utils_1 = require("../internal/global-utils"); var diag_1 = require("./diag"); var API_NAME = 'context'; var NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager(); /** * Singleton object which represents the entry point to the OpenTelemetry Context API */ var ContextAPI = /** @class */ (function () { /** Empty private constructor prevents end users from constructing a new instance of the API */ function ContextAPI() { } /** Get the singleton instance of the Context API */ ContextAPI.getInstance = function () { if (!this._instance) { this._instance = new ContextAPI(); } return this._instance; }; /** * Set the current context manager. * * @returns true if the context manager was successfully registered, else false */ ContextAPI.prototype.setGlobalContextManager = function (contextManager) { return global_utils_1.registerGlobal(API_NAME, contextManager, diag_1.DiagAPI.instance()); }; /** * Get the currently active context */ ContextAPI.prototype.active = function () { return this._getContextManager().active(); }; /** * Execute a function with an active context * * @param context context to be active during function execution * @param fn function to execute in a context * @param thisArg optional receiver to be used for calling fn * @param args optional arguments forwarded to fn */ ContextAPI.prototype.with = function (context, fn, thisArg) { var _a; var args = []; for (var _i = 3; _i < arguments.length; _i++) { args[_i - 3] = arguments[_i]; } return (_a = this._getContextManager()).with.apply(_a, __spreadArray([context, fn, thisArg], args)); }; /** * Bind a context to a target function or event emitter * * @param context context to bind to the event emitter or function. Defaults to the currently active context * @param target function or event emitter to bind */ ContextAPI.prototype.bind = function (context, target) { return this._getContextManager().bind(context, target); }; ContextAPI.prototype._getContextManager = function () { return global_utils_1.getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER; }; /** Disable and remove the global context manager */ ContextAPI.prototype.disable = function () { this._getContextManager().disable(); global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance()); }; return ContextAPI; }()); exports.ContextAPI = ContextAPI; //# sourceMappingURL=context.js.map