mirror of
https://github.com/MeowLynxSea/Proksea.git
synced 2025-07-10 19:34:41 +00:00
100 lines
3.3 KiB
JavaScript
100 lines
3.3 KiB
JavaScript
/*! @azure/msal-common v14.12.0 2024-06-10 */
|
|
'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);
|
|
if (correlationId) {
|
|
// Track number of times this API is called in a single request
|
|
const eventCount = eventName + "CallCount";
|
|
telemetryClient?.incrementFields({ [eventCount]: 1 }, 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,
|
|
}, e);
|
|
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);
|
|
if (correlationId) {
|
|
// Track number of times this API is called in a single request
|
|
const eventCount = eventName + "CallCount";
|
|
telemetryClient?.incrementFields({ [eventCount]: 1 }, 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,
|
|
}, e);
|
|
throw e;
|
|
});
|
|
};
|
|
};
|
|
|
|
export { invoke, invokeAsync };
|
|
//# sourceMappingURL=FunctionWrappers.mjs.map
|