@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
60 lines • 5.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.traceOAuthOperation = traceOAuthOperation;
exports.recordUnexpectedOAuthError = recordUnexpectedOAuthError;
const axios_1 = require("axios");
const constants_1 = require("../diagnostics/constants");
const helpers_1 = require("../diagnostics/helpers");
/** @internal Traces one OAuth lifecycle operation and records its metrics. */
function traceOAuthOperation(spanName, connectionName, operation, execute) {
const startedAt = Date.now();
return (0, helpers_1.getTeamsBotApplicationTracer)().startActiveSpan(spanName, {
attributes: {
[constants_1.APP_ATTRIBUTE_NAMES.oauthConnection]: connectionName,
[constants_1.APP_ATTRIBUTE_NAMES.oauthOperation]: operation,
},
}, async (span) => {
const telemetry = {};
try {
return await execute(span, telemetry);
}
catch (error) {
telemetry.result ??= constants_1.APP_OAUTH_RESULT.failure;
recordUnexpectedOAuthError(span, telemetry, error, error instanceof axios_1.AxiosError
? constants_1.APP_OAUTH_ERROR_TYPE.httpError
: constants_1.APP_OAUTH_ERROR_TYPE.exception);
throw error;
}
finally {
const result = telemetry.result ?? constants_1.APP_OAUTH_RESULT.failure;
span.setAttribute(constants_1.APP_ATTRIBUTE_NAMES.oauthResult, result);
if (telemetry.responseStatus !== undefined) {
span.setAttribute(constants_1.APP_ATTRIBUTE_NAMES.invokeResponseStatus, telemetry.responseStatus);
}
if (telemetry.callbackInvoked) {
span.setAttribute(constants_1.APP_ATTRIBUTE_NAMES.oauthCallbackInvoked, true);
}
if (telemetry.errorType) {
span.setAttribute(constants_1.APP_ATTRIBUTE_NAMES.oauthErrorType, telemetry.errorType);
}
if (telemetry.failureCode) {
span.setAttribute(constants_1.APP_ATTRIBUTE_NAMES.oauthFailureCode, telemetry.failureCode);
}
(0, helpers_1.recordTeamsBotOAuthOperation)(connectionName, operation, result);
(0, helpers_1.recordTeamsBotOAuthOperationDuration)(connectionName, operation, result, Date.now() - startedAt);
if (telemetry.errorType) {
(0, helpers_1.recordTeamsBotOAuthError)(connectionName, operation, telemetry.errorType);
}
span.end();
}
});
}
/** @internal Adds an unexpected exception to the current OAuth span. */
function recordUnexpectedOAuthError(span, telemetry, error, errorType) {
if (telemetry.errorType) {
return;
}
telemetry.errorType = errorType;
(0, helpers_1.recordTeamsBotApplicationException)(span, error);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29hdXRoL3RlbGVtZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTBCQSxrREE2RUM7QUFHRCxnRUFZQztBQXJIRCxpQ0FBbUM7QUFFbkMsd0RBSWtDO0FBQ2xDLG9EQU1nQztBQVdoQyw4RUFBOEU7QUFDOUUsU0FBZ0IsbUJBQW1CLENBQ2pDLFFBQWdCLEVBQ2hCLGNBQXNCLEVBQ3RCLFNBQWlCLEVBQ2pCLE9BQW1FO0lBRW5FLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUU3QixPQUFPLElBQUEsc0NBQTRCLEdBQUUsQ0FBQyxlQUFlLENBQ25ELFFBQVEsRUFDUjtRQUNFLFVBQVUsRUFBRTtZQUNWLENBQUMsK0JBQW1CLENBQUMsZUFBZSxDQUFDLEVBQUUsY0FBYztZQUNyRCxDQUFDLCtCQUFtQixDQUFDLGNBQWMsQ0FBQyxFQUFFLFNBQVM7U0FDaEQ7S0FDRixFQUNELEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUNiLE1BQU0sU0FBUyxHQUF3QixFQUFFLENBQUM7UUFFMUMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixTQUFTLENBQUMsTUFBTSxLQUFLLDRCQUFnQixDQUFDLE9BQU8sQ0FBQztZQUM5QywwQkFBMEIsQ0FDeEIsSUFBSSxFQUNKLFNBQVMsRUFDVCxLQUFLLEVBQ0wsS0FBSyxZQUFZLGtCQUFVO2dCQUN6QixDQUFDLENBQUMsZ0NBQW9CLENBQUMsU0FBUztnQkFDaEMsQ0FBQyxDQUFDLGdDQUFvQixDQUFDLFNBQVMsQ0FDbkMsQ0FBQztZQUNGLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSw0QkFBZ0IsQ0FBQyxPQUFPLENBQUM7WUFFNUQsSUFBSSxDQUFDLFlBQVksQ0FBQywrQkFBbUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDM0QsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsWUFBWSxDQUNmLCtCQUFtQixDQUFDLG9CQUFvQixFQUN4QyxTQUFTLENBQUMsY0FBYyxDQUN6QixDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLCtCQUFtQixDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFDRCxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFlBQVksQ0FDZiwrQkFBbUIsQ0FBQyxjQUFjLEVBQ2xDLFNBQVMsQ0FBQyxTQUFTLENBQ3BCLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxZQUFZLENBQ2YsK0JBQW1CLENBQUMsZ0JBQWdCLEVBQ3BDLFNBQVMsQ0FBQyxXQUFXLENBQ3RCLENBQUM7WUFDSixDQUFDO1lBRUQsSUFBQSxzQ0FBNEIsRUFBQyxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2hFLElBQUEsOENBQW9DLEVBQ2xDLGNBQWMsRUFDZCxTQUFTLEVBQ1QsTUFBTSxFQUNOLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQ3ZCLENBQUM7WUFDRixJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDeEIsSUFBQSxrQ0FBd0IsRUFDdEIsY0FBYyxFQUNkLFNBQVMsRUFDVCxTQUFTLENBQUMsU0FBUyxDQUNwQixDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDLENBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCx3RUFBd0U7QUFDeEUsU0FBZ0IsMEJBQTBCLENBQ3hDLElBQVUsRUFDVixTQUE4QixFQUM5QixLQUFjLEVBQ2QsU0FBaUI7SUFFakIsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEIsT0FBTztJQUNULENBQUM7SUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUNoQyxJQUFBLDRDQUFrQyxFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsRCxDQUFDIn0=