@optave/codegraph 3.4.0 → 3.5.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 +23 -22
- package/dist/ast-analysis/engine.d.ts.map +1 -1
- package/dist/ast-analysis/engine.js +3 -9
- package/dist/ast-analysis/engine.js.map +1 -1
- package/dist/ast-analysis/rules/javascript.d.ts.map +1 -1
- package/dist/ast-analysis/rules/javascript.js +1 -0
- package/dist/ast-analysis/rules/javascript.js.map +1 -1
- package/dist/ast-analysis/shared.d.ts.map +1 -1
- package/dist/ast-analysis/shared.js +0 -1
- package/dist/ast-analysis/shared.js.map +1 -1
- package/dist/ast-analysis/visitors/ast-store-visitor.d.ts.map +1 -1
- package/dist/ast-analysis/visitors/ast-store-visitor.js +103 -35
- package/dist/ast-analysis/visitors/ast-store-visitor.js.map +1 -1
- package/dist/ast-analysis/visitors/cfg-conditionals.d.ts +5 -0
- package/dist/ast-analysis/visitors/cfg-conditionals.d.ts.map +1 -0
- package/dist/ast-analysis/visitors/cfg-conditionals.js +166 -0
- package/dist/ast-analysis/visitors/cfg-conditionals.js.map +1 -0
- package/dist/ast-analysis/visitors/cfg-loops.d.ts +7 -0
- package/dist/ast-analysis/visitors/cfg-loops.d.ts.map +1 -0
- package/dist/ast-analysis/visitors/cfg-loops.js +73 -0
- package/dist/ast-analysis/visitors/cfg-loops.js.map +1 -0
- package/dist/ast-analysis/visitors/cfg-shared.d.ts +56 -0
- package/dist/ast-analysis/visitors/cfg-shared.d.ts.map +1 -0
- package/dist/ast-analysis/visitors/cfg-shared.js +107 -0
- package/dist/ast-analysis/visitors/cfg-shared.js.map +1 -0
- package/dist/ast-analysis/visitors/cfg-try-catch.d.ts +4 -0
- package/dist/ast-analysis/visitors/cfg-try-catch.d.ts.map +1 -0
- package/dist/ast-analysis/visitors/cfg-try-catch.js +100 -0
- package/dist/ast-analysis/visitors/cfg-try-catch.js.map +1 -0
- package/dist/ast-analysis/visitors/cfg-visitor.d.ts +2 -2
- package/dist/ast-analysis/visitors/cfg-visitor.d.ts.map +1 -1
- package/dist/ast-analysis/visitors/cfg-visitor.js +11 -445
- package/dist/ast-analysis/visitors/cfg-visitor.js.map +1 -1
- package/dist/ast-analysis/visitors/complexity-visitor.d.ts.map +1 -1
- package/dist/ast-analysis/visitors/complexity-visitor.js.map +1 -1
- package/dist/ast-analysis/visitors/dataflow-visitor.d.ts.map +1 -1
- package/dist/ast-analysis/visitors/dataflow-visitor.js.map +1 -1
- package/dist/cli/commands/batch.d.ts.map +1 -1
- package/dist/cli/commands/batch.js +4 -3
- package/dist/cli/commands/batch.js.map +1 -1
- package/dist/cli/commands/branch-compare.js +1 -1
- package/dist/cli/commands/branch-compare.js.map +1 -1
- package/dist/cli/commands/build.js +1 -1
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +1 -2
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/path.d.ts.map +1 -1
- package/dist/cli/commands/path.js +7 -2
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/plot.d.ts.map +1 -1
- package/dist/cli/commands/plot.js +2 -2
- package/dist/cli/commands/plot.js.map +1 -1
- package/dist/cli/commands/watch.js +1 -1
- package/dist/cli/commands/watch.js.map +1 -1
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/shared/open-graph.d.ts +2 -2
- package/dist/cli/shared/open-graph.d.ts.map +1 -1
- package/dist/cli/shared/open-graph.js.map +1 -1
- package/dist/cli/types.d.ts +1 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli.js +2 -3
- package/dist/cli.js.map +1 -1
- package/dist/db/better-sqlite3.d.ts +3 -0
- package/dist/db/better-sqlite3.d.ts.map +1 -0
- package/dist/db/better-sqlite3.js +19 -0
- package/dist/db/better-sqlite3.js.map +1 -0
- package/dist/db/connection.d.ts +30 -2
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +167 -4
- package/dist/db/connection.js.map +1 -1
- package/dist/db/index.d.ts +2 -2
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +1 -1
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +9 -0
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/query-builder.d.ts +5 -5
- package/dist/db/query-builder.d.ts.map +1 -1
- package/dist/db/query-builder.js +20 -4
- package/dist/db/query-builder.js.map +1 -1
- package/dist/db/repository/index.d.ts +1 -0
- package/dist/db/repository/index.d.ts.map +1 -1
- package/dist/db/repository/index.js +1 -0
- package/dist/db/repository/index.js.map +1 -1
- package/dist/db/repository/native-repository.d.ts +58 -0
- package/dist/db/repository/native-repository.d.ts.map +1 -0
- package/dist/db/repository/native-repository.js +261 -0
- package/dist/db/repository/native-repository.js.map +1 -0
- package/dist/db/repository/nodes.d.ts +4 -4
- package/dist/db/repository/nodes.d.ts.map +1 -1
- package/dist/db/repository/nodes.js +6 -6
- package/dist/db/repository/nodes.js.map +1 -1
- package/dist/domain/analysis/brief.d.ts.map +1 -1
- package/dist/domain/analysis/brief.js +1 -3
- package/dist/domain/analysis/brief.js.map +1 -1
- package/dist/domain/analysis/context.d.ts.map +1 -1
- package/dist/domain/analysis/context.js +2 -4
- package/dist/domain/analysis/context.js.map +1 -1
- package/dist/domain/analysis/dependencies.d.ts +49 -0
- package/dist/domain/analysis/dependencies.d.ts.map +1 -1
- package/dist/domain/analysis/dependencies.js +145 -0
- package/dist/domain/analysis/dependencies.js.map +1 -1
- package/dist/domain/analysis/diff-impact.d.ts +76 -0
- package/dist/domain/analysis/diff-impact.d.ts.map +1 -0
- package/dist/domain/analysis/diff-impact.js +282 -0
- package/dist/domain/analysis/diff-impact.js.map +1 -0
- package/dist/domain/analysis/exports.d.ts.map +1 -1
- package/dist/domain/analysis/exports.js +0 -1
- package/dist/domain/analysis/exports.js.map +1 -1
- package/dist/domain/analysis/fn-impact.d.ts +66 -0
- package/dist/domain/analysis/fn-impact.d.ts.map +1 -0
- package/dist/domain/analysis/fn-impact.js +189 -0
- package/dist/domain/analysis/fn-impact.js.map +1 -0
- package/dist/domain/analysis/impact.d.ts +8 -148
- package/dist/domain/analysis/impact.d.ts.map +1 -1
- package/dist/domain/analysis/impact.js +8 -568
- package/dist/domain/analysis/impact.js.map +1 -1
- package/dist/domain/analysis/module-map.d.ts.map +1 -1
- package/dist/domain/analysis/module-map.js +1 -3
- package/dist/domain/analysis/module-map.js.map +1 -1
- package/dist/domain/graph/builder/context.d.ts +3 -3
- package/dist/domain/graph/builder/context.d.ts.map +1 -1
- package/dist/domain/graph/builder/context.js +1 -0
- package/dist/domain/graph/builder/context.js.map +1 -1
- package/dist/domain/graph/builder/helpers.d.ts +4 -5
- package/dist/domain/graph/builder/helpers.d.ts.map +1 -1
- package/dist/domain/graph/builder/helpers.js +1 -2
- package/dist/domain/graph/builder/helpers.js.map +1 -1
- package/dist/domain/graph/builder/incremental.d.ts +2 -3
- package/dist/domain/graph/builder/incremental.d.ts.map +1 -1
- package/dist/domain/graph/builder/incremental.js.map +1 -1
- package/dist/domain/graph/builder/pipeline.d.ts.map +1 -1
- package/dist/domain/graph/builder/pipeline.js +34 -6
- package/dist/domain/graph/builder/pipeline.js.map +1 -1
- package/dist/domain/graph/builder/stages/build-edges.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/build-edges.js +113 -15
- package/dist/domain/graph/builder/stages/build-edges.js.map +1 -1
- package/dist/domain/graph/builder/stages/build-structure.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/build-structure.js +186 -62
- package/dist/domain/graph/builder/stages/build-structure.js.map +1 -1
- package/dist/domain/graph/builder/stages/collect-files.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/collect-files.js +71 -7
- package/dist/domain/graph/builder/stages/collect-files.js.map +1 -1
- package/dist/domain/graph/builder/stages/detect-changes.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/detect-changes.js +42 -20
- package/dist/domain/graph/builder/stages/detect-changes.js.map +1 -1
- package/dist/domain/graph/builder/stages/finalize.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/finalize.js +111 -64
- package/dist/domain/graph/builder/stages/finalize.js.map +1 -1
- package/dist/domain/graph/builder/stages/insert-nodes.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/insert-nodes.js +104 -9
- package/dist/domain/graph/builder/stages/insert-nodes.js.map +1 -1
- package/dist/domain/graph/builder/stages/resolve-imports.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/resolve-imports.js +58 -11
- package/dist/domain/graph/builder/stages/resolve-imports.js.map +1 -1
- package/dist/domain/graph/cycles.js +2 -2
- package/dist/domain/graph/cycles.js.map +1 -1
- package/dist/domain/graph/resolve.d.ts.map +1 -1
- package/dist/domain/graph/resolve.js +10 -8
- package/dist/domain/graph/resolve.js.map +1 -1
- package/dist/domain/graph/watcher.d.ts.map +1 -1
- package/dist/domain/graph/watcher.js +1 -3
- package/dist/domain/graph/watcher.js.map +1 -1
- package/dist/domain/parser.d.ts.map +1 -1
- package/dist/domain/parser.js +12 -12
- package/dist/domain/parser.js.map +1 -1
- package/dist/domain/queries.d.ts +3 -2
- package/dist/domain/queries.d.ts.map +1 -1
- package/dist/domain/queries.js +3 -2
- package/dist/domain/queries.js.map +1 -1
- package/dist/domain/search/generator.d.ts.map +1 -1
- package/dist/domain/search/generator.js.map +1 -1
- package/dist/extractors/csharp.js +2 -2
- package/dist/extractors/csharp.js.map +1 -1
- package/dist/extractors/go.js +2 -2
- package/dist/extractors/go.js.map +1 -1
- package/dist/extractors/helpers.d.ts +5 -0
- package/dist/extractors/helpers.d.ts.map +1 -1
- package/dist/extractors/helpers.js +5 -0
- package/dist/extractors/helpers.js.map +1 -1
- package/dist/extractors/javascript.js +111 -98
- package/dist/extractors/javascript.js.map +1 -1
- package/dist/extractors/php.js +2 -2
- package/dist/extractors/php.js.map +1 -1
- package/dist/extractors/python.js +2 -2
- package/dist/extractors/python.js.map +1 -1
- package/dist/extractors/rust.js +4 -3
- package/dist/extractors/rust.js.map +1 -1
- package/dist/features/ast.d.ts +14 -1
- package/dist/features/ast.d.ts.map +1 -1
- package/dist/features/ast.js +38 -1
- package/dist/features/ast.js.map +1 -1
- package/dist/features/audit.d.ts.map +1 -1
- package/dist/features/audit.js +1 -2
- package/dist/features/audit.js.map +1 -1
- package/dist/features/branch-compare.d.ts.map +1 -1
- package/dist/features/branch-compare.js +5 -4
- package/dist/features/branch-compare.js.map +1 -1
- package/dist/features/cfg.d.ts.map +1 -1
- package/dist/features/cfg.js +2 -4
- package/dist/features/cfg.js.map +1 -1
- package/dist/features/cochange.js +4 -4
- package/dist/features/cochange.js.map +1 -1
- package/dist/features/communities.js +4 -4
- package/dist/features/communities.js.map +1 -1
- package/dist/features/complexity-query.d.ts +37 -0
- package/dist/features/complexity-query.d.ts.map +1 -0
- package/dist/features/complexity-query.js +263 -0
- package/dist/features/complexity-query.js.map +1 -0
- package/dist/features/complexity.d.ts +2 -30
- package/dist/features/complexity.d.ts.map +1 -1
- package/dist/features/complexity.js +7 -261
- package/dist/features/complexity.js.map +1 -1
- package/dist/features/dataflow.d.ts.map +1 -1
- package/dist/features/dataflow.js +8 -24
- package/dist/features/dataflow.js.map +1 -1
- package/dist/features/export.d.ts +7 -8
- package/dist/features/export.d.ts.map +1 -1
- package/dist/features/export.js.map +1 -1
- package/dist/features/flow.d.ts.map +1 -1
- package/dist/features/flow.js.map +1 -1
- package/dist/features/graph-enrichment.d.ts.map +1 -1
- package/dist/features/graph-enrichment.js +1 -3
- package/dist/features/graph-enrichment.js.map +1 -1
- package/dist/features/manifesto.js +8 -8
- package/dist/features/manifesto.js.map +1 -1
- package/dist/features/snapshot.js +2 -2
- package/dist/features/snapshot.js.map +1 -1
- package/dist/features/structure-query.d.ts +76 -0
- package/dist/features/structure-query.d.ts.map +1 -0
- package/dist/features/structure-query.js +245 -0
- package/dist/features/structure-query.js.map +1 -0
- package/dist/features/structure.d.ts +12 -67
- package/dist/features/structure.d.ts.map +1 -1
- package/dist/features/structure.js +188 -244
- package/dist/features/structure.js.map +1 -1
- package/dist/features/triage.js +2 -2
- package/dist/features/triage.js.map +1 -1
- package/dist/graph/algorithms/leiden/adapter.d.ts.map +1 -1
- package/dist/graph/algorithms/leiden/adapter.js +2 -9
- package/dist/graph/algorithms/leiden/adapter.js.map +1 -1
- package/dist/graph/classifiers/roles.d.ts +5 -1
- package/dist/graph/classifiers/roles.d.ts.map +1 -1
- package/dist/graph/classifiers/roles.js +20 -12
- package/dist/graph/classifiers/roles.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/config.d.ts.map +1 -1
- package/dist/infrastructure/config.js +12 -11
- package/dist/infrastructure/config.js.map +1 -1
- package/dist/infrastructure/native.d.ts.map +1 -1
- package/dist/infrastructure/native.js +7 -3
- package/dist/infrastructure/native.js.map +1 -1
- package/dist/infrastructure/registry.d.ts.map +1 -1
- package/dist/infrastructure/registry.js +1 -1
- package/dist/infrastructure/registry.js.map +1 -1
- package/dist/infrastructure/update-check.js +3 -3
- package/dist/infrastructure/update-check.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +4 -17
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-registry.d.ts.map +1 -1
- package/dist/mcp/tool-registry.js +9 -4
- package/dist/mcp/tool-registry.js.map +1 -1
- package/dist/mcp/tools/audit.js +1 -1
- package/dist/mcp/tools/audit.js.map +1 -1
- package/dist/mcp/tools/cfg.js +1 -1
- package/dist/mcp/tools/cfg.js.map +1 -1
- package/dist/mcp/tools/check.js +2 -2
- package/dist/mcp/tools/check.js.map +1 -1
- package/dist/mcp/tools/dataflow.js +2 -2
- package/dist/mcp/tools/dataflow.js.map +1 -1
- package/dist/mcp/tools/export-graph.js +1 -1
- package/dist/mcp/tools/export-graph.js.map +1 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/path.d.ts +1 -0
- package/dist/mcp/tools/path.d.ts.map +1 -1
- package/dist/mcp/tools/path.js +9 -0
- package/dist/mcp/tools/path.js.map +1 -1
- package/dist/mcp/tools/query.js +1 -1
- package/dist/mcp/tools/query.js.map +1 -1
- package/dist/mcp/tools/semantic-search.js +1 -1
- package/dist/mcp/tools/semantic-search.js.map +1 -1
- package/dist/mcp/tools/sequence.js +1 -1
- package/dist/mcp/tools/sequence.js.map +1 -1
- package/dist/mcp/tools/symbol-children.js +1 -1
- package/dist/mcp/tools/symbol-children.js.map +1 -1
- package/dist/mcp/tools/triage.js +1 -1
- package/dist/mcp/tools/triage.js.map +1 -1
- package/dist/presentation/audit.d.ts.map +1 -1
- package/dist/presentation/audit.js +0 -1
- package/dist/presentation/audit.js.map +1 -1
- package/dist/presentation/diff-impact-mermaid.d.ts +11 -0
- package/dist/presentation/diff-impact-mermaid.d.ts.map +1 -0
- package/dist/presentation/diff-impact-mermaid.js +105 -0
- package/dist/presentation/diff-impact-mermaid.js.map +1 -0
- package/dist/presentation/flow.d.ts.map +1 -1
- package/dist/presentation/flow.js +0 -2
- package/dist/presentation/flow.js.map +1 -1
- package/dist/presentation/manifesto.d.ts.map +1 -1
- package/dist/presentation/manifesto.js +0 -1
- package/dist/presentation/manifesto.js.map +1 -1
- package/dist/presentation/queries-cli/inspect.d.ts.map +1 -1
- package/dist/presentation/queries-cli/inspect.js.map +1 -1
- package/dist/presentation/queries-cli/path.d.ts.map +1 -1
- package/dist/presentation/queries-cli/path.js +45 -1
- package/dist/presentation/queries-cli/path.js.map +1 -1
- package/dist/presentation/result-formatter.d.ts.map +1 -1
- package/dist/presentation/result-formatter.js +1 -3
- package/dist/presentation/result-formatter.js.map +1 -1
- package/dist/presentation/sequence.d.ts.map +1 -1
- package/dist/presentation/sequence.js +0 -1
- package/dist/presentation/sequence.js.map +1 -1
- package/dist/presentation/structure.d.ts.map +1 -1
- package/dist/presentation/structure.js.map +1 -1
- package/dist/presentation/triage.d.ts.map +1 -1
- package/dist/presentation/triage.js +0 -1
- package/dist/presentation/triage.js.map +1 -1
- package/dist/shared/constants.d.ts +9 -3
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +6 -3
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/errors.d.ts +2 -0
- package/dist/shared/errors.d.ts.map +1 -1
- package/dist/shared/errors.js +4 -0
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/version.d.ts +2 -0
- package/dist/shared/version.d.ts.map +1 -0
- package/dist/shared/version.js +5 -0
- package/dist/shared/version.js.map +1 -0
- package/dist/types.d.ts +230 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +62 -11
- package/src/ast-analysis/engine.ts +3 -9
- package/src/ast-analysis/rules/javascript.ts +1 -0
- package/src/ast-analysis/shared.ts +0 -1
- package/src/ast-analysis/visitors/ast-store-visitor.ts +102 -33
- package/src/ast-analysis/visitors/cfg-conditionals.ts +227 -0
- package/src/ast-analysis/visitors/cfg-loops.ts +136 -0
- package/src/ast-analysis/visitors/cfg-shared.ts +196 -0
- package/src/ast-analysis/visitors/cfg-try-catch.ts +142 -0
- package/src/ast-analysis/visitors/cfg-visitor.ts +34 -655
- package/src/ast-analysis/visitors/complexity-visitor.ts +0 -1
- package/src/ast-analysis/visitors/dataflow-visitor.ts +0 -1
- package/src/cli/commands/batch.ts +4 -3
- package/src/cli/commands/branch-compare.ts +1 -1
- package/src/cli/commands/build.ts +1 -1
- package/src/cli/commands/info.ts +1 -2
- package/src/cli/commands/path.ts +7 -2
- package/src/cli/commands/plot.ts +2 -2
- package/src/cli/commands/watch.ts +1 -1
- package/src/cli/index.ts +2 -2
- package/src/cli/shared/open-graph.ts +2 -2
- package/src/cli/types.ts +1 -1
- package/src/cli.ts +2 -3
- package/src/db/better-sqlite3.ts +20 -0
- package/src/db/connection.ts +191 -16
- package/src/db/index.ts +5 -1
- package/src/db/migrations.ts +9 -0
- package/src/db/query-builder.ts +30 -5
- package/src/db/repository/index.ts +1 -0
- package/src/db/repository/native-repository.ts +361 -0
- package/src/db/repository/nodes.ts +7 -3
- package/src/domain/analysis/brief.ts +0 -1
- package/src/domain/analysis/context.ts +2 -6
- package/src/domain/analysis/dependencies.ts +165 -0
- package/src/domain/analysis/diff-impact.ts +354 -0
- package/src/domain/analysis/exports.ts +0 -2
- package/src/domain/analysis/fn-impact.ts +241 -0
- package/src/domain/analysis/impact.ts +8 -718
- package/src/domain/analysis/module-map.ts +1 -5
- package/src/domain/graph/builder/context.ts +4 -2
- package/src/domain/graph/builder/helpers.ts +14 -11
- package/src/domain/graph/builder/incremental.ts +33 -28
- package/src/domain/graph/builder/pipeline.ts +37 -5
- package/src/domain/graph/builder/stages/build-edges.ts +131 -20
- package/src/domain/graph/builder/stages/build-structure.ts +245 -80
- package/src/domain/graph/builder/stages/collect-files.ts +84 -7
- package/src/domain/graph/builder/stages/detect-changes.ts +49 -32
- package/src/domain/graph/builder/stages/finalize.ts +132 -84
- package/src/domain/graph/builder/stages/insert-nodes.ts +141 -18
- package/src/domain/graph/builder/stages/resolve-imports.ts +75 -10
- package/src/domain/graph/cycles.ts +2 -2
- package/src/domain/graph/resolve.ts +14 -8
- package/src/domain/graph/watcher.ts +2 -4
- package/src/domain/parser.ts +12 -13
- package/src/domain/queries.ts +2 -2
- package/src/domain/search/generator.ts +3 -4
- package/src/extractors/csharp.ts +2 -2
- package/src/extractors/go.ts +2 -2
- package/src/extractors/helpers.ts +6 -0
- package/src/extractors/javascript.ts +112 -97
- package/src/extractors/php.ts +2 -2
- package/src/extractors/python.ts +2 -2
- package/src/extractors/rust.ts +4 -3
- package/src/features/ast.ts +66 -1
- package/src/features/audit.ts +1 -2
- package/src/features/branch-compare.ts +6 -10
- package/src/features/cfg.ts +2 -4
- package/src/features/cochange.ts +4 -4
- package/src/features/communities.ts +4 -4
- package/src/features/complexity-query.ts +370 -0
- package/src/features/complexity.ts +6 -365
- package/src/features/dataflow.ts +48 -70
- package/src/features/export.ts +12 -16
- package/src/features/flow.ts +0 -1
- package/src/features/graph-enrichment.ts +1 -3
- package/src/features/manifesto.ts +8 -8
- package/src/features/snapshot.ts +3 -3
- package/src/features/structure-query.ts +387 -0
- package/src/features/structure.ts +231 -376
- package/src/features/triage.ts +2 -2
- package/src/graph/algorithms/leiden/adapter.ts +2 -9
- package/src/graph/classifiers/roles.ts +22 -13
- package/src/index.ts +1 -0
- package/src/infrastructure/config.ts +12 -13
- package/src/infrastructure/native.ts +7 -3
- package/src/infrastructure/registry.ts +1 -1
- package/src/infrastructure/update-check.ts +3 -3
- package/src/mcp/server.ts +4 -20
- package/src/mcp/tool-registry.ts +11 -4
- package/src/mcp/tools/audit.ts +1 -1
- package/src/mcp/tools/cfg.ts +1 -1
- package/src/mcp/tools/check.ts +2 -2
- package/src/mcp/tools/dataflow.ts +2 -2
- package/src/mcp/tools/export-graph.ts +1 -1
- package/src/mcp/tools/index.ts +0 -1
- package/src/mcp/tools/path.ts +10 -0
- package/src/mcp/tools/query.ts +1 -1
- package/src/mcp/tools/semantic-search.ts +1 -1
- package/src/mcp/tools/sequence.ts +1 -1
- package/src/mcp/tools/symbol-children.ts +1 -1
- package/src/mcp/tools/triage.ts +1 -1
- package/src/presentation/audit.ts +0 -1
- package/src/presentation/diff-impact-mermaid.ts +127 -0
- package/src/presentation/flow.ts +0 -2
- package/src/presentation/manifesto.ts +0 -1
- package/src/presentation/queries-cli/inspect.ts +0 -1
- package/src/presentation/queries-cli/path.ts +71 -1
- package/src/presentation/result-formatter.ts +0 -1
- package/src/presentation/sequence.ts +0 -1
- package/src/presentation/structure.ts +0 -12
- package/src/presentation/triage.ts +0 -1
- package/src/shared/constants.ts +33 -19
- package/src/shared/errors.ts +5 -0
- package/src/shared/version.ts +10 -0
- package/src/types.ts +277 -10
- package/src/vendor.d.ts +0 -39
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { BetterSqlite3Database, RelatedNodeRow } from '../../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* BFS traversal to find transitive callers of a node.
|
|
4
|
+
* When an interface/trait node is encountered (either as the start node or
|
|
5
|
+
* during traversal), its concrete implementors are also added to the frontier
|
|
6
|
+
* so that changes to an interface signature propagate to all implementors.
|
|
7
|
+
*/
|
|
8
|
+
export declare function bfsTransitiveCallers(db: BetterSqlite3Database, startId: number, { noTests, maxDepth, includeImplementors, onVisit, }?: {
|
|
9
|
+
noTests?: boolean;
|
|
10
|
+
maxDepth?: number;
|
|
11
|
+
includeImplementors?: boolean;
|
|
12
|
+
onVisit?: (caller: RelatedNodeRow & {
|
|
13
|
+
viaImplements?: boolean;
|
|
14
|
+
}, parentId: number, depth: number) => void;
|
|
15
|
+
}): {
|
|
16
|
+
totalDependents: number;
|
|
17
|
+
levels: Record<number, {
|
|
18
|
+
name: string;
|
|
19
|
+
kind: string;
|
|
20
|
+
file: string;
|
|
21
|
+
line: number;
|
|
22
|
+
viaImplements?: boolean;
|
|
23
|
+
}[]>;
|
|
24
|
+
};
|
|
25
|
+
export declare function impactAnalysisData(file: string, customDbPath: string, opts?: {
|
|
26
|
+
noTests?: boolean;
|
|
27
|
+
}): {
|
|
28
|
+
file: string;
|
|
29
|
+
sources: string[];
|
|
30
|
+
levels: Record<number, {
|
|
31
|
+
file: string;
|
|
32
|
+
}[]>;
|
|
33
|
+
totalDependents: number;
|
|
34
|
+
};
|
|
35
|
+
export declare function fnImpactData(name: string, customDbPath: string, opts?: {
|
|
36
|
+
depth?: number;
|
|
37
|
+
noTests?: boolean;
|
|
38
|
+
file?: string;
|
|
39
|
+
kind?: string;
|
|
40
|
+
includeImplementors?: boolean;
|
|
41
|
+
limit?: number;
|
|
42
|
+
offset?: number;
|
|
43
|
+
config?: any;
|
|
44
|
+
}): {
|
|
45
|
+
name: string;
|
|
46
|
+
results: {
|
|
47
|
+
levels: Record<number, {
|
|
48
|
+
name: string;
|
|
49
|
+
kind: string;
|
|
50
|
+
file: string;
|
|
51
|
+
line: number;
|
|
52
|
+
viaImplements?: boolean;
|
|
53
|
+
}[]>;
|
|
54
|
+
totalDependents: number;
|
|
55
|
+
name: string;
|
|
56
|
+
kind: string;
|
|
57
|
+
file: string;
|
|
58
|
+
line: number;
|
|
59
|
+
endLine: number | null;
|
|
60
|
+
role: string | null;
|
|
61
|
+
fileHash: string | null;
|
|
62
|
+
}[];
|
|
63
|
+
} & {
|
|
64
|
+
_pagination?: import("../../shared/paginate.js").PaginationMeta;
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=fn-impact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fn-impact.d.ts","sourceRoot":"","sources":["../../../src/domain/analysis/fn-impact.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,qBAAqB,EAAW,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAoBrF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,MAAM,EACf,EACE,OAAe,EACf,QAAY,EACZ,mBAA0B,EAC1B,OAAO,GACR,GAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,CACR,MAAM,EAAE,cAAc,GAAG;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,EACpD,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,KACV,IAAI,CAAC;CACN;;;cAQU,MAAM;cAAQ,MAAM;cAAQ,MAAM;cAAQ,MAAM;wBAAkB,OAAO;;EA0E1F;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO;;;;cAiCc,MAAM;;;EAiBrD;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,GAAG,CAAC;CACT;;;;kBA/IU,MAAM;kBAAQ,MAAM;kBAAQ,MAAM;kBAAQ,MAAM;4BAAkB,OAAO;;;;;;;;;;;;;EAiL1F"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { findDistinctCallers, findFileNodes, findImplementors, findImportDependents, findNodeById, openReadonlyOrFail, } from '../../db/index.js';
|
|
2
|
+
import { loadConfig } from '../../infrastructure/config.js';
|
|
3
|
+
import { isTestFile } from '../../infrastructure/test-filter.js';
|
|
4
|
+
import { normalizeSymbol } from '../../shared/normalize.js';
|
|
5
|
+
import { paginateResult } from '../../shared/paginate.js';
|
|
6
|
+
import { findMatchingNodes } from './symbol-lookup.js';
|
|
7
|
+
// --- Shared BFS: transitive callers ---
|
|
8
|
+
const INTERFACE_LIKE_KINDS = new Set(['interface', 'trait']);
|
|
9
|
+
/**
|
|
10
|
+
* Check whether the graph contains any 'implements' edges.
|
|
11
|
+
* Cached per db handle so the query runs at most once per connection.
|
|
12
|
+
*/
|
|
13
|
+
const _hasImplementsCache = new WeakMap();
|
|
14
|
+
function hasImplementsEdges(db) {
|
|
15
|
+
if (_hasImplementsCache.has(db))
|
|
16
|
+
return _hasImplementsCache.get(db);
|
|
17
|
+
const row = db.prepare("SELECT 1 FROM edges WHERE kind = 'implements' LIMIT 1").get();
|
|
18
|
+
const result = !!row;
|
|
19
|
+
_hasImplementsCache.set(db, result);
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* BFS traversal to find transitive callers of a node.
|
|
24
|
+
* When an interface/trait node is encountered (either as the start node or
|
|
25
|
+
* during traversal), its concrete implementors are also added to the frontier
|
|
26
|
+
* so that changes to an interface signature propagate to all implementors.
|
|
27
|
+
*/
|
|
28
|
+
export function bfsTransitiveCallers(db, startId, { noTests = false, maxDepth = 3, includeImplementors = true, onVisit, } = {}) {
|
|
29
|
+
// Skip all implementor lookups when the graph has no implements edges
|
|
30
|
+
const resolveImplementors = includeImplementors && hasImplementsEdges(db);
|
|
31
|
+
const visited = new Set([startId]);
|
|
32
|
+
const levels = {};
|
|
33
|
+
let frontier = [startId];
|
|
34
|
+
// Seed: if start node is an interface/trait, include its implementors at depth 1.
|
|
35
|
+
// Implementors go into a separate list so their callers appear at depth 2, not depth 1.
|
|
36
|
+
const implNextFrontier = [];
|
|
37
|
+
if (resolveImplementors) {
|
|
38
|
+
const startNode = findNodeById(db, startId);
|
|
39
|
+
if (startNode && INTERFACE_LIKE_KINDS.has(startNode.kind)) {
|
|
40
|
+
const impls = findImplementors(db, startId);
|
|
41
|
+
for (const impl of impls) {
|
|
42
|
+
if (!visited.has(impl.id) && (!noTests || !isTestFile(impl.file))) {
|
|
43
|
+
visited.add(impl.id);
|
|
44
|
+
implNextFrontier.push(impl.id);
|
|
45
|
+
if (!levels[1])
|
|
46
|
+
levels[1] = [];
|
|
47
|
+
levels[1].push({
|
|
48
|
+
name: impl.name,
|
|
49
|
+
kind: impl.kind,
|
|
50
|
+
file: impl.file,
|
|
51
|
+
line: impl.line,
|
|
52
|
+
viaImplements: true,
|
|
53
|
+
});
|
|
54
|
+
if (onVisit)
|
|
55
|
+
onVisit({ ...impl, viaImplements: true }, startId, 1);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
for (let d = 1; d <= maxDepth; d++) {
|
|
61
|
+
// On the first wave, merge seeded implementors so their callers appear at d=2
|
|
62
|
+
if (d === 1 && implNextFrontier.length > 0) {
|
|
63
|
+
frontier = [...frontier, ...implNextFrontier];
|
|
64
|
+
}
|
|
65
|
+
const nextFrontier = [];
|
|
66
|
+
for (const fid of frontier) {
|
|
67
|
+
const callers = findDistinctCallers(db, fid);
|
|
68
|
+
for (const c of callers) {
|
|
69
|
+
if (!visited.has(c.id) && (!noTests || !isTestFile(c.file))) {
|
|
70
|
+
visited.add(c.id);
|
|
71
|
+
nextFrontier.push(c.id);
|
|
72
|
+
if (!levels[d])
|
|
73
|
+
levels[d] = [];
|
|
74
|
+
levels[d].push({ name: c.name, kind: c.kind, file: c.file, line: c.line });
|
|
75
|
+
if (onVisit)
|
|
76
|
+
onVisit(c, fid, d);
|
|
77
|
+
}
|
|
78
|
+
// If a caller is an interface/trait, also pull in its implementors
|
|
79
|
+
// Implementors are one extra hop away, so record at d+1
|
|
80
|
+
if (resolveImplementors && INTERFACE_LIKE_KINDS.has(c.kind)) {
|
|
81
|
+
const impls = findImplementors(db, c.id);
|
|
82
|
+
for (const impl of impls) {
|
|
83
|
+
if (!visited.has(impl.id) && (!noTests || !isTestFile(impl.file))) {
|
|
84
|
+
visited.add(impl.id);
|
|
85
|
+
nextFrontier.push(impl.id);
|
|
86
|
+
const implDepth = d + 1;
|
|
87
|
+
if (!levels[implDepth])
|
|
88
|
+
levels[implDepth] = [];
|
|
89
|
+
levels[implDepth].push({
|
|
90
|
+
name: impl.name,
|
|
91
|
+
kind: impl.kind,
|
|
92
|
+
file: impl.file,
|
|
93
|
+
line: impl.line,
|
|
94
|
+
viaImplements: true,
|
|
95
|
+
});
|
|
96
|
+
if (onVisit)
|
|
97
|
+
onVisit({ ...impl, viaImplements: true }, c.id, implDepth);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
frontier = nextFrontier;
|
|
104
|
+
if (frontier.length === 0)
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
return { totalDependents: visited.size - 1, levels };
|
|
108
|
+
}
|
|
109
|
+
export function impactAnalysisData(file, customDbPath, opts = {}) {
|
|
110
|
+
const db = openReadonlyOrFail(customDbPath);
|
|
111
|
+
try {
|
|
112
|
+
const noTests = opts.noTests || false;
|
|
113
|
+
const fileNodes = findFileNodes(db, `%${file}%`);
|
|
114
|
+
if (fileNodes.length === 0) {
|
|
115
|
+
return { file, sources: [], levels: {}, totalDependents: 0 };
|
|
116
|
+
}
|
|
117
|
+
const visited = new Set();
|
|
118
|
+
const queue = [];
|
|
119
|
+
const levels = new Map();
|
|
120
|
+
for (const fn of fileNodes) {
|
|
121
|
+
visited.add(fn.id);
|
|
122
|
+
queue.push(fn.id);
|
|
123
|
+
levels.set(fn.id, 0);
|
|
124
|
+
}
|
|
125
|
+
while (queue.length > 0) {
|
|
126
|
+
const current = queue.shift();
|
|
127
|
+
const level = levels.get(current);
|
|
128
|
+
const dependents = findImportDependents(db, current);
|
|
129
|
+
for (const dep of dependents) {
|
|
130
|
+
if (!visited.has(dep.id) && (!noTests || !isTestFile(dep.file))) {
|
|
131
|
+
visited.add(dep.id);
|
|
132
|
+
queue.push(dep.id);
|
|
133
|
+
levels.set(dep.id, level + 1);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const byLevel = {};
|
|
138
|
+
for (const [id, level] of levels) {
|
|
139
|
+
if (level === 0)
|
|
140
|
+
continue;
|
|
141
|
+
if (!byLevel[level])
|
|
142
|
+
byLevel[level] = [];
|
|
143
|
+
const node = findNodeById(db, id);
|
|
144
|
+
if (node)
|
|
145
|
+
byLevel[level].push({ file: node.file });
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
file,
|
|
149
|
+
sources: fileNodes.map((f) => f.file),
|
|
150
|
+
levels: byLevel,
|
|
151
|
+
totalDependents: visited.size - fileNodes.length,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
finally {
|
|
155
|
+
db.close();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
export function fnImpactData(name, customDbPath, opts = {}) {
|
|
159
|
+
const db = openReadonlyOrFail(customDbPath);
|
|
160
|
+
try {
|
|
161
|
+
const config = opts.config || loadConfig();
|
|
162
|
+
const maxDepth = opts.depth || config.analysis?.fnImpactDepth || 5;
|
|
163
|
+
const noTests = opts.noTests || false;
|
|
164
|
+
const hc = new Map();
|
|
165
|
+
const nodes = findMatchingNodes(db, name, { noTests, file: opts.file, kind: opts.kind });
|
|
166
|
+
if (nodes.length === 0) {
|
|
167
|
+
return { name, results: [] };
|
|
168
|
+
}
|
|
169
|
+
const includeImplementors = opts.includeImplementors !== false;
|
|
170
|
+
const results = nodes.map((node) => {
|
|
171
|
+
const { levels, totalDependents } = bfsTransitiveCallers(db, node.id, {
|
|
172
|
+
noTests,
|
|
173
|
+
maxDepth,
|
|
174
|
+
includeImplementors,
|
|
175
|
+
});
|
|
176
|
+
return {
|
|
177
|
+
...normalizeSymbol(node, db, hc),
|
|
178
|
+
levels,
|
|
179
|
+
totalDependents,
|
|
180
|
+
};
|
|
181
|
+
});
|
|
182
|
+
const base = { name, results };
|
|
183
|
+
return paginateResult(base, 'results', { limit: opts.limit, offset: opts.offset });
|
|
184
|
+
}
|
|
185
|
+
finally {
|
|
186
|
+
db.close();
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=fn-impact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fn-impact.js","sourceRoot":"","sources":["../../../src/domain/analysis/fn-impact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,151 +1,11 @@
|
|
|
1
|
-
import type { BetterSqlite3Database, RelatedNodeRow } from '../../types.js';
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* impact.ts — Re-export barrel for backward compatibility.
|
|
3
|
+
*
|
|
4
|
+
* The implementation has been split into focused modules:
|
|
5
|
+
* - fn-impact.ts: bfsTransitiveCallers, impactAnalysisData, fnImpactData
|
|
6
|
+
* - diff-impact.ts: diffImpactData and git diff analysis helpers
|
|
7
|
+
* - presentation/diff-impact-mermaid.ts: diffImpactMermaid (Mermaid diagram generation)
|
|
7
8
|
*/
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
maxDepth?: number;
|
|
11
|
-
includeImplementors?: boolean;
|
|
12
|
-
onVisit?: (caller: RelatedNodeRow & {
|
|
13
|
-
viaImplements?: boolean;
|
|
14
|
-
}, parentId: number, depth: number) => void;
|
|
15
|
-
}): {
|
|
16
|
-
totalDependents: number;
|
|
17
|
-
levels: Record<number, {
|
|
18
|
-
name: string;
|
|
19
|
-
kind: string;
|
|
20
|
-
file: string;
|
|
21
|
-
line: number;
|
|
22
|
-
viaImplements?: boolean;
|
|
23
|
-
}[]>;
|
|
24
|
-
};
|
|
25
|
-
export declare function impactAnalysisData(file: string, customDbPath: string, opts?: {
|
|
26
|
-
noTests?: boolean;
|
|
27
|
-
}): {
|
|
28
|
-
file: string;
|
|
29
|
-
sources: string[];
|
|
30
|
-
levels: Record<number, {
|
|
31
|
-
file: string;
|
|
32
|
-
}[]>;
|
|
33
|
-
totalDependents: number;
|
|
34
|
-
};
|
|
35
|
-
export declare function fnImpactData(name: string, customDbPath: string, opts?: {
|
|
36
|
-
depth?: number;
|
|
37
|
-
noTests?: boolean;
|
|
38
|
-
file?: string;
|
|
39
|
-
kind?: string;
|
|
40
|
-
includeImplementors?: boolean;
|
|
41
|
-
limit?: number;
|
|
42
|
-
offset?: number;
|
|
43
|
-
config?: any;
|
|
44
|
-
}): {
|
|
45
|
-
name: string;
|
|
46
|
-
results: {
|
|
47
|
-
levels: Record<number, {
|
|
48
|
-
name: string;
|
|
49
|
-
kind: string;
|
|
50
|
-
file: string;
|
|
51
|
-
line: number;
|
|
52
|
-
viaImplements?: boolean;
|
|
53
|
-
}[]>;
|
|
54
|
-
totalDependents: number;
|
|
55
|
-
name: string;
|
|
56
|
-
kind: string;
|
|
57
|
-
file: string;
|
|
58
|
-
line: number;
|
|
59
|
-
endLine: number | null;
|
|
60
|
-
role: string | null;
|
|
61
|
-
fileHash: string | null;
|
|
62
|
-
}[];
|
|
63
|
-
} & {
|
|
64
|
-
_pagination?: import("../../shared/paginate.js").PaginationMeta;
|
|
65
|
-
};
|
|
66
|
-
/**
|
|
67
|
-
* Fix #2: Shell injection vulnerability.
|
|
68
|
-
* Uses execFileSync instead of execSync to prevent shell interpretation of user input.
|
|
69
|
-
*/
|
|
70
|
-
export declare function diffImpactData(customDbPath: string, opts?: {
|
|
71
|
-
noTests?: boolean;
|
|
72
|
-
depth?: number;
|
|
73
|
-
staged?: boolean;
|
|
74
|
-
ref?: string;
|
|
75
|
-
includeImplementors?: boolean;
|
|
76
|
-
limit?: number;
|
|
77
|
-
offset?: number;
|
|
78
|
-
config?: any;
|
|
79
|
-
}): ({
|
|
80
|
-
changedFiles: number;
|
|
81
|
-
newFiles: string[];
|
|
82
|
-
affectedFunctions: {
|
|
83
|
-
name: string;
|
|
84
|
-
kind: import("../../types.js").AnyNodeKind;
|
|
85
|
-
file: string;
|
|
86
|
-
line: number;
|
|
87
|
-
transitiveCallers: number;
|
|
88
|
-
levels: Record<number, {
|
|
89
|
-
name: string;
|
|
90
|
-
kind: string;
|
|
91
|
-
file: string;
|
|
92
|
-
line: number;
|
|
93
|
-
viaImplements?: boolean;
|
|
94
|
-
}[]>;
|
|
95
|
-
edges: {
|
|
96
|
-
from: string;
|
|
97
|
-
to: string;
|
|
98
|
-
}[];
|
|
99
|
-
}[];
|
|
100
|
-
affectedFiles: string[];
|
|
101
|
-
historicallyCoupled: {
|
|
102
|
-
file: string;
|
|
103
|
-
coupledWith: string;
|
|
104
|
-
commitCount: number;
|
|
105
|
-
jaccard: number;
|
|
106
|
-
}[];
|
|
107
|
-
ownership: {
|
|
108
|
-
owners: {
|
|
109
|
-
[k: string]: string[];
|
|
110
|
-
};
|
|
111
|
-
affectedOwners: string[];
|
|
112
|
-
suggestedReviewers: string[];
|
|
113
|
-
} | null;
|
|
114
|
-
boundaryViolations: import("../../features/boundaries.js").BoundaryViolation[];
|
|
115
|
-
boundaryViolationCount: number;
|
|
116
|
-
summary: {
|
|
117
|
-
functionsChanged: number;
|
|
118
|
-
callersAffected: number;
|
|
119
|
-
filesAffected: number;
|
|
120
|
-
historicallyCoupledCount: number;
|
|
121
|
-
ownersAffected: number;
|
|
122
|
-
boundaryViolationCount: number;
|
|
123
|
-
};
|
|
124
|
-
} & {
|
|
125
|
-
_pagination?: import("../../shared/paginate.js").PaginationMeta;
|
|
126
|
-
}) | {
|
|
127
|
-
error: string | undefined;
|
|
128
|
-
changedFiles?: undefined;
|
|
129
|
-
newFiles?: undefined;
|
|
130
|
-
affectedFunctions?: undefined;
|
|
131
|
-
affectedFiles?: undefined;
|
|
132
|
-
summary?: undefined;
|
|
133
|
-
} | {
|
|
134
|
-
changedFiles: number;
|
|
135
|
-
newFiles: never[];
|
|
136
|
-
affectedFunctions: never[];
|
|
137
|
-
affectedFiles: never[];
|
|
138
|
-
summary: null;
|
|
139
|
-
error?: undefined;
|
|
140
|
-
};
|
|
141
|
-
export declare function diffImpactMermaid(customDbPath: string, opts?: {
|
|
142
|
-
noTests?: boolean;
|
|
143
|
-
depth?: number;
|
|
144
|
-
staged?: boolean;
|
|
145
|
-
ref?: string;
|
|
146
|
-
includeImplementors?: boolean;
|
|
147
|
-
limit?: number;
|
|
148
|
-
offset?: number;
|
|
149
|
-
config?: any;
|
|
150
|
-
}): string;
|
|
9
|
+
export { diffImpactData } from './diff-impact.js';
|
|
10
|
+
export { bfsTransitiveCallers, fnImpactData, impactAnalysisData } from './fn-impact.js';
|
|
151
11
|
//# sourceMappingURL=impact.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impact.d.ts","sourceRoot":"","sources":["../../../src/domain/analysis/impact.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"impact.d.ts","sourceRoot":"","sources":["../../../src/domain/analysis/impact.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|