@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,523 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-shard merge & semantic boundary linking (plan #2, Phase 2).
|
|
3
|
+
*
|
|
4
|
+
* After the shard workers return per-shard fragments + cross-boundary
|
|
5
|
+
* call descriptors, this module:
|
|
6
|
+
* 1. merges the fragments into one unified catalog (union of occurrences,
|
|
7
|
+
* each keeping its already-resolved intra-shard edges);
|
|
8
|
+
* 2. LINKS the boundary calls semantically against the export symbol table
|
|
9
|
+
* ({@link ExportIndex}) + package manifest index ({@link PackageManifestIndex})
|
|
10
|
+
* built from the merged catalog and the resolved shard set, then stitches
|
|
11
|
+
* the recovered edges onto their owner occurrences as
|
|
12
|
+
* `resolution: 'semantic'`, `crossShard: true`, `confidence: 'high'`.
|
|
13
|
+
*
|
|
14
|
+
* The linker emits a cross-package edge ONLY when the import specifier + callee
|
|
15
|
+
* name resolve to a UNIQUE exported occurrence in the imported package — exactly
|
|
16
|
+
* what the TypeScript type checker would conclude. On ANY ambiguity (a name with
|
|
17
|
+
* multiple matching exports the subpath can't disambiguate, a name the package
|
|
18
|
+
* does not export, a specifier pointing at an external npm package) it DECLINES
|
|
19
|
+
* and emits an unresolved (`to: []`) edge. A missing edge is safe; a phantom
|
|
20
|
+
* cross-package edge would fail the gate. This replaces the old name-only
|
|
21
|
+
* syntactic fallback, which fabricated impossible coupling edges by matching a
|
|
22
|
+
* globally-unique simple name into a package the caller never imported.
|
|
23
|
+
*
|
|
24
|
+
* Intra-shard edges retain their original (semantic, in exact mode) fidelity;
|
|
25
|
+
* relative imports are still path-pinned (already exact for same-package
|
|
26
|
+
* imports). Engine-layer and language-agnostic: it operates on plain catalog
|
|
27
|
+
* data + the descriptors' callee names / import specifiers + each package's
|
|
28
|
+
* `package.json` — no parser, no TypeScript assumptions.
|
|
29
|
+
*/
|
|
30
|
+
import { posix } from 'node:path';
|
|
31
|
+
import { stampEngineVersion } from '../../cache/engine-version.js';
|
|
32
|
+
import { computeFilesFingerprint } from '../../cache/invalidate.js';
|
|
33
|
+
import { buildExportIndex } from '../../cross-package/export-index.js';
|
|
34
|
+
import { resolveCrossPackageCall } from '../../cross-package/resolve.js';
|
|
35
|
+
import { createMutableStats, truncateForCallEdge } from '../../lang-adapter/edge-helpers.js';
|
|
36
|
+
import { assignPackages } from '../../pipeline/assign-packages.js';
|
|
37
|
+
import { constrainCrossPackageEdges } from '../../pipeline/constrain-edges.js';
|
|
38
|
+
import { computeSccs } from '../../pipeline/features.js';
|
|
39
|
+
import { buildIndexes } from '../../pipeline/indexes.js';
|
|
40
|
+
import { bucketEdgesByOwner, stitchEdgesByOwner } from './edge-identity.js';
|
|
41
|
+
import { traceResolveOne } from './resolution-trace.js';
|
|
42
|
+
/**
|
|
43
|
+
* Merge per-shard fragments and recover cross-package edges. The single
|
|
44
|
+
* Phase-2 entry the orchestrator calls.
|
|
45
|
+
*/
|
|
46
|
+
export function mergeAndResolveShards(fragments, allFiles, manifestIndex) {
|
|
47
|
+
const merged = mergeShardFragments(fragments.map((f) => f.fragment), allFiles);
|
|
48
|
+
const boundaryCalls = fragments.flatMap((f) => f.boundaryCalls);
|
|
49
|
+
return resolveCrossBoundaryCalls(merged, boundaryCalls, manifestIndex);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Finalize cross-package edges on a merged catalog: stamp each occurrence's
|
|
53
|
+
* owning package (`assignPackages`) then drop name-guessed cross-package edges
|
|
54
|
+
* that contradict the import graph (`constrainCrossPackageEdges`). These two
|
|
55
|
+
* pipeline steps are always applied as a pair on the post-resolve catalog — by
|
|
56
|
+
* both the sharded build (`runShardedGraph`) and the cached single-program
|
|
57
|
+
* recovery path (`cache-orchestrator`) — so they live here, the cross-package
|
|
58
|
+
* resolution module, as one helper rather than duplicated import pairs.
|
|
59
|
+
*/
|
|
60
|
+
export function stampAndConstrainPackages(catalog, projectRoot) {
|
|
61
|
+
return constrainCrossPackageEdges(assignPackages(catalog, projectRoot));
|
|
62
|
+
}
|
|
63
|
+
// ── Task 2.1: merge fragments ─────────────────────────────────────
|
|
64
|
+
/**
|
|
65
|
+
* Union every fragment's `functions` map into one catalog. Each
|
|
66
|
+
* occurrence keeps its already-resolved intra-shard `calls`. Shards are
|
|
67
|
+
* disjoint by construction (distinct files), so occurrences don't
|
|
68
|
+
* conflict; a defensive dedup by occurrence IDENTITY — (bodyHash,
|
|
69
|
+
* filePath, line, column) — drops any accidental duplicate rather than
|
|
70
|
+
* double-counting.
|
|
71
|
+
*
|
|
72
|
+
* The dedup key MUST include `column`: two distinct callables can share a
|
|
73
|
+
* `(bodyHash, filePath, line)` triple when they sit on the SAME source line
|
|
74
|
+
* with BYTE-IDENTICAL bodies — e.g. `a.some((p) => p.test(x)) || b.some((p) =>
|
|
75
|
+
* p.test(x))` (two body-twin arrows on one line). `bodyHash` is a CONTENT hash,
|
|
76
|
+
* so both twins hash equally; a column-less key collapsed them into one,
|
|
77
|
+
* dropping the second occurrence the single-program engine keeps. Keying on the
|
|
78
|
+
* full occurrence identity (filePath:line:column — the same tuple the SCC graph
|
|
79
|
+
* uses as its node id) makes the merged function set byte-identical to exact
|
|
80
|
+
* (Phase 3 closed the residual 2-occurrence delta this way).
|
|
81
|
+
*/
|
|
82
|
+
export function mergeShardFragments(fragments, allFiles) {
|
|
83
|
+
const functions = Object.create(null);
|
|
84
|
+
const seen = new Set();
|
|
85
|
+
for (const frag of fragments)
|
|
86
|
+
addFragmentOccurrences(frag, functions, seen);
|
|
87
|
+
// Canonicalize: shards complete in nondeterministic order, so the merged
|
|
88
|
+
// function-name keys, occurrence buckets, and each occurrence's `calls` are
|
|
89
|
+
// all sorted by a stable key here. This makes the merged catalog a pure
|
|
90
|
+
// function of the fragment SET — independent of shard completion order — so
|
|
91
|
+
// cold, warm-all-cached, and warm-partial-rebuild produce a byte-identical
|
|
92
|
+
// catalog (Phase 3).
|
|
93
|
+
const canonicalFunctions = canonicalizeFunctions(functions);
|
|
94
|
+
const reExports = mergeFragmentReExports(fragments);
|
|
95
|
+
const first = fragments[0];
|
|
96
|
+
return {
|
|
97
|
+
version: '3.0',
|
|
98
|
+
tool: 'graph',
|
|
99
|
+
language: first?.language ?? 'typescript',
|
|
100
|
+
// `builtAt` is the SOLE intentionally-nondeterministic catalog field — a
|
|
101
|
+
// wall-clock stamp. It is excluded from structural determinism/equivalence
|
|
102
|
+
// comparisons (Phase 0 determinism test, Phase 4 guardrail). Everything
|
|
103
|
+
// else in this catalog is a pure function of the fragment set.
|
|
104
|
+
builtAt: new Date().toISOString(),
|
|
105
|
+
// Build-level key derived from the per-shard keys so the merged
|
|
106
|
+
// catalog invalidates when any shard's key changes. Stamped with the
|
|
107
|
+
// engine version + `mode=sharded` (same channel as the single-program
|
|
108
|
+
// exact key) so the two engines — which share the single `graph_catalog`
|
|
109
|
+
// row but build structurally incompatible catalogs — can never read each
|
|
110
|
+
// other's row: a mode switch is a clean `cacheKey` mismatch (a rebuild),
|
|
111
|
+
// never a silent cross-engine read of a clobbered row.
|
|
112
|
+
cacheKey: stampEngineVersion(`sharded-${String(fragments.length)}-${hashKeys(fragments)}`, 'sharded'),
|
|
113
|
+
filesFingerprint: computeFilesFingerprint(allFiles),
|
|
114
|
+
resolutionMode: first?.resolutionMode,
|
|
115
|
+
...(reExports.length > 0 ? { reExports } : {}),
|
|
116
|
+
functions: canonicalFunctions,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Union the per-shard re-export facts into the merged catalog, deduped by full
|
|
121
|
+
* identity and sorted — so the merged set is a pure function of the fragment SET
|
|
122
|
+
* (order-independent across shard completion), keeping cold == warm. The engine's
|
|
123
|
+
* `buildExportIndex` reads these to follow cross-package re-export chains.
|
|
124
|
+
*/
|
|
125
|
+
function mergeFragmentReExports(fragments) {
|
|
126
|
+
const seen = new Set();
|
|
127
|
+
const out = [];
|
|
128
|
+
for (const frag of fragments) {
|
|
129
|
+
for (const r of frag.reExports ?? []) {
|
|
130
|
+
const key = `${r.fromFile}|${r.exportedName}|${r.sourceName}|${r.specifier}`;
|
|
131
|
+
if (seen.has(key))
|
|
132
|
+
continue;
|
|
133
|
+
seen.add(key);
|
|
134
|
+
out.push(r);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return out.sort((a, b) => Number(a.fromFile > b.fromFile) - Number(a.fromFile < b.fromFile) ||
|
|
138
|
+
Number(a.exportedName > b.exportedName) - Number(a.exportedName < b.exportedName) ||
|
|
139
|
+
Number(a.specifier > b.specifier) - Number(a.specifier < b.specifier));
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Build a canonical copy of a merged function map: function-name keys inserted
|
|
143
|
+
* in sorted order, each function's occurrence bucket sorted by a stable key
|
|
144
|
+
* (`filePath`, then `line`, then `bodyHash`), and each occurrence's `calls`
|
|
145
|
+
* sorted by `(line, column, sorted(to))`. The catalog shape is unchanged —
|
|
146
|
+
* only the ordering becomes deterministic regardless of the order shards
|
|
147
|
+
* completed in. (JSON serialization preserves insertion order, so sorting the
|
|
148
|
+
* top-level keys is what makes the serialized catalog byte-identical.)
|
|
149
|
+
*/
|
|
150
|
+
function canonicalizeFunctions(functions) {
|
|
151
|
+
const out = Object.create(null);
|
|
152
|
+
for (const name of Object.keys(functions).sort()) {
|
|
153
|
+
const occs = functions[name];
|
|
154
|
+
if (!occs)
|
|
155
|
+
continue;
|
|
156
|
+
const sorted = [...occs].sort(compareOccurrences);
|
|
157
|
+
out[name] = sorted.map((occ) => ({ ...occ, calls: sortCalls(occ.calls) }));
|
|
158
|
+
}
|
|
159
|
+
return out;
|
|
160
|
+
}
|
|
161
|
+
/** Stable occurrence order: filePath, then line, then bodyHash. */
|
|
162
|
+
function compareOccurrences(a, b) {
|
|
163
|
+
return (Number(a.filePath > b.filePath) - Number(a.filePath < b.filePath) ||
|
|
164
|
+
a.line - b.line ||
|
|
165
|
+
Number(a.bodyHash > b.bodyHash) - Number(a.bodyHash < b.bodyHash));
|
|
166
|
+
}
|
|
167
|
+
/** Stable edge order within an occurrence: line, then column, then sorted(to). */
|
|
168
|
+
function sortCalls(calls) {
|
|
169
|
+
return [...calls].sort((a, b) => {
|
|
170
|
+
const toA = [...a.to].sort().join(',');
|
|
171
|
+
const toB = [...b.to].sort().join(',');
|
|
172
|
+
return a.line - b.line || a.column - b.column || Number(toA > toB) - Number(toA < toB);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
/** Append one fragment's occurrences into the merged map, deduping by
|
|
176
|
+
* (bodyHash, filePath, line). Extracted to keep mergeShardFragments flat. */
|
|
177
|
+
function addFragmentOccurrences(frag, functions, seen) {
|
|
178
|
+
for (const [name, occs] of Object.entries(frag.functions)) {
|
|
179
|
+
if (!occs)
|
|
180
|
+
continue;
|
|
181
|
+
for (const occ of occs) {
|
|
182
|
+
const key = `${occ.bodyHash}|${occ.filePath}|${String(occ.line)}|${String(occ.column)}`;
|
|
183
|
+
if (seen.has(key))
|
|
184
|
+
continue;
|
|
185
|
+
seen.add(key);
|
|
186
|
+
const bucket = functions[name];
|
|
187
|
+
if (bucket)
|
|
188
|
+
bucket.push(occ);
|
|
189
|
+
else
|
|
190
|
+
functions[name] = [occ];
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function hashKeys(fragments) {
|
|
195
|
+
// Order-independent join of shard cacheKeys (shards may complete in any
|
|
196
|
+
// order); kept short and deterministic.
|
|
197
|
+
return [...fragments.map((f) => f.cacheKey)].sort().join('+').slice(0, 64);
|
|
198
|
+
}
|
|
199
|
+
// ── Task 2.2: resolve cross-boundary calls ────────────────────────
|
|
200
|
+
/**
|
|
201
|
+
* Resolve each cross-boundary call against the merged global catalog and
|
|
202
|
+
* stitch the recovered edge onto its owner. A recovered edge is `'semantic'`,
|
|
203
|
+
* `crossShard: true`, `confidence: 'high'` — the import specifier + callee name
|
|
204
|
+
* linked to a UNIQUE target occurrence (relative imports pin by path; bare /
|
|
205
|
+
* workspace imports pin by the imported package's export symbol table). On any
|
|
206
|
+
* ambiguity the resolver DECLINES (`to: []`) — a missing edge is safe, a phantom
|
|
207
|
+
* cross-package edge is not. Declined / external boundary calls stay unresolved
|
|
208
|
+
* but are counted (attributable).
|
|
209
|
+
*/
|
|
210
|
+
export function resolveCrossBoundaryCalls(merged, boundaryCalls, manifestIndex) {
|
|
211
|
+
const exportIndex = buildExportIndex(merged, manifestIndex);
|
|
212
|
+
const nameIndex = buildNameIndex(merged);
|
|
213
|
+
const knownFiles = new Set(Object.values(merged.functions)
|
|
214
|
+
.flat()
|
|
215
|
+
.map((o) => o.filePath));
|
|
216
|
+
const ctx = { exportIndex, manifestIndex, nameIndex, knownFiles };
|
|
217
|
+
const stats = createMutableStats();
|
|
218
|
+
// Resolve each boundary call to a recovered edge first (counting as we go).
|
|
219
|
+
// The stats DO count declined (`to: []`) calls — they are attributable
|
|
220
|
+
// unresolved cross-shard sites — but only RESOLVED edges are stitched into the
|
|
221
|
+
// catalog (see below).
|
|
222
|
+
const resolvedCalls = boundaryCalls.map((bc) => {
|
|
223
|
+
const edge = resolveOne(bc, ctx);
|
|
224
|
+
stats.totalCallSites++;
|
|
225
|
+
stats.apply(edge);
|
|
226
|
+
return { bc, edge };
|
|
227
|
+
});
|
|
228
|
+
// Placeholder pruning (Phase 6): a boundary call that resolved to NOTHING must
|
|
229
|
+
// NOT persist a standalone `to: []` crossShard CallEdge. The single-program
|
|
230
|
+
// (exact) engine emits no such per-call-site catalog edge — it simply has no
|
|
231
|
+
// edge there (the intra-shard `to: []` placeholder the local pass left, which
|
|
232
|
+
// exact ALSO emits for its own unresolved sites, remains and is the parity
|
|
233
|
+
// representation). Persisting ~45k empty-`to` crossShard placeholders only
|
|
234
|
+
// bloated the catalog and formed the bulk of the guardrail's `structural`
|
|
235
|
+
// (unresolved-vs-absent) divergence partition. Bucket ONLY resolved edges; a
|
|
236
|
+
// declined site contributes nothing, so its intra placeholder is left intact
|
|
237
|
+
// (matching exact) rather than replaced by a crossShard placeholder.
|
|
238
|
+
// Keyed by OCCURRENCE via the shared identity module — `ownerEdgeKey(ownerHash,
|
|
239
|
+
// ownerFile)`, never `ownerHash` alone (ADR-0003: body-twins share a hash; an
|
|
240
|
+
// owner-hash bucket would union their edges into phantom cross-package coupling).
|
|
241
|
+
const edgesByOwnerKey = bucketEdgesByOwner(resolvedCalls.filter(({ edge }) => edge.to.length > 0), ({ bc }) => ({ bodyHash: bc.ownerHash, filePath: bc.ownerFile }), ({ edge }) => edge);
|
|
242
|
+
const functions = stitchCrossShardEdges(merged.functions, edgesByOwnerKey);
|
|
243
|
+
return { catalog: { ...merged, functions }, boundaryStats: stats };
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Resolve one cross-boundary call to a recovered edge — semantically, by
|
|
247
|
+
* linking the import specifier + callee name to a UNIQUE target occurrence, or
|
|
248
|
+
* DECLINING (`to: []`) when the link is absent or ambiguous. Three branches:
|
|
249
|
+
*
|
|
250
|
+
* (a) RELATIVE specifier (`./x`) → pin by path against the owner's directory
|
|
251
|
+
* (an intra-package import; already exact). Emit when ≥1 occurrence in the
|
|
252
|
+
* resolved file matches the callee name.
|
|
253
|
+
* (b) BARE / workspace specifier that resolves to a known workspace package P →
|
|
254
|
+
* look the callee name up in P's export bucket: exactly 1 export → emit;
|
|
255
|
+
* >1 → narrow by a single subpath-pinned file if possible, else decline;
|
|
256
|
+
* 0 → decline (not exported / re-export chain we don't follow).
|
|
257
|
+
* (c) Specifier maps to no known workspace package (external npm) → unresolved.
|
|
258
|
+
*
|
|
259
|
+
* A recovered edge is `'semantic'`, `crossShard: true`, `confidence: 'high'`.
|
|
260
|
+
*/
|
|
261
|
+
function resolveOne(bc, ctx) {
|
|
262
|
+
const base = {
|
|
263
|
+
line: bc.line,
|
|
264
|
+
column: bc.column,
|
|
265
|
+
resolution: 'semantic',
|
|
266
|
+
text: truncateForCallEdge(bc.text),
|
|
267
|
+
discarded: bc.discarded ?? false,
|
|
268
|
+
crossShard: true,
|
|
269
|
+
confidence: 'high',
|
|
270
|
+
};
|
|
271
|
+
const spec = bc.importSpecifier;
|
|
272
|
+
// (a0) Type-attested cross-package METHOD: the checker resolved `recv.m()`'s
|
|
273
|
+
// method to a workspace `dist/*.d.ts` whose SOURCE lives in another shard, so
|
|
274
|
+
// the boundary extractor carried the mapped source file. Pin by (target file +
|
|
275
|
+
// method name) against the merged catalog. UNIQUE-or-decline, mirroring the
|
|
276
|
+
// exact engine's intra-package `pinByDtsDeclSource` — both engines route
|
|
277
|
+
// cross-package methods here, so they resolve identically.
|
|
278
|
+
if (bc.targetFile !== undefined) {
|
|
279
|
+
const candidates = ctx.nameIndex.get(bc.calleeName) ?? [];
|
|
280
|
+
const distinct = [
|
|
281
|
+
...new Set(candidates.filter((o) => o.filePath === bc.targetFile).map((o) => o.bodyHash)),
|
|
282
|
+
];
|
|
283
|
+
const edge = distinct.length === 1 ? { ...base, to: distinct } : { ...base, to: [] };
|
|
284
|
+
traceResolveOne(bc, 'method-target', edge.to);
|
|
285
|
+
return edge;
|
|
286
|
+
}
|
|
287
|
+
// (a) Relative import → path-pin (intra-package). UNIQUE-or-decline: a single
|
|
288
|
+
// distinct target bodyHash in the pinned file resolves; same-name ambiguity
|
|
289
|
+
// declines — identical semantics to the exact engine's file+name pin
|
|
290
|
+
// (`pinByFileAndName`), so the two engines converge (Phase 3, Option A;
|
|
291
|
+
// decline-beats-guess). Previously emitted ALL matches as a multi-target edge.
|
|
292
|
+
if (spec?.startsWith('.')) {
|
|
293
|
+
const candidates = ctx.nameIndex.get(bc.calleeName) ?? [];
|
|
294
|
+
const pinned = pinBySpecifier(bc, candidates, ctx.knownFiles);
|
|
295
|
+
const distinct = [...new Set(pinned.map((o) => o.bodyHash))];
|
|
296
|
+
const edge = distinct.length === 1 ? { ...base, to: distinct } : { ...base, to: [] };
|
|
297
|
+
traceResolveOne(bc, 'relative-pin', edge.to);
|
|
298
|
+
return edge;
|
|
299
|
+
}
|
|
300
|
+
// (b)/(c) Bare or workspace specifier → resolve to a package and link by export
|
|
301
|
+
// through the SHARED cross-package resolver the exact adapter also uses.
|
|
302
|
+
const linked = resolveCrossPackageCall({
|
|
303
|
+
importSpecifier: spec,
|
|
304
|
+
calleeName: bc.calleeName,
|
|
305
|
+
exportIndex: ctx.exportIndex,
|
|
306
|
+
manifestIndex: ctx.manifestIndex,
|
|
307
|
+
});
|
|
308
|
+
const edge = linked === undefined ? { ...base, to: [] } : { ...base, to: [linked.bodyHash] };
|
|
309
|
+
traceResolveOne(bc, 'workspace-export', edge.to);
|
|
310
|
+
return edge;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Pin a boundary call to specific target occurrences via its import
|
|
314
|
+
* specifier. Only RELATIVE specifiers are path-pinnable here (resolved
|
|
315
|
+
* against the owner's REAL file directory carried on the descriptor —
|
|
316
|
+
* `bc.ownerFile`, byte-identical to the owner occurrence's `filePath`);
|
|
317
|
+
* bare/package specifiers fall through to name-only resolution. Purely
|
|
318
|
+
* generic path math. Resolving against the owner's actual file (not a
|
|
319
|
+
* last-writer-wins `bodyHash→file` guess) is what keeps body-twins from
|
|
320
|
+
* pinning relative imports against the wrong twin's directory (ADR-0003).
|
|
321
|
+
*/
|
|
322
|
+
function pinBySpecifier(bc, candidates, knownFiles) {
|
|
323
|
+
const spec = bc.importSpecifier;
|
|
324
|
+
if (!spec?.startsWith('.'))
|
|
325
|
+
return [];
|
|
326
|
+
const resolved = posix.normalize(posix.join(posix.dirname(bc.ownerFile), spec));
|
|
327
|
+
const target = stripExt(resolved);
|
|
328
|
+
// Accept either `<target>.<ext>` or `<target>/index.<ext>`.
|
|
329
|
+
const matchesTarget = (filePath) => {
|
|
330
|
+
const fp = stripExt(filePath);
|
|
331
|
+
return fp === target || fp === `${target}/index`;
|
|
332
|
+
};
|
|
333
|
+
// Only pin when the resolved target actually exists in the catalog.
|
|
334
|
+
if (![...knownFiles].some(matchesTarget))
|
|
335
|
+
return [];
|
|
336
|
+
return candidates.filter((c) => matchesTarget(c.filePath));
|
|
337
|
+
}
|
|
338
|
+
function stripExt(p) {
|
|
339
|
+
return p.replace(/\.[A-Za-z0-9]+$/, '');
|
|
340
|
+
}
|
|
341
|
+
// ── catalog helpers ───────────────────────────────────────────────
|
|
342
|
+
function buildNameIndex(catalog) {
|
|
343
|
+
const index = new Map();
|
|
344
|
+
for (const [name, occs] of Object.entries(catalog.functions)) {
|
|
345
|
+
if (occs && occs.length > 0)
|
|
346
|
+
index.set(name, occs);
|
|
347
|
+
}
|
|
348
|
+
return index;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Stitch cross-shard edges onto each owner occurrence, via the shared identity
|
|
352
|
+
* module keyed by `ownerEdgeKey(o.bodyHash, o.filePath)` — so ONLY the owning
|
|
353
|
+
* occurrence receives its recovered edges (body-twins in different files never
|
|
354
|
+
* smear; ADR-0003). A recovered edge REPLACES the unresolved (`to: []`)
|
|
355
|
+
* intra-shard placeholder the local resolver left at the same call site —
|
|
356
|
+
* otherwise the site would carry two edges (one unresolved, one recovered) and
|
|
357
|
+
* double-count. Resolved intra-shard edges are always kept.
|
|
358
|
+
*/
|
|
359
|
+
function stitchCrossShardEdges(functions, edgesByOwnerKey) {
|
|
360
|
+
return stitchEdgesByOwner(functions, edgesByOwnerKey, (o, extra) => {
|
|
361
|
+
const recoveredAt = new Set(extra.map((e) => `${String(e.line)}:${String(e.column)}`));
|
|
362
|
+
// Drop the unresolved placeholder the local pass left at a recovered site.
|
|
363
|
+
const kept = o.calls.filter((e) => !(e.to.length === 0 && recoveredAt.has(`${String(e.line)}:${String(e.column)}`)));
|
|
364
|
+
// Re-canonicalize the merged edge list — `extra` is in boundary-call
|
|
365
|
+
// (flat-map) order, which depends on shard completion order; sorting here
|
|
366
|
+
// keeps the stitched occurrence byte-identical across runs.
|
|
367
|
+
return { ...o, calls: sortCalls([...kept, ...extra]) };
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Full structural diff of two catalogs: function set + edges + SCCs. The
|
|
372
|
+
* Phase-4 equivalence gate runs this over (sharded, exact) and asserts every
|
|
373
|
+
* partition empty. Composes the three orthogonal diffs:
|
|
374
|
+
* - `diffFunctionSets` — occurrence-identity symmetric difference;
|
|
375
|
+
* - `diffCatalogsByEdge` — the per-edge target diff (intra / cross);
|
|
376
|
+
* - `diffSccs` — occId-keyed SCC membership diff (reusing the engine's own
|
|
377
|
+
* `computeSccs` over `buildIndexes`, so the gate measures the SAME SCCs the
|
|
378
|
+
* `cycle` rule consumes).
|
|
379
|
+
*/
|
|
380
|
+
export function diffCatalogs(a, b) {
|
|
381
|
+
const fnDiff = diffFunctionSets(a, b);
|
|
382
|
+
const edgeDiff = diffCatalogsByEdge(a, b);
|
|
383
|
+
const sccDifferences = diffSccs(a, b);
|
|
384
|
+
return {
|
|
385
|
+
functionsOnlyInA: fnDiff.onlyInA,
|
|
386
|
+
functionsOnlyInB: fnDiff.onlyInB,
|
|
387
|
+
intraMismatches: edgeDiff.intraMismatches,
|
|
388
|
+
crossDifferences: edgeDiff.crossDifferences,
|
|
389
|
+
sccDifferences,
|
|
390
|
+
edgeDifferences: edgeDiff.differences,
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
/** True when every partition of a {@link CatalogEquivalence} is empty. */
|
|
394
|
+
export function isEquivalent(eq) {
|
|
395
|
+
return (eq.functionsOnlyInA.length === 0 &&
|
|
396
|
+
eq.functionsOnlyInB.length === 0 &&
|
|
397
|
+
eq.intraMismatches.length === 0 &&
|
|
398
|
+
eq.crossDifferences.length === 0 &&
|
|
399
|
+
eq.sccDifferences.length === 0);
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Symmetric difference of the two catalogs' OCCURRENCE IDENTITY sets. Identity
|
|
403
|
+
* is `qualifiedName` when present, else `filePath:line:simpleName` — mirroring
|
|
404
|
+
* the FunctionOccurrence identity model used by `graph-catalog-diff.mjs` and
|
|
405
|
+
* the symbol index, so the in-test gate and the repo-scale diagnostic agree.
|
|
406
|
+
*/
|
|
407
|
+
function diffFunctionSets(a, b) {
|
|
408
|
+
const idsA = functionIdentities(a);
|
|
409
|
+
const idsB = functionIdentities(b);
|
|
410
|
+
const onlyInA = [...idsA].filter((id) => !idsB.has(id)).sort();
|
|
411
|
+
const onlyInB = [...idsB].filter((id) => !idsA.has(id)).sort();
|
|
412
|
+
return { onlyInA, onlyInB };
|
|
413
|
+
}
|
|
414
|
+
/** The set of occurrence identities (`qualifiedName` ?? `filePath:line:name`). */
|
|
415
|
+
function functionIdentities(catalog) {
|
|
416
|
+
const ids = new Set();
|
|
417
|
+
for (const [name, occs] of Object.entries(catalog.functions)) {
|
|
418
|
+
if (!occs)
|
|
419
|
+
continue;
|
|
420
|
+
for (const o of occs)
|
|
421
|
+
ids.add(occurrenceIdentity(o, name));
|
|
422
|
+
}
|
|
423
|
+
return ids;
|
|
424
|
+
}
|
|
425
|
+
function occurrenceIdentity(o, simpleName) {
|
|
426
|
+
return o.qualifiedName.length > 0
|
|
427
|
+
? o.qualifiedName
|
|
428
|
+
: `${o.filePath}:${String(o.line)}:${simpleName}`;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Diff the two catalogs' strongly-connected components by SORTED-MEMBER
|
|
432
|
+
* signature. Each SCC is computed via the engine's canonical `computeSccs`
|
|
433
|
+
* (occId-keyed Tarjan) over `buildIndexes(catalog)` — the exact same pass the
|
|
434
|
+
* `cycle` rule's feature column uses — then keyed by its sorted member occIds
|
|
435
|
+
* joined. The result is the symmetric difference of those signatures: a
|
|
436
|
+
* component present in one catalog but not the other (a cycle the two engines
|
|
437
|
+
* disagree on). Singletons are included by `computeSccs` but are stable across
|
|
438
|
+
* engines once the function set matches, so they don't generate noise; only a
|
|
439
|
+
* genuine membership divergence surfaces.
|
|
440
|
+
*/
|
|
441
|
+
function diffSccs(a, b) {
|
|
442
|
+
const sigA = sccSignatures(a);
|
|
443
|
+
const sigB = sccSignatures(b);
|
|
444
|
+
const diff = [...[...sigA].filter((s) => !sigB.has(s)), ...[...sigB].filter((s) => !sigA.has(s))];
|
|
445
|
+
return [...new Set(diff)].sort();
|
|
446
|
+
}
|
|
447
|
+
/** Sorted-member signatures of a catalog's SCCs (the engine's own computation). */
|
|
448
|
+
function sccSignatures(catalog) {
|
|
449
|
+
const indexes = buildIndexes(catalog);
|
|
450
|
+
const signatures = new Set();
|
|
451
|
+
for (const scc of computeSccs(indexes)) {
|
|
452
|
+
signatures.add([...scc.members].sort().join('|'));
|
|
453
|
+
}
|
|
454
|
+
return signatures;
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Diff two catalogs by edge, partitioned into intra-shard mismatches and
|
|
458
|
+
* cross-package (boundary-linked) differences. An edge is keyed by
|
|
459
|
+
* `ownerHash@line:col → sorted(to)`; a key is a difference when the two
|
|
460
|
+
* catalogs disagree on its target set. Both partitions MUST be empty for a
|
|
461
|
+
* correct sharded build vs single-program build: intra-package edges are exact
|
|
462
|
+
* in both, and semantic boundary linking reproduces the single-program build's
|
|
463
|
+
* cross-package edges verbatim (Phase 2). The partition only records WHICH side
|
|
464
|
+
* a difference falls on (cross when either edge is `crossShard`), so a
|
|
465
|
+
* regression is attributable to the linker vs a local resolver. The Phase 4
|
|
466
|
+
* equivalence guardrail (`__tests__/equivalence.test.ts`) is the live gate.
|
|
467
|
+
*
|
|
468
|
+
* `differences` additionally carries the OWNER FILE PATH + call-site line/column
|
|
469
|
+
* of every differing edge, so the real-repo equivalence guardrail can classify a
|
|
470
|
+
* divergence by owner file (test/fixture-owned ⇒ gate-invisible; production ⇒
|
|
471
|
+
* meaningful) and print the offending `file:line → target` on a budget breach.
|
|
472
|
+
* The legacy key arrays are unchanged.
|
|
473
|
+
*/
|
|
474
|
+
export function diffCatalogsByEdge(a, b) {
|
|
475
|
+
const ea = indexEdges(a);
|
|
476
|
+
const eb = indexEdges(b);
|
|
477
|
+
const intraMismatches = [];
|
|
478
|
+
const crossDifferences = [];
|
|
479
|
+
const differences = [];
|
|
480
|
+
const keys = new Set([...ea.keys(), ...eb.keys()]);
|
|
481
|
+
for (const key of keys) {
|
|
482
|
+
const x = ea.get(key);
|
|
483
|
+
const y = eb.get(key);
|
|
484
|
+
if (x?.to === y?.to)
|
|
485
|
+
continue; // identical (or both absent) → no difference
|
|
486
|
+
const isCross = (x?.crossShard ?? false) || (y?.crossShard ?? false);
|
|
487
|
+
(isCross ? crossDifferences : intraMismatches).push(key);
|
|
488
|
+
// Owner file path + position is the same on both sides (shared occurrence
|
|
489
|
+
// identity); take whichever side carries the edge.
|
|
490
|
+
const present = x ?? y;
|
|
491
|
+
differences.push({
|
|
492
|
+
key,
|
|
493
|
+
ownerFilePath: present?.ownerFilePath ?? '',
|
|
494
|
+
line: present?.line ?? 0,
|
|
495
|
+
column: present?.column ?? 0,
|
|
496
|
+
toA: x?.to ?? '',
|
|
497
|
+
toB: y?.to ?? '',
|
|
498
|
+
cross: isCross,
|
|
499
|
+
});
|
|
500
|
+
}
|
|
501
|
+
return { intraMismatches, crossDifferences, differences };
|
|
502
|
+
}
|
|
503
|
+
function indexEdges(catalog) {
|
|
504
|
+
const map = new Map();
|
|
505
|
+
for (const occs of Object.values(catalog.functions)) {
|
|
506
|
+
if (!occs)
|
|
507
|
+
continue;
|
|
508
|
+
for (const o of occs) {
|
|
509
|
+
for (const e of o.calls) {
|
|
510
|
+
const key = `${o.bodyHash}@${String(e.line)}:${String(e.column)}`;
|
|
511
|
+
map.set(key, {
|
|
512
|
+
to: [...e.to].sort().join(','),
|
|
513
|
+
crossShard: e.crossShard ?? false,
|
|
514
|
+
ownerFilePath: o.filePath,
|
|
515
|
+
line: e.line,
|
|
516
|
+
column: e.column,
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
return map;
|
|
522
|
+
}
|
|
523
|
+
//# sourceMappingURL=cross-shard-resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross-shard-resolve.js","sourceRoot":"","sources":["../../../src/cli/orchestrate/cross-shard-resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared occurrence/edge IDENTITY — the ONE module that owns how call/dependency
|
|
3
|
+
* edges are keyed to their owning occurrence and stitched back onto it.
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS EXISTS (the drift it closes):
|
|
6
|
+
* ADR-0003 mandates edges be keyed by OCCURRENCE — `ownerEdgeKey(bodyHash,
|
|
7
|
+
* filePath)` — not by `bodyHash` alone: two functions with byte-identical
|
|
8
|
+
* bodies in different files (e.g. `stripStrings` duplicated across the language
|
|
9
|
+
* adapters) share a hash, so a hash-only bucket UNIONS their edges, inventing
|
|
10
|
+
* phantom cross-package coupling. The EXACT path complied (its resolver returns
|
|
11
|
+
* an `ownerEdgeKey`-keyed map; `catalog-builder.stitchEdges` reads it the same
|
|
12
|
+
* way). The CROSS-SHARD merge did NOT — it bucketed/stitched by `bc.ownerHash`
|
|
13
|
+
* alone (a second, drifting keying scheme). That drift is the root cause of the
|
|
14
|
+
* F1 ADR-0003 violation.
|
|
15
|
+
*
|
|
16
|
+
* This module is the single home of that identity. Both engines import it; no
|
|
17
|
+
* consumer keys edges by a bare `bodyHash`. The Phase-1 fitness check
|
|
18
|
+
* (`no-bodyhash-keying-outside-identity`) forbids re-deriving an owner-keyed
|
|
19
|
+
* edge map anywhere else, so the drift cannot recur.
|
|
20
|
+
*
|
|
21
|
+
* Pure: no fs, no engine state — both engines and the equivalence harness import
|
|
22
|
+
* the same helpers.
|
|
23
|
+
*/
|
|
24
|
+
import type { CallEdge, FunctionOccurrence } from '../../types.js';
|
|
25
|
+
export { ownerEdgeKey } from '../../owner-key.js';
|
|
26
|
+
/**
|
|
27
|
+
* Bucket a flat list of edge-bearing items into a `Map<ownerEdgeKey, CallEdge[]>`,
|
|
28
|
+
* keyed via {@link ownerEdgeKey} (NOT by `bodyHash` alone). `keyParts` extracts
|
|
29
|
+
* the owning occurrence's `(bodyHash, filePath)` from each item; `edgeOf`
|
|
30
|
+
* extracts the edge. Append-order within a bucket is preserved (callers sort
|
|
31
|
+
* downstream for determinism). The canonical owner-keyed bucket: every consumer
|
|
32
|
+
* routes through this instead of re-deriving an owner key inline.
|
|
33
|
+
*/
|
|
34
|
+
export declare function bucketEdgesByOwner<T>(items: Iterable<T>, keyParts: (item: T) => {
|
|
35
|
+
readonly bodyHash: string;
|
|
36
|
+
readonly filePath: string;
|
|
37
|
+
}, edgeOf: (item: T) => CallEdge): Map<string, CallEdge[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Stitch recovered edges onto each occurrence, keyed by
|
|
40
|
+
* `ownerEdgeKey(o.bodyHash, o.filePath)` so ONLY the owning occurrence receives
|
|
41
|
+
* its edges (body-twins in different files never smear). `combine` decides how an
|
|
42
|
+
* occurrence's existing `calls` and its recovered edges merge (e.g. replace,
|
|
43
|
+
* concatenate, or drop-placeholder-then-concat) and returns the new occurrence —
|
|
44
|
+
* keeping the keying in one place while leaving the per-engine merge policy to
|
|
45
|
+
* the caller. An occurrence with no recovered edges is returned unchanged.
|
|
46
|
+
*/
|
|
47
|
+
export declare function stitchEdgesByOwner(functions: Readonly<Record<string, readonly FunctionOccurrence[]>>, edgesByOwnerKey: ReadonlyMap<string, readonly CallEdge[]>, combine: (occ: FunctionOccurrence, recovered: readonly CallEdge[]) => FunctionOccurrence): Record<string, readonly FunctionOccurrence[]>;
|
|
48
|
+
//# sourceMappingURL=edge-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-identity.d.ts","sourceRoot":"","sources":["../../../src/cli/orchestrate/edge-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC/E,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,QAAQ,GAC5B,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAUzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAAC,EAClE,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC,EACzD,OAAO,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,QAAQ,EAAE,KAAK,kBAAkB,GACvF,MAAM,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAa/C"}
|