@agilebot/eslint-config 0.6.1 → 0.7.0-beta.2

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,36 +1,19 @@
1
- /**
2
- * @license @agilebot/eslint-config v0.6.1
3
- *
4
- * Copyright (c) Agilebot, Inc. and its affiliates.
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE file in the root directory of this source tree.
8
- */
1
+ /**
2
+ * @license @agilebot/eslint-config v0.7.0-beta.2
3
+ *
4
+ * Copyright (c) Agilebot, Inc. and its affiliates.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
9
 
10
10
  "use strict";
11
11
  var __create = Object.create;
12
12
  var __defProp = Object.defineProperty;
13
- var __defProps = Object.defineProperties;
14
13
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
15
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
16
14
  var __getOwnPropNames = Object.getOwnPropertyNames;
17
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
18
15
  var __getProtoOf = Object.getPrototypeOf;
19
16
  var __hasOwnProp = Object.prototype.hasOwnProperty;
20
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
21
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
22
- var __spreadValues = (a, b) => {
23
- for (var prop in b || (b = {}))
24
- if (__hasOwnProp.call(b, prop))
25
- __defNormalProp(a, prop, b[prop]);
26
- if (__getOwnPropSymbols)
27
- for (var prop of __getOwnPropSymbols(b)) {
28
- if (__propIsEnum.call(b, prop))
29
- __defNormalProp(a, prop, b[prop]);
30
- }
31
- return a;
32
- };
33
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
34
17
  var __export = (target, all) => {
35
18
  for (var name in all)
36
19
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -66,22 +49,80 @@ var define_STANDARD_RULES_default = { "class-methods-use-this": ["off"], "dot-no
66
49
  // src/factory/index.ts
67
50
  var import_node_assert = __toESM(require("assert"));
68
51
  var import_eslint_utils3 = require("@agilebot/eslint-utils");
52
+ var parserTs = __toESM(require("@typescript-eslint/parser"));
53
+ var parserVue = __toESM(require("vue-eslint-parser"));
54
+
55
+ // src/configs/env.ts
56
+ var import_globals = __toESM(require("globals"));
57
+
58
+ // src/constants.ts
59
+ var JS_EXTS = [".js", ".jsx", ".cjs", ".cjsx", ".mjs", ".mjsx"];
60
+ var TS_EXTS = [".ts", ".tsx", ".cts", ".ctsx", ".mts", ".mtsx"];
61
+ var DTS_EXTS = [".d.ts", ".d.cts", ".d.mts"];
62
+ var VUE_EXTS = [".vue"];
63
+ var DEFAULT_EXTS = [...JS_EXTS, ...TS_EXTS, ...VUE_EXTS];
64
+ var JS_GLOBS = JS_EXTS.map((ext) => `**/*${ext}`);
65
+ var TS_GLOBS = TS_EXTS.map((ext) => `**/*${ext}`);
66
+ var DTS_GLOBS = DTS_EXTS.map((ext) => `**/*${ext}`);
67
+ var VUE_GLOBS = VUE_EXTS.map((ext) => `**/*${ext}`);
68
+ var DEFAULT_GLOBS = DEFAULT_EXTS.map((ext) => `**/*${ext}`);
69
+ var IGNORE_GLOBS = [
70
+ "**/node_modules",
71
+ "**/dist",
72
+ "**/package-lock.json",
73
+ "**/yarn.lock",
74
+ "**/pnpm-lock.yaml",
75
+ "**/bun.lockb",
76
+ "**/output",
77
+ "**/coverage",
78
+ "**/temp",
79
+ "**/.temp",
80
+ "**/tmp",
81
+ "**/.tmp",
82
+ "**/.history",
83
+ "**/.vitepress/cache",
84
+ "**/.nuxt",
85
+ "**/.next",
86
+ "**/.svelte-kit",
87
+ "**/.vercel",
88
+ "**/.changeset",
89
+ "**/.idea",
90
+ "**/.cache",
91
+ "**/.output",
92
+ "**/.vite-inspect",
93
+ "**/.yarn",
94
+ "**/vite.config.*.timestamp-*",
95
+ "**/CHANGELOG*.md",
96
+ "**/*.min.*",
97
+ "**/LICENSE*",
98
+ "**/__snapshots__",
99
+ "**/auto-import?(s).d.ts",
100
+ "**/components.d.ts"
101
+ ];
69
102
 
70
103
  // src/configs/env.ts
71
104
  function env() {
72
105
  return {
73
- env: {
74
- browser: true,
75
- node: true,
76
- es6: true,
77
- mocha: true,
78
- jest: true,
79
- jasmine: true
106
+ name: "agilebot/env",
107
+ files: DEFAULT_GLOBS,
108
+ languageOptions: {
109
+ globals: {
110
+ ...import_globals.default.browser,
111
+ ...import_globals.default.node,
112
+ ...import_globals.default.es2015,
113
+ ...import_globals.default.mocha,
114
+ ...import_globals.default.jest,
115
+ ...import_globals.default.jasmine
116
+ }
80
117
  }
81
118
  };
82
119
  }
83
120
 
84
121
  // src/configs/standard.ts
122
+ var import_eslint_plugin_import_x = __toESM(require("eslint-plugin-import-x"));
123
+ var import_eslint_plugin_n = __toESM(require("eslint-plugin-n"));
124
+ var import_eslint_plugin_promise = __toESM(require("eslint-plugin-promise"));
125
+ var import_eslint_plugin = __toESM(require("@typescript-eslint/eslint-plugin"));
85
126
  function standard() {
86
127
  const standardRules = {};
87
128
  const originalStdRules = (
@@ -103,8 +144,16 @@ function standard() {
103
144
  }
104
145
  });
105
146
  return {
106
- plugins: ["@typescript-eslint", "import-x", "n", "promise"],
107
- rules: __spreadProps(__spreadValues({}, standardRules), {
147
+ name: "agilebot/standard",
148
+ files: DEFAULT_GLOBS,
149
+ plugins: {
150
+ n: import_eslint_plugin_n.default,
151
+ "@typescript-eslint": import_eslint_plugin.default,
152
+ promise: import_eslint_plugin_promise.default,
153
+ "import-x": import_eslint_plugin_import_x.default
154
+ },
155
+ rules: {
156
+ ...standardRules,
108
157
  "no-alert": "error",
109
158
  // 找出TODO注释,以便后期修复
110
159
  "no-warning-comments": [
@@ -139,7 +188,7 @@ function standard() {
139
188
  }
140
189
  ],
141
190
  "@typescript-eslint/no-loop-func": "warn"
142
- })
191
+ }
143
192
  };
144
193
  }
145
194
  function standardDisabled() {
@@ -184,14 +233,20 @@ function standardDisabled() {
184
233
 
185
234
  // src/configs/ts.ts
186
235
  var import_eslint_utils = require("@agilebot/eslint-utils");
236
+ var pluginTs2 = __toESM(require("@typescript-eslint/eslint-plugin"));
237
+ var import_eslint_plugin2 = __toESM(require("@stylistic/eslint-plugin"));
238
+ var import_eslint_plugin_prefer_arrow_functions = __toESM(require("eslint-plugin-prefer-arrow-functions"));
239
+ var import_eslint_plugin_unused_imports = __toESM(require("eslint-plugin-unused-imports"));
187
240
  function ts() {
188
241
  return {
189
- plugins: [
190
- "@typescript-eslint",
191
- "@stylistic",
192
- "prefer-arrow-functions",
193
- "unused-imports"
194
- ],
242
+ name: "agilebot/ts",
243
+ files: DEFAULT_GLOBS,
244
+ plugins: {
245
+ "@typescript-eslint": pluginTs2,
246
+ "@stylistic": import_eslint_plugin2.default,
247
+ "prefer-arrow-functions": import_eslint_plugin_prefer_arrow_functions.default,
248
+ "unused-imports": import_eslint_plugin_unused_imports.default
249
+ },
195
250
  rules: {
196
251
  // 如果没用模板字符串,避免使用反引号
197
252
  "@stylistic/quotes": ["error", "single", { avoidEscape: true }],
@@ -286,6 +341,8 @@ function ts() {
286
341
  }
287
342
  function tsOnly() {
288
343
  return {
344
+ name: "agilebot/ts-only",
345
+ files: TS_GLOBS,
289
346
  rules: {
290
347
  "prefer-object-has-own": "error",
291
348
  "@typescript-eslint/explicit-member-accessibility": "error"
@@ -294,6 +351,8 @@ function tsOnly() {
294
351
  }
295
352
  function jsOnly() {
296
353
  return {
354
+ name: "agilebot/js-only",
355
+ files: JS_GLOBS,
297
356
  rules: {
298
357
  "@typescript-eslint/no-require-imports": "off"
299
358
  }
@@ -301,6 +360,8 @@ function jsOnly() {
301
360
  }
302
361
  function dts() {
303
362
  return {
363
+ name: "agilebot/dts",
364
+ files: DTS_GLOBS,
304
365
  rules: {
305
366
  // .d.ts中支持导入ts文件中的类型
306
367
  "@typescript-eslint/consistent-type-imports": "off",
@@ -316,8 +377,9 @@ function dts() {
316
377
  var import_node_path = __toESM(require("path"));
317
378
  var import_node_fs = __toESM(require("fs"));
318
379
  var import_eslint_utils2 = require("@agilebot/eslint-utils");
380
+ var import_eslint_plugin_import_x2 = __toESM(require("eslint-plugin-import-x"));
381
+ var import_eslint_plugin_no_relative_import_paths = __toESM(require("eslint-plugin-no-relative-import-paths"));
319
382
  function imports(opts) {
320
- var _a, _b;
321
383
  const rootDir = (0, import_eslint_utils2.findRootDir)(__dirname);
322
384
  const pkgPath = import_node_path.default.join(opts.packageDir, "package.json");
323
385
  if (!import_node_fs.default.existsSync(pkgPath)) {
@@ -339,9 +401,15 @@ function imports(opts) {
339
401
  const tmpPkgJson = JSON.stringify(tmpPkg, null, 2);
340
402
  import_node_fs.default.writeFileSync(import_node_path.default.join(tmpPkgDir, "package.json"), tmpPkgJson);
341
403
  return {
342
- plugins: ["import-x", "no-relative-import-paths"],
343
- extends: ["plugin:import-x/recommended", "plugin:import-x/typescript"],
404
+ name: "agilebot/imports",
405
+ files: DEFAULT_GLOBS,
406
+ plugins: {
407
+ "import-x": import_eslint_plugin_import_x2.default,
408
+ "no-relative-import-paths": import_eslint_plugin_no_relative_import_paths.default
409
+ },
344
410
  rules: {
411
+ ...import_eslint_plugin_import_x2.default.configs.recommended.rules,
412
+ ...import_eslint_plugin_import_x2.default.configs.typescript.rules,
345
413
  "import-x/no-unresolved": [
346
414
  "error",
347
415
  {
@@ -382,7 +450,7 @@ function imports(opts) {
382
450
  "**/.storybook/**",
383
451
  "**/*.stories.{ts,tsx}",
384
452
  "**/scripts/*.{ts,mts}",
385
- ...(_a = opts.devDependencies) != null ? _a : []
453
+ ...opts.devDependencies ?? []
386
454
  ],
387
455
  includeInternal: true
388
456
  }
@@ -427,17 +495,22 @@ function imports(opts) {
427
495
  }
428
496
  },
429
497
  "import-x/internal-regex": opts.monorepoScope ? `^${opts.monorepoScope.replace(/\//g, "")}/` : void 0,
430
- "import-x/core-modules": (_b = opts.coreModules) != null ? _b : void 0
498
+ "import-x/core-modules": opts.coreModules ?? void 0
431
499
  }
432
500
  };
