@w5s/eslint-config 3.2.0 → 3.2.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@w5s/eslint-config",
3
- "version": "3.2.0",
3
+ "version": "3.2.1",
4
4
  "description": "ESLint configuration presets",
5
5
  "keywords": [
6
6
  "eslint",
@@ -49,16 +49,16 @@
49
49
  "@typescript-eslint/eslint-plugin": "^8.0.0",
50
50
  "@typescript-eslint/parser": "^8.0.0",
51
51
  "@vitest/eslint-plugin": "^1.0.0",
52
- "@w5s/dev": "^3.1.1",
53
- "@w5s/prettier-config": "^3.0.2",
52
+ "@w5s/dev": "^3.1.2",
53
+ "@w5s/prettier-config": "^3.0.3",
54
54
  "eslint-plugin-import": "^2.25.0",
55
55
  "eslint-plugin-jsdoc": "^61.0.0",
56
56
  "eslint-plugin-jsonc": "^2.4.0",
57
57
  "eslint-plugin-n": "^17.0.0",
58
- "eslint-plugin-unicorn": "^61.0.0",
58
+ "eslint-plugin-unicorn": "^62.0.0",
59
59
  "eslint-plugin-yml": "^1.1.0",
60
60
  "find-up": "^8.0.0",
61
- "globals": "^16.0.0",
61
+ "globals": "^17.0.0",
62
62
  "jsonc-eslint-parser": "^2.0.0",
63
63
  "parse-gitignore": "^2.0.0",
64
64
  "yaml-eslint-parser": "^1.0.0"
@@ -82,5 +82,5 @@
82
82
  "access": "public"
83
83
  },
84
84
  "sideEffect": false,
85
- "gitHead": "8338e5dded9a0bbed4fb84c69ee86d5eff743a12"
85
+ "gitHead": "648be101c2d4f915b97ed7e318da47a6ac19eb5c"
86
86
  }
