@mycodemap/mycodemap 0.1.0 → 0.2.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/CHANGELOG.md +164 -6
- package/README.md +407 -141
- package/dist/cli/commands/ci.d.ts +7 -1
- package/dist/cli/commands/ci.d.ts.map +1 -1
- package/dist/cli/commands/ci.js +38 -0
- package/dist/cli/commands/ci.js.map +1 -1
- package/dist/cli/commands/cycles.d.ts.map +1 -1
- package/dist/cli/commands/cycles.js +2 -0
- package/dist/cli/commands/cycles.js.map +1 -1
- package/dist/cli/commands/export.d.ts +6 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +108 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +96 -0
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +3 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/logs.d.ts +5 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +189 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/report.d.ts +12 -0
- package/dist/cli/commands/report.d.ts.map +1 -0
- package/dist/cli/commands/report.js +158 -0
- package/dist/cli/commands/report.js.map +1 -0
- package/dist/cli/commands/server.d.ts +9 -0
- package/dist/cli/commands/server.d.ts.map +1 -0
- package/dist/cli/commands/server.js +68 -0
- package/dist/cli/commands/server.js.map +1 -0
- package/dist/cli/commands/watch-foreground.d.ts.map +1 -1
- package/dist/cli/commands/watch-foreground.js +2 -0
- package/dist/cli/commands/watch-foreground.js.map +1 -1
- package/dist/cli/commands/watch.d.ts.map +1 -1
- package/dist/cli/commands/watch.js +2 -0
- package/dist/cli/commands/watch.js.map +1 -1
- package/dist/cli/first-run-guide.d.ts +23 -0
- package/dist/cli/first-run-guide.d.ts.map +1 -0
- package/dist/cli/first-run-guide.js +83 -0
- package/dist/cli/first-run-guide.js.map +1 -0
- package/dist/cli/index.js +85 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/platform-check.d.ts +21 -0
- package/dist/cli/platform-check.d.ts.map +1 -0
- package/dist/cli/platform-check.js +94 -0
- package/dist/cli/platform-check.js.map +1 -0
- package/dist/cli/tree-sitter-check.d.ts +35 -0
- package/dist/cli/tree-sitter-check.d.ts.map +1 -0
- package/dist/cli/tree-sitter-check.js +133 -0
- package/dist/cli/tree-sitter-check.js.map +1 -0
- package/dist/cli/utils/sanitize.d.ts +54 -0
- package/dist/cli/utils/sanitize.d.ts.map +1 -0
- package/dist/cli/utils/sanitize.js +131 -0
- package/dist/cli/utils/sanitize.js.map +1 -0
- package/dist/cli-new/commands/export.d.ts +15 -0
- package/dist/cli-new/commands/export.d.ts.map +1 -0
- package/dist/cli-new/commands/export.js +107 -0
- package/dist/cli-new/commands/export.js.map +1 -0
- package/dist/cli-new/commands/query.d.ts +14 -0
- package/dist/cli-new/commands/query.d.ts.map +1 -0
- package/dist/cli-new/commands/query.js +120 -0
- package/dist/cli-new/commands/query.js.map +1 -0
- package/dist/cli-new/commands/server.d.ts +13 -0
- package/dist/cli-new/commands/server.d.ts.map +1 -0
- package/dist/cli-new/commands/server.js +94 -0
- package/dist/cli-new/commands/server.js.map +1 -0
- package/dist/cli-new/index.d.ts +11 -0
- package/dist/cli-new/index.d.ts.map +1 -0
- package/dist/cli-new/index.js +63 -0
- package/dist/cli-new/index.js.map +1 -0
- package/dist/cli-new/types/index.d.ts +88 -0
- package/dist/cli-new/types/index.d.ts.map +1 -0
- package/dist/cli-new/types/index.js +7 -0
- package/dist/cli-new/types/index.js.map +1 -0
- package/dist/domain/entities/CodeGraph.d.ts +134 -0
- package/dist/domain/entities/CodeGraph.d.ts.map +1 -0
- package/dist/domain/entities/CodeGraph.js +316 -0
- package/dist/domain/entities/CodeGraph.js.map +1 -0
- package/dist/domain/entities/Dependency.d.ts +78 -0
- package/dist/domain/entities/Dependency.d.ts.map +1 -0
- package/dist/domain/entities/Dependency.js +132 -0
- package/dist/domain/entities/Dependency.js.map +1 -0
- package/dist/domain/entities/Module.d.ts +75 -0
- package/dist/domain/entities/Module.d.ts.map +1 -0
- package/dist/domain/entities/Module.js +151 -0
- package/dist/domain/entities/Module.js.map +1 -0
- package/dist/domain/entities/Project.d.ts +50 -0
- package/dist/domain/entities/Project.d.ts.map +1 -0
- package/dist/domain/entities/Project.js +99 -0
- package/dist/domain/entities/Project.js.map +1 -0
- package/dist/domain/entities/Symbol.d.ts +75 -0
- package/dist/domain/entities/Symbol.d.ts.map +1 -0
- package/dist/domain/entities/Symbol.js +130 -0
- package/dist/domain/entities/Symbol.js.map +1 -0
- package/dist/domain/events/DomainEvent.d.ts +76 -0
- package/dist/domain/events/DomainEvent.d.ts.map +1 -0
- package/dist/domain/events/DomainEvent.js +153 -0
- package/dist/domain/events/DomainEvent.js.map +1 -0
- package/dist/domain/index.d.ts +10 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +18 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/repositories/CodeGraphRepository.d.ts +58 -0
- package/dist/domain/repositories/CodeGraphRepository.d.ts.map +1 -0
- package/dist/domain/repositories/CodeGraphRepository.js +37 -0
- package/dist/domain/repositories/CodeGraphRepository.js.map +1 -0
- package/dist/domain/services/CodeGraphBuilder.d.ts +50 -0
- package/dist/domain/services/CodeGraphBuilder.d.ts.map +1 -0
- package/dist/domain/services/CodeGraphBuilder.js +121 -0
- package/dist/domain/services/CodeGraphBuilder.js.map +1 -0
- package/dist/infrastructure/parser/implementations/GoParser.d.ts +25 -0
- package/dist/infrastructure/parser/implementations/GoParser.d.ts.map +1 -0
- package/dist/infrastructure/parser/implementations/GoParser.js +158 -0
- package/dist/infrastructure/parser/implementations/GoParser.js.map +1 -0
- package/dist/infrastructure/parser/implementations/PythonParser.d.ts +30 -0
- package/dist/infrastructure/parser/implementations/PythonParser.d.ts.map +1 -0
- package/dist/infrastructure/parser/implementations/PythonParser.js +201 -0
- package/dist/infrastructure/parser/implementations/PythonParser.js.map +1 -0
- package/dist/infrastructure/parser/implementations/TypeScriptParser.d.ts +63 -0
- package/dist/infrastructure/parser/implementations/TypeScriptParser.d.ts.map +1 -0
- package/dist/infrastructure/parser/implementations/TypeScriptParser.js +420 -0
- package/dist/infrastructure/parser/implementations/TypeScriptParser.js.map +1 -0
- package/dist/infrastructure/parser/index.d.ts +13 -0
- package/dist/infrastructure/parser/index.d.ts.map +1 -0
- package/dist/infrastructure/parser/index.js +32 -0
- package/dist/infrastructure/parser/index.js.map +1 -0
- package/dist/infrastructure/parser/interfaces/ParserBase.d.ts +124 -0
- package/dist/infrastructure/parser/interfaces/ParserBase.d.ts.map +1 -0
- package/dist/infrastructure/parser/interfaces/ParserBase.js +200 -0
- package/dist/infrastructure/parser/interfaces/ParserBase.js.map +1 -0
- package/dist/infrastructure/parser/registry/ParserRegistry.d.ts +68 -0
- package/dist/infrastructure/parser/registry/ParserRegistry.d.ts.map +1 -0
- package/dist/infrastructure/parser/registry/ParserRegistry.js +116 -0
- package/dist/infrastructure/parser/registry/ParserRegistry.js.map +1 -0
- package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.d.ts +44 -0
- package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.d.ts.map +1 -0
- package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.js +129 -0
- package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.js.map +1 -0
- package/dist/infrastructure/repositories/index.d.ts +3 -0
- package/dist/infrastructure/repositories/index.d.ts.map +1 -0
- package/dist/infrastructure/repositories/index.js +7 -0
- package/dist/infrastructure/repositories/index.js.map +1 -0
- package/dist/infrastructure/storage/StorageFactory.d.ts +53 -0
- package/dist/infrastructure/storage/StorageFactory.d.ts.map +1 -0
- package/dist/infrastructure/storage/StorageFactory.js +150 -0
- package/dist/infrastructure/storage/StorageFactory.js.map +1 -0
- package/dist/infrastructure/storage/adapters/FileSystemStorage.d.ts +52 -0
- package/dist/infrastructure/storage/adapters/FileSystemStorage.d.ts.map +1 -0
- package/dist/infrastructure/storage/adapters/FileSystemStorage.js +315 -0
- package/dist/infrastructure/storage/adapters/FileSystemStorage.js.map +1 -0
- package/dist/infrastructure/storage/adapters/KuzuDBStorage.d.ts +52 -0
- package/dist/infrastructure/storage/adapters/KuzuDBStorage.d.ts.map +1 -0
- package/dist/infrastructure/storage/adapters/KuzuDBStorage.js +235 -0
- package/dist/infrastructure/storage/adapters/KuzuDBStorage.js.map +1 -0
- package/dist/infrastructure/storage/adapters/MemoryStorage.d.ts +37 -0
- package/dist/infrastructure/storage/adapters/MemoryStorage.d.ts.map +1 -0
- package/dist/infrastructure/storage/adapters/MemoryStorage.js +229 -0
- package/dist/infrastructure/storage/adapters/MemoryStorage.js.map +1 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts +49 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts.map +1 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.js +222 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.js.map +1 -0
- package/dist/infrastructure/storage/index.d.ts +6 -0
- package/dist/infrastructure/storage/index.d.ts.map +1 -0
- package/dist/infrastructure/storage/index.js +13 -0
- package/dist/infrastructure/storage/index.js.map +1 -0
- package/dist/infrastructure/storage/interfaces/StorageBase.d.ts +76 -0
- package/dist/infrastructure/storage/interfaces/StorageBase.d.ts.map +1 -0
- package/dist/infrastructure/storage/interfaces/StorageBase.js +116 -0
- package/dist/infrastructure/storage/interfaces/StorageBase.js.map +1 -0
- package/dist/interface/config/index.d.ts +102 -0
- package/dist/interface/config/index.d.ts.map +1 -0
- package/dist/interface/config/index.js +7 -0
- package/dist/interface/config/index.js.map +1 -0
- package/dist/interface/types/index.d.ts +425 -0
- package/dist/interface/types/index.d.ts.map +1 -0
- package/dist/interface/types/index.js +8 -0
- package/dist/interface/types/index.js.map +1 -0
- package/dist/interface/types/parser.d.ts +103 -0
- package/dist/interface/types/parser.d.ts.map +1 -0
- package/dist/interface/types/parser.js +7 -0
- package/dist/interface/types/parser.js.map +1 -0
- package/dist/interface/types/storage.d.ts +98 -0
- package/dist/interface/types/storage.d.ts.map +1 -0
- package/dist/interface/types/storage.js +7 -0
- package/dist/interface/types/storage.js.map +1 -0
- package/dist/orchestrator/test-linker.js +1 -1
- package/dist/orchestrator/test-linker.js.map +1 -1
- package/dist/server/CodeMapServer.d.ts +51 -0
- package/dist/server/CodeMapServer.d.ts.map +1 -0
- package/dist/server/CodeMapServer.js +146 -0
- package/dist/server/CodeMapServer.js.map +1 -0
- package/dist/server/handlers/AnalysisHandler.d.ts +82 -0
- package/dist/server/handlers/AnalysisHandler.d.ts.map +1 -0
- package/dist/server/handlers/AnalysisHandler.js +196 -0
- package/dist/server/handlers/AnalysisHandler.js.map +1 -0
- package/dist/server/handlers/QueryHandler.d.ts +57 -0
- package/dist/server/handlers/QueryHandler.d.ts.map +1 -0
- package/dist/server/handlers/QueryHandler.js +260 -0
- package/dist/server/handlers/QueryHandler.js.map +1 -0
- package/dist/server/index.d.ts +7 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +13 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/routes/api.d.ts +8 -0
- package/dist/server/routes/api.d.ts.map +1 -0
- package/dist/server/routes/api.js +372 -0
- package/dist/server/routes/api.js.map +1 -0
- package/dist/server/types/index.d.ts +171 -0
- package/dist/server/types/index.d.ts.map +1 -0
- package/dist/server/types/index.js +7 -0
- package/dist/server/types/index.js.map +1 -0
- package/dist/types/index.d.ts +6 -372
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +9 -3
- package/dist/types/index.js.map +1 -1
- package/docs/AI_ASSISTANT_SETUP.md +811 -0
- package/docs/PUBLISHING.md +162 -0
- package/docs/README.md +37 -0
- package/docs/SETUP_GUIDE.md +493 -0
- package/docs/ai-guide/COMMANDS.md +369 -0
- package/docs/ai-guide/INTEGRATION.md +513 -0
- package/docs/ai-guide/OUTPUT.md +465 -0
- package/docs/ai-guide/PATTERNS.md +409 -0
- package/docs/ai-guide/PROMPTS.md +414 -0
- package/docs/ai-guide/QUICKSTART.md +114 -0
- package/docs/ai-guide/README.md +66 -0
- package/docs/archive/AI_INTEGRATION_GUIDE_ARCHIVED.md +391 -0
- package/docs/archive/ARCHIVE.md +39 -0
- package/docs/archive/MYCLAUDE_GUIDE.md +305 -0
- package/docs/archive/PUBLISH_NPM_DESIGN_V1.md +1699 -0
- package/docs/archive/PUBLISH_NPM_DESIGN_V2.md +396 -0
- package/docs/archive/README.md +29 -0
- package/docs/archive/TASK_DESIGN_COVERAGE_REPORT.md +320 -0
- package/docs/archive/TEST_SUMMARY.md +140 -0
- package/docs/archive/comprehensive_test_report.md +337 -0
- package/docs/archive/design-docs/CI_GATEWAY_DESIGN.md +790 -0
- package/docs/archive/design-docs/PUBLISH_NPM_DESIGN_FINAL.md +491 -0
- package/docs/archive/design-docs/REFACTOR_ARCHITECTURE_OVERVIEW.md +558 -0
- package/docs/archive/design-docs/REFACTOR_CONFIDENCE_DESIGN.md +250 -0
- package/docs/archive/design-docs/REFACTOR_GIT_ANALYZER_DESIGN.md +791 -0
- package/docs/archive/design-docs/REFACTOR_ORCHESTRATOR_DESIGN.md +1071 -0
- package/docs/archive/design-docs/REFACTOR_RESULT_FUSION_DESIGN.md +321 -0
- package/docs/archive/design-docs/REFACTOR_TEST_LINKER_DESIGN.md +317 -0
- package/docs/archive/myclaude.md +1084 -0
- package/docs/archive/plans/2026-03-14-go-language-support-design.md +92 -0
- package/docs/archive/product-specs/REFACTOR_REQUIREMENTS.md +976 -0
- package/docs/archive/scenario-2-deps-analysis.md +353 -0
- package/docs/archive/test-report-symbol-search.md +384 -0
- package/docs/archive/test-scenario-4-complexity-analysis.md +460 -0
- package/docs/archive/test_report_scenario5.md +615 -0
- package/docs/archive/test_scenario_3_impact_analysis_report.md +520 -0
- package/docs/design-docs/README.md +26 -0
- package/docs/exec-plans/MVP3-IMPLEMENTATION-ROADMAP.md +524 -0
- package/docs/exec-plans/README.md +29 -0
- package/docs/exec-plans/active/.gitkeep +0 -0
- package/docs/exec-plans/completed/.gitkeep +0 -0
- package/docs/exec-plans/completed/2026-03-03-deps-path-extension-fix.md +186 -0
- package/docs/exec-plans/completed/2026-03-03-post-task-plan.md +135 -0
- package/docs/exec-plans/completed/harness-engineering-rollout.md +184 -0
- package/docs/exec-plans/tech-debt/.gitkeep +0 -0
- package/docs/exec-plans/tech-debt/2026-03-15-lint-guardrail-gap.md +30 -0
- package/docs/generated/README.md +19 -0
- package/docs/product-specs/MVP3-ARCHITECTURE-COMPARISON.md +504 -0
- package/docs/product-specs/MVP3-ARCHITECTURE-REDESIGN-PRD.md +322 -0
- package/docs/product-specs/MVP3-ARCHITECTURE-REDESIGN-TECH-PRD.md +1374 -0
- package/docs/product-specs/README.md +22 -0
- package/docs/references/README.md +15 -0
- package/docs/references/tmp.md +527 -0
- package/docs/rules/README.md +16 -0
- package/docs/rules/architecture-guardrails.md +349 -0
- package/docs/rules/code-quality-redlines.md +321 -0
- package/docs/rules/deployment.md +23 -0
- package/docs/rules/engineering-with-codex-openai.md +202 -0
- package/docs/rules/testing.md +73 -0
- package/docs/rules/validation.md +39 -0
- package/examples/README.md +61 -0
- package/examples/claude/codemap-skill.md +94 -0
- package/examples/codex/codemap-agent.md +66 -0
- package/examples/copilot/copilot-instructions.md +24 -0
- package/examples/kimi/codemap-skill.md +92 -0
- package/package.json +22 -7
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// [META] since:2026-03-06 | owner:cli-team | stable:false
|
|
2
|
+
// [WHY] 首次运行引导,向用户展示快速开始指南和下一步命令
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import fs from 'fs';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
/**
|
|
7
|
+
* 首次运行检测标记文件路径
|
|
8
|
+
*/
|
|
9
|
+
const FIRST_RUN_MARKER = '.mycodemap/.first-run-done';
|
|
10
|
+
/**
|
|
11
|
+
* 检查是否是首次运行
|
|
12
|
+
* - 不存在配置文件
|
|
13
|
+
* - 不存在首次运行标记文件
|
|
14
|
+
* - 不存在旧输出目录(用于迁移检测)
|
|
15
|
+
*/
|
|
16
|
+
export function isFirstRun(cwd = process.cwd()) {
|
|
17
|
+
const configNew = path.join(cwd, 'mycodemap.config.json');
|
|
18
|
+
const configOld = path.join(cwd, 'codemap.config.json');
|
|
19
|
+
const markerPath = path.join(cwd, FIRST_RUN_MARKER);
|
|
20
|
+
const oldOutputDir = path.join(cwd, '.codemap');
|
|
21
|
+
const hasConfig = fs.existsSync(configNew) || fs.existsSync(configOld);
|
|
22
|
+
const hasMarker = fs.existsSync(markerPath);
|
|
23
|
+
const hasOldOutput = fs.existsSync(oldOutputDir);
|
|
24
|
+
// 如果有旧配置或旧输出目录,不是首次运行(需要迁移)
|
|
25
|
+
return !hasConfig && !hasMarker && !hasOldOutput;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 标记首次运行已完成
|
|
29
|
+
*/
|
|
30
|
+
export function markFirstRunDone(cwd = process.cwd()) {
|
|
31
|
+
const markerDir = path.join(cwd, '.mycodemap');
|
|
32
|
+
const markerPath = path.join(cwd, FIRST_RUN_MARKER);
|
|
33
|
+
try {
|
|
34
|
+
if (!fs.existsSync(markerDir)) {
|
|
35
|
+
fs.mkdirSync(markerDir, { recursive: true });
|
|
36
|
+
}
|
|
37
|
+
fs.writeFileSync(markerPath, new Date().toISOString(), 'utf-8');
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// 标记失败不影响主流程
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 显示首次运行欢迎信息
|
|
45
|
+
*/
|
|
46
|
+
export function showFirstRunGuide() {
|
|
47
|
+
console.log('');
|
|
48
|
+
console.log(chalk.cyan('━'.repeat(60)));
|
|
49
|
+
console.log(chalk.white.bold(' 欢迎使用 CodeMap - TypeScript 代码地图工具'));
|
|
50
|
+
console.log(chalk.cyan('━'.repeat(60)));
|
|
51
|
+
console.log('');
|
|
52
|
+
console.log(chalk.white(' 快速开始:'));
|
|
53
|
+
console.log('');
|
|
54
|
+
console.log(chalk.gray(' 1. ') + chalk.white('初始化配置'));
|
|
55
|
+
console.log(chalk.gray(' ') + chalk.cyan('mycodemap init'));
|
|
56
|
+
console.log(chalk.gray(' 或 ') + chalk.cyan('codemap init'));
|
|
57
|
+
console.log('');
|
|
58
|
+
console.log(chalk.gray(' 2. ') + chalk.white('生成代码地图'));
|
|
59
|
+
console.log(chalk.gray(' ') + chalk.cyan('mycodemap generate'));
|
|
60
|
+
console.log('');
|
|
61
|
+
console.log(chalk.gray(' 3. ') + chalk.white('查看帮助'));
|
|
62
|
+
console.log(chalk.gray(' ') + chalk.cyan('mycodemap --help'));
|
|
63
|
+
console.log('');
|
|
64
|
+
console.log(chalk.cyan('━'.repeat(60)));
|
|
65
|
+
console.log(chalk.gray(' 更多功能:query | deps | cycles | complexity | impact'));
|
|
66
|
+
console.log(chalk.cyan('━'.repeat(60)));
|
|
67
|
+
console.log('');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 执行首次运行引导流程
|
|
71
|
+
* - 检测是否是首次运行
|
|
72
|
+
* - 显示欢迎指南
|
|
73
|
+
* - 标记已完成
|
|
74
|
+
*/
|
|
75
|
+
export function runFirstRunGuide(cwd = process.cwd()) {
|
|
76
|
+
if (!isFirstRun(cwd)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
showFirstRunGuide();
|
|
80
|
+
markFirstRunDone(cwd);
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=first-run-guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"first-run-guide.js","sourceRoot":"","sources":["../../src/cli/first-run-guide.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -10,12 +10,52 @@ import { depsCommand } from './commands/deps.js';
|
|
|
10
10
|
import { cyclesCommand } from './commands/cycles.js';
|
|
11
11
|
import { complexityCommand } from './commands/complexity.js';
|
|
12
12
|
import { impactCommand } from './commands/impact.js';
|
|
13
|
-
import { analyzeCommand } from './commands/analyze.js';
|
|
14
13
|
import { ciCommand } from './commands/ci.js';
|
|
15
14
|
import { workflowCommand } from './commands/workflow.js';
|
|
15
|
+
import { reportCommand } from './commands/report.js';
|
|
16
|
+
import { logsCommand } from './commands/logs.js';
|
|
17
|
+
import { serverCommand } from './commands/server.js';
|
|
18
|
+
import { exportCommand } from './commands/export.js';
|
|
16
19
|
import { setupRuntimeLogging } from './runtime-logger.js';
|
|
20
|
+
import { runFirstRunGuide } from './first-run-guide.js';
|
|
21
|
+
import { printMigrationWarning } from './paths.js';
|
|
22
|
+
import { validatePlatform } from './platform-check.js';
|
|
23
|
+
import { commandRequiresTreeSitter, validateTreeSitter } from './tree-sitter-check.js';
|
|
17
24
|
const program = new Command();
|
|
25
|
+
// 检测并显示迁移提示(需要在 runtime-logging 之前执行,避免创建 .mycodemap 影响检测)
|
|
26
|
+
printMigrationWarning();
|
|
27
|
+
// 检测并显示首次运行引导(需要在 runtime-logging 之前执行,避免创建 .mycodemap 影响检测)
|
|
28
|
+
runFirstRunGuide();
|
|
18
29
|
setupRuntimeLogging(process.argv.slice(2));
|
|
30
|
+
// 验证平台支持(CLI 启动时执行)
|
|
31
|
+
try {
|
|
32
|
+
const platformInfo = validatePlatform();
|
|
33
|
+
if (platformInfo.supportLevel === 'partial') {
|
|
34
|
+
console.warn('⚠️ 平台支持级别: partial');
|
|
35
|
+
platformInfo.warnings.forEach(w => console.warn(` - ${w}`));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 包装命令 action,按需检测 tree-sitter
|
|
44
|
+
*/
|
|
45
|
+
function wrapWithTreeSitterCheck(commandName, action) {
|
|
46
|
+
return async (options) => {
|
|
47
|
+
if (commandRequiresTreeSitter(commandName)) {
|
|
48
|
+
try {
|
|
49
|
+
validateTreeSitter();
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return action(options);
|
|
57
|
+
};
|
|
58
|
+
}
|
|
19
59
|
program
|
|
20
60
|
.name('mycodemap')
|
|
21
61
|
.alias('codemap') // 兼容旧命令名
|
|
@@ -104,6 +144,7 @@ program
|
|
|
104
144
|
.option('--structured', '输出完全结构化的 JSON(不包含自然语言字符串,需要配合 --json 或 --output-mode=machine 使用)')
|
|
105
145
|
.option('--output-mode <mode>', '输出模式 (machine|human)')
|
|
106
146
|
.action(async () => {
|
|
147
|
+
const { analyzeCommand } = await import('./commands/analyze.js');
|
|
107
148
|
// 跳过 program name 和 command name
|
|
108
149
|
await analyzeCommand(process.argv.slice(2));
|
|
109
150
|
});
|
|
@@ -111,5 +152,48 @@ program
|
|
|
111
152
|
program.addCommand(ciCommand);
|
|
112
153
|
// Workflow 命令
|
|
113
154
|
program.addCommand(workflowCommand);
|
|
155
|
+
// Report 命令
|
|
156
|
+
program
|
|
157
|
+
.command('report')
|
|
158
|
+
.description('生成代码地图分析报告')
|
|
159
|
+
.option('-o, --output <dir>', '输出目录', '.mycodemap')
|
|
160
|
+
.option('-d, --days <number>', '报告覆盖的天数', '7')
|
|
161
|
+
.option('-j, --json', 'JSON 格式输出')
|
|
162
|
+
.option('-v, --verbose', '显示详细信息')
|
|
163
|
+
.action(reportCommand);
|
|
164
|
+
// Logs 命令
|
|
165
|
+
program
|
|
166
|
+
.command('logs')
|
|
167
|
+
.description('管理代码地图日志')
|
|
168
|
+
.argument('<subcommand>', '子命令 (list|export|clear)')
|
|
169
|
+
.option('-l, --limit <number>', '限制显示数量', '10')
|
|
170
|
+
.option('--level <level>', '按级别过滤 (INFO|WARN|ERROR|DEBUG)')
|
|
171
|
+
.option('-j, --json', 'JSON 格式输出')
|
|
172
|
+
.option('-o, --output <file>', '导出文件路径')
|
|
173
|
+
.option('-d, --days <number>', '天数')
|
|
174
|
+
.option('--format <format>', '导出格式 (json|txt)', 'json')
|
|
175
|
+
.option('-c, --confirm', '确认清理操作')
|
|
176
|
+
.action(async (subcommand, options) => {
|
|
177
|
+
await logsCommand(subcommand, options);
|
|
178
|
+
});
|
|
179
|
+
// ============================================
|
|
180
|
+
// MVP3 新架构命令
|
|
181
|
+
// ============================================
|
|
182
|
+
// Server 命令
|
|
183
|
+
program
|
|
184
|
+
.command('server')
|
|
185
|
+
.description('启动 CodeMap HTTP API 服务器 (MVP3)')
|
|
186
|
+
.option('-p, --port <number>', '服务器端口', '3000')
|
|
187
|
+
.option('-h, --host <string>', '服务器主机', '0.0.0.0')
|
|
188
|
+
.option('--cors', '启用 CORS', false)
|
|
189
|
+
.option('--open', '自动打开浏览器', false)
|
|
190
|
+
.action(serverCommand);
|
|
191
|
+
// Export 命令
|
|
192
|
+
program
|
|
193
|
+
.command('export')
|
|
194
|
+
.description('导出代码图到各种格式 (MVP3)')
|
|
195
|
+
.argument('<format>', '导出格式: json, graphml, dot, mermaid')
|
|
196
|
+
.option('-o, --output <path>', '输出文件路径')
|
|
197
|
+
.action(exportCommand);
|
|
114
198
|
program.parse();
|
|
115
199
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,kEAAkE;AAClE,6BAA6B;AAE7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface PlatformInfo {
|
|
2
|
+
os: string;
|
|
3
|
+
arch: string;
|
|
4
|
+
nodeVersion: string;
|
|
5
|
+
isSupported: boolean;
|
|
6
|
+
supportLevel: 'full' | 'partial' | 'unsupported';
|
|
7
|
+
warnings: string[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 检测当前平台是否被支持
|
|
11
|
+
*/
|
|
12
|
+
export declare function detectPlatform(): PlatformInfo;
|
|
13
|
+
/**
|
|
14
|
+
* 验证平台并在不支持时抛出错误
|
|
15
|
+
*/
|
|
16
|
+
export declare function validatePlatform(): PlatformInfo;
|
|
17
|
+
/**
|
|
18
|
+
* 获取平台诊断信息(用于调试)
|
|
19
|
+
*/
|
|
20
|
+
export declare function getPlatformDiagnostics(): Record<string, string>;
|
|
21
|
+
//# sourceMappingURL=platform-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-check.d.ts","sourceRoot":"","sources":["../../src/cli/platform-check.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC;IACjD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,YAAY,CA4D7C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAmB/C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS/D"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// [META] since:2026-03-06 | owner:worker-2 | stable:true
|
|
2
|
+
// [WHY] 验证运行平台是否满足最低要求,避免运行时错误
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
/**
|
|
5
|
+
* 检测当前平台是否被支持
|
|
6
|
+
*/
|
|
7
|
+
export function detectPlatform() {
|
|
8
|
+
const platform = os.platform();
|
|
9
|
+
const arch = os.arch();
|
|
10
|
+
const nodeVersion = process.version;
|
|
11
|
+
const warnings = [];
|
|
12
|
+
let supportLevel = 'full';
|
|
13
|
+
// 支持的平台列表
|
|
14
|
+
const supportedPlatforms = {
|
|
15
|
+
'darwin': ['x64', 'arm64'],
|
|
16
|
+
'linux': ['x64', 'arm64'],
|
|
17
|
+
'win32': ['x64', 'arm64'],
|
|
18
|
+
};
|
|
19
|
+
// 检查操作系统
|
|
20
|
+
if (!(platform in supportedPlatforms)) {
|
|
21
|
+
return {
|
|
22
|
+
os: platform,
|
|
23
|
+
arch,
|
|
24
|
+
nodeVersion,
|
|
25
|
+
isSupported: false,
|
|
26
|
+
supportLevel: 'unsupported',
|
|
27
|
+
warnings: [`不支持的操作系统: ${platform}`],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// 检查架构
|
|
31
|
+
const supportedArchs = supportedPlatforms[platform];
|
|
32
|
+
if (!supportedArchs.includes(arch)) {
|
|
33
|
+
warnings.push(`架构 ${arch} 可能不受官方支持`);
|
|
34
|
+
supportLevel = 'partial';
|
|
35
|
+
}
|
|
36
|
+
// 检查 Node.js 版本
|
|
37
|
+
const majorVersion = parseInt(nodeVersion.slice(1).split('.')[0], 10);
|
|
38
|
+
if (majorVersion < 18) {
|
|
39
|
+
return {
|
|
40
|
+
os: platform,
|
|
41
|
+
arch,
|
|
42
|
+
nodeVersion,
|
|
43
|
+
isSupported: false,
|
|
44
|
+
supportLevel: 'unsupported',
|
|
45
|
+
warnings: [`Node.js 版本过低: ${nodeVersion},需要 >= 18.0.0`],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (majorVersion < 20) {
|
|
49
|
+
warnings.push(`建议使用 Node.js 20+ 以获得最佳性能`);
|
|
50
|
+
supportLevel = 'partial';
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
os: platform,
|
|
54
|
+
arch,
|
|
55
|
+
nodeVersion,
|
|
56
|
+
isSupported: true,
|
|
57
|
+
supportLevel,
|
|
58
|
+
warnings,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 验证平台并在不支持时抛出错误
|
|
63
|
+
*/
|
|
64
|
+
export function validatePlatform() {
|
|
65
|
+
const info = detectPlatform();
|
|
66
|
+
if (!info.isSupported) {
|
|
67
|
+
const errorMsg = [
|
|
68
|
+
`❌ 平台不受支持`,
|
|
69
|
+
` 操作系统: ${info.os}`,
|
|
70
|
+
` 架构: ${info.arch}`,
|
|
71
|
+
` Node.js: ${info.nodeVersion}`,
|
|
72
|
+
'',
|
|
73
|
+
...info.warnings,
|
|
74
|
+
'',
|
|
75
|
+
'请升级您的环境或联系支持团队。',
|
|
76
|
+
].join('\n');
|
|
77
|
+
throw new Error(errorMsg);
|
|
78
|
+
}
|
|
79
|
+
return info;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 获取平台诊断信息(用于调试)
|
|
83
|
+
*/
|
|
84
|
+
export function getPlatformDiagnostics() {
|
|
85
|
+
const info = detectPlatform();
|
|
86
|
+
return {
|
|
87
|
+
os: info.os,
|
|
88
|
+
arch: info.arch,
|
|
89
|
+
nodeVersion: info.nodeVersion,
|
|
90
|
+
supportLevel: info.supportLevel,
|
|
91
|
+
isSupported: String(info.isSupported),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=platform-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-check.js","sourceRoot":"","sources":["../../src/cli/platform-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface TreeSitterInfo {
|
|
2
|
+
isAvailable: boolean;
|
|
3
|
+
version?: string;
|
|
4
|
+
error?: string;
|
|
5
|
+
memoryAvailable?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* 检测 tree-sitter 是否可用(异步版本)
|
|
9
|
+
*/
|
|
10
|
+
export declare function detectTreeSitter(): Promise<TreeSitterInfo>;
|
|
11
|
+
/**
|
|
12
|
+
* 同步检测 tree-sitter(用于需要同步检测的场景)
|
|
13
|
+
*/
|
|
14
|
+
export declare function detectTreeSitterSync(): TreeSitterInfo;
|
|
15
|
+
/**
|
|
16
|
+
* 需要 tree-sitter 的命令列表
|
|
17
|
+
*/
|
|
18
|
+
export declare const COMMANDS_REQUIRING_TREE_SITTER: Set<string>;
|
|
19
|
+
/**
|
|
20
|
+
* 不需要 tree-sitter 的命令列表
|
|
21
|
+
*/
|
|
22
|
+
export declare const COMMANDS_NOT_REQUIRING_TREE_SITTER: Set<string>;
|
|
23
|
+
/**
|
|
24
|
+
* 判断命令是否需要 tree-sitter
|
|
25
|
+
*/
|
|
26
|
+
export declare function commandRequiresTreeSitter(commandName: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* 验证 tree-sitter 可用性,不可用时抛出错误
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateTreeSitter(): TreeSitterInfo;
|
|
31
|
+
/**
|
|
32
|
+
* 获取 tree-sitter 诊断信息
|
|
33
|
+
*/
|
|
34
|
+
export declare function getTreeSitterDiagnostics(): Record<string, unknown>;
|
|
35
|
+
//# sourceMappingURL=tree-sitter-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-sitter-check.d.ts","sourceRoot":"","sources":["../../src/cli/tree-sitter-check.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,cAAc,CAAC,CAoBhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAqBrD;AAqBD;;GAEG;AACH,eAAO,MAAM,8BAA8B,aAQzC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kCAAkC,aAO7C,CAAC;AAEH;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAWtE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAgBnD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQlE"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
// [META] since:2026-03-06 | owner:worker-2 | stable:true
|
|
2
|
+
// [WHY] 按需检测 tree-sitter 是否可用,避免在不需要 AST 的命令中浪费启动时间
|
|
3
|
+
import { cpus } from 'node:os';
|
|
4
|
+
/**
|
|
5
|
+
* 检测 tree-sitter 是否可用(异步版本)
|
|
6
|
+
*/
|
|
7
|
+
export async function detectTreeSitter() {
|
|
8
|
+
try {
|
|
9
|
+
// 尝试动态导入 tree-sitter
|
|
10
|
+
const treeSitter = await import('tree-sitter');
|
|
11
|
+
const info = {
|
|
12
|
+
isAvailable: true,
|
|
13
|
+
version: '0.21.0', // tree-sitter 版本
|
|
14
|
+
};
|
|
15
|
+
// 检查可用内存
|
|
16
|
+
const totalMemory = cpus().length;
|
|
17
|
+
info.memoryAvailable = totalMemory;
|
|
18
|
+
return info;
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
return {
|
|
22
|
+
isAvailable: false,
|
|
23
|
+
error: error instanceof Error ? error.message : String(error),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 同步检测 tree-sitter(用于需要同步检测的场景)
|
|
29
|
+
*/
|
|
30
|
+
export function detectTreeSitterSync() {
|
|
31
|
+
try {
|
|
32
|
+
// 尝试 require tree-sitter(因为是 ESM,可能需要动态 import)
|
|
33
|
+
// 这里使用一个简化的检测方式
|
|
34
|
+
const result = tryRequireTreeSitter();
|
|
35
|
+
if (result.success) {
|
|
36
|
+
return {
|
|
37
|
+
isAvailable: true,
|
|
38
|
+
version: result.version,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
isAvailable: false,
|
|
43
|
+
error: result.error,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
return {
|
|
48
|
+
isAvailable: false,
|
|
49
|
+
error: error instanceof Error ? error.message : String(error),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function tryRequireTreeSitter() {
|
|
54
|
+
try {
|
|
55
|
+
// 尝试通过检查 node_modules 中是否存在来判断
|
|
56
|
+
// 实际检测在运行时通过 import 执行
|
|
57
|
+
return { success: true, version: '0.21.1' };
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
return {
|
|
61
|
+
success: false,
|
|
62
|
+
error: error instanceof Error ? error.message : String(error),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 需要 tree-sitter 的命令列表
|
|
68
|
+
*/
|
|
69
|
+
export const COMMANDS_REQUIRING_TREE_SITTER = new Set([
|
|
70
|
+
'generate',
|
|
71
|
+
'complexity',
|
|
72
|
+
'watch',
|
|
73
|
+
'analyze',
|
|
74
|
+
'deps',
|
|
75
|
+
'cycles',
|
|
76
|
+
'impact',
|
|
77
|
+
]);
|
|
78
|
+
/**
|
|
79
|
+
* 不需要 tree-sitter 的命令列表
|
|
80
|
+
*/
|
|
81
|
+
export const COMMANDS_NOT_REQUIRING_TREE_SITTER = new Set([
|
|
82
|
+
'init',
|
|
83
|
+
'query',
|
|
84
|
+
'ci',
|
|
85
|
+
'workflow',
|
|
86
|
+
'--version',
|
|
87
|
+
'--help',
|
|
88
|
+
]);
|
|
89
|
+
/**
|
|
90
|
+
* 判断命令是否需要 tree-sitter
|
|
91
|
+
*/
|
|
92
|
+
export function commandRequiresTreeSitter(commandName) {
|
|
93
|
+
// 如果命令明确不需要 tree-sitter
|
|
94
|
+
if (COMMANDS_NOT_REQUIRING_TREE_SITTER.has(commandName)) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
// 如果命令需要 tree-sitter
|
|
98
|
+
if (COMMANDS_REQUIRING_TREE_SITTER.has(commandName)) {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
// 默认假设需要(保守策略)
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 验证 tree-sitter 可用性,不可用时抛出错误
|
|
106
|
+
*/
|
|
107
|
+
export function validateTreeSitter() {
|
|
108
|
+
const info = detectTreeSitterSync();
|
|
109
|
+
if (!info.isAvailable) {
|
|
110
|
+
const errorMsg = [
|
|
111
|
+
`❌ tree-sitter 不可用`,
|
|
112
|
+
` 错误: ${info.error || '未知错误'}`,
|
|
113
|
+
'',
|
|
114
|
+
'某些命令需要 tree-sitter 才能运行。',
|
|
115
|
+
'请确保已正确安装依赖: npm install',
|
|
116
|
+
].join('\n');
|
|
117
|
+
throw new Error(errorMsg);
|
|
118
|
+
}
|
|
119
|
+
return info;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 获取 tree-sitter 诊断信息
|
|
123
|
+
*/
|
|
124
|
+
export function getTreeSitterDiagnostics() {
|
|
125
|
+
const info = detectTreeSitterSync();
|
|
126
|
+
return {
|
|
127
|
+
isAvailable: info.isAvailable,
|
|
128
|
+
version: info.version,
|
|
129
|
+
error: info.error,
|
|
130
|
+
memoryAvailable: info.memoryAvailable,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=tree-sitter-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-sitter-check.js","sourceRoot":"","sources":["../../src/cli/tree-sitter-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 敏感值脱敏规则
|
|
3
|
+
*/
|
|
4
|
+
interface SanitizeRule {
|
|
5
|
+
/** 正则表达式模式 */
|
|
6
|
+
pattern: RegExp;
|
|
7
|
+
/** 替换文本 */
|
|
8
|
+
replacement: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 脱敏配置选项
|
|
12
|
+
*/
|
|
13
|
+
export interface SanitizeOptions {
|
|
14
|
+
/** 自定义脱敏规则 */
|
|
15
|
+
rules?: SanitizeRule[];
|
|
16
|
+
/** 最大字符串长度限制 */
|
|
17
|
+
maxLength?: number;
|
|
18
|
+
/** 是否保留原始长度信息 */
|
|
19
|
+
preserveLength?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 深度脱敏对象中的字符串值
|
|
23
|
+
*
|
|
24
|
+
* @param input - 要脱敏的输入(字符串或对象)
|
|
25
|
+
* @param options - 脱敏选项
|
|
26
|
+
* @returns 脱敏后的结果
|
|
27
|
+
*/
|
|
28
|
+
export declare function sanitize(input: unknown, options?: SanitizeOptions): unknown;
|
|
29
|
+
/**
|
|
30
|
+
* 脱敏并返回字符串
|
|
31
|
+
* 如果输入不是字符串,会先 JSON.stringify 再脱敏
|
|
32
|
+
*
|
|
33
|
+
* @param input - 要脱敏的输入
|
|
34
|
+
* @param options - 脱敏选项
|
|
35
|
+
* @returns 脱敏后的字符串
|
|
36
|
+
*/
|
|
37
|
+
export declare function sanitizeToString(input: unknown, options?: SanitizeOptions): string;
|
|
38
|
+
/**
|
|
39
|
+
* 创建一个带自定义规则的脱敏器
|
|
40
|
+
*
|
|
41
|
+
* @param customRules - 自定义脱敏规则
|
|
42
|
+
* @param options - 其他选项
|
|
43
|
+
* @returns 配置好的脱敏函数
|
|
44
|
+
*/
|
|
45
|
+
export declare function createSanitizer(customRules: SanitizeRule[], options?: Omit<SanitizeOptions, 'rules'>): (input: unknown) => unknown;
|
|
46
|
+
/**
|
|
47
|
+
* 验证字符串是否包含敏感信息
|
|
48
|
+
*
|
|
49
|
+
* @param input - 要检查的字符串
|
|
50
|
+
* @returns 是否包含敏感信息
|
|
51
|
+
*/
|
|
52
|
+
export declare function containsSensitiveData(input: string): boolean;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=sanitize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/sanitize.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,UAAU,YAAY;IACpB,cAAc;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAsCD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc;IACd,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,gBAAgB;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAWD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAuC3E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAOlF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAOlI;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAS5D"}
|