@belgattitude/http-exception
Version:
Warning: has been moved to @httpx/exception. Please update.
76 lines (72 loc) • 2.07 kB
JavaScript
import { nativeErrorMap } from '../typeguard/isNativeError.js';
import { isBaseHttpException, baseExceptionMap } from '../typeguard/isBaseHttpException.js';
import { createHttpException } from '../../factory/createHttpException.js';
var createCustomError = function createCustomError(serializable) {
var _nativeErrorMap;
var name = serializable.name,
message = serializable.message,
stack = serializable.stack,
cause = serializable.cause;
var cls = (_nativeErrorMap = nativeErrorMap[name]) !== null && _nativeErrorMap !== void 0 ? _nativeErrorMap : Error;
var e;
if (cause) {
e = new cls(message, {
cause: createFromSerializable(cause)
});
} else {
e = new cls(message);
}
if (stack) {
e.stack = stack;
}
return e;
};
var createHttpExceptionError = function createHttpExceptionError(serializable) {
var statusCode = serializable.statusCode,
name = serializable.name,
cause = serializable.cause,
stack = serializable.stack;
var params = {
message: serializable.message,
url: serializable.url,
method: serializable.method,
errorId: serializable.errorId,
code: serializable.code,
cause: cause ? createFromSerializable(cause) : undefined
};
var e;
try {
if (isBaseHttpException(name)) {
e = new baseExceptionMap[name](statusCode, params);
} else {
e = createHttpException(statusCode, params);
}
} catch (e) {
return createCustomError({
name: name,
message: params.message,
stack: stack,
cause: cause
});
}
if (stack) {
e.stack = stack;
}
return e;
};
var createFromSerializable = function createFromSerializable(payload) {
var e;
switch (payload.__type) {
case 'HttpException':
e = createHttpExceptionError(payload);
break;
case 'NativeError':
case 'NonNativeError':
e = createCustomError(payload);
break;
default:
throw new Error("Can't unserialize from unknown error (".concat(payload.name, ")"));
}
return e;
};
export { createFromSerializable };