@coderwyd/eslint-config 2.3.2 → 2.3.4

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
@@ -24,7 +24,7 @@ import { default as default7 } from "eslint-plugin-perfectionist";
24
24
  async function comments() {
25
25
  return [
26
26
  {
27
- name: "coderwyd:eslint-comments",
27
+ name: "coderwyd/eslint-comments/rules",
28
28
  plugins: {
29
29
  "eslint-comments": default3
30
30
  },
@@ -112,7 +112,7 @@ async function ignores() {
112
112
  async function imports() {
113
113
  return [
114
114
  {
115
- name: "coderwyd:imports",
115
+ name: "coderwyd/imports/rules",
116
116
  plugins: {
117
117
  antfu: default2,
118
118
  import: pluginImport
@@ -152,7 +152,7 @@ async function imports() {
152
152
  },
153
153
  {
154
154
  files: ["**/bin/**/*", `**/bin.${GLOB_SRC_EXT}`],
155
- name: "coderwyd:imports:bin",
155
+ name: "coderwyd/imports/disables/bin",
156
156
  rules: {
157
157
  "antfu/no-import-dist": "off",
158
158
  "antfu/no-import-node-modules-by-path": "off"
@@ -189,7 +189,7 @@ async function javascript(options = {}) {
189
189
  linterOptions: {
190
190
  reportUnusedDisableDirectives: true
191
191
  },
192
- name: "coderwyd:javascript",
192
+ name: "coderwyd/javascript/rules",
193
193
  plugins: {
194
194
  "unused-imports": default6
195
195
  },
@@ -252,8 +252,8 @@ async function javascript(options = {}) {
252
252
  "no-multi-str": "error",
253
253
  "no-new": "error",
254
254
  "no-new-func": "error",
255
+ "no-new-native-nonconstructor": "error",
255
256
  "no-new-object": "error",
256
- "no-new-symbol": "error",
257
257
  "no-new-wrappers": "error",
258
258
  "no-obj-calls": "error",
259
259
  "no-octal": "error",
@@ -392,6 +392,7 @@ async function javascript(options = {}) {
392
392
  {
393
393
  args: "after-used",
394
394
  argsIgnorePattern: "^_",
395
+ ignoreRestSiblings: true,
395
396
  vars: "all",
396
397
  varsIgnorePattern: "^_"
397
398
  }
@@ -408,13 +409,14 @@ async function javascript(options = {}) {
408
409
  },
409
410
  {
410
411
  files: [`scripts/${GLOB_SRC}`, `cli.${GLOB_SRC_EXT}`],
411
- name: "coderwyd:scripts-overrides",
412
+ name: "coderwyd/javascript/disables/cli",
412
413
  rules: {
413
414
  "no-console": "off"
414
415
  }
415
416
  },
416
417
  {
417
418
  files: ["**/*.{test,spec}.js?(x)"],
419
+ name: "coderwyd/javascript/disables/test",
418
420
  rules: {
419
421
  "no-unused-expressions": "off"
420
422
  }
@@ -534,7 +536,7 @@ function getOverrides(options, key) {
534
536
  async function jsdoc() {
535
537
  return [
536
538
  {
537
- name: "coderwyd:jsdoc",
539
+ name: "coderwyd/jsdoc/rules",
538
540
  plugins: {
539
541
  jsdoc: await interopDefault(import("eslint-plugin-jsdoc"))
540
542
  },
@@ -573,7 +575,7 @@ async function jsonc(options = {}) {
573
575
  ]);
574
576
  return [
575
577
  {
576
- name: "coderwyd:jsonc:setup",
578
+ name: "coderwyd/jsonc/setup",
577
579
  plugins: {
578
580
  jsonc: pluginJsonc
579
581
  }
@@ -583,7 +585,7 @@ async function jsonc(options = {}) {
583
585
  languageOptions: {
584
586
  parser: parserJsonc
585
587
  },
586
- name: "coderwyd:jsonc:rules",
588
+ name: "coderwyd/jsonc/rules",
587
589
  rules: {
588
590
  "jsonc/no-bigint-literals": "error",
589
591
  "jsonc/no-binary-expression": "error",
@@ -643,7 +645,7 @@ async function jsonc(options = {}) {
643
645
  async function node() {
644
646
  return [
645
647
  {
646
- name: "coderwyd:node",
648
+ name: "coderwyd/node/rules",
647
649
  plugins: {
648
650
  node: default4
649
651
  },
@@ -666,7 +668,7 @@ async function sortPackageJson() {
666
668
  return [
667
669
  {
668
670
  files: ["**/package.json"],
669
- name: "coderwyd:sort-package-json",
671
+ name: "coderwyd/sort/package-json",
670
672
  rules: {
671
673
  "jsonc/sort-array-values": [
672
674
  "error",
@@ -762,7 +764,7 @@ function sortTsconfig() {
762
764
  return [
763
765
  {
764
766
  files: ["**/tsconfig.json", "**/tsconfig.*.json"],
765
- name: "coderwyd:sort-tsconfig",
767
+ name: "coderwyd/sort/tsconfig-json",
766
768
  rules: {
767
769
  "jsonc/sort-keys": [
768
770
  "error",
@@ -894,14 +896,14 @@ async function prettier(rules = {}) {
894
896
  };
895
897
  const configs = [
896
898
  {
897
- name: "coderwyd:prettier:setup",
899
+ name: "coderwyd/prettier/setup",
898
900
  plugins: {
899
901
  prettier: pluginPrettier
900
902
  }
901
903
  },
902
904
  {
903
905
  files: GLOB_PRETTIER_LINT,
904
- name: "coderwyd:prettier:rules",
906
+ name: "coderwyd/prettier/rules",
905
907
  rules: {
906
908
  ...eslintRules,
907
909
  "prettier/prettier": ["warn", pRules],
@@ -966,13 +968,13 @@ async function typescript(options = {}) {
966
968
  ...parserOptions
967
969
  }
968
970
  },
969
- name: `coderwyd:typescript:${typeAware ? "type-aware-parser" : "parser"}`
971
+ name: `coderwyd/typescript/${typeAware ? "type-aware-parser" : "parser"}`
970
972
  };
971
973
  }
972
974
  return [
973
975
  {
974
976
  // Install the plugins without globs, so they can be configured separately.
975
- name: "coderwyd:typescript:setup",
977
+ name: "coderwyd/typescript/setup",
976
978
  plugins: {
977
979
  antfu: default2,
978
980
  ts: pluginTs
@@ -985,7 +987,7 @@ async function typescript(options = {}) {
985
987
  ] : [makeParser(false, files)],
986
988
  {
987
989
  files,
988
- name: "coderwyd:typescript:rules",
990
+ name: "coderwyd/typescript/rules",
989
991
  rules: {
990
992
  ...renameRules(
991
993
  pluginTs.configs["eslint-recommended"].overrides[0].rules,
@@ -1033,17 +1035,19 @@ async function typescript(options = {}) {
1033
1035
  ...overrides
1034
1036
  }
1035
1037
  },
1036
- {
1037
- files: filesTypeAware,
1038
- name: "coderwyd:typescript:rules-type-aware",
1039
- rules: {
1040
- ...tsconfigPath ? typeAwareRules : {},
1041
- ...overrides
1038
+ ...isTypeAware ? [
1039
+ {
1040
+ files: filesTypeAware,
1041
+ name: "coderwyd/typescript/rules-type-aware",
1042
+ rules: {
1043
+ ...tsconfigPath ? typeAwareRules : {},
1044
+ ...overrides
1045
+ }
1042
1046
  }
1043
- },
1047
+ ] : [],
1044
1048
  {
1045
1049
  files: ["**/*.d.ts"],
1046
- name: "coderwyd:typescript:dts-overrides",
1050
+ name: "coderwyd/typescript/disables/dts",
1047
1051
  rules: {
1048
1052
  "eslint-comments/no-unlimited-disable": "off",
1049
1053
  "import/no-duplicates": "off",
@@ -1053,14 +1057,14 @@ async function typescript(options = {}) {
1053
1057
  },
1054
1058
  {
1055
1059
  files: ["**/*.{test,spec}.ts?(x)"],
1056
- name: "coderwyd:typescript:tests-overrides",
1060
+ name: "coderwyd/typescript/disables/test",
1057
1061
  rules: {
1058
1062
  "no-unused-expressions": "off"
1059
1063
  }
1060
1064
  },
1061
1065
  {
1062
1066
  files: ["**/*.js", "**/*.cjs"],
1063
- name: "coderwyd:typescript:javascript-overrides",
1067
+ name: "coderwyd/typescript/disables/cjs",
1064
1068
  rules: {
1065
1069
  "ts/no-require-imports": "off",
1066
1070
  "ts/no-var-requires": "off"
@@ -1073,7 +1077,7 @@ async function typescript(options = {}) {
1073
1077
  async function unicorn() {
1074
1078
  return [
1075
1079
  {
1076
- name: "coderwyd:unicorn",
1080
+ name: "coderwyd/unicorn/rules",
1077
1081
  plugins: {
1078
1082
  unicorn: default5
1079
1083
  },
@@ -1181,7 +1185,7 @@ async function vue(options = {}) {
1181
1185
  watchEffect: "readonly"
1182
1186
  }
1183
1187
  },
1184
- name: "coderwyd:vue:setup",
1188
+ name: "coderwyd/vue/setup",
1185
1189
  plugins: {
1186
1190
  vue: pluginVue
1187
1191
  }
@@ -1201,7 +1205,7 @@ async function vue(options = {}) {
1201
1205
  sourceType: "module"
1202
1206
  }
1203
1207
  },
1204
- name: "coderwyd:vue:rules",
1208
+ name: "coderwyd/vue/rules",
1205
1209
  processor: pluginVue.processors[".vue"],
1206
1210
  rules: {
1207
1211
  ...pluginVue.configs.base.rules,
@@ -1327,6 +1331,7 @@ async function vue(options = {}) {
1327
1331
  }
1328
1332
 
1329
1333
  // src/configs/test.ts
1334
+ var _pluginTest;
1330
1335
  async function test(options = {}) {
1331
1336
  const { files = GLOB_TESTS, isInEditor: isInEditor2 = false, overrides = {} } = options;
1332
1337
  const [pluginVitest, pluginNoOnlyTests] = await Promise.all([
@@ -1334,23 +1339,24 @@ async function test(options = {}) {
1334
1339
  // @ts-expect-error missing types
1335
1340
  interopDefault(import("eslint-plugin-no-only-tests"))
1336
1341
  ]);
1342
+ _pluginTest = _pluginTest || {
1343
+ ...pluginVitest,
1344
+ rules: {
1345
+ ...pluginVitest.rules,
1346
+ // extend `test/no-only-tests` rule
1347
+ ...pluginNoOnlyTests.rules
1348
+ }
1349
+ };
1337
1350
  return [
1338
1351
  {
1339
- name: "coderwyd:test:setup",
1352
+ name: "coderwyd/test/setup",
1340
1353
  plugins: {
1341
- test: {
1342
- ...pluginVitest,
1343
- rules: {
1344
- ...pluginVitest.rules,
1345
- // extend `test/no-only-tests` rule
1346
- ...pluginNoOnlyTests.rules
1347
- }
1348
- }
1354
+ test: _pluginTest
1349
1355
  }
1350
1356
  },
1351
1357
  {
1352
1358
  files,
1353
- name: "coderwyd:test:rules",
1359
+ name: "coderwyd/test/rules",
1354
1360
  rules: {
1355
1361
  "node/prefer-global/process": "off",
1356
1362
  "test/consistent-test-it": [
@@ -1372,7 +1378,7 @@ async function test(options = {}) {
1372
1378
  async function perfectionist() {
1373
1379
  return [
1374
1380
  {
1375
- name: "coderwyd:perfectionist",
1381
+ name: "coderwyd/perfectionist/setup",
1376
1382
  plugins: {
1377
1383
  perfectionist: default7
1378
1384
  }
@@ -1406,7 +1412,7 @@ async function react(options = {}) {
1406
1412
  );
1407
1413
  return [
1408
1414
  {
1409
- name: "coderwyd:react:setup",
1415
+ name: "coderwyd/react/setup",
1410
1416
  plugins: {
1411
1417
  react: pluginReact,
1412
1418
  "react-hooks": pluginReactHooks,
@@ -1427,7 +1433,7 @@ async function react(options = {}) {
1427
1433
  }
1428
1434
  }
1429
1435
  },
1430
- name: "coderwyd:react:rules",
1436
+ name: "coderwyd/react/rules",
1431
1437
  rules: {
1432
1438
  // recommended rules react-hooks
1433
1439
  "react-hooks/exhaustive-deps": "warn",
@@ -1480,7 +1486,7 @@ async function unocss(options = {}) {
1480
1486
  ]);
1481
1487
  return [
1482
1488
  {
1483
- name: "coderwyd:unocss",
1489
+ name: "coderwyd/unocss/rules",
1484
1490
  plugins: {
1485
1491
  unocss: pluginUnoCSS
1486
1492
  },
@@ -1526,7 +1532,7 @@ async function formatter(options = {}, prettierRules2 = {}) {
1526
1532
  languageOptions: {
1527
1533
  parser: parserPlain
1528
1534
  },
1529
- name: `coderwyd:formatter:${parser}`,
1535
+ name: `coderwyd/formatter/${parser}`,
1530
1536
  plugins: {
1531
1537
  prettier: pluginPrettier
1532
1538
  },
@@ -1541,7 +1547,7 @@ async function formatter(options = {}, prettierRules2 = {}) {
1541
1547
  }
1542
1548
  const configs = [
1543
1549
  {
1544
- name: "coderwyd:formatter:setup",
1550
+ name: "coderwyd/formatter/setup",
1545
1551
  plugins: {
1546
1552
  prettier: pluginPrettier
1547
1553
  }
@@ -1589,7 +1595,7 @@ async function svelte(options = {}) {
1589
1595
  ]);
1590
1596
  return [
1591
1597
  {
1592
- name: "coderwyd:svelte:setup",
1598
+ name: "coderwyd/svelte/setup",
1593
1599
  plugins: {
1594
1600
  svelte: pluginSvelte
1595
1601
  }
@@ -1605,7 +1611,7 @@ async function svelte(options = {}) {
1605
1611
  ) : null
1606
1612
  }
1607
1613
  },
1608
- name: "coderwyd:svelte:rules",
1614
+ name: "coderwyd/svelte/rules",
1609
1615
  processor: pluginSvelte.processors[".svelte"],
1610
1616
  rules: {
1611
1617
  "import/no-mutable-exports": "off",
@@ -1618,7 +1624,7 @@ async function svelte(options = {}) {
1618
1624
  caughtErrors: "none",
1619
1625
  ignoreRestSiblings: true,
1620
1626
  vars: "all",
1621
- varsIgnorePattern: "^\\$\\$Props$"
1627
+ varsIgnorePattern: "^(\\$\\$Props$|\\$\\$Events$|\\$\\$Slots$)"
1622
1628
  }
1623
1629
  ],
1624
1630
  "svelte/comment-directive": "error",
@@ -1648,7 +1654,7 @@ async function svelte(options = {}) {
1648
1654
  args: "after-used",
1649
1655
  argsIgnorePattern: "^_",
1650
1656
  vars: "all",
1651
- varsIgnorePattern: "^(_|\\$\\$Props$)"
1657
+ varsIgnorePattern: "^(_|\\$\\$Props$|\\$\\$Events$|\\$\\$Slots$)"
1652
1658
  }
1653
1659
  ],
1654
1660
  ...{
@@ -1681,7 +1687,7 @@ async function tailwindcss(options = {}) {
1681
1687
  );
1682
1688
  return [
1683
1689
  {
1684
- name: "coderwyd:tailwindcss",
1690
+ name: "coderwyd/tailwindcss/rules",
1685
1691
  plugins: {
1686
1692
  tailwindcss: pluginTailwindcss
1687
1693
  },
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@coderwyd/eslint-config",
3
3
  "type": "module",
4
- "version": "2.3.2",
5
- "packageManager": "pnpm@8.15.5",
4
+ "version": "2.3.4",
5
+ "packageManager": "pnpm@8.15.6",
6
6
  "description": "Donny's ESLint config",
7
7
  "author": "Donny Wang <donny526@outlook.com> (https://github.com/coderwyd/)",
8
8
  "license": "MIT",
@@ -66,30 +66,27 @@
66
66
  }
67
67
  },
68
68
  "dependencies": {
69
- "@antfu/eslint-define-config": "1.23.0-2",
70
- "@antfu/install-pkg": "^0.3.1",
71
- "@eslint-types/jsdoc": "48.2.1",
72
- "@eslint-types/typescript-eslint": "^7.2.0",
73
- "@eslint-types/unicorn": "^51.0.1",
69
+ "@antfu/install-pkg": "^0.3.2",
74
70
  "@toml-tools/parser": "^1.0.0",
75
- "@typescript-eslint/eslint-plugin": "^7.4.0",
76
- "@typescript-eslint/parser": "^7.4.0",
77
- "eslint-config-flat-gitignore": "^0.1.3",
71
+ "@typescript-eslint/eslint-plugin": "^7.6.0",
72
+ "@typescript-eslint/parser": "^7.6.0",
73
+ "eslint-config-flat-gitignore": "^0.1.5",
78
74
  "eslint-config-prettier": "^9.1.0",
79
75
  "eslint-plugin-antfu": "^2.1.2",
80
76
  "eslint-plugin-eslint-comments": "^3.2.0",
81
- "eslint-plugin-import-x": "^0.4.4",
82
- "eslint-plugin-jsdoc": "^48.2.1",
83
- "eslint-plugin-jsonc": "^2.14.1",
84
- "eslint-plugin-n": "^16.6.2",
77
+ "eslint-plugin-import-x": "^0.5.0",
78
+ "eslint-plugin-jsdoc": "^48.2.3",
79
+ "eslint-plugin-jsonc": "^2.15.1",
80
+ "eslint-plugin-n": "^17.1.0",
85
81
  "eslint-plugin-no-only-tests": "^3.1.0",
86
- "eslint-plugin-perfectionist": "^2.7.0",
82
+ "eslint-plugin-perfectionist": "^2.8.0",
87
83
  "eslint-plugin-prettier": "^5.1.3",
88
84
  "eslint-plugin-tailwindcss": "^3.15.1",
89
- "eslint-plugin-unicorn": "^51.0.1",
85
+ "eslint-plugin-unicorn": "^52.0.0",
90
86
  "eslint-plugin-unused-imports": "^3.1.0",
91
- "eslint-plugin-vitest": "^0.4.0",
92
- "eslint-plugin-vue": "^9.24.0",
87
+ "eslint-plugin-vitest": "^0.5.1",
88
+ "eslint-plugin-vue": "^9.24.1",
89
+ "eslint-typegen": "^0.2.2",
93
90
  "globals": "^15.0.0",
94
91
  "jsonc-eslint-parser": "^2.4.0",
95
92
  "local-pkg": "^0.5.0",
@@ -103,29 +100,30 @@
103
100
  },
104
101
  "devDependencies": {
105
102
  "@antfu/ni": "^0.21.12",
106
- "@types/eslint": "^8.56.6",
103
+ "@eslint/config-inspector": "^0.4.6",
104
+ "@types/eslint": "^8.56.9",
107
105
  "@types/fs-extra": "^11.0.4",
108
- "@types/node": "^20.11.30",
106
+ "@types/node": "^20.12.7",
109
107
  "@types/prompts": "^2.4.9",
110
108
  "@types/yargs": "^17.0.32",
111
- "@unocss/eslint-plugin": "^0.58.7",
109
+ "@unocss/eslint-plugin": "^0.59.2",
112
110
  "bumpp": "^9.4.0",
113
- "eslint": "9.0.0-rc.0",
114
- "eslint-flat-config-viewer": "^0.1.14",
111
+ "eslint": "9.0.0",
115
112
  "eslint-plugin-react": "^7.34.1",
116
113
  "eslint-plugin-react-hooks": "^4.6.0",
117
114
  "eslint-plugin-react-refresh": "^0.4.6",
118
- "eslint-plugin-svelte": "^2.35.1",
115
+ "eslint-plugin-svelte": "2.36.0",
119
116
  "execa": "^8.0.1",
120
117
  "fast-glob": "^3.3.2",
121
118
  "fs-extra": "^11.2.0",
122
119
  "lint-staged": "^15.2.2",
123
120
  "rimraf": "^5.0.5",
124
121
  "simple-git-hooks": "^2.11.1",
125
- "svelte-eslint-parser": "^0.33.1",
122
+ "svelte": "^4.2.13",
123
+ "svelte-eslint-parser": "^0.34.1",
126
124
  "tsup": "^8.0.2",
127
- "tsx": "^4.7.1",
128
- "typescript": "^5.4.3"
125
+ "tsx": "^4.7.2",
126
+ "typescript": "^5.4.5"
129
127
  },
130
128
  "simple-git-hooks": {
131
129
  "pre-commit": "pnpx nano-staged"
@@ -134,10 +132,12 @@
134
132
  "*": "eslint --fix"
135
133
  },
136
134
  "scripts": {
137
- "build": "tsup",
138
- "dev": "tsup --format esm,cjs --watch & eslint-flat-config-viewer",
135
+ "build": "nr typegen && tsup",
136
+ "dev": "tsup --format esm,cjs --watch & npx @eslint/config-inspector",
139
137
  "lint": "eslint .",
140
138
  "lint:fix": "eslint . --fix",
139
+ "build:inspector": "pnpm build && npx @eslint/config-inspector build",
140
+ "typegen": "tsx scripts/typegen.ts",
141
141
  "release": "bumpp && pnpm publish",
142
142
  "typecheck": "tsc --noEmit"
143
143
  }