@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,166 @@
|
|
|
1
|
+
// @fitness-ignore-file performance-anti-patterns -- discoverPolyglotUnits iterates the small fixed adapters list (5 languages); each adapter's discoverWorkspaceUnits performs I/O whose results depend on the per-adapter cwd state, so sequential await is intentional to keep error context attributable per adapter.
|
|
2
|
+
/**
|
|
3
|
+
* `graph --workspace` parallel runner.
|
|
4
|
+
*
|
|
5
|
+
* Fans a graph run out across every workspace unit detected by the
|
|
6
|
+
* language adapters' `discoverWorkspaceUnits` hook by spawning one
|
|
7
|
+
* child process per unit, each running `graph <rootDir> --json`. Each
|
|
8
|
+
* child has its own Node heap, so the per-unit memory ceiling that
|
|
9
|
+
* Phase 6 already provides scales naturally:
|
|
10
|
+
* N units × ~per-unit-budget ≈ total budget. Concurrency is capped at
|
|
11
|
+
* `os.cpus().length - 1` (or a caller override) so we don't
|
|
12
|
+
* oversubscribe.
|
|
13
|
+
*
|
|
14
|
+
* Polyglot per spec D8b: callers compose units from multiple adapters
|
|
15
|
+
* via `discoverPolyglotUnits` and pass the flattened list. The runner
|
|
16
|
+
* itself is language-agnostic — it only sees opaque `WorkspaceUnit`s.
|
|
17
|
+
*/
|
|
18
|
+
import { spawn } from 'node:child_process';
|
|
19
|
+
import { cpus } from 'node:os';
|
|
20
|
+
import { relative } from 'node:path';
|
|
21
|
+
import { ConfigurationError, logger, } from '@opensip-cli/core';
|
|
22
|
+
import { runWorkerPool } from './orchestrate/worker-pool.js';
|
|
23
|
+
/**
|
|
24
|
+
* Aggregate WorkspaceUnits across all adapters that implement the
|
|
25
|
+
* discovery hook. Per spec D8b: in a polyglot repo (e.g. TS frontend +
|
|
26
|
+
* Cargo backend) both adapters contribute units to one combined fan-
|
|
27
|
+
* out. Adapters without the hook contribute zero units (D5).
|
|
28
|
+
*
|
|
29
|
+
* Returns units sorted by `rootDir` for deterministic fan-out order.
|
|
30
|
+
*/
|
|
31
|
+
export async function discoverPolyglotUnits(rootDir, adapters) {
|
|
32
|
+
const all = [];
|
|
33
|
+
for (const adapter of adapters) {
|
|
34
|
+
if (!adapter.discoverWorkspaceUnits)
|
|
35
|
+
continue;
|
|
36
|
+
const units = await adapter.discoverWorkspaceUnits(rootDir);
|
|
37
|
+
all.push(...units);
|
|
38
|
+
}
|
|
39
|
+
all.sort((a, b) => a.rootDir.localeCompare(b.rootDir));
|
|
40
|
+
return all;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Spawn one child process per WorkspaceUnit, run `graph <rootDir>
|
|
44
|
+
* --json` in each, and aggregate the parsed findings. Concurrency is
|
|
45
|
+
* capped (default `cpus()-1`). Always resolves; child failures are
|
|
46
|
+
* surfaced via `anyChildFailed`.
|
|
47
|
+
*/
|
|
48
|
+
export async function runWorkspaceUnitsInParallel(input) {
|
|
49
|
+
if (input.units.length === 0) {
|
|
50
|
+
throw new ConfigurationError('--workspace: no workspace units found. Use `opensip graph` for whole-project analysis.');
|
|
51
|
+
}
|
|
52
|
+
const concurrency = Math.max(1, input.concurrency ?? Math.max(1, cpus().length - 1));
|
|
53
|
+
logger.info({
|
|
54
|
+
evt: 'graph.cli.workspace.start',
|
|
55
|
+
module: 'graph:cli',
|
|
56
|
+
units: input.units.length,
|
|
57
|
+
concurrency,
|
|
58
|
+
});
|
|
59
|
+
// Shared bounded worker pool (also used by the shard runner). Each slot
|
|
60
|
+
// spawns one child at a time and pulls the next unit when it finishes.
|
|
61
|
+
const results = await runWorkerPool(input.units, concurrency, (unit) => spawnGraphChild({
|
|
62
|
+
cliScript: input.cliScript,
|
|
63
|
+
unit,
|
|
64
|
+
cwd: input.cwd,
|
|
65
|
+
noCache: input.noCache === true,
|
|
66
|
+
resolution: input.resolution,
|
|
67
|
+
recipe: input.recipe,
|
|
68
|
+
...(input.language === undefined ? {} : { language: input.language }),
|
|
69
|
+
}));
|
|
70
|
+
const anyChildFailed = results.some((r) => r.exitCode !== 0);
|
|
71
|
+
// Sort for deterministic display order regardless of completion
|
|
72
|
+
// order — units finish in unpredictable order under parallelism.
|
|
73
|
+
results.sort((a, b) => a.rootDir.localeCompare(b.rootDir));
|
|
74
|
+
logger.info({
|
|
75
|
+
evt: 'graph.cli.workspace.complete',
|
|
76
|
+
module: 'graph:cli',
|
|
77
|
+
units: input.units.length,
|
|
78
|
+
anyChildFailed,
|
|
79
|
+
});
|
|
80
|
+
return { perUnit: results, anyChildFailed };
|
|
81
|
+
}
|
|
82
|
+
function spawnGraphChild(input) {
|
|
83
|
+
return new Promise((resolvePromise) => {
|
|
84
|
+
const args = [input.cliScript, 'graph', input.unit.rootDir, '--json'];
|
|
85
|
+
if (input.noCache)
|
|
86
|
+
args.push('--no-cache');
|
|
87
|
+
if (input.resolution !== undefined)
|
|
88
|
+
args.push('--resolution', input.resolution);
|
|
89
|
+
if (input.language !== undefined && input.language.length > 0)
|
|
90
|
+
args.push('--language', input.language);
|
|
91
|
+
if (input.recipe !== undefined)
|
|
92
|
+
args.push('--recipe', input.recipe);
|
|
93
|
+
const child = spawn(process.execPath, args, {
|
|
94
|
+
cwd: input.cwd,
|
|
95
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
96
|
+
env: process.env,
|
|
97
|
+
});
|
|
98
|
+
let stdout = '';
|
|
99
|
+
let stderr = '';
|
|
100
|
+
// setEncoding routes chunks through a StringDecoder that buffers
|
|
101
|
+
// partial multi-byte UTF-8 sequences across 'data' chunk boundaries.
|
|
102
|
+
// Without it, a non-ASCII char split across two chunks decodes to
|
|
103
|
+
// replacement chars and corrupts the --json stdout parsed below.
|
|
104
|
+
child.stdout.setEncoding('utf8');
|
|
105
|
+
child.stderr.setEncoding('utf8');
|
|
106
|
+
child.stdout.on('data', (chunk) => {
|
|
107
|
+
stdout += chunk;
|
|
108
|
+
});
|
|
109
|
+
child.stderr.on('data', (chunk) => {
|
|
110
|
+
stderr += chunk;
|
|
111
|
+
});
|
|
112
|
+
child.on('error', (err) => {
|
|
113
|
+
/* v8 ignore start */
|
|
114
|
+
resolvePromise({
|
|
115
|
+
unitId: input.unit.id,
|
|
116
|
+
rootDir: input.unit.rootDir,
|
|
117
|
+
displayPath: relative(input.cwd, input.unit.rootDir),
|
|
118
|
+
signals: [],
|
|
119
|
+
exitCode: -1,
|
|
120
|
+
stderr: `failed to spawn child: ${err.message}`,
|
|
121
|
+
});
|
|
122
|
+
/* v8 ignore stop */
|
|
123
|
+
});
|
|
124
|
+
child.on('close', (code) => {
|
|
125
|
+
const signals = parseChildSignals(stdout, input.unit.rootDir, stderr);
|
|
126
|
+
resolvePromise({
|
|
127
|
+
unitId: input.unit.id,
|
|
128
|
+
rootDir: input.unit.rootDir,
|
|
129
|
+
displayPath: relative(input.cwd, input.unit.rootDir),
|
|
130
|
+
signals,
|
|
131
|
+
/* v8 ignore next */
|
|
132
|
+
exitCode: code ?? -1,
|
|
133
|
+
stderr,
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Parse a child's `--json` {@link SignalEnvelope} stdout into a flat
|
|
140
|
+
* `Signal[]` (ADR-0011 — `graph --json` now emits the envelope, not the
|
|
141
|
+
* legacy `CliOutput`). Returns an empty array on parse failure; the caller
|
|
142
|
+
* surfaces the child's stderr separately.
|
|
143
|
+
*/
|
|
144
|
+
function parseChildSignals(stdout, rootDir, stderr) {
|
|
145
|
+
const trimmed = stdout.trim();
|
|
146
|
+
if (trimmed.length === 0)
|
|
147
|
+
return [];
|
|
148
|
+
let parsed;
|
|
149
|
+
try {
|
|
150
|
+
parsed = JSON.parse(trimmed);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
/* v8 ignore start */
|
|
154
|
+
logger.warn({
|
|
155
|
+
evt: 'graph.cli.workspace.parse-error',
|
|
156
|
+
module: 'graph:cli',
|
|
157
|
+
rootDir,
|
|
158
|
+
err: error instanceof Error ? error.message : String(error),
|
|
159
|
+
stderrPreview: stderr.slice(0, 200),
|
|
160
|
+
});
|
|
161
|
+
return [];
|
|
162
|
+
/* v8 ignore stop */
|
|
163
|
+
}
|
|
164
|
+
return parsed.signals ?? [];
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=workspace-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-runner.js","sourceRoot":"","sources":["../../src/cli/workspace-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Linker data structures for semantic cross-shard resolution (plan #2, Phase 1).
|
|
3
|
+
*
|
|
4
|
+
* Two pure "symbol tables" the boundary resolver (Phase 2) links against —
|
|
5
|
+
* derivable entirely from data already present in a merged catalog plus the
|
|
6
|
+
* resolved `Shard[]`:
|
|
7
|
+
*
|
|
8
|
+
* 1. {@link ExportIndex} — per-package map of exported function name →
|
|
9
|
+
* occurrences (`visibility === 'exported'`). The export symbol table:
|
|
10
|
+
* "given a package and a callee name, which exported occurrences match?"
|
|
11
|
+
* 2. {@link PackageManifestIndex} — package `name` → its on-disk manifest
|
|
12
|
+
* (`name`, dir, `exports` map). Lets {@link resolveSpecifierToPackage}
|
|
13
|
+
* turn a bare import specifier (`@scope/pkg[/subpath]`) into the package
|
|
14
|
+
* group the {@link ExportIndex} is keyed by.
|
|
15
|
+
*
|
|
16
|
+
* Engine-layer and language-agnostic: no TypeScript parser, no AST. The only
|
|
17
|
+
* effect is reading each package's `package.json` from disk in
|
|
18
|
+
* {@link buildPackageManifestIndex}; everything else is plain map/path/JSON
|
|
19
|
+
* math. These structures are UNUSED by resolution logic in Phase 1 — Phase 2
|
|
20
|
+
* wires them into `resolveCrossBoundaryCalls`.
|
|
21
|
+
*
|
|
22
|
+
* Package-key alignment (the linchpin Phase 2 depends on): the boundary
|
|
23
|
+
* resolver buckets occurrences by `packageOf(occ.filePath)` — the path segment
|
|
24
|
+
* under `packages/` (e.g. `core`, `graph`, `languages`), NOT the package.json
|
|
25
|
+
* `name`. So {@link buildExportIndex} keys by exactly that, and
|
|
26
|
+
* {@link resolveSpecifierToPackage} returns a `packageGroup` derived by running
|
|
27
|
+
* `packageOf` over the manifest's project-relative dir — so a specifier's
|
|
28
|
+
* resolved group matches the `ExportIndex` keys verbatim.
|
|
29
|
+
*/
|
|
30
|
+
import type { Shard } from '../cli/orchestrate/shard-model.js';
|
|
31
|
+
import type { Catalog, FunctionOccurrence } from '../types.js';
|
|
32
|
+
/**
|
|
33
|
+
* Per-package export symbol table: `package` → (`name` → exported occurrences).
|
|
34
|
+
*
|
|
35
|
+
* The outer key is `packageOf(filePath)` (the `packages/<segment>` group),
|
|
36
|
+
* matching the bucketing the boundary resolver uses; the inner key is a
|
|
37
|
+
* function's `simpleName`. Only `visibility === 'exported'` occurrences are
|
|
38
|
+
* present — module-local and private occurrences are excluded, since an import
|
|
39
|
+
* specifier can only reach a package's exports.
|
|
40
|
+
*
|
|
41
|
+
* Insertion order follows catalog iteration. Consumers MUST match by name, not
|
|
42
|
+
* order; the inner arrays are the deterministic candidate set for a name.
|
|
43
|
+
*/
|
|
44
|
+
export type ExportIndex = ReadonlyMap<string, ReadonlyMap<string, readonly FunctionOccurrence[]>>;
|
|
45
|
+
/**
|
|
46
|
+
* Bucket every exported occurrence in `catalog` by its package group then by
|
|
47
|
+
* its simple name. Deterministic and allocation-lean: one pass over
|
|
48
|
+
* `catalog.functions`, no sorting (matching is by name, not order).
|
|
49
|
+
*
|
|
50
|
+
* The package key is `packageOf(occ.filePath)` — identical to what the
|
|
51
|
+
* cross-shard resolver buckets by — so Phase 2 can look up
|
|
52
|
+
* `exportIndex.get(packageGroup)` where `packageGroup` comes from
|
|
53
|
+
* {@link resolveSpecifierToPackage}.
|
|
54
|
+
*/
|
|
55
|
+
export declare function buildExportIndex(catalog: Catalog, manifestIndex?: PackageManifestIndex): ExportIndex;
|
|
56
|
+
/**
|
|
57
|
+
* One workspace package's manifest facts the specifier resolver needs.
|
|
58
|
+
*
|
|
59
|
+
* `dir` is the package's PROJECT-RELATIVE root (e.g. `packages/core`) — the
|
|
60
|
+
* form `packageOf` expects — derived from the shard's absolute `rootDir`
|
|
61
|
+
* against the common project root. `exportsMap` is the raw `exports` field
|
|
62
|
+
* (when an object), used to gate subpath resolution.
|
|
63
|
+
*/
|
|
64
|
+
export interface PackageManifest {
|
|
65
|
+
readonly name: string;
|
|
66
|
+
readonly dir: string;
|
|
67
|
+
readonly exportsMap?: Record<string, unknown>;
|
|
68
|
+
}
|
|
69
|
+
/** Package `name` → its {@link PackageManifest}. */
|
|
70
|
+
export type PackageManifestIndex = ReadonlyMap<string, PackageManifest>;
|
|
71
|
+
/**
|
|
72
|
+
* Read each shard's `package.json` (`name`, `exports`) and index it by package
|
|
73
|
+
* name. Reuses the already-resolved `Shard[]` (no re-discovery); a shard whose
|
|
74
|
+
* `rootDir` has no readable/parseable `package.json`, or whose manifest has no
|
|
75
|
+
* string `name`, is skipped (it simply won't be specifier-resolvable).
|
|
76
|
+
*
|
|
77
|
+
* `projectRoot` is the common root all shard file paths are relativized
|
|
78
|
+
* against, so each manifest's `dir` is in the same project-relative form
|
|
79
|
+
* `packageOf` consumes.
|
|
80
|
+
*/
|
|
81
|
+
export declare function buildPackageManifestIndex(shards: readonly Shard[], projectRoot: string): PackageManifestIndex;
|
|
82
|
+
/**
|
|
83
|
+
* Build a {@link PackageManifestIndex} from a bare list of package ROOT dirs
|
|
84
|
+
* (absolute), reading each `<rootDir>/package.json`. The `Shard`-free entry the
|
|
85
|
+
* single-program (exact) engine uses: it has no `Shard[]` to hand the shard
|
|
86
|
+
* overload, only the package roots it derived from the catalog. Same best-effort
|
|
87
|
+
* semantics — a root with no readable/parseable manifest, or a manifest with no
|
|
88
|
+
* string `name`, is skipped (it won't be specifier-resolvable). First write
|
|
89
|
+
* wins on a duplicate `name`.
|
|
90
|
+
*/
|
|
91
|
+
export declare function buildPackageManifestIndexFromRoots(rootDirs: readonly string[], projectRoot: string): PackageManifestIndex;
|
|
92
|
+
/** The outcome of resolving a bare import specifier to a workspace package. */
|
|
93
|
+
export interface ResolvedSpecifier {
|
|
94
|
+
/** The `packageOf`-aligned group key — looks up into an {@link ExportIndex}. */
|
|
95
|
+
readonly packageGroup: string;
|
|
96
|
+
/** The `exports` subpath (`./errors`) when the specifier addressed one. */
|
|
97
|
+
readonly subpath?: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Resolve a bare import specifier (`@scope/pkg` or `@scope/pkg/subpath`, or the
|
|
101
|
+
* unscoped `pkg` / `pkg/subpath`) to the package group an {@link ExportIndex}
|
|
102
|
+
* is keyed by, plus the addressed `exports` subpath when present.
|
|
103
|
+
*
|
|
104
|
+
* Returns `undefined` (→ Phase 2 declines, emits no edge) when:
|
|
105
|
+
* - the specifier is relative (`./x`) or empty — not a bare package import;
|
|
106
|
+
* - the package name is not in `manifestIndex` (external / untracked dep);
|
|
107
|
+
* - a subpath is present but is NOT declared in the package's `exports` map.
|
|
108
|
+
*
|
|
109
|
+
* **V1 subpath scope (open question decided here):** resolve the package ROOT
|
|
110
|
+
* export and only those subpaths LITERALLY declared as keys in `exports`
|
|
111
|
+
* (`./errors`, `./languages/parse-cache.js`). Glob/conditional `exports`
|
|
112
|
+
* resolution is deferred. A package with no object `exports` is treated as
|
|
113
|
+
* exposing only its root — any subpath against it is unmappable → `undefined`.
|
|
114
|
+
* The returned `packageGroup` is the same for root and subpath (the subpath
|
|
115
|
+
* lives inside the same package); Phase 2 narrows by name within that group.
|
|
116
|
+
*/
|
|
117
|
+
export declare function resolveSpecifierToPackage(specifier: string, manifestIndex: PackageManifestIndex): ResolvedSpecifier | undefined;
|
|
118
|
+
//# sourceMappingURL=export-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-index.d.ts","sourceRoot":"","sources":["../../src/cross-package/export-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAWH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAkB,MAAM,aAAa,CAAC;AAI/E;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,CACnC,MAAM,EACN,WAAW,CAAC,MAAM,EAAa,SAAS,kBAAkB,EAAE,CAAC,CAC9D,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,aAAa,CAAC,EAAE,oBAAoB,GACnC,WAAW,CAqBb;AAoGD;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C;AAED,oDAAoD;AACpD,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAM,EAAqB,eAAe,CAAC,CAAC;AAE3F;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,WAAW,EAAE,MAAM,GAClB,oBAAoB,CAKtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,WAAW,EAAE,MAAM,GAClB,oBAAoB,CAOtB;AAkDD,+EAA+E;AAC/E,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,oBAAoB,GAClC,iBAAiB,GAAG,SAAS,CAc/B"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Linker data structures for semantic cross-shard resolution (plan #2, Phase 1).
|
|
3
|
+
*
|
|
4
|
+
* Two pure "symbol tables" the boundary resolver (Phase 2) links against —
|
|
5
|
+
* derivable entirely from data already present in a merged catalog plus the
|
|
6
|
+
* resolved `Shard[]`:
|
|
7
|
+
*
|
|
8
|
+
* 1. {@link ExportIndex} — per-package map of exported function name →
|
|
9
|
+
* occurrences (`visibility === 'exported'`). The export symbol table:
|
|
10
|
+
* "given a package and a callee name, which exported occurrences match?"
|
|
11
|
+
* 2. {@link PackageManifestIndex} — package `name` → its on-disk manifest
|
|
12
|
+
* (`name`, dir, `exports` map). Lets {@link resolveSpecifierToPackage}
|
|
13
|
+
* turn a bare import specifier (`@scope/pkg[/subpath]`) into the package
|
|
14
|
+
* group the {@link ExportIndex} is keyed by.
|
|
15
|
+
*
|
|
16
|
+
* Engine-layer and language-agnostic: no TypeScript parser, no AST. The only
|
|
17
|
+
* effect is reading each package's `package.json` from disk in
|
|
18
|
+
* {@link buildPackageManifestIndex}; everything else is plain map/path/JSON
|
|
19
|
+
* math. These structures are UNUSED by resolution logic in Phase 1 — Phase 2
|
|
20
|
+
* wires them into `resolveCrossBoundaryCalls`.
|
|
21
|
+
*
|
|
22
|
+
* Package-key alignment (the linchpin Phase 2 depends on): the boundary
|
|
23
|
+
* resolver buckets occurrences by `packageOf(occ.filePath)` — the path segment
|
|
24
|
+
* under `packages/` (e.g. `core`, `graph`, `languages`), NOT the package.json
|
|
25
|
+
* `name`. So {@link buildExportIndex} keys by exactly that, and
|
|
26
|
+
* {@link resolveSpecifierToPackage} returns a `packageGroup` derived by running
|
|
27
|
+
* `packageOf` over the manifest's project-relative dir — so a specifier's
|
|
28
|
+
* resolved group matches the `ExportIndex` keys verbatim.
|
|
29
|
+
*/
|
|
30
|
+
import { readFileSync } from 'node:fs';
|
|
31
|
+
import { posix, relative } from 'node:path';
|
|
32
|
+
import { logger } from '@opensip-cli/core';
|
|
33
|
+
import { packageOf } from '../resolve-callee.js';
|
|
34
|
+
import { toPosixPath } from './posix-path.js';
|
|
35
|
+
/**
|
|
36
|
+
* Bucket every exported occurrence in `catalog` by its package group then by
|
|
37
|
+
* its simple name. Deterministic and allocation-lean: one pass over
|
|
38
|
+
* `catalog.functions`, no sorting (matching is by name, not order).
|
|
39
|
+
*
|
|
40
|
+
* The package key is `packageOf(occ.filePath)` — identical to what the
|
|
41
|
+
* cross-shard resolver buckets by — so Phase 2 can look up
|
|
42
|
+
* `exportIndex.get(packageGroup)` where `packageGroup` comes from
|
|
43
|
+
* {@link resolveSpecifierToPackage}.
|
|
44
|
+
*/
|
|
45
|
+
export function buildExportIndex(catalog, manifestIndex) {
|
|
46
|
+
const index = new Map();
|
|
47
|
+
for (const occs of Object.values(catalog.functions)) {
|
|
48
|
+
if (!occs)
|
|
49
|
+
continue;
|
|
50
|
+
for (const occ of occs) {
|
|
51
|
+
if (occ.visibility !== 'exported')
|
|
52
|
+
continue;
|
|
53
|
+
const pkg = packageOf(occ.filePath);
|
|
54
|
+
const byName = getOrCreateMap(index, pkg);
|
|
55
|
+
const bucket = byName.get(occ.simpleName);
|
|
56
|
+
if (bucket)
|
|
57
|
+
bucket.push(occ);
|
|
58
|
+
else
|
|
59
|
+
byName.set(occ.simpleName, [occ]);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Re-export following: make a name reachable under the package that RE-EXPORTS
|
|
63
|
+
// it (not just its defining package). Needs the manifest index to turn a
|
|
64
|
+
// workspace specifier into a package group; callers without one get the
|
|
65
|
+
// base (defining-package-only) index — back-compatible.
|
|
66
|
+
if (manifestIndex !== undefined && catalog.reExports && catalog.reExports.length > 0) {
|
|
67
|
+
applyReExports(index, catalog.reExports, manifestIndex);
|
|
68
|
+
}
|
|
69
|
+
return index;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Fold re-export facts into the export index: for each `(reExportingPackage,
|
|
73
|
+
* exportedName)`, point at the SOURCE occurrence the name is defined as in the
|
|
74
|
+
* package the specifier resolves to. Runs to a FIXPOINT so chains resolve (A
|
|
75
|
+
* re-exports from B which re-exports from C). Decline-beats-guess: a name already
|
|
76
|
+
* present in the re-exporting package's bucket (a local definition, or an earlier
|
|
77
|
+
* deterministic re-export) is never overwritten; an unresolvable specifier
|
|
78
|
+
* (external npm) or absent source name is skipped.
|
|
79
|
+
*
|
|
80
|
+
* Relative specifiers (`'./x'`) resolve within the SAME package — the name is
|
|
81
|
+
* already an occurrence there — so they are effectively no-ops; the load-bearing
|
|
82
|
+
* case is a WORKSPACE specifier (`'@scope/pkg'`) crossing a package boundary.
|
|
83
|
+
*/
|
|
84
|
+
function applyReExports(index, reExports, manifestIndex) {
|
|
85
|
+
// Each (pkg, name) is added at most once (never overwritten), so the total
|
|
86
|
+
// number of additions is bounded and the fixpoint terminates; the cap is a
|
|
87
|
+
// belt-and-braces guard against a pathological re-export cycle.
|
|
88
|
+
const MAX_PASSES = 16;
|
|
89
|
+
for (let pass = 0; pass < MAX_PASSES; pass++) {
|
|
90
|
+
let changed = false;
|
|
91
|
+
for (const r of reExports) {
|
|
92
|
+
if (applyOneReExport(index, r, manifestIndex))
|
|
93
|
+
changed = true;
|
|
94
|
+
}
|
|
95
|
+
if (!changed)
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/** Apply one re-export fact; returns whether it added any new index entry. */
|
|
100
|
+
function applyOneReExport(index, r, manifestIndex) {
|
|
101
|
+
// Relative re-export stays in-package (already indexed); workspace specifier
|
|
102
|
+
// resolves to its package group. External / untracked → skip.
|
|
103
|
+
const sourcePkg = r.specifier.startsWith('.')
|
|
104
|
+
? packageOf(r.fromFile)
|
|
105
|
+
: resolveSpecifierToPackage(r.specifier, manifestIndex)?.packageGroup;
|
|
106
|
+
if (sourcePkg === undefined)
|
|
107
|
+
return false; // @silent-ok — external/untracked specifier; decline
|
|
108
|
+
const sourceBucket = index.get(sourcePkg);
|
|
109
|
+
if (sourceBucket === undefined)
|
|
110
|
+
return false; // @silent-ok — source package has no indexed exports
|
|
111
|
+
const fromBucket = getOrCreateMap(index, packageOf(r.fromFile));
|
|
112
|
+
return r.exportedName === '*'
|
|
113
|
+
? expandStarReExport(sourceBucket, fromBucket)
|
|
114
|
+
: addNamedReExport(r, sourceBucket, fromBucket);
|
|
115
|
+
}
|
|
116
|
+
/** `export * from src` — expose every source export the re-exporting package
|
|
117
|
+
* does not already own. Returns whether anything was added. */
|
|
118
|
+
function expandStarReExport(sourceBucket, fromBucket) {
|
|
119
|
+
let changed = false;
|
|
120
|
+
for (const [name, occs] of sourceBucket) {
|
|
121
|
+
if (!fromBucket.has(name)) {
|
|
122
|
+
fromBucket.set(name, occs);
|
|
123
|
+
changed = true;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return changed;
|
|
127
|
+
}
|
|
128
|
+
/** `export { sourceName as exportedName } from src` — point the re-exporting
|
|
129
|
+
* package's bucket at the source occurrence (never overriding a local def /
|
|
130
|
+
* earlier re-export). Returns whether it was added. */
|
|
131
|
+
function addNamedReExport(r, sourceBucket, fromBucket) {
|
|
132
|
+
if (fromBucket.has(r.exportedName))
|
|
133
|
+
return false; // @silent-ok — local def / earlier re-export wins
|
|
134
|
+
const occs = sourceBucket.get(r.sourceName);
|
|
135
|
+
if (occs === undefined || occs.length === 0)
|
|
136
|
+
return false; // @silent-ok — name not exported by source pkg
|
|
137
|
+
fromBucket.set(r.exportedName, occs);
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get `outer.get(key)`, creating + inserting a fresh inner `Map` when absent.
|
|
142
|
+
* A pure single-threaded grouping helper over a local in-memory `Map` (no shared
|
|
143
|
+
* state) — extracted so the get-then-insert lives behind one typed-`Map`
|
|
144
|
+
* parameter rather than inline in {@link buildExportIndex}.
|
|
145
|
+
*/
|
|
146
|
+
function getOrCreateMap(outer, key) {
|
|
147
|
+
const existing = outer.get(key);
|
|
148
|
+
if (existing !== undefined)
|
|
149
|
+
return existing;
|
|
150
|
+
const created = new Map();
|
|
151
|
+
outer.set(key, created);
|
|
152
|
+
return created;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Read each shard's `package.json` (`name`, `exports`) and index it by package
|
|
156
|
+
* name. Reuses the already-resolved `Shard[]` (no re-discovery); a shard whose
|
|
157
|
+
* `rootDir` has no readable/parseable `package.json`, or whose manifest has no
|
|
158
|
+
* string `name`, is skipped (it simply won't be specifier-resolvable).
|
|
159
|
+
*
|
|
160
|
+
* `projectRoot` is the common root all shard file paths are relativized
|
|
161
|
+
* against, so each manifest's `dir` is in the same project-relative form
|
|
162
|
+
* `packageOf` consumes.
|
|
163
|
+
*/
|
|
164
|
+
export function buildPackageManifestIndex(shards, projectRoot) {
|
|
165
|
+
return buildPackageManifestIndexFromRoots(shards.map((s) => s.rootDir), projectRoot);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Build a {@link PackageManifestIndex} from a bare list of package ROOT dirs
|
|
169
|
+
* (absolute), reading each `<rootDir>/package.json`. The `Shard`-free entry the
|
|
170
|
+
* single-program (exact) engine uses: it has no `Shard[]` to hand the shard
|
|
171
|
+
* overload, only the package roots it derived from the catalog. Same best-effort
|
|
172
|
+
* semantics — a root with no readable/parseable manifest, or a manifest with no
|
|
173
|
+
* string `name`, is skipped (it won't be specifier-resolvable). First write
|
|
174
|
+
* wins on a duplicate `name`.
|
|
175
|
+
*/
|
|
176
|
+
export function buildPackageManifestIndexFromRoots(rootDirs, projectRoot) {
|
|
177
|
+
const index = new Map();
|
|
178
|
+
for (const rootDir of rootDirs) {
|
|
179
|
+
const manifest = readManifest(rootDir, projectRoot);
|
|
180
|
+
if (manifest && !index.has(manifest.name))
|
|
181
|
+
index.set(manifest.name, manifest);
|
|
182
|
+
}
|
|
183
|
+
return index;
|
|
184
|
+
}
|
|
185
|
+
/** Read + parse one package's `package.json`; `undefined` on any failure. */
|
|
186
|
+
function readManifest(rootDirAbs, projectRoot) {
|
|
187
|
+
const manifestPath = posix.join(toPosixPath(rootDirAbs), 'package.json');
|
|
188
|
+
let raw;
|
|
189
|
+
try {
|
|
190
|
+
raw = readFileSync(manifestPath, 'utf8');
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
// Best-effort: a shard without a readable package.json is simply not
|
|
194
|
+
// specifier-resolvable. Note the skip so the swallow isn't silent.
|
|
195
|
+
logger.debug({
|
|
196
|
+
evt: 'graph.export_index.manifest_read_skipped',
|
|
197
|
+
module: 'graph:export-index',
|
|
198
|
+
manifestPath,
|
|
199
|
+
err: error instanceof Error ? error.message : String(error),
|
|
200
|
+
});
|
|
201
|
+
return undefined;
|
|
202
|
+
}
|
|
203
|
+
let parsed;
|
|
204
|
+
try {
|
|
205
|
+
parsed = JSON.parse(raw);
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
// Best-effort: an unparseable package.json is not specifier-resolvable.
|
|
209
|
+
// Note the skip so the swallow isn't silent.
|
|
210
|
+
logger.debug({
|
|
211
|
+
evt: 'graph.export_index.manifest_parse_skipped',
|
|
212
|
+
module: 'graph:export-index',
|
|
213
|
+
manifestPath,
|
|
214
|
+
err: error instanceof Error ? error.message : String(error),
|
|
215
|
+
});
|
|
216
|
+
return undefined;
|
|
217
|
+
}
|
|
218
|
+
if (typeof parsed !== 'object' || parsed === null)
|
|
219
|
+
return undefined;
|
|
220
|
+
const record = parsed;
|
|
221
|
+
const name = record.name;
|
|
222
|
+
if (typeof name !== 'string' || name.length === 0)
|
|
223
|
+
return undefined;
|
|
224
|
+
const exportsField = record.exports;
|
|
225
|
+
const exportsMap = typeof exportsField === 'object' && exportsField !== null
|
|
226
|
+
? exportsField
|
|
227
|
+
: undefined;
|
|
228
|
+
return { name, dir: relativeDir(rootDirAbs, projectRoot), exportsMap };
|
|
229
|
+
}
|
|
230
|
+
/** Project-relative POSIX dir for a shard's absolute rootDir (the `packageOf` form). */
|
|
231
|
+
function relativeDir(rootDirAbs, projectRoot) {
|
|
232
|
+
return toPosixPath(relative(projectRoot, rootDirAbs));
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Resolve a bare import specifier (`@scope/pkg` or `@scope/pkg/subpath`, or the
|
|
236
|
+
* unscoped `pkg` / `pkg/subpath`) to the package group an {@link ExportIndex}
|
|
237
|
+
* is keyed by, plus the addressed `exports` subpath when present.
|
|
238
|
+
*
|
|
239
|
+
* Returns `undefined` (→ Phase 2 declines, emits no edge) when:
|
|
240
|
+
* - the specifier is relative (`./x`) or empty — not a bare package import;
|
|
241
|
+
* - the package name is not in `manifestIndex` (external / untracked dep);
|
|
242
|
+
* - a subpath is present but is NOT declared in the package's `exports` map.
|
|
243
|
+
*
|
|
244
|
+
* **V1 subpath scope (open question decided here):** resolve the package ROOT
|
|
245
|
+
* export and only those subpaths LITERALLY declared as keys in `exports`
|
|
246
|
+
* (`./errors`, `./languages/parse-cache.js`). Glob/conditional `exports`
|
|
247
|
+
* resolution is deferred. A package with no object `exports` is treated as
|
|
248
|
+
* exposing only its root — any subpath against it is unmappable → `undefined`.
|
|
249
|
+
* The returned `packageGroup` is the same for root and subpath (the subpath
|
|
250
|
+
* lives inside the same package); Phase 2 narrows by name within that group.
|
|
251
|
+
*/
|
|
252
|
+
export function resolveSpecifierToPackage(specifier, manifestIndex) {
|
|
253
|
+
if (specifier.length === 0 || specifier.startsWith('.'))
|
|
254
|
+
return undefined;
|
|
255
|
+
const { packageName, subpath } = splitSpecifier(specifier);
|
|
256
|
+
if (packageName === undefined)
|
|
257
|
+
return undefined;
|
|
258
|
+
const manifest = manifestIndex.get(packageName);
|
|
259
|
+
if (manifest === undefined)
|
|
260
|
+
return undefined;
|
|
261
|
+
if (subpath !== undefined && !exportsDeclares(manifest.exportsMap, subpath)) {
|
|
262
|
+
return undefined; // unmappable subpath → decline
|
|
263
|
+
}
|
|
264
|
+
const packageGroup = packageOf(`${manifest.dir}/`);
|
|
265
|
+
return subpath === undefined ? { packageGroup } : { packageGroup, subpath };
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Split a bare specifier into its package name (`@scope/pkg` or `pkg`) and the
|
|
269
|
+
* remaining `exports`-style subpath (`./rest`), or `undefined` subpath for a
|
|
270
|
+
* bare root import. Returns `packageName: undefined` for an unparseable
|
|
271
|
+
* specifier (e.g. a lone `@scope` with no package segment).
|
|
272
|
+
*/
|
|
273
|
+
function splitSpecifier(specifier) {
|
|
274
|
+
const parts = specifier.split('/');
|
|
275
|
+
if (specifier.startsWith('@')) {
|
|
276
|
+
// Scoped: @scope/pkg[/...rest]
|
|
277
|
+
if (parts.length < 2 || parts[0] === undefined || parts[1] === undefined) {
|
|
278
|
+
return { packageName: undefined, subpath: undefined };
|
|
279
|
+
}
|
|
280
|
+
const packageName = `${parts[0]}/${parts[1]}`;
|
|
281
|
+
const rest = parts.slice(2);
|
|
282
|
+
return { packageName, subpath: rest.length > 0 ? `./${rest.join('/')}` : undefined };
|
|
283
|
+
}
|
|
284
|
+
// Unscoped: pkg[/...rest]
|
|
285
|
+
const packageName = parts[0];
|
|
286
|
+
if (packageName === undefined || packageName.length === 0) {
|
|
287
|
+
return { packageName: undefined, subpath: undefined };
|
|
288
|
+
}
|
|
289
|
+
const rest = parts.slice(1);
|
|
290
|
+
return { packageName, subpath: rest.length > 0 ? `./${rest.join('/')}` : undefined };
|
|
291
|
+
}
|
|
292
|
+
/** True when `exports` literally declares `subpath` as a key (v1 — no globs). */
|
|
293
|
+
function exportsDeclares(exportsMap, subpath) {
|
|
294
|
+
return exportsMap !== undefined && Object.prototype.hasOwnProperty.call(exportsMap, subpath);
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=export-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-index.js","sourceRoot":"","sources":["../../src/cross-package/export-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `toPosixPath` — normalize OS path separators to POSIX `/`.
|
|
3
|
+
*
|
|
4
|
+
* The engine relativizes file paths against a project root and then matches them
|
|
5
|
+
* with `/`-anchored logic (`packageOf`'s regex, the package-group keys, subpath
|
|
6
|
+
* stems). On Windows `path.relative` yields `\`-separated paths, so every such
|
|
7
|
+
* path must be normalized first. Backslashes are collapsed UNCONDITIONALLY (not
|
|
8
|
+
* gated on `path.sep`) so a stray `\` from any caller still flattens to `/` and
|
|
9
|
+
* the normalization is self-consistent regardless of the path's origin.
|
|
10
|
+
*
|
|
11
|
+
* One shared helper so the export index, the manifest index, and the shard
|
|
12
|
+
* partitioner share a single normalization (they previously each inlined a
|
|
13
|
+
* slightly different `toPosix`).
|
|
14
|
+
*/
|
|
15
|
+
export declare function toPosixPath(p: string): string;
|
|
16
|
+
//# sourceMappingURL=posix-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"posix-path.d.ts","sourceRoot":"","sources":["../../src/cross-package/posix-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `toPosixPath` — normalize OS path separators to POSIX `/`.
|
|
3
|
+
*
|
|
4
|
+
* The engine relativizes file paths against a project root and then matches them
|
|
5
|
+
* with `/`-anchored logic (`packageOf`'s regex, the package-group keys, subpath
|
|
6
|
+
* stems). On Windows `path.relative` yields `\`-separated paths, so every such
|
|
7
|
+
* path must be normalized first. Backslashes are collapsed UNCONDITIONALLY (not
|
|
8
|
+
* gated on `path.sep`) so a stray `\` from any caller still flattens to `/` and
|
|
9
|
+
* the normalization is self-consistent regardless of the path's origin.
|
|
10
|
+
*
|
|
11
|
+
* One shared helper so the export index, the manifest index, and the shard
|
|
12
|
+
* partitioner share a single normalization (they previously each inlined a
|
|
13
|
+
* slightly different `toPosix`).
|
|
14
|
+
*/
|
|
15
|
+
export function toPosixPath(p) {
|
|
16
|
+
return p.replaceAll('\\', '/');
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=posix-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"posix-path.js","sourceRoot":"","sources":["../../src/cross-package/posix-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC"}
|