@optave/codegraph 3.13.0 → 3.15.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 +35 -34
- package/dist/ast-analysis/engine.d.ts.map +1 -1
- package/dist/ast-analysis/engine.js +38 -40
- package/dist/ast-analysis/engine.js.map +1 -1
- package/dist/ast-analysis/rules/b2.d.ts +7 -0
- package/dist/ast-analysis/rules/b2.d.ts.map +1 -0
- package/dist/ast-analysis/rules/b2.js +240 -0
- package/dist/ast-analysis/rules/b2.js.map +1 -0
- package/dist/ast-analysis/rules/b3.d.ts +6 -0
- package/dist/ast-analysis/rules/b3.d.ts.map +1 -0
- package/dist/ast-analysis/rules/b3.js +105 -0
- package/dist/ast-analysis/rules/b3.js.map +1 -0
- package/dist/ast-analysis/rules/b4.d.ts +9 -0
- package/dist/ast-analysis/rules/b4.d.ts.map +1 -0
- package/dist/ast-analysis/rules/b4.js +361 -0
- package/dist/ast-analysis/rules/b4.js.map +1 -0
- package/dist/ast-analysis/rules/b5.d.ts +4 -0
- package/dist/ast-analysis/rules/b5.d.ts.map +1 -0
- package/dist/ast-analysis/rules/b5.js +52 -0
- package/dist/ast-analysis/rules/b5.js.map +1 -0
- package/dist/ast-analysis/rules/c.d.ts +4 -0
- package/dist/ast-analysis/rules/c.d.ts.map +1 -0
- package/dist/ast-analysis/rules/c.js +143 -0
- package/dist/ast-analysis/rules/c.js.map +1 -0
- package/dist/ast-analysis/rules/index.d.ts.map +1 -1
- package/dist/ast-analysis/rules/index.js +34 -0
- package/dist/ast-analysis/rules/index.js.map +1 -1
- package/dist/ast-analysis/rules/javascript.d.ts.map +1 -1
- package/dist/ast-analysis/rules/javascript.js +3 -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 +2 -0
- package/dist/ast-analysis/shared.js.map +1 -1
- package/dist/ast-analysis/visitor-utils.d.ts +1 -0
- package/dist/ast-analysis/visitor-utils.d.ts.map +1 -1
- package/dist/ast-analysis/visitor-utils.js +5 -0
- package/dist/ast-analysis/visitor-utils.js.map +1 -1
- package/dist/ast-analysis/visitor.d.ts.map +1 -1
- package/dist/ast-analysis/visitor.js +60 -47
- package/dist/ast-analysis/visitor.js.map +1 -1
- package/dist/ast-analysis/visitors/cfg-visitor.d.ts.map +1 -1
- package/dist/ast-analysis/visitors/cfg-visitor.js +126 -76
- 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 +27 -15
- 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 +54 -21
- package/dist/ast-analysis/visitors/dataflow-visitor.js.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +137 -134
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/roles.d.ts.map +1 -1
- package/dist/cli/commands/roles.js +6 -1
- package/dist/cli/commands/roles.js.map +1 -1
- package/dist/db/better-sqlite3.d.ts +2 -1
- package/dist/db/better-sqlite3.d.ts.map +1 -1
- package/dist/db/better-sqlite3.js.map +1 -1
- package/dist/db/connection.d.ts +7 -1
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +20 -5
- package/dist/db/connection.js.map +1 -1
- package/dist/db/index.d.ts +1 -1
- 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 +68 -0
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/repository/build-stmts.d.ts.map +1 -1
- package/dist/db/repository/build-stmts.js +18 -0
- package/dist/db/repository/build-stmts.js.map +1 -1
- package/dist/db/repository/dataflow.d.ts +5 -0
- package/dist/db/repository/dataflow.d.ts.map +1 -1
- package/dist/db/repository/dataflow.js +14 -0
- package/dist/db/repository/dataflow.js.map +1 -1
- package/dist/db/repository/index.d.ts +1 -1
- package/dist/db/repository/index.d.ts.map +1 -1
- package/dist/db/repository/index.js +1 -1
- package/dist/db/repository/index.js.map +1 -1
- package/dist/db/repository/native-repository.d.ts.map +1 -1
- package/dist/db/repository/native-repository.js +47 -34
- package/dist/db/repository/native-repository.js.map +1 -1
- package/dist/domain/analysis/context.d.ts +2 -2
- package/dist/domain/analysis/dependencies.d.ts +2 -2
- package/dist/domain/analysis/diff-impact.d.ts +2 -2
- package/dist/domain/analysis/fn-impact.d.ts +3 -1
- package/dist/domain/analysis/fn-impact.d.ts.map +1 -1
- package/dist/domain/analysis/fn-impact.js +4 -0
- package/dist/domain/analysis/fn-impact.js.map +1 -1
- package/dist/domain/analysis/implementations.d.ts +2 -2
- package/dist/domain/analysis/module-map.d.ts.map +1 -1
- package/dist/domain/analysis/module-map.js +32 -5
- package/dist/domain/analysis/module-map.js.map +1 -1
- package/dist/domain/analysis/roles.d.ts +7 -1
- package/dist/domain/analysis/roles.d.ts.map +1 -1
- package/dist/domain/analysis/roles.js +16 -0
- package/dist/domain/analysis/roles.js.map +1 -1
- package/dist/domain/analysis/symbol-lookup.d.ts +4 -4
- package/dist/domain/graph/builder/call-resolver.d.ts +17 -5
- package/dist/domain/graph/builder/call-resolver.d.ts.map +1 -1
- package/dist/domain/graph/builder/call-resolver.js +85 -220
- package/dist/domain/graph/builder/call-resolver.js.map +1 -1
- package/dist/domain/graph/builder/context.d.ts +1 -0
- package/dist/domain/graph/builder/context.d.ts.map +1 -1
- package/dist/domain/graph/builder/context.js.map +1 -1
- package/dist/domain/graph/builder/helpers.d.ts +16 -1
- package/dist/domain/graph/builder/helpers.d.ts.map +1 -1
- package/dist/domain/graph/builder/helpers.js +162 -72
- package/dist/domain/graph/builder/helpers.js.map +1 -1
- package/dist/domain/graph/builder/incremental.d.ts.map +1 -1
- package/dist/domain/graph/builder/incremental.js +166 -97
- 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 +10 -4
- 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 +496 -250
- package/dist/domain/graph/builder/stages/build-edges.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 +10 -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 +2 -1
- package/dist/domain/graph/builder/stages/detect-changes.js.map +1 -1
- package/dist/domain/graph/builder/stages/native-orchestrator.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/native-orchestrator.js +895 -545
- package/dist/domain/graph/builder/stages/native-orchestrator.js.map +1 -1
- package/dist/domain/graph/resolver/points-to.d.ts.map +1 -1
- package/dist/domain/graph/resolver/points-to.js +105 -57
- package/dist/domain/graph/resolver/points-to.js.map +1 -1
- package/dist/domain/graph/resolver/strategy.d.ts +61 -0
- package/dist/domain/graph/resolver/strategy.d.ts.map +1 -0
- package/dist/domain/graph/resolver/strategy.js +222 -0
- package/dist/domain/graph/resolver/strategy.js.map +1 -0
- package/dist/domain/graph/watcher.d.ts.map +1 -1
- package/dist/domain/graph/watcher.js +16 -9
- package/dist/domain/graph/watcher.js.map +1 -1
- package/dist/domain/parser.d.ts +12 -0
- package/dist/domain/parser.d.ts.map +1 -1
- package/dist/domain/parser.js +12 -2
- package/dist/domain/parser.js.map +1 -1
- package/dist/domain/queries.d.ts +1 -1
- package/dist/domain/queries.d.ts.map +1 -1
- package/dist/domain/queries.js +1 -1
- package/dist/domain/queries.js.map +1 -1
- package/dist/domain/wasm-worker-entry.js +3 -0
- package/dist/domain/wasm-worker-entry.js.map +1 -1
- package/dist/domain/wasm-worker-pool.d.ts.map +1 -1
- package/dist/domain/wasm-worker-pool.js +24 -5
- package/dist/domain/wasm-worker-pool.js.map +1 -1
- package/dist/domain/wasm-worker-protocol.d.ts +7 -0
- package/dist/domain/wasm-worker-protocol.d.ts.map +1 -1
- package/dist/extractors/dart.js +48 -3
- package/dist/extractors/dart.js.map +1 -1
- package/dist/extractors/groovy.js +62 -3
- package/dist/extractors/groovy.js.map +1 -1
- package/dist/extractors/helpers.d.ts +4 -2
- package/dist/extractors/helpers.d.ts.map +1 -1
- package/dist/extractors/helpers.js +5 -1
- package/dist/extractors/helpers.js.map +1 -1
- package/dist/extractors/java.js +77 -1
- package/dist/extractors/java.js.map +1 -1
- package/dist/extractors/javascript.d.ts.map +1 -1
- package/dist/extractors/javascript.js +549 -163
- package/dist/extractors/javascript.js.map +1 -1
- package/dist/extractors/kotlin.js +58 -3
- package/dist/extractors/kotlin.js.map +1 -1
- package/dist/extractors/objc.js +25 -2
- package/dist/extractors/objc.js.map +1 -1
- package/dist/extractors/scala.js +62 -2
- package/dist/extractors/scala.js.map +1 -1
- package/dist/extractors/swift.js +52 -3
- package/dist/extractors/swift.js.map +1 -1
- package/dist/features/audit.js +26 -23
- package/dist/features/audit.js.map +1 -1
- package/dist/features/boundaries.d.ts.map +1 -1
- package/dist/features/boundaries.js +12 -9
- package/dist/features/boundaries.js.map +1 -1
- package/dist/features/cfg.d.ts.map +1 -1
- package/dist/features/cfg.js +25 -18
- package/dist/features/cfg.js.map +1 -1
- package/dist/features/check.d.ts.map +1 -1
- package/dist/features/check.js +18 -5
- package/dist/features/check.js.map +1 -1
- package/dist/features/communities.d.ts +4 -2
- package/dist/features/communities.d.ts.map +1 -1
- package/dist/features/communities.js +6 -4
- package/dist/features/communities.js.map +1 -1
- package/dist/features/dataflow.d.ts +60 -0
- package/dist/features/dataflow.d.ts.map +1 -1
- package/dist/features/dataflow.js +530 -6
- package/dist/features/dataflow.js.map +1 -1
- package/dist/features/manifesto.d.ts.map +1 -1
- package/dist/features/manifesto.js +59 -72
- package/dist/features/manifesto.js.map +1 -1
- package/dist/features/sequence.d.ts.map +1 -1
- package/dist/features/sequence.js +27 -22
- package/dist/features/sequence.js.map +1 -1
- package/dist/features/snapshot.d.ts.map +1 -1
- package/dist/features/snapshot.js +36 -28
- package/dist/features/snapshot.js.map +1 -1
- package/dist/features/structure.d.ts.map +1 -1
- package/dist/features/structure.js +150 -62
- package/dist/features/structure.js.map +1 -1
- package/dist/features/triage.d.ts.map +1 -1
- package/dist/features/triage.js +18 -11
- package/dist/features/triage.js.map +1 -1
- package/dist/graph/algorithms/bfs.d.ts +1 -1
- package/dist/graph/algorithms/bfs.d.ts.map +1 -1
- package/dist/graph/algorithms/bfs.js +14 -13
- package/dist/graph/algorithms/bfs.js.map +1 -1
- package/dist/graph/algorithms/tarjan.d.ts.map +1 -1
- package/dist/graph/algorithms/tarjan.js +5 -0
- package/dist/graph/algorithms/tarjan.js.map +1 -1
- package/dist/graph/builders/dependency.js +28 -22
- package/dist/graph/builders/dependency.js.map +1 -1
- package/dist/graph/classifiers/roles.d.ts +10 -1
- package/dist/graph/classifiers/roles.d.ts.map +1 -1
- package/dist/graph/classifiers/roles.js +60 -6
- package/dist/graph/classifiers/roles.js.map +1 -1
- package/dist/infrastructure/config.d.ts +10 -0
- package/dist/infrastructure/config.d.ts.map +1 -1
- package/dist/infrastructure/config.js +31 -3
- package/dist/infrastructure/config.js.map +1 -1
- package/dist/infrastructure/registry.d.ts +0 -7
- package/dist/infrastructure/registry.d.ts.map +1 -1
- package/dist/infrastructure/registry.js +29 -13
- package/dist/infrastructure/registry.js.map +1 -1
- package/dist/infrastructure/update-check.d.ts.map +1 -1
- package/dist/infrastructure/update-check.js +49 -31
- package/dist/infrastructure/update-check.js.map +1 -1
- package/dist/mcp/server.d.ts +2 -10
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/ast-query.d.ts +1 -1
- package/dist/mcp/tools/ast-query.d.ts.map +1 -1
- package/dist/mcp/tools/audit.d.ts +1 -1
- package/dist/mcp/tools/audit.d.ts.map +1 -1
- package/dist/mcp/tools/batch-query.d.ts +1 -1
- package/dist/mcp/tools/batch-query.d.ts.map +1 -1
- package/dist/mcp/tools/branch-compare.d.ts +1 -1
- package/dist/mcp/tools/branch-compare.d.ts.map +1 -1
- package/dist/mcp/tools/brief.d.ts +1 -1
- package/dist/mcp/tools/brief.d.ts.map +1 -1
- package/dist/mcp/tools/cfg.d.ts +1 -1
- package/dist/mcp/tools/cfg.d.ts.map +1 -1
- package/dist/mcp/tools/check.d.ts +1 -1
- package/dist/mcp/tools/check.d.ts.map +1 -1
- package/dist/mcp/tools/co-changes.d.ts +1 -1
- package/dist/mcp/tools/co-changes.d.ts.map +1 -1
- package/dist/mcp/tools/code-owners.d.ts +1 -1
- package/dist/mcp/tools/code-owners.d.ts.map +1 -1
- package/dist/mcp/tools/communities.d.ts +1 -1
- package/dist/mcp/tools/communities.d.ts.map +1 -1
- package/dist/mcp/tools/complexity.d.ts +1 -1
- package/dist/mcp/tools/complexity.d.ts.map +1 -1
- package/dist/mcp/tools/context.d.ts +1 -1
- package/dist/mcp/tools/context.d.ts.map +1 -1
- package/dist/mcp/tools/dataflow.d.ts +1 -1
- package/dist/mcp/tools/dataflow.d.ts.map +1 -1
- package/dist/mcp/tools/diff-impact.d.ts +1 -1
- package/dist/mcp/tools/diff-impact.d.ts.map +1 -1
- package/dist/mcp/tools/execution-flow.d.ts +1 -1
- package/dist/mcp/tools/execution-flow.d.ts.map +1 -1
- package/dist/mcp/tools/export-graph.d.ts +1 -1
- package/dist/mcp/tools/export-graph.d.ts.map +1 -1
- package/dist/mcp/tools/file-deps.d.ts +1 -1
- package/dist/mcp/tools/file-deps.d.ts.map +1 -1
- package/dist/mcp/tools/file-exports.d.ts +1 -1
- package/dist/mcp/tools/file-exports.d.ts.map +1 -1
- package/dist/mcp/tools/find-cycles.d.ts +1 -1
- package/dist/mcp/tools/find-cycles.d.ts.map +1 -1
- package/dist/mcp/tools/fn-impact.d.ts +1 -1
- package/dist/mcp/tools/fn-impact.d.ts.map +1 -1
- package/dist/mcp/tools/impact-analysis.d.ts +1 -1
- package/dist/mcp/tools/impact-analysis.d.ts.map +1 -1
- package/dist/mcp/tools/implementations.d.ts +1 -1
- package/dist/mcp/tools/implementations.d.ts.map +1 -1
- package/dist/mcp/tools/index.d.ts +2 -5
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/interfaces.d.ts +1 -1
- package/dist/mcp/tools/interfaces.d.ts.map +1 -1
- package/dist/mcp/tools/list-functions.d.ts +1 -1
- package/dist/mcp/tools/list-functions.d.ts.map +1 -1
- package/dist/mcp/tools/list-repos.d.ts +1 -1
- package/dist/mcp/tools/list-repos.d.ts.map +1 -1
- package/dist/mcp/tools/module-map.d.ts +1 -1
- package/dist/mcp/tools/module-map.d.ts.map +1 -1
- package/dist/mcp/tools/node-roles.d.ts +1 -1
- package/dist/mcp/tools/node-roles.d.ts.map +1 -1
- package/dist/mcp/tools/path.d.ts +1 -1
- package/dist/mcp/tools/path.d.ts.map +1 -1
- package/dist/mcp/tools/query.d.ts +1 -1
- package/dist/mcp/tools/query.d.ts.map +1 -1
- package/dist/mcp/tools/semantic-search.d.ts +1 -1
- package/dist/mcp/tools/semantic-search.d.ts.map +1 -1
- package/dist/mcp/tools/sequence.d.ts +1 -1
- package/dist/mcp/tools/sequence.d.ts.map +1 -1
- package/dist/mcp/tools/structure.d.ts +1 -1
- package/dist/mcp/tools/structure.d.ts.map +1 -1
- package/dist/mcp/tools/symbol-children.d.ts +1 -1
- package/dist/mcp/tools/symbol-children.d.ts.map +1 -1
- package/dist/mcp/tools/triage.d.ts +1 -1
- package/dist/mcp/tools/triage.d.ts.map +1 -1
- package/dist/mcp/tools/where.d.ts +1 -1
- package/dist/mcp/tools/where.d.ts.map +1 -1
- package/dist/mcp/types.d.ts +19 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +6 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/presentation/queries-cli/index.d.ts +1 -1
- package/dist/presentation/queries-cli/index.d.ts.map +1 -1
- package/dist/presentation/queries-cli/index.js +1 -1
- package/dist/presentation/queries-cli/index.js.map +1 -1
- package/dist/presentation/queries-cli/overview.d.ts +1 -0
- package/dist/presentation/queries-cli/overview.d.ts.map +1 -1
- package/dist/presentation/queries-cli/overview.js +20 -1
- package/dist/presentation/queries-cli/overview.js.map +1 -1
- package/dist/presentation/queries-cli.d.ts +1 -1
- package/dist/presentation/queries-cli.d.ts.map +1 -1
- package/dist/presentation/queries-cli.js +1 -1
- package/dist/presentation/queries-cli.js.map +1 -1
- package/dist/presentation/viewer.d.ts.map +1 -1
- package/dist/presentation/viewer.js +45 -32
- package/dist/presentation/viewer.js.map +1 -1
- package/dist/shared/constants.d.ts +21 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +25 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/normalize.d.ts.map +1 -1
- package/dist/shared/normalize.js +12 -22
- package/dist/shared/normalize.js.map +1 -1
- package/dist/shared/paginate.d.ts +4 -17
- package/dist/shared/paginate.d.ts.map +1 -1
- package/dist/shared/paginate.js.map +1 -1
- package/dist/types.d.ts +76 -1
- package/dist/types.d.ts.map +1 -1
- package/grammars/tree-sitter-erlang.wasm +0 -0
- package/package.json +7 -7
- package/src/ast-analysis/engine.ts +43 -63
- package/src/ast-analysis/rules/b2.ts +263 -0
- package/src/ast-analysis/rules/b3.ts +127 -0
- package/src/ast-analysis/rules/b4.ts +378 -0
- package/src/ast-analysis/rules/b5.ts +65 -0
- package/src/ast-analysis/rules/c.ts +157 -0
- package/src/ast-analysis/rules/index.ts +34 -0
- package/src/ast-analysis/rules/javascript.ts +3 -0
- package/src/ast-analysis/shared.ts +2 -0
- package/src/ast-analysis/visitor-utils.ts +5 -0
- package/src/ast-analysis/visitor.ts +82 -52
- package/src/ast-analysis/visitors/cfg-visitor.ts +198 -84
- package/src/ast-analysis/visitors/complexity-visitor.ts +44 -16
- package/src/ast-analysis/visitors/dataflow-visitor.ts +68 -29
- package/src/cli/commands/config.ts +184 -184
- package/src/cli/commands/roles.ts +6 -1
- package/src/db/better-sqlite3.ts +5 -4
- package/src/db/connection.ts +23 -5
- package/src/db/index.ts +1 -0
- package/src/db/migrations.ts +68 -0
- package/src/db/repository/build-stmts.ts +30 -0
- package/src/db/repository/dataflow.ts +16 -0
- package/src/db/repository/index.ts +1 -1
- package/src/db/repository/native-repository.ts +56 -40
- package/src/domain/analysis/fn-impact.ts +4 -0
- package/src/domain/analysis/module-map.ts +38 -6
- package/src/domain/analysis/roles.ts +23 -0
- package/src/domain/graph/builder/call-resolver.ts +112 -232
- package/src/domain/graph/builder/context.ts +1 -0
- package/src/domain/graph/builder/helpers.ts +190 -72
- package/src/domain/graph/builder/incremental.ts +249 -120
- package/src/domain/graph/builder/pipeline.ts +11 -5
- package/src/domain/graph/builder/stages/build-edges.ts +696 -296
- package/src/domain/graph/builder/stages/collect-files.ts +12 -6
- package/src/domain/graph/builder/stages/detect-changes.ts +3 -1
- package/src/domain/graph/builder/stages/native-orchestrator.ts +1102 -590
- package/src/domain/graph/resolver/points-to.ts +182 -59
- package/src/domain/graph/resolver/strategy.ts +265 -0
- package/src/domain/graph/watcher.ts +19 -9
- package/src/domain/parser.ts +12 -2
- package/src/domain/queries.ts +1 -1
- package/src/domain/wasm-worker-entry.ts +3 -0
- package/src/domain/wasm-worker-pool.ts +28 -4
- package/src/domain/wasm-worker-protocol.ts +4 -0
- package/src/extractors/dart.ts +48 -3
- package/src/extractors/groovy.ts +62 -2
- package/src/extractors/helpers.ts +5 -2
- package/src/extractors/java.ts +80 -1
- package/src/extractors/javascript.ts +566 -161
- package/src/extractors/kotlin.ts +57 -3
- package/src/extractors/objc.ts +25 -1
- package/src/extractors/scala.ts +63 -1
- package/src/extractors/swift.ts +46 -3
- package/src/features/audit.ts +43 -34
- package/src/features/boundaries.ts +17 -9
- package/src/features/cfg.ts +31 -22
- package/src/features/check.ts +21 -5
- package/src/features/communities.ts +28 -19
- package/src/features/dataflow.ts +755 -6
- package/src/features/manifesto.ts +76 -75
- package/src/features/sequence.ts +29 -23
- package/src/features/snapshot.ts +36 -25
- package/src/features/structure.ts +185 -55
- package/src/features/triage.ts +28 -15
- package/src/graph/algorithms/bfs.ts +13 -12
- package/src/graph/algorithms/tarjan.ts +5 -0
- package/src/graph/builders/dependency.ts +35 -23
- package/src/graph/classifiers/roles.ts +74 -7
- package/src/infrastructure/config.ts +32 -3
- package/src/infrastructure/registry.ts +44 -20
- package/src/infrastructure/update-check.ts +55 -33
- package/src/mcp/server.ts +2 -8
- package/src/mcp/tools/ast-query.ts +1 -1
- package/src/mcp/tools/audit.ts +1 -1
- package/src/mcp/tools/batch-query.ts +1 -1
- package/src/mcp/tools/branch-compare.ts +1 -1
- package/src/mcp/tools/brief.ts +1 -1
- package/src/mcp/tools/cfg.ts +1 -1
- package/src/mcp/tools/check.ts +1 -1
- package/src/mcp/tools/co-changes.ts +1 -1
- package/src/mcp/tools/code-owners.ts +1 -1
- package/src/mcp/tools/communities.ts +1 -1
- package/src/mcp/tools/complexity.ts +1 -1
- package/src/mcp/tools/context.ts +1 -1
- package/src/mcp/tools/dataflow.ts +1 -1
- package/src/mcp/tools/diff-impact.ts +1 -1
- package/src/mcp/tools/execution-flow.ts +1 -1
- package/src/mcp/tools/export-graph.ts +1 -1
- package/src/mcp/tools/file-deps.ts +1 -1
- package/src/mcp/tools/file-exports.ts +1 -1
- package/src/mcp/tools/find-cycles.ts +1 -1
- package/src/mcp/tools/fn-impact.ts +1 -1
- package/src/mcp/tools/impact-analysis.ts +1 -1
- package/src/mcp/tools/implementations.ts +1 -1
- package/src/mcp/tools/index.ts +2 -5
- package/src/mcp/tools/interfaces.ts +1 -1
- package/src/mcp/tools/list-functions.ts +1 -1
- package/src/mcp/tools/list-repos.ts +1 -1
- package/src/mcp/tools/module-map.ts +1 -1
- package/src/mcp/tools/node-roles.ts +1 -1
- package/src/mcp/tools/path.ts +1 -1
- 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/structure.ts +1 -1
- package/src/mcp/tools/symbol-children.ts +1 -1
- package/src/mcp/tools/triage.ts +1 -1
- package/src/mcp/tools/where.ts +1 -1
- package/src/mcp/types.ts +21 -0
- package/src/presentation/queries-cli/index.ts +1 -1
- package/src/presentation/queries-cli/overview.ts +35 -1
- package/src/presentation/queries-cli.ts +1 -0
- package/src/presentation/viewer.ts +98 -87
- package/src/shared/constants.ts +26 -0
- package/src/shared/normalize.ts +13 -22
- package/src/shared/paginate.ts +4 -18
- package/src/types.ts +86 -1
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { makeDataflowRules } from '../shared.js';
|
|
2
|
+
// ─── Kotlin ───────────────────────────────────────────────────────────────────
|
|
3
|
+
//
|
|
4
|
+
// Kotlin function_declaration wraps params in `function_value_parameters`.
|
|
5
|
+
// The name is a `simple_identifier` direct child (found via findChild in extractor).
|
|
6
|
+
// call_expression: first child is simple_identifier OR navigation_expression (method call).
|
|
7
|
+
// navigation_expression: acts as member access for `obj.method()`.
|
|
8
|
+
// Field names for call function/args are NOT standard named fields in tree-sitter-kotlin,
|
|
9
|
+
// so we leave callFunctionField/callArgsField at defaults — childForFieldName returns null
|
|
10
|
+
// gracefully and the analysis falls back to skipping arg tracking.
|
|
11
|
+
function getKotlinParamListNode(funcNode) {
|
|
12
|
+
for (const child of funcNode.namedChildren) {
|
|
13
|
+
if (child.type === 'function_value_parameters')
|
|
14
|
+
return child;
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
function extractKotlinParamName(node) {
|
|
19
|
+
if (node.type !== 'parameter')
|
|
20
|
+
return null;
|
|
21
|
+
const nameNode = node.childForFieldName('name');
|
|
22
|
+
if (nameNode)
|
|
23
|
+
return [nameNode.text];
|
|
24
|
+
// Fallback: find simple_identifier among named children
|
|
25
|
+
for (const child of node.namedChildren) {
|
|
26
|
+
if (child.type === 'simple_identifier')
|
|
27
|
+
return [child.text];
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
export const dataflowKotlin = makeDataflowRules({
|
|
32
|
+
functionNodes: new Set(['function_declaration']),
|
|
33
|
+
nameField: 'name',
|
|
34
|
+
getParamListNode: getKotlinParamListNode,
|
|
35
|
+
paramWrapperTypes: new Set(['parameter']),
|
|
36
|
+
extractParamName: extractKotlinParamName,
|
|
37
|
+
returnNode: 'return_statement',
|
|
38
|
+
callNode: 'call_expression',
|
|
39
|
+
// tree-sitter-kotlin does not expose standard named fields for call function/args;
|
|
40
|
+
// defaults ('function'/'arguments') will return null gracefully.
|
|
41
|
+
memberNode: 'navigation_expression',
|
|
42
|
+
// Field names for navigation_expression object/property also lack standard names;
|
|
43
|
+
// defaults will return null gracefully.
|
|
44
|
+
});
|
|
45
|
+
// ─── Swift ────────────────────────────────────────────────────────────────────
|
|
46
|
+
//
|
|
47
|
+
// Swift function_declaration: name is `simple_identifier`, params in child node.
|
|
48
|
+
// The extractor uses findChild(node, 'simple_identifier') for the function name.
|
|
49
|
+
// Swift's tree-sitter grammar wraps params in a `parameter` or `parameters` node.
|
|
50
|
+
// call_expression: first child is simple_identifier or navigation_expression.
|
|
51
|
+
// navigation_expression: obj.method() — last child is navigation_suffix > simple_identifier.
|
|
52
|
+
function getSwiftParamListNode(funcNode) {
|
|
53
|
+
// Look for parameter_clause or parameters as a direct child
|
|
54
|
+
for (let i = 0; i < funcNode.childCount; i++) {
|
|
55
|
+
const child = funcNode.child(i);
|
|
56
|
+
if (!child)
|
|
57
|
+
continue;
|
|
58
|
+
if (child.type === 'parameter_clause' || child.type === 'parameters')
|
|
59
|
+
return child;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
function extractSwiftParamName(node) {
|
|
64
|
+
if (node.type === 'parameter') {
|
|
65
|
+
// Swift parameters have internal label + external label; use internal name
|
|
66
|
+
// The `name` field in tree-sitter-swift is the internal parameter name
|
|
67
|
+
const nameNode = node.childForFieldName('name') ?? node.childForFieldName('internal_name');
|
|
68
|
+
if (nameNode)
|
|
69
|
+
return [nameNode.text];
|
|
70
|
+
// Fallback: find simple_identifier
|
|
71
|
+
for (const child of node.namedChildren) {
|
|
72
|
+
if (child.type === 'simple_identifier')
|
|
73
|
+
return [child.text];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
export const dataflowSwift = makeDataflowRules({
|
|
79
|
+
functionNodes: new Set(['function_declaration']),
|
|
80
|
+
nameField: 'name',
|
|
81
|
+
getParamListNode: getSwiftParamListNode,
|
|
82
|
+
paramWrapperTypes: new Set(['parameter']),
|
|
83
|
+
extractParamName: extractSwiftParamName,
|
|
84
|
+
returnNode: 'return_statement',
|
|
85
|
+
callNode: 'call_expression',
|
|
86
|
+
// tree-sitter-swift call_expression: function is first child, args follow.
|
|
87
|
+
// No standard named fields — leave defaults to return null gracefully.
|
|
88
|
+
memberNode: 'navigation_expression',
|
|
89
|
+
// navigation_expression field names are non-standard in tree-sitter-swift.
|
|
90
|
+
});
|
|
91
|
+
// ─── Scala ────────────────────────────────────────────────────────────────────
|
|
92
|
+
//
|
|
93
|
+
// Scala function_definition: `node.childForFieldName('name')` for the name (confirmed
|
|
94
|
+
// in extractor). Parameters are via findChild(funcNode, 'parameters') (no named field).
|
|
95
|
+
// call_expression: `childForFieldName('function')` confirmed in extractor line 146.
|
|
96
|
+
// field_expression: `childForFieldName('value')` = object, `childForFieldName('field')` = property.
|
|
97
|
+
// val_definition / var_definition: `childForFieldName('pattern')` = name side.
|
|
98
|
+
function getScalaParamListNode(funcNode) {
|
|
99
|
+
// Scala parameters list is a direct child; extractor uses findChild(funcNode, 'parameters')
|
|
100
|
+
for (let i = 0; i < funcNode.childCount; i++) {
|
|
101
|
+
const child = funcNode.child(i);
|
|
102
|
+
if (child?.type === 'parameters')
|
|
103
|
+
return child;
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
function extractScalaParamName(node) {
|
|
108
|
+
if (node.type !== 'parameter')
|
|
109
|
+
return null;
|
|
110
|
+
// Extractor uses findChild(param, 'identifier')
|
|
111
|
+
for (const child of node.namedChildren) {
|
|
112
|
+
if (child.type === 'identifier')
|
|
113
|
+
return [child.text];
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
export const dataflowScala = makeDataflowRules({
|
|
118
|
+
functionNodes: new Set(['function_definition']),
|
|
119
|
+
nameField: 'name',
|
|
120
|
+
getParamListNode: getScalaParamListNode,
|
|
121
|
+
paramWrapperTypes: new Set(['parameter']),
|
|
122
|
+
extractParamName: extractScalaParamName,
|
|
123
|
+
returnNode: 'return_expression',
|
|
124
|
+
varDeclaratorNodes: new Set(['val_definition', 'var_definition']),
|
|
125
|
+
varNameField: 'pattern',
|
|
126
|
+
callNode: 'call_expression',
|
|
127
|
+
callFunctionField: 'function',
|
|
128
|
+
callArgsField: 'arguments',
|
|
129
|
+
memberNode: 'field_expression',
|
|
130
|
+
memberObjectField: 'value',
|
|
131
|
+
memberPropertyField: 'field',
|
|
132
|
+
});
|
|
133
|
+
// ─── Dart ─────────────────────────────────────────────────────────────────────
|
|
134
|
+
//
|
|
135
|
+
// Dart uses `function_signature` for top-level functions and `method_signature`
|
|
136
|
+
// for class methods (both confirmed in extractor). The extractor uses
|
|
137
|
+
// `childForFieldName('name')` for the function name on both node types.
|
|
138
|
+
// Dart call: `selector` node with `argument_part` — the extractor uses this.
|
|
139
|
+
// There is no standard `call_expression` node type in tree-sitter-dart.
|
|
140
|
+
// We use `function_signature` as the primary function node type.
|
|
141
|
+
// Parameters: `childForFieldName('parameters')` on function_signature (confirmed in extractor).
|
|
142
|
+
function extractDartParamName(node) {
|
|
143
|
+
// Dart: parameter types include 'formal_parameter', 'named_formal_parameter',
|
|
144
|
+
// 'optional_formal_parameter', and bare 'identifier'
|
|
145
|
+
if (node.type === 'formal_parameter' ||
|
|
146
|
+
node.type === 'optional_formal_parameter' ||
|
|
147
|
+
node.type === 'named_formal_parameter') {
|
|
148
|
+
const nameNode = node.childForFieldName('name');
|
|
149
|
+
if (nameNode)
|
|
150
|
+
return [nameNode.text];
|
|
151
|
+
// Fallback: last identifier child is usually the name
|
|
152
|
+
let lastName = null;
|
|
153
|
+
for (const child of node.namedChildren) {
|
|
154
|
+
if (child.type === 'identifier')
|
|
155
|
+
lastName = child.text;
|
|
156
|
+
}
|
|
157
|
+
if (lastName)
|
|
158
|
+
return [lastName];
|
|
159
|
+
}
|
|
160
|
+
if (node.type === 'identifier')
|
|
161
|
+
return [node.text];
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
export const dataflowDart = makeDataflowRules({
|
|
165
|
+
functionNodes: new Set(['function_signature', 'method_signature']),
|
|
166
|
+
nameField: 'name',
|
|
167
|
+
paramListField: 'parameters',
|
|
168
|
+
paramWrapperTypes: new Set([
|
|
169
|
+
'formal_parameter',
|
|
170
|
+
'optional_formal_parameter',
|
|
171
|
+
'named_formal_parameter',
|
|
172
|
+
]),
|
|
173
|
+
extractParamName: extractDartParamName,
|
|
174
|
+
returnNode: 'return_statement',
|
|
175
|
+
callNode: 'call_expression',
|
|
176
|
+
// tree-sitter-dart does not have standard named fields for calls;
|
|
177
|
+
// the extractor uses `selector` nodes instead. Leave defaults.
|
|
178
|
+
});
|
|
179
|
+
// ─── Groovy ───────────────────────────────────────────────────────────────────
|
|
180
|
+
//
|
|
181
|
+
// Groovy has multiple function node types (method_definition/declaration,
|
|
182
|
+
// constructor_definition/declaration, function_definition/declaration).
|
|
183
|
+
// Params: `childForFieldName('parameters')` with fallback to findChild('formal_parameters')
|
|
184
|
+
// (confirmed in extractor extractGroovyParams, line 334).
|
|
185
|
+
// call_expression: `childForFieldName('function')` confirmed in extractor line 299.
|
|
186
|
+
// field_expression: `childForFieldName('argument')` = object (confirmed in extractor line 303),
|
|
187
|
+
// `childForFieldName('field')` = property.
|
|
188
|
+
function getGroovyParamListNode(funcNode) {
|
|
189
|
+
const byField = funcNode.childForFieldName('parameters');
|
|
190
|
+
if (byField)
|
|
191
|
+
return byField;
|
|
192
|
+
// Fallback: search for formal_parameters child
|
|
193
|
+
for (let i = 0; i < funcNode.childCount; i++) {
|
|
194
|
+
const child = funcNode.child(i);
|
|
195
|
+
if (child?.type === 'formal_parameters')
|
|
196
|
+
return child;
|
|
197
|
+
}
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
function extractGroovyParamName(node) {
|
|
201
|
+
if (node.type === 'formal_parameter' || node.type === 'parameter') {
|
|
202
|
+
const nameNode = node.childForFieldName('name');
|
|
203
|
+
if (nameNode)
|
|
204
|
+
return [nameNode.text];
|
|
205
|
+
// Fallback: first identifier child
|
|
206
|
+
for (const child of node.namedChildren) {
|
|
207
|
+
if (child.type === 'identifier')
|
|
208
|
+
return [child.text];
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
export const dataflowGroovy = makeDataflowRules({
|
|
214
|
+
functionNodes: new Set([
|
|
215
|
+
'method_definition',
|
|
216
|
+
'method_declaration',
|
|
217
|
+
'constructor_definition',
|
|
218
|
+
'constructor_declaration',
|
|
219
|
+
'function_definition',
|
|
220
|
+
'function_declaration',
|
|
221
|
+
]),
|
|
222
|
+
nameField: 'name',
|
|
223
|
+
getParamListNode: getGroovyParamListNode,
|
|
224
|
+
paramWrapperTypes: new Set(['formal_parameter', 'parameter']),
|
|
225
|
+
extractParamName: extractGroovyParamName,
|
|
226
|
+
returnNode: 'return_statement',
|
|
227
|
+
varDeclaratorNode: 'variable_declarator',
|
|
228
|
+
callNodes: new Set([
|
|
229
|
+
'call_expression',
|
|
230
|
+
'function_call',
|
|
231
|
+
'juxt_function_call',
|
|
232
|
+
'method_invocation',
|
|
233
|
+
]),
|
|
234
|
+
callFunctionField: 'function',
|
|
235
|
+
callArgsField: 'arguments',
|
|
236
|
+
memberNode: 'field_expression',
|
|
237
|
+
memberObjectField: 'argument',
|
|
238
|
+
memberPropertyField: 'field',
|
|
239
|
+
});
|
|
240
|
+
//# sourceMappingURL=b2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"b2.js","sourceRoot":"","sources":["../../../src/ast-analysis/rules/b2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DataflowRulesConfig } from '../../types.js';
|
|
2
|
+
export declare const dataflowLua: DataflowRulesConfig;
|
|
3
|
+
export declare const dataflowR: DataflowRulesConfig;
|
|
4
|
+
export declare const dataflowJulia: DataflowRulesConfig;
|
|
5
|
+
export declare const dataflowBash: DataflowRulesConfig;
|
|
6
|
+
//# sourceMappingURL=b3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"b3.d.ts","sourceRoot":"","sources":["../../../src/ast-analysis/rules/b3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAa1D,eAAO,MAAM,WAAW,EAAE,mBAiBxB,CAAC;AAeH,eAAO,MAAM,SAAS,EAAE,mBA4BtB,CAAC;AAeH,eAAO,MAAM,aAAa,EAAE,mBAmB1B,CAAC;AAUH,eAAO,MAAM,YAAY,EAAE,mBASzB,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { makeDataflowRules } from '../shared.js';
|
|
2
|
+
// ─── Lua ──────────────────────────────────────────────────────────────────────
|
|
3
|
+
//
|
|
4
|
+
// Lua function_declaration: name via `childForFieldName('name')` (confirmed in extractor line 47).
|
|
5
|
+
// The name node may be `method_index_expression`, `dot_index_expression`, or `identifier`.
|
|
6
|
+
// Parameters: `childForFieldName('parameters')` (confirmed in extractor line 89) — returns
|
|
7
|
+
// a node containing `identifier` children directly (no wrapper type).
|
|
8
|
+
// function_call: name via `childForFieldName('name')` (confirmed in extractor line 132).
|
|
9
|
+
// dot_index_expression: table=`childForFieldName('table')`, field=`childForFieldName('field')`.
|
|
10
|
+
// method_index_expression: table=`childForFieldName('table')`, method=`childForFieldName('method')`.
|
|
11
|
+
export const dataflowLua = makeDataflowRules({
|
|
12
|
+
functionNodes: new Set(['function_declaration']),
|
|
13
|
+
nameField: 'name',
|
|
14
|
+
paramListField: 'parameters',
|
|
15
|
+
// Lua params are bare identifier children in the param list — no wrapper type
|
|
16
|
+
paramIdentifier: 'identifier',
|
|
17
|
+
returnNode: 'return_statement',
|
|
18
|
+
callNode: 'function_call',
|
|
19
|
+
callFunctionField: 'name',
|
|
20
|
+
callArgsField: 'arguments',
|
|
21
|
+
memberNode: 'dot_index_expression',
|
|
22
|
+
memberObjectField: 'table',
|
|
23
|
+
memberPropertyField: 'field',
|
|
24
|
+
});
|
|
25
|
+
// ─── R ────────────────────────────────────────────────────────────────────────
|
|
26
|
+
//
|
|
27
|
+
// R functions are defined as: `name <- function_definition` (binary_operator with `<-`).
|
|
28
|
+
// The extractor handles this as binary_operator + function_definition on the RHS.
|
|
29
|
+
// There is no standalone function declaration node — `function_definition` is always
|
|
30
|
+
// an RHS expression. The parent `binary_operator` is the true "function node".
|
|
31
|
+
// R does NOT have an explicit `return` statement keyword that always appears —
|
|
32
|
+
// `return()` is a regular function call. Set returnNode: null.
|
|
33
|
+
// call node: `call` (confirmed in extractor handleCall line 111).
|
|
34
|
+
// The call node's first child (not a named field) is the function expression.
|
|
35
|
+
// Parameters: findChild(funcDef, 'parameters') on function_definition (extractor line 88).
|
|
36
|
+
// Each parameter is a `parameter` node with `childForFieldName('name')` or identifier child.
|
|
37
|
+
export const dataflowR = makeDataflowRules({
|
|
38
|
+
// R functions are the `binary_operator` node where RHS is `function_definition`.
|
|
39
|
+
// We track the binary_operator as a function scope, but the param list lives
|
|
40
|
+
// inside the nested `function_definition` child. This is best-effort: the
|
|
41
|
+
// unified dataflow walker will find `binary_operator` nodes but may not locate
|
|
42
|
+
// the param list via the standard field walk. Most analysis benefit comes from
|
|
43
|
+
// variable tracking and call arg flows.
|
|
44
|
+
// Use function_definition directly: the walker will enter it as function scope.
|
|
45
|
+
functionNodes: new Set(['function_definition']),
|
|
46
|
+
// R function_definition has no 'name' field — the name comes from the enclosing
|
|
47
|
+
// binary_operator's LHS. The nameExtractor is not needed here since the
|
|
48
|
+
// extractor handles name resolution; the dataflow visitor just needs to find
|
|
49
|
+
// the function scope boundary.
|
|
50
|
+
nameField: 'name',
|
|
51
|
+
paramListField: 'parameters',
|
|
52
|
+
paramWrapperTypes: new Set(['parameter']),
|
|
53
|
+
returnNode: null, // R uses return() as a function call, not a statement
|
|
54
|
+
callNode: 'call',
|
|
55
|
+
// R `call` node has the function as its first child (not a named field).
|
|
56
|
+
// Leaving callFunctionField at default 'function' — childForFieldName will
|
|
57
|
+
// return null, and the analysis falls back to skipping the callee name.
|
|
58
|
+
assignmentNode: 'binary_operator',
|
|
59
|
+
assignLeftField: 'left',
|
|
60
|
+
assignRightField: 'right',
|
|
61
|
+
});
|
|
62
|
+
// ─── Julia ────────────────────────────────────────────────────────────────────
|
|
63
|
+
//
|
|
64
|
+
// Julia function_definition: extractor uses a `signature` child → `call_expression`
|
|
65
|
+
// to find the function name + params (complex nesting). The function node type
|
|
66
|
+
// is `function_definition` (confirmed in extractor line 41).
|
|
67
|
+
// The params are inside the signature's call_expression's argument_list.
|
|
68
|
+
// For dataflow purposes, we just mark function_definition as the scope boundary.
|
|
69
|
+
// Params are inside function_definition → signature → call_expression → argument_list.
|
|
70
|
+
// Since there's no direct param list field on function_definition, use getParamListNode.
|
|
71
|
+
// call_expression: `node.child(0)` for function name (confirmed in extractor handleCall line 387).
|
|
72
|
+
// Julia has explicit `return_statement` (confirmed in extractor comment: "Julia has explicit return").
|
|
73
|
+
// variable assignment: `assignment` node (confirmed in extractor handleAssignment line 158).
|
|
74
|
+
export const dataflowJulia = makeDataflowRules({
|
|
75
|
+
functionNodes: new Set(['function_definition']),
|
|
76
|
+
nameField: 'name',
|
|
77
|
+
// Julia params are buried deep: function_definition → signature → call_expression → argument_list.
|
|
78
|
+
// No direct named field on function_definition for params. Leave param extraction
|
|
79
|
+
// to best-effort: getParamListNode returns null (default), so params will be skipped
|
|
80
|
+
// gracefully. The primary value is function scope tracking and call arg flows.
|
|
81
|
+
paramListField: 'parameters',
|
|
82
|
+
returnNode: 'return_statement',
|
|
83
|
+
assignmentNode: 'assignment',
|
|
84
|
+
assignLeftField: 'left',
|
|
85
|
+
assignRightField: 'right',
|
|
86
|
+
callNode: 'call_expression',
|
|
87
|
+
// Julia call_expression: first child is the function (no named field 'function').
|
|
88
|
+
// Leave callFunctionField at default — will return null gracefully.
|
|
89
|
+
});
|
|
90
|
+
// ─── Bash ─────────────────────────────────────────────────────────────────────
|
|
91
|
+
//
|
|
92
|
+
// Bash function_definition: name via `childForFieldName('name')` (confirmed in extractor line 42).
|
|
93
|
+
// Bash has no typed parameters or return values.
|
|
94
|
+
// command: `command_name` child (extractor handleBashCommand line 55).
|
|
95
|
+
// No param lists, no return nodes, no variable declarators in the conventional sense.
|
|
96
|
+
// Minimal config — primarily useful for function scope tracking and call edges.
|
|
97
|
+
export const dataflowBash = makeDataflowRules({
|
|
98
|
+
functionNodes: new Set(['function_definition']),
|
|
99
|
+
nameField: 'name',
|
|
100
|
+
returnNode: null, // Bash has no explicit return statement node (return is a command)
|
|
101
|
+
callNode: 'command',
|
|
102
|
+
// Bash `command` node: function name is in `command_name` child (not a named field).
|
|
103
|
+
// Leave callFunctionField at default — will return null gracefully.
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=b3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"b3.js","sourceRoot":"","sources":["../../../src/ast-analysis/rules/b3.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,iFAAiF;AACjF,EAAE;AACF,mGAAmG;AACnG,2FAA2F;AAC3F,2FAA2F;AAC3F,sEAAsE;AACtE,yFAAyF;AACzF,gGAAgG;AAChG,qGAAqG;AAErG,MAAM,CAAC,MAAM,WAAW,GAAwB,iBAAiB,CAAC;IAChE,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC;IAChD,SAAS,EAAE,MAAM;IAEjB,cAAc,EAAE,YAAY;IAC5B,8EAA8E;IAC9E,eAAe,EAAE,YAAY;IAE7B,UAAU,EAAE,kBAAkB;IAE9B,QAAQ,EAAE,eAAe;IACzB,iBAAiB,EAAE,MAAM;IACzB,aAAa,EAAE,WAAW;IAE1B,UAAU,EAAE,sBAAsB;IAClC,iBAAiB,EAAE,OAAO;IAC1B,mBAAmB,EAAE,OAAO;CAC7B,CAAC,CAAC;AAEH,iFAAiF;AACjF,EAAE;AACF,yFAAyF;AACzF,kFAAkF;AAClF,qFAAqF;AACrF,+EAA+E;AAC/E,+EAA+E;AAC/E,+DAA+D;AAC/D,kEAAkE;AAClE,8EAA8E;AAC9E,2FAA2F;AAC3F,6FAA6F;AAE7F,MAAM,CAAC,MAAM,SAAS,GAAwB,iBAAiB,CAAC;IAC9D,iFAAiF;IACjF,6EAA6E;IAC7E,0EAA0E;IAC1E,+EAA+E;IAC/E,+EAA+E;IAC/E,wCAAwC;IACxC,gFAAgF;IAChF,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC/C,gFAAgF;IAChF,wEAAwE;IACxE,6EAA6E;IAC7E,+BAA+B;IAC/B,SAAS,EAAE,MAAM;IAEjB,cAAc,EAAE,YAAY;IAC5B,iBAAiB,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IAEzC,UAAU,EAAE,IAAI,EAAE,sDAAsD;IAExE,QAAQ,EAAE,MAAM;IAChB,yEAAyE;IACzE,2EAA2E;IAC3E,wEAAwE;IAExE,cAAc,EAAE,iBAAiB;IACjC,eAAe,EAAE,MAAM;IACvB,gBAAgB,EAAE,OAAO;CAC1B,CAAC,CAAC;AAEH,iFAAiF;AACjF,EAAE;AACF,oFAAoF;AACpF,+EAA+E;AAC/E,6DAA6D;AAC7D,yEAAyE;AACzE,iFAAiF;AACjF,uFAAuF;AACvF,yFAAyF;AACzF,mGAAmG;AACnG,uGAAuG;AACvG,6FAA6F;AAE7F,MAAM,CAAC,MAAM,aAAa,GAAwB,iBAAiB,CAAC;IAClE,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC/C,SAAS,EAAE,MAAM;IAEjB,mGAAmG;IACnG,kFAAkF;IAClF,qFAAqF;IACrF,+EAA+E;IAC/E,cAAc,EAAE,YAAY;IAE5B,UAAU,EAAE,kBAAkB;IAE9B,cAAc,EAAE,YAAY;IAC5B,eAAe,EAAE,MAAM;IACvB,gBAAgB,EAAE,OAAO;IAEzB,QAAQ,EAAE,iBAAiB;IAC3B,kFAAkF;IAClF,oEAAoE;CACrE,CAAC,CAAC;AAEH,iFAAiF;AACjF,EAAE;AACF,mGAAmG;AACnG,iDAAiD;AACjD,uEAAuE;AACvE,sFAAsF;AACtF,gFAAgF;AAEhF,MAAM,CAAC,MAAM,YAAY,GAAwB,iBAAiB,CAAC;IACjE,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC/C,SAAS,EAAE,MAAM;IAEjB,UAAU,EAAE,IAAI,EAAE,mEAAmE;IAErF,QAAQ,EAAE,SAAS;IACnB,qFAAqF;IACrF,oEAAoE;CACrE,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DataflowRulesConfig } from '../../types.js';
|
|
2
|
+
export declare const dataflowHaskell: DataflowRulesConfig;
|
|
3
|
+
export declare const dataflowOCaml: DataflowRulesConfig;
|
|
4
|
+
export declare const dataflowFSharp: DataflowRulesConfig;
|
|
5
|
+
export declare const dataflowGleam: DataflowRulesConfig;
|
|
6
|
+
export declare const dataflowElixir: DataflowRulesConfig;
|
|
7
|
+
export declare const dataflowErlang: DataflowRulesConfig;
|
|
8
|
+
export declare const dataflowClojure: DataflowRulesConfig;
|
|
9
|
+
//# sourceMappingURL=b4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"b4.d.ts","sourceRoot":"","sources":["../../../src/ast-analysis/rules/b4.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,gBAAgB,CAAC;AAoC1E,eAAO,MAAM,eAAe,EAAE,mBAa5B,CAAC;AAqCH,eAAO,MAAM,aAAa,EAAE,mBAiB1B,CAAC;AA+BH,eAAO,MAAM,cAAc,EAAE,mBAe3B,CAAC;AAuBH,eAAO,MAAM,aAAa,EAAE,mBAgB1B,CAAC;AA4CH,eAAO,MAAM,cAAc,EAAE,mBAc3B,CAAC;AA8CH,eAAO,MAAM,cAAc,EAAE,mBAW3B,CAAC;AA2DH,eAAO,MAAM,eAAe,EAAE,mBAe5B,CAAC"}
|