auto-cr-cmd 2.0.80 → 2.0.85

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
@@ -22,7 +22,7 @@
22
22
 
23
23
  ## Feature Highlights (Automated Code Review & Static Analysis)
24
24
 
25
- - **Built-in Rule Library**: Ships with SWC AST static analysis rules out of the box, such as `no-deep-relative-imports`, `no-circular-dependencies`, and `no-swallowed-errors`.
25
+ - **Built-in Rule Library**: Ships with SWC AST static analysis rules out of the box, such as `no-deep-relative-imports`, `no-circular-dependencies`, `no-swallowed-errors`, `no-catastrophic-regex`, `no-deep-clone-in-loop`, and `no-n2-array-lookup`.
26
26
  - **Extensible SDK**: `auto-cr-rules` exposes helpers like `defineRule` and `helpers.imports`, reducing the friction of authoring custom TypeScript / JavaScript rules.
27
27
  - **Workspace Friendly**: Manage both the CLI and rule package via pnpm workspaces and validate the full pipeline with a single build.
28
28
  - **Publishing Toolkit**: Version bump scripts and npm publish commands keep both packages in sync.
package/README.zh-CN.md CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  ## 特性亮点(自动化代码审查 & 静态代码分析)
24
24
 
25
- - **内置规则库**:默认集成 SWC AST 静态分析规则,例如 `no-deep-relative-imports`、`no-circular-dependencies`、`no-swallowed-errors`。
25
+ - **内置规则库**:默认集成 SWC AST 静态分析规则,例如 `no-deep-relative-imports`、`no-circular-dependencies`、`no-swallowed-errors`、`no-catastrophic-regex`、`no-deep-clone-in-loop`、`no-n2-array-lookup`。
26
26
  - **可扩展 SDK**:`auto-cr-rules` 暴露 `defineRule`、`helpers.imports` 等工具,降低编写 TypeScript / JavaScript 自定义规则的复杂度。
27
27
  - **工作区管理**:使用 pnpm workspace 同时管理 CLI 与规则包,一次构建即可验证完整流程。
28
28
  - **发布友好**:内置版本递增脚本与 npm 发布命令,保持两个包的版本同步。
