UNPKG

@microsoft/teams.api

Version:

<p> <a href="https://www.npmjs.com/package/@microsoft/teams.api" target="_blank"> <img src="https://img.shields.io/npm/v/@microsoft/teams.api/latest" /> </a> <a href="https://www.npmjs.com/package/@microsoft/teams.api?activeTab=code" t

67 lines (64 loc) • 2.26 kB
'use strict'; var api = require('@opentelemetry/api'); var constants = require('../diagnostics/constants'); var helpers = require('../diagnostics/helpers'); const apiOutboundTelemetryMetadataKey = /* @__PURE__ */ Symbol("Microsoft.Teams.Api.outboundTelemetryMetadata"); function withApiOutboundTelemetry(metadata, extensions) { const next = { ...extensions ?? {} }; next[apiOutboundTelemetryMetadataKey] = metadata; return next; } function ensureApiOutboundTelemetryMiddleware(client) { if (!client.middlewares.some((middleware) => middleware instanceof ApiOutboundTelemetryMiddleware)) { client.use(new ApiOutboundTelemetryMiddleware()); } } class ApiOutboundTelemetryMiddleware { async invoke(context, next) { const metadata = getApiOutboundTelemetryMetadata(context.config.extensions); if (!metadata) { return next(); } return helpers.getTeamsApiTracer().startActiveSpan( constants.API_SPAN_NAMES.apiClient, { kind: api.SpanKind.CLIENT, attributes: metadata.attributes }, async (span) => { helpers.recordTeamsApiOutboundCall(metadata.operation); try { let res; try { res = await next(); } catch (error) { helpers.recordTeamsApiOutboundError(metadata.operation); helpers.recordTeamsApiException(span, error); throw error; } if (metadata.onResponse) { try { await metadata.onResponse(span, res); } catch (hookError) { context.log.warn( "Microsoft.Teams.Api outbound telemetry response hook failed", hookError ); } } return res; } finally { span.end(); } } ); } } function getApiOutboundTelemetryMetadata(extensions) { return extensions?.[apiOutboundTelemetryMetadataKey]; } exports.ApiOutboundTelemetryMiddleware = ApiOutboundTelemetryMiddleware; exports.ensureApiOutboundTelemetryMiddleware = ensureApiOutboundTelemetryMiddleware; exports.withApiOutboundTelemetry = withApiOutboundTelemetry; //# sourceMappingURL=api-outbound-middleware.js.map //# sourceMappingURL=api-outbound-middleware.js.map