@jimmy.codes/eslint-config 7.6.0 → 7.7.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.
@@ -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",
package/dist/globs.d.mts CHANGED
@@ -10,6 +10,7 @@ declare const GLOB_TYPE_TESTS: readonly ["**/*.test-d.?([cm])ts", "**/*.test-d.?
10
10
  declare const GLOB_PLAYWRIGHT: readonly ["**/e2e/**/*.spec.?([cm])[jt]s?(x)", "**/e2e/**/*.test.?([cm])[jt]s?(x)"];
11
11
  declare const GLOB_E2E: readonly ["**/e2e/**/*.spec.?([cm])[jt]s?(x)", "**/e2e/**/*.test.?([cm])[jt]s?(x)", "**/cypress/**/*.spec.?([cm])[jt]s?(x)", "**/cypress/**/*.test.?([cm])[jt]s?(x)"];
12
12
  declare const GLOB_NEXTJS: readonly ["**/*.?([cm])js", "**/*.?([cm])jsx", "**/*.?([cm])ts", "**/*.?([cm])tsx"];
13
+ declare const GLOB_NEXTJS_ENV: readonly ["**/next-env.d.ts"];
13
14
  declare const GLOB_IGNORES: readonly ["**/node_modules", "**/dist", "**/package-lock.json", "**/yarn.lock", "**/pnpm-lock.yaml", "**/bun.lockb", "**/output", "**/coverage", "**/temp", "**/.temp", "**/tmp", "**/.tmp", "**/.history", "**/.vitepress/cache", "**/.nuxt", "**/.next", "**/.vercel", "**/.changeset", "**/.idea", "**/.cache", "**/.output", "**/.vite-inspect", "**/.yarn", "**/storybook-static", "**/.eslint-config-inspector", "**/playwright-report", "**/.astro", "**/.vinxi", "**/app.config.timestamp_*.js", "**/.tanstack", "**/.nitro", "**/CHANGELOG*.md", "**/*.min.*", "**/LICENSE*", "**/__snapshots__", "**/auto-import?(s).d.ts", "**/components.d.ts", "**/vite.config.ts.*.mjs", "**/*.gen.*", "!.storybook"];
14
15
  //#endregion
15
- export { GLOB_ASTRO, GLOB_CJS, GLOB_E2E, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_NEXTJS, GLOB_PLAYWRIGHT, GLOB_TESTS, GLOB_TS, GLOB_TSX, GLOB_TYPE_TESTS };
16
+ export { GLOB_ASTRO, GLOB_CJS, GLOB_E2E, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_NEXTJS, GLOB_NEXTJS_ENV, GLOB_PLAYWRIGHT, GLOB_TESTS, GLOB_TS, GLOB_TSX, GLOB_TYPE_TESTS };
package/dist/globs.mjs CHANGED
@@ -33,6 +33,7 @@ const GLOB_NEXTJS = [
33
33
  GLOB_TS,
34
34
  GLOB_TSX
35
35
  ];
36
+ const GLOB_NEXTJS_ENV = ["**/next-env.d.ts"];
36
37
  const GLOB_IGNORES = [
37
38
  "**/node_modules",
38
39
  "**/dist",
@@ -76,4 +77,4 @@ const GLOB_IGNORES = [
76
77
  "!.storybook"
77
78
  ];
78
79
  //#endregion
79
- export { GLOB_ASTRO, GLOB_CJS, GLOB_E2E, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_NEXTJS, GLOB_PLAYWRIGHT, GLOB_TESTS, GLOB_TS, GLOB_TSX, GLOB_TYPE_TESTS };
80
+ export { GLOB_ASTRO, GLOB_CJS, GLOB_E2E, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_NEXTJS, GLOB_NEXTJS_ENV, GLOB_PLAYWRIGHT, GLOB_TESTS, GLOB_TS, GLOB_TSX, GLOB_TYPE_TESTS };
package/dist/index.d.mts CHANGED
@@ -1627,6 +1627,11 @@ interface RuleOptions {
1627
1627
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-exports-from-components/
1628
1628
  */
1629
1629
  'astro/no-exports-from-components'?: Linter.RuleEntry<[]>;
1630
+ /**
1631
+ * disallow `prerender` export outside of pages/ directory
1632
+ * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-prerender-export-outside-pages/
1633
+ */
1634
+ 'astro/no-prerender-export-outside-pages'?: Linter.RuleEntry<[]>;
1630
1635
  /**
1631
1636
  * disallow use of `set:html` to prevent XSS attack
1632
1637
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/no-set-html-directive/
@@ -2244,357 +2249,357 @@ interface RuleOptions {
2244
2249
  'jest-dom/prefer-to-have-value'?: Linter.RuleEntry<[]>;
2245
2250
  /**
2246
2251
  * 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
2252
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/consistent-test-it.md
2248
2253
  */
2249
2254
  'jest/consistent-test-it'?: Linter.RuleEntry<JestConsistentTestIt>;
2250
2255
  /**
2251
2256
  * 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
2257
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/expect-expect.md
2253
2258
  */
2254
2259
  'jest/expect-expect'?: Linter.RuleEntry<JestExpectExpect>;
2255
2260
  /**
2256
2261
  * 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
2262
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/max-expects.md
2258
2263
  */
2259
2264
  'jest/max-expects'?: Linter.RuleEntry<JestMaxExpects>;
2260
2265
  /**
2261
2266
  * 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
2267
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/max-nested-describe.md
2263
2268
  */
2264
2269
  'jest/max-nested-describe'?: Linter.RuleEntry<JestMaxNestedDescribe>;
2265
2270
  /**
2266
2271
  * Disallow alias methods
2267
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-alias-methods.md
2272
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-alias-methods.md
2268
2273
  */
2269
2274
  'jest/no-alias-methods'?: Linter.RuleEntry<[]>;
2270
2275
  /**
2271
2276
  * 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
2277
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-commented-out-tests.md
2273
2278
  */
2274
2279
  'jest/no-commented-out-tests'?: Linter.RuleEntry<[]>;
2275
2280
  /**
2276
2281
  * Disallow calling `expect` conditionally
2277
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-conditional-expect.md
2282
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-conditional-expect.md
2278
2283
  */
2279
2284
  'jest/no-conditional-expect'?: Linter.RuleEntry<[]>;
2280
2285
  /**
2281
2286
  * 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
2287
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-conditional-in-test.md
2283
2288
  */
2284
2289
  'jest/no-conditional-in-test'?: Linter.RuleEntry<JestNoConditionalInTest>;
2285
2290
  /**
2286
2291
  * 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
2292
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-confusing-set-timeout.md
2288
2293
  */
2289
2294
  'jest/no-confusing-set-timeout'?: Linter.RuleEntry<[]>;
2290
2295
  /**
2291
2296
  * 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
2297
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-deprecated-functions.md
2293
2298
  */
2294
2299
  'jest/no-deprecated-functions'?: Linter.RuleEntry<[]>;
2295
2300
  /**
2296
2301
  * Disallow disabled tests
2297
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-disabled-tests.md
2302
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-disabled-tests.md
2298
2303
  */
2299
2304
  'jest/no-disabled-tests'?: Linter.RuleEntry<[]>;
2300
2305
  /**
2301
2306
  * 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
2307
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-done-callback.md
2303
2308
  */
2304
2309
  'jest/no-done-callback'?: Linter.RuleEntry<[]>;
2305
2310
  /**
2306
2311
  * 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
2312
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-duplicate-hooks.md
2308
2313
  */
2309
2314
  'jest/no-duplicate-hooks'?: Linter.RuleEntry<[]>;
2310
2315
  /**
2311
2316
  * 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
2317
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-error-equal.md
2313
2318
  */
2314
2319
  'jest/no-error-equal'?: Linter.RuleEntry<[]>;
2315
2320
  /**
2316
2321
  * 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
2322
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-export.md
2318
2323
  */
2319
2324
  'jest/no-export'?: Linter.RuleEntry<[]>;
2320
2325
  /**
2321
2326
  * Disallow focused tests
2322
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-focused-tests.md
2327
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-focused-tests.md
2323
2328
  */
2324
2329
  'jest/no-focused-tests'?: Linter.RuleEntry<[]>;
2325
2330
  /**
2326
2331
  * Disallow setup and teardown hooks
2327
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-hooks.md
2332
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-hooks.md
2328
2333
  */
2329
2334
  'jest/no-hooks'?: Linter.RuleEntry<JestNoHooks>;
2330
2335
  /**
2331
2336
  * Disallow identical titles
2332
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-identical-title.md
2337
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-identical-title.md
2333
2338
  */
2334
2339
  'jest/no-identical-title'?: Linter.RuleEntry<[]>;
2335
2340
  /**
2336
2341
  * 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
2342
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-interpolation-in-snapshots.md
2338
2343
  */
2339
2344
  'jest/no-interpolation-in-snapshots'?: Linter.RuleEntry<[]>;
2340
2345
  /**
2341
2346
  * Disallow Jasmine globals
2342
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-jasmine-globals.md
2347
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-jasmine-globals.md
2343
2348
  */
2344
2349
  'jest/no-jasmine-globals'?: Linter.RuleEntry<[]>;
2345
2350
  /**
2346
2351
  * Disallow large snapshots
2347
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-large-snapshots.md
2352
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-large-snapshots.md
2348
2353
  */
2349
2354
  'jest/no-large-snapshots'?: Linter.RuleEntry<JestNoLargeSnapshots>;
2350
2355
  /**
2351
2356
  * 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
2357
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-mocks-import.md
2353
2358
  */
2354
2359
  'jest/no-mocks-import'?: Linter.RuleEntry<[]>;
2355
2360
  /**
2356
2361
  * 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
2362
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-restricted-jest-methods.md
2358
2363
  */
2359
2364
  'jest/no-restricted-jest-methods'?: Linter.RuleEntry<JestNoRestrictedJestMethods>;
2360
2365
  /**
2361
2366
  * Disallow specific matchers & modifiers
2362
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/no-restricted-matchers.md
2367
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-restricted-matchers.md
2363
2368
  */
2364
2369
  'jest/no-restricted-matchers'?: Linter.RuleEntry<JestNoRestrictedMatchers>;
2365
2370
  /**
2366
2371
  * 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
2372
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-standalone-expect.md
2368
2373
  */
2369
2374
  'jest/no-standalone-expect'?: Linter.RuleEntry<JestNoStandaloneExpect>;
2370
2375
  /**
2371
2376
  * 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
2377
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-test-prefixes.md
2373
2378
  */
2374
2379
  'jest/no-test-prefixes'?: Linter.RuleEntry<[]>;
2375
2380
  /**
2376
2381
  * 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
2382
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-test-return-statement.md
2378
2383
  */
2379
2384
  'jest/no-test-return-statement'?: Linter.RuleEntry<[]>;
2380
2385
  /**
2381
2386
  * 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
2387
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-unnecessary-assertion.md
2383
2388
  */
2384
2389
  'jest/no-unnecessary-assertion'?: Linter.RuleEntry<[]>;
2385
2390
  /**
2386
2391
  * 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
2392
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-unneeded-async-expect-function.md
2388
2393
  */
2389
2394
  'jest/no-unneeded-async-expect-function'?: Linter.RuleEntry<[]>;
2390
2395
  /**
2391
2396
  * 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
2397
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/no-untyped-mock-factory.md
2393
2398
  */
2394
2399
  'jest/no-untyped-mock-factory'?: Linter.RuleEntry<[]>;
2395
2400
  /**
2396
2401
  * 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
2402
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-after-all-blocks.md
2398
2403
  */
2399
2404
  'jest/padding-around-after-all-blocks'?: Linter.RuleEntry<[]>;
2400
2405
  /**
2401
2406
  * 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
2407
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-after-each-blocks.md
2403
2408
  */
2404
2409
  'jest/padding-around-after-each-blocks'?: Linter.RuleEntry<[]>;
2405
2410
  /**
2406
2411
  * 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
2412
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-all.md
2408
2413
  */
2409
2414
  'jest/padding-around-all'?: Linter.RuleEntry<[]>;
2410
2415
  /**
2411
2416
  * 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
2417
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-before-all-blocks.md
2413
2418
  */
2414
2419
  'jest/padding-around-before-all-blocks'?: Linter.RuleEntry<[]>;
2415
2420
  /**
2416
2421
  * 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
2422
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-before-each-blocks.md
2418
2423
  */
2419
2424
  'jest/padding-around-before-each-blocks'?: Linter.RuleEntry<[]>;
2420
2425
  /**
2421
2426
  * 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
2427
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-describe-blocks.md
2423
2428
  */
2424
2429
  'jest/padding-around-describe-blocks'?: Linter.RuleEntry<[]>;
2425
2430
  /**
2426
2431
  * 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
2432
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-expect-groups.md
2428
2433
  */
2429
2434
  'jest/padding-around-expect-groups'?: Linter.RuleEntry<[]>;
2430
2435
  /**
2431
2436
  * 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
2437
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/padding-around-test-blocks.md
2433
2438
  */
2434
2439
  'jest/padding-around-test-blocks'?: Linter.RuleEntry<[]>;
2435
2440
  /**
2436
2441
  * Suggest using `toHaveBeenCalledWith()`
2437
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-called-with.md
2442
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-called-with.md
2438
2443
  */
2439
2444
  'jest/prefer-called-with'?: Linter.RuleEntry<[]>;
2440
2445
  /**
2441
2446
  * 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
2447
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-comparison-matcher.md
2443
2448
  */
2444
2449
  'jest/prefer-comparison-matcher'?: Linter.RuleEntry<[]>;
2445
2450
  /**
2446
2451
  * 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
2452
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-each.md
2448
2453
  */
2449
2454
  'jest/prefer-each'?: Linter.RuleEntry<[]>;
2450
2455
  /**
2451
2456
  * 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
2457
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-ending-with-an-expect.md
2453
2458
  */
2454
2459
  'jest/prefer-ending-with-an-expect'?: Linter.RuleEntry<JestPreferEndingWithAnExpect>;
2455
2460
  /**
2456
2461
  * 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
2462
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-equality-matcher.md
2458
2463
  */
2459
2464
  'jest/prefer-equality-matcher'?: Linter.RuleEntry<[]>;
2460
2465
  /**
2461
2466
  * 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
2467
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-expect-assertions.md
2463
2468
  */
2464
2469
  'jest/prefer-expect-assertions'?: Linter.RuleEntry<JestPreferExpectAssertions>;
2465
2470
  /**
2466
2471
  * 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
2472
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-expect-resolves.md
2468
2473
  */
2469
2474
  'jest/prefer-expect-resolves'?: Linter.RuleEntry<[]>;
2470
2475
  /**
2471
2476
  * 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
2477
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-hooks-in-order.md
2473
2478
  */
2474
2479
  'jest/prefer-hooks-in-order'?: Linter.RuleEntry<[]>;
2475
2480
  /**
2476
2481
  * 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
2482
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-hooks-on-top.md
2478
2483
  */
2479
2484
  'jest/prefer-hooks-on-top'?: Linter.RuleEntry<[]>;
2480
2485
  /**
2481
2486
  * 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
2487
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-importing-jest-globals.md
2483
2488
  */
2484
2489
  'jest/prefer-importing-jest-globals'?: Linter.RuleEntry<JestPreferImportingJestGlobals>;
2485
2490
  /**
2486
2491
  * 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
2492
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-jest-mocked.md
2488
2493
  */
2489
2494
  'jest/prefer-jest-mocked'?: Linter.RuleEntry<[]>;
2490
2495
  /**
2491
2496
  * Enforce lowercase test names
2492
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-lowercase-title.md
2497
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-lowercase-title.md
2493
2498
  */
2494
2499
  'jest/prefer-lowercase-title'?: Linter.RuleEntry<JestPreferLowercaseTitle>;
2495
2500
  /**
2496
2501
  * 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
2502
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-mock-promise-shorthand.md
2498
2503
  */
2499
2504
  'jest/prefer-mock-promise-shorthand'?: Linter.RuleEntry<[]>;
2500
2505
  /**
2501
2506
  * 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
2507
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-mock-return-shorthand.md
2503
2508
  */
2504
2509
  'jest/prefer-mock-return-shorthand'?: Linter.RuleEntry<[]>;
2505
2510
  /**
2506
2511
  * 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
2512
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-snapshot-hint.md
2508
2513
  */
2509
2514
  'jest/prefer-snapshot-hint'?: Linter.RuleEntry<JestPreferSnapshotHint>;
2510
2515
  /**
2511
2516
  * Suggest using `jest.spyOn()`
2512
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-spy-on.md
2517
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-spy-on.md
2513
2518
  */
2514
2519
  'jest/prefer-spy-on'?: Linter.RuleEntry<[]>;
2515
2520
  /**
2516
2521
  * Suggest using `toStrictEqual()`
2517
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-strict-equal.md
2522
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-strict-equal.md
2518
2523
  */
2519
2524
  'jest/prefer-strict-equal'?: Linter.RuleEntry<[]>;
2520
2525
  /**
2521
2526
  * 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
2527
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-to-be.md
2523
2528
  */
2524
2529
  'jest/prefer-to-be'?: Linter.RuleEntry<[]>;
2525
2530
  /**
2526
2531
  * Suggest using `toContain()`
2527
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-to-contain.md
2532
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-to-contain.md
2528
2533
  */
2529
2534
  'jest/prefer-to-contain'?: Linter.RuleEntry<[]>;
2530
2535
  /**
2531
2536
  * 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
2537
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-to-have-been-called.md
2533
2538
  */
2534
2539
  'jest/prefer-to-have-been-called'?: Linter.RuleEntry<[]>;
2535
2540
  /**
2536
2541
  * 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
2542
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-to-have-been-called-times.md
2538
2543
  */
2539
2544
  'jest/prefer-to-have-been-called-times'?: Linter.RuleEntry<[]>;
2540
2545
  /**
2541
2546
  * Suggest using `toHaveLength()`
2542
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-to-have-length.md
2547
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-to-have-length.md
2543
2548
  */
2544
2549
  'jest/prefer-to-have-length'?: Linter.RuleEntry<[]>;
2545
2550
  /**
2546
2551
  * Suggest using `test.todo`
2547
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/prefer-todo.md
2552
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/prefer-todo.md
2548
2553
  */
2549
2554
  'jest/prefer-todo'?: Linter.RuleEntry<[]>;
2550
2555
  /**
2551
2556
  * 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
2557
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/require-hook.md
2553
2558
  */
2554
2559
  'jest/require-hook'?: Linter.RuleEntry<JestRequireHook>;
2555
2560
  /**
2556
2561
  * 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
2562
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/require-to-throw-message.md
2558
2563
  */
2559
2564
  'jest/require-to-throw-message'?: Linter.RuleEntry<[]>;
2560
2565
  /**
2561
2566
  * 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
2567
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/require-top-level-describe.md
2563
2568
  */
2564
2569
  'jest/require-top-level-describe'?: Linter.RuleEntry<JestRequireTopLevelDescribe>;
2565
2570
  /**
2566
2571
  * 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
2572
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/unbound-method.md
2568
2573
  */
2569
2574
  'jest/unbound-method'?: Linter.RuleEntry<JestUnboundMethod>;
2570
2575
  /**
2571
2576
  * Enforce valid `describe()` callback
2572
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/valid-describe-callback.md
2577
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/valid-describe-callback.md
2573
2578
  */
2574
2579
  'jest/valid-describe-callback'?: Linter.RuleEntry<[]>;
2575
2580
  /**
2576
2581
  * Enforce valid `expect()` usage
2577
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/valid-expect.md
2582
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/valid-expect.md
2578
2583
  */
2579
2584
  'jest/valid-expect'?: Linter.RuleEntry<JestValidExpect>;
2580
2585
  /**
2581
2586
  * 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
2587
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/valid-expect-in-promise.md
2583
2588
  */
2584
2589
  'jest/valid-expect-in-promise'?: Linter.RuleEntry<[]>;
2585
2590
  /**
2586
2591
  * 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
2592
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/valid-expect-with-promise.md
2588
2593
  */
2589
2594
  'jest/valid-expect-with-promise'?: Linter.RuleEntry<[]>;
2590
2595
  /**
2591
2596
  * 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
2597
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/valid-mock-module-path.md
2593
2598
  */
2594
2599
  'jest/valid-mock-module-path'?: Linter.RuleEntry<JestValidMockModulePath>;
2595
2600
  /**
2596
2601
  * Enforce valid titles
2597
- * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.1/docs/rules/valid-title.md
2602
+ * @see https://github.com/jest-community/eslint-plugin-jest/blob/v29.15.2/docs/rules/valid-title.md
2598
2603
  */
2599
2604
  'jest/valid-title'?: Linter.RuleEntry<JestValidTitle>;
2600
2605
  /**
@@ -4402,6 +4407,11 @@ interface RuleOptions {
4402
4407
  * @see https://perfectionist.dev/rules/sort-array-includes
4403
4408
  */
4404
4409
  'perfectionist/sort-array-includes'?: Linter.RuleEntry<PerfectionistSortArrayIncludes>;
4410
+ /**
4411
+ * Enforce sorted arrays.
4412
+ * @see https://perfectionist.dev/rules/sort-arrays
4413
+ */
4414
+ 'perfectionist/sort-arrays'?: Linter.RuleEntry<PerfectionistSortArrays>;
4405
4415
  /**
4406
4416
  * Enforce sorted classes.
4407
4417
  * @see https://perfectionist.dev/rules/sort-classes
@@ -4989,24 +4999,24 @@ interface RuleOptions {
4989
4999
  * @see https://eslint-react.xyz/docs/rules/hooks-extra-no-direct-set-state-in-use-effect
4990
5000
  */
4991
5001
  '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
5002
  /**
4997
5003
  * Validates against calling capitalized functions/methods instead of using JSX
5004
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/capitalized-calls
4998
5005
  */
4999
5006
  'react-hooks/capitalized-calls'?: Linter.RuleEntry<ReactHooksCapitalizedCalls>;
5000
5007
  /**
5001
- * Validates against higher order functions defining nested components or hooks. Components and hooks should be defined at the module level
5008
+ * Deprecated: this rule has been removed in 7.1.0.
5009
+ * @deprecated
5002
5010
  */
5003
- 'react-hooks/component-hook-factories'?: Linter.RuleEntry<ReactHooksComponentHookFactories>;
5011
+ 'react-hooks/component-hook-factories'?: Linter.RuleEntry<[]>;
5004
5012
  /**
5005
5013
  * Validates the compiler configuration options
5014
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/config
5006
5015
  */
5007
5016
  'react-hooks/config'?: Linter.RuleEntry<ReactHooksConfig>;
5008
5017
  /**
5009
5018
  * Validates usage of error boundaries instead of try/catch for errors in child components
5019
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/error-boundaries
5010
5020
  */
5011
5021
  'react-hooks/error-boundaries'?: Linter.RuleEntry<ReactHooksErrorBoundaries>;
5012
5022
  /**
@@ -5015,59 +5025,78 @@ interface RuleOptions {
5015
5025
  */
5016
5026
  'react-hooks/exhaustive-deps'?: Linter.RuleEntry<ReactHooksExhaustiveDeps>;
5017
5027
  /**
5018
- * Validates usage of fbt
5028
+ * Validates that effect dependencies are exhaustive and without extraneous values
5029
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-effect-dependencies
5019
5030
  */
5020
- 'react-hooks/fbt'?: Linter.RuleEntry<ReactHooksFbt>;
5031
+ 'react-hooks/exhaustive-effect-dependencies'?: Linter.RuleEntry<ReactHooksExhaustiveEffectDependencies>;
5021
5032
  /**
5022
- * Validates usage of `fire`
5033
+ * Validates usage of fbt
5034
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/fbt
5023
5035
  */
5024
- 'react-hooks/fire'?: Linter.RuleEntry<ReactHooksFire>;
5036
+ 'react-hooks/fbt'?: Linter.RuleEntry<ReactHooksFbt>;
5025
5037
  /**
5026
5038
  * Validates configuration of [gating mode](https://react.dev/reference/react-compiler/gating)
5039
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/gating
5027
5040
  */
5028
5041
  'react-hooks/gating'?: Linter.RuleEntry<ReactHooksGating>;
5029
5042
  /**
5030
5043
  * 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)
5044
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/globals
5031
5045
  */
5032
5046
  'react-hooks/globals'?: Linter.RuleEntry<ReactHooksGlobals>;
5033
5047
  /**
5034
5048
  * Validates the rules of hooks
5049
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/hooks
5035
5050
  */
5036
5051
  'react-hooks/hooks'?: Linter.RuleEntry<ReactHooksHooks>;
5037
5052
  /**
5038
5053
  * 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)
5054
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
5039
5055
  */
5040
5056
  'react-hooks/immutability'?: Linter.RuleEntry<ReactHooksImmutability>;
5041
5057
  /**
5042
5058
  * Validates against usage of libraries which are incompatible with memoization (manual or automatic)
5059
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/incompatible-library
5043
5060
  */
5044
5061
  'react-hooks/incompatible-library'?: Linter.RuleEntry<ReactHooksIncompatibleLibrary>;
5045
5062
  /**
5046
5063
  * Internal invariants
5064
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/invariant
5047
5065
  */
5048
5066
  'react-hooks/invariant'?: Linter.RuleEntry<ReactHooksInvariant>;
5067
+ /**
5068
+ * Validates that useMemo() and useCallback() specify comprehensive dependencies without extraneous values. See [`useMemo()` docs](https://react.dev/reference/react/useMemo) for more information.
5069
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/memo-dependencies
5070
+ */
5071
+ 'react-hooks/memo-dependencies'?: Linter.RuleEntry<ReactHooksMemoDependencies>;
5049
5072
  /**
5050
5073
  * Validates that effect dependencies are memoized
5074
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/memoized-effect-dependencies
5051
5075
  */
5052
5076
  'react-hooks/memoized-effect-dependencies'?: Linter.RuleEntry<ReactHooksMemoizedEffectDependencies>;
5053
5077
  /**
5054
5078
  * Validates against deriving values from state in an effect
5079
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/no-deriving-state-in-effects
5055
5080
  */
5056
5081
  'react-hooks/no-deriving-state-in-effects'?: Linter.RuleEntry<ReactHooksNoDerivingStateInEffects>;
5057
5082
  /**
5058
5083
  * 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)
5084
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/preserve-manual-memoization
5059
5085
  */
5060
5086
  'react-hooks/preserve-manual-memoization'?: Linter.RuleEntry<ReactHooksPreserveManualMemoization>;
5061
5087
  /**
5062
5088
  * 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
5089
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
5063
5090
  */
5064
5091
  'react-hooks/purity'?: Linter.RuleEntry<ReactHooksPurity>;
5065
5092
  /**
5066
5093
  * Validates correct usage of refs, not reading/writing during render. See the "pitfalls" section in [`useRef()` usage](https://react.dev/reference/react/useRef#usage)
5094
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
5067
5095
  */
5068
5096
  'react-hooks/refs'?: Linter.RuleEntry<ReactHooksRefs>;
5069
5097
  /**
5070
5098
  * Validates against suppression of other rules
5099
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/rule-suppression
5071
5100
  */
5072
5101
  'react-hooks/rule-suppression'?: Linter.RuleEntry<ReactHooksRuleSuppression>;
5073
5102
  /**
@@ -5076,35 +5105,43 @@ interface RuleOptions {
5076
5105
  */
5077
5106
  'react-hooks/rules-of-hooks'?: Linter.RuleEntry<ReactHooksRulesOfHooks>;
5078
5107
  /**
5079
- * Validates against calling setState synchronously in an effect, which can lead to re-renders that degrade performance
5108
+ * Validates against calling setState synchronously in an effect. This can indicate non-local derived data, a derived event pattern, or improper external data synchronization.
5109
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
5080
5110
  */
5081
5111
  'react-hooks/set-state-in-effect'?: Linter.RuleEntry<ReactHooksSetStateInEffect>;
5082
5112
  /**
5083
5113
  * Validates against setting state during render, which can trigger additional renders and potential infinite render loops
5114
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-render
5084
5115
  */
5085
5116
  'react-hooks/set-state-in-render'?: Linter.RuleEntry<ReactHooksSetStateInRender>;
5086
5117
  /**
5087
5118
  * Validates that components are static, not recreated every render. Components that are recreated dynamically can reset state and trigger excessive re-rendering
5119
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
5088
5120
  */
5089
5121
  'react-hooks/static-components'?: Linter.RuleEntry<ReactHooksStaticComponents>;
5090
5122
  /**
5091
5123
  * Validates against invalid syntax
5124
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/syntax
5092
5125
  */
5093
5126
  'react-hooks/syntax'?: Linter.RuleEntry<ReactHooksSyntax>;
5094
5127
  /**
5095
5128
  * Unimplemented features
5129
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/todo
5096
5130
  */
5097
5131
  'react-hooks/todo'?: Linter.RuleEntry<ReactHooksTodo>;
5098
5132
  /**
5099
5133
  * Validates against syntax that we do not plan to support in React Compiler
5134
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/unsupported-syntax
5100
5135
  */
5101
5136
  'react-hooks/unsupported-syntax'?: Linter.RuleEntry<ReactHooksUnsupportedSyntax>;
5102
5137
  /**
5103
5138
  * Validates usage of the useMemo() hook against common mistakes. See [`useMemo()` docs](https://react.dev/reference/react/useMemo) for more information.
5139
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/use-memo
5104
5140
  */
5105
5141
  'react-hooks/use-memo'?: Linter.RuleEntry<ReactHooksUseMemo>;
5106
5142
  /**
5107
5143
  * 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.
5144
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/void-use-memo
5108
5145
  */
5109
5146
  'react-hooks/void-use-memo'?: Linter.RuleEntry<ReactHooksVoidUseMemo>;
5110
5147
  /**
@@ -12149,6 +12186,112 @@ type PerfectionistSortArrayIncludes = {
12149
12186
  } | string)));
12150
12187
  });
12151
12188
  partitionByNewLine?: boolean;
12189
+ }[]; // ----- perfectionist/sort-arrays -----
12190
+ type PerfectionistSortArrays = {
12191
+ fallbackSort?: {
12192
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12193
+ order?: ("asc" | "desc");
12194
+ };
12195
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12196
+ specialCharacters?: ("remove" | "trim" | "keep");
12197
+ ignoreCase?: boolean;
12198
+ alphabet?: string;
12199
+ locales?: (string | string[]);
12200
+ order?: ("asc" | "desc");
12201
+ customGroups?: ({
12202
+ fallbackSort?: {
12203
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12204
+ order?: ("asc" | "desc");
12205
+ };
12206
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12207
+ groupName: string;
12208
+ newlinesInside?: ("ignore" | number);
12209
+ order?: ("asc" | "desc");
12210
+ anyOf: [{
12211
+ elementNamePattern?: (({
12212
+ pattern: string;
12213
+ flags?: string;
12214
+ } | string)[] | ({
12215
+ pattern: string;
12216
+ flags?: string;
12217
+ } | string));
12218
+ selector?: "literal";
12219
+ }, ...({
12220
+ elementNamePattern?: (({
12221
+ pattern: string;
12222
+ flags?: string;
12223
+ } | string)[] | ({
12224
+ pattern: string;
12225
+ flags?: string;
12226
+ } | string));
12227
+ selector?: "literal";
12228
+ })[]];
12229
+ } | {
12230
+ fallbackSort?: {
12231
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12232
+ order?: ("asc" | "desc");
12233
+ };
12234
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12235
+ groupName: string;
12236
+ newlinesInside?: ("ignore" | number);
12237
+ order?: ("asc" | "desc");
12238
+ elementNamePattern?: (({
12239
+ pattern: string;
12240
+ flags?: string;
12241
+ } | string)[] | ({
12242
+ pattern: string;
12243
+ flags?: string;
12244
+ } | string));
12245
+ selector?: "literal";
12246
+ })[];
12247
+ newlinesInside?: (("ignore" | number) | "newlinesBetween");
12248
+ groups?: (string | [string, ...(string)[]] | {
12249
+ newlinesBetween: ("ignore" | number);
12250
+ } | {
12251
+ group: (string | [string, ...(string)[]]);
12252
+ fallbackSort?: {
12253
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12254
+ order?: ("asc" | "desc");
12255
+ };
12256
+ commentAbove?: string;
12257
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
12258
+ newlinesInside?: ("ignore" | number);
12259
+ order?: ("asc" | "desc");
12260
+ })[];
12261
+ newlinesBetween?: ("ignore" | number);
12262
+ useConfigurationIf: {
12263
+ allNamesMatchPattern?: (({
12264
+ pattern: string;
12265
+ flags?: string;
12266
+ } | string)[] | ({
12267
+ pattern: string;
12268
+ flags?: string;
12269
+ } | string));
12270
+ matchesAstSelector?: string;
12271
+ };
12272
+ partitionByComment?: (boolean | (({
12273
+ pattern: string;
12274
+ flags?: string;
12275
+ } | string)[] | ({
12276
+ pattern: string;
12277
+ flags?: string;
12278
+ } | string)) | {
12279
+ block?: (boolean | (({
12280
+ pattern: string;
12281
+ flags?: string;
12282
+ } | string)[] | ({
12283
+ pattern: string;
12284
+ flags?: string;
12285
+ } | string)));
12286
+ line?: (boolean | (({
12287
+ pattern: string;
12288
+ flags?: string;
12289
+ } | string)[] | ({
12290
+ pattern: string;
12291
+ flags?: string;
12292
+ } | string)));
12293
+ });
12294
+ partitionByNewLine?: boolean;
12152
12295
  }[]; // ----- perfectionist/sort-classes -----
12153
12296
  type PerfectionistSortClasses = {
12154
12297
  fallbackSort?: {
@@ -12278,6 +12421,7 @@ type PerfectionistSortClasses = {
12278
12421
  matchesAstSelector?: string;
12279
12422
  };
12280
12423
  useExperimentalDependencyDetection?: boolean;
12424
+ newlinesBetweenOverloadSignatures?: ("ignore" | number);
12281
12425
  ignoreCallbackDependenciesPatterns?: (({
12282
12426
  pattern: string;
12283
12427
  flags?: string;
@@ -13641,6 +13785,7 @@ type PerfectionistSortModules = [] | [{
13641
13785
  })[];
13642
13786
  newlinesBetween?: ("ignore" | number);
13643
13787
  useExperimentalDependencyDetection?: boolean;
13788
+ newlinesBetweenOverloadSignatures?: ("ignore" | number);
13644
13789
  partitionByComment?: (boolean | (({
13645
13790
  pattern: string;
13646
13791
  flags?: string;
@@ -14680,15 +14825,9 @@ type ReactCompilerReactCompiler = [] | [{
14680
14825
  type ReactDomNoUnknownProperty = [] | [{
14681
14826
  ignore?: string[];
14682
14827
  requireDataLowercase?: boolean;
14683
- }]; // ----- react-hooks/automatic-effect-dependencies -----
14684
- type ReactHooksAutomaticEffectDependencies = [] | [{
14685
- [k: string]: unknown | undefined;
14686
14828
  }]; // ----- react-hooks/capitalized-calls -----
14687
14829
  type ReactHooksCapitalizedCalls = [] | [{
14688
14830
  [k: string]: unknown | undefined;
14689
- }]; // ----- react-hooks/component-hook-factories -----
14690
- type ReactHooksComponentHookFactories = [] | [{
14691
- [k: string]: unknown | undefined;
14692
14831
  }]; // ----- react-hooks/config -----
14693
14832
  type ReactHooksConfig = [] | [{
14694
14833
  [k: string]: unknown | undefined;
@@ -14701,12 +14840,12 @@ type ReactHooksExhaustiveDeps = [] | [{
14701
14840
  enableDangerousAutofixThisMayCauseInfiniteLoops?: boolean;
14702
14841
  experimental_autoDependenciesHooks?: string[];
14703
14842
  requireExplicitEffectDeps?: boolean;
14843
+ }]; // ----- react-hooks/exhaustive-effect-dependencies -----
14844
+ type ReactHooksExhaustiveEffectDependencies = [] | [{
14845
+ [k: string]: unknown | undefined;
14704
14846
  }]; // ----- react-hooks/fbt -----
14705
14847
  type ReactHooksFbt = [] | [{
14706
14848
  [k: string]: unknown | undefined;
14707
- }]; // ----- react-hooks/fire -----
14708
- type ReactHooksFire = [] | [{
14709
- [k: string]: unknown | undefined;
14710
14849
  }]; // ----- react-hooks/gating -----
14711
14850
  type ReactHooksGating = [] | [{
14712
14851
  [k: string]: unknown | undefined;
@@ -14725,6 +14864,9 @@ type ReactHooksIncompatibleLibrary = [] | [{
14725
14864
  }]; // ----- react-hooks/invariant -----
14726
14865
  type ReactHooksInvariant = [] | [{
14727
14866
  [k: string]: unknown | undefined;
14867
+ }]; // ----- react-hooks/memo-dependencies -----
14868
+ type ReactHooksMemoDependencies = [] | [{
14869
+ [k: string]: unknown | undefined;
14728
14870
  }]; // ----- react-hooks/memoized-effect-dependencies -----
14729
14871
  type ReactHooksMemoizedEffectDependencies = [] | [{
14730
14872
  [k: string]: unknown | undefined;
package/dist/index.mjs CHANGED
@@ -557,15 +557,15 @@ const defineConfig = async ({ astro = false, autoDetect = true, gitignore = fals
557
557
  ];
558
558
  const featureConfigs = await Promise.all([
559
559
  isTypescriptEnabled && unwrap(import("./typescript-BDNbtOD5.mjs"), typescript),
560
- isReactEnabled && unwrap(import("./react-C7mZF3Qf.mjs"), react),
560
+ isReactEnabled && unwrap(import("./react-CWFVE51B.mjs"), react),
561
561
  isTanstackQueryEnabled && unwrap(import("./tanstack-query-ntNKBb-Z.mjs"), tanstackQuery),
562
- isAstroEnabled && unwrap(import("./astro-B0kgVZlh.mjs"), astro),
562
+ isAstroEnabled && unwrap(import("./astro-BMlbg_8j.mjs"), astro),
563
563
  isJestEnabled && unwrap(import("./jest-W70UkOeC.mjs"), jest),
564
564
  isVitestEnabled && unwrap(import("./vitest-BXTl-VRj.mjs"), vitest),
565
- isTestingLibraryEnabled && unwrap(import("./testing-library-B1I63Phd.mjs"), testingLibrary),
565
+ isTestingLibraryEnabled && unwrap(import("./testing-library-Dqon1Cou.mjs"), testingLibrary),
566
566
  isPlaywrightEnabled && unwrap(import("./playwright-hse_Mk2B.mjs"), playwright),
567
567
  isStorybookEnabled && unwrap(import("./storybook-Cmw5qksj.mjs"), storybook),
568
- isNextjsEnabled && unwrap(import("./nextjs-Buyxv06i.mjs"), nextjs)
568
+ isNextjsEnabled && unwrap(import("./nextjs-D_XQzWJz.mjs"), nextjs)
569
569
  ]);
570
570
  return [
571
571
  ...gitignore ? [gitignoreConfig({ strict: false })] : [],
@@ -1,4 +1,4 @@
1
- import { GLOB_NEXTJS } from "./globs.mjs";
1
+ import { GLOB_NEXTJS, GLOB_NEXTJS_ENV } from "./globs.mjs";
2
2
  import { n as extractOptions, t as unwrapDefault } from "./interop-default-BDN5nH8B.mjs";
3
3
  import { t as upwarn } from "./upwarn-Bq0SLcj_.mjs";
4
4
  //#region src/rules/nextjs.ts
@@ -12,12 +12,14 @@ 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)
20
+ }, {
21
+ files: GLOB_NEXTJS_ENV,
22
+ rules: { "import-x/extensions": "off" }
21
23
  }];
22
24
  }
23
25
  //#endregion
@@ -5,6 +5,7 @@ import { t as upwarn } from "./upwarn-Bq0SLcj_.mjs";
5
5
  import globals from "globals";
6
6
  //#region src/rules/react.ts
7
7
  const nextAllowedExportNames = [
8
+ "experimental_ppr",
8
9
  "dynamic",
9
10
  "dynamicParams",
10
11
  "revalidate",
@@ -12,12 +13,16 @@ const nextAllowedExportNames = [
12
13
  "runtime",
13
14
  "preferredRegion",
14
15
  "maxDuration",
15
- "config",
16
- "generateStaticParams",
17
16
  "metadata",
18
17
  "generateMetadata",
19
18
  "viewport",
20
- "generateViewport"
19
+ "generateViewport",
20
+ "generateImageMetadata",
21
+ "generateSitemaps",
22
+ "generateStaticParams",
23
+ "alt",
24
+ "size",
25
+ "contentType"
21
26
  ];
22
27
  const reactRules = async (options) => {
23
28
  const [{ configs: reactConfigs }, { flatConfigs: jsxA11yConfigs }, { configs: reactDomConfigs }, { configs: reactHooksExtraConfigs }, { configs: reactWebApiConfigs }, { configs: reactNamingConventionConfigs }, { configs: reactRscConfigs }] = await Promise.all([
@@ -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.0",
3
+ "version": "7.7.0",
4
4
  "description": "A simple, modern ESLint config that covers most use cases.",
5
5
  "keywords": [
6
6
  "eslint",
@@ -41,32 +41,32 @@
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
55
  "eslint-plugin-arrow-return-style-x": "^1.2.6",
56
- "eslint-plugin-astro": "^1.6.0",
56
+ "eslint-plugin-astro": "^1.7.0",
57
57
  "eslint-plugin-de-morgan": "^2.1.1",
58
- "eslint-plugin-erasable-syntax-only": "0.4.0",
58
+ "eslint-plugin-erasable-syntax-only": "0.4.1",
59
59
  "eslint-plugin-import-x": "^4.16.2",
60
- "eslint-plugin-jest": "^29.15.1",
61
- "eslint-plugin-jest-dom": "^5.5.0",
60
+ "eslint-plugin-jest": "^29.15.2",
61
+ "eslint-plugin-jest-dom-ya": "^1.0.0",
62
62
  "eslint-plugin-jsdoc": "^62.9.0",
63
63
  "eslint-plugin-jsx-a11y": "^6.10.2",
64
64
  "eslint-plugin-n": "^17.24.0",
65
- "eslint-plugin-perfectionist": "^5.7.0",
66
- "eslint-plugin-playwright": "^2.10.1",
65
+ "eslint-plugin-perfectionist": "^5.9.0",
66
+ "eslint-plugin-playwright": "^2.10.2",
67
67
  "eslint-plugin-react-compiler": "19.1.0-rc.2",
68
68
  "eslint-plugin-react-dom": "^2.13.0",
69
- "eslint-plugin-react-hooks": "^7.0.1",
69
+ "eslint-plugin-react-hooks": "^7.1.1",
70
70
  "eslint-plugin-react-hooks-extra": "^2.13.0",
71
71
  "eslint-plugin-react-naming-convention": "^2.13.0",
72
72
  "eslint-plugin-react-refresh": "0.5.2",
@@ -77,9 +77,9 @@
77
77
  "eslint-plugin-storybook": "0.12.0",
78
78
  "eslint-plugin-testing-library": "^7.16.2",
79
79
  "eslint-plugin-unicorn": "^64.0.0",
80
- "globals": "^17.4.0",
80
+ "globals": "^17.6.0",
81
81
  "local-pkg": "^1.1.2",
82
- "typescript-eslint": "^8.58.0"
82
+ "typescript-eslint": "^8.59.1"
83
83
  },
84
84
  "peerDependencies": {
85
85
  "eslint": ">=9.38.0"