@coderwyd/eslint-config 4.7.2 → 4.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/dist/index.js CHANGED
@@ -615,6 +615,36 @@ function perfectionist() {
615
615
  }];
616
616
  }
617
617
 
618
+ //#endregion
619
+ //#region src/configs/pnpm.ts
620
+ async function pnpm() {
621
+ const [pluginPnpm, yamlParser, jsoncParser] = await Promise.all([
622
+ interopDefault(import("eslint-plugin-pnpm")),
623
+ interopDefault(import("yaml-eslint-parser")),
624
+ interopDefault(import("jsonc-eslint-parser"))
625
+ ]);
626
+ return [{
627
+ files: ["package.json", "**/package.json"],
628
+ languageOptions: { parser: jsoncParser },
629
+ name: "coderwyd/pnpm/package-json",
630
+ plugins: { pnpm: pluginPnpm },
631
+ rules: {
632
+ "pnpm/json-enforce-catalog": "error",
633
+ "pnpm/json-prefer-workspace-settings": "error",
634
+ "pnpm/json-valid-catalog": "error"
635
+ }
636
+ }, {
637
+ files: ["pnpm-workspace.yaml"],
638
+ languageOptions: { parser: yamlParser },
639
+ name: "coderwyd/pnpm/pnpm-workspace-yaml",
640
+ plugins: { pnpm: pluginPnpm },
641
+ rules: {
642
+ "pnpm/yaml-no-duplicate-catalog-item": "error",
643
+ "pnpm/yaml-no-unused-catalog-item": "error"
644
+ }
645
+ }];
646
+ }
647
+
618
648
  //#endregion
619
649
  //#region src/configs/prettier.ts
620
650
  const { rules: eslintRules } = prettierRules;
