@jimmy.codes/eslint-config 6.20.0 → 6.22.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/README.md CHANGED
@@ -42,7 +42,7 @@ import { defineConfig } from "@jimmy.codes/eslint-config";
42
42
  export default defineConfig();
43
43
  ```
44
44
 
45
- Itll auto-configure based on your installed dependencies.
45
+ It'll auto-configure based on your installed dependencies.
46
46
 
47
47
  ---
48
48
 
@@ -75,6 +75,30 @@ export default defineConfig({
75
75
  });
76
76
  ```
77
77
 
78
+ ### Vitest Configuration
79
+
80
+ Vitest also supports some configuration options. If options are provided then Vitest support is enabled.
81
+
82
+ #### Configure Vitest Globals
83
+
84
+ Control how [Vitest globals configuration](https://vitest.dev/config/globals.html) (`describe`, `it`, `expect`, etc.) are handled:
85
+
86
+ ```ts
87
+ import { defineConfig } from "@jimmy.codes/eslint-config";
88
+
89
+ export default defineConfig({
90
+ vitest: {
91
+ globals: "explicit", // Require explicit imports from 'vitest'
92
+ },
93
+ });
94
+ ```
95
+
96
+ Options:
97
+
98
+ - `'explicit'`: Require explicit imports from `'vitest'`
99
+ - `'implicit'`: Use implicit global APIs (vitest config `globals: true`)
100
+ - `'either'`: Allow both styles (default)
101
+
78
102
  ### Override Specific Rules
79
103
 
80
104
  ```ts
package/dist/index.d.mts CHANGED
@@ -2193,317 +2193,322 @@ interface RuleOptions {
2193
2193
  'jest-dom/prefer-to-have-value'?: Linter.RuleEntry<[]>;
2194
2194
  /**
2195
2195
  * Enforce `test` and `it` usage conventions
2196
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/consistent-test-it.md
2196
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/consistent-test-it.md
2197
2197
  */
2198
2198
  'jest/consistent-test-it'?: Linter.RuleEntry<JestConsistentTestIt>;
2199
2199
  /**
2200
2200
  * Enforce assertion to be made in a test body
2201
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/expect-expect.md
2201
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/expect-expect.md
2202
2202
  */
2203
2203
  'jest/expect-expect'?: Linter.RuleEntry<JestExpectExpect>;
2204
2204
  /**
2205
2205
  * Enforces a maximum number assertion calls in a test body
2206
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/max-expects.md
2206
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/max-expects.md
2207
2207
  */
2208
2208
  'jest/max-expects'?: Linter.RuleEntry<JestMaxExpects>;
2209
2209
  /**
2210
2210
  * Enforces a maximum depth to nested describe calls
2211
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/max-nested-describe.md
2211
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/max-nested-describe.md
2212
2212
  */
2213
2213
  'jest/max-nested-describe'?: Linter.RuleEntry<JestMaxNestedDescribe>;
2214
2214
  /**
2215
2215
  * Disallow alias methods
2216
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-alias-methods.md
2216
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-alias-methods.md
2217
2217
  */
2218
2218
  'jest/no-alias-methods'?: Linter.RuleEntry<[]>;
2219
2219
  /**
2220
2220
  * Disallow commented out tests
2221
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-commented-out-tests.md
2221
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-commented-out-tests.md
2222
2222
  */
2223
2223
  'jest/no-commented-out-tests'?: Linter.RuleEntry<[]>;
2224
2224
  /**
2225
2225
  * Disallow calling `expect` conditionally
2226
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-conditional-expect.md
2226
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-conditional-expect.md
2227
2227
  */
2228
2228
  'jest/no-conditional-expect'?: Linter.RuleEntry<[]>;
2229
2229
  /**
2230
2230
  * Disallow conditional logic in tests
2231
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-conditional-in-test.md
2231
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-conditional-in-test.md
2232
2232
  */
2233
2233
  'jest/no-conditional-in-test'?: Linter.RuleEntry<[]>;
2234
2234
  /**
2235
2235
  * Disallow confusing usages of jest.setTimeout
2236
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-confusing-set-timeout.md
2236
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-confusing-set-timeout.md
2237
2237
  */
2238
2238
  'jest/no-confusing-set-timeout'?: Linter.RuleEntry<[]>;
2239
2239
  /**
2240
2240
  * Disallow use of deprecated functions
2241
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-deprecated-functions.md
2241
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-deprecated-functions.md
2242
2242
  */
2243
2243
  'jest/no-deprecated-functions'?: Linter.RuleEntry<[]>;
2244
2244
  /**
2245
2245
  * Disallow disabled tests
2246
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-disabled-tests.md
2246
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-disabled-tests.md
2247
2247
  */
2248
2248
  'jest/no-disabled-tests'?: Linter.RuleEntry<[]>;
2249
2249
  /**
2250
2250
  * Disallow using a callback in asynchronous tests and hooks
2251
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-done-callback.md
2251
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-done-callback.md
2252
2252
  */
2253
2253
  'jest/no-done-callback'?: Linter.RuleEntry<[]>;
2254
2254
  /**
2255
2255
  * Disallow duplicate setup and teardown hooks
2256
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-duplicate-hooks.md
2256
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-duplicate-hooks.md
2257
2257
  */
2258
2258
  'jest/no-duplicate-hooks'?: Linter.RuleEntry<[]>;
2259
2259
  /**
2260
2260
  * Disallow using `exports` in files containing tests
2261
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-export.md
2261
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-export.md
2262
2262
  */
2263
2263
  'jest/no-export'?: Linter.RuleEntry<[]>;
2264
2264
  /**
2265
2265
  * Disallow focused tests
2266
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-focused-tests.md
2266
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-focused-tests.md
2267
2267
  */
2268
2268
  'jest/no-focused-tests'?: Linter.RuleEntry<[]>;
2269
2269
  /**
2270
2270
  * Disallow setup and teardown hooks
2271
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-hooks.md
2271
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-hooks.md
2272
2272
  */
2273
2273
  'jest/no-hooks'?: Linter.RuleEntry<JestNoHooks>;
2274
2274
  /**
2275
2275
  * Disallow identical titles
2276
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-identical-title.md
2276
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-identical-title.md
2277
2277
  */
2278
2278
  'jest/no-identical-title'?: Linter.RuleEntry<[]>;
2279
2279
  /**
2280
2280
  * Disallow string interpolation inside snapshots
2281
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-interpolation-in-snapshots.md
2281
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-interpolation-in-snapshots.md
2282
2282
  */
2283
2283
  'jest/no-interpolation-in-snapshots'?: Linter.RuleEntry<[]>;
2284
2284
  /**
2285
2285
  * Disallow Jasmine globals
2286
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-jasmine-globals.md
2286
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-jasmine-globals.md
2287
2287
  */
2288
2288
  'jest/no-jasmine-globals'?: Linter.RuleEntry<[]>;
2289
2289
  /**
2290
2290
  * Disallow large snapshots
2291
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-large-snapshots.md
2291
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-large-snapshots.md
2292
2292
  */
2293
2293
  'jest/no-large-snapshots'?: Linter.RuleEntry<JestNoLargeSnapshots>;
2294
2294
  /**
2295
2295
  * Disallow manually importing from `__mocks__`
2296
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-mocks-import.md
2296
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-mocks-import.md
2297
2297
  */
2298
2298
  'jest/no-mocks-import'?: Linter.RuleEntry<[]>;
2299
2299
  /**
2300
2300
  * Disallow specific `jest.` methods
2301
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-restricted-jest-methods.md
2301
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-restricted-jest-methods.md
2302
2302
  */
2303
2303
  'jest/no-restricted-jest-methods'?: Linter.RuleEntry<JestNoRestrictedJestMethods>;
2304
2304
  /**
2305
2305
  * Disallow specific matchers & modifiers
2306
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-restricted-matchers.md
2306
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-restricted-matchers.md
2307
2307
  */
2308
2308
  'jest/no-restricted-matchers'?: Linter.RuleEntry<JestNoRestrictedMatchers>;
2309
2309
  /**
2310
2310
  * Disallow using `expect` outside of `it` or `test` blocks
2311
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-standalone-expect.md
2311
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-standalone-expect.md
2312
2312
  */
2313
2313
  'jest/no-standalone-expect'?: Linter.RuleEntry<JestNoStandaloneExpect>;
2314
2314
  /**
2315
2315
  * Require using `.only` and `.skip` over `f` and `x`
2316
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-test-prefixes.md
2316
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-test-prefixes.md
2317
2317
  */
2318
2318
  'jest/no-test-prefixes'?: Linter.RuleEntry<[]>;
2319
2319
  /**
2320
2320
  * Disallow explicitly returning from tests
2321
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-test-return-statement.md
2321
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-test-return-statement.md
2322
2322
  */
2323
2323
  'jest/no-test-return-statement'?: Linter.RuleEntry<[]>;
2324
2324
  /**
2325
2325
  * Disallow using `jest.mock()` factories without an explicit type parameter
2326
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/no-untyped-mock-factory.md
2326
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/no-untyped-mock-factory.md
2327
2327
  */
2328
2328
  'jest/no-untyped-mock-factory'?: Linter.RuleEntry<[]>;
2329
2329
  /**
2330
2330
  * Enforce padding around `afterAll` blocks
2331
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/padding-around-after-all-blocks.md
2331
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/padding-around-after-all-blocks.md
2332
2332
  */
2333
2333
  'jest/padding-around-after-all-blocks'?: Linter.RuleEntry<[]>;
2334
2334
  /**
2335
2335
  * Enforce padding around `afterEach` blocks
2336
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/padding-around-after-each-blocks.md
2336
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/padding-around-after-each-blocks.md
2337
2337
  */
2338
2338
  'jest/padding-around-after-each-blocks'?: Linter.RuleEntry<[]>;
2339
2339
  /**
2340
2340
  * Enforce padding around Jest functions
2341
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/padding-around-all.md
2341
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/padding-around-all.md
2342
2342
  */
2343
2343
  'jest/padding-around-all'?: Linter.RuleEntry<[]>;
2344
2344
  /**
2345
2345
  * Enforce padding around `beforeAll` blocks
2346
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/padding-around-before-all-blocks.md
2346
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/padding-around-before-all-blocks.md
2347
2347
  */
2348
2348
  'jest/padding-around-before-all-blocks'?: Linter.RuleEntry<[]>;
2349
2349
  /**
2350
2350
  * Enforce padding around `beforeEach` blocks
2351
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/padding-around-before-each-blocks.md
2351
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/padding-around-before-each-blocks.md
2352
2352
  */
2353
2353
  'jest/padding-around-before-each-blocks'?: Linter.RuleEntry<[]>;
2354
2354
  /**
2355
2355
  * Enforce padding around `describe` blocks
2356
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/padding-around-describe-blocks.md
2356
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/padding-around-describe-blocks.md
2357
2357
  */
2358
2358
  'jest/padding-around-describe-blocks'?: Linter.RuleEntry<[]>;
2359
2359
  /**
2360
2360
  * Enforce padding around `expect` groups
2361
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/padding-around-expect-groups.md
2361
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/padding-around-expect-groups.md
2362
2362
  */
2363
2363
  'jest/padding-around-expect-groups'?: Linter.RuleEntry<[]>;
2364
2364
  /**
2365
2365
  * Enforce padding around `test` and `it` blocks
2366
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/padding-around-test-blocks.md
2366
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/padding-around-test-blocks.md
2367
2367
  */
2368
2368
  'jest/padding-around-test-blocks'?: Linter.RuleEntry<[]>;
2369
2369
  /**
2370
2370
  * Suggest using `toBeCalledWith()` or `toHaveBeenCalledWith()`
2371
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-called-with.md
2371
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-called-with.md
2372
2372
  */
2373
2373
  'jest/prefer-called-with'?: Linter.RuleEntry<[]>;
2374
2374
  /**
2375
2375
  * Suggest using the built-in comparison matchers
2376
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-comparison-matcher.md
2376
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-comparison-matcher.md
2377
2377
  */
2378
2378
  'jest/prefer-comparison-matcher'?: Linter.RuleEntry<[]>;
2379
2379
  /**
2380
2380
  * Prefer using `.each` rather than manual loops
2381
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-each.md
2381
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-each.md
2382
2382
  */
2383
2383
  'jest/prefer-each'?: Linter.RuleEntry<[]>;
2384
2384
  /**
2385
2385
  * Prefer having the last statement in a test be an assertion
2386
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-ending-with-an-expect.md
2386
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-ending-with-an-expect.md
2387
2387
  */
2388
2388
  'jest/prefer-ending-with-an-expect'?: Linter.RuleEntry<JestPreferEndingWithAnExpect>;
2389
2389
  /**
2390
2390
  * Suggest using the built-in equality matchers
2391
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-equality-matcher.md
2391
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-equality-matcher.md
2392
2392
  */
2393
2393
  'jest/prefer-equality-matcher'?: Linter.RuleEntry<[]>;
2394
2394
  /**
2395
2395
  * Suggest using `expect.assertions()` OR `expect.hasAssertions()`
2396
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-expect-assertions.md
2396
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-expect-assertions.md
2397
2397
  */
2398
2398
  'jest/prefer-expect-assertions'?: Linter.RuleEntry<JestPreferExpectAssertions>;
2399
2399
  /**
2400
2400
  * Prefer `await expect(...).resolves` over `expect(await ...)` syntax
2401
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-expect-resolves.md
2401
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-expect-resolves.md
2402
2402
  */
2403
2403
  'jest/prefer-expect-resolves'?: Linter.RuleEntry<[]>;
2404
2404
  /**
2405
2405
  * Prefer having hooks in a consistent order
2406
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-hooks-in-order.md
2406
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-hooks-in-order.md
2407
2407
  */
2408
2408
  'jest/prefer-hooks-in-order'?: Linter.RuleEntry<[]>;
2409
2409
  /**
2410
2410
  * Suggest having hooks before any test cases
2411
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-hooks-on-top.md
2411
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-hooks-on-top.md
2412
2412
  */
2413
2413
  'jest/prefer-hooks-on-top'?: Linter.RuleEntry<[]>;
2414
2414
  /**
2415
2415
  * Prefer importing Jest globals
2416
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-importing-jest-globals.md
2416
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-importing-jest-globals.md
2417
2417
  */
2418
2418
  'jest/prefer-importing-jest-globals'?: Linter.RuleEntry<JestPreferImportingJestGlobals>;
2419
2419
  /**
2420
2420
  * Prefer `jest.mocked()` over `fn as jest.Mock`
2421
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-jest-mocked.md
2421
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-jest-mocked.md
2422
2422
  */
2423
2423
  'jest/prefer-jest-mocked'?: Linter.RuleEntry<[]>;
2424
2424
  /**
2425
2425
  * Enforce lowercase test names
2426
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-lowercase-title.md
2426
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-lowercase-title.md
2427
2427
  */
2428
2428
  'jest/prefer-lowercase-title'?: Linter.RuleEntry<JestPreferLowercaseTitle>;
2429
2429
  /**
2430
2430
  * Prefer mock resolved/rejected shorthands for promises
2431
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-mock-promise-shorthand.md
2431
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-mock-promise-shorthand.md
2432
2432
  */
2433
2433
  'jest/prefer-mock-promise-shorthand'?: Linter.RuleEntry<[]>;
2434
2434
  /**
2435
2435
  * Prefer including a hint with external snapshots
2436
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-snapshot-hint.md
2436
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-snapshot-hint.md
2437
2437
  */
2438
2438
  'jest/prefer-snapshot-hint'?: Linter.RuleEntry<JestPreferSnapshotHint>;
2439
2439
  /**
2440
2440
  * Suggest using `jest.spyOn()`
2441
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-spy-on.md
2441
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-spy-on.md
2442
2442
  */
2443
2443
  'jest/prefer-spy-on'?: Linter.RuleEntry<[]>;
2444
2444
  /**
2445
2445
  * Suggest using `toStrictEqual()`
2446
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-strict-equal.md
2446
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-strict-equal.md
2447
2447
  */
2448
2448
  'jest/prefer-strict-equal'?: Linter.RuleEntry<[]>;
2449
2449
  /**
2450
2450
  * Suggest using `toBe()` for primitive literals
2451
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-to-be.md
2451
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-to-be.md
2452
2452
  */
2453
2453
  'jest/prefer-to-be'?: Linter.RuleEntry<[]>;
2454
2454
  /**
2455
2455
  * Suggest using `toContain()`
2456
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-to-contain.md
2456
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-to-contain.md
2457
2457
  */
2458
2458
  'jest/prefer-to-contain'?: Linter.RuleEntry<[]>;
2459
2459
  /**
2460
2460
  * Suggest using `toHaveLength()`
2461
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-to-have-length.md
2461
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-to-have-length.md
2462
2462
  */
2463
2463
  'jest/prefer-to-have-length'?: Linter.RuleEntry<[]>;
2464
2464
  /**
2465
2465
  * Suggest using `test.todo`
2466
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/prefer-todo.md
2466
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/prefer-todo.md
2467
2467
  */
2468
2468
  'jest/prefer-todo'?: Linter.RuleEntry<[]>;
2469
2469
  /**
2470
2470
  * Require setup and teardown code to be within a hook
2471
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/require-hook.md
2471
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/require-hook.md
2472
2472
  */
2473
2473
  'jest/require-hook'?: Linter.RuleEntry<JestRequireHook>;
2474
2474
  /**
2475
2475
  * Require a message for `toThrow()`
2476
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/require-to-throw-message.md
2476
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/require-to-throw-message.md
2477
2477
  */
2478
2478
  'jest/require-to-throw-message'?: Linter.RuleEntry<[]>;
2479
2479
  /**
2480
2480
  * Require test cases and hooks to be inside a `describe` block
2481
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/require-top-level-describe.md
2481
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/require-top-level-describe.md
2482
2482
  */
2483
2483
  'jest/require-top-level-describe'?: Linter.RuleEntry<JestRequireTopLevelDescribe>;
2484
2484
  /**
2485
2485
  * Enforce unbound methods are called with their expected scope
2486
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/unbound-method.md
2486
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/unbound-method.md
2487
2487
  */
2488
2488
  'jest/unbound-method'?: Linter.RuleEntry<JestUnboundMethod>;
2489
2489
  /**
2490
2490
  * Enforce valid `describe()` callback
2491
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/valid-describe-callback.md
2491
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/valid-describe-callback.md
2492
2492
  */
2493
2493
  'jest/valid-describe-callback'?: Linter.RuleEntry<[]>;
2494
2494
  /**
2495
2495
  * Enforce valid `expect()` usage
2496
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/valid-expect.md
2496
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/valid-expect.md
2497
2497
  */
2498
2498
  'jest/valid-expect'?: Linter.RuleEntry<JestValidExpect>;
2499
2499
  /**
2500
2500
  * Require promises that have expectations in their chain to be valid
2501
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/valid-expect-in-promise.md
2501
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/valid-expect-in-promise.md
2502
2502
  */
2503
2503
  'jest/valid-expect-in-promise'?: Linter.RuleEntry<[]>;
2504
+ /**
2505
+ * Disallow mocking of non-existing module paths
2506
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/valid-mock-module-path.md
2507
+ */
2508
+ 'jest/valid-mock-module-path'?: Linter.RuleEntry<JestValidMockModulePath>;
2504
2509
  /**
2505
2510
  * Enforce valid titles
2506
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.1.0/docs/rules/valid-title.md
2511
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.2.1/docs/rules/valid-title.md
2507
2512
  */
2508
2513
  'jest/valid-title'?: Linter.RuleEntry<JestValidTitle>;
2509
2514
  /**
@@ -2761,6 +2766,11 @@ interface RuleOptions {
2761
2766
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-type.md#repos-sticky-header
2762
2767
  */
2763
2768
  'jsdoc/require-property-type'?: Linter.RuleEntry<[]>;
2769
+ /**
2770
+ * Requires that Promise rejections are documented with `@rejects` tags.
2771
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-rejects.md#repos-sticky-header
2772
+ */
2773
+ 'jsdoc/require-rejects'?: Linter.RuleEntry<JsdocRequireRejects>;
2764
2774
  /**
2765
2775
  * Requires that returns are documented with `@returns`.
2766
2776
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns.md#repos-sticky-header
@@ -6813,6 +6823,11 @@ interface RuleOptions {
6813
6823
  * @see https://eslint.org/docs/latest/rules/vars-on-top
6814
6824
  */
6815
6825
  'vars-on-top'?: Linter.RuleEntry<[]>;
6826
+ /**
6827
+ * enforce using `.each` or `.for` consistently
6828
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-each-for.md
6829
+ */
6830
+ 'vitest/consistent-each-for'?: Linter.RuleEntry<VitestConsistentEachFor>;
6816
6831
  /**
6817
6832
  * require test file pattern
6818
6833
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-filename.md
@@ -7030,7 +7045,7 @@ interface RuleOptions {
7030
7045
  */
7031
7046
  'vitest/prefer-each'?: Linter.RuleEntry<[]>;
7032
7047
  /**
7033
- * enforce using the built-in quality matchers
7048
+ * enforce using the built-in equality matchers
7034
7049
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-equality-matcher.md
7035
7050
  */
7036
7051
  'vitest/prefer-equality-matcher'?: Linter.RuleEntry<[]>;
@@ -7149,6 +7164,11 @@ interface RuleOptions {
7149
7164
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-hook.md
7150
7165
  */
7151
7166
  'vitest/require-hook'?: Linter.RuleEntry<VitestRequireHook>;
7167
+ /**
7168
+ * require usage of import in vi.mock()
7169
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-import-vi-mock.md
7170
+ */
7171
+ 'vitest/require-import-vi-mock'?: Linter.RuleEntry<[]>;
7152
7172
  /**
7153
7173
  * require local Test Context for concurrent snapshot tests
7154
7174
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-local-test-context-for-concurrent-snapshots.md
@@ -10259,6 +10279,10 @@ type JestValidExpect = [] | [{
10259
10279
  minArgs?: number;
10260
10280
  maxArgs?: number;
10261
10281
  }];
10282
+ // ----- jest/valid-mock-module-path -----
10283
+ type JestValidMockModulePath = [] | [{
10284
+ moduleFileExtensions?: string[];
10285
+ }];
10262
10286
  // ----- jest/valid-title -----
10263
10287
  type JestValidTitle = [] | [{
10264
10288
  ignoreSpaces?: boolean;
@@ -10297,6 +10321,7 @@ type JsdocCheckExamples = [] | [{
10297
10321
  }];
10298
10322
  // ----- jsdoc/check-indentation -----
10299
10323
  type JsdocCheckIndentation = [] | [{
10324
+ allowIndentedSections?: boolean;
10300
10325
  excludeTags?: string[];
10301
10326
  }];
10302
10327
  // ----- jsdoc/check-line-alignment -----
@@ -10643,6 +10668,14 @@ type JsdocRequireParamType = [] | [{
10643
10668
  defaultDestructuredRootType?: string;
10644
10669
  setDefaultDestructuredRootType?: boolean;
10645
10670
  }];
10671
+ // ----- jsdoc/require-rejects -----
10672
+ type JsdocRequireRejects = [] | [{
10673
+ contexts?: (string | {
10674
+ comment?: string;
10675
+ context?: string;
10676
+ })[];
10677
+ exemptedBy?: string[];
10678
+ }];
10646
10679
  // ----- jsdoc/require-returns -----
10647
10680
  type JsdocRequireReturns = [] | [{
10648
10681
  checkConstructors?: boolean;
@@ -14839,6 +14872,13 @@ type UseIsnan = [] | [{
14839
14872
  type ValidTypeof = [] | [{
14840
14873
  requireStringLiterals?: boolean;
14841
14874
  }];
14875
+ // ----- vitest/consistent-each-for -----
14876
+ type VitestConsistentEachFor = [] | [{
14877
+ test?: ("each" | "for");
14878
+ it?: ("each" | "for");
14879
+ describe?: ("each" | "for");
14880
+ suite?: ("each" | "for");
14881
+ }];
14842
14882
  // ----- vitest/consistent-test-filename -----
14843
14883
  type VitestConsistentTestFilename = [] | [{
14844
14884
  pattern?: string;
@@ -14964,6 +15004,20 @@ interface LinterConfigOverrides {
14964
15004
  plugins?: Record<string, unknown>;
14965
15005
  }
14966
15006
  type TypedConfigItem = Prettify<Override<Base, LinterConfigOverrides>>;
15007
+ interface VitestOptions {
15008
+ /**
15009
+ * How to handle Vitest global APIs (describe, it, expect, etc.).
15010
+ *
15011
+ * - 'explicit': Require explicit imports from 'vitest'
15012
+ * - 'implicit': Use implicit global APIs (vitest config globals: true)
15013
+ * - 'either': Allow both styles (default)
15014
+ *
15015
+ * @see https://vitest.dev/config/globals.html
15016
+ *
15017
+ * @default 'either'
15018
+ */
15019
+ globals?: "either" | "explicit" | "implicit";
15020
+ }
14967
15021
  interface Options {
14968
15022
  /**
14969
15023
  * Are astro rules enabled?
@@ -15051,7 +15105,7 @@ interface Options {
15051
15105
  *
15052
15106
  * @default false
15053
15107
  */
15054
- vitest?: boolean;
15108
+ vitest?: boolean | VitestOptions;
15055
15109
  }
15056
15110
  //#endregion
15057
15111
  //#region src/factory.d.ts
@@ -15082,4 +15136,4 @@ declare const defineConfig: ({
15082
15136
  vitest
15083
15137
  }?: Options, ...moreOverrides: Linter.Config[] | TypedConfigItem[]) => Promise<any[]>;
15084
15138
  //#endregion
15085
- export { Options, Rules, TypedConfigItem, defineConfig };
15139
+ export { type Options, type TypedConfigItem, type VitestOptions, defineConfig };
package/dist/index.mjs CHANGED
@@ -424,6 +424,22 @@ const unicornConfig = () => {
424
424
  }];
425
425
  };
426
426
 
427
+ //#endregion
428
+ //#region src/utils/create-featured.ts
429
+ /**
430
+ * Creates a featured flag checker function.
431
+ *
432
+ * @param autoDetect - Whether to auto-detect features.
433
+ *
434
+ * @returns A function that determines if a feature is enabled.
435
+ */
436
+ const createFeatured = (autoDetect) => {
437
+ return (explicit, detector) => {
438
+ if (typeof explicit !== "boolean") return true;
439
+ return explicit || autoDetect && detector();
440
+ };
441
+ };
442
+
427
443
  //#endregion
428
444
  //#region src/utils/unwrap.ts
429
445
  /**
@@ -436,16 +452,19 @@ const unicornConfig = () => {
436
452
  *
437
453
  * @param module - A dynamically imported module.
438
454
  *
455
+ * @param args - Optional arguments forwarded to the module's default export if it's a function.
456
+ *
439
457
  * @returns
440
458
  * If the module has a `default` export that is a function, it returns the result of calling it.
441
459
  * Otherwise, it returns the module itself.
442
460
  *
443
461
  * @example
444
462
  * const config = await unwrap(import("./configs/react"));
463
+ * const configWithOptions = await unwrap(import("./configs/react"), { version: "12" });
445
464
  */
446
- const unwrap = async (module) => {
465
+ const unwrap = async (module, ...args) => {
447
466
  const resolved = await module;
448
- if (typeof resolved.default === "function") return resolved.default();
467
+ if (typeof resolved.default === "function") return resolved.default(...args);
449
468
  return resolved;
450
469
  };
451
470
 
@@ -462,19 +481,17 @@ const unwrap = async (module) => {
462
481
  * export default defineConfig();
463
482
  */
464
483
  const defineConfig = async ({ astro = false, autoDetect = true, gitignore = false, ignores = [], jest = false, nextjs = false, overrides = [], playwright = false, react = false, storybook = false, tanstackQuery = false, testingLibrary = false, typescript = false, vitest = false } = {}, ...moreOverrides) => {
465
- const getFlag = (explicit, detector) => {
466
- return explicit || autoDetect && detector();
467
- };
468
- const isTypescriptEnabled = getFlag(typescript, hasTypescript);
469
- const isReactEnabled = getFlag(react, hasReact);
470
- const isAstroEnabled = getFlag(astro, hasAstro);
471
- const isTanstackQueryEnabled = getFlag(tanstackQuery, hasReactQuery);
472
- const isTestingLibraryEnabled = getFlag(testingLibrary, hasTestingLibrary);
473
- const isPlaywrightEnabled = getFlag(playwright, hasPlaywright);
474
- const isStorybookEnabled = getFlag(storybook, hasStorybook);
475
- const isNextjsEnabled = getFlag(nextjs, hasNext);
476
- const isJestEnabled = getFlag(jest, hasJest);
477
- const isVitestEnabled = getFlag(vitest, hasVitest);
484
+ const featured = createFeatured(autoDetect);
485
+ const isTypescriptEnabled = featured(typescript, hasTypescript);
486
+ const isReactEnabled = featured(react, hasReact);
487
+ const isAstroEnabled = featured(astro, hasAstro);
488
+ const isTanstackQueryEnabled = featured(tanstackQuery, hasReactQuery);
489
+ const isTestingLibraryEnabled = featured(testingLibrary, hasTestingLibrary);
490
+ const isPlaywrightEnabled = featured(playwright, hasPlaywright);
491
+ const isStorybookEnabled = featured(storybook, hasStorybook);
492
+ const isNextjsEnabled = featured(nextjs, hasNext);
493
+ const isJestEnabled = featured(jest, hasJest);
494
+ const isVitestEnabled = featured(vitest, hasVitest);
478
495
  const baseConfigs = [
479
496
  javascriptConfig(),
480
497
  perfectionistConfig(),
@@ -492,7 +509,7 @@ const defineConfig = async ({ astro = false, autoDetect = true, gitignore = fals
492
509
  isTanstackQueryEnabled && unwrap(import("./tanstack-query-D1gpzKY3.mjs")),
493
510
  isAstroEnabled && unwrap(import("./astro-D3Zl135N.mjs")),
494
511
  isJestEnabled && unwrap(import("./jest-DZtYWPoX.mjs")),
495
- isVitestEnabled && unwrap(import("./vitest-DCV0bIFB.mjs")),
512
+ isVitestEnabled && unwrap(import("./vitest-oIUtAksi.mjs"), vitest),
496
513
  isTestingLibraryEnabled && unwrap(import("./testing-library-BBWV3thw.mjs")),
497
514
  isPlaywrightEnabled && unwrap(import("./playwright-CrBcE3qD.mjs")),
498
515
  isStorybookEnabled && unwrap(import("./storybook-CyxpG33Q.mjs")),
@@ -2,9 +2,15 @@ import { l as GLOB_TESTS, r as GLOB_E2E } from "./globs-C_yfK842.mjs";
2
2
  import { t as interopDefault } from "./interop-default-Bn64p66u.mjs";
3
3
 
4
4
  //#region src/rules/vitest.ts
5
- const vitestRules = async () => {
5
+ const vitestRules = async (options) => {
6
6
  return {
7
7
  ...(await interopDefault(import("@vitest/eslint-plugin"))).configs.recommended.rules,
8
+ "vitest/consistent-each-for": ["error", {
9
+ describe: "each",
10
+ it: "each",
11
+ suite: "each",
12
+ test: "each"
13
+ }],
8
14
  "vitest/consistent-test-it": ["error", {
9
15
  fn: "test",
10
16
  withinDescribe: "it"
@@ -12,19 +18,13 @@ const vitestRules = async () => {
12
18
  "vitest/consistent-vitest-vi": "error",
13
19
  "vitest/hoisted-apis-on-top": "error",
14
20
  "vitest/no-alias-methods": "error",
15
- "vitest/no-commented-out-tests": "error",
16
21
  "vitest/no-conditional-in-test": "error",
17
- "vitest/no-disabled-tests": "warn",
18
22
  "vitest/no-duplicate-hooks": "error",
19
- "vitest/no-focused-tests": "error",
20
23
  "vitest/no-hooks": "off",
21
- "vitest/no-identical-title": "error",
22
- "vitest/no-interpolation-in-snapshots": "error",
24
+ "vitest/no-importing-vitest-globals": options?.globals === "implicit" ? "error" : "off",
23
25
  "vitest/no-large-snapshots": "off",
24
- "vitest/no-mocks-import": "error",
25
26
  "vitest/no-restricted-matchers": "off",
26
27
  "vitest/no-restricted-vi-methods": "off",
27
- "vitest/no-standalone-expect": "error",
28
28
  "vitest/no-test-prefixes": "error",
29
29
  "vitest/no-test-return-statement": "error",
30
30
  "vitest/padding-around-all": "error",
@@ -40,6 +40,7 @@ const vitestRules = async () => {
40
40
  "vitest/prefer-expect-type-of": "error",
41
41
  "vitest/prefer-hooks-in-order": "error",
42
42
  "vitest/prefer-hooks-on-top": "error",
43
+ "vitest/prefer-importing-vitest-globals": options?.globals === "explicit" ? "error" : "off",
43
44
  "vitest/prefer-lowercase-title": "off",
44
45
  "vitest/prefer-mock-promise-shorthand": "error",
45
46
  "vitest/prefer-snapshot-hint": "error",
@@ -55,22 +56,35 @@ const vitestRules = async () => {
55
56
  "vitest/require-hook": "error",
56
57
  "vitest/require-to-throw-message": "error",
57
58
  "vitest/require-top-level-describe": "off",
58
- "vitest/valid-expect": "error",
59
- "vitest/valid-expect-in-promise": "error",
60
59
  "vitest/valid-title": ["error", { mustMatch: { it: "^should" } }],
61
60
  "vitest/warn-todo": "warn"
62
61
  };
63
62
  };
64
63
 
64
+ //#endregion
65
+ //#region src/utils/extract-options.ts
66
+ /**
67
+ * A simple utility to derive options for configurations when one option is a boolean.
68
+ *
69
+ * @param options - The options to derive.
70
+ *
71
+ * @returns The extracted options or `undefined` if the input was a boolean.
72
+ */
73
+ const extractOptions = (options) => {
74
+ if (typeof options !== "boolean") return options;
75
+ };
76
+
65
77
  //#endregion
66
78
  //#region src/configs/vitest.ts
67
- async function vitestConfig() {
79
+ async function vitestConfig(options) {
80
+ const vitestPlugin = await interopDefault(import("@vitest/eslint-plugin"));
81
+ const extractedOptions = extractOptions(options);
68
82
  return [{
69
83
  files: GLOB_TESTS,
70
84
  ignores: GLOB_E2E,
71
- ...(await interopDefault(import("@vitest/eslint-plugin"))).configs.recommended,
85
+ ...vitestPlugin.configs.recommended,
72
86
  name: "jimmy.codes/vitest",
73
- rules: await vitestRules()
87
+ rules: await vitestRules(extractedOptions)
74
88
  }];
75
89
  }
76
90
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jimmy.codes/eslint-config",
3
- "version": "6.20.0",
3
+ "version": "6.22.0",
4
4
  "description": "A simple, modern ESLint config that covers most use cases.",
5
5
  "keywords": [
6
6
  "eslint",
@@ -41,13 +41,13 @@
41
41
  "dependencies": {
42
42
  "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
43
43
  "@eslint/js": "^9.39.1",
44
- "@next/eslint-plugin-next": "^16.0.3",
45
- "@stylistic/eslint-plugin": "^5.5.0",
44
+ "@next/eslint-plugin-next": "^16.0.4",
45
+ "@stylistic/eslint-plugin": "^5.6.1",
46
46
  "@tanstack/eslint-plugin-query": "^5.91.2",
47
47
  "@types/eslint": "9.6.1",
48
- "@typescript-eslint/parser": "^8.47.0",
49
- "@typescript-eslint/utils": "^8.47.0",
50
- "@vitest/eslint-plugin": "^1.4.3",
48
+ "@typescript-eslint/parser": "^8.48.0",
49
+ "@typescript-eslint/utils": "^8.48.0",
50
+ "@vitest/eslint-plugin": "^1.5.0",
51
51
  "astro-eslint-parser": "^1.2.2",
52
52
  "eslint-config-flat-gitignore": "^2.1.0",
53
53
  "eslint-config-prettier": "^10.1.8",
@@ -55,28 +55,28 @@
55
55
  "eslint-plugin-arrow-return-style-x": "^1.2.6",
56
56
  "eslint-plugin-astro": "^1.5.0",
57
57
  "eslint-plugin-import-x": "^4.16.1",
58
- "eslint-plugin-jest": "^29.1.0",
58
+ "eslint-plugin-jest": "^29.2.1",
59
59
  "eslint-plugin-jest-dom": "^5.5.0",
60
- "eslint-plugin-jsdoc": "^61.2.1",
60
+ "eslint-plugin-jsdoc": "^61.4.1",
61
61
  "eslint-plugin-jsx-a11y": "^6.10.2",
62
62
  "eslint-plugin-n": "^17.23.1",
63
63
  "eslint-plugin-perfectionist": "^4.15.1",
64
64
  "eslint-plugin-playwright": "^2.3.0",
65
65
  "eslint-plugin-react-compiler": "19.1.0-rc.2",
66
- "eslint-plugin-react-dom": "^2.3.5",
66
+ "eslint-plugin-react-dom": "^2.3.7",
67
67
  "eslint-plugin-react-hooks": "^7.0.1",
68
- "eslint-plugin-react-hooks-extra": "^2.3.5",
69
- "eslint-plugin-react-naming-convention": "^2.3.5",
68
+ "eslint-plugin-react-hooks-extra": "^2.3.7",
69
+ "eslint-plugin-react-naming-convention": "^2.3.7",
70
70
  "eslint-plugin-react-refresh": "0.4.24",
71
- "eslint-plugin-react-web-api": "^2.3.5",
72
- "eslint-plugin-react-x": "^2.3.5",
71
+ "eslint-plugin-react-web-api": "^2.3.7",
72
+ "eslint-plugin-react-x": "^2.3.7",
73
73
  "eslint-plugin-regexp": "^2.10.0",
74
74
  "eslint-plugin-storybook": "0.12.0",
75
- "eslint-plugin-testing-library": "^7.13.4",
75
+ "eslint-plugin-testing-library": "^7.13.5",
76
76
  "eslint-plugin-unicorn": "^62.0.0",
77
77
  "globals": "^16.5.0",
78
78
  "local-pkg": "^1.1.2",
79
- "typescript-eslint": "^8.47.0"
79
+ "typescript-eslint": "^8.48.0"
80
80
  },
81
81
  "peerDependencies": {
82
82
  "eslint": "^9.10.0"