@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 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../../src/pipeline/phases/embeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetches phase — emits FETCHES edges from outbound HTTP call sites.
|
|
3
|
+
*
|
|
4
|
+
* Per language-aware scanning:
|
|
5
|
+
* 1. For each scanned file that has a provider implementing
|
|
6
|
+
* `detectOutboundHttp`, re-read the source text (parse captures are
|
|
7
|
+
* not persisted by the parse phase) and run the hook.
|
|
8
|
+
* 2. For each `HttpCall` returned, try to match a local `Route` node by
|
|
9
|
+
* normalized `(method, path)`. When found, emit
|
|
10
|
+
* `FETCHES: enclosingSymbol -> Route` with confidence 0.8.
|
|
11
|
+
* 3. When no local Route matches, emit `FETCHES: enclosingSymbol ->
|
|
12
|
+
* <unresolved-url>` with the urlTemplate stored in `reason`. The
|
|
13
|
+
* synthetic `<unresolved-url>` target is not a real node — it is a
|
|
14
|
+
* string id string that downstream cross-repo tools recognize as
|
|
15
|
+
* "needs producer lookup".
|
|
16
|
+
*
|
|
17
|
+
* Enclosing-symbol resolution:
|
|
18
|
+
* - Walk `definitionsByFile` for the file.
|
|
19
|
+
* - Find the innermost definition whose `[startLine, endLine]` range
|
|
20
|
+
* contains the HttpCall's startLine. Prefer Functions/Methods over
|
|
21
|
+
* Classes for readability.
|
|
22
|
+
* - Fall back to the File node id when no enclosing callable exists.
|
|
23
|
+
*
|
|
24
|
+
* Determinism:
|
|
25
|
+
* - Files iterate in alphabetical order over `scan.files`.
|
|
26
|
+
* - Within a file, detected calls are pre-sorted by
|
|
27
|
+
* (startLine, method, url, clientLibrary).
|
|
28
|
+
* - Resulting FETCHES edges are stable because `KnowledgeGraph.addEdge`
|
|
29
|
+
* dedupes on `(from, type, to, step)`, and we sort the iteration keys.
|
|
30
|
+
*
|
|
31
|
+
* The phase never hits the network.
|
|
32
|
+
*/
|
|
33
|
+
import type { PipelinePhase } from "../types.js";
|
|
34
|
+
export declare const FETCHES_PHASE_NAME: "fetches";
|
|
35
|
+
/**
|
|
36
|
+
* Synthetic target id used when no local Route matches a detected HTTP
|
|
37
|
+
* call. The MCP `group_contracts` tool recognises this prefix and treats
|
|
38
|
+
* the URL template stored in `reason` as the lookup key.
|
|
39
|
+
*/
|
|
40
|
+
export declare const UNRESOLVED_FETCH_TARGET_PREFIX = "fetches:unresolved:";
|
|
41
|
+
export interface FetchesOutput {
|
|
42
|
+
readonly httpCallsDetected: number;
|
|
43
|
+
readonly edgesEmitted: number;
|
|
44
|
+
readonly unresolvedCount: number;
|
|
45
|
+
}
|
|
46
|
+
export declare const fetchesPhase: PipelinePhase<FetchesOutput>;
|
|
47
|
+
//# sourceMappingURL=fetches.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetches.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phases/fetches.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAOH,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAMlE,eAAO,MAAM,kBAAkB,EAAG,SAAkB,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,wBAAwB,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAQD,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,aAAa,CAarD,CAAC"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetches phase — emits FETCHES edges from outbound HTTP call sites.
|
|
3
|
+
*
|
|
4
|
+
* Per language-aware scanning:
|
|
5
|
+
* 1. For each scanned file that has a provider implementing
|
|
6
|
+
* `detectOutboundHttp`, re-read the source text (parse captures are
|
|
7
|
+
* not persisted by the parse phase) and run the hook.
|
|
8
|
+
* 2. For each `HttpCall` returned, try to match a local `Route` node by
|
|
9
|
+
* normalized `(method, path)`. When found, emit
|
|
10
|
+
* `FETCHES: enclosingSymbol -> Route` with confidence 0.8.
|
|
11
|
+
* 3. When no local Route matches, emit `FETCHES: enclosingSymbol ->
|
|
12
|
+
* <unresolved-url>` with the urlTemplate stored in `reason`. The
|
|
13
|
+
* synthetic `<unresolved-url>` target is not a real node — it is a
|
|
14
|
+
* string id string that downstream cross-repo tools recognize as
|
|
15
|
+
* "needs producer lookup".
|
|
16
|
+
*
|
|
17
|
+
* Enclosing-symbol resolution:
|
|
18
|
+
* - Walk `definitionsByFile` for the file.
|
|
19
|
+
* - Find the innermost definition whose `[startLine, endLine]` range
|
|
20
|
+
* contains the HttpCall's startLine. Prefer Functions/Methods over
|
|
21
|
+
* Classes for readability.
|
|
22
|
+
* - Fall back to the File node id when no enclosing callable exists.
|
|
23
|
+
*
|
|
24
|
+
* Determinism:
|
|
25
|
+
* - Files iterate in alphabetical order over `scan.files`.
|
|
26
|
+
* - Within a file, detected calls are pre-sorted by
|
|
27
|
+
* (startLine, method, url, clientLibrary).
|
|
28
|
+
* - Resulting FETCHES edges are stable because `KnowledgeGraph.addEdge`
|
|
29
|
+
* dedupes on `(from, type, to, step)`, and we sort the iteration keys.
|
|
30
|
+
*
|
|
31
|
+
* The phase never hits the network.
|
|
32
|
+
*/
|
|
33
|
+
import { promises as fs } from "node:fs";
|
|
34
|
+
import { makeNodeId } from "@opencodehub/core-types";
|
|
35
|
+
import { getProvider } from "../../providers/registry.js";
|
|
36
|
+
import { PARSE_PHASE_NAME } from "./parse.js";
|
|
37
|
+
import { PROFILE_PHASE_NAME } from "./profile.js";
|
|
38
|
+
import { ROUTES_PHASE_NAME } from "./routes.js";
|
|
39
|
+
import { SCAN_PHASE_NAME } from "./scan.js";
|
|
40
|
+
export const FETCHES_PHASE_NAME = "fetches";
|
|
41
|
+
/**
|
|
42
|
+
* Synthetic target id used when no local Route matches a detected HTTP
|
|
43
|
+
* call. The MCP `group_contracts` tool recognises this prefix and treats
|
|
44
|
+
* the URL template stored in `reason` as the lookup key.
|
|
45
|
+
*/
|
|
46
|
+
export const UNRESOLVED_FETCH_TARGET_PREFIX = "fetches:unresolved:";
|
|
47
|
+
const CALLABLE_KINDS = new Set([
|
|
48
|
+
"Function",
|
|
49
|
+
"Method",
|
|
50
|
+
"Constructor",
|
|
51
|
+
]);
|
|
52
|
+
export const fetchesPhase = {
|
|
53
|
+
name: FETCHES_PHASE_NAME,
|
|
54
|
+
// Depends on parse (for definitionsByFile/symbol boundaries), profile (so
|
|
55
|
+
// framework gating via ProjectProfile can land), and routes (so local
|
|
56
|
+
// Route nodes are already in the graph for local-match resolution).
|
|
57
|
+
deps: [PARSE_PHASE_NAME, PROFILE_PHASE_NAME, ROUTES_PHASE_NAME],
|
|
58
|
+
async run(ctx, deps) {
|
|
59
|
+
const parse = deps.get(PARSE_PHASE_NAME);
|
|
60
|
+
const scan = ctx.phaseOutputs.get(SCAN_PHASE_NAME);
|
|
61
|
+
if (parse === undefined)
|
|
62
|
+
throw new Error("fetches: parse output missing");
|
|
63
|
+
if (scan === undefined)
|
|
64
|
+
throw new Error("fetches: scan output missing");
|
|
65
|
+
return runFetches(ctx, scan, parse);
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
function buildRouteIndex(ctx) {
|
|
69
|
+
const byKey = new Map();
|
|
70
|
+
for (const n of ctx.graph.nodes()) {
|
|
71
|
+
if (n.kind !== "Route")
|
|
72
|
+
continue;
|
|
73
|
+
const route = n;
|
|
74
|
+
if (route.url === undefined)
|
|
75
|
+
continue;
|
|
76
|
+
const method = (route.method ?? "GET").toUpperCase();
|
|
77
|
+
const key = routeKey(method, route.url);
|
|
78
|
+
if (!byKey.has(key))
|
|
79
|
+
byKey.set(key, n.id);
|
|
80
|
+
}
|
|
81
|
+
return { byKey };
|
|
82
|
+
}
|
|
83
|
+
function routeKey(method, url) {
|
|
84
|
+
const normalized = url
|
|
85
|
+
.replace(/:([A-Za-z_][A-Za-z0-9_]*)/g, "{$1}")
|
|
86
|
+
.replace(/\?.*$/, "")
|
|
87
|
+
.replace(/\/+$/, "");
|
|
88
|
+
return `${method.toUpperCase()}\u0000${normalized}`;
|
|
89
|
+
}
|
|
90
|
+
async function runFetches(ctx, scan, parse) {
|
|
91
|
+
const routes = buildRouteIndex(ctx);
|
|
92
|
+
const pending = [];
|
|
93
|
+
let httpCallsDetected = 0;
|
|
94
|
+
// Iterate scanned files in alphabetical order for deterministic emission.
|
|
95
|
+
const candidates = [...scan.files]
|
|
96
|
+
.filter((f) => f.language !== undefined)
|
|
97
|
+
.sort((a, b) => (a.relPath < b.relPath ? -1 : a.relPath > b.relPath ? 1 : 0));
|
|
98
|
+
for (const f of candidates) {
|
|
99
|
+
if (f.language === undefined)
|
|
100
|
+
continue;
|
|
101
|
+
const provider = getProvider(f.language);
|
|
102
|
+
if (provider.detectOutboundHttp === undefined)
|
|
103
|
+
continue;
|
|
104
|
+
let content;
|
|
105
|
+
try {
|
|
106
|
+
const buf = await fs.readFile(f.absPath);
|
|
107
|
+
content = buf.toString("utf8");
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
ctx.onProgress?.({
|
|
111
|
+
phase: FETCHES_PHASE_NAME,
|
|
112
|
+
kind: "warn",
|
|
113
|
+
message: `fetches: cannot read ${f.relPath}: ${err.message}`,
|
|
114
|
+
});
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
const calls = provider.detectOutboundHttp({
|
|
118
|
+
filePath: f.relPath,
|
|
119
|
+
captures: [],
|
|
120
|
+
sourceText: content,
|
|
121
|
+
});
|
|
122
|
+
if (calls.length === 0)
|
|
123
|
+
continue;
|
|
124
|
+
const defs = parse.definitionsByFile.get(f.relPath) ?? [];
|
|
125
|
+
for (const call of calls) {
|
|
126
|
+
httpCallsDetected += 1;
|
|
127
|
+
const from = enclosingSymbolId(defs, call, f.relPath);
|
|
128
|
+
const key = routeKey(call.method, call.urlTemplate);
|
|
129
|
+
const localRoute = routes.byKey.get(key);
|
|
130
|
+
if (localRoute !== undefined) {
|
|
131
|
+
pending.push({
|
|
132
|
+
from,
|
|
133
|
+
to: localRoute,
|
|
134
|
+
method: call.method,
|
|
135
|
+
urlTemplate: call.urlTemplate,
|
|
136
|
+
clientLibrary: call.clientLibrary,
|
|
137
|
+
startLine: call.startLine,
|
|
138
|
+
resolved: true,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const placeholder = `${UNRESOLVED_FETCH_TARGET_PREFIX}${call.method}:${call.urlTemplate}`;
|
|
143
|
+
pending.push({
|
|
144
|
+
from,
|
|
145
|
+
to: placeholder,
|
|
146
|
+
method: call.method,
|
|
147
|
+
urlTemplate: call.urlTemplate,
|
|
148
|
+
clientLibrary: call.clientLibrary,
|
|
149
|
+
startLine: call.startLine,
|
|
150
|
+
resolved: false,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Deterministic sort before emit so two runs produce identical edges.
|
|
156
|
+
pending.sort((a, b) => {
|
|
157
|
+
if (a.from !== b.from)
|
|
158
|
+
return a.from < b.from ? -1 : 1;
|
|
159
|
+
if (a.method !== b.method)
|
|
160
|
+
return a.method < b.method ? -1 : 1;
|
|
161
|
+
if (a.urlTemplate !== b.urlTemplate)
|
|
162
|
+
return a.urlTemplate < b.urlTemplate ? -1 : 1;
|
|
163
|
+
if (a.clientLibrary !== b.clientLibrary)
|
|
164
|
+
return a.clientLibrary < b.clientLibrary ? -1 : 1;
|
|
165
|
+
if (a.startLine !== b.startLine)
|
|
166
|
+
return a.startLine - b.startLine;
|
|
167
|
+
return 0;
|
|
168
|
+
});
|
|
169
|
+
let edgesEmitted = 0;
|
|
170
|
+
let unresolvedCount = 0;
|
|
171
|
+
for (const p of pending) {
|
|
172
|
+
const edge = {
|
|
173
|
+
from: p.from,
|
|
174
|
+
to: p.to,
|
|
175
|
+
type: "FETCHES",
|
|
176
|
+
confidence: p.resolved ? 0.8 : 0.5,
|
|
177
|
+
reason: p.resolved
|
|
178
|
+
? `${p.clientLibrary}:${p.method}:${p.urlTemplate}`
|
|
179
|
+
: `unresolved:${p.clientLibrary}:${p.method}:${p.urlTemplate}`,
|
|
180
|
+
};
|
|
181
|
+
ctx.graph.addEdge(edge);
|
|
182
|
+
edgesEmitted += 1;
|
|
183
|
+
if (!p.resolved)
|
|
184
|
+
unresolvedCount += 1;
|
|
185
|
+
}
|
|
186
|
+
return { httpCallsDetected, edgesEmitted, unresolvedCount };
|
|
187
|
+
}
|
|
188
|
+
function enclosingSymbolId(defs, call, filePath) {
|
|
189
|
+
let best;
|
|
190
|
+
for (const d of defs) {
|
|
191
|
+
if (!CALLABLE_KINDS.has(d.kind))
|
|
192
|
+
continue;
|
|
193
|
+
if (call.startLine < d.startLine || call.startLine > d.endLine)
|
|
194
|
+
continue;
|
|
195
|
+
if (best === undefined || d.startLine > best.startLine)
|
|
196
|
+
best = d;
|
|
197
|
+
}
|
|
198
|
+
if (best === undefined) {
|
|
199
|
+
return makeNodeId("File", filePath, filePath);
|
|
200
|
+
}
|
|
201
|
+
return makeNodeId(best.kind, best.filePath, best.qualifiedName, {
|
|
202
|
+
...(best.parameterCount !== undefined ? { parameterCount: best.parameterCount } : {}),
|
|
203
|
+
...(best.parameterTypes !== undefined ? { parameterTypes: best.parameterTypes } : {}),
|
|
204
|
+
...(best.isConst !== undefined ? { isConst: best.isConst } : {}),
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=fetches.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetches.js","sourceRoot":"","sources":["../../../src/pipeline/phases/fetches.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared incremental-scope consumer helpers.
|
|
3
|
+
*
|
|
4
|
+
* Flips the four expensive post-parse phases — crossFile, mro,
|
|
5
|
+
* communities, processes — from passive to active incremental mode. Each
|
|
6
|
+
* consumer reads {@link IncrementalScopeOutput} from `ctx.phaseOutputs` and
|
|
7
|
+
* asks three questions:
|
|
8
|
+
* 1. Should I recompute at all? (no when mode=incremental AND
|
|
9
|
+
* closureFiles is empty AND there is a prior graph to carry forward).
|
|
10
|
+
* 2. Which files make up the recompute scope? (allFiles when mode=full,
|
|
11
|
+
* closureFiles when mode=incremental).
|
|
12
|
+
* 3. Can I carry forward prior nodes / edges whose anchor is outside the
|
|
13
|
+
* scope? (yes iff `previousGraph.nodes` and `previousGraph.edges`
|
|
14
|
+
* were supplied alongside `options.incrementalFrom`).
|
|
15
|
+
*
|
|
16
|
+
* The answers must be a pure function of (ctx.options.incrementalFrom,
|
|
17
|
+
* ctx.phaseOutputs["incremental-scope"]) so a subsequent full run at the
|
|
18
|
+
* same commit produces a byte-identical graph hash. That determinism gate
|
|
19
|
+
* is exercised in `packages/ingestion/src/pipeline/incremental-determinism.test.ts`.
|
|
20
|
+
*/
|
|
21
|
+
import type { CodeRelation, GraphNode } from "@opencodehub/core-types";
|
|
22
|
+
import type { PipelineContext, PreviousGraph } from "../types.js";
|
|
23
|
+
import { type IncrementalScopeOutput } from "./incremental-scope.js";
|
|
24
|
+
/**
|
|
25
|
+
* Snapshot passed from incremental phases into their own runners. `active`
|
|
26
|
+
* means "run incremental carry-forward logic"; when `false` the phase must
|
|
27
|
+
* execute its full-graph codepath.
|
|
28
|
+
*/
|
|
29
|
+
export interface IncrementalScopeView {
|
|
30
|
+
/**
|
|
31
|
+
* When true the phase should carry forward non-closure work from
|
|
32
|
+
* `previousGraph` and only recompute for closure files. When false the
|
|
33
|
+
* phase runs the full-graph path exactly as it did in v1.0.
|
|
34
|
+
*/
|
|
35
|
+
readonly active: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Closure file set, as an immutable Set for O(1) membership checks.
|
|
38
|
+
* Meaningful only when `active === true`.
|
|
39
|
+
*/
|
|
40
|
+
readonly closure: ReadonlySet<string>;
|
|
41
|
+
/**
|
|
42
|
+
* Raw output of the incremental-scope phase. Exposed for phases that want
|
|
43
|
+
* to log mode / ratio without re-reading it themselves.
|
|
44
|
+
*/
|
|
45
|
+
readonly scope: IncrementalScopeOutput | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Prior-run graph snapshot. Present only when `options.incrementalFrom`
|
|
48
|
+
* was supplied; its `nodes`/`edges` fields drive carry-forward. Phases
|
|
49
|
+
* still receive the projection even when `active === false` (e.g. for
|
|
50
|
+
* diagnostics) — they just must not consult it.
|
|
51
|
+
*/
|
|
52
|
+
readonly previousGraph: PreviousGraph | undefined;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Resolve the incremental view from a phase's context.
|
|
56
|
+
*
|
|
57
|
+
* Active mode requires all three conditions:
|
|
58
|
+
* - `options.incrementalFrom` was supplied by the caller,
|
|
59
|
+
* - the incremental-scope phase ran and emitted `mode="incremental"`,
|
|
60
|
+
* - the carry-forward projection (`nodes` + `edges`) is present on the
|
|
61
|
+
* `PreviousGraph`.
|
|
62
|
+
*
|
|
63
|
+
* When any condition is false the view returns `active: false` and the
|
|
64
|
+
* caller should fall through to the full-graph path. The
|
|
65
|
+
* incremental-scope phase's own 30% safety valve already flips `mode` to
|
|
66
|
+
* `"full"` when the closure is too big, so consumers need not re-check the
|
|
67
|
+
* ratio themselves.
|
|
68
|
+
*/
|
|
69
|
+
export declare function resolveIncrementalView(ctx: PipelineContext): IncrementalScopeView;
|
|
70
|
+
/**
|
|
71
|
+
* A node "belongs" to the closure when its defining file sits in the
|
|
72
|
+
* closure set, OR when its `filePath` is the sentinel "<global>" used for
|
|
73
|
+
* Community / process-like nodes that have no natural file anchor. For
|
|
74
|
+
* `<global>` we treat the node as closure when ANY of its referenced
|
|
75
|
+
* members are closure files (resolved via the community's MEMBER_OF edges
|
|
76
|
+
* at carry-forward time — the helpers below surface this as "global" and
|
|
77
|
+
* let the phase decide).
|
|
78
|
+
*/
|
|
79
|
+
export declare function isNodeInClosure(node: GraphNode, closure: ReadonlySet<string>): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Partition the prior graph's edges into carry-forward candidates + in-
|
|
82
|
+
* scope edges. Edges are carried forward when BOTH endpoints map to a
|
|
83
|
+
* path outside the closure OR to a prior node with `filePath` outside the
|
|
84
|
+
* closure. The caller provides a resolver from node id → filePath built
|
|
85
|
+
* over the prior node set; ids the resolver cannot place are conservative-
|
|
86
|
+
* dropped from the carry-forward set.
|
|
87
|
+
*/
|
|
88
|
+
export declare function partitionPriorEdges(priorEdges: readonly CodeRelation[], filePathByNodeId: ReadonlyMap<string, string>, closure: ReadonlySet<string>, edgeTypes: ReadonlySet<string>): readonly CodeRelation[];
|
|
89
|
+
/**
|
|
90
|
+
* Build a (nodeId → filePath) lookup from a prior-graph node snapshot.
|
|
91
|
+
* The map participates in partitioning prior edges; nodes missing from
|
|
92
|
+
* the map force their attached edges into the "recompute" bucket (safe
|
|
93
|
+
* default — a false recompute only trades performance, never correctness).
|
|
94
|
+
*/
|
|
95
|
+
export declare function buildFilePathLookup(priorNodes: readonly GraphNode[]): ReadonlyMap<string, string>;
|
|
96
|
+
//# sourceMappingURL=incremental-helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incremental-helper.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phases/incremental-helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAgC,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEnG;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACnD;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;CACnD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,eAAe,GAAG,oBAAoB,CAqCjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAGtF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,SAAS,YAAY,EAAE,EACnC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7C,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAC5B,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAC7B,SAAS,YAAY,EAAE,CAczB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAIjG"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared incremental-scope consumer helpers.
|
|
3
|
+
*
|
|
4
|
+
* Flips the four expensive post-parse phases — crossFile, mro,
|
|
5
|
+
* communities, processes — from passive to active incremental mode. Each
|
|
6
|
+
* consumer reads {@link IncrementalScopeOutput} from `ctx.phaseOutputs` and
|
|
7
|
+
* asks three questions:
|
|
8
|
+
* 1. Should I recompute at all? (no when mode=incremental AND
|
|
9
|
+
* closureFiles is empty AND there is a prior graph to carry forward).
|
|
10
|
+
* 2. Which files make up the recompute scope? (allFiles when mode=full,
|
|
11
|
+
* closureFiles when mode=incremental).
|
|
12
|
+
* 3. Can I carry forward prior nodes / edges whose anchor is outside the
|
|
13
|
+
* scope? (yes iff `previousGraph.nodes` and `previousGraph.edges`
|
|
14
|
+
* were supplied alongside `options.incrementalFrom`).
|
|
15
|
+
*
|
|
16
|
+
* The answers must be a pure function of (ctx.options.incrementalFrom,
|
|
17
|
+
* ctx.phaseOutputs["incremental-scope"]) so a subsequent full run at the
|
|
18
|
+
* same commit produces a byte-identical graph hash. That determinism gate
|
|
19
|
+
* is exercised in `packages/ingestion/src/pipeline/incremental-determinism.test.ts`.
|
|
20
|
+
*/
|
|
21
|
+
import { INCREMENTAL_SCOPE_PHASE_NAME } from "./incremental-scope.js";
|
|
22
|
+
/**
|
|
23
|
+
* Resolve the incremental view from a phase's context.
|
|
24
|
+
*
|
|
25
|
+
* Active mode requires all three conditions:
|
|
26
|
+
* - `options.incrementalFrom` was supplied by the caller,
|
|
27
|
+
* - the incremental-scope phase ran and emitted `mode="incremental"`,
|
|
28
|
+
* - the carry-forward projection (`nodes` + `edges`) is present on the
|
|
29
|
+
* `PreviousGraph`.
|
|
30
|
+
*
|
|
31
|
+
* When any condition is false the view returns `active: false` and the
|
|
32
|
+
* caller should fall through to the full-graph path. The
|
|
33
|
+
* incremental-scope phase's own 30% safety valve already flips `mode` to
|
|
34
|
+
* `"full"` when the closure is too big, so consumers need not re-check the
|
|
35
|
+
* ratio themselves.
|
|
36
|
+
*/
|
|
37
|
+
export function resolveIncrementalView(ctx) {
|
|
38
|
+
const scope = ctx.phaseOutputs.get(INCREMENTAL_SCOPE_PHASE_NAME);
|
|
39
|
+
const prior = ctx.options.incrementalFrom;
|
|
40
|
+
if (scope === undefined || prior === undefined) {
|
|
41
|
+
return {
|
|
42
|
+
active: false,
|
|
43
|
+
closure: new Set(),
|
|
44
|
+
scope,
|
|
45
|
+
previousGraph: prior,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (scope.mode !== "incremental") {
|
|
49
|
+
return {
|
|
50
|
+
active: false,
|
|
51
|
+
closure: new Set(),
|
|
52
|
+
scope,
|
|
53
|
+
previousGraph: prior,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// Carry-forward requires the full node/edge snapshot. Without it we
|
|
57
|
+
// cannot produce a byte-identical graph, so degrade to the full path.
|
|
58
|
+
if (prior.nodes === undefined || prior.edges === undefined) {
|
|
59
|
+
return {
|
|
60
|
+
active: false,
|
|
61
|
+
closure: new Set(),
|
|
62
|
+
scope,
|
|
63
|
+
previousGraph: prior,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
active: true,
|
|
68
|
+
closure: new Set(scope.closureFiles),
|
|
69
|
+
scope,
|
|
70
|
+
previousGraph: prior,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* A node "belongs" to the closure when its defining file sits in the
|
|
75
|
+
* closure set, OR when its `filePath` is the sentinel "<global>" used for
|
|
76
|
+
* Community / process-like nodes that have no natural file anchor. For
|
|
77
|
+
* `<global>` we treat the node as closure when ANY of its referenced
|
|
78
|
+
* members are closure files (resolved via the community's MEMBER_OF edges
|
|
79
|
+
* at carry-forward time — the helpers below surface this as "global" and
|
|
80
|
+
* let the phase decide).
|
|
81
|
+
*/
|
|
82
|
+
export function isNodeInClosure(node, closure) {
|
|
83
|
+
if (node.filePath === "<global>")
|
|
84
|
+
return false;
|
|
85
|
+
return closure.has(node.filePath);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Partition the prior graph's edges into carry-forward candidates + in-
|
|
89
|
+
* scope edges. Edges are carried forward when BOTH endpoints map to a
|
|
90
|
+
* path outside the closure OR to a prior node with `filePath` outside the
|
|
91
|
+
* closure. The caller provides a resolver from node id → filePath built
|
|
92
|
+
* over the prior node set; ids the resolver cannot place are conservative-
|
|
93
|
+
* dropped from the carry-forward set.
|
|
94
|
+
*/
|
|
95
|
+
export function partitionPriorEdges(priorEdges, filePathByNodeId, closure, edgeTypes) {
|
|
96
|
+
const out = [];
|
|
97
|
+
for (const e of priorEdges) {
|
|
98
|
+
if (!edgeTypes.has(e.type))
|
|
99
|
+
continue;
|
|
100
|
+
const fromPath = filePathByNodeId.get(e.from);
|
|
101
|
+
const toPath = filePathByNodeId.get(e.to);
|
|
102
|
+
if (fromPath === undefined || toPath === undefined)
|
|
103
|
+
continue;
|
|
104
|
+
// Both endpoints outside the closure → carry forward unchanged.
|
|
105
|
+
const fromInClosure = fromPath !== "<global>" && closure.has(fromPath);
|
|
106
|
+
const toInClosure = toPath !== "<global>" && closure.has(toPath);
|
|
107
|
+
if (fromInClosure || toInClosure)
|
|
108
|
+
continue;
|
|
109
|
+
out.push(e);
|
|
110
|
+
}
|
|
111
|
+
return out;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Build a (nodeId → filePath) lookup from a prior-graph node snapshot.
|
|
115
|
+
* The map participates in partitioning prior edges; nodes missing from
|
|
116
|
+
* the map force their attached edges into the "recompute" bucket (safe
|
|
117
|
+
* default — a false recompute only trades performance, never correctness).
|
|
118
|
+
*/
|
|
119
|
+
export function buildFilePathLookup(priorNodes) {
|
|
120
|
+
const m = new Map();
|
|
121
|
+
for (const n of priorNodes)
|
|
122
|
+
m.set(n.id, n.filePath);
|
|
123
|
+
return m;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=incremental-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incremental-helper.js","sourceRoot":"","sources":["../../../src/pipeline/phases/incremental-helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Incremental scope phase.
|
|
3
|
+
*
|
|
4
|
+
* Given a prior-run graph projection ({@link PreviousGraph}) and the current
|
|
5
|
+
* scan output, compute the **import closure** of files whose content hash
|
|
6
|
+
* changed since the last run. Downstream phases can consult this output to
|
|
7
|
+
* narrow their working set — today it is purely **passive**: the phase emits
|
|
8
|
+
* the closure and stats without modifying what crossFile / mro / communities
|
|
9
|
+
* / processes actually process. That's a deliberate v1.0 choice: wiring each
|
|
10
|
+
* downstream phase to honour the closure is invasive and risky for the first
|
|
11
|
+
* iteration. We keep the pipeline observably correct (full reindex always
|
|
12
|
+
* runs) while recording the *intended* savings so a followup can flip the
|
|
13
|
+
* active switch behind a feature flag.
|
|
14
|
+
*
|
|
15
|
+
* ## Algorithm
|
|
16
|
+
*
|
|
17
|
+
* 1. Read `options.incrementalFrom`. If absent, or if `options.force` is set,
|
|
18
|
+
* emit `mode="full"` covering every scanned file. Bail early.
|
|
19
|
+
* 2. Walk the scan output and compute `changedFiles` = files whose
|
|
20
|
+
* `contentSha` is unknown to the prior graph OR differs from it. For
|
|
21
|
+
* content-hash comparison we treat a file that is present in both the
|
|
22
|
+
* prior `files[]` and the current scan as "unchanged" only when the hash
|
|
23
|
+
* actually matches. Prior-graph consumers (`analyze.ts`) supply the hash
|
|
24
|
+
* by reading the persisted scan state; phases that need richer metadata
|
|
25
|
+
* (e.g. `defines` edges) can extend {@link PreviousGraph} later without a
|
|
26
|
+
* breaking change here.
|
|
27
|
+
* 3. BFS forward from `changedFiles` along IMPORTS edges to depth 2 (who
|
|
28
|
+
* *uses* the changed files — "downstream" in consumer sense).
|
|
29
|
+
* 4. BFS backward from `changedFiles` along IMPORTS edges to depth 2 (what
|
|
30
|
+
* the changed files *use* — "upstream" in producer sense).
|
|
31
|
+
* 5. Take one hop of heritage ancestors + descendants (EXTENDS / IMPLEMENTS)
|
|
32
|
+
* for each changed file so subtype MROs refresh when a base class moves.
|
|
33
|
+
* 6. If the union exceeds 30% of the current total file count, fall back to
|
|
34
|
+
* a full reindex (`mode="full"`, `fullReindexBecause="closure-too-large"`).
|
|
35
|
+
* The safety valve prevents pathological "touched a universally-imported
|
|
36
|
+
* utility" cases from running an incremental pass that ends up bigger
|
|
37
|
+
* than a cold build.
|
|
38
|
+
*
|
|
39
|
+
* ## Determinism
|
|
40
|
+
*
|
|
41
|
+
* All emitted arrays (`changedFiles`, `closureFiles`) are sorted
|
|
42
|
+
* alphabetically. The BFS keeps its frontier sorted at every step; visited
|
|
43
|
+
* order has no effect on the final set, but sorting at emission time makes
|
|
44
|
+
* the logs reproducible across runs for the same input.
|
|
45
|
+
*/
|
|
46
|
+
import type { PipelinePhase } from "../types.js";
|
|
47
|
+
export declare const INCREMENTAL_SCOPE_PHASE_NAME: "incremental-scope";
|
|
48
|
+
/**
|
|
49
|
+
* Output of {@link INCREMENTAL_SCOPE_PHASE_NAME}.
|
|
50
|
+
*
|
|
51
|
+
* `closureFiles` is the canonical set downstream phases should consult. In
|
|
52
|
+
* `mode="full"` it mirrors the full scanned set so a consumer that naively
|
|
53
|
+
* intersects with it keeps the existing cold-run behaviour.
|
|
54
|
+
*/
|
|
55
|
+
export interface IncrementalScopeOutput {
|
|
56
|
+
readonly mode: "full" | "incremental";
|
|
57
|
+
readonly changedFiles: readonly string[];
|
|
58
|
+
readonly closureFiles: readonly string[];
|
|
59
|
+
/** Set only when `mode === "full"` and a prior graph was supplied. */
|
|
60
|
+
readonly fullReindexBecause?: "no-prior-graph" | "closure-too-large" | "force-flag";
|
|
61
|
+
/** Total scanned file count; recorded so `ratio = closure / total` is reproducible in logs. */
|
|
62
|
+
readonly totalFiles: number;
|
|
63
|
+
/** closureFiles.length / totalFiles, 0 when totalFiles is 0. */
|
|
64
|
+
readonly closureRatio: number;
|
|
65
|
+
}
|
|
66
|
+
export declare const incrementalScopePhase: PipelinePhase<IncrementalScopeOutput>;
|
|
67
|
+
//# sourceMappingURL=incremental-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incremental-scope.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phases/incremental-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,aAAa,CAAC;AAShE,eAAO,MAAM,4BAA4B,EAAG,mBAA4B,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,sEAAsE;IACtE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,YAAY,CAAC;IACpF,+FAA+F;IAC/F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gEAAgE;IAChE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,sBAAsB,CA2HvE,CAAC"}
|