@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
package/README.md
ADDED
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
# ArchGuard
|
|
2
|
+
|
|
3
|
+
ArchGuard analyzes source code to extract architectural insights and generates **Mermaid diagrams** at multiple levels of detail. It supports TypeScript (stable), Go (stable), Java (beta), and Python (beta) through a plugin system, with optional LLM-powered grouping for better diagram organization.
|
|
4
|
+
|
|
5
|
+
## Screenshots
|
|
6
|
+
|
|
7
|
+
### Package-Level Overview
|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
### Class-Level Diagram
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
### Method-Level Detail (CLI Module)
|
|
14
|
+

|
|
15
|
+
|
|
16
|
+
## Features
|
|
17
|
+
|
|
18
|
+
- **Multi-Language Support**: TypeScript, Go, Java, Python via plugin system
|
|
19
|
+
- **Multi-Level Diagrams**: Package (high-level), Class (default), Method (low-level)
|
|
20
|
+
- **Go Architecture Atlas**: 4-layer visualization — package graph, capability graph, goroutine topology, flow graph
|
|
21
|
+
- **Parallel Processing**: High-performance parsing with configurable concurrency
|
|
22
|
+
- **Smart Caching**: File-based caching with SHA-256 hashing for fast repeated runs
|
|
23
|
+
- **AI-Powered Grouping**: Optional LLM-powered intelligent grouping via Claude API
|
|
24
|
+
- **Zero External Dependencies**: Local Mermaid rendering using isomorphic-mermaid
|
|
25
|
+
- **Five-Layer Validation**: Automatic syntax, structure, render, quality, and auto-repair validation
|
|
26
|
+
- **Configuration Files**: Project-level config with `archguard.config.json` support
|
|
27
|
+
- **Rich CLI**: Interactive progress display with real-time feedback
|
|
28
|
+
|
|
29
|
+
## Quick Start
|
|
30
|
+
|
|
31
|
+
### Installation
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm install -g archguard
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Or as a dev dependency:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install --save-dev archguard
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Basic Usage
|
|
44
|
+
|
|
45
|
+
Analyze a TypeScript project:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
archguard analyze -s ./src --output-dir ./docs/architecture
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Analyze a Go project:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
archguard analyze -s ./cmd --lang go --output-dir ./docs/architecture
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
This generates `architecture.mmd` (Mermaid source), `architecture.svg`, and `architecture.png`.
|
|
58
|
+
|
|
59
|
+
### Multi-Level Diagrams
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Package-level overview (high-level)
|
|
63
|
+
archguard analyze -s ./src -l package -n overview
|
|
64
|
+
|
|
65
|
+
# Class-level detail (default)
|
|
66
|
+
archguard analyze -s ./src -l class -n architecture
|
|
67
|
+
|
|
68
|
+
# Method-level detail (granular)
|
|
69
|
+
archguard analyze -s ./src/core -l method -n core-detail
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## CLI Commands
|
|
73
|
+
|
|
74
|
+
### `analyze`
|
|
75
|
+
|
|
76
|
+
Analyze a project and generate architecture diagrams.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
archguard analyze [options]
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Source & Level:**
|
|
83
|
+
|
|
84
|
+
- `-s, --sources <paths...>` - Source directories (repeatable)
|
|
85
|
+
- `-l, --level <level>` - Detail level: `package` | `class` | `method` (default: `class`)
|
|
86
|
+
- `-n, --name <name>` - Diagram name, supports paths like `modules/auth` (default: `architecture`)
|
|
87
|
+
- `--lang <language>` - Language: `typescript` | `go` | `java` | `python` (auto-detected)
|
|
88
|
+
|
|
89
|
+
**Output:**
|
|
90
|
+
|
|
91
|
+
- `--output-dir <dir>` - Output directory (default: `./archguard`)
|
|
92
|
+
- `-f, --format <type>` - Output format: `mermaid` | `json` (default: `mermaid`)
|
|
93
|
+
- `-e, --exclude <patterns...>` - Exclude glob patterns
|
|
94
|
+
|
|
95
|
+
**Performance:**
|
|
96
|
+
|
|
97
|
+
- `--no-cache` - Disable cache
|
|
98
|
+
- `-c, --concurrency <num>` - Parallel parsing workers (default: CPU cores)
|
|
99
|
+
- `-v, --verbose` - Verbose output
|
|
100
|
+
|
|
101
|
+
**Mermaid:**
|
|
102
|
+
|
|
103
|
+
- `--mermaid-theme <theme>` - Theme: `default` | `forest` | `dark` | `neutral`
|
|
104
|
+
- `--no-llm-grouping` - Use heuristic grouping instead of LLM
|
|
105
|
+
|
|
106
|
+
**Go Atlas** (enabled by default for Go):
|
|
107
|
+
|
|
108
|
+
- `--no-atlas` - Disable Atlas mode, use standard Go parsing
|
|
109
|
+
- `--atlas-layers <layers>` - Comma-separated layers: `package,capability,goroutine,flow`
|
|
110
|
+
- `--atlas-strategy <strategy>` - Analysis strategy: `none` | `selective` | `full`
|
|
111
|
+
- `--atlas-entry-points <types>` - Entry point types to focus on
|
|
112
|
+
- `--atlas-include-tests` - Include test packages in Atlas
|
|
113
|
+
|
|
114
|
+
**Multi-Diagram (config file):**
|
|
115
|
+
|
|
116
|
+
- `--config <path>` - Config file path (default: `archguard.config.json`)
|
|
117
|
+
- `--diagrams <names...>` - Generate only specific diagrams by name
|
|
118
|
+
|
|
119
|
+
**Claude CLI:**
|
|
120
|
+
|
|
121
|
+
- `--cli-command <command>` - Claude CLI executable (default: `claude`)
|
|
122
|
+
- `--cli-args <args>` - Additional Claude CLI arguments
|
|
123
|
+
|
|
124
|
+
**Examples:**
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Basic analysis
|
|
128
|
+
archguard analyze
|
|
129
|
+
|
|
130
|
+
# Analyze specific directory with custom output
|
|
131
|
+
archguard analyze -s ./packages/core --output-dir ./docs/core-architecture
|
|
132
|
+
|
|
133
|
+
# Generate JSON for tooling integration
|
|
134
|
+
archguard analyze -s ./src --output-dir . -f json
|
|
135
|
+
|
|
136
|
+
# Go project with Architecture Atlas
|
|
137
|
+
archguard analyze -s ./cmd --lang go
|
|
138
|
+
|
|
139
|
+
# Go without Atlas (faster, basic diagram)
|
|
140
|
+
archguard analyze -s ./cmd --lang go --no-atlas
|
|
141
|
+
|
|
142
|
+
# High concurrency
|
|
143
|
+
archguard analyze -s ./src -c 8 -v
|
|
144
|
+
|
|
145
|
+
# Exclude test files
|
|
146
|
+
archguard analyze -s ./src -e "**/*.test.ts" "**/*.spec.ts"
|
|
147
|
+
|
|
148
|
+
# Disable LLM grouping (heuristic, no Claude needed)
|
|
149
|
+
archguard analyze -s ./src --no-llm-grouping
|
|
150
|
+
|
|
151
|
+
# Dark theme
|
|
152
|
+
archguard analyze -s ./src --mermaid-theme dark
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### `init`
|
|
156
|
+
|
|
157
|
+
Initialize configuration file:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
archguard init
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Creates `archguard.config.json` with defaults. Use `-f js` for a JavaScript config.
|
|
164
|
+
|
|
165
|
+
### `cache`
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
archguard cache stats # View cache statistics
|
|
169
|
+
archguard cache clear # Clear all cached data
|
|
170
|
+
archguard cache path # Show cache directory
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Language Support
|
|
174
|
+
|
|
175
|
+
| Language | Status | Parser | Features |
|
|
176
|
+
|------------|--------|---------------------------|----------------------------------------------------|
|
|
177
|
+
| TypeScript | Stable | ts-morph (AST) | Classes, interfaces, enums, dependencies, path aliases |
|
|
178
|
+
| Go | Stable | tree-sitter + gopls | Structs, interfaces, goroutines, Architecture Atlas |
|
|
179
|
+
| Java | Beta | tree-sitter | Classes, interfaces, Maven/Gradle deps |
|
|
180
|
+
| Python | Beta | tree-sitter | Classes, functions, pip/Poetry deps |
|
|
181
|
+
|
|
182
|
+
### Go Architecture Atlas
|
|
183
|
+
|
|
184
|
+
For Go projects, ArchGuard generates a multi-layer architecture atlas showing:
|
|
185
|
+
|
|
186
|
+
- **Package Graph** — inter-package dependencies and coupling
|
|
187
|
+
- **Capability Graph** — functional capability clusters
|
|
188
|
+
- **Goroutine Topology** — concurrent execution patterns and channel topology
|
|
189
|
+
- **Flow Graph** — data and control flow paths
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# Full Atlas (default when --lang go)
|
|
193
|
+
archguard analyze -s ./cmd --lang go
|
|
194
|
+
|
|
195
|
+
# Specific layers only
|
|
196
|
+
archguard analyze -s ./cmd --lang go --atlas-layers package,capability
|
|
197
|
+
|
|
198
|
+
# Standard diagram without Atlas
|
|
199
|
+
archguard analyze -s ./cmd --lang go --no-atlas
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
gopls is optional but improves interface detection accuracy from ~75% to ~95%:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
go install golang.org/x/tools/gopls@latest
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
See [Go Plugin Usage Guide](docs/user-guide/golang-plugin-usage.md) for details.
|
|
209
|
+
|
|
210
|
+
## Configuration
|
|
211
|
+
|
|
212
|
+
### `archguard.config.json`
|
|
213
|
+
|
|
214
|
+
```json
|
|
215
|
+
{
|
|
216
|
+
"source": "./src",
|
|
217
|
+
"format": "mermaid",
|
|
218
|
+
"exclude": ["**/*.test.ts", "**/*.spec.ts", "**/node_modules/**"],
|
|
219
|
+
"concurrency": 4,
|
|
220
|
+
"outputDir": "./archguard",
|
|
221
|
+
"cache": { "enabled": true },
|
|
222
|
+
"mermaid": {
|
|
223
|
+
"enableLLMGrouping": true,
|
|
224
|
+
"renderer": "isomorphic",
|
|
225
|
+
"theme": "default",
|
|
226
|
+
"transparentBackground": true
|
|
227
|
+
},
|
|
228
|
+
"cli": {
|
|
229
|
+
"command": "claude",
|
|
230
|
+
"args": [],
|
|
231
|
+
"timeout": 60000
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Multi-Diagram Configuration
|
|
237
|
+
|
|
238
|
+
Generate multiple diagrams with different sources and levels in one run:
|
|
239
|
+
|
|
240
|
+
```json
|
|
241
|
+
{
|
|
242
|
+
"diagrams": [
|
|
243
|
+
{
|
|
244
|
+
"name": "overview",
|
|
245
|
+
"sources": ["./src"],
|
|
246
|
+
"level": "package"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"name": "modules/cli",
|
|
250
|
+
"sources": ["./src/cli"],
|
|
251
|
+
"level": "class"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"name": "modules/parser",
|
|
255
|
+
"sources": ["./src/parser"],
|
|
256
|
+
"level": "method"
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
"outputDir": "./docs/architecture"
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
# Generate all diagrams
|
|
265
|
+
archguard analyze
|
|
266
|
+
|
|
267
|
+
# Generate specific diagrams only
|
|
268
|
+
archguard analyze --diagrams overview modules/cli
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Configuration Fields
|
|
272
|
+
|
|
273
|
+
| Field | Type | Default | Description |
|
|
274
|
+
|-------|------|---------|-------------|
|
|
275
|
+
| `source` | string | `./src` | Source directory (single diagram mode) |
|
|
276
|
+
| `diagrams` | array | — | Multi-diagram config (overrides `source`) |
|
|
277
|
+
| `format` | string | `mermaid` | Output format: `mermaid` or `json` |
|
|
278
|
+
| `exclude` | string[] | `[]` | Glob patterns to exclude |
|
|
279
|
+
| `concurrency` | number | CPU cores | Parallel parsing workers |
|
|
280
|
+
| `outputDir` | string | `./archguard` | Output directory |
|
|
281
|
+
| `cache.enabled` | boolean | `true` | Enable file-based caching |
|
|
282
|
+
| `mermaid.enableLLMGrouping` | boolean | `true` | LLM-powered entity grouping |
|
|
283
|
+
| `mermaid.theme` | string | `default` | Diagram theme |
|
|
284
|
+
| `mermaid.transparentBackground` | boolean | `true` | Transparent PNG background |
|
|
285
|
+
| `cli.command` | string | `claude` | Claude CLI executable |
|
|
286
|
+
| `cli.timeout` | number | `60000` | Claude CLI timeout (ms) |
|
|
287
|
+
|
|
288
|
+
## Output Formats
|
|
289
|
+
|
|
290
|
+
### Mermaid (default)
|
|
291
|
+
|
|
292
|
+
Generates `.mmd`, `.svg`, and `.png` files:
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
archguard/
|
|
296
|
+
├── overview/
|
|
297
|
+
│ ├── package.mmd
|
|
298
|
+
│ ├── package.svg
|
|
299
|
+
│ └── package.png
|
|
300
|
+
├── modules/
|
|
301
|
+
│ ├── cli.mmd
|
|
302
|
+
│ └── cli.png
|
|
303
|
+
└── index.md
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
Example `.mmd` output:
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
graph TD
|
|
310
|
+
UserService[UserService<br/>+ getUser(id): Promise<User><br/>+ createUser(data): Promise<User>]
|
|
311
|
+
User[User<br/>+ id: string<br/>+ name: string]
|
|
312
|
+
|
|
313
|
+
UserService --> User : uses
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
### ArchJSON
|
|
317
|
+
|
|
318
|
+
Structured JSON for tooling integration:
|
|
319
|
+
|
|
320
|
+
```json
|
|
321
|
+
{
|
|
322
|
+
"version": "1.0",
|
|
323
|
+
"language": "typescript",
|
|
324
|
+
"timestamp": "2024-01-01T00:00:00.000Z",
|
|
325
|
+
"entities": [
|
|
326
|
+
{
|
|
327
|
+
"id": "UserService",
|
|
328
|
+
"name": "UserService",
|
|
329
|
+
"type": "class",
|
|
330
|
+
"members": [...]
|
|
331
|
+
}
|
|
332
|
+
],
|
|
333
|
+
"relations": [
|
|
334
|
+
{ "from": "UserService", "to": "User", "type": "dependency" }
|
|
335
|
+
]
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## Performance
|
|
340
|
+
|
|
341
|
+
- **Parallel Processing**: Automatically uses all CPU cores for parsing
|
|
342
|
+
- **Smart Caching**: SHA-256 file hashing; 80%+ cache hit rate on repeated runs
|
|
343
|
+
- **Benchmark** (ArchGuard self-analysis, 30+ files):
|
|
344
|
+
- First run: ~6–10 seconds
|
|
345
|
+
- Cached run: < 3 seconds
|
|
346
|
+
- Throughput: ~4–5 files/second
|
|
347
|
+
- Memory: < 300 MB
|
|
348
|
+
|
|
349
|
+
Tune concurrency:
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
archguard analyze -s ./src -c 8 # custom workers
|
|
353
|
+
archguard analyze -s ./src -c 1 # sequential (debugging)
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
## Architecture
|
|
357
|
+
|
|
358
|
+
### Project Structure
|
|
359
|
+
|
|
360
|
+
```
|
|
361
|
+
archguard/
|
|
362
|
+
├── src/
|
|
363
|
+
│ ├── cli/ # CLI commands and utilities
|
|
364
|
+
│ │ ├── commands/ # analyze, init, cache
|
|
365
|
+
│ │ ├── progress/ # Progress reporting
|
|
366
|
+
│ │ ├── processors/ # Diagram processing pipeline
|
|
367
|
+
│ │ └── utils/ # Config loader, error handler
|
|
368
|
+
│ ├── core/ # Plugin registry and interfaces
|
|
369
|
+
│ │ └── interfaces/ # ILanguagePlugin, IParser, IDependencyExtractor
|
|
370
|
+
│ ├── parser/ # TypeScript AST parsing
|
|
371
|
+
│ │ ├── typescript-parser.ts
|
|
372
|
+
│ │ ├── parallel-parser.ts
|
|
373
|
+
│ │ └── extractors/ # class, interface, enum, relation
|
|
374
|
+
│ ├── mermaid/ # Diagram generation
|
|
375
|
+
│ │ ├── diagram-generator.ts
|
|
376
|
+
│ │ ├── renderer.ts
|
|
377
|
+
│ │ ├── validation-pipeline.ts
|
|
378
|
+
│ │ └── validators/ # parse, structural, render, quality
|
|
379
|
+
│ ├── plugins/ # Language plugins
|
|
380
|
+
│ │ ├── typescript/ # Stable
|
|
381
|
+
│ │ ├── golang/ # Stable (tree-sitter + gopls + Atlas)
|
|
382
|
+
│ │ │ └── atlas/ # package, capability, goroutine, flow builders
|
|
383
|
+
│ │ ├── java/ # Beta
|
|
384
|
+
│ │ └── python/ # Beta
|
|
385
|
+
│ └── types/ # Core types (config, ArchJSON, extensions)
|
|
386
|
+
├── tests/
|
|
387
|
+
│ ├── unit/ # Unit tests
|
|
388
|
+
│ ├── integration/ # Integration tests
|
|
389
|
+
│ ├── plugins/ # Per-plugin tests
|
|
390
|
+
│ └── core/ # Plugin registry tests
|
|
391
|
+
└── docs/ # Documentation and screenshots
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### Data Flow
|
|
395
|
+
|
|
396
|
+
```
|
|
397
|
+
Source Files
|
|
398
|
+
│
|
|
399
|
+
▼ Language Plugin (TypeScript / Go / Java / Python)
|
|
400
|
+
AST / Tree-sitter Parse
|
|
401
|
+
│
|
|
402
|
+
▼ Extractors
|
|
403
|
+
ArchJSON (entities + relations)
|
|
404
|
+
│
|
|
405
|
+
├─► (Go) Atlas Builders → 4-layer extension
|
|
406
|
+
│
|
|
407
|
+
▼ LLM Grouper (optional, Claude API)
|
|
408
|
+
Grouped ArchJSON
|
|
409
|
+
│
|
|
410
|
+
▼ Mermaid Generator
|
|
411
|
+
.mmd syntax
|
|
412
|
+
│
|
|
413
|
+
▼ Five-Layer Validator + Auto-repair
|
|
414
|
+
Valid .mmd
|
|
415
|
+
│
|
|
416
|
+
▼ isomorphic-mermaid + sharp
|
|
417
|
+
.svg + .png
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
## Development
|
|
421
|
+
|
|
422
|
+
### Prerequisites
|
|
423
|
+
|
|
424
|
+
- Node.js >= 18.0.0
|
|
425
|
+
- npm or yarn
|
|
426
|
+
|
|
427
|
+
Optional, for enhanced features:
|
|
428
|
+
- **Claude CLI** — LLM-powered diagram grouping
|
|
429
|
+
- **gopls** — Semantic interface detection for Go projects
|
|
430
|
+
|
|
431
|
+
### Setup
|
|
432
|
+
|
|
433
|
+
```bash
|
|
434
|
+
git clone https://github.com/your-org/archguard.git
|
|
435
|
+
cd archguard
|
|
436
|
+
npm install
|
|
437
|
+
npm run build
|
|
438
|
+
npm test
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
### Testing
|
|
442
|
+
|
|
443
|
+
```bash
|
|
444
|
+
npm test # All tests (vitest)
|
|
445
|
+
npm run test:unit # Unit tests
|
|
446
|
+
npm run test:integration # Integration tests
|
|
447
|
+
npm run test:coverage # With coverage report
|
|
448
|
+
npm run test:watch # Watch mode
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
### Code Quality
|
|
452
|
+
|
|
453
|
+
```bash
|
|
454
|
+
npm run lint # ESLint check
|
|
455
|
+
npm run lint:fix # Auto-fix
|
|
456
|
+
npm run format # Prettier
|
|
457
|
+
npm run type-check # TypeScript check
|
|
458
|
+
npm run build && npm run lint && npm run type-check && npm test
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
### Self-Analysis
|
|
462
|
+
|
|
463
|
+
```bash
|
|
464
|
+
npm run build
|
|
465
|
+
|
|
466
|
+
# Analyze ArchGuard itself
|
|
467
|
+
node dist/cli/index.js analyze -v
|
|
468
|
+
|
|
469
|
+
# Package-level overview
|
|
470
|
+
node dist/cli/index.js analyze -l package -n overview
|
|
471
|
+
|
|
472
|
+
# Method-level detail for a module
|
|
473
|
+
node dist/cli/index.js analyze -s ./src/cli -l method -n cli-module
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
## Technology Stack
|
|
477
|
+
|
|
478
|
+
| Category | Technology | Version | Purpose |
|
|
479
|
+
|----------|-----------|---------|---------|
|
|
480
|
+
| Language | TypeScript | ^5.3.0 | Type-safe development |
|
|
481
|
+
| Runtime | Node.js | >=18.0.0 | JavaScript runtime |
|
|
482
|
+
| TS Parser | ts-morph | ^21.0.0 | TypeScript AST |
|
|
483
|
+
| Go Parser | tree-sitter + tree-sitter-go | ^0.25.0 | Go AST |
|
|
484
|
+
| Java/Python Parser | tree-sitter | ^0.25.0 | Java/Python AST |
|
|
485
|
+
| Go LSP | gopls | latest | Semantic interface detection |
|
|
486
|
+
| Diagram Generation | isomorphic-mermaid | ^0.1.1 | Local Mermaid rendering |
|
|
487
|
+
| Image Processing | sharp | ^0.34.5 | SVG → PNG conversion |
|
|
488
|
+
| LLM Integration | @anthropic-ai/sdk | ^0.20.0 | Optional LLM grouping |
|
|
489
|
+
| Process Management | execa | ^8.0.0 | Subprocess execution |
|
|
490
|
+
| Testing | Vitest | ^1.2.0 | Unit/integration tests |
|
|
491
|
+
| CLI | commander | ^11.1.0 | Command-line interface |
|
|
492
|
+
| Progress | ora, chalk | ^8.x, ^5.x | Interactive CLI |
|
|
493
|
+
| Concurrency | p-limit | ^5.0.0 | Parallel processing |
|
|
494
|
+
| Configuration | zod | ^3.25.76 | Config validation |
|
|
495
|
+
|
|
496
|
+
## Troubleshooting
|
|
497
|
+
|
|
498
|
+
See [TROUBLESHOOTING.md](docs/user-guide/troubleshooting.md) for common issues.
|
|
499
|
+
|
|
500
|
+
Quick fixes:
|
|
501
|
+
|
|
502
|
+
- **LLM grouping fails** — run with `--no-llm-grouping` to use heuristic mode
|
|
503
|
+
- **Go interface detection low** — install gopls: `go install golang.org/x/tools/gopls@latest`
|
|
504
|
+
- **Slow first run** — normal; subsequent runs use cache (80%+ hit rate)
|
|
505
|
+
- **Render errors** — the five-layer validator auto-repairs most issues; run with `-v` for details
|
|
506
|
+
|
|
507
|
+
## Documentation
|
|
508
|
+
|
|
509
|
+
- [CLI Usage Guide](docs/user-guide/cli-usage.md)
|
|
510
|
+
- [Configuration Reference](docs/user-guide/configuration.md)
|
|
511
|
+
- [Go Plugin Usage Guide](docs/user-guide/golang-plugin-usage.md)
|
|
512
|
+
- [Plugin Development Guide](docs/dev-guide/plugin-development-guide.md)
|
|
513
|
+
- [Plugin Registry](docs/user-guide/plugin-registry.md)
|
|
514
|
+
- [Troubleshooting](docs/user-guide/troubleshooting.md)
|
|
515
|
+
|
|
516
|
+
## Contributing
|
|
517
|
+
|
|
518
|
+
This project follows:
|
|
519
|
+
|
|
520
|
+
- **TDD Methodology**: Tests written before implementation
|
|
521
|
+
- **Plugin System**: Add new languages via `ILanguagePlugin`
|
|
522
|
+
- **Clean Code**: Readable, maintainable code
|
|
523
|
+
|
|
524
|
+
See [CONTRIBUTING.md](docs/CONTRIBUTING.md) for documentation management details.
|
|
525
|
+
|
|
526
|
+
## License
|
|
527
|
+
|
|
528
|
+
MIT
|
|
529
|
+
|
|
530
|
+
## Credits
|
|
531
|
+
|
|
532
|
+
Built with:
|
|
533
|
+
- [ts-morph](https://ts-morph.com/) for TypeScript parsing
|
|
534
|
+
- [tree-sitter](https://tree-sitter.github.io/) for Go/Java/Python parsing
|
|
535
|
+
- [Mermaid](https://mermaid.js.org/) for diagram syntax
|
|
536
|
+
- [isomorphic-mermaid](https://github.com/brede95/isomorphic-mermaid) for rendering
|
|
537
|
+
- [Claude AI](https://www.anthropic.com/claude) for optional LLM-powered grouping
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ArchJSON } from '../../types/index.js';
|
|
2
|
+
export declare const CACHE_VERSION = "1.0.0";
|
|
3
|
+
export declare class ArchJsonDiskCache {
|
|
4
|
+
private readonly cacheDir;
|
|
5
|
+
constructor(cacheDir: string);
|
|
6
|
+
private keyPath;
|
|
7
|
+
get(key: string): Promise<ArchJSON | null>;
|
|
8
|
+
set(key: string, archJson: ArchJSON): Promise<void>;
|
|
9
|
+
computeKey(files: string[]): Promise<string>;
|
|
10
|
+
clear(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=arch-json-disk-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arch-json-disk-cache.d.ts","sourceRoot":"","sources":["../../../src/cli/cache/arch-json-disk-cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,eAAO,MAAM,aAAa,UAAU,CAAC;AAQrC,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAE7C,OAAO,CAAC,OAAO;IAKT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAY1C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAY5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { createHash } from 'crypto';
|
|
4
|
+
export const CACHE_VERSION = '1.0.0';
|
|
5
|
+
export class ArchJsonDiskCache {
|
|
6
|
+
cacheDir;
|
|
7
|
+
constructor(cacheDir) {
|
|
8
|
+
this.cacheDir = cacheDir;
|
|
9
|
+
}
|
|
10
|
+
keyPath(key) {
|
|
11
|
+
const sub = key.slice(0, 2);
|
|
12
|
+
return path.join(this.cacheDir, sub, `${key}.json`);
|
|
13
|
+
}
|
|
14
|
+
async get(key) {
|
|
15
|
+
const filePath = this.keyPath(key);
|
|
16
|
+
try {
|
|
17
|
+
if (!(await fs.pathExists(filePath)))
|
|
18
|
+
return null;
|
|
19
|
+
const entry = (await fs.readJson(filePath));
|
|
20
|
+
if (entry.version !== CACHE_VERSION)
|
|
21
|
+
return null;
|
|
22
|
+
return entry.archJson;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async set(key, archJson) {
|
|
29
|
+
const filePath = this.keyPath(key);
|
|
30
|
+
await fs.ensureDir(path.dirname(filePath));
|
|
31
|
+
const entry = {
|
|
32
|
+
version: CACHE_VERSION,
|
|
33
|
+
createdAt: new Date().toISOString(),
|
|
34
|
+
archJson,
|
|
35
|
+
};
|
|
36
|
+
await fs.writeJson(filePath, entry);
|
|
37
|
+
}
|
|
38
|
+
async computeKey(files) {
|
|
39
|
+
const sorted = [...files].sort();
|
|
40
|
+
const hashes = await Promise.all(sorted.map(async (f) => {
|
|
41
|
+
const content = await fs.readFile(f);
|
|
42
|
+
return createHash('sha256').update(content).digest('hex');
|
|
43
|
+
}));
|
|
44
|
+
const combined = sorted.map((f, i) => `${f}:${hashes[i]}`).join('\n');
|
|
45
|
+
return createHash('sha256').update(combined).digest('hex');
|
|
46
|
+
}
|
|
47
|
+
async clear() {
|
|
48
|
+
await fs.emptyDir(this.cacheDir);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=arch-json-disk-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arch-json-disk-cache.js","sourceRoot":"","sources":["../../../src/cli/cache/arch-json-disk-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGpC,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AAQrC,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAEzC,OAAO,CAAC,GAAW;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC;YACH,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClD,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAe,CAAC;YAC1D,IAAI,KAAK,CAAC,OAAO,KAAK,aAAa;gBAAE,OAAO,IAAI,CAAC;YACjD,OAAO,KAAK,CAAC,QAAQ,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,QAAkB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAe;YACxB,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ;SACT,CAAC;QACF,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAe;QAC9B,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACrC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC,CACH,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface CacheStats {
|
|
2
|
+
hits: number;
|
|
3
|
+
misses: number;
|
|
4
|
+
hitRate: number;
|
|
5
|
+
totalSize: number;
|
|
6
|
+
}
|
|
7
|
+
export interface CacheOptions {
|
|
8
|
+
ttl?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class CacheManager {
|
|
11
|
+
readonly cacheDir: string;
|
|
12
|
+
private stats;
|
|
13
|
+
private defaultTTL;
|
|
14
|
+
constructor(cacheDir?: string);
|
|
15
|
+
computeFileHash(filePath: string): Promise<string>;
|
|
16
|
+
get<T = unknown>(filePath: string, hash: string): Promise<T | null>;
|
|
17
|
+
set<T = unknown>(filePath: string, hash: string, data: T, options?: CacheOptions): Promise<void>;
|
|
18
|
+
clear(): Promise<void>;
|
|
19
|
+
getStats(): CacheStats;
|
|
20
|
+
getCacheSize(): Promise<number>;
|
|
21
|
+
private getAllCacheFiles;
|
|
22
|
+
private getCacheKey;
|
|
23
|
+
private getCachePath;
|
|
24
|
+
private updateHitRate;
|
|
25
|
+
setDefaultTTL(ttl: number): void;
|
|
26
|
+
getDefaultTTL(): number;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=cache-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/cli/cache-manager.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAiBD,qBAAa,YAAY;IACvB,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,OAAO,CAAC,KAAK,CAKX;IACF,OAAO,CAAC,UAAU,CAAiB;gBAEvB,QAAQ,CAAC,EAAE,MAAM;IAOvB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASlD,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAoCnE,GAAG,CAAC,CAAC,GAAG,OAAO,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,EACP,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC;IAiBV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B,QAAQ,IAAI,UAAU;IAOhB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;YAwBvB,gBAAgB;IA0B9B,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,aAAa;IAQrB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOhC,aAAa,IAAI,MAAM;CAGxB"}
|