@agilebot/eslint-config 0.2.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @agilebot/eslint-config v0.2.5
2
+ * @license @agilebot/eslint-config v0.3.0
3
3
  *
4
4
  * Copyright (c) Agilebot, Inc. and its affiliates.
5
5
  *
@@ -48,7 +48,7 @@ var import_node_fs = __toESM(require("fs"));
48
48
  var import_node_path = __toESM(require("path"));
49
49
  var import_eslint_utils = require("@agilebot/eslint-utils");
50
50
 
51
- // src/cli/constants.ts
51
+ // src/factory/constants.ts
52
52
  var defaultExtensions = [
53
53
  ".js",
54
54
  ".jsx",
@@ -60,6 +60,8 @@ var defaultExtensions = [
60
60
  ".mts",
61
61
  ".vue"
62
62
  ];
63
+
64
+ // src/cli/constants.ts
63
65
  var isEslint = /^\.eslint.*/;
64
66
 
65
67
  // src/cli/index.ts
@@ -69,7 +71,8 @@ function cli() {
69
71
  ext: false,
70
72
  fix: false,
71
73
  config: false,
72
- checkIntl: false
74
+ checkIntl: false,
75
+ progress: false
73
76
  };
74
77
  const pkg = require.resolve("eslint/package.json");
75
78
  const bin = import_node_path.default.join(pkg, "..", "bin", "eslint.js");
@@ -78,6 +81,7 @@ function cli() {
78
81
  has.fix = has.fix || arg === "--fix";
79
82
  has.config = has.config || arg === "-c" || arg === "--config";
80
83
  has.checkIntl = has.checkIntl || arg === "--check-intl";
84
+ has.progress = has.progress || arg === "--progress";
81
85
  });