@@ -118,6 +118,7 @@ var translations = {
118
118
  var tag = _a.tag;
119
119
  var labels = {
120
120
  base: '基础规则',
121
+ performance: '性能规则',
121
122
  untagged: '未定义'
122
123
  };
123
124
  return (_b = labels[tag]) !== null && _b !== void 0 ? _b : tag;
@@ -235,6 +236,7 @@ var translations = {
235
236
  var tag = _a.tag;
236
237
  var labels = {
237
238
  base: 'Base Rules',
239
+ performance: 'Performance Rules',
238
240
  untagged: 'untagged'
239
241
  };
240
242
  return (_b = labels[tag]) !== null && _b !== void 0 ? _b : tag;
package/dist/index.js CHANGED
@@ -71,7 +71,6 @@ var report_1 = require("./report");
71
71
  var i18n_1 = require("./i18n");
72
72
  var file_1 = require("./utils/file");
73
73
  var stdin_1 = require("./utils/stdin");
74
- var auto_cr_rules_1 = require("auto-cr-rules");
75
74
  var loader_1 = require("./rules/loader");
76
75
  var autocrrc_1 = require("./config/autocrrc");
77
76
  var ignore_1 = require("./config/ignore");
@@ -83,10 +82,42 @@ var consolaLoggers = {
83
82
  };
84
83
  // 仅扫描 JS/TS 源码扩展名,避免把配置文件/JSON/图片等送进 SWC 解析导致报错。
85
84
  var SCANNABLE_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx'];
85
+ // 运行 TS 源码时优先加载本地 rules,避免开发时拿到旧的 workspace 依赖。
86
+ var rulesRuntime = loadRulesRuntime();
87
+ var builtinRules = rulesRuntime.builtinRules;
88
+ var createRuleContext = rulesRuntime.createRuleContext;
89
+ var RuleSeverity = rulesRuntime.RuleSeverity;
86
90
  // 单文件路径也走扩展名过滤,保证与目录扫描的行为一致。
87
91
  var isScannableFile = function (filePath) {
88
92
  return SCANNABLE_EXTENSIONS.some(function (extension) { return filePath.endsWith(extension); });
89
93
  };
94
+ function loadRulesRuntime() {
95
+ var fallback = require('auto-cr-rules');
96
+ var localRuntime = resolveLocalRulesRuntime();
97
+ if (localRuntime) {
98
+ return localRuntime;
99
+ }
100
+ return fallback;
101
+ }
102
+ function resolveLocalRulesRuntime() {
103
+ if (!__filename.endsWith('.ts')) {
104
+ return null;
105
+ }
106
+ var localEntry = path_1.default.resolve(__dirname, '../../auto-cr-rules/src/index.ts');
107
+ if (!fs_1.default.existsSync(localEntry)) {
108
+ return null;
109
+ }
110
+ try {
111
+ var localRuntime = require(localEntry);
112
+ if (Array.isArray(localRuntime.builtinRules)) {
113
+ return localRuntime;
114
+ }
115
+ }
116
+ catch (_a) {
117
+ return null;
118
+ }
119
+ return null;
120
+ }
90
121
  /**
91
122
  * CLI 主流程:
92
123
  * 1. 校验输入路径并应用 ignore;
@@ -297,7 +328,7 @@ function run() {
297
328
  customRules = (0, loader_1.loadCustomRules)(ruleDir);
298
329
  rcConfig = (0, autocrrc_1.loadAutoCrRc)(configPath);
299
330
  rcConfig.warnings.forEach(function (warning) { return log('warn', warning); });
300
- rules = (0, autocrrc_1.applyRuleConfig)(__spreadArray(__spreadArray([], auto_cr_rules_1.builtinRules, true), customRules, true), rcConfig.rules, function (warning) {
331
+ rules = (0, autocrrc_1.applyRuleConfig)(__spreadArray(__spreadArray([], builtinRules, true), customRules, true), rcConfig.rules, function (warning) {
301
332
  return log('warn', warning);
302
333
  });
303
334
  if (rules.length === 0) {
@@ -412,7 +443,7 @@ function analyzeFile(file, rules, format, log, reporterHooks) {
412
443
  }];
413
444
  }
414
445
  language = (0, i18n_1.getLanguage)();
415
- baseContext = (0, auto_cr_rules_1.createRuleContext)({
446
+ baseContext = createRuleContext({
416
447
  ast: ast,
417
448
  filePath: file,
418
449
  source: source,
@@ -569,11 +600,11 @@ function parseProgressOption(value) {
569
600
  }
570
601
  function severityToLabel(severity) {
571
602
  switch (severity) {
572
- case auto_cr_rules_1.RuleSeverity.Warning:
603
+ case RuleSeverity.Warning:
573
604
  return 'warning';
574
- case auto_cr_rules_1.RuleSeverity.Optimizing:
605
+ case RuleSeverity.Optimizing:
575
606
  return 'optimizing';
576
- case auto_cr_rules_1.RuleSeverity.Error:
607
+ case RuleSeverity.Error:
577
608
  default:
578
609
  return 'error';
579
610
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auto-cr-cmd",
3
- "version": "2.0.80",
3
+ "version": "2.0.85",
4
4
  "description": "Fast automated code review CLI powered by SWC-based static analysis",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/types/index.d.ts",
@@ -47,7 +47,7 @@
47
47
  "dependencies": {
48
48
  "@swc/core": "^1.15.8",
49
49
  "@swc/wasm": "^1.15.8",
50
- "auto-cr-rules": "^2.0.76",
50
+ "auto-cr-rules": "^2.0.85",
51
51
  "commander": "^14.0.2",
52
52
  "consola": "^3.4.2",
53
53
  "jsonc-parser": "^3.3.1",