@jimmy.codes/eslint-config 7.6.1 → 7.8.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
@@ -272,7 +272,6 @@ This config includes the following plugins:
272
272
  | [`@tanstack/eslint-plugin-query`](https://tanstack.com/query/latest/docs/eslint/eslint-plugin-query) | TanStack Query rules |
273
273
  | [`@vitest/eslint-plugin`](https://github.com/vitest-dev/eslint-plugin-vitest) | Vitest support |
274
274
  | [`eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier) | Disable formatting conflicts |
275
- | [`eslint-plugin-arrow-return-style-x`](https://github.com/christopher-buss/eslint-plugin-arrow-return-style-x) | Arrow function return style |
276
275
  | [`eslint-plugin-astro`](https://ota-meshi.github.io/eslint-plugin-astro/) | Astro framework support |
277
276
  | [`eslint-plugin-import-x`](https://github.com/un-ts/eslint-plugin-import-x) | Import order and hygiene |
278
277
  | [`eslint-plugin-jest`](https://github.com/jest-community/eslint-plugin-jest) | Jest support |
@@ -42,6 +42,7 @@ async function astroConfig(options) {
42
42
  "astro/no-deprecated-astro-resolve": "error",
43
43
  "astro/no-deprecated-getentrybyslug": "error",
44
44
  "astro/no-exports-from-components": "off",
45
+ "astro/no-prerender-export-outside-pages": "error",
45
46
  "astro/no-unsafe-inline-scripts": "error",
46
47
  "astro/no-unused-define-vars-in-style": "error",
47
48
  "astro/valid-compile": "error",
@@ -13,7 +13,9 @@ const hasJest = () => {
13
13
  return isPackageExists("jest");
14
14
  };
15
15
  const hasTestingLibrary = () => {
16
- return ["@testing-library/react"].some((pkg) => isPackageExists(pkg));
16
+ return ["@testing-library/react"].some((pkg) => {
17
+ return isPackageExists(pkg);
18
+ });
17
19
  };
18
20
  const hasReactQuery = () => {
19
21
  return isPackageExists("@tanstack/react-query");
package/dist/index.d.mts CHANGED
@@ -1402,16 +1402,6 @@ interface RuleOptions {
1402
1402
  * @deprecated
1403
1403
  */
1404
1404
  'arrow-spacing'?: Linter.RuleEntry<ArrowSpacing>;
1405
- /**
1406
- * Enforce consistent arrow function return style based on length, multiline expressions, JSX usage, and export context
1407
- * @see https://github.com/christopher-buss/eslint-plugin-arrow-return-style-x/blob/v1.2.6/src/rules/arrow-return-style/documentation.md
1408
- */
1409
- 'arrow-style/arrow-return-style'?: Linter.RuleEntry<ArrowStyleArrowReturnStyle>;
1410
- /**
1411
- * Disallow anonymous arrow functions as export default declarations
1412
- * @see https://github.com/christopher-buss/eslint-plugin-arrow-return-style-x/blob/v1.2.6/src/rules/no-export-default-arrow/documentation.md
1413
- */
1414
- 'arrow-style/no-export-default-arrow'?: Linter.RuleEntry<[]>;
1415
1405
  /**
1416
1406
  * apply `jsx-a11y/alt-text` rule to Astro components
1417
1407
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/alt-text/
@@ -1627,6 +1617,11 @@ interface RuleOptions {
1627
1617
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-exports-from-components/
1628
1618
  */
1629
1619
  'astro/no-exports-from-components'?: Linter.RuleEntry<[]>;
1620
+ /**
1621
+ * disallow `prerender` export outside of pages/ directory
1622
+ * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-prerender-export-outside-pages/
1623
+ */
1624
+ 'astro/no-prerender-export-outside-pages'?: Linter.RuleEntry<[]>;
1630
1625
  /**
1631
1626
  * disallow use of `set:html` to prevent XSS attack
1632
1627
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-set-html-directive/
@@ -2244,357 +2239,357 @@ interface RuleOptions {
2244
2239
  'jest-dom/prefer-to-have-value'?: Linter.RuleEntry<[]>;
2245
2240
  /**
2246
2241
  * Enforce `test` and `it` usage conventions
2247
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/consistent-test-it.md
2242
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/consistent-test-it.md
2248
2243
  */
2249
2244
  'jest/consistent-test-it'?: Linter.RuleEntry<JestConsistentTestIt>;
2250
2245
  /**
2251
2246
  * Enforce assertion to be made in a test body
2252
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/expect-expect.md
2247
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/expect-expect.md
2253
2248
  */
2254
2249
  'jest/expect-expect'?: Linter.RuleEntry<JestExpectExpect>;
2255
2250
  /**
2256
2251
  * Enforces a maximum number assertion calls in a test body
2257
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/max-expects.md
2252
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/max-expects.md
2258
2253
  */
2259
2254
  'jest/max-expects'?: Linter.RuleEntry<JestMaxExpects>;
2260
2255
  /**
2261
2256
  * Enforces a maximum depth to nested describe calls
2262
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/max-nested-describe.md
2257
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/max-nested-describe.md
2263
2258
  */
2264
2259
  'jest/max-nested-describe'?: Linter.RuleEntry<JestMaxNestedDescribe>;
2265
2260
  /**
2266
2261
  * Disallow alias methods
2267
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-alias-methods.md
2262
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-alias-methods.md
2268
2263
  */
2269
2264
  'jest/no-alias-methods'?: Linter.RuleEntry<[]>;
2270
2265
  /**
2271
2266
  * Disallow commented out tests
2272
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-commented-out-tests.md
2267
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-commented-out-tests.md
2273
2268
  */
2274
2269
  'jest/no-commented-out-tests'?: Linter.RuleEntry<[]>;
2275
2270
  /**
2276
2271
  * Disallow calling `expect` conditionally
2277
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-conditional-expect.md
2272
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-conditional-expect.md
2278
2273
  */
2279
2274
  'jest/no-conditional-expect'?: Linter.RuleEntry<[]>;
2280
2275
  /**
2281
2276
  * Disallow conditional logic in tests
2282
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-conditional-in-test.md
2277
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-conditional-in-test.md
2283
2278
  */
2284
2279
  'jest/no-conditional-in-test'?: Linter.RuleEntry<JestNoConditionalInTest>;
2285
2280
  /**
2286
2281
  * Disallow confusing usages of jest.setTimeout
2287
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-confusing-set-timeout.md
2282
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-confusing-set-timeout.md
2288
2283
  */
2289
2284
  'jest/no-confusing-set-timeout'?: Linter.RuleEntry<[]>;
2290
2285
  /**
2291
2286
  * Disallow use of deprecated functions
2292
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-deprecated-functions.md
2287
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-deprecated-functions.md
2293
2288
  */
2294
2289
  'jest/no-deprecated-functions'?: Linter.RuleEntry<[]>;
2295
2290
  /**
2296
2291
  * Disallow disabled tests
2297
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-disabled-tests.md
2292
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-disabled-tests.md
2298
2293
  */
2299
2294
  'jest/no-disabled-tests'?: Linter.RuleEntry<[]>;
2300
2295
  /**
2301
2296
  * Disallow using a callback in asynchronous tests and hooks
2302
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-done-callback.md
2297
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-done-callback.md
2303
2298
  */
2304
2299
  'jest/no-done-callback'?: Linter.RuleEntry<[]>;
2305
2300
  /**
2306
2301
  * Disallow duplicate setup and teardown hooks
2307
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-duplicate-hooks.md
2302
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-duplicate-hooks.md
2308
2303
  */
2309
2304
  'jest/no-duplicate-hooks'?: Linter.RuleEntry<[]>;
2310
2305
  /**
2311
2306
  * Disallow using equality matchers on error types
2312
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-error-equal.md
2307
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-error-equal.md
2313
2308
  */
2314
2309
  'jest/no-error-equal'?: Linter.RuleEntry<[]>;
2315
2310
  /**
2316
2311
  * Disallow using `exports` in files containing tests
2317
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-export.md
2312
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-export.md
2318
2313
  */
2319
2314
  'jest/no-export'?: Linter.RuleEntry<[]>;
2320
2315
  /**
2321
2316
  * Disallow focused tests
2322
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-focused-tests.md
2317
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-focused-tests.md
2323
2318
  */
2324
2319
  'jest/no-focused-tests'?: Linter.RuleEntry<[]>;
2325
2320
  /**
2326
2321
  * Disallow setup and teardown hooks
2327
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-hooks.md
2322
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-hooks.md
2328
2323
  */
2329
2324
  'jest/no-hooks'?: Linter.RuleEntry<JestNoHooks>;
2330
2325
  /**
2331
2326
  * Disallow identical titles
2332
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-identical-title.md
2327
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-identical-title.md
2333
2328
  */
2334
2329
  'jest/no-identical-title'?: Linter.RuleEntry<[]>;
2335
2330
  /**
2336
2331
  * Disallow string interpolation inside snapshots
2337
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-interpolation-in-snapshots.md
2332
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-interpolation-in-snapshots.md
2338
2333
  */
2339
2334
  'jest/no-interpolation-in-snapshots'?: Linter.RuleEntry<[]>;
2340
2335
  /**
2341
2336
  * Disallow Jasmine globals
2342
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-jasmine-globals.md
2337
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-jasmine-globals.md
2343
2338
  */
2344
2339
  'jest/no-jasmine-globals'?: Linter.RuleEntry<[]>;
2345
2340
  /**
2346
2341
  * Disallow large snapshots
2347
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-large-snapshots.md
2342
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-large-snapshots.md
2348
2343
  */
2349
2344
  'jest/no-large-snapshots'?: Linter.RuleEntry<JestNoLargeSnapshots>;
2350
2345
  /**
2351
2346
  * Disallow manually importing from `__mocks__`
2352
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-mocks-import.md
2347
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-mocks-import.md
2353
2348
  */
2354
2349
  'jest/no-mocks-import'?: Linter.RuleEntry<[]>;
2355
2350
  /**
2356
2351
  * Disallow specific `jest.` methods
2357
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-restricted-jest-methods.md
2352
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-restricted-jest-methods.md
2358
2353
  */
2359
2354
  'jest/no-restricted-jest-methods'?: Linter.RuleEntry<JestNoRestrictedJestMethods>;
2360
2355
  /**
2361
2356
  * Disallow specific matchers & modifiers
2362
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-restricted-matchers.md
2357
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-restricted-matchers.md
2363
2358
  */
2364
2359
  'jest/no-restricted-matchers'?: Linter.RuleEntry<JestNoRestrictedMatchers>;
2365
2360
  /**
2366
2361
  * Disallow using `expect` outside of `it` or `test` blocks
2367
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-standalone-expect.md
2362
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-standalone-expect.md
2368
2363
  */
2369
2364
  'jest/no-standalone-expect'?: Linter.RuleEntry<JestNoStandaloneExpect>;
2370
2365
  /**
2371
2366
  * Require using `.only` and `.skip` over `f` and `x`
2372
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-test-prefixes.md
2367
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-test-prefixes.md
2373
2368
  */
2374
2369
  'jest/no-test-prefixes'?: Linter.RuleEntry<[]>;
2375
2370
  /**
2376
2371
  * Disallow explicitly returning from tests
2377
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-test-return-statement.md
2372
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-test-return-statement.md
2378
2373
  */
2379
2374
  'jest/no-test-return-statement'?: Linter.RuleEntry<[]>;
2380
2375
  /**
2381
2376
  * Disallow unnecessary assertions based on types
2382
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-unnecessary-assertion.md
2377
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-unnecessary-assertion.md
2383
2378
  */
2384
2379
  'jest/no-unnecessary-assertion'?: Linter.RuleEntry<[]>;
2385
2380
  /**
2386
2381
  * Disallow unnecessary async function wrapper for expected promises
2387
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-unneeded-async-expect-function.md
2382
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-unneeded-async-expect-function.md
2388
2383
  */
2389
2384
  'jest/no-unneeded-async-expect-function'?: Linter.RuleEntry<[]>;
2390
2385
  /**
2391
2386
  * Disallow using `jest.mock()` factories without an explicit type parameter
2392
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-untyped-mock-factory.md
2387
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-untyped-mock-factory.md
2393
2388
  */
2394
2389
  'jest/no-untyped-mock-factory'?: Linter.RuleEntry<[]>;
2395
2390
  /**
2396
2391
  * Enforce padding around `afterAll` blocks
2397
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/padding-around-after-all-blocks.md
2392
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-after-all-blocks.md
2398
2393
  */
2399
2394
  'jest/padding-around-after-all-blocks'?: Linter.RuleEntry<[]>;
2400
2395
  /**
2401
2396
  * Enforce padding around `afterEach` blocks
2402
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/padding-around-after-each-blocks.md
2397
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-after-each-blocks.md
2403
2398
  */
2404
2399
  'jest/padding-around-after-each-blocks'?: Linter.RuleEntry<[]>;
2405
2400
  /**
2406
2401
  * Enforce padding around Jest functions
2407
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/padding-around-all.md
2402
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-all.md
2408
2403
  */
2409
2404
  'jest/padding-around-all'?: Linter.RuleEntry<[]>;
2410
2405
  /**
2411
2406
  * Enforce padding around `beforeAll` blocks
2412
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/padding-around-before-all-blocks.md
2407
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-before-all-blocks.md
2413
2408
  */
2414
2409
  'jest/padding-around-before-all-blocks'?: Linter.RuleEntry<[]>;
2415
2410
  /**
2416
2411
  * Enforce padding around `beforeEach` blocks
2417
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/padding-around-before-each-blocks.md
2412
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-before-each-blocks.md
2418
2413
  */
2419
2414
  'jest/padding-around-before-each-blocks'?: Linter.RuleEntry<[]>;
2420
2415
  /**
2421
2416
  * Enforce padding around `describe` blocks
2422
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/padding-around-describe-blocks.md
2417
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-describe-blocks.md
2423
2418
  */
2424
2419
  'jest/padding-around-describe-blocks'?: Linter.RuleEntry<[]>;
2425
2420
  /**
2426
2421
  * Enforce padding around `expect` groups
2427
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/padding-around-expect-groups.md
2422
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-expect-groups.md
2428
2423
  */
2429
2424
  'jest/padding-around-expect-groups'?: Linter.RuleEntry<[]>;
2430
2425
  /**
2431
2426
  * Enforce padding around `test` and `it` blocks
2432
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/padding-around-test-blocks.md
2427
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-test-blocks.md
2433
2428
  */
2434
2429
  'jest/padding-around-test-blocks'?: Linter.RuleEntry<[]>;
2435
2430
  /**
2436
2431
  * Suggest using `toHaveBeenCalledWith()`
2437
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-called-with.md
2432
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-called-with.md
2438
2433
  */
2439
2434
  'jest/prefer-called-with'?: Linter.RuleEntry<[]>;
2440
2435
  /**
2441
2436
  * Suggest using the built-in comparison matchers
2442
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-comparison-matcher.md
2437
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-comparison-matcher.md
2443
2438
  */
2444
2439
  'jest/prefer-comparison-matcher'?: Linter.RuleEntry<[]>;
2445
2440
  /**
2446
2441
  * Prefer using `.each` rather than manual loops
2447
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-each.md
2442
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-each.md
2448
2443
  */
2449
2444
  'jest/prefer-each'?: Linter.RuleEntry<[]>;
2450
2445
  /**
2451
2446
  * Prefer having the last statement in a test be an assertion
2452
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-ending-with-an-expect.md
2447
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-ending-with-an-expect.md
2453
2448
  */
2454
2449
  'jest/prefer-ending-with-an-expect'?: Linter.RuleEntry<JestPreferEndingWithAnExpect>;
2455
2450
  /**
2456
2451
  * Suggest using the built-in equality matchers
2457
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-equality-matcher.md
2452
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-equality-matcher.md
2458
2453
  */
2459
2454
  'jest/prefer-equality-matcher'?: Linter.RuleEntry<[]>;
2460
2455
  /**
2461
2456
  * Suggest using `expect.assertions()` OR `expect.hasAssertions()`
2462
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-expect-assertions.md
2457
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-expect-assertions.md
2463
2458
  */
2464
2459
  'jest/prefer-expect-assertions'?: Linter.RuleEntry<JestPreferExpectAssertions>;
2465
2460
  /**
2466
2461
  * Prefer `await expect(...).resolves` over `expect(await ...)` syntax
2467
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-expect-resolves.md
2462
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-expect-resolves.md
2468
2463
  */
2469
2464
  'jest/prefer-expect-resolves'?: Linter.RuleEntry<[]>;
2470
2465
  /**
2471
2466
  * Prefer having hooks in a consistent order
2472
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-hooks-in-order.md
2467
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-hooks-in-order.md
2473
2468
  */
2474
2469
  'jest/prefer-hooks-in-order'?: Linter.RuleEntry<[]>;
2475
2470
  /**
2476
2471
  * Suggest having hooks before any test cases
2477
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-hooks-on-top.md
2472
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-hooks-on-top.md
2478
2473
  */
2479
2474
  'jest/prefer-hooks-on-top'?: Linter.RuleEntry<[]>;
2480
2475
  /**
2481
2476
  * Prefer importing Jest globals
2482
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-importing-jest-globals.md
2477
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-importing-jest-globals.md
2483
2478
  */
2484
2479
  'jest/prefer-importing-jest-globals'?: Linter.RuleEntry<JestPreferImportingJestGlobals>;
2485
2480
  /**
2486
2481
  * Prefer `jest.mocked()` over `fn as jest.Mock`
2487
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-jest-mocked.md
2482
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-jest-mocked.md
2488
2483
  */
2489
2484
  'jest/prefer-jest-mocked'?: Linter.RuleEntry<[]>;
2490
2485
  /**
2491
2486
  * Enforce lowercase test names
2492
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-lowercase-title.md
2487
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-lowercase-title.md
2493
2488
  */
2494
2489
  'jest/prefer-lowercase-title'?: Linter.RuleEntry<JestPreferLowercaseTitle>;
2495
2490
  /**
2496
2491
  * Prefer mock resolved/rejected shorthands for promises
2497
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-mock-promise-shorthand.md
2492
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-mock-promise-shorthand.md
2498
2493
  */
2499
2494
  'jest/prefer-mock-promise-shorthand'?: Linter.RuleEntry<[]>;
2500
2495
  /**
2501
2496
  * Prefer mock return shorthands
2502
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-mock-return-shorthand.md
2497
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-mock-return-shorthand.md
2503
2498
  */
2504
2499
  'jest/prefer-mock-return-shorthand'?: Linter.RuleEntry<[]>;
2505
2500
  /**
2506
2501
  * Prefer including a hint with external snapshots
2507
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-snapshot-hint.md
2502
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-snapshot-hint.md
2508
2503
  */
2509
2504
  'jest/prefer-snapshot-hint'?: Linter.RuleEntry<JestPreferSnapshotHint>;
2510
2505
  /**
2511
2506
  * Suggest using `jest.spyOn()`
2512
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-spy-on.md
2507
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-spy-on.md
2513
2508
  */
2514
2509
  'jest/prefer-spy-on'?: Linter.RuleEntry<[]>;
2515
2510
  /**
2516
2511
  * Suggest using `toStrictEqual()`
2517
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-strict-equal.md
2512
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-strict-equal.md
2518
2513
  */
2519
2514
  'jest/prefer-strict-equal'?: Linter.RuleEntry<[]>;
2520
2515
  /**
2521
2516
  * Suggest using `toBe()` for primitive literals
2522
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-to-be.md
2517
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-to-be.md
2523
2518
  */
2524
2519
  'jest/prefer-to-be'?: Linter.RuleEntry<[]>;
2525
2520
  /**
2526
2521
  * Suggest using `toContain()`
2527
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-to-contain.md
2522
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-to-contain.md
2528
2523
  */
2529
2524
  'jest/prefer-to-contain'?: Linter.RuleEntry<[]>;
2530
2525
  /**
2531
2526
  * Suggest using `toHaveBeenCalled`
2532
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-to-have-been-called.md
2527
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-to-have-been-called.md
2533
2528
  */
2534
2529
  'jest/prefer-to-have-been-called'?: Linter.RuleEntry<[]>;
2535
2530
  /**
2536
2531
  * Suggest using `toHaveBeenCalledTimes()`
2537
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-to-have-been-called-times.md
2532
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-to-have-been-called-times.md
2538
2533
  */
2539
2534
  'jest/prefer-to-have-been-called-times'?: Linter.RuleEntry<[]>;
2540
2535
  /**
2541
2536
  * Suggest using `toHaveLength()`
2542
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-to-have-length.md
2537
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-to-have-length.md
2543
2538
  */
2544
2539
  'jest/prefer-to-have-length'?: Linter.RuleEntry<[]>;
2545
2540
  /**
2546
2541
  * Suggest using `test.todo`
2547
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-todo.md
2542
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-todo.md
2548
2543
  */
2549
2544
  'jest/prefer-todo'?: Linter.RuleEntry<[]>;
2550
2545
  /**
2551
2546
  * Require setup and teardown code to be within a hook
2552
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/require-hook.md
2547
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/require-hook.md
2553
2548
  */
2554
2549
  'jest/require-hook'?: Linter.RuleEntry<JestRequireHook>;
2555
2550
  /**
2556
2551
  * Require a message for `toThrow()`
2557
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/require-to-throw-message.md
2552
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/require-to-throw-message.md
2558
2553
  */
2559
2554
  'jest/require-to-throw-message'?: Linter.RuleEntry<[]>;
2560
2555
  /**
2561
2556
  * Require test cases and hooks to be inside a `describe` block
2562
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/require-top-level-describe.md
2557
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/require-top-level-describe.md
2563
2558
  */
2564
2559
  'jest/require-top-level-describe'?: Linter.RuleEntry<JestRequireTopLevelDescribe>;
2565
2560
  /**
2566
2561
  * Enforce unbound methods are called with their expected scope
2567
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/unbound-method.md
2562
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/unbound-method.md
2568
2563
  */
2569
2564
  'jest/unbound-method'?: Linter.RuleEntry<JestUnboundMethod>;
2570
2565
  /**
2571
2566
  * Enforce valid `describe()` callback
2572
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/valid-describe-callback.md
2567
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/valid-describe-callback.md
2573
2568
  */
2574
2569
  'jest/valid-describe-callback'?: Linter.RuleEntry<[]>;
2575
2570
  /**
2576
2571
  * Enforce valid `expect()` usage
2577
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/valid-expect.md
2572
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/valid-expect.md
2578
2573
  */
2579
2574
  'jest/valid-expect'?: Linter.RuleEntry<JestValidExpect>;
2580
2575
  /**
2581
2576
  * Require promises that have expectations in their chain to be valid
2582
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/valid-expect-in-promise.md
2577
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/valid-expect-in-promise.md
2583
2578
  */
2584
2579
  'jest/valid-expect-in-promise'?: Linter.RuleEntry<[]>;
2585
2580
  /**
2586
2581
  * Require that `resolve` and `reject` modifiers are present (and only) for promise-like types
2587
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/valid-expect-with-promise.md
2582
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/valid-expect-with-promise.md
2588
2583
  */
2589
2584
  'jest/valid-expect-with-promise'?: Linter.RuleEntry<[]>;
2590
2585
  /**
2591
2586
  * Disallow mocking of non-existing module paths
2592
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/valid-mock-module-path.md
2587
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/valid-mock-module-path.md
2593
2588
  */
2594
2589
  'jest/valid-mock-module-path'?: Linter.RuleEntry<JestValidMockModulePath>;
2595
2590
  /**
2596
2591
  * Enforce valid titles
2597
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/valid-title.md
2592
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/valid-title.md
2598
2593
  */
2599
2594
  'jest/valid-title'?: Linter.RuleEntry<JestValidTitle>;
2600
2595
  /**
@@ -4402,6 +4397,11 @@ interface RuleOptions {
4402
4397
  * @see https://perfectionist.dev/rules/sort-array-includes
4403
4398
  */
4404
4399
  'perfectionist/sort-array-includes'?: Linter.RuleEntry<PerfectionistSortArrayIncludes>;
4400
+ /**
4401
+ * Enforce sorted arrays.
4402
+ * @see https://perfectionist.dev/rules/sort-arrays
4403
+ */
4404
+ 'perfectionist/sort-arrays'?: Linter.RuleEntry<PerfectionistSortArrays>;
4405
4405
  /**
4406
4406
  * Enforce sorted classes.
4407
4407
  * @see https://perfectionist.dev/rules/sort-classes
@@ -4989,24 +4989,24 @@ interface RuleOptions {
4989
4989
  * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-direct-set-state-in-use-effect
4990
4990
  */
4991
4991
  'react-hooks-extra/no-direct-set-state-in-use-effect'?: Linter.RuleEntry<[]>;
4992
- /**
4993
- * Verifies that automatic effect dependencies are compiled if opted-in
4994
- */
4995
- 'react-hooks/automatic-effect-dependencies'?: Linter.RuleEntry<ReactHooksAutomaticEffectDependencies>;
4996
4992
  /**
4997
4993
  * Validates against calling capitalized functions/methods instead of using JSX
4994
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/capitalized-calls
4998
4995
  */
4999
4996
  'react-hooks/capitalized-calls'?: Linter.RuleEntry<ReactHooksCapitalizedCalls>;
5000
4997
  /**
5001
- * Validates against higher order functions defining nested components or hooks. Components and hooks should be defined at the module level
4998
+ * Deprecated: this rule has been removed in 7.1.0.
4999
+ * @deprecated
5002
5000
  */
5003
- 'react-hooks/component-hook-factories'?: Linter.RuleEntry<ReactHooksComponentHookFactories>;
5001
+ 'react-hooks/component-hook-factories'?: Linter.RuleEntry<[]>;
5004
5002
  /**
5005
5003
  * Validates the compiler configuration options
5004
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/config
5006
5005
  */
5007
5006
  'react-hooks/config'?: Linter.RuleEntry<ReactHooksConfig>;
5008
5007
  /**
5009
5008
  * Validates usage of error boundaries instead of try/catch for errors in child components
5009
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/error-boundaries
5010
5010
  */
5011
5011
  'react-hooks/error-boundaries'?: Linter.RuleEntry<ReactHooksErrorBoundaries>;
5012
5012
  /**
@@ -5015,59 +5015,78 @@ interface RuleOptions {
5015
5015
  */
5016
5016
  'react-hooks/exhaustive-deps'?: Linter.RuleEntry<ReactHooksExhaustiveDeps>;
5017
5017
  /**
5018
- * Validates usage of fbt
5018
+ * Validates that effect dependencies are exhaustive and without extraneous values
5019
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-effect-dependencies
5019
5020
  */
5020
- 'react-hooks/fbt'?: Linter.RuleEntry<ReactHooksFbt>;
5021
+ 'react-hooks/exhaustive-effect-dependencies'?: Linter.RuleEntry<ReactHooksExhaustiveEffectDependencies>;
5021
5022
  /**
5022
- * Validates usage of `fire`
5023
+ * Validates usage of fbt
5024
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/fbt
5023
5025
  */
5024
- 'react-hooks/fire'?: Linter.RuleEntry<ReactHooksFire>;
5026
+ 'react-hooks/fbt'?: Linter.RuleEntry<ReactHooksFbt>;
5025
5027
  /**
5026
5028
  * Validates configuration of [gating mode](https://react.dev/reference/react-compiler/gating)
5029
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/gating
5027
5030
  */
5028
5031
  'react-hooks/gating'?: Linter.RuleEntry<ReactHooksGating>;
5029
5032
  /**
5030
5033
  * Validates against assignment/mutation of globals during render, part of ensuring that [side effects must render outside of render](https://react.dev/reference/rules/components-and-hooks-must-be-pure#side-effects-must-run-outside-of-render)
5034
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/globals
5031
5035
  */
5032
5036
  'react-hooks/globals'?: Linter.RuleEntry<ReactHooksGlobals>;
5033
5037
  /**
5034
5038
  * Validates the rules of hooks
5039
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/hooks
5035
5040
  */
5036
5041
  'react-hooks/hooks'?: Linter.RuleEntry<ReactHooksHooks>;
5037
5042
  /**
5038
5043
  * Validates against mutating props, state, and other values that [are immutable](https://react.dev/reference/rules/components-and-hooks-must-be-pure#props-and-state-are-immutable)
5044
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
5039
5045
  */
5040
5046
  'react-hooks/immutability'?: Linter.RuleEntry<ReactHooksImmutability>;
5041
5047
  /**
5042
5048
  * Validates against usage of libraries which are incompatible with memoization (manual or automatic)
5049
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/incompatible-library
5043
5050
  */
5044
5051
  'react-hooks/incompatible-library'?: Linter.RuleEntry<ReactHooksIncompatibleLibrary>;
5045
5052
  /**
5046
5053
  * Internal invariants
5054
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/invariant
5047
5055
  */
5048
5056
  'react-hooks/invariant'?: Linter.RuleEntry<ReactHooksInvariant>;
5057
+ /**
5058
+ * Validates that useMemo() and useCallback() specify comprehensive dependencies without extraneous values. See [`useMemo()` docs](https://react.dev/reference/react/useMemo) for more information.
5059
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/memo-dependencies
5060
+ */
5061
+ 'react-hooks/memo-dependencies'?: Linter.RuleEntry<ReactHooksMemoDependencies>;
5049
5062
  /**
5050
5063
  * Validates that effect dependencies are memoized
5064
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/memoized-effect-dependencies
5051
5065
  */
5052
5066
  'react-hooks/memoized-effect-dependencies'?: Linter.RuleEntry<ReactHooksMemoizedEffectDependencies>;
5053
5067
  /**
5054
5068
  * Validates against deriving values from state in an effect
5069
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/no-deriving-state-in-effects
5055
5070
  */
5056
5071
  'react-hooks/no-deriving-state-in-effects'?: Linter.RuleEntry<ReactHooksNoDerivingStateInEffects>;
5057
5072
  /**
5058
5073
  * Validates that existing manual memoized is preserved by the compiler. React Compiler will only compile components and hooks if its inference [matches or exceeds the existing manual memoization](https://react.dev/learn/react-compiler/introduction#what-should-i-do-about-usememo-usecallback-and-reactmemo)
5074
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/preserve-manual-memoization
5059
5075
  */
5060
5076
  'react-hooks/preserve-manual-memoization'?: Linter.RuleEntry<ReactHooksPreserveManualMemoization>;
5061
5077
  /**
5062
5078
  * Validates that [components/hooks are pure](https://react.dev/reference/rules/components-and-hooks-must-be-pure) by checking that they do not call known-impure functions
5079
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
5063
5080
  */
5064
5081
  'react-hooks/purity'?: Linter.RuleEntry<ReactHooksPurity>;
5065
5082
  /**
5066
5083
  * Validates correct usage of refs, not reading/writing during render. See the "pitfalls" section in [`useRef()` usage](https://react.dev/reference/react/useRef#usage)
5084
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
5067
5085
  */
5068
5086
  'react-hooks/refs'?: Linter.RuleEntry<ReactHooksRefs>;
5069
5087
  /**
5070
5088
  * Validates against suppression of other rules
5089
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/rule-suppression
5071
5090
  */
5072
5091
  'react-hooks/rule-suppression'?: Linter.RuleEntry<ReactHooksRuleSuppression>;
5073
5092
  /**
@@ -5076,35 +5095,43 @@ interface RuleOptions {
5076
5095
  */
5077
5096
  'react-hooks/rules-of-hooks'?: Linter.RuleEntry<ReactHooksRulesOfHooks>;
5078
5097
  /**
5079
- * Validates against calling setState synchronously in an effect, which can lead to re-renders that degrade performance
5098
+ * Validates against calling setState synchronously in an effect. This can indicate non-local derived data, a derived event pattern, or improper external data synchronization.
5099
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
5080
5100
  */
5081
5101
  'react-hooks/set-state-in-effect'?: Linter.RuleEntry<ReactHooksSetStateInEffect>;
5082
5102
  /**
5083
5103
  * Validates against setting state during render, which can trigger additional renders and potential infinite render loops
5104
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-render
5084
5105
  */
5085
5106
  'react-hooks/set-state-in-render'?: Linter.RuleEntry<ReactHooksSetStateInRender>;
5086
5107
  /**
5087
5108
  * Validates that components are static, not recreated every render. Components that are recreated dynamically can reset state and trigger excessive re-rendering
5109
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
5088
5110
  */
5089
5111
  'react-hooks/static-components'?: Linter.RuleEntry<ReactHooksStaticComponents>;
5090
5112
  /**
5091
5113
  * Validates against invalid syntax
5114
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/syntax
5092
5115
  */
5093
5116
  'react-hooks/syntax'?: Linter.RuleEntry<ReactHooksSyntax>;
5094
5117
  /**
5095
5118
  * Unimplemented features
5119
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/todo
5096
5120
  */
5097
5121
  'react-hooks/todo'?: Linter.RuleEntry<ReactHooksTodo>;
5098
5122
  /**
5099
5123
  * Validates against syntax that we do not plan to support in React Compiler
5124
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/unsupported-syntax
5100
5125
  */
5101
5126
  'react-hooks/unsupported-syntax'?: Linter.RuleEntry<ReactHooksUnsupportedSyntax>;
5102
5127
  /**
5103
5128
  * Validates usage of the useMemo() hook against common mistakes. See [`useMemo()` docs](https://react.dev/reference/react/useMemo) for more information.
5129
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/use-memo
5104
5130
  */
5105
5131
  'react-hooks/use-memo'?: Linter.RuleEntry<ReactHooksUseMemo>;
5106
5132
  /**
5107
5133
  * Validates that useMemos always return a value and that the result of the useMemo is used by the component/hook. See [`useMemo()` docs](https://react.dev/reference/react/useMemo) for more information.
5134
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/void-use-memo
5108
5135
  */
5109
5136
  'react-hooks/void-use-memo'?: Linter.RuleEntry<ReactHooksVoidUseMemo>;
5110
5137
  /**
@@ -9565,17 +9592,6 @@ type ArrowParens = [] | [("always" | "as-needed")] | [("always" | "as-needed"),
9565
9592
  type ArrowSpacing = [] | [{
9566
9593
  before?: boolean;
9567
9594
  after?: boolean;
9568
- }]; // ----- arrow-style/arrow-return-style -----
9569
- type ArrowStyleArrowReturnStyle = [] | [{
9570
- jsxAlwaysUseExplicitReturn?: boolean;
9571
- maxLen?: number;
9572
- maxObjectProperties?: number;
9573
- namedExportsAlwaysUseExplicitReturn?: boolean;
9574
- objectReturnStyle?: ("always-explicit" | "complex-explicit" | "off");
9575
- usePrettier?: (boolean | {
9576
- [k: string]: unknown | undefined;
9577
- } | null);
9578
- [k: string]: unknown | undefined;
9579
9595
  }]; // ----- astro/jsx-a11y/alt-text -----
9580
9596
  type AstroJsxA11YAltText = [] | [{
9581
9597
  elements?: string[];
@@ -12149,6 +12165,112 @@ type PerfectionistSortArrayIncludes = {
12149
12165
  } | string)));
12150
12166
  });
12151
12167
  partitionByNewLine?: boolean;
12168
+ }[]; // ----- perfectionist/sort-arrays -----
12169
+ type PerfectionistSortArrays = {
12170
+ fallbackSort?: {
12171
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12172
+ order?: ("asc" | "desc");
12173
+ };
12174
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12175
+ specialCharacters?: ("remove" | "trim" | "keep");
12176
+ ignoreCase?: boolean;
12177
+ alphabet?: string;
12178
+ locales?: (string | string[]);
12179
+ order?: ("asc" | "desc");
12180
+ customGroups?: ({
12181
+ fallbackSort?: {
12182
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12183
+ order?: ("asc" | "desc");
12184
+ };
12185
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12186
+ groupName: string;
12187
+ newlinesInside?: ("ignore" | number);
12188
+ order?: ("asc" | "desc");
12189
+ anyOf: [{
12190
+ elementNamePattern?: (({
12191
+ pattern: string;
12192
+ flags?: string;
12193
+ } | string)[] | ({
12194
+ pattern: string;
12195
+ flags?: string;
12196
+ } | string));
12197
+ selector?: "literal";
12198
+ }, ...({
12199
+ elementNamePattern?: (({
12200
+ pattern: string;
12201
+ flags?: string;
12202
+ } | string)[] | ({
12203
+ pattern: string;
12204
+ flags?: string;
12205
+ } | string));
12206
+ selector?: "literal";
12207
+ })[]];
12208
+ } | {
12209
+ fallbackSort?: {
12210
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12211
+ order?: ("asc" | "desc");
12212
+ };
12213
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12214
+ groupName: string;
12215
+ newlinesInside?: ("ignore" | number);
12216
+ order?: ("asc" | "desc");
12217
+ elementNamePattern?: (({
12218
+ pattern: string;
12219
+ flags?: string;
12220
+ } | string)[] | ({
12221
+ pattern: string;
12222
+ flags?: string;
12223
+ } | string));
12224
+ selector?: "literal";
12225
+ })[];
12226
+ newlinesInside?: (("ignore" | number) | "newlinesBetween");
12227
+ groups?: (string | [string, ...(string)[]] | {
12228
+ newlinesBetween: ("ignore" | number);
12229
+ } | {
12230
+ group: (string | [string, ...(string)[]]);
12231
+ fallbackSort?: {
12232
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12233
+ order?: ("asc" | "desc");
12234
+ };
12235
+ commentAbove?: string;
12236
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12237
+ newlinesInside?: ("ignore" | number);
12238
+ order?: ("asc" | "desc");
12239
+ })[];
12240
+ newlinesBetween?: ("ignore" | number);
12241
+ useConfigurationIf: {
12242
+ allNamesMatchPattern?: (({
12243
+ pattern: string;
12244
+ flags?: string;
12245
+ } | string)[] | ({
12246
+ pattern: string;
12247
+ flags?: string;
12248
+ } | string));
12249
+ matchesAstSelector?: string;
12250
+ };
12251
+ partitionByComment?: (boolean | (({
12252
+ pattern: string;
12253
+ flags?: string;
12254
+ } | string)[] | ({
12255
+ pattern: string;
12256
+ flags?: string;
12257
+ } | string)) | {
12258
+ block?: (boolean | (({
12259
+ pattern: string;
12260
+ flags?: string;
12261
+ } | string)[] | ({
12262
+ pattern: string;
12263
+ flags?: string;
12264
+ } | string)));
12265
+ line?: (boolean | (({
12266
+ pattern: string;
12267
+ flags?: string;
12268
+ } | string)[] | ({
12269
+ pattern: string;
12270
+ flags?: string;
12271
+ } | string)));
12272
+ });
12273
+ partitionByNewLine?: boolean;
12152
12274
  }[]; // ----- perfectionist/sort-classes -----
12153
12275
  type PerfectionistSortClasses = {
12154
12276
  fallbackSort?: {
@@ -12278,6 +12400,7 @@ type PerfectionistSortClasses = {
12278
12400
  matchesAstSelector?: string;
12279
12401
  };
12280
12402
  useExperimentalDependencyDetection?: boolean;
12403
+ newlinesBetweenOverloadSignatures?: ("ignore" | number);
12281
12404
  ignoreCallbackDependenciesPatterns?: (({
12282
12405
  pattern: string;
12283
12406
  flags?: string;
@@ -13641,6 +13764,7 @@ type PerfectionistSortModules = [] | [{
13641
13764
  })[];
13642
13765
  newlinesBetween?: ("ignore" | number);
13643
13766
  useExperimentalDependencyDetection?: boolean;
13767
+ newlinesBetweenOverloadSignatures?: ("ignore" | number);
13644
13768
  partitionByComment?: (boolean | (({
13645
13769
  pattern: string;
13646
13770
  flags?: string;
@@ -14680,15 +14804,9 @@ type ReactCompilerReactCompiler = [] | [{
14680
14804
  type ReactDomNoUnknownProperty = [] | [{
14681
14805
  ignore?: string[];
14682
14806
  requireDataLowercase?: boolean;
14683
- }]; // ----- react-hooks/automatic-effect-dependencies -----
14684
- type ReactHooksAutomaticEffectDependencies = [] | [{
14685
- [k: string]: unknown | undefined;
14686
14807
  }]; // ----- react-hooks/capitalized-calls -----
14687
14808
  type ReactHooksCapitalizedCalls = [] | [{
14688
14809
  [k: string]: unknown | undefined;
14689
- }]; // ----- react-hooks/component-hook-factories -----
14690
- type ReactHooksComponentHookFactories = [] | [{
14691
- [k: string]: unknown | undefined;
14692
14810
  }]; // ----- react-hooks/config -----
14693
14811
  type ReactHooksConfig = [] | [{
14694
14812
  [k: string]: unknown | undefined;
@@ -14701,12 +14819,12 @@ type ReactHooksExhaustiveDeps = [] | [{
14701
14819
  enableDangerousAutofixThisMayCauseInfiniteLoops?: boolean;
14702
14820
  experimental_autoDependenciesHooks?: string[];
14703
14821
  requireExplicitEffectDeps?: boolean;
14822
+ }]; // ----- react-hooks/exhaustive-effect-dependencies -----
14823
+ type ReactHooksExhaustiveEffectDependencies = [] | [{
14824
+ [k: string]: unknown | undefined;
14704
14825
  }]; // ----- react-hooks/fbt -----
14705
14826
  type ReactHooksFbt = [] | [{
14706
14827
  [k: string]: unknown | undefined;
14707
- }]; // ----- react-hooks/fire -----
14708
- type ReactHooksFire = [] | [{
14709
- [k: string]: unknown | undefined;
14710
14828
  }]; // ----- react-hooks/gating -----
14711
14829
  type ReactHooksGating = [] | [{
14712
14830
  [k: string]: unknown | undefined;
@@ -14725,6 +14843,9 @@ type ReactHooksIncompatibleLibrary = [] | [{
14725
14843
  }]; // ----- react-hooks/invariant -----
14726
14844
  type ReactHooksInvariant = [] | [{
14727
14845
  [k: string]: unknown | undefined;
14846
+ }]; // ----- react-hooks/memo-dependencies -----
14847
+ type ReactHooksMemoDependencies = [] | [{
14848
+ [k: string]: unknown | undefined;
14728
14849
  }]; // ----- react-hooks/memoized-effect-dependencies -----
14729
14850
  type ReactHooksMemoizedEffectDependencies = [] | [{
14730
14851
  [k: string]: unknown | undefined;
package/dist/index.mjs CHANGED
@@ -1,12 +1,11 @@
1
1
  import { GLOB_CJS, GLOB_IGNORES, GLOB_TESTS } from "./globs.mjs";
2
- import { a as hasReact, c as hasTestingLibrary, d as hasVitest, i as hasPlaywright, l as hasTypescript, n as hasJest, o as hasReactQuery, r as hasNext, s as hasStorybook, t as hasAstro } from "./has-dependency-BB12gGNt.mjs";
2
+ import { a as hasReact, c as hasTestingLibrary, d as hasVitest, i as hasPlaywright, l as hasTypescript, n as hasJest, o as hasReactQuery, r as hasNext, s as hasStorybook, t as hasAstro } from "./has-dependency-B7hGqVJZ.mjs";
3
3
  import gitignoreConfig from "eslint-config-flat-gitignore";
4
4
  import globals from "globals";
5
5
  import { recommended } from "@eslint-community/eslint-plugin-eslint-comments/configs";
6
6
  import { createTypeScriptImportResolver } from "eslint-import-resolver-typescript";
7
7
  import { configs, importX } from "eslint-plugin-import-x";
8
8
  import nodePlugin from "eslint-plugin-n";
9
- import arrowReturnStylePlugin from "eslint-plugin-arrow-return-style-x";
10
9
  import deMorganPlugin, { configs as configs$1 } from "eslint-plugin-de-morgan";
11
10
  import eslint from "@eslint/js";
12
11
  import jsdocPlugin from "eslint-plugin-jsdoc";
@@ -102,14 +101,7 @@ const importsConfig = ({ isTypescriptEnabled = false } = {}) => {
102
101
  //#region src/rules/javascript.ts
103
102
  const additionalRules = {
104
103
  "array-callback-return": ["error", { allowImplicit: true }],
105
- "arrow-body-style": "off",
106
- "arrow-style/arrow-return-style": ["error", {
107
- jsxAlwaysUseExplicitReturn: true,
108
- namedExportsAlwaysUseExplicitReturn: true,
109
- objectReturnStyle: "off",
110
- usePrettier: false
111
- }],
112
- "arrow-style/no-export-default-arrow": "error",
104
+ "arrow-body-style": ["error", "always"],
113
105
  "class-methods-use-this": "error",
114
106
  "consistent-return": "error",
115
107
  "curly": ["error", "all"],
@@ -179,10 +171,7 @@ const javascriptConfig = () => {
179
171
  return [{
180
172
  linterOptions: { reportUnusedDisableDirectives: true },
181
173
  name: "jimmy.codes/javascript",
182
- plugins: {
183
- "arrow-style": arrowReturnStylePlugin,
184
- "de-morgan": deMorganPlugin
185
- },
174
+ plugins: { "de-morgan": deMorganPlugin },
186
175
  rules: javascriptRules
187
176
  }, {
188
177
  files: GLOB_TESTS,
@@ -460,7 +449,7 @@ const unicornRules = {
460
449
  "unicorn/filename-case": "off",
461
450
  "unicorn/import-style": "off",
462
451
  "unicorn/no-abusive-eslint-disable": "off",
463
- "unicorn/no-anonymous-default-export": "off",
452
+ "unicorn/no-anonymous-default-export": "error",
464
453
  "unicorn/no-array-callback-reference": "off",
465
454
  "unicorn/no-array-reduce": "off",
466
455
  "unicorn/no-null": "off",
@@ -557,15 +546,15 @@ const defineConfig = async ({ astro = false, autoDetect = true, gitignore = fals
557
546
  ];
558
547
  const featureConfigs = await Promise.all([
559
548
  isTypescriptEnabled && unwrap(import("./typescript-BDNbtOD5.mjs"), typescript),
560
- isReactEnabled && unwrap(import("./react-CWFVE51B.mjs"), react),
549
+ isReactEnabled && unwrap(import("./react-qDMgdbVJ.mjs"), react),
561
550
  isTanstackQueryEnabled && unwrap(import("./tanstack-query-ntNKBb-Z.mjs"), tanstackQuery),
562
- isAstroEnabled && unwrap(import("./astro-B0kgVZlh.mjs"), astro),
551
+ isAstroEnabled && unwrap(import("./astro-BMlbg_8j.mjs"), astro),
563
552
  isJestEnabled && unwrap(import("./jest-W70UkOeC.mjs"), jest),
564
553
  isVitestEnabled && unwrap(import("./vitest-BXTl-VRj.mjs"), vitest),
565
- isTestingLibraryEnabled && unwrap(import("./testing-library-B1I63Phd.mjs"), testingLibrary),
554
+ isTestingLibraryEnabled && unwrap(import("./testing-library-Dqon1Cou.mjs"), testingLibrary),
566
555
  isPlaywrightEnabled && unwrap(import("./playwright-hse_Mk2B.mjs"), playwright),
567
556
  isStorybookEnabled && unwrap(import("./storybook-Cmw5qksj.mjs"), storybook),
568
- isNextjsEnabled && unwrap(import("./nextjs-Dq5nQ9ib.mjs"), nextjs)
557
+ isNextjsEnabled && unwrap(import("./nextjs-D_XQzWJz.mjs"), nextjs)
569
558
  ]);
570
559
  return [
571
560
  ...gitignore ? [gitignoreConfig({ strict: false })] : [],
@@ -12,11 +12,10 @@ const nextjsRules = async (options) => {
12
12
  //#region src/configs/nextjs.ts
13
13
  async function nextjsConfig(options) {
14
14
  const extractedOptions = extractOptions(options);
15
- const nextjsPlugin = await unwrapDefault(import("@next/eslint-plugin-next"));
16
15
  return [{
17
16
  files: GLOB_NEXTJS,
18
17
  name: "jimmy.codes/nextjs",
19
- plugins: { "@next/next": nextjsPlugin },
18
+ plugins: { "@next/next": await unwrapDefault(import("@next/eslint-plugin-next")) },
20
19
  rules: await nextjsRules(extractedOptions)
21
20
  }, {
22
21
  files: GLOB_NEXTJS_ENV,
@@ -1,5 +1,5 @@
1
1
  import { GLOB_JSX, GLOB_TSX } from "./globs.mjs";
2
- import { l as hasTypescript, r as hasNext, u as hasVite } from "./has-dependency-BB12gGNt.mjs";
2
+ import { l as hasTypescript, r as hasNext, u as hasVite } from "./has-dependency-B7hGqVJZ.mjs";
3
3
  import { n as extractOptions, t as unwrapDefault } from "./interop-default-BDN5nH8B.mjs";
4
4
  import { t as upwarn } from "./upwarn-Bq0SLcj_.mjs";
5
5
  import globals from "globals";
@@ -1,11 +1,29 @@
1
1
  import { GLOB_E2E, GLOB_TESTS } from "./globs.mjs";
2
2
  import { n as extractOptions, t as unwrapDefault } from "./interop-default-BDN5nH8B.mjs";
3
+ //#region src/utils/rebrand.ts
4
+ /**
5
+ * Renames the prefix of ESLint rule keys.
6
+ *
7
+ * @param rules - A partial set of ESLint rules.
8
+ *
9
+ * @param from - The current rule prefix to replace (without trailing slash).
10
+ *
11
+ * @param to - The new rule prefix (without trailing slash).
12
+ *
13
+ * @returns A new rules object with matching prefixes renamed.
14
+ */
15
+ const rebrand = (rules = {}, from, to) => {
16
+ return Object.fromEntries(Object.entries(rules).map(([rule, option]) => {
17
+ return [rule.startsWith(`${from}/`) ? rule.replace(`${from}/`, `${to}/`) : rule, option];
18
+ }));
19
+ };
20
+ //#endregion
3
21
  //#region src/rules/testing-library.ts
4
22
  const testingLibraryRules = async (options) => {
5
- const [jestDom, testingLibrary] = await Promise.all([import("eslint-plugin-jest-dom"), unwrapDefault(import("eslint-plugin-testing-library"))]);
23
+ const [jestDom, testingLibrary] = await Promise.all([import("eslint-plugin-jest-dom-ya"), unwrapDefault(import("eslint-plugin-testing-library"))]);
6
24
  return {
7
25
  ...testingLibrary.configs["flat/react"].rules,
8
- ...jestDom.configs["flat/recommended"].rules,
26
+ ...rebrand(jestDom.configs["flat/recommended"].rules, "jest-dom-ya", "jest-dom"),
9
27
  "testing-library/no-test-id-queries": "error",
10
28
  ...options?.overrides
11
29
  };
@@ -14,7 +32,7 @@ const testingLibraryRules = async (options) => {
14
32
  //#region src/configs/testing-library.ts
15
33
  async function testingLibraryConfig(options) {
16
34
  const extractedOptions = extractOptions(options);
17
- const [jestDom, testingLibrary] = await Promise.all([import("eslint-plugin-jest-dom"), unwrapDefault(import("eslint-plugin-testing-library"))]);
35
+ const [jestDom, testingLibrary] = await Promise.all([import("eslint-plugin-jest-dom-ya"), unwrapDefault(import("eslint-plugin-testing-library"))]);
18
36
  return [{
19
37
  files: GLOB_TESTS,
20
38
  ignores: GLOB_E2E,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jimmy.codes/eslint-config",
3
- "version": "7.6.1",
3
+ "version": "7.8.0",
4
4
  "description": "A simple, modern ESLint config that covers most use cases.",
5
5
  "keywords": [
6
6
  "eslint",
@@ -41,32 +41,31 @@
41
41
  "dependencies": {
42
42
  "@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
43
43
  "@eslint/js": "^9.39.4",
44
- "@next/eslint-plugin-next": "^16.2.2",
44
+ "@next/eslint-plugin-next": "^16.2.4",
45
45
  "@stylistic/eslint-plugin": "^5.10.0",
46
- "@tanstack/eslint-plugin-query": "^5.96.1",
46
+ "@tanstack/eslint-plugin-query": "^5.100.7",
47
47
  "@types/eslint": "9.6.1",
48
- "@typescript-eslint/parser": "^8.58.0",
49
- "@typescript-eslint/utils": "^8.58.0",
50
- "@vitest/eslint-plugin": "^1.6.14",
48
+ "@typescript-eslint/parser": "^8.59.1",
49
+ "@typescript-eslint/utils": "^8.59.1",
50
+ "@vitest/eslint-plugin": "^1.6.16",
51
51
  "astro-eslint-parser": "^1.4.0",
52
52
  "eslint-config-flat-gitignore": "^2.3.0",
53
53
  "eslint-config-prettier": "^10.1.8",
54
54
  "eslint-import-resolver-typescript": "^4.4.4",
55
- "eslint-plugin-arrow-return-style-x": "^1.2.6",
56
- "eslint-plugin-astro": "^1.6.0",
55
+ "eslint-plugin-astro": "^1.7.0",
57
56
  "eslint-plugin-de-morgan": "^2.1.1",
58
- "eslint-plugin-erasable-syntax-only": "0.4.0",
57
+ "eslint-plugin-erasable-syntax-only": "0.4.1",
59
58
  "eslint-plugin-import-x": "^4.16.2",
60
- "eslint-plugin-jest": "^29.15.1",
61
- "eslint-plugin-jest-dom": "^5.5.0",
59
+ "eslint-plugin-jest": "^29.15.2",
60
+ "eslint-plugin-jest-dom-ya": "^1.0.0",
62
61
  "eslint-plugin-jsdoc": "^62.9.0",
63
62
  "eslint-plugin-jsx-a11y": "^6.10.2",
64
63
  "eslint-plugin-n": "^17.24.0",
65
- "eslint-plugin-perfectionist": "^5.7.0",
66
- "eslint-plugin-playwright": "^2.10.1",
64
+ "eslint-plugin-perfectionist": "^5.9.0",
65
+ "eslint-plugin-playwright": "^2.10.2",
67
66
  "eslint-plugin-react-compiler": "19.1.0-rc.2",
68
67
  "eslint-plugin-react-dom": "^2.13.0",
69
- "eslint-plugin-react-hooks": "^7.0.1",
68
+ "eslint-plugin-react-hooks": "^7.1.1",
70
69
  "eslint-plugin-react-hooks-extra": "^2.13.0",
71
70
  "eslint-plugin-react-naming-convention": "^2.13.0",
72
71
  "eslint-plugin-react-refresh": "0.5.2",
@@ -77,9 +76,9 @@
77
76
  "eslint-plugin-storybook": "0.12.0",
78
77
  "eslint-plugin-testing-library": "^7.16.2",
79
78
  "eslint-plugin-unicorn": "^64.0.0",
80
- "globals": "^17.4.0",
79
+ "globals": "^17.6.0",
81
80
  "local-pkg": "^1.1.2",
82
- "typescript-eslint": "^8.58.0"
81
+ "typescript-eslint": "^8.59.1"
83
82
  },
84
83
  "peerDependencies": {
85
84
  "eslint": ">=9.38.0"