@@ -264,6 +264,11 @@ export interface RuleOptions {
264
264
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-type.md#repos-sticky-header
265
265
  */
266
266
  'jsdoc/require-property-type'?: Linter.RuleEntry<[]>
267
+ /**
268
+ * Requires that Promise rejections are documented with `@rejects` tags.
269
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-rejects.md#repos-sticky-header
270
+ */
271
+ 'jsdoc/require-rejects'?: Linter.RuleEntry<JsdocRequireRejects>
267
272
  /**
268
273
  * Requires that returns are documented with `@returns`.
269
274
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns.md#repos-sticky-header
@@ -412,6 +417,8 @@ type JsdocCheckExamples = []|[{
412
417
  // ----- jsdoc/check-indentation -----
413
418
  type JsdocCheckIndentation = []|[{
414
419
 
420
+ allowIndentedSections?: boolean
421
+
415
422
  excludeTags?: string[]
416
423
  }]
417
424
  // ----- jsdoc/check-line-alignment -----
@@ -797,6 +804,8 @@ type JsdocRequireHyphenBeforeParamDescription = []|[("always" | "never")]|[("alw
797
804
  // ----- jsdoc/require-jsdoc -----
798
805
  type JsdocRequireJsdoc = []|[{
799
806
 
807
+ checkAllFunctionExpressions?: boolean
808
+
800
809
  checkConstructors?: boolean
801
810
 
802
811
  checkGetters?: (boolean | "no-setter")
@@ -917,6 +926,16 @@ type JsdocRequireParamType = []|[{
917
926
 
918
927
  setDefaultDestructuredRootType?: boolean
919
928
  }]
929
+ // ----- jsdoc/require-rejects -----
930
+ type JsdocRequireRejects = []|[{
931
+
932
+ contexts?: (string | {
933
+ comment?: string
934
+ context?: string
935
+ })[]
936
+
937
+ exemptedBy?: string[]
938
+ }]
920
939
  // ----- jsdoc/require-returns -----
921
940
  type JsdocRequireReturns = []|[{
922
941
 
@@ -1041,6 +1060,10 @@ type JsdocSortTags = []|[{
1041
1060
 
1042
1061
  reportTagGroupSpacing?: boolean
1043
1062
 
1063
+ tagExceptions?: {
1064
+ [k: string]: number
1065
+ }
1066
+
1044
1067
  tagSequence?: {
1045
1068
 
1046
1069
  tags?: string[]
@@ -214,6 +214,7 @@ export interface RuleOptions {
214
214
  /**
215
215
  * Enforce props alphabetical sorting
216
216
  * @see https://eslint.style/rules/jsx-sort-props
217
+ * @deprecated
217
218
  */
218
219
  'style/jsx-sort-props'?: Linter.RuleEntry<StyleJsxSortProps>
219
220
  /**
@@ -1718,7 +1719,7 @@ type StyleTypeAnnotationSpacing = []|[{
1718
1719
  after?: boolean
1719
1720
  overrides?: {
1720
1721
  colon?: _StyleTypeAnnotationSpacing_SpacingConfig
1721
- arrow?: _StyleTypeAnnotationSpacing_SpacingConfig
1722
+ arrow?: ("ignore" | _StyleTypeAnnotationSpacing_SpacingConfig)
1722
1723
  variable?: _StyleTypeAnnotationSpacing_SpacingConfig
1723
1724
  parameter?: _StyleTypeAnnotationSpacing_SpacingConfig
1724
1725
  property?: _StyleTypeAnnotationSpacing_SpacingConfig
@@ -10,7 +10,12 @@ declare module 'eslint' {
10
10
 
11
11
  export interface RuleOptions {
12
12
  /**
13
- * require .spec test file pattern
13
+ * enforce using `.each` or `.for` consistently
14
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-each-for.md
15
+ */
16
+ 'test/consistent-each-for'?: Linter.RuleEntry<TestConsistentEachFor>
17
+ /**
18
+ * require test file pattern
14
19
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-filename.md
15
20
  */
16
21
  'test/consistent-test-filename'?: Linter.RuleEntry<TestConsistentTestFilename>
@@ -19,11 +24,21 @@ export interface RuleOptions {
19
24
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-it.md
20
25
  */
21
26
  'test/consistent-test-it'?: Linter.RuleEntry<TestConsistentTestIt>
27
+ /**
28
+ * enforce using vitest or vi but not both
29
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-vitest-vi.md
30
+ */
31
+ 'test/consistent-vitest-vi'?: Linter.RuleEntry<TestConsistentVitestVi>
22
32
  /**
23
33
  * enforce having expectation in test body
24
34
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md
25
35
  */
26
36
  'test/expect-expect'?: Linter.RuleEntry<TestExpectExpect>
37
+ /**
38
+ * enforce hoisted APIs to be on top of the file
39
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/hoisted-apis-on-top.md
40
+ */
41
+ 'test/hoisted-apis-on-top'?: Linter.RuleEntry<[]>
27
42
  /**
28
43
  * enforce a maximum number of expect per test
29
44
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md
@@ -48,7 +63,7 @@ export interface RuleOptions {
48
63
  * disallow conditional expects
49
64
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-expect.md
50
65
  */
51
- 'test/no-conditional-expect'?: Linter.RuleEntry<[]>
66
+ 'test/no-conditional-expect'?: Linter.RuleEntry<TestNoConditionalExpect>
52
67
  /**
53
68
  * disallow conditional tests
54
69
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md
@@ -95,6 +110,11 @@ export interface RuleOptions {
95
110
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-import-node-test.md
96
111
  */
97
112
  'test/no-import-node-test'?: Linter.RuleEntry<[]>
113
+ /**
114
+ * disallow importing Vitest globals
115
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-importing-vitest-globals.md
116
+ */
117
+ 'test/no-importing-vitest-globals'?: Linter.RuleEntry<[]>
98
118
  /**
99
119
  * disallow string interpolation in snapshots
100
120
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-interpolation-in-snapshots.md
@@ -126,7 +146,7 @@ export interface RuleOptions {
126
146
  */
127
147
  'test/no-standalone-expect'?: Linter.RuleEntry<TestNoStandaloneExpect>
128
148
  /**
129
- * disallow using `test` as a prefix
149
+ * disallow using the `f` and `x` prefixes in favour of `.only` and `.skip`
130
150
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-prefixes.md
131
151
  */
132
152
  'test/no-test-prefixes'?: Linter.RuleEntry<[]>
@@ -135,6 +155,11 @@ export interface RuleOptions {
135
155
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-return-statement.md
136
156
  */
137
157
  'test/no-test-return-statement'?: Linter.RuleEntry<[]>
158
+ /**
159
+ * Disallow unnecessary async function wrapper for expected promises
160
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-unneeded-async-expect-function.md
161
+ */
162
+ 'test/no-unneeded-async-expect-function'?: Linter.RuleEntry<[]>
138
163
  /**
139
164
  * Enforce padding around `afterAll` blocks
140
165
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-all-blocks.md
@@ -175,6 +200,21 @@ export interface RuleOptions {
175
200
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-test-blocks.md
176
201
  */
177
202
  'test/padding-around-test-blocks'?: Linter.RuleEntry<[]>
203
+ /**
204
+ * Prefer `toHaveBeenCalledExactlyOnceWith` over `toHaveBeenCalledOnce` and `toHaveBeenCalledWith`
205
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-exactly-once-with.md
206
+ */
207
+ 'test/prefer-called-exactly-once-with'?: Linter.RuleEntry<[]>
208
+ /**
209
+ * enforce using `toBeCalledOnce()` or `toHaveBeenCalledOnce()`
210
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-once.md
211
+ */
212
+ 'test/prefer-called-once'?: Linter.RuleEntry<[]>
213
+ /**
214
+ * enforce using `toBeCalledTimes(1)` or `toHaveBeenCalledTimes(1)`
215
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-times.md
216
+ */
217
+ 'test/prefer-called-times'?: Linter.RuleEntry<[]>
178
218
  /**
179
219
  * enforce using `toBeCalledWith()` or `toHaveBeenCalledWith()`
180
220
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-with.md
@@ -185,13 +225,18 @@ export interface RuleOptions {
185
225
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-comparison-matcher.md
186
226
  */
187
227
  'test/prefer-comparison-matcher'?: Linter.RuleEntry<[]>
228
+ /**
229
+ * enforce using a function as a describe title over an equivalent string
230
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-describe-function-title.md
231
+ */
232
+ 'test/prefer-describe-function-title'?: Linter.RuleEntry<[]>
188
233
  /**
189
234
  * enforce using `each` rather than manual loops
190
235
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-each.md
191
236
  */
192
237
  'test/prefer-each'?: Linter.RuleEntry<[]>
193
238
  /**
194
- * enforce using the built-in quality matchers
239
+ * enforce using the built-in equality matchers
195
240
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-equality-matcher.md
196
241
  */
197
242
  'test/prefer-equality-matcher'?: Linter.RuleEntry<[]>
@@ -205,6 +250,11 @@ export interface RuleOptions {
205
250
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-resolves.md
206
251
  */
207
252
  'test/prefer-expect-resolves'?: Linter.RuleEntry<[]>
253
+ /**
254
+ * enforce using `expectTypeOf` instead of `expect(typeof ...)`
255
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-type-of.md
256
+ */
257
+ 'test/prefer-expect-type-of'?: Linter.RuleEntry<[]>
208
258
  /**
209
259
  * enforce having hooks in consistent order
210
260
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-in-order.md
@@ -215,6 +265,16 @@ export interface RuleOptions {
215
265
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-on-top.md
216
266
  */
217
267
  'test/prefer-hooks-on-top'?: Linter.RuleEntry<[]>
268
+ /**
269
+ * prefer dynamic import in mock
270
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-import-in-mock.md
271
+ */
272
+ 'test/prefer-import-in-mock'?: Linter.RuleEntry<TestPreferImportInMock>
273
+ /**
274
+ * enforce importing Vitest globals
275
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-importing-vitest-globals.md
276
+ */
277
+ 'test/prefer-importing-vitest-globals'?: Linter.RuleEntry<[]>
218
278
  /**
219
279
  * enforce lowercase titles
220
280
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-lowercase-title.md
@@ -225,6 +285,11 @@ export interface RuleOptions {
225
285
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-mock-promise-shorthand.md
226
286
  */
227
287
  'test/prefer-mock-promise-shorthand'?: Linter.RuleEntry<[]>
288
+ /**
289
+ * Prefer mock return shorthands
290
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-mock-return-shorthand.md
291
+ */
292
+ 'test/prefer-mock-return-shorthand'?: Linter.RuleEntry<[]>
228
293
  /**
229
294
  * enforce including a hint with external snapshots
230
295
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-snapshot-hint.md
@@ -270,6 +335,11 @@ export interface RuleOptions {
270
335
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-contain.md
271
336
  */
272
337
  'test/prefer-to-contain'?: Linter.RuleEntry<[]>
338
+ /**
339
+ * Suggest using `toHaveBeenCalledTimes()`
340
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-been-called-times.md
341
+ */
342
+ 'test/prefer-to-have-been-called-times'?: Linter.RuleEntry<[]>
273
343
  /**
274
344
  * enforce using toHaveLength()
275
345
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-length.md
@@ -285,6 +355,11 @@ export interface RuleOptions {
285
355
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-vi-mocked.md
286
356
  */
287
357
  'test/prefer-vi-mocked'?: Linter.RuleEntry<[]>
358
+ /**
359
+ * ensure that every `expect.poll` call is awaited
360
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-awaited-expect-poll.md
361
+ */
362
+ 'test/require-awaited-expect-poll'?: Linter.RuleEntry<[]>
288
363
  /**
289
364
  * require setup and teardown to be within a hook
290
365
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-hook.md
@@ -300,6 +375,11 @@ export interface RuleOptions {
300
375
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-mock-type-parameters.md
301
376
  */
302
377
  'test/require-mock-type-parameters'?: Linter.RuleEntry<TestRequireMockTypeParameters>
378
+ /**
379
+ * require tests to declare a timeout
380
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-test-timeout.md
381
+ */
382
+ 'test/require-test-timeout'?: Linter.RuleEntry<[]>
303
383
  /**
304
384
  * require toThrow() to be called with an error message
305
385
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-to-throw-message.md
@@ -330,9 +410,21 @@ export interface RuleOptions {
330
410
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md
331
411
  */
332
412
  'test/valid-title'?: Linter.RuleEntry<TestValidTitle>
413
+ /**
414
+ * disallow `.todo` usage
415
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/warn-todo.md
416
+ */
417
+ 'test/warn-todo'?: Linter.RuleEntry<[]>
333
418
  }
334
419
 
335
420
  /* ======= Declarations ======= */
421
+ // ----- test/consistent-each-for -----
422
+ type TestConsistentEachFor = []|[{
423
+ test?: ("each" | "for")
424
+ it?: ("each" | "for")
425
+ describe?: ("each" | "for")
426
+ suite?: ("each" | "for")
427
+ }]
336
428
  // ----- test/consistent-test-filename -----
337
429
  type TestConsistentTestFilename = []|[{
338
430
  pattern?: string
@@ -343,6 +435,10 @@ type TestConsistentTestIt = []|[{
343
435
  fn?: ("test" | "it")
344
436
  withinDescribe?: ("test" | "it")
345
437
  }]
438
+ // ----- test/consistent-vitest-vi -----
439
+ type TestConsistentVitestVi = []|[{
440
+ fn?: ("vi" | "vitest")
441
+ }]
346
442
  // ----- test/expect-expect -----
347
443
  type TestExpectExpect = []|[{
348
444
  assertFunctionNames?: string[]
@@ -356,13 +452,19 @@ type TestMaxExpects = []|[{
356
452
  type TestMaxNestedDescribe = []|[{
357
453
  max?: number
358
454
  }]
455
+ // ----- test/no-conditional-expect -----
456
+ type TestNoConditionalExpect = []|[{
457
+
458
+ expectAssertions?: boolean
459
+ }]
359
460
  // ----- test/no-focused-tests -----
360
461
  type TestNoFocusedTests = []|[{
361
462
  fixable?: boolean
362
463
  }]
363
464
  // ----- test/no-hooks -----
364
465
  type TestNoHooks = []|[{
365
- allow?: unknown[]
466
+
467
+ allow?: ("beforeAll" | "beforeEach" | "afterAll" | "afterEach")[]
366
468
  }]
367
469
  // ----- test/no-large-snapshots -----
368
470
  type TestNoLargeSnapshots = []|[{
@@ -390,6 +492,10 @@ type TestPreferExpectAssertions = []|[{
390
492
  onlyFunctionsWithExpectInLoop?: boolean
391
493
  onlyFunctionsWithExpectInCallback?: boolean
392
494
  }]
495
+ // ----- test/prefer-import-in-mock -----
496
+ type TestPreferImportInMock = []|[{
497
+ fixable?: boolean
498
+ }]
393
499
  // ----- test/prefer-lowercase-title -----
394
500
  type TestPreferLowercaseTitle = []|[{
395
501
  ignore?: ("describe" | "test" | "it")[]
@@ -452,6 +452,11 @@ export interface RuleOptions {
452
452
  * @see https://typescript-eslint.io/rules/no-unused-expressions
453
453
  */
454
454
  'ts/no-unused-expressions'?: Linter.RuleEntry<TsNoUnusedExpressions>
455
+ /**
456
+ * Disallow unused private class members
457
+ * @see https://typescript-eslint.io/rules/no-unused-private-class-members
458
+ */
459
+ 'ts/no-unused-private-class-members'?: Linter.RuleEntry<[]>
455
460
  /**
456
461
  * Disallow unused variables
457
462
  * @see https://typescript-eslint.io/rules/no-unused-vars
@@ -467,6 +472,11 @@ export interface RuleOptions {
467
472
  * @see https://typescript-eslint.io/rules/no-useless-constructor
468
473
  */
469
474
  'ts/no-useless-constructor'?: Linter.RuleEntry<[]>
475
+ /**
476
+ * Disallow default values that will never be used
477
+ * @see https://typescript-eslint.io/rules/no-useless-default-assignment
478
+ */
479
+ 'ts/no-useless-default-assignment'?: Linter.RuleEntry<[]>
470
480
  /**
471
481
  * Disallow empty exports that don't change anything in a module file
472
482
  * @see https://typescript-eslint.io/rules/no-useless-empty-export
@@ -640,6 +650,11 @@ export interface RuleOptions {
640
650
  * @see https://typescript-eslint.io/rules/strict-boolean-expressions
641
651
  */
642
652
  'ts/strict-boolean-expressions'?: Linter.RuleEntry<TsStrictBooleanExpressions>
653
+ /**
654
+ * Disallow passing a value-returning function in a position accepting a void function
655
+ * @see https://typescript-eslint.io/rules/strict-void-return
656
+ */
657
+ 'ts/strict-void-return'?: Linter.RuleEntry<TsStrictVoidReturn>
643
658
  /**
644
659
  * Require switch-case statements to be exhaustive
645
660
  * @see https://typescript-eslint.io/rules/switch-exhaustiveness-check
@@ -1534,6 +1549,11 @@ type TsNoUnusedVars = []|[(("all" | "local") | {
1534
1549
 
1535
1550
  destructuredArrayIgnorePattern?: string
1536
1551
 
1552
+ enableAutofixRemoval?: {
1553
+
1554
+ imports?: boolean
1555
+ }
1556
+
1537
1557
  ignoreClassWithStaticInitBlock?: boolean
1538
1558
 
1539
1559
  ignoreRestSiblings?: boolean
@@ -1818,6 +1838,11 @@ type TsStrictBooleanExpressions = []|[{
1818
1838
 
1819
1839
  allowString?: boolean
1820
1840
  }]
1841
+ // ----- ts/strict-void-return -----
1842
+ type TsStrictVoidReturn = []|[{
1843
+
1844
+ allowReturnAny?: boolean
1845
+ }]
1821
1846
  // ----- ts/switch-exhaustiveness-check -----
1822
1847
  type TsSwitchExhaustivenessCheck = []|[{
1823
1848