@ntnyq/eslint-config 2.5.3 → 2.6.1

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
@@ -1,4 +1,4 @@
1
- // src/env.ts
1
+ // src/utils/env.ts
2
2
  import process from "node:process";
3
3
  import { resolve } from "node:path";
4
4
  import { isPackageExists } from "local-pkg";
@@ -8,7 +8,22 @@ var hasVue = isPackageExists("vue") || isPackageExists("nuxt") || isPackageExist
8
8
  });
9
9
  var hasUnoCSS = isPackageExists("unocss") || isPackageExists("@unocss/postcss") || isPackageExists("@unocss/webpack") || isPackageExists("@unocss/nuxt");
10
10
 
11
- // src/types.ts
11
+ // src/utils/interopDefault.ts
12
+ async function interopDefault(mod) {
13
+ const resolved = await mod;
14
+ return resolved.default || resolved;
15
+ }
16
+
17
+ // src/utils/loadPlugin.ts
18
+ async function loadPlugin(name) {
19
+ const mod = await import(name).catch((err) => {
20
+ console.error(err);
21
+ throw new Error(`Failed to load ESLint plugin '${name}'. Please install it!.`);
22
+ });
23
+ return interopDefault(mod);
24
+ }
25
+
26
+ // src/utils/defineConfig.ts
12
27
  function defineConfig(configs = []) {
13
28
  return configs;
14
29
  }
@@ -31,6 +46,7 @@ var GLOB_JSONC = "**/*.jsonc";
31
46
  var GLOB_VUE = "**/*.vue";
32
47
  var GLOB_MARKDOWN = "**/*.md";
33
48
  var GLOB_YAML = "**/*.y?(a)ml";
49
+ var GLOB_TOML = "**/*.toml";
34
50
  var GLOB_HTML = "**/*.htm?(l)";