82
86
  if (!has.fix) {
83
87
  process.argv.splice(2, 0, "--fix");
@@ -85,7 +89,7 @@ function cli() {
85
89
  if (!has.ext) {
86
90
  process.argv.splice(2, 0, "--ext", defaultExtensions.join(","));
87
91
  }
88
- if (!(0, import_eslint_utils.isCI)()) {
92
+ if (has.progress && !(0, import_eslint_utils.isCI)()) {
89
93
  process.argv.splice(
90
94
  2,
91
95
  0,
package/dist/index.d.ts CHANGED
@@ -1,14 +1,32 @@
1
1
  import { Linter } from 'eslint';
2
2
 
3
3
  interface FactoryOptions {
4
+ /** ESLint configuration (default: undefined) */
5
+ config?: Pick<Linter.Config, 'rules' | 'settings'>;
6
+ /** List of development dependencies (default: undefined) */
4
7
  devDependencies?: string[];
8
+ /** List of core modules (default: undefined) */
9
+ coreModules?: string[];
10
+ /** List of words to include in cspell (default: undefined) */
5
11
  cspellWords?: string[];
12
+ /** Monorepo scope (default: undefined) */
6
13
  monorepoScope?: string;
7
- config?: Linter.Config;
8
- react?: boolean;
14
+ /** Flag indicating whether to enable React configurations (default: undefined) */
15
+ react?: boolean | number;
16
+ /** Version of Vue.js (optional) (default: undefined) */
9
17
  vue?: number;
18
+ /** Flag indicating whether ES modules are used (default: undefined) */
10
19
  module?: boolean;
20
+ /** Flag indicating whether to enable GoDaddy configurations (default: undefined) */
11
21
  godaddy?: boolean;
22
+ /** Flag indicating whether to enable JSDoc configurations (default: true) */
23
+ jsdoc?: boolean;
24
+ /** Flag indicating whether to enable Prettier configurations (default: true) */
25
+ prettier?: boolean;
26
+ /** Flag indicating whether to enable Lodash configurations (default: true) */
27
+ lodash?: boolean;
28
+ /** Flag indicating whether to enable CSpell configurations (default: true) */
29
+ cspell?: boolean;
12
30
  }
13
31
  declare function factory(root: string, options?: FactoryOptions): Linter.BaseConfig;
14
32
 
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @agilebot/eslint-config v0.2.5
2
+ * @license @agilebot/eslint-config v0.3.0
3
3
  *
4
4
  * Copyright (c) Agilebot, Inc. and its affiliates.
5
5
  *
@@ -10,7 +10,9 @@
10
10
  "use strict";
11
11
  var __create = Object.create;
12
12
  var __defProp = Object.defineProperty;
13
+ var __defProps = Object.defineProperties;
13
14
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
15
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
14
16
  var __getOwnPropNames = Object.getOwnPropertyNames;
15
17
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
16
18
  var __getProtoOf = Object.getPrototypeOf;
@@ -28,6 +30,7 @@ var __spreadValues = (a, b) => {
28
30
  }
29
31
  return a;
30
32
  };
33
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
31
34
  var __export = (target, all) => {
32
35
  for (var name in all)
33
36
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -57,10 +60,9 @@ __export(src_exports, {
57
60
  });
58
61
  module.exports = __toCommonJS(src_exports);
59
62
 
60
- // src/factory.ts
63
+ // src/factory/index.ts
61
64
  var import_node_assert = __toESM(require("assert"));
62
- var import_eslint_utils2 = require("@agilebot/eslint-utils");
63
- var import_fast_glob = require("fast-glob");
65
+ var import_eslint_utils3 = require("@agilebot/eslint-utils");
64
66
 
65
67
  // src/configs/env.ts
66
68
  function env() {
@@ -77,17 +79,20 @@ function env() {
77
79
  }
78
80
 
79
81
  // src/configs/standard.ts
82
+ var import_eslint_config_love = __toESM(require("eslint-config-love"));
80
83
  function standard() {
84
+ const standardRules = {};
85
+ Object.entries(import_eslint_config_love.default.rules).forEach(([key, value]) => {
86
+ if (key.startsWith("import/")) {
87
+ standardRules[`import-x/${key.slice(7)}`] = value;
88
+ } else {
89
+ standardRules[key] = value;
90
+ }
91
+ });
81
92
  return {
82
- extends: ["love"],
83
- rules: {
93
+ plugins: ["@typescript-eslint", "import-x", "n", "promise"],
94
+ rules: __spreadProps(__spreadValues({}, standardRules), {
84
95
  "no-alert": "error",
85
- // 避免使用同步方法
86
- "n/no-sync": "error",
87
- // 尽量使用fs.promises而不是fs
88
- "n/prefer-promises/fs": "error",
89
- "arrow-body-style": "off",
90
- curly: "error",
91
96
  // 找出TODO注释,以便后期修复
92
97
  "no-warning-comments": [
93
98
  "warn",
@@ -95,16 +100,48 @@ function standard() {
95
100
  terms: ["todo", "fixme"]
96
101
  }
97
102
  ],
103
+ // 避免使用同步方法
104
+ "n/no-sync": "error",
105
+ // 尽量使用fs.promises而不是fs
106
+ "n/prefer-promises/fs": "error",
98
107
  // 路径拼接使用path.join,而不是直接使用加号
99
- "n/no-path-concat": "error"
100
- }
108
+ "n/no-path-concat": "error",
109
+ "promise/no-return-wrap": "error",
110
+ "promise/no-nesting": "error",
111
+ "promise/no-promise-in-callback": "error",
112
+ "promise/no-callback-in-promise": "error",
113
+ "promise/param-names": "error",
114
+ "promise/valid-params": "error",
115
+ "promise/no-multiple-resolved": "error",
116
+ "promise/no-return-in-finally": "error",
117
+ "promise/prefer-await-to-then": "warn",
118
+ // 覆盖standard中的规则
119
+ "@typescript-eslint/no-confusing-void-expression": "off",
120
+ "@typescript-eslint/space-before-function-paren": "off",
121
+ "@typescript-eslint/unbound-method": "off",
122
+ "@typescript-eslint/no-extraneous-class": "off",
123
+ "@typescript-eslint/consistent-type-assertions": "off",
124
+ "@typescript-eslint/method-signature-style": "off",
125
+ "@typescript-eslint/no-non-null-assertion": "off",
126
+ "@typescript-eslint/strict-boolean-expressions": "off",
127
+ "@typescript-eslint/explicit-function-return-type": "off",
128
+ "@typescript-eslint/restrict-template-expressions": "off",
129
+ "@typescript-eslint/explicit-member-accessibility": "off",
130
+ "@typescript-eslint/no-unsafe-argument": "off"
131
+ })
101
132
  };
102
133
  }
103
134
 
104
135
  // src/configs/ts.ts
136
+ var import_eslint_utils = require("@agilebot/eslint-utils");
105
137
  function ts() {
106
138
  return {
107
- plugins: ["@typescript-eslint", "@stylistic", "prefer-arrow-functions"],
139
+ plugins: [
140
+ "@typescript-eslint",
141
+ "@stylistic",
142
+ "prefer-arrow-functions",
143
+ "unused-imports"
144
+ ],
108
145
  rules: {
109
146
  // 如果没用模板字符串,避免使用反引号
110
147
  "@stylistic/quotes": ["error", "single", { avoidEscape: true }],
@@ -118,7 +155,21 @@ function ts() {
118
155
  singleReturnOnly: false
119
156
  }
120
157
  ],
121
- "@typescript-eslint/no-unused-vars": "warn",
158
+ "@typescript-eslint/no-unused-vars": "off",
159
+ "unused-imports/no-unused-imports": (0, import_eslint_utils.isInEditor)() ? "off" : "error",
160
+ "unused-imports/no-unused-vars": [
161
+ "warn",
162
+ {
163
+ args: "after-used",
164
+ argsIgnorePattern: "^_",
165
+ vars: "all",
166
+ varsIgnorePattern: "^_",
167
+ caughtErrors: "none",
168
+ caughtErrorsIgnorePattern: "^_",
169
+ destructuredArrayIgnorePattern: "^_",
170
+ ignoreRestSiblings: true
171
+ }
172
+ ],
122
173
  // 优先使用interface而不是type
123
174
  "@typescript-eslint/consistent-type-definitions": "error",
124
175
  // The `@typescript-eslint/naming-convention` rule allows `leadingUnderscore` and `trailingUnderscore` settings.
@@ -179,33 +230,7 @@ function ts() {
179
230
  {
180
231
  checksVoidReturn: false
181
232
  }
182
- ],
183
- // 以下是关闭的规则
184
- "@typescript-eslint/strict-boolean-expressions": "off",
185
- "@typescript-eslint/explicit-function-return-type": "off",
186
- "@typescript-eslint/restrict-template-expressions": "off",
187
- "@typescript-eslint/no-non-null-assertion": "off",
188
- "@typescript-eslint/method-signature-style": "off",
189
- "@typescript-eslint/consistent-type-assertions": "off",
190
- "@typescript-eslint/no-extraneous-class": "off",
191
- "@typescript-eslint/no-confusing-void-expression": "off",
192
- "@typescript-eslint/explicit-member-accessibility": "off",
193
- "@typescript-eslint/unbound-method": "off",
194
- "@typescript-eslint/no-unsafe-argument": "off"
195
- }
196
- };
197
- }
198
-
199
- // src/configs/promise.ts
200
- function promise() {
201
- return {
202
- plugins: ["promise"],
203
- rules: {
204
- "promise/no-nesting": "error",
205
- "promise/no-promise-in-callback": "error",
206
- "promise/param-names": "error",
207
- "promise/no-multiple-resolved": "error",
208
- "promise/no-return-in-finally": "error"
233
+ ]
209
234
  }
210
235
  };
211
236
  }
@@ -213,10 +238,10 @@ function promise() {
213
238
  // src/configs/import.ts
214
239
  var import_node_path = __toESM(require("path"));
215
240
  var import_node_fs = __toESM(require("fs"));
216
- var import_eslint_utils = require("@agilebot/eslint-utils");
241
+ var import_eslint_utils2 = require("@agilebot/eslint-utils");
217
242
  function eslintImport(opts) {
218
- var _a;
219
- const rootDir = (0, import_eslint_utils.findRootDir)(__dirname);
243
+ var _a, _b;
244
+ const rootDir = (0, import_eslint_utils2.findRootDir)(__dirname);
220
245
  const pkgPath = import_node_path.default.join(opts.packageDir, "package.json");
221
246
  if (!import_node_fs.default.existsSync(pkgPath)) {
222
247
  throw new Error(`package.json not found in ${opts.packageDir}`);
@@ -228,8 +253,8 @@ function eslintImport(opts) {
228
253
  [pkg.name]: "*"
229
254
  }
230
255
  };
231
- const tmpPkgSafeName = tmpPkg.name.replaceAll("/", "__");
232
- const cacheDir = (0, import_eslint_utils.findCacheDir)(rootDir);
256
+ const tmpPkgSafeName = tmpPkg.name.replace(/\//g, "__");
257
+ const cacheDir = (0, import_eslint_utils2.findCacheDir)(rootDir);
233
258
  const tmpPkgDir = import_node_path.default.join(cacheDir, "tmp-pkg", tmpPkgSafeName);
234
259
  if (!import_node_fs.default.existsSync(tmpPkgDir)) {
235
260
  import_node_fs.default.mkdirSync(tmpPkgDir, { recursive: true });
@@ -237,30 +262,30 @@ function eslintImport(opts) {
237
262
  const tmpPkgJson = JSON.stringify(tmpPkg, null, 2);
238
263
  import_node_fs.default.writeFileSync(import_node_path.default.join(tmpPkgDir, "package.json"), tmpPkgJson);
239
264
  return {
240
- plugins: ["import", "no-relative-import-paths"],
241
- extends: ["plugin:import/recommended", "plugin:import/typescript"],
265
+ plugins: ["import-x", "no-relative-import-paths"],
266
+ extends: ["plugin:import-x/recommended", "plugin:import-x/typescript"],
242
267
  rules: {
243
- "import/no-unresolved": "error",
244
- "import/no-named-as-default-member": "off",
245
- "import/no-named-as-default": "off",
246
- "import/no-useless-path-segments": [
268
+ "import-x/no-unresolved": "error",
269
+ "import-x/no-named-as-default-member": "off",
270
+ "import-x/no-named-as-default": "off",
271
+ "import-x/no-useless-path-segments": [
247
272
  "error",
248
273
  {
249
274
  noUselessIndex: true
250
275
  }
251
276
  ],
252
- "import/no-cycle": "error",
253
- "import/newline-after-import": "error",
254
- "import/first": "error",
255
- "import/no-import-module-exports": "error",
256
- "import/no-anonymous-default-export": [
277
+ "import-x/no-cycle": "error",
278
+ "import-x/newline-after-import": "error",
279
+ "import-x/first": "error",
280
+ "import-x/no-import-module-exports": "error",
281
+ "import-x/no-anonymous-default-export": [
257
282
  "error",
258
283
  {
259
284
  allowArray: true,
260
285
  allowObject: true
261
286
  }
262
287
  ],
263
- "import/no-extraneous-dependencies": [
288
+ "import-x/no-extraneous-dependencies": [
264
289
  "error",
265
290
  {
266
291
  packageDir: [opts.packageDir, tmpPkgDir, rootDir],
@@ -278,7 +303,7 @@ function eslintImport(opts) {
278
303
  includeInternal: true
279
304
  }
280
305
  ],
281
- "import/order": [
306
+ "import-x/order": [
282
307
  "error",
283
308
  {
284
309
  groups: [
@@ -307,15 +332,16 @@ function eslintImport(opts) {
307
332
  ]
308
333
  },
309
334
  settings: {
310
- "import/parsers": {
335
+ "import-x/parsers": {
311
336
  "@typescript-eslint/parser": [".ts", ".tsx"]
312
337
  },
313
- "import/resolver": {
338
+ "import-x/resolver": {
314
339
  typescript: {
315
340
  alwaysTryTypes: true
316
341
  }
317
342
  },
318
- "import/internal-regex": opts.monorepoScope ? `^${opts.monorepoScope.replaceAll("/", "")}/` : void 0
343
+ "import-x/internal-regex": opts.monorepoScope ? `^${opts.monorepoScope.replace(/\//g, "")}/` : void 0,
344
+ "import-x/core-modules": (_b = opts.coreModules) != null ? _b : void 0
319
345
  }
320
346
  };
321
347
  }
@@ -359,7 +385,7 @@ function unicorn(opts) {
359
385
  }
360
386
 
361
387
  // src/configs/react.ts
362
- function react() {
388
+ function react(opts) {
363
389
  return {
364
390
  plugins: ["react", "react-hooks", "jsx-a11y"],
365
391
  extends: [
@@ -416,7 +442,7 @@ function react() {
416
442
  },
417
443
  settings: {
418
444
  react: {
419
- version: "detect"
445
+ version: typeof opts.version === "number" ? opts.version : "detect"
420
446
  }
421
447
  }
422
448
  };
@@ -432,10 +458,12 @@ function vue(opts) {
432
458
  }
433
459
 
434
460
  // src/configs/jsdoc.ts
435
- function jsdoc() {
461
+ function jsdoc(opt) {
436
462
  return {
437
463
  plugins: ["jsdoc"],
438
- extends: ["plugin:jsdoc/recommended-typescript-error"],
464
+ extends: [
465
+ opt.ts ? "plugin:jsdoc/recommended-typescript-error" : "plugin:jsdoc/recommended-error"
466
+ ],
439
467
  rules: {
440
468
  // 禁止有空行
441
469
  "jsdoc/no-blank-block-descriptions": "error",
@@ -457,8 +485,8 @@ function lodash() {
457
485
  };
458
486
  }
459
487
 
460
- // src/configs/eslint.ts
461
- function eslint() {
488
+ // src/configs/comments.ts
489
+ function comments() {
462
490
  return {
463
491
  plugins: ["eslint-comments"],
464
492
  rules: {
@@ -540,27 +568,28 @@ function agilebot(opts) {
540
568
  },
541
569
  settings: {
542
570
  "agilebot/project-root": opts.root,
543
- "agilebot/monorepo-scope": opts.monorepoScope ? (
544
- // eslint-disable-next-line unicorn/prefer-string-replace-all -- not supported in Node.js 12
545
- opts.monorepoScope.replace(/\//g, "")
546
- ) : void 0
571
+ "agilebot/monorepo-scope": opts.monorepoScope ? opts.monorepoScope.replace(/\//g, "") : void 0
547
572
  }
548
573
  };
549
574
  }
550
575
 
551
576
  // src/configs/prettier.ts
577
+ var import_recommended = __toESM(require("eslint-plugin-prettier/recommended"));
552
578
  function prettier() {
553
579
  return {
554
580
  plugins: ["prettier"],
555
- extends: ["plugin:prettier/recommended"],
556
- rules: {
581
+ // Do not extends
582
+ // extends: ['plugin:prettier/recommended'],
583
+ rules: __spreadProps(__spreadValues({}, import_recommended.default.rules), {
584
+ curly: "error",
585
+ "arrow-body-style": "off",
557
586
  "prettier/prettier": [
558
587
  "error",
559
588
  {
560
589
  endOfLine: "auto"
561
590
  }
562
591
  ]
563
- }
592
+ })
564
593
  };
565
594
  }
566
595
 
@@ -590,64 +619,91 @@ function godaddy() {
590
619
  };
591
620
  }
592
621
 
593
- // src/factory.ts
622
+ // src/factory/constants.ts
623
+ var defaultExtensions = [
624
+ ".js",
625
+ ".jsx",
626
+ ".ts",
627
+ ".tsx",
628
+ ".cjs",
629
+ ".mjs",
630
+ ".cts",
631
+ ".mts",
632
+ ".vue"
633
+ ];
634
+ var jsExtensions = [".js", ".jsx", ".cjs", ".mjs"];
635
+ var tsExtensions = [".ts", ".tsx", ".cts", ".mts"];
636
+ var dtsExtensions = [".d.ts", ".d.cts", ".d.mts"];
637
+
638
+ // src/factory/index.ts
594
639
  function factory(root, options) {
595
- var _a, _b, _c, _d;
640
+ var _a, _b, _c, _d, _e;
596
641
  import_node_assert.default.ok(root, "root option is required");
642
+ const defaultOptions = {
643
+ jsdoc: true,
644
+ prettier: true,
645
+ lodash: true,
646
+ cspell: true
647
+ };
648
+ options = __spreadValues(__spreadValues({}, defaultOptions), options);
649
+ if (options == null ? void 0 : options.config) {
650
+ import_node_assert.default.ok(
651
+ Object.keys(options.config).every(
652
+ (key) => key === "rules" || key === "settings"
653
+ ),
654
+ "config option must only contain rules and settings"
655
+ );
656
+ }
597
657
  const commonConfigs = [
598
658
  unicorn({
599
659
  module: (_a = options == null ? void 0 : options.module) != null ? _a : false
600
660
  }),
601
- eslint(),
661
+ comments(),
602
662
  eslintImport({
603
663
  packageDir: root,
604
664
  devDependencies: options == null ? void 0 : options.devDependencies,
605
- monorepoScope: options == null ? void 0 : options.monorepoScope
665
+ monorepoScope: options == null ? void 0 : options.monorepoScope,
666
+ coreModules: options == null ? void 0 : options.coreModules
606
667
  }),
607
- prettier()
668
+ options.prettier ? prettier() : {}
608
669
  ];
609
670
  if (options == null ? void 0 : options.godaddy) {
610
- return (0, import_eslint_utils2.mergeESLintConfig)(
671
+ return (0, import_eslint_utils3.mergeESLintConfig)(
611
672
  godaddy(),
612
673
  ...commonConfigs,
613
674
  (_b = options == null ? void 0 : options.config) != null ? _b : {}
614
675
  );
615
676
  }
677
+ const tsconfigFiles = (0, import_eslint_utils3.findTsconfigFiles)(root, {
678
+ absolute: true
679
+ });
616
680
  const config = {
617
681
  overrides: [
618
682
  __spreadValues({
619
- files: [
620
- "*.ts",
621
- "*.tsx",
622
- "*.cts",
623
- "*.mts",
624
- "*.js",
625
- "*.jsx",
626
- "*.cjs",
627
- "*.mjs",
628
- "*.vue"
629
- ],
683
+ files: defaultExtensions.map((ext) => `*${ext}`),
630
684
  parser: !(options == null ? void 0 : options.vue) ? "@typescript-eslint/parser" : "vue-eslint-parser",
631
685
  parserOptions: {
632
686
  parser: "@typescript-eslint/parser",
633
687
  tsconfigRootDir: root,
634
688
  extraFileExtensions: !(options == null ? void 0 : options.vue) ? void 0 : [".vue"]
635
689
  }
636
- }, (0, import_eslint_utils2.mergeESLintConfig)(
690
+ }, (0, import_eslint_utils3.mergeESLintConfig)(
637
691
  env(),
638
692
  standard(),
693
+ // standard必须在ts之前
639
694
  ts(),
640
- promise(),
641
- (options == null ? void 0 : options.react) ? react() : {},
695
+ (options == null ? void 0 : options.react) ? react({ version: options.react }) : {},
642
696
  (options == null ? void 0 : options.vue) ? vue({
643
697
  version: options.vue
644
698
  }) : {},
645
- jsdoc(),
646
- lodash(),
699
+ (options == null ? void 0 : options.jsdoc) ? jsdoc({
700
+ ts: true
701
+ }) : {},
702
+ (options == null ? void 0 : options.lodash) ? lodash() : {},
647
703
  deprecation(),
648
- cspell({
704
+ (options == null ? void 0 : options.cspell) ? cspell({
649
705
  words: (_c = options == null ? void 0 : options.cspellWords) != null ? _c : []
650
- }),
706
+ }) : {},
651
707
  ...commonConfigs,
652
708
  agilebot({
653
709
  root,
@@ -655,14 +711,26 @@ function factory(root, options) {
655
711
  }),
656
712
  (_d = options == null ? void 0 : options.config) != null ? _d : {}
657
713
  )),
714
+ __spreadValues({
715
+ files: jsExtensions.map((ext) => `*${ext}`)
716
+ }, (0, import_eslint_utils3.mergeESLintConfig)(
717
+ {
718
+ rules: {
719
+ "@typescript-eslint/no-var-requires": "off"
720
+ }
721
+ },
722
+ (options == null ? void 0 : options.jsdoc) ? jsdoc({
723
+ ts: false
724
+ }) : {}
725
+ )),
658
726
  {
659
- files: ["*.ts", "*.tsx"],
727
+ files: tsExtensions.map((ext) => `*${ext}`),
660
728
  rules: {
661
729
  "@typescript-eslint/explicit-member-accessibility": "error"
662
730
  }
663
731
  },
664
732
  {
665
- files: ["*.d.ts", "*.cts", "*.mts"],
733
+ files: dtsExtensions.map((ext) => `*${ext}`),
666
734
  rules: {
667
735
  // .d.ts中支持导入ts文件中的类型
668
736
  "@typescript-eslint/consistent-type-imports": "off",
@@ -671,24 +739,11 @@ function factory(root, options) {
671
739
  // .d.ts中忽略三斜线引用
672
740
  "@typescript-eslint/triple-slash-reference": "off"
673
741
  }
674
- },
675
- {
676
- files: ["*.js", "*.jsx", "*.cjs"],
677
- rules: {
678
- "@typescript-eslint/no-var-requires": "off"
679
- }
680
742
  }
681
743
  ]
682
744
  };
683
- const tsconfigFiles = (0, import_fast_glob.globSync)("tsconfig*.json", {
684
- cwd: root
685
- });
686
- if (config.parserOptions) {
687
- if (tsconfigFiles.length > 0) {
688
- config.parserOptions.project = tsconfigFiles;
689
- } else {
690
- config.parserOptions.project = true;
691
- }
745
+ if ((_e = config.overrides) == null ? void 0 : _e[0].parserOptions) {
746
+ config.overrides[0].parserOptions.project = tsconfigFiles.length > 0 ? tsconfigFiles : true;
692
747
  }
693
748
  return config;
694
749
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agilebot/eslint-config",
3
- "version": "0.2.5",
3
+ "version": "0.3.0",
4
4
  "description": "Agilebot's ESLint config",
5
5
  "bin": {
6
6
  "eslint-agilebot": "bin/eslint-agilebot"
@@ -20,8 +20,8 @@
20
20
  "dependencies": {
21
21
  "@cspell/eslint-plugin": "^8.7.0",
22
22
  "@stylistic/eslint-plugin": "^1.7.0",
23
- "@typescript-eslint/eslint-plugin": "^7.6.0",
24
- "@typescript-eslint/parser": "^7.6.0",
23
+ "@typescript-eslint/eslint-plugin": "~7.7.0",
24
+ "@typescript-eslint/parser": "~7.7.0",
25
25
  "eslint-config-godaddy": "^6.0.0",
26
26
  "eslint-config-love": "^47.0.0",
27
27
  "eslint-config-prettier": "^9.1.0",
@@ -29,7 +29,7 @@
29
29
  "eslint-plugin-deprecation": "^2.0.0",
30
30
  "eslint-plugin-eslint-comments": "^3.2.0",
31
31
  "eslint-plugin-file-progress": "^1.3.0",
32
- "eslint-plugin-import": "npm:eslint-plugin-i@^2.29.1",
32
+ "eslint-plugin-import-x": "^0.5.0",
33
33
  "eslint-plugin-jsdoc": "^48.2.1",
34
34
  "eslint-plugin-jsx-a11y": "^6.8.0",
35
35
  "eslint-plugin-n": "^17.2.0",
@@ -41,14 +41,15 @@
41
41
  "eslint-plugin-react-hooks": "^4.6.0",
42
42
  "eslint-plugin-react-prefer-function-component": "^3.3.0",
43
43
  "eslint-plugin-unicorn": "^52.0.0",
44
+ "eslint-plugin-unused-imports": "^3.2.0",
44
45
  "eslint-plugin-vue": "^9.25.0",
45
46
  "eslint-plugin-you-dont-need-lodash-underscore": "^6.13.0",
46
- "fast-glob": "^3.3.2",
47
- "@agilebot/eslint-utils": "0.2.5"
47
+ "vue-eslint-parser": "^9.4.2",
48
+ "@agilebot/eslint-utils": "0.3.0"
48
49
  },
49
50
  "peerDependencies": {
50
51
  "eslint": "^7.0.0 || ^8.0.0",
51
- "@agilebot/eslint-plugin": "0.2.5"
52
+ "@agilebot/eslint-plugin": "0.3.0"
52
53
  },
53
54
  "files": [
54
55
  "bin",