@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,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branch divergence — counts `ahead` and `behind` commits relative to the
|
|
3
|
+
* configured base branch, plus the list of files uniquely touched by the
|
|
4
|
+
* ahead commits.
|
|
5
|
+
*
|
|
6
|
+
* Uses two git subprocesses per branch:
|
|
7
|
+
* 1. `git rev-list --left-right --count <base>...<ref>` → tab-separated
|
|
8
|
+
* pair "behind<TAB>ahead".
|
|
9
|
+
* 2. `git log <base>..<ref> --name-only --format=` → newline-separated
|
|
10
|
+
* file paths, deduplicated in first-seen order.
|
|
11
|
+
*
|
|
12
|
+
* The caller supplies the base branch name (typically `main`) and the list
|
|
13
|
+
* of candidate head refs. The function fails open: any git error leaves the
|
|
14
|
+
* affected branch's entry absent from the returned map.
|
|
15
|
+
*/
|
|
16
|
+
import { execFile } from "node:child_process";
|
|
17
|
+
import { promisify } from "node:util";
|
|
18
|
+
const execFileAsync = promisify(execFile);
|
|
19
|
+
const DEFAULT_MAX_OVERLAP_FILES = 100;
|
|
20
|
+
const DEFAULT_MAX_BUFFER = 64 * 1024 * 1024; // 64 MB
|
|
21
|
+
/**
|
|
22
|
+
* List local branches via `git for-each-ref refs/heads/`. Returns short ref
|
|
23
|
+
* names sorted lexicographically so downstream iteration is deterministic.
|
|
24
|
+
*/
|
|
25
|
+
export async function listLocalBranches(repoPath) {
|
|
26
|
+
try {
|
|
27
|
+
const { stdout } = await execFileAsync("git", ["for-each-ref", "--format=%(refname:short)", "refs/heads/"], { cwd: repoPath, maxBuffer: DEFAULT_MAX_BUFFER });
|
|
28
|
+
const names = stdout
|
|
29
|
+
.split("\n")
|
|
30
|
+
.map((s) => s.trim())
|
|
31
|
+
.filter((s) => s.length > 0);
|
|
32
|
+
return [...names].sort();
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Compute divergence for each branch relative to `baseBranch`.
|
|
40
|
+
*
|
|
41
|
+
* Branches equal to the base or failing to resolve are omitted from the
|
|
42
|
+
* result map.
|
|
43
|
+
*/
|
|
44
|
+
export async function computeBranchDivergence(opts) {
|
|
45
|
+
const { repoPath, baseBranch, branches } = opts;
|
|
46
|
+
const overlapCap = opts.maxOverlapFiles ?? DEFAULT_MAX_OVERLAP_FILES;
|
|
47
|
+
const entries = new Map();
|
|
48
|
+
for (const ref of branches) {
|
|
49
|
+
if (ref === baseBranch)
|
|
50
|
+
continue;
|
|
51
|
+
const count = await revListLeftRight(repoPath, baseBranch, ref);
|
|
52
|
+
if (count === undefined)
|
|
53
|
+
continue;
|
|
54
|
+
const overlap = await aheadFiles(repoPath, baseBranch, ref, overlapCap);
|
|
55
|
+
entries.set(ref, { ahead: count.ahead, behind: count.behind, overlapFiles: overlap });
|
|
56
|
+
}
|
|
57
|
+
return { entries };
|
|
58
|
+
}
|
|
59
|
+
async function revListLeftRight(repoPath, base, ref) {
|
|
60
|
+
try {
|
|
61
|
+
const { stdout } = await execFileAsync("git", ["rev-list", "--left-right", "--count", `${base}...${ref}`], { cwd: repoPath, maxBuffer: DEFAULT_MAX_BUFFER });
|
|
62
|
+
const trimmed = stdout.trim();
|
|
63
|
+
const parts = trimmed.split(/\s+/);
|
|
64
|
+
if (parts.length !== 2)
|
|
65
|
+
return undefined;
|
|
66
|
+
const behind = Number(parts[0]);
|
|
67
|
+
const ahead = Number(parts[1]);
|
|
68
|
+
if (!Number.isFinite(behind) || !Number.isFinite(ahead))
|
|
69
|
+
return undefined;
|
|
70
|
+
return { ahead, behind };
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async function aheadFiles(repoPath, base, ref, cap) {
|
|
77
|
+
try {
|
|
78
|
+
const { stdout } = await execFileAsync("git", ["log", `${base}..${ref}`, "--name-only", "--format="], { cwd: repoPath, maxBuffer: DEFAULT_MAX_BUFFER });
|
|
79
|
+
const seen = new Set();
|
|
80
|
+
for (const line of stdout.split("\n")) {
|
|
81
|
+
const path = line.trim();
|
|
82
|
+
if (path.length === 0)
|
|
83
|
+
continue;
|
|
84
|
+
if (seen.has(path))
|
|
85
|
+
continue;
|
|
86
|
+
seen.add(path);
|
|
87
|
+
if (seen.size >= cap)
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
return [...seen].sort();
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=branch-divergence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-divergence.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/temporal-helpers/branch-divergence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exponentially-decayed churn weighting.
|
|
3
|
+
*
|
|
4
|
+
* Given a committer timestamp (epoch seconds) and a reference "now" (also
|
|
5
|
+
* epoch seconds), return the decay weight applied to the commit's lines
|
|
6
|
+
* changed. A 90-day half-life is the default: a 0-day-old commit contributes
|
|
7
|
+
* 1.0× its line count, a 90-day-old commit contributes 0.5×, and a 180-day-
|
|
8
|
+
* old commit contributes 0.25×.
|
|
9
|
+
*
|
|
10
|
+
* Future-dated commits (timestamps after `now`) are clamped to 0 age so the
|
|
11
|
+
* weight never exceeds 1.0.
|
|
12
|
+
*/
|
|
13
|
+
export declare const DEFAULT_CHURN_HALF_LIFE_DAYS = 90;
|
|
14
|
+
/**
|
|
15
|
+
* Compute the decay weight in [0, 1] for a commit's churn contribution.
|
|
16
|
+
*
|
|
17
|
+
* @param commitCtEpochSec committer timestamp in epoch seconds
|
|
18
|
+
* @param nowEpochSec reference "now" timestamp in epoch seconds
|
|
19
|
+
* @param halfLifeDays half-life; must be positive
|
|
20
|
+
*/
|
|
21
|
+
export declare function decayWeight(commitCtEpochSec: number, nowEpochSec: number, halfLifeDays?: number): number;
|
|
22
|
+
//# sourceMappingURL=churn-decay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"churn-decay.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/temporal-helpers/churn-decay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAG/C;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,MAAqC,GAClD,MAAM,CASR"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exponentially-decayed churn weighting.
|
|
3
|
+
*
|
|
4
|
+
* Given a committer timestamp (epoch seconds) and a reference "now" (also
|
|
5
|
+
* epoch seconds), return the decay weight applied to the commit's lines
|
|
6
|
+
* changed. A 90-day half-life is the default: a 0-day-old commit contributes
|
|
7
|
+
* 1.0× its line count, a 90-day-old commit contributes 0.5×, and a 180-day-
|
|
8
|
+
* old commit contributes 0.25×.
|
|
9
|
+
*
|
|
10
|
+
* Future-dated commits (timestamps after `now`) are clamped to 0 age so the
|
|
11
|
+
* weight never exceeds 1.0.
|
|
12
|
+
*/
|
|
13
|
+
export const DEFAULT_CHURN_HALF_LIFE_DAYS = 90;
|
|
14
|
+
const SECONDS_PER_DAY = 86_400;
|
|
15
|
+
/**
|
|
16
|
+
* Compute the decay weight in [0, 1] for a commit's churn contribution.
|
|
17
|
+
*
|
|
18
|
+
* @param commitCtEpochSec committer timestamp in epoch seconds
|
|
19
|
+
* @param nowEpochSec reference "now" timestamp in epoch seconds
|
|
20
|
+
* @param halfLifeDays half-life; must be positive
|
|
21
|
+
*/
|
|
22
|
+
export function decayWeight(commitCtEpochSec, nowEpochSec, halfLifeDays = DEFAULT_CHURN_HALF_LIFE_DAYS) {
|
|
23
|
+
if (halfLifeDays <= 0) {
|
|
24
|
+
throw new Error("decayWeight: halfLifeDays must be > 0");
|
|
25
|
+
}
|
|
26
|
+
const rawAgeSec = nowEpochSec - commitCtEpochSec;
|
|
27
|
+
const ageSec = rawAgeSec < 0 ? 0 : rawAgeSec;
|
|
28
|
+
const ageDays = ageSec / SECONDS_PER_DAY;
|
|
29
|
+
const lambda = Math.LN2 / halfLifeDays;
|
|
30
|
+
return Math.exp(-lambda * ageDays);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=churn-decay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"churn-decay.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/temporal-helpers/churn-decay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAC/C,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,gBAAwB,EACxB,WAAmB,EACnB,eAAuB,4BAA4B;IAEnD,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,SAAS,GAAG,WAAW,GAAG,gBAAgB,CAAC;IACjD,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,GAAG,eAAe,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;IACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conventional-Commits subject-line classifier.
|
|
3
|
+
*
|
|
4
|
+
* Only the subject line is inspected — the canonical spec places the type
|
|
5
|
+
* prefix there. The grammar accepted is the de-facto commitlint subset:
|
|
6
|
+
* `<type>(<scope>)?!?: <description>`
|
|
7
|
+
* where `<type>` is one of the 11 types named in the spec (plus `revert`).
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Return the lowercase type token for a Conventional-Commit subject, or
|
|
11
|
+
* `undefined` if the subject is non-conforming.
|
|
12
|
+
*/
|
|
13
|
+
export declare function classifyConventionalType(subject: string): string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Return a sort-stable histogram copy keyed by type.
|
|
16
|
+
*
|
|
17
|
+
* Sorting guarantees downstream JSON serialisation is byte-stable regardless
|
|
18
|
+
* of insertion order.
|
|
19
|
+
*/
|
|
20
|
+
export declare function sortedHistogram(hist: ReadonlyMap<string, number>): Record<string, number>;
|
|
21
|
+
//# sourceMappingURL=conventional-commits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conventional-commits.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/temporal-helpers/conventional-commits.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM5E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOzF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conventional-Commits subject-line classifier.
|
|
3
|
+
*
|
|
4
|
+
* Only the subject line is inspected — the canonical spec places the type
|
|
5
|
+
* prefix there. The grammar accepted is the de-facto commitlint subset:
|
|
6
|
+
* `<type>(<scope>)?!?: <description>`
|
|
7
|
+
* where `<type>` is one of the 11 types named in the spec (plus `revert`).
|
|
8
|
+
*/
|
|
9
|
+
const CONVENTIONAL_COMMIT_RE = /^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\([^)]+\))?!?:/i;
|
|
10
|
+
/**
|
|
11
|
+
* Return the lowercase type token for a Conventional-Commit subject, or
|
|
12
|
+
* `undefined` if the subject is non-conforming.
|
|
13
|
+
*/
|
|
14
|
+
export function classifyConventionalType(subject) {
|
|
15
|
+
const match = CONVENTIONAL_COMMIT_RE.exec(subject);
|
|
16
|
+
if (match === null)
|
|
17
|
+
return undefined;
|
|
18
|
+
const type = match[1];
|
|
19
|
+
if (type === undefined)
|
|
20
|
+
return undefined;
|
|
21
|
+
return type.toLowerCase();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Return a sort-stable histogram copy keyed by type.
|
|
25
|
+
*
|
|
26
|
+
* Sorting guarantees downstream JSON serialisation is byte-stable regardless
|
|
27
|
+
* of insertion order.
|
|
28
|
+
*/
|
|
29
|
+
export function sortedHistogram(hist) {
|
|
30
|
+
const keys = [...hist.keys()].sort();
|
|
31
|
+
const out = {};
|
|
32
|
+
for (const k of keys) {
|
|
33
|
+
out[k] = hist.get(k) ?? 0;
|
|
34
|
+
}
|
|
35
|
+
return out;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=conventional-commits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conventional-commits.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/temporal-helpers/conventional-commits.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,sBAAsB,GAC1B,iFAAiF,CAAC;AAEpF;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAiC;IAC/D,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gini inequality coefficient and bus-factor proxy.
|
|
3
|
+
*
|
|
4
|
+
* The Gini coefficient is computed on a sorted contribution vector using the
|
|
5
|
+
* O(n log n) mean-rank identity, which avoids the O(n^2) pairwise loop while
|
|
6
|
+
* remaining numerically stable:
|
|
7
|
+
*
|
|
8
|
+
* G = (2 * Σᵢ i·x[i]) / (n · Σx) − (n + 1) / n
|
|
9
|
+
*
|
|
10
|
+
* with `i` 1-indexed after ascending sort. G = 0 when all values are equal
|
|
11
|
+
* and approaches 1 as inequality grows.
|
|
12
|
+
*
|
|
13
|
+
* Bus factor collapses inequality into an integer head-count proxy. The
|
|
14
|
+
* corrected formula (see research notes) is:
|
|
15
|
+
*
|
|
16
|
+
* busFactor = max(1, min(n, 1 + round((1 - G) · (n - 1))))
|
|
17
|
+
*
|
|
18
|
+
* which returns 1 for a single author, `n` for perfectly uniform contribution,
|
|
19
|
+
* and 1 for a highly-skewed distribution.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Compute the Gini coefficient for a vector of non-negative contribution
|
|
23
|
+
* counts. Zero, empty, and all-equal inputs all yield 0.
|
|
24
|
+
*/
|
|
25
|
+
export declare function gini(counts: readonly number[]): number;
|
|
26
|
+
/**
|
|
27
|
+
* Derive the bus factor from a per-contributor count vector.
|
|
28
|
+
*
|
|
29
|
+
* Returns 1 when the vector is empty or contains only zero totals.
|
|
30
|
+
*/
|
|
31
|
+
export declare function busFactor(counts: readonly number[]): number;
|
|
32
|
+
//# sourceMappingURL=gini.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gini.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/temporal-helpers/gini.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;GAGG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAwBtD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAa3D"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gini inequality coefficient and bus-factor proxy.
|
|
3
|
+
*
|
|
4
|
+
* The Gini coefficient is computed on a sorted contribution vector using the
|
|
5
|
+
* O(n log n) mean-rank identity, which avoids the O(n^2) pairwise loop while
|
|
6
|
+
* remaining numerically stable:
|
|
7
|
+
*
|
|
8
|
+
* G = (2 * Σᵢ i·x[i]) / (n · Σx) − (n + 1) / n
|
|
9
|
+
*
|
|
10
|
+
* with `i` 1-indexed after ascending sort. G = 0 when all values are equal
|
|
11
|
+
* and approaches 1 as inequality grows.
|
|
12
|
+
*
|
|
13
|
+
* Bus factor collapses inequality into an integer head-count proxy. The
|
|
14
|
+
* corrected formula (see research notes) is:
|
|
15
|
+
*
|
|
16
|
+
* busFactor = max(1, min(n, 1 + round((1 - G) · (n - 1))))
|
|
17
|
+
*
|
|
18
|
+
* which returns 1 for a single author, `n` for perfectly uniform contribution,
|
|
19
|
+
* and 1 for a highly-skewed distribution.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Compute the Gini coefficient for a vector of non-negative contribution
|
|
23
|
+
* counts. Zero, empty, and all-equal inputs all yield 0.
|
|
24
|
+
*/
|
|
25
|
+
export function gini(counts) {
|
|
26
|
+
const n = counts.length;
|
|
27
|
+
if (n === 0)
|
|
28
|
+
return 0;
|
|
29
|
+
let sum = 0;
|
|
30
|
+
for (const v of counts) {
|
|
31
|
+
if (v < 0) {
|
|
32
|
+
throw new Error("gini: contribution counts must be non-negative");
|
|
33
|
+
}
|
|
34
|
+
sum += v;
|
|
35
|
+
}
|
|
36
|
+
if (sum === 0)
|
|
37
|
+
return 0;
|
|
38
|
+
// Ascending sort without mutating caller input.
|
|
39
|
+
const sorted = [...counts].sort((a, b) => a - b);
|
|
40
|
+
let weighted = 0;
|
|
41
|
+
for (let i = 0; i < n; i += 1) {
|
|
42
|
+
// i is 0-indexed here; the mean-rank identity expects 1-indexed ranks.
|
|
43
|
+
weighted += (i + 1) * (sorted[i] ?? 0);
|
|
44
|
+
}
|
|
45
|
+
const g = (2 * weighted) / (n * sum) - (n + 1) / n;
|
|
46
|
+
// Numerical clamp: floating-point error can produce tiny negatives or
|
|
47
|
+
// slight overshoot past 1.
|
|
48
|
+
if (g < 0)
|
|
49
|
+
return 0;
|
|
50
|
+
if (g > 1)
|
|
51
|
+
return 1;
|
|
52
|
+
return g;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Derive the bus factor from a per-contributor count vector.
|
|
56
|
+
*
|
|
57
|
+
* Returns 1 when the vector is empty or contains only zero totals.
|
|
58
|
+
*/
|
|
59
|
+
export function busFactor(counts) {
|
|
60
|
+
const n = counts.length;
|
|
61
|
+
if (n === 0)
|
|
62
|
+
return 1;
|
|
63
|
+
// Drop zero-count contributors so "n" reflects actual touchers.
|
|
64
|
+
const active = counts.filter((c) => c > 0);
|
|
65
|
+
const m = active.length;
|
|
66
|
+
if (m === 0)
|
|
67
|
+
return 1;
|
|
68
|
+
if (m === 1)
|
|
69
|
+
return 1;
|
|
70
|
+
const g = gini(active);
|
|
71
|
+
const raw = 1 + Math.round((1 - g) * (m - 1));
|
|
72
|
+
if (raw < 1)
|
|
73
|
+
return 1;
|
|
74
|
+
if (raw > m)
|
|
75
|
+
return m;
|
|
76
|
+
return raw;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=gini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gini.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/temporal-helpers/gini.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAC,MAAyB;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IACD,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACxB,gDAAgD;IAChD,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,uEAAuE;QACvE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACnD,sEAAsE;IACtE,2BAA2B;IAC3B,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpB,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,MAAyB;IACjD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,gEAAgE;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Revert detection — three orthogonal regex vectors.
|
|
3
|
+
*
|
|
4
|
+
* A commit is a revert if ANY of the three tests match:
|
|
5
|
+
* 1. Subject begins with `Revert "…"` (default `git revert`).
|
|
6
|
+
* 2. Body contains a `This reverts commit <sha>` line (default body form).
|
|
7
|
+
* 3. Body contains the `--reference` form `This reverts <sha>[ (subject, date)]`.
|
|
8
|
+
*
|
|
9
|
+
* OR-logic plus a `.test` short-circuit guarantees each commit is counted at
|
|
10
|
+
* most once, even if the subject and body both announce the revert.
|
|
11
|
+
*/
|
|
12
|
+
/** Return true iff a commit's subject or body identifies it as a revert. */
|
|
13
|
+
export declare function isRevertCommit(subject: string, body: string): boolean;
|
|
14
|
+
//# sourceMappingURL=revert-detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revert-detect.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/temporal-helpers/revert-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKrE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Revert detection — three orthogonal regex vectors.
|
|
3
|
+
*
|
|
4
|
+
* A commit is a revert if ANY of the three tests match:
|
|
5
|
+
* 1. Subject begins with `Revert "…"` (default `git revert`).
|
|
6
|
+
* 2. Body contains a `This reverts commit <sha>` line (default body form).
|
|
7
|
+
* 3. Body contains the `--reference` form `This reverts <sha>[ (subject, date)]`.
|
|
8
|
+
*
|
|
9
|
+
* OR-logic plus a `.test` short-circuit guarantees each commit is counted at
|
|
10
|
+
* most once, even if the subject and body both announce the revert.
|
|
11
|
+
*/
|
|
12
|
+
const REVERT_SUBJECT_RE = /^Revert "/;
|
|
13
|
+
const REVERT_BODY_DEFAULT_RE = /This reverts commit ([0-9a-f]+)/m;
|
|
14
|
+
const REVERT_BODY_REFERENCE_RE = /This reverts ([0-9a-f]+)(?:\s*\(([^)]+)\))?/m;
|
|
15
|
+
/** Return true iff a commit's subject or body identifies it as a revert. */
|
|
16
|
+
export function isRevertCommit(subject, body) {
|
|
17
|
+
if (REVERT_SUBJECT_RE.test(subject))
|
|
18
|
+
return true;
|
|
19
|
+
if (REVERT_BODY_DEFAULT_RE.test(body))
|
|
20
|
+
return true;
|
|
21
|
+
if (REVERT_BODY_REFERENCE_RE.test(body))
|
|
22
|
+
return true;
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=revert-detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revert-detect.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/temporal-helpers/revert-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,iBAAiB,GAAG,WAAW,CAAC;AACtC,MAAM,sBAAsB,GAAG,kCAAkC,CAAC;AAClE,MAAM,wBAAwB,GAAG,8CAA8C,CAAC;AAEhF,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,IAAY;IAC1D,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-language test-pair heuristics.
|
|
3
|
+
*
|
|
4
|
+
* Given a source file relative path, return candidate test-file relative
|
|
5
|
+
* paths whose touches should be cross-referenced for the `testRatio` signal.
|
|
6
|
+
* Also provides a cheap `isTestFile` predicate so source files that are
|
|
7
|
+
* themselves test files short-circuit the candidate lookup with ratio=1.
|
|
8
|
+
*
|
|
9
|
+
* All paths are POSIX-separated and relative to repo root.
|
|
10
|
+
*/
|
|
11
|
+
/** Heuristic check: is `relPath` a test file? */
|
|
12
|
+
export declare function isTestFile(relPath: string): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Return the set of candidate test-file relative paths paired with the given
|
|
15
|
+
* source file. Unknown languages yield an empty array.
|
|
16
|
+
*/
|
|
17
|
+
export declare function pairedTestCandidates(relPath: string): readonly string[];
|
|
18
|
+
//# sourceMappingURL=test-pair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-pair.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/temporal-helpers/test-pair.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,iDAAiD;AACjD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAwBnD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAoDvE"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-language test-pair heuristics.
|
|
3
|
+
*
|
|
4
|
+
* Given a source file relative path, return candidate test-file relative
|
|
5
|
+
* paths whose touches should be cross-referenced for the `testRatio` signal.
|
|
6
|
+
* Also provides a cheap `isTestFile` predicate so source files that are
|
|
7
|
+
* themselves test files short-circuit the candidate lookup with ratio=1.
|
|
8
|
+
*
|
|
9
|
+
* All paths are POSIX-separated and relative to repo root.
|
|
10
|
+
*/
|
|
11
|
+
/** Heuristic check: is `relPath` a test file? */
|
|
12
|
+
export function isTestFile(relPath) {
|
|
13
|
+
const base = baseName(relPath);
|
|
14
|
+
const dir = dirName(relPath);
|
|
15
|
+
// Any segment named `tests`, `test`, or `__tests__` under the path root.
|
|
16
|
+
const segs = relPath.split("/");
|
|
17
|
+
for (const s of segs) {
|
|
18
|
+
if (s === "tests" || s === "test" || s === "__tests__")
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
// Python convention.
|
|
22
|
+
if (/^test_.+\.py$/.test(base))
|
|
23
|
+
return true;
|
|
24
|
+
if (/^.+_test\.py$/.test(base))
|
|
25
|
+
return true;
|
|
26
|
+
// Go convention.
|
|
27
|
+
if (/^.+_test\.go$/.test(base))
|
|
28
|
+
return true;
|
|
29
|
+
// TS/JS/Rust conventions.
|
|
30
|
+
if (/^.+\.(test|spec)\.(ts|tsx|js|jsx|mjs|cjs)$/.test(base))
|
|
31
|
+
return true;
|
|
32
|
+
// Java: *Test.java.
|
|
33
|
+
if (/^.+Test\.java$/.test(base))
|
|
34
|
+
return true;
|
|
35
|
+
// C#: *Tests.cs or *.Tests.cs
|
|
36
|
+
if (/^.+Tests\.cs$/.test(base))
|
|
37
|
+
return true;
|
|
38
|
+
if (/^.+\.Tests\.cs$/.test(base))
|
|
39
|
+
return true;
|
|
40
|
+
// Keep dir in mind for Rust suffix heuristic — Rust inline tests are
|
|
41
|
+
// indistinguishable from production, so we mark only explicit `tests/` dirs.
|
|
42
|
+
if (dir.endsWith("/tests") || dir === "tests")
|
|
43
|
+
return true;
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Return the set of candidate test-file relative paths paired with the given
|
|
48
|
+
* source file. Unknown languages yield an empty array.
|
|
49
|
+
*/
|
|
50
|
+
export function pairedTestCandidates(relPath) {
|
|
51
|
+
if (isTestFile(relPath))
|
|
52
|
+
return [];
|
|
53
|
+
const base = baseName(relPath);
|
|
54
|
+
const dir = dirName(relPath);
|
|
55
|
+
const ext = extOf(base);
|
|
56
|
+
const stem = base.slice(0, base.length - ext.length - 1); // strip ".ext"
|
|
57
|
+
if (stem.length === 0)
|
|
58
|
+
return [];
|
|
59
|
+
const out = new Set();
|
|
60
|
+
const prefix = dir === "" ? "" : `${dir}/`;
|
|
61
|
+
const addWithStem = (ts, newExt) => {
|
|
62
|
+
out.add(`${prefix}${ts}.${newExt}`);
|
|
63
|
+
};
|
|
64
|
+
switch (ext) {
|
|
65
|
+
case "ts":
|
|
66
|
+
case "tsx":
|
|
67
|
+
case "js":
|
|
68
|
+
case "jsx":
|
|
69
|
+
case "mjs":
|
|
70
|
+
case "cjs":
|
|
71
|
+
addWithStem(`${stem}.test`, ext);
|
|
72
|
+
addWithStem(`${stem}.spec`, ext);
|
|
73
|
+
break;
|
|
74
|
+
case "py":
|
|
75
|
+
// Same-directory variants.
|
|
76
|
+
out.add(`${prefix}test_${stem}.py`);
|
|
77
|
+
out.add(`${prefix}${stem}_test.py`);
|
|
78
|
+
// tests/ sibling.
|
|
79
|
+
out.add(`tests/test_${stem}.py`);
|
|
80
|
+
break;
|
|
81
|
+
case "go":
|
|
82
|
+
out.add(`${prefix}${stem}_test.go`);
|
|
83
|
+
break;
|
|
84
|
+
case "rs":
|
|
85
|
+
// Inline `#[cfg(test)]` is unreliable to detect from git metadata; look
|
|
86
|
+
// for a sibling `tests/<stem>.rs` under a `tests/` directory at repo
|
|
87
|
+
// root.
|
|
88
|
+
out.add(`tests/${stem}.rs`);
|
|
89
|
+
break;
|
|
90
|
+
case "java":
|
|
91
|
+
out.add(`${prefix}${capitalize(stem)}Test.java`);
|
|
92
|
+
break;
|
|
93
|
+
case "cs":
|
|
94
|
+
out.add(`${prefix}${capitalize(stem)}Tests.cs`);
|
|
95
|
+
out.add(`${prefix}${capitalize(stem)}.Tests.cs`);
|
|
96
|
+
break;
|
|
97
|
+
default:
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
return [...out].sort();
|
|
101
|
+
}
|
|
102
|
+
function baseName(p) {
|
|
103
|
+
const idx = p.lastIndexOf("/");
|
|
104
|
+
return idx < 0 ? p : p.slice(idx + 1);
|
|
105
|
+
}
|
|
106
|
+
function dirName(p) {
|
|
107
|
+
const idx = p.lastIndexOf("/");
|
|
108
|
+
return idx < 0 ? "" : p.slice(0, idx);
|
|
109
|
+
}
|
|
110
|
+
function extOf(base) {
|
|
111
|
+
const idx = base.lastIndexOf(".");
|
|
112
|
+
return idx < 0 ? "" : base.slice(idx + 1);
|
|
113
|
+
}
|
|
114
|
+
function capitalize(s) {
|
|
115
|
+
if (s.length === 0)
|
|
116
|
+
return s;
|
|
117
|
+
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=test-pair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-pair.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/temporal-helpers/test-pair.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Temporal phase — derives 12 per-file git signals from two shared `git log`
|
|
3
|
+
* subprocesses plus one optional branch-divergence pass.
|
|
4
|
+
*
|
|
5
|
+
* Pipeline position: depends on `scan` only; runs in parallel with other
|
|
6
|
+
* structural phases. Mutates the shared KnowledgeGraph by looking up each
|
|
7
|
+
* scanned File node and cloning it with the 12 temporal properties attached.
|
|
8
|
+
*
|
|
9
|
+
* Design constraints:
|
|
10
|
+
* - Subprocess budget ≤3 (main log dump, name-status dump, branch pass).
|
|
11
|
+
* Per-file `git log --follow` for signal 9 is opt-in; when enabled it
|
|
12
|
+
* breaks the budget — we cap it at `maxRenameFollowFiles` to bound cost.
|
|
13
|
+
* - Fail-open: any git error, malformed output, or missing history yields
|
|
14
|
+
* a no-signal outcome rather than a phase failure.
|
|
15
|
+
* - Deterministic: all output records are constructed in sorted-relPath
|
|
16
|
+
* order, and map-keyed records are sorted before emission.
|
|
17
|
+
* - `options.skipGit === true` is a kill switch that returns an empty
|
|
18
|
+
* result so the graphHash remains stable without temporal data.
|
|
19
|
+
*/
|
|
20
|
+
import type { PipelinePhase } from "../types.js";
|
|
21
|
+
export declare const TEMPORAL_PHASE_NAME: "temporal";
|
|
22
|
+
/**
|
|
23
|
+
* Augmentation to `PipelineOptions` understood by this phase.
|
|
24
|
+
*
|
|
25
|
+
* These are read via `ctx.options as TemporalOptions` — the shared
|
|
26
|
+
* `PipelineOptions` interface deliberately stays small. Any phase-specific
|
|
27
|
+
* knobs pass through verbatim.
|
|
28
|
+
*/
|
|
29
|
+
export interface TemporalOptions {
|
|
30
|
+
readonly temporalWindowDays?: number;
|
|
31
|
+
readonly temporalChurnHalfLifeDays?: number;
|
|
32
|
+
readonly temporalBaseBranch?: string;
|
|
33
|
+
readonly temporalMaxRenameFollow?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Reference "now" timestamp in epoch seconds for decay calculations.
|
|
36
|
+
* Providing this makes fixture tests time-independent. Defaults to
|
|
37
|
+
* `Date.now() / 1000`.
|
|
38
|
+
*/
|
|
39
|
+
readonly temporalNowEpochSec?: number;
|
|
40
|
+
}
|
|
41
|
+
/** One commit's file-touch manifest, exposed for reuse by downstream phases. */
|
|
42
|
+
export interface TemporalCommitManifest {
|
|
43
|
+
readonly sha: string;
|
|
44
|
+
readonly files: readonly string[];
|
|
45
|
+
/** Committer time (epoch seconds). Used by the cochange phase to emit `last_cocommit_at`. */
|
|
46
|
+
readonly ct: number;
|
|
47
|
+
}
|
|
48
|
+
export interface TemporalOutput {
|
|
49
|
+
readonly signalsEmitted: number;
|
|
50
|
+
readonly filesSkipped: number;
|
|
51
|
+
readonly windowDays: number;
|
|
52
|
+
readonly subprocessCount: number;
|
|
53
|
+
/**
|
|
54
|
+
* Per-commit file-touch lists assembled from the shared `git log
|
|
55
|
+
* --name-status` dump. Dependents (e.g. the `cochange` phase) consume
|
|
56
|
+
* this instead of re-spawning git. Ordered by sha for determinism.
|
|
57
|
+
*
|
|
58
|
+
* Files are restricted to paths present in the scan output and are the
|
|
59
|
+
* post-rename paths from `--name-status`. Empty when temporal was
|
|
60
|
+
* short-circuited (e.g. `skipGit`, git failure, empty history).
|
|
61
|
+
*/
|
|
62
|
+
readonly commitFileLists: readonly TemporalCommitManifest[];
|
|
63
|
+
}
|
|
64
|
+
export declare const temporalPhase: PipelinePhase<TemporalOutput>;
|
|
65
|
+
//# sourceMappingURL=temporal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temporal.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phases/temporal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAiBlE,eAAO,MAAM,mBAAmB,EAAG,UAAmB,CAAC;AAYvD;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,gFAAgF;AAChF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;;;;;;;OAQG;IACH,QAAQ,CAAC,eAAe,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAC7D;AAED,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,cAAc,CAUvD,CAAC"}
|