@jimmy.codes/eslint-config 6.25.0 → 6.27.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/dist/index.mjs CHANGED
@@ -9,7 +9,7 @@ import nodePlugin from "eslint-plugin-n";
9
9
  import arrowReturnStylePlugin from "eslint-plugin-arrow-return-style-x";
10
10
  import eslint from "@eslint/js";
11
11
  import jsdocPlugin from "eslint-plugin-jsdoc";
12
- import perfectionist from "eslint-plugin-perfectionist";
12
+ import perfectionist, { configs as configs$1 } from "eslint-plugin-perfectionist";
13
13
  import eslintConfigPrettier from "eslint-config-prettier/flat";
14
14
  import * as regexpPlugin from "eslint-plugin-regexp";
15
15
  import stylisticPlugin from "@stylistic/eslint-plugin";
@@ -255,39 +255,56 @@ const nodeConfig = () => {
255
255
  //#endregion
256
256
  //#region src/rules/perfectionist.ts
257
257
  const perfectionistRules = {
258
- ...perfectionist.configs["recommended-natural"].rules,
258
+ ...configs$1["recommended-natural"].rules,
259
259
  "perfectionist/sort-imports": ["error", {
260
- customGroups: {
261
- type: {},
262
- value: {}
263
- },
264
260
  environment: "node",
265
261
  groups: [
266
262
  "side-effect-style",
267
- "builtin",
268
- "type",
269
- "external",
270
- "internal-type",
271
- "internal",
263
+ "side-effect",
264
+ ["type-builtin", "type-external"],
265
+ "value-builtin",
266
+ "value-external",
267
+ "type-internal",
268
+ "value-internal",
272
269
  [
273
- "parent-type",
274
- "sibling-type",
275
- "index-type"
270
+ "type-parent",
271
+ "type-sibling",
272
+ "type-index"
276
273
  ],
277
274
  [
278
- "parent",
279
- "sibling",
280
- "index"
275
+ "value-parent",
276
+ "value-sibling",
277
+ "value-index"
281
278
  ],
282
- "object",
283
279
  "style",
280
+ "value-subpath",
281
+ "ts-equals-import",
284
282
  "unknown"
285
283
  ],
286
284
  internalPattern: ["^~/.*", "^@/.*"],
287
285
  order: "asc",
288
286
  type: "natural"
289
287
  }],
290
- "perfectionist/sort-modules": "off"
288
+ "perfectionist/sort-modules": ["error", {
289
+ groups: [
290
+ "enum",
291
+ ["declare-interface", "declare-type"],
292
+ "type",
293
+ "interface",
294
+ "declare-class",
295
+ "class",
296
+ "declare-function",
297
+ "function",
298
+ "export-enum",
299
+ ["export-interface", "export-type"],
300
+ "export-class",
301
+ "export-function",
302
+ "unknown"
303
+ ],
304
+ order: "asc",
305
+ partitionByNewLine: true,
306
+ type: "natural"
307
+ }]
291
308
  };
292
309
 
293
310
  //#endregion
@@ -504,16 +521,16 @@ const defineConfig = async ({ astro = false, autoDetect = true, gitignore = fals
504
521
  stylisticConfig()
505
522
  ];
506
523
  const featureConfigs = await Promise.all([
507
- isTypescriptEnabled && unwrap(import("./typescript-iybUcKhp.mjs"), typescript),
508
- isReactEnabled && unwrap(import("./react-aPiplRN9.mjs"), react),
509
- isTanstackQueryEnabled && unwrap(import("./tanstack-query-Dp8U2t8w.mjs"), tanstackQuery),
510
- isAstroEnabled && unwrap(import("./astro-_OthZH0C.mjs"), astro),
511
- isJestEnabled && unwrap(import("./jest-BxCbmb4w.mjs"), jest),
512
- isVitestEnabled && unwrap(import("./vitest-DyQ5YML1.mjs"), vitest),
513
- isTestingLibraryEnabled && unwrap(import("./testing-library-CQkPs8CJ.mjs"), testingLibrary),
514
- isPlaywrightEnabled && unwrap(import("./playwright-CB73AGjW.mjs"), playwright),
515
- isStorybookEnabled && unwrap(import("./storybook-CgfIOzEK.mjs"), storybook),
516
- isNextjsEnabled && unwrap(import("./nextjs-Bp3ln3PT.mjs"), nextjs)
524
+ isTypescriptEnabled && unwrap(import("./typescript-CNtyo5Lg.mjs"), typescript),
525
+ isReactEnabled && unwrap(import("./react-6Ule3BqW.mjs"), react),
526
+ isTanstackQueryEnabled && unwrap(import("./tanstack-query-BVXIAVcv.mjs"), tanstackQuery),
527
+ isAstroEnabled && unwrap(import("./astro-BnZ2LIR3.mjs"), astro),
528
+ isJestEnabled && unwrap(import("./jest-Dm9_cuf3.mjs"), jest),
529
+ isVitestEnabled && unwrap(import("./vitest-BiF4sMhO.mjs"), vitest),
530
+ isTestingLibraryEnabled && unwrap(import("./testing-library-BFsBlKXl.mjs"), testingLibrary),
531
+ isPlaywrightEnabled && unwrap(import("./playwright-ChDf6HhZ.mjs"), playwright),
532
+ isStorybookEnabled && unwrap(import("./storybook-BfbeHUhi.mjs"), storybook),
533
+ isNextjsEnabled && unwrap(import("./nextjs-_AmGd366.mjs"), nextjs)
517
534
  ]);
518
535
  return [
519
536
  ...gitignore ? [gitignoreConfig({ strict: false })] : [],
@@ -22,6 +22,7 @@ const jestRules = async (options) => {
22
22
  "jest/no-restricted-jest-methods": "off",
23
23
  "jest/no-restricted-matchers": "off",
24
24
  "jest/no-test-return-statement": "error",
25
+ "jest/no-unneeded-async-expect-function": "error",
25
26
  "jest/no-untyped-mock-factory": "off",
26
27
  "jest/padding-around-all": "error",
27
28
  "jest/prefer-called-with": "error",
@@ -38,6 +39,8 @@ const jestRules = async (options) => {
38
39
  "jest/prefer-snapshot-hint": "error",
39
40
  "jest/prefer-spy-on": "off",
40
41
  "jest/prefer-strict-equal": "error",
42
+ "jest/prefer-to-have-been-called": "error",
43
+ "jest/prefer-to-have-been-called-times": "error",
41
44
  "jest/prefer-todo": "warn",
42
45
  "jest/require-hook": "error",
43
46
  "jest/require-to-throw-message": "error",
@@ -1,6 +1,6 @@
1
1
  import { s as GLOB_NEXTJS } from "./globs-uKx5b8lV.mjs";
2
2
  import { n as extractOptions, t as interopDefault } from "./interop-default-CKeWA-H9.mjs";
3
- import { t as upwarn } from "./upwarn-BWFMaOyK.mjs";
3
+ import { t as upwarn } from "./astro-BnZ2LIR3.mjs";
4
4
 
5
5
  //#region src/rules/nextjs.ts
6
6
  const nextjsRules = async (options) => {
@@ -1,7 +1,7 @@
1
1
  import { d as GLOB_TSX, o as GLOB_JSX } from "./globs-uKx5b8lV.mjs";
2
2
  import { l as hasTypescript, r as hasNext, u as hasVite } from "./has-dependency-BreXO1rF.mjs";
3
3
  import { n as extractOptions, t as interopDefault } from "./interop-default-CKeWA-H9.mjs";
4
- import { t as upwarn } from "./upwarn-BWFMaOyK.mjs";
4
+ import { t as upwarn } from "./astro-BnZ2LIR3.mjs";
5
5
  import globals from "globals";
6
6
 
7
7
  //#region src/rules/react.ts
@@ -1,5 +1,5 @@
1
1
  import { n as extractOptions, t as interopDefault } from "./interop-default-CKeWA-H9.mjs";
2
- import { t as upwarn } from "./upwarn-BWFMaOyK.mjs";
2
+ import { t as upwarn } from "./astro-BnZ2LIR3.mjs";
3
3
 
4
4
  //#region src/configs/storybook.ts
5
5
  async function storybookConfig(options) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jimmy.codes/eslint-config",
3
- "version": "6.25.0",
3
+ "version": "6.27.0",
4
4
  "description": "A simple, modern ESLint config that covers most use cases.",
5
5
  "keywords": [
6
6
  "eslint",
@@ -40,14 +40,14 @@
40
40
  ],
41
41
  "dependencies": {
42
42
  "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
43
- "@eslint/js": "^9.39.1",
44
- "@next/eslint-plugin-next": "^16.0.6",
43
+ "@eslint/js": "^9.39.2",
44
+ "@next/eslint-plugin-next": "^16.0.10",
45
45
  "@stylistic/eslint-plugin": "^5.6.1",
46
46
  "@tanstack/eslint-plugin-query": "^5.91.2",
47
47
  "@types/eslint": "9.6.1",
48
- "@typescript-eslint/parser": "^8.48.0",
49
- "@typescript-eslint/utils": "^8.48.0",
50
- "@vitest/eslint-plugin": "^1.5.1",
48
+ "@typescript-eslint/parser": "^8.50.0",
49
+ "@typescript-eslint/utils": "^8.50.0",
50
+ "@vitest/eslint-plugin": "^1.5.2",
51
51
  "astro-eslint-parser": "^1.2.2",
52
52
  "eslint-config-flat-gitignore": "^2.1.0",
53
53
  "eslint-config-prettier": "^10.1.8",
@@ -56,28 +56,28 @@
56
56
  "eslint-plugin-astro": "^1.5.0",
57
57
  "eslint-plugin-erasable-syntax-only": "0.4.0",
58
58
  "eslint-plugin-import-x": "^4.16.1",
59
- "eslint-plugin-jest": "^29.2.1",
59
+ "eslint-plugin-jest": "^29.5.0",
60
60
  "eslint-plugin-jest-dom": "^5.5.0",
61
- "eslint-plugin-jsdoc": "^61.4.1",
61
+ "eslint-plugin-jsdoc": "^61.5.0",
62
62
  "eslint-plugin-jsx-a11y": "^6.10.2",
63
63
  "eslint-plugin-n": "^17.23.1",
64
- "eslint-plugin-perfectionist": "^4.15.1",
64
+ "eslint-plugin-perfectionist": "^5.0.0",
65
65
  "eslint-plugin-playwright": "^2.4.0",
66
66
  "eslint-plugin-react-compiler": "19.1.0-rc.2",
67
- "eslint-plugin-react-dom": "^2.3.9",
67
+ "eslint-plugin-react-dom": "^2.3.13",
68
68
  "eslint-plugin-react-hooks": "^7.0.1",
69
- "eslint-plugin-react-hooks-extra": "^2.3.9",
70
- "eslint-plugin-react-naming-convention": "^2.3.9",
71
- "eslint-plugin-react-refresh": "0.4.24",
72
- "eslint-plugin-react-web-api": "^2.3.9",
73
- "eslint-plugin-react-x": "^2.3.9",
69
+ "eslint-plugin-react-hooks-extra": "^2.3.13",
70
+ "eslint-plugin-react-naming-convention": "^2.3.13",
71
+ "eslint-plugin-react-refresh": "0.4.26",
72
+ "eslint-plugin-react-web-api": "^2.3.13",
73
+ "eslint-plugin-react-x": "^2.3.13",
74
74
  "eslint-plugin-regexp": "^2.10.0",
75
75
  "eslint-plugin-storybook": "0.12.0",
76
- "eslint-plugin-testing-library": "^7.13.5",
76
+ "eslint-plugin-testing-library": "^7.15.1",
77
77
  "eslint-plugin-unicorn": "^62.0.0",
78
78
  "globals": "^16.5.0",
79
79
  "local-pkg": "^1.1.2",
80
- "typescript-eslint": "^8.48.0"
80
+ "typescript-eslint": "^8.50.0"
81
81
  },
82
82
  "peerDependencies": {
83
83
  "eslint": "^9.10.0"
@@ -1,16 +0,0 @@
1
- //#region src/utils/upwarn.ts
2
- /**
3
- * Converts all ESLint rules set to `"warn"` into `"error"`.
4
- *
5
- * @param rules - A partial set of ESLint rules.
6
- *
7
- * @returns A new rules object with all `"warn"` values changed to `"error"`.
8
- */
9
- const upwarn = (rules = {}) => {
10
- return Object.fromEntries(Object.entries(rules).map(([rule, option]) => {
11
- return [rule, option === "warn" ? "error" : option];
12
- }));
13
- };
14
-
15
- //#endregion
16
- export { upwarn as t };