UNPKG

@azure/monitor-opentelemetry

Version:
54 lines 2.46 kB
"use strict"; // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. Object.defineProperty(exports, "__esModule", { value: true }); exports.AzureFunctionsHook = void 0; const api_1 = require("@opentelemetry/api"); const index_js_1 = require("../shared/logging/index.js"); const module_js_1 = require("../shared/module.js"); class AzureFunctionsHook { constructor() { try { this._functionsCoreModule = (0, module_js_1.loadAzureFunctionCore)(); this._addPreInvocationHook(); } catch (error) { index_js_1.Logger.getInstance().debug("@azure/functions-core failed to load, not running in Azure Functions"); } } shutdown() { if (this._preInvocationHook) { this._preInvocationHook.dispose(); this._preInvocationHook = undefined; } this._functionsCoreModule = undefined; } _addPreInvocationHook() { if (!this._preInvocationHook) { this._preInvocationHook = this._functionsCoreModule.registerHook("preInvocation", // eslint-disable-next-line @typescript-eslint/require-await async (preInvocationContext) => { const sharedContext = preInvocationContext.invocationContext; const traceContext = sharedContext.traceContext; // Update context to use Azure Functions one // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents let extractedContext = null; try { if (traceContext) { extractedContext = api_1.propagation.extract(api_1.context.active(), { traceparent: traceContext.traceparent || traceContext.traceParent, tracestate: traceContext.tracestate || traceContext.traceState, }); } const currentContext = extractedContext || api_1.context.active(); preInvocationContext.functionCallback = api_1.context.bind(currentContext, preInvocationContext.functionCallback); } catch (err) { index_js_1.Logger.getInstance().error("Failed to propagate context in Azure Functions", err); } }); } } } exports.AzureFunctionsHook = AzureFunctionsHook; //# sourceMappingURL=azureFnHook.js.map