90 lines
2.8 KiB
JavaScript
90 lines
2.8 KiB
JavaScript
/*! @azure/msal-common v14.4.0 2023-11-07 */
|
|
'use strict';
|
|
/*
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License.
|
|
*/
|
|
/**
|
|
* Wraps a function with a performance measurement.
|
|
* Usage: invoke(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction)
|
|
* @param callback
|
|
* @param eventName
|
|
* @param logger
|
|
* @param telemetryClient
|
|
* @param correlationId
|
|
* @returns
|
|
* @internal
|
|
*/
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
const invoke = (callback, eventName, logger, telemetryClient, correlationId) => {
|
|
return (...args) => {
|
|
logger.trace(`Executing function ${eventName}`);
|
|
const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);
|
|
try {
|
|
const result = callback(...args);
|
|
inProgressEvent?.end({
|
|
success: true,
|
|
});
|
|
logger.trace(`Returning result from ${eventName}`);
|
|
return result;
|
|
}
|
|
catch (e) {
|
|
logger.trace(`Error occurred in ${eventName}`);
|
|
try {
|
|
logger.trace(JSON.stringify(e));
|
|
}
|
|
catch (e) {
|
|
logger.trace("Unable to print error message.");
|
|
}
|
|
inProgressEvent?.end({
|
|
success: false,
|
|
});
|
|
throw e;
|
|
}
|
|
};
|
|
};
|
|
/**
|
|
* Wraps an async function with a performance measurement.
|
|
* Usage: invokeAsync(functionToCall, performanceClient, "EventName", "correlationId")(...argsToPassToFunction)
|
|
* @param callback
|
|
* @param eventName
|
|
* @param logger
|
|
* @param telemetryClient
|
|
* @param correlationId
|
|
* @returns
|
|
* @internal
|
|
*
|
|
*/
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
const invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => {
|
|
return (...args) => {
|
|
logger.trace(`Executing function ${eventName}`);
|
|
const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);
|
|
telemetryClient?.setPreQueueTime(eventName, correlationId);
|
|
return callback(...args)
|
|
.then((response) => {
|
|
logger.trace(`Returning result from ${eventName}`);
|
|
inProgressEvent?.end({
|
|
success: true,
|
|
});
|
|
return response;
|
|
})
|
|
.catch((e) => {
|
|
logger.trace(`Error occurred in ${eventName}`);
|
|
try {
|
|
logger.trace(JSON.stringify(e));
|
|
}
|
|
catch (e) {
|
|
logger.trace("Unable to print error message.");
|
|
}
|
|
inProgressEvent?.end({
|
|
success: false,
|
|
});
|
|
throw e;
|
|
});
|
|
};
|
|
};
|
|
|
|
export { invoke, invokeAsync };
|
|
//# sourceMappingURL=FunctionWrappers.mjs.map
|