UNPKG

@microsoft/teams.apps

Version:

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

172 lines • 13.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTeamsBotApplicationTracer = getTeamsBotApplicationTracer; exports.getTeamsBotApplicationMeter = getTeamsBotApplicationMeter; exports.recordTeamsBotActivityReceived = recordTeamsBotActivityReceived; exports.recordTeamsBotActivityProcessDuration = recordTeamsBotActivityProcessDuration; exports.recordTeamsBotHandlerDispatched = recordTeamsBotHandlerDispatched; exports.recordTeamsBotHandlerDuration = recordTeamsBotHandlerDuration; exports.recordTeamsBotHandlerFailure = recordTeamsBotHandlerFailure; exports.recordTeamsBotHandlerUnmatched = recordTeamsBotHandlerUnmatched; exports.recordTeamsBotOAuthOperation = recordTeamsBotOAuthOperation; exports.recordTeamsBotOAuthOperationDuration = recordTeamsBotOAuthOperationDuration; exports.recordTeamsBotOAuthError = recordTeamsBotOAuthError; exports.recordTeamsBotApplicationException = recordTeamsBotApplicationException; const api_1 = require("@opentelemetry/api"); const package_json_1 = __importDefault(require("../../package.json")); const constants_1 = require("./constants"); const telemetry_1 = require("./telemetry"); let activitiesReceivedCounter; let activityProcessDurationHistogram; let handlerDispatchedCounter; let handlerDurationHistogram; let handlerFailuresCounter; let handlerUnmatchedCounter; let oauthOperationsCounter; let oauthOperationDurationHistogram; let oauthErrorsCounter; /** * @internal * Gets the OpenTelemetry tracer used by future Teams apps package instrumentation. */ function getTeamsBotApplicationTracer() { return api_1.trace.getTracer(telemetry_1.TeamsBotApplicationTelemetry.tracerName, package_json_1.default.version); } /** * @internal * Gets the OpenTelemetry meter used by future Teams apps package instrumentation. */ function getTeamsBotApplicationMeter() { return api_1.metrics.getMeter(telemetry_1.TeamsBotApplicationTelemetry.meterName, package_json_1.default.version); } /** * @internal * Records an inbound activity received by the Teams apps package. */ function recordTeamsBotActivityReceived(activityType) { activitiesReceivedCounter ??= getTeamsBotApplicationMeter().createCounter(constants_1.APP_METRIC_NAMES.activitiesReceived, { description: 'Number of inbound activities received by Teams apps.', }); activitiesReceivedCounter.add(1, { [constants_1.APP_ATTRIBUTE_NAMES.activityType]: activityType }); } /** * @internal * Records activity processing duration in milliseconds. */ function recordTeamsBotActivityProcessDuration(activityType, durationMs) { activityProcessDurationHistogram ??= getTeamsBotApplicationMeter().createHistogram(constants_1.APP_METRIC_NAMES.activityProcessDuration, { description: 'Duration of Teams app activity processing.', unit: 'ms', }); activityProcessDurationHistogram.record(durationMs, { [constants_1.APP_ATTRIBUTE_NAMES.activityType]: activityType }); } /** * @internal * Records a selected Teams app handler dispatch. */ function recordTeamsBotHandlerDispatched(handlerType, handlerDispatch) { handlerDispatchedCounter ??= getTeamsBotApplicationMeter().createCounter(constants_1.APP_METRIC_NAMES.handlerDispatched, { description: 'Number of Teams app handlers dispatched.', }); handlerDispatchedCounter.add(1, { [constants_1.APP_ATTRIBUTE_NAMES.handlerType]: handlerType, [constants_1.APP_ATTRIBUTE_NAMES.handlerDispatch]: handlerDispatch, }); } /** * @internal * Records Teams app handler duration in milliseconds. */ function recordTeamsBotHandlerDuration(handlerType, handlerDispatch, durationMs) { handlerDurationHistogram ??= getTeamsBotApplicationMeter().createHistogram(constants_1.APP_METRIC_NAMES.handlerDuration, { description: 'Duration of Teams app handler execution.', unit: 'ms', }); handlerDurationHistogram.record(durationMs, { [constants_1.APP_ATTRIBUTE_NAMES.handlerType]: handlerType, [constants_1.APP_ATTRIBUTE_NAMES.handlerDispatch]: handlerDispatch, }); } /** * @internal * Records a failed Teams app handler dispatch. */ function recordTeamsBotHandlerFailure(handlerType, handlerDispatch) { handlerFailuresCounter ??= getTeamsBotApplicationMeter().createCounter(constants_1.APP_METRIC_NAMES.handlerFailures, { description: 'Number of failed Teams app handler dispatches.', }); handlerFailuresCounter.add(1, { [constants_1.APP_ATTRIBUTE_NAMES.handlerType]: handlerType, [constants_1.APP_ATTRIBUTE_NAMES.handlerDispatch]: handlerDispatch, }); } /** * @internal * Records an inbound activity that did not match any Teams app handler. */ function recordTeamsBotHandlerUnmatched(activityType, invokeName) { handlerUnmatchedCounter ??= getTeamsBotApplicationMeter().createCounter(constants_1.APP_METRIC_NAMES.handlerUnmatched, { description: 'Number of inbound activities that did not match a Teams app handler.', }); const attributes = { [constants_1.APP_ATTRIBUTE_NAMES.activityType]: activityType }; if (invokeName) { attributes[constants_1.APP_ATTRIBUTE_NAMES.invokeName] = invokeName; } handlerUnmatchedCounter.add(1, attributes); } /** * @internal * Records a completed Teams app OAuth operation. */ function recordTeamsBotOAuthOperation(connectionName, operation, result) { oauthOperationsCounter ??= getTeamsBotApplicationMeter().createCounter(constants_1.APP_METRIC_NAMES.oauthOperations, { description: 'Number of Teams app OAuth operations.', }); oauthOperationsCounter.add(1, { [constants_1.APP_ATTRIBUTE_NAMES.oauthConnection]: connectionName, [constants_1.APP_ATTRIBUTE_NAMES.oauthOperation]: operation, [constants_1.APP_ATTRIBUTE_NAMES.oauthResult]: result, }); } /** * @internal * Records Teams app OAuth operation duration in milliseconds. */ function recordTeamsBotOAuthOperationDuration(connectionName, operation, result, durationMs) { oauthOperationDurationHistogram ??= getTeamsBotApplicationMeter().createHistogram(constants_1.APP_METRIC_NAMES.oauthOperationDuration, { description: 'Duration of Teams app OAuth operations.', unit: 'ms', }); oauthOperationDurationHistogram.record(durationMs, { [constants_1.APP_ATTRIBUTE_NAMES.oauthConnection]: connectionName, [constants_1.APP_ATTRIBUTE_NAMES.oauthOperation]: operation, [constants_1.APP_ATTRIBUTE_NAMES.oauthResult]: result, }); } /** * @internal * Records an unexpected Teams app OAuth error. */ function recordTeamsBotOAuthError(connectionName, operation, errorType) { oauthErrorsCounter ??= getTeamsBotApplicationMeter().createCounter(constants_1.APP_METRIC_NAMES.oauthErrors, { description: 'Number of unexpected Teams app OAuth errors.', }); oauthErrorsCounter.add(1, { [constants_1.APP_ATTRIBUTE_NAMES.oauthConnection]: connectionName, [constants_1.APP_ATTRIBUTE_NAMES.oauthOperation]: operation, [constants_1.APP_ATTRIBUTE_NAMES.oauthErrorType]: errorType, }); } /** * @internal * Records an exception on a span and marks the span status as an error. */ function recordTeamsBotApplicationException(span, error) { const message = error instanceof Error ? error.message : String(error); span.recordException(error instanceof Error ? error : message); span.setStatus({ code: api_1.SpanStatusCode.ERROR, message }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWFnbm9zdGljcy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBc0JBLG9FQUVDO0FBTUQsa0VBRUM7QUFNRCx3RUFLQztBQU1ELHNGQU1DO0FBTUQsMEVBUUM7QUFNRCxzRUFTQztBQU1ELG9FQVFDO0FBTUQsd0VBU0M7QUFNRCxvRUFTQztBQU1ELG9GQWtCQztBQU1ELDREQVNDO0FBTUQsZ0ZBSUM7QUFqTEQsNENBQW9FO0FBR3BFLHNFQUFxQztBQUVyQywyQ0FBb0U7QUFDcEUsMkNBQTJEO0FBRTNELElBQUkseUJBQWdFLENBQUM7QUFDckUsSUFBSSxnQ0FBeUUsQ0FBQztBQUM5RSxJQUFJLHdCQUErRCxDQUFDO0FBQ3BFLElBQUksd0JBQWlFLENBQUM7QUFDdEUsSUFBSSxzQkFBNkQsQ0FBQztBQUNsRSxJQUFJLHVCQUE4RCxDQUFDO0FBQ25FLElBQUksc0JBQTZELENBQUM7QUFDbEUsSUFBSSwrQkFBd0UsQ0FBQztBQUM3RSxJQUFJLGtCQUF5RCxDQUFDO0FBRTlEOzs7R0FHRztBQUNILFNBQWdCLDRCQUE0QjtJQUMxQyxPQUFPLFdBQUssQ0FBQyxTQUFTLENBQUMsd0NBQTRCLENBQUMsVUFBVSxFQUFFLHNCQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLDJCQUEyQjtJQUN6QyxPQUFPLGFBQU8sQ0FBQyxRQUFRLENBQUMsd0NBQTRCLENBQUMsU0FBUyxFQUFFLHNCQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLDhCQUE4QixDQUFDLFlBQW9CO0lBQ2pFLHlCQUF5QixLQUFLLDJCQUEyQixFQUFFLENBQUMsYUFBYSxDQUFDLDRCQUFnQixDQUFDLGtCQUFrQixFQUFFO1FBQzdHLFdBQVcsRUFBRSxzREFBc0Q7S0FDcEUsQ0FB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