UNPKG

2.37 kBJavaScriptView Raw
1import _ from 'lodash';
2import inherits from 'inherits';
3
4function CraftAiError(message, extraProperties) {
5 if (typeof Error.captureStackTrace === 'function') {
6 Error.captureStackTrace(this, this.constructor);
7 }
8 else {
9 this.stack = (new Error()).stack || 'Cannot get a stacktrace, browser is too old';
10 }
11
12 this.name = this.constructor.name;
13 this.message = message || 'Unknown error';
14
15 if (extraProperties) {
16 _.forEach(extraProperties, (value, key) => {
17 this[key] = value;
18 });
19 }
20}
21
22inherits(CraftAiError, Error);
23
24function createCustomError(name, message) {
25 function CraftAiCustomError() {
26 const args = Array.prototype.slice.call(arguments, 0);
27
28 // custom message not set, use default
29 if (typeof args[0] !== 'string') {
30 args.unshift(message);
31 }
32
33 CraftAiError.apply(this, args);
34 this.name = name;
35 }
36
37 inherits(CraftAiCustomError, CraftAiError);
38
39 return CraftAiCustomError;
40}
41
42let CraftAiUnknownError = createCustomError(
43 'CraftAiUnknownError',
44 'Unknown error occured'
45);
46
47let CraftAiNetworkError = createCustomError(
48 'CraftAiNetworkError',
49 'Network issue, see err.more for details'
50);
51
52let CraftAiCredentialsError = createCustomError(
53 'CraftAiCredentialsError',
54 'Credentials error, make sure the given token is valid'
55);
56
57let CraftAiInternalError = createCustomError(
58 'CraftAiInternalError',
59 'Internal Error, see err.more for details'
60);
61
62let CraftAiBadRequestError = createCustomError(
63 'CraftAiBadRequestError',
64 'Bad Request, see err.more for details'
65);
66
67let CraftAiDecisionError = createCustomError(
68 'CraftAiDecisionError',
69 'Error while taking a decision, see err.metadata for details'
70);
71
72let CraftAiNullDecisionError = createCustomError(
73 'CraftAiNullDecisionError',
74 'Taken decision is null, see err.metadata for details'
75);
76
77let CraftAiTimeError = createCustomError(
78 'CraftAiTimeError',
79 'Time error, see err.more for details'
80);
81
82let CraftAiLongRequestTimeOutError = createCustomError(
83 'CraftAiLongRequestTimeOutError',
84 'Request timed out because the computation is not finished, please try again'
85);
86
87export {
88 CraftAiBadRequestError,
89 CraftAiCredentialsError,
90 CraftAiDecisionError,
91 CraftAiError,
92 CraftAiInternalError,
93 CraftAiNetworkError,
94 CraftAiNullDecisionError,
95 CraftAiTimeError,
96 CraftAiLongRequestTimeOutError,
97 CraftAiUnknownError
98};