mirror of
https://github.com/MarSeventh/CloudFlare-ImgBed.git
synced 2026-04-26 15:15:06 +00:00
init
This commit is contained in:
146
node_modules/@sentry/utils/esm/aggregate-errors.js
generated
vendored
Normal file
146
node_modules/@sentry/utils/esm/aggregate-errors.js
generated
vendored
Normal file
@@ -0,0 +1,146 @@
|
||||
import { isInstanceOf } from './is.js';
|
||||
import { truncate } from './string.js';
|
||||
|
||||
/**
|
||||
* Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.
|
||||
*/
|
||||
function applyAggregateErrorsToEvent(
|
||||
exceptionFromErrorImplementation,
|
||||
parser,
|
||||
maxValueLimit = 250,
|
||||
key,
|
||||
limit,
|
||||
event,
|
||||
hint,
|
||||
) {
|
||||
if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Generally speaking the last item in `event.exception.values` is the exception originating from the original Error
|
||||
const originalException =
|
||||
event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;
|
||||
|
||||
// We only create exception grouping if there is an exception in the event.
|
||||
if (originalException) {
|
||||
event.exception.values = truncateAggregateExceptions(
|
||||
aggregateExceptionsFromError(
|
||||
exceptionFromErrorImplementation,
|
||||
parser,
|
||||
limit,
|
||||
hint.originalException ,
|
||||
key,
|
||||
event.exception.values,
|
||||
originalException,
|
||||
0,
|
||||
),
|
||||
maxValueLimit,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function aggregateExceptionsFromError(
|
||||
exceptionFromErrorImplementation,
|
||||
parser,
|
||||
limit,
|
||||
error,
|
||||
key,
|
||||
prevExceptions,
|
||||
exception,
|
||||
exceptionId,
|
||||
) {
|
||||
if (prevExceptions.length >= limit + 1) {
|
||||
return prevExceptions;
|
||||
}
|
||||
|
||||
let newExceptions = [...prevExceptions];
|
||||
|
||||
// Recursively call this function in order to walk down a chain of errors
|
||||
if (isInstanceOf(error[key], Error)) {
|
||||
applyExceptionGroupFieldsForParentException(exception, exceptionId);
|
||||
const newException = exceptionFromErrorImplementation(parser, error[key]);
|
||||
const newExceptionId = newExceptions.length;
|
||||
applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);
|
||||
newExceptions = aggregateExceptionsFromError(
|
||||
exceptionFromErrorImplementation,
|
||||
parser,
|
||||
limit,
|
||||
error[key],
|
||||
key,
|
||||
[newException, ...newExceptions],
|
||||
newException,
|
||||
newExceptionId,
|
||||
);
|
||||
}
|
||||
|
||||
// This will create exception grouping for AggregateErrors
|
||||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError
|
||||
if (Array.isArray(error.errors)) {
|
||||
error.errors.forEach((childError, i) => {
|
||||
if (isInstanceOf(childError, Error)) {
|
||||
applyExceptionGroupFieldsForParentException(exception, exceptionId);
|
||||
const newException = exceptionFromErrorImplementation(parser, childError);
|
||||
const newExceptionId = newExceptions.length;
|
||||
applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);
|
||||
newExceptions = aggregateExceptionsFromError(
|
||||
exceptionFromErrorImplementation,
|
||||
parser,
|
||||
limit,
|
||||
childError,
|
||||
key,
|
||||
[newException, ...newExceptions],
|
||||
newException,
|
||||
newExceptionId,
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return newExceptions;
|
||||
}
|
||||
|
||||
function applyExceptionGroupFieldsForParentException(exception, exceptionId) {
|
||||
// Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.
|
||||
exception.mechanism = exception.mechanism || { type: 'generic', handled: true };
|
||||
|
||||
exception.mechanism = {
|
||||
...exception.mechanism,
|
||||
...(exception.type === 'AggregateError' && { is_exception_group: true }),
|
||||
exception_id: exceptionId,
|
||||
};
|
||||
}
|
||||
|
||||
function applyExceptionGroupFieldsForChildException(
|
||||
exception,
|
||||
source,
|
||||
exceptionId,
|
||||
parentId,
|
||||
) {
|
||||
// Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.
|
||||
exception.mechanism = exception.mechanism || { type: 'generic', handled: true };
|
||||
|
||||
exception.mechanism = {
|
||||
...exception.mechanism,
|
||||
type: 'chained',
|
||||
source,
|
||||
exception_id: exceptionId,
|
||||
parent_id: parentId,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Truncate the message (exception.value) of all exceptions in the event.
|
||||
* Because this event processor is ran after `applyClientOptions`,
|
||||
* we need to truncate the message of the added exceptions here.
|
||||
*/
|
||||
function truncateAggregateExceptions(exceptions, maxValueLength) {
|
||||
return exceptions.map(exception => {
|
||||
if (exception.value) {
|
||||
exception.value = truncate(exception.value, maxValueLength);
|
||||
}
|
||||
return exception;
|
||||
});
|
||||
}
|
||||
|
||||
export { applyAggregateErrorsToEvent };
|
||||
//# sourceMappingURL=aggregate-errors.js.map
|
||||
Reference in New Issue
Block a user