57 lines
1.1 KiB
TypeScript
57 lines
1.1 KiB
TypeScript
export enum ERR_CODES {
|
|
// General
|
|
UnknownErr,
|
|
Unimplemented,
|
|
Other,
|
|
|
|
// System/Timeout errors
|
|
Canceled,
|
|
Timeout,
|
|
RemoteServiceErr,
|
|
OutOfMemory,
|
|
|
|
// Validation/Input errors
|
|
InvalidAction,
|
|
BadConfig,
|
|
InvalidArgument,
|
|
OutOfRange,
|
|
|
|
// Access errors
|
|
PermissionDenied,
|
|
Unauthenticated,
|
|
|
|
// Entity errors
|
|
EntityExists,
|
|
EntityNotFound,
|
|
Outdated,
|
|
|
|
// Not error by itself, but adds some additional
|
|
// information to the error in error stack
|
|
ErrClarification,
|
|
};
|
|
|
|
export const getErrCode = (name: keyof typeof ERR_CODES): ERR_CODES | undefined => {
|
|
return ERR_CODES[name];
|
|
}
|
|
|
|
export abstract class Err extends Error {
|
|
abstract code: ERR_CODES;
|
|
get_name() { return this.constructor.name };
|
|
}
|
|
|
|
export const getErrStack = (err: Error): Error[] => {
|
|
const errStack: Error[] = []
|
|
let thisErr: Error = err
|
|
while (thisErr.cause) {
|
|
errStack.push(thisErr)
|
|
if (thisErr.cause instanceof Error)
|
|
thisErr = thisErr.cause
|
|
}
|
|
return errStack
|
|
}
|
|
|
|
// ===============================
|
|
// == Some useful error classes ==
|
|
// ===============================
|
|
|
|
export class BadConfigErr extends Err { code = ERR_CODES.BadConfig } |