@opensip-cli/graph 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/NOTICE +8 -0
- package/README.md +31 -0
- package/dist/__tests__/baseline-plane.test.d.ts +11 -0
- package/dist/__tests__/baseline-plane.test.d.ts.map +1 -0
- package/dist/__tests__/baseline-plane.test.js +60 -0
- package/dist/__tests__/baseline-plane.test.js.map +1 -0
- package/dist/__tests__/cache/engine-version.test.d.ts +12 -0
- package/dist/__tests__/cache/engine-version.test.d.ts.map +1 -0
- package/dist/__tests__/cache/engine-version.test.js +79 -0
- package/dist/__tests__/cache/engine-version.test.js.map +1 -0
- package/dist/__tests__/cache/invalidate.test.d.ts +9 -0
- package/dist/__tests__/cache/invalidate.test.d.ts.map +1 -0
- package/dist/__tests__/cache/invalidate.test.js +228 -0
- package/dist/__tests__/cache/invalidate.test.js.map +1 -0
- package/dist/__tests__/cli/contribution-from-signals.test.d.ts +17 -0
- package/dist/__tests__/cli/contribution-from-signals.test.d.ts.map +1 -0
- package/dist/__tests__/cli/contribution-from-signals.test.js +89 -0
- package/dist/__tests__/cli/contribution-from-signals.test.js.map +1 -0
- package/dist/__tests__/cli/detect.test.d.ts +2 -0
- package/dist/__tests__/cli/detect.test.d.ts.map +1 -0
- package/dist/__tests__/cli/detect.test.js +96 -0
- package/dist/__tests__/cli/detect.test.js.map +1 -0
- package/dist/__tests__/cli/graph-config.test.d.ts +9 -0
- package/dist/__tests__/cli/graph-config.test.d.ts.map +1 -0
- package/dist/__tests__/cli/graph-config.test.js +113 -0
- package/dist/__tests__/cli/graph-config.test.js.map +1 -0
- package/dist/__tests__/cli/graph-execute.test.d.ts +9 -0
- package/dist/__tests__/cli/graph-execute.test.d.ts.map +1 -0
- package/dist/__tests__/cli/graph-execute.test.js +434 -0
- package/dist/__tests__/cli/graph-execute.test.js.map +1 -0
- package/dist/__tests__/cli/graph.test.d.ts +12 -0
- package/dist/__tests__/cli/graph.test.d.ts.map +1 -0
- package/dist/__tests__/cli/graph.test.js +589 -0
- package/dist/__tests__/cli/graph.test.js.map +1 -0
- package/dist/__tests__/cli/heap-preflight.test.d.ts +11 -0
- package/dist/__tests__/cli/heap-preflight.test.d.ts.map +1 -0
- package/dist/__tests__/cli/heap-preflight.test.js +150 -0
- package/dist/__tests__/cli/heap-preflight.test.js.map +1 -0
- package/dist/__tests__/cli/language-mismatch.test.d.ts +10 -0
- package/dist/__tests__/cli/language-mismatch.test.d.ts.map +1 -0
- package/dist/__tests__/cli/language-mismatch.test.js +155 -0
- package/dist/__tests__/cli/language-mismatch.test.js.map +1 -0
- package/dist/__tests__/cli/lookup.test.d.ts +7 -0
- package/dist/__tests__/cli/lookup.test.d.ts.map +1 -0
- package/dist/__tests__/cli/lookup.test.js +104 -0
- package/dist/__tests__/cli/lookup.test.js.map +1 -0
- package/dist/__tests__/cli/orchestrate.test.d.ts +12 -0
- package/dist/__tests__/cli/orchestrate.test.d.ts.map +1 -0
- package/dist/__tests__/cli/orchestrate.test.js +315 -0
- package/dist/__tests__/cli/orchestrate.test.js.map +1 -0
- package/dist/__tests__/cli/positional-paths.test.d.ts +5 -0
- package/dist/__tests__/cli/positional-paths.test.d.ts.map +1 -0
- package/dist/__tests__/cli/positional-paths.test.js +87 -0
- package/dist/__tests__/cli/positional-paths.test.js.map +1 -0
- package/dist/__tests__/cli/pressure-monitor.test.d.ts +11 -0
- package/dist/__tests__/cli/pressure-monitor.test.d.ts.map +1 -0
- package/dist/__tests__/cli/pressure-monitor.test.js +94 -0
- package/dist/__tests__/cli/pressure-monitor.test.js.map +1 -0
- package/dist/__tests__/cli/sarif-export.test.d.ts +8 -0
- package/dist/__tests__/cli/sarif-export.test.d.ts.map +1 -0
- package/dist/__tests__/cli/sarif-export.test.js +94 -0
- package/dist/__tests__/cli/sarif-export.test.js.map +1 -0
- package/dist/__tests__/cli/session-contract.test.d.ts +17 -0
- package/dist/__tests__/cli/session-contract.test.d.ts.map +1 -0
- package/dist/__tests__/cli/session-contract.test.js +225 -0
- package/dist/__tests__/cli/session-contract.test.js.map +1 -0
- package/dist/__tests__/cli/symbol-index.test.d.ts +7 -0
- package/dist/__tests__/cli/symbol-index.test.d.ts.map +1 -0
- package/dist/__tests__/cli/symbol-index.test.js +117 -0
- package/dist/__tests__/cli/symbol-index.test.js.map +1 -0
- package/dist/__tests__/cli/tool-show-mode.test.d.ts +10 -0
- package/dist/__tests__/cli/tool-show-mode.test.d.ts.map +1 -0
- package/dist/__tests__/cli/tool-show-mode.test.js +128 -0
- package/dist/__tests__/cli/tool-show-mode.test.js.map +1 -0
- package/dist/__tests__/cli/workspace-runner-polyglot.test.d.ts +10 -0
- package/dist/__tests__/cli/workspace-runner-polyglot.test.d.ts.map +1 -0
- package/dist/__tests__/cli/workspace-runner-polyglot.test.js +120 -0
- package/dist/__tests__/cli/workspace-runner-polyglot.test.js.map +1 -0
- package/dist/__tests__/graph-catalog-drift.test.d.ts +24 -0
- package/dist/__tests__/graph-catalog-drift.test.d.ts.map +1 -0
- package/dist/__tests__/graph-catalog-drift.test.js +34 -0
- package/dist/__tests__/graph-catalog-drift.test.js.map +1 -0
- package/dist/__tests__/internal-surface.test.d.ts +17 -0
- package/dist/__tests__/internal-surface.test.d.ts.map +1 -0
- package/dist/__tests__/internal-surface.test.js +45 -0
- package/dist/__tests__/internal-surface.test.js.map +1 -0
- package/dist/__tests__/lang-adapter/body-digest.test.d.ts +13 -0
- package/dist/__tests__/lang-adapter/body-digest.test.d.ts.map +1 -0
- package/dist/__tests__/lang-adapter/body-digest.test.js +51 -0
- package/dist/__tests__/lang-adapter/body-digest.test.js.map +1 -0
- package/dist/__tests__/lang-adapter/edge-helpers.test.d.ts +12 -0
- package/dist/__tests__/lang-adapter/edge-helpers.test.d.ts.map +1 -0
- package/dist/__tests__/lang-adapter/edge-helpers.test.js +147 -0
- package/dist/__tests__/lang-adapter/edge-helpers.test.js.map +1 -0
- package/dist/__tests__/lang-adapter/registry.test.d.ts +9 -0
- package/dist/__tests__/lang-adapter/registry.test.d.ts.map +1 -0
- package/dist/__tests__/lang-adapter/registry.test.js +228 -0
- package/dist/__tests__/lang-adapter/registry.test.js.map +1 -0
- package/dist/__tests__/persistence/catalog-repo.test.d.ts +2 -0
- package/dist/__tests__/persistence/catalog-repo.test.d.ts.map +1 -0
- package/dist/__tests__/persistence/catalog-repo.test.js +188 -0
- package/dist/__tests__/persistence/catalog-repo.test.js.map +1 -0
- package/dist/__tests__/persistence/session-payload.test.d.ts +2 -0
- package/dist/__tests__/persistence/session-payload.test.d.ts.map +1 -0
- package/dist/__tests__/persistence/session-payload.test.js +81 -0
- package/dist/__tests__/persistence/session-payload.test.js.map +1 -0
- package/dist/__tests__/persistence/session-replay.test.d.ts +10 -0
- package/dist/__tests__/persistence/session-replay.test.d.ts.map +1 -0
- package/dist/__tests__/persistence/session-replay.test.js +196 -0
- package/dist/__tests__/persistence/session-replay.test.js.map +1 -0
- package/dist/__tests__/public-api.test.d.ts +19 -0
- package/dist/__tests__/public-api.test.d.ts.map +1 -0
- package/dist/__tests__/public-api.test.js +96 -0
- package/dist/__tests__/public-api.test.js.map +1 -0
- package/dist/__tests__/render/catalog-json-types.test.d.ts +10 -0
- package/dist/__tests__/render/catalog-json-types.test.d.ts.map +1 -0
- package/dist/__tests__/render/catalog-json-types.test.js +121 -0
- package/dist/__tests__/render/catalog-json-types.test.js.map +1 -0
- package/dist/__tests__/render/catalog-json.test.d.ts +19 -0
- package/dist/__tests__/render/catalog-json.test.d.ts.map +1 -0
- package/dist/__tests__/render/catalog-json.test.js +435 -0
- package/dist/__tests__/render/catalog-json.test.js.map +1 -0
- package/dist/__tests__/render/opensip-id-derivation.test.d.ts +21 -0
- package/dist/__tests__/render/opensip-id-derivation.test.d.ts.map +1 -0
- package/dist/__tests__/render/opensip-id-derivation.test.js +159 -0
- package/dist/__tests__/render/opensip-id-derivation.test.js.map +1 -0
- package/dist/__tests__/render/rule-id-mapping.test.d.ts +13 -0
- package/dist/__tests__/render/rule-id-mapping.test.d.ts.map +1 -0
- package/dist/__tests__/render/rule-id-mapping.test.js +50 -0
- package/dist/__tests__/render/rule-id-mapping.test.js.map +1 -0
- package/dist/__tests__/render/sarif-opensip.test.d.ts +20 -0
- package/dist/__tests__/render/sarif-opensip.test.d.ts.map +1 -0
- package/dist/__tests__/render/sarif-opensip.test.js +235 -0
- package/dist/__tests__/render/sarif-opensip.test.js.map +1 -0
- package/dist/__tests__/resolution-mode.test.d.ts +10 -0
- package/dist/__tests__/resolution-mode.test.d.ts.map +1 -0
- package/dist/__tests__/resolution-mode.test.js +96 -0
- package/dist/__tests__/resolution-mode.test.js.map +1 -0
- package/dist/__tests__/resolve-callee.test.d.ts +2 -0
- package/dist/__tests__/resolve-callee.test.d.ts.map +1 -0
- package/dist/__tests__/resolve-callee.test.js +119 -0
- package/dist/__tests__/resolve-callee.test.js.map +1 -0
- package/dist/__tests__/rules/_entry-points.test.d.ts +8 -0
- package/dist/__tests__/rules/_entry-points.test.d.ts.map +1 -0
- package/dist/__tests__/rules/_entry-points.test.js +74 -0
- package/dist/__tests__/rules/_entry-points.test.js.map +1 -0
- package/dist/__tests__/rules/_helpers.d.ts +18 -0
- package/dist/__tests__/rules/_helpers.d.ts.map +1 -0
- package/dist/__tests__/rules/_helpers.js +72 -0
- package/dist/__tests__/rules/_helpers.js.map +1 -0
- package/dist/__tests__/rules/always-throws-branch.test.d.ts +9 -0
- package/dist/__tests__/rules/always-throws-branch.test.d.ts.map +1 -0
- package/dist/__tests__/rules/always-throws-branch.test.js +113 -0
- package/dist/__tests__/rules/always-throws-branch.test.js.map +1 -0
- package/dist/__tests__/rules/cycle-and-coupling.test.d.ts +13 -0
- package/dist/__tests__/rules/cycle-and-coupling.test.d.ts.map +1 -0
- package/dist/__tests__/rules/cycle-and-coupling.test.js +224 -0
- package/dist/__tests__/rules/cycle-and-coupling.test.js.map +1 -0
- package/dist/__tests__/rules/duplicated-function-body-config.test.d.ts +8 -0
- package/dist/__tests__/rules/duplicated-function-body-config.test.d.ts.map +1 -0
- package/dist/__tests__/rules/duplicated-function-body-config.test.js +132 -0
- package/dist/__tests__/rules/duplicated-function-body-config.test.js.map +1 -0
- package/dist/__tests__/rules/duplicated-function-body-cross-package.test.d.ts +10 -0
- package/dist/__tests__/rules/duplicated-function-body-cross-package.test.d.ts.map +1 -0
- package/dist/__tests__/rules/duplicated-function-body-cross-package.test.js +274 -0
- package/dist/__tests__/rules/duplicated-function-body-cross-package.test.js.map +1 -0
- package/dist/__tests__/rules/feature-column-parity.test.d.ts +11 -0
- package/dist/__tests__/rules/feature-column-parity.test.d.ts.map +1 -0
- package/dist/__tests__/rules/feature-column-parity.test.js +169 -0
- package/dist/__tests__/rules/feature-column-parity.test.js.map +1 -0
- package/dist/__tests__/rules/high-blast-untested.test.d.ts +13 -0
- package/dist/__tests__/rules/high-blast-untested.test.d.ts.map +1 -0
- package/dist/__tests__/rules/high-blast-untested.test.js +108 -0
- package/dist/__tests__/rules/high-blast-untested.test.js.map +1 -0
- package/dist/__tests__/rules/large-function.test.d.ts +11 -0
- package/dist/__tests__/rules/large-function.test.d.ts.map +1 -0
- package/dist/__tests__/rules/large-function.test.js +105 -0
- package/dist/__tests__/rules/large-function.test.js.map +1 -0
- package/dist/__tests__/rules/no-side-effect-path.test.d.ts +10 -0
- package/dist/__tests__/rules/no-side-effect-path.test.d.ts.map +1 -0
- package/dist/__tests__/rules/no-side-effect-path.test.js +301 -0
- package/dist/__tests__/rules/no-side-effect-path.test.js.map +1 -0
- package/dist/__tests__/rules/orphan-subtree-config.test.d.ts +8 -0
- package/dist/__tests__/rules/orphan-subtree-config.test.d.ts.map +1 -0
- package/dist/__tests__/rules/orphan-subtree-config.test.js +176 -0
- package/dist/__tests__/rules/orphan-subtree-config.test.js.map +1 -0
- package/dist/__tests__/rules/registry.test.d.ts +11 -0
- package/dist/__tests__/rules/registry.test.d.ts.map +1 -0
- package/dist/__tests__/rules/registry.test.js +50 -0
- package/dist/__tests__/rules/registry.test.js.map +1 -0
- package/dist/__tests__/rules/severity-override.test.d.ts +11 -0
- package/dist/__tests__/rules/severity-override.test.d.ts.map +1 -0
- package/dist/__tests__/rules/severity-override.test.js +67 -0
- package/dist/__tests__/rules/severity-override.test.js.map +1 -0
- package/dist/__tests__/rules/test-only-reachable.test.d.ts +9 -0
- package/dist/__tests__/rules/test-only-reachable.test.d.ts.map +1 -0
- package/dist/__tests__/rules/test-only-reachable.test.js +142 -0
- package/dist/__tests__/rules/test-only-reachable.test.js.map +1 -0
- package/dist/__tests__/rules/wide-function.test.d.ts +9 -0
- package/dist/__tests__/rules/wide-function.test.d.ts.map +1 -0
- package/dist/__tests__/rules/wide-function.test.js +64 -0
- package/dist/__tests__/rules/wide-function.test.js.map +1 -0
- package/dist/__tests__/test-utils/with-graph-scope.d.ts +14 -0
- package/dist/__tests__/test-utils/with-graph-scope.d.ts.map +1 -0
- package/dist/__tests__/test-utils/with-graph-scope.js +26 -0
- package/dist/__tests__/test-utils/with-graph-scope.js.map +1 -0
- package/dist/__tests__/tool-branches.test.d.ts +18 -0
- package/dist/__tests__/tool-branches.test.d.ts.map +1 -0
- package/dist/__tests__/tool-branches.test.js +262 -0
- package/dist/__tests__/tool-branches.test.js.map +1 -0
- package/dist/__tests__/tool-register.test.d.ts +16 -0
- package/dist/__tests__/tool-register.test.d.ts.map +1 -0
- package/dist/__tests__/tool-register.test.js +419 -0
- package/dist/__tests__/tool-register.test.js.map +1 -0
- package/dist/__tests__/tool.test.d.ts +18 -0
- package/dist/__tests__/tool.test.d.ts.map +1 -0
- package/dist/__tests__/tool.test.js +65 -0
- package/dist/__tests__/tool.test.js.map +1 -0
- package/dist/baseline-strategy.d.ts +28 -0
- package/dist/baseline-strategy.d.ts.map +1 -0
- package/dist/baseline-strategy.js +27 -0
- package/dist/baseline-strategy.js.map +1 -0
- package/dist/cache/engine-version.d.ts +69 -0
- package/dist/cache/engine-version.d.ts.map +1 -0
- package/dist/cache/engine-version.js +60 -0
- package/dist/cache/engine-version.js.map +1 -0
- package/dist/cache/invalidate.d.ts +60 -0
- package/dist/cache/invalidate.d.ts.map +1 -0
- package/dist/cache/invalidate.js +120 -0
- package/dist/cache/invalidate.js.map +1 -0
- package/dist/cli/__tests__/build-envelope.test.d.ts +8 -0
- package/dist/cli/__tests__/build-envelope.test.d.ts.map +1 -0
- package/dist/cli/__tests__/build-envelope.test.js +70 -0
- package/dist/cli/__tests__/build-envelope.test.js.map +1 -0
- package/dist/cli/__tests__/dispatch-envelope.test.d.ts +15 -0
- package/dist/cli/__tests__/dispatch-envelope.test.d.ts.map +1 -0
- package/dist/cli/__tests__/dispatch-envelope.test.js +73 -0
- package/dist/cli/__tests__/dispatch-envelope.test.js.map +1 -0
- package/dist/cli/__tests__/dispatch-suppression-root.test.d.ts +18 -0
- package/dist/cli/__tests__/dispatch-suppression-root.test.d.ts.map +1 -0
- package/dist/cli/__tests__/dispatch-suppression-root.test.js +91 -0
- package/dist/cli/__tests__/dispatch-suppression-root.test.js.map +1 -0
- package/dist/cli/__tests__/graph-config-schema.test.d.ts +7 -0
- package/dist/cli/__tests__/graph-config-schema.test.d.ts.map +1 -0
- package/dist/cli/__tests__/graph-config-schema.test.js +60 -0
- package/dist/cli/__tests__/graph-config-schema.test.js.map +1 -0
- package/dist/cli/__tests__/graph-gate-mode.test.d.ts +15 -0
- package/dist/cli/__tests__/graph-gate-mode.test.d.ts.map +1 -0
- package/dist/cli/__tests__/graph-gate-mode.test.js +99 -0
- package/dist/cli/__tests__/graph-gate-mode.test.js.map +1 -0
- package/dist/cli/__tests__/graph-recipes.test.d.ts +7 -0
- package/dist/cli/__tests__/graph-recipes.test.d.ts.map +1 -0
- package/dist/cli/__tests__/graph-recipes.test.js +24 -0
- package/dist/cli/__tests__/graph-recipes.test.js.map +1 -0
- package/dist/cli/__tests__/graph-report.test.d.ts +7 -0
- package/dist/cli/__tests__/graph-report.test.d.ts.map +1 -0
- package/dist/cli/__tests__/graph-report.test.js +138 -0
- package/dist/cli/__tests__/graph-report.test.js.map +1 -0
- package/dist/cli/__tests__/graph-tracer.test.d.ts +11 -0
- package/dist/cli/__tests__/graph-tracer.test.d.ts.map +1 -0
- package/dist/cli/__tests__/graph-tracer.test.js +41 -0
- package/dist/cli/__tests__/graph-tracer.test.js.map +1 -0
- package/dist/cli/__tests__/graph-worker.test.d.ts +13 -0
- package/dist/cli/__tests__/graph-worker.test.d.ts.map +1 -0
- package/dist/cli/__tests__/graph-worker.test.js +127 -0
- package/dist/cli/__tests__/graph-worker.test.js.map +1 -0
- package/dist/cli/__tests__/list-files.test.d.ts +12 -0
- package/dist/cli/__tests__/list-files.test.d.ts.map +1 -0
- package/dist/cli/__tests__/list-files.test.js +146 -0
- package/dist/cli/__tests__/list-files.test.js.map +1 -0
- package/dist/cli/__tests__/live-suppression-parity.test.d.ts +23 -0
- package/dist/cli/__tests__/live-suppression-parity.test.d.ts.map +1 -0
- package/dist/cli/__tests__/live-suppression-parity.test.js +136 -0
- package/dist/cli/__tests__/live-suppression-parity.test.js.map +1 -0
- package/dist/cli/__tests__/orchestrate-spans.test.d.ts +18 -0
- package/dist/cli/__tests__/orchestrate-spans.test.d.ts.map +1 -0
- package/dist/cli/__tests__/orchestrate-spans.test.js +108 -0
- package/dist/cli/__tests__/orchestrate-spans.test.js.map +1 -0
- package/dist/cli/__tests__/shard-worker.test.d.ts +10 -0
- package/dist/cli/__tests__/shard-worker.test.d.ts.map +1 -0
- package/dist/cli/__tests__/shard-worker.test.js +153 -0
- package/dist/cli/__tests__/shard-worker.test.js.map +1 -0
- package/dist/cli/__tests__/workspace-report.test.d.ts +6 -0
- package/dist/cli/__tests__/workspace-report.test.d.ts.map +1 -0
- package/dist/cli/__tests__/workspace-report.test.js +89 -0
- package/dist/cli/__tests__/workspace-report.test.js.map +1 -0
- package/dist/cli/apply-suppressions.d.ts +86 -0
- package/dist/cli/apply-suppressions.d.ts.map +1 -0
- package/dist/cli/apply-suppressions.js +101 -0
- package/dist/cli/apply-suppressions.js.map +1 -0
- package/dist/cli/apply-suppressions.test.d.ts +12 -0
- package/dist/cli/apply-suppressions.test.d.ts.map +1 -0
- package/dist/cli/apply-suppressions.test.js +85 -0
- package/dist/cli/apply-suppressions.test.js.map +1 -0
- package/dist/cli/build-envelope.d.ts +53 -0
- package/dist/cli/build-envelope.d.ts.map +1 -0
- package/dist/cli/build-envelope.js +88 -0
- package/dist/cli/build-envelope.js.map +1 -0
- package/dist/cli/detect.d.ts +37 -0
- package/dist/cli/detect.d.ts.map +1 -0
- package/dist/cli/detect.js +60 -0
- package/dist/cli/detect.js.map +1 -0
- package/dist/cli/equivalence-check-command.d.ts +45 -0
- package/dist/cli/equivalence-check-command.d.ts.map +1 -0
- package/dist/cli/equivalence-check-command.js +196 -0
- package/dist/cli/equivalence-check-command.js.map +1 -0
- package/dist/cli/graph/graph-aux-command-specs.d.ts +60 -0
- package/dist/cli/graph/graph-aux-command-specs.d.ts.map +1 -0
- package/dist/cli/graph/graph-aux-command-specs.js +390 -0
- package/dist/cli/graph/graph-aux-command-specs.js.map +1 -0
- package/dist/cli/graph/graph-command-spec.d.ts +43 -0
- package/dist/cli/graph/graph-command-spec.d.ts.map +1 -0
- package/dist/cli/graph/graph-command-spec.js +456 -0
- package/dist/cli/graph/graph-command-spec.js.map +1 -0
- package/dist/cli/graph-config-schema.d.ts +70 -0
- package/dist/cli/graph-config-schema.d.ts.map +1 -0
- package/dist/cli/graph-config-schema.js +68 -0
- package/dist/cli/graph-config-schema.js.map +1 -0
- package/dist/cli/graph-config.d.ts +53 -0
- package/dist/cli/graph-config.d.ts.map +1 -0
- package/dist/cli/graph-config.js +111 -0
- package/dist/cli/graph-config.js.map +1 -0
- package/dist/cli/graph-modes.d.ts +36 -0
- package/dist/cli/graph-modes.d.ts.map +1 -0
- package/dist/cli/graph-modes.js +161 -0
- package/dist/cli/graph-modes.js.map +1 -0
- package/dist/cli/graph-options.d.ts +143 -0
- package/dist/cli/graph-options.d.ts.map +1 -0
- package/dist/cli/graph-options.js +15 -0
- package/dist/cli/graph-options.js.map +1 -0
- package/dist/cli/graph-progress.d.ts +31 -0
- package/dist/cli/graph-progress.d.ts.map +1 -0
- package/dist/cli/graph-progress.js +56 -0
- package/dist/cli/graph-progress.js.map +1 -0
- package/dist/cli/graph-recipes.d.ts +23 -0
- package/dist/cli/graph-recipes.d.ts.map +1 -0
- package/dist/cli/graph-recipes.js +44 -0
- package/dist/cli/graph-recipes.js.map +1 -0
- package/dist/cli/graph-report.d.ts +79 -0
- package/dist/cli/graph-report.d.ts.map +1 -0
- package/dist/cli/graph-report.js +186 -0
- package/dist/cli/graph-report.js.map +1 -0
- package/dist/cli/graph-runner.d.ts +106 -0
- package/dist/cli/graph-runner.d.ts.map +1 -0
- package/dist/cli/graph-runner.js +274 -0
- package/dist/cli/graph-runner.js.map +1 -0
- package/dist/cli/graph-tracer.d.ts +27 -0
- package/dist/cli/graph-tracer.d.ts.map +1 -0
- package/dist/cli/graph-tracer.js +33 -0
- package/dist/cli/graph-tracer.js.map +1 -0
- package/dist/cli/graph-worker.d.ts +29 -0
- package/dist/cli/graph-worker.d.ts.map +1 -0
- package/dist/cli/graph-worker.js +86 -0
- package/dist/cli/graph-worker.js.map +1 -0
- package/dist/cli/graph.d.ts +171 -0
- package/dist/cli/graph.d.ts.map +1 -0
- package/dist/cli/graph.js +1041 -0
- package/dist/cli/graph.js.map +1 -0
- package/dist/cli/heap-preflight.d.ts +62 -0
- package/dist/cli/heap-preflight.d.ts.map +1 -0
- package/dist/cli/heap-preflight.js +176 -0
- package/dist/cli/heap-preflight.js.map +1 -0
- package/dist/cli/list-files.d.ts +37 -0
- package/dist/cli/list-files.d.ts.map +1 -0
- package/dist/cli/list-files.js +166 -0
- package/dist/cli/list-files.js.map +1 -0
- package/dist/cli/lookup.d.ts +19 -0
- package/dist/cli/lookup.d.ts.map +1 -0
- package/dist/cli/lookup.js +87 -0
- package/dist/cli/lookup.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/_equivalence-harness.d.ts +47 -0
- package/dist/cli/orchestrate/__tests__/_equivalence-harness.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/_equivalence-harness.js +331 -0
- package/dist/cli/orchestrate/__tests__/_equivalence-harness.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/_flat-large-fixture.d.ts +69 -0
- package/dist/cli/orchestrate/__tests__/_flat-large-fixture.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/_flat-large-fixture.js +181 -0
- package/dist/cli/orchestrate/__tests__/_flat-large-fixture.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/canonical-file-set.test.d.ts +8 -0
- package/dist/cli/orchestrate/__tests__/canonical-file-set.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/canonical-file-set.test.js +51 -0
- package/dist/cli/orchestrate/__tests__/canonical-file-set.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/catalog-builder-incremental.test.d.ts +9 -0
- package/dist/cli/orchestrate/__tests__/catalog-builder-incremental.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/catalog-builder-incremental.test.js +147 -0
- package/dist/cli/orchestrate/__tests__/catalog-builder-incremental.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/cross-shard-resolve.test.d.ts +12 -0
- package/dist/cli/orchestrate/__tests__/cross-shard-resolve.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/cross-shard-resolve.test.js +509 -0
- package/dist/cli/orchestrate/__tests__/cross-shard-resolve.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/determinism.test.d.ts +19 -0
- package/dist/cli/orchestrate/__tests__/determinism.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/determinism.test.js +163 -0
- package/dist/cli/orchestrate/__tests__/determinism.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/edge-identity.test.d.ts +9 -0
- package/dist/cli/orchestrate/__tests__/edge-identity.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/edge-identity.test.js +103 -0
- package/dist/cli/orchestrate/__tests__/edge-identity.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/equivalence-check.test.d.ts +10 -0
- package/dist/cli/orchestrate/__tests__/equivalence-check.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/equivalence-check.test.js +277 -0
- package/dist/cli/orchestrate/__tests__/equivalence-check.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/equivalence-repo-scale.test.d.ts +51 -0
- package/dist/cli/orchestrate/__tests__/equivalence-repo-scale.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/equivalence-repo-scale.test.js +183 -0
- package/dist/cli/orchestrate/__tests__/equivalence-repo-scale.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/equivalence.test.d.ts +47 -0
- package/dist/cli/orchestrate/__tests__/equivalence.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/equivalence.test.js +259 -0
- package/dist/cli/orchestrate/__tests__/equivalence.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/exact-boundary-recovery.test.d.ts +9 -0
- package/dist/cli/orchestrate/__tests__/exact-boundary-recovery.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/exact-boundary-recovery.test.js +105 -0
- package/dist/cli/orchestrate/__tests__/exact-boundary-recovery.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/export-index.test.d.ts +12 -0
- package/dist/cli/orchestrate/__tests__/export-index.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/export-index.test.js +346 -0
- package/dist/cli/orchestrate/__tests__/export-index.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/flat-large-fixture.test.d.ts +16 -0
- package/dist/cli/orchestrate/__tests__/flat-large-fixture.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/flat-large-fixture.test.js +99 -0
- package/dist/cli/orchestrate/__tests__/flat-large-fixture.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/flat-monorepo-strategy.test.d.ts +11 -0
- package/dist/cli/orchestrate/__tests__/flat-monorepo-strategy.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/flat-monorepo-strategy.test.js +271 -0
- package/dist/cli/orchestrate/__tests__/flat-monorepo-strategy.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/function-set-parity.test.d.ts +38 -0
- package/dist/cli/orchestrate/__tests__/function-set-parity.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/function-set-parity.test.js +163 -0
- package/dist/cli/orchestrate/__tests__/function-set-parity.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/incremental-merge.test.d.ts +8 -0
- package/dist/cli/orchestrate/__tests__/incremental-merge.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/incremental-merge.test.js +153 -0
- package/dist/cli/orchestrate/__tests__/incremental-merge.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/partition-files.test.d.ts +10 -0
- package/dist/cli/orchestrate/__tests__/partition-files.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/partition-files.test.js +104 -0
- package/dist/cli/orchestrate/__tests__/partition-files.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/resolution-completeness-floor.test.d.ts +21 -0
- package/dist/cli/orchestrate/__tests__/resolution-completeness-floor.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/resolution-completeness-floor.test.js +59 -0
- package/dist/cli/orchestrate/__tests__/resolution-completeness-floor.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/shard-model.test.d.ts +8 -0
- package/dist/cli/orchestrate/__tests__/shard-model.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/shard-model.test.js +77 -0
- package/dist/cli/orchestrate/__tests__/shard-model.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/shard-runner-spawn.test.d.ts +13 -0
- package/dist/cli/orchestrate/__tests__/shard-runner-spawn.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/shard-runner-spawn.test.js +103 -0
- package/dist/cli/orchestrate/__tests__/shard-runner-spawn.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/sharded-graph.test.d.ts +13 -0
- package/dist/cli/orchestrate/__tests__/sharded-graph.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/sharded-graph.test.js +257 -0
- package/dist/cli/orchestrate/__tests__/sharded-graph.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/worker-pool.test.d.ts +6 -0
- package/dist/cli/orchestrate/__tests__/worker-pool.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/worker-pool.test.js +38 -0
- package/dist/cli/orchestrate/__tests__/worker-pool.test.js.map +1 -0
- package/dist/cli/orchestrate/cache-orchestrator.d.ts +42 -0
- package/dist/cli/orchestrate/cache-orchestrator.d.ts.map +1 -0
- package/dist/cli/orchestrate/cache-orchestrator.js +92 -0
- package/dist/cli/orchestrate/cache-orchestrator.js.map +1 -0
- package/dist/cli/orchestrate/canonical-file-set.d.ts +51 -0
- package/dist/cli/orchestrate/canonical-file-set.d.ts.map +1 -0
- package/dist/cli/orchestrate/canonical-file-set.js +58 -0
- package/dist/cli/orchestrate/canonical-file-set.js.map +1 -0
- package/dist/cli/orchestrate/catalog-builder.d.ts +121 -0
- package/dist/cli/orchestrate/catalog-builder.d.ts.map +1 -0
- package/dist/cli/orchestrate/catalog-builder.js +279 -0
- package/dist/cli/orchestrate/catalog-builder.js.map +1 -0
- package/dist/cli/orchestrate/catalog-stats.d.ts +31 -0
- package/dist/cli/orchestrate/catalog-stats.d.ts.map +1 -0
- package/dist/cli/orchestrate/catalog-stats.js +52 -0
- package/dist/cli/orchestrate/catalog-stats.js.map +1 -0
- package/dist/cli/orchestrate/cross-shard-resolve.d.ts +190 -0
- package/dist/cli/orchestrate/cross-shard-resolve.d.ts.map +1 -0
- package/dist/cli/orchestrate/cross-shard-resolve.js +523 -0
- package/dist/cli/orchestrate/cross-shard-resolve.js.map +1 -0
- package/dist/cli/orchestrate/edge-identity.d.ts +48 -0
- package/dist/cli/orchestrate/edge-identity.d.ts.map +1 -0
- package/dist/cli/orchestrate/edge-identity.js +68 -0
- package/dist/cli/orchestrate/edge-identity.js.map +1 -0
- package/dist/cli/orchestrate/equivalence-check.d.ts +227 -0
- package/dist/cli/orchestrate/equivalence-check.d.ts.map +1 -0
- package/dist/cli/orchestrate/equivalence-check.js +264 -0
- package/dist/cli/orchestrate/equivalence-check.js.map +1 -0
- package/dist/cli/orchestrate/exact-boundary-recovery.d.ts +33 -0
- package/dist/cli/orchestrate/exact-boundary-recovery.d.ts.map +1 -0
- package/dist/cli/orchestrate/exact-boundary-recovery.js +62 -0
- package/dist/cli/orchestrate/exact-boundary-recovery.js.map +1 -0
- package/dist/cli/orchestrate/flat-monorepo-strategy.d.ts +171 -0
- package/dist/cli/orchestrate/flat-monorepo-strategy.d.ts.map +1 -0
- package/dist/cli/orchestrate/flat-monorepo-strategy.js +328 -0
- package/dist/cli/orchestrate/flat-monorepo-strategy.js.map +1 -0
- package/dist/cli/orchestrate/incremental-merge.d.ts +46 -0
- package/dist/cli/orchestrate/incremental-merge.d.ts.map +1 -0
- package/dist/cli/orchestrate/incremental-merge.js +236 -0
- package/dist/cli/orchestrate/incremental-merge.js.map +1 -0
- package/dist/cli/orchestrate/partition-chunk.d.ts +36 -0
- package/dist/cli/orchestrate/partition-chunk.d.ts.map +1 -0
- package/dist/cli/orchestrate/partition-chunk.js +37 -0
- package/dist/cli/orchestrate/partition-chunk.js.map +1 -0
- package/dist/cli/orchestrate/partition-files.d.ts +52 -0
- package/dist/cli/orchestrate/partition-files.d.ts.map +1 -0
- package/dist/cli/orchestrate/partition-files.js +94 -0
- package/dist/cli/orchestrate/partition-files.js.map +1 -0
- package/dist/cli/orchestrate/resolution-trace.d.ts +11 -0
- package/dist/cli/orchestrate/resolution-trace.d.ts.map +1 -0
- package/dist/cli/orchestrate/resolution-trace.js +27 -0
- package/dist/cli/orchestrate/resolution-trace.js.map +1 -0
- package/dist/cli/orchestrate/shard-model.d.ts +99 -0
- package/dist/cli/orchestrate/shard-model.d.ts.map +1 -0
- package/dist/cli/orchestrate/shard-model.js +23 -0
- package/dist/cli/orchestrate/shard-model.js.map +1 -0
- package/dist/cli/orchestrate/shard-runner.d.ts +65 -0
- package/dist/cli/orchestrate/shard-runner.d.ts.map +1 -0
- package/dist/cli/orchestrate/shard-runner.js +169 -0
- package/dist/cli/orchestrate/shard-runner.js.map +1 -0
- package/dist/cli/orchestrate/sharded-graph.d.ts +86 -0
- package/dist/cli/orchestrate/sharded-graph.d.ts.map +1 -0
- package/dist/cli/orchestrate/sharded-graph.js +227 -0
- package/dist/cli/orchestrate/sharded-graph.js.map +1 -0
- package/dist/cli/orchestrate/types.d.ts +31 -0
- package/dist/cli/orchestrate/types.d.ts.map +1 -0
- package/dist/cli/orchestrate/types.js +24 -0
- package/dist/cli/orchestrate/types.js.map +1 -0
- package/dist/cli/orchestrate/worker-pool.d.ts +16 -0
- package/dist/cli/orchestrate/worker-pool.d.ts.map +1 -0
- package/dist/cli/orchestrate/worker-pool.js +39 -0
- package/dist/cli/orchestrate/worker-pool.js.map +1 -0
- package/dist/cli/orchestrate.d.ts +106 -0
- package/dist/cli/orchestrate.d.ts.map +1 -0
- package/dist/cli/orchestrate.js +228 -0
- package/dist/cli/orchestrate.js.map +1 -0
- package/dist/cli/positional-paths.d.ts +23 -0
- package/dist/cli/positional-paths.d.ts.map +1 -0
- package/dist/cli/positional-paths.js +64 -0
- package/dist/cli/positional-paths.js.map +1 -0
- package/dist/cli/pressure-monitor.d.ts +62 -0
- package/dist/cli/pressure-monitor.d.ts.map +1 -0
- package/dist/cli/pressure-monitor.js +110 -0
- package/dist/cli/pressure-monitor.js.map +1 -0
- package/dist/cli/profile.d.ts +82 -0
- package/dist/cli/profile.d.ts.map +1 -0
- package/dist/cli/profile.js +120 -0
- package/dist/cli/profile.js.map +1 -0
- package/dist/cli/report-data.d.ts +46 -0
- package/dist/cli/report-data.d.ts.map +1 -0
- package/dist/cli/report-data.js +48 -0
- package/dist/cli/report-data.js.map +1 -0
- package/dist/cli/resolve-adapters.d.ts +19 -0
- package/dist/cli/resolve-adapters.d.ts.map +1 -0
- package/dist/cli/resolve-adapters.js +38 -0
- package/dist/cli/resolve-adapters.js.map +1 -0
- package/dist/cli/sarif-export.d.ts +40 -0
- package/dist/cli/sarif-export.d.ts.map +1 -0
- package/dist/cli/sarif-export.js +69 -0
- package/dist/cli/sarif-export.js.map +1 -0
- package/dist/cli/shard-worker.d.ts +25 -0
- package/dist/cli/shard-worker.d.ts.map +1 -0
- package/dist/cli/shard-worker.js +98 -0
- package/dist/cli/shard-worker.js.map +1 -0
- package/dist/cli/symbol-index.d.ts +51 -0
- package/dist/cli/symbol-index.d.ts.map +1 -0
- package/dist/cli/symbol-index.js +120 -0
- package/dist/cli/symbol-index.js.map +1 -0
- package/dist/cli/workspace-report.d.ts +32 -0
- package/dist/cli/workspace-report.d.ts.map +1 -0
- package/dist/cli/workspace-report.js +107 -0
- package/dist/cli/workspace-report.js.map +1 -0
- package/dist/cli/workspace-runner.d.ts +104 -0
- package/dist/cli/workspace-runner.d.ts.map +1 -0
- package/dist/cli/workspace-runner.js +166 -0
- package/dist/cli/workspace-runner.js.map +1 -0
- package/dist/cross-package/export-index.d.ts +118 -0
- package/dist/cross-package/export-index.d.ts.map +1 -0
- package/dist/cross-package/export-index.js +296 -0
- package/dist/cross-package/export-index.js.map +1 -0
- package/dist/cross-package/posix-path.d.ts +16 -0
- package/dist/cross-package/posix-path.d.ts.map +1 -0
- package/dist/cross-package/posix-path.js +18 -0
- package/dist/cross-package/posix-path.js.map +1 -0
- package/dist/cross-package/resolve.d.ts +68 -0
- package/dist/cross-package/resolve.d.ts.map +1 -0
- package/dist/cross-package/resolve.js +83 -0
- package/dist/cross-package/resolve.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +25 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +38 -0
- package/dist/internal.js.map +1 -0
- package/dist/lang-adapter/body-digest.d.ts +46 -0
- package/dist/lang-adapter/body-digest.d.ts.map +1 -0
- package/dist/lang-adapter/body-digest.js +49 -0
- package/dist/lang-adapter/body-digest.js.map +1 -0
- package/dist/lang-adapter/edge-helpers.d.ts +104 -0
- package/dist/lang-adapter/edge-helpers.d.ts.map +1 -0
- package/dist/lang-adapter/edge-helpers.js +120 -0
- package/dist/lang-adapter/edge-helpers.js.map +1 -0
- package/dist/lang-adapter/registry.d.ts +59 -0
- package/dist/lang-adapter/registry.d.ts.map +1 -0
- package/dist/lang-adapter/registry.js +100 -0
- package/dist/lang-adapter/registry.js.map +1 -0
- package/dist/lang-adapter/selector.d.ts +39 -0
- package/dist/lang-adapter/selector.d.ts.map +1 -0
- package/dist/lang-adapter/selector.js +140 -0
- package/dist/lang-adapter/selector.js.map +1 -0
- package/dist/lang-adapter/types.d.ts +217 -0
- package/dist/lang-adapter/types.d.ts.map +1 -0
- package/dist/lang-adapter/types.js +18 -0
- package/dist/lang-adapter/types.js.map +1 -0
- package/dist/owner-key.d.ts +22 -0
- package/dist/owner-key.d.ts.map +1 -0
- package/dist/owner-key.js +25 -0
- package/dist/owner-key.js.map +1 -0
- package/dist/persistence/__tests__/shard-fragment-cache.test.d.ts +8 -0
- package/dist/persistence/__tests__/shard-fragment-cache.test.d.ts.map +1 -0
- package/dist/persistence/__tests__/shard-fragment-cache.test.js +126 -0
- package/dist/persistence/__tests__/shard-fragment-cache.test.js.map +1 -0
- package/dist/persistence/catalog-repo.d.ts +77 -0
- package/dist/persistence/catalog-repo.d.ts.map +1 -0
- package/dist/persistence/catalog-repo.js +229 -0
- package/dist/persistence/catalog-repo.js.map +1 -0
- package/dist/persistence/schema.d.ts +249 -0
- package/dist/persistence/schema.d.ts.map +1 -0
- package/dist/persistence/schema.js +53 -0
- package/dist/persistence/schema.js.map +1 -0
- package/dist/persistence/session-payload.d.ts +96 -0
- package/dist/persistence/session-payload.d.ts.map +1 -0
- package/dist/persistence/session-payload.js +116 -0
- package/dist/persistence/session-payload.js.map +1 -0
- package/dist/persistence/session-replay.d.ts +15 -0
- package/dist/persistence/session-replay.d.ts.map +1 -0
- package/dist/persistence/session-replay.js +80 -0
- package/dist/persistence/session-replay.js.map +1 -0
- package/dist/pipeline/__tests__/assign-packages.test.d.ts +2 -0
- package/dist/pipeline/__tests__/assign-packages.test.d.ts.map +1 -0
- package/dist/pipeline/__tests__/assign-packages.test.js +88 -0
- package/dist/pipeline/__tests__/assign-packages.test.js.map +1 -0
- package/dist/pipeline/__tests__/constrain-edges.test.d.ts +2 -0
- package/dist/pipeline/__tests__/constrain-edges.test.d.ts.map +1 -0
- package/dist/pipeline/__tests__/constrain-edges.test.js +228 -0
- package/dist/pipeline/__tests__/constrain-edges.test.js.map +1 -0
- package/dist/pipeline/__tests__/features.test.d.ts +9 -0
- package/dist/pipeline/__tests__/features.test.d.ts.map +1 -0
- package/dist/pipeline/__tests__/features.test.js +458 -0
- package/dist/pipeline/__tests__/features.test.js.map +1 -0
- package/dist/pipeline/__tests__/indexes-imports.test.d.ts +2 -0
- package/dist/pipeline/__tests__/indexes-imports.test.d.ts.map +1 -0
- package/dist/pipeline/__tests__/indexes-imports.test.js +114 -0
- package/dist/pipeline/__tests__/indexes-imports.test.js.map +1 -0
- package/dist/pipeline/assign-packages.d.ts +18 -0
- package/dist/pipeline/assign-packages.d.ts.map +1 -0
- package/dist/pipeline/assign-packages.js +86 -0
- package/dist/pipeline/assign-packages.js.map +1 -0
- package/dist/pipeline/constrain-edges.d.ts +34 -0
- package/dist/pipeline/constrain-edges.d.ts.map +1 -0
- package/dist/pipeline/constrain-edges.js +139 -0
- package/dist/pipeline/constrain-edges.js.map +1 -0
- package/dist/pipeline/feature-deps.d.ts +19 -0
- package/dist/pipeline/feature-deps.d.ts.map +1 -0
- package/dist/pipeline/feature-deps.js +28 -0
- package/dist/pipeline/feature-deps.js.map +1 -0
- package/dist/pipeline/features.d.ts +50 -0
- package/dist/pipeline/features.d.ts.map +1 -0
- package/dist/pipeline/features.js +462 -0
- package/dist/pipeline/features.js.map +1 -0
- package/dist/pipeline/indexes.d.ts +27 -0
- package/dist/pipeline/indexes.d.ts.map +1 -0
- package/dist/pipeline/indexes.js +159 -0
- package/dist/pipeline/indexes.js.map +1 -0
- package/dist/recipes/__tests__/built-in-recipes.test.d.ts +5 -0
- package/dist/recipes/__tests__/built-in-recipes.test.d.ts.map +1 -0
- package/dist/recipes/__tests__/built-in-recipes.test.js +24 -0
- package/dist/recipes/__tests__/built-in-recipes.test.js.map +1 -0
- package/dist/recipes/__tests__/registry.test.d.ts +7 -0
- package/dist/recipes/__tests__/registry.test.d.ts.map +1 -0
- package/dist/recipes/__tests__/registry.test.js +34 -0
- package/dist/recipes/__tests__/registry.test.js.map +1 -0
- package/dist/recipes/__tests__/resolve.test.d.ts +10 -0
- package/dist/recipes/__tests__/resolve.test.d.ts.map +1 -0
- package/dist/recipes/__tests__/resolve.test.js +38 -0
- package/dist/recipes/__tests__/resolve.test.js.map +1 -0
- package/dist/recipes/built-in-recipes.d.ts +26 -0
- package/dist/recipes/built-in-recipes.d.ts.map +1 -0
- package/dist/recipes/built-in-recipes.js +43 -0
- package/dist/recipes/built-in-recipes.js.map +1 -0
- package/dist/recipes/registry.d.ts +31 -0
- package/dist/recipes/registry.d.ts.map +1 -0
- package/dist/recipes/registry.js +48 -0
- package/dist/recipes/registry.js.map +1 -0
- package/dist/recipes/resolve.d.ts +31 -0
- package/dist/recipes/resolve.d.ts.map +1 -0
- package/dist/recipes/resolve.js +70 -0
- package/dist/recipes/resolve.js.map +1 -0
- package/dist/recipes/types.d.ts +58 -0
- package/dist/recipes/types.d.ts.map +1 -0
- package/dist/recipes/types.js +39 -0
- package/dist/recipes/types.js.map +1 -0
- package/dist/render/__tests__/catalog-json.test.d.ts +9 -0
- package/dist/render/__tests__/catalog-json.test.d.ts.map +1 -0
- package/dist/render/__tests__/catalog-json.test.js +132 -0
- package/dist/render/__tests__/catalog-json.test.js.map +1 -0
- package/dist/render/catalog-json-types.d.ts +114 -0
- package/dist/render/catalog-json-types.d.ts.map +1 -0
- package/dist/render/catalog-json-types.js +23 -0
- package/dist/render/catalog-json-types.js.map +1 -0
- package/dist/render/catalog-json.d.ts +43 -0
- package/dist/render/catalog-json.d.ts.map +1 -0
- package/dist/render/catalog-json.js +303 -0
- package/dist/render/catalog-json.js.map +1 -0
- package/dist/render/opensip-id-derivation.d.ts +73 -0
- package/dist/render/opensip-id-derivation.d.ts.map +1 -0
- package/dist/render/opensip-id-derivation.js +65 -0
- package/dist/render/opensip-id-derivation.js.map +1 -0
- package/dist/render/rule-id-mapping.d.ts +61 -0
- package/dist/render/rule-id-mapping.d.ts.map +1 -0
- package/dist/render/rule-id-mapping.js +82 -0
- package/dist/render/rule-id-mapping.js.map +1 -0
- package/dist/resolve-callee.d.ts +50 -0
- package/dist/resolve-callee.d.ts.map +1 -0
- package/dist/resolve-callee.js +80 -0
- package/dist/resolve-callee.js.map +1 -0
- package/dist/rules/__tests__/__fixtures__/catalog.fixture.d.ts +22 -0
- package/dist/rules/__tests__/__fixtures__/catalog.fixture.d.ts.map +1 -0
- package/dist/rules/__tests__/__fixtures__/catalog.fixture.js +143 -0
- package/dist/rules/__tests__/__fixtures__/catalog.fixture.js.map +1 -0
- package/dist/rules/__tests__/create-graph-signal.test.d.ts +8 -0
- package/dist/rules/__tests__/create-graph-signal.test.d.ts.map +1 -0
- package/dist/rules/__tests__/create-graph-signal.test.js +55 -0
- package/dist/rules/__tests__/create-graph-signal.test.js.map +1 -0
- package/dist/rules/__tests__/define-rule.test.d.ts +13 -0
- package/dist/rules/__tests__/define-rule.test.d.ts.map +1 -0
- package/dist/rules/__tests__/define-rule.test.js +102 -0
- package/dist/rules/__tests__/define-rule.test.js.map +1 -0
- package/dist/rules/__tests__/fingerprint-golden.test.d.ts +21 -0
- package/dist/rules/__tests__/fingerprint-golden.test.d.ts.map +1 -0
- package/dist/rules/__tests__/fingerprint-golden.test.js +69 -0
- package/dist/rules/__tests__/fingerprint-golden.test.js.map +1 -0
- package/dist/rules/__tests__/registry.test.d.ts +6 -0
- package/dist/rules/__tests__/registry.test.d.ts.map +1 -0
- package/dist/rules/__tests__/registry.test.js +37 -0
- package/dist/rules/__tests__/registry.test.js.map +1 -0
- package/dist/rules/__tests__/rule-behaviors.test.d.ts +9 -0
- package/dist/rules/__tests__/rule-behaviors.test.d.ts.map +1 -0
- package/dist/rules/__tests__/rule-behaviors.test.js +204 -0
- package/dist/rules/__tests__/rule-behaviors.test.js.map +1 -0
- package/dist/rules/__tests__/signal-output.snapshot.test.d.ts +11 -0
- package/dist/rules/__tests__/signal-output.snapshot.test.d.ts.map +1 -0
- package/dist/rules/__tests__/signal-output.snapshot.test.js +55 -0
- package/dist/rules/__tests__/signal-output.snapshot.test.js.map +1 -0
- package/dist/rules/_approximation.d.ts +23 -0
- package/dist/rules/_approximation.d.ts.map +1 -0
- package/dist/rules/_approximation.js +28 -0
- package/dist/rules/_approximation.js.map +1 -0
- package/dist/rules/_entry-points.d.ts +27 -0
- package/dist/rules/_entry-points.d.ts.map +1 -0
- package/dist/rules/_entry-points.js +81 -0
- package/dist/rules/_entry-points.js.map +1 -0
- package/dist/rules/_severity-override.d.ts +32 -0
- package/dist/rules/_severity-override.d.ts.map +1 -0
- package/dist/rules/_severity-override.js +33 -0
- package/dist/rules/_severity-override.js.map +1 -0
- package/dist/rules/always-throws-branch.d.ts +26 -0
- package/dist/rules/always-throws-branch.d.ts.map +1 -0
- package/dist/rules/always-throws-branch.js +66 -0
- package/dist/rules/always-throws-branch.js.map +1 -0
- package/dist/rules/create-graph-signal.d.ts +38 -0
- package/dist/rules/create-graph-signal.d.ts.map +1 -0
- package/dist/rules/create-graph-signal.js +35 -0
- package/dist/rules/create-graph-signal.js.map +1 -0
- package/dist/rules/cycle.d.ts +29 -0
- package/dist/rules/cycle.d.ts.map +1 -0
- package/dist/rules/cycle.js +166 -0
- package/dist/rules/cycle.js.map +1 -0
- package/dist/rules/cycle.memberlocations.test.d.ts +11 -0
- package/dist/rules/cycle.memberlocations.test.d.ts.map +1 -0
- package/dist/rules/cycle.memberlocations.test.js +84 -0
- package/dist/rules/cycle.memberlocations.test.js.map +1 -0
- package/dist/rules/define-rule.d.ts +67 -0
- package/dist/rules/define-rule.d.ts.map +1 -0
- package/dist/rules/define-rule.js +66 -0
- package/dist/rules/define-rule.js.map +1 -0
- package/dist/rules/duplicated-function-body.d.ts +40 -0
- package/dist/rules/duplicated-function-body.d.ts.map +1 -0
- package/dist/rules/duplicated-function-body.js +232 -0
- package/dist/rules/duplicated-function-body.js.map +1 -0
- package/dist/rules/high-blast-untested.d.ts +26 -0
- package/dist/rules/high-blast-untested.d.ts.map +1 -0
- package/dist/rules/high-blast-untested.js +82 -0
- package/dist/rules/high-blast-untested.js.map +1 -0
- package/dist/rules/large-function.d.ts +22 -0
- package/dist/rules/large-function.d.ts.map +1 -0
- package/dist/rules/large-function.js +72 -0
- package/dist/rules/large-function.js.map +1 -0
- package/dist/rules/no-side-effect-path.d.ts +31 -0
- package/dist/rules/no-side-effect-path.d.ts.map +1 -0
- package/dist/rules/no-side-effect-path.js +217 -0
- package/dist/rules/no-side-effect-path.js.map +1 -0
- package/dist/rules/orphan-subtree.d.ts +11 -0
- package/dist/rules/orphan-subtree.d.ts.map +1 -0
- package/dist/rules/orphan-subtree.js +104 -0
- package/dist/rules/orphan-subtree.js.map +1 -0
- package/dist/rules/registry.d.ts +35 -0
- package/dist/rules/registry.d.ts.map +1 -0
- package/dist/rules/registry.js +96 -0
- package/dist/rules/registry.js.map +1 -0
- package/dist/rules/test-only-reachable.d.ts +9 -0
- package/dist/rules/test-only-reachable.d.ts.map +1 -0
- package/dist/rules/test-only-reachable.js +101 -0
- package/dist/rules/test-only-reachable.js.map +1 -0
- package/dist/rules/unexpected-coupling.d.ts +29 -0
- package/dist/rules/unexpected-coupling.d.ts.map +1 -0
- package/dist/rules/unexpected-coupling.js +0 -0
- package/dist/rules/unexpected-coupling.js.map +1 -0
- package/dist/rules/wide-function.d.ts +18 -0
- package/dist/rules/wide-function.d.ts.map +1 -0
- package/dist/rules/wide-function.js +58 -0
- package/dist/rules/wide-function.js.map +1 -0
- package/dist/scope-augmentation.d.ts +58 -0
- package/dist/scope-augmentation.d.ts.map +1 -0
- package/dist/scope-augmentation.js +29 -0
- package/dist/scope-augmentation.js.map +1 -0
- package/dist/tool.d.ts +29 -0
- package/dist/tool.d.ts.map +1 -0
- package/dist/tool.js +241 -0
- package/dist/tool.js.map +1 -0
- package/dist/types.d.ts +642 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +136 -0
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sharded build pipeline (`runShardedGraph`) — the unified top-level
|
|
3
|
+
* orchestration: plan → run shards in parallel → merge + recover
|
|
4
|
+
* cross-package edges → persist (optional) → derive indexes + run rules.
|
|
5
|
+
*
|
|
6
|
+
* Drives real shard-worker child processes via a fixture "CLI" script
|
|
7
|
+
* (same approach as shard-runner-spawn) so the whole pipeline runs
|
|
8
|
+
* without a TypeScript build. Two shards each contribute one occurrence;
|
|
9
|
+
* the assertions check the unified catalog, derived indexes, rule
|
|
10
|
+
* signals, cache-hit flag, and failed-shard attribution.
|
|
11
|
+
*/
|
|
12
|
+
import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
|
|
13
|
+
import { tmpdir } from 'node:os';
|
|
14
|
+
import { join } from 'node:path';
|
|
15
|
+
import { DataStoreFactory } from '@opensip-cli/datastore';
|
|
16
|
+
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
17
|
+
import { stampEngineVersion } from '../../../cache/engine-version.js';
|
|
18
|
+
import { CatalogRepo } from '../../../persistence/catalog-repo.js';
|
|
19
|
+
import { runShardedGraph } from '../sharded-graph.js';
|
|
20
|
+
// Fixture worker: emits one exported function occurrence per shard, named
|
|
21
|
+
// after the shard id, so the merged catalog has a predictable shape. A
|
|
22
|
+
// shard id starting with 'fail:' exits non-zero.
|
|
23
|
+
// The real worker stamps the engine version + `mode=sharded` onto the fragment
|
|
24
|
+
// cacheKey via assembleCatalog (ADR-0015 / ADR-0031); the fixture must emit the
|
|
25
|
+
// same stamped key so a no-change rerun is a clean cache hit.
|
|
26
|
+
const STAMPED_KEY = stampEngineVersion('key-none', 'sharded');
|
|
27
|
+
const WORKER_SCRIPT = String.raw `
|
|
28
|
+
const { readFileSync } = require('node:fs');
|
|
29
|
+
const spec = JSON.parse(readFileSync(process.argv[3], 'utf8'));
|
|
30
|
+
const id = spec.shard.id;
|
|
31
|
+
if (id.startsWith('fail:')) { process.stderr.write('boom\n'); process.exit(2); }
|
|
32
|
+
const name = id.replace(/[^a-zA-Z0-9]/g, '_');
|
|
33
|
+
const occ = {
|
|
34
|
+
bodyHash: 'h-' + id, simpleName: name, qualifiedName: id + '.' + name,
|
|
35
|
+
filePath: id + '/index.ts', line: 1, column: 0, endLine: 1,
|
|
36
|
+
kind: 'function-declaration', params: [], returnType: null,
|
|
37
|
+
enclosingClass: null, decorators: [], visibility: 'exported',
|
|
38
|
+
inTestFile: false, definedInGenerated: false, calls: [],
|
|
39
|
+
};
|
|
40
|
+
// Echo back the validity keys the planner computes so a no-change rerun
|
|
41
|
+
// is a clean cache hit: cacheKey mirrors adapter.cacheKey (configPathAbs
|
|
42
|
+
// is undefined here → 'key-none'); the fingerprint is computed over the
|
|
43
|
+
// shard's own file list exactly as planShardWork does.
|
|
44
|
+
const { statSync } = require('node:fs');
|
|
45
|
+
const files = spec.shard.files;
|
|
46
|
+
const parts = [String(files.length)];
|
|
47
|
+
for (const f of files) {
|
|
48
|
+
try { const st = statSync(f); parts.push(f + '|' + String(st.mtimeMs) + '|' + String(st.size)); }
|
|
49
|
+
catch { parts.push(f + '|missing'); }
|
|
50
|
+
}
|
|
51
|
+
// Shard ids starting with 'bc:' inject one unresolvable boundary call so the
|
|
52
|
+
// shardStats.boundaryCallSites plumbing can be asserted (ADR-0045).
|
|
53
|
+
const boundaryCalls = id.startsWith('bc:')
|
|
54
|
+
? [{ ownerHash: 'h-' + id, ownerFile: id + '/index.ts', calleeName: 'nonexistent_callee', line: 1, column: 0, text: 'nonexistent_callee()' }]
|
|
55
|
+
: [];
|
|
56
|
+
const result = {
|
|
57
|
+
shardId: id,
|
|
58
|
+
fragment: {
|
|
59
|
+
version: '3.0', tool: 'graph', language: 'typescript', builtAt: 'x',
|
|
60
|
+
cacheKey: ${JSON.stringify(STAMPED_KEY)}, resolutionMode: 'exact', functions: { [name]: [occ] },
|
|
61
|
+
},
|
|
62
|
+
fingerprint: parts.join('\n'), boundaryCalls, parseErrors: [],
|
|
63
|
+
};
|
|
64
|
+
process.stdout.write(JSON.stringify(result));
|
|
65
|
+
process.exit(0);
|
|
66
|
+
`;
|
|
67
|
+
// Minimal adapter — only `cacheKey` (cache path) and `ruleHints` are read here.
|
|
68
|
+
const adapter = {
|
|
69
|
+
id: 'typescript',
|
|
70
|
+
cacheKey: (i) => `key-${i.configPathAbs ?? 'none'}`,
|
|
71
|
+
ruleHints: undefined,
|
|
72
|
+
};
|
|
73
|
+
describe('runShardedGraph', () => {
|
|
74
|
+
let dir;
|
|
75
|
+
let cliScript;
|
|
76
|
+
beforeEach(() => {
|
|
77
|
+
dir = mkdtempSync(join(tmpdir(), 'sharded-graph-'));
|
|
78
|
+
cliScript = join(dir, 'fake-cli.cjs');
|
|
79
|
+
writeFileSync(cliScript, WORKER_SCRIPT, 'utf8');
|
|
80
|
+
});
|
|
81
|
+
afterEach(() => {
|
|
82
|
+
rmSync(dir, { recursive: true, force: true });
|
|
83
|
+
});
|
|
84
|
+
function shard(id) {
|
|
85
|
+
return { id, rootDir: dir, files: [join(dir, `${id}.ts`)] };
|
|
86
|
+
}
|
|
87
|
+
it('merges shard fragments into a unified catalog, derives indexes, and runs rules', async () => {
|
|
88
|
+
let evaluatedAgainst = null;
|
|
89
|
+
const rule = {
|
|
90
|
+
id: 'test.rule',
|
|
91
|
+
slug: 'test-rule',
|
|
92
|
+
description: 'counts functions',
|
|
93
|
+
evaluate: (catalog, _indexes) => {
|
|
94
|
+
evaluatedAgainst = catalog;
|
|
95
|
+
return [
|
|
96
|
+
{
|
|
97
|
+
ruleId: 'test.rule',
|
|
98
|
+
message: `saw ${String(Object.keys(catalog.functions).length)} functions`,
|
|
99
|
+
severity: 'warning',
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
const out = await runShardedGraph({
|
|
105
|
+
shards: [shard('pkg:a'), shard('pkg:b')],
|
|
106
|
+
projectRoot: dir,
|
|
107
|
+
cliScript,
|
|
108
|
+
adapter,
|
|
109
|
+
resolutionMode: 'exact',
|
|
110
|
+
useCache: false,
|
|
111
|
+
catalogRepo: null,
|
|
112
|
+
rules: [rule],
|
|
113
|
+
});
|
|
114
|
+
expect(Object.keys(out.catalog.functions).sort()).toEqual(['pkg_a', 'pkg_b']);
|
|
115
|
+
expect(out.indexes).not.toBeNull();
|
|
116
|
+
expect(out.cacheHit).toBe(false);
|
|
117
|
+
expect(out.failedShardIds).toEqual([]);
|
|
118
|
+
expect(out.signals).toHaveLength(1);
|
|
119
|
+
expect(out.signals[0]?.message).toBe('saw 2 functions');
|
|
120
|
+
expect(evaluatedAgainst).not.toBeNull();
|
|
121
|
+
expect(out.resolutionStats.totalCallSites).toBe(0);
|
|
122
|
+
});
|
|
123
|
+
it('reports per-run shard statistics (ADR-0045 measurement plane)', async () => {
|
|
124
|
+
// Uneven shard sizes (2 files vs 1) pin the descending sort; the 'bc:'
|
|
125
|
+
// shard injects exactly one boundary call through the worker fixture.
|
|
126
|
+
const big = {
|
|
127
|
+
id: 'bc:big',
|
|
128
|
+
rootDir: dir,
|
|
129
|
+
files: [join(dir, 'big-1.ts'), join(dir, 'big-2.ts')],
|
|
130
|
+
};
|
|
131
|
+
const out = await runShardedGraph({
|
|
132
|
+
shards: [shard('pkg:a'), big],
|
|
133
|
+
projectRoot: dir,
|
|
134
|
+
cliScript,
|
|
135
|
+
adapter,
|
|
136
|
+
resolutionMode: 'exact',
|
|
137
|
+
useCache: false,
|
|
138
|
+
catalogRepo: null,
|
|
139
|
+
rules: [],
|
|
140
|
+
});
|
|
141
|
+
expect(out.shardStats.shardCount).toBe(2);
|
|
142
|
+
expect(out.shardStats.shardsBuilt + out.shardStats.shardsCached).toBe(2);
|
|
143
|
+
expect(out.shardStats.shardSizes).toEqual([2, 1]);
|
|
144
|
+
expect(out.shardStats.boundaryCallSites).toBe(1);
|
|
145
|
+
});
|
|
146
|
+
it('emits the seven canonical stages onto onProgress (ADR-0032: engine-agnostic live view)', async () => {
|
|
147
|
+
// The sharded build maps its work onto the SAME stages the single-program
|
|
148
|
+
// (`runGraph`) path emits, so the live renderer shows one "Code Graph"
|
|
149
|
+
// checklist for both engines. This pins the order + the discover/parse/walk/
|
|
150
|
+
// resolve/rules sub-labels the runner surfaces.
|
|
151
|
+
const events = [];
|
|
152
|
+
await runShardedGraph({
|
|
153
|
+
shards: [shard('pkg:a'), shard('pkg:b')],
|
|
154
|
+
projectRoot: dir,
|
|
155
|
+
cliScript,
|
|
156
|
+
adapter,
|
|
157
|
+
resolutionMode: 'exact',
|
|
158
|
+
useCache: false,
|
|
159
|
+
catalogRepo: null,
|
|
160
|
+
rules: [],
|
|
161
|
+
onProgress: (e) => events.push({
|
|
162
|
+
type: e.type,
|
|
163
|
+
stage: e.stage,
|
|
164
|
+
...(e.detail === undefined ? {} : { detail: e.detail }),
|
|
165
|
+
}),
|
|
166
|
+
});
|
|
167
|
+
// Each of the 7 stages fires exactly one start + one done, in canonical order.
|
|
168
|
+
const stageOrder = ['discover', 'parse', 'walk', 'resolve', 'index', 'features', 'rules'];
|
|
169
|
+
const dones = events.filter((e) => e.type === 'stage-done').map((e) => e.stage);
|
|
170
|
+
expect(dones).toEqual(stageOrder);
|
|
171
|
+
const starts = events.filter((e) => e.type === 'stage-start').map((e) => e.stage);
|
|
172
|
+
expect(starts).toEqual(stageOrder);
|
|
173
|
+
// The familiar sub-labels carry the sharded work onto the exact checklist.
|
|
174
|
+
const detailOf = (stage) => events.find((e) => e.type === 'stage-done' && e.stage === stage)?.detail;
|
|
175
|
+
expect(detailOf('discover')).toBe('2 files');
|
|
176
|
+
expect(detailOf('parse')).toBe('2 shards');
|
|
177
|
+
expect(detailOf('walk')).toBe('2 functions');
|
|
178
|
+
// Catalog-derived TOTAL call-site count — the SAME engine-agnostic metric
|
|
179
|
+
// the exact path reports, with no "cross-shard" implementation leakage.
|
|
180
|
+
expect(detailOf('resolve')).toMatch(/^\d+ call site\(s\)$/);
|
|
181
|
+
expect(detailOf('resolve')).not.toMatch(/cross-shard/);
|
|
182
|
+
expect(detailOf('rules')).toBe('0 rule(s), 0 signal(s)');
|
|
183
|
+
});
|
|
184
|
+
it('throws (fails loud) when two shards share an id', async () => {
|
|
185
|
+
// Duplicate ids collide on the fragment-cache primary key and silently
|
|
186
|
+
// corrupt the warm-build cache → non-determinism. The orchestrator must
|
|
187
|
+
// refuse to build rather than return a quietly-wrong graph.
|
|
188
|
+
await expect(runShardedGraph({
|
|
189
|
+
shards: [shard('engine'), shard('engine')],
|
|
190
|
+
projectRoot: dir,
|
|
191
|
+
cliScript,
|
|
192
|
+
adapter,
|
|
193
|
+
resolutionMode: 'exact',
|
|
194
|
+
useCache: false,
|
|
195
|
+
catalogRepo: null,
|
|
196
|
+
rules: [],
|
|
197
|
+
})).rejects.toThrow(/Duplicate shard id\(s\) \[engine\]/);
|
|
198
|
+
});
|
|
199
|
+
it('records a failed shard id while still building the rest of the catalog', async () => {
|
|
200
|
+
const out = await runShardedGraph({
|
|
201
|
+
shards: [shard('pkg:a'), shard('fail:b')],
|
|
202
|
+
projectRoot: dir,
|
|
203
|
+
cliScript,
|
|
204
|
+
adapter,
|
|
205
|
+
resolutionMode: 'exact',
|
|
206
|
+
useCache: false,
|
|
207
|
+
catalogRepo: null,
|
|
208
|
+
rules: [],
|
|
209
|
+
});
|
|
210
|
+
expect(out.failedShardIds).toEqual(['fail:b']);
|
|
211
|
+
expect(Object.keys(out.catalog.functions)).toEqual(['pkg_a']);
|
|
212
|
+
expect(out.signals).toEqual([]);
|
|
213
|
+
});
|
|
214
|
+
it('persists fragments and reports cacheHit when every shard is reused from cache', async () => {
|
|
215
|
+
const datastore = DataStoreFactory.open({ backend: 'memory' });
|
|
216
|
+
const repo = new CatalogRepo(datastore);
|
|
217
|
+
try {
|
|
218
|
+
const shards = [shard('pkg:a'), shard('pkg:b')];
|
|
219
|
+
// First run: cache cold, both shards built and their fragments persisted.
|
|
220
|
+
const first = await runShardedGraph({
|
|
221
|
+
shards,
|
|
222
|
+
projectRoot: dir,
|
|
223
|
+
cliScript,
|
|
224
|
+
adapter,
|
|
225
|
+
resolutionMode: 'exact',
|
|
226
|
+
useCache: true,
|
|
227
|
+
catalogRepo: repo,
|
|
228
|
+
rules: [],
|
|
229
|
+
});
|
|
230
|
+
expect(first.cacheHit).toBe(false);
|
|
231
|
+
// Second run: nothing changed → every shard reused, no worker runs.
|
|
232
|
+
const second = await runShardedGraph({
|
|
233
|
+
shards,
|
|
234
|
+
projectRoot: dir,
|
|
235
|
+
cliScript,
|
|
236
|
+
adapter,
|
|
237
|
+
resolutionMode: 'exact',
|
|
238
|
+
useCache: true,
|
|
239
|
+
catalogRepo: repo,
|
|
240
|
+
rules: [],
|
|
241
|
+
});
|
|
242
|
+
expect(second.cacheHit).toBe(true);
|
|
243
|
+
expect(Object.keys(second.catalog.functions).sort()).toEqual(['pkg_a', 'pkg_b']);
|
|
244
|
+
// F4 (Phase 7): the WARM build (fragments served from the REAL
|
|
245
|
+
// graph_shard_fragment cache, not a second in-memory rebuild) must be
|
|
246
|
+
// byte-identical to the COLD build, modulo the wall-clock `builtAt`. This
|
|
247
|
+
// exercises the actual datastore cache path the in-memory equivalence
|
|
248
|
+
// harness structurally cannot, locking determinism on the real cache.
|
|
249
|
+
const canon = (c) => JSON.stringify({ ...c, builtAt: 'EXCLUDED' });
|
|
250
|
+
expect(canon(second.catalog)).toBe(canon(first.catalog));
|
|
251
|
+
}
|
|
252
|
+
finally {
|
|
253
|
+
datastore.close?.();
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
//# sourceMappingURL=sharded-graph.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sharded-graph.test.js","sourceRoot":"","sources":["../../../../src/cli/orchestrate/__tests__/sharded-graph.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-pool.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/orchestrate/__tests__/worker-pool.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shared bounded worker pool — runs every item, never exceeds the
|
|
3
|
+
* concurrency cap, and tolerates a slot count larger than the item count.
|
|
4
|
+
*/
|
|
5
|
+
import { describe, expect, it } from 'vitest';
|
|
6
|
+
import { runWorkerPool } from '../worker-pool.js';
|
|
7
|
+
describe('runWorkerPool', () => {
|
|
8
|
+
it('runs every item exactly once', async () => {
|
|
9
|
+
const items = [1, 2, 3, 4, 5];
|
|
10
|
+
const results = await runWorkerPool(items, 2, (n) => Promise.resolve(n * 10));
|
|
11
|
+
expect([...results].sort((a, b) => a - b)).toEqual([10, 20, 30, 40, 50]);
|
|
12
|
+
});
|
|
13
|
+
it('never exceeds the concurrency cap', async () => {
|
|
14
|
+
let active = 0;
|
|
15
|
+
let peak = 0;
|
|
16
|
+
const run = async (n) => {
|
|
17
|
+
active++;
|
|
18
|
+
peak = Math.max(peak, active);
|
|
19
|
+
await new Promise((r) => setTimeout(r, 5));
|
|
20
|
+
active--;
|
|
21
|
+
return n;
|
|
22
|
+
};
|
|
23
|
+
await runWorkerPool([1, 2, 3, 4, 5, 6, 7, 8], 3, run);
|
|
24
|
+
expect(peak).toBeLessThanOrEqual(3);
|
|
25
|
+
});
|
|
26
|
+
it('clamps a zero/negative cap to at least one slot and still completes', async () => {
|
|
27
|
+
const results = await runWorkerPool([1, 2, 3], 0, (n) => Promise.resolve(n));
|
|
28
|
+
expect([...results].sort((a, b) => a - b)).toEqual([1, 2, 3]);
|
|
29
|
+
});
|
|
30
|
+
it('handles an empty item list', async () => {
|
|
31
|
+
expect(await runWorkerPool([], 4, () => Promise.resolve(1))).toEqual([]);
|
|
32
|
+
});
|
|
33
|
+
it('throws on non-finite concurrency (NaN, Infinity) rather than producing zero workers', async () => {
|
|
34
|
+
await expect(runWorkerPool([1], Number.NaN, (n) => Promise.resolve(n))).rejects.toThrow(/concurrency must be a finite number/);
|
|
35
|
+
await expect(runWorkerPool([1], Infinity, (n) => Promise.resolve(n))).rejects.toThrow(/concurrency must be a finite number/);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=worker-pool.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-pool.test.js","sourceRoot":"","sources":["../../../../src/cli/orchestrate/__tests__/worker-pool.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache hit/miss/incremental routing.
|
|
3
|
+
*
|
|
4
|
+
* Consults the on-disk catalog cache and dispatches to the right
|
|
5
|
+
* rebuild path per `classifyCatalog`'s verdict:
|
|
6
|
+
* - 'valid' → reuse the cached catalog wholesale
|
|
7
|
+
* - 'incremental' → re-walk only changed files + their dependents
|
|
8
|
+
* - 'invalid' → full rebuild
|
|
9
|
+
*/
|
|
10
|
+
import { type RunStage } from './catalog-builder.js';
|
|
11
|
+
import type { GraphProgressCallback } from './types.js';
|
|
12
|
+
import type { DiscoverOutput, GraphLanguageAdapter } from '../../lang-adapter/types.js';
|
|
13
|
+
import type { CatalogRepo } from '../../persistence/catalog-repo.js';
|
|
14
|
+
import type { Catalog, ResolutionMode, ResolutionStats } from '../../types.js';
|
|
15
|
+
import type { PressureMonitor } from '../pressure-monitor.js';
|
|
16
|
+
export interface ObtainCatalogInput {
|
|
17
|
+
readonly runStage: RunStage;
|
|
18
|
+
readonly adapter: GraphLanguageAdapter;
|
|
19
|
+
readonly discovery: DiscoverOutput;
|
|
20
|
+
readonly catalogRepo: CatalogRepo | null;
|
|
21
|
+
readonly useCache: boolean;
|
|
22
|
+
/** Active resolution tier. Folded into the cacheKey so fast/exact
|
|
23
|
+
* catalogs never collide, and forwarded into the build path. */
|
|
24
|
+
readonly resolutionMode: ResolutionMode;
|
|
25
|
+
/** Absolute project root — used to stamp each occurrence's package via its
|
|
26
|
+
* nearest `package.json` (see `assignPackages`). */
|
|
27
|
+
readonly projectRoot: string;
|
|
28
|
+
readonly onProgress?: GraphProgressCallback;
|
|
29
|
+
readonly monitor?: PressureMonitor;
|
|
30
|
+
}
|
|
31
|
+
export interface ObtainCatalogOutput {
|
|
32
|
+
readonly catalog: Catalog;
|
|
33
|
+
readonly cacheHit: boolean;
|
|
34
|
+
readonly resolutionStats: ResolutionStats | null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve the catalog for this run by consulting the on-disk cache,
|
|
38
|
+
* dispatching to the right rebuild path (full vs Wave 4 incremental
|
|
39
|
+
* vs cache hit) per `classifyCatalog`'s verdict.
|
|
40
|
+
*/
|
|
41
|
+
export declare function obtainCatalog(input: ObtainCatalogInput): Promise<ObtainCatalogOutput>;
|
|
42
|
+
//# sourceMappingURL=cache-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-orchestrator.d.ts","sourceRoot":"","sources":["../../../src/cli/orchestrate/cache-orchestrator.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAKH,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;qEACiE;IACjE,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC;yDACqD;IACrD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;CAClD;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA+E3F"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// @fitness-ignore-file error-handling-quality -- catalogRepo.replaceAll write failure is non-fatal and already logged inside the repo (see inline comment at the catch); the orchestrator returns the freshly-built catalog regardless so the run never hangs on cache persistence.
|
|
2
|
+
/**
|
|
3
|
+
* Cache hit/miss/incremental routing.
|
|
4
|
+
*
|
|
5
|
+
* Consults the on-disk catalog cache and dispatches to the right
|
|
6
|
+
* rebuild path per `classifyCatalog`'s verdict:
|
|
7
|
+
* - 'valid' → reuse the cached catalog wholesale
|
|
8
|
+
* - 'incremental' → re-walk only changed files + their dependents
|
|
9
|
+
* - 'invalid' → full rebuild
|
|
10
|
+
*/
|
|
11
|
+
import { stampEngineVersion } from '../../cache/engine-version.js';
|
|
12
|
+
import { classifyCatalog, computeFilesFingerprint } from '../../cache/invalidate.js';
|
|
13
|
+
import { buildAndResolveCatalog, buildAndResolveCatalogIncremental, } from './catalog-builder.js';
|
|
14
|
+
import { stampAndConstrainPackages } from './cross-shard-resolve.js';
|
|
15
|
+
import { recoverExactBoundaryEdges } from './exact-boundary-recovery.js';
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the catalog for this run by consulting the on-disk cache,
|
|
18
|
+
* dispatching to the right rebuild path (full vs Wave 4 incremental
|
|
19
|
+
* vs cache hit) per `classifyCatalog`'s verdict.
|
|
20
|
+
*/
|
|
21
|
+
export async function obtainCatalog(input) {
|
|
22
|
+
const cachedCatalog = input.useCache && input.catalogRepo ? input.catalogRepo.loadFullCatalog() : null;
|
|
23
|
+
const currentCacheKey = stampEngineVersion(input.adapter.cacheKey({
|
|
24
|
+
projectDirAbs: input.discovery.projectDirAbs,
|
|
25
|
+
configPathAbs: input.discovery.configPathAbs,
|
|
26
|
+
compilerOptions: input.discovery.compilerOptions,
|
|
27
|
+
resolutionMode: input.resolutionMode,
|
|
28
|
+
}));
|
|
29
|
+
const verdict = cachedCatalog
|
|
30
|
+
? classifyCatalog(cachedCatalog, {
|
|
31
|
+
currentLanguage: input.adapter.id,
|
|
32
|
+
currentCacheKey,
|
|
33
|
+
currentFiles: input.discovery.files,
|
|
34
|
+
})
|
|
35
|
+
: { kind: 'invalid', reason: 'no-cache' };
|
|
36
|
+
if (verdict.kind === 'valid' && cachedCatalog) {
|
|
37
|
+
// Parse/walk/resolve are skipped wholesale. Tell the view so it can
|
|
38
|
+
// render those stages as "(cached)" rather than leaving them pending.
|
|
39
|
+
for (const stage of ['parse', 'walk', 'resolve']) {
|
|
40
|
+
input.onProgress?.({ type: 'stage-cached', stage });
|
|
41
|
+
}
|
|
42
|
+
return { catalog: cachedCatalog, cacheHit: true, resolutionStats: null };
|
|
43
|
+
}
|
|
44
|
+
const built = verdict.kind === 'incremental' && cachedCatalog
|
|
45
|
+
? await buildAndResolveCatalogIncremental({
|
|
46
|
+
runStage: input.runStage,
|
|
47
|
+
adapter: input.adapter,
|
|
48
|
+
discovery: input.discovery,
|
|
49
|
+
cachedCatalog,
|
|
50
|
+
changedFilesAbs: verdict.changedFiles,
|
|
51
|
+
resolutionMode: input.resolutionMode,
|
|
52
|
+
onProgress: input.onProgress,
|
|
53
|
+
monitor: input.monitor,
|
|
54
|
+
emitBoundaryCalls: true,
|
|
55
|
+
})
|
|
56
|
+
: await buildAndResolveCatalog({
|
|
57
|
+
runStage: input.runStage,
|
|
58
|
+
adapter: input.adapter,
|
|
59
|
+
discovery: input.discovery,
|
|
60
|
+
resolutionMode: input.resolutionMode,
|
|
61
|
+
onProgress: input.onProgress,
|
|
62
|
+
monitor: input.monitor,
|
|
63
|
+
emitBoundaryCalls: true,
|
|
64
|
+
});
|
|
65
|
+
// ONE resolution model (Phase 3, Option A): the single-program (exact) catalog
|
|
66
|
+
// IS the whole/merged catalog, so run the SAME cross-shard linker the sharded
|
|
67
|
+
// engine runs post-merge over its syntactic boundary calls. This converges the
|
|
68
|
+
// two engines — exact is the 1-shard case — resolving the cross-package call
|
|
69
|
+
// sites exact's type-checker-driven inline pass captures inconsistently (it
|
|
70
|
+
// only fires where `getSymbolAtLocation` succeeds and the reference kind
|
|
71
|
+
// dispatches; the syntactic boundary extractor captures every imported call
|
|
72
|
+
// site). The extractor already skips sites resolved inline, so no double edge.
|
|
73
|
+
const recovered = recoverExactBoundaryEdges(built, input.discovery.files, input.projectRoot);
|
|
74
|
+
// Stamp packages (nearest package.json), then drop name-guessed edges that
|
|
75
|
+
// contradict the import graph. Order matters: the constraint reads the
|
|
76
|
+
// stamped `occurrence.package`.
|
|
77
|
+
const catalog = stampAndConstrainPackages({
|
|
78
|
+
...recovered,
|
|
79
|
+
filesFingerprint: computeFilesFingerprint(input.discovery.files),
|
|
80
|
+
}, input.projectRoot);
|
|
81
|
+
if (input.useCache && input.catalogRepo) {
|
|
82
|
+
try {
|
|
83
|
+
input.catalogRepo.replaceAll(catalog);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
/* v8 ignore next */
|
|
87
|
+
// Cache write failure is non-fatal — already logged.
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return { catalog, cacheHit: false, resolutionStats: built.resolutionStats };
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=cache-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-orchestrator.js","sourceRoot":"","sources":["../../../src/cli/orchestrate/cache-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical graph file set — the SINGLE definition of "which files the graph
|
|
3
|
+
* tool analyzes," shared by BOTH build engines (exact single-program and
|
|
4
|
+
* sharded parallel).
|
|
5
|
+
*
|
|
6
|
+
* Phase 1 of graph-sharded-exact-parity (ADR-0031 lineage). Before this, the
|
|
7
|
+
* two engines discovered DIFFERENT file sets:
|
|
8
|
+
* - exact walked the ROOT tsconfig (no include/exclude) → EVERY `.ts(x)`,
|
|
9
|
+
* fixtures AND tests included;
|
|
10
|
+
* - sharded enumerated each PACKAGE tsconfig, which excludes that package's
|
|
11
|
+
* `__fixtures__` tree and (for some packages) its test files.
|
|
12
|
+
* The result was a ~2,500-occurrence catalog gap (measured via
|
|
13
|
+
* `scripts/graph-catalog-diff.mjs`) and two engines that could never agree.
|
|
14
|
+
*
|
|
15
|
+
* The maintainer's Phase-0 ruling (LOCKED): the canonical graph is
|
|
16
|
+
* **production code + real test files, with `__fixtures__/` EXCLUDED**, applied
|
|
17
|
+
* identically to both engines. Real test files are KEPT — they're needed for
|
|
18
|
+
* `test-only-reachable` and for test → production blast/coverage edges.
|
|
19
|
+
* `__fixtures__/` is synthetic test-INPUT code (fitness-check sample sources,
|
|
20
|
+
* graph fixtures) that is noise in a real call graph.
|
|
21
|
+
*
|
|
22
|
+
* This module owns that decision as ONE pure predicate ({@link isFixturePath})
|
|
23
|
+
* and ONE pure filter ({@link resolveCanonicalFileSet}) over file paths. Both
|
|
24
|
+
* engines feed their project-wide root discovery through `resolveCanonicalFileSet`
|
|
25
|
+
* so they see the identical set; the sharded engine then PARTITIONS that set
|
|
26
|
+
* across shards rather than re-deriving each shard's files from a package
|
|
27
|
+
* tsconfig (see `partition-files.ts`).
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* The canonical fixture predicate: a path is a fixture iff it contains a
|
|
31
|
+
* `/__fixtures__/` segment anywhere in its (forward-slash-normalized) path.
|
|
32
|
+
*
|
|
33
|
+
* Pure and string-only — it makes no filesystem call and is agnostic to whether
|
|
34
|
+
* the input is absolute or project-relative. Normalizes Windows `\` to `/`
|
|
35
|
+
* first so the segment match is OS-independent. This is the ONLY place the
|
|
36
|
+
* fixture convention is encoded; both engines and the parity test reference it.
|
|
37
|
+
*/
|
|
38
|
+
export declare function isFixturePath(filePath: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Reduce a raw discovered file set to the canonical graph set: drop every
|
|
41
|
+
* fixture path, keep everything else (production AND real test files).
|
|
42
|
+
*
|
|
43
|
+
* Pure over the input array — returns a NEW array, preserves input order, and
|
|
44
|
+
* never touches the filesystem. Both engines call this on the SAME project-wide
|
|
45
|
+
* root discovery so their inputs to parse/walk are byte-identical.
|
|
46
|
+
*
|
|
47
|
+
* @param files - raw discovered absolute file paths (e.g. `DiscoverOutput.files`).
|
|
48
|
+
* @returns the subset with `__fixtures__/` paths removed.
|
|
49
|
+
*/
|
|
50
|
+
export declare function resolveCanonicalFileSet(files: readonly string[]): readonly string[];
|
|
51
|
+
//# sourceMappingURL=canonical-file-set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-file-set.d.ts","sourceRoot":"","sources":["../../../src/cli/orchestrate/canonical-file-set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAEnF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical graph file set — the SINGLE definition of "which files the graph
|
|
3
|
+
* tool analyzes," shared by BOTH build engines (exact single-program and
|
|
4
|
+
* sharded parallel).
|
|
5
|
+
*
|
|
6
|
+
* Phase 1 of graph-sharded-exact-parity (ADR-0031 lineage). Before this, the
|
|
7
|
+
* two engines discovered DIFFERENT file sets:
|
|
8
|
+
* - exact walked the ROOT tsconfig (no include/exclude) → EVERY `.ts(x)`,
|
|
9
|
+
* fixtures AND tests included;
|
|
10
|
+
* - sharded enumerated each PACKAGE tsconfig, which excludes that package's
|
|
11
|
+
* `__fixtures__` tree and (for some packages) its test files.
|
|
12
|
+
* The result was a ~2,500-occurrence catalog gap (measured via
|
|
13
|
+
* `scripts/graph-catalog-diff.mjs`) and two engines that could never agree.
|
|
14
|
+
*
|
|
15
|
+
* The maintainer's Phase-0 ruling (LOCKED): the canonical graph is
|
|
16
|
+
* **production code + real test files, with `__fixtures__/` EXCLUDED**, applied
|
|
17
|
+
* identically to both engines. Real test files are KEPT — they're needed for
|
|
18
|
+
* `test-only-reachable` and for test → production blast/coverage edges.
|
|
19
|
+
* `__fixtures__/` is synthetic test-INPUT code (fitness-check sample sources,
|
|
20
|
+
* graph fixtures) that is noise in a real call graph.
|
|
21
|
+
*
|
|
22
|
+
* This module owns that decision as ONE pure predicate ({@link isFixturePath})
|
|
23
|
+
* and ONE pure filter ({@link resolveCanonicalFileSet}) over file paths. Both
|
|
24
|
+
* engines feed their project-wide root discovery through `resolveCanonicalFileSet`
|
|
25
|
+
* so they see the identical set; the sharded engine then PARTITIONS that set
|
|
26
|
+
* across shards rather than re-deriving each shard's files from a package
|
|
27
|
+
* tsconfig (see `partition-files.ts`).
|
|
28
|
+
*/
|
|
29
|
+
/** The path segment that marks synthetic test-input code excluded from the canonical set. */
|
|
30
|
+
const FIXTURES_SEGMENT = '/__fixtures__/';
|
|
31
|
+
/**
|
|
32
|
+
* The canonical fixture predicate: a path is a fixture iff it contains a
|
|
33
|
+
* `/__fixtures__/` segment anywhere in its (forward-slash-normalized) path.
|
|
34
|
+
*
|
|
35
|
+
* Pure and string-only — it makes no filesystem call and is agnostic to whether
|
|
36
|
+
* the input is absolute or project-relative. Normalizes Windows `\` to `/`
|
|
37
|
+
* first so the segment match is OS-independent. This is the ONLY place the
|
|
38
|
+
* fixture convention is encoded; both engines and the parity test reference it.
|
|
39
|
+
*/
|
|
40
|
+
export function isFixturePath(filePath) {
|
|
41
|
+
const normalized = filePath.replaceAll('\\', '/');
|
|
42
|
+
return normalized.includes(FIXTURES_SEGMENT);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Reduce a raw discovered file set to the canonical graph set: drop every
|
|
46
|
+
* fixture path, keep everything else (production AND real test files).
|
|
47
|
+
*
|
|
48
|
+
* Pure over the input array — returns a NEW array, preserves input order, and
|
|
49
|
+
* never touches the filesystem. Both engines call this on the SAME project-wide
|
|
50
|
+
* root discovery so their inputs to parse/walk are byte-identical.
|
|
51
|
+
*
|
|
52
|
+
* @param files - raw discovered absolute file paths (e.g. `DiscoverOutput.files`).
|
|
53
|
+
* @returns the subset with `__fixtures__/` paths removed.
|
|
54
|
+
*/
|
|
55
|
+
export function resolveCanonicalFileSet(files) {
|
|
56
|
+
return files.filter((f) => !isFixturePath(f));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=canonical-file-set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-file-set.js","sourceRoot":"","sources":["../../../src/cli/orchestrate/canonical-file-set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,6FAA6F;AAC7F,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAE1C;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAwB;IAC9D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC"}
|