arceus-s 1.6.4
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 +395 -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 +63 -0
- package/dist/_shared/index.d.ts.map +1 -0
- package/dist/_shared/index.js +48 -0
- package/dist/_shared/index.js.map +1 -0
- package/dist/_shared/integrations/circuit-breaker.d.ts +183 -0
- package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -0
- package/dist/_shared/integrations/circuit-breaker.js +236 -0
- package/dist/_shared/integrations/circuit-breaker.js.map +1 -0
- package/dist/_shared/integrations/resilient-fetch.d.ts +99 -0
- package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -0
- package/dist/_shared/integrations/resilient-fetch.js +204 -0
- package/dist/_shared/integrations/resilient-fetch.js.map +1 -0
- package/dist/_shared/integrations/retry.d.ts +60 -0
- package/dist/_shared/integrations/retry.d.ts.map +1 -0
- package/dist/_shared/integrations/retry.js +67 -0
- package/dist/_shared/integrations/retry.js.map +1 -0
- package/dist/_shared/integrations/understand-quickly.d.ts +77 -0
- package/dist/_shared/integrations/understand-quickly.d.ts.map +1 -0
- package/dist/_shared/integrations/understand-quickly.js +176 -0
- package/dist/_shared/integrations/understand-quickly.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 +149 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.js +795 -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 +106 -0
- package/dist/_shared/scope-resolution/method-dispatch-index.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/method-dispatch-index.js +98 -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 +349 -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 +83 -0
- package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/scope-tree.js +220 -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 +400 -0
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/types.js +25 -0
- package/dist/_shared/scope-resolution/types.js.map +1 -0
- package/dist/_shared/test-helpers.d.ts +13 -0
- package/dist/_shared/test-helpers.d.ts.map +1 -0
- package/dist/_shared/test-helpers.js +13 -0
- package/dist/_shared/test-helpers.js.map +1 -0
- package/dist/cli/ai-context.d.ts +28 -0
- package/dist/cli/ai-context.js +289 -0
- package/dist/cli/analyze.d.ts +80 -0
- package/dist/cli/analyze.js +525 -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 +79 -0
- package/dist/cli/cli-message.d.ts +16 -0
- package/dist/cli/cli-message.js +71 -0
- package/dist/cli/doctor.d.ts +1 -0
- package/dist/cli/doctor.js +31 -0
- package/dist/cli/eval-server.d.ts +37 -0
- package/dist/cli/eval-server.js +423 -0
- package/dist/cli/group.d.ts +1 -0
- package/dist/cli/group.js +323 -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 +492 -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 +29 -0
- package/dist/cli/mcp.js +73 -0
- package/dist/cli/optional-grammars.d.ts +47 -0
- package/dist/cli/optional-grammars.js +87 -0
- package/dist/cli/publish.d.ts +29 -0
- package/dist/cli/publish.js +174 -0
- package/dist/cli/remove.d.ts +30 -0
- package/dist/cli/remove.js +102 -0
- package/dist/cli/serve.d.ts +4 -0
- package/dist/cli/serve.js +55 -0
- package/dist/cli/setup.d.ts +8 -0
- package/dist/cli/setup.js +642 -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 +169 -0
- package/dist/cli/wiki.d.ts +23 -0
- package/dist/cli/wiki.js +616 -0
- package/dist/config/ignore-service.d.ts +35 -0
- package/dist/config/ignore-service.js +439 -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 +272 -0
- package/dist/core/embedding-mode.d.ts +51 -0
- package/dist/core/embedding-mode.js +48 -0
- package/dist/core/embeddings/ast-utils.d.ts +22 -0
- package/dist/core/embeddings/ast-utils.js +106 -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/config.d.ts +2 -0
- package/dist/core/embeddings/config.js +36 -0
- package/dist/core/embeddings/embedder.d.ts +65 -0
- package/dist/core/embeddings/embedder.js +349 -0
- package/dist/core/embeddings/embedding-pipeline.d.ts +68 -0
- package/dist/core/embeddings/embedding-pipeline.js +552 -0
- package/dist/core/embeddings/exact-search.d.ts +15 -0
- package/dist/core/embeddings/exact-search.js +27 -0
- package/dist/core/embeddings/hf-env.d.ts +135 -0
- package/dist/core/embeddings/hf-env.js +232 -0
- package/dist/core/embeddings/http-client.d.ts +37 -0
- package/dist/core/embeddings/http-client.js +199 -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 +211 -0
- package/dist/core/embeddings/types.js +202 -0
- package/dist/core/git-staleness.d.ts +37 -0
- package/dist/core/git-staleness.js +167 -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/group/bridge-db.d.ts +82 -0
- package/dist/core/group/bridge-db.js +609 -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 +122 -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 +85 -0
- package/dist/core/group/cross-impact.js +515 -0
- package/dist/core/group/extractors/elixir-workspace-extractor.d.ts +15 -0
- package/dist/core/group/extractors/elixir-workspace-extractor.js +204 -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/go-workspace-extractor.d.ts +14 -0
- package/dist/core/group/extractors/go-workspace-extractor.js +217 -0
- package/dist/core/group/extractors/grpc-extractor.d.ts +25 -0
- package/dist/core/group/extractors/grpc-extractor.js +414 -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 +308 -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 +430 -0
- package/dist/core/group/extractors/include-extractor.d.ts +39 -0
- package/dist/core/group/extractors/include-extractor.js +566 -0
- package/dist/core/group/extractors/java-workspace-extractor.d.ts +16 -0
- package/dist/core/group/extractors/java-workspace-extractor.js +204 -0
- package/dist/core/group/extractors/manifest-extractor.d.ts +54 -0
- package/dist/core/group/extractors/manifest-extractor.js +320 -0
- package/dist/core/group/extractors/node-workspace-extractor.d.ts +14 -0
- package/dist/core/group/extractors/node-workspace-extractor.js +207 -0
- package/dist/core/group/extractors/python-workspace-extractor.d.ts +15 -0
- package/dist/core/group/extractors/python-workspace-extractor.js +205 -0
- package/dist/core/group/extractors/rust-workspace-extractor.d.ts +44 -0
- package/dist/core/group/extractors/rust-workspace-extractor.js +240 -0
- package/dist/core/group/extractors/thrift-extractor.d.ts +22 -0
- package/dist/core/group/extractors/thrift-extractor.js +283 -0
- package/dist/core/group/extractors/thrift-patterns/index.d.ts +4 -0
- package/dist/core/group/extractors/thrift-patterns/index.js +10 -0
- package/dist/core/group/extractors/thrift-patterns/java.d.ts +2 -0
- package/dist/core/group/extractors/thrift-patterns/java.js +220 -0
- package/dist/core/group/extractors/thrift-patterns/types.d.ts +17 -0
- package/dist/core/group/extractors/thrift-patterns/types.js +1 -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 +95 -0
- package/dist/core/group/extractors/workspace-extractor.d.ts +13 -0
- package/dist/core/group/extractors/workspace-extractor.js +65 -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 +284 -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 +56 -0
- package/dist/core/group/service.js +395 -0
- package/dist/core/group/storage.d.ts +9 -0
- package/dist/core/group/storage.js +157 -0
- package/dist/core/group/sync.d.ts +21 -0
- package/dist/core/group/sync.js +267 -0
- package/dist/core/group/types.d.ts +181 -0
- package/dist/core/group/types.js +1 -0
- package/dist/core/incremental/shadow-candidates.d.ts +44 -0
- package/dist/core/incremental/shadow-candidates.js +74 -0
- package/dist/core/incremental/subgraph-extract.d.ts +64 -0
- package/dist/core/incremental/subgraph-extract.js +111 -0
- package/dist/core/ingestion/ast-cache.d.ts +26 -0
- package/dist/core/ingestion/ast-cache.js +48 -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 +2754 -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 +169 -0
- package/dist/core/ingestion/cobol/cobol-copy-expander.d.ts +57 -0
- package/dist/core/ingestion/cobol/cobol-copy-expander.js +376 -0
- package/dist/core/ingestion/cobol/cobol-preprocessor.d.ts +212 -0
- package/dist/core/ingestion/cobol/cobol-preprocessor.js +1727 -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 +336 -0
- package/dist/core/ingestion/constants.d.ts +17 -0
- package/dist/core/ingestion/constants.js +21 -0
- package/dist/core/ingestion/cpp-ue-preprocessor.d.ts +12 -0
- package/dist/core/ingestion/cpp-ue-preprocessor.js +260 -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 +40 -0
- package/dist/core/ingestion/entry-point-scoring.js +196 -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 +121 -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 +92 -0
- package/dist/core/ingestion/finalize-orchestrator.d.ts +63 -0
- package/dist/core/ingestion/finalize-orchestrator.js +142 -0
- package/dist/core/ingestion/framework-detection.d.ts +30 -0
- package/dist/core/ingestion/framework-detection.js +428 -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 +367 -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 +377 -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 +35 -0
- package/dist/core/ingestion/import-resolvers/standard.js +168 -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 +153 -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 +182 -0
- package/dist/core/ingestion/language-provider.d.ts +465 -0
- package/dist/core/ingestion/language-provider.js +24 -0
- package/dist/core/ingestion/languages/c/arity-metadata.d.ts +14 -0
- package/dist/core/ingestion/languages/c/arity-metadata.js +94 -0
- package/dist/core/ingestion/languages/c/arity.d.ts +6 -0
- package/dist/core/ingestion/languages/c/arity.js +18 -0
- package/dist/core/ingestion/languages/c/captures.d.ts +2 -0
- package/dist/core/ingestion/languages/c/captures.js +105 -0
- package/dist/core/ingestion/languages/c/header-scan.d.ts +7 -0
- package/dist/core/ingestion/languages/c/header-scan.js +55 -0
- package/dist/core/ingestion/languages/c/import-decomposer.d.ts +8 -0
- package/dist/core/ingestion/languages/c/import-decomposer.js +50 -0
- package/dist/core/ingestion/languages/c/import-target.d.ts +14 -0
- package/dist/core/ingestion/languages/c/import-target.js +57 -0
- package/dist/core/ingestion/languages/c/index.d.ts +11 -0
- package/dist/core/ingestion/languages/c/index.js +11 -0
- package/dist/core/ingestion/languages/c/interpret.d.ts +14 -0
- package/dist/core/ingestion/languages/c/interpret.js +48 -0
- package/dist/core/ingestion/languages/c/merge-bindings.d.ts +7 -0
- package/dist/core/ingestion/languages/c/merge-bindings.js +23 -0
- package/dist/core/ingestion/languages/c/query.d.ts +3 -0
- package/dist/core/ingestion/languages/c/query.js +161 -0
- package/dist/core/ingestion/languages/c/scope-resolver.d.ts +13 -0
- package/dist/core/ingestion/languages/c/scope-resolver.js +60 -0
- package/dist/core/ingestion/languages/c/simple-hooks.d.ts +14 -0
- package/dist/core/ingestion/languages/c/simple-hooks.js +19 -0
- package/dist/core/ingestion/languages/c/static-linkage.d.ts +13 -0
- package/dist/core/ingestion/languages/c/static-linkage.js +57 -0
- package/dist/core/ingestion/languages/c-cpp.d.ts +12 -0
- package/dist/core/ingestion/languages/c-cpp.js +411 -0
- package/dist/core/ingestion/languages/cobol.d.ts +1 -0
- package/dist/core/ingestion/languages/cobol.js +28 -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 +346 -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 +51 -0
- package/dist/core/ingestion/languages/csharp/namespace-siblings.js +387 -0
- package/dist/core/ingestion/languages/csharp/query.d.ts +35 -0
- package/dist/core/ingestion/languages/csharp/query.js +521 -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 +201 -0
- package/dist/core/ingestion/languages/dart.d.ts +12 -0
- package/dist/core/ingestion/languages/dart.js +138 -0
- package/dist/core/ingestion/languages/go/arity-metadata.d.ts +8 -0
- package/dist/core/ingestion/languages/go/arity-metadata.js +37 -0
- package/dist/core/ingestion/languages/go/arity.d.ts +2 -0
- package/dist/core/ingestion/languages/go/arity.js +14 -0
- package/dist/core/ingestion/languages/go/cache-stats.d.ts +7 -0
- package/dist/core/ingestion/languages/go/cache-stats.js +15 -0
- package/dist/core/ingestion/languages/go/captures.d.ts +2 -0
- package/dist/core/ingestion/languages/go/captures.js +129 -0
- package/dist/core/ingestion/languages/go/expand-wildcards.d.ts +15 -0
- package/dist/core/ingestion/languages/go/expand-wildcards.js +93 -0
- package/dist/core/ingestion/languages/go/import-decomposer.d.ts +3 -0
- package/dist/core/ingestion/languages/go/import-decomposer.js +44 -0
- package/dist/core/ingestion/languages/go/import-target.d.ts +21 -0
- package/dist/core/ingestion/languages/go/import-target.js +67 -0
- package/dist/core/ingestion/languages/go/index.d.ts +17 -0
- package/dist/core/ingestion/languages/go/index.js +17 -0
- package/dist/core/ingestion/languages/go/interface-impls.d.ts +4 -0
- package/dist/core/ingestion/languages/go/interface-impls.js +72 -0
- package/dist/core/ingestion/languages/go/interpret.d.ts +11 -0
- package/dist/core/ingestion/languages/go/interpret.js +146 -0
- package/dist/core/ingestion/languages/go/merge-bindings.d.ts +2 -0
- package/dist/core/ingestion/languages/go/merge-bindings.js +18 -0
- package/dist/core/ingestion/languages/go/method-owners.d.ts +17 -0
- package/dist/core/ingestion/languages/go/method-owners.js +96 -0
- package/dist/core/ingestion/languages/go/namespace-mirror.d.ts +15 -0
- package/dist/core/ingestion/languages/go/namespace-mirror.js +53 -0
- package/dist/core/ingestion/languages/go/package-siblings.d.ts +11 -0
- package/dist/core/ingestion/languages/go/package-siblings.js +84 -0
- package/dist/core/ingestion/languages/go/query.d.ts +3 -0
- package/dist/core/ingestion/languages/go/query.js +207 -0
- package/dist/core/ingestion/languages/go/range-binding.d.ts +8 -0
- package/dist/core/ingestion/languages/go/range-binding.js +109 -0
- package/dist/core/ingestion/languages/go/receiver-binding.d.ts +3 -0
- package/dist/core/ingestion/languages/go/receiver-binding.js +21 -0
- package/dist/core/ingestion/languages/go/scope-resolver.d.ts +2 -0
- package/dist/core/ingestion/languages/go/scope-resolver.js +33 -0
- package/dist/core/ingestion/languages/go/simple-hooks.d.ts +4 -0
- package/dist/core/ingestion/languages/go/simple-hooks.js +21 -0
- package/dist/core/ingestion/languages/go/type-binding.d.ts +3 -0
- package/dist/core/ingestion/languages/go/type-binding.js +237 -0
- package/dist/core/ingestion/languages/go.d.ts +11 -0
- package/dist/core/ingestion/languages/go.js +94 -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/arity-metadata.d.ts +18 -0
- package/dist/core/ingestion/languages/java/arity-metadata.js +40 -0
- package/dist/core/ingestion/languages/java/arity.d.ts +10 -0
- package/dist/core/ingestion/languages/java/arity.js +24 -0
- package/dist/core/ingestion/languages/java/cache-stats.d.ts +15 -0
- package/dist/core/ingestion/languages/java/cache-stats.js +26 -0
- package/dist/core/ingestion/languages/java/captures.d.ts +17 -0
- package/dist/core/ingestion/languages/java/captures.js +187 -0
- package/dist/core/ingestion/languages/java/import-decomposer.d.ts +18 -0
- package/dist/core/ingestion/languages/java/import-decomposer.js +85 -0
- package/dist/core/ingestion/languages/java/import-target.d.ts +17 -0
- package/dist/core/ingestion/languages/java/import-target.js +100 -0
- package/dist/core/ingestion/languages/java/index.d.ts +29 -0
- package/dist/core/ingestion/languages/java/index.js +29 -0
- package/dist/core/ingestion/languages/java/interpret.d.ts +13 -0
- package/dist/core/ingestion/languages/java/interpret.js +131 -0
- package/dist/core/ingestion/languages/java/merge-bindings.d.ts +12 -0
- package/dist/core/ingestion/languages/java/merge-bindings.js +40 -0
- package/dist/core/ingestion/languages/java/query.d.ts +30 -0
- package/dist/core/ingestion/languages/java/query.js +192 -0
- package/dist/core/ingestion/languages/java/receiver-binding.d.ts +11 -0
- package/dist/core/ingestion/languages/java/receiver-binding.js +95 -0
- package/dist/core/ingestion/languages/java/scope-resolver.d.ts +50 -0
- package/dist/core/ingestion/languages/java/scope-resolver.js +74 -0
- package/dist/core/ingestion/languages/java/simple-hooks.d.ts +13 -0
- package/dist/core/ingestion/languages/java/simple-hooks.js +34 -0
- package/dist/core/ingestion/languages/java.d.ts +9 -0
- package/dist/core/ingestion/languages/java.js +76 -0
- package/dist/core/ingestion/languages/kotlin.d.ts +9 -0
- package/dist/core/ingestion/languages/kotlin.js +164 -0
- package/dist/core/ingestion/languages/php/arity-metadata.d.ts +28 -0
- package/dist/core/ingestion/languages/php/arity-metadata.js +63 -0
- package/dist/core/ingestion/languages/php/arity.d.ts +25 -0
- package/dist/core/ingestion/languages/php/arity.js +40 -0
- package/dist/core/ingestion/languages/php/cache-stats.d.ts +15 -0
- package/dist/core/ingestion/languages/php/cache-stats.js +26 -0
- package/dist/core/ingestion/languages/php/captures.d.ts +34 -0
- package/dist/core/ingestion/languages/php/captures.js +739 -0
- package/dist/core/ingestion/languages/php/import-decomposer.d.ts +28 -0
- package/dist/core/ingestion/languages/php/import-decomposer.js +265 -0
- package/dist/core/ingestion/languages/php/import-target.d.ts +47 -0
- package/dist/core/ingestion/languages/php/import-target.js +100 -0
- package/dist/core/ingestion/languages/php/index.d.ts +68 -0
- package/dist/core/ingestion/languages/php/index.js +72 -0
- package/dist/core/ingestion/languages/php/interpret.d.ts +36 -0
- package/dist/core/ingestion/languages/php/interpret.js +241 -0
- package/dist/core/ingestion/languages/php/merge-bindings.d.ts +19 -0
- package/dist/core/ingestion/languages/php/merge-bindings.js +47 -0
- package/dist/core/ingestion/languages/php/namespace-siblings.d.ts +51 -0
- package/dist/core/ingestion/languages/php/namespace-siblings.js +288 -0
- package/dist/core/ingestion/languages/php/query.d.ts +32 -0
- package/dist/core/ingestion/languages/php/query.js +326 -0
- package/dist/core/ingestion/languages/php/receiver-binding.d.ts +36 -0
- package/dist/core/ingestion/languages/php/receiver-binding.js +128 -0
- package/dist/core/ingestion/languages/php/scope-resolver.d.ts +23 -0
- package/dist/core/ingestion/languages/php/scope-resolver.js +358 -0
- package/dist/core/ingestion/languages/php/simple-hooks.d.ts +42 -0
- package/dist/core/ingestion/languages/php/simple-hooks.js +111 -0
- package/dist/core/ingestion/languages/php.d.ts +1 -0
- package/dist/core/ingestion/languages/php.js +290 -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 +130 -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 +195 -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 +25 -0
- package/dist/core/ingestion/languages/python/simple-hooks.js +43 -0
- package/dist/core/ingestion/languages/python.d.ts +12 -0
- package/dist/core/ingestion/languages/python.js +133 -0
- package/dist/core/ingestion/languages/ruby.d.ts +9 -0
- package/dist/core/ingestion/languages/ruby.js +235 -0
- package/dist/core/ingestion/languages/rust.d.ts +12 -0
- package/dist/core/ingestion/languages/rust.js +167 -0
- package/dist/core/ingestion/languages/swift.d.ts +12 -0
- package/dist/core/ingestion/languages/swift.js +312 -0
- package/dist/core/ingestion/languages/typescript/arity-metadata.d.ts +59 -0
- package/dist/core/ingestion/languages/typescript/arity-metadata.js +103 -0
- package/dist/core/ingestion/languages/typescript/arity.d.ts +37 -0
- package/dist/core/ingestion/languages/typescript/arity.js +54 -0
- package/dist/core/ingestion/languages/typescript/cache-stats.d.ts +17 -0
- package/dist/core/ingestion/languages/typescript/cache-stats.js +28 -0
- package/dist/core/ingestion/languages/typescript/captures.d.ts +28 -0
- package/dist/core/ingestion/languages/typescript/captures.js +474 -0
- package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +49 -0
- package/dist/core/ingestion/languages/typescript/import-decomposer.js +371 -0
- package/dist/core/ingestion/languages/typescript/import-target.d.ts +50 -0
- package/dist/core/ingestion/languages/typescript/import-target.js +61 -0
- package/dist/core/ingestion/languages/typescript/index.d.ts +94 -0
- package/dist/core/ingestion/languages/typescript/index.js +94 -0
- package/dist/core/ingestion/languages/typescript/interpret.d.ts +35 -0
- package/dist/core/ingestion/languages/typescript/interpret.js +317 -0
- package/dist/core/ingestion/languages/typescript/merge-bindings.d.ts +62 -0
- package/dist/core/ingestion/languages/typescript/merge-bindings.js +158 -0
- package/dist/core/ingestion/languages/typescript/query.d.ts +84 -0
- package/dist/core/ingestion/languages/typescript/query.js +978 -0
- package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +59 -0
- package/dist/core/ingestion/languages/typescript/receiver-binding.js +171 -0
- package/dist/core/ingestion/languages/typescript/scope-resolver.d.ts +16 -0
- package/dist/core/ingestion/languages/typescript/scope-resolver.js +113 -0
- package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +71 -0
- package/dist/core/ingestion/languages/typescript/simple-hooks.js +131 -0
- package/dist/core/ingestion/languages/typescript.d.ts +11 -0
- package/dist/core/ingestion/languages/typescript.js +324 -0
- package/dist/core/ingestion/languages/vue.d.ts +13 -0
- package/dist/core/ingestion/languages/vue.js +79 -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 +276 -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 +205 -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 +401 -0
- package/dist/core/ingestion/model/scope-resolution-indexes.d.ts +72 -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 +60 -0
- package/dist/core/ingestion/parsing-processor.js +627 -0
- package/dist/core/ingestion/pipeline-phases/cobol.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/cobol.js +46 -0
- package/dist/core/ingestion/pipeline-phases/communities.d.ts +16 -0
- package/dist/core/ingestion/pipeline-phases/communities.js +63 -0
- package/dist/core/ingestion/pipeline-phases/cross-file-impl.d.ts +17 -0
- package/dist/core/ingestion/pipeline-phases/cross-file-impl.js +157 -0
- package/dist/core/ingestion/pipeline-phases/cross-file.d.ts +37 -0
- package/dist/core/ingestion/pipeline-phases/cross-file.js +64 -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 +34 -0
- package/dist/core/ingestion/pipeline-phases/mro.d.ts +18 -0
- package/dist/core/ingestion/pipeline-phases/mro.js +37 -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 +75 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +63 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +567 -0
- package/dist/core/ingestion/pipeline-phases/parse.d.ts +88 -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 +149 -0
- package/dist/core/ingestion/pipeline-phases/routes.d.ts +21 -0
- package/dist/core/ingestion/pipeline-phases/routes.js +244 -0
- package/dist/core/ingestion/pipeline-phases/runner.d.ts +22 -0
- package/dist/core/ingestion/pipeline-phases/runner.js +204 -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 +21 -0
- package/dist/core/ingestion/pipeline-phases/tools.js +86 -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 +49 -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 +318 -0
- package/dist/core/ingestion/registry-primary-flag.d.ts +88 -0
- package/dist/core/ingestion/registry-primary-flag.js +117 -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 +35 -0
- package/dist/core/ingestion/scope-extractor-bridge.js +49 -0
- package/dist/core/ingestion/scope-extractor.d.ts +86 -0
- package/dist/core/ingestion/scope-extractor.js +772 -0
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +558 -0
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +250 -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 +142 -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 +40 -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 +118 -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 +467 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +53 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +251 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-return-types.d.ts +75 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-return-types.js +202 -0
- package/dist/core/ingestion/scope-resolution/passes/mro.d.ts +42 -0
- package/dist/core/ingestion/scope-resolution/passes/mro.js +102 -0
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.d.ts +30 -0
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.js +81 -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 +377 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +47 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +152 -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 +31 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +91 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +218 -0
- package/dist/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.d.ts +39 -0
- package/dist/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +65 -0
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +36 -0
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +58 -0
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +170 -0
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +447 -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 +1497 -0
- package/dist/core/ingestion/type-env.d.ts +86 -0
- package/dist/core/ingestion/type-env.js +1129 -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 +487 -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 +102 -0
- package/dist/core/ingestion/utils/ast-helpers.js +561 -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 +20 -0
- package/dist/core/ingestion/utils/env.js +24 -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 +53 -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 +111 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +199 -0
- package/dist/core/ingestion/workers/parse-worker.js +1940 -0
- package/dist/core/ingestion/workers/worker-pool.d.ts +23 -0
- package/dist/core/ingestion/workers/worker-pool.js +380 -0
- package/dist/core/lbug/csv-generator.d.ts +33 -0
- package/dist/core/lbug/csv-generator.js +463 -0
- package/dist/core/lbug/extension-loader.d.ts +86 -0
- package/dist/core/lbug/extension-loader.js +186 -0
- package/dist/core/lbug/lbug-adapter.d.ts +243 -0
- package/dist/core/lbug/lbug-adapter.js +1377 -0
- package/dist/core/lbug/lbug-config.d.ts +102 -0
- package/dist/core/lbug/lbug-config.js +303 -0
- package/dist/core/lbug/pool-adapter.d.ts +90 -0
- package/dist/core/lbug/pool-adapter.js +592 -0
- package/dist/core/lbug/schema.d.ts +62 -0
- package/dist/core/lbug/schema.js +495 -0
- package/dist/core/logger.d.ts +125 -0
- package/dist/core/logger.js +323 -0
- package/dist/core/platform/capabilities.d.ts +24 -0
- package/dist/core/platform/capabilities.js +54 -0
- package/dist/core/run-analyze.d.ts +92 -0
- package/dist/core/run-analyze.js +672 -0
- package/dist/core/search/bm25-index.d.ts +29 -0
- package/dist/core/search/bm25-index.js +118 -0
- package/dist/core/search/fts-indexes.d.ts +1 -0
- package/dist/core/search/fts-indexes.js +7 -0
- package/dist/core/search/fts-schema.d.ts +6 -0
- package/dist/core/search/fts-schema.js +7 -0
- package/dist/core/search/hybrid-search.d.ts +53 -0
- package/dist/core/search/hybrid-search.js +136 -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 +189 -0
- package/dist/core/tree-sitter/safe-parse.d.ts +6 -0
- package/dist/core/tree-sitter/safe-parse.js +32 -0
- package/dist/core/wiki/cursor-client.d.ts +31 -0
- package/dist/core/wiki/cursor-client.js +123 -0
- package/dist/core/wiki/generator.d.ts +129 -0
- package/dist/core/wiki/generator.js +899 -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 +304 -0
- package/dist/core/wiki/llm-client.d.ts +83 -0
- package/dist/core/wiki/llm-client.js +267 -0
- package/dist/core/wiki/mermaid-sanitizer.d.ts +2 -0
- package/dist/core/wiki/mermaid-sanitizer.js +100 -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 +206 -0
- package/dist/mcp/core/embedder.d.ts +27 -0
- package/dist/mcp/core/embedder.js +145 -0
- package/dist/mcp/core/lbug-adapter.d.ts +11 -0
- package/dist/mcp/core/lbug-adapter.js +11 -0
- package/dist/mcp/local/local-backend.d.ts +356 -0
- package/dist/mcp/local/local-backend.js +3251 -0
- package/dist/mcp/resources.d.ts +62 -0
- package/dist/mcp/resources.js +512 -0
- package/dist/mcp/server.d.ts +23 -0
- package/dist/mcp/server.js +314 -0
- package/dist/mcp/staleness.d.ts +5 -0
- package/dist/mcp/staleness.js +4 -0
- package/dist/mcp/stdio-capture.d.ts +40 -0
- package/dist/mcp/stdio-capture.js +53 -0
- package/dist/mcp/stdio-context.d.ts +47 -0
- package/dist/mcp/stdio-context.js +145 -0
- package/dist/mcp/tools.d.ts +29 -0
- package/dist/mcp/tools.js +506 -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 +72 -0
- package/dist/server/api.js +1638 -0
- package/dist/server/git-clone.d.ts +99 -0
- package/dist/server/git-clone.js +397 -0
- package/dist/server/mcp-http.d.ts +13 -0
- package/dist/server/mcp-http.js +101 -0
- package/dist/server/validation.d.ts +98 -0
- package/dist/server/validation.js +142 -0
- package/dist/storage/file-hash.d.ts +47 -0
- package/dist/storage/file-hash.js +86 -0
- package/dist/storage/git.d.ts +148 -0
- package/dist/storage/git.js +346 -0
- package/dist/storage/parse-cache.d.ts +67 -0
- package/dist/storage/parse-cache.js +182 -0
- package/dist/storage/repo-manager.d.ts +467 -0
- package/dist/storage/repo-manager.js +804 -0
- package/dist/types/pipeline.d.ts +18 -0
- package/dist/types/pipeline.js +1 -0
- package/hooks/claude/arc-hook.cjs +334 -0
- package/hooks/claude/hook-lock.cjs +119 -0
- package/hooks/claude/pre-tool-use.sh +79 -0
- package/hooks/claude/session-start.sh +42 -0
- package/package.json +122 -0
- package/scripts/bench-scope-resolution.ts +134 -0
- package/scripts/build-tree-sitter-dart.cjs +53 -0
- package/scripts/build-tree-sitter-proto.cjs +93 -0
- package/scripts/build.js +99 -0
- package/scripts/ci-list-migrated-languages.ts +24 -0
- package/scripts/install-duckdb-extension.mjs +48 -0
- package/skills/arc-cli.md +83 -0
- package/skills/arc-debugging.md +89 -0
- package/skills/arc-exploring.md +78 -0
- package/skills/arc-guide.md +64 -0
- package/skills/arc-impact-analysis.md +97 -0
- package/skills/arc-pr-review.md +163 -0
- package/skills/arc-refactoring.md +121 -0
- package/vendor/leiden/index.cjs +355 -0
- package/vendor/leiden/utils.cjs +392 -0
- package/vendor/tree-sitter-dart/README.md +18 -0
- package/vendor/tree-sitter-dart/binding.gyp +31 -0
- package/vendor/tree-sitter-dart/bindings/node/binding.cc +20 -0
- package/vendor/tree-sitter-dart/bindings/node/index.d.ts +28 -0
- package/vendor/tree-sitter-dart/bindings/node/index.js +7 -0
- package/vendor/tree-sitter-dart/grammar.js +2895 -0
- package/vendor/tree-sitter-dart/package.json +18 -0
- package/vendor/tree-sitter-dart/queries/highlights.scm +246 -0
- package/vendor/tree-sitter-dart/queries/tags.scm +92 -0
- package/vendor/tree-sitter-dart/queries/test.scm +1 -0
- package/vendor/tree-sitter-dart/src/grammar.json +12459 -0
- package/vendor/tree-sitter-dart/src/node-types.json +15055 -0
- package/vendor/tree-sitter-dart/src/parser.c +196127 -0
- package/vendor/tree-sitter-dart/src/scanner.c +130 -0
- package/vendor/tree-sitter-dart/src/tree_sitter/alloc.h +54 -0
- package/vendor/tree-sitter-dart/src/tree_sitter/array.h +290 -0
- package/vendor/tree-sitter-dart/src/tree_sitter/parser.h +265 -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
- package/vendor/tree-sitter-swift/LICENSE +21 -0
- package/vendor/tree-sitter-swift/README.md +139 -0
- package/vendor/tree-sitter-swift/bindings/node/index.d.ts +28 -0
- package/vendor/tree-sitter-swift/bindings/node/index.js +7 -0
- package/vendor/tree-sitter-swift/package.json +28 -0
- package/vendor/tree-sitter-swift/prebuilds/darwin-arm64/tree-sitter-swift.node +0 -0
- package/vendor/tree-sitter-swift/prebuilds/darwin-x64/tree-sitter-swift.node +0 -0
- package/vendor/tree-sitter-swift/prebuilds/linux-arm64/tree-sitter-swift.node +0 -0
- package/vendor/tree-sitter-swift/prebuilds/linux-x64/tree-sitter-swift.node +0 -0
- package/vendor/tree-sitter-swift/prebuilds/win32-arm64/tree-sitter-swift.node +0 -0
- package/vendor/tree-sitter-swift/prebuilds/win32-x64/tree-sitter-swift.node +0 -0
- package/vendor/tree-sitter-swift/src/node-types.json +30694 -0
- package/web/assets/__vite-browser-external-CLwMvL_q.js +1 -0
- package/web/assets/agent-DaYmiVrk.js +601 -0
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-aGTGQQQG.js +1 -0
- package/web/assets/architectureDiagram-UL44E2DR-613o-OfM.js +36 -0
- package/web/assets/blockDiagram-7IZFK4PR-BBJRt4vF.js +132 -0
- package/web/assets/c4Diagram-Y2BXMSZH-BhR2CErx.js +10 -0
- package/web/assets/chunk-3SSMPTDK-DWfEAoKy.js +321 -0
- package/web/assets/chunk-6764PJDD-NOXEgi3n.js +1 -0
- package/web/assets/chunk-AZZRMDJM-DVvcxwI7.js +15 -0
- package/web/assets/chunk-JQRUD6KW-CQgkrimK.js +1 -0
- package/web/assets/chunk-KGYTTC2M-DxOdSoAJ.js +161 -0
- package/web/assets/chunk-KRXBNO2N-BlnQTnxv.js +1 -0
- package/web/assets/chunk-LCXTWHL2-Dhf_u-1F.js +231 -0
- package/web/assets/chunk-LII3EMHJ-Cb3HLCZX.js +1 -0
- package/web/assets/chunk-RG4AUYOV-DLCfNede.js +206 -0
- package/web/assets/chunk-T5OCTHI4-B0CGAG7q.js +1 -0
- package/web/assets/chunk-W44A43WB-ZyrAMwtT.js +1 -0
- package/web/assets/chunk-ZXARS5L4-B0TJPmj5.js +1 -0
- package/web/assets/classDiagram-KGZ6W3CR-CvSnsfJD.js +1 -0
- package/web/assets/classDiagram-v2-72OJOZXJ-CvSnsfJD.js +1 -0
- package/web/assets/context-builder-BREgwful.js +15 -0
- package/web/assets/cose-bilkent-UX7MHV2Q-BsPIaeag.js +1 -0
- package/web/assets/dagre-ND4H6XIP-CV4l9vOZ.js +4 -0
- package/web/assets/diagram-3NCE3AQN-9kSzEbS8.js +43 -0
- package/web/assets/diagram-GF46GFSD-qRvqbex6.js +24 -0
- package/web/assets/diagram-HNR7UZ2L-Dj_ye4Ua.js +3 -0
- package/web/assets/diagram-QXG6HAR7-COwBV6B0.js +24 -0
- package/web/assets/diagram-WEQXMOUZ-C9xjn5dU.js +10 -0
- package/web/assets/erDiagram-L5TCEMPS-fRp0t1Yd.js +85 -0
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-BR0Ygfrw.js +1 -0
- package/web/assets/flowDiagram-H6V6AXG4-Ccr8FDLD.js +162 -0
- package/web/assets/ganttDiagram-JCBTUEKG-DfBPqAGN.js +292 -0
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-CYihBz6Z.js +1 -0
- package/web/assets/gitGraphDiagram-S2ZK5IYY-CHvG_UQ0.js +106 -0
- package/web/assets/index-B7cw1L6-.css +2 -0
- package/web/assets/index-CJJQgfSH.js +886 -0
- package/web/assets/info-J43DQDTF-KCYPFFUO-BmmoeX4D.js +1 -0
- package/web/assets/infoDiagram-3YFTVSEB-C7cMy-GP.js +2 -0
- package/web/assets/ishikawaDiagram-BNXS4ZKH-C80yCPYi.js +70 -0
- package/web/assets/journeyDiagram-M6C3CM3L-BHxH1zjE.js +139 -0
- package/web/assets/kanban-definition-75IXJCU3-DNZo1hOE.js +89 -0
- package/web/assets/katex-K3KEBU37-CbyuvTf1.js +261 -0
- package/web/assets/mindmap-definition-2TDM6QVE-Dpgl3Elt.js +96 -0
- package/web/assets/packet-YPE3B663-LP52Z2RK-7JAqDnUy.js +1 -0
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-Bv9vE7io.js +1 -0
- package/web/assets/pieDiagram-CU6KROY3-BW0mr0ek.js +30 -0
- package/web/assets/quadrantDiagram-VICAPDV7-C1dCMBbk.js +7 -0
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-dtZpcOZd.js +1 -0
- package/web/assets/requirementDiagram-JXO7QTGE-Dyqqny4j.js +84 -0
- package/web/assets/sankeyDiagram-URQDO5SZ-B3FGr5SL.js +40 -0
- package/web/assets/sequenceDiagram-VS2MUI6T-B4LlGP9C.js +162 -0
- package/web/assets/stateDiagram-7D4R322I-V9F-klBP.js +1 -0
- package/web/assets/stateDiagram-v2-36443NZ5-CKDYYzqR.js +1 -0
- package/web/assets/timeline-definition-O6YCAMPW-CX2WjkZA.js +120 -0
- package/web/assets/treeView-BLDUP644-QA4HXRO3-BQaKTdhr.js +1 -0
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-Bqlxdyrq.js +1 -0
- package/web/assets/vennDiagram-MWXL3ELB-BxZPYqOF.js +34 -0
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-dofeprUr.js +1 -0
- package/web/assets/wardleyDiagram-CUQ6CDDI-BLdJJYkV.js +78 -0
- package/web/assets/xychartDiagram-N2JHSOCM-DqDgigLa.js +7 -0
- package/web/index.html +19 -0
|
@@ -0,0 +1,795 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `finalize` — cross-file finalize algorithm for the SemanticModel
|
|
3
|
+
* (RFC §3.2 Phase 2; Ring 2 SHARED #915).
|
|
4
|
+
*
|
|
5
|
+
* Pure logic that takes per-file parse output (`ParsedImport[]` +
|
|
6
|
+
* `SymbolDefinition[]`) and returns:
|
|
7
|
+
*
|
|
8
|
+
* - Linked `ImportEdge[]` per module scope, with `targetModuleScope` and
|
|
9
|
+
* `targetDefId` filled where resolvable; edges that could not be
|
|
10
|
+
* resolved within the hard fixpoint cap are marked
|
|
11
|
+
* `linkStatus: 'unresolved'`.
|
|
12
|
+
* - Materialized `bindings` per module scope — local defs merged with
|
|
13
|
+
* imported / wildcard-expanded / re-exported names via the provider's
|
|
14
|
+
* `mergeBindings` precedence.
|
|
15
|
+
* - The SCC condensation of the import graph, exposed so disjoint SCCs
|
|
16
|
+
* can be processed in parallel by callers that want that.
|
|
17
|
+
*
|
|
18
|
+
* The algorithm is **SCC-aware**: it runs Tarjan SCC over the file-level
|
|
19
|
+
* import graph, processes SCCs in reverse-topological order (leaves
|
|
20
|
+
* first), and within each SCC runs a bounded fixpoint link pass capped at
|
|
21
|
+
* `N = |edges in SCC|`. Cyclic imports finalize without hanging; malformed
|
|
22
|
+
* inputs are bounded by the cap.
|
|
23
|
+
*
|
|
24
|
+
* **No language-specific logic.** Target resolution, wildcard expansion,
|
|
25
|
+
* and binding precedence all go through caller-supplied hooks
|
|
26
|
+
* (`resolveImportTarget`, `expandsWildcardTo`, `mergeBindings`) that
|
|
27
|
+
* match the LanguageProvider surface from #911.
|
|
28
|
+
*
|
|
29
|
+
* **Non-binding imports rule.** `dynamic-unresolved` passes through with
|
|
30
|
+
* `targetFile: null`; `dynamic-resolved` and `side-effect` resolve to
|
|
31
|
+
* file-level `ImportEdge`s. None of these materialize `BindingRef`s.
|
|
32
|
+
*/
|
|
33
|
+
// ─── Entry point ───────────────────────────────────────────────────────────
|
|
34
|
+
export function finalize(input, hooks) {
|
|
35
|
+
const byFilePath = new Map();
|
|
36
|
+
for (const f of input.files)
|
|
37
|
+
byFilePath.set(f.filePath, f);
|
|
38
|
+
// ── Phase 0: pre-resolve raw import targets (one syscall-equivalent per
|
|
39
|
+
// (file, parsedImport)). Edges with no resolvable target become
|
|
40
|
+
// `linkStatus: 'unresolved'` or, for dynamic-unresolved, pass through
|
|
41
|
+
// with `targetFile: null`.
|
|
42
|
+
const edgeIndex = new Map(); // filePath → drafts
|
|
43
|
+
let totalEdges = 0;
|
|
44
|
+
for (const file of input.files) {
|
|
45
|
+
const drafts = [];
|
|
46
|
+
for (const parsed of file.parsedImports) {
|
|
47
|
+
const draftArray = makeEdgeDrafts(parsed, file, hooks, input.workspaceIndex);
|
|
48
|
+
drafts.push(...draftArray);
|
|
49
|
+
totalEdges += draftArray.length;
|
|
50
|
+
}
|
|
51
|
+
edgeIndex.set(file.filePath, drafts);
|
|
52
|
+
}
|
|
53
|
+
// ── Phase 1: build file-level import graph (only resolvable edges form
|
|
54
|
+
// graph edges; unresolvable ones are terminal and contribute no
|
|
55
|
+
// fixpoint obligation).
|
|
56
|
+
const graph = new Map();
|
|
57
|
+
for (const file of input.files) {
|
|
58
|
+
graph.set(file.filePath, new Set());
|
|
59
|
+
}
|
|
60
|
+
for (const [fromFile, drafts] of edgeIndex) {
|
|
61
|
+
const edges = graph.get(fromFile);
|
|
62
|
+
if (edges === undefined)
|
|
63
|
+
continue;
|
|
64
|
+
for (const d of drafts) {
|
|
65
|
+
if (d.targetFile !== null && byFilePath.has(d.targetFile)) {
|
|
66
|
+
edges.add(d.targetFile);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// ── Phase 2: Tarjan SCC → reverse-topological list of SCCs.
|
|
71
|
+
const sccs = tarjanSccs(graph);
|
|
72
|
+
// ── Phase 2.5: precompute the per-file re-export closure (iterative,
|
|
73
|
+
// SCC-condensed). Eliminates the recursive crawl that the per-edge
|
|
74
|
+
// `tryFinalize` call site used to do; lookups are O(1) afterwards.
|
|
75
|
+
// See `buildReexportClosures` for the algorithm.
|
|
76
|
+
const reexportClosures = buildReexportClosures(input.files, byFilePath, edgeIndex);
|
|
77
|
+
// ── Phase 3: process SCCs in reverse-topological order (leaves first).
|
|
78
|
+
// Within each SCC, run a bounded fixpoint that resolves intra-SCC edges.
|
|
79
|
+
// Edges leaving the SCC are already resolved (their target SCC is
|
|
80
|
+
// already finalized); edges inside the SCC may need multiple passes.
|
|
81
|
+
const linkedByScope = new Map();
|
|
82
|
+
let linkedEdges = 0;
|
|
83
|
+
for (const scc of sccs) {
|
|
84
|
+
const sccFiles = new Set(scc.files);
|
|
85
|
+
const capacity = countEdgesWithin(edgeIndex, sccFiles);
|
|
86
|
+
// Run the fixpoint up to `capacity` iterations. Each iteration tries to
|
|
87
|
+
// resolve every still-unlinked edge in the SCC; stops early if a pass
|
|
88
|
+
// makes no progress.
|
|
89
|
+
let progressed = true;
|
|
90
|
+
let iterations = 0;
|
|
91
|
+
while (progressed && iterations < capacity) {
|
|
92
|
+
progressed = false;
|
|
93
|
+
iterations++;
|
|
94
|
+
for (const filePath of scc.files) {
|
|
95
|
+
const drafts = edgeIndex.get(filePath);
|
|
96
|
+
if (drafts === undefined)
|
|
97
|
+
continue;
|
|
98
|
+
for (const draft of drafts) {
|
|
99
|
+
if (draft.finalized !== null)
|
|
100
|
+
continue;
|
|
101
|
+
const finalized = tryFinalize(draft, byFilePath, reexportClosures);
|
|
102
|
+
if (finalized !== null) {
|
|
103
|
+
draft.finalized = finalized;
|
|
104
|
+
progressed = true;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Any drafts still not finalized within this SCC hit the cap → unresolved.
|
|
110
|
+
for (const filePath of scc.files) {
|
|
111
|
+
const drafts = edgeIndex.get(filePath);
|
|
112
|
+
if (drafts === undefined)
|
|
113
|
+
continue;
|
|
114
|
+
for (const draft of drafts) {
|
|
115
|
+
if (draft.finalized !== null)
|
|
116
|
+
continue;
|
|
117
|
+
draft.finalized = {
|
|
118
|
+
...draft.base,
|
|
119
|
+
linkStatus: 'unresolved',
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// ── Phase 4: collect finalized `ImportEdge[]` per module scope, preserving
|
|
125
|
+
// input order within each file, and wildcard-expand where applicable.
|
|
126
|
+
for (const file of input.files) {
|
|
127
|
+
const drafts = edgeIndex.get(file.filePath);
|
|
128
|
+
if (drafts === undefined)
|
|
129
|
+
continue;
|
|
130
|
+
const finalized = [];
|
|
131
|
+
for (const d of drafts) {
|
|
132
|
+
const edge = d.finalized;
|
|
133
|
+
if (edge === null) {
|
|
134
|
+
throw new Error(`Invariant violated: import edge was not finalized for ${file.filePath}`);
|
|
135
|
+
}
|
|
136
|
+
if (d.source.kind === 'wildcard' && edge.linkStatus !== 'unresolved') {
|
|
137
|
+
// Produce one `wildcard-expanded` ImportEdge per exported name.
|
|
138
|
+
const expanded = expandWildcard(edge, byFilePath, hooks, input.workspaceIndex);
|
|
139
|
+
for (const e of expanded)
|
|
140
|
+
finalized.push(e);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
finalized.push(edge);
|
|
144
|
+
}
|
|
145
|
+
if (edge.linkStatus !== 'unresolved')
|
|
146
|
+
linkedEdges++;
|
|
147
|
+
}
|
|
148
|
+
linkedByScope.set(file.moduleScope, Object.freeze(finalized));
|
|
149
|
+
}
|
|
150
|
+
// ── Phase 5: materialize module-scope bindings (local + imports + wildcards),
|
|
151
|
+
// delegating precedence to `provider.mergeBindings`.
|
|
152
|
+
const bindingsByScope = materializeBindings(input.files, linkedByScope, hooks);
|
|
153
|
+
// ── Stats.
|
|
154
|
+
const sccCount = sccs.length;
|
|
155
|
+
let largestSccSize = 0;
|
|
156
|
+
for (const scc of sccs) {
|
|
157
|
+
if (scc.files.length > largestSccSize)
|
|
158
|
+
largestSccSize = scc.files.length;
|
|
159
|
+
}
|
|
160
|
+
const stats = {
|
|
161
|
+
totalFiles: input.files.length,
|
|
162
|
+
totalEdges,
|
|
163
|
+
linkedEdges,
|
|
164
|
+
unresolvedEdges: totalEdges - linkedEdges,
|
|
165
|
+
sccCount,
|
|
166
|
+
largestSccSize,
|
|
167
|
+
};
|
|
168
|
+
return Object.freeze({
|
|
169
|
+
imports: linkedByScope,
|
|
170
|
+
bindings: bindingsByScope,
|
|
171
|
+
sccs,
|
|
172
|
+
stats,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
function makeEdgeDrafts(parsed, file, hooks, workspace) {
|
|
176
|
+
// Dynamic-unresolved passes through — no `BindingRef`, no target file.
|
|
177
|
+
if (parsed.kind === 'dynamic-unresolved') {
|
|
178
|
+
const base = {
|
|
179
|
+
localName: parsed.localName,
|
|
180
|
+
targetFile: null,
|
|
181
|
+
targetExportedName: '',
|
|
182
|
+
kind: 'dynamic-unresolved',
|
|
183
|
+
};
|
|
184
|
+
return [
|
|
185
|
+
{
|
|
186
|
+
source: parsed,
|
|
187
|
+
fromFile: file.filePath,
|
|
188
|
+
fromScope: file.moduleScope,
|
|
189
|
+
targetFile: null,
|
|
190
|
+
base,
|
|
191
|
+
finalized: base, // already fully finalized
|
|
192
|
+
},
|
|
193
|
+
];
|
|
194
|
+
}
|
|
195
|
+
const targetFile = hooks.resolveImportTarget(parsed.targetRaw ?? '', file.filePath, workspace);
|
|
196
|
+
// Edge is unresolvable at the file level — mark unresolved now.
|
|
197
|
+
if (targetFile === null) {
|
|
198
|
+
const base = {
|
|
199
|
+
localName: extractLocalName(parsed),
|
|
200
|
+
targetFile: null,
|
|
201
|
+
targetExportedName: extractExportedName(parsed),
|
|
202
|
+
kind: edgeKindFor(parsed),
|
|
203
|
+
linkStatus: 'unresolved',
|
|
204
|
+
};
|
|
205
|
+
return [
|
|
206
|
+
{
|
|
207
|
+
source: parsed,
|
|
208
|
+
fromFile: file.filePath,
|
|
209
|
+
fromScope: file.moduleScope,
|
|
210
|
+
targetFile: null,
|
|
211
|
+
base,
|
|
212
|
+
finalized: base,
|
|
213
|
+
},
|
|
214
|
+
];
|
|
215
|
+
}
|
|
216
|
+
// Resolvable at the file level; intra-SCC fixpoint may still fail to fill
|
|
217
|
+
// in `targetDefId` (e.g., symbol not exported from target). Side-effect
|
|
218
|
+
// and resolved-dynamic imports are terminal at the file level — no
|
|
219
|
+
// `targetDefId` needed since they materialize no `BindingRef`. Pre-
|
|
220
|
+
// finalize them here so the fixpoint loop skips them entirely.
|
|
221
|
+
const targetFiles = Array.isArray(targetFile) ? targetFile : [targetFile];
|
|
222
|
+
const isFileLevelTerminal = parsed.kind === 'side-effect' || parsed.kind === 'dynamic-resolved';
|
|
223
|
+
return targetFiles.map((tf) => {
|
|
224
|
+
const base = {
|
|
225
|
+
localName: extractLocalName(parsed),
|
|
226
|
+
targetFile: tf,
|
|
227
|
+
targetExportedName: extractExportedName(parsed),
|
|
228
|
+
kind: edgeKindFor(parsed),
|
|
229
|
+
};
|
|
230
|
+
return {
|
|
231
|
+
source: parsed,
|
|
232
|
+
fromFile: file.filePath,
|
|
233
|
+
fromScope: file.moduleScope,
|
|
234
|
+
targetFile: tf,
|
|
235
|
+
base,
|
|
236
|
+
finalized: isFileLevelTerminal ? base : null,
|
|
237
|
+
};
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
function edgeKindFor(parsed) {
|
|
241
|
+
if (parsed.kind === 'wildcard')
|
|
242
|
+
return 'wildcard-expanded';
|
|
243
|
+
return parsed.kind;
|
|
244
|
+
}
|
|
245
|
+
function extractLocalName(parsed) {
|
|
246
|
+
switch (parsed.kind) {
|
|
247
|
+
case 'wildcard':
|
|
248
|
+
case 'side-effect':
|
|
249
|
+
case 'dynamic-resolved':
|
|
250
|
+
return '';
|
|
251
|
+
default:
|
|
252
|
+
return parsed.localName;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
function extractExportedName(parsed) {
|
|
256
|
+
switch (parsed.kind) {
|
|
257
|
+
case 'named':
|
|
258
|
+
case 'alias':
|
|
259
|
+
case 'namespace':
|
|
260
|
+
case 'reexport':
|
|
261
|
+
return parsed.importedName;
|
|
262
|
+
case 'wildcard':
|
|
263
|
+
case 'dynamic-unresolved':
|
|
264
|
+
case 'dynamic-resolved':
|
|
265
|
+
case 'side-effect':
|
|
266
|
+
return '';
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// ─── Internal: per-edge finalization (phase 3) ─────────────────────────────
|
|
270
|
+
function tryFinalize(draft, byFilePath, reexportClosures) {
|
|
271
|
+
const targetFile = draft.targetFile;
|
|
272
|
+
if (targetFile === null)
|
|
273
|
+
return draft.base; // already terminal
|
|
274
|
+
const targetModule = byFilePath.get(targetFile);
|
|
275
|
+
if (targetModule === undefined)
|
|
276
|
+
return draft.base; // external target — leave as-is
|
|
277
|
+
// Wildcards finalize at the file level; their per-name expansion happens
|
|
278
|
+
// in phase 4. At this stage we just record the target module scope.
|
|
279
|
+
if (draft.source.kind === 'wildcard') {
|
|
280
|
+
return {
|
|
281
|
+
...draft.base,
|
|
282
|
+
targetModuleScope: targetModule.moduleScope,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
// Namespace imports alias the target *module*; they don't name a
|
|
286
|
+
// specific export. Link the module scope unconditionally. If the target
|
|
287
|
+
// also exposes a def whose simple name matches `importedName` (some
|
|
288
|
+
// languages emit a synthetic module-def), pick it up as the `targetDefId`
|
|
289
|
+
// so consumers can reach the module as a symbol — but its absence is not
|
|
290
|
+
// a failure.
|
|
291
|
+
if (draft.source.kind === 'namespace') {
|
|
292
|
+
const moduleDef = findExportByName(targetModule.localDefs, extractExportedName(draft.source));
|
|
293
|
+
return {
|
|
294
|
+
...draft.base,
|
|
295
|
+
targetModuleScope: targetModule.moduleScope,
|
|
296
|
+
...(moduleDef !== undefined ? { targetDefId: moduleDef.nodeId } : {}),
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
// named / alias / reexport: look up the imported name in the target's
|
|
300
|
+
// local defs. Multi-hop re-export chains settle iteratively — each hop
|
|
301
|
+
// resolves once its prior hop is finalized.
|
|
302
|
+
const importedName = extractExportedName(draft.source);
|
|
303
|
+
const exported = findExportByName(targetModule.localDefs, importedName);
|
|
304
|
+
if (exported !== undefined) {
|
|
305
|
+
const transitiveVia = draft.source.kind === 'reexport' ? Object.freeze([targetFile]) : undefined;
|
|
306
|
+
return {
|
|
307
|
+
...draft.base,
|
|
308
|
+
targetModuleScope: targetModule.moduleScope,
|
|
309
|
+
targetDefId: exported.nodeId,
|
|
310
|
+
...(transitiveVia !== undefined ? { transitiveVia } : {}),
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
// Multi-hop re-export follow. Barrel modules like
|
|
314
|
+
// // models.ts
|
|
315
|
+
// export { User } from './base';
|
|
316
|
+
// emit no local def for `User`; the name surfaces only via their own
|
|
317
|
+
// `reexport` edge. The per-file re-export closure built in phase 2.5
|
|
318
|
+
// already encodes every name reachable through that file's named and
|
|
319
|
+
// wildcard re-exports — including transitively through cyclic SCCs —
|
|
320
|
+
// so the lookup is O(1) and never recurses.
|
|
321
|
+
const followed = lookupReexportedName(reexportClosures, targetFile, importedName);
|
|
322
|
+
if (followed === null) {
|
|
323
|
+
// Target resolvable but the name isn't exported — keep trying in case a
|
|
324
|
+
// re-export inside the target's SCC surfaces it in a later iteration.
|
|
325
|
+
return null;
|
|
326
|
+
}
|
|
327
|
+
const viaFiles = [targetFile, ...followed.via];
|
|
328
|
+
const transitiveVia = draft.source.kind === 'reexport' || viaFiles.length > 1 ? Object.freeze(viaFiles) : undefined;
|
|
329
|
+
return {
|
|
330
|
+
...draft.base,
|
|
331
|
+
targetModuleScope: targetModule.moduleScope,
|
|
332
|
+
targetDefId: followed.def.nodeId,
|
|
333
|
+
...(transitiveVia !== undefined ? { transitiveVia } : {}),
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Build per-file re-export closures.
|
|
338
|
+
*
|
|
339
|
+
* **Algorithm.** Iterative SCC-condensed reverse-topological propagation,
|
|
340
|
+
* structurally identical to how `finalize` itself processes the file-
|
|
341
|
+
* level import graph. Replaces the legacy recursive
|
|
342
|
+
* `followReexportChain` crawl with a bounded, stack-safe pass:
|
|
343
|
+
*
|
|
344
|
+
* 1. **Sub-graph.** Build a directed graph whose edges are
|
|
345
|
+
* `reexport` and `wildcard` drafts only (regular imports do not
|
|
346
|
+
* contribute to the export surface, and `namespace`/
|
|
347
|
+
* `reexport-namespace` are terminal — their target def lives in
|
|
348
|
+
* `localDefs`).
|
|
349
|
+
* 2. **SCC condensation.** Run the same iterative `tarjanSccs` over
|
|
350
|
+
* the sub-graph. Output is in reverse-topological order (leaves
|
|
351
|
+
* first), so when we process an SCC every out-of-SCC neighbor
|
|
352
|
+
* already has its closure populated.
|
|
353
|
+
* 3. **Per-SCC propagation.**
|
|
354
|
+
* * Acyclic singleton: one pass — read neighbors' (already
|
|
355
|
+
* fully populated) closures.
|
|
356
|
+
* * Cyclic SCC (cycle ≥ 2 files, or self-loop): bounded
|
|
357
|
+
* fixpoint inside the SCC, capped at `|SCC| + 1` iterations
|
|
358
|
+
* (each iteration propagates names one hop further around
|
|
359
|
+
* the cycle; first-wins precedence keeps the map monotone
|
|
360
|
+
* so the fixpoint converges in at most |SCC| hops).
|
|
361
|
+
*
|
|
362
|
+
* **Precedence semantics — preserved from the recursive crawl.**
|
|
363
|
+
* * Named re-exports take precedence over wildcards.
|
|
364
|
+
* * Within each kind, declaration order wins (first match for a
|
|
365
|
+
* given exported name is kept; later drafts skip).
|
|
366
|
+
*
|
|
367
|
+
* **Complexity.**
|
|
368
|
+
* * Pre-pass: O(V + E_re) for SCC, plus O(|SCC| × Σ drafts) per cyclic
|
|
369
|
+
* SCC. For tree-shaped barrel graphs (the common case) it
|
|
370
|
+
* collapses to O(E_re) total.
|
|
371
|
+
* * Per-edge lookup at finalize time: O(1).
|
|
372
|
+
* * `transitiveVia` preserves the exact file path chain for diagnostics
|
|
373
|
+
* and graph provenance. Building those arrays copies the inherited path,
|
|
374
|
+
* which is O(depth²) in a pathological single-name barrel chain; practical
|
|
375
|
+
* TypeScript barrel chains are shallow enough that we keep exact paths
|
|
376
|
+
* instead of capping or summarizing them.
|
|
377
|
+
* * Pathological deep chains that previously needed
|
|
378
|
+
* `MAX_REEXPORT_DEPTH=100` to bound stack growth now resolve
|
|
379
|
+
* in full and are bounded only by available memory — the
|
|
380
|
+
* iterative formulation has no call-stack ceiling.
|
|
381
|
+
*/
|
|
382
|
+
function buildReexportClosures(files, byFilePath, edgeIndex) {
|
|
383
|
+
const closures = new Map();
|
|
384
|
+
for (const file of files)
|
|
385
|
+
closures.set(file.filePath, new Map());
|
|
386
|
+
// ── Step 1: build the re-export sub-graph (only resolvable
|
|
387
|
+
// reexport/wildcard targets contribute edges).
|
|
388
|
+
const subGraph = new Map();
|
|
389
|
+
for (const file of files) {
|
|
390
|
+
const targets = new Set();
|
|
391
|
+
const drafts = edgeIndex.get(file.filePath);
|
|
392
|
+
if (drafts !== undefined) {
|
|
393
|
+
for (const d of drafts) {
|
|
394
|
+
if (d.source.kind !== 'reexport' && d.source.kind !== 'wildcard')
|
|
395
|
+
continue;
|
|
396
|
+
if (d.targetFile === null)
|
|
397
|
+
continue;
|
|
398
|
+
if (!byFilePath.has(d.targetFile))
|
|
399
|
+
continue;
|
|
400
|
+
targets.add(d.targetFile);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
subGraph.set(file.filePath, targets);
|
|
404
|
+
}
|
|
405
|
+
// ── Step 2: SCC over the sub-graph. Reuses the same iterative Tarjan
|
|
406
|
+
// implementation that drives the file-level finalize loop, so any
|
|
407
|
+
// call-stack-safety guarantees there transfer here unchanged.
|
|
408
|
+
const subSccs = tarjanSccs(subGraph);
|
|
409
|
+
// ── Step 3: process SCCs in reverse-topological order. Acyclic
|
|
410
|
+
// singletons settle in one pass; cyclic SCCs run a bounded fixpoint.
|
|
411
|
+
for (const scc of subSccs) {
|
|
412
|
+
if (!scc.isCycle) {
|
|
413
|
+
const filePath = scc.files[0];
|
|
414
|
+
if (filePath !== undefined) {
|
|
415
|
+
populateFileClosure(filePath, byFilePath, edgeIndex, closures);
|
|
416
|
+
}
|
|
417
|
+
continue;
|
|
418
|
+
}
|
|
419
|
+
// Cap = |SCC| + 1. With first-wins precedence each name needs at
|
|
420
|
+
// most |SCC| iterations to propagate fully around the cycle; the
|
|
421
|
+
// extra iteration confirms no progress and breaks the loop.
|
|
422
|
+
const cap = scc.files.length + 1;
|
|
423
|
+
let progressed = true;
|
|
424
|
+
let iter = 0;
|
|
425
|
+
while (progressed && iter < cap) {
|
|
426
|
+
progressed = false;
|
|
427
|
+
iter++;
|
|
428
|
+
for (const filePath of scc.files) {
|
|
429
|
+
if (populateFileClosure(filePath, byFilePath, edgeIndex, closures)) {
|
|
430
|
+
progressed = true;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
return closures;
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Populate one file's re-export closure for one pass. Returns `true`
|
|
439
|
+
* iff the closure grew (signalling fixpoint progress to the caller).
|
|
440
|
+
*
|
|
441
|
+
* Walks the file's drafts in declaration order, named re-exports first
|
|
442
|
+
* (precedence), then wildcards. For each draft, attempts:
|
|
443
|
+
* 1. **Direct hit** — name exists in the target file's `localDefs`.
|
|
444
|
+
* 2. **Inherited** — name exists in the target file's already-populated
|
|
445
|
+
* closure (which encodes the target's own re-export chain).
|
|
446
|
+
*
|
|
447
|
+
* `closures.get(targetFile)` may itself still be empty for in-SCC
|
|
448
|
+
* targets on the first iteration; the outer fixpoint loop handles
|
|
449
|
+
* that by re-invoking this function.
|
|
450
|
+
*/
|
|
451
|
+
function populateFileClosure(filePath, byFilePath, edgeIndex, closures) {
|
|
452
|
+
const myClosure = closures.get(filePath);
|
|
453
|
+
if (myClosure === undefined)
|
|
454
|
+
return false;
|
|
455
|
+
const before = myClosure.size;
|
|
456
|
+
const drafts = edgeIndex.get(filePath);
|
|
457
|
+
if (drafts === undefined)
|
|
458
|
+
return false;
|
|
459
|
+
// Named re-exports — precedence over wildcards, declaration order
|
|
460
|
+
// first-wins for duplicates of the same exported name.
|
|
461
|
+
for (const draft of drafts) {
|
|
462
|
+
if (draft.source.kind !== 'reexport')
|
|
463
|
+
continue;
|
|
464
|
+
const targetFile = draft.targetFile;
|
|
465
|
+
if (targetFile === null)
|
|
466
|
+
continue;
|
|
467
|
+
const targetModule = byFilePath.get(targetFile);
|
|
468
|
+
if (targetModule === undefined)
|
|
469
|
+
continue;
|
|
470
|
+
const localName = draft.source.localName;
|
|
471
|
+
if (myClosure.has(localName))
|
|
472
|
+
continue;
|
|
473
|
+
const importedName = draft.source.importedName;
|
|
474
|
+
const direct = findExportByName(targetModule.localDefs, importedName);
|
|
475
|
+
if (direct !== undefined) {
|
|
476
|
+
myClosure.set(localName, { def: direct, via: Object.freeze([targetFile]) });
|
|
477
|
+
continue;
|
|
478
|
+
}
|
|
479
|
+
const inherited = closures.get(targetFile)?.get(importedName);
|
|
480
|
+
if (inherited !== undefined) {
|
|
481
|
+
myClosure.set(localName, {
|
|
482
|
+
def: inherited.def,
|
|
483
|
+
via: Object.freeze([targetFile, ...inherited.via]),
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
// Else: target's closure is still empty (in-SCC, awaiting next
|
|
487
|
+
// iteration). Outer loop will revisit.
|
|
488
|
+
}
|
|
489
|
+
// Wildcard re-exports — fan out the target's own surface (localDefs
|
|
490
|
+
// + transitive closure). `myClosure.has(name)` checks below preserve
|
|
491
|
+
// the named-precedence and first-wins semantics from above.
|
|
492
|
+
for (const draft of drafts) {
|
|
493
|
+
if (draft.source.kind !== 'wildcard')
|
|
494
|
+
continue;
|
|
495
|
+
const targetFile = draft.targetFile;
|
|
496
|
+
if (targetFile === null)
|
|
497
|
+
continue;
|
|
498
|
+
const targetModule = byFilePath.get(targetFile);
|
|
499
|
+
if (targetModule === undefined)
|
|
500
|
+
continue;
|
|
501
|
+
for (const def of targetModule.localDefs) {
|
|
502
|
+
const name = deriveSimpleName(def);
|
|
503
|
+
if (name === null || myClosure.has(name))
|
|
504
|
+
continue;
|
|
505
|
+
myClosure.set(name, { def, via: Object.freeze([targetFile]) });
|
|
506
|
+
}
|
|
507
|
+
const targetClosure = closures.get(targetFile);
|
|
508
|
+
if (targetClosure !== undefined) {
|
|
509
|
+
for (const [name, entry] of targetClosure) {
|
|
510
|
+
if (myClosure.has(name))
|
|
511
|
+
continue;
|
|
512
|
+
myClosure.set(name, {
|
|
513
|
+
def: entry.def,
|
|
514
|
+
via: Object.freeze([targetFile, ...entry.via]),
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
return myClosure.size > before;
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* O(1) lookup into a precomputed re-export closure. Replaces the legacy
|
|
523
|
+
* recursive `followReexportChain` traversal with a single map indexing.
|
|
524
|
+
*/
|
|
525
|
+
function lookupReexportedName(closures, filePath, name) {
|
|
526
|
+
const closure = closures.get(filePath);
|
|
527
|
+
if (closure === undefined)
|
|
528
|
+
return null;
|
|
529
|
+
const entry = closure.get(name);
|
|
530
|
+
if (entry === undefined)
|
|
531
|
+
return null;
|
|
532
|
+
return { def: entry.def, via: entry.via };
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* The "simple" (unqualified) name of a def, for import-name matching.
|
|
536
|
+
*
|
|
537
|
+
* Canonical source: `def.qualifiedName` — the tail after the last `.` (or
|
|
538
|
+
* the whole string if no dot). Defs without a qualifiedName can't be
|
|
539
|
+
* resolved by name here and return `null`; callers treat that as "name
|
|
540
|
+
* not exported" and either retry in a later fixpoint iteration or mark
|
|
541
|
+
* the edge unresolved.
|
|
542
|
+
*/
|
|
543
|
+
function deriveSimpleName(def) {
|
|
544
|
+
const q = def.qualifiedName;
|
|
545
|
+
if (q === undefined || q.length === 0)
|
|
546
|
+
return null;
|
|
547
|
+
const dot = q.lastIndexOf('.');
|
|
548
|
+
return dot === -1 ? q : q.slice(dot + 1);
|
|
549
|
+
}
|
|
550
|
+
function findExportByName(defs, name) {
|
|
551
|
+
// GENERIC RULE (applies to every language using this finalize
|
|
552
|
+
// algorithm): when MULTIPLE `SymbolDefinition`s share the same simple
|
|
553
|
+
// name in `localDefs`, prefer callable / type-like defs over plain
|
|
554
|
+
// value defs (`Variable`, `Property`, …). The CALLER side of an
|
|
555
|
+
// import almost always wants the callable, not a value shadow that
|
|
556
|
+
// happens to share the name — and without a deterministic
|
|
557
|
+
// preference, capture order silently decides which def the import
|
|
558
|
+
// binds to.
|
|
559
|
+
//
|
|
560
|
+
// The single-def case is unchanged: when only one def has the name,
|
|
561
|
+
// it's returned regardless of its type (the `fallback` path below).
|
|
562
|
+
//
|
|
563
|
+
// TypeScript is the first known language where this matters in
|
|
564
|
+
// practice: `const fn = () => {}` emits BOTH a `Function` def (from
|
|
565
|
+
// `@declaration.function` on the inner arrow) AND a `Variable` def
|
|
566
|
+
// (from the generic `@declaration.variable` pattern matching the
|
|
567
|
+
// wrapping `lexical_declaration`), and consumers of `import { fn }`
|
|
568
|
+
// need to bind to the callable. Other migrated languages don't
|
|
569
|
+
// currently produce dual emits of this shape, so the rule is a no-op
|
|
570
|
+
// for them today; future languages get the same correctness
|
|
571
|
+
// guarantee for free if they ever do.
|
|
572
|
+
//
|
|
573
|
+
// See `arc/test/integration/resolvers/typescript-hof-callbacks.test.ts`
|
|
574
|
+
// for the cross-file regression this rule prevents.
|
|
575
|
+
let fallback;
|
|
576
|
+
for (const d of defs) {
|
|
577
|
+
if (deriveSimpleName(d) !== name)
|
|
578
|
+
continue;
|
|
579
|
+
if (isCallableOrTypeLike(d.type))
|
|
580
|
+
return d;
|
|
581
|
+
if (fallback === undefined)
|
|
582
|
+
fallback = d;
|
|
583
|
+
}
|
|
584
|
+
return fallback;
|
|
585
|
+
}
|
|
586
|
+
const CALLABLE_OR_TYPE_LIKE = new Set([
|
|
587
|
+
'Function',
|
|
588
|
+
'Method',
|
|
589
|
+
'Constructor',
|
|
590
|
+
'Class',
|
|
591
|
+
'Interface',
|
|
592
|
+
'Enum',
|
|
593
|
+
'Struct',
|
|
594
|
+
'Record',
|
|
595
|
+
'Trait',
|
|
596
|
+
'Namespace',
|
|
597
|
+
'Module',
|
|
598
|
+
'TypeAlias',
|
|
599
|
+
'Type',
|
|
600
|
+
'Typedef',
|
|
601
|
+
]);
|
|
602
|
+
function isCallableOrTypeLike(type) {
|
|
603
|
+
return CALLABLE_OR_TYPE_LIKE.has(type);
|
|
604
|
+
}
|
|
605
|
+
function countEdgesWithin(edgeIndex, files) {
|
|
606
|
+
let n = 0;
|
|
607
|
+
for (const filePath of files) {
|
|
608
|
+
const drafts = edgeIndex.get(filePath);
|
|
609
|
+
if (drafts === undefined)
|
|
610
|
+
continue;
|
|
611
|
+
for (const d of drafts) {
|
|
612
|
+
if (d.targetFile !== null && files.has(d.targetFile))
|
|
613
|
+
n++;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
// Guarantee at least one pass even for a trivial SCC (ensures deterministic
|
|
617
|
+
// fixpoint termination even when a single-file SCC has zero intra-SCC edges
|
|
618
|
+
// but still needs one settle pass).
|
|
619
|
+
return Math.max(n, 1);
|
|
620
|
+
}
|
|
621
|
+
// ─── Internal: wildcard expansion (phase 4) ────────────────────────────────
|
|
622
|
+
function expandWildcard(edge, byFilePath, hooks, workspace) {
|
|
623
|
+
if (edge.targetModuleScope === undefined || edge.targetFile === null) {
|
|
624
|
+
return [edge]; // unresolvable wildcard survives as a single unlinked edge
|
|
625
|
+
}
|
|
626
|
+
const target = byFilePath.get(edge.targetFile);
|
|
627
|
+
if (target === undefined)
|
|
628
|
+
return [edge];
|
|
629
|
+
const names = hooks.expandsWildcardTo(edge.targetModuleScope, workspace);
|
|
630
|
+
if (names.length === 0)
|
|
631
|
+
return [];
|
|
632
|
+
const expanded = [];
|
|
633
|
+
for (const name of names) {
|
|
634
|
+
const def = findExportByName(target.localDefs, name);
|
|
635
|
+
if (def === undefined)
|
|
636
|
+
continue;
|
|
637
|
+
expanded.push({
|
|
638
|
+
localName: name,
|
|
639
|
+
targetFile: edge.targetFile,
|
|
640
|
+
targetExportedName: name,
|
|
641
|
+
kind: 'wildcard-expanded',
|
|
642
|
+
targetModuleScope: edge.targetModuleScope,
|
|
643
|
+
targetDefId: def.nodeId,
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
return expanded;
|
|
647
|
+
}
|
|
648
|
+
// ─── Internal: bindings materialization (phase 5) ───────────────────────────
|
|
649
|
+
function materializeBindings(files, linkedByScope, hooks) {
|
|
650
|
+
const out = new Map();
|
|
651
|
+
// Build a `nodeId → SymbolDefinition` index once across all files
|
|
652
|
+
// (O(N_files × D_defs)) so the per-edge lookup below is O(1) instead
|
|
653
|
+
// of a full linear scan. At realistic TypeScript monorepo scale
|
|
654
|
+
// (~5k files × ~50 defs × ~100k linked import edges) this is the
|
|
655
|
+
// difference between ~25 s and a few ms inside finalize. The map
|
|
656
|
+
// is local to this pass — no cross-pass state leaks.
|
|
657
|
+
const defById = new Map();
|
|
658
|
+
for (const f of files) {
|
|
659
|
+
for (const d of f.localDefs)
|
|
660
|
+
defById.set(d.nodeId, d);
|
|
661
|
+
}
|
|
662
|
+
for (const file of files) {
|
|
663
|
+
const scopeBindings = new Map();
|
|
664
|
+
// Start with local defs as `origin: 'local'` bindings.
|
|
665
|
+
for (const def of file.localDefs) {
|
|
666
|
+
const name = deriveSimpleName(def);
|
|
667
|
+
if (name === null)
|
|
668
|
+
continue;
|
|
669
|
+
const incoming = [{ def, origin: 'local' }];
|
|
670
|
+
const existing = scopeBindings.get(name) ?? [];
|
|
671
|
+
scopeBindings.set(name, hooks.mergeBindings(existing, incoming, file.moduleScope));
|
|
672
|
+
}
|
|
673
|
+
// Layer in finalized imports.
|
|
674
|
+
const imports = linkedByScope.get(file.moduleScope) ?? [];
|
|
675
|
+
for (const edge of imports) {
|
|
676
|
+
if (edge.targetDefId === undefined || edge.linkStatus === 'unresolved')
|
|
677
|
+
continue;
|
|
678
|
+
const def = defById.get(edge.targetDefId);
|
|
679
|
+
if (def === undefined)
|
|
680
|
+
continue;
|
|
681
|
+
const origin = edge.kind === 'namespace'
|
|
682
|
+
? 'namespace'
|
|
683
|
+
: edge.kind === 'wildcard-expanded'
|
|
684
|
+
? 'wildcard'
|
|
685
|
+
: edge.kind === 'reexport'
|
|
686
|
+
? 'reexport'
|
|
687
|
+
: 'import';
|
|
688
|
+
const fallback = deriveSimpleName(def);
|
|
689
|
+
const name = edge.localName.length > 0 ? edge.localName : fallback;
|
|
690
|
+
if (name === null)
|
|
691
|
+
continue;
|
|
692
|
+
const incoming = [{ def, origin, via: edge }];
|
|
693
|
+
const existing = scopeBindings.get(name) ?? [];
|
|
694
|
+
scopeBindings.set(name, hooks.mergeBindings(existing, incoming, file.moduleScope));
|
|
695
|
+
}
|
|
696
|
+
// Freeze nested buckets for immutability.
|
|
697
|
+
const frozen = new Map();
|
|
698
|
+
for (const [name, refs] of scopeBindings) {
|
|
699
|
+
frozen.set(name, Object.freeze(refs.slice()));
|
|
700
|
+
}
|
|
701
|
+
out.set(file.moduleScope, frozen);
|
|
702
|
+
}
|
|
703
|
+
return out;
|
|
704
|
+
}
|
|
705
|
+
// ─── Internal: Tarjan SCC ──────────────────────────────────────────────────
|
|
706
|
+
/**
|
|
707
|
+
* Iterative Tarjan SCC. Returns SCCs in **reverse-topological** order
|
|
708
|
+
* (leaves first — a property Tarjan gives for free, and the order
|
|
709
|
+
* `finalize` wants so leaves are fully resolved before their dependents).
|
|
710
|
+
*/
|
|
711
|
+
function tarjanSccs(graph) {
|
|
712
|
+
const index = new Map();
|
|
713
|
+
const lowlink = new Map();
|
|
714
|
+
const onStack = new Set();
|
|
715
|
+
const stack = [];
|
|
716
|
+
const sccs = [];
|
|
717
|
+
let idx = 0;
|
|
718
|
+
// Iterative DFS to avoid stack overflow on deep import chains.
|
|
719
|
+
const allNodes = Array.from(graph.keys()).sort(); // deterministic order
|
|
720
|
+
const iterStack = [];
|
|
721
|
+
for (const root of allNodes) {
|
|
722
|
+
if (index.has(root))
|
|
723
|
+
continue;
|
|
724
|
+
iterStack.push({
|
|
725
|
+
node: root,
|
|
726
|
+
children: (graph.get(root) ?? new Set()).values(),
|
|
727
|
+
entered: false,
|
|
728
|
+
});
|
|
729
|
+
while (iterStack.length > 0) {
|
|
730
|
+
const frame = iterStack[iterStack.length - 1];
|
|
731
|
+
if (frame === undefined)
|
|
732
|
+
break;
|
|
733
|
+
if (!frame.entered) {
|
|
734
|
+
frame.entered = true;
|
|
735
|
+
index.set(frame.node, idx);
|
|
736
|
+
lowlink.set(frame.node, idx);
|
|
737
|
+
idx++;
|
|
738
|
+
stack.push(frame.node);
|
|
739
|
+
onStack.add(frame.node);
|
|
740
|
+
}
|
|
741
|
+
const nextChild = frame.children.next();
|
|
742
|
+
if (nextChild.done) {
|
|
743
|
+
// Post-visit: compute SCC membership if frame.node is a root.
|
|
744
|
+
if (lowlink.get(frame.node) === index.get(frame.node)) {
|
|
745
|
+
const scc = [];
|
|
746
|
+
let selfInCycle = false;
|
|
747
|
+
while (true) {
|
|
748
|
+
const w = stack.pop();
|
|
749
|
+
if (w === undefined) {
|
|
750
|
+
throw new Error(`Invariant violated: Tarjan stack exhausted at ${frame.node}`);
|
|
751
|
+
}
|
|
752
|
+
onStack.delete(w);
|
|
753
|
+
scc.push(w);
|
|
754
|
+
// A single-file self-loop counts as a cycle.
|
|
755
|
+
if (w === frame.node) {
|
|
756
|
+
selfInCycle = (graph.get(w) ?? new Set()).has(w);
|
|
757
|
+
break;
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
const isCycle = scc.length > 1 || selfInCycle;
|
|
761
|
+
sccs.push({ files: Object.freeze(scc), isCycle });
|
|
762
|
+
}
|
|
763
|
+
iterStack.pop();
|
|
764
|
+
// Propagate lowlink to parent.
|
|
765
|
+
if (iterStack.length > 0) {
|
|
766
|
+
const parent = iterStack[iterStack.length - 1];
|
|
767
|
+
if (parent !== undefined) {
|
|
768
|
+
lowlink.set(parent.node, Math.min(requiredNumber(lowlink, parent.node, 'lowlink'), requiredNumber(lowlink, frame.node, 'lowlink')));
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
continue;
|
|
772
|
+
}
|
|
773
|
+
const child = nextChild.value;
|
|
774
|
+
if (!index.has(child)) {
|
|
775
|
+
iterStack.push({
|
|
776
|
+
node: child,
|
|
777
|
+
children: (graph.get(child) ?? new Set()).values(),
|
|
778
|
+
entered: false,
|
|
779
|
+
});
|
|
780
|
+
}
|
|
781
|
+
else if (onStack.has(child)) {
|
|
782
|
+
lowlink.set(frame.node, Math.min(requiredNumber(lowlink, frame.node, 'lowlink'), requiredNumber(index, child, 'index')));
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
return sccs;
|
|
787
|
+
}
|
|
788
|
+
function requiredNumber(map, key, label) {
|
|
789
|
+
const value = map.get(key);
|
|
790
|
+
if (value === undefined) {
|
|
791
|
+
throw new Error(`Invariant violated: missing Tarjan ${label} for ${key}`);
|
|
792
|
+
}
|
|
793
|
+
return value;
|
|
794
|
+
}
|
|
795
|
+
//# sourceMappingURL=finalize-algorithm.js.map
|