@terascope/core-utils 2.0.0-dev.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +17 -0
- package/dist/src/arrays.d.ts +59 -0
- package/dist/src/arrays.d.ts.map +1 -0
- package/dist/src/arrays.js +180 -0
- package/dist/src/arrays.js.map +1 -0
- package/dist/src/big-lru-map.d.ts +14 -0
- package/dist/src/big-lru-map.d.ts.map +1 -0
- package/dist/src/big-lru-map.js +20 -0
- package/dist/src/big-lru-map.js.map +1 -0
- package/dist/src/big-map.d.ts +28 -0
- package/dist/src/big-map.d.ts.map +1 -0
- package/dist/src/big-map.js +148 -0
- package/dist/src/big-map.js.map +1 -0
- package/dist/src/big-set.d.ts +20 -0
- package/dist/src/big-set.d.ts.map +1 -0
- package/dist/src/big-set.js +109 -0
- package/dist/src/big-set.js.map +1 -0
- package/dist/src/booleans.d.ts +44 -0
- package/dist/src/booleans.d.ts.map +1 -0
- package/dist/src/booleans.js +81 -0
- package/dist/src/booleans.js.map +1 -0
- package/dist/src/buffers.d.ts +9 -0
- package/dist/src/buffers.d.ts.map +1 -0
- package/dist/src/buffers.js +22 -0
- package/dist/src/buffers.js.map +1 -0
- package/dist/src/collector.d.ts +48 -0
- package/dist/src/collector.d.ts.map +1 -0
- package/dist/src/collector.js +74 -0
- package/dist/src/collector.js.map +1 -0
- package/dist/src/dates.d.ts +180 -0
- package/dist/src/dates.d.ts.map +1 -0
- package/dist/src/dates.js +744 -0
- package/dist/src/dates.js.map +1 -0
- package/dist/src/decorators.d.ts +7 -0
- package/dist/src/decorators.d.ts.map +1 -0
- package/dist/src/decorators.js +21 -0
- package/dist/src/decorators.js.map +1 -0
- package/dist/src/deps.d.ts +25 -0
- package/dist/src/deps.d.ts.map +1 -0
- package/dist/src/deps.js +96 -0
- package/dist/src/deps.js.map +1 -0
- package/dist/src/empty.d.ts +11 -0
- package/dist/src/empty.d.ts.map +1 -0
- package/dist/src/empty.js +32 -0
- package/dist/src/empty.js.map +1 -0
- package/dist/src/entities/data-entity.d.ts +153 -0
- package/dist/src/entities/data-entity.d.ts.map +1 -0
- package/dist/src/entities/data-entity.js +354 -0
- package/dist/src/entities/data-entity.js.map +1 -0
- package/dist/src/entities/index.d.ts +3 -0
- package/dist/src/entities/index.d.ts.map +1 -0
- package/dist/src/entities/index.js +3 -0
- package/dist/src/entities/index.js.map +1 -0
- package/dist/src/entities/interfaces.d.ts +52 -0
- package/dist/src/entities/interfaces.d.ts.map +1 -0
- package/dist/src/entities/interfaces.js +13 -0
- package/dist/src/entities/interfaces.js.map +1 -0
- package/dist/src/entities/utils.d.ts +9 -0
- package/dist/src/entities/utils.d.ts.map +1 -0
- package/dist/src/entities/utils.js +44 -0
- package/dist/src/entities/utils.js.map +1 -0
- package/dist/src/env.d.ts +6 -0
- package/dist/src/env.d.ts.map +1 -0
- package/dist/src/env.js +15 -0
- package/dist/src/env.js.map +1 -0
- package/dist/src/equality.d.ts +72 -0
- package/dist/src/equality.d.ts.map +1 -0
- package/dist/src/equality.js +128 -0
- package/dist/src/equality.js.map +1 -0
- package/dist/src/errors.d.ts +140 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +372 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/event-loop.d.ts +33 -0
- package/dist/src/event-loop.d.ts.map +1 -0
- package/dist/src/event-loop.js +74 -0
- package/dist/src/event-loop.js.map +1 -0
- package/dist/src/fp.d.ts +15 -0
- package/dist/src/fp.d.ts.map +1 -0
- package/dist/src/fp.js +25 -0
- package/dist/src/fp.js.map +1 -0
- package/dist/src/functions.d.ts +19 -0
- package/dist/src/functions.d.ts.map +1 -0
- package/dist/src/functions.js +58 -0
- package/dist/src/functions.js.map +1 -0
- package/dist/src/index.d.ts +32 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +32 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/iterators.d.ts +9 -0
- package/dist/src/iterators.d.ts.map +1 -0
- package/dist/src/iterators.js +13 -0
- package/dist/src/iterators.js.map +1 -0
- package/dist/src/json.d.ts +8 -0
- package/dist/src/json.d.ts.map +1 -0
- package/dist/src/json.js +46 -0
- package/dist/src/json.js.map +1 -0
- package/dist/src/logger.d.ts +18 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +87 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/numbers.d.ts +86 -0
- package/dist/src/numbers.d.ts.map +1 -0
- package/dist/src/numbers.js +354 -0
- package/dist/src/numbers.js.map +1 -0
- package/dist/src/objects.d.ts +66 -0
- package/dist/src/objects.d.ts.map +1 -0
- package/dist/src/objects.js +170 -0
- package/dist/src/objects.js.map +1 -0
- package/dist/src/phone-number.d.ts +4 -0
- package/dist/src/phone-number.d.ts.map +1 -0
- package/dist/src/phone-number.js +31 -0
- package/dist/src/phone-number.js.map +1 -0
- package/dist/src/promises.d.ts +102 -0
- package/dist/src/promises.d.ts.map +1 -0
- package/dist/src/promises.js +289 -0
- package/dist/src/promises.js.map +1 -0
- package/dist/src/queue/index.d.ts +27 -0
- package/dist/src/queue/index.d.ts.map +1 -0
- package/dist/src/queue/index.js +170 -0
- package/dist/src/queue/index.js.map +1 -0
- package/dist/src/queue/node.d.ts +7 -0
- package/dist/src/queue/node.d.ts.map +1 -0
- package/dist/src/queue/node.js +17 -0
- package/dist/src/queue/node.js.map +1 -0
- package/dist/src/regex.d.ts +19 -0
- package/dist/src/regex.d.ts.map +1 -0
- package/dist/src/regex.js +138 -0
- package/dist/src/regex.js.map +1 -0
- package/dist/src/status-codes.d.ts +67 -0
- package/dist/src/status-codes.d.ts.map +1 -0
- package/dist/src/status-codes.js +66 -0
- package/dist/src/status-codes.js.map +1 -0
- package/dist/src/strings.d.ts +279 -0
- package/dist/src/strings.d.ts.map +1 -0
- package/dist/src/strings.js +578 -0
- package/dist/src/strings.js.map +1 -0
- package/dist/src/vector.d.ts +2 -0
- package/dist/src/vector.d.ts.map +1 -0
- package/dist/src/vector.js +16 -0
- package/dist/src/vector.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { isDataEntity } from './entities/utils.js';
|
|
2
|
+
import { isEqualWith } from './deps.js';
|
|
3
|
+
import { toBigIntOrThrow } from './numbers.js';
|
|
4
|
+
export function isEqual(target, input) {
|
|
5
|
+
return input === target || (Number.isNaN(target) && Number.isNaN(input));
|
|
6
|
+
}
|
|
7
|
+
export function isEqualFP(target) {
|
|
8
|
+
return isEqual.bind(isEqual, target);
|
|
9
|
+
}
|
|
10
|
+
export function isDeepEqual(target, input) {
|
|
11
|
+
return isEqualWith(input, target, _isEqualCustomizer);
|
|
12
|
+
}
|
|
13
|
+
function _isEqualCustomizer(objValue, otherObject) {
|
|
14
|
+
const aIsEntity = isDataEntity(objValue);
|
|
15
|
+
const bIsEntity = isDataEntity(otherObject);
|
|
16
|
+
if (aIsEntity && bIsEntity) {
|
|
17
|
+
return isDeepEqual(Object.assign({}, objValue), Object.assign({}, otherObject));
|
|
18
|
+
}
|
|
19
|
+
if (aIsEntity && !bIsEntity) {
|
|
20
|
+
return isDeepEqual(Object.assign({}, objValue), otherObject);
|
|
21
|
+
}
|
|
22
|
+
if (!aIsEntity && bIsEntity) {
|
|
23
|
+
return isDeepEqual(Object.assign({}, objValue), otherObject);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function isDeepEqualFP(target) {
|
|
27
|
+
return isDeepEqual.bind(isDeepEqual, target);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* This will get the same type of a which is useful for comparison
|
|
31
|
+
* (but not equality since that is more strict)
|
|
32
|
+
*/
|
|
33
|
+
function getSameType(value, other) {
|
|
34
|
+
const vType = typeof value;
|
|
35
|
+
const oType = typeof other;
|
|
36
|
+
// these are invalid comparisons
|
|
37
|
+
if (vType === 'object' || oType === 'object')
|
|
38
|
+
return;
|
|
39
|
+
if (vType === 'undefined' || oType === 'undefined')
|
|
40
|
+
return;
|
|
41
|
+
if (vType === oType)
|
|
42
|
+
return [value, other];
|
|
43
|
+
if (vType === 'bigint' || oType === 'bigint') {
|
|
44
|
+
return [toBigIntOrThrow(value), toBigIntOrThrow(other)];
|
|
45
|
+
}
|
|
46
|
+
return [value, other];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if a value is greater than or equal to another
|
|
50
|
+
*/
|
|
51
|
+
export function isGreaterThanOrEqualTo(value, other) {
|
|
52
|
+
const res = getSameType(value, other);
|
|
53
|
+
if (res == null)
|
|
54
|
+
return false;
|
|
55
|
+
return res[0] >= res[1];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Check if a value is greater than or equal to another
|
|
59
|
+
*/
|
|
60
|
+
export function isGreaterThanOrEqualToFP(other) {
|
|
61
|
+
return function _isGreaterThanOrEqualTo(value) {
|
|
62
|
+
const res = getSameType(value, other);
|
|
63
|
+
if (res == null)
|
|
64
|
+
return false;
|
|
65
|
+
return res[0] >= res[1];
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Check if a value is greater than another
|
|
70
|
+
*/
|
|
71
|
+
export function isGreaterThan(value, other) {
|
|
72
|
+
const res = getSameType(value, other);
|
|
73
|
+
if (res == null)
|
|
74
|
+
return false;
|
|
75
|
+
return res[0] > res[1];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Check if a value is greater than or equal to another
|
|
79
|
+
*/
|
|
80
|
+
export function isGreaterThanFP(other) {
|
|
81
|
+
return function _isGreaterThanTo(value) {
|
|
82
|
+
const res = getSameType(value, other);
|
|
83
|
+
if (res == null)
|
|
84
|
+
return false;
|
|
85
|
+
return res[0] > res[1];
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check if a value is less than or equal to another
|
|
90
|
+
*/
|
|
91
|
+
export function isLessThanOrEqualTo(value, other) {
|
|
92
|
+
const res = getSameType(value, other);
|
|
93
|
+
if (res == null)
|
|
94
|
+
return false;
|
|
95
|
+
return res[0] <= res[1];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if a value is less than or equal to another
|
|
99
|
+
*/
|
|
100
|
+
export function isLessThanOrEqualToFP(other) {
|
|
101
|
+
return function _isLessThanOrEqualTo(value) {
|
|
102
|
+
const res = getSameType(value, other);
|
|
103
|
+
if (res == null)
|
|
104
|
+
return false;
|
|
105
|
+
return res[0] <= res[1];
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check if a value is less than another
|
|
110
|
+
*/
|
|
111
|
+
export function isLessThan(value, other) {
|
|
112
|
+
const res = getSameType(value, other);
|
|
113
|
+
if (res == null)
|
|
114
|
+
return false;
|
|
115
|
+
return res[0] < res[1];
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Check if a value is greater than or equal to another
|
|
119
|
+
*/
|
|
120
|
+
export function isLessThanFP(other) {
|
|
121
|
+
return function _isLessThan(value) {
|
|
122
|
+
const res = getSameType(value, other);
|
|
123
|
+
if (res == null)
|
|
124
|
+
return false;
|
|
125
|
+
return res[0] < res[1];
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=equality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equality.js","sourceRoot":"","sources":["../../src/equality.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import type { Logger } from '@terascope/types';
|
|
2
|
+
/**
|
|
3
|
+
* A custom Error class with additional properties,
|
|
4
|
+
* like statusCode and fatalError
|
|
5
|
+
*/
|
|
6
|
+
export declare class TSError extends Error {
|
|
7
|
+
/**
|
|
8
|
+
* An descriptive error code that specifies the error type, this follows more
|
|
9
|
+
* node convention
|
|
10
|
+
*/
|
|
11
|
+
code: string;
|
|
12
|
+
/**
|
|
13
|
+
* A HTTP status code for easy use
|
|
14
|
+
*/
|
|
15
|
+
statusCode: number;
|
|
16
|
+
/**
|
|
17
|
+
* Used to indicate the an error is fatal
|
|
18
|
+
*/
|
|
19
|
+
fatalError: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Used sometimes to indicate whether an error is retryable
|
|
22
|
+
*
|
|
23
|
+
* If this is not set then it is better not to assume either way
|
|
24
|
+
*/
|
|
25
|
+
retryable?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Additional context metadata
|
|
28
|
+
*/
|
|
29
|
+
context: TSErrorContext;
|
|
30
|
+
static [Symbol.hasInstance](_instance: unknown): boolean;
|
|
31
|
+
constructor(input: unknown, config?: TSErrorConfig);
|
|
32
|
+
getCause(): any;
|
|
33
|
+
}
|
|
34
|
+
export interface TSErrorConfig {
|
|
35
|
+
/**
|
|
36
|
+
* An descriptive error code that specifies the error type, this follows more
|
|
37
|
+
* node convention
|
|
38
|
+
*/
|
|
39
|
+
code?: string;
|
|
40
|
+
/**
|
|
41
|
+
* A HTTP status code for easy use
|
|
42
|
+
*/
|
|
43
|
+
statusCode?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Used to indicate the an error is fatal
|
|
46
|
+
*/
|
|
47
|
+
fatalError?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Used sometimes to indicate whether an error is retryable
|
|
50
|
+
*/
|
|
51
|
+
retryable?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Prefix the error message with a reason
|
|
54
|
+
*/
|
|
55
|
+
reason?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Override the message when given an error
|
|
58
|
+
*/
|
|
59
|
+
message?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Attach any context metadata to the error
|
|
62
|
+
*/
|
|
63
|
+
context?: Record<string, any>;
|
|
64
|
+
defaultStatusCode?: number;
|
|
65
|
+
defaultErrorMsg?: string;
|
|
66
|
+
}
|
|
67
|
+
export interface TSErrorContext extends Record<string, any> {
|
|
68
|
+
/** ISO Date string */
|
|
69
|
+
_createdAt: string;
|
|
70
|
+
_cause: any;
|
|
71
|
+
/**
|
|
72
|
+
* Used to indicate the error message is safe to log and send to the user
|
|
73
|
+
*/
|
|
74
|
+
safe?: boolean;
|
|
75
|
+
}
|
|
76
|
+
type ErrorInfo = {
|
|
77
|
+
message: string;
|
|
78
|
+
stack?: string;
|
|
79
|
+
context: TSErrorContext;
|
|
80
|
+
statusCode: number;
|
|
81
|
+
code: string;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Use following the chain of caused by stack of an error.
|
|
85
|
+
* Don't use this when logging the error, only when sending it
|
|
86
|
+
* */
|
|
87
|
+
export declare function getFullErrorStack(err: unknown): string;
|
|
88
|
+
/** parse error for info */
|
|
89
|
+
export declare function parseErrorInfo(input: unknown, config?: TSErrorConfig): ErrorInfo;
|
|
90
|
+
/**
|
|
91
|
+
* Safely log an error (with the error first Logger syntax)
|
|
92
|
+
*/
|
|
93
|
+
export declare function logError(logger: Logger, err: unknown, ...messages: any[]): void;
|
|
94
|
+
/** parse input to get error message or stack */
|
|
95
|
+
export declare function parseError(input: unknown, withStack?: boolean): string;
|
|
96
|
+
export declare function toStatusErrorCode(input: string | undefined): string;
|
|
97
|
+
export declare function prefixErrorMsg(input: unknown, prefix?: string, defaultMsg?: string): string;
|
|
98
|
+
export declare function isFatalError(err: unknown): boolean;
|
|
99
|
+
export declare function isRetryableError(err: unknown): boolean;
|
|
100
|
+
/** Check if an input has an error compatible api */
|
|
101
|
+
export declare function isError(err: unknown): err is Error;
|
|
102
|
+
/** Check is a TSError */
|
|
103
|
+
export declare function isTSError(err: unknown): err is TSError;
|
|
104
|
+
/** Check is a elasticsearch error */
|
|
105
|
+
export declare function isElasticsearchError(err: unknown): err is ElasticsearchError;
|
|
106
|
+
export interface ElasticsearchError extends Error {
|
|
107
|
+
body?: {
|
|
108
|
+
error?: {
|
|
109
|
+
type?: string;
|
|
110
|
+
reason?: string;
|
|
111
|
+
index?: string;
|
|
112
|
+
root_cause?: [
|
|
113
|
+
{
|
|
114
|
+
type?: string;
|
|
115
|
+
reason?: string;
|
|
116
|
+
index?: string;
|
|
117
|
+
}
|
|
118
|
+
];
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
status?: number;
|
|
122
|
+
type?: string;
|
|
123
|
+
reason?: string;
|
|
124
|
+
index?: string;
|
|
125
|
+
toJSON(): {
|
|
126
|
+
msg?: string;
|
|
127
|
+
statusCode?: number;
|
|
128
|
+
response?: string;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export declare function getErrorStatusCode(err: unknown, config?: TSErrorConfig, defaultCode?: number): number;
|
|
132
|
+
export declare function stripErrorMessage(error: unknown, reason?: string, requireSafe?: boolean): string;
|
|
133
|
+
/**
|
|
134
|
+
* Formats an AggregateError into a user-friendly Error which
|
|
135
|
+
* shows the first five Errors from the Aggregate.
|
|
136
|
+
* @param aggregateError
|
|
137
|
+
*/
|
|
138
|
+
export declare function formatAggregateError(aggregateError: unknown): Promise<void>;
|
|
139
|
+
export {};
|
|
140
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
import STATUS_CODES from './status-codes.js';
|
|
2
|
+
import { getFirst } from './arrays.js';
|
|
3
|
+
import { isFunction } from './functions.js';
|
|
4
|
+
import { getTypeOf, isPlainObject } from './deps.js';
|
|
5
|
+
import { tryParseJSON } from './json.js';
|
|
6
|
+
import * as s from './strings.js';
|
|
7
|
+
import { isKey } from './objects.js';
|
|
8
|
+
/**
|
|
9
|
+
* A custom Error class with additional properties,
|
|
10
|
+
* like statusCode and fatalError
|
|
11
|
+
*/
|
|
12
|
+
export class TSError extends Error {
|
|
13
|
+
/**
|
|
14
|
+
* An descriptive error code that specifies the error type, this follows more
|
|
15
|
+
* node convention
|
|
16
|
+
*/
|
|
17
|
+
code;
|
|
18
|
+
/**
|
|
19
|
+
* A HTTP status code for easy use
|
|
20
|
+
*/
|
|
21
|
+
statusCode;
|
|
22
|
+
/**
|
|
23
|
+
* Used to indicate the an error is fatal
|
|
24
|
+
*/
|
|
25
|
+
fatalError;
|
|
26
|
+
/**
|
|
27
|
+
* Used sometimes to indicate whether an error is retryable
|
|
28
|
+
*
|
|
29
|
+
* If this is not set then it is better not to assume either way
|
|
30
|
+
*/
|
|
31
|
+
retryable;
|
|
32
|
+
/**
|
|
33
|
+
* Additional context metadata
|
|
34
|
+
*/
|
|
35
|
+
context;
|
|
36
|
+
static [Symbol.hasInstance](_instance) {
|
|
37
|
+
if (_instance == null || typeof _instance !== 'object')
|
|
38
|
+
return false;
|
|
39
|
+
const instance = _instance;
|
|
40
|
+
if (instance.message == null || instance.stack == null)
|
|
41
|
+
return false;
|
|
42
|
+
if (instance.statusCode == null)
|
|
43
|
+
return false;
|
|
44
|
+
if (typeof instance.getCause !== 'function')
|
|
45
|
+
return false;
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
constructor(input, config = {}) {
|
|
49
|
+
const { fatalError = false } = config;
|
|
50
|
+
const { message, statusCode, context, code } = parseErrorInfo(input, config);
|
|
51
|
+
super(message);
|
|
52
|
+
this.fatalError = fatalError;
|
|
53
|
+
this.statusCode = statusCode;
|
|
54
|
+
this.context = context;
|
|
55
|
+
this.code = code;
|
|
56
|
+
if (isTSError(input)) {
|
|
57
|
+
this.fatalError = !!input.fatalError;
|
|
58
|
+
this.retryable = input.retryable;
|
|
59
|
+
}
|
|
60
|
+
if (!this.fatalError && config.retryable != null) {
|
|
61
|
+
this.retryable = config.retryable;
|
|
62
|
+
}
|
|
63
|
+
Object.defineProperty(this, 'name', {
|
|
64
|
+
value: this.constructor.name,
|
|
65
|
+
});
|
|
66
|
+
if (Error?.captureStackTrace) {
|
|
67
|
+
Error.captureStackTrace(this, TSError);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
const value = Error(message).stack;
|
|
71
|
+
if (value) {
|
|
72
|
+
Object.defineProperty(this, 'stack', {
|
|
73
|
+
value,
|
|
74
|
+
writable: true,
|
|
75
|
+
configurable: true
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
getCause() {
|
|
81
|
+
return this.context._cause;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const DEFAULT_STATUS_CODE = 500;
|
|
85
|
+
const DEFAULT_ERR_MSG = STATUS_CODES[DEFAULT_STATUS_CODE];
|
|
86
|
+
/**
|
|
87
|
+
* Use following the chain of caused by stack of an error.
|
|
88
|
+
* Don't use this when logging the error, only when sending it
|
|
89
|
+
* */
|
|
90
|
+
export function getFullErrorStack(err) {
|
|
91
|
+
return `${parseError(err, true)}${getCauseStack(err)}`;
|
|
92
|
+
}
|
|
93
|
+
function getCauseStack(err) {
|
|
94
|
+
if (!err || !isFunction(err.getCause))
|
|
95
|
+
return '';
|
|
96
|
+
const cause = err.getCause();
|
|
97
|
+
if (!cause)
|
|
98
|
+
return '';
|
|
99
|
+
return `\nCaused by: ${getFullErrorStack(cause)}`;
|
|
100
|
+
}
|
|
101
|
+
/** parse error for info */
|
|
102
|
+
export function parseErrorInfo(input, config = {}) {
|
|
103
|
+
const { defaultErrorMsg, defaultStatusCode = DEFAULT_STATUS_CODE } = config;
|
|
104
|
+
const statusCode = getErrorStatusCode(input, config, defaultStatusCode);
|
|
105
|
+
if (isElasticsearchError(input)) {
|
|
106
|
+
const esErrorInfo = _parseESErrorInfo(input);
|
|
107
|
+
if (esErrorInfo) {
|
|
108
|
+
const updatedContext = Object.assign({}, esErrorInfo.context, config.context);
|
|
109
|
+
return {
|
|
110
|
+
message: config.message
|
|
111
|
+
|| prefixErrorMsg(esErrorInfo.message, config.reason, defaultErrorMsg),
|
|
112
|
+
context: createErrorContext(input, { ...config, context: updatedContext }),
|
|
113
|
+
statusCode,
|
|
114
|
+
code: esErrorInfo.code,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const context = createErrorContext(input, config);
|
|
119
|
+
let stack;
|
|
120
|
+
const message = config.message || prefixErrorMsg(input, config.reason, defaultErrorMsg);
|
|
121
|
+
if (input && input.stack) {
|
|
122
|
+
stack = input.stack;
|
|
123
|
+
}
|
|
124
|
+
let code;
|
|
125
|
+
if (config.code && s.isString(config.code)) {
|
|
126
|
+
code = toStatusErrorCode(config.code);
|
|
127
|
+
}
|
|
128
|
+
else if (input && input.code && s.isString(input.code)) {
|
|
129
|
+
code = toStatusErrorCode(input.code);
|
|
130
|
+
}
|
|
131
|
+
else if (isKey(STATUS_CODES, statusCode)) {
|
|
132
|
+
code = toStatusErrorCode(STATUS_CODES[statusCode]);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
code = toStatusErrorCode(undefined);
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
stack,
|
|
139
|
+
message,
|
|
140
|
+
context,
|
|
141
|
+
statusCode,
|
|
142
|
+
code,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Safely log an error (with the error first Logger syntax)
|
|
147
|
+
*/
|
|
148
|
+
export function logError(logger, err, ...messages) {
|
|
149
|
+
if (typeof err === 'string') {
|
|
150
|
+
logger.error(new TSError(err), ...messages);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (isError(err)) {
|
|
154
|
+
logger.error(err, ...messages);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
// make sure we don't lose the stack
|
|
158
|
+
logger.error(new TSError(err), ...messages, `invalid message format ${getTypeOf(err)} error`);
|
|
159
|
+
}
|
|
160
|
+
function createErrorContext(input, config = {}) {
|
|
161
|
+
const context = Object.assign({}, input && input.context, config && config.context);
|
|
162
|
+
Object.defineProperties(context, {
|
|
163
|
+
_createdAt: {
|
|
164
|
+
value: new Date().toISOString(),
|
|
165
|
+
enumerable: false,
|
|
166
|
+
},
|
|
167
|
+
_cause: {
|
|
168
|
+
value: input,
|
|
169
|
+
enumerable: false,
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
// don't propogate safe
|
|
173
|
+
if (context.safe && !(config.context && config.context.safe)) {
|
|
174
|
+
context.safe = false;
|
|
175
|
+
}
|
|
176
|
+
return context;
|
|
177
|
+
}
|
|
178
|
+
/** parse input to get error message or stack */
|
|
179
|
+
export function parseError(input, withStack = false) {
|
|
180
|
+
const result = parseErrorInfo(input);
|
|
181
|
+
if (withStack && result.stack)
|
|
182
|
+
return result.stack;
|
|
183
|
+
return result.message;
|
|
184
|
+
}
|
|
185
|
+
function _cleanErrorMsg(input) {
|
|
186
|
+
return s.truncate(input.trim(), 3000);
|
|
187
|
+
}
|
|
188
|
+
function _parseESErrorInfo(input) {
|
|
189
|
+
const bodyError = input && input.body && input.body.error;
|
|
190
|
+
const name = (input && input.name) || 'ElasticSearchError';
|
|
191
|
+
const rootCause = bodyError && bodyError.root_cause && getFirst(bodyError.root_cause);
|
|
192
|
+
let type;
|
|
193
|
+
let reason;
|
|
194
|
+
let index;
|
|
195
|
+
[input, bodyError, rootCause].forEach((obj) => {
|
|
196
|
+
if (obj == null)
|
|
197
|
+
return;
|
|
198
|
+
if (!isPlainObject(obj))
|
|
199
|
+
return;
|
|
200
|
+
if (obj.type)
|
|
201
|
+
type = obj.type;
|
|
202
|
+
if (obj.reason)
|
|
203
|
+
reason = obj.reason;
|
|
204
|
+
if (obj.index)
|
|
205
|
+
index = obj.index;
|
|
206
|
+
});
|
|
207
|
+
const metadata = input.toJSON();
|
|
208
|
+
if (metadata.response) {
|
|
209
|
+
const response = tryParseJSON(metadata.response);
|
|
210
|
+
metadata.response = response;
|
|
211
|
+
}
|
|
212
|
+
else if (input.body) {
|
|
213
|
+
metadata.response = input.body;
|
|
214
|
+
}
|
|
215
|
+
if (!index && metadata.response) {
|
|
216
|
+
index = metadata.response.index || metadata.response._index;
|
|
217
|
+
}
|
|
218
|
+
const message = `Elasticsearch Error: ${_normalizeESError(metadata.msg)}`;
|
|
219
|
+
const code = toStatusErrorCode(reason ? `${name} ${reason}` : name);
|
|
220
|
+
return {
|
|
221
|
+
message,
|
|
222
|
+
context: {
|
|
223
|
+
metadata,
|
|
224
|
+
type,
|
|
225
|
+
reason,
|
|
226
|
+
index,
|
|
227
|
+
},
|
|
228
|
+
code,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
export function toStatusErrorCode(input) {
|
|
232
|
+
if (!s.isString(input))
|
|
233
|
+
return 'UNKNOWN_ERROR';
|
|
234
|
+
return input
|
|
235
|
+
.trim()
|
|
236
|
+
.toUpperCase()
|
|
237
|
+
.replace(/\W+/g, '_');
|
|
238
|
+
}
|
|
239
|
+
function _normalizeESError(message) {
|
|
240
|
+
if (!message)
|
|
241
|
+
return '';
|
|
242
|
+
const msg = message.toLowerCase();
|
|
243
|
+
if (msg.includes('document missing')) {
|
|
244
|
+
return 'Not Found';
|
|
245
|
+
}
|
|
246
|
+
if (msg.includes('document already exists')) {
|
|
247
|
+
return 'Document Already Exists (version conflict)';
|
|
248
|
+
}
|
|
249
|
+
if (msg.includes('version conflict')) {
|
|
250
|
+
return 'Document Out-of-Date (version conflict)';
|
|
251
|
+
}
|
|
252
|
+
if (msg.indexOf('unknown error') === 0) {
|
|
253
|
+
return 'Unknown Elasticsearch Error, Cluster may be Unavailable';
|
|
254
|
+
}
|
|
255
|
+
return message;
|
|
256
|
+
}
|
|
257
|
+
export function prefixErrorMsg(input, prefix, defaultMsg = 'Unknown Error') {
|
|
258
|
+
if (!prefix) {
|
|
259
|
+
if (isError(input)) {
|
|
260
|
+
return _cleanErrorMsg(input.message || defaultMsg);
|
|
261
|
+
}
|
|
262
|
+
return _cleanErrorMsg(s.toString(input) || defaultMsg);
|
|
263
|
+
}
|
|
264
|
+
return _cleanErrorMsg(`${prefix}, caused by ${s.toString(input || defaultMsg)}`);
|
|
265
|
+
}
|
|
266
|
+
export function isFatalError(err) {
|
|
267
|
+
return !!(err && err.fatalError);
|
|
268
|
+
}
|
|
269
|
+
export function isRetryableError(err) {
|
|
270
|
+
return !!(err && err.retryable === true && !err.fatalError);
|
|
271
|
+
}
|
|
272
|
+
/** Check if an input has an error compatible api */
|
|
273
|
+
export function isError(err) {
|
|
274
|
+
return err && err.stack && err.message;
|
|
275
|
+
}
|
|
276
|
+
/** Check is a TSError */
|
|
277
|
+
export function isTSError(err) {
|
|
278
|
+
if (err instanceof TSError)
|
|
279
|
+
return true;
|
|
280
|
+
if (!isError(err))
|
|
281
|
+
return false;
|
|
282
|
+
return err.statusCode != null;
|
|
283
|
+
}
|
|
284
|
+
/** Check is a elasticsearch error */
|
|
285
|
+
export function isElasticsearchError(err) {
|
|
286
|
+
return !!(err && isFunction(err.toJSON));
|
|
287
|
+
}
|
|
288
|
+
function coerceStatusCode(input) {
|
|
289
|
+
return isKey(STATUS_CODES, input) ? input : null;
|
|
290
|
+
}
|
|
291
|
+
export function getErrorStatusCode(err, config = {}, defaultCode = DEFAULT_STATUS_CODE) {
|
|
292
|
+
const metadata = isElasticsearchError(err) ? err.toJSON() : {};
|
|
293
|
+
for (const key of ['statusCode', 'status', 'code']) {
|
|
294
|
+
for (const obj of [config, err, metadata]) {
|
|
295
|
+
if (!obj || s.isString(obj))
|
|
296
|
+
continue;
|
|
297
|
+
const statusCode = coerceStatusCode(obj[key]);
|
|
298
|
+
if (statusCode != null) {
|
|
299
|
+
return statusCode;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return defaultCode;
|
|
304
|
+
}
|
|
305
|
+
export function stripErrorMessage(error, reason = DEFAULT_ERR_MSG, requireSafe = false) {
|
|
306
|
+
const { message, context, statusCode } = parseErrorInfo(error, {
|
|
307
|
+
defaultErrorMsg: reason,
|
|
308
|
+
context: error && error.context,
|
|
309
|
+
});
|
|
310
|
+
const messages = s.parseList(message.split('caused by'));
|
|
311
|
+
const firstErr = getFirst(messages);
|
|
312
|
+
if (!firstErr)
|
|
313
|
+
return reason;
|
|
314
|
+
const msg = firstErr
|
|
315
|
+
.replace(/^\s*,\s*/, '')
|
|
316
|
+
.replace(/\s*,\s*$/, '')
|
|
317
|
+
.replace(/TSError/g, 'Error')
|
|
318
|
+
.trim();
|
|
319
|
+
if (requireSafe) {
|
|
320
|
+
if (context && context.safe)
|
|
321
|
+
return msg;
|
|
322
|
+
if (statusCode === 403)
|
|
323
|
+
return 'Access Denied';
|
|
324
|
+
if (statusCode === 404)
|
|
325
|
+
return 'Not Found';
|
|
326
|
+
return reason;
|
|
327
|
+
}
|
|
328
|
+
if (firstErr.includes(reason))
|
|
329
|
+
return msg;
|
|
330
|
+
return `${reason}: ${msg}`;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Formats an AggregateError into a user-friendly Error which
|
|
334
|
+
* shows the first five Errors from the Aggregate.
|
|
335
|
+
* @param aggregateError
|
|
336
|
+
*/
|
|
337
|
+
export async function formatAggregateError(aggregateError) {
|
|
338
|
+
// Check to ensure it's an aggregate error with an errors key that's an array
|
|
339
|
+
if (aggregateError instanceof AggregateError && Array.isArray(aggregateError.errors)) {
|
|
340
|
+
// This will ensure we don't print more than 5 errors
|
|
341
|
+
const maxErrorLength = 5;
|
|
342
|
+
const errorPrintLength = aggregateError.errors.length < maxErrorLength
|
|
343
|
+
? aggregateError.errors.length
|
|
344
|
+
: maxErrorLength;
|
|
345
|
+
let message = `Failed with an AggregateError containing ${aggregateError.errors.length} error(s):\n`;
|
|
346
|
+
for (let i = 0; i < errorPrintLength; i++) {
|
|
347
|
+
const error = aggregateError.errors[i];
|
|
348
|
+
// ensure this is also an instance of an error so it has a message property
|
|
349
|
+
let text;
|
|
350
|
+
if (error instanceof Error) {
|
|
351
|
+
text = error.message;
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
try {
|
|
355
|
+
text = JSON.stringify(error);
|
|
356
|
+
}
|
|
357
|
+
catch (innerError) {
|
|
358
|
+
text = String(error);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
message += `\n[${i + 1}] ${text}`;
|
|
362
|
+
}
|
|
363
|
+
if (aggregateError.errors.length > maxErrorLength) {
|
|
364
|
+
const remainingErrors = aggregateError.errors.length - maxErrorLength;
|
|
365
|
+
message += `\n... and ${remainingErrors} other errors.`;
|
|
366
|
+
}
|
|
367
|
+
const combinedError = new Error(message);
|
|
368
|
+
throw combinedError;
|
|
369
|
+
}
|
|
370
|
+
throw aggregateError;
|
|
371
|
+
}
|
|
372
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
|