f7
f7 is a spreadsheet formula execution library
git clone https://git.vogt.world/f7.git
Log | Files | README.md | LICENSE.md
← All files
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};