yerror 9.0.0 → 9.1.1

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 CHANGED
@@ -1,3 +1,12 @@
1
+ ## [9.1.1](https://github.com/nfroidure/yerror/compare/v9.1.0...v9.1.1) (2026-03-30)
2
+
3
+ # [9.1.0](https://github.com/nfroidure/yerror/compare/v9.0.0...v9.1.0) (2026-03-28)
4
+
5
+
6
+ ### Features
7
+
8
+ * add more casting features ([1153fcf](https://github.com/nfroidure/yerror/commit/1153fcf481d7660f247e65f5a8c8596f2abe511c))
9
+
1
10
  # [9.0.0](https://github.com/nfroidure/yerror/compare/v8.0.0...v9.0.0) (2026-03-25)
2
11
 
3
12
  # [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[], wrappedErrors?: (Error | YError)[]);
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[]): YError;
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[]): YError;
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[]): YError;
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
- export function looksLikeAYErrorCode(str) {
136
- return /^([A-Z0-9_]+)$/.test(str);
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
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.0.0",
27
+ "version": "9.1.1",
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 metapak -- -s && node --run build && node --run doc",
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 metapak -- -s && node --run doc",
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": "^6.0.4",
83
- "metapak-nfroidure": "21.1.1",
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
- "babel": {
106
- "plugins": [
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
- "nyc": {
167
- "exclude": [
168
- "src/*.mocha.js"
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
- export function looksLikeAYErrorCode(str: string): boolean {
176
- return /^([A-Z0-9_]+)$/.test(str);
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 };