yerror 9.0.0 → 9.1.0
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/CHANGELOG.md +7 -0
- package/README.md +32 -0
- package/dist/index.d.ts +28 -8
- package/dist/index.js +32 -3
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +25 -1
- package/dist/index.test.js.map +1 -1
- package/package.json +19 -86
- package/src/index.test.ts +33 -1
- package/src/index.ts +54 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [9.1.0](https://github.com/nfroidure/yerror/compare/v9.0.0...v9.1.0) (2026-03-28)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* add more casting features ([1153fcf](https://github.com/nfroidure/yerror/commit/1153fcf481d7660f247e65f5a8c8596f2abe511c))
|
|
7
|
+
|
|
1
8
|
# [9.0.0](https://github.com/nfroidure/yerror/compare/v8.0.0...v9.0.0) (2026-03-25)
|
|
2
9
|
|
|
3
10
|
# [8.0.0](https://github.com/nfroidure/yerror/compare/v7.0.0...v8.0.0) (2023-08-12)
|
package/README.md
CHANGED
|
@@ -90,6 +90,12 @@ doSomethingAsync('nuts', 'code')
|
|
|
90
90
|
<dd><p>Allow to print a stack from anything (especially caught
|
|
91
91
|
errors that may or may not contain errors 🤷).</p>
|
|
92
92
|
</dd>
|
|
93
|
+
<dt><a href="#hasYErrorCode">hasYErrorCode(err, code)</a> ⇒ <code>boolean</code></dt>
|
|
94
|
+
<dd><p>Allow to check a YError code and cast the error.</p>
|
|
95
|
+
</dd>
|
|
96
|
+
<dt><a href="#pickYErrorWithCode">pickYErrorWithCode(err, code)</a> ⇒ <code>boolean</code></dt>
|
|
97
|
+
<dd><p>Allow to check all errors for a YError code and return the casted the error.</p>
|
|
98
|
+
</dd>
|
|
93
99
|
</dl>
|
|
94
100
|
|
|
95
101
|
<a name="YError"></a>
|
|
@@ -178,6 +184,32 @@ Allow to print a stack from anything (especially caught
|
|
|
178
184
|
| --- | --- | --- |
|
|
179
185
|
| err | <code>Error</code> | The error to print |
|
|
180
186
|
|
|
187
|
+
<a name="hasYErrorCode"></a>
|
|
188
|
+
|
|
189
|
+
## hasYErrorCode(err, code) ⇒ <code>boolean</code>
|
|
190
|
+
Allow to check a YError code and cast the error.
|
|
191
|
+
|
|
192
|
+
**Kind**: global function
|
|
193
|
+
**Returns**: <code>boolean</code> - The result
|
|
194
|
+
|
|
195
|
+
| Param | Type | Description |
|
|
196
|
+
| --- | --- | --- |
|
|
197
|
+
| err | <code>Error</code> | The error to cast |
|
|
198
|
+
| code | <code>Error</code> | The code to check |
|
|
199
|
+
|
|
200
|
+
<a name="pickYErrorWithCode"></a>
|
|
201
|
+
|
|
202
|
+
## pickYErrorWithCode(err, code) ⇒ <code>boolean</code>
|
|
203
|
+
Allow to check all errors for a YError code and return the casted the error.
|
|
204
|
+
|
|
205
|
+
**Kind**: global function
|
|
206
|
+
**Returns**: <code>boolean</code> - The result
|
|
207
|
+
|
|
208
|
+
| Param | Type | Description |
|
|
209
|
+
| --- | --- | --- |
|
|
210
|
+
| err | <code>Error</code> | The error to cast |
|
|
211
|
+
| code | <code>Error</code> | The code to check |
|
|
212
|
+
|
|
181
213
|
|
|
182
214
|
# Authors
|
|
183
215
|
- [Nicolas Froidure (formerly at SimpliField)](http://insertafter.com/en/index.html)
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export type YErrorDebugValue = unknown;
|
|
1
|
+
export type YErrorDebugValue = unknown[];
|
|
2
2
|
/**
|
|
3
3
|
* A YError class able to contain some debugValues and
|
|
4
4
|
* print better stack traces
|
|
5
5
|
* @extends Error
|
|
6
6
|
*/
|
|
7
|
-
declare class YError<T = YErrorDebugValue> extends Error {
|
|
7
|
+
declare class YError<T extends unknown[] = YErrorDebugValue> extends Error {
|
|
8
8
|
code: string;
|
|
9
|
-
debugValues: T
|
|
9
|
+
debugValues: T;
|
|
10
10
|
wrappedErrors: (Error | YError)[];
|
|
11
11
|
/**
|
|
12
12
|
* Creates a new YError with an error code
|
|
@@ -16,7 +16,7 @@ declare class YError<T = YErrorDebugValue> extends Error {
|
|
|
16
16
|
* @param {any} [debugValues]
|
|
17
17
|
* Some additional debugging values
|
|
18
18
|
*/
|
|
19
|
-
constructor(errorCode?: string, debugValues?: T
|
|
19
|
+
constructor(errorCode?: string, debugValues?: T, wrappedErrors?: (Error | YError)[]);
|
|
20
20
|
/**
|
|
21
21
|
* Wraps any error and output a YError with an error
|
|
22
22
|
* code and some debugValues as debug values.
|
|
@@ -29,7 +29,7 @@ declare class YError<T = YErrorDebugValue> extends Error {
|
|
|
29
29
|
* @return {YError}
|
|
30
30
|
* The wrapped error
|
|
31
31
|
*/
|
|
32
|
-
static wrap<T = YErrorDebugValue>(err: Error | YError, errorCode?: string, debugValues?: T
|
|
32
|
+
static wrap<T extends unknown[] = YErrorDebugValue>(err: Error | YError, errorCode?: string, debugValues?: T): YError;
|
|
33
33
|
/**
|
|
34
34
|
* Return a YError as is or wraps any other error and output
|
|
35
35
|
* a YError with a code and some debugValues as debug values.
|
|
@@ -42,7 +42,7 @@ declare class YError<T = YErrorDebugValue> extends Error {
|
|
|
42
42
|
* @return {YError}
|
|
43
43
|
* The wrapped error
|
|
44
44
|
*/
|
|
45
|
-
static cast<T = YErrorDebugValue>(err: Error | YError, errorCode?: string, debugValues?: T
|
|
45
|
+
static cast<T extends unknown[] = YErrorDebugValue>(err: Error | YError, errorCode?: string, debugValues?: T): YError;
|
|
46
46
|
/**
|
|
47
47
|
* Same than `YError.wrap()` but preserves the code
|
|
48
48
|
* and the debug values of the error if it is
|
|
@@ -56,7 +56,7 @@ declare class YError<T = YErrorDebugValue> extends Error {
|
|
|
56
56
|
* @return {YError}
|
|
57
57
|
* The wrapped error
|
|
58
58
|
*/
|
|
59
|
-
static bump<T = YErrorDebugValue>(err: Error | YError, errorCode?: string, debugValues?: T
|
|
59
|
+
static bump<T extends unknown[] = YErrorDebugValue>(err: Error | YError, errorCode?: string, debugValues?: T): YError;
|
|
60
60
|
toString(): string;
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
@@ -68,6 +68,26 @@ declare class YError<T = YErrorDebugValue> extends Error {
|
|
|
68
68
|
* The stack trace if any
|
|
69
69
|
*/
|
|
70
70
|
export declare function printStackTrace(err: Error | YError): string;
|
|
71
|
-
export declare function looksLikeAYError(err: Error | YError): err is YError;
|
|
72
71
|
export declare function looksLikeAYErrorCode(str: string): boolean;
|
|
72
|
+
export declare function looksLikeAYError(err: Error | YError): err is YError;
|
|
73
|
+
/**
|
|
74
|
+
* Allow to check a YError code and cast the error.
|
|
75
|
+
* @param {Error} err
|
|
76
|
+
* The error to cast
|
|
77
|
+
* @param {Error} code
|
|
78
|
+
* The code to check
|
|
79
|
+
* @return {boolean}
|
|
80
|
+
* The result
|
|
81
|
+
*/
|
|
82
|
+
export declare function hasYErrorCode<T extends unknown[] = YErrorDebugValue>(err: Error | YError, code: string): err is YError<T>;
|
|
83
|
+
/**
|
|
84
|
+
* Allow to check all errors for a YError code and return the casted the error.
|
|
85
|
+
* @param {Error} err
|
|
86
|
+
* The error to cast
|
|
87
|
+
* @param {Error} code
|
|
88
|
+
* The code to check
|
|
89
|
+
* @return {boolean}
|
|
90
|
+
* The result
|
|
91
|
+
*/
|
|
92
|
+
export declare function pickYErrorWithCode<T extends unknown[] = YErrorDebugValue>(err: Error | YError, code: string): YError<T> | null;
|
|
73
93
|
export { YError };
|
package/dist/index.js
CHANGED
|
@@ -42,7 +42,7 @@ class YError extends Error {
|
|
|
42
42
|
*/
|
|
43
43
|
static wrap(err, errorCode, debugValues = []) {
|
|
44
44
|
const wrappedErrorIsACode = looksLikeAYErrorCode(err.message);
|
|
45
|
-
const wrappedErrors = ('wrappedErrors' in err ? err.wrappedErrors : []).concat(err);
|
|
45
|
+
const wrappedErrors = ('wrappedErrors' in err ? err.wrappedErrors : []).concat([err]);
|
|
46
46
|
if (!errorCode) {
|
|
47
47
|
if (wrappedErrorIsACode) {
|
|
48
48
|
errorCode = err.message;
|
|
@@ -118,6 +118,9 @@ export function printStackTrace(err) {
|
|
|
118
118
|
? err.toString()
|
|
119
119
|
: typeof err}`;
|
|
120
120
|
}
|
|
121
|
+
export function looksLikeAYErrorCode(str) {
|
|
122
|
+
return /^([A-Z0-9_]+)$/.test(str);
|
|
123
|
+
}
|
|
121
124
|
// In order to keep compatibility through major versions
|
|
122
125
|
// we have to make kind of a cross major version instanceof
|
|
123
126
|
export function looksLikeAYError(err) {
|
|
@@ -132,8 +135,34 @@ export function looksLikeAYError(err) {
|
|
|
132
135
|
err.debugValues &&
|
|
133
136
|
err.debugValues instanceof Array));
|
|
134
137
|
}
|
|
135
|
-
|
|
136
|
-
|
|
138
|
+
/**
|
|
139
|
+
* Allow to check a YError code and cast the error.
|
|
140
|
+
* @param {Error} err
|
|
141
|
+
* The error to cast
|
|
142
|
+
* @param {Error} code
|
|
143
|
+
* The code to check
|
|
144
|
+
* @return {boolean}
|
|
145
|
+
* The result
|
|
146
|
+
*/
|
|
147
|
+
export function hasYErrorCode(err, code) {
|
|
148
|
+
return looksLikeAYError(err) && err.code === code;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Allow to check all errors for a YError code and return the casted the error.
|
|
152
|
+
* @param {Error} err
|
|
153
|
+
* The error to cast
|
|
154
|
+
* @param {Error} code
|
|
155
|
+
* The code to check
|
|
156
|
+
* @return {boolean}
|
|
157
|
+
* The result
|
|
158
|
+
*/
|
|
159
|
+
export function pickYErrorWithCode(err, code) {
|
|
160
|
+
for (const currentError of [err].concat('wrappedErrors' in err ? err.wrappedErrors : [])) {
|
|
161
|
+
if (hasYErrorCode(currentError, code)) {
|
|
162
|
+
return currentError;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return null;
|
|
137
166
|
}
|
|
138
167
|
export { YError };
|
|
139
168
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAI9B;;;;GAIG;AACH,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAI9B;;;;GAIG;AACH,MAAM,MAA+C,SAAQ,KAAK;IAChE,IAAI,CAAS;IACb,WAAW,GAAM,EAAkB,CAAC;IACpC,aAAa,GAAuB,EAAE,CAAC;IACvC;;;;;;;OAOG;IACH,YACE,SAAkB,EAClB,cAAiB,EAAkB,EACnC,gBAAoC,EAAE;QAEtC,8BAA8B;QAC9B,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjB,gBAAgB;QAChB,IAAI,CAAC,IAAI,GAAG,SAAS,IAAI,cAAc,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE5B,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,IAAI,CACT,GAAmB,EACnB,SAAkB,EAClB,cAAiB,EAAkB;QAEnC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,CACpB,eAAe,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAChD,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEhB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,mBAAmB,EAAE,CAAC;gBACxB,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,cAAc,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,MAAM,CAAI,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,IAAI,CACT,GAAmB,EACnB,SAAkB,EAClB,cAAiB,EAAkB;QAEnC,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,CACT,GAAmB,EACnB,SAAkB,EAClB,cAAiB,EAAkB;QAEnC,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,QAAQ;QACN,IAAI,mBAA2B,CAAC;QAEhC,IAAI,CAAC;YACH,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB,GAAG,YAAY,CAAC;QACrC,CAAC;QAED,OAAO,GACL,IAAI,CAAC,aAAa,CAAC,MAAM;YACvB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG;YAC/D,CAAC,CAAC,EACN,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,mBAAmB,GAAG,CAAC;IACpE,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,GAAmB;IACjD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;QAC7D,CAAC,CAAC,GAAG,CAAC,KAAK;QACX,CAAC,CAAC,8BACE,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU;YAC/C,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;YAChB,CAAC,CAAC,OAAO,GACb,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,wDAAwD;AACxD,2DAA2D;AAC3D,MAAM,UAAU,gBAAgB,CAAC,GAAmB;IAClD,OAAO,CACL,CAAC,CAAC,CAAC,GAAG,YAAY,MAAM,CAAC;QACzB,CAAC,CAAC,CACA,GAAG,CAAC,WAAW;YACf,GAAG,CAAC,WAAW,CAAC,IAAI;YACpB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACtC,MAAM,IAAI,GAAG;YACb,QAAQ,KAAK,OAAO,GAAG,CAAC,IAAI;YAC5B,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;YAC9B,aAAa,IAAI,GAAG;YACpB,GAAG,CAAC,WAAW;YACf,GAAG,CAAC,WAAW,YAAY,KAAK,CACjC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAmB,EACnB,IAAY;IAEZ,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;AACpD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAmB,EACnB,IAAY;IAEZ,KAAK,MAAM,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CACrC,eAAe,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAChD,EAAE,CAAC;QACF,IAAI,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,YAAyB,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/index.test.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, test, expect } from '@jest/globals';
|
|
2
|
-
import { YError } from './index.js';
|
|
2
|
+
import { hasYErrorCode, pickYErrorWithCode, YError } from './index.js';
|
|
3
3
|
describe('YError', () => {
|
|
4
4
|
describe('.__constructor', () => {
|
|
5
5
|
test('Should work', () => {
|
|
@@ -141,5 +141,29 @@ describe('YError', () => {
|
|
|
141
141
|
expect(err.name).toEqual(err.toString());
|
|
142
142
|
});
|
|
143
143
|
});
|
|
144
|
+
describe('.hasYErrorCode()', () => {
|
|
145
|
+
test('should work with defined debug value type', () => {
|
|
146
|
+
const err = new YError('E_ERROR', ['arg1.1', 'arg1.2']);
|
|
147
|
+
expect(hasYErrorCode(err, 'E_ERROR')).toBeTruthy();
|
|
148
|
+
});
|
|
149
|
+
test('should work with undefined debug value type', () => {
|
|
150
|
+
const err = new YError('E_ERROR', ['arg1.1', 'arg1.2']);
|
|
151
|
+
expect(hasYErrorCode(err, 'E_ERROR')).toBeTruthy();
|
|
152
|
+
});
|
|
153
|
+
test('should work with native errors', () => {
|
|
154
|
+
const err = new Error('E_ERROR');
|
|
155
|
+
expect(hasYErrorCode(err, 'E_ERROR')).toBeFalsy();
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
describe('.pickYErrorWithCode()', () => {
|
|
159
|
+
test('should work', () => {
|
|
160
|
+
const err1 = new Error('E_ERROR_1');
|
|
161
|
+
const err2 = YError.wrap(err1, 'E_ERROR_2', ['arg1.1', 'arg1.2']);
|
|
162
|
+
const err3 = YError.wrap(err2, 'E_ERROR_3', ['arg1.1', 'arg1.2']);
|
|
163
|
+
expect(pickYErrorWithCode(err3, 'E_ERROR_1')).toEqual(null);
|
|
164
|
+
expect(pickYErrorWithCode(err3, 'E_ERROR_2')).toEqual(err2);
|
|
165
|
+
expect(pickYErrorWithCode(err3, 'E_ERROR_3')).toEqual(err3);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
144
168
|
});
|
|
145
169
|
//# sourceMappingURL=index.test.js.map
|
package/dist/index.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"configs": [
|
|
4
4
|
"main",
|
|
5
5
|
"readme",
|
|
6
|
-
"eslint",
|
|
7
6
|
"tsesm",
|
|
7
|
+
"eslint",
|
|
8
8
|
"jest",
|
|
9
9
|
"codeclimate",
|
|
10
10
|
"ghactions",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"name": "yerror",
|
|
27
|
-
"version": "9.
|
|
27
|
+
"version": "9.1.0",
|
|
28
28
|
"description": "It helps to know why you got an error.",
|
|
29
29
|
"scripts": {
|
|
30
30
|
"build": "rimraf 'dist' && tsc --outDir dist",
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
"jest": "NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest",
|
|
38
38
|
"lint": "eslint 'src/**/*.ts'",
|
|
39
39
|
"metapak": "metapak",
|
|
40
|
-
"precommit": "node --run test && node --run lint && node --run
|
|
40
|
+
"precommit": "node --run test && node --run lint && node --run build && node --run doc && node --run metapak -- -s",
|
|
41
41
|
"prettier": "prettier --write 'src/**/*.ts'",
|
|
42
|
-
"preversion": "node --run test && node --run lint && node --run build && node --run
|
|
42
|
+
"preversion": "node --run test && node --run lint && node --run build && node --run doc && node --run metapak -- -s",
|
|
43
43
|
"rebuild": "swc ./src -s -d dist -C jsc.target=es2022",
|
|
44
44
|
"test": "node --run jest",
|
|
45
45
|
"version": "node --run changelog"
|
|
@@ -79,8 +79,8 @@
|
|
|
79
79
|
"eslint-plugin-prettier": "^5.5.5",
|
|
80
80
|
"jest": "^30.3.0",
|
|
81
81
|
"jsdoc-to-markdown": "^9.1.3",
|
|
82
|
-
"metapak": "^
|
|
83
|
-
"metapak-nfroidure": "
|
|
82
|
+
"metapak": "^7.0.0",
|
|
83
|
+
"metapak-nfroidure": "22.0.2",
|
|
84
84
|
"prettier": "^3.8.1",
|
|
85
85
|
"rimraf": "^6.1.3",
|
|
86
86
|
"typescript": "^6.0.2",
|
|
@@ -94,7 +94,6 @@
|
|
|
94
94
|
"README.md",
|
|
95
95
|
"CHANGELOG.md"
|
|
96
96
|
],
|
|
97
|
-
"config": {},
|
|
98
97
|
"prettier": {
|
|
99
98
|
"semi": true,
|
|
100
99
|
"printWidth": 80,
|
|
@@ -102,71 +101,20 @@
|
|
|
102
101
|
"trailingComma": "all",
|
|
103
102
|
"proseWrap": "always"
|
|
104
103
|
},
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
|
|
108
|
-
"@babel/plugin-proposal-object-rest-spread"
|
|
109
|
-
],
|
|
110
|
-
[
|
|
111
|
-
"@babel/plugin-transform-classes",
|
|
112
|
-
{}
|
|
113
|
-
],
|
|
114
|
-
[
|
|
115
|
-
"babel-plugin-transform-builtin-extend",
|
|
116
|
-
{
|
|
117
|
-
"globals": [
|
|
118
|
-
"Error",
|
|
119
|
-
"Array"
|
|
120
|
-
]
|
|
121
|
-
}
|
|
122
|
-
]
|
|
123
|
-
],
|
|
124
|
-
"presets": [
|
|
125
|
-
[
|
|
126
|
-
"@babel/env",
|
|
127
|
-
{
|
|
128
|
-
"targets": {
|
|
129
|
-
"node": "12.19.0"
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
]
|
|
133
|
-
],
|
|
134
|
-
"env": {
|
|
135
|
-
"cjs": {
|
|
136
|
-
"presets": [
|
|
137
|
-
[
|
|
138
|
-
"@babel/env",
|
|
139
|
-
{
|
|
140
|
-
"targets": {
|
|
141
|
-
"node": "10"
|
|
142
|
-
},
|
|
143
|
-
"modules": "commonjs"
|
|
144
|
-
}
|
|
145
|
-
]
|
|
146
|
-
],
|
|
147
|
-
"comments": true
|
|
148
|
-
},
|
|
149
|
-
"mjs": {
|
|
150
|
-
"presets": [
|
|
151
|
-
[
|
|
152
|
-
"@babel/env",
|
|
153
|
-
{
|
|
154
|
-
"targets": {
|
|
155
|
-
"node": "12"
|
|
156
|
-
},
|
|
157
|
-
"modules": false
|
|
158
|
-
}
|
|
159
|
-
]
|
|
160
|
-
],
|
|
161
|
-
"comments": false
|
|
162
|
-
}
|
|
163
|
-
},
|
|
164
|
-
"sourceMaps": true
|
|
104
|
+
"funding": {
|
|
105
|
+
"type": "individual",
|
|
106
|
+
"url": "https://github.com/sponsors/nfroidure"
|
|
165
107
|
},
|
|
166
|
-
"
|
|
167
|
-
"
|
|
168
|
-
"
|
|
169
|
-
|
|
108
|
+
"overrides": {
|
|
109
|
+
"typescript-eslint": {
|
|
110
|
+
"typescript": "^6"
|
|
111
|
+
},
|
|
112
|
+
"@typescript-eslint/eslint-plugin": {
|
|
113
|
+
"typescript": "^6"
|
|
114
|
+
},
|
|
115
|
+
"@typescript-eslint/parser": {
|
|
116
|
+
"typescript": "^6"
|
|
117
|
+
}
|
|
170
118
|
},
|
|
171
119
|
"type": "module",
|
|
172
120
|
"main": "dist/index.js",
|
|
@@ -194,20 +142,5 @@
|
|
|
194
142
|
"extensionsToTreatAsEsm": [
|
|
195
143
|
".ts"
|
|
196
144
|
]
|
|
197
|
-
},
|
|
198
|
-
"funding": {
|
|
199
|
-
"type": "individual",
|
|
200
|
-
"url": "https://github.com/sponsors/nfroidure"
|
|
201
|
-
},
|
|
202
|
-
"overrides": {
|
|
203
|
-
"typescript-eslint": {
|
|
204
|
-
"typescript": "^6"
|
|
205
|
-
},
|
|
206
|
-
"@typescript-eslint/eslint-plugin": {
|
|
207
|
-
"typescript": "^6"
|
|
208
|
-
},
|
|
209
|
-
"@typescript-eslint/parser": {
|
|
210
|
-
"typescript": "^6"
|
|
211
|
-
}
|
|
212
145
|
}
|
|
213
146
|
}
|
package/src/index.test.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, test, expect } from '@jest/globals';
|
|
2
|
-
import { YError } from './index.js';
|
|
2
|
+
import { hasYErrorCode, pickYErrorWithCode, YError } from './index.js';
|
|
3
3
|
|
|
4
4
|
describe('YError', () => {
|
|
5
5
|
describe('.__constructor', () => {
|
|
@@ -220,4 +220,36 @@ describe('YError', () => {
|
|
|
220
220
|
expect(err.name).toEqual(err.toString());
|
|
221
221
|
});
|
|
222
222
|
});
|
|
223
|
+
|
|
224
|
+
describe('.hasYErrorCode()', () => {
|
|
225
|
+
test('should work with defined debug value type', () => {
|
|
226
|
+
const err = new YError('E_ERROR', ['arg1.1', 'arg1.2']);
|
|
227
|
+
|
|
228
|
+
expect(hasYErrorCode<`arg${string}`[]>(err, 'E_ERROR')).toBeTruthy();
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
test('should work with undefined debug value type', () => {
|
|
232
|
+
const err = new YError('E_ERROR', ['arg1.1', 'arg1.2']);
|
|
233
|
+
|
|
234
|
+
expect(hasYErrorCode(err, 'E_ERROR')).toBeTruthy();
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
test('should work with native errors', () => {
|
|
238
|
+
const err = new Error('E_ERROR');
|
|
239
|
+
|
|
240
|
+
expect(hasYErrorCode(err, 'E_ERROR')).toBeFalsy();
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
describe('.pickYErrorWithCode()', () => {
|
|
245
|
+
test('should work', () => {
|
|
246
|
+
const err1 = new Error('E_ERROR_1');
|
|
247
|
+
const err2 = YError.wrap(err1, 'E_ERROR_2', ['arg1.1', 'arg1.2']);
|
|
248
|
+
const err3 = YError.wrap(err2, 'E_ERROR_3', ['arg1.1', 'arg1.2']);
|
|
249
|
+
|
|
250
|
+
expect(pickYErrorWithCode(err3, 'E_ERROR_1')).toEqual(null);
|
|
251
|
+
expect(pickYErrorWithCode(err3, 'E_ERROR_2')).toEqual(err2);
|
|
252
|
+
expect(pickYErrorWithCode(err3, 'E_ERROR_3')).toEqual(err3);
|
|
253
|
+
});
|
|
254
|
+
});
|
|
223
255
|
});
|
package/src/index.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { EOL } from 'node:os';
|
|
2
2
|
|
|
3
|
-
export type YErrorDebugValue = unknown;
|
|
3
|
+
export type YErrorDebugValue = unknown[];
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* A YError class able to contain some debugValues and
|
|
7
7
|
* print better stack traces
|
|
8
8
|
* @extends Error
|
|
9
9
|
*/
|
|
10
|
-
class YError<T = YErrorDebugValue> extends Error {
|
|
10
|
+
class YError<T extends unknown[] = YErrorDebugValue> extends Error {
|
|
11
11
|
code: string;
|
|
12
|
-
debugValues: T
|
|
12
|
+
debugValues: T = [] as unknown as T;
|
|
13
13
|
wrappedErrors: (Error | YError)[] = [];
|
|
14
14
|
/**
|
|
15
15
|
* Creates a new YError with an error code
|
|
@@ -21,7 +21,7 @@ class YError<T = YErrorDebugValue> extends Error {
|
|
|
21
21
|
*/
|
|
22
22
|
constructor(
|
|
23
23
|
errorCode?: string,
|
|
24
|
-
debugValues: T
|
|
24
|
+
debugValues: T = [] as unknown as T,
|
|
25
25
|
wrappedErrors: (Error | YError)[] = [],
|
|
26
26
|
) {
|
|
27
27
|
// Call the parent constructor
|
|
@@ -50,15 +50,15 @@ class YError<T = YErrorDebugValue> extends Error {
|
|
|
50
50
|
* @return {YError}
|
|
51
51
|
* The wrapped error
|
|
52
52
|
*/
|
|
53
|
-
static wrap<T = YErrorDebugValue>(
|
|
53
|
+
static wrap<T extends unknown[] = YErrorDebugValue>(
|
|
54
54
|
err: Error | YError,
|
|
55
55
|
errorCode?: string,
|
|
56
|
-
debugValues: T
|
|
56
|
+
debugValues: T = [] as unknown as T,
|
|
57
57
|
): YError {
|
|
58
58
|
const wrappedErrorIsACode = looksLikeAYErrorCode(err.message);
|
|
59
59
|
const wrappedErrors = (
|
|
60
60
|
'wrappedErrors' in err ? err.wrappedErrors : []
|
|
61
|
-
).concat(err);
|
|
61
|
+
).concat([err]);
|
|
62
62
|
|
|
63
63
|
if (!errorCode) {
|
|
64
64
|
if (wrappedErrorIsACode) {
|
|
@@ -68,7 +68,7 @@ class YError<T = YErrorDebugValue> extends Error {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
return new YError(errorCode, debugValues, wrappedErrors);
|
|
71
|
+
return new YError<T>(errorCode, debugValues, wrappedErrors);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
/**
|
|
@@ -83,10 +83,10 @@ class YError<T = YErrorDebugValue> extends Error {
|
|
|
83
83
|
* @return {YError}
|
|
84
84
|
* The wrapped error
|
|
85
85
|
*/
|
|
86
|
-
static cast<T = YErrorDebugValue>(
|
|
86
|
+
static cast<T extends unknown[] = YErrorDebugValue>(
|
|
87
87
|
err: Error | YError,
|
|
88
88
|
errorCode?: string,
|
|
89
|
-
debugValues: T
|
|
89
|
+
debugValues: T = [] as unknown as T,
|
|
90
90
|
): YError {
|
|
91
91
|
if (looksLikeAYError(err)) {
|
|
92
92
|
return err;
|
|
@@ -107,10 +107,10 @@ class YError<T = YErrorDebugValue> extends Error {
|
|
|
107
107
|
* @return {YError}
|
|
108
108
|
* The wrapped error
|
|
109
109
|
*/
|
|
110
|
-
static bump<T = YErrorDebugValue>(
|
|
110
|
+
static bump<T extends unknown[] = YErrorDebugValue>(
|
|
111
111
|
err: Error | YError,
|
|
112
112
|
errorCode?: string,
|
|
113
|
-
debugValues: T
|
|
113
|
+
debugValues: T = [] as unknown as T,
|
|
114
114
|
): YError {
|
|
115
115
|
if (looksLikeAYError(err)) {
|
|
116
116
|
return YError.wrap(err, err.code, err.debugValues);
|
|
@@ -153,6 +153,10 @@ export function printStackTrace(err: Error | YError): string {
|
|
|
153
153
|
}`;
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
+
export function looksLikeAYErrorCode(str: string): boolean {
|
|
157
|
+
return /^([A-Z0-9_]+)$/.test(str);
|
|
158
|
+
}
|
|
159
|
+
|
|
156
160
|
// In order to keep compatibility through major versions
|
|
157
161
|
// we have to make kind of a cross major version instanceof
|
|
158
162
|
export function looksLikeAYError(err: Error | YError): err is YError {
|
|
@@ -172,8 +176,44 @@ export function looksLikeAYError(err: Error | YError): err is YError {
|
|
|
172
176
|
);
|
|
173
177
|
}
|
|
174
178
|
|
|
175
|
-
|
|
176
|
-
|
|
179
|
+
/**
|
|
180
|
+
* Allow to check a YError code and cast the error.
|
|
181
|
+
* @param {Error} err
|
|
182
|
+
* The error to cast
|
|
183
|
+
* @param {Error} code
|
|
184
|
+
* The code to check
|
|
185
|
+
* @return {boolean}
|
|
186
|
+
* The result
|
|
187
|
+
*/
|
|
188
|
+
export function hasYErrorCode<T extends unknown[] = YErrorDebugValue>(
|
|
189
|
+
err: Error | YError,
|
|
190
|
+
code: string,
|
|
191
|
+
): err is YError<T> {
|
|
192
|
+
return looksLikeAYError(err) && err.code === code;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Allow to check all errors for a YError code and return the casted the error.
|
|
197
|
+
* @param {Error} err
|
|
198
|
+
* The error to cast
|
|
199
|
+
* @param {Error} code
|
|
200
|
+
* The code to check
|
|
201
|
+
* @return {boolean}
|
|
202
|
+
* The result
|
|
203
|
+
*/
|
|
204
|
+
export function pickYErrorWithCode<T extends unknown[] = YErrorDebugValue>(
|
|
205
|
+
err: Error | YError,
|
|
206
|
+
code: string,
|
|
207
|
+
): YError<T> | null {
|
|
208
|
+
for (const currentError of [err].concat(
|
|
209
|
+
'wrappedErrors' in err ? err.wrappedErrors : [],
|
|
210
|
+
)) {
|
|
211
|
+
if (hasYErrorCode(currentError, code)) {
|
|
212
|
+
return currentError as YError<T>;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return null;
|
|
177
217
|
}
|
|
178
218
|
|
|
179
219
|
export { YError };
|