-
Notifications
You must be signed in to change notification settings - Fork 367
Expand file tree
/
Copy patherror.ts
More file actions
88 lines (67 loc) · 2.09 KB
/
Copy patherror.ts
File metadata and controls
88 lines (67 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
export class WarpTokenError {
error: Error;
constructor(error: Error) {
this.error = error;
}
}
export function isWarpTokenError(error: any): error is WarpTokenError {
return error instanceof WarpTokenError;
}
export class WarpNetworkError {
error: Error;
constructor(error: Error) {
this.error = error;
}
}
export function isNetworkError(error: any): error is WarpNetworkError {
return error instanceof WarpNetworkError;
}
export type FileSystemProvider = "googledrive" | "onedrive" | "dropbox" | "baidu" | "webdav" | "s3" | "zip";
export type FileSystemErrorOptions = {
provider: FileSystemProvider;
message: string;
status?: number;
code?: string;
retryable?: boolean;
conflict?: boolean;
auth?: boolean;
notFound?: boolean;
rateLimit?: boolean;
raw?: unknown;
};
export class FileSystemError extends Error {
provider: FileSystemProvider;
status?: number;
code?: string;
retryable: boolean;
conflict: boolean;
auth: boolean;
notFound: boolean;
rateLimit: boolean;
raw?: unknown;
constructor(options: FileSystemErrorOptions) {
super(options.message);
this.name = "FileSystemError";
this.provider = options.provider;
this.status = options.status;
this.code = options.code;
this.retryable = options.retryable ?? false;
this.conflict = options.conflict ?? false;
this.auth = options.auth ?? false;
this.notFound = options.notFound ?? false;
this.rateLimit = options.rateLimit ?? false;
this.raw = options.raw;
}
}
export function isNotFoundError(error: unknown): error is FileSystemError {
return error instanceof FileSystemError && error.notFound;
}
export function isConflictError(error: unknown): error is FileSystemError {
return error instanceof FileSystemError && error.conflict;
}
export function isRateLimitError(error: unknown): error is FileSystemError {
return error instanceof FileSystemError && error.rateLimit;
}
export function isAuthError(error: unknown): error is FileSystemError | WarpTokenError {
return error instanceof FileSystemError ? error.auth : isWarpTokenError(error);
}