@yalehwang/archguard 0.1.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/README.md +537 -0
- package/dist/cli/cache/arch-json-disk-cache.d.ts +12 -0
- package/dist/cli/cache/arch-json-disk-cache.d.ts.map +1 -0
- package/dist/cli/cache/arch-json-disk-cache.js +51 -0
- package/dist/cli/cache/arch-json-disk-cache.js.map +1 -0
- package/dist/cli/cache-manager.d.ts +28 -0
- package/dist/cli/cache-manager.d.ts.map +1 -0
- package/dist/cli/cache-manager.js +126 -0
- package/dist/cli/cache-manager.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts +7 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +212 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/cache.d.ts +3 -0
- package/dist/cli/commands/cache.d.ts.map +1 -0
- package/dist/cli/commands/cache.js +56 -0
- package/dist/cli/commands/cache.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +34 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/config-loader.d.ts +701 -0
- package/dist/cli/config-loader.d.ts.map +1 -0
- package/dist/cli/config-loader.js +259 -0
- package/dist/cli/config-loader.js.map +1 -0
- package/dist/cli/error-handler.d.ts +15 -0
- package/dist/cli/error-handler.d.ts.map +1 -0
- package/dist/cli/error-handler.js +127 -0
- package/dist/cli/error-handler.js.map +1 -0
- package/dist/cli/errors.d.ts +15 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +31 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +27 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/processors/diagram-processor.d.ts +61 -0
- package/dist/cli/processors/diagram-processor.d.ts.map +1 -0
- package/dist/cli/processors/diagram-processor.js +610 -0
- package/dist/cli/processors/diagram-processor.js.map +1 -0
- package/dist/cli/progress/parallel-progress.d.ts +16 -0
- package/dist/cli/progress/parallel-progress.d.ts.map +1 -0
- package/dist/cli/progress/parallel-progress.js +49 -0
- package/dist/cli/progress/parallel-progress.js.map +1 -0
- package/dist/cli/progress.d.ts +36 -0
- package/dist/cli/progress.d.ts.map +1 -0
- package/dist/cli/progress.js +127 -0
- package/dist/cli/progress.js.map +1 -0
- package/dist/cli/types.d.ts +37 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/utils/cpp-project-structure-detector.d.ts +10 -0
- package/dist/cli/utils/cpp-project-structure-detector.d.ts.map +1 -0
- package/dist/cli/utils/cpp-project-structure-detector.js +99 -0
- package/dist/cli/utils/cpp-project-structure-detector.js.map +1 -0
- package/dist/cli/utils/diagram-index-generator.d.ts +12 -0
- package/dist/cli/utils/diagram-index-generator.d.ts.map +1 -0
- package/dist/cli/utils/diagram-index-generator.js +94 -0
- package/dist/cli/utils/diagram-index-generator.js.map +1 -0
- package/dist/cli/utils/file-discovery-service.d.ts +10 -0
- package/dist/cli/utils/file-discovery-service.d.ts.map +1 -0
- package/dist/cli/utils/file-discovery-service.js +56 -0
- package/dist/cli/utils/file-discovery-service.js.map +1 -0
- package/dist/cli/utils/output-path-resolver.d.ts +34 -0
- package/dist/cli/utils/output-path-resolver.d.ts.map +1 -0
- package/dist/cli/utils/output-path-resolver.js +91 -0
- package/dist/cli/utils/output-path-resolver.js.map +1 -0
- package/dist/cli/utils/project-structure-detector.d.ts +6 -0
- package/dist/cli/utils/project-structure-detector.d.ts.map +1 -0
- package/dist/cli/utils/project-structure-detector.js +159 -0
- package/dist/cli/utils/project-structure-detector.js.map +1 -0
- package/dist/core/interfaces/dependency.d.ts +14 -0
- package/dist/core/interfaces/dependency.d.ts.map +1 -0
- package/dist/core/interfaces/dependency.js +2 -0
- package/dist/core/interfaces/dependency.js.map +1 -0
- package/dist/core/interfaces/errors.d.ts +29 -0
- package/dist/core/interfaces/errors.d.ts.map +1 -0
- package/dist/core/interfaces/errors.js +59 -0
- package/dist/core/interfaces/errors.js.map +1 -0
- package/dist/core/interfaces/index.d.ts +6 -0
- package/dist/core/interfaces/index.d.ts.map +1 -0
- package/dist/core/interfaces/index.js +2 -0
- package/dist/core/interfaces/index.js.map +1 -0
- package/dist/core/interfaces/language-plugin.d.ts +34 -0
- package/dist/core/interfaces/language-plugin.d.ts.map +1 -0
- package/dist/core/interfaces/language-plugin.js +2 -0
- package/dist/core/interfaces/language-plugin.js.map +1 -0
- package/dist/core/interfaces/parser.d.ts +15 -0
- package/dist/core/interfaces/parser.d.ts.map +1 -0
- package/dist/core/interfaces/parser.js +2 -0
- package/dist/core/interfaces/parser.js.map +1 -0
- package/dist/core/interfaces/validation.d.ts +24 -0
- package/dist/core/interfaces/validation.d.ts.map +1 -0
- package/dist/core/interfaces/validation.js +2 -0
- package/dist/core/interfaces/validation.js.map +1 -0
- package/dist/core/plugin-registry.d.ts +19 -0
- package/dist/core/plugin-registry.d.ts.map +1 -0
- package/dist/core/plugin-registry.js +137 -0
- package/dist/core/plugin-registry.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/mermaid/auto-repair.d.ts +23 -0
- package/dist/mermaid/auto-repair.d.ts.map +1 -0
- package/dist/mermaid/auto-repair.js +197 -0
- package/dist/mermaid/auto-repair.js.map +1 -0
- package/dist/mermaid/comment-generator.d.ts +10 -0
- package/dist/mermaid/comment-generator.d.ts.map +1 -0
- package/dist/mermaid/comment-generator.js +213 -0
- package/dist/mermaid/comment-generator.js.map +1 -0
- package/dist/mermaid/cpp-package-flowchart-generator.d.ts +5 -0
- package/dist/mermaid/cpp-package-flowchart-generator.d.ts.map +1 -0
- package/dist/mermaid/cpp-package-flowchart-generator.js +33 -0
- package/dist/mermaid/cpp-package-flowchart-generator.js.map +1 -0
- package/dist/mermaid/diagram-generator.d.ts +31 -0
- package/dist/mermaid/diagram-generator.d.ts.map +1 -0
- package/dist/mermaid/diagram-generator.js +194 -0
- package/dist/mermaid/diagram-generator.js.map +1 -0
- package/dist/mermaid/external-dependencies.d.ts +3 -0
- package/dist/mermaid/external-dependencies.d.ts.map +1 -0
- package/dist/mermaid/external-dependencies.js +38 -0
- package/dist/mermaid/external-dependencies.js.map +1 -0
- package/dist/mermaid/generator.d.ts +44 -0
- package/dist/mermaid/generator.d.ts.map +1 -0
- package/dist/mermaid/generator.js +511 -0
- package/dist/mermaid/generator.js.map +1 -0
- package/dist/mermaid/grouper.d.ts +15 -0
- package/dist/mermaid/grouper.d.ts.map +1 -0
- package/dist/mermaid/grouper.js +194 -0
- package/dist/mermaid/grouper.js.map +1 -0
- package/dist/mermaid/index.d.ts +14 -0
- package/dist/mermaid/index.d.ts.map +1 -0
- package/dist/mermaid/index.js +13 -0
- package/dist/mermaid/index.js.map +1 -0
- package/dist/mermaid/progress.d.ts +15 -0
- package/dist/mermaid/progress.d.ts.map +1 -0
- package/dist/mermaid/progress.js +8 -0
- package/dist/mermaid/progress.js.map +1 -0
- package/dist/mermaid/render-worker-pool.d.ts +29 -0
- package/dist/mermaid/render-worker-pool.d.ts.map +1 -0
- package/dist/mermaid/render-worker-pool.js +73 -0
- package/dist/mermaid/render-worker-pool.js.map +1 -0
- package/dist/mermaid/render-worker.d.ts +2 -0
- package/dist/mermaid/render-worker.d.ts.map +1 -0
- package/dist/mermaid/render-worker.js +22 -0
- package/dist/mermaid/render-worker.js.map +1 -0
- package/dist/mermaid/renderer.d.ts +17 -0
- package/dist/mermaid/renderer.d.ts.map +1 -0
- package/dist/mermaid/renderer.js +204 -0
- package/dist/mermaid/renderer.js.map +1 -0
- package/dist/mermaid/ts-module-graph-renderer.d.ts +3 -0
- package/dist/mermaid/ts-module-graph-renderer.d.ts.map +1 -0
- package/dist/mermaid/ts-module-graph-renderer.js +180 -0
- package/dist/mermaid/ts-module-graph-renderer.js.map +1 -0
- package/dist/mermaid/types.d.ts +122 -0
- package/dist/mermaid/types.d.ts.map +1 -0
- package/dist/mermaid/types.js +2 -0
- package/dist/mermaid/types.js.map +1 -0
- package/dist/mermaid/validation-pipeline.d.ts +29 -0
- package/dist/mermaid/validation-pipeline.d.ts.map +1 -0
- package/dist/mermaid/validation-pipeline.js +163 -0
- package/dist/mermaid/validation-pipeline.js.map +1 -0
- package/dist/mermaid/validator-parse.d.ts +11 -0
- package/dist/mermaid/validator-parse.d.ts.map +1 -0
- package/dist/mermaid/validator-parse.js +130 -0
- package/dist/mermaid/validator-parse.js.map +1 -0
- package/dist/mermaid/validator-quality.d.ts +17 -0
- package/dist/mermaid/validator-quality.d.ts.map +1 -0
- package/dist/mermaid/validator-quality.js +187 -0
- package/dist/mermaid/validator-quality.js.map +1 -0
- package/dist/mermaid/validator-render.d.ts +12 -0
- package/dist/mermaid/validator-render.d.ts.map +1 -0
- package/dist/mermaid/validator-render.js +98 -0
- package/dist/mermaid/validator-render.js.map +1 -0
- package/dist/mermaid/validator-structural.d.ts +11 -0
- package/dist/mermaid/validator-structural.d.ts.map +1 -0
- package/dist/mermaid/validator-structural.js +116 -0
- package/dist/mermaid/validator-structural.js.map +1 -0
- package/dist/parser/archjson-aggregator.d.ts +11 -0
- package/dist/parser/archjson-aggregator.d.ts.map +1 -0
- package/dist/parser/archjson-aggregator.js +113 -0
- package/dist/parser/archjson-aggregator.js.map +1 -0
- package/dist/parser/base-extractor.d.ts +6 -0
- package/dist/parser/base-extractor.d.ts.map +1 -0
- package/dist/parser/base-extractor.js +13 -0
- package/dist/parser/base-extractor.js.map +1 -0
- package/dist/parser/class-extractor.d.ts +17 -0
- package/dist/parser/class-extractor.d.ts.map +1 -0
- package/dist/parser/class-extractor.js +144 -0
- package/dist/parser/class-extractor.js.map +1 -0
- package/dist/parser/enum-extractor.d.ts +9 -0
- package/dist/parser/enum-extractor.d.ts.map +1 -0
- package/dist/parser/enum-extractor.js +45 -0
- package/dist/parser/enum-extractor.js.map +1 -0
- package/dist/parser/errors.d.ts +7 -0
- package/dist/parser/errors.d.ts.map +1 -0
- package/dist/parser/errors.js +14 -0
- package/dist/parser/errors.js.map +1 -0
- package/dist/parser/function-extractor.d.ts +7 -0
- package/dist/parser/function-extractor.d.ts.map +1 -0
- package/dist/parser/function-extractor.js +59 -0
- package/dist/parser/function-extractor.js.map +1 -0
- package/dist/parser/index.d.ts +10 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +9 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/interface-extractor.d.ts +14 -0
- package/dist/parser/interface-extractor.d.ts.map +1 -0
- package/dist/parser/interface-extractor.js +90 -0
- package/dist/parser/interface-extractor.js.map +1 -0
- package/dist/parser/metrics-calculator.d.ts +9 -0
- package/dist/parser/metrics-calculator.d.ts.map +1 -0
- package/dist/parser/metrics-calculator.js +84 -0
- package/dist/parser/metrics-calculator.js.map +1 -0
- package/dist/parser/parallel-parser.d.ts +38 -0
- package/dist/parser/parallel-parser.d.ts.map +1 -0
- package/dist/parser/parallel-parser.js +170 -0
- package/dist/parser/parallel-parser.js.map +1 -0
- package/dist/parser/parse-cache.d.ts +8 -0
- package/dist/parser/parse-cache.d.ts.map +1 -0
- package/dist/parser/parse-cache.js +25 -0
- package/dist/parser/parse-cache.js.map +1 -0
- package/dist/parser/relation-extractor.d.ts +14 -0
- package/dist/parser/relation-extractor.d.ts.map +1 -0
- package/dist/parser/relation-extractor.js +203 -0
- package/dist/parser/relation-extractor.js.map +1 -0
- package/dist/parser/typescript-parser.d.ts +19 -0
- package/dist/parser/typescript-parser.d.ts.map +1 -0
- package/dist/parser/typescript-parser.js +182 -0
- package/dist/parser/typescript-parser.js.map +1 -0
- package/dist/plugins/cpp/archjson-mapper.d.ts +13 -0
- package/dist/plugins/cpp/archjson-mapper.d.ts.map +1 -0
- package/dist/plugins/cpp/archjson-mapper.js +180 -0
- package/dist/plugins/cpp/archjson-mapper.js.map +1 -0
- package/dist/plugins/cpp/builders/class-builder.d.ts +15 -0
- package/dist/plugins/cpp/builders/class-builder.d.ts.map +1 -0
- package/dist/plugins/cpp/builders/class-builder.js +102 -0
- package/dist/plugins/cpp/builders/class-builder.js.map +1 -0
- package/dist/plugins/cpp/builders/header-merger.d.ts +8 -0
- package/dist/plugins/cpp/builders/header-merger.d.ts.map +1 -0
- package/dist/plugins/cpp/builders/header-merger.js +65 -0
- package/dist/plugins/cpp/builders/header-merger.js.map +1 -0
- package/dist/plugins/cpp/cpp-type-extractor.d.ts +13 -0
- package/dist/plugins/cpp/cpp-type-extractor.d.ts.map +1 -0
- package/dist/plugins/cpp/cpp-type-extractor.js +153 -0
- package/dist/plugins/cpp/cpp-type-extractor.js.map +1 -0
- package/dist/plugins/cpp/dependency-extractor.d.ts +5 -0
- package/dist/plugins/cpp/dependency-extractor.d.ts.map +1 -0
- package/dist/plugins/cpp/dependency-extractor.js +28 -0
- package/dist/plugins/cpp/dependency-extractor.js.map +1 -0
- package/dist/plugins/cpp/index.d.ts +21 -0
- package/dist/plugins/cpp/index.d.ts.map +1 -0
- package/dist/plugins/cpp/index.js +113 -0
- package/dist/plugins/cpp/index.js.map +1 -0
- package/dist/plugins/cpp/tree-sitter-bridge.d.ts +20 -0
- package/dist/plugins/cpp/tree-sitter-bridge.d.ts.map +1 -0
- package/dist/plugins/cpp/tree-sitter-bridge.js +258 -0
- package/dist/plugins/cpp/tree-sitter-bridge.js.map +1 -0
- package/dist/plugins/cpp/types.d.ts +75 -0
- package/dist/plugins/cpp/types.d.ts.map +1 -0
- package/dist/plugins/cpp/types.js +2 -0
- package/dist/plugins/cpp/types.js.map +1 -0
- package/dist/plugins/golang/archjson-mapper.d.ts +10 -0
- package/dist/plugins/golang/archjson-mapper.d.ts.map +1 -0
- package/dist/plugins/golang/archjson-mapper.js +121 -0
- package/dist/plugins/golang/archjson-mapper.js.map +1 -0
- package/dist/plugins/golang/atlas/behavior-analyzer.d.ts +16 -0
- package/dist/plugins/golang/atlas/behavior-analyzer.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/behavior-analyzer.js +32 -0
- package/dist/plugins/golang/atlas/behavior-analyzer.js.map +1 -0
- package/dist/plugins/golang/atlas/builders/capability-graph-builder.d.ts +12 -0
- package/dist/plugins/golang/atlas/builders/capability-graph-builder.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/builders/capability-graph-builder.js +219 -0
- package/dist/plugins/golang/atlas/builders/capability-graph-builder.js.map +1 -0
- package/dist/plugins/golang/atlas/builders/flow-graph-builder.d.ts +18 -0
- package/dist/plugins/golang/atlas/builders/flow-graph-builder.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/builders/flow-graph-builder.js +300 -0
- package/dist/plugins/golang/atlas/builders/flow-graph-builder.js.map +1 -0
- package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.d.ts +15 -0
- package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js +254 -0
- package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js.map +1 -0
- package/dist/plugins/golang/atlas/builders/i-atlas-builder.d.ts +5 -0
- package/dist/plugins/golang/atlas/builders/i-atlas-builder.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/builders/i-atlas-builder.js +2 -0
- package/dist/plugins/golang/atlas/builders/i-atlas-builder.js.map +1 -0
- package/dist/plugins/golang/atlas/builders/index.d.ts +6 -0
- package/dist/plugins/golang/atlas/builders/index.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/builders/index.js +5 -0
- package/dist/plugins/golang/atlas/builders/index.js.map +1 -0
- package/dist/plugins/golang/atlas/builders/package-graph-builder.d.ts +14 -0
- package/dist/plugins/golang/atlas/builders/package-graph-builder.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/builders/package-graph-builder.js +115 -0
- package/dist/plugins/golang/atlas/builders/package-graph-builder.js.map +1 -0
- package/dist/plugins/golang/atlas/framework-detector.d.ts +11 -0
- package/dist/plugins/golang/atlas/framework-detector.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/framework-detector.js +82 -0
- package/dist/plugins/golang/atlas/framework-detector.js.map +1 -0
- package/dist/plugins/golang/atlas/go-mod-resolver.d.ts +21 -0
- package/dist/plugins/golang/atlas/go-mod-resolver.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/go-mod-resolver.js +90 -0
- package/dist/plugins/golang/atlas/go-mod-resolver.js.map +1 -0
- package/dist/plugins/golang/atlas/index.d.ts +28 -0
- package/dist/plugins/golang/atlas/index.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/index.js +166 -0
- package/dist/plugins/golang/atlas/index.js.map +1 -0
- package/dist/plugins/golang/atlas/renderers/atlas-renderer.d.ts +7 -0
- package/dist/plugins/golang/atlas/renderers/atlas-renderer.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/renderers/atlas-renderer.js +62 -0
- package/dist/plugins/golang/atlas/renderers/atlas-renderer.js.map +1 -0
- package/dist/plugins/golang/atlas/renderers/mermaid-templates.d.ts +24 -0
- package/dist/plugins/golang/atlas/renderers/mermaid-templates.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/renderers/mermaid-templates.js +688 -0
- package/dist/plugins/golang/atlas/renderers/mermaid-templates.js.map +1 -0
- package/dist/plugins/golang/atlas/types.d.ts +63 -0
- package/dist/plugins/golang/atlas/types.d.ts.map +1 -0
- package/dist/plugins/golang/atlas/types.js +2 -0
- package/dist/plugins/golang/atlas/types.js.map +1 -0
- package/dist/plugins/golang/dependency-extractor.d.ts +7 -0
- package/dist/plugins/golang/dependency-extractor.d.ts.map +1 -0
- package/dist/plugins/golang/dependency-extractor.js +100 -0
- package/dist/plugins/golang/dependency-extractor.js.map +1 -0
- package/dist/plugins/golang/gopls-client.d.ts +38 -0
- package/dist/plugins/golang/gopls-client.d.ts.map +1 -0
- package/dist/plugins/golang/gopls-client.js +354 -0
- package/dist/plugins/golang/gopls-client.js.map +1 -0
- package/dist/plugins/golang/index.d.ts +29 -0
- package/dist/plugins/golang/index.d.ts.map +1 -0
- package/dist/plugins/golang/index.js +242 -0
- package/dist/plugins/golang/index.js.map +1 -0
- package/dist/plugins/golang/interface-matcher.d.ts +14 -0
- package/dist/plugins/golang/interface-matcher.d.ts.map +1 -0
- package/dist/plugins/golang/interface-matcher.js +235 -0
- package/dist/plugins/golang/interface-matcher.js.map +1 -0
- package/dist/plugins/golang/tree-sitter-bridge.d.ts +32 -0
- package/dist/plugins/golang/tree-sitter-bridge.d.ts.map +1 -0
- package/dist/plugins/golang/tree-sitter-bridge.js +579 -0
- package/dist/plugins/golang/tree-sitter-bridge.js.map +1 -0
- package/dist/plugins/golang/types.d.ts +119 -0
- package/dist/plugins/golang/types.d.ts.map +1 -0
- package/dist/plugins/golang/types.js +2 -0
- package/dist/plugins/golang/types.js.map +1 -0
- package/dist/plugins/java/archjson-mapper.d.ts +15 -0
- package/dist/plugins/java/archjson-mapper.d.ts.map +1 -0
- package/dist/plugins/java/archjson-mapper.js +273 -0
- package/dist/plugins/java/archjson-mapper.js.map +1 -0
- package/dist/plugins/java/dependency-extractor.d.ts +9 -0
- package/dist/plugins/java/dependency-extractor.d.ts.map +1 -0
- package/dist/plugins/java/dependency-extractor.js +99 -0
- package/dist/plugins/java/dependency-extractor.js.map +1 -0
- package/dist/plugins/java/index.d.ts +21 -0
- package/dist/plugins/java/index.d.ts.map +1 -0
- package/dist/plugins/java/index.js +167 -0
- package/dist/plugins/java/index.js.map +1 -0
- package/dist/plugins/java/tree-sitter-bridge.d.ts +19 -0
- package/dist/plugins/java/tree-sitter-bridge.d.ts.map +1 -0
- package/dist/plugins/java/tree-sitter-bridge.js +334 -0
- package/dist/plugins/java/tree-sitter-bridge.js.map +1 -0
- package/dist/plugins/java/types.d.ts +81 -0
- package/dist/plugins/java/types.d.ts.map +1 -0
- package/dist/plugins/java/types.js +2 -0
- package/dist/plugins/java/types.js.map +1 -0
- package/dist/plugins/python/archjson-mapper.d.ts +19 -0
- package/dist/plugins/python/archjson-mapper.d.ts.map +1 -0
- package/dist/plugins/python/archjson-mapper.js +170 -0
- package/dist/plugins/python/archjson-mapper.js.map +1 -0
- package/dist/plugins/python/dependency-extractor.d.ts +11 -0
- package/dist/plugins/python/dependency-extractor.d.ts.map +1 -0
- package/dist/plugins/python/dependency-extractor.js +186 -0
- package/dist/plugins/python/dependency-extractor.js.map +1 -0
- package/dist/plugins/python/index.d.ts +21 -0
- package/dist/plugins/python/index.d.ts.map +1 -0
- package/dist/plugins/python/index.js +142 -0
- package/dist/plugins/python/index.js.map +1 -0
- package/dist/plugins/python/tree-sitter-bridge.d.ts +16 -0
- package/dist/plugins/python/tree-sitter-bridge.d.ts.map +1 -0
- package/dist/plugins/python/tree-sitter-bridge.js +352 -0
- package/dist/plugins/python/tree-sitter-bridge.js.map +1 -0
- package/dist/plugins/python/types.d.ts +86 -0
- package/dist/plugins/python/types.d.ts.map +1 -0
- package/dist/plugins/python/types.js +2 -0
- package/dist/plugins/python/types.js.map +1 -0
- package/dist/plugins/shared/mapper-utils.d.ts +4 -0
- package/dist/plugins/shared/mapper-utils.d.ts.map +1 -0
- package/dist/plugins/shared/mapper-utils.js +12 -0
- package/dist/plugins/shared/mapper-utils.js.map +1 -0
- package/dist/plugins/typescript/builders/module-graph-builder.d.ts +8 -0
- package/dist/plugins/typescript/builders/module-graph-builder.d.ts.map +1 -0
- package/dist/plugins/typescript/builders/module-graph-builder.js +175 -0
- package/dist/plugins/typescript/builders/module-graph-builder.js.map +1 -0
- package/dist/plugins/typescript/index.d.ts +26 -0
- package/dist/plugins/typescript/index.d.ts.map +1 -0
- package/dist/plugins/typescript/index.js +232 -0
- package/dist/plugins/typescript/index.js.map +1 -0
- package/dist/plugins/typescript/typescript-analyzer.d.ts +8 -0
- package/dist/plugins/typescript/typescript-analyzer.d.ts.map +1 -0
- package/dist/plugins/typescript/typescript-analyzer.js +13 -0
- package/dist/plugins/typescript/typescript-analyzer.js.map +1 -0
- package/dist/scripts/migrate-to-mermaid.js +214 -0
- package/dist/types/config.d.ts +140 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/extensions.d.ts +224 -0
- package/dist/types/extensions.d.ts.map +1 -0
- package/dist/types/extensions.js +3 -0
- package/dist/types/extensions.js.map +1 -0
- package/dist/types/index.d.ts +89 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/cli-detector.d.ts +8 -0
- package/dist/utils/cli-detector.d.ts.map +1 -0
- package/dist/utils/cli-detector.js +38 -0
- package/dist/utils/cli-detector.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/tsconfig-finder.d.ts +7 -0
- package/dist/utils/tsconfig-finder.d.ts.map +1 -0
- package/dist/utils/tsconfig-finder.js +31 -0
- package/dist/utils/tsconfig-finder.js.map +1 -0
- package/package.json +95 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
const FRAMEWORK_PATTERNS = {
|
|
2
|
+
'net/http': [
|
|
3
|
+
{ method: 'HandleFunc', protocol: 'http' },
|
|
4
|
+
{ method: 'Handle', protocol: 'http' },
|
|
5
|
+
],
|
|
6
|
+
'gin': [
|
|
7
|
+
{ method: 'GET', protocol: 'http', httpMethod: 'GET' },
|
|
8
|
+
{ method: 'POST', protocol: 'http', httpMethod: 'POST' },
|
|
9
|
+
{ method: 'PUT', protocol: 'http', httpMethod: 'PUT' },
|
|
10
|
+
{ method: 'DELETE', protocol: 'http', httpMethod: 'DELETE' },
|
|
11
|
+
{ method: 'PATCH', protocol: 'http', httpMethod: 'PATCH' },
|
|
12
|
+
{ method: 'Any', protocol: 'http', httpMethod: 'ANY' },
|
|
13
|
+
],
|
|
14
|
+
'gorilla/mux': [
|
|
15
|
+
{ method: 'Handle', receiverContains: 'mux.Router', protocol: 'http' },
|
|
16
|
+
{ method: 'HandleFunc', receiverContains: 'mux.Router', protocol: 'http' },
|
|
17
|
+
],
|
|
18
|
+
'echo': [
|
|
19
|
+
{ method: 'GET', protocol: 'http', httpMethod: 'GET' },
|
|
20
|
+
{ method: 'POST', protocol: 'http', httpMethod: 'POST' },
|
|
21
|
+
{ method: 'PUT', protocol: 'http', httpMethod: 'PUT' },
|
|
22
|
+
{ method: 'DELETE', protocol: 'http', httpMethod: 'DELETE' },
|
|
23
|
+
{ method: 'PATCH', protocol: 'http', httpMethod: 'PATCH' },
|
|
24
|
+
],
|
|
25
|
+
'chi': [
|
|
26
|
+
{ method: 'Get', protocol: 'http', httpMethod: 'GET' },
|
|
27
|
+
{ method: 'Post', protocol: 'http', httpMethod: 'POST' },
|
|
28
|
+
{ method: 'Put', protocol: 'http', httpMethod: 'PUT' },
|
|
29
|
+
{ method: 'Delete', protocol: 'http', httpMethod: 'DELETE' },
|
|
30
|
+
{ method: 'Patch', protocol: 'http', httpMethod: 'PATCH' },
|
|
31
|
+
],
|
|
32
|
+
'cobra': [
|
|
33
|
+
{ method: 'AddCommand', protocol: 'cli' },
|
|
34
|
+
],
|
|
35
|
+
'grpc': [
|
|
36
|
+
{ methodSuffix: 'Server', protocol: 'grpc' },
|
|
37
|
+
],
|
|
38
|
+
'kafka-go': [
|
|
39
|
+
{ method: 'ConsumePartition', protocol: 'message' },
|
|
40
|
+
],
|
|
41
|
+
'sarama': [
|
|
42
|
+
{ method: 'ConsumePartition', protocol: 'message' },
|
|
43
|
+
],
|
|
44
|
+
'nats': [
|
|
45
|
+
{ method: 'Subscribe', protocol: 'message' },
|
|
46
|
+
{ method: 'QueueSubscribe', protocol: 'message' },
|
|
47
|
+
],
|
|
48
|
+
'cron': [
|
|
49
|
+
{ method: 'AddFunc', protocol: 'scheduler' },
|
|
50
|
+
{ method: 'AddJob', protocol: 'scheduler' },
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
function matchesPattern(call, p) {
|
|
54
|
+
if (p.method && call.functionName !== p.method)
|
|
55
|
+
return false;
|
|
56
|
+
if (p.methodSuffix && !call.functionName.endsWith(p.methodSuffix))
|
|
57
|
+
return false;
|
|
58
|
+
if (p.receiverContains && call.receiverType) {
|
|
59
|
+
if (!call.receiverType.includes(p.receiverContains))
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
export class FlowGraphBuilder {
|
|
65
|
+
static STDLIB_PREFIXES = new Set([
|
|
66
|
+
'fmt', 'json', 'strconv', 'time', 'errors', 'strings', 'sort', 'sync',
|
|
67
|
+
'io', 'bytes', 'math', 'os', 'log', 'context', 'net', 'http', 'reflect',
|
|
68
|
+
'unicode', 'filepath', 'path', 'regexp', 'bufio', 'runtime',
|
|
69
|
+
]);
|
|
70
|
+
static BUILTINS = new Set([
|
|
71
|
+
'make', 'len', 'append', 'cap', 'new', 'delete', 'copy', 'close',
|
|
72
|
+
'panic', 'recover', 'print', 'println', 'int', 'int8', 'int16', 'int32',
|
|
73
|
+
'int64', 'uint', 'uint8', 'uint16', 'uint32', 'uint64', 'string', 'bool',
|
|
74
|
+
'float32', 'float64', 'byte', 'rune', 'error',
|
|
75
|
+
]);
|
|
76
|
+
static buildInterfaceNameSet(rawData) {
|
|
77
|
+
const names = new Set();
|
|
78
|
+
for (const pkg of rawData.packages) {
|
|
79
|
+
for (const iface of pkg.interfaces || []) {
|
|
80
|
+
names.add(iface.name);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return names;
|
|
84
|
+
}
|
|
85
|
+
static buildContextTypes(fields) {
|
|
86
|
+
const map = new Map();
|
|
87
|
+
for (const field of fields) {
|
|
88
|
+
if (field.name) {
|
|
89
|
+
map.set(field.name, field.type);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return map;
|
|
93
|
+
}
|
|
94
|
+
static classifyCallType(call, contextTypes, interfaceNames) {
|
|
95
|
+
if (!call.packageName)
|
|
96
|
+
return 'direct';
|
|
97
|
+
const segments = call.packageName.split('.');
|
|
98
|
+
const receiverVar = segments[segments.length - 1];
|
|
99
|
+
const declaredType = contextTypes.get(receiverVar);
|
|
100
|
+
if (!declaredType)
|
|
101
|
+
return 'direct';
|
|
102
|
+
const stripped = declaredType.startsWith('*') ? declaredType.slice(1) : declaredType;
|
|
103
|
+
const shortName = stripped.includes('.') ? stripped.split('.').at(-1) : stripped;
|
|
104
|
+
if (interfaceNames.has(stripped) || interfaceNames.has(shortName)) {
|
|
105
|
+
return 'interface';
|
|
106
|
+
}
|
|
107
|
+
return 'direct';
|
|
108
|
+
}
|
|
109
|
+
static isNoisyCall(call) {
|
|
110
|
+
const to = call.to;
|
|
111
|
+
if (FlowGraphBuilder.BUILTINS.has(to))
|
|
112
|
+
return true;
|
|
113
|
+
const dotIdx = to.indexOf('.');
|
|
114
|
+
if (dotIdx > 0) {
|
|
115
|
+
const pkg = to.slice(0, dotIdx);
|
|
116
|
+
if (FlowGraphBuilder.STDLIB_PREFIXES.has(pkg))
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
if (to.startsWith('w.'))
|
|
120
|
+
return true;
|
|
121
|
+
if (/^r\.(URL|Context|Body|Header|PathValue|Method|Form)/.test(to))
|
|
122
|
+
return true;
|
|
123
|
+
if (to.startsWith('ctx.'))
|
|
124
|
+
return true;
|
|
125
|
+
if (to.startsWith('err.'))
|
|
126
|
+
return true;
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
build(rawData, options = { detectedFrameworks: new Set(['net/http']) }) {
|
|
130
|
+
const entryPoints = this.detectEntryPoints(rawData, options);
|
|
131
|
+
const callChains = this.buildCallChains(rawData, entryPoints);
|
|
132
|
+
let graph = { entryPoints, callChains };
|
|
133
|
+
if (options.protocols && options.protocols.length > 0) {
|
|
134
|
+
const allowed = new Set(options.protocols);
|
|
135
|
+
graph.entryPoints = graph.entryPoints.filter(e => allowed.has(e.protocol));
|
|
136
|
+
const kept = new Set(graph.entryPoints.map(e => e.id));
|
|
137
|
+
graph.callChains = graph.callChains.filter(c => kept.has(c.entryPoint));
|
|
138
|
+
}
|
|
139
|
+
return Promise.resolve(graph);
|
|
140
|
+
}
|
|
141
|
+
detectEntryPoints(rawData, options) {
|
|
142
|
+
const entryPoints = [];
|
|
143
|
+
const { detectedFrameworks, customFrameworks = [], entryPoints: manualEntryPoints = [] } = options;
|
|
144
|
+
const activePatterns = [];
|
|
145
|
+
for (const key of detectedFrameworks) {
|
|
146
|
+
const patterns = FRAMEWORK_PATTERNS[key];
|
|
147
|
+
if (patterns) {
|
|
148
|
+
for (const p of patterns) {
|
|
149
|
+
activePatterns.push({ frameworkKey: key, pattern: p });
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
for (const cf of customFrameworks) {
|
|
154
|
+
for (const cp of cf.patterns) {
|
|
155
|
+
const pattern = {
|
|
156
|
+
method: cp.method,
|
|
157
|
+
methodSuffix: cp.methodSuffix,
|
|
158
|
+
receiverContains: cp.receiverContains,
|
|
159
|
+
protocol: cf.protocol,
|
|
160
|
+
};
|
|
161
|
+
activePatterns.push({ frameworkKey: cf.name, pattern });
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
for (const pkg of rawData.packages) {
|
|
165
|
+
for (const func of pkg.functions) {
|
|
166
|
+
if (!func.body)
|
|
167
|
+
continue;
|
|
168
|
+
for (const call of func.body.calls) {
|
|
169
|
+
const entry = this.matchCallPattern(call, pkg, activePatterns);
|
|
170
|
+
if (entry)
|
|
171
|
+
entryPoints.push(entry);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
for (const struct of pkg.structs || []) {
|
|
175
|
+
for (const method of struct.methods || []) {
|
|
176
|
+
if (!method.body)
|
|
177
|
+
continue;
|
|
178
|
+
for (const call of method.body.calls) {
|
|
179
|
+
const entry = this.matchCallPattern(call, pkg, activePatterns);
|
|
180
|
+
if (entry)
|
|
181
|
+
entryPoints.push(entry);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (pkg.name === 'main' && detectedFrameworks.has('main')) {
|
|
186
|
+
for (const func of pkg.functions) {
|
|
187
|
+
if (func.name === 'main') {
|
|
188
|
+
entryPoints.push({
|
|
189
|
+
id: `entry-${pkg.fullName}-main`,
|
|
190
|
+
protocol: 'cli',
|
|
191
|
+
framework: 'main',
|
|
192
|
+
path: '',
|
|
193
|
+
handler: 'main.main',
|
|
194
|
+
middleware: [],
|
|
195
|
+
package: pkg.fullName,
|
|
196
|
+
location: { file: func.location.file, line: func.location.startLine },
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
for (const manual of manualEntryPoints) {
|
|
203
|
+
entryPoints.push({
|
|
204
|
+
id: `entry-manual-${manual.function.replace(/[^a-zA-Z0-9]/g, '_')}`,
|
|
205
|
+
protocol: manual.protocol,
|
|
206
|
+
framework: 'manual',
|
|
207
|
+
path: '',
|
|
208
|
+
handler: manual.function,
|
|
209
|
+
middleware: [],
|
|
210
|
+
location: { file: 'manual', line: 0 },
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
return entryPoints;
|
|
214
|
+
}
|
|
215
|
+
matchCallPattern(call, pkg, activePatterns) {
|
|
216
|
+
const path = call.args?.[0] ?? '';
|
|
217
|
+
const rawHandler = call.args?.[1] ?? '';
|
|
218
|
+
const handler = rawHandler.startsWith('func(') ? '' : rawHandler;
|
|
219
|
+
for (const { frameworkKey, pattern } of activePatterns) {
|
|
220
|
+
if (matchesPattern(call, pattern)) {
|
|
221
|
+
return {
|
|
222
|
+
id: `entry-${pkg.fullName}-${call.location.startLine}`,
|
|
223
|
+
protocol: pattern.protocol,
|
|
224
|
+
method: pattern.httpMethod,
|
|
225
|
+
framework: frameworkKey,
|
|
226
|
+
path,
|
|
227
|
+
handler,
|
|
228
|
+
middleware: [],
|
|
229
|
+
package: pkg.fullName,
|
|
230
|
+
location: { file: call.location.file, line: call.location.startLine },
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
buildCallChains(rawData, entryPoints) {
|
|
237
|
+
const interfaceNames = FlowGraphBuilder.buildInterfaceNameSet(rawData);
|
|
238
|
+
const chains = [];
|
|
239
|
+
for (const entry of entryPoints) {
|
|
240
|
+
const calls = this.traceCallsFromEntry(rawData, entry, interfaceNames);
|
|
241
|
+
chains.push({
|
|
242
|
+
id: `chain-${entry.id}`,
|
|
243
|
+
entryPoint: entry.id,
|
|
244
|
+
calls,
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
return chains;
|
|
248
|
+
}
|
|
249
|
+
traceCallsFromEntry(rawData, entry, interfaceNames) {
|
|
250
|
+
const calls = [];
|
|
251
|
+
if (!entry.handler)
|
|
252
|
+
return calls;
|
|
253
|
+
const handlerFnName = entry.handler.split('.').at(-1) ?? entry.handler;
|
|
254
|
+
for (const pkg of rawData.packages) {
|
|
255
|
+
for (const func of pkg.functions) {
|
|
256
|
+
if (func.name !== handlerFnName || !func.body)
|
|
257
|
+
continue;
|
|
258
|
+
const contextTypes = FlowGraphBuilder.buildContextTypes(func.parameters);
|
|
259
|
+
for (const call of func.body.calls) {
|
|
260
|
+
const callType = FlowGraphBuilder.classifyCallType(call, contextTypes, interfaceNames);
|
|
261
|
+
calls.push({
|
|
262
|
+
from: entry.handler,
|
|
263
|
+
to: call.packageName ? `${call.packageName}.${call.functionName}` : call.functionName,
|
|
264
|
+
type: callType,
|
|
265
|
+
confidence: callType === 'interface' ? 0.8 : 0.7,
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
for (const struct of pkg.structs || []) {
|
|
270
|
+
const method = (struct.methods || []).find((m) => m.name === handlerFnName);
|
|
271
|
+
if (!method || !method.body)
|
|
272
|
+
continue;
|
|
273
|
+
const contextTypes = new Map([
|
|
274
|
+
...FlowGraphBuilder.buildContextTypes(struct.fields),
|
|
275
|
+
...FlowGraphBuilder.buildContextTypes(method.parameters),
|
|
276
|
+
]);
|
|
277
|
+
for (const call of method.body.calls) {
|
|
278
|
+
const callType = FlowGraphBuilder.classifyCallType(call, contextTypes, interfaceNames);
|
|
279
|
+
calls.push({
|
|
280
|
+
from: entry.handler,
|
|
281
|
+
to: call.packageName ? `${call.packageName}.${call.functionName}` : call.functionName,
|
|
282
|
+
type: callType,
|
|
283
|
+
confidence: callType === 'interface' ? 0.8 : 0.7,
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
const seen = new Set();
|
|
289
|
+
return calls
|
|
290
|
+
.filter((call) => {
|
|
291
|
+
const key = `${call.from}\x00${call.to}`;
|
|
292
|
+
if (seen.has(key))
|
|
293
|
+
return false;
|
|
294
|
+
seen.add(key);
|
|
295
|
+
return true;
|
|
296
|
+
})
|
|
297
|
+
.filter((call) => !FlowGraphBuilder.isNoisyCall(call));
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=flow-graph-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-graph-builder.js","sourceRoot":"","sources":["../../../../../src/plugins/golang/atlas/builders/flow-graph-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { GoRawData } from '../../types.js';
|
|
2
|
+
import type { GoroutineTopology } from '../types.js';
|
|
3
|
+
import type { IAtlasBuilder } from './i-atlas-builder.js';
|
|
4
|
+
export declare class GoroutineTopologyBuilder implements IAtlasBuilder<GoroutineTopology> {
|
|
5
|
+
build(rawData: GoRawData): Promise<GoroutineTopology>;
|
|
6
|
+
private extractGoroutineNodes;
|
|
7
|
+
private extractSpawnedNodes;
|
|
8
|
+
private buildSpawnRelations;
|
|
9
|
+
private extractChannelInfo;
|
|
10
|
+
private buildChannelEdges;
|
|
11
|
+
private extractBodyChannelEdges;
|
|
12
|
+
private buildLifecycle;
|
|
13
|
+
private classifyPattern;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=goroutine-topology-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goroutine-topology-builder.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/golang/atlas/builders/goroutine-topology-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAsD,MAAM,gBAAgB,CAAC;AACpG,OAAO,KAAK,EACV,iBAAiB,EAOlB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAQ1D,qBAAa,wBAAyB,YAAW,aAAa,CAAC,iBAAiB,CAAC;IAC/E,KAAK,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4BrD,OAAO,CAAC,qBAAqB;IAuC7B,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,mBAAmB;IAsC3B,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,uBAAuB;IAyC/B,OAAO,CAAC,cAAc;IA6HtB,OAAO,CAAC,eAAe;CAQxB"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
export class GoroutineTopologyBuilder {
|
|
2
|
+
build(rawData) {
|
|
3
|
+
const nodes = this.extractGoroutineNodes(rawData);
|
|
4
|
+
const edges = this.buildSpawnRelations(rawData);
|
|
5
|
+
const channels = this.extractChannelInfo(rawData);
|
|
6
|
+
const channelEdges = this.buildChannelEdges(rawData);
|
|
7
|
+
for (const node of nodes) {
|
|
8
|
+
node.pattern = this.classifyPattern(node, edges, channels);
|
|
9
|
+
}
|
|
10
|
+
const lifecycle = this.buildLifecycle(rawData);
|
|
11
|
+
return Promise.resolve({
|
|
12
|
+
nodes,
|
|
13
|
+
edges,
|
|
14
|
+
channels,
|
|
15
|
+
channelEdges,
|
|
16
|
+
lifecycle: lifecycle.length > 0 ? lifecycle : undefined,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
extractGoroutineNodes(rawData) {
|
|
20
|
+
const nodes = [];
|
|
21
|
+
for (const pkg of rawData.packages) {
|
|
22
|
+
for (const func of pkg.functions) {
|
|
23
|
+
if (func.name === 'main' && pkg.name === 'main') {
|
|
24
|
+
nodes.push({
|
|
25
|
+
id: `${pkg.fullName}.main`,
|
|
26
|
+
name: `${pkg.fullName}.main`,
|
|
27
|
+
type: 'main',
|
|
28
|
+
package: pkg.fullName,
|
|
29
|
+
location: { file: func.location.file, line: func.location.startLine },
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (func.body) {
|
|
33
|
+
this.extractSpawnedNodes(func.body.goSpawns, pkg, func.name, nodes);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
for (const struct of pkg.structs) {
|
|
37
|
+
for (const method of struct.methods) {
|
|
38
|
+
if (method.body) {
|
|
39
|
+
this.extractSpawnedNodes(method.body.goSpawns, pkg, `${struct.name}.${method.name}`, nodes);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return nodes;
|
|
45
|
+
}
|
|
46
|
+
extractSpawnedNodes(goSpawns, pkg, parentName, nodes) {
|
|
47
|
+
for (const spawn of goSpawns) {
|
|
48
|
+
const isAnonymous = spawn.call.functionName === '<anonymous>';
|
|
49
|
+
nodes.push({
|
|
50
|
+
id: `${pkg.fullName}.${parentName}.spawn-${spawn.location.startLine}`,
|
|
51
|
+
name: spawn.call.functionName,
|
|
52
|
+
type: 'spawned',
|
|
53
|
+
spawnType: isAnonymous ? 'anonymous_func' : 'named_func',
|
|
54
|
+
package: pkg.fullName,
|
|
55
|
+
location: { file: spawn.location.file, line: spawn.location.startLine },
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
buildSpawnRelations(rawData) {
|
|
60
|
+
const relations = [];
|
|
61
|
+
for (const pkg of rawData.packages) {
|
|
62
|
+
for (const func of pkg.functions) {
|
|
63
|
+
if (!func.body)
|
|
64
|
+
continue;
|
|
65
|
+
const fromId = `${pkg.fullName}.${func.name}`;
|
|
66
|
+
for (const spawn of func.body.goSpawns) {
|
|
67
|
+
relations.push({
|
|
68
|
+
from: fromId,
|
|
69
|
+
to: `${pkg.fullName}.${func.name}.spawn-${spawn.location.startLine}`,
|
|
70
|
+
spawnType: spawn.call.functionName === '<anonymous>' ? 'go-func' : 'go-stmt',
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
for (const struct of pkg.structs) {
|
|
75
|
+
for (const method of struct.methods) {
|
|
76
|
+
if (!method.body)
|
|
77
|
+
continue;
|
|
78
|
+
const fromId = `${pkg.fullName}.${struct.name}.${method.name}`;
|
|
79
|
+
for (const spawn of method.body.goSpawns) {
|
|
80
|
+
relations.push({
|
|
81
|
+
from: fromId,
|
|
82
|
+
to: `${pkg.fullName}.${struct.name}.${method.name}.spawn-${spawn.location.startLine}`,
|
|
83
|
+
spawnType: spawn.call.functionName === '<anonymous>' ? 'go-func' : 'go-stmt',
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return relations;
|
|
90
|
+
}
|
|
91
|
+
extractChannelInfo(rawData) {
|
|
92
|
+
const channels = [];
|
|
93
|
+
const scanBody = (body, pkg) => {
|
|
94
|
+
for (const op of body.channelOps) {
|
|
95
|
+
if (op.operation === 'make') {
|
|
96
|
+
channels.push({
|
|
97
|
+
id: `chan-${pkg.fullName}-${op.location.startLine}`,
|
|
98
|
+
name: op.channelName,
|
|
99
|
+
type: 'chan',
|
|
100
|
+
direction: 'bidirectional',
|
|
101
|
+
location: { file: op.location.file, line: op.location.startLine },
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
for (const pkg of rawData.packages) {
|
|
107
|
+
for (const func of pkg.functions) {
|
|
108
|
+
if (func.body)
|
|
109
|
+
scanBody(func.body, pkg);
|
|
110
|
+
}
|
|
111
|
+
for (const struct of pkg.structs) {
|
|
112
|
+
for (const method of struct.methods) {
|
|
113
|
+
if (method.body)
|
|
114
|
+
scanBody(method.body, pkg);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return channels;
|
|
119
|
+
}
|
|
120
|
+
buildChannelEdges(rawData) {
|
|
121
|
+
const channelEdges = [];
|
|
122
|
+
for (const pkg of rawData.packages) {
|
|
123
|
+
for (const func of pkg.functions) {
|
|
124
|
+
if (!func.body)
|
|
125
|
+
continue;
|
|
126
|
+
const spawnerId = `${pkg.fullName}.${func.name}`;
|
|
127
|
+
this.extractBodyChannelEdges(func.body, pkg, spawnerId, func.name, channelEdges);
|
|
128
|
+
}
|
|
129
|
+
for (const struct of pkg.structs) {
|
|
130
|
+
for (const method of struct.methods) {
|
|
131
|
+
if (!method.body)
|
|
132
|
+
continue;
|
|
133
|
+
const spawnerId = `${pkg.fullName}.${struct.name}.${method.name}`;
|
|
134
|
+
const parentName = `${struct.name}.${method.name}`;
|
|
135
|
+
this.extractBodyChannelEdges(method.body, pkg, spawnerId, parentName, channelEdges);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return channelEdges;
|
|
140
|
+
}
|
|
141
|
+
extractBodyChannelEdges(body, pkg, spawnerId, parentName, channelEdges) {
|
|
142
|
+
const scopeMap = new Map();
|
|
143
|
+
for (const op of body.channelOps) {
|
|
144
|
+
if (op.operation === 'make' && op.channelName) {
|
|
145
|
+
const channelId = `chan-${pkg.fullName}-${op.location.startLine}`;
|
|
146
|
+
scopeMap.set(op.channelName, channelId);
|
|
147
|
+
channelEdges.push({ from: spawnerId, to: channelId, edgeType: 'make' });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
for (const spawn of body.goSpawns) {
|
|
151
|
+
const args = spawn.call.args ?? [];
|
|
152
|
+
for (const arg of args) {
|
|
153
|
+
const channelId = scopeMap.get(arg);
|
|
154
|
+
if (channelId !== undefined) {
|
|
155
|
+
const spawnedId = `${pkg.fullName}.${parentName}.spawn-${spawn.location.startLine}`;
|
|
156
|
+
channelEdges.push({ from: channelId, to: spawnedId, edgeType: 'recv' });
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
buildLifecycle(rawData) {
|
|
163
|
+
const summaries = [];
|
|
164
|
+
const STOP_CHANNEL_NAMES = new Set(['done', 'stop', 'quit', 'cancel', 'stopCh', 'doneCh']);
|
|
165
|
+
for (const pkg of rawData.packages) {
|
|
166
|
+
const funcByName = new Map();
|
|
167
|
+
for (const func of pkg.functions) {
|
|
168
|
+
funcByName.set(func.name, { params: func.parameters ?? [], body: func.body });
|
|
169
|
+
}
|
|
170
|
+
const allSpawns = [];
|
|
171
|
+
for (const func of pkg.functions) {
|
|
172
|
+
if (func.body) {
|
|
173
|
+
for (const spawn of func.body.goSpawns) {
|
|
174
|
+
allSpawns.push({ spawn, parentName: func.name });
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
for (const struct of pkg.structs) {
|
|
179
|
+
for (const method of struct.methods) {
|
|
180
|
+
if (method.body) {
|
|
181
|
+
for (const spawn of method.body.goSpawns) {
|
|
182
|
+
allSpawns.push({ spawn, parentName: `${struct.name}.${method.name}` });
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
for (const { spawn, parentName } of allSpawns) {
|
|
188
|
+
const nodeId = `${pkg.fullName}.${parentName}.spawn-${spawn.location.startLine}`;
|
|
189
|
+
const targetName = spawn.call.functionName;
|
|
190
|
+
const isAnonymous = targetName === '<anonymous>';
|
|
191
|
+
if (isAnonymous) {
|
|
192
|
+
summaries.push({
|
|
193
|
+
nodeId,
|
|
194
|
+
spawnTargetName: '<anonymous>',
|
|
195
|
+
receivesContext: false,
|
|
196
|
+
cancellationCheckAvailable: false,
|
|
197
|
+
orphan: true,
|
|
198
|
+
});
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
const targetFunc = funcByName.get(targetName);
|
|
202
|
+
if (!targetFunc) {
|
|
203
|
+
summaries.push({
|
|
204
|
+
nodeId,
|
|
205
|
+
spawnTargetName: targetName,
|
|
206
|
+
receivesContext: false,
|
|
207
|
+
cancellationCheckAvailable: false,
|
|
208
|
+
orphan: true,
|
|
209
|
+
});
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const ctxParam = targetFunc.params.find((p) => p.type?.includes('context.Context'));
|
|
213
|
+
const receivesContext = ctxParam !== undefined;
|
|
214
|
+
const ctxVarName = ctxParam?.name;
|
|
215
|
+
if (!targetFunc.body) {
|
|
216
|
+
summaries.push({
|
|
217
|
+
nodeId,
|
|
218
|
+
spawnTargetName: targetName,
|
|
219
|
+
receivesContext,
|
|
220
|
+
cancellationCheckAvailable: false,
|
|
221
|
+
orphan: !receivesContext,
|
|
222
|
+
});
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
const body = targetFunc.body;
|
|
226
|
+
const hasCtxDone = receivesContext &&
|
|
227
|
+
ctxVarName != null &&
|
|
228
|
+
(body.calls ?? []).some((c) => c.functionName === 'Done' && c.packageName === ctxVarName);
|
|
229
|
+
const hasStopChannel = (body.channelOps ?? []).some((op) => op.operation === 'receive' && STOP_CHANNEL_NAMES.has(op.channelName));
|
|
230
|
+
const hasCancellationCheck = hasCtxDone || hasStopChannel;
|
|
231
|
+
const cancellationMechanism = hasCtxDone
|
|
232
|
+
? 'context'
|
|
233
|
+
: hasStopChannel
|
|
234
|
+
? 'channel'
|
|
235
|
+
: undefined;
|
|
236
|
+
const orphan = !receivesContext && !hasCancellationCheck;
|
|
237
|
+
summaries.push({
|
|
238
|
+
nodeId,
|
|
239
|
+
spawnTargetName: targetName,
|
|
240
|
+
receivesContext,
|
|
241
|
+
cancellationCheckAvailable: true,
|
|
242
|
+
hasCancellationCheck,
|
|
243
|
+
...(cancellationMechanism !== undefined ? { cancellationMechanism } : {}),
|
|
244
|
+
orphan,
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return summaries;
|
|
249
|
+
}
|
|
250
|
+
classifyPattern(_node, _edges, _channels) {
|
|
251
|
+
return undefined;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=goroutine-topology-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goroutine-topology-builder.js","sourceRoot":"","sources":["../../../../../src/plugins/golang/atlas/builders/goroutine-topology-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-atlas-builder.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/golang/atlas/builders/i-atlas-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAOhD,MAAM,WAAW,aAAa,CAAC,CAAC;IAE9B,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-atlas-builder.js","sourceRoot":"","sources":["../../../../../src/plugins/golang/atlas/builders/i-atlas-builder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { IAtlasBuilder } from './i-atlas-builder.js';
|
|
2
|
+
export { PackageGraphBuilder } from './package-graph-builder.js';
|
|
3
|
+
export { CapabilityGraphBuilder } from './capability-graph-builder.js';
|
|
4
|
+
export { GoroutineTopologyBuilder } from './goroutine-topology-builder.js';
|
|
5
|
+
export { FlowGraphBuilder } from './flow-graph-builder.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/golang/atlas/builders/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { PackageGraphBuilder } from './package-graph-builder.js';
|
|
2
|
+
export { CapabilityGraphBuilder } from './capability-graph-builder.js';
|
|
3
|
+
export { GoroutineTopologyBuilder } from './goroutine-topology-builder.js';
|
|
4
|
+
export { FlowGraphBuilder } from './flow-graph-builder.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|