aboutsummaryrefslogtreecommitdiff
path: root/packages/server/src/git/error.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/server/src/git/error.ts')
-rw-r--r--packages/server/src/git/error.ts49
1 files changed, 49 insertions, 0 deletions
diff --git a/packages/server/src/git/error.ts b/packages/server/src/git/error.ts
new file mode 100644
index 0000000..0429a6c
--- /dev/null
+++ b/packages/server/src/git/error.ts
@@ -0,0 +1,49 @@
+export abstract class BaseError implements Error {
+ code: number;
+ name: string;
+ message: string;
+ stack?: string | undefined;
+
+ constructor(code: number, message: string) {
+ this.name = "Githermit Error";
+
+ this.code = code;
+ this.message = message;
+ }
+}
+
+export class RepositoryError extends BaseError {
+ constructor(code: number, message: string) {
+ super(code, "A repository error has occured: " + message);
+ }
+}
+
+export class BranchError extends BaseError {
+ constructor(code: number, message: string) {
+ super(code, "A branch error has occured: " + message);
+ }
+}
+
+export class TagError extends BaseError {
+ constructor(code: number, message: string) {
+ super(code, "A tag error has occured: " + message);
+ }
+}
+
+export class TreeError extends BaseError {
+ constructor(code: number, message: string) {
+ super(code, "A tree error has occured: " + message);
+ }
+}
+
+export class BlobError extends BaseError {
+ constructor(code: number, message: string) {
+ super(code, "A blob error has occured: " + message);
+ }
+}
+
+type ErrorConstructorType<T> = new (code: number, message: string) => T;
+
+export function createError<E extends BaseError>(ErrorConstructor: ErrorConstructorType<E>, code: number, message: string): E {
+ return new ErrorConstructor(code, message);
+} \ No newline at end of file