@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,291 @@
|
|
|
1
|
+
// codragraph/src/core/ingestion/field-extractors/typescript.ts
|
|
2
|
+
import { SupportedLanguages } from '../../../_shared/index.js';
|
|
3
|
+
import { BaseFieldExtractor } from '../field-extractor.js';
|
|
4
|
+
/**
|
|
5
|
+
* Hand-written TypeScript field extractor.
|
|
6
|
+
*
|
|
7
|
+
* This exists alongside the config-based extractor in configs/typescript-javascript.ts
|
|
8
|
+
* (used for JavaScript) because TypeScript has unique requirements:
|
|
9
|
+
* 1. type_alias_declaration with object type literals (e.g., type Config = { key: string })
|
|
10
|
+
* 2. Optional property detection appending '| undefined' to types
|
|
11
|
+
* 3. Nested type discovery within class/interface bodies
|
|
12
|
+
*
|
|
13
|
+
* The config-based extractor cannot express these TS-specific capabilities.
|
|
14
|
+
* JavaScript uses the config-based version since it lacks type syntax.
|
|
15
|
+
*/
|
|
16
|
+
export class TypeScriptFieldExtractor extends BaseFieldExtractor {
|
|
17
|
+
language = SupportedLanguages.TypeScript;
|
|
18
|
+
/**
|
|
19
|
+
* Node types that represent type declarations with fields in TypeScript
|
|
20
|
+
*/
|
|
21
|
+
static TYPE_DECLARATION_NODES = new Set([
|
|
22
|
+
'class_declaration',
|
|
23
|
+
'interface_declaration',
|
|
24
|
+
'abstract_class_declaration',
|
|
25
|
+
'type_alias_declaration', // for object type literals
|
|
26
|
+
]);
|
|
27
|
+
/**
|
|
28
|
+
* Node types that contain field definitions within class bodies
|
|
29
|
+
*/
|
|
30
|
+
static FIELD_NODE_TYPES = new Set([
|
|
31
|
+
'public_field_definition', // class field: private users: User[]
|
|
32
|
+
'property_signature', // interface property: name: string
|
|
33
|
+
'field_definition', // fallback field type
|
|
34
|
+
]);
|
|
35
|
+
/**
|
|
36
|
+
* Visibility modifiers in TypeScript
|
|
37
|
+
*/
|
|
38
|
+
static VISIBILITY_MODIFIERS = new Set([
|
|
39
|
+
'public',
|
|
40
|
+
'private',
|
|
41
|
+
'protected',
|
|
42
|
+
]);
|
|
43
|
+
/**
|
|
44
|
+
* Check if this node represents a type declaration with fields
|
|
45
|
+
*/
|
|
46
|
+
isTypeDeclaration(node) {
|
|
47
|
+
return TypeScriptFieldExtractor.TYPE_DECLARATION_NODES.has(node.type);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Extract visibility modifier from a field node
|
|
51
|
+
*/
|
|
52
|
+
extractVisibility(node) {
|
|
53
|
+
// Check for accessibility_modifier named child (tree-sitter typescript)
|
|
54
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
55
|
+
const child = node.namedChild(i);
|
|
56
|
+
if (child && child.type === 'accessibility_modifier') {
|
|
57
|
+
const text = child.text.trim();
|
|
58
|
+
if (TypeScriptFieldExtractor.VISIBILITY_MODIFIERS.has(text)) {
|
|
59
|
+
return text;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Check for modifiers in the field's unnamed children (fallback)
|
|
64
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
65
|
+
const child = node.child(i);
|
|
66
|
+
if (child && !child.isNamed) {
|
|
67
|
+
const text = child.text.trim();
|
|
68
|
+
if (TypeScriptFieldExtractor.VISIBILITY_MODIFIERS.has(text)) {
|
|
69
|
+
return text;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Check for modifier node (tree-sitter typescript may group these)
|
|
74
|
+
const modifiers = node.childForFieldName('modifiers');
|
|
75
|
+
if (modifiers) {
|
|
76
|
+
for (let i = 0; i < modifiers.childCount; i++) {
|
|
77
|
+
const modifier = modifiers.child(i);
|
|
78
|
+
const modText = modifier?.text.trim();
|
|
79
|
+
if (modText && TypeScriptFieldExtractor.VISIBILITY_MODIFIERS.has(modText)) {
|
|
80
|
+
return modText;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// TypeScript class members are public by default
|
|
85
|
+
return 'public';
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Check if a field has the static modifier
|
|
89
|
+
*/
|
|
90
|
+
isStatic(node) {
|
|
91
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
92
|
+
const child = node.child(i);
|
|
93
|
+
if (child && !child.isNamed && child.text.trim() === 'static') {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const modifiers = node.childForFieldName('modifiers');
|
|
98
|
+
if (modifiers) {
|
|
99
|
+
for (let i = 0; i < modifiers.childCount; i++) {
|
|
100
|
+
const modifier = modifiers.child(i);
|
|
101
|
+
if (modifier && modifier.text === 'static') {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check if a field has the readonly modifier
|
|
110
|
+
*/
|
|
111
|
+
isReadonly(node) {
|
|
112
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
113
|
+
const child = node.child(i);
|
|
114
|
+
if (child && !child.isNamed && child.text.trim() === 'readonly') {
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const modifiers = node.childForFieldName('modifiers');
|
|
119
|
+
if (modifiers) {
|
|
120
|
+
for (let i = 0; i < modifiers.childCount; i++) {
|
|
121
|
+
const modifier = modifiers.child(i);
|
|
122
|
+
if (modifier && modifier.text === 'readonly') {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Check if a property is optional (has ?: syntax)
|
|
131
|
+
*/
|
|
132
|
+
isOptional(node) {
|
|
133
|
+
// Look for the optional marker '?' in unnamed children
|
|
134
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
135
|
+
const child = node.child(i);
|
|
136
|
+
if (child && !child.isNamed && child.text === '?') {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Also check for optional_property_signature or marker in type
|
|
141
|
+
const kind = node.childForFieldName('kind');
|
|
142
|
+
if (kind && kind.text === '?') {
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Extract the full type text, handling complex generic types.
|
|
149
|
+
*
|
|
150
|
+
* type_annotation nodes wrap the literal ': SomeType' — only that branch
|
|
151
|
+
* needs special handling to unwrap the inner child and skip the colon.
|
|
152
|
+
* All other node kinds are already the type text itself, so normalizeType
|
|
153
|
+
* is applied directly.
|
|
154
|
+
*/
|
|
155
|
+
extractFullType(typeNode) {
|
|
156
|
+
if (!typeNode)
|
|
157
|
+
return null;
|
|
158
|
+
if (typeNode.type === 'type_annotation') {
|
|
159
|
+
const innerType = typeNode.firstNamedChild;
|
|
160
|
+
return innerType ? this.normalizeType(innerType.text) : null;
|
|
161
|
+
}
|
|
162
|
+
return this.normalizeType(typeNode.text);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Extract a single field from a field definition node
|
|
166
|
+
*/
|
|
167
|
+
extractField(node, context) {
|
|
168
|
+
// Get the field name
|
|
169
|
+
const nameNode = node.childForFieldName('name') ?? node.childForFieldName('property');
|
|
170
|
+
if (!nameNode)
|
|
171
|
+
return null;
|
|
172
|
+
const name = nameNode.text;
|
|
173
|
+
if (!name)
|
|
174
|
+
return null;
|
|
175
|
+
// Get the type annotation
|
|
176
|
+
const typeNode = node.childForFieldName('type');
|
|
177
|
+
let type = this.extractFullType(typeNode);
|
|
178
|
+
// Try to resolve the type using the context
|
|
179
|
+
if (type) {
|
|
180
|
+
const resolvedType = this.resolveType(type, context);
|
|
181
|
+
type = resolvedType ?? type;
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
name,
|
|
185
|
+
type,
|
|
186
|
+
visibility: this.extractVisibility(node),
|
|
187
|
+
isStatic: this.isStatic(node),
|
|
188
|
+
isReadonly: this.isReadonly(node),
|
|
189
|
+
sourceFile: context.filePath,
|
|
190
|
+
line: node.startPosition.row + 1,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Extract fields from a class body or interface body
|
|
195
|
+
*/
|
|
196
|
+
extractFieldsFromBody(bodyNode, context) {
|
|
197
|
+
const fields = [];
|
|
198
|
+
// Find all field definition nodes within the body
|
|
199
|
+
for (let i = 0; i < bodyNode.namedChildCount; i++) {
|
|
200
|
+
const child = bodyNode.namedChild(i);
|
|
201
|
+
if (!child)
|
|
202
|
+
continue;
|
|
203
|
+
if (TypeScriptFieldExtractor.FIELD_NODE_TYPES.has(child.type)) {
|
|
204
|
+
const field = this.extractField(child, context);
|
|
205
|
+
if (field) {
|
|
206
|
+
fields.push(field);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return fields;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Extract fields from an object type (used in type aliases)
|
|
214
|
+
*/
|
|
215
|
+
extractFieldsFromObjectType(objectTypeNode, context) {
|
|
216
|
+
const fields = [];
|
|
217
|
+
// Find all property_signature nodes within the object type
|
|
218
|
+
const propertySignatures = objectTypeNode.descendantsOfType('property_signature');
|
|
219
|
+
for (const propNode of propertySignatures) {
|
|
220
|
+
const field = this.extractField(propNode, context);
|
|
221
|
+
if (field) {
|
|
222
|
+
// Mark optional properties
|
|
223
|
+
if (this.isOptional(propNode) && field.type) {
|
|
224
|
+
field.type = field.type + ' | undefined';
|
|
225
|
+
}
|
|
226
|
+
fields.push(field);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return fields;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Extract fields from a class or interface declaration
|
|
233
|
+
*/
|
|
234
|
+
extract(node, context) {
|
|
235
|
+
if (!this.isTypeDeclaration(node))
|
|
236
|
+
return null;
|
|
237
|
+
// Get the type name
|
|
238
|
+
const nameNode = node.childForFieldName('name');
|
|
239
|
+
if (!nameNode)
|
|
240
|
+
return null;
|
|
241
|
+
const typeName = nameNode.text;
|
|
242
|
+
const ownerFqn = typeName;
|
|
243
|
+
const fields = [];
|
|
244
|
+
const nestedTypes = [];
|
|
245
|
+
// Handle different declaration types
|
|
246
|
+
if (node.type === 'class_declaration' || node.type === 'abstract_class_declaration') {
|
|
247
|
+
// Find the class body
|
|
248
|
+
const bodyNode = node.childForFieldName('body');
|
|
249
|
+
if (bodyNode) {
|
|
250
|
+
const extractedFields = this.extractFieldsFromBody(bodyNode, context);
|
|
251
|
+
fields.push(...extractedFields);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
else if (node.type === 'interface_declaration') {
|
|
255
|
+
// Find the interface body
|
|
256
|
+
const bodyNode = node.childForFieldName('body');
|
|
257
|
+
if (bodyNode) {
|
|
258
|
+
const extractedFields = this.extractFieldsFromBody(bodyNode, context);
|
|
259
|
+
fields.push(...extractedFields);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
else if (node.type === 'type_alias_declaration') {
|
|
263
|
+
// Handle type aliases with object types
|
|
264
|
+
const valueNode = node.childForFieldName('value');
|
|
265
|
+
if (valueNode && valueNode.type === 'object_type') {
|
|
266
|
+
const extractedFields = this.extractFieldsFromObjectType(valueNode, context);
|
|
267
|
+
fields.push(...extractedFields);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// Find nested type declarations
|
|
271
|
+
const nestedClasses = node.descendantsOfType('class_declaration');
|
|
272
|
+
const nestedInterfaces = node.descendantsOfType('interface_declaration');
|
|
273
|
+
const nestedDeclarations = [...nestedClasses, ...nestedInterfaces];
|
|
274
|
+
for (const nested of nestedDeclarations) {
|
|
275
|
+
// Skip the current node itself
|
|
276
|
+
if (nested === node)
|
|
277
|
+
continue;
|
|
278
|
+
const nestedName = nested.childForFieldName('name');
|
|
279
|
+
if (nestedName) {
|
|
280
|
+
nestedTypes.push(nestedName.text);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return {
|
|
284
|
+
ownerFqn,
|
|
285
|
+
fields,
|
|
286
|
+
nestedTypes,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
// Export a singleton instance for registration
|
|
291
|
+
export const typescriptFieldExtractor = new TypeScriptFieldExtractor();
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { TypeEnvironment } from './type-env.js';
|
|
2
|
+
import type { SymbolTableReader } from './model/index.js';
|
|
3
|
+
import { SupportedLanguages } from '../../_shared/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Visibility levels used across all supported languages.
|
|
6
|
+
* - public / private / protected: universal modifiers
|
|
7
|
+
* - internal: C#, Kotlin (assembly/module scope)
|
|
8
|
+
* - protected internal: C# (accessible by same assembly OR derived classes)
|
|
9
|
+
* - private protected: C# (accessible by derived classes within same assembly)
|
|
10
|
+
* - package: Java (package-private, no keyword)
|
|
11
|
+
* - fileprivate: Swift (file scope)
|
|
12
|
+
* - open: Swift (subclassable across modules)
|
|
13
|
+
*/
|
|
14
|
+
export type FieldVisibility = 'public' | 'private' | 'protected' | 'internal' | 'protected internal' | 'private protected' | 'package' | 'fileprivate' | 'open';
|
|
15
|
+
/**
|
|
16
|
+
* Represents a field or property within a class/struct/interface
|
|
17
|
+
*/
|
|
18
|
+
export interface FieldInfo {
|
|
19
|
+
/** Field name */
|
|
20
|
+
name: string;
|
|
21
|
+
/** Resolved type (may be primitive, FQN, or generic) */
|
|
22
|
+
type: string | null;
|
|
23
|
+
/** Visibility modifier */
|
|
24
|
+
visibility: FieldVisibility;
|
|
25
|
+
/** Is this a static member? */
|
|
26
|
+
isStatic: boolean;
|
|
27
|
+
/** Is this readonly/const? */
|
|
28
|
+
isReadonly: boolean;
|
|
29
|
+
/** Source file path */
|
|
30
|
+
sourceFile: string;
|
|
31
|
+
/** Line number */
|
|
32
|
+
line: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Maps owner type FQN to its fields
|
|
36
|
+
*/
|
|
37
|
+
export type FieldTypeMap = Map<string, FieldInfo[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Context for field extraction
|
|
40
|
+
*/
|
|
41
|
+
export interface FieldExtractorContext {
|
|
42
|
+
/** Type environment for resolution */
|
|
43
|
+
typeEnv: TypeEnvironment;
|
|
44
|
+
/** Symbol table for FQN lookups */
|
|
45
|
+
symbolTable: SymbolTableReader;
|
|
46
|
+
/** Current file path */
|
|
47
|
+
filePath: string;
|
|
48
|
+
/** Language ID */
|
|
49
|
+
language: SupportedLanguages;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Result of field extraction from a type declaration
|
|
53
|
+
*/
|
|
54
|
+
export interface ExtractedFields {
|
|
55
|
+
/** Owner type FQN */
|
|
56
|
+
ownerFqn: string;
|
|
57
|
+
/** Extracted fields */
|
|
58
|
+
fields: FieldInfo[];
|
|
59
|
+
/** Nested types found during extraction */
|
|
60
|
+
nestedTypes: string[];
|
|
61
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface FileEntry {
|
|
2
|
+
path: string;
|
|
3
|
+
content: string;
|
|
4
|
+
}
|
|
5
|
+
/** Lightweight entry — path + size from stat, no content in memory */
|
|
6
|
+
export interface ScannedFile {
|
|
7
|
+
path: string;
|
|
8
|
+
size: number;
|
|
9
|
+
}
|
|
10
|
+
/** Path-only reference (for type signatures) */
|
|
11
|
+
export interface FilePath {
|
|
12
|
+
path: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Phase 1: Scan repository — stat files to get paths + sizes, no content loaded.
|
|
16
|
+
* Memory: ~10MB for 100K files vs ~1GB+ with content.
|
|
17
|
+
*/
|
|
18
|
+
export declare const walkRepositoryPaths: (repoPath: string, onProgress?: (current: number, total: number, filePath: string) => void) => Promise<ScannedFile[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Phase 2: Read file contents for a specific set of relative paths.
|
|
21
|
+
* Returns a Map for O(1) lookup. Silently skips files that fail to read.
|
|
22
|
+
*/
|
|
23
|
+
export declare const readFileContents: (repoPath: string, relativePaths: string[]) => Promise<Map<string, string>>;
|
|
24
|
+
/**
|
|
25
|
+
* Legacy API — scans and reads everything into memory.
|
|
26
|
+
* Used by sequential fallback path only.
|
|
27
|
+
*/
|
|
28
|
+
export declare const walkRepository: (repoPath: string, onProgress?: (current: number, total: number, filePath: string) => void) => Promise<FileEntry[]>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { isVerboseIngestionEnabled } from './utils/verbose.js';
|
|
2
|
+
import { DEFAULT_MAX_FILE_SIZE_BYTES, getMaxFileSizeBytes } from './utils/max-file-size.js';
|
|
3
|
+
import fs from 'fs/promises';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { glob } from 'glob';
|
|
6
|
+
import { createIgnoreFilter } from '../../config/ignore-service.js';
|
|
7
|
+
const READ_CONCURRENCY = 32;
|
|
8
|
+
/**
|
|
9
|
+
* Phase 1: Scan repository — stat files to get paths + sizes, no content loaded.
|
|
10
|
+
* Memory: ~10MB for 100K files vs ~1GB+ with content.
|
|
11
|
+
*/
|
|
12
|
+
export const walkRepositoryPaths = async (repoPath, onProgress) => {
|
|
13
|
+
const ignoreFilter = await createIgnoreFilter(repoPath);
|
|
14
|
+
const maxFileSizeBytes = getMaxFileSizeBytes();
|
|
15
|
+
const filtered = await glob('**/*', {
|
|
16
|
+
cwd: repoPath,
|
|
17
|
+
nodir: true,
|
|
18
|
+
dot: false,
|
|
19
|
+
ignore: ignoreFilter,
|
|
20
|
+
});
|
|
21
|
+
const entries = [];
|
|
22
|
+
let processed = 0;
|
|
23
|
+
let skippedLarge = 0;
|
|
24
|
+
const skippedLargePaths = [];
|
|
25
|
+
for (let start = 0; start < filtered.length; start += READ_CONCURRENCY) {
|
|
26
|
+
const batch = filtered.slice(start, start + READ_CONCURRENCY);
|
|
27
|
+
const results = await Promise.allSettled(batch.map(async (relativePath) => {
|
|
28
|
+
const fullPath = path.join(repoPath, relativePath);
|
|
29
|
+
const stat = await fs.stat(fullPath);
|
|
30
|
+
if (stat.size > maxFileSizeBytes) {
|
|
31
|
+
skippedLarge++;
|
|
32
|
+
skippedLargePaths.push(relativePath.replace(/\\/g, '/'));
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return { path: relativePath.replace(/\\/g, '/'), size: stat.size };
|
|
36
|
+
}));
|
|
37
|
+
for (const result of results) {
|
|
38
|
+
processed++;
|
|
39
|
+
if (result.status === 'fulfilled' && result.value !== null) {
|
|
40
|
+
entries.push(result.value);
|
|
41
|
+
onProgress?.(processed, filtered.length, result.value.path);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
onProgress?.(processed, filtered.length, batch[results.indexOf(result)]);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (skippedLarge > 0) {
|
|
49
|
+
const isDefault = maxFileSizeBytes === DEFAULT_MAX_FILE_SIZE_BYTES;
|
|
50
|
+
const suffix = isDefault ? ', likely generated/vendored' : '';
|
|
51
|
+
console.warn(` Skipped ${skippedLarge} large files (>${maxFileSizeBytes / 1024}KB${suffix})`);
|
|
52
|
+
if (isVerboseIngestionEnabled()) {
|
|
53
|
+
for (const p of skippedLargePaths) {
|
|
54
|
+
console.warn(` - ${p}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return entries;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Phase 2: Read file contents for a specific set of relative paths.
|
|
62
|
+
* Returns a Map for O(1) lookup. Silently skips files that fail to read.
|
|
63
|
+
*/
|
|
64
|
+
export const readFileContents = async (repoPath, relativePaths) => {
|
|
65
|
+
const contents = new Map();
|
|
66
|
+
for (let start = 0; start < relativePaths.length; start += READ_CONCURRENCY) {
|
|
67
|
+
const batch = relativePaths.slice(start, start + READ_CONCURRENCY);
|
|
68
|
+
const results = await Promise.allSettled(batch.map(async (relativePath) => {
|
|
69
|
+
const fullPath = path.join(repoPath, relativePath);
|
|
70
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
71
|
+
return { path: relativePath, content };
|
|
72
|
+
}));
|
|
73
|
+
for (const result of results) {
|
|
74
|
+
if (result.status === 'fulfilled') {
|
|
75
|
+
contents.set(result.value.path, result.value.content);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return contents;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Legacy API — scans and reads everything into memory.
|
|
83
|
+
* Used by sequential fallback path only.
|
|
84
|
+
*/
|
|
85
|
+
export const walkRepository = async (repoPath, onProgress) => {
|
|
86
|
+
const scanned = await walkRepositoryPaths(repoPath, onProgress);
|
|
87
|
+
const contents = await readFileContents(repoPath, scanned.map((f) => f.path));
|
|
88
|
+
return scanned
|
|
89
|
+
.filter((f) => contents.has(f.path))
|
|
90
|
+
.map((f) => ({ path: f.path, content: contents.get(f.path) }));
|
|
91
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `finalizeScopeModel` — turn a workspace's `ParsedFile[]` into a
|
|
3
|
+
* materialized `ScopeResolutionIndexes` (RFC §3.2 Phase 2; Ring 2 PKG #921).
|
|
4
|
+
*
|
|
5
|
+
* Thin integration glue, per issue #884's boundary: all algorithmic logic
|
|
6
|
+
* lives in `@codragraph/shared` (finalize algorithm #915, the four per-file
|
|
7
|
+
* indexes #913, the method-dispatch materialization #914, the scope tree
|
|
8
|
+
* #912). This file does three things only:
|
|
9
|
+
*
|
|
10
|
+
* 1. Map `ParsedFile[]` → `FinalizeInput` and call shared `finalize()`.
|
|
11
|
+
* 2. Build the four workspace-wide indexes from the union of per-file
|
|
12
|
+
* defs/scopes/modules/qualified-names.
|
|
13
|
+
* 3. Bundle the results into `ScopeResolutionIndexes` for
|
|
14
|
+
* `MutableSemanticModel.attachScopeIndexes(...)`.
|
|
15
|
+
*
|
|
16
|
+
* ## What this module is NOT responsible for
|
|
17
|
+
*
|
|
18
|
+
* - Invoking tree-sitter or running AST walks. That's the extractor (#919).
|
|
19
|
+
* - Per-language import-target resolution. Hooks are plumbed through
|
|
20
|
+
* but default to "unresolved" when no provider supplies them — the
|
|
21
|
+
* real adapters land with #922.
|
|
22
|
+
* - Populating `ReferenceIndex`. That's the resolution phase (#925).
|
|
23
|
+
* - Deciding which language uses registry-primary lookup. That's the
|
|
24
|
+
* flag reader (#924).
|
|
25
|
+
*
|
|
26
|
+
* ## Empty-input behavior
|
|
27
|
+
*
|
|
28
|
+
* When `parsedFiles` is empty (the common case today — no language has
|
|
29
|
+
* migrated yet), the orchestrator produces a valid but empty bundle: all
|
|
30
|
+
* indexes are zero-sized, the scope tree is empty, and
|
|
31
|
+
* `finalize.stats.totalFiles === 0`. This lets downstream consumers
|
|
32
|
+
* safely consult `model.scopes` without branching on presence.
|
|
33
|
+
*/
|
|
34
|
+
import type { FinalizeHooks, ParsedFile, WorkspaceIndex } from '../../_shared/index.js';
|
|
35
|
+
import type { ScopeResolutionIndexes } from './model/scope-resolution-indexes.js';
|
|
36
|
+
/**
|
|
37
|
+
* Options forwarded to the orchestrator. All fields optional so callers
|
|
38
|
+
* that don't yet have per-language hooks (today) get sensible defaults;
|
|
39
|
+
* #922 will populate `hooks.resolveImportTarget` + friends per language.
|
|
40
|
+
*/
|
|
41
|
+
export interface FinalizeOrchestratorOptions {
|
|
42
|
+
/**
|
|
43
|
+
* Hooks forwarded to shared `finalize()`. Any omitted field gets a
|
|
44
|
+
* no-op default: unresolved targets, empty wildcard expansion, append
|
|
45
|
+
* merge for bindings.
|
|
46
|
+
*/
|
|
47
|
+
readonly hooks?: Partial<FinalizeHooks>;
|
|
48
|
+
/**
|
|
49
|
+
* Opaque workspace context forwarded to hooks. `undefined` today; Ring
|
|
50
|
+
* 2 PKG #922 populates this with a real cross-file index for the
|
|
51
|
+
* per-language resolvers.
|
|
52
|
+
*/
|
|
53
|
+
readonly workspaceIndex?: WorkspaceIndex;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Produce a fully materialized `ScopeResolutionIndexes` from the
|
|
57
|
+
* workspace's per-file artifacts.
|
|
58
|
+
*
|
|
59
|
+
* Pure function (given pure hooks). No I/O, no globals consulted. The
|
|
60
|
+
* pipeline calls this once per ingestion run and hands the result to
|
|
61
|
+
* `MutableSemanticModel.attachScopeIndexes`.
|
|
62
|
+
*/
|
|
63
|
+
export declare function finalizeScopeModel(parsedFiles: readonly ParsedFile[], options?: FinalizeOrchestratorOptions): ScopeResolutionIndexes;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `finalizeScopeModel` — turn a workspace's `ParsedFile[]` into a
|
|
3
|
+
* materialized `ScopeResolutionIndexes` (RFC §3.2 Phase 2; Ring 2 PKG #921).
|
|
4
|
+
*
|
|
5
|
+
* Thin integration glue, per issue #884's boundary: all algorithmic logic
|
|
6
|
+
* lives in `@codragraph/shared` (finalize algorithm #915, the four per-file
|
|
7
|
+
* indexes #913, the method-dispatch materialization #914, the scope tree
|
|
8
|
+
* #912). This file does three things only:
|
|
9
|
+
*
|
|
10
|
+
* 1. Map `ParsedFile[]` → `FinalizeInput` and call shared `finalize()`.
|
|
11
|
+
* 2. Build the four workspace-wide indexes from the union of per-file
|
|
12
|
+
* defs/scopes/modules/qualified-names.
|
|
13
|
+
* 3. Bundle the results into `ScopeResolutionIndexes` for
|
|
14
|
+
* `MutableSemanticModel.attachScopeIndexes(...)`.
|
|
15
|
+
*
|
|
16
|
+
* ## What this module is NOT responsible for
|
|
17
|
+
*
|
|
18
|
+
* - Invoking tree-sitter or running AST walks. That's the extractor (#919).
|
|
19
|
+
* - Per-language import-target resolution. Hooks are plumbed through
|
|
20
|
+
* but default to "unresolved" when no provider supplies them — the
|
|
21
|
+
* real adapters land with #922.
|
|
22
|
+
* - Populating `ReferenceIndex`. That's the resolution phase (#925).
|
|
23
|
+
* - Deciding which language uses registry-primary lookup. That's the
|
|
24
|
+
* flag reader (#924).
|
|
25
|
+
*
|
|
26
|
+
* ## Empty-input behavior
|
|
27
|
+
*
|
|
28
|
+
* When `parsedFiles` is empty (the common case today — no language has
|
|
29
|
+
* migrated yet), the orchestrator produces a valid but empty bundle: all
|
|
30
|
+
* indexes are zero-sized, the scope tree is empty, and
|
|
31
|
+
* `finalize.stats.totalFiles === 0`. This lets downstream consumers
|
|
32
|
+
* safely consult `model.scopes` without branching on presence.
|
|
33
|
+
*/
|
|
34
|
+
import { buildDefIndex, buildMethodDispatchIndex, buildModuleScopeIndex, buildQualifiedNameIndex, buildScopeTree, finalize, } from '../../_shared/index.js';
|
|
35
|
+
/**
|
|
36
|
+
* Produce a fully materialized `ScopeResolutionIndexes` from the
|
|
37
|
+
* workspace's per-file artifacts.
|
|
38
|
+
*
|
|
39
|
+
* Pure function (given pure hooks). No I/O, no globals consulted. The
|
|
40
|
+
* pipeline calls this once per ingestion run and hands the result to
|
|
41
|
+
* `MutableSemanticModel.attachScopeIndexes`.
|
|
42
|
+
*/
|
|
43
|
+
export function finalizeScopeModel(parsedFiles, options = {}) {
|
|
44
|
+
const hooks = withDefaultHooks(options.hooks ?? {});
|
|
45
|
+
const workspaceIndex = options.workspaceIndex ?? undefined;
|
|
46
|
+
// ── Step 1: Shared finalize — runs SCC-aware cross-file link + binding
|
|
47
|
+
// materialization. Returns linked imports + merged bindings per module
|
|
48
|
+
// scope + SCC condensation + stats.
|
|
49
|
+
const finalizeInput = {
|
|
50
|
+
files: parsedFiles.map(toFinalizeFile),
|
|
51
|
+
workspaceIndex,
|
|
52
|
+
};
|
|
53
|
+
const finalizeOut = finalize(finalizeInput, hooks);
|
|
54
|
+
// ── Step 2: Workspace-wide indexes built from the per-file unions.
|
|
55
|
+
// These are pure aggregations — no algorithm beyond what the builders
|
|
56
|
+
// in codragraph-shared already encapsulate (first-write-wins, qname
|
|
57
|
+
// collision buckets, etc.).
|
|
58
|
+
const allScopes = [];
|
|
59
|
+
const allDefs = [];
|
|
60
|
+
const moduleEntries = [];
|
|
61
|
+
const allReferenceSites = [];
|
|
62
|
+
for (const file of parsedFiles) {
|
|
63
|
+
for (const s of file.scopes)
|
|
64
|
+
allScopes.push(s);
|
|
65
|
+
for (const d of file.localDefs)
|
|
66
|
+
allDefs.push(d);
|
|
67
|
+
moduleEntries.push({ filePath: file.filePath, moduleScopeId: file.moduleScope });
|
|
68
|
+
}
|
|
69
|
+
// References kept out of the loop above to centralize list-init.
|
|
70
|
+
allReferenceSites.push(...collectReferenceSites(parsedFiles));
|
|
71
|
+
const scopeTree = buildScopeTree(allScopes);
|
|
72
|
+
const defs = buildDefIndex(allDefs);
|
|
73
|
+
const qualifiedNames = buildQualifiedNameIndex(allDefs);
|
|
74
|
+
const moduleScopes = buildModuleScopeIndex(moduleEntries);
|
|
75
|
+
// ── Step 3: MethodDispatchIndex. Today we lack per-language MRO
|
|
76
|
+
// strategies wired into this orchestrator (that belongs with the
|
|
77
|
+
// HeritageMap bridge, a separate piece of work). Ship an EMPTY index
|
|
78
|
+
// so the bundle shape is consistent; the callbacks return `[]` for
|
|
79
|
+
// every owner and `implementsOf` returns `[]`. Populating this
|
|
80
|
+
// properly is tracked alongside the per-language provider hooks.
|
|
81
|
+
const methodDispatch = buildMethodDispatchIndex({
|
|
82
|
+
owners: [], // empty → no MRO entries; `mroFor(x)` returns the frozen empty array
|
|
83
|
+
computeMro: () => [],
|
|
84
|
+
implementsOf: () => [],
|
|
85
|
+
});
|
|
86
|
+
return {
|
|
87
|
+
scopeTree,
|
|
88
|
+
defs,
|
|
89
|
+
qualifiedNames,
|
|
90
|
+
moduleScopes,
|
|
91
|
+
methodDispatch,
|
|
92
|
+
imports: finalizeOut.imports,
|
|
93
|
+
bindings: finalizeOut.bindings,
|
|
94
|
+
referenceSites: Object.freeze([...allReferenceSites]),
|
|
95
|
+
sccs: finalizeOut.sccs,
|
|
96
|
+
stats: finalizeOut.stats,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
// ─── Internal ───────────────────────────────────────────────────────────────
|
|
100
|
+
/** Shape-reduce a `ParsedFile` to the narrower `FinalizeFile` the shared
|
|
101
|
+
* algorithm reads. The subset is stable — `FinalizeFile` is a proper
|
|
102
|
+
* subset of `ParsedFile`. */
|
|
103
|
+
function toFinalizeFile(file) {
|
|
104
|
+
return {
|
|
105
|
+
filePath: file.filePath,
|
|
106
|
+
moduleScope: file.moduleScope,
|
|
107
|
+
parsedImports: file.parsedImports,
|
|
108
|
+
localDefs: file.localDefs,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/** Flatten every file's reference sites into one list. Order reflects
|
|
112
|
+
* input-file order, then capture order inside each file. Deterministic. */
|
|
113
|
+
function collectReferenceSites(parsedFiles) {
|
|
114
|
+
const out = [];
|
|
115
|
+
for (const file of parsedFiles) {
|
|
116
|
+
for (const site of file.referenceSites)
|
|
117
|
+
out.push(site);
|
|
118
|
+
}
|
|
119
|
+
return out;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Fill in no-op defaults for any omitted hook. Keeps `finalize()`
|
|
123
|
+
* behavior well-defined for the zero-provider case today:
|
|
124
|
+
*
|
|
125
|
+
* - `resolveImportTarget: () => null` — every import edge ends up
|
|
126
|
+
* `linkStatus: 'unresolved'` (or dynamic-unresolved pass-through).
|
|
127
|
+
* - `expandsWildcardTo: () => []` — wildcards don't materialize.
|
|
128
|
+
* - `mergeBindings: (existing, incoming) => [...existing, ...incoming]`
|
|
129
|
+
* — append without precedence; providers override to implement local-
|
|
130
|
+
* shadows-import and similar rules.
|
|
131
|
+
*/
|
|
132
|
+
function withDefaultHooks(partial) {
|
|
133
|
+
return {
|
|
134
|
+
resolveImportTarget: partial.resolveImportTarget ?? (() => null),
|
|
135
|
+
expandsWildcardTo: partial.expandsWildcardTo ?? (() => []),
|
|
136
|
+
mergeBindings: partial.mergeBindings ??
|
|
137
|
+
((existing, incoming) => [...existing, ...incoming]),
|
|
138
|
+
};
|
|
139
|
+
}
|