@codragraph/cli 1.6.2
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 +341 -0
- package/dist/_shared/graph/types.d.ts +81 -0
- package/dist/_shared/graph/types.d.ts.map +1 -0
- package/dist/_shared/graph/types.js +8 -0
- package/dist/_shared/graph/types.js.map +1 -0
- package/dist/_shared/index.d.ts +55 -0
- package/dist/_shared/index.d.ts.map +1 -0
- package/dist/_shared/index.js +39 -0
- package/dist/_shared/index.js.map +1 -0
- package/dist/_shared/language-detection.d.ts +23 -0
- package/dist/_shared/language-detection.d.ts.map +1 -0
- package/dist/_shared/language-detection.js +139 -0
- package/dist/_shared/language-detection.js.map +1 -0
- package/dist/_shared/languages.d.ts +26 -0
- package/dist/_shared/languages.d.ts.map +1 -0
- package/dist/_shared/languages.js +27 -0
- package/dist/_shared/languages.js.map +1 -0
- package/dist/_shared/lbug/schema-constants.d.ts +16 -0
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -0
- package/dist/_shared/lbug/schema-constants.js +67 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -0
- package/dist/_shared/mro-strategy.d.ts +41 -0
- package/dist/_shared/mro-strategy.d.ts.map +1 -0
- package/dist/_shared/mro-strategy.js +2 -0
- package/dist/_shared/mro-strategy.js.map +1 -0
- package/dist/_shared/pipeline.d.ts +16 -0
- package/dist/_shared/pipeline.d.ts.map +1 -0
- package/dist/_shared/pipeline.js +5 -0
- package/dist/_shared/pipeline.js.map +1 -0
- package/dist/_shared/scope-resolution/def-index.d.ts +36 -0
- package/dist/_shared/scope-resolution/def-index.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/def-index.js +51 -0
- package/dist/_shared/scope-resolution/def-index.js.map +1 -0
- package/dist/_shared/scope-resolution/evidence-weights.d.ts +69 -0
- package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/evidence-weights.js +84 -0
- package/dist/_shared/scope-resolution/evidence-weights.js.map +1 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +139 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.js +479 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -0
- package/dist/_shared/scope-resolution/language-classification.d.ts +26 -0
- package/dist/_shared/scope-resolution/language-classification.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/language-classification.js +44 -0
- package/dist/_shared/scope-resolution/language-classification.js.map +1 -0
- package/dist/_shared/scope-resolution/method-dispatch-index.d.ts +80 -0
- package/dist/_shared/scope-resolution/method-dispatch-index.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/method-dispatch-index.js +79 -0
- package/dist/_shared/scope-resolution/method-dispatch-index.js.map +1 -0
- package/dist/_shared/scope-resolution/module-scope-index.d.ts +46 -0
- package/dist/_shared/scope-resolution/module-scope-index.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/module-scope-index.js +58 -0
- package/dist/_shared/scope-resolution/module-scope-index.js.map +1 -0
- package/dist/_shared/scope-resolution/origin-priority.d.ts +14 -0
- package/dist/_shared/scope-resolution/origin-priority.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/origin-priority.js +21 -0
- package/dist/_shared/scope-resolution/origin-priority.js.map +1 -0
- package/dist/_shared/scope-resolution/parsed-file.d.ts +76 -0
- package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/parsed-file.js +54 -0
- package/dist/_shared/scope-resolution/parsed-file.js.map +1 -0
- package/dist/_shared/scope-resolution/position-index.d.ts +62 -0
- package/dist/_shared/scope-resolution/position-index.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/position-index.js +134 -0
- package/dist/_shared/scope-resolution/position-index.js.map +1 -0
- package/dist/_shared/scope-resolution/qualified-name-index.d.ts +44 -0
- package/dist/_shared/scope-resolution/qualified-name-index.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/qualified-name-index.js +75 -0
- package/dist/_shared/scope-resolution/qualified-name-index.js.map +1 -0
- package/dist/_shared/scope-resolution/reference-site.d.ts +75 -0
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/reference-site.js +24 -0
- package/dist/_shared/scope-resolution/reference-site.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/class-registry.d.ts +27 -0
- package/dist/_shared/scope-resolution/registries/class-registry.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/class-registry.js +30 -0
- package/dist/_shared/scope-resolution/registries/class-registry.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/context.d.ts +69 -0
- package/dist/_shared/scope-resolution/registries/context.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/context.js +44 -0
- package/dist/_shared/scope-resolution/registries/context.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/evidence.d.ts +56 -0
- package/dist/_shared/scope-resolution/registries/evidence.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/evidence.js +150 -0
- package/dist/_shared/scope-resolution/registries/evidence.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/field-registry.d.ts +26 -0
- package/dist/_shared/scope-resolution/registries/field-registry.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/field-registry.js +31 -0
- package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts +81 -0
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/lookup-core.js +332 -0
- package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/lookup-qualified.d.ts +33 -0
- package/dist/_shared/scope-resolution/registries/lookup-qualified.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/lookup-qualified.js +56 -0
- package/dist/_shared/scope-resolution/registries/lookup-qualified.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/method-registry.d.ts +36 -0
- package/dist/_shared/scope-resolution/registries/method-registry.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/method-registry.js +32 -0
- package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -0
- package/dist/_shared/scope-resolution/registries/tie-breaks.d.ts +43 -0
- package/dist/_shared/scope-resolution/registries/tie-breaks.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/tie-breaks.js +60 -0
- package/dist/_shared/scope-resolution/registries/tie-breaks.js.map +1 -0
- package/dist/_shared/scope-resolution/resolve-type-ref.d.ts +53 -0
- package/dist/_shared/scope-resolution/resolve-type-ref.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/resolve-type-ref.js +126 -0
- package/dist/_shared/scope-resolution/resolve-type-ref.js.map +1 -0
- package/dist/_shared/scope-resolution/scope-id.d.ts +43 -0
- package/dist/_shared/scope-resolution/scope-id.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/scope-id.js +46 -0
- package/dist/_shared/scope-resolution/scope-id.js.map +1 -0
- package/dist/_shared/scope-resolution/scope-tree.d.ts +61 -0
- package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/scope-tree.js +186 -0
- package/dist/_shared/scope-resolution/scope-tree.js.map +1 -0
- package/dist/_shared/scope-resolution/shadow/aggregate.d.ts +63 -0
- package/dist/_shared/scope-resolution/shadow/aggregate.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/shadow/aggregate.js +122 -0
- package/dist/_shared/scope-resolution/shadow/aggregate.js.map +1 -0
- package/dist/_shared/scope-resolution/shadow/diff.d.ts +59 -0
- package/dist/_shared/scope-resolution/shadow/diff.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/shadow/diff.js +79 -0
- package/dist/_shared/scope-resolution/shadow/diff.js.map +1 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +34 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/symbol-definition.js +12 -0
- package/dist/_shared/scope-resolution/symbol-definition.js.map +1 -0
- package/dist/_shared/scope-resolution/types.d.ts +356 -0
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/types.js +17 -0
- package/dist/_shared/scope-resolution/types.js.map +1 -0
- package/dist/cli/ai-context.d.ts +27 -0
- package/dist/cli/ai-context.js +270 -0
- package/dist/cli/analyze.d.ts +43 -0
- package/dist/cli/analyze.js +312 -0
- package/dist/cli/augment.d.ts +13 -0
- package/dist/cli/augment.js +33 -0
- package/dist/cli/clean.d.ts +10 -0
- package/dist/cli/clean.js +78 -0
- package/dist/cli/config.d.ts +27 -0
- package/dist/cli/config.js +106 -0
- package/dist/cli/eval-server.d.ts +37 -0
- package/dist/cli/eval-server.js +398 -0
- package/dist/cli/graphstore.d.ts +40 -0
- package/dist/cli/graphstore.js +639 -0
- package/dist/cli/group.d.ts +2 -0
- package/dist/cli/group.js +306 -0
- package/dist/cli/index-repo.d.ts +15 -0
- package/dist/cli/index-repo.js +120 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +236 -0
- package/dist/cli/lazy-action.d.ts +6 -0
- package/dist/cli/lazy-action.js +18 -0
- package/dist/cli/list.d.ts +6 -0
- package/dist/cli/list.js +40 -0
- package/dist/cli/mcp.d.ts +8 -0
- package/dist/cli/mcp.js +36 -0
- package/dist/cli/remove.d.ts +30 -0
- package/dist/cli/remove.js +99 -0
- package/dist/cli/serve.d.ts +4 -0
- package/dist/cli/serve.js +37 -0
- package/dist/cli/setup.d.ts +8 -0
- package/dist/cli/setup.js +543 -0
- package/dist/cli/skill-gen.d.ts +26 -0
- package/dist/cli/skill-gen.js +555 -0
- package/dist/cli/status.d.ts +6 -0
- package/dist/cli/status.js +36 -0
- package/dist/cli/tool.d.ts +43 -0
- package/dist/cli/tool.js +168 -0
- package/dist/cli/wiki.d.ts +21 -0
- package/dist/cli/wiki.js +579 -0
- package/dist/config/ignore-service.d.ts +35 -0
- package/dist/config/ignore-service.js +436 -0
- package/dist/config/supported-languages.d.ts +13 -0
- package/dist/config/supported-languages.js +13 -0
- package/dist/core/augmentation/engine.d.ts +26 -0
- package/dist/core/augmentation/engine.js +252 -0
- package/dist/core/embeddings/ast-utils.d.ts +22 -0
- package/dist/core/embeddings/ast-utils.js +105 -0
- package/dist/core/embeddings/character-chunk.d.ts +12 -0
- package/dist/core/embeddings/character-chunk.js +43 -0
- package/dist/core/embeddings/chunker.d.ts +14 -0
- package/dist/core/embeddings/chunker.js +239 -0
- package/dist/core/embeddings/embedder.d.ts +65 -0
- package/dist/core/embeddings/embedder.js +320 -0
- package/dist/core/embeddings/embedding-pipeline.d.ts +62 -0
- package/dist/core/embeddings/embedding-pipeline.js +486 -0
- package/dist/core/embeddings/http-client.d.ts +31 -0
- package/dist/core/embeddings/http-client.js +179 -0
- package/dist/core/embeddings/index.d.ts +10 -0
- package/dist/core/embeddings/index.js +10 -0
- package/dist/core/embeddings/line-index.d.ts +7 -0
- package/dist/core/embeddings/line-index.js +42 -0
- package/dist/core/embeddings/server-mapping.d.ts +15 -0
- package/dist/core/embeddings/server-mapping.js +33 -0
- package/dist/core/embeddings/structural-extractor.d.ts +15 -0
- package/dist/core/embeddings/structural-extractor.js +58 -0
- package/dist/core/embeddings/text-generator.d.ts +31 -0
- package/dist/core/embeddings/text-generator.js +208 -0
- package/dist/core/embeddings/types.d.ts +207 -0
- package/dist/core/embeddings/types.js +200 -0
- package/dist/core/git-staleness.d.ts +31 -0
- package/dist/core/git-staleness.js +137 -0
- package/dist/core/graph/graph.d.ts +2 -0
- package/dist/core/graph/graph.js +173 -0
- package/dist/core/graph/types.d.ts +36 -0
- package/dist/core/graph/types.js +1 -0
- package/dist/core/graphstore/index.d.ts +46 -0
- package/dist/core/graphstore/index.js +80 -0
- package/dist/core/graphstore/lbug-row-source.d.ts +19 -0
- package/dist/core/graphstore/lbug-row-source.js +141 -0
- package/dist/core/group/bridge-db.d.ts +82 -0
- package/dist/core/group/bridge-db.js +460 -0
- package/dist/core/group/bridge-schema.d.ts +27 -0
- package/dist/core/group/bridge-schema.js +55 -0
- package/dist/core/group/config-parser.d.ts +7 -0
- package/dist/core/group/config-parser.js +100 -0
- package/dist/core/group/contract-extractor.d.ts +7 -0
- package/dist/core/group/contract-extractor.js +1 -0
- package/dist/core/group/cross-impact.d.ts +41 -0
- package/dist/core/group/cross-impact.js +441 -0
- package/dist/core/group/extractors/fs-utils.d.ts +10 -0
- package/dist/core/group/extractors/fs-utils.js +24 -0
- package/dist/core/group/extractors/grpc-extractor.d.ts +25 -0
- package/dist/core/group/extractors/grpc-extractor.js +401 -0
- package/dist/core/group/extractors/grpc-patterns/go.d.ts +2 -0
- package/dist/core/group/extractors/grpc-patterns/go.js +97 -0
- package/dist/core/group/extractors/grpc-patterns/index.d.ts +19 -0
- package/dist/core/group/extractors/grpc-patterns/index.js +46 -0
- package/dist/core/group/extractors/grpc-patterns/java.d.ts +2 -0
- package/dist/core/group/extractors/grpc-patterns/java.js +173 -0
- package/dist/core/group/extractors/grpc-patterns/node.d.ts +4 -0
- package/dist/core/group/extractors/grpc-patterns/node.js +290 -0
- package/dist/core/group/extractors/grpc-patterns/proto.d.ts +9 -0
- package/dist/core/group/extractors/grpc-patterns/proto.js +134 -0
- package/dist/core/group/extractors/grpc-patterns/python.d.ts +2 -0
- package/dist/core/group/extractors/grpc-patterns/python.js +67 -0
- package/dist/core/group/extractors/grpc-patterns/types.d.ts +50 -0
- package/dist/core/group/extractors/grpc-patterns/types.js +1 -0
- package/dist/core/group/extractors/http-patterns/go.d.ts +2 -0
- package/dist/core/group/extractors/http-patterns/go.js +215 -0
- package/dist/core/group/extractors/http-patterns/index.d.ts +17 -0
- package/dist/core/group/extractors/http-patterns/index.js +44 -0
- package/dist/core/group/extractors/http-patterns/java.d.ts +2 -0
- package/dist/core/group/extractors/http-patterns/java.js +253 -0
- package/dist/core/group/extractors/http-patterns/node.d.ts +4 -0
- package/dist/core/group/extractors/http-patterns/node.js +484 -0
- package/dist/core/group/extractors/http-patterns/php.d.ts +2 -0
- package/dist/core/group/extractors/http-patterns/php.js +178 -0
- package/dist/core/group/extractors/http-patterns/python.d.ts +2 -0
- package/dist/core/group/extractors/http-patterns/python.js +133 -0
- package/dist/core/group/extractors/http-patterns/types.d.ts +61 -0
- package/dist/core/group/extractors/http-patterns/types.js +1 -0
- package/dist/core/group/extractors/http-route-extractor.d.ts +21 -0
- package/dist/core/group/extractors/http-route-extractor.js +421 -0
- package/dist/core/group/extractors/manifest-extractor.d.ts +54 -0
- package/dist/core/group/extractors/manifest-extractor.js +292 -0
- package/dist/core/group/extractors/topic-extractor.d.ts +8 -0
- package/dist/core/group/extractors/topic-extractor.js +97 -0
- package/dist/core/group/extractors/topic-patterns/go.d.ts +2 -0
- package/dist/core/group/extractors/topic-patterns/go.js +120 -0
- package/dist/core/group/extractors/topic-patterns/index.d.ts +14 -0
- package/dist/core/group/extractors/topic-patterns/index.js +38 -0
- package/dist/core/group/extractors/topic-patterns/java.d.ts +2 -0
- package/dist/core/group/extractors/topic-patterns/java.js +80 -0
- package/dist/core/group/extractors/topic-patterns/node.d.ts +4 -0
- package/dist/core/group/extractors/topic-patterns/node.js +155 -0
- package/dist/core/group/extractors/topic-patterns/python.d.ts +2 -0
- package/dist/core/group/extractors/topic-patterns/python.js +116 -0
- package/dist/core/group/extractors/topic-patterns/types.d.ts +25 -0
- package/dist/core/group/extractors/topic-patterns/types.js +10 -0
- package/dist/core/group/extractors/tree-sitter-scanner.d.ts +113 -0
- package/dist/core/group/extractors/tree-sitter-scanner.js +94 -0
- package/dist/core/group/group-path-utils.d.ts +17 -0
- package/dist/core/group/group-path-utils.js +40 -0
- package/dist/core/group/matching.d.ts +13 -0
- package/dist/core/group/matching.js +198 -0
- package/dist/core/group/normalization.d.ts +3 -0
- package/dist/core/group/normalization.js +115 -0
- package/dist/core/group/resolve-at-member.d.ts +10 -0
- package/dist/core/group/resolve-at-member.js +31 -0
- package/dist/core/group/service-boundary-detector.d.ts +8 -0
- package/dist/core/group/service-boundary-detector.js +155 -0
- package/dist/core/group/service.d.ts +55 -0
- package/dist/core/group/service.js +394 -0
- package/dist/core/group/storage.d.ts +9 -0
- package/dist/core/group/storage.js +91 -0
- package/dist/core/group/sync.d.ts +21 -0
- package/dist/core/group/sync.js +196 -0
- package/dist/core/group/types.d.ts +160 -0
- package/dist/core/group/types.js +1 -0
- package/dist/core/ingestion/ast-cache.d.ts +26 -0
- package/dist/core/ingestion/ast-cache.js +47 -0
- package/dist/core/ingestion/binding-accumulator.d.ts +212 -0
- package/dist/core/ingestion/binding-accumulator.js +336 -0
- package/dist/core/ingestion/call-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/call-extractors/configs/c-cpp.js +8 -0
- package/dist/core/ingestion/call-extractors/configs/csharp.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/csharp.js +6 -0
- package/dist/core/ingestion/call-extractors/configs/dart.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/dart.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/go.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/go.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/jvm.d.ts +3 -0
- package/dist/core/ingestion/call-extractors/configs/jvm.js +51 -0
- package/dist/core/ingestion/call-extractors/configs/php.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/php.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/python.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/python.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/ruby.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/ruby.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/rust.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/rust.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/swift.d.ts +2 -0
- package/dist/core/ingestion/call-extractors/configs/swift.js +5 -0
- package/dist/core/ingestion/call-extractors/configs/typescript-javascript.d.ts +3 -0
- package/dist/core/ingestion/call-extractors/configs/typescript-javascript.js +8 -0
- package/dist/core/ingestion/call-extractors/generic.d.ts +5 -0
- package/dist/core/ingestion/call-extractors/generic.js +59 -0
- package/dist/core/ingestion/call-processor.d.ts +235 -0
- package/dist/core/ingestion/call-processor.js +2639 -0
- package/dist/core/ingestion/call-routing.d.ts +55 -0
- package/dist/core/ingestion/call-routing.js +95 -0
- package/dist/core/ingestion/call-types.d.ts +135 -0
- package/dist/core/ingestion/call-types.js +2 -0
- package/dist/core/ingestion/class-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/class-extractors/configs/c-cpp.js +11 -0
- package/dist/core/ingestion/class-extractors/configs/csharp.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/csharp.js +21 -0
- package/dist/core/ingestion/class-extractors/configs/dart.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/dart.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/go.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/go.js +20 -0
- package/dist/core/ingestion/class-extractors/configs/jvm.d.ts +3 -0
- package/dist/core/ingestion/class-extractors/configs/jvm.js +35 -0
- package/dist/core/ingestion/class-extractors/configs/php.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/php.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/python.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/python.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/ruby.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/ruby.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/rust.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/rust.js +7 -0
- package/dist/core/ingestion/class-extractors/configs/swift.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/configs/swift.js +18 -0
- package/dist/core/ingestion/class-extractors/configs/typescript-javascript.d.ts +4 -0
- package/dist/core/ingestion/class-extractors/configs/typescript-javascript.js +28 -0
- package/dist/core/ingestion/class-extractors/generic.d.ts +2 -0
- package/dist/core/ingestion/class-extractors/generic.js +135 -0
- package/dist/core/ingestion/class-types.d.ts +34 -0
- package/dist/core/ingestion/class-types.js +1 -0
- package/dist/core/ingestion/cluster-enricher.d.ts +38 -0
- package/dist/core/ingestion/cluster-enricher.js +168 -0
- package/dist/core/ingestion/cobol/cobol-copy-expander.d.ts +57 -0
- package/dist/core/ingestion/cobol/cobol-copy-expander.js +392 -0
- package/dist/core/ingestion/cobol/cobol-preprocessor.d.ts +210 -0
- package/dist/core/ingestion/cobol/cobol-preprocessor.js +1715 -0
- package/dist/core/ingestion/cobol/jcl-parser.d.ts +68 -0
- package/dist/core/ingestion/cobol/jcl-parser.js +217 -0
- package/dist/core/ingestion/cobol/jcl-processor.d.ts +33 -0
- package/dist/core/ingestion/cobol/jcl-processor.js +229 -0
- package/dist/core/ingestion/cobol-processor.d.ts +54 -0
- package/dist/core/ingestion/cobol-processor.js +1232 -0
- package/dist/core/ingestion/community-processor.d.ts +39 -0
- package/dist/core/ingestion/community-processor.js +318 -0
- package/dist/core/ingestion/constants.d.ts +16 -0
- package/dist/core/ingestion/constants.js +16 -0
- package/dist/core/ingestion/emit-references.d.ts +88 -0
- package/dist/core/ingestion/emit-references.js +229 -0
- package/dist/core/ingestion/entry-point-scoring.d.ts +58 -0
- package/dist/core/ingestion/entry-point-scoring.js +380 -0
- package/dist/core/ingestion/export-detection.d.ts +57 -0
- package/dist/core/ingestion/export-detection.js +233 -0
- package/dist/core/ingestion/field-extractor.d.ts +29 -0
- package/dist/core/ingestion/field-extractor.js +25 -0
- package/dist/core/ingestion/field-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/field-extractors/configs/c-cpp.js +104 -0
- package/dist/core/ingestion/field-extractors/configs/csharp.d.ts +8 -0
- package/dist/core/ingestion/field-extractors/configs/csharp.js +116 -0
- package/dist/core/ingestion/field-extractors/configs/dart.d.ts +8 -0
- package/dist/core/ingestion/field-extractors/configs/dart.js +78 -0
- package/dist/core/ingestion/field-extractors/configs/go.d.ts +11 -0
- package/dist/core/ingestion/field-extractors/configs/go.js +60 -0
- package/dist/core/ingestion/field-extractors/configs/helpers.d.ts +53 -0
- package/dist/core/ingestion/field-extractors/configs/helpers.js +158 -0
- package/dist/core/ingestion/field-extractors/configs/jvm.d.ts +3 -0
- package/dist/core/ingestion/field-extractors/configs/jvm.js +118 -0
- package/dist/core/ingestion/field-extractors/configs/php.d.ts +8 -0
- package/dist/core/ingestion/field-extractors/configs/php.js +65 -0
- package/dist/core/ingestion/field-extractors/configs/python.d.ts +12 -0
- package/dist/core/ingestion/field-extractors/configs/python.js +91 -0
- package/dist/core/ingestion/field-extractors/configs/ruby.d.ts +16 -0
- package/dist/core/ingestion/field-extractors/configs/ruby.js +76 -0
- package/dist/core/ingestion/field-extractors/configs/rust.d.ts +9 -0
- package/dist/core/ingestion/field-extractors/configs/rust.js +52 -0
- package/dist/core/ingestion/field-extractors/configs/swift.d.ts +8 -0
- package/dist/core/ingestion/field-extractors/configs/swift.js +65 -0
- package/dist/core/ingestion/field-extractors/configs/typescript-javascript.d.ts +3 -0
- package/dist/core/ingestion/field-extractors/configs/typescript-javascript.js +56 -0
- package/dist/core/ingestion/field-extractors/generic.d.ts +49 -0
- package/dist/core/ingestion/field-extractors/generic.js +117 -0
- package/dist/core/ingestion/field-extractors/typescript.d.ts +77 -0
- package/dist/core/ingestion/field-extractors/typescript.js +291 -0
- package/dist/core/ingestion/field-types.d.ts +61 -0
- package/dist/core/ingestion/field-types.js +2 -0
- package/dist/core/ingestion/filesystem-walker.d.ts +28 -0
- package/dist/core/ingestion/filesystem-walker.js +91 -0
- package/dist/core/ingestion/finalize-orchestrator.d.ts +63 -0
- package/dist/core/ingestion/finalize-orchestrator.js +139 -0
- package/dist/core/ingestion/framework-detection.d.ts +150 -0
- package/dist/core/ingestion/framework-detection.js +786 -0
- package/dist/core/ingestion/heritage-extractors/configs/go.d.ts +13 -0
- package/dist/core/ingestion/heritage-extractors/configs/go.js +20 -0
- package/dist/core/ingestion/heritage-extractors/configs/ruby.d.ts +18 -0
- package/dist/core/ingestion/heritage-extractors/configs/ruby.js +65 -0
- package/dist/core/ingestion/heritage-extractors/generic.d.ts +23 -0
- package/dist/core/ingestion/heritage-extractors/generic.js +47 -0
- package/dist/core/ingestion/heritage-processor.d.ts +54 -0
- package/dist/core/ingestion/heritage-processor.js +360 -0
- package/dist/core/ingestion/heritage-types.d.ts +73 -0
- package/dist/core/ingestion/heritage-types.js +2 -0
- package/dist/core/ingestion/import-processor.d.ts +23 -0
- package/dist/core/ingestion/import-processor.js +373 -0
- package/dist/core/ingestion/import-resolvers/configs/c-cpp.d.ts +7 -0
- package/dist/core/ingestion/import-resolvers/configs/c-cpp.js +14 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.js +27 -0
- package/dist/core/ingestion/import-resolvers/configs/dart.d.ts +17 -0
- package/dist/core/ingestion/import-resolvers/configs/dart.js +54 -0
- package/dist/core/ingestion/import-resolvers/configs/go.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/go.js +26 -0
- package/dist/core/ingestion/import-resolvers/configs/jvm.d.ts +13 -0
- package/dist/core/ingestion/import-resolvers/configs/jvm.js +68 -0
- package/dist/core/ingestion/import-resolvers/configs/php.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/php.js +15 -0
- package/dist/core/ingestion/import-resolvers/configs/python.d.ts +12 -0
- package/dist/core/ingestion/import-resolvers/configs/python.js +41 -0
- package/dist/core/ingestion/import-resolvers/configs/ruby.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/ruby.js +16 -0
- package/dist/core/ingestion/import-resolvers/configs/rust.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/rust.js +54 -0
- package/dist/core/ingestion/import-resolvers/configs/swift.d.ts +8 -0
- package/dist/core/ingestion/import-resolvers/configs/swift.js +29 -0
- package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.d.ts +9 -0
- package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.js +23 -0
- package/dist/core/ingestion/import-resolvers/csharp.d.ts +18 -0
- package/dist/core/ingestion/import-resolvers/csharp.js +115 -0
- package/dist/core/ingestion/import-resolvers/go.d.ts +17 -0
- package/dist/core/ingestion/import-resolvers/go.js +46 -0
- package/dist/core/ingestion/import-resolvers/jvm.d.ts +27 -0
- package/dist/core/ingestion/import-resolvers/jvm.js +106 -0
- package/dist/core/ingestion/import-resolvers/php.d.ts +24 -0
- package/dist/core/ingestion/import-resolvers/php.js +77 -0
- package/dist/core/ingestion/import-resolvers/python.d.ts +22 -0
- package/dist/core/ingestion/import-resolvers/python.js +72 -0
- package/dist/core/ingestion/import-resolvers/resolver-factory.d.ts +24 -0
- package/dist/core/ingestion/import-resolvers/resolver-factory.js +33 -0
- package/dist/core/ingestion/import-resolvers/ruby.d.ts +14 -0
- package/dist/core/ingestion/import-resolvers/ruby.js +17 -0
- package/dist/core/ingestion/import-resolvers/rust.d.ts +17 -0
- package/dist/core/ingestion/import-resolvers/rust.js +75 -0
- package/dist/core/ingestion/import-resolvers/standard.d.ts +30 -0
- package/dist/core/ingestion/import-resolvers/standard.js +142 -0
- package/dist/core/ingestion/import-resolvers/types.d.ts +68 -0
- package/dist/core/ingestion/import-resolvers/types.js +6 -0
- package/dist/core/ingestion/import-resolvers/utils.d.ts +35 -0
- package/dist/core/ingestion/import-resolvers/utils.js +149 -0
- package/dist/core/ingestion/import-target-adapter.d.ts +73 -0
- package/dist/core/ingestion/import-target-adapter.js +95 -0
- package/dist/core/ingestion/language-config.d.ts +52 -0
- package/dist/core/ingestion/language-config.js +181 -0
- package/dist/core/ingestion/language-provider.d.ts +410 -0
- package/dist/core/ingestion/language-provider.js +24 -0
- package/dist/core/ingestion/languages/c-cpp.d.ts +12 -0
- package/dist/core/ingestion/languages/c-cpp.js +329 -0
- package/dist/core/ingestion/languages/cobol.d.ts +1 -0
- package/dist/core/ingestion/languages/cobol.js +26 -0
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +21 -0
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +56 -0
- package/dist/core/ingestion/languages/csharp/arity-metadata.d.ts +26 -0
- package/dist/core/ingestion/languages/csharp/arity-metadata.js +46 -0
- package/dist/core/ingestion/languages/csharp/arity.d.ts +23 -0
- package/dist/core/ingestion/languages/csharp/arity.js +37 -0
- package/dist/core/ingestion/languages/csharp/cache-stats.d.ts +15 -0
- package/dist/core/ingestion/languages/csharp/cache-stats.js +26 -0
- package/dist/core/ingestion/languages/csharp/captures.d.ts +19 -0
- package/dist/core/ingestion/languages/csharp/captures.js +249 -0
- package/dist/core/ingestion/languages/csharp/import-decomposer.d.ts +19 -0
- package/dist/core/ingestion/languages/csharp/import-decomposer.js +93 -0
- package/dist/core/ingestion/languages/csharp/import-target.d.ts +25 -0
- package/dist/core/ingestion/languages/csharp/import-target.js +123 -0
- package/dist/core/ingestion/languages/csharp/index.d.ts +82 -0
- package/dist/core/ingestion/languages/csharp/index.js +82 -0
- package/dist/core/ingestion/languages/csharp/interpret.d.ts +15 -0
- package/dist/core/ingestion/languages/csharp/interpret.js +132 -0
- package/dist/core/ingestion/languages/csharp/merge-bindings.d.ts +27 -0
- package/dist/core/ingestion/languages/csharp/merge-bindings.js +55 -0
- package/dist/core/ingestion/languages/csharp/namespace-siblings.d.ts +50 -0
- package/dist/core/ingestion/languages/csharp/namespace-siblings.js +374 -0
- package/dist/core/ingestion/languages/csharp/query.d.ts +35 -0
- package/dist/core/ingestion/languages/csharp/query.js +515 -0
- package/dist/core/ingestion/languages/csharp/receiver-binding.d.ts +31 -0
- package/dist/core/ingestion/languages/csharp/receiver-binding.js +135 -0
- package/dist/core/ingestion/languages/csharp/scope-resolver.d.ts +10 -0
- package/dist/core/ingestion/languages/csharp/scope-resolver.js +63 -0
- package/dist/core/ingestion/languages/csharp/simple-hooks.d.ts +53 -0
- package/dist/core/ingestion/languages/csharp/simple-hooks.js +76 -0
- package/dist/core/ingestion/languages/csharp.d.ts +8 -0
- package/dist/core/ingestion/languages/csharp.js +152 -0
- package/dist/core/ingestion/languages/dart.d.ts +12 -0
- package/dist/core/ingestion/languages/dart.js +102 -0
- package/dist/core/ingestion/languages/go.d.ts +11 -0
- package/dist/core/ingestion/languages/go.js +44 -0
- package/dist/core/ingestion/languages/index.d.ts +39 -0
- package/dist/core/ingestion/languages/index.js +64 -0
- package/dist/core/ingestion/languages/java.d.ts +9 -0
- package/dist/core/ingestion/languages/java.js +44 -0
- package/dist/core/ingestion/languages/kotlin.d.ts +9 -0
- package/dist/core/ingestion/languages/kotlin.js +123 -0
- package/dist/core/ingestion/languages/php.d.ts +8 -0
- package/dist/core/ingestion/languages/php.js +240 -0
- package/dist/core/ingestion/languages/python/arity-metadata.d.ts +24 -0
- package/dist/core/ingestion/languages/python/arity-metadata.js +45 -0
- package/dist/core/ingestion/languages/python/arity.d.ts +22 -0
- package/dist/core/ingestion/languages/python/arity.js +38 -0
- package/dist/core/ingestion/languages/python/cache-stats.d.ts +17 -0
- package/dist/core/ingestion/languages/python/cache-stats.js +28 -0
- package/dist/core/ingestion/languages/python/captures.d.ts +19 -0
- package/dist/core/ingestion/languages/python/captures.js +106 -0
- package/dist/core/ingestion/languages/python/import-decomposer.d.ts +15 -0
- package/dist/core/ingestion/languages/python/import-decomposer.js +112 -0
- package/dist/core/ingestion/languages/python/import-target.d.ts +21 -0
- package/dist/core/ingestion/languages/python/import-target.js +99 -0
- package/dist/core/ingestion/languages/python/index.d.ts +80 -0
- package/dist/core/ingestion/languages/python/index.js +80 -0
- package/dist/core/ingestion/languages/python/interpret.d.ts +15 -0
- package/dist/core/ingestion/languages/python/interpret.js +191 -0
- package/dist/core/ingestion/languages/python/merge-bindings.d.ts +16 -0
- package/dist/core/ingestion/languages/python/merge-bindings.js +44 -0
- package/dist/core/ingestion/languages/python/query.d.ts +9 -0
- package/dist/core/ingestion/languages/python/query.js +267 -0
- package/dist/core/ingestion/languages/python/receiver-binding.d.ts +21 -0
- package/dist/core/ingestion/languages/python/receiver-binding.js +116 -0
- package/dist/core/ingestion/languages/python/scope-resolver.d.ts +16 -0
- package/dist/core/ingestion/languages/python/scope-resolver.js +53 -0
- package/dist/core/ingestion/languages/python/simple-hooks.d.ts +23 -0
- package/dist/core/ingestion/languages/python/simple-hooks.js +35 -0
- package/dist/core/ingestion/languages/python.d.ts +12 -0
- package/dist/core/ingestion/languages/python.js +91 -0
- package/dist/core/ingestion/languages/ruby.d.ts +9 -0
- package/dist/core/ingestion/languages/ruby.js +210 -0
- package/dist/core/ingestion/languages/rust.d.ts +12 -0
- package/dist/core/ingestion/languages/rust.js +132 -0
- package/dist/core/ingestion/languages/swift.d.ts +12 -0
- package/dist/core/ingestion/languages/swift.js +244 -0
- package/dist/core/ingestion/languages/typescript.d.ts +11 -0
- package/dist/core/ingestion/languages/typescript.js +184 -0
- package/dist/core/ingestion/languages/vue.d.ts +13 -0
- package/dist/core/ingestion/languages/vue.js +77 -0
- package/dist/core/ingestion/markdown-processor.d.ts +17 -0
- package/dist/core/ingestion/markdown-processor.js +124 -0
- package/dist/core/ingestion/method-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
- package/dist/core/ingestion/method-extractors/configs/csharp.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/csharp.js +287 -0
- package/dist/core/ingestion/method-extractors/configs/dart.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/dart.js +376 -0
- package/dist/core/ingestion/method-extractors/configs/go.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/go.js +176 -0
- package/dist/core/ingestion/method-extractors/configs/jvm.d.ts +3 -0
- package/dist/core/ingestion/method-extractors/configs/jvm.js +336 -0
- package/dist/core/ingestion/method-extractors/configs/php.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/php.js +304 -0
- package/dist/core/ingestion/method-extractors/configs/python.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/python.js +309 -0
- package/dist/core/ingestion/method-extractors/configs/ruby.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/ruby.js +286 -0
- package/dist/core/ingestion/method-extractors/configs/rust.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/rust.js +195 -0
- package/dist/core/ingestion/method-extractors/configs/swift.d.ts +2 -0
- package/dist/core/ingestion/method-extractors/configs/swift.js +277 -0
- package/dist/core/ingestion/method-extractors/configs/typescript-javascript.d.ts +3 -0
- package/dist/core/ingestion/method-extractors/configs/typescript-javascript.js +338 -0
- package/dist/core/ingestion/method-extractors/generic.d.ts +11 -0
- package/dist/core/ingestion/method-extractors/generic.js +204 -0
- package/dist/core/ingestion/method-types.d.ts +90 -0
- package/dist/core/ingestion/method-types.js +2 -0
- package/dist/core/ingestion/model/field-registry.d.ts +18 -0
- package/dist/core/ingestion/model/field-registry.js +22 -0
- package/dist/core/ingestion/model/heritage-map.d.ts +105 -0
- package/dist/core/ingestion/model/heritage-map.js +260 -0
- package/dist/core/ingestion/model/index.d.ts +20 -0
- package/dist/core/ingestion/model/index.js +43 -0
- package/dist/core/ingestion/model/method-registry.d.ts +71 -0
- package/dist/core/ingestion/model/method-registry.js +134 -0
- package/dist/core/ingestion/model/registration-table.d.ts +138 -0
- package/dist/core/ingestion/model/registration-table.js +224 -0
- package/dist/core/ingestion/model/resolution-context.d.ts +93 -0
- package/dist/core/ingestion/model/resolution-context.js +337 -0
- package/dist/core/ingestion/model/resolve.d.ts +61 -0
- package/dist/core/ingestion/model/resolve.js +381 -0
- package/dist/core/ingestion/model/scope-resolution-indexes.d.ts +59 -0
- package/dist/core/ingestion/model/scope-resolution-indexes.js +42 -0
- package/dist/core/ingestion/model/semantic-model.d.ts +150 -0
- package/dist/core/ingestion/model/semantic-model.js +175 -0
- package/dist/core/ingestion/model/symbol-table.d.ts +200 -0
- package/dist/core/ingestion/model/symbol-table.js +206 -0
- package/dist/core/ingestion/model/type-registry.d.ts +39 -0
- package/dist/core/ingestion/model/type-registry.js +62 -0
- package/dist/core/ingestion/mro-processor.d.ts +46 -0
- package/dist/core/ingestion/mro-processor.js +597 -0
- package/dist/core/ingestion/named-bindings/csharp.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/csharp.js +37 -0
- package/dist/core/ingestion/named-bindings/java.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/java.js +29 -0
- package/dist/core/ingestion/named-bindings/kotlin.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/kotlin.js +36 -0
- package/dist/core/ingestion/named-bindings/php.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/php.js +61 -0
- package/dist/core/ingestion/named-bindings/python.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/python.js +49 -0
- package/dist/core/ingestion/named-bindings/rust.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/rust.js +66 -0
- package/dist/core/ingestion/named-bindings/types.d.ts +16 -0
- package/dist/core/ingestion/named-bindings/types.js +6 -0
- package/dist/core/ingestion/named-bindings/typescript.d.ts +3 -0
- package/dist/core/ingestion/named-bindings/typescript.js +58 -0
- package/dist/core/ingestion/parsing-processor.d.ts +40 -0
- package/dist/core/ingestion/parsing-processor.js +576 -0
- package/dist/core/ingestion/pipeline-phases/cobol.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/cobol.js +45 -0
- package/dist/core/ingestion/pipeline-phases/communities.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/communities.js +62 -0
- package/dist/core/ingestion/pipeline-phases/cross-file-impl.d.ts +17 -0
- package/dist/core/ingestion/pipeline-phases/cross-file-impl.js +156 -0
- package/dist/core/ingestion/pipeline-phases/cross-file.d.ts +37 -0
- package/dist/core/ingestion/pipeline-phases/cross-file.js +63 -0
- package/dist/core/ingestion/pipeline-phases/index.d.ts +22 -0
- package/dist/core/ingestion/pipeline-phases/index.js +23 -0
- package/dist/core/ingestion/pipeline-phases/markdown.d.ts +17 -0
- package/dist/core/ingestion/pipeline-phases/markdown.js +33 -0
- package/dist/core/ingestion/pipeline-phases/mro.d.ts +18 -0
- package/dist/core/ingestion/pipeline-phases/mro.js +36 -0
- package/dist/core/ingestion/pipeline-phases/orm-extraction.d.ts +22 -0
- package/dist/core/ingestion/pipeline-phases/orm-extraction.js +92 -0
- package/dist/core/ingestion/pipeline-phases/orm.d.ts +15 -0
- package/dist/core/ingestion/pipeline-phases/orm.js +74 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +58 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +458 -0
- package/dist/core/ingestion/pipeline-phases/parse.d.ts +74 -0
- package/dist/core/ingestion/pipeline-phases/parse.js +33 -0
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/processes.js +143 -0
- package/dist/core/ingestion/pipeline-phases/routes.d.ts +21 -0
- package/dist/core/ingestion/pipeline-phases/routes.js +243 -0
- package/dist/core/ingestion/pipeline-phases/runner.d.ts +22 -0
- package/dist/core/ingestion/pipeline-phases/runner.js +203 -0
- package/dist/core/ingestion/pipeline-phases/scan.d.ts +21 -0
- package/dist/core/ingestion/pipeline-phases/scan.js +46 -0
- package/dist/core/ingestion/pipeline-phases/structure.d.ts +27 -0
- package/dist/core/ingestion/pipeline-phases/structure.js +35 -0
- package/dist/core/ingestion/pipeline-phases/tools.d.ts +20 -0
- package/dist/core/ingestion/pipeline-phases/tools.js +79 -0
- package/dist/core/ingestion/pipeline-phases/types.d.ts +79 -0
- package/dist/core/ingestion/pipeline-phases/types.js +37 -0
- package/dist/core/ingestion/pipeline-phases/wildcard-synthesis.d.ts +70 -0
- package/dist/core/ingestion/pipeline-phases/wildcard-synthesis.js +312 -0
- package/dist/core/ingestion/pipeline.d.ts +36 -0
- package/dist/core/ingestion/pipeline.js +89 -0
- package/dist/core/ingestion/process-processor.d.ts +51 -0
- package/dist/core/ingestion/process-processor.js +317 -0
- package/dist/core/ingestion/registry-primary-flag.d.ts +86 -0
- package/dist/core/ingestion/registry-primary-flag.js +111 -0
- package/dist/core/ingestion/resolve-references.d.ts +63 -0
- package/dist/core/ingestion/resolve-references.js +175 -0
- package/dist/core/ingestion/route-extractors/expo.d.ts +1 -0
- package/dist/core/ingestion/route-extractors/expo.js +36 -0
- package/dist/core/ingestion/route-extractors/middleware.d.ts +47 -0
- package/dist/core/ingestion/route-extractors/middleware.js +167 -0
- package/dist/core/ingestion/route-extractors/nextjs.d.ts +3 -0
- package/dist/core/ingestion/route-extractors/nextjs.js +76 -0
- package/dist/core/ingestion/route-extractors/php.d.ts +7 -0
- package/dist/core/ingestion/route-extractors/php.js +22 -0
- package/dist/core/ingestion/route-extractors/response-shapes.d.ts +20 -0
- package/dist/core/ingestion/route-extractors/response-shapes.js +294 -0
- package/dist/core/ingestion/scope-extractor-bridge.d.ts +32 -0
- package/dist/core/ingestion/scope-extractor-bridge.js +44 -0
- package/dist/core/ingestion/scope-extractor.d.ts +86 -0
- package/dist/core/ingestion/scope-extractor.js +758 -0
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +372 -0
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +212 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +43 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +79 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +57 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +112 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +17 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +46 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/method-dispatch.d.ts +19 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +30 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +37 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +113 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +38 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +73 -0
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +42 -0
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +198 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +27 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +131 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-return-types.d.ts +48 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-return-types.js +130 -0
- package/dist/core/ingestion/scope-resolution/passes/mro.d.ts +42 -0
- package/dist/core/ingestion/scope-resolution/passes/mro.js +99 -0
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.d.ts +26 -0
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.js +61 -0
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +46 -0
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +327 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +47 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +130 -0
- package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.d.ts +68 -0
- package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +125 -0
- package/dist/core/ingestion/scope-resolution/pipeline/registry.d.ts +17 -0
- package/dist/core/ingestion/scope-resolution/pipeline/registry.js +21 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +66 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +157 -0
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +36 -0
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +52 -0
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +127 -0
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +349 -0
- package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +52 -0
- package/dist/core/ingestion/scope-resolution/workspace-index.js +61 -0
- package/dist/core/ingestion/shadow-harness.d.ts +113 -0
- package/dist/core/ingestion/shadow-harness.js +148 -0
- package/dist/core/ingestion/structure-processor.d.ts +2 -0
- package/dist/core/ingestion/structure-processor.js +36 -0
- package/dist/core/ingestion/tree-sitter-queries.d.ts +16 -0
- package/dist/core/ingestion/tree-sitter-queries.js +1338 -0
- package/dist/core/ingestion/type-env.d.ts +86 -0
- package/dist/core/ingestion/type-env.js +1128 -0
- package/dist/core/ingestion/type-extractors/c-cpp.d.ts +7 -0
- package/dist/core/ingestion/type-extractors/c-cpp.js +532 -0
- package/dist/core/ingestion/type-extractors/csharp.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/csharp.js +583 -0
- package/dist/core/ingestion/type-extractors/dart.d.ts +15 -0
- package/dist/core/ingestion/type-extractors/dart.js +369 -0
- package/dist/core/ingestion/type-extractors/go.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/go.js +513 -0
- package/dist/core/ingestion/type-extractors/jvm.d.ts +3 -0
- package/dist/core/ingestion/type-extractors/jvm.js +856 -0
- package/dist/core/ingestion/type-extractors/php.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/php.js +534 -0
- package/dist/core/ingestion/type-extractors/python.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/python.js +474 -0
- package/dist/core/ingestion/type-extractors/ruby.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/ruby.js +377 -0
- package/dist/core/ingestion/type-extractors/rust.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/rust.js +515 -0
- package/dist/core/ingestion/type-extractors/shared.d.ts +131 -0
- package/dist/core/ingestion/type-extractors/shared.js +796 -0
- package/dist/core/ingestion/type-extractors/swift.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/swift.js +484 -0
- package/dist/core/ingestion/type-extractors/types.d.ts +172 -0
- package/dist/core/ingestion/type-extractors/types.js +1 -0
- package/dist/core/ingestion/type-extractors/typescript.d.ts +2 -0
- package/dist/core/ingestion/type-extractors/typescript.js +661 -0
- package/dist/core/ingestion/utils/ast-helpers.d.ts +89 -0
- package/dist/core/ingestion/utils/ast-helpers.js +535 -0
- package/dist/core/ingestion/utils/call-analysis.d.ts +75 -0
- package/dist/core/ingestion/utils/call-analysis.js +574 -0
- package/dist/core/ingestion/utils/env.d.ts +10 -0
- package/dist/core/ingestion/utils/env.js +10 -0
- package/dist/core/ingestion/utils/event-loop.d.ts +5 -0
- package/dist/core/ingestion/utils/event-loop.js +5 -0
- package/dist/core/ingestion/utils/graph-sort.d.ts +58 -0
- package/dist/core/ingestion/utils/graph-sort.js +100 -0
- package/dist/core/ingestion/utils/max-file-size.d.ts +20 -0
- package/dist/core/ingestion/utils/max-file-size.js +52 -0
- package/dist/core/ingestion/utils/method-props.d.ts +32 -0
- package/dist/core/ingestion/utils/method-props.js +147 -0
- package/dist/core/ingestion/utils/ruby-self-call.d.ts +52 -0
- package/dist/core/ingestion/utils/ruby-self-call.js +59 -0
- package/dist/core/ingestion/utils/verbose.d.ts +1 -0
- package/dist/core/ingestion/utils/verbose.js +7 -0
- package/dist/core/ingestion/variable-extractors/configs/c-cpp.d.ts +3 -0
- package/dist/core/ingestion/variable-extractors/configs/c-cpp.js +81 -0
- package/dist/core/ingestion/variable-extractors/configs/csharp.d.ts +9 -0
- package/dist/core/ingestion/variable-extractors/configs/csharp.js +63 -0
- package/dist/core/ingestion/variable-extractors/configs/dart.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/dart.js +94 -0
- package/dist/core/ingestion/variable-extractors/configs/go.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/go.js +83 -0
- package/dist/core/ingestion/variable-extractors/configs/jvm.d.ts +18 -0
- package/dist/core/ingestion/variable-extractors/configs/jvm.js +115 -0
- package/dist/core/ingestion/variable-extractors/configs/php.d.ts +14 -0
- package/dist/core/ingestion/variable-extractors/configs/php.js +58 -0
- package/dist/core/ingestion/variable-extractors/configs/python.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/python.js +101 -0
- package/dist/core/ingestion/variable-extractors/configs/ruby.d.ts +11 -0
- package/dist/core/ingestion/variable-extractors/configs/ruby.js +52 -0
- package/dist/core/ingestion/variable-extractors/configs/rust.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/rust.js +76 -0
- package/dist/core/ingestion/variable-extractors/configs/swift.d.ts +2 -0
- package/dist/core/ingestion/variable-extractors/configs/swift.js +88 -0
- package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.d.ts +3 -0
- package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.js +83 -0
- package/dist/core/ingestion/variable-extractors/generic.d.ts +5 -0
- package/dist/core/ingestion/variable-extractors/generic.js +80 -0
- package/dist/core/ingestion/variable-types.d.ts +82 -0
- package/dist/core/ingestion/variable-types.js +2 -0
- package/dist/core/ingestion/vue-sfc-extractor.d.ts +44 -0
- package/dist/core/ingestion/vue-sfc-extractor.js +94 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +198 -0
- package/dist/core/ingestion/workers/parse-worker.js +1928 -0
- package/dist/core/ingestion/workers/worker-pool.d.ts +16 -0
- package/dist/core/ingestion/workers/worker-pool.js +126 -0
- package/dist/core/lbug/csv-generator.d.ts +33 -0
- package/dist/core/lbug/csv-generator.js +459 -0
- package/dist/core/lbug/lbug-adapter.d.ts +173 -0
- package/dist/core/lbug/lbug-adapter.js +1188 -0
- package/dist/core/lbug/pool-adapter.d.ts +93 -0
- package/dist/core/lbug/pool-adapter.js +543 -0
- package/dist/core/lbug/schema.d.ts +62 -0
- package/dist/core/lbug/schema.js +484 -0
- package/dist/core/run-analyze.d.ts +72 -0
- package/dist/core/run-analyze.js +315 -0
- package/dist/core/search/bm25-index.d.ts +41 -0
- package/dist/core/search/bm25-index.js +209 -0
- package/dist/core/search/hybrid-search.d.ts +49 -0
- package/dist/core/search/hybrid-search.js +118 -0
- package/dist/core/search/phase-timer.d.ts +72 -0
- package/dist/core/search/phase-timer.js +106 -0
- package/dist/core/tree-sitter/parser-loader.d.ts +8 -0
- package/dist/core/tree-sitter/parser-loader.js +84 -0
- package/dist/core/wiki/cursor-client.d.ts +31 -0
- package/dist/core/wiki/cursor-client.js +122 -0
- package/dist/core/wiki/generator.d.ts +129 -0
- package/dist/core/wiki/generator.js +898 -0
- package/dist/core/wiki/graph-queries.d.ts +84 -0
- package/dist/core/wiki/graph-queries.js +244 -0
- package/dist/core/wiki/html-viewer.d.ts +10 -0
- package/dist/core/wiki/html-viewer.js +303 -0
- package/dist/core/wiki/llm-client.d.ts +63 -0
- package/dist/core/wiki/llm-client.js +234 -0
- package/dist/core/wiki/prompts.d.ts +53 -0
- package/dist/core/wiki/prompts.js +181 -0
- package/dist/lib/utils.d.ts +1 -0
- package/dist/lib/utils.js +3 -0
- package/dist/mcp/compatible-stdio-transport.d.ts +25 -0
- package/dist/mcp/compatible-stdio-transport.js +200 -0
- package/dist/mcp/core/embedder.d.ts +27 -0
- package/dist/mcp/core/embedder.js +122 -0
- package/dist/mcp/core/lbug-adapter.d.ts +5 -0
- package/dist/mcp/core/lbug-adapter.js +5 -0
- package/dist/mcp/local/graphstore-handler.d.ts +214 -0
- package/dist/mcp/local/graphstore-handler.js +272 -0
- package/dist/mcp/local/local-backend.d.ts +347 -0
- package/dist/mcp/local/local-backend.js +3218 -0
- package/dist/mcp/resources.d.ts +62 -0
- package/dist/mcp/resources.js +696 -0
- package/dist/mcp/server.d.ts +23 -0
- package/dist/mcp/server.js +533 -0
- package/dist/mcp/staleness.d.ts +5 -0
- package/dist/mcp/staleness.js +4 -0
- package/dist/mcp/tools.d.ts +27 -0
- package/dist/mcp/tools.js +823 -0
- package/dist/server/analyze-job.d.ts +55 -0
- package/dist/server/analyze-job.js +150 -0
- package/dist/server/analyze-worker.d.ts +13 -0
- package/dist/server/analyze-worker.js +59 -0
- package/dist/server/api.d.ts +47 -0
- package/dist/server/api.js +1727 -0
- package/dist/server/git-clone.d.ts +26 -0
- package/dist/server/git-clone.js +184 -0
- package/dist/server/mcp-http.d.ts +13 -0
- package/dist/server/mcp-http.js +100 -0
- package/dist/storage/git.d.ts +80 -0
- package/dist/storage/git.js +190 -0
- package/dist/storage/repo-manager.d.ts +458 -0
- package/dist/storage/repo-manager.js +766 -0
- package/dist/types/pipeline.d.ts +18 -0
- package/dist/types/pipeline.js +1 -0
- package/hooks/claude/codragraph-hook.cjs +268 -0
- package/hooks/claude/pre-tool-use.sh +79 -0
- package/hooks/claude/session-start.sh +42 -0
- package/package.json +127 -0
- package/scripts/bench-scope-resolution.ts +134 -0
- package/scripts/build-tree-sitter-proto.cjs +82 -0
- package/scripts/build.js +90 -0
- package/scripts/ci-list-migrated-languages.ts +24 -0
- package/scripts/patch-tree-sitter-swift.cjs +78 -0
- package/skills/codragraph-cli.md +82 -0
- package/skills/codragraph-debugging.md +89 -0
- package/skills/codragraph-exploring.md +78 -0
- package/skills/codragraph-guide.md +64 -0
- package/skills/codragraph-impact-analysis.md +97 -0
- package/skills/codragraph-pr-review.md +163 -0
- package/skills/codragraph-refactoring.md +121 -0
- package/vendor/leiden/index.cjs +355 -0
- package/vendor/leiden/utils.cjs +392 -0
- package/vendor/tree-sitter-proto/binding.gyp +30 -0
- package/vendor/tree-sitter-proto/bindings/node/binding.cc +20 -0
- package/vendor/tree-sitter-proto/bindings/node/index.d.ts +28 -0
- package/vendor/tree-sitter-proto/bindings/node/index.js +7 -0
- package/vendor/tree-sitter-proto/package.json +12 -0
- package/vendor/tree-sitter-proto/src/node-types.json +1145 -0
- package/vendor/tree-sitter-proto/src/parser.c +10149 -0
- package/vendor/tree-sitter-proto/src/tree_sitter/alloc.h +54 -0
- package/vendor/tree-sitter-proto/src/tree_sitter/array.h +291 -0
- package/vendor/tree-sitter-proto/src/tree_sitter/parser.h +266 -0
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
import { findChild } from '../utils/ast-helpers.js';
|
|
2
|
+
import { extractSimpleTypeName, extractVarName, hasTypeAnnotation, extractElementTypeFromString, resolveIterableElementType, } from './shared.js';
|
|
3
|
+
const DECLARATION_NODE_TYPES = new Set([
|
|
4
|
+
'property_declaration',
|
|
5
|
+
'if_statement',
|
|
6
|
+
'guard_statement',
|
|
7
|
+
]);
|
|
8
|
+
const FOR_LOOP_NODE_TYPES = new Set(['for_statement']);
|
|
9
|
+
/**
|
|
10
|
+
* Unwrap Swift `await_expression` and `try_expression` nodes to find the inner
|
|
11
|
+
* call_expression or other value node. `try` nodes contain a `try_operator` child
|
|
12
|
+
* that must be skipped.
|
|
13
|
+
*/
|
|
14
|
+
function unwrapSwiftExpression(node) {
|
|
15
|
+
if (node.type === 'await_expression' || node.type === 'try_expression') {
|
|
16
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
17
|
+
const child = node.namedChild(i);
|
|
18
|
+
if (child && child.type !== 'try_operator')
|
|
19
|
+
return unwrapSwiftExpression(child);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return node;
|
|
23
|
+
}
|
|
24
|
+
/** Swift: let x: Foo = ... */
|
|
25
|
+
const extractDeclaration = (node, env) => {
|
|
26
|
+
// Swift property_declaration has pattern and type_annotation
|
|
27
|
+
const pattern = node.childForFieldName('pattern') ?? findChild(node, 'pattern');
|
|
28
|
+
const typeAnnotation = node.childForFieldName('type') ?? findChild(node, 'type_annotation');
|
|
29
|
+
if (!pattern || !typeAnnotation)
|
|
30
|
+
return;
|
|
31
|
+
const varName = extractVarName(pattern) ?? pattern.text;
|
|
32
|
+
const typeName = extractSimpleTypeName(typeAnnotation);
|
|
33
|
+
if (varName && typeName)
|
|
34
|
+
env.set(varName, typeName);
|
|
35
|
+
};
|
|
36
|
+
/** Swift: parameter → name: type */
|
|
37
|
+
const extractParameter = (node, env) => {
|
|
38
|
+
let nameNode = null;
|
|
39
|
+
let typeNode = null;
|
|
40
|
+
if (node.type === 'parameter') {
|
|
41
|
+
nameNode = node.childForFieldName('name') ?? node.childForFieldName('internal_name');
|
|
42
|
+
typeNode = node.childForFieldName('type');
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
nameNode = node.childForFieldName('name') ?? node.childForFieldName('pattern');
|
|
46
|
+
typeNode = node.childForFieldName('type');
|
|
47
|
+
}
|
|
48
|
+
if (!nameNode || !typeNode)
|
|
49
|
+
return;
|
|
50
|
+
const varName = extractVarName(nameNode);
|
|
51
|
+
const typeName = extractSimpleTypeName(typeNode);
|
|
52
|
+
if (varName && typeName)
|
|
53
|
+
env.set(varName, typeName);
|
|
54
|
+
};
|
|
55
|
+
/** Swift: let user = User(name: "alice") — infer type from call when callee is a known class.
|
|
56
|
+
* Swift initializers are syntactically identical to function calls, so we verify
|
|
57
|
+
* against classNames (which may include cross-file SymbolTable lookups). */
|
|
58
|
+
const extractInitializer = (node, env, classNames) => {
|
|
59
|
+
if (node.type !== 'property_declaration')
|
|
60
|
+
return;
|
|
61
|
+
// Skip if has type annotation — extractDeclaration handled it
|
|
62
|
+
if (node.childForFieldName('type') || findChild(node, 'type_annotation'))
|
|
63
|
+
return;
|
|
64
|
+
// Find pattern (variable name)
|
|
65
|
+
const pattern = node.childForFieldName('pattern') ?? findChild(node, 'pattern');
|
|
66
|
+
if (!pattern)
|
|
67
|
+
return;
|
|
68
|
+
const varName = extractVarName(pattern) ?? pattern.text;
|
|
69
|
+
if (!varName || env.has(varName))
|
|
70
|
+
return;
|
|
71
|
+
// Find call_expression in the value (unwrap await/try)
|
|
72
|
+
let callExpr = findChild(node, 'call_expression');
|
|
73
|
+
if (!callExpr) {
|
|
74
|
+
// Check for await_expression or try_expression wrapping a call_expression
|
|
75
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
76
|
+
const child = node.namedChild(i);
|
|
77
|
+
if (child && (child.type === 'await_expression' || child.type === 'try_expression')) {
|
|
78
|
+
const unwrapped = unwrapSwiftExpression(child);
|
|
79
|
+
if (unwrapped.type === 'call_expression') {
|
|
80
|
+
callExpr = unwrapped;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (!callExpr)
|
|
87
|
+
return;
|
|
88
|
+
const callee = callExpr.firstNamedChild;
|
|
89
|
+
if (!callee)
|
|
90
|
+
return;
|
|
91
|
+
// Direct call: User(name: "alice")
|
|
92
|
+
if (callee.type === 'simple_identifier') {
|
|
93
|
+
const calleeName = callee.text;
|
|
94
|
+
if (calleeName && classNames.has(calleeName)) {
|
|
95
|
+
env.set(varName, calleeName);
|
|
96
|
+
}
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
// Explicit init: User.init(name: "alice") — navigation_expression with .init suffix
|
|
100
|
+
if (callee.type === 'navigation_expression') {
|
|
101
|
+
const receiver = callee.firstNamedChild;
|
|
102
|
+
const suffix = callee.lastNamedChild;
|
|
103
|
+
if (receiver?.type === 'simple_identifier' && suffix?.text === 'init') {
|
|
104
|
+
const calleeName = receiver.text;
|
|
105
|
+
if (calleeName && classNames.has(calleeName)) {
|
|
106
|
+
env.set(varName, calleeName);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
/** Swift: let user = User(name: "alice") — scan property_declaration for constructor binding */
|
|
112
|
+
const scanConstructorBinding = (node) => {
|
|
113
|
+
if (node.type !== 'property_declaration')
|
|
114
|
+
return undefined;
|
|
115
|
+
if (hasTypeAnnotation(node))
|
|
116
|
+
return undefined;
|
|
117
|
+
const pattern = node.childForFieldName('pattern');
|
|
118
|
+
if (!pattern)
|
|
119
|
+
return undefined;
|
|
120
|
+
const varName = pattern.text;
|
|
121
|
+
if (!varName)
|
|
122
|
+
return undefined;
|
|
123
|
+
let callExpr = null;
|
|
124
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
125
|
+
const child = node.namedChild(i);
|
|
126
|
+
if (child?.type === 'call_expression') {
|
|
127
|
+
callExpr = child;
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
// Unwrap await/try to find inner call_expression
|
|
131
|
+
if (child && (child.type === 'await_expression' || child.type === 'try_expression')) {
|
|
132
|
+
const unwrapped = unwrapSwiftExpression(child);
|
|
133
|
+
if (unwrapped.type === 'call_expression') {
|
|
134
|
+
callExpr = unwrapped;
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (!callExpr)
|
|
140
|
+
return undefined;
|
|
141
|
+
const callee = callExpr.firstNamedChild;
|
|
142
|
+
if (!callee)
|
|
143
|
+
return undefined;
|
|
144
|
+
if (callee.type === 'simple_identifier') {
|
|
145
|
+
return { varName, calleeName: callee.text };
|
|
146
|
+
}
|
|
147
|
+
if (callee.type === 'navigation_expression') {
|
|
148
|
+
const receiver = callee.firstNamedChild;
|
|
149
|
+
const suffix = callee.lastNamedChild;
|
|
150
|
+
if (receiver?.type === 'simple_identifier' && suffix?.text === 'init') {
|
|
151
|
+
return { varName, calleeName: receiver.text };
|
|
152
|
+
}
|
|
153
|
+
// General qualified call: service.getUser() → extract method name.
|
|
154
|
+
// tree-sitter-swift may wrap the identifier in navigation_suffix, so
|
|
155
|
+
// check both direct simple_identifier and navigation_suffix > simple_identifier.
|
|
156
|
+
if (suffix?.type === 'simple_identifier') {
|
|
157
|
+
return { varName, calleeName: suffix.text };
|
|
158
|
+
}
|
|
159
|
+
if (suffix?.type === 'navigation_suffix') {
|
|
160
|
+
const inner = suffix.lastNamedChild;
|
|
161
|
+
if (inner?.type === 'simple_identifier') {
|
|
162
|
+
return { varName, calleeName: inner.text };
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return undefined;
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* Extract the variable name from an if_statement or guard_statement with optional binding.
|
|
170
|
+
* Pattern: `if let varName = expr` / `guard let varName = expr`
|
|
171
|
+
* AST: if_statement/guard_statement contains value_binding_pattern, then simple_identifier (varName),
|
|
172
|
+
* then call_expression/simple_identifier/navigation_expression (value).
|
|
173
|
+
*/
|
|
174
|
+
function extractIfGuardBinding(node, scopeEnv) {
|
|
175
|
+
// Find value_binding_pattern to confirm this is an optional binding
|
|
176
|
+
let hasValueBinding = false;
|
|
177
|
+
let varName;
|
|
178
|
+
let valueNode = null;
|
|
179
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
180
|
+
const child = node.namedChild(i);
|
|
181
|
+
if (!child)
|
|
182
|
+
continue;
|
|
183
|
+
if (child.type === 'value_binding_pattern') {
|
|
184
|
+
hasValueBinding = true;
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
if (hasValueBinding && !varName && child.type === 'simple_identifier') {
|
|
188
|
+
varName = child.text;
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
if (varName && !valueNode) {
|
|
192
|
+
// Skip type annotations and binding operators
|
|
193
|
+
if (child.type === 'type_annotation')
|
|
194
|
+
continue;
|
|
195
|
+
valueNode = child;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (!hasValueBinding || !varName || !valueNode || scopeEnv.has(varName))
|
|
200
|
+
return undefined;
|
|
201
|
+
// Unwrap await/try
|
|
202
|
+
valueNode = unwrapSwiftExpression(valueNode);
|
|
203
|
+
// simple_identifier → copy
|
|
204
|
+
if (valueNode.type === 'simple_identifier') {
|
|
205
|
+
return { kind: 'copy', lhs: varName, rhs: valueNode.text };
|
|
206
|
+
}
|
|
207
|
+
// navigation_expression → fieldAccess
|
|
208
|
+
if (valueNode.type === 'navigation_expression') {
|
|
209
|
+
const receiver = valueNode.firstNamedChild;
|
|
210
|
+
const suffix = valueNode.lastNamedChild;
|
|
211
|
+
if (receiver?.type === 'simple_identifier' && suffix?.type === 'navigation_suffix') {
|
|
212
|
+
const field = suffix.lastNamedChild;
|
|
213
|
+
if (field?.type === 'simple_identifier') {
|
|
214
|
+
return { kind: 'fieldAccess', lhs: varName, receiver: receiver.text, field: field.text };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return undefined;
|
|
218
|
+
}
|
|
219
|
+
// call_expression → callResult or methodCallResult
|
|
220
|
+
if (valueNode.type === 'call_expression') {
|
|
221
|
+
const callee = valueNode.firstNamedChild;
|
|
222
|
+
if (!callee)
|
|
223
|
+
return undefined;
|
|
224
|
+
if (callee.type === 'simple_identifier') {
|
|
225
|
+
return { kind: 'callResult', lhs: varName, callee: callee.text };
|
|
226
|
+
}
|
|
227
|
+
if (callee.type === 'navigation_expression') {
|
|
228
|
+
const receiver = callee.firstNamedChild;
|
|
229
|
+
const suffix = callee.lastNamedChild;
|
|
230
|
+
if (receiver?.type === 'simple_identifier' && suffix?.type === 'navigation_suffix') {
|
|
231
|
+
const method = suffix.lastNamedChild;
|
|
232
|
+
if (method?.type === 'simple_identifier') {
|
|
233
|
+
return {
|
|
234
|
+
kind: 'methodCallResult',
|
|
235
|
+
lhs: varName,
|
|
236
|
+
receiver: receiver.text,
|
|
237
|
+
method: method.text,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return undefined;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Swift: extract pending assignments for Tier 2 return-type propagation.
|
|
247
|
+
* Handles:
|
|
248
|
+
* let user = getUser() → callResult
|
|
249
|
+
* let result = user.save() → methodCallResult
|
|
250
|
+
* let name = user.name → fieldAccess
|
|
251
|
+
* let copy = user → copy
|
|
252
|
+
* let user = await getUser() → callResult (unwrapped)
|
|
253
|
+
* let user = try getUser() → callResult (unwrapped)
|
|
254
|
+
* if let user = getUser() → callResult (optional binding)
|
|
255
|
+
* guard let user = getUser() → callResult (optional binding)
|
|
256
|
+
*/
|
|
257
|
+
const extractPendingAssignment = (node, scopeEnv) => {
|
|
258
|
+
// Handle if_statement and guard_statement optional bindings
|
|
259
|
+
if (node.type === 'if_statement' || node.type === 'guard_statement') {
|
|
260
|
+
return extractIfGuardBinding(node, scopeEnv);
|
|
261
|
+
}
|
|
262
|
+
if (node.type !== 'property_declaration')
|
|
263
|
+
return undefined;
|
|
264
|
+
// Skip if type annotation exists — extractDeclaration handles it
|
|
265
|
+
if (hasTypeAnnotation(node))
|
|
266
|
+
return undefined;
|
|
267
|
+
// Find the variable name from the pattern child
|
|
268
|
+
let lhs;
|
|
269
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
270
|
+
const child = node.namedChild(i);
|
|
271
|
+
if (child?.type === 'pattern') {
|
|
272
|
+
lhs = child.text;
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (!lhs || scopeEnv.has(lhs))
|
|
277
|
+
return undefined;
|
|
278
|
+
// Find the value expression (last meaningful named child after pattern)
|
|
279
|
+
let valueNode = null;
|
|
280
|
+
for (let i = node.namedChildCount - 1; i >= 0; i--) {
|
|
281
|
+
const child = node.namedChild(i);
|
|
282
|
+
if (!child)
|
|
283
|
+
continue;
|
|
284
|
+
if (child.type === 'pattern' ||
|
|
285
|
+
child.type === 'value_binding_pattern' ||
|
|
286
|
+
child.type === 'type_annotation')
|
|
287
|
+
continue;
|
|
288
|
+
valueNode = child;
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
if (!valueNode)
|
|
292
|
+
return undefined;
|
|
293
|
+
// Unwrap await/try expressions (Feature 2)
|
|
294
|
+
valueNode = unwrapSwiftExpression(valueNode);
|
|
295
|
+
// let copy = user → copy
|
|
296
|
+
if (valueNode.type === 'simple_identifier') {
|
|
297
|
+
return { kind: 'copy', lhs, rhs: valueNode.text };
|
|
298
|
+
}
|
|
299
|
+
// let name = user.name → fieldAccess
|
|
300
|
+
if (valueNode.type === 'navigation_expression') {
|
|
301
|
+
const receiver = valueNode.firstNamedChild;
|
|
302
|
+
const suffix = valueNode.lastNamedChild;
|
|
303
|
+
if (receiver?.type === 'simple_identifier' && suffix?.type === 'navigation_suffix') {
|
|
304
|
+
const field = suffix.lastNamedChild;
|
|
305
|
+
if (field?.type === 'simple_identifier') {
|
|
306
|
+
return { kind: 'fieldAccess', lhs, receiver: receiver.text, field: field.text };
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return undefined;
|
|
310
|
+
}
|
|
311
|
+
// Call expressions
|
|
312
|
+
if (valueNode.type === 'call_expression') {
|
|
313
|
+
const callee = valueNode.firstNamedChild;
|
|
314
|
+
if (!callee)
|
|
315
|
+
return undefined;
|
|
316
|
+
// let user = getUser() → callResult
|
|
317
|
+
if (callee.type === 'simple_identifier') {
|
|
318
|
+
return { kind: 'callResult', lhs, callee: callee.text };
|
|
319
|
+
}
|
|
320
|
+
// let result = user.save() → methodCallResult
|
|
321
|
+
if (callee.type === 'navigation_expression') {
|
|
322
|
+
const receiver = callee.firstNamedChild;
|
|
323
|
+
const suffix = callee.lastNamedChild;
|
|
324
|
+
if (receiver?.type === 'simple_identifier' && suffix?.type === 'navigation_suffix') {
|
|
325
|
+
const method = suffix.lastNamedChild;
|
|
326
|
+
if (method?.type === 'simple_identifier') {
|
|
327
|
+
return { kind: 'methodCallResult', lhs, receiver: receiver.text, method: method.text };
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
return undefined;
|
|
333
|
+
};
|
|
334
|
+
/**
|
|
335
|
+
* Swift: extract loop variable type binding from `for item in collection`.
|
|
336
|
+
* AST: for_statement with pattern > simple_identifier (loop var) and
|
|
337
|
+
* a simple_identifier/call_expression (collection).
|
|
338
|
+
*/
|
|
339
|
+
const extractForLoopBinding = (node, { scopeEnv, declarationTypeNodes, scope, returnTypeLookup }) => {
|
|
340
|
+
if (node.type !== 'for_statement')
|
|
341
|
+
return;
|
|
342
|
+
// Find the loop variable from the pattern child
|
|
343
|
+
let loopVarName;
|
|
344
|
+
let iterableNode = null;
|
|
345
|
+
// for_statement children: pattern (loop var), then the iterable expression, then the body
|
|
346
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
347
|
+
const child = node.namedChild(i);
|
|
348
|
+
if (!child)
|
|
349
|
+
continue;
|
|
350
|
+
if (child.type === 'pattern' || child.type === 'simple_identifier') {
|
|
351
|
+
if (!loopVarName) {
|
|
352
|
+
// Extract a simple identifier from the pattern. Skip non-trivial patterns
|
|
353
|
+
// (e.g. tuple destructuring `for (a, b) in ...`) to avoid polluting scopeEnv.
|
|
354
|
+
const varName = extractVarName(child) ?? (child.type === 'simple_identifier' ? child.text : undefined);
|
|
355
|
+
if (!varName)
|
|
356
|
+
return; // Non-simple pattern — bail out
|
|
357
|
+
loopVarName = varName;
|
|
358
|
+
continue;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
// After we found the loop var, the next expression-like node is the iterable
|
|
362
|
+
if (loopVarName && !iterableNode) {
|
|
363
|
+
if (child.type === 'simple_identifier' ||
|
|
364
|
+
child.type === 'call_expression' ||
|
|
365
|
+
child.type === 'navigation_expression') {
|
|
366
|
+
iterableNode = child;
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
if (!loopVarName || !iterableNode)
|
|
372
|
+
return;
|
|
373
|
+
let iterableName;
|
|
374
|
+
let callExprElementType;
|
|
375
|
+
if (iterableNode.type === 'simple_identifier') {
|
|
376
|
+
iterableName = iterableNode.text;
|
|
377
|
+
}
|
|
378
|
+
else if (iterableNode.type === 'navigation_expression') {
|
|
379
|
+
// collection.property
|
|
380
|
+
const suffix = iterableNode.lastNamedChild;
|
|
381
|
+
if (suffix?.type === 'navigation_suffix') {
|
|
382
|
+
const prop = suffix.lastNamedChild;
|
|
383
|
+
if (prop?.type === 'simple_identifier')
|
|
384
|
+
iterableName = prop.text;
|
|
385
|
+
}
|
|
386
|
+
else if (suffix?.type === 'simple_identifier') {
|
|
387
|
+
iterableName = suffix.text;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
else if (iterableNode.type === 'call_expression') {
|
|
391
|
+
// getItems() or collection.values()
|
|
392
|
+
const fn = iterableNode.firstNamedChild;
|
|
393
|
+
let callee;
|
|
394
|
+
if (fn?.type === 'simple_identifier') {
|
|
395
|
+
callee = fn.text;
|
|
396
|
+
}
|
|
397
|
+
else if (fn?.type === 'navigation_expression') {
|
|
398
|
+
const obj = fn.firstNamedChild;
|
|
399
|
+
const suffix = fn.lastNamedChild;
|
|
400
|
+
if (obj?.type === 'simple_identifier')
|
|
401
|
+
iterableName = obj.text;
|
|
402
|
+
if (suffix?.type === 'navigation_suffix') {
|
|
403
|
+
const m = suffix.lastNamedChild;
|
|
404
|
+
if (m?.type === 'simple_identifier')
|
|
405
|
+
callee = m.text;
|
|
406
|
+
}
|
|
407
|
+
else if (suffix?.type === 'simple_identifier') {
|
|
408
|
+
callee = suffix.text;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
if (callee) {
|
|
412
|
+
const rawReturn = returnTypeLookup.lookupRawReturnType(callee);
|
|
413
|
+
if (rawReturn)
|
|
414
|
+
callExprElementType = extractElementTypeFromString(rawReturn);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
if (!iterableName && !callExprElementType)
|
|
418
|
+
return;
|
|
419
|
+
let elementType;
|
|
420
|
+
if (callExprElementType) {
|
|
421
|
+
elementType = callExprElementType;
|
|
422
|
+
}
|
|
423
|
+
else if (iterableName) {
|
|
424
|
+
// Try to resolve element type from the iterable's declared type
|
|
425
|
+
elementType = resolveIterableElementType(iterableName, node, scopeEnv, declarationTypeNodes, scope, extractSwiftElementTypeFromTypeNode);
|
|
426
|
+
}
|
|
427
|
+
if (elementType && !scopeEnv.has(loopVarName)) {
|
|
428
|
+
scopeEnv.set(loopVarName, elementType);
|
|
429
|
+
}
|
|
430
|
+
};
|
|
431
|
+
/**
|
|
432
|
+
* Extract element type from a Swift type annotation AST node.
|
|
433
|
+
* Handles: [User] (array sugar), Array<User>, Set<User>, etc.
|
|
434
|
+
*/
|
|
435
|
+
function extractSwiftElementTypeFromTypeNode(typeNode) {
|
|
436
|
+
// Swift array sugar: [User] — parsed as array_type > user_type > type_identifier
|
|
437
|
+
if (typeNode.type === 'array_type') {
|
|
438
|
+
const inner = typeNode.firstNamedChild;
|
|
439
|
+
if (inner)
|
|
440
|
+
return extractSimpleTypeName(inner);
|
|
441
|
+
}
|
|
442
|
+
// Generic type: Array<User>, Set<User>
|
|
443
|
+
if (typeNode.type === 'user_type') {
|
|
444
|
+
// Check for generic args: user_type > type_identifier + type_arguments
|
|
445
|
+
for (let i = 0; i < typeNode.namedChildCount; i++) {
|
|
446
|
+
const child = typeNode.namedChild(i);
|
|
447
|
+
if (child?.type === 'type_arguments') {
|
|
448
|
+
const lastArg = child.lastNamedChild;
|
|
449
|
+
if (lastArg)
|
|
450
|
+
return extractSimpleTypeName(lastArg);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
// type_annotation wrapping
|
|
455
|
+
if (typeNode.type === 'type_annotation') {
|
|
456
|
+
const inner = typeNode.firstNamedChild;
|
|
457
|
+
if (inner)
|
|
458
|
+
return extractSwiftElementTypeFromTypeNode(inner);
|
|
459
|
+
}
|
|
460
|
+
return undefined;
|
|
461
|
+
}
|
|
462
|
+
export const typeConfig = {
|
|
463
|
+
declarationNodeTypes: DECLARATION_NODE_TYPES,
|
|
464
|
+
getDeclarationTypeNode: (node) => {
|
|
465
|
+
// Swift: many declarations store type as a type_annotation child (not a 'type' field).
|
|
466
|
+
// Prefer a direct 'type' field if present, else unwrap type_annotation to its inner type.
|
|
467
|
+
const direct = node.childForFieldName('type');
|
|
468
|
+
if (direct)
|
|
469
|
+
return direct;
|
|
470
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
471
|
+
const c = node.namedChild(i);
|
|
472
|
+
if (c?.type === 'type_annotation')
|
|
473
|
+
return c.firstNamedChild ?? c;
|
|
474
|
+
}
|
|
475
|
+
return null;
|
|
476
|
+
},
|
|
477
|
+
forLoopNodeTypes: FOR_LOOP_NODE_TYPES,
|
|
478
|
+
extractDeclaration,
|
|
479
|
+
extractParameter,
|
|
480
|
+
extractInitializer,
|
|
481
|
+
scanConstructorBinding,
|
|
482
|
+
extractPendingAssignment,
|
|
483
|
+
extractForLoopBinding,
|
|
484
|
+
};
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import type { SyntaxNode } from '../utils/ast-helpers.js';
|
|
2
|
+
/** Extracts type bindings from a declaration node into the env map */
|
|
3
|
+
export type TypeBindingExtractor = (node: SyntaxNode, env: Map<string, string>) => void;
|
|
4
|
+
/** Extracts type bindings from a parameter node into the env map */
|
|
5
|
+
export type ParameterExtractor = (node: SyntaxNode, env: Map<string, string>) => void;
|
|
6
|
+
/** Optionally locates the type-annotation AST node for a declaration node.
|
|
7
|
+
* Used by buildTypeEnv to populate declarationTypeNodes and constructorTypeMap.
|
|
8
|
+
* If absent, buildTypeEnv falls back to generic heuristics (childForFieldName('type'), etc). */
|
|
9
|
+
export type DeclarationTypeNodeLocator = (node: SyntaxNode) => SyntaxNode | null;
|
|
10
|
+
/** Minimal interface for checking whether a name is a known class/struct.
|
|
11
|
+
* Narrower than ReadonlySet — only `.has()` is used by extractors. */
|
|
12
|
+
export type ClassNameLookup = {
|
|
13
|
+
has(name: string): boolean;
|
|
14
|
+
};
|
|
15
|
+
/** Extracts type bindings from a constructor-call initializer, with access to known class names */
|
|
16
|
+
export type InitializerExtractor = (node: SyntaxNode, env: Map<string, string>, classNames: ClassNameLookup) => void;
|
|
17
|
+
/** Scans an AST node for untyped `var = callee()` patterns for return-type inference.
|
|
18
|
+
* Returns { varName, calleeName } if the node matches, undefined otherwise.
|
|
19
|
+
* `receiverClassName` — optional hint for method calls on known receivers
|
|
20
|
+
* (e.g. $this->getUser() in PHP provides the enclosing class name). */
|
|
21
|
+
export type ConstructorBindingScanner = (node: SyntaxNode) => {
|
|
22
|
+
varName: string;
|
|
23
|
+
calleeName: string;
|
|
24
|
+
receiverClassName?: string;
|
|
25
|
+
} | undefined;
|
|
26
|
+
/** Infer the type name of a literal AST node for overload disambiguation.
|
|
27
|
+
* Returns the canonical type name (e.g. 'int', 'String', 'boolean') or undefined
|
|
28
|
+
* for non-literal nodes. Only used when resolveCallTarget has multiple candidates
|
|
29
|
+
* with parameterTypes — ~1-3% of call sites. */
|
|
30
|
+
export type LiteralTypeInferrer = (node: SyntaxNode) => string | undefined;
|
|
31
|
+
/** Detect constructor-style call expressions that don't use `new` keyword.
|
|
32
|
+
* Returns the constructor class name if the node's initializer is a constructor call,
|
|
33
|
+
* or undefined otherwise. Used for virtual dispatch in languages like Kotlin
|
|
34
|
+
* where constructors are syntactically identical to function calls, and C++
|
|
35
|
+
* where smart pointer factory functions (make_shared/make_unique) wrap constructors. */
|
|
36
|
+
export type ConstructorTypeDetector = (node: SyntaxNode, classNames: ClassNameLookup) => string | undefined;
|
|
37
|
+
/** Unwrap a declared type name to its inner type for virtual dispatch comparison.
|
|
38
|
+
* E.g., C++ shared_ptr<Animal> → Animal. Returns undefined if no unwrapping applies. */
|
|
39
|
+
export type DeclaredTypeUnwrapper = (declaredType: string, typeNode: SyntaxNode) => string | undefined;
|
|
40
|
+
/** Narrow lookup interface for resolving a callee name → return type name.
|
|
41
|
+
* Backed by SymbolTable.lookupCallableByName; passed via ForLoopExtractorContext.
|
|
42
|
+
* Conservative: returns undefined when the callee is ambiguous (0 or 2+ matches). */
|
|
43
|
+
export interface ReturnTypeLookup {
|
|
44
|
+
/** Processed type name after stripping wrappers (e.g., 'User' from 'Promise<User>').
|
|
45
|
+
* Use for call-result variable bindings (`const b = foo()`). */
|
|
46
|
+
lookupReturnType(callee: string): string | undefined;
|
|
47
|
+
/** Raw return type as declared in the symbol (e.g., '[]User', 'List<User>').
|
|
48
|
+
* Use for iterable-element extraction (`for v := range foo()`). */
|
|
49
|
+
lookupRawReturnType(callee: string): string | undefined;
|
|
50
|
+
}
|
|
51
|
+
/** Context object passed to ForLoopExtractor.
|
|
52
|
+
* Groups the four parameters that were previously positional. */
|
|
53
|
+
export interface ForLoopExtractorContext {
|
|
54
|
+
/** Mutable type-env for the current scope — extractor writes bindings here */
|
|
55
|
+
scopeEnv: Map<string, string>;
|
|
56
|
+
/** Maps `scope\0varName` to the declaration's type annotation AST node */
|
|
57
|
+
declarationTypeNodes: ReadonlyMap<string, SyntaxNode>;
|
|
58
|
+
/** Current scope key, e.g. `"process@42"` */
|
|
59
|
+
scope: string;
|
|
60
|
+
/** Resolves a callee name to its declared return type (undefined = unknown/ambiguous) */
|
|
61
|
+
returnTypeLookup: ReturnTypeLookup;
|
|
62
|
+
}
|
|
63
|
+
/** Extracts loop variable type binding from a for-each statement. */
|
|
64
|
+
export type ForLoopExtractor = (node: SyntaxNode, ctx: ForLoopExtractorContext) => void;
|
|
65
|
+
/** Discriminated union for pending Tier-2 propagation items.
|
|
66
|
+
* - `copy` — `const b = a` (identifier alias, propagate a's type to b)
|
|
67
|
+
* - `callResult` — `const b = foo()` (bind b to foo's declared return type)
|
|
68
|
+
* - `fieldAccess` — `const b = a.field` (bind b to field's declaredType on a's type)
|
|
69
|
+
* - `methodCallResult` — `const b = a.method()` (bind b to method's returnType on a's type) */
|
|
70
|
+
export type PendingAssignment = {
|
|
71
|
+
kind: 'copy';
|
|
72
|
+
lhs: string;
|
|
73
|
+
rhs: string;
|
|
74
|
+
} | {
|
|
75
|
+
kind: 'callResult';
|
|
76
|
+
lhs: string;
|
|
77
|
+
callee: string;
|
|
78
|
+
calleeFqn?: string;
|
|
79
|
+
line?: number;
|
|
80
|
+
} | {
|
|
81
|
+
kind: 'fieldAccess';
|
|
82
|
+
lhs: string;
|
|
83
|
+
receiver: string;
|
|
84
|
+
field: string;
|
|
85
|
+
} | {
|
|
86
|
+
kind: 'methodCallResult';
|
|
87
|
+
lhs: string;
|
|
88
|
+
receiver: string;
|
|
89
|
+
method: string;
|
|
90
|
+
};
|
|
91
|
+
/** Extracts a pending assignment for Tier 2 propagation.
|
|
92
|
+
* Returns a PendingAssignment when the RHS is a bare identifier (`copy`), a
|
|
93
|
+
* call expression (`callResult`), a field access (`fieldAccess`), or a
|
|
94
|
+
* method call with receiver (`methodCallResult`) and the LHS has no resolved type yet.
|
|
95
|
+
* May return an array of PendingAssignment items for destructuring patterns
|
|
96
|
+
* (e.g., `const { a, b } = obj` emits N fieldAccess items).
|
|
97
|
+
* Returns undefined if the node is not a matching assignment. */
|
|
98
|
+
export type PendingAssignmentExtractor = (node: SyntaxNode, scopeEnv: ReadonlyMap<string, string>) => PendingAssignment | PendingAssignment[] | undefined;
|
|
99
|
+
/** Result of a pattern binding extraction. */
|
|
100
|
+
export interface PatternBindingResult {
|
|
101
|
+
varName: string;
|
|
102
|
+
typeName: string;
|
|
103
|
+
/** Optional: AST node whose position range should be used for the patternOverride.
|
|
104
|
+
* When present, the override uses this node's range instead of the auto-detected
|
|
105
|
+
* branch scope. Used by null-check narrowing to target the if-body specifically. */
|
|
106
|
+
narrowingRange?: {
|
|
107
|
+
startIndex: number;
|
|
108
|
+
endIndex: number;
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/** Extracts a typed variable binding from a pattern-matching construct.
|
|
112
|
+
* Returns { varName, typeName } for patterns that introduce NEW variables
|
|
113
|
+
* or narrow existing variables (null-check narrowing).
|
|
114
|
+
* Examples: `if let Some(user) = opt` (Rust), `x instanceof User user` (Java),
|
|
115
|
+
* `if (x != null)` (null-check narrowing in TS/Kotlin/C#).
|
|
116
|
+
* Conservative: returns undefined when the source variable's type is unknown.
|
|
117
|
+
*
|
|
118
|
+
* @param scopeEnv Read-only view of already-resolved type bindings in the current scope.
|
|
119
|
+
* @param declarationTypeNodes Maps `scope\0varName` to the original declaration's type
|
|
120
|
+
* annotation AST node. Allows extracting generic type arguments (e.g., T from Result<T,E>)
|
|
121
|
+
* that are stripped during normal TypeEnv extraction.
|
|
122
|
+
* @param scope Current scope key (e.g. `"process@42"`) for declarationTypeNodes lookups. */
|
|
123
|
+
export type PatternBindingExtractor = (node: SyntaxNode, scopeEnv: ReadonlyMap<string, string>, declarationTypeNodes: ReadonlyMap<string, SyntaxNode>, scope: string) => PatternBindingResult | undefined;
|
|
124
|
+
/** Per-language type extraction configuration */
|
|
125
|
+
export interface LanguageTypeConfig {
|
|
126
|
+
/** Allow pattern binding to overwrite existing scopeEnv entries.
|
|
127
|
+
* WARNING: Enables function-scope type pollution. Only for languages with
|
|
128
|
+
* smart-cast semantics (e.g., Kotlin `when/is`) where the subject variable
|
|
129
|
+
* already exists in scopeEnv from its declaration. */
|
|
130
|
+
readonly allowPatternBindingOverwrite?: boolean;
|
|
131
|
+
/** Node types that represent typed declarations for this language */
|
|
132
|
+
declarationNodeTypes: ReadonlySet<string>;
|
|
133
|
+
/** Optional: language-specific way to find a declaration's type-annotation node.
|
|
134
|
+
* Prefer providing this for grammars where the type is wrapped (e.g., C#, Kotlin, Swift). */
|
|
135
|
+
getDeclarationTypeNode?: DeclarationTypeNodeLocator;
|
|
136
|
+
/** AST node types for for-each/for-in statements with explicit element types. */
|
|
137
|
+
forLoopNodeTypes?: ReadonlySet<string>;
|
|
138
|
+
/** Optional allowlist of AST node types on which extractPatternBinding should run.
|
|
139
|
+
* When present, extractPatternBinding is only invoked for nodes whose type is in this set,
|
|
140
|
+
* short-circuiting the call for all other node types. When absent, every node is passed to
|
|
141
|
+
* extractPatternBinding (legacy behaviour). */
|
|
142
|
+
patternBindingNodeTypes?: ReadonlySet<string>;
|
|
143
|
+
/** Extract a (varName → typeName) binding from a declaration node */
|
|
144
|
+
extractDeclaration: TypeBindingExtractor;
|
|
145
|
+
/** Extract a (varName → typeName) binding from a parameter node */
|
|
146
|
+
extractParameter: ParameterExtractor;
|
|
147
|
+
/** Extract a (varName → typeName) binding from a constructor-call initializer.
|
|
148
|
+
* Called as fallback when extractDeclaration produces no binding for a declaration node.
|
|
149
|
+
* Only for languages with syntactic constructor markers (new, composite_literal, ::new).
|
|
150
|
+
* Receives classNames — the set of class/struct names visible in the current file's AST. */
|
|
151
|
+
extractInitializer?: InitializerExtractor;
|
|
152
|
+
/** Scan for untyped `var = callee()` assignments for return-type inference.
|
|
153
|
+
* Called on every AST node during buildTypeEnv walk; returns undefined for non-matches.
|
|
154
|
+
* The callee binding is unverified — the caller must confirm against the SymbolTable. */
|
|
155
|
+
scanConstructorBinding?: ConstructorBindingScanner;
|
|
156
|
+
/** Extract loop variable → type binding from a for-each AST node. */
|
|
157
|
+
extractForLoopBinding?: ForLoopExtractor;
|
|
158
|
+
/** Extract pending assignment for Tier 2 propagation.
|
|
159
|
+
* Called on declaration/assignment nodes; returns a PendingAssignment when the RHS
|
|
160
|
+
* is a bare identifier (copy) or call expression (callResult) and the LHS has no
|
|
161
|
+
* resolved type yet. Language-specific because AST shapes differ widely. */
|
|
162
|
+
extractPendingAssignment?: PendingAssignmentExtractor;
|
|
163
|
+
/** Extract a typed variable binding from a pattern-matching construct.
|
|
164
|
+
* Called on every AST node; returns { varName, typeName } when the node introduces a new
|
|
165
|
+
* typed variable via pattern matching (e.g. `if let Some(x) = opt`, `x instanceof T t`).
|
|
166
|
+
* The extractor receives the current scope's resolved bindings (read-only) to look up the
|
|
167
|
+
* source variable's type. Returns undefined for non-matching nodes or unknown source types. */
|
|
168
|
+
extractPatternBinding?: PatternBindingExtractor;
|
|
169
|
+
inferLiteralType?: LiteralTypeInferrer;
|
|
170
|
+
detectConstructorType?: ConstructorTypeDetector;
|
|
171
|
+
unwrapDeclaredType?: DeclaredTypeUnwrapper;
|
|
172
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|