@opencodehub/ingestion 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +69 -0
- package/dist/extract/index.d.ts +8 -0
- package/dist/extract/index.d.ts.map +1 -0
- package/dist/extract/index.js +6 -0
- package/dist/extract/index.js.map +1 -0
- package/dist/extract/orm-detector.d.ts +19 -0
- package/dist/extract/orm-detector.d.ts.map +1 -0
- package/dist/extract/orm-detector.js +209 -0
- package/dist/extract/orm-detector.js.map +1 -0
- package/dist/extract/property-access.d.ts +76 -0
- package/dist/extract/property-access.d.ts.map +1 -0
- package/dist/extract/property-access.js +260 -0
- package/dist/extract/property-access.js.map +1 -0
- package/dist/extract/receiver-resolver.d.ts +86 -0
- package/dist/extract/receiver-resolver.d.ts.map +1 -0
- package/dist/extract/receiver-resolver.js +77 -0
- package/dist/extract/receiver-resolver.js.map +1 -0
- package/dist/extract/route-detector-java.d.ts +29 -0
- package/dist/extract/route-detector-java.d.ts.map +1 -0
- package/dist/extract/route-detector-java.js +190 -0
- package/dist/extract/route-detector-java.js.map +1 -0
- package/dist/extract/route-detector-nestjs.d.ts +30 -0
- package/dist/extract/route-detector-nestjs.d.ts.map +1 -0
- package/dist/extract/route-detector-nestjs.js +134 -0
- package/dist/extract/route-detector-nestjs.js.map +1 -0
- package/dist/extract/route-detector-python.d.ts +28 -0
- package/dist/extract/route-detector-python.d.ts.map +1 -0
- package/dist/extract/route-detector-python.js +100 -0
- package/dist/extract/route-detector-python.js.map +1 -0
- package/dist/extract/route-detector-rails.d.ts +28 -0
- package/dist/extract/route-detector-rails.d.ts.map +1 -0
- package/dist/extract/route-detector-rails.js +162 -0
- package/dist/extract/route-detector-rails.js.map +1 -0
- package/dist/extract/route-detector.d.ts +45 -0
- package/dist/extract/route-detector.d.ts.map +1 -0
- package/dist/extract/route-detector.js +467 -0
- package/dist/extract/route-detector.js.map +1 -0
- package/dist/extract/tool-detector.d.ts +26 -0
- package/dist/extract/tool-detector.d.ts.map +1 -0
- package/dist/extract/tool-detector.js +364 -0
- package/dist/extract/tool-detector.js.map +1 -0
- package/dist/extract/types.d.ts +89 -0
- package/dist/extract/types.d.ts.map +1 -0
- package/dist/extract/types.js +11 -0
- package/dist/extract/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/parse/cobol-regex.d.ts +85 -0
- package/dist/parse/cobol-regex.d.ts.map +1 -0
- package/dist/parse/cobol-regex.js +355 -0
- package/dist/parse/cobol-regex.js.map +1 -0
- package/dist/parse/grammar-registry.d.ts +115 -0
- package/dist/parse/grammar-registry.d.ts.map +1 -0
- package/dist/parse/grammar-registry.js +278 -0
- package/dist/parse/grammar-registry.js.map +1 -0
- package/dist/parse/index.d.ts +14 -0
- package/dist/parse/index.d.ts.map +1 -0
- package/dist/parse/index.js +10 -0
- package/dist/parse/index.js.map +1 -0
- package/dist/parse/language-detector.d.ts +17 -0
- package/dist/parse/language-detector.d.ts.map +1 -0
- package/dist/parse/language-detector.js +104 -0
- package/dist/parse/language-detector.js.map +1 -0
- package/dist/parse/parse-worker.d.ts +24 -0
- package/dist/parse/parse-worker.d.ts.map +1 -0
- package/dist/parse/parse-worker.js +230 -0
- package/dist/parse/parse-worker.js.map +1 -0
- package/dist/parse/types.d.ts +49 -0
- package/dist/parse/types.d.ts.map +1 -0
- package/dist/parse/types.js +11 -0
- package/dist/parse/types.js.map +1 -0
- package/dist/parse/unified-queries.d.ts +37 -0
- package/dist/parse/unified-queries.d.ts.map +1 -0
- package/dist/parse/unified-queries.js +623 -0
- package/dist/parse/unified-queries.js.map +1 -0
- package/dist/parse/wasm-fallback.d.ts +88 -0
- package/dist/parse/wasm-fallback.d.ts.map +1 -0
- package/dist/parse/wasm-fallback.js +258 -0
- package/dist/parse/wasm-fallback.js.map +1 -0
- package/dist/parse/worker-pool.d.ts +48 -0
- package/dist/parse/worker-pool.d.ts.map +1 -0
- package/dist/parse/worker-pool.js +97 -0
- package/dist/parse/worker-pool.js.map +1 -0
- package/dist/pipeline/dep-parsers/go.d.ts +25 -0
- package/dist/pipeline/dep-parsers/go.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/go.js +146 -0
- package/dist/pipeline/dep-parsers/go.js.map +1 -0
- package/dist/pipeline/dep-parsers/index.d.ts +17 -0
- package/dist/pipeline/dep-parsers/index.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/index.js +16 -0
- package/dist/pipeline/dep-parsers/index.js.map +1 -0
- package/dist/pipeline/dep-parsers/maven.d.ts +24 -0
- package/dist/pipeline/dep-parsers/maven.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/maven.js +131 -0
- package/dist/pipeline/dep-parsers/maven.js.map +1 -0
- package/dist/pipeline/dep-parsers/npm.d.ts +30 -0
- package/dist/pipeline/dep-parsers/npm.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/npm.js +309 -0
- package/dist/pipeline/dep-parsers/npm.js.map +1 -0
- package/dist/pipeline/dep-parsers/nuget.d.ts +24 -0
- package/dist/pipeline/dep-parsers/nuget.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/nuget.js +178 -0
- package/dist/pipeline/dep-parsers/nuget.js.map +1 -0
- package/dist/pipeline/dep-parsers/python.d.ts +21 -0
- package/dist/pipeline/dep-parsers/python.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/python.js +369 -0
- package/dist/pipeline/dep-parsers/python.js.map +1 -0
- package/dist/pipeline/dep-parsers/rust.d.ts +18 -0
- package/dist/pipeline/dep-parsers/rust.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/rust.js +134 -0
- package/dist/pipeline/dep-parsers/rust.js.map +1 -0
- package/dist/pipeline/dep-parsers/spdx-normalize.d.ts +15 -0
- package/dist/pipeline/dep-parsers/spdx-normalize.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/spdx-normalize.js +31 -0
- package/dist/pipeline/dep-parsers/spdx-normalize.js.map +1 -0
- package/dist/pipeline/dep-parsers/types.d.ts +63 -0
- package/dist/pipeline/dep-parsers/types.d.ts.map +1 -0
- package/dist/pipeline/dep-parsers/types.js +56 -0
- package/dist/pipeline/dep-parsers/types.js.map +1 -0
- package/dist/pipeline/gitignore-stack.d.ts +44 -0
- package/dist/pipeline/gitignore-stack.d.ts.map +1 -0
- package/dist/pipeline/gitignore-stack.js +69 -0
- package/dist/pipeline/gitignore-stack.js.map +1 -0
- package/dist/pipeline/gitignore.d.ts +67 -0
- package/dist/pipeline/gitignore.d.ts.map +1 -0
- package/dist/pipeline/gitignore.js +210 -0
- package/dist/pipeline/gitignore.js.map +1 -0
- package/dist/pipeline/index.d.ts +53 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +29 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/orchestrator.d.ts +105 -0
- package/dist/pipeline/orchestrator.d.ts.map +1 -0
- package/dist/pipeline/orchestrator.js +175 -0
- package/dist/pipeline/orchestrator.js.map +1 -0
- package/dist/pipeline/ownership-helpers/drift.d.ts +41 -0
- package/dist/pipeline/ownership-helpers/drift.d.ts.map +1 -0
- package/dist/pipeline/ownership-helpers/drift.js +122 -0
- package/dist/pipeline/ownership-helpers/drift.js.map +1 -0
- package/dist/pipeline/ownership-helpers/gini-community.d.ts +24 -0
- package/dist/pipeline/ownership-helpers/gini-community.d.ts.map +1 -0
- package/dist/pipeline/ownership-helpers/gini-community.js +32 -0
- package/dist/pipeline/ownership-helpers/gini-community.js.map +1 -0
- package/dist/pipeline/ownership-helpers/git-blame-batcher.d.ts +71 -0
- package/dist/pipeline/ownership-helpers/git-blame-batcher.d.ts.map +1 -0
- package/dist/pipeline/ownership-helpers/git-blame-batcher.js +178 -0
- package/dist/pipeline/ownership-helpers/git-blame-batcher.js.map +1 -0
- package/dist/pipeline/ownership-helpers/line-overlap.d.ts +35 -0
- package/dist/pipeline/ownership-helpers/line-overlap.d.ts.map +1 -0
- package/dist/pipeline/ownership-helpers/line-overlap.js +62 -0
- package/dist/pipeline/ownership-helpers/line-overlap.js.map +1 -0
- package/dist/pipeline/ownership-helpers/orphan.d.ts +73 -0
- package/dist/pipeline/ownership-helpers/orphan.d.ts.map +1 -0
- package/dist/pipeline/ownership-helpers/orphan.js +117 -0
- package/dist/pipeline/ownership-helpers/orphan.js.map +1 -0
- package/dist/pipeline/phases/accesses.d.ts +44 -0
- package/dist/pipeline/phases/accesses.d.ts.map +1 -0
- package/dist/pipeline/phases/accesses.js +194 -0
- package/dist/pipeline/phases/accesses.js.map +1 -0
- package/dist/pipeline/phases/annotate.d.ts +28 -0
- package/dist/pipeline/phases/annotate.d.ts.map +1 -0
- package/dist/pipeline/phases/annotate.js +60 -0
- package/dist/pipeline/phases/annotate.js.map +1 -0
- package/dist/pipeline/phases/cochange.d.ts +42 -0
- package/dist/pipeline/phases/cochange.d.ts.map +1 -0
- package/dist/pipeline/phases/cochange.js +0 -0
- package/dist/pipeline/phases/cochange.js.map +1 -0
- package/dist/pipeline/phases/communities.d.ts +34 -0
- package/dist/pipeline/phases/communities.d.ts.map +1 -0
- package/dist/pipeline/phases/communities.js +412 -0
- package/dist/pipeline/phases/communities.js.map +1 -0
- package/dist/pipeline/phases/complexity.d.ts +50 -0
- package/dist/pipeline/phases/complexity.d.ts.map +1 -0
- package/dist/pipeline/phases/complexity.js +794 -0
- package/dist/pipeline/phases/complexity.js.map +1 -0
- package/dist/pipeline/phases/confidence-demote.d.ts +23 -0
- package/dist/pipeline/phases/confidence-demote.d.ts.map +1 -0
- package/dist/pipeline/phases/confidence-demote.js +113 -0
- package/dist/pipeline/phases/confidence-demote.js.map +1 -0
- package/dist/pipeline/phases/content-cache.d.ts +166 -0
- package/dist/pipeline/phases/content-cache.d.ts.map +1 -0
- package/dist/pipeline/phases/content-cache.js +323 -0
- package/dist/pipeline/phases/content-cache.js.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/cobertura.d.ts +25 -0
- package/dist/pipeline/phases/coverage-parsers/cobertura.d.ts.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/cobertura.js +139 -0
- package/dist/pipeline/phases/coverage-parsers/cobertura.js.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/coverage-py.d.ts +25 -0
- package/dist/pipeline/phases/coverage-parsers/coverage-py.d.ts.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/coverage-py.js +51 -0
- package/dist/pipeline/phases/coverage-parsers/coverage-py.js.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/jacoco.d.ts +32 -0
- package/dist/pipeline/phases/coverage-parsers/jacoco.d.ts.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/jacoco.js +98 -0
- package/dist/pipeline/phases/coverage-parsers/jacoco.js.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/lcov.d.ts +21 -0
- package/dist/pipeline/phases/coverage-parsers/lcov.d.ts.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/lcov.js +104 -0
- package/dist/pipeline/phases/coverage-parsers/lcov.js.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/types.d.ts +27 -0
- package/dist/pipeline/phases/coverage-parsers/types.d.ts.map +1 -0
- package/dist/pipeline/phases/coverage-parsers/types.js +39 -0
- package/dist/pipeline/phases/coverage-parsers/types.js.map +1 -0
- package/dist/pipeline/phases/coverage.d.ts +39 -0
- package/dist/pipeline/phases/coverage.d.ts.map +1 -0
- package/dist/pipeline/phases/coverage.js +154 -0
- package/dist/pipeline/phases/coverage.js.map +1 -0
- package/dist/pipeline/phases/cross-file.d.ts +40 -0
- package/dist/pipeline/phases/cross-file.d.ts.map +1 -0
- package/dist/pipeline/phases/cross-file.js +411 -0
- package/dist/pipeline/phases/cross-file.js.map +1 -0
- package/dist/pipeline/phases/dead-code.d.ts +28 -0
- package/dist/pipeline/phases/dead-code.d.ts.map +1 -0
- package/dist/pipeline/phases/dead-code.js +157 -0
- package/dist/pipeline/phases/dead-code.js.map +1 -0
- package/dist/pipeline/phases/default-set.d.ts +24 -0
- package/dist/pipeline/phases/default-set.d.ts.map +1 -0
- package/dist/pipeline/phases/default-set.js +133 -0
- package/dist/pipeline/phases/default-set.js.map +1 -0
- package/dist/pipeline/phases/dependencies.d.ts +59 -0
- package/dist/pipeline/phases/dependencies.d.ts.map +1 -0
- package/dist/pipeline/phases/dependencies.js +281 -0
- package/dist/pipeline/phases/dependencies.js.map +1 -0
- package/dist/pipeline/phases/embedder-pool.d.ts +31 -0
- package/dist/pipeline/phases/embedder-pool.d.ts.map +1 -0
- package/dist/pipeline/phases/embedder-pool.js +79 -0
- package/dist/pipeline/phases/embedder-pool.js.map +1 -0
- package/dist/pipeline/phases/embedder-worker.d.ts +28 -0
- package/dist/pipeline/phases/embedder-worker.d.ts.map +1 -0
- package/dist/pipeline/phases/embedder-worker.js +43 -0
- package/dist/pipeline/phases/embedder-worker.js.map +1 -0
- package/dist/pipeline/phases/embeddings.d.ts +117 -0
- package/dist/pipeline/phases/embeddings.d.ts.map +1 -0
- package/dist/pipeline/phases/embeddings.js +697 -0
- package/dist/pipeline/phases/embeddings.js.map +1 -0
- package/dist/pipeline/phases/fetches.d.ts +47 -0
- package/dist/pipeline/phases/fetches.d.ts.map +1 -0
- package/dist/pipeline/phases/fetches.js +207 -0
- package/dist/pipeline/phases/fetches.js.map +1 -0
- package/dist/pipeline/phases/incremental-helper.d.ts +96 -0
- package/dist/pipeline/phases/incremental-helper.d.ts.map +1 -0
- package/dist/pipeline/phases/incremental-helper.js +125 -0
- package/dist/pipeline/phases/incremental-helper.js.map +1 -0
- package/dist/pipeline/phases/incremental-scope.d.ts +67 -0
- package/dist/pipeline/phases/incremental-scope.d.ts.map +1 -0
- package/dist/pipeline/phases/incremental-scope.js +225 -0
- package/dist/pipeline/phases/incremental-scope.js.map +1 -0
- package/dist/pipeline/phases/markdown.d.ts +29 -0
- package/dist/pipeline/phases/markdown.d.ts.map +1 -0
- package/dist/pipeline/phases/markdown.js +298 -0
- package/dist/pipeline/phases/markdown.js.map +1 -0
- package/dist/pipeline/phases/mro.d.ts +24 -0
- package/dist/pipeline/phases/mro.d.ts.map +1 -0
- package/dist/pipeline/phases/mro.js +303 -0
- package/dist/pipeline/phases/mro.js.map +1 -0
- package/dist/pipeline/phases/openapi.d.ts +52 -0
- package/dist/pipeline/phases/openapi.d.ts.map +1 -0
- package/dist/pipeline/phases/openapi.js +285 -0
- package/dist/pipeline/phases/openapi.js.map +1 -0
- package/dist/pipeline/phases/orm.d.ts +26 -0
- package/dist/pipeline/phases/orm.d.ts.map +1 -0
- package/dist/pipeline/phases/orm.js +183 -0
- package/dist/pipeline/phases/orm.js.map +1 -0
- package/dist/pipeline/phases/ownership.d.ts +88 -0
- package/dist/pipeline/phases/ownership.d.ts.map +1 -0
- package/dist/pipeline/phases/ownership.js +479 -0
- package/dist/pipeline/phases/ownership.js.map +1 -0
- package/dist/pipeline/phases/parse.d.ts +63 -0
- package/dist/pipeline/phases/parse.d.ts.map +1 -0
- package/dist/pipeline/phases/parse.js +994 -0
- package/dist/pipeline/phases/parse.js.map +1 -0
- package/dist/pipeline/phases/processes.d.ts +47 -0
- package/dist/pipeline/phases/processes.d.ts.map +1 -0
- package/dist/pipeline/phases/processes.js +620 -0
- package/dist/pipeline/phases/processes.js.map +1 -0
- package/dist/pipeline/phases/profile.d.ts +33 -0
- package/dist/pipeline/phases/profile.d.ts.map +1 -0
- package/dist/pipeline/phases/profile.js +91 -0
- package/dist/pipeline/phases/profile.js.map +1 -0
- package/dist/pipeline/phases/repo-node.d.ts +112 -0
- package/dist/pipeline/phases/repo-node.d.ts.map +1 -0
- package/dist/pipeline/phases/repo-node.js +272 -0
- package/dist/pipeline/phases/repo-node.js.map +1 -0
- package/dist/pipeline/phases/risk-snapshot.d.ts +34 -0
- package/dist/pipeline/phases/risk-snapshot.d.ts.map +1 -0
- package/dist/pipeline/phases/risk-snapshot.js +63 -0
- package/dist/pipeline/phases/risk-snapshot.js.map +1 -0
- package/dist/pipeline/phases/routes.d.ts +31 -0
- package/dist/pipeline/phases/routes.d.ts.map +1 -0
- package/dist/pipeline/phases/routes.js +262 -0
- package/dist/pipeline/phases/routes.js.map +1 -0
- package/dist/pipeline/phases/sbom.d.ts +45 -0
- package/dist/pipeline/phases/sbom.d.ts.map +1 -0
- package/dist/pipeline/phases/sbom.js +289 -0
- package/dist/pipeline/phases/sbom.js.map +1 -0
- package/dist/pipeline/phases/scan.d.ts +54 -0
- package/dist/pipeline/phases/scan.d.ts.map +1 -0
- package/dist/pipeline/phases/scan.js +340 -0
- package/dist/pipeline/phases/scan.js.map +1 -0
- package/dist/pipeline/phases/scip-index.d.ts +54 -0
- package/dist/pipeline/phases/scip-index.d.ts.map +1 -0
- package/dist/pipeline/phases/scip-index.js +469 -0
- package/dist/pipeline/phases/scip-index.js.map +1 -0
- package/dist/pipeline/phases/structure.d.ts +21 -0
- package/dist/pipeline/phases/structure.d.ts.map +1 -0
- package/dist/pipeline/phases/structure.js +115 -0
- package/dist/pipeline/phases/structure.js.map +1 -0
- package/dist/pipeline/phases/summarize.d.ts +126 -0
- package/dist/pipeline/phases/summarize.d.ts.map +1 -0
- package/dist/pipeline/phases/summarize.js +401 -0
- package/dist/pipeline/phases/summarize.js.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/branch-divergence.d.ts +42 -0
- package/dist/pipeline/phases/temporal-helpers/branch-divergence.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/branch-divergence.js +96 -0
- package/dist/pipeline/phases/temporal-helpers/branch-divergence.js.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/churn-decay.d.ts +22 -0
- package/dist/pipeline/phases/temporal-helpers/churn-decay.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/churn-decay.js +32 -0
- package/dist/pipeline/phases/temporal-helpers/churn-decay.js.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/conventional-commits.d.ts +21 -0
- package/dist/pipeline/phases/temporal-helpers/conventional-commits.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/conventional-commits.js +37 -0
- package/dist/pipeline/phases/temporal-helpers/conventional-commits.js.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/gini.d.ts +32 -0
- package/dist/pipeline/phases/temporal-helpers/gini.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/gini.js +78 -0
- package/dist/pipeline/phases/temporal-helpers/gini.js.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/revert-detect.d.ts +14 -0
- package/dist/pipeline/phases/temporal-helpers/revert-detect.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/revert-detect.js +25 -0
- package/dist/pipeline/phases/temporal-helpers/revert-detect.js.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/test-pair.d.ts +18 -0
- package/dist/pipeline/phases/temporal-helpers/test-pair.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal-helpers/test-pair.js +119 -0
- package/dist/pipeline/phases/temporal-helpers/test-pair.js.map +1 -0
- package/dist/pipeline/phases/temporal.d.ts +65 -0
- package/dist/pipeline/phases/temporal.d.ts.map +1 -0
- package/dist/pipeline/phases/temporal.js +621 -0
- package/dist/pipeline/phases/temporal.js.map +1 -0
- package/dist/pipeline/phases/tools.d.ts +21 -0
- package/dist/pipeline/phases/tools.d.ts.map +1 -0
- package/dist/pipeline/phases/tools.js +118 -0
- package/dist/pipeline/phases/tools.js.map +1 -0
- package/dist/pipeline/profile-detectors/api-contracts.d.ts +18 -0
- package/dist/pipeline/profile-detectors/api-contracts.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/api-contracts.js +78 -0
- package/dist/pipeline/profile-detectors/api-contracts.js.map +1 -0
- package/dist/pipeline/profile-detectors/framework-detector.d.ts +11 -0
- package/dist/pipeline/profile-detectors/framework-detector.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/framework-detector.js +11 -0
- package/dist/pipeline/profile-detectors/framework-detector.js.map +1 -0
- package/dist/pipeline/profile-detectors/frameworks-catalog.d.ts +7 -0
- package/dist/pipeline/profile-detectors/frameworks-catalog.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/frameworks-catalog.js +7 -0
- package/dist/pipeline/profile-detectors/frameworks-catalog.js.map +1 -0
- package/dist/pipeline/profile-detectors/frameworks.d.ts +7 -0
- package/dist/pipeline/profile-detectors/frameworks.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/frameworks.js +7 -0
- package/dist/pipeline/profile-detectors/frameworks.js.map +1 -0
- package/dist/pipeline/profile-detectors/iac.d.ts +22 -0
- package/dist/pipeline/profile-detectors/iac.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/iac.js +97 -0
- package/dist/pipeline/profile-detectors/iac.js.map +1 -0
- package/dist/pipeline/profile-detectors/languages.d.ts +18 -0
- package/dist/pipeline/profile-detectors/languages.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/languages.js +60 -0
- package/dist/pipeline/profile-detectors/languages.js.map +1 -0
- package/dist/pipeline/profile-detectors/manifests.d.ts +7 -0
- package/dist/pipeline/profile-detectors/manifests.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/manifests.js +7 -0
- package/dist/pipeline/profile-detectors/manifests.js.map +1 -0
- package/dist/pipeline/profile-detectors/src-dirs.d.ts +17 -0
- package/dist/pipeline/profile-detectors/src-dirs.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/src-dirs.js +89 -0
- package/dist/pipeline/profile-detectors/src-dirs.js.map +1 -0
- package/dist/pipeline/profile-detectors/variant-detectors.d.ts +7 -0
- package/dist/pipeline/profile-detectors/variant-detectors.d.ts.map +1 -0
- package/dist/pipeline/profile-detectors/variant-detectors.js +7 -0
- package/dist/pipeline/profile-detectors/variant-detectors.js.map +1 -0
- package/dist/pipeline/runner.d.ts +54 -0
- package/dist/pipeline/runner.d.ts.map +1 -0
- package/dist/pipeline/runner.js +247 -0
- package/dist/pipeline/runner.js.map +1 -0
- package/dist/pipeline/types.d.ts +235 -0
- package/dist/pipeline/types.d.ts.map +1 -0
- package/dist/pipeline/types.js +15 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/providers/c.d.ts +3 -0
- package/dist/providers/c.d.ts.map +1 -0
- package/dist/providers/c.js +162 -0
- package/dist/providers/c.js.map +1 -0
- package/dist/providers/cobol.d.ts +19 -0
- package/dist/providers/cobol.d.ts.map +1 -0
- package/dist/providers/cobol.js +44 -0
- package/dist/providers/cobol.js.map +1 -0
- package/dist/providers/cpp.d.ts +3 -0
- package/dist/providers/cpp.d.ts.map +1 -0
- package/dist/providers/cpp.js +200 -0
- package/dist/providers/cpp.js.map +1 -0
- package/dist/providers/csharp.d.ts +3 -0
- package/dist/providers/csharp.d.ts.map +1 -0
- package/dist/providers/csharp.js +292 -0
- package/dist/providers/csharp.js.map +1 -0
- package/dist/providers/dart.d.ts +3 -0
- package/dist/providers/dart.d.ts.map +1 -0
- package/dist/providers/dart.js +214 -0
- package/dist/providers/dart.js.map +1 -0
- package/dist/providers/definition-ids.d.ts +18 -0
- package/dist/providers/definition-ids.d.ts.map +1 -0
- package/dist/providers/definition-ids.js +23 -0
- package/dist/providers/definition-ids.js.map +1 -0
- package/dist/providers/extract-helpers.d.ts +60 -0
- package/dist/providers/extract-helpers.d.ts.map +1 -0
- package/dist/providers/extract-helpers.js +296 -0
- package/dist/providers/extract-helpers.js.map +1 -0
- package/dist/providers/extraction-types.d.ts +85 -0
- package/dist/providers/extraction-types.d.ts.map +1 -0
- package/dist/providers/extraction-types.js +13 -0
- package/dist/providers/extraction-types.js.map +1 -0
- package/dist/providers/go.d.ts +3 -0
- package/dist/providers/go.d.ts.map +1 -0
- package/dist/providers/go.js +359 -0
- package/dist/providers/go.js.map +1 -0
- package/dist/providers/http-detect.d.ts +44 -0
- package/dist/providers/http-detect.d.ts.map +1 -0
- package/dist/providers/http-detect.js +307 -0
- package/dist/providers/http-detect.js.map +1 -0
- package/dist/providers/index.d.ts +38 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +33 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/java.d.ts +3 -0
- package/dist/providers/java.d.ts.map +1 -0
- package/dist/providers/java.js +259 -0
- package/dist/providers/java.js.map +1 -0
- package/dist/providers/javascript.d.ts +3 -0
- package/dist/providers/javascript.d.ts.map +1 -0
- package/dist/providers/javascript.js +139 -0
- package/dist/providers/javascript.js.map +1 -0
- package/dist/providers/kotlin.d.ts +3 -0
- package/dist/providers/kotlin.d.ts.map +1 -0
- package/dist/providers/kotlin.js +175 -0
- package/dist/providers/kotlin.js.map +1 -0
- package/dist/providers/php.d.ts +3 -0
- package/dist/providers/php.d.ts.map +1 -0
- package/dist/providers/php.js +218 -0
- package/dist/providers/php.js.map +1 -0
- package/dist/providers/python-accesses.d.ts +9 -0
- package/dist/providers/python-accesses.d.ts.map +1 -0
- package/dist/providers/python-accesses.js +22 -0
- package/dist/providers/python-accesses.js.map +1 -0
- package/dist/providers/python.d.ts +3 -0
- package/dist/providers/python.d.ts.map +1 -0
- package/dist/providers/python.js +323 -0
- package/dist/providers/python.js.map +1 -0
- package/dist/providers/registry.d.ts +4 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +46 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/resolution/c3.d.ts +6 -0
- package/dist/providers/resolution/c3.d.ts.map +1 -0
- package/dist/providers/resolution/c3.js +76 -0
- package/dist/providers/resolution/c3.js.map +1 -0
- package/dist/providers/resolution/context.d.ts +38 -0
- package/dist/providers/resolution/context.d.ts.map +1 -0
- package/dist/providers/resolution/context.js +45 -0
- package/dist/providers/resolution/context.js.map +1 -0
- package/dist/providers/resolution/first-wins.d.ts +3 -0
- package/dist/providers/resolution/first-wins.d.ts.map +1 -0
- package/dist/providers/resolution/first-wins.js +27 -0
- package/dist/providers/resolution/first-wins.js.map +1 -0
- package/dist/providers/resolution/mro.d.ts +16 -0
- package/dist/providers/resolution/mro.d.ts.map +1 -0
- package/dist/providers/resolution/mro.js +14 -0
- package/dist/providers/resolution/mro.js.map +1 -0
- package/dist/providers/resolution/none.d.ts +3 -0
- package/dist/providers/resolution/none.d.ts.map +1 -0
- package/dist/providers/resolution/none.js +11 -0
- package/dist/providers/resolution/none.js.map +1 -0
- package/dist/providers/resolution/python-all-filter.d.ts +25 -0
- package/dist/providers/resolution/python-all-filter.d.ts.map +1 -0
- package/dist/providers/resolution/python-all-filter.js +64 -0
- package/dist/providers/resolution/python-all-filter.js.map +1 -0
- package/dist/providers/resolution/resolver-strategy.d.ts +42 -0
- package/dist/providers/resolution/resolver-strategy.d.ts.map +1 -0
- package/dist/providers/resolution/resolver-strategy.js +50 -0
- package/dist/providers/resolution/resolver-strategy.js.map +1 -0
- package/dist/providers/resolution/single-inheritance.d.ts +3 -0
- package/dist/providers/resolution/single-inheritance.d.ts.map +1 -0
- package/dist/providers/resolution/single-inheritance.js +21 -0
- package/dist/providers/resolution/single-inheritance.js.map +1 -0
- package/dist/providers/resolution/stack-graphs/__fixtures__/mock-tree.d.ts +16 -0
- package/dist/providers/resolution/stack-graphs/__fixtures__/mock-tree.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs/__fixtures__/mock-tree.js +50 -0
- package/dist/providers/resolution/stack-graphs/__fixtures__/mock-tree.js.map +1 -0
- package/dist/providers/resolution/stack-graphs/glue.d.ts +15 -0
- package/dist/providers/resolution/stack-graphs/glue.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs/glue.js +44 -0
- package/dist/providers/resolution/stack-graphs/glue.js.map +1 -0
- package/dist/providers/resolution/stack-graphs/node-edge-builder.d.ts +30 -0
- package/dist/providers/resolution/stack-graphs/node-edge-builder.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs/node-edge-builder.js +366 -0
- package/dist/providers/resolution/stack-graphs/node-edge-builder.js.map +1 -0
- package/dist/providers/resolution/stack-graphs/partial-path-engine.d.ts +9 -0
- package/dist/providers/resolution/stack-graphs/partial-path-engine.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs/partial-path-engine.js +152 -0
- package/dist/providers/resolution/stack-graphs/partial-path-engine.js.map +1 -0
- package/dist/providers/resolution/stack-graphs/rule-parser.d.ts +11 -0
- package/dist/providers/resolution/stack-graphs/rule-parser.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs/rule-parser.js +247 -0
- package/dist/providers/resolution/stack-graphs/rule-parser.js.map +1 -0
- package/dist/providers/resolution/stack-graphs/types.d.ts +93 -0
- package/dist/providers/resolution/stack-graphs/types.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs/types.js +11 -0
- package/dist/providers/resolution/stack-graphs/types.js.map +1 -0
- package/dist/providers/resolution/stack-graphs-python.d.ts +27 -0
- package/dist/providers/resolution/stack-graphs-python.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs-python.js +104 -0
- package/dist/providers/resolution/stack-graphs-python.js.map +1 -0
- package/dist/providers/resolution/stack-graphs-ts.d.ts +134 -0
- package/dist/providers/resolution/stack-graphs-ts.d.ts.map +1 -0
- package/dist/providers/resolution/stack-graphs-ts.js +372 -0
- package/dist/providers/resolution/stack-graphs-ts.js.map +1 -0
- package/dist/providers/ruby.d.ts +3 -0
- package/dist/providers/ruby.d.ts.map +1 -0
- package/dist/providers/ruby.js +259 -0
- package/dist/providers/ruby.js.map +1 -0
- package/dist/providers/rust.d.ts +3 -0
- package/dist/providers/rust.d.ts.map +1 -0
- package/dist/providers/rust.js +318 -0
- package/dist/providers/rust.js.map +1 -0
- package/dist/providers/swift.d.ts +3 -0
- package/dist/providers/swift.d.ts.map +1 -0
- package/dist/providers/swift.js +177 -0
- package/dist/providers/swift.js.map +1 -0
- package/dist/providers/test-helpers.d.ts +24 -0
- package/dist/providers/test-helpers.d.ts.map +1 -0
- package/dist/providers/test-helpers.js +33 -0
- package/dist/providers/test-helpers.js.map +1 -0
- package/dist/providers/ts-shared.d.ts +30 -0
- package/dist/providers/ts-shared.d.ts.map +1 -0
- package/dist/providers/ts-shared.js +328 -0
- package/dist/providers/ts-shared.js.map +1 -0
- package/dist/providers/tsx.d.ts +7 -0
- package/dist/providers/tsx.d.ts.map +1 -0
- package/dist/providers/tsx.js +79 -0
- package/dist/providers/tsx.js.map +1 -0
- package/dist/providers/types.d.ts +166 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +7 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/providers/typescript-family-accesses.d.ts +14 -0
- package/dist/providers/typescript-family-accesses.d.ts.map +1 -0
- package/dist/providers/typescript-family-accesses.js +27 -0
- package/dist/providers/typescript-family-accesses.js.map +1 -0
- package/dist/providers/typescript.d.ts +9 -0
- package/dist/providers/typescript.d.ts.map +1 -0
- package/dist/providers/typescript.js +84 -0
- package/dist/providers/typescript.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared TypeScript/TSX extraction logic.
|
|
3
|
+
*
|
|
4
|
+
* Both `.ts` and `.tsx` files share grammar semantics for imports, classes,
|
|
5
|
+
* interfaces, and type aliases — the only difference is JSX parsing, which
|
|
6
|
+
* the parse worker handles by selecting the `tsx` grammar. So both providers
|
|
7
|
+
* delegate to the functions in this file.
|
|
8
|
+
*/
|
|
9
|
+
import { getLine, innermostEnclosingDef, isInside, pairDefinitionsWithNames, splitNamedImports, stripComments, } from "./extract-helpers.js";
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Definitions
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
const TS_DEF_KIND_MAP = {
|
|
14
|
+
"definition.class": "Class",
|
|
15
|
+
"definition.interface": "Interface",
|
|
16
|
+
"definition.function": "Function",
|
|
17
|
+
"definition.method": "Method",
|
|
18
|
+
"definition.type": "TypeAlias",
|
|
19
|
+
"definition.constant": "Const",
|
|
20
|
+
"definition.module": "Namespace",
|
|
21
|
+
};
|
|
22
|
+
export function extractTsDefinitions(input) {
|
|
23
|
+
const { filePath, captures, sourceText } = input;
|
|
24
|
+
const paired = pairDefinitionsWithNames(captures);
|
|
25
|
+
const defCaptures = captures.filter((c) => c.tag.startsWith("definition."));
|
|
26
|
+
const out = [];
|
|
27
|
+
for (const { def, name } of paired) {
|
|
28
|
+
const kind = TS_DEF_KIND_MAP[def.tag];
|
|
29
|
+
if (kind === undefined)
|
|
30
|
+
continue;
|
|
31
|
+
// Derive owner for nested definitions (e.g. methods inside a class).
|
|
32
|
+
const ownerDef = innermostEnclosingDef(def, defCaptures);
|
|
33
|
+
let owner;
|
|
34
|
+
if (ownerDef !== undefined) {
|
|
35
|
+
const ownerPaired = paired.find((p) => p.def === ownerDef);
|
|
36
|
+
if (ownerPaired !== undefined)
|
|
37
|
+
owner = ownerPaired.name.text;
|
|
38
|
+
}
|
|
39
|
+
const qualifiedName = owner !== undefined ? `${owner}.${name.text}` : name.text;
|
|
40
|
+
// Use the header line for export/declaration analysis.
|
|
41
|
+
const headerLine = getLine(sourceText, def.startLine);
|
|
42
|
+
const exported = isTsDefExported(headerLine, kind, ownerDef !== undefined);
|
|
43
|
+
const rec = {
|
|
44
|
+
kind,
|
|
45
|
+
name: name.text,
|
|
46
|
+
qualifiedName,
|
|
47
|
+
filePath,
|
|
48
|
+
startLine: def.startLine,
|
|
49
|
+
endLine: def.endLine,
|
|
50
|
+
isExported: exported,
|
|
51
|
+
...(owner !== undefined ? { owner } : {}),
|
|
52
|
+
...(kind === "Const" ? { isConst: /\bconst\b/.test(headerLine) } : {}),
|
|
53
|
+
};
|
|
54
|
+
out.push(rec);
|
|
55
|
+
}
|
|
56
|
+
return out;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* TS/JS export detection. A declaration is exported when the header line
|
|
60
|
+
* contains an `export` keyword. For class members the parent's export state
|
|
61
|
+
* controls visibility — downstream phases may re-check via `isExported()`.
|
|
62
|
+
*/
|
|
63
|
+
function isTsDefExported(headerLine, _kind, isNested) {
|
|
64
|
+
if (isNested) {
|
|
65
|
+
// Method/field visibility is governed by its class, not the member line.
|
|
66
|
+
// Treat as exported when `public` or no explicit modifier (TS default).
|
|
67
|
+
if (/\bprivate\b/.test(headerLine) || /\bprotected\b/.test(headerLine))
|
|
68
|
+
return false;
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
return /\bexport\b/.test(headerLine);
|
|
72
|
+
}
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
// Calls
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
export function extractTsCalls(input) {
|
|
77
|
+
const { filePath, captures, definitions } = input;
|
|
78
|
+
const defCaptures = captures.filter((c) => c.tag.startsWith("definition."));
|
|
79
|
+
const callRefs = captures.filter((c) => c.tag === "reference.call");
|
|
80
|
+
const out = [];
|
|
81
|
+
for (const ref of callRefs) {
|
|
82
|
+
// The `@name` capture sits inside the `@reference.call` range.
|
|
83
|
+
const innerName = findNameInside(captures, ref);
|
|
84
|
+
const calleeName = innerName?.text ?? ref.text;
|
|
85
|
+
const enclosingDef = innermostEnclosingDef(ref, defCaptures);
|
|
86
|
+
const callerQualifiedName = enclosingDef
|
|
87
|
+
? qualifiedForCapture(enclosingDef, definitions)
|
|
88
|
+
: "<module>";
|
|
89
|
+
// Distinguish `obj.method()` from bare `fn()`: the call capture range
|
|
90
|
+
// starts where the member expression begins, so reading the source line
|
|
91
|
+
// in front of the name lets us infer a receiver.
|
|
92
|
+
const receiver = inferTsReceiver(ref, innerName);
|
|
93
|
+
out.push({
|
|
94
|
+
callerQualifiedName,
|
|
95
|
+
calleeName,
|
|
96
|
+
filePath,
|
|
97
|
+
startLine: ref.startLine,
|
|
98
|
+
...(receiver !== undefined ? { calleeOwner: receiver } : {}),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
function findNameInside(captures, outer) {
|
|
104
|
+
let best;
|
|
105
|
+
for (const c of captures) {
|
|
106
|
+
if (c.tag !== "name")
|
|
107
|
+
continue;
|
|
108
|
+
if (!isInside(c, outer))
|
|
109
|
+
continue;
|
|
110
|
+
if (best === undefined || c.startLine < best.startLine)
|
|
111
|
+
best = c;
|
|
112
|
+
}
|
|
113
|
+
return best;
|
|
114
|
+
}
|
|
115
|
+
function inferTsReceiver(ref, name) {
|
|
116
|
+
if (name === undefined)
|
|
117
|
+
return undefined;
|
|
118
|
+
// `ref.text` is the full call expression source (e.g. `this.foo(x)` or
|
|
119
|
+
// `obj.method(y)`). Everything before the last `.` ahead of the callee
|
|
120
|
+
// name is the receiver expression.
|
|
121
|
+
const text = ref.text;
|
|
122
|
+
const nameText = name.text;
|
|
123
|
+
const idx = text.lastIndexOf(`.${nameText}`);
|
|
124
|
+
if (idx <= 0)
|
|
125
|
+
return undefined;
|
|
126
|
+
const receiverExpr = text.slice(0, idx).trim();
|
|
127
|
+
if (receiverExpr === "")
|
|
128
|
+
return undefined;
|
|
129
|
+
// We only keep simple receivers (identifiers or `this`). Chained
|
|
130
|
+
// expressions like `a.b.c.method()` surface the full chain — keep the
|
|
131
|
+
// full prefix so downstream typing can further resolve it.
|
|
132
|
+
if (receiverExpr === "this")
|
|
133
|
+
return "this";
|
|
134
|
+
// A pure identifier receiver is the most common and useful case.
|
|
135
|
+
if (/^[A-Za-z_$][\w$]*$/.test(receiverExpr))
|
|
136
|
+
return receiverExpr;
|
|
137
|
+
return receiverExpr;
|
|
138
|
+
}
|
|
139
|
+
function qualifiedForCapture(def, definitions) {
|
|
140
|
+
for (const d of definitions) {
|
|
141
|
+
if (d.startLine === def.startLine)
|
|
142
|
+
return d.qualifiedName;
|
|
143
|
+
}
|
|
144
|
+
return "<module>";
|
|
145
|
+
}
|
|
146
|
+
// ---------------------------------------------------------------------------
|
|
147
|
+
// Imports
|
|
148
|
+
// ---------------------------------------------------------------------------
|
|
149
|
+
const IMPORT_NAMED_OR_NS = /^\s*import\s+(.+?)\s+from\s+(['"])([^'"]+)\2\s*;?\s*$/;
|
|
150
|
+
const IMPORT_BARE = /^\s*import\s+(['"])([^'"]+)\1\s*;?\s*$/;
|
|
151
|
+
const DYNAMIC_IMPORT = /import\s*\(\s*(['"])([^'"]+)\1\s*\)/g;
|
|
152
|
+
const REQUIRE_CALL = /require\s*\(\s*(['"])([^'"]+)\1\s*\)/g;
|
|
153
|
+
/**
|
|
154
|
+
* Parse TS/JS import statements. Covers:
|
|
155
|
+
* - `import X from "m"`
|
|
156
|
+
* - `import { a, b as c } from "m"`
|
|
157
|
+
* - `import * as ns from "m"`
|
|
158
|
+
* - `import X, { a } from "m"`
|
|
159
|
+
* - `import "side-effect"`
|
|
160
|
+
* - `import("dyn")` anywhere in source
|
|
161
|
+
* - `require("x")` for CommonJS
|
|
162
|
+
*
|
|
163
|
+
* `.js` / `.ts` / `.mjs` / `.cjs` suffixes are preserved verbatim in `source`;
|
|
164
|
+
* consumers can strip via `provider.preprocessImportPath`.
|
|
165
|
+
*/
|
|
166
|
+
export function extractTsImports(input) {
|
|
167
|
+
const { filePath, sourceText } = input;
|
|
168
|
+
const stripped = stripComments(sourceText);
|
|
169
|
+
const lines = stripped.split("\n");
|
|
170
|
+
const out = [];
|
|
171
|
+
for (const rawLine of lines) {
|
|
172
|
+
const line = rawLine.trim();
|
|
173
|
+
if (line === "" || !line.startsWith("import")) {
|
|
174
|
+
// still handle dynamic imports / requires below via file-level scan
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const bare = IMPORT_BARE.exec(line);
|
|
178
|
+
if (bare !== null) {
|
|
179
|
+
out.push({ filePath, source: bare[2], kind: "named" });
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
const named = IMPORT_NAMED_OR_NS.exec(line);
|
|
183
|
+
if (named === null)
|
|
184
|
+
continue;
|
|
185
|
+
const clause = named[1].trim();
|
|
186
|
+
const source = named[3];
|
|
187
|
+
for (const entry of parseTsImportClause(clause)) {
|
|
188
|
+
out.push({ filePath, source, ...entry });
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Dynamic imports + CommonJS requires: scan the whole stripped source.
|
|
192
|
+
for (const m of stripped.matchAll(DYNAMIC_IMPORT)) {
|
|
193
|
+
out.push({ filePath, source: m[2], kind: "namespace" });
|
|
194
|
+
}
|
|
195
|
+
for (const m of stripped.matchAll(REQUIRE_CALL)) {
|
|
196
|
+
out.push({ filePath, source: m[2], kind: "namespace" });
|
|
197
|
+
}
|
|
198
|
+
return out;
|
|
199
|
+
}
|
|
200
|
+
function parseTsImportClause(clause) {
|
|
201
|
+
const out = [];
|
|
202
|
+
let remaining = clause;
|
|
203
|
+
// `import X` followed optionally by `, { a, b }` or `, * as ns`
|
|
204
|
+
const defaultMatch = /^([A-Za-z_$][\w$]*)(\s*,\s*)?/.exec(remaining);
|
|
205
|
+
if (defaultMatch !== null && !/^[A-Za-z_$][\w$]*\s*\{/.test(remaining)) {
|
|
206
|
+
const defaultName = defaultMatch[1];
|
|
207
|
+
// Must not be `from` (which would indicate no default and we mis-matched).
|
|
208
|
+
if (defaultName !== "from") {
|
|
209
|
+
out.push({ kind: "default", localAlias: defaultName });
|
|
210
|
+
remaining = remaining.slice(defaultMatch[0].length).trim();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// `* as ns`
|
|
214
|
+
const nsMatch = /^\*\s+as\s+([A-Za-z_$][\w$]*)\s*$/.exec(remaining);
|
|
215
|
+
if (nsMatch !== null) {
|
|
216
|
+
out.push({
|
|
217
|
+
kind: "namespace",
|
|
218
|
+
isWildcard: true,
|
|
219
|
+
localAlias: nsMatch[1],
|
|
220
|
+
});
|
|
221
|
+
return out;
|
|
222
|
+
}
|
|
223
|
+
// `{ a, b as c }`
|
|
224
|
+
const namedMatch = /^\{([\s\S]*)\}\s*$/.exec(remaining);
|
|
225
|
+
if (namedMatch !== null) {
|
|
226
|
+
const entries = splitNamedImports(namedMatch[1]);
|
|
227
|
+
const names = entries.map((e) => e.alias ?? e.name);
|
|
228
|
+
if (names.length > 0) {
|
|
229
|
+
out.push({ kind: "named", importedNames: names });
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return out;
|
|
233
|
+
}
|
|
234
|
+
export function preprocessTsImportPath(raw) {
|
|
235
|
+
// Strip `.js` / `.ts` / `.mjs` / `.cjs` / `.tsx` / `.jsx` suffixes so TS
|
|
236
|
+
// import specifiers collapse onto their source-side files during symbol
|
|
237
|
+
// lookup. Only strip when the suffix is a known script extension.
|
|
238
|
+
return raw.replace(/\.(?:js|ts|mjs|cjs|jsx|tsx)$/, "");
|
|
239
|
+
}
|
|
240
|
+
// ---------------------------------------------------------------------------
|
|
241
|
+
// Heritage
|
|
242
|
+
// ---------------------------------------------------------------------------
|
|
243
|
+
export function extractTsHeritage(input) {
|
|
244
|
+
const { filePath, captures, definitions } = input;
|
|
245
|
+
// The unified query emits:
|
|
246
|
+
// `(implements_clause (type_identifier) @name @reference.interface)`
|
|
247
|
+
// for `implements I1, I2`. For `extends Parent` we don't have a dedicated
|
|
248
|
+
// capture — fall back to regex-scanning the class/interface header line.
|
|
249
|
+
const out = [];
|
|
250
|
+
// IMPLEMENTS via capture.
|
|
251
|
+
const implementsRefs = captures.filter((c) => c.tag === "reference.interface");
|
|
252
|
+
for (const ref of implementsRefs) {
|
|
253
|
+
const child = findChildDef(ref, definitions);
|
|
254
|
+
if (child === undefined)
|
|
255
|
+
continue;
|
|
256
|
+
out.push({
|
|
257
|
+
childQualifiedName: child,
|
|
258
|
+
parentName: ref.text,
|
|
259
|
+
filePath,
|
|
260
|
+
relation: "IMPLEMENTS",
|
|
261
|
+
startLine: ref.startLine,
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
// EXTENDS via regex on definition header lines. Covers:
|
|
265
|
+
// `class Foo extends Bar { ... }`
|
|
266
|
+
// `interface Foo extends A, B { ... }`
|
|
267
|
+
for (const def of definitions) {
|
|
268
|
+
if (def.kind !== "Class" && def.kind !== "Interface")
|
|
269
|
+
continue;
|
|
270
|
+
const headerLine = getLine(input.captures[0]?.text ?? "", 0); // dummy; replaced below
|
|
271
|
+
const rawLine = readHeaderFromCaptures(input, def.startLine);
|
|
272
|
+
const extendsMatch = /extends\s+([^\s{]+(?:\s*,\s*[^\s{]+)*)/.exec(rawLine ?? headerLine);
|
|
273
|
+
if (extendsMatch === null)
|
|
274
|
+
continue;
|
|
275
|
+
const list = extendsMatch[1]
|
|
276
|
+
.split(",")
|
|
277
|
+
.map((s) => s.trim())
|
|
278
|
+
.filter((s) => s.length > 0);
|
|
279
|
+
for (const parent of list) {
|
|
280
|
+
// Strip generic args: `Bar<T>` -> `Bar`.
|
|
281
|
+
const bare = parent.replace(/<.*$/, "").trim();
|
|
282
|
+
if (bare.length === 0)
|
|
283
|
+
continue;
|
|
284
|
+
out.push({
|
|
285
|
+
childQualifiedName: def.qualifiedName,
|
|
286
|
+
parentName: bare,
|
|
287
|
+
filePath,
|
|
288
|
+
relation: "EXTENDS",
|
|
289
|
+
startLine: def.startLine,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return out;
|
|
294
|
+
}
|
|
295
|
+
function readHeaderFromCaptures(input, startLine) {
|
|
296
|
+
// The extract-heritage inputs don't include `sourceText`; we fall back
|
|
297
|
+
// to reconstructing from the largest capture's text. Providers pass the
|
|
298
|
+
// class/interface definition capture whose text starts at startLine.
|
|
299
|
+
for (const c of input.captures) {
|
|
300
|
+
if (c.tag.startsWith("definition.") && c.startLine === startLine) {
|
|
301
|
+
// Return only the first line of the capture text (the header).
|
|
302
|
+
const idx = c.text.indexOf("\n");
|
|
303
|
+
return idx === -1 ? c.text : c.text.slice(0, idx);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return "";
|
|
307
|
+
}
|
|
308
|
+
function findChildDef(ref, definitions) {
|
|
309
|
+
// Walk definitions and find the one whose range contains `ref.startLine`
|
|
310
|
+
// and is a class/interface. Prefer the nearest enclosing one.
|
|
311
|
+
let best;
|
|
312
|
+
for (const d of definitions) {
|
|
313
|
+
if (d.kind !== "Class" && d.kind !== "Interface")
|
|
314
|
+
continue;
|
|
315
|
+
if (ref.startLine < d.startLine || ref.startLine > d.endLine)
|
|
316
|
+
continue;
|
|
317
|
+
if (best === undefined || d.startLine > best.startLine)
|
|
318
|
+
best = d;
|
|
319
|
+
}
|
|
320
|
+
return best?.qualifiedName;
|
|
321
|
+
}
|
|
322
|
+
// ---------------------------------------------------------------------------
|
|
323
|
+
// isExported bridge
|
|
324
|
+
// ---------------------------------------------------------------------------
|
|
325
|
+
export function tsIsExported(def) {
|
|
326
|
+
return def.isExported;
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=ts-shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-shared.js","sourceRoot":"","sources":["../../src/providers/ts-shared.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EACL,OAAO,EACP,qBAAqB,EACrB,QAAQ,EACR,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAe9B,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,eAAe,GAAuC;IAC1D,kBAAkB,EAAE,OAAO;IAC3B,sBAAsB,EAAE,WAAW;IACnC,qBAAqB,EAAE,UAAU;IACjC,mBAAmB,EAAE,QAAQ;IAC7B,iBAAiB,EAAE,WAAW;IAC9B,qBAAqB,EAAE,OAAO;IAC9B,mBAAmB,EAAE,WAAW;CACjC,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAClC,KAA8B;IAE9B,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACjD,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5E,MAAM,GAAG,GAA0B,EAAE,CAAC;IAEtC,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QAEjC,qEAAqE;QACrE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,KAAyB,CAAC;QAC9B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC;YAC3D,IAAI,WAAW,KAAK,SAAS;gBAAE,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/D,CAAC;QAED,MAAM,aAAa,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAEhF,uDAAuD;QACvD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC;QAE3E,MAAM,GAAG,GAAwB;YAC/B,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa;YACb,QAAQ;YACR,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,QAAQ;YACpB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvE,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,UAAkB,EAAE,KAAe,EAAE,QAAiB;IAC7E,IAAI,QAAQ,EAAE,CAAC;QACb,yEAAyE;QACzE,wEAAwE;QACxE,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAAC,KAAwB;IACrD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;IACpE,MAAM,GAAG,GAAoB,EAAE,CAAC;IAEhC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,+DAA+D;QAC/D,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,SAAS,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;QAE/C,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC7D,MAAM,mBAAmB,GAAG,YAAY;YACtC,CAAC,CAAC,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC;YAChD,CAAC,CAAC,UAAU,CAAC;QAEf,sEAAsE;QACtE,wEAAwE;QACxE,iDAAiD;QACjD,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAEjD,GAAG,CAAC,IAAI,CAAC;YACP,mBAAmB;YACnB,UAAU;YACV,QAAQ;YACR,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CACrB,QAAiC,EACjC,KAAmB;IAEnB,IAAI,IAA8B,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM;YAAE,SAAS;QAC/B,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;YAAE,SAAS;QAClC,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;YAAE,IAAI,GAAG,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,GAAiB,EAAE,IAA8B;IACxE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,uEAAuE;IACvE,uEAAuE;IACvE,mCAAmC;IACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC7C,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,YAAY,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1C,iEAAiE;IACjE,sEAAsE;IACtE,2DAA2D;IAC3D,IAAI,YAAY,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3C,iEAAiE;IACjE,IAAI,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC;QAAE,OAAO,YAAY,CAAC;IACjE,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAiB,EACjB,WAA2C;IAE3C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC,aAAa,CAAC;IAC5D,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,kBAAkB,GAAG,uDAAuD,CAAC;AACnF,MAAM,WAAW,GAAG,wCAAwC,CAAC;AAC7D,MAAM,cAAc,GAAG,sCAAsC,CAAC;AAC9D,MAAM,YAAY,GAAG,uCAAuC,CAAC;AAE7D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA0B;IACzD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACvC,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,GAAG,GAAsB,EAAE,CAAC;IAElC,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,oEAAoE;YACpE,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACjE,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAC7B,MAAM,MAAM,GAAI,KAAK,CAAC,CAAC,CAAY,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAW,CAAC;QAElC,KAAK,MAAM,KAAK,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AASD,SAAS,mBAAmB,CAAC,MAAc;IACzC,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,IAAI,SAAS,GAAG,MAAM,CAAC;IAEvB,gEAAgE;IAChE,MAAM,YAAY,GAAG,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrE,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACvE,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAW,CAAC;QAC9C,2EAA2E;QAC3E,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YACvD,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,YAAY;IACZ,MAAM,OAAO,GAAG,mCAAmC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,OAAO,CAAC,CAAC,CAAW;SACjC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,kBAAkB;IAClB,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAW,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,yEAAyE;IACzE,wEAAwE;IACxE,kEAAkE;IAClE,OAAO,GAAG,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,UAAU,iBAAiB,CAAC,KAA2B;IAC3D,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAElD,2BAA2B;IAC3B,uEAAuE;IACvE,0EAA0E;IAC1E,yEAAyE;IAEzE,MAAM,GAAG,GAAwB,EAAE,CAAC;IAEpC,0BAA0B;IAC1B,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC;IAC/E,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,GAAG,CAAC,IAAI,CAAC;YACP,kBAAkB,EAAE,KAAK;YACzB,UAAU,EAAE,GAAG,CAAC,IAAI;YACpB,QAAQ;YACR,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC,CAAC;IACL,CAAC;IAED,wDAAwD;IACxD,oCAAoC;IACpC,yCAAyC;IACzC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,wBAAwB;QACtF,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,wCAAwC,CAAC,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC;QAC1F,IAAI,YAAY,KAAK,IAAI;YAAE,SAAS;QACpC,MAAM,IAAI,GAAI,YAAY,CAAC,CAAC,CAAY;aACrC,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;YAC1B,yCAAyC;YACzC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAChC,GAAG,CAAC,IAAI,CAAC;gBACP,kBAAkB,EAAE,GAAG,CAAC,aAAa;gBACrC,UAAU,EAAE,IAAI;gBAChB,QAAQ;gBACR,QAAQ,EAAE,SAAS;gBACnB,SAAS,EAAE,GAAG,CAAC,SAAS;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA2B,EAAE,SAAiB;IAC5E,uEAAuE;IACvE,wEAAwE;IACxE,qEAAqE;IACrE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjE,+DAA+D;YAC/D,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,YAAY,CACnB,GAA0B,EAC1B,WAA2C;IAE3C,yEAAyE;IACzE,8DAA8D;IAC9D,IAAI,IAAqC,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAC3D,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO;YAAE,SAAS;QACvE,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;YAAE,IAAI,GAAG,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,EAAE,aAAa,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,UAAU,YAAY,CAAC,GAAwB;IACnD,OAAO,GAAG,CAAC,UAAU,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LanguageProvider } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* TSX provider. Same semantics as TypeScript for imports/classes/types;
|
|
4
|
+
* the parse worker already selects the `tsx` grammar for JSX-aware AST.
|
|
5
|
+
*/
|
|
6
|
+
export declare const tsxProvider: LanguageProvider;
|
|
7
|
+
//# sourceMappingURL=tsx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsx.d.ts","sourceRoot":"","sources":["../../src/providers/tsx.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,gBAuEzB,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { detectHttpCallsTsJs } from "./http-detect.js";
|
|
2
|
+
import { extractTsCalls, extractTsDefinitions, extractTsHeritage, extractTsImports, preprocessTsImportPath, tsIsExported, } from "./ts-shared.js";
|
|
3
|
+
import { extractTsFamilyPropertyAccesses } from "./typescript-family-accesses.js";
|
|
4
|
+
/**
|
|
5
|
+
* TSX provider. Same semantics as TypeScript for imports/classes/types;
|
|
6
|
+
* the parse worker already selects the `tsx` grammar for JSX-aware AST.
|
|
7
|
+
*/
|
|
8
|
+
export const tsxProvider = {
|
|
9
|
+
id: "tsx",
|
|
10
|
+
extensions: [".tsx"],
|
|
11
|
+
importSemantics: "named",
|
|
12
|
+
mroStrategy: "first-wins",
|
|
13
|
+
typeConfig: { structural: true, nominal: false, generics: true },
|
|
14
|
+
heritageEdge: "EXTENDS",
|
|
15
|
+
inferImplicitReceiver: () => "this",
|
|
16
|
+
preprocessImportPath: preprocessTsImportPath,
|
|
17
|
+
isExportedIdentifier: (_name, context) => context === "top-level",
|
|
18
|
+
// Shares the TS-family stack-graphs backend — see typescript.ts.
|
|
19
|
+
resolverStrategyName: "stack-graphs",
|
|
20
|
+
complexityDefinitionKinds: [
|
|
21
|
+
"function_declaration",
|
|
22
|
+
"function_expression",
|
|
23
|
+
"arrow_function",
|
|
24
|
+
"method_definition",
|
|
25
|
+
"method_signature",
|
|
26
|
+
"generator_function_declaration",
|
|
27
|
+
"generator_function",
|
|
28
|
+
],
|
|
29
|
+
halsteadOperatorKinds: [
|
|
30
|
+
"+",
|
|
31
|
+
"-",
|
|
32
|
+
"*",
|
|
33
|
+
"/",
|
|
34
|
+
"%",
|
|
35
|
+
"=",
|
|
36
|
+
"==",
|
|
37
|
+
"===",
|
|
38
|
+
"!=",
|
|
39
|
+
"!==",
|
|
40
|
+
"<",
|
|
41
|
+
">",
|
|
42
|
+
"<=",
|
|
43
|
+
">=",
|
|
44
|
+
"&&",
|
|
45
|
+
"||",
|
|
46
|
+
"!",
|
|
47
|
+
"&",
|
|
48
|
+
"|",
|
|
49
|
+
"^",
|
|
50
|
+
"~",
|
|
51
|
+
"<<",
|
|
52
|
+
">>",
|
|
53
|
+
">>>",
|
|
54
|
+
"+=",
|
|
55
|
+
"-=",
|
|
56
|
+
"*=",
|
|
57
|
+
"/=",
|
|
58
|
+
"%=",
|
|
59
|
+
"&=",
|
|
60
|
+
"|=",
|
|
61
|
+
"^=",
|
|
62
|
+
"<<=",
|
|
63
|
+
">>=",
|
|
64
|
+
"?",
|
|
65
|
+
":",
|
|
66
|
+
"??",
|
|
67
|
+
"?.",
|
|
68
|
+
"...",
|
|
69
|
+
"=>",
|
|
70
|
+
],
|
|
71
|
+
extractDefinitions: extractTsDefinitions,
|
|
72
|
+
extractCalls: extractTsCalls,
|
|
73
|
+
extractImports: extractTsImports,
|
|
74
|
+
isExported: (def) => tsIsExported(def),
|
|
75
|
+
extractHeritage: extractTsHeritage,
|
|
76
|
+
detectOutboundHttp: ({ sourceText }) => detectHttpCallsTsJs(sourceText),
|
|
77
|
+
extractPropertyAccesses: extractTsFamilyPropertyAccesses,
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=tsx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsx.js","sourceRoot":"","sources":["../../src/providers/tsx.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAElF;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAqB;IAC3C,EAAE,EAAE,KAAK;IACT,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO;IACxB,WAAW,EAAE,YAAY;IACzB,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAChE,YAAY,EAAE,SAAS;IACvB,qBAAqB,EAAE,GAAG,EAAE,CAAC,MAAM;IACnC,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,WAAW;IACjE,iEAAiE;IACjE,oBAAoB,EAAE,cAAc;IACpC,yBAAyB,EAAE;QACzB,sBAAsB;QACtB,qBAAqB;QACrB,gBAAgB;QAChB,mBAAmB;QACnB,kBAAkB;QAClB,gCAAgC;QAChC,oBAAoB;KACrB;IACD,qBAAqB,EAAE;QACrB,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,KAAK;QACL,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,KAAK;QACL,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,IAAI;KACL;IAED,kBAAkB,EAAE,oBAAoB;IACxC,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,UAAU,EAAE,CAAC,GAAwB,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC;IAC3D,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC;IACvE,uBAAuB,EAAE,+BAA+B;CACzD,CAAC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import type { LanguageId } from "@opencodehub/core-types";
|
|
2
|
+
import type { ParseCapture } from "../parse/types.js";
|
|
3
|
+
import type { ExtractedCall, ExtractedDefinition, ExtractedHeritage, ExtractedImport, PropertyAccess } from "./extraction-types.js";
|
|
4
|
+
export type { LanguageId } from "@opencodehub/core-types";
|
|
5
|
+
/**
|
|
6
|
+
* Strategy used to linearize a class's method resolution order.
|
|
7
|
+
* - `c3`: Python / Dylan — full C3 linearization, raises on ambiguity.
|
|
8
|
+
* - `first-wins`: TypeScript / JavaScript / Rust — left-to-right source order.
|
|
9
|
+
* - `single-inheritance`: Java / C# / Kotlin — single `extends` chain.
|
|
10
|
+
* - `none`: Go and similar — no traditional inheritance walk.
|
|
11
|
+
*/
|
|
12
|
+
export type MroStrategyName = "c3" | "first-wins" | "single-inheritance" | "none";
|
|
13
|
+
/**
|
|
14
|
+
* Shape of how the language expresses module-to-module imports.
|
|
15
|
+
* - `named`: `import { foo } from "bar";` (TS/JS/Java/C#/Rust).
|
|
16
|
+
* - `namespace`: `import mod` / `from mod import x` (Python).
|
|
17
|
+
* - `package-wildcard`: `import "fmt"` pulls the whole package symbol set (Go).
|
|
18
|
+
*/
|
|
19
|
+
export type ImportSemantics = "named" | "namespace" | "package-wildcard";
|
|
20
|
+
export interface TypeExtractionConfig {
|
|
21
|
+
/** Structural typing (TS interfaces, Python duck typing). */
|
|
22
|
+
readonly structural: boolean;
|
|
23
|
+
/** Nominal typing (Java / C# / Rust / Go). */
|
|
24
|
+
readonly nominal: boolean;
|
|
25
|
+
/** Language has generics / parametric polymorphism. */
|
|
26
|
+
readonly generics: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** Inputs to {@link LanguageProvider.extractDefinitions}. */
|
|
29
|
+
export interface ExtractDefinitionsInput {
|
|
30
|
+
readonly filePath: string;
|
|
31
|
+
readonly captures: readonly ParseCapture[];
|
|
32
|
+
readonly sourceText: string;
|
|
33
|
+
}
|
|
34
|
+
/** Inputs to {@link LanguageProvider.extractCalls}. */
|
|
35
|
+
export interface ExtractCallsInput {
|
|
36
|
+
readonly filePath: string;
|
|
37
|
+
readonly captures: readonly ParseCapture[];
|
|
38
|
+
readonly definitions: readonly ExtractedDefinition[];
|
|
39
|
+
}
|
|
40
|
+
/** Inputs to {@link LanguageProvider.extractImports}. */
|
|
41
|
+
export interface ExtractImportsInput {
|
|
42
|
+
readonly filePath: string;
|
|
43
|
+
readonly sourceText: string;
|
|
44
|
+
}
|
|
45
|
+
/** Inputs to {@link LanguageProvider.extractHeritage}. */
|
|
46
|
+
export interface ExtractHeritageInput {
|
|
47
|
+
readonly filePath: string;
|
|
48
|
+
readonly captures: readonly ParseCapture[];
|
|
49
|
+
readonly definitions: readonly ExtractedDefinition[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* An outbound HTTP call site detected statically from source.
|
|
53
|
+
*
|
|
54
|
+
* `urlTemplate` preserves the literal URL or template (e.g. `"/users/:id"`,
|
|
55
|
+
* `"https://api.example.com/users/{id}"`). Downstream phases normalize path
|
|
56
|
+
* templates so `{id}` and `:id` hash to the same route target.
|
|
57
|
+
*/
|
|
58
|
+
export interface HttpCall {
|
|
59
|
+
readonly method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS" | "TRACE";
|
|
60
|
+
readonly urlTemplate: string;
|
|
61
|
+
readonly startLine: number;
|
|
62
|
+
readonly endLine: number;
|
|
63
|
+
/** Client library: `fetch`, `axios`, `requests`, `httpx`, `restTemplate`, `okhttp`, etc. */
|
|
64
|
+
readonly clientLibrary: string;
|
|
65
|
+
}
|
|
66
|
+
/** Inputs to {@link LanguageProvider.detectOutboundHttp}. */
|
|
67
|
+
export interface DetectOutboundHttpInput {
|
|
68
|
+
readonly filePath: string;
|
|
69
|
+
readonly captures: readonly ParseCapture[];
|
|
70
|
+
readonly sourceText: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Inputs to {@link LanguageProvider.extractPropertyAccesses}. Per-file bundle
|
|
74
|
+
* feeding the ACCESSES-edge walker. `definitions` are the extract output of
|
|
75
|
+
* this same file so the walker can attach every access to an enclosing
|
|
76
|
+
* symbol by (startLine <= line <= endLine) containment.
|
|
77
|
+
*/
|
|
78
|
+
export interface ExtractionContext {
|
|
79
|
+
readonly filePath: string;
|
|
80
|
+
readonly captures: readonly ParseCapture[];
|
|
81
|
+
readonly sourceText: string;
|
|
82
|
+
readonly definitions: readonly ExtractedDefinition[];
|
|
83
|
+
}
|
|
84
|
+
export interface LanguageProvider {
|
|
85
|
+
readonly id: LanguageId;
|
|
86
|
+
readonly extensions: readonly string[];
|
|
87
|
+
readonly importSemantics: ImportSemantics;
|
|
88
|
+
readonly mroStrategy: MroStrategyName;
|
|
89
|
+
readonly typeConfig: TypeExtractionConfig;
|
|
90
|
+
/**
|
|
91
|
+
* Edge label used to express the type-hierarchy relation. Go has neither
|
|
92
|
+
* extends nor implements, so it is `null`.
|
|
93
|
+
*/
|
|
94
|
+
readonly heritageEdge: "EXTENDS" | "IMPLEMENTS" | null;
|
|
95
|
+
/** Strip `.js` suffix for TS, resolve `__init__.py`, etc. */
|
|
96
|
+
readonly preprocessImportPath?: (raw: string) => string;
|
|
97
|
+
/** Is this identifier exported from its declaration site? */
|
|
98
|
+
readonly isExportedIdentifier?: (name: string, context: "top-level" | "class-member") => boolean;
|
|
99
|
+
/** Name used for the implicit receiver inside a method body. */
|
|
100
|
+
readonly inferImplicitReceiver?: (callerKind: string) => "self" | "this" | undefined;
|
|
101
|
+
/**
|
|
102
|
+
* Optional opt-in for an alternative reference-resolution backend. Unset
|
|
103
|
+
* providers use the three-tier walker (`"three-tier-default"`). Known
|
|
104
|
+
* values map to the registry in `resolution/resolver-strategy.ts`:
|
|
105
|
+
* - `"stack-graphs"` — clean-room stack-graphs evaluator (Python only).
|
|
106
|
+
* Unknown values silently fall back to the default.
|
|
107
|
+
*/
|
|
108
|
+
readonly resolverStrategyName?: string;
|
|
109
|
+
/**
|
|
110
|
+
* Tree-sitter node-type names that start a new function/method/constructor
|
|
111
|
+
* body for complexity counting. The complexity phase dispatches on these;
|
|
112
|
+
* providers without a table are silently skipped by the phase.
|
|
113
|
+
*/
|
|
114
|
+
readonly complexityDefinitionKinds?: readonly string[];
|
|
115
|
+
/**
|
|
116
|
+
* Tree-sitter node-type names that count as Halstead operators. Every other
|
|
117
|
+
* leaf/identifier in the body counts as an operand. Omission disables the
|
|
118
|
+
* Halstead-volume computation for that language (phase emits complexity
|
|
119
|
+
* only).
|
|
120
|
+
*/
|
|
121
|
+
readonly halsteadOperatorKinds?: readonly string[];
|
|
122
|
+
/**
|
|
123
|
+
* Given unified parse captures for a file, emit one record per symbol
|
|
124
|
+
* defined in the file. Qualified names encode nesting (e.g. `Foo.bar`).
|
|
125
|
+
*/
|
|
126
|
+
extractDefinitions(input: ExtractDefinitionsInput): readonly ExtractedDefinition[];
|
|
127
|
+
/**
|
|
128
|
+
* Emit one record per call site. Downstream phases apply 3-tier + MRO
|
|
129
|
+
* resolution; this hook only identifies the callee name plus any
|
|
130
|
+
* inferrable receiver (`this` / `self` / typed prefix).
|
|
131
|
+
*/
|
|
132
|
+
extractCalls(input: ExtractCallsInput): readonly ExtractedCall[];
|
|
133
|
+
/**
|
|
134
|
+
* Parse import statements from source text. Regex-based rather than AST-
|
|
135
|
+
* based because the captures we have today are symbol-oriented; imports
|
|
136
|
+
* add very little parse-cost on top at MVP.
|
|
137
|
+
*/
|
|
138
|
+
extractImports(input: ExtractImportsInput): readonly ExtractedImport[];
|
|
139
|
+
/**
|
|
140
|
+
* Predicate companion to {@link ExtractedDefinition.isExported} — useful
|
|
141
|
+
* when downstream phases want to re-check a bare definition record.
|
|
142
|
+
*/
|
|
143
|
+
isExported(def: ExtractedDefinition): boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Emit inheritance, trait-impl, and interface-implements edges.
|
|
146
|
+
*/
|
|
147
|
+
extractHeritage(input: ExtractHeritageInput): readonly ExtractedHeritage[];
|
|
148
|
+
/**
|
|
149
|
+
* Detect outbound HTTP call sites: `fetch("/api/users")`,
|
|
150
|
+
* `axios.post(url, body)`, `requests.get(url)`, `restTemplate.getForObject(url)`, etc.
|
|
151
|
+
*
|
|
152
|
+
* Optional: providers that do not implement this hook are treated as
|
|
153
|
+
* "no outbound HTTP detection" silently. Return an empty array for
|
|
154
|
+
* languages / client libraries the provider does not recognise.
|
|
155
|
+
*/
|
|
156
|
+
detectOutboundHttp?(input: DetectOutboundHttpInput): readonly HttpCall[];
|
|
157
|
+
/**
|
|
158
|
+
* Emit one {@link PropertyAccess} record per `receiver.property` read or
|
|
159
|
+
* write observed inside a function/method body. Providers that do not
|
|
160
|
+
* implement this hook emit no ACCESSES edges. Returned records must be
|
|
161
|
+
* sorted by `(enclosingSymbolId, propertyName, startLine)` for
|
|
162
|
+
* downstream determinism.
|
|
163
|
+
*/
|
|
164
|
+
extractPropertyAccesses?(input: ExtractionContext): readonly PropertyAccess[];
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Clean-room language-provider types for OpenCodeHub ingestion.
|
|
2
|
+
//
|
|
3
|
+
// `LanguageId` has a single source of truth in `@opencodehub/core-types`;
|
|
4
|
+
// this module re-exports it for providers that still reach for
|
|
5
|
+
// `../providers/types.js`.
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,0EAA0E;AAC1E,+DAA+D;AAC/D,2BAA2B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared property-access extractor for TypeScript / TSX / JavaScript.
|
|
3
|
+
*
|
|
4
|
+
* All three languages use the same member-expression surface syntax and the
|
|
5
|
+
* same assignment operators. This module wires the generic walker in
|
|
6
|
+
* `extract/property-access.ts` to that dialect and converts the walker's
|
|
7
|
+
* output into {@link PropertyAccess} records anchored to the enclosing
|
|
8
|
+
* Function / Method / Constructor's `NodeId`.
|
|
9
|
+
*/
|
|
10
|
+
import type { PropertyAccess } from "./extraction-types.js";
|
|
11
|
+
import type { ExtractionContext } from "./types.js";
|
|
12
|
+
/** Entry point wired into TS, TSX, and JS provider objects. */
|
|
13
|
+
export declare function extractTsFamilyPropertyAccesses(input: ExtractionContext): readonly PropertyAccess[];
|
|
14
|
+
//# sourceMappingURL=typescript-family-accesses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript-family-accesses.d.ts","sourceRoot":"","sources":["../../src/providers/typescript-family-accesses.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAuB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,+DAA+D;AAC/D,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,iBAAiB,GACvB,SAAS,cAAc,EAAE,CAE3B"}
|