frontend-guardian-core 3.4.0 → 3.5.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.
package/bin/fg-core.js CHANGED
@@ -49,6 +49,10 @@ import {
49
49
  compareHistoryReports,
50
50
  formatHistoryCompare,
51
51
  formatHistoryCompareJson,
52
+ CodeownersParser,
53
+ sendNotifications,
54
+ detectNotificationConfig,
55
+ buildNotificationPayload,
52
56
  } from "../dist/index.js";
53
57
  import pc from "picocolors";
54
58
  import { runWatchMode } from "./watch-mode.js";
@@ -81,7 +85,7 @@ const MODULE_RULES = {
81
85
 
82
86
  function showHelp() {
83
87
  console.log(`
84
- Frontend Guardian Core v3.4.0
88
+ Frontend Guardian Core v3.5.0
85
89
 
86
90
  Usage:
87
91
  fg-core <project-dir> [options]
@@ -132,6 +136,9 @@ Options:
132
136
  --no-cross-deps 禁用跨包依赖分析(配合 --monorepo)
133
137
  --ai-fix 启用 AI 修复建议(需配置 FG_AI_API_KEY 环境变量)
134
138
  --ai-model <model> 指定 AI 模型(如 gpt-4o-mini / claude-3-5-sonnet,配合 --ai-fix)
139
+ --team-baseline <url> 团队共享 baseline URL(支持远程加载,1小时缓存)
140
+ --notify 扫描完成后发送 webhook 通知(需配置 notifications)
141
+ --assign 通过 CODEOWNERS 为 issue 推断责任人
135
142
  --help, -h 显示帮助
136
143
 
137
144
  Examples:
@@ -199,6 +206,9 @@ async function main() {
199
206
  crossDeps: true,
200
207
  aiFix: false,
201
208
  aiModel: undefined,
209
+ teamBaseline: undefined,
210
+ notify: false,
211
+ assign: false,
202
212
  };
203
213
 
204
214
  for (let i = 0; i < args.length; i++) {
@@ -345,6 +355,15 @@ async function main() {
345
355
  case "--ai-model":
346
356
  options.aiModel = args[++i];
347
357
  break;
358
+ case "--team-baseline":
359
+ options.teamBaseline = args[++i];
360
+ break;
361
+ case "--notify":
362
+ options.notify = true;
363
+ break;
364
+ case "--assign":
365
+ options.assign = true;
366
+ break;
348
367
  case "--help":
349
368
  case "-h":
350
369
  showHelp();
@@ -754,12 +773,18 @@ async function runAllModules(options, cacheInstance) {
754
773
  }
755
774
  }
756
775
 
757
- // v2.3.0: Baseline 模式 —— 生成或应用 baseline 过滤
776
+ // v3.5.0: issues 添加责任人(CODEOWNERS)
777
+ if (options.assign) {
778
+ applyAssignees(allResults, externalResults, options.projectDir);
779
+ }
780
+
781
+ // v2.3.0 / v3.5.0: Baseline 模式 —— 生成或应用 baseline 过滤(支持远程团队 baseline)
758
782
  let baselineResult = null;
759
- if (options.baseline) {
783
+ const baselinePath = options.teamBaseline || options.baseline;
784
+ if (baselinePath) {
760
785
  const allIssues = collectAllIssues(allResults, externalResults);
761
786
  if (options.generateBaseline) {
762
- const baseline = new BaselineManager(options.baseline, options.projectDir);
787
+ const baseline = new BaselineManager(baselinePath, options.projectDir);
763
788
  baseline.save(allIssues, { projectDir: options.projectDir });
764
789
  if (!options.json) {
765
790
  console.log(pc.cyan(`📋 Baseline 已生成: ${baseline.getPath()}`));
@@ -767,7 +792,7 @@ async function runAllModules(options, cacheInstance) {
767
792
  }
768
793
  process.exit(0);
769
794
  }
770
- baselineResult = applyBaselineToResults(allResults, externalResults, options.baseline, options.projectDir);
795
+ baselineResult = await applyBaselineToResults(allResults, externalResults, baselinePath, options.projectDir);
771
796
  if (baselineResult.baselineLoaded && !options.json) {
772
797
  console.log(
773
798
  pc.cyan(
@@ -1070,6 +1095,31 @@ async function runAllModules(options, cacheInstance) {
1070
1095
  }
1071
1096
  }
1072
1097
 
1098
+ // v3.5.0: 发送扫描结果通知
1099
+ if (options.notify) {
1100
+ const notifyConfig = detectNotificationConfig();
1101
+ if (
1102
+ notifyConfig.feishu?.enabled ||
1103
+ notifyConfig.dingtalk?.enabled ||
1104
+ notifyConfig.wecom?.enabled ||
1105
+ notifyConfig.slack?.enabled
1106
+ ) {
1107
+ const moduleResults = MODULES.map((m) => allResults[m]).filter(Boolean);
1108
+ const payload = buildNotificationPayload(moduleResults, {
1109
+ project: options.projectDir,
1110
+ duration: totalDuration,
1111
+ gatePassed: totalCritical === 0,
1112
+ });
1113
+ const notifyResults = await sendNotifications(payload, notifyConfig);
1114
+ for (const nr of notifyResults) {
1115
+ const icon = nr.success ? pc.green("✅") : pc.red("❌");
1116
+ console.log(pc.gray(` ${icon} ${nr.channel}: ${nr.success ? "已发送" : nr.error}`));
1117
+ }
1118
+ } else {
1119
+ console.log(pc.yellow("⚠️ 未配置通知渠道。请设置 FG_NOTIFY_FEISHU / FG_NOTIFY_DINGTALK / FG_NOTIFY_WECOM / FG_NOTIFY_SLACK 环境变量"));
1120
+ }
1121
+ }
1122
+
1073
1123
  console.log(
1074
1124
  pc.gray(
1075
1125
  `⏱️ 总耗时: ${totalDuration}ms | 扫描 ${totalFilesScanned} 个文件 | ${totalFilesWithIssues} 个文件有问题`
@@ -1482,9 +1532,17 @@ function collectAllIssues(allResults, externalResults) {
1482
1532
  }
1483
1533
 
1484
1534
  /** 应用 baseline 过滤到 allResults,返回 BaselineResult */
1485
- function applyBaselineToResults(allResults, externalResults, baselinePath, projectDir) {
1535
+ async function applyBaselineToResults(allResults, externalResults, baselinePath, projectDir) {
1486
1536
  const allIssues = collectAllIssues(allResults, externalResults);
1487
- const baseline = new BaselineManager(baselinePath, projectDir);
1537
+ const isRemote = baselinePath.startsWith("http://") || baselinePath.startsWith("https://");
1538
+ const baseline = new BaselineManager(baselinePath, projectDir, {
1539
+ teamBaselineUrl: isRemote ? baselinePath : undefined,
1540
+ });
1541
+
1542
+ if (isRemote) {
1543
+ await baseline.init();
1544
+ }
1545
+
1488
1546
  const baselineResult = baseline.filterNewIssues(allIssues);
1489
1547
 
1490
1548
  if (!baselineResult.baselineLoaded) {
@@ -1523,6 +1581,34 @@ function applyBaselineToResults(allResults, externalResults, baselinePath, proje
1523
1581
  return baselineResult;
1524
1582
  }
1525
1583
 
1584
+ /** 为所有 issues 添加责任人(CODEOWNERS) */
1585
+ function applyAssignees(allResults, externalResults, projectDir) {
1586
+ const parser = new CodeownersParser(projectDir);
1587
+ if (!parser.hasCodeowners()) return;
1588
+
1589
+ for (const mod of MODULES) {
1590
+ const r = allResults[mod];
1591
+ if (!r) continue;
1592
+ for (const sev of ["critical", "warning", "suggestion"]) {
1593
+ for (const issue of r.issues[sev]) {
1594
+ const owner = parser.getOwner(issue.file);
1595
+ if (owner) {
1596
+ issue.assignee = owner;
1597
+ }
1598
+ }
1599
+ }
1600
+ }
1601
+
1602
+ for (const er of externalResults) {
1603
+ for (const issue of er.issues) {
1604
+ const owner = parser.getOwner(issue.file);
1605
+ if (owner) {
1606
+ issue.assignee = owner;
1607
+ }
1608
+ }
1609
+ }
1610
+ }
1611
+
1526
1612
  /** 重新计算 totals */
1527
1613
  function recalculateTotals(allResults, externalResults) {
1528
1614
  let critical = 0;
package/dist/index.d.ts CHANGED
@@ -57,5 +57,10 @@ export { IncrementalDiagnostic, createIncrementalDiagnostic } from "./ide/increm
57
57
  export type { DiagnosticResult, IncrementalDiagnosticOptions } from "./ide/incremental-diagnostic.js";
58
58
  export { runLSPServer } from "./ide/lsp-server.js";
59
59
  export type { LSPServerOptions } from "./ide/lsp-server.js";
60
+ export { CodeownersParser, findCodeowners, parseCodeowners, loadCodeowners, matchOwner } from "./utils/codeowners.js";
61
+ export type { CodeownersEntry, CodeownersResult } from "./utils/codeowners.js";
62
+ export { sendNotifications, detectNotificationConfig, buildNotificationPayload, } from "./utils/notification.js";
63
+ export type { NotificationConfig, NotificationPayload, NotificationResult } from "./utils/notification.js";
64
+ export { downloadBaseline, loadBaselineAsync } from "./utils/baseline.js";
60
65
  export { getFileExt, getJSXTagName } from "./utils/common.js";
61
66
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnE,YAAY,EACR,IAAI,EACJ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,UAAU,EACV,aAAa,EACb,WAAW,EACX,SAAS,EACT,GAAG,EACH,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,YAAY,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACzG,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGnI,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvG,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGzF,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACnH,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGrI,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG7E,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGrE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC1I,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGvF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACnE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EACH,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,eAAe,GAClB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACH,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,iBAAiB,GACpB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EACH,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,GACrB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3F,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACrG,YAAY,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.writeJobSummary = exports.isGitHubActions = exports.formatAllAnnotations = exports.formatIssuesAnnotations = exports.formatIssueAnnotation = exports.formatSarif = exports.generateSarif = exports.toBaselineIssue = exports.saveBaseline = exports.loadBaseline = exports.generateBaseline = exports.compareWithBaseline = exports.BaselineManager = exports.detectFixBotConfig = exports.runFixBot = exports.detectUploadConfig = exports.uploadReport = exports.formatHistoryCompareJson = exports.formatHistoryCompare = exports.compareHistoryReports = exports.generateAIFixSuggestions = exports.detectAIConfig = exports.AIFixSuggester = exports.formatWorkspaceJson = exports.formatWorkspaceReport = exports.scanWorkspace = exports.analyzeCrossPackageDeps = exports.detectMonorepo = exports.generateDashboard = exports.HistoryReport = exports.detectCIProvider = exports.generateCIConfig = exports.detectHusky = exports.hasGitHook = exports.uninstallGitHooks = exports.installGitHooks = exports.generateDefaultConfig = exports.initConfig = exports.loadConfig = exports.detectProjectMeta = exports.getAdaptiveConcurrency = exports.walkAST = exports.hasImport = exports.getImports = exports.parseAST = exports.createRegistry = exports.RuleRegistry = exports.SmartCache = exports.createEngine = exports.RuleEngine = void 0;
8
- exports.getJSXTagName = exports.getFileExt = exports.runLSPServer = exports.createIncrementalDiagnostic = exports.IncrementalDiagnostic = exports.svelteRules = exports.platformRules = exports.hooksRules = exports.componentRules = exports.crossFileRules = exports.namingRules = exports.securityRules = exports.a11yRules = exports.performanceRules = exports.i18nRules = exports.runAllExternalTools = exports.stylelintIntegration = exports.typescriptIntegration = exports.eslintIntegration = exports.allExternalTools = exports.autoPublishComment = exports.createPublisher = exports.detectPublisherConfig = exports.GitLabMRPublisher = exports.GitHubPRPublisher = exports.isGuardianComment = exports.COMMENT_MARKER = exports.generatePRCommentSummary = exports.generatePRComment = void 0;
8
+ exports.getJSXTagName = exports.getFileExt = exports.loadBaselineAsync = exports.downloadBaseline = exports.buildNotificationPayload = exports.detectNotificationConfig = exports.sendNotifications = exports.matchOwner = exports.loadCodeowners = exports.parseCodeowners = exports.findCodeowners = exports.CodeownersParser = exports.runLSPServer = exports.createIncrementalDiagnostic = exports.IncrementalDiagnostic = exports.svelteRules = exports.platformRules = exports.hooksRules = exports.componentRules = exports.crossFileRules = exports.namingRules = exports.securityRules = exports.a11yRules = exports.performanceRules = exports.i18nRules = exports.runAllExternalTools = exports.stylelintIntegration = exports.typescriptIntegration = exports.eslintIntegration = exports.allExternalTools = exports.autoPublishComment = exports.createPublisher = exports.detectPublisherConfig = exports.GitLabMRPublisher = exports.GitHubPRPublisher = exports.isGuardianComment = exports.COMMENT_MARKER = exports.generatePRCommentSummary = exports.generatePRComment = void 0;
9
9
  var rule_engine_js_1 = require("./engine/rule-engine.js");
10
10
  Object.defineProperty(exports, "RuleEngine", { enumerable: true, get: function () { return rule_engine_js_1.RuleEngine; } });
11
11
  Object.defineProperty(exports, "createEngine", { enumerable: true, get: function () { return rule_engine_js_1.createEngine; } });
@@ -131,6 +131,20 @@ Object.defineProperty(exports, "IncrementalDiagnostic", { enumerable: true, get:
131
131
  Object.defineProperty(exports, "createIncrementalDiagnostic", { enumerable: true, get: function () { return incremental_diagnostic_js_1.createIncrementalDiagnostic; } });
132
132
  var lsp_server_js_1 = require("./ide/lsp-server.js");
133
133
  Object.defineProperty(exports, "runLSPServer", { enumerable: true, get: function () { return lsp_server_js_1.runLSPServer; } });
134
+ // v3.5.0: Enterprise team collaboration
135
+ var codeowners_js_1 = require("./utils/codeowners.js");
136
+ Object.defineProperty(exports, "CodeownersParser", { enumerable: true, get: function () { return codeowners_js_1.CodeownersParser; } });
137
+ Object.defineProperty(exports, "findCodeowners", { enumerable: true, get: function () { return codeowners_js_1.findCodeowners; } });
138
+ Object.defineProperty(exports, "parseCodeowners", { enumerable: true, get: function () { return codeowners_js_1.parseCodeowners; } });
139
+ Object.defineProperty(exports, "loadCodeowners", { enumerable: true, get: function () { return codeowners_js_1.loadCodeowners; } });
140
+ Object.defineProperty(exports, "matchOwner", { enumerable: true, get: function () { return codeowners_js_1.matchOwner; } });
141
+ var notification_js_1 = require("./utils/notification.js");
142
+ Object.defineProperty(exports, "sendNotifications", { enumerable: true, get: function () { return notification_js_1.sendNotifications; } });
143
+ Object.defineProperty(exports, "detectNotificationConfig", { enumerable: true, get: function () { return notification_js_1.detectNotificationConfig; } });
144
+ Object.defineProperty(exports, "buildNotificationPayload", { enumerable: true, get: function () { return notification_js_1.buildNotificationPayload; } });
145
+ var baseline_js_2 = require("./utils/baseline.js");
146
+ Object.defineProperty(exports, "downloadBaseline", { enumerable: true, get: function () { return baseline_js_2.downloadBaseline; } });
147
+ Object.defineProperty(exports, "loadBaselineAsync", { enumerable: true, get: function () { return baseline_js_2.loadBaselineAsync; } });
134
148
  var common_js_1 = require("./utils/common.js");
135
149
  Object.defineProperty(exports, "getFileExt", { enumerable: true, get: function () { return common_js_1.getFileExt; } });
136
150
  Object.defineProperty(exports, "getJSXTagName", { enumerable: true, get: function () { return common_js_1.getJSXTagName; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;AAEH,0DAAmE;AAA1D,4GAAA,UAAU,OAAA;AAAE,8GAAA,YAAY,OAAA;AAEjC,8CAA+C;AAAtC,sGAAA,UAAU,OAAA;AAEnB,mDAAmE;AAA1D,2GAAA,YAAY,OAAA;AAAE,6GAAA,cAAc,OAAA;AAsBrC,uDAAiF;AAAxE,yGAAA,QAAQ,OAAA;AAAE,2GAAA,UAAU,OAAA;AAAE,0GAAA,SAAS,OAAA;AAAE,wGAAA,OAAO,OAAA;AACjD,uDAA+D;AAAtD,uHAAA,sBAAsB,OAAA;AAC/B,mEAAgE;AAAvD,wHAAA,iBAAiB,OAAA;AAC1B,6DAAsD;AAA7C,8GAAA,UAAU,OAAA;AACnB,yDAA2E;AAAlE,4GAAA,UAAU,OAAA;AAAE,uHAAA,qBAAqB,OAAA;AAC1C,qDAAmG;AAA1F,+GAAA,eAAe,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AAAE,0GAAA,UAAU,OAAA;AAAE,2GAAA,WAAW,OAAA;AACpE,2DAA6E;AAApE,mHAAA,gBAAgB,OAAA;AAAE,mHAAA,gBAAgB,OAAA;AAE3C,+DAA0D;AAAjD,kHAAA,aAAa,OAAA;AAGtB,eAAe;AACf,qDAAyD;AAAhD,iHAAA,iBAAiB,OAAA;AAG1B,yBAAyB;AACzB,mDAA8E;AAArE,6GAAA,cAAc,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAEhD,qEAAyG;AAAhG,qHAAA,aAAa,OAAA;AAAE,6HAAA,qBAAqB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAGlE,kBAAkB;AAClB,mEAAuG;AAA9F,qHAAA,cAAc,OAAA;AAAE,qHAAA,cAAc,OAAA;AAAE,+HAAA,wBAAwB,OAAA;AAGjE,iBAAiB;AACjB,iEAAmH;AAA1G,2HAAA,qBAAqB,OAAA;AAAE,0HAAA,oBAAoB,OAAA;AAAE,8HAAA,wBAAwB,OAAA;AAG9E,eAAe;AACf,iEAA8E;AAArE,kHAAA,YAAY,OAAA;AAAE,wHAAA,kBAAkB,OAAA;AAGzC,mBAAmB;AACnB,iDAAmE;AAA1D,uGAAA,SAAS,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAGtC,4BAA4B;AAC5B,mDAA0I;AAAjI,8GAAA,eAAe,OAAA;AAAE,kHAAA,mBAAmB,OAAA;AAAE,+GAAA,gBAAgB,OAAA;AAAE,2GAAA,YAAY,OAAA;AAAE,2GAAA,YAAY,OAAA;AAAE,8GAAA,eAAe,OAAA;AAG5G,0BAA0B;AAC1B,kDAAmE;AAA1D,yGAAA,aAAa,OAAA;AAAE,uGAAA,WAAW,OAAA;AAGnC,0CAA0C;AAC1C,0EAM2C;AALvC,6HAAA,qBAAqB,OAAA;AACrB,+HAAA,uBAAuB,OAAA;AACvB,4HAAA,oBAAoB,OAAA;AACpB,uHAAA,eAAe,OAAA;AACf,uHAAA,eAAe,OAAA;AAGnB,qBAAqB;AACrB,4DAKoC;AAJhC,kHAAA,iBAAiB,OAAA;AACjB,yHAAA,wBAAwB,OAAA;AACxB,+GAAA,cAAc,OAAA;AACd,kHAAA,iBAAiB,OAAA;AAIrB,2DAMiC;AAL7B,oHAAA,iBAAiB,OAAA;AACjB,oHAAA,iBAAiB,OAAA;AACjB,wHAAA,qBAAqB,OAAA;AACrB,kHAAA,eAAe,OAAA;AACf,qHAAA,kBAAkB,OAAA;AAItB,kBAAkB;AAClB,oDAMiC;AAL7B,4GAAA,gBAAgB,OAAA;AAChB,6GAAA,iBAAiB,OAAA;AACjB,iHAAA,qBAAqB,OAAA;AACrB,gHAAA,oBAAoB,OAAA;AACpB,+GAAA,mBAAmB,OAAA;AAIvB,8DAAuD;AAA9C,4GAAA,SAAS,OAAA;AAElB,4EAAqE;AAA5D,0HAAA,gBAAgB,OAAA;AACzB,8DAAuD;AAA9C,4GAAA,SAAS,OAAA;AAClB,sEAA+D;AAAtD,oHAAA,aAAa,OAAA;AACtB,kEAA2D;AAAlD,gHAAA,WAAW,OAAA;AACpB,0EAAkE;AAAzD,uHAAA,cAAc,OAAA;AACvB,wEAAiE;AAAxD,sHAAA,cAAc,OAAA;AACvB,gEAAyD;AAAhD,8GAAA,UAAU,OAAA;AACnB,sEAA+D;AAAtD,oHAAA,aAAa,OAAA;AACtB,kEAA2D;AAAlD,gHAAA,WAAW,OAAA;AACpB,iBAAiB;AACjB,6EAAqG;AAA5F,kIAAA,qBAAqB,OAAA;AAAE,wIAAA,2BAA2B,OAAA;AAE3D,qDAAmD;AAA1C,6GAAA,YAAY,OAAA;AAGrB,wCAAwC;AACxC,uDAAsH;AAA7G,iHAAA,gBAAgB,OAAA;AAAE,+GAAA,cAAc,OAAA;AAAE,gHAAA,eAAe,OAAA;AAAE,+GAAA,cAAc,OAAA;AAAE,2GAAA,UAAU,OAAA;AAEtF,2DAIiC;AAH7B,oHAAA,iBAAiB,OAAA;AACjB,2HAAA,wBAAwB,OAAA;AACxB,2HAAA,wBAAwB,OAAA;AAG5B,mDAA0E;AAAjE,+GAAA,gBAAgB,OAAA;AAAE,gHAAA,iBAAiB,OAAA;AAE5C,+CAA8D;AAArD,uGAAA,UAAU,OAAA;AAAE,0GAAA,aAAa,OAAA"}
package/dist/types.d.ts CHANGED
@@ -30,6 +30,8 @@ export interface Issue {
30
30
  fix?: Fix;
31
31
  /** 规则文档链接(终端可点击跳转) */
32
32
  docsUrl?: string;
33
+ /** 责任人(从 CODEOWNERS 推断) */
34
+ assignee?: string;
33
35
  /** Additional metadata */
34
36
  meta?: Record<string, unknown>;
35
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;AAC7D,MAAM,MAAM,QAAQ,GACd,IAAI,GACJ,IAAI,GACJ,WAAW,GACX,WAAW,GACX,WAAW,GACX,KAAK,GACL,SAAS,GACT,SAAS,GACT,cAAc,CAAC;AACrB,MAAM,MAAM,SAAS,GACf,OAAO,GACP,KAAK,GACL,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,GACN,SAAS,GACT,cAAc,GACd,SAAS,GACT,QAAQ,GACR,SAAS,GACT,OAAO,CAAC;AACd,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,cAAc,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjH,MAAM,WAAW,KAAK;IAClB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,cAAc;AACd,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEtD,MAAM,WAAW,GAAG;IAChB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,KAAK,EAAE,QAAQ,CAAC;IAChB,2BAA2B;IAC3B,GAAG,EAAE,QAAQ,CAAC;IACd,qBAAqB;IACrB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,mCAAmC;AACnC,MAAM,WAAW,UAAU;IACvB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACvB,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAClC,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,IAAI;IACjB,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,yCAAyC;IACzC,cAAc,EAAE,OAAO,CAAC;IACxB,sCAAsC;IACtC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,qCAAqC;IACrC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,aAAa;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;CAC7D;AAED,MAAM,MAAM,YAAY,GAClB,MAAM,GACN,WAAW,GACX,OAAO,GACP,UAAU,GACV,aAAa,GACb,eAAe,GACf,UAAU,GACV,OAAO,GACP,cAAc,CAAC;AAErB,MAAM,WAAW,WAAW;IACxB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,4BAA4B;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,gCAAgC;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,sBAAsB;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,mCAAmC;IACnC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACtB,wBAAwB;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;IAC1D,2BAA2B;IAC3B,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,EAAE,CAAC;IACvC,kCAAkC;IAClC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzC,6BAA6B;IAC7B,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACxD;AAED,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IACzB,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,qBAAqB;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACvB,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa;IACb,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC7B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,0BAA0B;IAC1B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,yBAAyB;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,iBAAiB;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,sCAAsC;IACtC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,4BAA4B;IAC5B,gBAAgB;IAChB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,gBAAgB;IAChB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,2CAA2C;IAC3C,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,EAAE,EAAE,QAAQ,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;IAC3D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IACzB,uBAAuB;IACvB,SAAS,EAAE,YAAY,GAAG,WAAW,CAAC;IACtC,YAAY;IACZ,aAAa,EAAE,YAAY,GAAG,WAAW,CAAC;IAC1C,aAAa;IACb,aAAa,EAAE,YAAY,GAAG,WAAW,CAAC;IAC1C,cAAc;IACd,YAAY,EAAE,WAAW,GAAG,YAAY,CAAC;IACzC,WAAW;IACX,YAAY,EAAE,WAAW,GAAG,YAAY,CAAC;IACzC,0BAA0B;IAC1B,YAAY,EAAE,kBAAkB,GAAG,WAAW,CAAC;IAC/C,YAAY;IACZ,QAAQ,EAAE,YAAY,GAAG,kBAAkB,CAAC;IAC5C,aAAa;IACb,cAAc,EAAE,kBAAkB,GAAG,YAAY,CAAC;IAClD,uCAAuC;IACvC,aAAa,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9C,YAAY;IACZ,YAAY,EAAE,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;IACxD,aAAa;IACb,cAAc,EAAE,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;IAC1D,mCAAmC;IACnC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oCAAoC;IACpC,yBAAyB,EAAE,OAAO,CAAC;IACnC,cAAc;IACd,cAAc,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IACxB,yBAAyB;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iCAAiC;IACjC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,yBAAyB;IACzB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,wBAAwB;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4BAA4B;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGhC,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,6BAA6B;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gCAAgC;IAChC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sBAAsB;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,kCAAkC;IAClC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,OAAO,GACb,SAAS,GACT,MAAM,GACN,SAAS,GACT,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,WAAW,GACX,MAAM,GACN,QAAQ,GACR,KAAK,CAAC;AACZ,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW,CAAC;AACnH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC3G,MAAM,MAAM,eAAe,GACrB,aAAa,GACb,mBAAmB,GACnB,SAAS,GACT,MAAM,GACN,MAAM,GACN,aAAa,GACb,iBAAiB,GACjB,QAAQ,GACR,UAAU,CAAC;AACjB,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,YAAY,GAAG,iBAAiB,GAAG,QAAQ,GAAG,eAAe,GAAG,aAAa,CAAC;AACvH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAC7D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;AAClF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,gBAAgB,CAAC;AACpF,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC"}
@@ -48,12 +48,24 @@ export interface BaselineResult {
48
48
  /** 是否使用了 baseline */
49
49
  baselineLoaded: boolean;
50
50
  }
51
+ /** 下载远程 baseline */
52
+ export declare function downloadBaseline(url: string, cacheDir?: string): Promise<{
53
+ data: BaselineFile;
54
+ cached: boolean;
55
+ error?: string;
56
+ }>;
51
57
  /** 将 Issue 精简为 BaselineIssue */
52
58
  export declare function toBaselineIssue(issue: Issue): BaselineIssue;
53
- /** 加载 baseline 文件 */
59
+ /** 加载本地 baseline 文件(同步) */
54
60
  export declare function loadBaseline(filePath: string): BaselineFile | null;
61
+ /**
62
+ * 加载 baseline(支持本地路径或远程 URL)
63
+ * @param filePath 本地文件路径或远程 URL
64
+ * @param cacheDir 远程 baseline 缓存目录(可选,默认 .fg-cache)
65
+ */
66
+ export declare function loadBaselineAsync(filePath: string, cacheDir?: string): Promise<BaselineFile | null>;
55
67
  /** 保存 baseline 文件 */
56
- export declare function saveBaseline(filePath: string, issues: Issue[], meta?: BaselineFile["meta"]): void;
68
+ export declare function saveBaseline(filePath: string, issues: Issue[] | BaselineIssue[], meta?: BaselineFile["meta"]): void;
57
69
  /**
58
70
  * 将当前扫描结果与 baseline 对比
59
71
  * @param issues 当前扫描出的所有问题
@@ -69,12 +81,26 @@ export declare function compareWithBaseline(issues: Issue[], baselinePath: strin
69
81
  export declare function generateBaseline(issues: Issue[], baselinePath: string, projectDir: string, meta?: BaselineFile["meta"]): void;
70
82
  /**
71
83
  * BaselineManager — 面向对象的封装
84
+ *
85
+ * 支持本地 baseline 文件或远程团队共享 baseline URL。
86
+ * 远程 baseline 会自动下载并缓存到本地(1 小时 TTL)。
72
87
  */
73
88
  export declare class BaselineManager {
74
89
  private baselinePath;
75
90
  private projectDir;
76
91
  private baseline;
77
- constructor(baselinePath: string, projectDir: string);
92
+ private teamBaselineUrl?;
93
+ private cacheDir;
94
+ constructor(baselinePath: string, projectDir: string, options?: {
95
+ teamBaselineUrl?: string;
96
+ cacheDir?: string;
97
+ });
98
+ /**
99
+ * 异步初始化(用于加载远程 baseline)
100
+ * 若配置了 teamBaselineUrl,会下载并缓存远程 baseline。
101
+ * 下载失败时回退到本地 baseline(如果存在)。
102
+ */
103
+ init(): Promise<void>;
78
104
  /** 是否已加载有效的 baseline */
79
105
  isLoaded(): boolean;
80
106
  /** 获取已加载的 baseline 内容 */
@@ -85,5 +111,7 @@ export declare class BaselineManager {
85
111
  save(issues: Issue[], meta?: BaselineFile["meta"]): void;
86
112
  /** 获取 baseline 文件路径 */
87
113
  getPath(): string;
114
+ /** 获取团队 baseline URL(如配置) */
115
+ getTeamBaselineUrl(): string | undefined;
88
116
  }
89
117
  //# sourceMappingURL=baseline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../src/utils/baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,oBAAoB;AACpB,MAAM,WAAW,YAAY;IACzB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa;IACb,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU;IACV,IAAI,CAAC,EAAE;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACL;AAED,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,oBAAoB;AACpB,MAAM,WAAW,cAAc;IAC3B,yBAAyB;IACzB,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,+BAA+B;IAC/B,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,gCAAgC;IAChC,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,cAAc,EAAE,OAAO,CAAC;CAC3B;AASD,gCAAgC;AAChC,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAS3D;AAED,qBAAqB;AACrB,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAelE;AAED,qBAAqB;AACrB,wBAAgB,YAAY,CACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,KAAK,EAAE,EACf,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAC5B,IAAI,CAWN;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,KAAK,EAAE,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACnB,cAAc,CAsChB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,KAAK,EAAE,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAC5B,IAAI,CAGN;AAED;;GAEG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAA6B;gBAEjC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAMpD,wBAAwB;IACxB,QAAQ,IAAI,OAAO;IAInB,yBAAyB;IACzB,WAAW,IAAI,YAAY,GAAG,IAAI;IAIlC,gCAAgC;IAChC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc;IAIhD,kCAAkC;IAClC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;IAKxD,uBAAuB;IACvB,OAAO,IAAI,MAAM;CAGpB"}
1
+ {"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../src/utils/baseline.ts"],"names":[],"mappings":"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"}
@@ -12,21 +12,88 @@
12
12
  * → 仅报告新增问题(与 baseline 对比)
13
13
  * 3. 定期刷新:删除 baseline 重新生成(清理已修复的遗留问题)
14
14
  */
15
+ var __importDefault = (this && this.__importDefault) || function (mod) {
16
+ return (mod && mod.__esModule) ? mod : { "default": mod };
17
+ };
15
18
  Object.defineProperty(exports, "__esModule", { value: true });
16
19
  exports.BaselineManager = void 0;
20
+ exports.downloadBaseline = downloadBaseline;
17
21
  exports.toBaselineIssue = toBaselineIssue;
18
22
  exports.loadBaseline = loadBaseline;
23
+ exports.loadBaselineAsync = loadBaselineAsync;
19
24
  exports.saveBaseline = saveBaseline;
20
25
  exports.compareWithBaseline = compareWithBaseline;
21
26
  exports.generateBaseline = generateBaseline;
22
27
  const node_fs_1 = require("node:fs");
23
28
  const node_path_1 = require("node:path");
29
+ const node_crypto_1 = require("node:crypto");
30
+ const picocolors_1 = __importDefault(require("picocolors"));
24
31
  /** 问题匹配键 */
25
32
  function issueKey(issue) {
26
33
  // 列号可选,允许小范围偏移(±5列)视为同一问题
27
34
  const col = issue.column != null ? Math.round(issue.column / 5) * 5 : 0;
28
35
  return `${issue.file}|${issue.ruleId}|${issue.line}|${col}`;
29
36
  }
37
+ /** 判断路径是否为远程 URL */
38
+ function isRemoteUrl(path) {
39
+ return path.startsWith("http://") || path.startsWith("https://");
40
+ }
41
+ /** 获取远程 baseline 的本地缓存路径 */
42
+ function getCachedBaselinePath(url, cacheDir) {
43
+ const hash = (0, node_crypto_1.createHash)("sha256").update(url).digest("hex").slice(0, 16);
44
+ const name = (0, node_path_1.basename)(url) || "baseline";
45
+ return (0, node_path_1.resolve)(cacheDir, `${name}.${hash}.json`);
46
+ }
47
+ /** 下载远程 baseline */
48
+ async function downloadBaseline(url, cacheDir) {
49
+ const dir = cacheDir || (0, node_path_1.resolve)(process.cwd(), ".fg-cache");
50
+ const cachePath = getCachedBaselinePath(url, dir);
51
+ // 检查本地缓存(1 小时 TTL)
52
+ if ((0, node_fs_1.existsSync)(cachePath)) {
53
+ const stat = (0, node_fs_1.readFileSync)(cachePath, "utf-8");
54
+ try {
55
+ const cached = JSON.parse(stat);
56
+ const age = Date.now() - (cached._downloadedAt || 0);
57
+ if (age < 3600_000) {
58
+ return { data: cached.data, cached: true };
59
+ }
60
+ }
61
+ catch {
62
+ // 缓存格式错误,继续下载
63
+ }
64
+ }
65
+ try {
66
+ const response = await fetch(url, { redirect: "follow" });
67
+ if (!response.ok) {
68
+ return {
69
+ data: { version: "1.0", generatedAt: Date.now(), issues: [] },
70
+ cached: false,
71
+ error: `HTTP ${response.status}: ${response.statusText}`,
72
+ };
73
+ }
74
+ const data = (await response.json());
75
+ if (!data.version || !Array.isArray(data.issues)) {
76
+ return {
77
+ data: { version: "1.0", generatedAt: Date.now(), issues: [] },
78
+ cached: false,
79
+ error: "Invalid baseline format",
80
+ };
81
+ }
82
+ // 写入缓存
83
+ if (!(0, node_fs_1.existsSync)(dir)) {
84
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
85
+ }
86
+ (0, node_fs_1.writeFileSync)(cachePath, JSON.stringify({ _downloadedAt: Date.now(), data }, null, 2), "utf-8");
87
+ return { data, cached: false };
88
+ }
89
+ catch (err) {
90
+ return {
91
+ data: { version: "1.0", generatedAt: Date.now(), issues: [] },
92
+ cached: false,
93
+ error: String(err),
94
+ };
95
+ }
96
+ }
30
97
  /** 将 Issue 精简为 BaselineIssue */
31
98
  function toBaselineIssue(issue) {
32
99
  return {
@@ -38,7 +105,7 @@ function toBaselineIssue(issue) {
38
105
  title: issue.title,
39
106
  };
40
107
  }
41
- /** 加载 baseline 文件 */
108
+ /** 加载本地 baseline 文件(同步) */
42
109
  function loadBaseline(filePath) {
43
110
  try {
44
111
  if (!(0, node_fs_1.existsSync)(filePath)) {
@@ -46,7 +113,6 @@ function loadBaseline(filePath) {
46
113
  }
47
114
  const raw = (0, node_fs_1.readFileSync)(filePath, "utf-8");
48
115
  const data = JSON.parse(raw);
49
- // 版本校验
50
116
  if (!data.version || !Array.isArray(data.issues)) {
51
117
  return null;
52
118
  }
@@ -56,12 +122,27 @@ function loadBaseline(filePath) {
56
122
  return null;
57
123
  }
58
124
  }
125
+ /**
126
+ * 加载 baseline(支持本地路径或远程 URL)
127
+ * @param filePath 本地文件路径或远程 URL
128
+ * @param cacheDir 远程 baseline 缓存目录(可选,默认 .fg-cache)
129
+ */
130
+ async function loadBaselineAsync(filePath, cacheDir) {
131
+ if (isRemoteUrl(filePath)) {
132
+ const result = await downloadBaseline(filePath, cacheDir);
133
+ if (result.error) {
134
+ console.warn(`⚠️ 远程 baseline 加载失败: ${result.error}`);
135
+ }
136
+ return result.data;
137
+ }
138
+ return loadBaseline(filePath);
139
+ }
59
140
  /** 保存 baseline 文件 */
60
141
  function saveBaseline(filePath, issues, meta) {
61
142
  const baseline = {
62
143
  version: "1.0",
63
144
  generatedAt: Date.now(),
64
- issues: issues.map(toBaselineIssue),
145
+ issues: issues.map((i) => "description" in i ? toBaselineIssue(i) : i),
65
146
  meta: {
66
147
  toolVersion: "2.3.0",
67
148
  ...meta,
@@ -120,16 +201,51 @@ function generateBaseline(issues, baselinePath, projectDir, meta) {
120
201
  }
121
202
  /**
122
203
  * BaselineManager — 面向对象的封装
204
+ *
205
+ * 支持本地 baseline 文件或远程团队共享 baseline URL。
206
+ * 远程 baseline 会自动下载并缓存到本地(1 小时 TTL)。
123
207
  */
124
208
  class BaselineManager {
125
209
  baselinePath;
126
210
  projectDir;
127
211
  baseline = null;
128
- constructor(baselinePath, projectDir) {
129
- this.baselinePath = (0, node_path_1.resolve)(projectDir, baselinePath);
212
+ teamBaselineUrl;
213
+ cacheDir;
214
+ constructor(baselinePath, projectDir, options) {
215
+ this.teamBaselineUrl = options?.teamBaselineUrl;
216
+ this.cacheDir = options?.cacheDir || (0, node_path_1.resolve)(projectDir, ".fg-cache");
130
217
  this.projectDir = projectDir;
218
+ if (this.teamBaselineUrl) {
219
+ // 远程 baseline:缓存路径作为本地存储
220
+ this.baselinePath = getCachedBaselinePath(this.teamBaselineUrl, this.cacheDir);
221
+ }
222
+ else {
223
+ this.baselinePath = (0, node_path_1.resolve)(projectDir, baselinePath);
224
+ }
131
225
  this.baseline = loadBaseline(this.baselinePath);
132
226
  }
227
+ /**
228
+ * 异步初始化(用于加载远程 baseline)
229
+ * 若配置了 teamBaselineUrl,会下载并缓存远程 baseline。
230
+ * 下载失败时回退到本地 baseline(如果存在)。
231
+ */
232
+ async init() {
233
+ if (!this.teamBaselineUrl) {
234
+ return;
235
+ }
236
+ const result = await downloadBaseline(this.teamBaselineUrl, this.cacheDir);
237
+ if (result.error) {
238
+ console.warn(picocolors_1.default.yellow(`⚠️ 团队 baseline 下载失败: ${result.error},回退到本地 baseline`));
239
+ // 回退:尝试加载已缓存的本地 baseline(即使过期)
240
+ this.baseline = loadBaseline(this.baselinePath);
241
+ return;
242
+ }
243
+ // 将下载的 baseline 写入缓存路径
244
+ saveBaseline(this.baselinePath, result.data.issues, result.data.meta);
245
+ this.baseline = result.data;
246
+ const source = result.cached ? "缓存" : "远程";
247
+ console.log(picocolors_1.default.blue(`📥 团队 baseline 已加载(${source}):${this.teamBaselineUrl}`));
248
+ }
133
249
  /** 是否已加载有效的 baseline */
134
250
  isLoaded() {
135
251
  return this.baseline !== null;
@@ -151,6 +267,10 @@ class BaselineManager {
151
267
  getPath() {
152
268
  return this.baselinePath;
153
269
  }
270
+ /** 获取团队 baseline URL(如配置) */
271
+ getTeamBaselineUrl() {
272
+ return this.teamBaselineUrl;
273
+ }
154
274
  }
155
275
  exports.BaselineManager = BaselineManager;
156
276
  //# sourceMappingURL=baseline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../src/utils/baseline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../src/utils/baseline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * CODEOWNERS parser
3
+ *
4
+ * Parses CODEOWNERS file from project root to infer issue assignees.
5
+ * Supports GitHub-style CODEOWNERS: .github/CODEOWNERS, CODEOWNERS, docs/CODEOWNERS
6
+ */
7
+ export interface CodeownersEntry {
8
+ pattern: string;
9
+ owners: string[];
10
+ }
11
+ export interface CodeownersResult {
12
+ entries: CodeownersEntry[];
13
+ sourcePath?: string;
14
+ }
15
+ export declare function findCodeowners(projectDir: string): {
16
+ content: string;
17
+ path: string;
18
+ } | null;
19
+ export declare function parseCodeowners(content: string): CodeownersEntry[];
20
+ export declare function loadCodeowners(projectDir: string): CodeownersResult;
21
+ export declare function matchOwner(filePath: string, entries: CodeownersEntry[]): string | undefined;
22
+ export declare class CodeownersParser {
23
+ private entries;
24
+ private sourcePath?;
25
+ constructor(projectDir: string);
26
+ hasCodeowners(): boolean;
27
+ getSourcePath(): string | undefined;
28
+ getOwner(filePath: string): string | undefined;
29
+ getEntries(): CodeownersEntry[];
30
+ }
31
+ //# sourceMappingURL=codeowners.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeowners.d.ts","sourceRoot":"","sources":["../../src/utils/codeowners.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAa3F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAkBlE;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAInE;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,GAAG,SAAS,CAQ3F;AAUD,qBAAa,gBAAgB;IACzB,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,UAAU,CAAC,CAAS;gBAEhB,UAAU,EAAE,MAAM;IAM9B,aAAa,IAAI,OAAO;IAIxB,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C,UAAU,IAAI,eAAe,EAAE;CAGlC"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ /**
3
+ * CODEOWNERS parser
4
+ *
5
+ * Parses CODEOWNERS file from project root to infer issue assignees.
6
+ * Supports GitHub-style CODEOWNERS: .github/CODEOWNERS, CODEOWNERS, docs/CODEOWNERS
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CodeownersParser = void 0;
10
+ exports.findCodeowners = findCodeowners;
11
+ exports.parseCodeowners = parseCodeowners;
12
+ exports.loadCodeowners = loadCodeowners;
13
+ exports.matchOwner = matchOwner;
14
+ const node_fs_1 = require("node:fs");
15
+ const node_path_1 = require("node:path");
16
+ const minimatch_1 = require("minimatch");
17
+ const CODEOWNERS_PATHS = [".github/CODEOWNERS", "CODEOWNERS", "docs/CODEOWNERS"];
18
+ function findCodeowners(projectDir) {
19
+ for (const relative of CODEOWNERS_PATHS) {
20
+ const fullPath = (0, node_path_1.resolve)(projectDir, relative);
21
+ if ((0, node_fs_1.existsSync)(fullPath)) {
22
+ try {
23
+ const content = (0, node_fs_1.readFileSync)(fullPath, "utf-8");
24
+ return { content, path: relative };
25
+ }
26
+ catch {
27
+ continue;
28
+ }
29
+ }
30
+ }
31
+ return null;
32
+ }
33
+ function parseCodeowners(content) {
34
+ const entries = [];
35
+ for (const rawLine of content.split("\n")) {
36
+ const line = rawLine.trim();
37
+ if (!line || line.startsWith("#"))
38
+ continue;
39
+ const parts = line.split(/\s+/);
40
+ if (parts.length < 2)
41
+ continue;
42
+ const pattern = parts[0];
43
+ const owners = parts.slice(1).filter((p) => p.startsWith("@"));
44
+ if (owners.length === 0)
45
+ continue;
46
+ entries.push({ pattern, owners });
47
+ }
48
+ return entries;
49
+ }
50
+ function loadCodeowners(projectDir) {
51
+ const found = findCodeowners(projectDir);
52
+ if (!found)
53
+ return { entries: [] };
54
+ return { entries: parseCodeowners(found.content), sourcePath: found.path };
55
+ }
56
+ function matchOwner(filePath, entries) {
57
+ let matchedOwner;
58
+ for (const entry of entries) {
59
+ if (matchPattern(filePath, entry.pattern)) {
60
+ matchedOwner = entry.owners[0].replace(/^@/, "");
61
+ }
62
+ }
63
+ return matchedOwner;
64
+ }
65
+ function matchPattern(filePath, pattern) {
66
+ let glob = pattern;
67
+ if (glob.startsWith("/"))
68
+ glob = glob.slice(1);
69
+ if (glob.endsWith("/"))
70
+ glob = `${glob}**`;
71
+ if (!glob.includes("/") && !glob.startsWith("*"))
72
+ glob = `**/${glob}`;
73
+ return (0, minimatch_1.minimatch)(filePath, glob, { dot: true });
74
+ }
75
+ class CodeownersParser {
76
+ entries;
77
+ sourcePath;
78
+ constructor(projectDir) {
79
+ const result = loadCodeowners(projectDir);
80
+ this.entries = result.entries;
81
+ this.sourcePath = result.sourcePath;
82
+ }
83
+ hasCodeowners() {
84
+ return this.entries.length > 0;
85
+ }
86
+ getSourcePath() {
87
+ return this.sourcePath;
88
+ }
89
+ getOwner(filePath) {
90
+ return matchOwner(filePath, this.entries);
91
+ }
92
+ getEntries() {
93
+ return this.entries;
94
+ }
95
+ }
96
+ exports.CodeownersParser = CodeownersParser;
97
+ //# sourceMappingURL=codeowners.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeowners.js","sourceRoot":"","sources":["../../src/utils/codeowners.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * 扫描结果通知系统
3
+ *
4
+ * 支持飞书、钉钉、企业微信、Slack webhook 通知。
5
+ * 扫描完成后自动发送摘要到配置的渠道。
6
+ */
7
+ import type { ScanResult, Severity } from "../types.js";
8
+ /** 通知渠道配置 */
9
+ export interface NotificationChannel {
10
+ enabled: boolean;
11
+ webhook: string;
12
+ }
13
+ /** 通知配置 */
14
+ export interface NotificationConfig {
15
+ feishu?: NotificationChannel;
16
+ dingtalk?: NotificationChannel;
17
+ wecom?: NotificationChannel;
18
+ slack?: NotificationChannel;
19
+ }
20
+ /** 通知内容 */
21
+ export interface NotificationPayload {
22
+ project: string;
23
+ modules: string[];
24
+ totalIssues: number;
25
+ issuesBySeverity: Record<Severity, number>;
26
+ duration: number;
27
+ topIssues: {
28
+ file: string;
29
+ title: string;
30
+ severity: Severity;
31
+ }[];
32
+ reportUrl?: string;
33
+ gatePassed?: boolean;
34
+ }
35
+ /** 通知结果 */
36
+ export interface NotificationResult {
37
+ channel: string;
38
+ success: boolean;
39
+ error?: string;
40
+ }
41
+ /** 从环境变量或配置检测通知配置 */
42
+ export declare function detectNotificationConfig(): NotificationConfig;
43
+ /** 发送通知到所有已启用渠道 */
44
+ export declare function sendNotifications(payload: NotificationPayload, config: NotificationConfig): Promise<NotificationResult[]>;
45
+ /** 从 ScanResult[] 构建通知 payload */
46
+ export declare function buildNotificationPayload(results: ScanResult[], options: {
47
+ project: string;
48
+ duration: number;
49
+ reportUrl?: string;
50
+ gatePassed?: boolean;
51
+ }): NotificationPayload;
52
+ //# sourceMappingURL=notification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/utils/notification.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD,aAAa;AACb,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,WAAW;AACX,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC/B;AAED,WAAW;AACX,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,EAAE,CAAC;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,WAAW;AACX,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAqB;AACrB,wBAAgB,wBAAwB,IAAI,kBAAkB,CAkB7D;AAED,mBAAmB;AACnB,wBAAsB,iBAAiB,CACnC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,kBAAkB,GAC3B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAoB/B;AAoMD,kCAAkC;AAClC,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,EAAE;IACL,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB,GACF,mBAAmB,CAiCrB"}
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ /**
3
+ * 扫描结果通知系统
4
+ *
5
+ * 支持飞书、钉钉、企业微信、Slack webhook 通知。
6
+ * 扫描完成后自动发送摘要到配置的渠道。
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.detectNotificationConfig = detectNotificationConfig;
10
+ exports.sendNotifications = sendNotifications;
11
+ exports.buildNotificationPayload = buildNotificationPayload;
12
+ /** 从环境变量或配置检测通知配置 */
13
+ function detectNotificationConfig() {
14
+ const config = {};
15
+ const channels = [
16
+ { key: "feishu", env: "FG_NOTIFY_FEISHU" },
17
+ { key: "dingtalk", env: "FG_NOTIFY_DINGTALK" },
18
+ { key: "wecom", env: "FG_NOTIFY_WECOM" },
19
+ { key: "slack", env: "FG_NOTIFY_SLACK" },
20
+ ];
21
+ for (const { key, env } of channels) {
22
+ const webhook = process.env[env];
23
+ if (webhook) {
24
+ config[key] = { enabled: true, webhook };
25
+ }
26
+ }
27
+ return config;
28
+ }
29
+ /** 发送通知到所有已启用渠道 */
30
+ async function sendNotifications(payload, config) {
31
+ const results = [];
32
+ const entries = Object.entries(config);
33
+ for (const [channel, channelConfig] of entries) {
34
+ if (!channelConfig?.enabled || !channelConfig.webhook) {
35
+ continue;
36
+ }
37
+ try {
38
+ const result = await sendToChannel(payload, channel, channelConfig.webhook);
39
+ results.push(result);
40
+ }
41
+ catch (err) {
42
+ results.push({ channel, success: false, error: String(err) });
43
+ }
44
+ }
45
+ return results;
46
+ }
47
+ /** 发送单渠道通知 */
48
+ async function sendToChannel(payload, channel, webhook) {
49
+ const body = buildPayload(payload, channel);
50
+ const response = await fetch(webhook, {
51
+ method: "POST",
52
+ headers: { "Content-Type": "application/json" },
53
+ body: JSON.stringify(body),
54
+ });
55
+ if (!response.ok) {
56
+ const text = await response.text().catch(() => "Unknown error");
57
+ return { channel, success: false, error: `HTTP ${response.status}: ${text}` };
58
+ }
59
+ return { channel, success: true };
60
+ }
61
+ /** 根据渠道构建不同格式的 payload */
62
+ function buildPayload(payload, channel) {
63
+ const status = payload.gatePassed !== false ? "✅ 扫描完成" : "❌ 门禁未通过";
64
+ const severityText = [
65
+ `🔴 Critical: ${payload.issuesBySeverity.critical || 0}`,
66
+ `🟡 Warning: ${payload.issuesBySeverity.warning || 0}`,
67
+ `💡 Suggestion: ${payload.issuesBySeverity.suggestion || 0}`,
68
+ ].join(" | ");
69
+ const topIssuesText = payload.topIssues
70
+ .map((i) => `• [${i.severity.toUpperCase()}] ${i.file}: ${i.title}`)
71
+ .join("\n");
72
+ switch (channel) {
73
+ case "feishu":
74
+ return buildFeishuPayload(payload, status, severityText, topIssuesText);
75
+ case "dingtalk":
76
+ return buildDingTalkPayload(payload, status, severityText, topIssuesText);
77
+ case "wecom":
78
+ return buildWeComPayload(payload, status, severityText, topIssuesText);
79
+ case "slack":
80
+ return buildSlackPayload(payload, status, severityText, topIssuesText);
81
+ default:
82
+ return buildGenericPayload(payload, status, severityText, topIssuesText);
83
+ }
84
+ }
85
+ /** 飞书 webhook payload */
86
+ function buildFeishuPayload(payload, status, severityText, topIssuesText) {
87
+ const content = [
88
+ `**${status}**`,
89
+ `项目: ${payload.project}`,
90
+ `模块: ${payload.modules.join(", ")}`,
91
+ `耗时: ${(payload.duration / 1000).toFixed(1)}s`,
92
+ ``,
93
+ severityText,
94
+ ``,
95
+ topIssuesText ? `**关键问题:**\n${topIssuesText}` : "",
96
+ payload.reportUrl ? `\n[查看完整报告](${payload.reportUrl})` : "",
97
+ ]
98
+ .filter(Boolean)
99
+ .join("\n");
100
+ return {
101
+ msg_type: "interactive",
102
+ card: {
103
+ config: { wide_screen_mode: true },
104
+ header: {
105
+ title: { tag: "plain_text", content: `frontend-guardian: ${payload.project}` },
106
+ template: payload.gatePassed === false ? "red" : "green",
107
+ },
108
+ elements: [
109
+ {
110
+ tag: "div",
111
+ text: { tag: "lark_md", content },
112
+ },
113
+ ],
114
+ },
115
+ };
116
+ }
117
+ /** 钉钉 webhook payload */
118
+ function buildDingTalkPayload(payload, status, severityText, topIssuesText) {
119
+ const text = [
120
+ `### ${status}`,
121
+ `**项目:** ${payload.project}`,
122
+ `**模块:** ${payload.modules.join(", ")}`,
123
+ `**耗时:** ${(payload.duration / 1000).toFixed(1)}s`,
124
+ ``,
125
+ severityText,
126
+ ``,
127
+ topIssuesText ? `**关键问题:**\n${topIssuesText}` : "",
128
+ payload.reportUrl ? `\n[查看完整报告](${payload.reportUrl})` : "",
129
+ ]
130
+ .filter(Boolean)
131
+ .join("\n");
132
+ return {
133
+ msgtype: "markdown",
134
+ markdown: { title: `frontend-guardian: ${payload.project}`, text },
135
+ };
136
+ }
137
+ /** 企业微信 webhook payload */
138
+ function buildWeComPayload(payload, status, severityText, topIssuesText) {
139
+ const content = [
140
+ `${status}`,
141
+ `项目: ${payload.project}`,
142
+ `模块: ${payload.modules.join(", ")}`,
143
+ `耗时: ${(payload.duration / 1000).toFixed(1)}s`,
144
+ ``,
145
+ severityText,
146
+ ``,
147
+ topIssuesText ? `关键问题:\n${topIssuesText}` : "",
148
+ payload.reportUrl ? `\n查看完整报告: ${payload.reportUrl}` : "",
149
+ ]
150
+ .filter(Boolean)
151
+ .join("\n");
152
+ return {
153
+ msgtype: "markdown",
154
+ markdown: { content },
155
+ };
156
+ }
157
+ /** Slack webhook payload */
158
+ function buildSlackPayload(payload, status, severityText, topIssuesText) {
159
+ const color = payload.gatePassed === false ? "danger" : "good";
160
+ const fields = [
161
+ { title: "项目", value: payload.project, short: true },
162
+ { title: "模块", value: payload.modules.join(", "), short: true },
163
+ { title: "耗时", value: `${(payload.duration / 1000).toFixed(1)}s`, short: true },
164
+ { title: "问题分布", value: severityText.replace(/\|/g, "\n"), short: false },
165
+ ];
166
+ if (topIssuesText) {
167
+ fields.push({ title: "关键问题", value: topIssuesText, short: false });
168
+ }
169
+ return {
170
+ attachments: [
171
+ {
172
+ color,
173
+ pretext: status,
174
+ fields,
175
+ footer: "frontend-guardian",
176
+ ts: Math.floor(Date.now() / 1000),
177
+ },
178
+ ],
179
+ };
180
+ }
181
+ /** 通用 JSON payload */
182
+ function buildGenericPayload(payload, status, severityText, topIssuesText) {
183
+ return {
184
+ status,
185
+ project: payload.project,
186
+ modules: payload.modules,
187
+ duration: payload.duration,
188
+ severity: payload.issuesBySeverity,
189
+ topIssues: payload.topIssues,
190
+ reportUrl: payload.reportUrl,
191
+ gatePassed: payload.gatePassed,
192
+ };
193
+ }
194
+ /** 从 ScanResult[] 构建通知 payload */
195
+ function buildNotificationPayload(results, options) {
196
+ const issuesBySeverity = { critical: 0, warning: 0, suggestion: 0 };
197
+ const allIssues = [];
198
+ for (const result of results) {
199
+ for (const sev of ["critical", "warning", "suggestion"]) {
200
+ issuesBySeverity[sev] += result.issues[sev].length;
201
+ for (const issue of result.issues[sev]) {
202
+ allIssues.push({
203
+ file: issue.file,
204
+ title: issue.title,
205
+ severity: sev,
206
+ });
207
+ }
208
+ }
209
+ }
210
+ // 取最严重的 top 5
211
+ const severityOrder = { critical: 0, warning: 1, suggestion: 2 };
212
+ const topIssues = allIssues
213
+ .sort((a, b) => severityOrder[a.severity] - severityOrder[b.severity])
214
+ .slice(0, 5);
215
+ return {
216
+ project: options.project,
217
+ modules: results.map((r) => r.module),
218
+ totalIssues: allIssues.length,
219
+ issuesBySeverity,
220
+ duration: options.duration,
221
+ topIssues,
222
+ reportUrl: options.reportUrl,
223
+ gatePassed: options.gatePassed,
224
+ };
225
+ }
226
+ //# sourceMappingURL=notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/utils/notification.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "frontend-guardian-core",
3
- "version": "3.4.0",
3
+ "version": "3.5.0",
4
4
  "description": "Core analysis engine for frontend-guardian — AST-based scanning and auto-fixing",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -12,8 +12,8 @@
12
12
  }
13
13
  },
14
14
  "bin": {
15
- "fg-core": "./bin/fg-core.js",
16
- "fg-lsp": "./bin/fg-lsp.js"
15
+ "fg-core": "bin/fg-core.js",
16
+ "fg-lsp": "bin/fg-lsp.js"
17
17
  },
18
18
  "files": [
19
19
  "dist",