name:
src/main/js/common/errors/ErrorUtil.ts
-rw-r--r--
3451
1import { AbortedError } from "./AbortedError";
2import { AlreadyExistsError } from "./AlreadyExistsError";
3import { CanceledError } from "./CanceledError";
4import { DeadlineExceededError } from "./DeadlineExceededError";
5import { InternalError } from "./InternalError";
6import { InvalidArgumentError } from "./InvalidArgumentError";
7import { NotFoundError } from "./NotFoundError";
8import { NotImplementedError } from "./NotImplementedError";
9import { ResourceExhaustedError } from "./ResourceExhaustedError";
10import { StandardError } from "./StandardError";
11import { StatusCodes } from "./StatusCodes";
12import { UnauthenticatedError } from "./UnauthenticatedError";
13import { UnavailableError } from "./UnavailableError";
14import ABORTED = StatusCodes.ABORTED;
15import ALREADY_EXISTS = StatusCodes.ALREADY_EXISTS;
16import CANCELLED = StatusCodes.CANCELLED;
17import DEADLINE_EXCEEDED = StatusCodes.DEADLINE_EXCEEDED;
18import FAILED_PRECONDITION = StatusCodes.FAILED_PRECONDITION;
19import INTERNAL = StatusCodes.INTERNAL;
20import INVALID_ARGUMENT = StatusCodes.INVALID_ARGUMENT;
21import NOT_FOUND = StatusCodes.NOT_FOUND;
22import NOT_IMPLEMENTED = StatusCodes.NOT_IMPLEMENTED;
23import OUT_OF_RANGE = StatusCodes.OUT_OF_RANGE;
24import RESOURCE_EXHAUSTED = StatusCodes.RESOURCE_EXHAUSTED;
25import UNAUTHENTICATED = StatusCodes.UNAUTHENTICATED;
26import UNAVAILABLE = StatusCodes.UNAVAILABLE;
27import UNKNOWN = StatusCodes.UNKNOWN;
28
29/**
30 * Cast interface (usually parsed from JSON) as error.
31 * @param error to throw.
32 */
33export const throwStandardErr = (error: StandardError) => {
34 switch (error.code) {
35 case INVALID_ARGUMENT:
36 case FAILED_PRECONDITION:
37 case OUT_OF_RANGE:
38 throw new InvalidArgumentError(error.message);
39 case UNAUTHENTICATED:
40 throw new UnauthenticatedError(error.message);
41 case NOT_FOUND:
42 throw new NotFoundError(error.message);
43 case ABORTED:
44 throw new AbortedError(error.message);
45 case ALREADY_EXISTS:
46 throw new AlreadyExistsError(error.message);
47 case RESOURCE_EXHAUSTED:
48 throw new ResourceExhaustedError(error.message);
49 case CANCELLED:
50 throw new CanceledError(error.message);
51 case UNKNOWN:
52 case INTERNAL:
53 throw new InternalError(error.message);
54 case NOT_IMPLEMENTED:
55 throw new NotImplementedError(error.message);
56 case UNAVAILABLE:
57 throw new UnavailableError(error.message);
58 case DEADLINE_EXCEEDED:
59 throw new DeadlineExceededError(error.message);
60 }
61};
62
63/**
64 * Way to throw from just a code, and maybe a message.
65 */
66export const throwStandardErrFromCode = (code: number, message = "") => {
67 switch (code) {
68 case INVALID_ARGUMENT:
69 case FAILED_PRECONDITION:
70 case OUT_OF_RANGE:
71 throw new InvalidArgumentError(message);
72 case UNAUTHENTICATED:
73 throw new UnauthenticatedError(message);
74 case NOT_FOUND:
75 throw new NotFoundError(message);
76 case ABORTED:
77 throw new AbortedError(message);
78 case ALREADY_EXISTS:
79 throw new AlreadyExistsError(message);
80 case RESOURCE_EXHAUSTED:
81 throw new ResourceExhaustedError(message);
82 case CANCELLED:
83 throw new CanceledError(message);
84 case UNKNOWN:
85 case INTERNAL:
86 throw new InternalError(message);
87 case NOT_IMPLEMENTED:
88 throw new NotImplementedError(message);
89 case UNAVAILABLE:
90 throw new UnavailableError(message);
91 case DEADLINE_EXCEEDED:
92 throw new DeadlineExceededError(message);
93 }
94};