@mycodemap/mycodemap 0.1.1 → 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 +78 -0
- package/README.md +241 -67
- 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/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/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/index.js +22 -1
- package/dist/cli/index.js.map +1 -1
- 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 +68 -0
- package/docs/PUBLISHING.md +162 -0
- package/docs/README.md +37 -0
- package/docs/SETUP_GUIDE.md +91 -5
- 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 +7 -1
- package/docs/archive/ARCHIVE.md +39 -0
- package/docs/archive/MYCLAUDE_GUIDE.md +305 -0
- package/docs/archive/PUBLISH_NPM_DESIGN_V1.md +6 -0
- package/docs/archive/PUBLISH_NPM_DESIGN_V2.md +6 -0
- package/docs/archive/README.md +29 -0
- package/docs/archive/TASK_DESIGN_COVERAGE_REPORT.md +6 -0
- package/docs/archive/TEST_SUMMARY.md +140 -0
- package/docs/archive/comprehensive_test_report.md +337 -0
- package/docs/{CI_GATEWAY_DESIGN.md → archive/design-docs/CI_GATEWAY_DESIGN.md} +6 -0
- package/docs/{PUBLISH_NPM_DESIGN_FINAL.md → archive/design-docs/PUBLISH_NPM_DESIGN_FINAL.md} +7 -1
- package/docs/{REFACTOR_ARCHITECTURE_OVERVIEW.md → archive/design-docs/REFACTOR_ARCHITECTURE_OVERVIEW.md} +8 -2
- package/docs/{REFACTOR_CONFIDENCE_DESIGN.md → archive/design-docs/REFACTOR_CONFIDENCE_DESIGN.md} +6 -0
- package/docs/{REFACTOR_GIT_ANALYZER_DESIGN.md → archive/design-docs/REFACTOR_GIT_ANALYZER_DESIGN.md} +8 -2
- package/docs/{REFACTOR_ORCHESTRATOR_DESIGN.md → archive/design-docs/REFACTOR_ORCHESTRATOR_DESIGN.md} +6 -0
- package/docs/{REFACTOR_RESULT_FUSION_DESIGN.md → archive/design-docs/REFACTOR_RESULT_FUSION_DESIGN.md} +6 -0
- package/docs/{REFACTOR_TEST_LINKER_DESIGN.md → archive/design-docs/REFACTOR_TEST_LINKER_DESIGN.md} +6 -0
- package/docs/archive/myclaude.md +1084 -0
- package/docs/archive/plans/2026-03-14-go-language-support-design.md +92 -0
- package/docs/{REFACTOR_REQUIREMENTS.md → archive/product-specs/REFACTOR_REQUIREMENTS.md} +11 -5
- 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/{plans/POST_TASK_PLAN.md → exec-plans/completed/2026-03-03-post-task-plan.md} +9 -3
- 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/package.json +19 -6
- package/docs/OMC_TEAM_DEBUG_REPORT.md +0 -285
- /package/docs/{plans/archive → exec-plans/completed}/2026-03-03-deps-path-extension-fix.md +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dependency.js","sourceRoot":"","sources":["../../../src/domain/entities/Dependency.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { Module as ModuleInterface } from '../../interface/types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* 模块统计信息
|
|
4
|
+
*/
|
|
5
|
+
export interface ModuleStats {
|
|
6
|
+
lines: number;
|
|
7
|
+
codeLines: number;
|
|
8
|
+
commentLines: number;
|
|
9
|
+
blankLines: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 模块领域实体
|
|
13
|
+
*
|
|
14
|
+
* 职责:
|
|
15
|
+
* - 维护模块身份信息
|
|
16
|
+
* - 记录代码统计信息
|
|
17
|
+
* - 关联到项目和语言
|
|
18
|
+
*/
|
|
19
|
+
export declare class Module implements ModuleInterface {
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly projectId: string;
|
|
22
|
+
path: string;
|
|
23
|
+
language: string;
|
|
24
|
+
stats: ModuleStats;
|
|
25
|
+
constructor(id: string, projectId: string, path: string, language: string, stats?: ModuleStats);
|
|
26
|
+
/**
|
|
27
|
+
* 从接口数据创建模块实体
|
|
28
|
+
*/
|
|
29
|
+
static fromInterface(data: ModuleInterface): Module;
|
|
30
|
+
/**
|
|
31
|
+
* 转换为接口数据
|
|
32
|
+
*/
|
|
33
|
+
toInterface(): ModuleInterface;
|
|
34
|
+
/**
|
|
35
|
+
* 更新代码统计信息
|
|
36
|
+
*/
|
|
37
|
+
updateStats(stats: Partial<ModuleStats>): void;
|
|
38
|
+
/**
|
|
39
|
+
* 更新文件路径(如重命名)
|
|
40
|
+
*/
|
|
41
|
+
updatePath(newPath: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* 设置语言类型
|
|
44
|
+
*/
|
|
45
|
+
setLanguage(language: string): void;
|
|
46
|
+
/**
|
|
47
|
+
* 验证领域规则
|
|
48
|
+
*/
|
|
49
|
+
private validate;
|
|
50
|
+
/**
|
|
51
|
+
* 检查两个模块是否相同(基于 ID)
|
|
52
|
+
*/
|
|
53
|
+
equals(other: Module): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* 计算代码密度(代码行 / 总行数)
|
|
56
|
+
*/
|
|
57
|
+
getCodeDensity(): number;
|
|
58
|
+
/**
|
|
59
|
+
* 计算注释密度(注释行 / 总行数)
|
|
60
|
+
*/
|
|
61
|
+
getCommentDensity(): number;
|
|
62
|
+
/**
|
|
63
|
+
* 是否是测试文件(启发式判断)
|
|
64
|
+
*/
|
|
65
|
+
isTestFile(): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* 是否是配置文件
|
|
68
|
+
*/
|
|
69
|
+
isConfigFile(): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* 创建模块快照(克隆)
|
|
72
|
+
*/
|
|
73
|
+
snapshot(): Module;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=Module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Module.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/Module.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,qBAAa,MAAO,YAAW,eAAe;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;gBAGjB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,WAKN;IAWH;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAUnD;;OAEG;IACH,WAAW,IAAI,eAAe;IAU9B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAO9C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOjC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOnC;;OAEG;IACH,OAAO,CAAC,QAAQ;IAehB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,cAAc,IAAI,MAAM;IAKxB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAK3B;;OAEG;IACH,UAAU,IAAI,OAAO;IAYrB;;OAEG;IACH,YAAY,IAAI,OAAO;IAWvB;;OAEG;IACH,QAAQ,IAAI,MAAM;CASnB"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// [META] since:2026-03 | owner:architecture-team | stable:true
|
|
2
|
+
// [WHY] Domain entity: Module - represents a source code module (file) in the project
|
|
3
|
+
// ============================================
|
|
4
|
+
// 领域实体:模块 - 表示项目中的源代码模块(文件)
|
|
5
|
+
// ============================================
|
|
6
|
+
/**
|
|
7
|
+
* 模块领域实体
|
|
8
|
+
*
|
|
9
|
+
* 职责:
|
|
10
|
+
* - 维护模块身份信息
|
|
11
|
+
* - 记录代码统计信息
|
|
12
|
+
* - 关联到项目和语言
|
|
13
|
+
*/
|
|
14
|
+
export class Module {
|
|
15
|
+
id;
|
|
16
|
+
projectId;
|
|
17
|
+
path;
|
|
18
|
+
language;
|
|
19
|
+
stats;
|
|
20
|
+
constructor(id, projectId, path, language, stats = {
|
|
21
|
+
lines: 0,
|
|
22
|
+
codeLines: 0,
|
|
23
|
+
commentLines: 0,
|
|
24
|
+
blankLines: 0,
|
|
25
|
+
}) {
|
|
26
|
+
this.id = id;
|
|
27
|
+
this.projectId = projectId;
|
|
28
|
+
this.path = path;
|
|
29
|
+
this.language = language;
|
|
30
|
+
this.stats = { ...stats };
|
|
31
|
+
this.validate();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 从接口数据创建模块实体
|
|
35
|
+
*/
|
|
36
|
+
static fromInterface(data) {
|
|
37
|
+
return new Module(data.id, data.projectId, data.path, data.language, data.stats);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 转换为接口数据
|
|
41
|
+
*/
|
|
42
|
+
toInterface() {
|
|
43
|
+
return {
|
|
44
|
+
id: this.id,
|
|
45
|
+
projectId: this.projectId,
|
|
46
|
+
path: this.path,
|
|
47
|
+
language: this.language,
|
|
48
|
+
stats: { ...this.stats },
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 更新代码统计信息
|
|
53
|
+
*/
|
|
54
|
+
updateStats(stats) {
|
|
55
|
+
this.stats = {
|
|
56
|
+
...this.stats,
|
|
57
|
+
...stats,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 更新文件路径(如重命名)
|
|
62
|
+
*/
|
|
63
|
+
updatePath(newPath) {
|
|
64
|
+
if (!newPath || newPath.trim().length === 0) {
|
|
65
|
+
throw new Error('Module path cannot be empty');
|
|
66
|
+
}
|
|
67
|
+
this.path = newPath.trim();
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 设置语言类型
|
|
71
|
+
*/
|
|
72
|
+
setLanguage(language) {
|
|
73
|
+
if (!language || language.trim().length === 0) {
|
|
74
|
+
throw new Error('Language cannot be empty');
|
|
75
|
+
}
|
|
76
|
+
this.language = language.trim().toLowerCase();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 验证领域规则
|
|
80
|
+
*/
|
|
81
|
+
validate() {
|
|
82
|
+
if (!this.id || this.id.trim().length === 0) {
|
|
83
|
+
throw new Error('Module ID cannot be empty');
|
|
84
|
+
}
|
|
85
|
+
if (!this.projectId || this.projectId.trim().length === 0) {
|
|
86
|
+
throw new Error('Project ID cannot be empty');
|
|
87
|
+
}
|
|
88
|
+
if (!this.path || this.path.trim().length === 0) {
|
|
89
|
+
throw new Error('Module path cannot be empty');
|
|
90
|
+
}
|
|
91
|
+
if (!this.language || this.language.trim().length === 0) {
|
|
92
|
+
throw new Error('Language cannot be empty');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 检查两个模块是否相同(基于 ID)
|
|
97
|
+
*/
|
|
98
|
+
equals(other) {
|
|
99
|
+
return this.id === other.id;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* 计算代码密度(代码行 / 总行数)
|
|
103
|
+
*/
|
|
104
|
+
getCodeDensity() {
|
|
105
|
+
if (this.stats.lines === 0)
|
|
106
|
+
return 0;
|
|
107
|
+
return this.stats.codeLines / this.stats.lines;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* 计算注释密度(注释行 / 总行数)
|
|
111
|
+
*/
|
|
112
|
+
getCommentDensity() {
|
|
113
|
+
if (this.stats.lines === 0)
|
|
114
|
+
return 0;
|
|
115
|
+
return this.stats.commentLines / this.stats.lines;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 是否是测试文件(启发式判断)
|
|
119
|
+
*/
|
|
120
|
+
isTestFile() {
|
|
121
|
+
const testPatterns = [
|
|
122
|
+
/\.test\./,
|
|
123
|
+
/\.spec\./,
|
|
124
|
+
/__tests__/,
|
|
125
|
+
/_test\.ts$/,
|
|
126
|
+
/\.test\.ts$/,
|
|
127
|
+
/\.spec\.ts$/,
|
|
128
|
+
];
|
|
129
|
+
return testPatterns.some(pattern => pattern.test(this.path));
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* 是否是配置文件
|
|
133
|
+
*/
|
|
134
|
+
isConfigFile() {
|
|
135
|
+
const configPatterns = [
|
|
136
|
+
/\.config\./,
|
|
137
|
+
/config\./,
|
|
138
|
+
/^\./, // 隐藏文件
|
|
139
|
+
/rc\./,
|
|
140
|
+
/rc$/,
|
|
141
|
+
];
|
|
142
|
+
return configPatterns.some(pattern => pattern.test(this.path));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* 创建模块快照(克隆)
|
|
146
|
+
*/
|
|
147
|
+
snapshot() {
|
|
148
|
+
return new Module(this.id, this.projectId, this.path, this.language, { ...this.stats });
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=Module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Module.js","sourceRoot":"","sources":["../../../src/domain/entities/Module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Project as ProjectInterface } from '../../interface/types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* 项目领域实体
|
|
4
|
+
*
|
|
5
|
+
* 职责:
|
|
6
|
+
* - 维护项目身份信息
|
|
7
|
+
* - 管理项目生命周期(创建、更新)
|
|
8
|
+
* - 提供领域行为(重命名、更新路径等)
|
|
9
|
+
*/
|
|
10
|
+
export declare class Project implements ProjectInterface {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
rootPath: string;
|
|
14
|
+
readonly createdAt: Date;
|
|
15
|
+
updatedAt: Date;
|
|
16
|
+
constructor(id: string, name: string, rootPath: string, createdAt?: Date, updatedAt?: Date);
|
|
17
|
+
/**
|
|
18
|
+
* 从接口数据创建项目实体
|
|
19
|
+
*/
|
|
20
|
+
static fromInterface(data: ProjectInterface): Project;
|
|
21
|
+
/**
|
|
22
|
+
* 转换为接口数据
|
|
23
|
+
*/
|
|
24
|
+
toInterface(): ProjectInterface;
|
|
25
|
+
/**
|
|
26
|
+
* 重命名项目
|
|
27
|
+
*/
|
|
28
|
+
rename(newName: string): void;
|
|
29
|
+
/**
|
|
30
|
+
* 更新根路径
|
|
31
|
+
*/
|
|
32
|
+
updateRootPath(newPath: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* 验证领域规则
|
|
35
|
+
*/
|
|
36
|
+
private validate;
|
|
37
|
+
/**
|
|
38
|
+
* 更新时间戳
|
|
39
|
+
*/
|
|
40
|
+
private touch;
|
|
41
|
+
/**
|
|
42
|
+
* 检查两个项目是否相同(基于 ID)
|
|
43
|
+
*/
|
|
44
|
+
equals(other: Project): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* 创建项目快照(克隆)
|
|
47
|
+
*/
|
|
48
|
+
snapshot(): Project;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=Project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/Project.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElF;;;;;;;GAOG;AACH,qBAAa,OAAQ,YAAW,gBAAgB;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,SAAS,EAAE,IAAI,CAAC;gBAGd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,IAAiB,EAC5B,SAAS,GAAE,IAAiB;IAW9B;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO;IAUrD;;OAEG;IACH,WAAW,IAAI,gBAAgB;IAU/B;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ7B;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQrC;;OAEG;IACH,OAAO,CAAC,QAAQ;IAYhB;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAI/B;;OAEG;IACH,QAAQ,IAAI,OAAO;CASpB"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// [META] since:2026-03 | owner:architecture-team | stable:true
|
|
2
|
+
// [WHY] Domain entity: Project - represents a codebase project with identity and lifecycle
|
|
3
|
+
// ============================================
|
|
4
|
+
// 领域实体:项目 - 表示具有身份和生命周期的代码库项目
|
|
5
|
+
// ============================================
|
|
6
|
+
/**
|
|
7
|
+
* 项目领域实体
|
|
8
|
+
*
|
|
9
|
+
* 职责:
|
|
10
|
+
* - 维护项目身份信息
|
|
11
|
+
* - 管理项目生命周期(创建、更新)
|
|
12
|
+
* - 提供领域行为(重命名、更新路径等)
|
|
13
|
+
*/
|
|
14
|
+
export class Project {
|
|
15
|
+
id;
|
|
16
|
+
name;
|
|
17
|
+
rootPath;
|
|
18
|
+
createdAt;
|
|
19
|
+
updatedAt;
|
|
20
|
+
constructor(id, name, rootPath, createdAt = new Date(), updatedAt = new Date()) {
|
|
21
|
+
this.id = id;
|
|
22
|
+
this.name = name;
|
|
23
|
+
this.rootPath = rootPath;
|
|
24
|
+
this.createdAt = createdAt;
|
|
25
|
+
this.updatedAt = updatedAt;
|
|
26
|
+
this.validate();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 从接口数据创建项目实体
|
|
30
|
+
*/
|
|
31
|
+
static fromInterface(data) {
|
|
32
|
+
return new Project(data.id, data.name, data.rootPath, data.createdAt, data.updatedAt);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 转换为接口数据
|
|
36
|
+
*/
|
|
37
|
+
toInterface() {
|
|
38
|
+
return {
|
|
39
|
+
id: this.id,
|
|
40
|
+
name: this.name,
|
|
41
|
+
rootPath: this.rootPath,
|
|
42
|
+
createdAt: this.createdAt,
|
|
43
|
+
updatedAt: this.updatedAt,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 重命名项目
|
|
48
|
+
*/
|
|
49
|
+
rename(newName) {
|
|
50
|
+
if (!newName || newName.trim().length === 0) {
|
|
51
|
+
throw new Error('Project name cannot be empty');
|
|
52
|
+
}
|
|
53
|
+
this.name = newName.trim();
|
|
54
|
+
this.touch();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 更新根路径
|
|
58
|
+
*/
|
|
59
|
+
updateRootPath(newPath) {
|
|
60
|
+
if (!newPath || newPath.trim().length === 0) {
|
|
61
|
+
throw new Error('Root path cannot be empty');
|
|
62
|
+
}
|
|
63
|
+
this.rootPath = newPath.trim();
|
|
64
|
+
this.touch();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 验证领域规则
|
|
68
|
+
*/
|
|
69
|
+
validate() {
|
|
70
|
+
if (!this.id || this.id.trim().length === 0) {
|
|
71
|
+
throw new Error('Project ID cannot be empty');
|
|
72
|
+
}
|
|
73
|
+
if (!this.name || this.name.trim().length === 0) {
|
|
74
|
+
throw new Error('Project name cannot be empty');
|
|
75
|
+
}
|
|
76
|
+
if (!this.rootPath || this.rootPath.trim().length === 0) {
|
|
77
|
+
throw new Error('Root path cannot be empty');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 更新时间戳
|
|
82
|
+
*/
|
|
83
|
+
touch() {
|
|
84
|
+
this.updatedAt = new Date();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 检查两个项目是否相同(基于 ID)
|
|
88
|
+
*/
|
|
89
|
+
equals(other) {
|
|
90
|
+
return this.id === other.id;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 创建项目快照(克隆)
|
|
94
|
+
*/
|
|
95
|
+
snapshot() {
|
|
96
|
+
return new Project(this.id, this.name, this.rootPath, new Date(this.createdAt), new Date(this.updatedAt));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=Project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Project.js","sourceRoot":"","sources":["../../../src/domain/entities/Project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { Symbol as SymbolInterface, SymbolKind, SourceLocation } from '../../interface/types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* 符号可见性类型
|
|
4
|
+
*/
|
|
5
|
+
export type SymbolVisibility = 'public' | 'private' | 'protected' | 'internal';
|
|
6
|
+
/**
|
|
7
|
+
* 符号领域实体
|
|
8
|
+
*
|
|
9
|
+
* 职责:
|
|
10
|
+
* - 维护符号身份信息
|
|
11
|
+
* - 记录符号类型和位置
|
|
12
|
+
* - 关联到所属模块
|
|
13
|
+
*/
|
|
14
|
+
export declare class Symbol implements SymbolInterface {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly moduleId: string;
|
|
17
|
+
name: string;
|
|
18
|
+
kind: SymbolKind;
|
|
19
|
+
location: SourceLocation;
|
|
20
|
+
visibility: SymbolVisibility;
|
|
21
|
+
constructor(id: string, moduleId: string, name: string, kind: SymbolKind, location: SourceLocation, visibility?: SymbolVisibility);
|
|
22
|
+
/**
|
|
23
|
+
* 从接口数据创建符号实体
|
|
24
|
+
*/
|
|
25
|
+
static fromInterface(data: SymbolInterface): Symbol;
|
|
26
|
+
/**
|
|
27
|
+
* 转换为接口数据
|
|
28
|
+
*/
|
|
29
|
+
toInterface(): SymbolInterface;
|
|
30
|
+
/**
|
|
31
|
+
* 重命名符号
|
|
32
|
+
*/
|
|
33
|
+
rename(newName: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* 更新位置信息
|
|
36
|
+
*/
|
|
37
|
+
updateLocation(location: SourceLocation): void;
|
|
38
|
+
/**
|
|
39
|
+
* 更改可见性
|
|
40
|
+
*/
|
|
41
|
+
setVisibility(visibility: SymbolVisibility): void;
|
|
42
|
+
/**
|
|
43
|
+
* 验证领域规则
|
|
44
|
+
*/
|
|
45
|
+
private validate;
|
|
46
|
+
/**
|
|
47
|
+
* 检查两个符号是否相同(基于 ID)
|
|
48
|
+
*/
|
|
49
|
+
equals(other: Symbol): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* 是否是导出符号(公开可见)
|
|
52
|
+
*/
|
|
53
|
+
isExported(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* 是否是私有符号
|
|
56
|
+
*/
|
|
57
|
+
isPrivate(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* 是否是类型定义(类、接口、类型别名等)
|
|
60
|
+
*/
|
|
61
|
+
isTypeDefinition(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* 是否是函数或方法
|
|
64
|
+
*/
|
|
65
|
+
isFunction(): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* 获取符号的完全限定名
|
|
68
|
+
*/
|
|
69
|
+
getQualifiedName(): string;
|
|
70
|
+
/**
|
|
71
|
+
* 创建符号快照(克隆)
|
|
72
|
+
*/
|
|
73
|
+
snapshot(): Symbol;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=Symbol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Symbol.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/Symbol.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,MAAM,IAAI,eAAe,EACzB,UAAU,EACV,cAAc,EACf,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;AAE/E;;;;;;;GAOG;AACH,qBAAa,MAAO,YAAW,eAAe;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,gBAAgB,CAAC;gBAG3B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,UAAU,GAAE,gBAA2B;IAYzC;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAWnD;;OAEG;IACH,WAAW,IAAI,eAAe;IAW9B;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO7B;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAI9C;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAIjD;;OAEG;IACH,OAAO,CAAC,QAAQ;IAehB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,QAAQ,IAAI,MAAM;CAUnB"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
// [META] since:2026-03 | owner:architecture-team | stable:true
|
|
2
|
+
// [WHY] Domain entity: Symbol - represents a code symbol (function, class, interface, etc.)
|
|
3
|
+
// ============================================
|
|
4
|
+
// 领域实体:符号 - 表示代码符号(函数、类、接口等)
|
|
5
|
+
// ============================================
|
|
6
|
+
/**
|
|
7
|
+
* 符号领域实体
|
|
8
|
+
*
|
|
9
|
+
* 职责:
|
|
10
|
+
* - 维护符号身份信息
|
|
11
|
+
* - 记录符号类型和位置
|
|
12
|
+
* - 关联到所属模块
|
|
13
|
+
*/
|
|
14
|
+
export class Symbol {
|
|
15
|
+
id;
|
|
16
|
+
moduleId;
|
|
17
|
+
name;
|
|
18
|
+
kind;
|
|
19
|
+
location;
|
|
20
|
+
visibility;
|
|
21
|
+
constructor(id, moduleId, name, kind, location, visibility = 'public') {
|
|
22
|
+
this.id = id;
|
|
23
|
+
this.moduleId = moduleId;
|
|
24
|
+
this.name = name;
|
|
25
|
+
this.kind = kind;
|
|
26
|
+
this.location = location;
|
|
27
|
+
this.visibility = visibility;
|
|
28
|
+
this.validate();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 从接口数据创建符号实体
|
|
32
|
+
*/
|
|
33
|
+
static fromInterface(data) {
|
|
34
|
+
return new Symbol(data.id, data.moduleId, data.name, data.kind, data.location, data.visibility);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 转换为接口数据
|
|
38
|
+
*/
|
|
39
|
+
toInterface() {
|
|
40
|
+
return {
|
|
41
|
+
id: this.id,
|
|
42
|
+
moduleId: this.moduleId,
|
|
43
|
+
name: this.name,
|
|
44
|
+
kind: this.kind,
|
|
45
|
+
location: this.location,
|
|
46
|
+
visibility: this.visibility,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 重命名符号
|
|
51
|
+
*/
|
|
52
|
+
rename(newName) {
|
|
53
|
+
if (!newName || newName.trim().length === 0) {
|
|
54
|
+
throw new Error('Symbol name cannot be empty');
|
|
55
|
+
}
|
|
56
|
+
this.name = newName.trim();
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 更新位置信息
|
|
60
|
+
*/
|
|
61
|
+
updateLocation(location) {
|
|
62
|
+
this.location = location;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 更改可见性
|
|
66
|
+
*/
|
|
67
|
+
setVisibility(visibility) {
|
|
68
|
+
this.visibility = visibility;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 验证领域规则
|
|
72
|
+
*/
|
|
73
|
+
validate() {
|
|
74
|
+
if (!this.id || this.id.trim().length === 0) {
|
|
75
|
+
throw new Error('Symbol ID cannot be empty');
|
|
76
|
+
}
|
|
77
|
+
if (!this.moduleId || this.moduleId.trim().length === 0) {
|
|
78
|
+
throw new Error('Module ID cannot be empty');
|
|
79
|
+
}
|
|
80
|
+
if (!this.name || this.name.trim().length === 0) {
|
|
81
|
+
throw new Error('Symbol name cannot be empty');
|
|
82
|
+
}
|
|
83
|
+
if (!this.location || !this.location.file) {
|
|
84
|
+
throw new Error('Symbol location cannot be empty');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* 检查两个符号是否相同(基于 ID)
|
|
89
|
+
*/
|
|
90
|
+
equals(other) {
|
|
91
|
+
return this.id === other.id;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 是否是导出符号(公开可见)
|
|
95
|
+
*/
|
|
96
|
+
isExported() {
|
|
97
|
+
return this.visibility === 'public' || this.visibility === 'internal';
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* 是否是私有符号
|
|
101
|
+
*/
|
|
102
|
+
isPrivate() {
|
|
103
|
+
return this.visibility === 'private';
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* 是否是类型定义(类、接口、类型别名等)
|
|
107
|
+
*/
|
|
108
|
+
isTypeDefinition() {
|
|
109
|
+
return ['class', 'interface', 'type', 'enum'].includes(this.kind);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 是否是函数或方法
|
|
113
|
+
*/
|
|
114
|
+
isFunction() {
|
|
115
|
+
return this.kind === 'function' || this.kind === 'method';
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 获取符号的完全限定名
|
|
119
|
+
*/
|
|
120
|
+
getQualifiedName() {
|
|
121
|
+
return `${this.location.file}::${this.name}`;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* 创建符号快照(克隆)
|
|
125
|
+
*/
|
|
126
|
+
snapshot() {
|
|
127
|
+
return new Symbol(this.id, this.moduleId, this.name, this.kind, { ...this.location }, this.visibility);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=Symbol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Symbol.js","sourceRoot":"","sources":["../../../src/domain/entities/Symbol.ts"],"names":[],"mappings":"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"}
|