@yalehwang/archguard 0.1.21 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -22
- package/dist/analysis/atlas-metrics-analysis.d.ts +11 -0
- package/dist/analysis/atlas-metrics-analysis.d.ts.map +1 -0
- package/dist/analysis/atlas-metrics-analysis.js +17 -0
- package/dist/analysis/atlas-metrics-analysis.js.map +1 -0
- package/dist/analysis/fitness/dependency-checker.d.ts +4 -0
- package/dist/analysis/fitness/dependency-checker.d.ts.map +1 -0
- package/dist/analysis/fitness/dependency-checker.js +16 -0
- package/dist/analysis/fitness/dependency-checker.js.map +1 -0
- package/dist/analysis/fitness/rule-evaluator.d.ts +6 -0
- package/dist/analysis/fitness/rule-evaluator.d.ts.map +1 -0
- package/dist/analysis/fitness/rule-evaluator.js +64 -0
- package/dist/analysis/fitness/rule-evaluator.js.map +1 -0
- package/dist/analysis/fitness/rule-types.d.ts +34 -0
- package/dist/analysis/fitness/rule-types.d.ts.map +1 -0
- package/dist/analysis/fitness/rule-types.js +2 -0
- package/dist/analysis/fitness/rule-types.js.map +1 -0
- package/dist/analysis/gim/direction-hint.d.ts +18 -0
- package/dist/analysis/gim/direction-hint.d.ts.map +1 -0
- package/dist/analysis/gim/direction-hint.js +76 -0
- package/dist/analysis/gim/direction-hint.js.map +1 -0
- package/dist/analysis/gim/gim-loss-evaluator.d.ts +14 -0
- package/dist/analysis/gim/gim-loss-evaluator.d.ts.map +1 -0
- package/dist/analysis/gim/gim-loss-evaluator.js +80 -0
- package/dist/analysis/gim/gim-loss-evaluator.js.map +1 -0
- package/dist/analysis/gini.d.ts +2 -0
- package/dist/analysis/gini.d.ts.map +1 -0
- package/dist/analysis/gini.js +12 -0
- package/dist/analysis/gini.js.map +1 -0
- package/dist/analysis/git-history/git-log-reader.d.ts +24 -0
- package/dist/analysis/git-history/git-log-reader.d.ts.map +1 -0
- package/dist/analysis/git-history/git-log-reader.js +117 -0
- package/dist/analysis/git-history/git-log-reader.js.map +1 -0
- package/dist/analysis/git-history/history-aggregator.d.ts +19 -0
- package/dist/analysis/git-history/history-aggregator.d.ts.map +1 -0
- package/dist/analysis/git-history/history-aggregator.js +291 -0
- package/dist/analysis/git-history/history-aggregator.js.map +1 -0
- package/dist/analysis/git-history/history-query.d.ts +111 -0
- package/dist/analysis/git-history/history-query.d.ts.map +1 -0
- package/dist/analysis/git-history/history-query.js +201 -0
- package/dist/analysis/git-history/history-query.js.map +1 -0
- package/dist/analysis/git-history/index.d.ts +4 -0
- package/dist/analysis/git-history/index.d.ts.map +1 -0
- package/dist/analysis/git-history/index.js +4 -0
- package/dist/analysis/git-history/index.js.map +1 -0
- package/dist/analysis/metric-vector-builder.d.ts +5 -0
- package/dist/analysis/metric-vector-builder.d.ts.map +1 -0
- package/dist/analysis/metric-vector-builder.js +47 -0
- package/dist/analysis/metric-vector-builder.js.map +1 -0
- package/dist/analysis/metrics-history-reader.d.ts +4 -0
- package/dist/analysis/metrics-history-reader.d.ts.map +1 -0
- package/dist/analysis/metrics-history-reader.js +24 -0
- package/dist/analysis/metrics-history-reader.js.map +1 -0
- package/dist/analysis/package-metrics-analysis.d.ts +18 -0
- package/dist/analysis/package-metrics-analysis.d.ts.map +1 -0
- package/dist/analysis/package-metrics-analysis.js +59 -0
- package/dist/analysis/package-metrics-analysis.js.map +1 -0
- package/dist/analysis/project-semantics-loader.d.ts +3 -0
- package/dist/analysis/project-semantics-loader.d.ts.map +1 -0
- package/dist/analysis/project-semantics-loader.js +25 -0
- package/dist/analysis/project-semantics-loader.js.map +1 -0
- package/dist/analysis/snapshot-diff.d.ts +19 -0
- package/dist/analysis/snapshot-diff.d.ts.map +1 -0
- package/dist/analysis/snapshot-diff.js +54 -0
- package/dist/analysis/snapshot-diff.js.map +1 -0
- package/dist/analysis/snapshot-store.d.ts +15 -0
- package/dist/analysis/snapshot-store.d.ts.map +1 -0
- package/dist/analysis/snapshot-store.js +96 -0
- package/dist/analysis/snapshot-store.js.map +1 -0
- package/dist/analysis/test-analyzer.d.ts +4 -1
- package/dist/analysis/test-analyzer.d.ts.map +1 -1
- package/dist/analysis/test-analyzer.js +67 -14
- package/dist/analysis/test-analyzer.js.map +1 -1
- package/dist/analysis/test-coverage-mapper.d.ts +1 -1
- package/dist/analysis/test-coverage-mapper.d.ts.map +1 -1
- package/dist/analysis/test-coverage-mapper.js +32 -2
- package/dist/analysis/test-coverage-mapper.js.map +1 -1
- package/dist/analysis/test-issue-detector.d.ts +1 -1
- package/dist/analysis/test-issue-detector.d.ts.map +1 -1
- package/dist/analysis/test-issue-detector.js +7 -2
- package/dist/analysis/test-issue-detector.js.map +1 -1
- package/dist/analysis/test-pattern-advisor.d.ts +2 -0
- package/dist/analysis/test-pattern-advisor.d.ts.map +1 -0
- package/dist/analysis/test-pattern-advisor.js +59 -0
- package/dist/analysis/test-pattern-advisor.js.map +1 -0
- package/dist/cli/analyze/normalize-to-diagrams.d.ts +9 -0
- package/dist/cli/analyze/normalize-to-diagrams.d.ts.map +1 -1
- package/dist/cli/analyze/normalize-to-diagrams.js +35 -26
- package/dist/cli/analyze/normalize-to-diagrams.js.map +1 -1
- package/dist/cli/analyze/run-analysis.d.ts +1 -1
- package/dist/cli/analyze/run-analysis.d.ts.map +1 -1
- package/dist/cli/analyze/run-analysis.js +186 -32
- package/dist/cli/analyze/run-analysis.js.map +1 -1
- package/dist/cli/{cache-manager.d.ts → cache/cache-manager.d.ts} +1 -1
- package/dist/cli/cache/cache-manager.d.ts.map +1 -0
- package/dist/cli/{cache-manager.js → cache/cache-manager.js} +2 -2
- package/dist/cli/cache/cache-manager.js.map +1 -0
- package/dist/cli/cognitive/ccb-assembler.d.ts +8 -0
- package/dist/cli/cognitive/ccb-assembler.d.ts.map +1 -0
- package/dist/cli/cognitive/ccb-assembler.js +213 -0
- package/dist/cli/cognitive/ccb-assembler.js.map +1 -0
- package/dist/cli/cognitive/ccb-reader.d.ts +7 -0
- package/dist/cli/cognitive/ccb-reader.d.ts.map +1 -0
- package/dist/cli/cognitive/ccb-reader.js +27 -0
- package/dist/cli/cognitive/ccb-reader.js.map +1 -0
- package/dist/cli/cognitive/ccb-schema.d.ts +36 -0
- package/dist/cli/cognitive/ccb-schema.d.ts.map +1 -0
- package/dist/cli/cognitive/ccb-schema.js +2 -0
- package/dist/cli/cognitive/ccb-schema.js.map +1 -0
- package/dist/cli/cognitive/ccb-writer.d.ts +3 -0
- package/dist/cli/cognitive/ccb-writer.d.ts.map +1 -0
- package/dist/cli/cognitive/ccb-writer.js +12 -0
- package/dist/cli/cognitive/ccb-writer.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -1
- package/dist/cli/commands/analyze.js +23 -4
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cli/commands/cache.js +2 -2
- package/dist/cli/commands/cache.js.map +1 -1
- package/dist/cli/commands/check.d.ts +3 -0
- package/dist/cli/commands/check.d.ts.map +1 -0
- package/dist/cli/commands/check.js +48 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/diff.d.ts +3 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/diff.js +89 -0
- package/dist/cli/commands/diff.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +1 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/query.d.ts +51 -0
- package/dist/cli/commands/query.d.ts.map +1 -1
- package/dist/cli/commands/query.js +373 -17
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/config-loader.d.ts +50 -0
- package/dist/cli/config-loader.d.ts.map +1 -1
- package/dist/cli/config-loader.js +33 -0
- package/dist/cli/config-loader.js.map +1 -1
- package/dist/cli/{errors.d.ts → errors/index.d.ts} +16 -2
- package/dist/cli/errors/index.d.ts.map +1 -0
- package/dist/cli/{error-handler.js → errors/index.js} +32 -2
- package/dist/cli/errors/index.js.map +1 -0
- package/dist/cli/git-history/git-log-reader.d.ts +2 -0
- package/dist/cli/git-history/git-log-reader.d.ts.map +1 -0
- package/dist/cli/git-history/git-log-reader.js +2 -0
- package/dist/cli/git-history/git-log-reader.js.map +1 -0
- package/dist/cli/git-history/history-aggregator.d.ts +2 -0
- package/dist/cli/git-history/history-aggregator.d.ts.map +1 -0
- package/dist/cli/git-history/history-aggregator.js +2 -0
- package/dist/cli/git-history/history-aggregator.js.map +1 -0
- package/dist/cli/git-history/history-loader.d.ts +11 -0
- package/dist/cli/git-history/history-loader.d.ts.map +1 -0
- package/dist/cli/git-history/history-loader.js +30 -0
- package/dist/cli/git-history/history-loader.js.map +1 -0
- package/dist/cli/git-history/history-query.d.ts +2 -0
- package/dist/cli/git-history/history-query.d.ts.map +1 -0
- package/dist/cli/git-history/history-query.js +2 -0
- package/dist/cli/git-history/history-query.js.map +1 -0
- package/dist/cli/git-history/history-writer.d.ts +3 -0
- package/dist/cli/git-history/history-writer.d.ts.map +1 -0
- package/dist/cli/git-history/history-writer.js +14 -0
- package/dist/cli/git-history/history-writer.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp/analyze-tool.d.ts.map +1 -1
- package/dist/cli/mcp/analyze-tool.js +10 -4
- package/dist/cli/mcp/analyze-tool.js.map +1 -1
- package/dist/cli/mcp/mcp-server.d.ts.map +1 -1
- package/dist/cli/mcp/mcp-server.js +166 -47
- package/dist/cli/mcp/mcp-server.js.map +1 -1
- package/dist/cli/mcp/tools/atlas-analytics-tools.d.ts +7 -0
- package/dist/cli/mcp/tools/atlas-analytics-tools.d.ts.map +1 -0
- package/dist/cli/mcp/tools/atlas-analytics-tools.js +190 -0
- package/dist/cli/mcp/tools/atlas-analytics-tools.js.map +1 -0
- package/dist/cli/mcp/tools/call-graph-tools.d.ts +3 -0
- package/dist/cli/mcp/tools/call-graph-tools.d.ts.map +1 -0
- package/dist/cli/mcp/tools/call-graph-tools.js +47 -0
- package/dist/cli/mcp/tools/call-graph-tools.js.map +1 -0
- package/dist/cli/mcp/tools/ccb-tool.d.ts +3 -0
- package/dist/cli/mcp/tools/ccb-tool.d.ts.map +1 -0
- package/dist/cli/mcp/tools/ccb-tool.js +63 -0
- package/dist/cli/mcp/tools/ccb-tool.js.map +1 -0
- package/dist/cli/mcp/tools/cognitive-summary-tool.d.ts +3 -0
- package/dist/cli/mcp/tools/cognitive-summary-tool.d.ts.map +1 -0
- package/dist/cli/mcp/tools/cognitive-summary-tool.js +118 -0
- package/dist/cli/mcp/tools/cognitive-summary-tool.js.map +1 -0
- package/dist/cli/mcp/tools/gim-tools.d.ts +3 -0
- package/dist/cli/mcp/tools/gim-tools.d.ts.map +1 -0
- package/dist/cli/mcp/tools/gim-tools.js +78 -0
- package/dist/cli/mcp/tools/gim-tools.js.map +1 -0
- package/dist/cli/mcp/tools/git-history-analyze-tool.d.ts +3 -0
- package/dist/cli/mcp/tools/git-history-analyze-tool.d.ts.map +1 -0
- package/dist/cli/mcp/tools/git-history-analyze-tool.js +172 -0
- package/dist/cli/mcp/tools/git-history-analyze-tool.js.map +1 -0
- package/dist/cli/mcp/tools/git-history-evidence-pack-tool.d.ts +3 -0
- package/dist/cli/mcp/tools/git-history-evidence-pack-tool.d.ts.map +1 -0
- package/dist/cli/mcp/tools/git-history-evidence-pack-tool.js +87 -0
- package/dist/cli/mcp/tools/git-history-evidence-pack-tool.js.map +1 -0
- package/dist/cli/mcp/tools/git-history-tools.d.ts +3 -0
- package/dist/cli/mcp/tools/git-history-tools.d.ts.map +1 -0
- package/dist/cli/mcp/tools/git-history-tools.js +125 -0
- package/dist/cli/mcp/tools/git-history-tools.js.map +1 -0
- package/dist/cli/mcp/tools/metric-trend-tools.d.ts +8 -0
- package/dist/cli/mcp/tools/metric-trend-tools.d.ts.map +1 -0
- package/dist/cli/mcp/tools/metric-trend-tools.js +50 -0
- package/dist/cli/mcp/tools/metric-trend-tools.js.map +1 -0
- package/dist/cli/mcp/tools/package-metrics-tools.d.ts +7 -0
- package/dist/cli/mcp/tools/package-metrics-tools.d.ts.map +1 -0
- package/dist/cli/mcp/tools/package-metrics-tools.js +62 -0
- package/dist/cli/mcp/tools/package-metrics-tools.js.map +1 -0
- package/dist/cli/mcp/tools/test-analysis-tools.d.ts.map +1 -1
- package/dist/cli/mcp/tools/test-analysis-tools.js +98 -94
- package/dist/cli/mcp/tools/test-analysis-tools.js.map +1 -1
- package/dist/cli/metrics-history-writer.d.ts +16 -0
- package/dist/cli/metrics-history-writer.d.ts.map +1 -0
- package/dist/cli/metrics-history-writer.js +16 -0
- package/dist/cli/metrics-history-writer.js.map +1 -0
- package/dist/cli/processors/arch-json-provider-types.d.ts +12 -0
- package/dist/cli/processors/arch-json-provider-types.d.ts.map +1 -0
- package/dist/cli/processors/arch-json-provider-types.js +2 -0
- package/dist/cli/processors/arch-json-provider-types.js.map +1 -0
- package/dist/cli/processors/arch-json-provider.d.ts +4 -13
- package/dist/cli/processors/arch-json-provider.d.ts.map +1 -1
- package/dist/cli/processors/arch-json-provider.js +54 -76
- package/dist/cli/processors/arch-json-provider.js.map +1 -1
- package/dist/cli/processors/arch-json-utils.d.ts +4 -0
- package/dist/cli/processors/arch-json-utils.d.ts.map +1 -0
- package/dist/cli/processors/arch-json-utils.js +73 -0
- package/dist/cli/processors/arch-json-utils.js.map +1 -0
- package/dist/cli/processors/diagram-output-router.d.ts +3 -1
- package/dist/cli/processors/diagram-output-router.d.ts.map +1 -1
- package/dist/cli/processors/diagram-output-router.js +28 -3
- package/dist/cli/processors/diagram-output-router.js.map +1 -1
- package/dist/cli/processors/diagram-pipeline-runner.d.ts +20 -0
- package/dist/cli/processors/diagram-pipeline-runner.d.ts.map +1 -0
- package/dist/cli/processors/diagram-pipeline-runner.js +171 -0
- package/dist/cli/processors/diagram-pipeline-runner.js.map +1 -0
- package/dist/cli/processors/diagram-processor.d.ts +11 -8
- package/dist/cli/processors/diagram-processor.d.ts.map +1 -1
- package/dist/cli/processors/diagram-processor.js +19 -148
- package/dist/cli/processors/diagram-processor.js.map +1 -1
- package/dist/cli/processors/query-scope-collector.d.ts +11 -0
- package/dist/cli/processors/query-scope-collector.d.ts.map +1 -0
- package/dist/cli/processors/query-scope-collector.js +44 -0
- package/dist/cli/processors/query-scope-collector.js.map +1 -0
- package/dist/cli/processors/test-coverage-writer.d.ts +4 -0
- package/dist/cli/processors/test-coverage-writer.d.ts.map +1 -0
- package/dist/cli/processors/test-coverage-writer.js +22 -0
- package/dist/cli/processors/test-coverage-writer.js.map +1 -0
- package/dist/cli/processors/worker-pool-factory.d.ts +6 -0
- package/dist/cli/processors/worker-pool-factory.d.ts.map +1 -0
- package/dist/cli/processors/worker-pool-factory.js +22 -0
- package/dist/cli/processors/worker-pool-factory.js.map +1 -0
- package/dist/cli/{progress.d.ts → progress/index.d.ts} +1 -1
- package/dist/cli/progress/index.d.ts.map +1 -0
- package/dist/cli/{progress.js → progress/index.js} +1 -1
- package/dist/cli/progress/index.js.map +1 -0
- package/dist/cli/query/arch-index-builder.d.ts +1 -3
- package/dist/cli/query/arch-index-builder.d.ts.map +1 -1
- package/dist/cli/query/arch-index-builder.js +1 -125
- package/dist/cli/query/arch-index-builder.js.map +1 -1
- package/dist/cli/query/arch-index.d.ts +2 -16
- package/dist/cli/query/arch-index.d.ts.map +1 -1
- package/dist/cli/query/arch-index.js +1 -1
- package/dist/cli/query/arch-index.js.map +1 -1
- package/dist/cli/query/engine-loader.d.ts +9 -1
- package/dist/cli/query/engine-loader.d.ts.map +1 -1
- package/dist/cli/query/engine-loader.js +5 -1
- package/dist/cli/query/engine-loader.js.map +1 -1
- package/dist/cli/query/query-artifacts.d.ts.map +1 -1
- package/dist/cli/query/query-artifacts.js +2 -1
- package/dist/cli/query/query-artifacts.js.map +1 -1
- package/dist/cli/query/query-engine.d.ts +3 -90
- package/dist/cli/query/query-engine.d.ts.map +1 -1
- package/dist/cli/query/query-engine.js +1 -347
- package/dist/cli/query/query-engine.js.map +1 -1
- package/dist/cli/utils/java-project-structure-detector.js +1 -1
- package/dist/cli/utils/java-project-structure-detector.js.map +1 -1
- package/dist/cli/utils/kotlin-project-structure-detector.d.ts +7 -0
- package/dist/cli/utils/kotlin-project-structure-detector.d.ts.map +1 -0
- package/dist/cli/utils/kotlin-project-structure-detector.js +101 -0
- package/dist/cli/utils/kotlin-project-structure-detector.js.map +1 -0
- package/dist/cli/utils/output-path-resolver.d.ts.map +1 -1
- package/dist/cli/utils/output-path-resolver.js.map +1 -1
- package/dist/cli/utils/project-language-detector.d.ts +1 -1
- package/dist/cli/utils/project-language-detector.d.ts.map +1 -1
- package/dist/cli/utils/project-language-detector.js +5 -1
- package/dist/cli/utils/project-language-detector.js.map +1 -1
- package/dist/cli/utils/project-structure-detector.js +3 -3
- package/dist/cli/utils/project-structure-detector.js.map +1 -1
- package/dist/cli/utils/test-output-writer.d.ts +1 -1
- package/dist/cli/utils/test-output-writer.d.ts.map +1 -1
- package/dist/cli/utils/test-output-writer.js.map +1 -1
- package/dist/core/entity-type-registry.d.ts +10 -0
- package/dist/core/entity-type-registry.d.ts.map +1 -0
- package/dist/core/entity-type-registry.js +17 -0
- package/dist/core/entity-type-registry.js.map +1 -0
- package/dist/core/interfaces/dependency.d.ts +1 -1
- package/dist/core/interfaces/dependency.d.ts.map +1 -1
- package/dist/core/interfaces/index.d.ts +2 -0
- package/dist/core/interfaces/index.d.ts.map +1 -1
- package/dist/core/interfaces/index.js.map +1 -1
- package/dist/core/interfaces/language-plugin.d.ts +8 -1
- package/dist/core/interfaces/language-plugin.d.ts.map +1 -1
- package/dist/core/interfaces/parser-facade.d.ts +5 -0
- package/dist/core/interfaces/parser-facade.d.ts.map +1 -0
- package/dist/core/interfaces/parser-facade.js +2 -0
- package/dist/core/interfaces/parser-facade.js.map +1 -0
- package/dist/core/interfaces/renderer-facade.d.ts +8 -0
- package/dist/core/interfaces/renderer-facade.d.ts.map +1 -0
- package/dist/core/interfaces/renderer-facade.js +2 -0
- package/dist/core/interfaces/renderer-facade.js.map +1 -0
- package/dist/core/interfaces/validation.d.ts.map +1 -1
- package/dist/core/plugin-registry.d.ts.map +1 -1
- package/dist/core/plugin-registry.js +2 -0
- package/dist/core/plugin-registry.js.map +1 -1
- package/dist/core/query/arch-index-builder.d.ts +4 -0
- package/dist/core/query/arch-index-builder.d.ts.map +1 -0
- package/dist/core/query/arch-index-builder.js +126 -0
- package/dist/core/query/arch-index-builder.js.map +1 -0
- package/dist/core/query/arch-index.d.ts +17 -0
- package/dist/core/query/arch-index.d.ts.map +1 -0
- package/dist/core/query/arch-index.js +2 -0
- package/dist/core/query/arch-index.js.map +1 -0
- package/dist/core/query/arch-metrics-cognitive.d.ts +32 -0
- package/dist/core/query/arch-metrics-cognitive.d.ts.map +1 -0
- package/dist/core/query/arch-metrics-cognitive.js +60 -0
- package/dist/core/query/arch-metrics-cognitive.js.map +1 -0
- package/dist/core/query/arch-metrics-quality.d.ts +24 -0
- package/dist/core/query/arch-metrics-quality.d.ts.map +1 -0
- package/dist/core/query/arch-metrics-quality.js +86 -0
- package/dist/core/query/arch-metrics-quality.js.map +1 -0
- package/dist/core/query/arch-metrics-structure.d.ts +43 -0
- package/dist/core/query/arch-metrics-structure.d.ts.map +1 -0
- package/dist/core/query/arch-metrics-structure.js +291 -0
- package/dist/core/query/arch-metrics-structure.js.map +1 -0
- package/dist/core/query/arch-metrics.d.ts +54 -0
- package/dist/core/query/arch-metrics.d.ts.map +1 -0
- package/dist/core/query/arch-metrics.js +42 -0
- package/dist/core/query/arch-metrics.js.map +1 -0
- package/dist/core/query/edge-list-serializer.d.ts +4 -0
- package/dist/core/query/edge-list-serializer.d.ts.map +1 -0
- package/dist/core/query/edge-list-serializer.js +24 -0
- package/dist/core/query/edge-list-serializer.js.map +1 -0
- package/dist/core/query/entity-query-service.d.ts +15 -0
- package/dist/core/query/entity-query-service.d.ts.map +1 -0
- package/dist/core/query/entity-query-service.js +51 -0
- package/dist/core/query/entity-query-service.js.map +1 -0
- package/dist/core/query/extension-accessor.d.ts +15 -0
- package/dist/core/query/extension-accessor.d.ts.map +1 -0
- package/dist/core/query/extension-accessor.js +28 -0
- package/dist/core/query/extension-accessor.js.map +1 -0
- package/dist/core/query/index.d.ts +8 -0
- package/dist/core/query/index.d.ts.map +1 -0
- package/dist/core/query/index.js +6 -0
- package/dist/core/query/index.js.map +1 -0
- package/dist/core/query/output-scope-filter.d.ts +6 -0
- package/dist/core/query/output-scope-filter.d.ts.map +1 -0
- package/dist/core/query/output-scope-filter.js +45 -0
- package/dist/core/query/output-scope-filter.js.map +1 -0
- package/dist/core/query/query-engine.d.ts +116 -0
- package/dist/core/query/query-engine.d.ts.map +1 -0
- package/dist/core/query/query-engine.js +105 -0
- package/dist/core/query/query-engine.js.map +1 -0
- package/dist/core/query/relation-query-service.d.ts +21 -0
- package/dist/core/query/relation-query-service.d.ts.map +1 -0
- package/dist/core/query/relation-query-service.js +124 -0
- package/dist/core/query/relation-query-service.js.map +1 -0
- package/dist/mermaid/auto-repair.d.ts +1 -1
- package/dist/mermaid/auto-repair.d.ts.map +1 -1
- package/dist/mermaid/auto-repair.js +6 -6
- package/dist/mermaid/auto-repair.js.map +1 -1
- package/dist/mermaid/cpp-package-flowchart-generator.js +1 -1
- package/dist/mermaid/cpp-package-flowchart-generator.js.map +1 -1
- package/dist/mermaid/diagram-generator.d.ts +2 -1
- package/dist/mermaid/diagram-generator.d.ts.map +1 -1
- package/dist/mermaid/diagram-generator.js +17 -16
- package/dist/mermaid/diagram-generator.js.map +1 -1
- package/dist/mermaid/generator-formatting.d.ts +1 -1
- package/dist/mermaid/generator-formatting.d.ts.map +1 -1
- package/dist/mermaid/generator-formatting.js +2 -0
- package/dist/mermaid/generator-formatting.js.map +1 -1
- package/dist/mermaid/generator-validation.d.ts.map +1 -1
- package/dist/mermaid/generator-validation.js.map +1 -1
- package/dist/mermaid/generator.d.ts +5 -10
- package/dist/mermaid/generator.d.ts.map +1 -1
- package/dist/mermaid/generator.js +192 -227
- package/dist/mermaid/generator.js.map +1 -1
- package/dist/mermaid/grouper.d.ts.map +1 -1
- package/dist/mermaid/grouper.js.map +1 -1
- package/dist/mermaid/test-coverage-renderer.d.ts +1 -1
- package/dist/mermaid/test-coverage-renderer.d.ts.map +1 -1
- package/dist/mermaid/ts-module-graph-renderer.d.ts +6 -2
- package/dist/mermaid/ts-module-graph-renderer.d.ts.map +1 -1
- package/dist/mermaid/ts-module-graph-renderer.js +49 -2
- package/dist/mermaid/ts-module-graph-renderer.js.map +1 -1
- package/dist/mermaid/validator-quality.js +1 -1
- package/dist/mermaid/validator-quality.js.map +1 -1
- package/dist/mermaid/validator-render.js +1 -1
- package/dist/mermaid/validator-render.js.map +1 -1
- package/dist/parser/archjson-aggregator.d.ts +1 -0
- package/dist/parser/archjson-aggregator.d.ts.map +1 -1
- package/dist/parser/archjson-aggregator.js +37 -7
- package/dist/parser/archjson-aggregator.js.map +1 -1
- package/dist/parser/call-edge-extractor.d.ts +13 -0
- package/dist/parser/call-edge-extractor.d.ts.map +1 -0
- package/dist/parser/call-edge-extractor.js +70 -0
- package/dist/parser/call-edge-extractor.js.map +1 -0
- package/dist/parser/metrics-calculator.d.ts.map +1 -1
- package/dist/parser/metrics-calculator.js +2 -1
- package/dist/parser/metrics-calculator.js.map +1 -1
- package/dist/parser/parallel-parser.d.ts +2 -1
- package/dist/parser/parallel-parser.d.ts.map +1 -1
- package/dist/parser/parallel-parser.js +4 -2
- package/dist/parser/parallel-parser.js.map +1 -1
- package/dist/parser/relation-extractor.d.ts +1 -0
- package/dist/parser/relation-extractor.d.ts.map +1 -1
- package/dist/parser/relation-extractor.js +84 -4
- package/dist/parser/relation-extractor.js.map +1 -1
- package/dist/parser/typescript-parser.d.ts +2 -0
- package/dist/parser/typescript-parser.d.ts.map +1 -1
- package/dist/parser/typescript-parser.js +44 -5
- package/dist/parser/typescript-parser.js.map +1 -1
- package/dist/plugins/cpp/archjson-mapper.d.ts.map +1 -1
- package/dist/plugins/cpp/archjson-mapper.js.map +1 -1
- package/dist/plugins/cpp/builders/class-builder.d.ts.map +1 -1
- package/dist/plugins/cpp/builders/class-builder.js +6 -1
- package/dist/plugins/cpp/builders/class-builder.js.map +1 -1
- package/dist/plugins/cpp/index.d.ts +3 -3
- package/dist/plugins/cpp/index.d.ts.map +1 -1
- package/dist/plugins/cpp/index.js +36 -7
- package/dist/plugins/cpp/index.js.map +1 -1
- package/dist/plugins/cpp/tree-sitter-bridge.d.ts.map +1 -1
- package/dist/plugins/cpp/tree-sitter-bridge.js +10 -7
- package/dist/plugins/cpp/tree-sitter-bridge.js.map +1 -1
- package/dist/plugins/golang/archjson-mapper.d.ts +3 -1
- package/dist/plugins/golang/archjson-mapper.d.ts.map +1 -1
- package/dist/plugins/golang/archjson-mapper.js +56 -1
- package/dist/plugins/golang/archjson-mapper.js.map +1 -1
- package/dist/plugins/golang/atlas/behavior-analyzer.d.ts +2 -1
- package/dist/plugins/golang/atlas/behavior-analyzer.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/behavior-analyzer.js +2 -2
- package/dist/plugins/golang/atlas/behavior-analyzer.js.map +1 -1
- package/dist/plugins/golang/atlas/builders/capability-graph-builder.d.ts +5 -1
- package/dist/plugins/golang/atlas/builders/capability-graph-builder.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/builders/capability-graph-builder.js +43 -1
- package/dist/plugins/golang/atlas/builders/capability-graph-builder.js.map +1 -1
- package/dist/plugins/golang/atlas/builders/flow-graph-builder.d.ts +3 -0
- package/dist/plugins/golang/atlas/builders/flow-graph-builder.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/builders/flow-graph-builder.js +166 -6
- package/dist/plugins/golang/atlas/builders/flow-graph-builder.js.map +1 -1
- package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js +12 -5
- package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js.map +1 -1
- package/dist/plugins/golang/atlas/builders/package-graph-builder.js +5 -5
- package/dist/plugins/golang/atlas/builders/package-graph-builder.js.map +1 -1
- package/dist/plugins/golang/atlas/framework-detector.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/framework-detector.js +2 -0
- package/dist/plugins/golang/atlas/framework-detector.js.map +1 -1
- package/dist/plugins/golang/atlas/go-mod-resolver.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/go-mod-resolver.js +3 -3
- package/dist/plugins/golang/atlas/go-mod-resolver.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/atlas-renderer.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/renderers/atlas-renderer.js +32 -2
- package/dist/plugins/golang/atlas/renderers/atlas-renderer.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.js +16 -5
- package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/flow-mermaid-template.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/goroutine-mermaid-template.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/renderers/goroutine-mermaid-template.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/mermaid-templates.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/renderers/mermaid-templates.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/package-mermaid-template.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/renderers/package-mermaid-template.js +5 -5
- package/dist/plugins/golang/atlas/renderers/package-mermaid-template.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/template-shared.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/renderers/template-shared.js.map +1 -1
- package/dist/plugins/golang/atlas/types.d.ts +9 -3
- package/dist/plugins/golang/atlas/types.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/types.js +1 -1
- package/dist/plugins/golang/atlas/types.js.map +1 -1
- package/dist/plugins/golang/builders/function-builder.d.ts +19 -0
- package/dist/plugins/golang/builders/function-builder.d.ts.map +1 -0
- package/dist/plugins/golang/builders/function-builder.js +206 -0
- package/dist/plugins/golang/builders/function-builder.js.map +1 -0
- package/dist/plugins/golang/builders/goroutine-builder.d.ts +11 -0
- package/dist/plugins/golang/builders/goroutine-builder.d.ts.map +1 -0
- package/dist/plugins/golang/builders/goroutine-builder.js +147 -0
- package/dist/plugins/golang/builders/goroutine-builder.js.map +1 -0
- package/dist/plugins/golang/builders/interface-builder.d.ts +9 -0
- package/dist/plugins/golang/builders/interface-builder.d.ts.map +1 -0
- package/dist/plugins/golang/builders/interface-builder.js +126 -0
- package/dist/plugins/golang/builders/interface-builder.js.map +1 -0
- package/dist/plugins/golang/builders/node-utils.d.ts +8 -0
- package/dist/plugins/golang/builders/node-utils.d.ts.map +1 -0
- package/dist/plugins/golang/builders/node-utils.js +18 -0
- package/dist/plugins/golang/builders/node-utils.js.map +1 -0
- package/dist/plugins/golang/builders/struct-builder.d.ts +12 -0
- package/dist/plugins/golang/builders/struct-builder.d.ts.map +1 -0
- package/dist/plugins/golang/builders/struct-builder.js +81 -0
- package/dist/plugins/golang/builders/struct-builder.js.map +1 -0
- package/dist/plugins/golang/go-atlas-adapter.d.ts +11 -0
- package/dist/plugins/golang/go-atlas-adapter.d.ts.map +1 -0
- package/dist/plugins/golang/go-atlas-adapter.js +47 -0
- package/dist/plugins/golang/go-atlas-adapter.js.map +1 -0
- package/dist/plugins/golang/go-atlas-coordinator.d.ts +12 -0
- package/dist/plugins/golang/go-atlas-coordinator.d.ts.map +1 -0
- package/dist/plugins/golang/go-atlas-coordinator.js +76 -0
- package/dist/plugins/golang/go-atlas-coordinator.js.map +1 -0
- package/dist/plugins/golang/go-mod-reader.d.ts +2 -0
- package/dist/plugins/golang/go-mod-reader.d.ts.map +1 -0
- package/dist/plugins/golang/go-mod-reader.js +12 -0
- package/dist/plugins/golang/go-mod-reader.js.map +1 -0
- package/dist/plugins/golang/go-parse-coordinator.d.ts +23 -0
- package/dist/plugins/golang/go-parse-coordinator.d.ts.map +1 -0
- package/dist/plugins/golang/go-parse-coordinator.js +137 -0
- package/dist/plugins/golang/go-parse-coordinator.js.map +1 -0
- package/dist/plugins/golang/go-test-analyzer.d.ts +10 -0
- package/dist/plugins/golang/go-test-analyzer.d.ts.map +1 -0
- package/dist/plugins/golang/go-test-analyzer.js +90 -0
- package/dist/plugins/golang/go-test-analyzer.js.map +1 -0
- package/dist/plugins/golang/gopls-client.js +6 -6
- package/dist/plugins/golang/gopls-client.js.map +1 -1
- package/dist/plugins/golang/gopls-interface-resolver.d.ts +19 -0
- package/dist/plugins/golang/gopls-interface-resolver.d.ts.map +1 -0
- package/dist/plugins/golang/gopls-interface-resolver.js +49 -0
- package/dist/plugins/golang/gopls-interface-resolver.js.map +1 -0
- package/dist/plugins/golang/index.d.ts +12 -17
- package/dist/plugins/golang/index.d.ts.map +1 -1
- package/dist/plugins/golang/index.js +44 -326
- package/dist/plugins/golang/index.js.map +1 -1
- package/dist/plugins/golang/tree-sitter-bridge.d.ts +4 -24
- package/dist/plugins/golang/tree-sitter-bridge.d.ts.map +1 -1
- package/dist/plugins/golang/tree-sitter-bridge.js +16 -526
- package/dist/plugins/golang/tree-sitter-bridge.js.map +1 -1
- package/dist/plugins/golang/types.d.ts +5 -0
- package/dist/plugins/golang/types.d.ts.map +1 -1
- package/dist/plugins/java/archjson-mapper.d.ts +3 -1
- package/dist/plugins/java/archjson-mapper.d.ts.map +1 -1
- package/dist/plugins/java/archjson-mapper.js +123 -0
- package/dist/plugins/java/archjson-mapper.js.map +1 -1
- package/dist/plugins/java/dependency-extractor.js +2 -2
- package/dist/plugins/java/dependency-extractor.js.map +1 -1
- package/dist/plugins/java/index.d.ts +2 -2
- package/dist/plugins/java/index.d.ts.map +1 -1
- package/dist/plugins/java/index.js +73 -16
- package/dist/plugins/java/index.js.map +1 -1
- package/dist/plugins/java/maven-crossmodule-parser.d.ts +9 -0
- package/dist/plugins/java/maven-crossmodule-parser.d.ts.map +1 -0
- package/dist/plugins/java/maven-crossmodule-parser.js +54 -0
- package/dist/plugins/java/maven-crossmodule-parser.js.map +1 -0
- package/dist/plugins/java/tree-sitter-bridge.d.ts +2 -0
- package/dist/plugins/java/tree-sitter-bridge.d.ts.map +1 -1
- package/dist/plugins/java/tree-sitter-bridge.js +70 -7
- package/dist/plugins/java/tree-sitter-bridge.js.map +1 -1
- package/dist/plugins/java/types.d.ts +7 -0
- package/dist/plugins/java/types.d.ts.map +1 -1
- package/dist/plugins/kotlin/archjson-mapper.d.ts +12 -0
- package/dist/plugins/kotlin/archjson-mapper.d.ts.map +1 -0
- package/dist/plugins/kotlin/archjson-mapper.js +157 -0
- package/dist/plugins/kotlin/archjson-mapper.js.map +1 -0
- package/dist/plugins/kotlin/builders/class-builder.d.ts +26 -0
- package/dist/plugins/kotlin/builders/class-builder.d.ts.map +1 -0
- package/dist/plugins/kotlin/builders/class-builder.js +366 -0
- package/dist/plugins/kotlin/builders/class-builder.js.map +1 -0
- package/dist/plugins/kotlin/builders/function-builder.d.ts +15 -0
- package/dist/plugins/kotlin/builders/function-builder.d.ts.map +1 -0
- package/dist/plugins/kotlin/builders/function-builder.js +172 -0
- package/dist/plugins/kotlin/builders/function-builder.js.map +1 -0
- package/dist/plugins/kotlin/builders/import-resolver.d.ts +5 -0
- package/dist/plugins/kotlin/builders/import-resolver.d.ts.map +1 -0
- package/dist/plugins/kotlin/builders/import-resolver.js +10 -0
- package/dist/plugins/kotlin/builders/import-resolver.js.map +1 -0
- package/dist/plugins/kotlin/dependency-extractor.d.ts +13 -0
- package/dist/plugins/kotlin/dependency-extractor.d.ts.map +1 -0
- package/dist/plugins/kotlin/dependency-extractor.js +104 -0
- package/dist/plugins/kotlin/dependency-extractor.js.map +1 -0
- package/dist/plugins/kotlin/index.d.ts +26 -0
- package/dist/plugins/kotlin/index.d.ts.map +1 -0
- package/dist/plugins/kotlin/index.js +238 -0
- package/dist/plugins/kotlin/index.js.map +1 -0
- package/dist/plugins/kotlin/kotlin-type-extractor.d.ts +7 -0
- package/dist/plugins/kotlin/kotlin-type-extractor.d.ts.map +1 -0
- package/dist/plugins/kotlin/kotlin-type-extractor.js +96 -0
- package/dist/plugins/kotlin/kotlin-type-extractor.js.map +1 -0
- package/dist/plugins/kotlin/tree-sitter-bridge.d.ts +15 -0
- package/dist/plugins/kotlin/tree-sitter-bridge.d.ts.map +1 -0
- package/dist/plugins/kotlin/tree-sitter-bridge.js +79 -0
- package/dist/plugins/kotlin/tree-sitter-bridge.js.map +1 -0
- package/dist/plugins/kotlin/types.d.ts +48 -0
- package/dist/plugins/kotlin/types.d.ts.map +1 -0
- package/dist/plugins/kotlin/types.js +2 -0
- package/dist/plugins/kotlin/types.js.map +1 -0
- package/dist/plugins/python/archjson-mapper.d.ts +7 -2
- package/dist/plugins/python/archjson-mapper.d.ts.map +1 -1
- package/dist/plugins/python/archjson-mapper.js +117 -10
- package/dist/plugins/python/archjson-mapper.js.map +1 -1
- package/dist/plugins/python/dependency-extractor.js +1 -1
- package/dist/plugins/python/dependency-extractor.js.map +1 -1
- package/dist/plugins/python/import-extractor.d.ts +11 -0
- package/dist/plugins/python/import-extractor.d.ts.map +1 -0
- package/dist/plugins/python/import-extractor.js +67 -0
- package/dist/plugins/python/import-extractor.js.map +1 -0
- package/dist/plugins/python/index.d.ts +5 -3
- package/dist/plugins/python/index.d.ts.map +1 -1
- package/dist/plugins/python/index.js +115 -12
- package/dist/plugins/python/index.js.map +1 -1
- package/dist/plugins/python/tree-sitter-bridge.d.ts +2 -0
- package/dist/plugins/python/tree-sitter-bridge.d.ts.map +1 -1
- package/dist/plugins/python/tree-sitter-bridge.js +67 -1
- package/dist/plugins/python/tree-sitter-bridge.js.map +1 -1
- package/dist/plugins/python/types.d.ts +6 -0
- package/dist/plugins/python/types.d.ts.map +1 -1
- package/dist/plugins/shared/mapper-utils.d.ts +1 -1
- package/dist/plugins/shared/mapper-utils.d.ts.map +1 -1
- package/dist/plugins/shared/mapper-utils.js.map +1 -1
- package/dist/plugins/typescript/builders/module-graph-builder.d.ts +2 -2
- package/dist/plugins/typescript/builders/module-graph-builder.d.ts.map +1 -1
- package/dist/plugins/typescript/builders/module-graph-builder.js +29 -8
- package/dist/plugins/typescript/builders/module-graph-builder.js.map +1 -1
- package/dist/plugins/typescript/index.d.ts +3 -2
- package/dist/plugins/typescript/index.d.ts.map +1 -1
- package/dist/plugins/typescript/index.js +116 -10
- package/dist/plugins/typescript/index.js.map +1 -1
- package/dist/plugins/typescript/typescript-analyzer.d.ts +2 -2
- package/dist/plugins/typescript/typescript-analyzer.d.ts.map +1 -1
- package/dist/plugins/typescript/typescript-analyzer.js +1 -1
- package/dist/plugins/typescript/typescript-analyzer.js.map +1 -1
- package/dist/types/cognitive-summary.d.ts +20 -0
- package/dist/types/cognitive-summary.d.ts.map +1 -0
- package/dist/types/cognitive-summary.js +2 -0
- package/dist/types/cognitive-summary.js.map +1 -0
- package/dist/types/config-cli.d.ts +4 -0
- package/dist/types/config-cli.d.ts.map +1 -1
- package/dist/types/config-global.d.ts +4 -0
- package/dist/types/config-global.d.ts.map +1 -1
- package/dist/types/{extensions.d.ts → extensions/go-atlas.d.ts} +5 -99
- package/dist/types/extensions/go-atlas.d.ts.map +1 -0
- package/dist/types/extensions/go-atlas.js +2 -0
- package/dist/types/extensions/go-atlas.js.map +1 -0
- package/dist/types/extensions/index.d.ts +15 -0
- package/dist/types/extensions/index.d.ts.map +1 -0
- package/dist/types/extensions/index.js +5 -0
- package/dist/types/extensions/index.js.map +1 -0
- package/dist/types/extensions/project-semantics.d.ts +55 -0
- package/dist/types/extensions/project-semantics.d.ts.map +1 -0
- package/dist/types/extensions/project-semantics.js +126 -0
- package/dist/types/extensions/project-semantics.js.map +1 -0
- package/dist/types/extensions/test-analysis.d.ts +68 -0
- package/dist/types/extensions/test-analysis.d.ts.map +1 -0
- package/dist/types/extensions/test-analysis.js +2 -0
- package/dist/types/extensions/test-analysis.js.map +1 -0
- package/dist/types/extensions/ts-analysis.d.ts +33 -0
- package/dist/types/extensions/ts-analysis.d.ts.map +1 -0
- package/dist/types/extensions/ts-analysis.js +2 -0
- package/dist/types/extensions/ts-analysis.js.map +1 -0
- package/dist/types/git-history.d.ts +68 -0
- package/dist/types/git-history.d.ts.map +1 -0
- package/dist/types/git-history.js +2 -0
- package/dist/types/git-history.js.map +1 -0
- package/dist/types/index.d.ts +38 -29
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/metric-vector.d.ts +17 -0
- package/dist/types/metric-vector.d.ts.map +1 -0
- package/dist/types/metric-vector.js +2 -0
- package/dist/types/metric-vector.js.map +1 -0
- package/dist/utils/cli-detector.js +2 -2
- package/dist/utils/cli-detector.js.map +1 -1
- package/dist/utils/tsconfig-finder.d.ts.map +1 -1
- package/dist/utils/tsconfig-finder.js +6 -1
- package/dist/utils/tsconfig-finder.js.map +1 -1
- package/node_modules/tree-sitter/prebuilds/linux-x64/node.napi.glibc.node +0 -0
- package/package.json +5 -2
- package/dist/cli/cache-manager.d.ts.map +0 -1
- package/dist/cli/cache-manager.js.map +0 -1
- package/dist/cli/error-handler.d.ts +0 -15
- package/dist/cli/error-handler.d.ts.map +0 -1
- package/dist/cli/error-handler.js.map +0 -1
- package/dist/cli/errors.d.ts.map +0 -1
- package/dist/cli/errors.js +0 -31
- package/dist/cli/errors.js.map +0 -1
- package/dist/cli/progress.d.ts.map +0 -1
- package/dist/cli/progress.js.map +0 -1
- package/dist/types/extensions.d.ts.map +0 -1
- package/dist/types/extensions.js +0 -4
- package/dist/types/extensions.js.map +0 -1
|
@@ -1,17 +1,19 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { globalEntityTypeRegistry } from '../core/entity-type-registry.js';
|
|
1
3
|
import { CommentGenerator } from './comment-generator.js';
|
|
2
4
|
import { groupEntitiesByPackage } from './generator-grouping.js';
|
|
3
5
|
import { validateGeneratorInput } from './generator-validation.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return
|
|
6
|
+
import { ENTITY_CLASSDEF_STYLES, normalizeEntityName, escapeId, generateRelationLine as _generateRelationLine, isNoisyTarget, generateClassDefinition as _generateClassDefinition, } from './generator-formatting.js';
|
|
7
|
+
function entityTypeToClassDef(type, registry = globalEntityTypeRegistry) {
|
|
8
|
+
if (type === 'class')
|
|
9
|
+
return 'classNode';
|
|
10
|
+
if (type in ENTITY_CLASSDEF_STYLES)
|
|
11
|
+
return type;
|
|
12
|
+
const custom = registry.get(type);
|
|
13
|
+
if (custom?.mermaidShape && custom.mermaidShape !== 'default') {
|
|
14
|
+
return custom.mermaidShape === 'component' ? 'interface' : 'classNode';
|
|
15
|
+
}
|
|
16
|
+
return 'classNode';
|
|
15
17
|
}
|
|
16
18
|
export class ValidatedMermaidGenerator {
|
|
17
19
|
archJson;
|
|
@@ -36,14 +38,6 @@ export class ValidatedMermaidGenerator {
|
|
|
36
38
|
}
|
|
37
39
|
generate() {
|
|
38
40
|
validateGeneratorInput(this.archJson, this.verbose);
|
|
39
|
-
const lines = ['classDiagram'];
|
|
40
|
-
if (this.diagramConfig && this.diagramConfig.annotations?.enableComments !== false) {
|
|
41
|
-
const comments = this.commentGenerator.generateAll(this.diagramConfig);
|
|
42
|
-
if (comments) {
|
|
43
|
-
lines.push(comments);
|
|
44
|
-
lines.push('');
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
41
|
let diagramCode;
|
|
48
42
|
switch (this.options.level) {
|
|
49
43
|
case 'package':
|
|
@@ -57,7 +51,16 @@ export class ValidatedMermaidGenerator {
|
|
|
57
51
|
diagramCode = this.generateClassLevel();
|
|
58
52
|
break;
|
|
59
53
|
}
|
|
60
|
-
const diagramLines = diagramCode.split('\n')
|
|
54
|
+
const diagramLines = diagramCode.split('\n');
|
|
55
|
+
const header = diagramLines.shift() || 'classDiagram';
|
|
56
|
+
const lines = [header];
|
|
57
|
+
if (this.diagramConfig && this.diagramConfig.annotations?.enableComments !== false) {
|
|
58
|
+
const comments = this.commentGenerator.generateAll(this.diagramConfig);
|
|
59
|
+
if (comments) {
|
|
60
|
+
lines.push(comments);
|
|
61
|
+
lines.push('');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
61
64
|
lines.push(...diagramLines);
|
|
62
65
|
if (this.diagramConfig && this.diagramConfig.annotations?.enableVisibleTitle) {
|
|
63
66
|
const visibleTitle = this.commentGenerator.generateVisibleTitle(this.diagramConfig);
|
|
@@ -67,7 +70,7 @@ export class ValidatedMermaidGenerator {
|
|
|
67
70
|
lines.push(visibleTitle);
|
|
68
71
|
}
|
|
69
72
|
else {
|
|
70
|
-
const insertIndex = lines.findIndex((line) => !line.startsWith('%%') && line !==
|
|
73
|
+
const insertIndex = lines.findIndex((line) => !line.startsWith('%%') && line !== header);
|
|
71
74
|
if (insertIndex !== -1) {
|
|
72
75
|
lines.splice(insertIndex, 0, visibleTitle);
|
|
73
76
|
}
|
|
@@ -78,6 +81,9 @@ export class ValidatedMermaidGenerator {
|
|
|
78
81
|
return this.postProcess(code);
|
|
79
82
|
}
|
|
80
83
|
generatePackageLevel() {
|
|
84
|
+
if (this.getArchitecturalLayers()) {
|
|
85
|
+
return this.generateLayeredPackageLevel();
|
|
86
|
+
}
|
|
81
87
|
const lines = ['classDiagram'];
|
|
82
88
|
const packageGroups = groupEntitiesByPackage(this.archJson, this.options.grouping);
|
|
83
89
|
for (const group of packageGroups) {
|
|
@@ -85,18 +91,105 @@ export class ValidatedMermaidGenerator {
|
|
|
85
91
|
for (const entityId of group.entities) {
|
|
86
92
|
const entity = this.archJson.entities.find((e) => e.id === entityId);
|
|
87
93
|
if (entity) {
|
|
88
|
-
entityLines.push(` class ${
|
|
94
|
+
entityLines.push(` class ${escapeId(normalizeEntityName(entity.name))}`);
|
|
89
95
|
}
|
|
90
96
|
}
|
|
91
97
|
if (entityLines.length === 0)
|
|
92
98
|
continue;
|
|
93
|
-
lines.push(` namespace ${
|
|
99
|
+
lines.push(` namespace ${escapeId(group.name)} {`);
|
|
94
100
|
lines.push(...entityLines);
|
|
95
101
|
lines.push(' }');
|
|
96
102
|
}
|
|
97
103
|
lines.push(...this.generateRelations(packageGroups));
|
|
98
104
|
return lines.join('\n');
|
|
99
105
|
}
|
|
106
|
+
getArchitecturalLayers() {
|
|
107
|
+
const layers = this.archJson.extensions?.projectSemantics?.architecturalLayers;
|
|
108
|
+
return layers && Object.keys(layers).length > 0 ? layers : undefined;
|
|
109
|
+
}
|
|
110
|
+
normalizePackagePath(filePath) {
|
|
111
|
+
const normalizedFile = filePath.replace(/\\/g, '/');
|
|
112
|
+
const workspaceRoot = this.archJson.workspaceRoot?.replace(/\\/g, '/');
|
|
113
|
+
if (workspaceRoot && path.isAbsolute(filePath)) {
|
|
114
|
+
return path.posix.dirname(path.posix.relative(workspaceRoot, normalizedFile));
|
|
115
|
+
}
|
|
116
|
+
return path.posix.dirname(normalizedFile);
|
|
117
|
+
}
|
|
118
|
+
findMatchingLayer(packageName, layers) {
|
|
119
|
+
const normalizedPackage = packageName.replace(/\\/g, '/');
|
|
120
|
+
const candidates = Object.entries(layers)
|
|
121
|
+
.map(([key, label]) => ({ key: key.replace(/\\/g, '/'), label }))
|
|
122
|
+
.filter(({ key }) => normalizedPackage === key || normalizedPackage.startsWith(`${key}/`))
|
|
123
|
+
.sort((left, right) => right.key.length - left.key.length);
|
|
124
|
+
return candidates[0] ?? null;
|
|
125
|
+
}
|
|
126
|
+
generateLayeredPackageLevel() {
|
|
127
|
+
const architecturalLayers = this.getArchitecturalLayers();
|
|
128
|
+
if (!architecturalLayers) {
|
|
129
|
+
return this.generatePackageLevel();
|
|
130
|
+
}
|
|
131
|
+
const direction = this.options.grouping.layout?.direction ?? 'TB';
|
|
132
|
+
const lines = [`flowchart ${direction}`];
|
|
133
|
+
const entityPackageIndex = new Map();
|
|
134
|
+
const packageNames = [];
|
|
135
|
+
const seenPackages = new Set();
|
|
136
|
+
for (const entity of this.archJson.entities) {
|
|
137
|
+
const sourceFile = entity.sourceLocation?.file;
|
|
138
|
+
if (!sourceFile)
|
|
139
|
+
continue;
|
|
140
|
+
const packageName = this.normalizePackagePath(sourceFile);
|
|
141
|
+
if (!packageName || packageName === '.')
|
|
142
|
+
continue;
|
|
143
|
+
entityPackageIndex.set(entity.id, packageName);
|
|
144
|
+
entityPackageIndex.set(entity.name, packageName);
|
|
145
|
+
if (!seenPackages.has(packageName)) {
|
|
146
|
+
seenPackages.add(packageName);
|
|
147
|
+
packageNames.push(packageName);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const groupedPackages = new Map();
|
|
151
|
+
const unmatchedPackages = [];
|
|
152
|
+
for (const packageName of packageNames) {
|
|
153
|
+
const layerMatch = this.findMatchingLayer(packageName, architecturalLayers);
|
|
154
|
+
if (!layerMatch) {
|
|
155
|
+
unmatchedPackages.push(packageName);
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (!groupedPackages.has(layerMatch.label)) {
|
|
159
|
+
groupedPackages.set(layerMatch.label, []);
|
|
160
|
+
}
|
|
161
|
+
groupedPackages.get(layerMatch.label)?.push(packageName);
|
|
162
|
+
}
|
|
163
|
+
const nodeIdForPackage = (packageName) => escapeId(`pkg_${packageName}`);
|
|
164
|
+
for (const [label, layerPackages] of groupedPackages.entries()) {
|
|
165
|
+
if (layerPackages.length === 0)
|
|
166
|
+
continue;
|
|
167
|
+
lines.push(` subgraph ${escapeId(`layer_${label}`)}["${label}"]`);
|
|
168
|
+
for (const packageName of layerPackages) {
|
|
169
|
+
lines.push(` ${nodeIdForPackage(packageName)}["${packageName}"]`);
|
|
170
|
+
}
|
|
171
|
+
lines.push(' end');
|
|
172
|
+
}
|
|
173
|
+
for (const packageName of unmatchedPackages) {
|
|
174
|
+
lines.push(` ${nodeIdForPackage(packageName)}["${packageName}"]`);
|
|
175
|
+
}
|
|
176
|
+
const relationEdges = new Set();
|
|
177
|
+
for (const relation of this.archJson.relations) {
|
|
178
|
+
const sourcePackage = entityPackageIndex.get(relation.source) ??
|
|
179
|
+
entityPackageIndex.get(normalizeEntityName(relation.source));
|
|
180
|
+
const targetPackage = entityPackageIndex.get(relation.target) ??
|
|
181
|
+
entityPackageIndex.get(normalizeEntityName(relation.target));
|
|
182
|
+
if (!sourcePackage || !targetPackage || sourcePackage === targetPackage) {
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
const edge = ` ${nodeIdForPackage(sourcePackage)} --> ${nodeIdForPackage(targetPackage)}`;
|
|
186
|
+
if (!relationEdges.has(edge)) {
|
|
187
|
+
relationEdges.add(edge);
|
|
188
|
+
lines.push(edge);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return lines.join('\n');
|
|
192
|
+
}
|
|
100
193
|
generateClassLevel() {
|
|
101
194
|
const lines = ['classDiagram'];
|
|
102
195
|
for (const [name, style] of Object.entries(ENTITY_CLASSDEF_STYLES)) {
|
|
@@ -107,40 +200,57 @@ export class ValidatedMermaidGenerator {
|
|
|
107
200
|
const visibleEntities = this.archJson.entities.filter((e) => e.type !== 'function');
|
|
108
201
|
const knownEntityNames = new Set(visibleEntities.map((e) => e.name));
|
|
109
202
|
const knownEntityIds = new Set(visibleEntities.map((e) => e.id));
|
|
203
|
+
const modulePrefixIndex = this.buildModulePrefixIndex(knownEntityIds);
|
|
110
204
|
if (packageGroups.length > 0 && packageGroups[0]?.name !== 'Default') {
|
|
111
205
|
for (const group of packageGroups) {
|
|
112
206
|
const entityLines = [];
|
|
113
207
|
for (const entityId of group.entities) {
|
|
114
208
|
const entity = visibleEntities.find((e) => e.id === entityId);
|
|
115
209
|
if (entity) {
|
|
116
|
-
entityLines.push(...
|
|
210
|
+
entityLines.push(..._generateClassDefinition(entity, 2, this.options));
|
|
117
211
|
}
|
|
118
212
|
}
|
|
119
213
|
if (entityLines.length === 0)
|
|
120
214
|
continue;
|
|
121
|
-
lines.push(` namespace ${
|
|
215
|
+
lines.push(` namespace ${escapeId(group.name)} {`);
|
|
122
216
|
lines.push(...entityLines);
|
|
123
217
|
lines.push(' }');
|
|
124
218
|
}
|
|
125
219
|
for (const relation of this.archJson.relations) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
220
|
+
const sourceKnownDirect = knownEntityNames.has(relation.source) || knownEntityIds.has(relation.source);
|
|
221
|
+
const sourceKnownViaPrefix = !sourceKnownDirect && modulePrefixIndex.has(relation.source);
|
|
222
|
+
const sourceKnown = sourceKnownDirect || sourceKnownViaPrefix;
|
|
223
|
+
const targetOk = knownEntityIds.has(relation.target) ||
|
|
224
|
+
knownEntityNames.has(relation.target) ||
|
|
225
|
+
sourceKnownViaPrefix ||
|
|
226
|
+
!isNoisyTarget(relation.target);
|
|
227
|
+
if (sourceKnown && targetOk) {
|
|
228
|
+
{
|
|
229
|
+
const _line = _generateRelationLine(relation, this.entityIdToName);
|
|
230
|
+
if (_line !== null)
|
|
231
|
+
lines.push(` ${_line}`);
|
|
232
|
+
}
|
|
131
233
|
}
|
|
132
234
|
}
|
|
133
235
|
}
|
|
134
236
|
else {
|
|
135
237
|
for (const entity of visibleEntities) {
|
|
136
|
-
lines.push(...
|
|
238
|
+
lines.push(..._generateClassDefinition(entity, 1, this.options));
|
|
137
239
|
}
|
|
138
240
|
for (const relation of this.archJson.relations) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
241
|
+
const sourceKnownDirect = knownEntityNames.has(relation.source) || knownEntityIds.has(relation.source);
|
|
242
|
+
const sourceKnownViaPrefix = !sourceKnownDirect && modulePrefixIndex.has(relation.source);
|
|
243
|
+
const sourceKnown = sourceKnownDirect || sourceKnownViaPrefix;
|
|
244
|
+
const targetOk = knownEntityIds.has(relation.target) ||
|
|
245
|
+
knownEntityNames.has(relation.target) ||
|
|
246
|
+
sourceKnownViaPrefix ||
|
|
247
|
+
!isNoisyTarget(relation.target);
|
|
248
|
+
if (sourceKnown && targetOk) {
|
|
249
|
+
{
|
|
250
|
+
const _line = _generateRelationLine(relation, this.entityIdToName);
|
|
251
|
+
if (_line !== null)
|
|
252
|
+
lines.push(` ${_line}`);
|
|
253
|
+
}
|
|
144
254
|
}
|
|
145
255
|
}
|
|
146
256
|
}
|
|
@@ -148,7 +258,7 @@ export class ValidatedMermaidGenerator {
|
|
|
148
258
|
lines.push(' %% Node type annotations');
|
|
149
259
|
const seenAnnotationsClass = new Set();
|
|
150
260
|
for (const entity of visibleEntities) {
|
|
151
|
-
const normalizedId =
|
|
261
|
+
const normalizedId = escapeId(normalizeEntityName(entity.name));
|
|
152
262
|
if (seenAnnotationsClass.has(normalizedId))
|
|
153
263
|
continue;
|
|
154
264
|
seenAnnotationsClass.add(normalizedId);
|
|
@@ -172,32 +282,37 @@ export class ValidatedMermaidGenerator {
|
|
|
172
282
|
for (const entityId of group.entities) {
|
|
173
283
|
const entity = visibleEntities.find((e) => e.id === entityId);
|
|
174
284
|
if (entity) {
|
|
175
|
-
entityLines.push(...
|
|
285
|
+
entityLines.push(..._generateClassDefinition(entity, 2, this.options));
|
|
176
286
|
}
|
|
177
287
|
}
|
|
178
288
|
if (entityLines.length === 0)
|
|
179
289
|
continue;
|
|
180
|
-
lines.push(` namespace ${
|
|
290
|
+
lines.push(` namespace ${escapeId(group.name)} {`);
|
|
181
291
|
lines.push(...entityLines);
|
|
182
292
|
lines.push(' }');
|
|
183
293
|
}
|
|
184
294
|
}
|
|
185
295
|
else {
|
|
186
296
|
for (const entity of visibleEntities) {
|
|
187
|
-
lines.push(...
|
|
297
|
+
lines.push(..._generateClassDefinition(entity, 1, this.options));
|
|
188
298
|
}
|
|
189
299
|
}
|
|
300
|
+
const modulePrefixIndexMethod = this.buildModulePrefixIndex(knownEntityIds);
|
|
190
301
|
for (const relation of this.archJson.relations) {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
302
|
+
const sourceKnownDirect = knownEntityNames.has(relation.source) || knownEntityIds.has(relation.source);
|
|
303
|
+
const sourceKnownViaPrefix = !sourceKnownDirect && modulePrefixIndexMethod.has(relation.source);
|
|
304
|
+
const sourceKnown = sourceKnownDirect || sourceKnownViaPrefix;
|
|
305
|
+
if (sourceKnown && (sourceKnownViaPrefix || !isNoisyTarget(relation.target))) {
|
|
306
|
+
const _line = _generateRelationLine(relation, this.entityIdToName);
|
|
307
|
+
if (_line !== null)
|
|
308
|
+
lines.push(` ${_line}`);
|
|
194
309
|
}
|
|
195
310
|
}
|
|
196
311
|
lines.push('');
|
|
197
312
|
lines.push(' %% Node type annotations');
|
|
198
313
|
const seenAnnotationsMethod = new Set();
|
|
199
314
|
for (const entity of visibleEntities) {
|
|
200
|
-
const normalizedId =
|
|
315
|
+
const normalizedId = escapeId(normalizeEntityName(entity.name));
|
|
201
316
|
if (seenAnnotationsMethod.has(normalizedId))
|
|
202
317
|
continue;
|
|
203
318
|
seenAnnotationsMethod.add(normalizedId);
|
|
@@ -205,119 +320,38 @@ export class ValidatedMermaidGenerator {
|
|
|
205
320
|
}
|
|
206
321
|
return lines.join('\n');
|
|
207
322
|
}
|
|
208
|
-
generateClassDefinition(entity, indent, detailed = false) {
|
|
209
|
-
const lines = [];
|
|
210
|
-
const padding = ' '.repeat(indent);
|
|
211
|
-
const className = this.escapeId(this.normalizeEntityName(entity.name));
|
|
212
|
-
const classType = 'class';
|
|
213
|
-
lines.push(`${padding}${classType} ${className} {`);
|
|
214
|
-
const members = entity.members || [];
|
|
215
|
-
for (const member of members) {
|
|
216
|
-
if (!this.shouldIncludeMember(member)) {
|
|
217
|
-
continue;
|
|
218
|
-
}
|
|
219
|
-
const memberLine = this.generateMemberLine(member, detailed);
|
|
220
|
-
lines.push(`${padding} ${memberLine}`);
|
|
221
|
-
}
|
|
222
|
-
lines.push(`${padding}}`);
|
|
223
|
-
return lines;
|
|
224
|
-
}
|
|
225
|
-
generateMemberLine(member, detailed) {
|
|
226
|
-
const visibility = this.getVisibilitySymbol(member.visibility);
|
|
227
|
-
const staticModifier = member.isStatic ? 'static ' : '';
|
|
228
|
-
const abstractModifier = member.isAbstract ? 'abstract ' : '';
|
|
229
|
-
if (member.type === 'property') {
|
|
230
|
-
const readonly = member.isReadonly ? 'readonly ' : '';
|
|
231
|
-
const optional = member.isOptional ? '?' : '';
|
|
232
|
-
const type = member.fieldType ? `: ${this.sanitizeType(member.fieldType)}` : '';
|
|
233
|
-
return `${visibility}${staticModifier}${abstractModifier}${readonly}${member.name}${optional}${type}`;
|
|
234
|
-
}
|
|
235
|
-
else if (member.type === 'method' || member.type === 'constructor') {
|
|
236
|
-
const async = member.isAsync ? 'async ' : '';
|
|
237
|
-
const returnType = member.returnType ? `: ${this.sanitizeType(member.returnType)}` : '';
|
|
238
|
-
const params = member.parameters
|
|
239
|
-
?.map((p) => {
|
|
240
|
-
const optional = p.isOptional ? '?' : '';
|
|
241
|
-
const paramType = p.type ? `: ${this.sanitizeType(p.type)}` : '';
|
|
242
|
-
return `${p.name}${optional}${paramType}`;
|
|
243
|
-
})
|
|
244
|
-
.join(', ') || '';
|
|
245
|
-
return `${visibility}${staticModifier}${abstractModifier}${async}${member.name}(${params})${returnType}`;
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
return `${visibility}${member.name}`;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
normalizeEntityName(name) {
|
|
252
|
-
if (name.startsWith('import(')) {
|
|
253
|
-
const match = name.match(/^import\([^)]+\)\.\s*([\w.]+)/);
|
|
254
|
-
if (match) {
|
|
255
|
-
return match[2];
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
if (name.startsWith('import___')) {
|
|
259
|
-
const parts = name.split('___');
|
|
260
|
-
if (parts.length > 0) {
|
|
261
|
-
const lastPart = parts[parts.length - 1];
|
|
262
|
-
if (lastPart && lastPart.length > 0) {
|
|
263
|
-
return lastPart;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
const scopedMatch = name.match(/(?:\.ts|\.js)\.([A-Za-z_$][A-Za-z0-9_$]*)$/);
|
|
268
|
-
if (scopedMatch) {
|
|
269
|
-
return scopedMatch[1];
|
|
270
|
-
}
|
|
271
|
-
if (name.startsWith('{') || name.includes('=>')) {
|
|
272
|
-
return '[Type]';
|
|
273
|
-
}
|
|
274
|
-
return name;
|
|
275
|
-
}
|
|
276
323
|
get entityIdToName() {
|
|
277
324
|
if (!this._entityIdToName) {
|
|
278
325
|
this._entityIdToName = new Map(this.archJson.entities.map((e) => [e.id, e.name]));
|
|
279
326
|
}
|
|
280
327
|
return this._entityIdToName;
|
|
281
328
|
}
|
|
282
|
-
|
|
283
|
-
const
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
case 'implementation':
|
|
293
|
-
return `${target} <|.. ${source}`;
|
|
294
|
-
case 'composition':
|
|
295
|
-
return `${source} *-- ${target}`;
|
|
296
|
-
case 'aggregation':
|
|
297
|
-
return `${source} o-- ${target}`;
|
|
298
|
-
case 'dependency':
|
|
299
|
-
default:
|
|
300
|
-
return `${source} --> ${target}`;
|
|
329
|
+
buildModulePrefixIndex(entityIds) {
|
|
330
|
+
const index = new Map();
|
|
331
|
+
for (const entityId of entityIds) {
|
|
332
|
+
const lastDot = entityId.lastIndexOf('.');
|
|
333
|
+
if (lastDot > 0) {
|
|
334
|
+
const moduleId = entityId.substring(0, lastDot);
|
|
335
|
+
if (!index.has(moduleId)) {
|
|
336
|
+
index.set(moduleId, entityId);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
301
339
|
}
|
|
302
|
-
|
|
303
|
-
isNoisyTarget(target) {
|
|
304
|
-
return (target.startsWith('{') ||
|
|
305
|
-
target.startsWith('"') ||
|
|
306
|
-
target.startsWith("'") ||
|
|
307
|
-
target.startsWith('(') ||
|
|
308
|
-
target.includes('=>') ||
|
|
309
|
-
/^\d/.test(target) ||
|
|
310
|
-
/^[A-Z]$/.test(target) ||
|
|
311
|
-
/^[a-z]\w*\./.test(target));
|
|
340
|
+
return index;
|
|
312
341
|
}
|
|
313
342
|
generateRelations(_packageGroups) {
|
|
314
343
|
const lines = [];
|
|
315
344
|
const knownEntityNames = new Set(this.archJson.entities.map((e) => e.name));
|
|
316
345
|
const knownEntityIds = new Set(this.archJson.entities.map((e) => e.id));
|
|
346
|
+
const modulePrefixIndex = this.buildModulePrefixIndex(knownEntityIds);
|
|
317
347
|
for (const relation of this.archJson.relations) {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
348
|
+
const sourceKnownDirect = knownEntityNames.has(relation.source) || knownEntityIds.has(relation.source);
|
|
349
|
+
const sourceKnownViaPrefix = !sourceKnownDirect && modulePrefixIndex.has(relation.source);
|
|
350
|
+
const sourceKnown = sourceKnownDirect || sourceKnownViaPrefix;
|
|
351
|
+
if (sourceKnown && (sourceKnownViaPrefix || !isNoisyTarget(relation.target))) {
|
|
352
|
+
const _line = _generateRelationLine(relation, this.entityIdToName);
|
|
353
|
+
if (_line !== null)
|
|
354
|
+
lines.push(` ${_line}`);
|
|
321
355
|
}
|
|
322
356
|
}
|
|
323
357
|
return lines;
|
|
@@ -338,83 +372,6 @@ export class ValidatedMermaidGenerator {
|
|
|
338
372
|
reasoning: pkg.reasoning,
|
|
339
373
|
}));
|
|
340
374
|
}
|
|
341
|
-
shouldIncludeMember(member) {
|
|
342
|
-
if (member.visibility === 'private' && !this.options.includePrivate) {
|
|
343
|
-
return false;
|
|
344
|
-
}
|
|
345
|
-
if (member.visibility === 'protected' && !this.options.includeProtected) {
|
|
346
|
-
return false;
|
|
347
|
-
}
|
|
348
|
-
return true;
|
|
349
|
-
}
|
|
350
|
-
getVisibilitySymbol(visibility) {
|
|
351
|
-
switch (visibility) {
|
|
352
|
-
case 'public':
|
|
353
|
-
return '+';
|
|
354
|
-
case 'private':
|
|
355
|
-
return '-';
|
|
356
|
-
case 'protected':
|
|
357
|
-
return '#';
|
|
358
|
-
default:
|
|
359
|
-
return '+';
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
escapeId(id) {
|
|
363
|
-
if (!id)
|
|
364
|
-
return 'Unknown';
|
|
365
|
-
let escaped = id;
|
|
366
|
-
escaped = escaped.replace(/<[^>]*>$/g, '');
|
|
367
|
-
return escaped.replace(/[^a-zA-Z0-9_]/g, '_');
|
|
368
|
-
}
|
|
369
|
-
sanitizeType(type) {
|
|
370
|
-
if (!type)
|
|
371
|
-
return 'any';
|
|
372
|
-
type = this.normalizeTypeName(type);
|
|
373
|
-
let simplified = type;
|
|
374
|
-
let prevLength;
|
|
375
|
-
do {
|
|
376
|
-
prevLength = simplified.length;
|
|
377
|
-
simplified = simplified.replace(/\{[^{}]*\}/g, 'object');
|
|
378
|
-
} while (simplified.length !== prevLength && simplified.includes('{'));
|
|
379
|
-
const advancedTypePattern = /^(Partial|Required|Readonly|Pick|Omit|Record|Exclude|Extract|ReturnType|Parameters|DeepPartial)<.+>$/;
|
|
380
|
-
if (advancedTypePattern.test(simplified)) {
|
|
381
|
-
return 'any';
|
|
382
|
-
}
|
|
383
|
-
simplified = simplified.replace(/\([^)]*\)\s*=>\s*/g, 'Function');
|
|
384
|
-
while (simplified.includes('Promise<')) {
|
|
385
|
-
simplified = simplified.replace(/(\w+)<([^<>]*)>/g, '$1');
|
|
386
|
-
simplified = simplified.replace(/\bPromise\b/g, 'any');
|
|
387
|
-
}
|
|
388
|
-
if (simplified.includes('|')) {
|
|
389
|
-
return 'any';
|
|
390
|
-
}
|
|
391
|
-
if (simplified.includes('&')) {
|
|
392
|
-
return 'object';
|
|
393
|
-
}
|
|
394
|
-
let prevLength2;
|
|
395
|
-
do {
|
|
396
|
-
prevLength2 = simplified.length;
|
|
397
|
-
simplified = simplified.replace(/Array<[^>]+>/g, 'Array');
|
|
398
|
-
} while (simplified.length !== prevLength2);
|
|
399
|
-
simplified = simplified.replace(/\w+\[\]/g, 'Array');
|
|
400
|
-
simplified = simplified.replace(/Array+/g, 'Array');
|
|
401
|
-
while (simplified.match(/\w+</)) {
|
|
402
|
-
simplified = simplified.replace(/(\w+)<([^<>]*)>/g, '$1');
|
|
403
|
-
}
|
|
404
|
-
simplified = simplified.replace(/\bz\.infer\b/g, 'any');
|
|
405
|
-
simplified = simplified.replace(/\s+/g, ' ').trim();
|
|
406
|
-
if (simplified.length > 50 || simplified === '') {
|
|
407
|
-
return 'any';
|
|
408
|
-
}
|
|
409
|
-
return simplified;
|
|
410
|
-
}
|
|
411
|
-
normalizeTypeName(type) {
|
|
412
|
-
const importPattern = /import\([^)]+\)\.\s*([\w.]+)/g;
|
|
413
|
-
type = type.replace(importPattern, '$1');
|
|
414
|
-
const importPathPattern = /import___[^_]+___([\w]+)/g;
|
|
415
|
-
type = type.replace(importPathPattern, '$1');
|
|
416
|
-
return type;
|
|
417
|
-
}
|
|
418
375
|
generateClassDiagrams(maxNodesPerDiagram) {
|
|
419
376
|
const visibleEntities = this.archJson.entities.filter((e) => e.type !== 'function');
|
|
420
377
|
const packageGroups = groupEntitiesByPackage(this.archJson, this.options.grouping);
|
|
@@ -441,23 +398,31 @@ export class ValidatedMermaidGenerator {
|
|
|
441
398
|
lines.push(` classDef ${name} ${style}`);
|
|
442
399
|
}
|
|
443
400
|
lines.push('');
|
|
444
|
-
lines.push(` namespace ${
|
|
401
|
+
lines.push(` namespace ${escapeId(group.name)} {`);
|
|
445
402
|
for (const entity of groupEntities) {
|
|
446
|
-
lines.push(...
|
|
403
|
+
lines.push(..._generateClassDefinition(entity, 2, this.options));
|
|
447
404
|
}
|
|
448
405
|
lines.push(' }');
|
|
406
|
+
const modulePrefixIndexGroup = this.buildModulePrefixIndex(knownEntityIds);
|
|
449
407
|
for (const relation of this.archJson.relations) {
|
|
450
|
-
const
|
|
408
|
+
const sourceInGroupDirect = groupEntityIdSet.has(relation.source) || groupEntityNames.has(relation.source);
|
|
409
|
+
const sourceViaPrefix = !sourceInGroupDirect && modulePrefixIndexGroup.has(relation.source);
|
|
410
|
+
const sourceInGroup = sourceInGroupDirect || sourceViaPrefix;
|
|
451
411
|
const targetKnown = knownEntityIds.has(relation.target) || knownEntityNames.has(relation.target);
|
|
452
|
-
|
|
453
|
-
|
|
412
|
+
const targetOk = targetKnown || sourceViaPrefix || !isNoisyTarget(relation.target);
|
|
413
|
+
if (sourceInGroup && targetOk) {
|
|
414
|
+
{
|
|
415
|
+
const _line = _generateRelationLine(relation, this.entityIdToName);
|
|
416
|
+
if (_line !== null)
|
|
417
|
+
lines.push(` ${_line}`);
|
|
418
|
+
}
|
|
454
419
|
}
|
|
455
420
|
}
|
|
456
421
|
lines.push('');
|
|
457
422
|
lines.push(' %% Node type annotations');
|
|
458
423
|
const seenAnnotations = new Set();
|
|
459
424
|
for (const entity of groupEntities) {
|
|
460
|
-
const normalizedId =
|
|
425
|
+
const normalizedId = escapeId(normalizeEntityName(entity.name));
|
|
461
426
|
if (seenAnnotations.has(normalizedId))
|
|
462
427
|
continue;
|
|
463
428
|
seenAnnotations.add(normalizedId);
|