35
51
  var GLOB_ALL_SRC = [
36
52
  GLOB_SRC,
@@ -40,6 +56,7 @@ var GLOB_ALL_SRC = [
40
56
  GLOB_MARKDOWN,
41
57
  GLOB_VUE,
42
58
  GLOB_YAML,
59
+ GLOB_TOML,
43
60
  GLOB_HTML
44
61
  ];
45
62
  var GLOB_NODE_MODULES = "**/node_modules/**";
@@ -79,6 +96,7 @@ var GLOB_EXCLUDE = [
79
96
  "**/?(.)cache",
80
97
  "**/.eslintcache",
81
98
  "**/.stylelintcache",
99
+ "**/.eslint-config-inspector",
82
100
  "**/.vite-inspect",
83
101
  "**/.nuxt",
84
102
  "**/.wxt",
@@ -101,26 +119,25 @@ var ignores = defineConfig([
101
119
  ]);
102
120
 
103
121
  // src/plugins.ts
122
+ import tseslint from "typescript-eslint";
123
+ import * as pluginRegexp from "eslint-plugin-regexp";
104
124
  import { default as default2 } from "eslint-plugin-n";
105
125
  import { default as default3 } from "eslint-plugin-vue";
106
- import { default as default4 } from "@unocss/eslint-plugin";
107
- import { default as default5 } from "eslint-plugin-unicorn";
108
- import { default as default6 } from "eslint-plugin-prettier";
109
- import { default as default7 } from "eslint-plugin-markdown";
110
- import { default as default8 } from "eslint-plugin-eslint-comments";
111
- import { default as default9 } from "eslint-plugin-yml";
112
- import { default as default10 } from "eslint-plugin-jsonc";
113
- import { default as default11 } from "eslint-plugin-import-x";
114
- import { default as default12 } from "eslint-plugin-jsdoc";
115
- import * as pluginRegexp from "eslint-plugin-regexp";
116
- import tseslint from "typescript-eslint";
126
+ import { default as default4 } from "eslint-plugin-yml";
127
+ import { default as default5 } from "eslint-plugin-toml";
128
+ import { default as default6 } from "eslint-plugin-jsonc";
129
+ import { default as default7 } from "eslint-plugin-jsdoc";
130
+ import { default as default8 } from "@unocss/eslint-plugin";
131
+ import { default as default9 } from "eslint-plugin-unicorn";
132
+ import { default as default10 } from "eslint-plugin-import-x";
133
+ import { default as default11 } from "eslint-plugin-prettier";
134
+ import { default as default12 } from "eslint-plugin-markdown";
135
+ import { default as default13 } from "eslint-plugin-unused-imports";
136
+ import { default as default14 } from "@eslint-community/eslint-plugin-eslint-comments";
137
+ import * as parserToml from "toml-eslint-parser";
117
138
  import * as parserYaml from "yaml-eslint-parser";
118
139
  import * as parserVue from "vue-eslint-parser";
119
140
  import * as parserJsonc from "jsonc-eslint-parser";
120
- // @__NO_SIDE_EFFECTS__
121
- function interopDefault(m) {
122
- return m.default || m;
123
- }
124
141
 
125
142
  // src/configs/node.ts
126
143
  var node = defineConfig([
@@ -147,7 +164,7 @@ var jsdoc = defineConfig([
147
164
  {
148
165
  name: "ntnyq/jsdoc",
149
166
  plugins: {
150
- jsdoc: default12
167
+ jsdoc: default7
151
168
  },
152
169
  rules: {
153
170
  "jsdoc/check-access": "warn",
@@ -176,7 +193,7 @@ var imports = defineConfig([
176
193
  {
177
194
  name: "ntnyq/imports",
178
195
  plugins: {
179
- import: default11
196
+ import: default10
180
197
  },
181
198
  settings: {
182
199
  "import/resolver": {
@@ -219,7 +236,7 @@ var unicorn = defineConfig([
219
236
  {
220
237
  name: "ntnyq/unicorn",
221
238
  plugins: {
222
- unicorn: default5
239
+ unicorn: default9
223
240
  },
224
241
  rules: {
225
242
  // Disabled for now
@@ -296,11 +313,11 @@ var prettier = defineConfig([
296
313
  {
297
314
  name: "ntnyq/prettier",
298
315
  plugins: {
299
- prettier: default6
316
+ prettier: default11
300
317
  },
301
318
  rules: {
302
319
  ...prettierConfig.rules,
303
- ...default6.configs.recommended.rules,
320
+ ...default11.configs.recommended.rules,
304
321
  "prettier/prettier": "warn"
305
322
  }
306
323
  }
@@ -311,11 +328,11 @@ var comments = defineConfig([
311
328
  {
312
329
  name: "ntnyq/eslint-comments",
313
330
  plugins: {
314
- "eslint-comments": default8
331
+ "@eslint-community/eslint-comments": default14
315
332
  },
316
333
  rules: {
317
- ...default8.configs.recommended.rules,
318
- "eslint-comments/disable-enable-pair": ["error", { allowWholeFile: true }]
334
+ ...default14.configs.recommended.rules,
335
+ "@eslint-community/eslint-comments/disable-enable-pair": ["error", { allowWholeFile: true }]
319
336
  }
320
337
  }
321
338
  ]);
@@ -635,7 +652,7 @@ var javascript = defineConfig([
635
652
  "max-lines-per-function": [
636
653
  "error",
637
654
  {
638
- max: 100,
655
+ max: 200,
639
656
  skipComments: true,
640
657
  skipBlankLines: true
641
658
  }
@@ -797,6 +814,29 @@ var typescript = defineConfig([
797
814
  }
798
815
  ]);
799
816
 
817
+ // src/configs/unusedImports.ts
818
+ var unusedImports = defineConfig([
819
+ {
820
+ name: "ntnyq/unused-imports",
821
+ plugins: {
822
+ "unused-imports": default13
823
+ },
824
+ rules: {
825
+ "@typescript-eslint/no-unused-vars": "off",
826
+ "unused-imports/no-unused-imports": "error",
827
+ "unused-imports/no-unused-vars": [
828
+ "warn",
829
+ {
830
+ vars: "all",
831
+ varsIgnorePattern: "^_",
832
+ args: "after-used",
833
+ argsIgnorePattern: "^_"
834
+ }
835
+ ]
836
+ }
837
+ }
838
+ ]);
839
+
800
840
  // src/configs/regexp.ts
801
841
  var regexp = defineConfig([
802
842
  /**
@@ -813,7 +853,7 @@ var unocss = defineConfig([
813
853
  {
814
854
  name: "ntnyq/unocss",
815
855
  plugins: {
816
- unocss: default4
856
+ unocss: default8
817
857
  },
818
858
  rules: {
819
859
  "unocss/order": "error",
@@ -825,7 +865,7 @@ var unocss = defineConfig([
825
865
 
826
866
  // src/configs/command.ts
827
867
  import createCommandPlugin from "eslint-plugin-command/config";
828
- var command = defineConfig([createCommandPlugin({})]);
868
+ var command = defineConfig([createCommandPlugin()]);
829
869
 
830
870
  // src/configs/yml.ts
831
871
  var yml = defineConfig([
@@ -836,17 +876,52 @@ var yml = defineConfig([
836
876
  parser: parserYaml
837
877
  },
838
878
  plugins: {
839
- yml: default9
879
+ yml: default4
840
880
  },
841
881
  rules: {
842
- ...default9.configs.standard.rules,
843
- ...default9.configs.prettier.rules,
882
+ ...default4.configs.standard.rules,
883
+ ...default4.configs.prettier.rules,
844
884
  "yml/no-empty-mapping-value": "off",
845
885
  "yml/quotes": ["error", { avoidEscape: false, prefer: "single" }]
846
886
  }
847
887
  }
848
888
  ]);
849
889
 
890
+ // src/configs/toml.ts
891
+ var toml = defineConfig([
892
+ {
893
+ name: "ntnyq/toml",
894
+ files: [GLOB_TOML],
895
+ languageOptions: {
896
+ parser: parserToml
897
+ },
898
+ plugins: {
899
+ toml: default5
900
+ },
901
+ rules: {
902
+ "toml/comma-style": "error",
903
+ "toml/keys-order": "error",
904
+ "toml/no-space-dots": "error",
905
+ "toml/no-unreadable-number-separator": "error",
906
+ "toml/precision-of-fractional-seconds": "error",
907
+ "toml/precision-of-integer": "error",
908
+ "toml/tables-order": "error",
909
+ "toml/indent": ["error", 2],
910
+ "toml/vue-custom-block/no-parsing-error": "error",
911
+ "toml/array-bracket-newline": "error",
912
+ "toml/array-bracket-spacing": "error",
913
+ "toml/array-element-newline": "error",
914
+ "toml/inline-table-curly-spacing": "error",
915
+ "toml/key-spacing": "error",
916
+ "toml/padding-line-between-pairs": "error",
917
+ "toml/padding-line-between-tables": "error",
918
+ "toml/quoted-keys": "error",
919
+ "toml/spaced-comment": "error",
920
+ "toml/table-bracket-spacing": "error"
921
+ }
922
+ }
923
+ ]);
924
+
850
925
  // src/configs/sort.ts
851
926
  var sortPackageJson = defineConfig([
852
927
  {
@@ -1070,13 +1145,13 @@ var jsonc = defineConfig([
1070
1145
  name: "ntnyq/jsonc",
1071
1146
  files: [GLOB_JSON, GLOB_JSON5, GLOB_JSONC, "**/*rc"],
1072
1147
  plugins: {
1073
- jsonc: default10
1148
+ jsonc: default6
1074
1149
  },
1075
1150
  languageOptions: {
1076
1151
  parser: parserJsonc
1077
1152
  },
1078
1153
  rules: {
1079
- ...default10.configs["recommended-with-jsonc"].rules,
1154
+ ...default6.configs["recommended-with-jsonc"].rules,
1080
1155
  "jsonc/array-bracket-spacing": ["error", "never"],
1081
1156
  "jsonc/comma-dangle": ["error", "never"],
1082
1157
  "jsonc/comma-style": ["error", "last"],
@@ -1109,9 +1184,7 @@ var jsonc = defineConfig([
1109
1184
 
1110
1185
  // src/configs/markdown.ts
1111
1186
  var markdown = defineConfig([
1112
- // TODO: Add config name for markdown plugin
1113
- // wait for https://github.com/eslint/eslint-plugin-markdown/pull/256
1114
- ...default7.configs.recommended,
1187
+ ...default12.configs.recommended,
1115
1188
  {
1116
1189
  name: "ntnyq/markdown/extensions",
1117
1190
  files: [`${GLOB_MARKDOWN}/${GLOB_SRC}`, `${GLOB_MARKDOWN}/${GLOB_VUE}`],
@@ -1418,7 +1491,7 @@ var presetJavaScript = [
1418
1491
  ];
1419
1492
  var presetBasic = [...presetJavaScript, ...typescript];
1420
1493
  var presetJsonc = [...jsonc, ...sortPackageJson, ...sortTsConfig];
1421
- var presetLanguageExtensions = [...presetJsonc, ...yml, ...markdown];
1494
+ var presetLanguageExtensions = [...presetJsonc, ...yml, ...toml, ...markdown];
1422
1495
  var presetCommon = [...presetBasic, ...presetLanguageExtensions, ...prettier];
1423
1496
  var presetAll = [...presetCommon, ...vue, ...unocss];
1424
1497
  function ntnyq(config = [], {
@@ -1428,7 +1501,7 @@ function ntnyq(config = [], {
1428
1501
  markdown: enableMarkdown = true,
1429
1502
  command: enableCommand = true
1430
1503
  } = {}) {
1431
- const configs = defineConfig([...presetBasic, ...yml, ...presetJsonc]);
1504
+ const configs = defineConfig([...presetBasic, ...yml, ...toml, ...presetJsonc]);
1432
1505
  if (enableVue) {
1433
1506
  configs.push(...vue);
1434
1507
  }
@@ -1469,6 +1542,7 @@ export {
1469
1542
  GLOB_SRC,
1470
1543
  GLOB_SRC_EXT,
1471
1544
  GLOB_STYLE,
1545
+ GLOB_TOML,
1472
1546
  GLOB_TS,
1473
1547
  GLOB_TSX,
1474
1548
  GLOB_VUE,
@@ -1487,24 +1561,28 @@ export {
1487
1561
  jsdoc,
1488
1562
  jsonc,
1489
1563
  jsx,
1564
+ loadPlugin,
1490
1565
  markdown,
1491
1566
  node,
1492
1567
  ntnyq,
1493
1568
  parserJsonc,
1569
+ parserToml,
1494
1570
  parserVue,
1495
1571
  parserYaml,
1496
- default8 as pluginComments,
1497
- default11 as pluginImport,
1498
- default12 as pluginJsdoc,
1499
- default10 as pluginJsonc,
1500
- default7 as pluginMarkdown,
1572
+ default14 as pluginComments,
1573
+ default10 as pluginImport,
1574
+ default7 as pluginJsdoc,
1575
+ default6 as pluginJsonc,
1576
+ default12 as pluginMarkdown,
1501
1577
  default2 as pluginNode,
1502
- default6 as pluginPrettier,
1578
+ default11 as pluginPrettier,
1503
1579
  pluginRegexp,
1504
- default5 as pluginUnicorn,
1505
- default4 as pluginUnoCSS,
1580
+ default5 as pluginToml,
1581
+ default9 as pluginUnicorn,
1582
+ default8 as pluginUnoCSS,
1583
+ default13 as pluginUnusedImports,
1506
1584
  default3 as pluginVue,
1507
- default9 as pluginYaml,
1585
+ default4 as pluginYaml,
1508
1586
  presetAll,
1509
1587
  presetBasic,
1510
1588
  presetCommon,
@@ -1515,11 +1593,13 @@ export {
1515
1593
  regexp,
1516
1594
  sortPackageJson,
1517
1595
  sortTsConfig,
1596
+ toml,
1518
1597
  tseslint,
1519
1598
  typescript,
1520
1599
  typescriptCore,
1521
1600
  unicorn,
1522
1601
  unocss,
1602
+ unusedImports,
1523
1603
  vue,
1524
1604
  yml
1525
1605
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ntnyq/eslint-config",
3
3
  "type": "module",
4
- "version": "2.5.3",
4
+ "version": "2.6.1",
5
5
  "packageManager": "pnpm@9.5.0",
6
6
  "description": "ESLint flat config of ntnyq",
7
7
  "keywords": [
@@ -36,10 +36,11 @@
36
36
  "dist"
37
37
  ],
38
38
  "scripts": {
39
- "build": "tsup",
39
+ "build": "pnpm run generate:type && tsup",
40
40
  "clean": "rimraf dist",
41
41
  "dev": "tsup --watch",
42
- "generate:site": "node scripts/generateSite.mjs",
42
+ "generate:site": "tsx scripts/generateSite.ts",
43
+ "generate:type": "tsx scripts/generateType.ts",
43
44
  "lint": "eslint .",
44
45
  "prepare": "husky",
45
46
  "release": "run-s release:check release:version",
@@ -54,12 +55,13 @@
54
55
  "eslint": "^9.0.0"
55
56
  },
56
57
  "dependencies": {
58
+ "@eslint-community/eslint-plugin-eslint-comments": "^4.3.0",
57
59
  "@eslint/js": "^9.7.0",
58
60
  "@types/eslint": "^8.56.10",
59
- "@unocss/eslint-plugin": "^0.61.3",
61
+ "@unocss/eslint-plugin": "^0.61.5",
60
62
  "eslint-config-prettier": "^9.1.0",
63
+ "eslint-flat-config-utils": "^0.2.5",
61
64
  "eslint-plugin-command": "^0.2.3",
62
- "eslint-plugin-eslint-comments": "^3.2.0",
63
65
  "eslint-plugin-import-x": "^3.0.1",
64
66
  "eslint-plugin-jsdoc": "^48.7.0",
65
67
  "eslint-plugin-jsonc": "^2.16.0",
@@ -67,6 +69,7 @@
67
69
  "eslint-plugin-n": "^17.9.0",
68
70
  "eslint-plugin-prettier": "^5.1.3",
69
71
  "eslint-plugin-regexp": "^2.6.0",
72
+ "eslint-plugin-toml": "^0.11.1",
70
73
  "eslint-plugin-unicorn": "^54.0.0",
71
74
  "eslint-plugin-unused-imports": "^4.0.0",
72
75
  "eslint-plugin-vue": "^9.27.0",
@@ -74,21 +77,24 @@
74
77
  "globals": "^15.8.0",
75
78
  "jsonc-eslint-parser": "^2.4.0",
76
79
  "local-pkg": "^0.5.0",
77
- "prettier": "^3.3.2",
78
- "typescript-eslint": "^8.0.0-alpha.41",
80
+ "prettier": "^3.3.3",
81
+ "toml-eslint-parser": "^0.10.0",
82
+ "typescript-eslint": "^8.0.0-alpha.44",
79
83
  "vue-eslint-parser": "^9.4.3",
80
84
  "yaml-eslint-parser": "^1.2.3"
81
85
  },
82
86
  "devDependencies": {
83
87
  "@ntnyq/prettier-config": "^1.21.2",
84
- "@types/node": "^20.14.10",
88
+ "@types/node": "^20.14.11",
85
89
  "bumpp": "^9.4.1",
86
- "eslint": "^9.6.0",
90
+ "eslint": "^9.7.0",
91
+ "eslint-typegen": "^0.2.4",
87
92
  "husky": "^9.0.11",
88
93
  "nano-staged": "^0.8.0",
89
94
  "npm-run-all2": "^6.2.2",
90
95
  "rimraf": "^6.0.1",
91
96
  "tsup": "^8.1.0",
97
+ "tsx": "^4.16.2",
92
98
  "typescript": "^5.5.3",
93
99
  "zx": "^8.1.4"
94
100
  },