433
501
  }
434
502
 
435
503
  // src/configs/unicorn.ts
504
+ var import_eslint_plugin_unicorn = __toESM(require("eslint-plugin-unicorn"));
436
505
  function unicorn(opts) {
437
506
  return {
438
- plugins: ["unicorn"],
439
- extends: ["plugin:unicorn/recommended"],
507
+ name: "agilebot/unicorn",
508
+ files: DEFAULT_GLOBS,
509
+ plugins: {
510
+ unicorn: import_eslint_plugin_unicorn.default
511
+ },
440
512
  rules: {
513
+ ...import_eslint_plugin_unicorn.default.configs["flat/recommended"].rules,
441
514
  "unicorn/prefer-module": opts.module ? "error" : "off",
442
515
  "unicorn/prefer-top-level-await": "off",
443
516
  "unicorn/filename-case": "off",
@@ -465,24 +538,33 @@ function unicorn(opts) {
465
538
  {
466
539
  name: "err"
467
540
  }
468
- ]
541
+ ],
542
+ "unicorn/prefer-global-this": "off"
469
543
  }
470
544
  };
471
545
  }
472
546
 
473
547
  // src/configs/react.ts
548
+ var import_eslint_plugin_react = __toESM(require("eslint-plugin-react"));
549
+ var import_eslint_plugin3 = __toESM(require("@eslint-react/eslint-plugin"));
550
+ var import_eslint_plugin_react_hooks = __toESM(require("eslint-plugin-react-hooks"));
551
+ var import_eslint_plugin_jsx_a11y = __toESM(require("eslint-plugin-jsx-a11y"));
552
+ var import_eslint_plugin4 = __toESM(require("@stylistic/eslint-plugin"));
553
+ var import_eslint_plugin5 = __toESM(require("@agilebot/eslint-plugin"));
474
554
  function react(opts) {
475
555
  return {
476
- plugins: [
477
- "react",
478
- "@eslint-react",
479
- "react-hooks",
480
- "jsx-a11y",
481
- "@stylistic",
482
- "@agilebot"
483
- ],
484
- extends: ["plugin:jsx-a11y/recommended"],
556
+ name: "agilebot/react",
557
+ files: DEFAULT_GLOBS,
558
+ plugins: {
559
+ react: import_eslint_plugin_react.default,
560
+ "react-hooks": import_eslint_plugin_react_hooks.default,
561
+ "jsx-a11y": import_eslint_plugin_jsx_a11y.default,
562
+ ...import_eslint_plugin3.default.configs.recommended.plugins,
563
+ "@stylistic": import_eslint_plugin4.default,
564
+ "@agilebot": import_eslint_plugin5.default
565
+ },
485
566
  rules: {
567
+ ...import_eslint_plugin_jsx_a11y.default.flatConfigs.recommended.rules,
486
568
  // recommended rules from eslint-plugin-react
487
569
  "react/no-is-mounted": "error",
488
570
  // recommended rules from @eslint-react
@@ -580,6 +662,8 @@ function react(opts) {
580
662
  }
581
663
  function reactJsOnly() {
582
664
  return {
665
+ name: "agilebot/react-js-only",
666
+ files: JS_GLOBS,
583
667
  rules: {
584
668
  // The following can be enforced by TypeScript, no need to implement them
585
669
  "react/jsx-no-duplicate-props": "error",
@@ -594,22 +678,31 @@ function reactJsOnly() {
594
678
  }
595
679
 
596
680
  // src/configs/vue.ts
681
+ var import_eslint_plugin_vue = __toESM(require("eslint-plugin-vue"));
597
682
  function vue(opts) {
598
683
  return {
599
- extends: [
600
- opts.version === 3 ? "plugin:vue/vue3-recommended" : "plugin:vue/recommended"
601
- ]
684
+ name: "agilebot/vue",
685
+ files: VUE_GLOBS,
686
+ plugins: {
687
+ vue: import_eslint_plugin_vue.default
688
+ },
689
+ rules: {
690
+ ...opts.version === 3 ? import_eslint_plugin_vue.default.configs["vue3-strongly-recommended"].rules : import_eslint_plugin_vue.default.configs["strongly-recommended"].rules
691
+ }
602
692
  };
603
693
  }
604
694
 
605
695
  // src/configs/jsdoc.ts
696
+ var import_eslint_plugin_jsdoc = __toESM(require("eslint-plugin-jsdoc"));
606
697
  function jsdoc(opt) {
607
698
  return {
608
- plugins: ["jsdoc"],
609
- extends: [
610
- opt.ts ? "plugin:jsdoc/recommended-typescript-error" : "plugin:jsdoc/recommended-error"
611
- ],
699
+ name: "agilebot/jsdoc",
700
+ files: DEFAULT_GLOBS,
701
+ plugins: {
702
+ jsdoc: import_eslint_plugin_jsdoc.default
703
+ },
612
704
  rules: {
705
+ ...opt.ts ? import_eslint_plugin_jsdoc.default.configs["flat/recommended-typescript-error"].rules : import_eslint_plugin_jsdoc.default.configs["flat/recommended-error"].rules,
613
706
  // 禁止有空行
614
707
  "jsdoc/no-blank-block-descriptions": "error",
615
708
  "jsdoc/no-blank-blocks": "error",
@@ -628,21 +721,158 @@ function jsdoc(opt) {
628
721
  };
629
722
  }
630
723
 
724
+ // src/configs/lodash.ts
725
+ var import_eslint_plugin_you_dont_need_lodash_underscore = __toESM(require("eslint-plugin-you-dont-need-lodash-underscore"));
726
+
727
+ // ../../node_modules/.pnpm/@eslint+compat@1.2.3_eslint@9.15.0_jiti@2.3.3_/node_modules/@eslint/compat/dist/esm/index.js
728
+ var import_node_fs2 = __toESM(require("fs"), 1);
729
+ var import_node_path2 = __toESM(require("path"), 1);
730
+ var removedMethodNames = /* @__PURE__ */ new Map([
731
+ ["getSource", "getText"],
732
+ ["getSourceLines", "getLines"],
733
+ ["getAllComments", "getAllComments"],
734
+ ["getDeclaredVariables", "getDeclaredVariables"],
735
+ ["getNodeByRangeIndex", "getNodeByRangeIndex"],
736
+ ["getCommentsBefore", "getCommentsBefore"],
737
+ ["getCommentsAfter", "getCommentsAfter"],
738
+ ["getCommentsInside", "getCommentsInside"],
739
+ ["getJSDocComment", "getJSDocComment"],
740
+ ["getFirstToken", "getFirstToken"],
741
+ ["getFirstTokens", "getFirstTokens"],
742
+ ["getLastToken", "getLastToken"],
743
+ ["getLastTokens", "getLastTokens"],
744
+ ["getTokenAfter", "getTokenAfter"],
745
+ ["getTokenBefore", "getTokenBefore"],
746
+ ["getTokenByRangeStart", "getTokenByRangeStart"],
747
+ ["getTokens", "getTokens"],
748
+ ["getTokensAfter", "getTokensAfter"],
749
+ ["getTokensBefore", "getTokensBefore"],
750
+ ["getTokensBetween", "getTokensBetween"]
751
+ ]);
752
+ var fixedUpRuleReplacements = /* @__PURE__ */ new WeakMap();
753
+ var fixedUpRules = /* @__PURE__ */ new WeakSet();
754
+ var fixedUpPluginReplacements = /* @__PURE__ */ new WeakMap();
755
+ var fixedUpPlugins = /* @__PURE__ */ new WeakSet();
756
+ function fixupRule(ruleDefinition) {
757
+ if (fixedUpRuleReplacements.has(ruleDefinition)) {
758
+ return fixedUpRuleReplacements.get(ruleDefinition);
759
+ }
760
+ const isLegacyRule = typeof ruleDefinition === "function";
761
+ if (!isLegacyRule && fixedUpRules.has(ruleDefinition)) {
762
+ return ruleDefinition;
763
+ }
764
+ const originalCreate = isLegacyRule ? ruleDefinition : ruleDefinition.create.bind(ruleDefinition);
765
+ function ruleCreate(context) {
766
+ if ("getScope" in context) {
767
+ return originalCreate(context);
768
+ }
769
+ const sourceCode = context.sourceCode;
770
+ let currentNode = sourceCode.ast;
771
+ const newContext = Object.assign(Object.create(context), {
772
+ parserServices: sourceCode.parserServices,
773
+ /*
774
+ * The following methods rely on the current node in the traversal,
775
+ * so we need to add them manually.
776
+ */
777
+ getScope() {
778
+ return sourceCode.getScope(currentNode);
779
+ },
780
+ getAncestors() {
781
+ return sourceCode.getAncestors(currentNode);
782
+ },
783
+ markVariableAsUsed(variable) {
784
+ sourceCode.markVariableAsUsed(variable, currentNode);
785
+ }
786
+ });
787
+ for (const [
788
+ contextMethodName,
789
+ sourceCodeMethodName
790
+ ] of removedMethodNames) {
791
+ newContext[contextMethodName] = sourceCode[sourceCodeMethodName].bind(sourceCode);
792
+ }
793
+ Object.freeze(newContext);
794
+ const visitor = originalCreate(newContext);
795
+ for (const [methodName, method] of Object.entries(visitor)) {
796
+ if (methodName.startsWith("on")) {
797
+ visitor[methodName] = (...args) => {
798
+ currentNode = args[methodName === "onCodePathSegmentLoop" ? 2 : 1];
799
+ return method.call(visitor, ...args);
800
+ };
801
+ continue;
802
+ }
803
+ visitor[methodName] = (...args) => {
804
+ currentNode = args[0];
805
+ return method.call(visitor, ...args);
806
+ };
807
+ }
808
+ return visitor;
809
+ }
810
+ const newRuleDefinition = {
811
+ ...isLegacyRule ? void 0 : ruleDefinition,
812
+ create: ruleCreate
813
+ };
814
+ const { schema } = ruleDefinition;
815
+ if (schema) {
816
+ if (!newRuleDefinition.meta) {
817
+ newRuleDefinition.meta = { schema };
818
+ } else {
819
+ newRuleDefinition.meta = {
820
+ ...newRuleDefinition.meta,
821
+ // top-level `schema` had precedence over `meta.schema` so it's okay to overwrite `meta.schema` if it exists
822
+ schema
823
+ };
824
+ }
825
+ }
826
+ fixedUpRuleReplacements.set(ruleDefinition, newRuleDefinition);
827
+ fixedUpRules.add(newRuleDefinition);
828
+ return newRuleDefinition;
829
+ }
830
+ function fixupPluginRules(plugin) {
831
+ if (fixedUpPluginReplacements.has(plugin)) {
832
+ return fixedUpPluginReplacements.get(plugin);
833
+ }
834
+ if (fixedUpPlugins.has(plugin) || !plugin.rules) {
835
+ return plugin;
836
+ }
837
+ const newPlugin = {
838
+ ...plugin,
839
+ rules: Object.fromEntries(
840
+ Object.entries(plugin.rules).map(([ruleId, ruleDefinition]) => [
841
+ ruleId,
842
+ fixupRule(ruleDefinition)
843
+ ])
844
+ )
845
+ };
846
+ fixedUpPluginReplacements.set(plugin, newPlugin);
847
+ fixedUpPlugins.add(newPlugin);
848
+ return newPlugin;
849
+ }
850
+
631
851
  // src/configs/lodash.ts
632
852
  function lodash() {
633
853
  return {
634
854
  // lodash一些方法可能影响性能,如forEach等,优先使用js的原生方法
635
- extends: ["plugin:you-dont-need-lodash-underscore/compatible"],
855
+ name: "agilebot/lodash",
856
+ files: DEFAULT_GLOBS,
857
+ plugins: {
858
+ "you-dont-need-lodash-underscore": fixupPluginRules(import_eslint_plugin_you_dont_need_lodash_underscore.default)
859
+ },
636
860
  rules: {
861
+ ...import_eslint_plugin_you_dont_need_lodash_underscore.default.configs["all-warn"].rules,
637
862
  "you-dont-need-lodash-underscore/throttle": "off"
638
863
  }
639
864
  };
640
865
  }
641
866
 
642
867
  // src/configs/comments.ts
868
+ var import_eslint_plugin_eslint_comments = __toESM(require("@eslint-community/eslint-plugin-eslint-comments"));
643
869
  function comments() {
644
870
  return {
645
- plugins: ["@eslint-community/eslint-comments"],
871
+ name: "agilebot/comments",
872
+ files: DEFAULT_GLOBS,
873
+ plugins: {
874
+ "@eslint-community/eslint-comments": import_eslint_plugin_eslint_comments.default
875
+ },
646
876
  rules: {
647
877
  // 禁止未使用的eslint-disable注释
648
878
  "@eslint-community/eslint-comments/no-unused-disable": "error",
@@ -664,9 +894,14 @@ function comments() {
664
894
  }
665
895
 
666
896
  // src/configs/cspell.ts
897
+ var import_eslint_plugin6 = __toESM(require("@cspell/eslint-plugin"));
667
898
  function cspell(opts) {
668
899
  return {
669
- plugins: ["@cspell"],
900
+ name: "agilebot/cspell",
901
+ files: DEFAULT_GLOBS,
902
+ plugins: {
903
+ "@cspell": import_eslint_plugin6.default
904
+ },
670
905
  rules: {
671
906
  "@cspell/spellchecker": [
672
907
  "warn",
@@ -681,11 +916,18 @@ function cspell(opts) {
681
916
  }
682
917
 
683
918
  // src/configs/agilebot.ts
919
+ var import_eslint_plugin7 = __toESM(require("@agilebot/eslint-plugin"));
920
+ var import_eslint_plugin_react_hooks2 = __toESM(require("eslint-plugin-react-hooks"));
684
921
  function agilebot(opts) {
685
922
  return {
686
- extends: ["plugin:@agilebot/recommended"],
687
- plugins: ["react-hooks"],
923
+ name: "agilebot/agilebot",
924
+ files: DEFAULT_GLOBS,
925
+ plugins: {
926
+ "@agilebot": import_eslint_plugin7.default,
927
+ "react-hooks": import_eslint_plugin_react_hooks2.default
928
+ },
688
929
  rules: {
930
+ ...import_eslint_plugin7.default.configs.recommended.rules,
689
931
  "react-hooks/exhaustive-deps": "off",
690
932
  "@agilebot/react-better-exhaustive-deps": "warn"
691
933
  },
@@ -698,12 +940,18 @@ function agilebot(opts) {
698
940
 
699
941
  // src/configs/prettier.ts
700
942
  var import_recommended = __toESM(require("eslint-plugin-prettier/recommended"));
943
+ var import_eslint_plugin_prettier = __toESM(require("eslint-plugin-prettier"));
701
944
  function prettier() {
702
945
  return {
703
- plugins: ["prettier"],
946
+ name: "agilebot/prettier",
947
+ files: DEFAULT_GLOBS,
948
+ plugins: {
949
+ prettier: import_eslint_plugin_prettier.default
950
+ },
704
951
  // Do not extends
705
952
  // extends: ['plugin:prettier/recommended'],
706
- rules: __spreadProps(__spreadValues({}, import_recommended.default.rules), {
953
+ rules: {
954
+ ...import_recommended.default.rules,
707
955
  curly: "error",
708
956
  "arrow-body-style": "off",
709
957
  "prettier/prettier": [
@@ -712,19 +960,30 @@ function prettier() {
712
960
  endOfLine: "auto"
713
961
  }
714
962
  ]
715
- })
963
+ }
716
964
  };
717
965
  }
718
966
 
719
967
  // src/configs/godaddy.ts
968
+ var import_eslint_config_godaddy = __toESM(require("eslint-config-godaddy"));
969
+ var import_js = __toESM(require("@eslint/js"));
970
+ var import_eslint_plugin_mocha = __toESM(require("eslint-plugin-mocha"));
720
971
  function godaddy() {
721
972
  return {
722
- parserOptions: {
723
- ecmaVersion: 2022,
724
- sourceType: "module"
973
+ name: "agilebot/godaddy",
974
+ files: DEFAULT_GLOBS,
975
+ languageOptions: {
976
+ parserOptions: {
977
+ ecmaVersion: 2022,
978
+ sourceType: "module"
979
+ }
980
+ },
981
+ plugins: {
982
+ mocha: import_eslint_plugin_mocha.default
725
983
  },
726
- extends: ["godaddy"],
727
984
  rules: {
985
+ ...import_js.default.configs.recommended.rules,
986
+ ...import_eslint_config_godaddy.default.rules,
728
987
  "quote-props": "off",
729
988
  "linebreak-style": "off",
730
989
  complexity: "off",
@@ -735,6 +994,8 @@ function godaddy() {
735
994
  "generator-star-spacing": "off",
736
995
  "max-params": "off",
737
996
  "max-depth": "off",
997
+ "max-len": "off",
998
+ indent: "off",
738
999
  "no-undefined": "off",
739
1000
  "no-process-env": "off",
740
1001
  "no-sync": "off",
@@ -748,16 +1009,8 @@ function godaddy() {
748
1009
  };
749
1010
  }
750
1011
 
751
- // src/constants.ts
752
- var JS_EXTS = [".js", ".jsx", ".cjs", ".cjsx", ".mjs", ".mjsx"];
753
- var TS_EXTS = [".ts", ".tsx", ".cts", ".ctsx", ".mts", ".mtsx"];
754
- var DTS_EXTS = [".d.ts", ".d.cts", ".d.mts"];
755
- var VUE_EXTS = [".vue"];
756
- var DEFAULT_EXTS = [...JS_EXTS, ...TS_EXTS, ...VUE_EXTS];
757
-
758
1012
  // src/factory/index.ts
759
1013
  function factory(root, options) {
760
- var _a, _b, _c, _d;
761
1014
  import_node_assert.default.ok(root, "root option is required");
762
1015
  const tsconfigFiles = (0, import_eslint_utils3.findTsconfigFiles)(root, {
763
1016
  absolute: true
@@ -770,8 +1023,11 @@ function factory(root, options) {
770
1023
  import: true,
771
1024
  importResolver: "typescript"
772
1025
  };
773
- options = __spreadValues(__spreadValues({}, defaultOptions), options);
774
- if (options == null ? void 0 : options.config) {
1026
+ options = {
1027
+ ...defaultOptions,
1028
+ ...options
1029
+ };
1030
+ if (options?.config) {
775
1031
  import_node_assert.default.ok(
776
1032
  Object.keys(options.config).every(
777
1033
  (key) => key === "rules" || key === "settings"
@@ -781,94 +1037,128 @@ function factory(root, options) {
781
1037
  }
782
1038
  const commonConfigs = [
783
1039
  unicorn({
784
- module: (_a = options == null ? void 0 : options.module) != null ? _a : false
1040
+ module: options?.module ?? false
785
1041
  }),
786
- comments(),
787
- options.import ? imports({
788
- packageDir: root,
789
- devDependencies: options == null ? void 0 : options.devDependencies,
790
- monorepoScope: options == null ? void 0 : options.monorepoScope,
791
- coreModules: options == null ? void 0 : options.coreModules,
792
- resolver: options == null ? void 0 : options.importResolver
793
- }) : {},
794
- options.prettier ? prettier() : {}
1042
+ comments()
795
1043
  ];
796
- let config;
797
- if (options == null ? void 0 : options.godaddy) {
798
- config = __spreadValues({
799
- parser: options.godaddy === "typescript" ? "@typescript-eslint/parser" : void 0
800
- }, (0, import_eslint_utils3.mergeESLintConfig)(
801
- godaddy(),
802
- (options == null ? void 0 : options.jsdoc) ? jsdoc({
803
- ts: false
804
- }) : {},
805
- ...commonConfigs,
806
- (options == null ? void 0 : options.jsdoc) ? jsdoc({
807
- ts: false
808
- }) : {},
809
- (_b = options == null ? void 0 : options.config) != null ? _b : {}
810
- ));
811
- } else {
812
- config = {
813
- overrides: [
814
- __spreadValues({
815
- files: DEFAULT_EXTS.map((ext) => `*${ext}`),
816
- parser: !(options == null ? void 0 : options.vue) ? "@typescript-eslint/parser" : "vue-eslint-parser",
817
- parserOptions: {
818
- parser: "@typescript-eslint/parser",
819
- tsconfigRootDir: root,
820
- ecmaFeatures: {
821
- jsx: true
822
- },
823
- sourceType: options.module ? "module" : void 0,
824
- extraFileExtensions: !(options == null ? void 0 : options.vue) ? void 0 : [".vue"]
825
- }
826
- }, (0, import_eslint_utils3.mergeESLintConfig)(
827
- env(),
828
- standard(),
829
- // standard必须在ts之前
830
- ts(),
831
- (options == null ? void 0 : options.react) ? react({ version: options.react }) : {},
832
- (options == null ? void 0 : options.vue) ? vue({
833
- version: options.vue
834
- }) : {},
835
- (options == null ? void 0 : options.jsdoc) ? jsdoc({
836
- ts: true
837
- }) : {},
838
- (options == null ? void 0 : options.lodash) ? lodash() : {},
839
- (options == null ? void 0 : options.cspell) ? cspell(options.cspell) : {},
840
- ...commonConfigs,
841
- agilebot({
842
- root,
843
- monorepoScope: options == null ? void 0 : options.monorepoScope
844
- }),
845
- (_c = options == null ? void 0 : options.config) != null ? _c : {}
846
- )),
847
- __spreadValues({
848
- files: JS_EXTS.map((ext) => `*${ext}`)
849
- }, (0, import_eslint_utils3.mergeESLintConfig)(
850
- jsOnly(),
851
- (options == null ? void 0 : options.jsdoc) ? jsdoc({
852
- ts: false
853
- }) : {},
854
- (options == null ? void 0 : options.react) ? reactJsOnly() : {}
855
- )),
856
- __spreadValues({
857
- files: TS_EXTS.map((ext) => `*${ext}`)
858
- }, tsOnly()),
859
- __spreadValues({
860
- files: DTS_EXTS.map((ext) => `*${ext}`)
861
- }, dts())
862
- ]
863
- };
1044
+ if (options.import) {
1045
+ commonConfigs.push(
1046
+ imports({
1047
+ packageDir: root,
1048
+ devDependencies: options?.devDependencies,
1049
+ monorepoScope: options?.monorepoScope,
1050
+ coreModules: options?.coreModules,
1051
+ resolver: options?.importResolver
1052
+ })
1053
+ );
1054
+ }
1055
+ if (options.prettier) {
1056
+ commonConfigs.push(prettier());
864
1057
  }
865
- if ((_d = config.overrides) == null ? void 0 : _d[0].parserOptions) {
866
- config.overrides[0].parserOptions.project = tsconfigFiles.length > 0 ? tsconfigFiles : true;
867
- } else if (config.parser) {
868
- config.parserOptions = {
869
- project: tsconfigFiles.length > 0 ? tsconfigFiles : true
870
- };
1058
+ const config = [];
1059
+ if (options.godaddy) {
1060
+ config.push({
1061
+ name: "agilebot/parser",
1062
+ files: DEFAULT_GLOBS,
1063
+ languageOptions: {
1064
+ parser: options.godaddy === "typescript" ? parserTs : void 0,
1065
+ parserOptions: {
1066
+ project: tsconfigFiles.length > 0 ? tsconfigFiles : true
1067
+ }
1068
+ }
1069
+ });
1070
+ config.push(env());
1071
+ if (options.jsdoc) {
1072
+ config.push(
1073
+ jsdoc({
1074
+ ts: false
1075
+ })
1076
+ );
1077
+ }
1078
+ config.push(...commonConfigs);
1079
+ config.push(godaddy());
1080
+ if (options.config) {
1081
+ config.push(options.config);
1082
+ }
1083
+ } else {
1084
+ config.push({
1085
+ name: "agilebot/parser",
1086
+ files: DEFAULT_GLOBS,
1087
+ languageOptions: {
1088
+ parser: !options.vue ? parserTs : parserVue,
1089
+ parserOptions: {
1090
+ parser: parserTs,
1091
+ tsconfigRootDir: root,
1092
+ projectService: true,
1093
+ project: tsconfigFiles.length > 0 ? tsconfigFiles : true,
1094
+ ecmaFeatures: {
1095
+ jsx: true
1096
+ },
1097
+ sourceType: options.module ? "module" : void 0,
1098
+ extraFileExtensions: !options?.vue ? void 0 : [".vue"]
1099
+ }
1100
+ }
1101
+ });
1102
+ config.push(env());
1103
+ config.push(standard());
1104
+ config.push(ts());
1105
+ config.push(jsOnly());
1106
+ config.push(dts());
1107
+ config.push(tsOnly());
1108
+ if (options.react) {
1109
+ config.push(react({ version: options.react }));
1110
+ config.push(reactJsOnly());
1111
+ }
1112
+ if (options.vue) {
1113
+ config.push(
1114
+ vue({
1115
+ version: options.vue
1116
+ })
1117
+ );
1118
+ }
1119
+ if (options.lodash) {
1120
+ config.push(lodash());
1121
+ }
1122
+ if (options.cspell) {
1123
+ config.push(cspell(options.cspell));
1124
+ }
1125
+ if (options.jsdoc) {
1126
+ config.push({
1127
+ ...jsdoc({
1128
+ ts: true
1129
+ }),
1130
+ files: TS_GLOBS
1131
+ });
1132
+ config.push({
1133
+ ...jsdoc({
1134
+ ts: false
1135
+ }),
1136
+ files: JS_GLOBS
1137
+ });
1138
+ }
1139
+ config.push(...commonConfigs);
1140
+ config.push(
1141
+ agilebot({
1142
+ root,
1143
+ monorepoScope: options?.monorepoScope
1144
+ })
1145
+ );
1146
+ if (options.config) {
1147
+ config.push(options.config);
1148
+ }
871
1149
  }
1150
+ config.push({
1151
+ name: "agilebot/ignores",
1152
+ ignores: [...IGNORE_GLOBS, ...options.ignores ?? []]
1153
+ });
1154
+ const allPlugins = {};
1155
+ config.forEach((configItem) => {
1156
+ if (configItem.plugins) {
1157
+ Object.assign(allPlugins, configItem.plugins);
1158
+ delete configItem.plugins;
1159
+ }
1160
+ });
1161
+ config[0].plugins = allPlugins;
872
1162
  return config;
873
1163
  }
874
1164
  // Annotate the CommonJS export names for ESM import in node: