@huangjunsen/encode-fe-lint 1.0.0

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.
Files changed (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +0 -0
  3. package/lib/actions/init.d.ts +3 -0
  4. package/lib/actions/init.js +223 -0
  5. package/lib/actions/scan.d.ts +3 -0
  6. package/lib/actions/scan.js +137 -0
  7. package/lib/actions/update.d.ts +2 -0
  8. package/lib/actions/update.js +112 -0
  9. package/lib/cli.d.ts +2 -0
  10. package/lib/cli.js +230 -0
  11. package/lib/config/_editorconfig.ejs +13 -0
  12. package/lib/config/_eslintignore.ejs +9 -0
  13. package/lib/config/_eslintrc.js.ejs +3 -0
  14. package/lib/config/_markdownlint.json.ejs +1 -0
  15. package/lib/config/_markdownlintignore.ejs +5 -0
  16. package/lib/config/_prettierrc.js.ejs +8 -0
  17. package/lib/config/_stylelintignore.ejs +5 -0
  18. package/lib/config/_stylelintrc.js.ejs +5 -0
  19. package/lib/config/_vscode/extensions.json.ejs +7 -0
  20. package/lib/config/_vscode/settings.json.ejs +54 -0
  21. package/lib/config/commitlint.config.js.ejs +3 -0
  22. package/lib/config/encode-fe-lint.config.js.ejs +6 -0
  23. package/lib/index.d.ts +5 -0
  24. package/lib/index.js +93 -0
  25. package/lib/lints/eslint/doEslint.d.ts +6 -0
  26. package/lib/lints/eslint/doEslint.js +80 -0
  27. package/lib/lints/eslint/formatESLintResults.d.ts +3 -0
  28. package/lib/lints/eslint/formatESLintResults.js +39 -0
  29. package/lib/lints/eslint/getESLintConfig.d.ts +3 -0
  30. package/lib/lints/eslint/getESLintConfig.js +67 -0
  31. package/lib/lints/eslint/getESLintConfigType.d.ts +2 -0
  32. package/lib/lints/eslint/getESLintConfigType.js +26 -0
  33. package/lib/lints/eslint/index.d.ts +3 -0
  34. package/lib/lints/eslint/index.js +19 -0
  35. package/lib/lints/index.d.ts +4 -0
  36. package/lib/lints/index.js +20 -0
  37. package/lib/lints/markdownlint/doMarkdownlint.d.ts +6 -0
  38. package/lib/lints/markdownlint/doMarkdownlint.js +119 -0
  39. package/lib/lints/markdownlint/formatMarkdownlintResults.d.ts +3 -0
  40. package/lib/lints/markdownlint/formatMarkdownlintResults.js +39 -0
  41. package/lib/lints/markdownlint/getMarkdownlintConfig.d.ts +7 -0
  42. package/lib/lints/markdownlint/getMarkdownlintConfig.js +31 -0
  43. package/lib/lints/markdownlint/index.d.ts +3 -0
  44. package/lib/lints/markdownlint/index.js +19 -0
  45. package/lib/lints/prettier/doPrettier.d.ts +4 -0
  46. package/lib/lints/prettier/doPrettier.js +106 -0
  47. package/lib/lints/prettier/index.d.ts +1 -0
  48. package/lib/lints/prettier/index.js +17 -0
  49. package/lib/lints/stylelint/doStylelint.d.ts +5 -0
  50. package/lib/lints/stylelint/doStylelint.js +86 -0
  51. package/lib/lints/stylelint/formatStylelintResults.d.ts +3 -0
  52. package/lib/lints/stylelint/formatStylelintResults.js +39 -0
  53. package/lib/lints/stylelint/getStylelintConfig.d.ts +3 -0
  54. package/lib/lints/stylelint/getStylelintConfig.js +36 -0
  55. package/lib/lints/stylelint/getStylelintDocUrl.d.ts +1 -0
  56. package/lib/lints/stylelint/getStylelintDocUrl.js +13 -0
  57. package/lib/lints/stylelint/index.d.ts +3 -0
  58. package/lib/lints/stylelint/index.js +19 -0
  59. package/lib/types/index.d.ts +73 -0
  60. package/lib/types/index.js +2 -0
  61. package/lib/utils/conflict-resolve.d.ts +3 -0
  62. package/lib/utils/conflict-resolve.js +175 -0
  63. package/lib/utils/constants.d.ts +18 -0
  64. package/lib/utils/constants.js +133 -0
  65. package/lib/utils/generate-template.d.ts +2 -0
  66. package/lib/utils/generate-template.js +99 -0
  67. package/lib/utils/git.d.ts +3 -0
  68. package/lib/utils/git.js +105 -0
  69. package/lib/utils/init.d.ts +3 -0
  70. package/lib/utils/init.js +223 -0
  71. package/lib/utils/log.d.ts +8 -0
  72. package/lib/utils/log.js +25 -0
  73. package/lib/utils/npm-type.d.ts +2 -0
  74. package/lib/utils/npm-type.js +10 -0
  75. package/lib/utils/print-report.d.ts +3 -0
  76. package/lib/utils/print-report.js +109 -0
  77. package/lib/utils/update.d.ts +2 -0
  78. package/lib/utils/update.js +112 -0
  79. package/package.json +97 -0
package/lib/cli.js ADDED
@@ -0,0 +1,230 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ var __generator = (this && this.__generator) || function (thisArg, body) {
13
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
14
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
15
+ function verb(n) { return function (v) { return step([n, v]); }; }
16
+ function step(op) {
17
+ if (f) throw new TypeError("Generator is already executing.");
18
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
19
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
20
+ if (y = 0, t) op = [op[0] & 2, t.value];
21
+ switch (op[0]) {
22
+ case 0: case 1: t = op; break;
23
+ case 4: _.label++; return { value: op[1], done: false };
24
+ case 5: _.label++; y = op[1]; op = [0]; continue;
25
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
26
+ default:
27
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
28
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
29
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
30
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
31
+ if (t[2]) _.ops.pop();
32
+ _.trys.pop(); continue;
33
+ }
34
+ op = body.call(thisArg, _);
35
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
36
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
37
+ }
38
+ };
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ var path_1 = __importDefault(require("path"));
44
+ var fs_extra_1 = __importDefault(require("fs-extra"));
45
+ var ora_1 = __importDefault(require("ora"));
46
+ var glob_1 = __importDefault(require("glob"));
47
+ var commander_1 = require("commander");
48
+ var cross_spawn_1 = __importDefault(require("cross-spawn"));
49
+ var child_process_1 = require("child_process");
50
+ var init_1 = __importDefault(require("./actions/init"));
51
+ var scan_1 = __importDefault(require("./actions/scan"));
52
+ var update_1 = __importDefault(require("./actions/update"));
53
+ var log_1 = __importDefault(require("./utils/log"));
54
+ var print_report_1 = __importDefault(require("./utils/print-report"));
55
+ var npm_type_1 = __importDefault(require("./utils/npm-type"));
56
+ var git_1 = require("./utils/git");
57
+ var generate_template_1 = __importDefault(require("./utils/generate-template"));
58
+ var constants_1 = require("./utils/constants");
59
+ var cwd = process.cwd();
60
+ var installDepsIfThereNo = function () { return __awaiter(void 0, void 0, void 0, function () {
61
+ var lintConfigFiles, nodeModulesPath, npm;
62
+ return __generator(this, function (_a) {
63
+ switch (_a.label) {
64
+ case 0:
65
+ lintConfigFiles = [].concat(glob_1.default.sync('.eslintrc?(.@(js|yaml|yml|json))', { cwd: cwd }), glob_1.default.sync('.stylelintrc?(.@(js|yaml|yml|json))', { cwd: cwd }), glob_1.default.sync('.markdownlint(.@(yaml|yml|json))', { cwd: cwd }));
66
+ nodeModulesPath = path_1.default.resolve(cwd, 'node_modules');
67
+ if (!(!fs_extra_1.default.existsSync(nodeModulesPath) && lintConfigFiles.length > 0)) return [3, 2];
68
+ return [4, npm_type_1.default];
69
+ case 1:
70
+ npm = _a.sent();
71
+ log_1.default.info("\u4F7F\u7528\u9879\u76EE Lint \u914D\u7F6E\uFF0C\u68C0\u6D4B\u5230\u9879\u76EE\u672A\u5B89\u88C5\u4F9D\u8D56\uFF0C\u5C06\u8FDB\u884C\u5B89\u88C5\uFF08\u6267\u884C ".concat(npm, " install\uFF09"));
72
+ (0, child_process_1.execSync)("cd ".concat(cwd, " && ").concat(npm, " i"));
73
+ _a.label = 2;
74
+ case 2: return [2];
75
+ }
76
+ });
77
+ }); };
78
+ commander_1.program
79
+ .version(constants_1.PKG_VERSION)
80
+ .description("".concat(constants_1.PKG_NAME, " \u662F Lint \u5DE5\u5177\uFF0C\u63D0\u4F9B\u7B80\u5355\u7684 CLI \u548C Node.js API\uFF0C\u8BA9\u9879\u76EE\u80FD\u591F\u4E00\u952E\u63A5\u5165\u3001\u4E00\u952E\u626B\u63CF\u3001\u4E00\u952E\u4FEE\u590D\u3001\u4E00\u952E\u5347\u7EA7\uFF0C\u5E76\u4E3A\u9879\u76EE\u914D\u7F6E git commit \u5361\u70B9\uFF0C\u964D\u4F4E\u9879\u76EE\u5B9E\u65BD\u89C4\u8303\u7684\u6210\u672C"));
81
+ commander_1.program
82
+ .command('init')
83
+ .description('一键接入:为项目初始化规范工具和配置,可以根据项目类型和需求进行定制')
84
+ .option('--vscode', '写入.vscode/setting.json配置')
85
+ .action(function (cmd) { return __awaiter(void 0, void 0, void 0, function () {
86
+ var configPath;
87
+ return __generator(this, function (_a) {
88
+ switch (_a.label) {
89
+ case 0:
90
+ if (!cmd.vscode) return [3, 1];
91
+ configPath = path_1.default.resolve(cwd, "".concat(constants_1.PKG_NAME, ".config.js"));
92
+ (0, generate_template_1.default)(cwd, require(configPath), true);
93
+ return [3, 3];
94
+ case 1: return [4, (0, init_1.default)({
95
+ cwd: cwd,
96
+ checkVersionUpdate: true,
97
+ })];
98
+ case 2:
99
+ _a.sent();
100
+ _a.label = 3;
101
+ case 3: return [2];
102
+ }
103
+ });
104
+ }); });
105
+ commander_1.program
106
+ .command('scan')
107
+ .description('一键扫描:对项目进行代码规范问题扫描')
108
+ .option('-q, --quiet', '仅报告错误信息 - 默认: false')
109
+ .option('-o, --output-report', '输出扫描出的规范问题日志')
110
+ .option('-i, --include <dirpath>', '指定要进行规范扫描的目录')
111
+ .option('--no-ignore', '忽略 eslint 的 ignore 配置文件和 ignore 规则')
112
+ .action(function (cmd) { return __awaiter(void 0, void 0, void 0, function () {
113
+ var checking, _a, results, errorCount, warningCount, runErrors, type;
114
+ return __generator(this, function (_b) {
115
+ switch (_b.label) {
116
+ case 0: return [4, installDepsIfThereNo()];
117
+ case 1:
118
+ _b.sent();
119
+ checking = (0, ora_1.default)();
120
+ checking.start("\u6267\u884C ".concat(constants_1.PKG_NAME, " \u4EE3\u7801\u68C0\u67E5"));
121
+ return [4, (0, scan_1.default)({
122
+ cwd: cwd,
123
+ fix: false,
124
+ include: cmd.include || cwd,
125
+ quiet: Boolean(cmd.quiet),
126
+ outputReport: Boolean(cmd.outputReport),
127
+ ignore: cmd.ignore,
128
+ })];
129
+ case 2:
130
+ _a = _b.sent(), results = _a.results, errorCount = _a.errorCount, warningCount = _a.warningCount, runErrors = _a.runErrors;
131
+ type = 'succeed';
132
+ if (runErrors.length > 0 || errorCount > 0) {
133
+ type = 'fail';
134
+ }
135
+ else if (warningCount > 0) {
136
+ type = 'warn';
137
+ }
138
+ checking[type]();
139
+ if (results.length > 0)
140
+ (0, print_report_1.default)(results, false);
141
+ runErrors.forEach(function (e) { return console.log(e); });
142
+ return [2];
143
+ }
144
+ });
145
+ }); });
146
+ commander_1.program
147
+ .command('commit-msg-scan')
148
+ .description('commit message 检查: git commit 时对 commit message 进行检查')
149
+ .action(function () {
150
+ var result = cross_spawn_1.default.sync('commitlint', ['-E', 'HUSKY_GIT_PARAMS'], { stdio: 'inherit' });
151
+ if (result.status !== 0) {
152
+ process.exit(result.status);
153
+ }
154
+ });
155
+ commander_1.program
156
+ .command('commit-file-scan')
157
+ .description('代码提交检查: git commit 时对提交代码进行规范问题扫描')
158
+ .option('-s, --strict', '严格模式,对 warn 和 error 问题都卡口,默认仅对 error 问题卡口')
159
+ .action(function (cmd) { return __awaiter(void 0, void 0, void 0, function () {
160
+ var files, checking, _a, results, errorCount, warningCount, _b;
161
+ var _c;
162
+ return __generator(this, function (_d) {
163
+ switch (_d.label) {
164
+ case 0: return [4, installDepsIfThereNo()];
165
+ case 1:
166
+ _d.sent();
167
+ return [4, (0, git_1.getAmendFiles)()];
168
+ case 2:
169
+ files = _d.sent();
170
+ if (files)
171
+ log_1.default.warn("[".concat(constants_1.PKG_NAME, "] changes not staged for commit: \n").concat(files, "\n"));
172
+ checking = (0, ora_1.default)();
173
+ checking.start("\u6267\u884C ".concat(constants_1.PKG_NAME, " \u4EE3\u7801\u63D0\u4EA4\u68C0\u67E5"));
174
+ _b = scan_1.default;
175
+ _c = {
176
+ cwd: cwd,
177
+ include: cwd,
178
+ quiet: !cmd.strict
179
+ };
180
+ return [4, (0, git_1.getCommitFiles)()];
181
+ case 3: return [4, _b.apply(void 0, [(_c.files = _d.sent(),
182
+ _c)])];
183
+ case 4:
184
+ _a = _d.sent(), results = _a.results, errorCount = _a.errorCount, warningCount = _a.warningCount;
185
+ if (errorCount > 0 || (cmd.strict && warningCount > 0)) {
186
+ checking.fail();
187
+ (0, print_report_1.default)(results, false);
188
+ process.exitCode = 1;
189
+ }
190
+ else {
191
+ checking.succeed();
192
+ }
193
+ return [2];
194
+ }
195
+ });
196
+ }); });
197
+ commander_1.program
198
+ .command('fix')
199
+ .description('一键修复:自动修复项目的代码规范扫描问题')
200
+ .option('-i, --include <dirpath>', '指定要进行修复扫描的目录')
201
+ .option('--no-ignore', '忽略 eslint 的 ignore 配置文件和 ignore 规则')
202
+ .action(function (cmd) { return __awaiter(void 0, void 0, void 0, function () {
203
+ var checking, results;
204
+ return __generator(this, function (_a) {
205
+ switch (_a.label) {
206
+ case 0: return [4, installDepsIfThereNo()];
207
+ case 1:
208
+ _a.sent();
209
+ checking = (0, ora_1.default)();
210
+ checking.start("\u6267\u884C ".concat(constants_1.PKG_NAME, " \u4EE3\u7801\u4FEE\u590D"));
211
+ return [4, (0, scan_1.default)({
212
+ cwd: cwd,
213
+ fix: true,
214
+ include: cmd.include || cwd,
215
+ ignore: cmd.ignore,
216
+ })];
217
+ case 2:
218
+ results = (_a.sent()).results;
219
+ checking.succeed();
220
+ if (results.length > 0)
221
+ (0, print_report_1.default)(results, true);
222
+ return [2];
223
+ }
224
+ });
225
+ }); });
226
+ commander_1.program
227
+ .command('update')
228
+ .description("\u66F4\u65B0 ".concat(constants_1.PKG_NAME, " \u81F3\u6700\u65B0\u7248\u672C"))
229
+ .action(function () { return (0, update_1.default)(true); });
230
+ commander_1.program.parse(process.argv);
@@ -0,0 +1,13 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 2
6
+ end_of_line = lf
7
+ charset = utf-8
8
+ trim_trailing_whitespace = true
9
+ insert_final_newline = true
10
+ quote_type = single
11
+
12
+ [*.md]
13
+ trim_trailing_whitespace = false
@@ -0,0 +1,9 @@
1
+ build/
2
+ coverage/
3
+ dist/
4
+ es/
5
+ lib/
6
+ node_modules/
7
+ **/*.min.js
8
+ **/*-min.js
9
+ **/*.bundle.js
@@ -0,0 +1,3 @@
1
+ module.exports = { extends: [ '<%= eslintType === 'index' ? '@huangjunsen/eslint-config' :
2
+ `@huangjunsen/eslint-config/${eslintType}` %>', <%_ if (enablePrettier) { _%> 'prettier', <%_ } _%> ],
3
+ };
@@ -0,0 +1 @@
1
+ <%_ if (enableMarkdownlint) { _%> { "extends": "@huangjunsen/markdownlint-config" } <%_ } _%>
@@ -0,0 +1,5 @@
1
+ <%_ if (enableMarkdownlint) { _%>
2
+ <%_ markdownLintIgnores.forEach((txt) => { _%>
3
+ <%= txt %>
4
+ <% }) %>
5
+ <%_ } _%>
@@ -0,0 +1,8 @@
1
+ module.exports = {
2
+ printWidth: 100,
3
+ tabWidth: 2,
4
+ semi: true,
5
+ singleQuote: true,
6
+ trailingComma: 'all',
7
+ arrowParens: 'always',
8
+ };
@@ -0,0 +1,5 @@
1
+ <%_ if (enableStylelint) { _%>
2
+ <%_ stylelintIgnores.forEach((txt) => { _%>
3
+ <%= txt %>
4
+ <% }) %>
5
+ <%_ } _%>
@@ -0,0 +1,5 @@
1
+ <%_ if (enableStylelint) { _%>
2
+ module.exports = {
3
+ extends: '@huangjunsen/stylelint-config',
4
+ };
5
+ <%_ } _%>
@@ -0,0 +1,7 @@
1
+ {
2
+ "recommendations": [
3
+ "dbaeumer.vscode-eslint",
4
+ "stylelint.vscode-stylelint",
5
+ "esbenp.prettier-vscode"
6
+ ]
7
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ <%_ if (enableESLint) { _%>
3
+ "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact", "vue"],
4
+ <%_ } _%>
5
+ <%_ if (enableStylelint) { _%>
6
+ "stylelint.validate": [<%- stylelintExt.map((ext) => `"${ext.replace(/^\./, '')}"`).join(',') %>],
7
+ <%_ } _%>
8
+ "editor.codeActionsOnSave": {
9
+ "source.fixAll.eslint": true<%= enableStylelint || enableMarkdownlint ? ',' : ''%>
10
+ <%_ if (enableStylelint) { _%>
11
+ "source.fixAll.stylelint": true<%= enableMarkdownlint ? ',' : ''%>
12
+ <%_ } _%>
13
+ <%_ if (enableMarkdownlint) { _%>
14
+ "source.fixAll.markdownlint": true
15
+ <%_ } _%>
16
+ },
17
+ <%_ if (enablePrettier) { _%>
18
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
19
+ "[javascript]": {
20
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
21
+ },
22
+ "[javascriptreact]": {
23
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
24
+ },
25
+ "[typescript]": {
26
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
27
+ },
28
+ "[typescriptreact]": {
29
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
30
+ },
31
+ "[vue]": {
32
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
33
+ },
34
+ "[css]": {
35
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
36
+ },
37
+ "[less]": {
38
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
39
+ },
40
+ "[scss]": {
41
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
42
+ },
43
+ "[html]": {
44
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
45
+ },
46
+ "[json]": {
47
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
48
+ },
49
+ "[jsonc]": {
50
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
51
+ },
52
+ <%_ } _%>
53
+ "editor.formatOnSave": <%= enablePrettier ? 'true' : 'false' %>
54
+ }
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ extends: ['@huangjunsen/commitlint-config'],
3
+ };
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ enableESLint: <%= enableESLint %>,
3
+ enableStylelint: <%= enableStylelint %>,
4
+ enableMarkdownlint: <%= enableMarkdownlint %>,
5
+ enablePrettier: <%= enablePrettier %>,
6
+ };
package/lib/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import type { InitOptions, ScanOptions } from './types';
2
+ type IInitOptions = Omit<InitOptions, 'checkVersionUpdate'>;
3
+ export declare const init: (options: IInitOptions) => Promise<void>;
4
+ export declare const scan: (options: ScanOptions) => Promise<import("./types").ScanReport>;
5
+ export {};
package/lib/index.js ADDED
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.scan = exports.init = void 0;
54
+ var ora_1 = __importDefault(require("ora"));
55
+ var scan_1 = __importDefault(require("./actions/scan"));
56
+ var init_1 = __importDefault(require("./actions/init"));
57
+ var constants_1 = require("./utils/constants");
58
+ var print_report_1 = __importDefault(require("./utils/print-report"));
59
+ var init = function (options) { return __awaiter(void 0, void 0, void 0, function () {
60
+ return __generator(this, function (_a) {
61
+ switch (_a.label) {
62
+ case 0: return [4, (0, init_1.default)(__assign(__assign({}, options), { checkVersionUpdate: false }))];
63
+ case 1: return [2, _a.sent()];
64
+ }
65
+ });
66
+ }); };
67
+ exports.init = init;
68
+ var scan = function (options) { return __awaiter(void 0, void 0, void 0, function () {
69
+ var checking, report, results, errorCount, warningCount, type;
70
+ return __generator(this, function (_a) {
71
+ switch (_a.label) {
72
+ case 0:
73
+ checking = (0, ora_1.default)();
74
+ checking.start("\u6267\u884C ".concat(constants_1.PKG_NAME, " \u4EE3\u7801\u68C0\u67E5"));
75
+ return [4, (0, scan_1.default)(options)];
76
+ case 1:
77
+ report = _a.sent();
78
+ results = report.results, errorCount = report.errorCount, warningCount = report.warningCount;
79
+ type = 'succeed';
80
+ if (errorCount > 0) {
81
+ type = 'fail';
82
+ }
83
+ else if (warningCount > 0) {
84
+ type = 'warn';
85
+ }
86
+ checking[type]();
87
+ if (results.length > 0)
88
+ (0, print_report_1.default)(results, false);
89
+ return [2, report];
90
+ }
91
+ });
92
+ }); };
93
+ exports.scan = scan;
@@ -0,0 +1,6 @@
1
+ import { Config, PKG, ScanOptions } from '../../types';
2
+ export interface DoESLintOptions extends ScanOptions {
3
+ pkg: PKG;
4
+ config?: Config;
5
+ }
6
+ export declare function doESLint(options: DoESLintOptions): Promise<import("../../types").ScanResult[]>;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.doESLint = void 0;
43
+ var eslint_1 = require("eslint");
44
+ var fast_glob_1 = __importDefault(require("fast-glob"));
45
+ var path_1 = require("path");
46
+ var constants_1 = require("../../utils/constants");
47
+ var formatESLintResults_1 = require("./formatESLintResults");
48
+ var getESLintConfig_1 = require("./getESLintConfig");
49
+ function doESLint(options) {
50
+ return __awaiter(this, void 0, void 0, function () {
51
+ var files, eslint, reports;
52
+ return __generator(this, function (_a) {
53
+ switch (_a.label) {
54
+ case 0:
55
+ if (!options.files) return [3, 1];
56
+ files = options.files.filter(function (name) { return constants_1.ESLINT_FILE_EXT.includes((0, path_1.extname)(name)); });
57
+ return [3, 3];
58
+ case 1: return [4, (0, fast_glob_1.default)("**/*.{".concat(constants_1.ESLINT_FILE_EXT.map(function (t) { return t.replace(/^\./, ''); }).join(','), "}"), {
59
+ cwd: options.cwd,
60
+ ignore: constants_1.ESLINT_IGNORE_PATTERN,
61
+ })];
62
+ case 2:
63
+ files = _a.sent();
64
+ _a.label = 3;
65
+ case 3:
66
+ eslint = new eslint_1.ESLint((0, getESLintConfig_1.getESLintConfig)(options, options.pkg, options.config));
67
+ return [4, eslint.lintFiles(files)];
68
+ case 4:
69
+ reports = _a.sent();
70
+ if (!options.fix) return [3, 6];
71
+ return [4, eslint_1.ESLint.outputFixes(reports)];
72
+ case 5:
73
+ _a.sent();
74
+ _a.label = 6;
75
+ case 6: return [2, (0, formatESLintResults_1.formatESLintResults)(reports, options.quiet, eslint)];
76
+ }
77
+ });
78
+ });
79
+ }
80
+ exports.doESLint = doESLint;
@@ -0,0 +1,3 @@
1
+ import { ESLint } from 'eslint';
2
+ import type { ScanResult } from '../../types';
3
+ export declare function formatESLintResults(results: ESLint.LintResult[], quiet: boolean, eslint: ESLint): ScanResult[];
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatESLintResults = void 0;
4
+ function formatESLintResults(results, quiet, eslint) {
5
+ var rulesMeta = eslint.getRulesMetaForResults(results);
6
+ return results
7
+ .filter(function (_a) {
8
+ var warningCount = _a.warningCount, errorCount = _a.errorCount;
9
+ return errorCount || warningCount;
10
+ })
11
+ .map(function (_a) {
12
+ var filePath = _a.filePath, messages = _a.messages, errorCount = _a.errorCount, warningCount = _a.warningCount, fixableErrorCount = _a.fixableErrorCount, fixableWarningCount = _a.fixableWarningCount;
13
+ return ({
14
+ filePath: filePath,
15
+ errorCount: errorCount,
16
+ warningCount: quiet ? 0 : warningCount,
17
+ fixableErrorCount: fixableErrorCount,
18
+ fixableWarningCount: quiet ? 0 : fixableWarningCount,
19
+ messages: messages
20
+ .map(function (_a) {
21
+ var _b, _c;
22
+ var _d = _a.line, line = _d === void 0 ? 0 : _d, _e = _a.column, column = _e === void 0 ? 0 : _e, ruleId = _a.ruleId, message = _a.message, fatal = _a.fatal, severity = _a.severity;
23
+ return {
24
+ line: line,
25
+ column: column,
26
+ rule: ruleId,
27
+ url: ((_c = (_b = rulesMeta[ruleId]) === null || _b === void 0 ? void 0 : _b.docs) === null || _c === void 0 ? void 0 : _c.url) || '',
28
+ message: message.replace(/([^ ])\.$/u, '$1'),
29
+ errored: fatal || severity === 2,
30
+ };
31
+ })
32
+ .filter(function (_a) {
33
+ var errored = _a.errored;
34
+ return (quiet ? errored : true);
35
+ }),
36
+ });
37
+ });
38
+ }
39
+ exports.formatESLintResults = formatESLintResults;
@@ -0,0 +1,3 @@
1
+ import { ESLint } from 'eslint';
2
+ import type { Config, PKG, ScanOptions } from '../../types';
3
+ export declare function getESLintConfig(opts: ScanOptions, pkg: PKG, config: Config): ESLint.Options;