@@ -1397,6 +1427,7 @@ function unicorn(options = {}) {
1397
1427
  "unicorn/no-console-spaces": "error",
1398
1428
  "unicorn/no-for-loop": "error",
1399
1429
  "unicorn/no-hex-escape": "error",
1430
+ "unicorn/no-immediate-mutation": "error",
1400
1431
  "unicorn/no-instanceof-builtins": "error",
1401
1432
  "unicorn/no-invalid-remove-event-listener": "error",
1402
1433
  "unicorn/no-lonely-if": "error",
@@ -1409,6 +1440,8 @@ function unicorn(options = {}) {
1409
1440
  "unicorn/no-unnecessary-array-splice-count": "error",
1410
1441
  "unicorn/no-unnecessary-await": "error",
1411
1442
  "unicorn/no-unnecessary-slice-end": "error",
1443
+ "unicorn/no-useless-collection-argument": "error",
1444
+ "unicorn/no-useless-error-capture-stack-trace": "error",
1412
1445
  "unicorn/no-zero-fractions": "error",
1413
1446
  "unicorn/prefer-add-event-listener": "error",
1414
1447
  "unicorn/prefer-array-find": "error",
@@ -1416,8 +1449,10 @@ function unicorn(options = {}) {
1416
1449
  "unicorn/prefer-array-index-of": "error",
1417
1450
  "unicorn/prefer-array-some": "error",
1418
1451
  "unicorn/prefer-at": "error",
1452
+ "unicorn/prefer-bigint-literals": "error",
1419
1453
  "unicorn/prefer-blob-reading-methods": "error",
1420
1454
  "unicorn/prefer-class-fields": "error",
1455
+ "unicorn/prefer-classlist-toggle": "error",
1421
1456
  "unicorn/prefer-date-now": "error",
1422
1457
  "unicorn/prefer-dom-node-append": "error",
1423
1458
  "unicorn/prefer-dom-node-dataset": "error",
@@ -1436,12 +1471,15 @@ function unicorn(options = {}) {
1436
1471
  "unicorn/prefer-prototype-methods": "error",
1437
1472
  "unicorn/prefer-query-selector": "error",
1438
1473
  "unicorn/prefer-reflect-apply": "error",
1474
+ "unicorn/prefer-response-static-json": "error",
1439
1475
  "unicorn/prefer-single-call": "error",
1440
1476
  "unicorn/prefer-string-replace-all": "error",
1441
1477
  "unicorn/prefer-string-slice": "error",
1442
1478
  "unicorn/prefer-string-starts-ends-with": "error",
1443
1479
  "unicorn/prefer-string-trim-start-end": "error",
1444
1480
  "unicorn/prefer-type-error": "error",
1481
+ "unicorn/require-module-attributes": "error",
1482
+ "unicorn/require-module-specifiers": "error",
1445
1483
  "unicorn/throw-new-error": "error",
1446
1484
  ...overrides
1447
1485
  }
@@ -1687,7 +1725,7 @@ const defaultPluginRenaming = {
1687
1725
  * The merged ESLint configurations.
1688
1726
  */
1689
1727
  async function defineConfig(options = {}, ...userConfigs) {
1690
- const { autoRenamePlugins = true, componentExts = [], gitignore: enableGitignore = true, react: enableReact = false, regexp: enableRegexp = true, svelte: enableSvelte = false, tailwindcss: enableTailwindCSS = false, typescript: enableTypeScript = isUsingTypeScript, unocss: enableUnoCSS = false, vue: enableVue = isUsingVue } = options;
1728
+ const { autoRenamePlugins = true, componentExts = [], gitignore: enableGitignore = true, pnpm: enableCatalogs = false, react: enableReact = false, regexp: enableRegexp = true, svelte: enableSvelte = false, tailwindcss: enableTailwindCSS = false, typescript: enableTypeScript = isUsingTypeScript, unocss: enableUnoCSS = false, vue: enableVue = isUsingVue } = options;
1691
1729
  let isInEditor$1 = options.isInEditor;
1692
1730
  if (isInEditor$1 == null) {
1693
1731
  isInEditor$1 = isInEditorEnv();
@@ -1741,6 +1779,7 @@ async function defineConfig(options = {}, ...userConfigs) {
1741
1779
  overrides: getOverrides(options, "tailwindcss")
1742
1780
  }));
1743
1781
  if (options.jsonc ?? true) configs$1.push(jsonc({ overrides: getOverrides(options, "jsonc") }), sortPackageJson(), sortTsconfig());
1782
+ if (enableCatalogs) configs$1.push(pnpm());
1744
1783
  if (options.yaml ?? true) configs$1.push(yaml({ overrides: getOverrides(options, "yaml") }));
1745
1784
  configs$1.push(specials(), prettier());
1746
1785
  if ("files" in options) throw new Error("[@coderwyd/eslint-config] The first argument should not contain the \"files\" property as the options are supposed to be global. Place it in the second or later config instead.");
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@coderwyd/eslint-config",
3
3
  "type": "module",
4
- "version": "4.7.2",
4
+ "version": "4.8.0",
5
5
  "description": "Donny's ESLint config",
6
6
  "author": "Donny Wang <donny526@outlook.com> (https://github.com/coderwyd/)",
7
7
  "license": "MIT",
@@ -37,7 +37,7 @@
37
37
  "node": ">=18.18.0"
38
38
  },
39
39
  "peerDependencies": {
40
- "@eslint-react/eslint-plugin": "^1.5.8",
40
+ "@eslint-react/eslint-plugin": "^1.5.8 || ^2.0.0",
41
41
  "@unocss/eslint-plugin": ">=0.50.0",
42
42
  "eslint": "^9.5.0",
43
43
  "eslint-plugin-react-hooks": "^4.6.0 || ^5.0.0 || ^7.0.0",
@@ -75,24 +75,26 @@
75
75
  "dependencies": {
76
76
  "@antfu/install-pkg": "^1.1.0",
77
77
  "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
78
- "@typescript-eslint/eslint-plugin": "^8.46.1",
79
- "@typescript-eslint/parser": "^8.46.1",
80
- "@vitest/eslint-plugin": "^1.3.20",
78
+ "@typescript-eslint/eslint-plugin": "^8.46.2",
79
+ "@typescript-eslint/parser": "^8.46.2",
80
+ "@vitest/eslint-plugin": "^1.3.26",
81
+ "cac": "^6.7.14",
81
82
  "eslint-config-flat-gitignore": "^2.1.0",
82
83
  "eslint-config-prettier": "^10.1.8",
83
84
  "eslint-plugin-antfu": "^3.1.1",
84
85
  "eslint-plugin-command": "^3.3.1",
85
86
  "eslint-plugin-de-morgan": "^2.0.0",
86
87
  "eslint-plugin-import-lite": "^0.3.0",
87
- "eslint-plugin-jsdoc": "61.1.2",
88
+ "eslint-plugin-jsdoc": "61.1.8",
88
89
  "eslint-plugin-jsonc": "^2.21.0",
89
90
  "eslint-plugin-n": "^17.23.1",
90
91
  "eslint-plugin-no-only-tests": "^3.3.0",
91
92
  "eslint-plugin-perfectionist": "^4.15.1",
93
+ "eslint-plugin-pnpm": "^1.3.0",
92
94
  "eslint-plugin-regexp": "^2.10.0",
93
- "eslint-plugin-unicorn": "^61.0.2",
94
- "eslint-plugin-unused-imports": "^4.2.0",
95
- "eslint-plugin-vue": "^10.5.0",
95
+ "eslint-plugin-unicorn": "^62.0.0",
96
+ "eslint-plugin-unused-imports": "^4.3.0",
97
+ "eslint-plugin-vue": "^10.5.1",
96
98
  "eslint-plugin-yml": "^1.19.0",
97
99
  "globals": "^16.4.0",
98
100
  "jsonc-eslint-parser": "^2.4.1",
@@ -100,33 +102,29 @@
100
102
  "parse-gitignore": "^2.0.0",
101
103
  "prompts": "^2.4.2",
102
104
  "vue-eslint-parser": "^10.2.0",
103
- "yaml-eslint-parser": "^1.3.0",
104
- "yargs": "^18.0.0"
105
+ "yaml-eslint-parser": "^1.3.0"
105
106
  },
106
107
  "devDependencies": {
107
- "@antfu/ni": "^26.1.0",
108
- "@eslint-react/eslint-plugin": "^2.2.2",
108
+ "@eslint-react/eslint-plugin": "^2.2.4",
109
109
  "@eslint/config-inspector": "^1.3.0",
110
110
  "@types/eslint-config-prettier": "^6.11.3",
111
- "@types/node": "^24.7.2",
111
+ "@types/node": "^24.9.2",
112
112
  "@types/prompts": "^2.4.9",
113
- "@types/yargs": "^17.0.33",
114
- "@unocss/eslint-plugin": "^66.5.3",
113
+ "@unocss/eslint-plugin": "^66.5.4",
115
114
  "bumpp": "^10.3.1",
116
- "eslint": "^9.37.0",
117
- "eslint-plugin-react-hooks": "7.0.0",
118
- "eslint-plugin-react-refresh": "^0.4.23",
119
- "eslint-plugin-svelte": "^3.12.4",
115
+ "eslint": "^9.38.0",
116
+ "eslint-plugin-react-hooks": "7.0.1",
117
+ "eslint-plugin-react-refresh": "^0.4.24",
118
+ "eslint-plugin-svelte": "^3.12.5",
120
119
  "eslint-plugin-tailwindcss": "^3.18.2",
121
120
  "eslint-typegen": "^2.3.0",
122
121
  "jiti": "^2.6.1",
123
122
  "nano-staged": "^0.8.0",
124
123
  "prettier": "^3.6.2",
125
- "publint": "^0.3.14",
124
+ "publint": "^0.3.15",
126
125
  "simple-git-hooks": "^2.13.1",
127
- "svelte": "^5.40.0",
128
- "svelte-eslint-parser": "^1.3.3",
129
- "tsdown": "^0.15.7",
126
+ "svelte-eslint-parser": "^1.4.0",
127
+ "tsdown": "^0.15.12",
130
128
  "typescript": "^5.9.3",
131
129
  "unplugin-unused": "^0.5.4"
132
130
  },
@@ -137,7 +135,7 @@
137
135
  "*": "eslint --fix"
138
136
  },
139
137
  "scripts": {
140
- "build": "nr build:typegen && tsdown",
138
+ "build": "pnpm build:typegen && tsdown",
141
139
  "dev": "pnpx @eslint/config-inspector",
142
140
  "lint": "eslint .",
143
141
  "lint:fix": "eslint . --fix",