@agilebot/eslint-config 0.2.3 → 0.2.5

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/README.md CHANGED
@@ -4,8 +4,7 @@
4
4
 
5
5
  ```bash
6
6
  npm install --save-dev eslint \
7
- @agilebot/eslint-config \
8
- @agilebot/eslint-plugin
7
+ @agilebot/eslint-config
9
8
  ```
10
9
 
11
10
  ```js
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('../dist/cli').cli();
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ declare function cli(): void;
2
+
3
+ export { cli };
package/dist/cli.js ADDED
@@ -0,0 +1,119 @@
1
+ /**
2
+ * @license @agilebot/eslint-config v0.2.5
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
+
10
+ "use strict";
11
+ var __create = Object.create;
12
+ var __defProp = Object.defineProperty;
13
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
14
+ var __getOwnPropNames = Object.getOwnPropertyNames;
15
+ var __getProtoOf = Object.getPrototypeOf;
16
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
17
+ var __export = (target, all) => {
18
+ for (var name in all)
19
+ __defProp(target, name, { get: all[name], enumerable: true });
20
+ };
21
+ var __copyProps = (to, from, except, desc) => {
22
+ if (from && typeof from === "object" || typeof from === "function") {
23
+ for (let key of __getOwnPropNames(from))
24
+ if (!__hasOwnProp.call(to, key) && key !== except)
25
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
26
+ }
27
+ return to;
28
+ };
29
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
30
+ // If the importer is in node compatibility mode or this is not an ESM
31
+ // file that has been converted to a CommonJS file using a Babel-
32
+ // compatible transform (i.e. "__esModule" has not been set), then set
33
+ // "default" to the CommonJS "module.exports" for node compatibility.
34
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
+ mod
36
+ ));
37
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
+
39
+ // src/cli.ts
40
+ var cli_exports = {};
41
+ __export(cli_exports, {
42
+ cli: () => cli
43
+ });
44
+ module.exports = __toCommonJS(cli_exports);
45
+
46
+ // src/cli/index.ts
47
+ var import_node_fs = __toESM(require("fs"));
48
+ var import_node_path = __toESM(require("path"));
49
+ var import_eslint_utils = require("@agilebot/eslint-utils");
50
+
51
+ // src/cli/constants.ts
52
+ var defaultExtensions = [
53
+ ".js",
54
+ ".jsx",
55
+ ".ts",
56
+ ".tsx",
57
+ ".cjs",
58
+ ".mjs",
59
+ ".cts",
60
+ ".mts",
61
+ ".vue"
62
+ ];
63
+ var isEslint = /^\.eslint.*/;
64
+
65
+ // src/cli/index.ts
66
+ function cli() {
67
+ const cwd = process.cwd();
68
+ const has = {
69
+ ext: false,
70
+ fix: false,
71
+ config: false,
72
+ checkIntl: false
73
+ };
74
+ const pkg = require.resolve("eslint/package.json");
75
+ const bin = import_node_path.default.join(pkg, "..", "bin", "eslint.js");
76
+ process.argv.forEach((arg) => {
77
+ has.ext = has.ext || arg === "--ext";
78
+ has.fix = has.fix || arg === "--fix";
79
+ has.config = has.config || arg === "-c" || arg === "--config";
80
+ has.checkIntl = has.checkIntl || arg === "--check-intl";
81
+ });
82
+ if (!has.fix) {
83
+ process.argv.splice(2, 0, "--fix");
84
+ }
85
+ if (!has.ext) {
86
+ process.argv.splice(2, 0, "--ext", defaultExtensions.join(","));
87
+ }
88
+ if (!(0, import_eslint_utils.isCI)()) {
89
+ process.argv.splice(
90
+ 2,
91
+ 0,
92
+ "--plugin",
93
+ "file-progress",
94
+ "--rule",
95
+ "file-progress/activate: 1"
96
+ );
97
+ }
98
+ if (has.checkIntl) {
99
+ process.argv.splice(process.argv.indexOf("--check-intl"), 1);
100
+ process.argv.splice(2, 0, "--rule", "@agilebot/intl-id-unused: 1");
101
+ }
102
+ import_node_fs.default.readdir(cwd, (err, files) => {
103
+ if (err) {
104
+ throw err;
105
+ }
106
+ has.config = has.config || files.some((file) => {
107
+ return isEslint.test(file);
108
+ });
109
+ if (!has.config) {
110
+ throw new Error("No ESLint configuration file found");
111
+ }
112
+ require(bin);
113
+ });
114
+ }
115
+ // Annotate the CommonJS export names for ESM import in node:
116
+ 0 && (module.exports = {
117
+ cli
118
+ });
119
+ if (module.exports.default) module.exports = module.exports.default;
package/dist/index.js CHANGED
@@ -1,10 +1,33 @@
1
+ /**
2
+ * @license @agilebot/eslint-config v0.2.5
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
+
1
10
  "use strict";
2
11
  var __create = Object.create;
3
12
  var __defProp = Object.defineProperty;
4
13
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
14
  var __getOwnPropNames = Object.getOwnPropertyNames;
15
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
16
  var __getProtoOf = Object.getPrototypeOf;
7
17
  var __hasOwnProp = Object.prototype.hasOwnProperty;
18
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
19
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
20
+ var __spreadValues = (a, b) => {
21
+ for (var prop in b || (b = {}))
22
+ if (__hasOwnProp.call(b, prop))
23
+ __defNormalProp(a, prop, b[prop]);
24
+ if (__getOwnPropSymbols)
25
+ for (var prop of __getOwnPropSymbols(b)) {
26
+ if (__propIsEnum.call(b, prop))
27
+ __defNormalProp(a, prop, b[prop]);
28
+ }
29
+ return a;
30
+ };
8
31
  var __export = (target, all) => {
9
32
  for (var name in all)
10
33
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -36,7 +59,7 @@ module.exports = __toCommonJS(src_exports);
36
59
 
37
60
  // src/factory.ts
38
61
  var import_node_assert = __toESM(require("assert"));
39
- var import_eslint_utils3 = require("@agilebot/eslint-utils");
62
+ var import_eslint_utils2 = require("@agilebot/eslint-utils");
40
63
  var import_fast_glob = require("fast-glob");
41
64
 
42
65
  // src/configs/env.ts
@@ -81,11 +104,21 @@ function standard() {
81
104
  // src/configs/ts.ts
82
105
  function ts() {
83
106
  return {
84
- plugins: ["@typescript-eslint", "@stylistic"],
107
+ plugins: ["@typescript-eslint", "@stylistic", "prefer-arrow-functions"],
85
108
  rules: {
86
- "@typescript-eslint/no-unused-vars": "warn",
87
109
  // 如果没用模板字符串,避免使用反引号
88
110
  "@stylistic/quotes": ["error", "single", { avoidEscape: true }],
111
+ "prefer-arrow-functions/prefer-arrow-functions": [
112
+ "warn",
113
+ {
114
+ allowNamedFunctions: true,
115
+ classPropertiesAllowed: false,
116
+ disallowPrototype: false,
117
+ returnStyle: "unchanged",
118
+ singleReturnOnly: false
119
+ }
120
+ ],
121
+ "@typescript-eslint/no-unused-vars": "warn",
89
122
  // 优先使用interface而不是type
90
123
  "@typescript-eslint/consistent-type-definitions": "error",
91
124
  // The `@typescript-eslint/naming-convention` rule allows `leadingUnderscore` and `trailingUnderscore` settings.
@@ -182,6 +215,7 @@ var import_node_path = __toESM(require("path"));
182
215
  var import_node_fs = __toESM(require("fs"));
183
216
  var import_eslint_utils = require("@agilebot/eslint-utils");
184
217
  function eslintImport(opts) {
218
+ var _a;
185
219
  const rootDir = (0, import_eslint_utils.findRootDir)(__dirname);
186
220
  const pkgPath = import_node_path.default.join(opts.packageDir, "package.json");
187
221
  if (!import_node_fs.default.existsSync(pkgPath)) {
@@ -239,7 +273,7 @@ function eslintImport(opts) {
239
273
  "**/.storybook/**",
240
274
  "**/*.stories.{ts,tsx}",
241
275
  "**/scripts/*.{ts,mts}",
242
- ...opts.devDependencies ?? []
276
+ ...(_a = opts.devDependencies) != null ? _a : []
243
277
  ],
244
278
  includeInternal: true
245
279
  }
@@ -424,10 +458,9 @@ function lodash() {
424
458
  }
425
459
 
426
460
  // src/configs/eslint.ts
427
- var import_eslint_utils2 = require("@agilebot/eslint-utils");
428
461
  function eslint() {
429
462
  return {
430
- plugins: ["eslint-comments", "file-progress"],
463
+ plugins: ["eslint-comments"],
431
464
  rules: {
432
465
  // 禁止未使用的eslint-disable注释
433
466
  "eslint-comments/no-unused-disable": "error",
@@ -443,8 +476,7 @@ function eslint() {
443
476
  {
444
477
  ignore: ["eslint-env", "exported", "global", "globals"]
445
478
  }
446
- ],
447
- "file-progress/activate": (0, import_eslint_utils2.isCI)() ? "off" : "warn"
479
+ ]
448
480
  }
449
481
  };
450
482
  }
@@ -486,7 +518,7 @@ function agilebot(opts) {
486
518
  plugins: ["react-hooks"],
487
519
  rules: {
488
520
  "react-hooks/exhaustive-deps": "off",
489
- "@agilebot/react/better-exhaustive-deps": [
521
+ "@agilebot/react-better-exhaustive-deps": [
490
522
  "warn",
491
523
  {
492
524
  checkMemoizedVariableIsStatic: true,
@@ -508,7 +540,10 @@ function agilebot(opts) {
508
540
  },
509
541
  settings: {
510
542
  "agilebot/project-root": opts.root,
511
- "agilebot/monorepo-scope": opts.monorepoScope ? opts.monorepoScope.replaceAll("/", "") : void 0
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
512
547
  }
513
548
  };
514
549
  }
@@ -546,36 +581,41 @@ function godaddy() {
546
581
  "max-depth": "off",
547
582
  "no-undefined": "off",
548
583
  "no-process-env": "off",
549
- "no-sync": "off"
584
+ "no-sync": "off",
585
+ "no-continue": "off",
586
+ "no-case-declarations": "off",
587
+ "unicorn/prefer-string-slice": "off",
588
+ "unicorn/prefer-string-replace-all": "off"
550
589
  }
551
590
  };
552
591
  }
553
592
 
554
593
  // src/factory.ts
555
594
  function factory(root, options) {
595
+ var _a, _b, _c, _d;
556
596
  import_node_assert.default.ok(root, "root option is required");
557
597
  const commonConfigs = [
558
598
  unicorn({
559
- module: options?.module ?? false
599
+ module: (_a = options == null ? void 0 : options.module) != null ? _a : false
560
600
  }),
561
601
  eslint(),
562
602
  eslintImport({
563
603
  packageDir: root,
564
- devDependencies: options?.devDependencies,
565
- monorepoScope: options?.monorepoScope
604
+ devDependencies: options == null ? void 0 : options.devDependencies,
605
+ monorepoScope: options == null ? void 0 : options.monorepoScope
566
606
  }),
567
607
  prettier()
568
608
  ];
569
- if (options?.godaddy) {
570
- return (0, import_eslint_utils3.mergeESLintConfig)(
609
+ if (options == null ? void 0 : options.godaddy) {
610
+ return (0, import_eslint_utils2.mergeESLintConfig)(
571
611
  godaddy(),
572
612
  ...commonConfigs,
573
- options?.config ?? {}
613
+ (_b = options == null ? void 0 : options.config) != null ? _b : {}
574
614
  );
575
615
  }
576
616
  const config = {
577
617
  overrides: [
578
- {
618
+ __spreadValues({
579
619
  files: [
580
620
  "*.ts",
581
621
  "*.tsx",
@@ -587,34 +627,34 @@ function factory(root, options) {
587
627
  "*.mjs",
588
628
  "*.vue"
589
629
  ],
590
- parser: !options?.vue ? "@typescript-eslint/parser" : "vue-eslint-parser",
630
+ parser: !(options == null ? void 0 : options.vue) ? "@typescript-eslint/parser" : "vue-eslint-parser",
591
631
  parserOptions: {
592
632
  parser: "@typescript-eslint/parser",
593
- tsconfigRootDir: root
594
- },
595
- ...(0, import_eslint_utils3.mergeESLintConfig)(
596
- env(),
597
- standard(),
598
- ts(),
599
- promise(),
600
- options?.react ? react() : {},
601
- options?.vue ? vue({
602
- version: options.vue
603
- }) : {},
604
- jsdoc(),
605
- lodash(),
606
- deprecation(),
607
- cspell({
608
- words: options?.cspellWords ?? []
609
- }),
610
- ...commonConfigs,
611
- agilebot({
612
- root,
613
- monorepoScope: options?.monorepoScope
614
- }),
615
- options?.config ?? {}
616
- )
617
- },
633
+ tsconfigRootDir: root,
634
+ extraFileExtensions: !(options == null ? void 0 : options.vue) ? void 0 : [".vue"]
635
+ }
636
+ }, (0, import_eslint_utils2.mergeESLintConfig)(
637
+ env(),
638
+ standard(),
639
+ ts(),
640
+ promise(),
641
+ (options == null ? void 0 : options.react) ? react() : {},
642
+ (options == null ? void 0 : options.vue) ? vue({
643
+ version: options.vue
644
+ }) : {},
645
+ jsdoc(),
646
+ lodash(),
647
+ deprecation(),
648
+ cspell({
649
+ words: (_c = options == null ? void 0 : options.cspellWords) != null ? _c : []
650
+ }),
651
+ ...commonConfigs,
652
+ agilebot({
653
+ root,
654
+ monorepoScope: options == null ? void 0 : options.monorepoScope
655
+ }),
656
+ (_d = options == null ? void 0 : options.config) != null ? _d : {}
657
+ )),
618
658
  {
619
659
  files: ["*.ts", "*.tsx"],
620
660
  rules: {
package/package.json CHANGED
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "name": "@agilebot/eslint-config",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "description": "Agilebot's ESLint config",
5
+ "bin": {
6
+ "eslint-agilebot": "bin/eslint-agilebot"
7
+ },
5
8
  "main": "dist/index.js",
6
9
  "types": "dist/index.d.ts",
7
10
  "license": "MIT",
@@ -31,6 +34,7 @@
31
34
  "eslint-plugin-jsx-a11y": "^6.8.0",
32
35
  "eslint-plugin-n": "^17.2.0",
33
36
  "eslint-plugin-no-relative-import-paths": "^1.5.4",
37
+ "eslint-plugin-prefer-arrow-functions": "^3.3.2",
34
38
  "eslint-plugin-prettier": "^5.1.3",
35
39
  "eslint-plugin-promise": "^6.0.0",
36
40
  "eslint-plugin-react": "^7.34.1",
@@ -40,13 +44,14 @@
40
44
  "eslint-plugin-vue": "^9.25.0",
41
45
  "eslint-plugin-you-dont-need-lodash-underscore": "^6.13.0",
42
46
  "fast-glob": "^3.3.2",
43
- "@agilebot/eslint-utils": "0.2.3"
47
+ "@agilebot/eslint-utils": "0.2.5"
44
48
  },
45
49
  "peerDependencies": {
46
- "@agilebot/eslint-plugin": "*",
47
- "eslint": "^7.0.0 || ^8.0.0"
50
+ "eslint": "^7.0.0 || ^8.0.0",
51
+ "@agilebot/eslint-plugin": "0.2.5"
48
52
  },
49
53
  "files": [
54
+ "bin",
50
55
  "dist"
51
56
  ],
52
57
  "scripts": {