UNPKG

@belgattitude/http-exception

Version:

Warning: has been moved to @httpx/exception. Please update.

76 lines (72 loc) 2.07 kB
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 };