@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.
Files changed (836) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +8 -0
  3. package/README.md +31 -0
  4. package/dist/__tests__/baseline-plane.test.d.ts +11 -0
  5. package/dist/__tests__/baseline-plane.test.d.ts.map +1 -0
  6. package/dist/__tests__/baseline-plane.test.js +60 -0
  7. package/dist/__tests__/baseline-plane.test.js.map +1 -0
  8. package/dist/__tests__/cache/engine-version.test.d.ts +12 -0
  9. package/dist/__tests__/cache/engine-version.test.d.ts.map +1 -0
  10. package/dist/__tests__/cache/engine-version.test.js +79 -0
  11. package/dist/__tests__/cache/engine-version.test.js.map +1 -0
  12. package/dist/__tests__/cache/invalidate.test.d.ts +9 -0
  13. package/dist/__tests__/cache/invalidate.test.d.ts.map +1 -0
  14. package/dist/__tests__/cache/invalidate.test.js +228 -0
  15. package/dist/__tests__/cache/invalidate.test.js.map +1 -0
  16. package/dist/__tests__/cli/contribution-from-signals.test.d.ts +17 -0
  17. package/dist/__tests__/cli/contribution-from-signals.test.d.ts.map +1 -0
  18. package/dist/__tests__/cli/contribution-from-signals.test.js +89 -0
  19. package/dist/__tests__/cli/contribution-from-signals.test.js.map +1 -0
  20. package/dist/__tests__/cli/detect.test.d.ts +2 -0
  21. package/dist/__tests__/cli/detect.test.d.ts.map +1 -0
  22. package/dist/__tests__/cli/detect.test.js +96 -0
  23. package/dist/__tests__/cli/detect.test.js.map +1 -0
  24. package/dist/__tests__/cli/graph-config.test.d.ts +9 -0
  25. package/dist/__tests__/cli/graph-config.test.d.ts.map +1 -0
  26. package/dist/__tests__/cli/graph-config.test.js +113 -0
  27. package/dist/__tests__/cli/graph-config.test.js.map +1 -0
  28. package/dist/__tests__/cli/graph-execute.test.d.ts +9 -0
  29. package/dist/__tests__/cli/graph-execute.test.d.ts.map +1 -0
  30. package/dist/__tests__/cli/graph-execute.test.js +434 -0
  31. package/dist/__tests__/cli/graph-execute.test.js.map +1 -0
  32. package/dist/__tests__/cli/graph.test.d.ts +12 -0
  33. package/dist/__tests__/cli/graph.test.d.ts.map +1 -0
  34. package/dist/__tests__/cli/graph.test.js +589 -0
  35. package/dist/__tests__/cli/graph.test.js.map +1 -0
  36. package/dist/__tests__/cli/heap-preflight.test.d.ts +11 -0
  37. package/dist/__tests__/cli/heap-preflight.test.d.ts.map +1 -0
  38. package/dist/__tests__/cli/heap-preflight.test.js +150 -0
  39. package/dist/__tests__/cli/heap-preflight.test.js.map +1 -0
  40. package/dist/__tests__/cli/language-mismatch.test.d.ts +10 -0
  41. package/dist/__tests__/cli/language-mismatch.test.d.ts.map +1 -0
  42. package/dist/__tests__/cli/language-mismatch.test.js +155 -0
  43. package/dist/__tests__/cli/language-mismatch.test.js.map +1 -0
  44. package/dist/__tests__/cli/lookup.test.d.ts +7 -0
  45. package/dist/__tests__/cli/lookup.test.d.ts.map +1 -0
  46. package/dist/__tests__/cli/lookup.test.js +104 -0
  47. package/dist/__tests__/cli/lookup.test.js.map +1 -0
  48. package/dist/__tests__/cli/orchestrate.test.d.ts +12 -0
  49. package/dist/__tests__/cli/orchestrate.test.d.ts.map +1 -0
  50. package/dist/__tests__/cli/orchestrate.test.js +315 -0
  51. package/dist/__tests__/cli/orchestrate.test.js.map +1 -0
  52. package/dist/__tests__/cli/positional-paths.test.d.ts +5 -0
  53. package/dist/__tests__/cli/positional-paths.test.d.ts.map +1 -0
  54. package/dist/__tests__/cli/positional-paths.test.js +87 -0
  55. package/dist/__tests__/cli/positional-paths.test.js.map +1 -0
  56. package/dist/__tests__/cli/pressure-monitor.test.d.ts +11 -0
  57. package/dist/__tests__/cli/pressure-monitor.test.d.ts.map +1 -0
  58. package/dist/__tests__/cli/pressure-monitor.test.js +94 -0
  59. package/dist/__tests__/cli/pressure-monitor.test.js.map +1 -0
  60. package/dist/__tests__/cli/sarif-export.test.d.ts +8 -0
  61. package/dist/__tests__/cli/sarif-export.test.d.ts.map +1 -0
  62. package/dist/__tests__/cli/sarif-export.test.js +94 -0
  63. package/dist/__tests__/cli/sarif-export.test.js.map +1 -0
  64. package/dist/__tests__/cli/session-contract.test.d.ts +17 -0
  65. package/dist/__tests__/cli/session-contract.test.d.ts.map +1 -0
  66. package/dist/__tests__/cli/session-contract.test.js +225 -0
  67. package/dist/__tests__/cli/session-contract.test.js.map +1 -0
  68. package/dist/__tests__/cli/symbol-index.test.d.ts +7 -0
  69. package/dist/__tests__/cli/symbol-index.test.d.ts.map +1 -0
  70. package/dist/__tests__/cli/symbol-index.test.js +117 -0
  71. package/dist/__tests__/cli/symbol-index.test.js.map +1 -0
  72. package/dist/__tests__/cli/tool-show-mode.test.d.ts +10 -0
  73. package/dist/__tests__/cli/tool-show-mode.test.d.ts.map +1 -0
  74. package/dist/__tests__/cli/tool-show-mode.test.js +128 -0
  75. package/dist/__tests__/cli/tool-show-mode.test.js.map +1 -0
  76. package/dist/__tests__/cli/workspace-runner-polyglot.test.d.ts +10 -0
  77. package/dist/__tests__/cli/workspace-runner-polyglot.test.d.ts.map +1 -0
  78. package/dist/__tests__/cli/workspace-runner-polyglot.test.js +120 -0
  79. package/dist/__tests__/cli/workspace-runner-polyglot.test.js.map +1 -0
  80. package/dist/__tests__/graph-catalog-drift.test.d.ts +24 -0
  81. package/dist/__tests__/graph-catalog-drift.test.d.ts.map +1 -0
  82. package/dist/__tests__/graph-catalog-drift.test.js +34 -0
  83. package/dist/__tests__/graph-catalog-drift.test.js.map +1 -0
  84. package/dist/__tests__/internal-surface.test.d.ts +17 -0
  85. package/dist/__tests__/internal-surface.test.d.ts.map +1 -0
  86. package/dist/__tests__/internal-surface.test.js +45 -0
  87. package/dist/__tests__/internal-surface.test.js.map +1 -0
  88. package/dist/__tests__/lang-adapter/body-digest.test.d.ts +13 -0
  89. package/dist/__tests__/lang-adapter/body-digest.test.d.ts.map +1 -0
  90. package/dist/__tests__/lang-adapter/body-digest.test.js +51 -0
  91. package/dist/__tests__/lang-adapter/body-digest.test.js.map +1 -0
  92. package/dist/__tests__/lang-adapter/edge-helpers.test.d.ts +12 -0
  93. package/dist/__tests__/lang-adapter/edge-helpers.test.d.ts.map +1 -0
  94. package/dist/__tests__/lang-adapter/edge-helpers.test.js +147 -0
  95. package/dist/__tests__/lang-adapter/edge-helpers.test.js.map +1 -0
  96. package/dist/__tests__/lang-adapter/registry.test.d.ts +9 -0
  97. package/dist/__tests__/lang-adapter/registry.test.d.ts.map +1 -0
  98. package/dist/__tests__/lang-adapter/registry.test.js +228 -0
  99. package/dist/__tests__/lang-adapter/registry.test.js.map +1 -0
  100. package/dist/__tests__/persistence/catalog-repo.test.d.ts +2 -0
  101. package/dist/__tests__/persistence/catalog-repo.test.d.ts.map +1 -0
  102. package/dist/__tests__/persistence/catalog-repo.test.js +188 -0
  103. package/dist/__tests__/persistence/catalog-repo.test.js.map +1 -0
  104. package/dist/__tests__/persistence/session-payload.test.d.ts +2 -0
  105. package/dist/__tests__/persistence/session-payload.test.d.ts.map +1 -0
  106. package/dist/__tests__/persistence/session-payload.test.js +81 -0
  107. package/dist/__tests__/persistence/session-payload.test.js.map +1 -0
  108. package/dist/__tests__/persistence/session-replay.test.d.ts +10 -0
  109. package/dist/__tests__/persistence/session-replay.test.d.ts.map +1 -0
  110. package/dist/__tests__/persistence/session-replay.test.js +196 -0
  111. package/dist/__tests__/persistence/session-replay.test.js.map +1 -0
  112. package/dist/__tests__/public-api.test.d.ts +19 -0
  113. package/dist/__tests__/public-api.test.d.ts.map +1 -0
  114. package/dist/__tests__/public-api.test.js +96 -0
  115. package/dist/__tests__/public-api.test.js.map +1 -0
  116. package/dist/__tests__/render/catalog-json-types.test.d.ts +10 -0
  117. package/dist/__tests__/render/catalog-json-types.test.d.ts.map +1 -0
  118. package/dist/__tests__/render/catalog-json-types.test.js +121 -0
  119. package/dist/__tests__/render/catalog-json-types.test.js.map +1 -0
  120. package/dist/__tests__/render/catalog-json.test.d.ts +19 -0
  121. package/dist/__tests__/render/catalog-json.test.d.ts.map +1 -0
  122. package/dist/__tests__/render/catalog-json.test.js +435 -0
  123. package/dist/__tests__/render/catalog-json.test.js.map +1 -0
  124. package/dist/__tests__/render/opensip-id-derivation.test.d.ts +21 -0
  125. package/dist/__tests__/render/opensip-id-derivation.test.d.ts.map +1 -0
  126. package/dist/__tests__/render/opensip-id-derivation.test.js +159 -0
  127. package/dist/__tests__/render/opensip-id-derivation.test.js.map +1 -0
  128. package/dist/__tests__/render/rule-id-mapping.test.d.ts +13 -0
  129. package/dist/__tests__/render/rule-id-mapping.test.d.ts.map +1 -0
  130. package/dist/__tests__/render/rule-id-mapping.test.js +50 -0
  131. package/dist/__tests__/render/rule-id-mapping.test.js.map +1 -0
  132. package/dist/__tests__/render/sarif-opensip.test.d.ts +20 -0
  133. package/dist/__tests__/render/sarif-opensip.test.d.ts.map +1 -0
  134. package/dist/__tests__/render/sarif-opensip.test.js +235 -0
  135. package/dist/__tests__/render/sarif-opensip.test.js.map +1 -0
  136. package/dist/__tests__/resolution-mode.test.d.ts +10 -0
  137. package/dist/__tests__/resolution-mode.test.d.ts.map +1 -0
  138. package/dist/__tests__/resolution-mode.test.js +96 -0
  139. package/dist/__tests__/resolution-mode.test.js.map +1 -0
  140. package/dist/__tests__/resolve-callee.test.d.ts +2 -0
  141. package/dist/__tests__/resolve-callee.test.d.ts.map +1 -0
  142. package/dist/__tests__/resolve-callee.test.js +119 -0
  143. package/dist/__tests__/resolve-callee.test.js.map +1 -0
  144. package/dist/__tests__/rules/_entry-points.test.d.ts +8 -0
  145. package/dist/__tests__/rules/_entry-points.test.d.ts.map +1 -0
  146. package/dist/__tests__/rules/_entry-points.test.js +74 -0
  147. package/dist/__tests__/rules/_entry-points.test.js.map +1 -0
  148. package/dist/__tests__/rules/_helpers.d.ts +18 -0
  149. package/dist/__tests__/rules/_helpers.d.ts.map +1 -0
  150. package/dist/__tests__/rules/_helpers.js +72 -0
  151. package/dist/__tests__/rules/_helpers.js.map +1 -0
  152. package/dist/__tests__/rules/always-throws-branch.test.d.ts +9 -0
  153. package/dist/__tests__/rules/always-throws-branch.test.d.ts.map +1 -0
  154. package/dist/__tests__/rules/always-throws-branch.test.js +113 -0
  155. package/dist/__tests__/rules/always-throws-branch.test.js.map +1 -0
  156. package/dist/__tests__/rules/cycle-and-coupling.test.d.ts +13 -0
  157. package/dist/__tests__/rules/cycle-and-coupling.test.d.ts.map +1 -0
  158. package/dist/__tests__/rules/cycle-and-coupling.test.js +224 -0
  159. package/dist/__tests__/rules/cycle-and-coupling.test.js.map +1 -0
  160. package/dist/__tests__/rules/duplicated-function-body-config.test.d.ts +8 -0
  161. package/dist/__tests__/rules/duplicated-function-body-config.test.d.ts.map +1 -0
  162. package/dist/__tests__/rules/duplicated-function-body-config.test.js +132 -0
  163. package/dist/__tests__/rules/duplicated-function-body-config.test.js.map +1 -0
  164. package/dist/__tests__/rules/duplicated-function-body-cross-package.test.d.ts +10 -0
  165. package/dist/__tests__/rules/duplicated-function-body-cross-package.test.d.ts.map +1 -0
  166. package/dist/__tests__/rules/duplicated-function-body-cross-package.test.js +274 -0
  167. package/dist/__tests__/rules/duplicated-function-body-cross-package.test.js.map +1 -0
  168. package/dist/__tests__/rules/feature-column-parity.test.d.ts +11 -0
  169. package/dist/__tests__/rules/feature-column-parity.test.d.ts.map +1 -0
  170. package/dist/__tests__/rules/feature-column-parity.test.js +169 -0
  171. package/dist/__tests__/rules/feature-column-parity.test.js.map +1 -0
  172. package/dist/__tests__/rules/high-blast-untested.test.d.ts +13 -0
  173. package/dist/__tests__/rules/high-blast-untested.test.d.ts.map +1 -0
  174. package/dist/__tests__/rules/high-blast-untested.test.js +108 -0
  175. package/dist/__tests__/rules/high-blast-untested.test.js.map +1 -0
  176. package/dist/__tests__/rules/large-function.test.d.ts +11 -0
  177. package/dist/__tests__/rules/large-function.test.d.ts.map +1 -0
  178. package/dist/__tests__/rules/large-function.test.js +105 -0
  179. package/dist/__tests__/rules/large-function.test.js.map +1 -0
  180. package/dist/__tests__/rules/no-side-effect-path.test.d.ts +10 -0
  181. package/dist/__tests__/rules/no-side-effect-path.test.d.ts.map +1 -0
  182. package/dist/__tests__/rules/no-side-effect-path.test.js +301 -0
  183. package/dist/__tests__/rules/no-side-effect-path.test.js.map +1 -0
  184. package/dist/__tests__/rules/orphan-subtree-config.test.d.ts +8 -0
  185. package/dist/__tests__/rules/orphan-subtree-config.test.d.ts.map +1 -0
  186. package/dist/__tests__/rules/orphan-subtree-config.test.js +176 -0
  187. package/dist/__tests__/rules/orphan-subtree-config.test.js.map +1 -0
  188. package/dist/__tests__/rules/registry.test.d.ts +11 -0
  189. package/dist/__tests__/rules/registry.test.d.ts.map +1 -0
  190. package/dist/__tests__/rules/registry.test.js +50 -0
  191. package/dist/__tests__/rules/registry.test.js.map +1 -0
  192. package/dist/__tests__/rules/severity-override.test.d.ts +11 -0
  193. package/dist/__tests__/rules/severity-override.test.d.ts.map +1 -0
  194. package/dist/__tests__/rules/severity-override.test.js +67 -0
  195. package/dist/__tests__/rules/severity-override.test.js.map +1 -0
  196. package/dist/__tests__/rules/test-only-reachable.test.d.ts +9 -0
  197. package/dist/__tests__/rules/test-only-reachable.test.d.ts.map +1 -0
  198. package/dist/__tests__/rules/test-only-reachable.test.js +142 -0
  199. package/dist/__tests__/rules/test-only-reachable.test.js.map +1 -0
  200. package/dist/__tests__/rules/wide-function.test.d.ts +9 -0
  201. package/dist/__tests__/rules/wide-function.test.d.ts.map +1 -0
  202. package/dist/__tests__/rules/wide-function.test.js +64 -0
  203. package/dist/__tests__/rules/wide-function.test.js.map +1 -0
  204. package/dist/__tests__/test-utils/with-graph-scope.d.ts +14 -0
  205. package/dist/__tests__/test-utils/with-graph-scope.d.ts.map +1 -0
  206. package/dist/__tests__/test-utils/with-graph-scope.js +26 -0
  207. package/dist/__tests__/test-utils/with-graph-scope.js.map +1 -0
  208. package/dist/__tests__/tool-branches.test.d.ts +18 -0
  209. package/dist/__tests__/tool-branches.test.d.ts.map +1 -0
  210. package/dist/__tests__/tool-branches.test.js +262 -0
  211. package/dist/__tests__/tool-branches.test.js.map +1 -0
  212. package/dist/__tests__/tool-register.test.d.ts +16 -0
  213. package/dist/__tests__/tool-register.test.d.ts.map +1 -0
  214. package/dist/__tests__/tool-register.test.js +419 -0
  215. package/dist/__tests__/tool-register.test.js.map +1 -0
  216. package/dist/__tests__/tool.test.d.ts +18 -0
  217. package/dist/__tests__/tool.test.d.ts.map +1 -0
  218. package/dist/__tests__/tool.test.js +65 -0
  219. package/dist/__tests__/tool.test.js.map +1 -0
  220. package/dist/baseline-strategy.d.ts +28 -0
  221. package/dist/baseline-strategy.d.ts.map +1 -0
  222. package/dist/baseline-strategy.js +27 -0
  223. package/dist/baseline-strategy.js.map +1 -0
  224. package/dist/cache/engine-version.d.ts +69 -0
  225. package/dist/cache/engine-version.d.ts.map +1 -0
  226. package/dist/cache/engine-version.js +60 -0
  227. package/dist/cache/engine-version.js.map +1 -0
  228. package/dist/cache/invalidate.d.ts +60 -0
  229. package/dist/cache/invalidate.d.ts.map +1 -0
  230. package/dist/cache/invalidate.js +120 -0
  231. package/dist/cache/invalidate.js.map +1 -0
  232. package/dist/cli/__tests__/build-envelope.test.d.ts +8 -0
  233. package/dist/cli/__tests__/build-envelope.test.d.ts.map +1 -0
  234. package/dist/cli/__tests__/build-envelope.test.js +70 -0
  235. package/dist/cli/__tests__/build-envelope.test.js.map +1 -0
  236. package/dist/cli/__tests__/dispatch-envelope.test.d.ts +15 -0
  237. package/dist/cli/__tests__/dispatch-envelope.test.d.ts.map +1 -0
  238. package/dist/cli/__tests__/dispatch-envelope.test.js +73 -0
  239. package/dist/cli/__tests__/dispatch-envelope.test.js.map +1 -0
  240. package/dist/cli/__tests__/dispatch-suppression-root.test.d.ts +18 -0
  241. package/dist/cli/__tests__/dispatch-suppression-root.test.d.ts.map +1 -0
  242. package/dist/cli/__tests__/dispatch-suppression-root.test.js +91 -0
  243. package/dist/cli/__tests__/dispatch-suppression-root.test.js.map +1 -0
  244. package/dist/cli/__tests__/graph-config-schema.test.d.ts +7 -0
  245. package/dist/cli/__tests__/graph-config-schema.test.d.ts.map +1 -0
  246. package/dist/cli/__tests__/graph-config-schema.test.js +60 -0
  247. package/dist/cli/__tests__/graph-config-schema.test.js.map +1 -0
  248. package/dist/cli/__tests__/graph-gate-mode.test.d.ts +15 -0
  249. package/dist/cli/__tests__/graph-gate-mode.test.d.ts.map +1 -0
  250. package/dist/cli/__tests__/graph-gate-mode.test.js +99 -0
  251. package/dist/cli/__tests__/graph-gate-mode.test.js.map +1 -0
  252. package/dist/cli/__tests__/graph-recipes.test.d.ts +7 -0
  253. package/dist/cli/__tests__/graph-recipes.test.d.ts.map +1 -0
  254. package/dist/cli/__tests__/graph-recipes.test.js +24 -0
  255. package/dist/cli/__tests__/graph-recipes.test.js.map +1 -0
  256. package/dist/cli/__tests__/graph-report.test.d.ts +7 -0
  257. package/dist/cli/__tests__/graph-report.test.d.ts.map +1 -0
  258. package/dist/cli/__tests__/graph-report.test.js +138 -0
  259. package/dist/cli/__tests__/graph-report.test.js.map +1 -0
  260. package/dist/cli/__tests__/graph-tracer.test.d.ts +11 -0
  261. package/dist/cli/__tests__/graph-tracer.test.d.ts.map +1 -0
  262. package/dist/cli/__tests__/graph-tracer.test.js +41 -0
  263. package/dist/cli/__tests__/graph-tracer.test.js.map +1 -0
  264. package/dist/cli/__tests__/graph-worker.test.d.ts +13 -0
  265. package/dist/cli/__tests__/graph-worker.test.d.ts.map +1 -0
  266. package/dist/cli/__tests__/graph-worker.test.js +127 -0
  267. package/dist/cli/__tests__/graph-worker.test.js.map +1 -0
  268. package/dist/cli/__tests__/list-files.test.d.ts +12 -0
  269. package/dist/cli/__tests__/list-files.test.d.ts.map +1 -0
  270. package/dist/cli/__tests__/list-files.test.js +146 -0
  271. package/dist/cli/__tests__/list-files.test.js.map +1 -0
  272. package/dist/cli/__tests__/live-suppression-parity.test.d.ts +23 -0
  273. package/dist/cli/__tests__/live-suppression-parity.test.d.ts.map +1 -0
  274. package/dist/cli/__tests__/live-suppression-parity.test.js +136 -0
  275. package/dist/cli/__tests__/live-suppression-parity.test.js.map +1 -0
  276. package/dist/cli/__tests__/orchestrate-spans.test.d.ts +18 -0
  277. package/dist/cli/__tests__/orchestrate-spans.test.d.ts.map +1 -0
  278. package/dist/cli/__tests__/orchestrate-spans.test.js +108 -0
  279. package/dist/cli/__tests__/orchestrate-spans.test.js.map +1 -0
  280. package/dist/cli/__tests__/shard-worker.test.d.ts +10 -0
  281. package/dist/cli/__tests__/shard-worker.test.d.ts.map +1 -0
  282. package/dist/cli/__tests__/shard-worker.test.js +153 -0
  283. package/dist/cli/__tests__/shard-worker.test.js.map +1 -0
  284. package/dist/cli/__tests__/workspace-report.test.d.ts +6 -0
  285. package/dist/cli/__tests__/workspace-report.test.d.ts.map +1 -0
  286. package/dist/cli/__tests__/workspace-report.test.js +89 -0
  287. package/dist/cli/__tests__/workspace-report.test.js.map +1 -0
  288. package/dist/cli/apply-suppressions.d.ts +86 -0
  289. package/dist/cli/apply-suppressions.d.ts.map +1 -0
  290. package/dist/cli/apply-suppressions.js +101 -0
  291. package/dist/cli/apply-suppressions.js.map +1 -0
  292. package/dist/cli/apply-suppressions.test.d.ts +12 -0
  293. package/dist/cli/apply-suppressions.test.d.ts.map +1 -0
  294. package/dist/cli/apply-suppressions.test.js +85 -0
  295. package/dist/cli/apply-suppressions.test.js.map +1 -0
  296. package/dist/cli/build-envelope.d.ts +53 -0
  297. package/dist/cli/build-envelope.d.ts.map +1 -0
  298. package/dist/cli/build-envelope.js +88 -0
  299. package/dist/cli/build-envelope.js.map +1 -0
  300. package/dist/cli/detect.d.ts +37 -0
  301. package/dist/cli/detect.d.ts.map +1 -0
  302. package/dist/cli/detect.js +60 -0
  303. package/dist/cli/detect.js.map +1 -0
  304. package/dist/cli/equivalence-check-command.d.ts +45 -0
  305. package/dist/cli/equivalence-check-command.d.ts.map +1 -0
  306. package/dist/cli/equivalence-check-command.js +196 -0
  307. package/dist/cli/equivalence-check-command.js.map +1 -0
  308. package/dist/cli/graph/graph-aux-command-specs.d.ts +60 -0
  309. package/dist/cli/graph/graph-aux-command-specs.d.ts.map +1 -0
  310. package/dist/cli/graph/graph-aux-command-specs.js +390 -0
  311. package/dist/cli/graph/graph-aux-command-specs.js.map +1 -0
  312. package/dist/cli/graph/graph-command-spec.d.ts +43 -0
  313. package/dist/cli/graph/graph-command-spec.d.ts.map +1 -0
  314. package/dist/cli/graph/graph-command-spec.js +456 -0
  315. package/dist/cli/graph/graph-command-spec.js.map +1 -0
  316. package/dist/cli/graph-config-schema.d.ts +70 -0
  317. package/dist/cli/graph-config-schema.d.ts.map +1 -0
  318. package/dist/cli/graph-config-schema.js +68 -0
  319. package/dist/cli/graph-config-schema.js.map +1 -0
  320. package/dist/cli/graph-config.d.ts +53 -0
  321. package/dist/cli/graph-config.d.ts.map +1 -0
  322. package/dist/cli/graph-config.js +111 -0
  323. package/dist/cli/graph-config.js.map +1 -0
  324. package/dist/cli/graph-modes.d.ts +36 -0
  325. package/dist/cli/graph-modes.d.ts.map +1 -0
  326. package/dist/cli/graph-modes.js +161 -0
  327. package/dist/cli/graph-modes.js.map +1 -0
  328. package/dist/cli/graph-options.d.ts +143 -0
  329. package/dist/cli/graph-options.d.ts.map +1 -0
  330. package/dist/cli/graph-options.js +15 -0
  331. package/dist/cli/graph-options.js.map +1 -0
  332. package/dist/cli/graph-progress.d.ts +31 -0
  333. package/dist/cli/graph-progress.d.ts.map +1 -0
  334. package/dist/cli/graph-progress.js +56 -0
  335. package/dist/cli/graph-progress.js.map +1 -0
  336. package/dist/cli/graph-recipes.d.ts +23 -0
  337. package/dist/cli/graph-recipes.d.ts.map +1 -0
  338. package/dist/cli/graph-recipes.js +44 -0
  339. package/dist/cli/graph-recipes.js.map +1 -0
  340. package/dist/cli/graph-report.d.ts +79 -0
  341. package/dist/cli/graph-report.d.ts.map +1 -0
  342. package/dist/cli/graph-report.js +186 -0
  343. package/dist/cli/graph-report.js.map +1 -0
  344. package/dist/cli/graph-runner.d.ts +106 -0
  345. package/dist/cli/graph-runner.d.ts.map +1 -0
  346. package/dist/cli/graph-runner.js +274 -0
  347. package/dist/cli/graph-runner.js.map +1 -0
  348. package/dist/cli/graph-tracer.d.ts +27 -0
  349. package/dist/cli/graph-tracer.d.ts.map +1 -0
  350. package/dist/cli/graph-tracer.js +33 -0
  351. package/dist/cli/graph-tracer.js.map +1 -0
  352. package/dist/cli/graph-worker.d.ts +29 -0
  353. package/dist/cli/graph-worker.d.ts.map +1 -0
  354. package/dist/cli/graph-worker.js +86 -0
  355. package/dist/cli/graph-worker.js.map +1 -0
  356. package/dist/cli/graph.d.ts +171 -0
  357. package/dist/cli/graph.d.ts.map +1 -0
  358. package/dist/cli/graph.js +1041 -0
  359. package/dist/cli/graph.js.map +1 -0
  360. package/dist/cli/heap-preflight.d.ts +62 -0
  361. package/dist/cli/heap-preflight.d.ts.map +1 -0
  362. package/dist/cli/heap-preflight.js +176 -0
  363. package/dist/cli/heap-preflight.js.map +1 -0
  364. package/dist/cli/list-files.d.ts +37 -0
  365. package/dist/cli/list-files.d.ts.map +1 -0
  366. package/dist/cli/list-files.js +166 -0
  367. package/dist/cli/list-files.js.map +1 -0
  368. package/dist/cli/lookup.d.ts +19 -0
  369. package/dist/cli/lookup.d.ts.map +1 -0
  370. package/dist/cli/lookup.js +87 -0
  371. package/dist/cli/lookup.js.map +1 -0
  372. package/dist/cli/orchestrate/__tests__/_equivalence-harness.d.ts +47 -0
  373. package/dist/cli/orchestrate/__tests__/_equivalence-harness.d.ts.map +1 -0
  374. package/dist/cli/orchestrate/__tests__/_equivalence-harness.js +331 -0
  375. package/dist/cli/orchestrate/__tests__/_equivalence-harness.js.map +1 -0
  376. package/dist/cli/orchestrate/__tests__/_flat-large-fixture.d.ts +69 -0
  377. package/dist/cli/orchestrate/__tests__/_flat-large-fixture.d.ts.map +1 -0
  378. package/dist/cli/orchestrate/__tests__/_flat-large-fixture.js +181 -0
  379. package/dist/cli/orchestrate/__tests__/_flat-large-fixture.js.map +1 -0
  380. package/dist/cli/orchestrate/__tests__/canonical-file-set.test.d.ts +8 -0
  381. package/dist/cli/orchestrate/__tests__/canonical-file-set.test.d.ts.map +1 -0
  382. package/dist/cli/orchestrate/__tests__/canonical-file-set.test.js +51 -0
  383. package/dist/cli/orchestrate/__tests__/canonical-file-set.test.js.map +1 -0
  384. package/dist/cli/orchestrate/__tests__/catalog-builder-incremental.test.d.ts +9 -0
  385. package/dist/cli/orchestrate/__tests__/catalog-builder-incremental.test.d.ts.map +1 -0
  386. package/dist/cli/orchestrate/__tests__/catalog-builder-incremental.test.js +147 -0
  387. package/dist/cli/orchestrate/__tests__/catalog-builder-incremental.test.js.map +1 -0
  388. package/dist/cli/orchestrate/__tests__/cross-shard-resolve.test.d.ts +12 -0
  389. package/dist/cli/orchestrate/__tests__/cross-shard-resolve.test.d.ts.map +1 -0
  390. package/dist/cli/orchestrate/__tests__/cross-shard-resolve.test.js +509 -0
  391. package/dist/cli/orchestrate/__tests__/cross-shard-resolve.test.js.map +1 -0
  392. package/dist/cli/orchestrate/__tests__/determinism.test.d.ts +19 -0
  393. package/dist/cli/orchestrate/__tests__/determinism.test.d.ts.map +1 -0
  394. package/dist/cli/orchestrate/__tests__/determinism.test.js +163 -0
  395. package/dist/cli/orchestrate/__tests__/determinism.test.js.map +1 -0
  396. package/dist/cli/orchestrate/__tests__/edge-identity.test.d.ts +9 -0
  397. package/dist/cli/orchestrate/__tests__/edge-identity.test.d.ts.map +1 -0
  398. package/dist/cli/orchestrate/__tests__/edge-identity.test.js +103 -0
  399. package/dist/cli/orchestrate/__tests__/edge-identity.test.js.map +1 -0
  400. package/dist/cli/orchestrate/__tests__/equivalence-check.test.d.ts +10 -0
  401. package/dist/cli/orchestrate/__tests__/equivalence-check.test.d.ts.map +1 -0
  402. package/dist/cli/orchestrate/__tests__/equivalence-check.test.js +277 -0
  403. package/dist/cli/orchestrate/__tests__/equivalence-check.test.js.map +1 -0
  404. package/dist/cli/orchestrate/__tests__/equivalence-repo-scale.test.d.ts +51 -0
  405. package/dist/cli/orchestrate/__tests__/equivalence-repo-scale.test.d.ts.map +1 -0
  406. package/dist/cli/orchestrate/__tests__/equivalence-repo-scale.test.js +183 -0
  407. package/dist/cli/orchestrate/__tests__/equivalence-repo-scale.test.js.map +1 -0
  408. package/dist/cli/orchestrate/__tests__/equivalence.test.d.ts +47 -0
  409. package/dist/cli/orchestrate/__tests__/equivalence.test.d.ts.map +1 -0
  410. package/dist/cli/orchestrate/__tests__/equivalence.test.js +259 -0
  411. package/dist/cli/orchestrate/__tests__/equivalence.test.js.map +1 -0
  412. package/dist/cli/orchestrate/__tests__/exact-boundary-recovery.test.d.ts +9 -0
  413. package/dist/cli/orchestrate/__tests__/exact-boundary-recovery.test.d.ts.map +1 -0
  414. package/dist/cli/orchestrate/__tests__/exact-boundary-recovery.test.js +105 -0
  415. package/dist/cli/orchestrate/__tests__/exact-boundary-recovery.test.js.map +1 -0
  416. package/dist/cli/orchestrate/__tests__/export-index.test.d.ts +12 -0
  417. package/dist/cli/orchestrate/__tests__/export-index.test.d.ts.map +1 -0
  418. package/dist/cli/orchestrate/__tests__/export-index.test.js +346 -0
  419. package/dist/cli/orchestrate/__tests__/export-index.test.js.map +1 -0
  420. package/dist/cli/orchestrate/__tests__/flat-large-fixture.test.d.ts +16 -0
  421. package/dist/cli/orchestrate/__tests__/flat-large-fixture.test.d.ts.map +1 -0
  422. package/dist/cli/orchestrate/__tests__/flat-large-fixture.test.js +99 -0
  423. package/dist/cli/orchestrate/__tests__/flat-large-fixture.test.js.map +1 -0
  424. package/dist/cli/orchestrate/__tests__/flat-monorepo-strategy.test.d.ts +11 -0
  425. package/dist/cli/orchestrate/__tests__/flat-monorepo-strategy.test.d.ts.map +1 -0
  426. package/dist/cli/orchestrate/__tests__/flat-monorepo-strategy.test.js +271 -0
  427. package/dist/cli/orchestrate/__tests__/flat-monorepo-strategy.test.js.map +1 -0
  428. package/dist/cli/orchestrate/__tests__/function-set-parity.test.d.ts +38 -0
  429. package/dist/cli/orchestrate/__tests__/function-set-parity.test.d.ts.map +1 -0
  430. package/dist/cli/orchestrate/__tests__/function-set-parity.test.js +163 -0
  431. package/dist/cli/orchestrate/__tests__/function-set-parity.test.js.map +1 -0
  432. package/dist/cli/orchestrate/__tests__/incremental-merge.test.d.ts +8 -0
  433. package/dist/cli/orchestrate/__tests__/incremental-merge.test.d.ts.map +1 -0
  434. package/dist/cli/orchestrate/__tests__/incremental-merge.test.js +153 -0
  435. package/dist/cli/orchestrate/__tests__/incremental-merge.test.js.map +1 -0
  436. package/dist/cli/orchestrate/__tests__/partition-files.test.d.ts +10 -0
  437. package/dist/cli/orchestrate/__tests__/partition-files.test.d.ts.map +1 -0
  438. package/dist/cli/orchestrate/__tests__/partition-files.test.js +104 -0
  439. package/dist/cli/orchestrate/__tests__/partition-files.test.js.map +1 -0
  440. package/dist/cli/orchestrate/__tests__/resolution-completeness-floor.test.d.ts +21 -0
  441. package/dist/cli/orchestrate/__tests__/resolution-completeness-floor.test.d.ts.map +1 -0
  442. package/dist/cli/orchestrate/__tests__/resolution-completeness-floor.test.js +59 -0
  443. package/dist/cli/orchestrate/__tests__/resolution-completeness-floor.test.js.map +1 -0
  444. package/dist/cli/orchestrate/__tests__/shard-model.test.d.ts +8 -0
  445. package/dist/cli/orchestrate/__tests__/shard-model.test.d.ts.map +1 -0
  446. package/dist/cli/orchestrate/__tests__/shard-model.test.js +77 -0
  447. package/dist/cli/orchestrate/__tests__/shard-model.test.js.map +1 -0
  448. package/dist/cli/orchestrate/__tests__/shard-runner-spawn.test.d.ts +13 -0
  449. package/dist/cli/orchestrate/__tests__/shard-runner-spawn.test.d.ts.map +1 -0
  450. package/dist/cli/orchestrate/__tests__/shard-runner-spawn.test.js +103 -0
  451. package/dist/cli/orchestrate/__tests__/shard-runner-spawn.test.js.map +1 -0
  452. package/dist/cli/orchestrate/__tests__/sharded-graph.test.d.ts +13 -0
  453. package/dist/cli/orchestrate/__tests__/sharded-graph.test.d.ts.map +1 -0
  454. package/dist/cli/orchestrate/__tests__/sharded-graph.test.js +257 -0
  455. package/dist/cli/orchestrate/__tests__/sharded-graph.test.js.map +1 -0
  456. package/dist/cli/orchestrate/__tests__/worker-pool.test.d.ts +6 -0
  457. package/dist/cli/orchestrate/__tests__/worker-pool.test.d.ts.map +1 -0
  458. package/dist/cli/orchestrate/__tests__/worker-pool.test.js +38 -0
  459. package/dist/cli/orchestrate/__tests__/worker-pool.test.js.map +1 -0
  460. package/dist/cli/orchestrate/cache-orchestrator.d.ts +42 -0
  461. package/dist/cli/orchestrate/cache-orchestrator.d.ts.map +1 -0
  462. package/dist/cli/orchestrate/cache-orchestrator.js +92 -0
  463. package/dist/cli/orchestrate/cache-orchestrator.js.map +1 -0
  464. package/dist/cli/orchestrate/canonical-file-set.d.ts +51 -0
  465. package/dist/cli/orchestrate/canonical-file-set.d.ts.map +1 -0
  466. package/dist/cli/orchestrate/canonical-file-set.js +58 -0
  467. package/dist/cli/orchestrate/canonical-file-set.js.map +1 -0
  468. package/dist/cli/orchestrate/catalog-builder.d.ts +121 -0
  469. package/dist/cli/orchestrate/catalog-builder.d.ts.map +1 -0
  470. package/dist/cli/orchestrate/catalog-builder.js +279 -0
  471. package/dist/cli/orchestrate/catalog-builder.js.map +1 -0
  472. package/dist/cli/orchestrate/catalog-stats.d.ts +31 -0
  473. package/dist/cli/orchestrate/catalog-stats.d.ts.map +1 -0
  474. package/dist/cli/orchestrate/catalog-stats.js +52 -0
  475. package/dist/cli/orchestrate/catalog-stats.js.map +1 -0
  476. package/dist/cli/orchestrate/cross-shard-resolve.d.ts +190 -0
  477. package/dist/cli/orchestrate/cross-shard-resolve.d.ts.map +1 -0
  478. package/dist/cli/orchestrate/cross-shard-resolve.js +523 -0
  479. package/dist/cli/orchestrate/cross-shard-resolve.js.map +1 -0
  480. package/dist/cli/orchestrate/edge-identity.d.ts +48 -0
  481. package/dist/cli/orchestrate/edge-identity.d.ts.map +1 -0
  482. package/dist/cli/orchestrate/edge-identity.js +68 -0
  483. package/dist/cli/orchestrate/edge-identity.js.map +1 -0
  484. package/dist/cli/orchestrate/equivalence-check.d.ts +227 -0
  485. package/dist/cli/orchestrate/equivalence-check.d.ts.map +1 -0
  486. package/dist/cli/orchestrate/equivalence-check.js +264 -0
  487. package/dist/cli/orchestrate/equivalence-check.js.map +1 -0
  488. package/dist/cli/orchestrate/exact-boundary-recovery.d.ts +33 -0
  489. package/dist/cli/orchestrate/exact-boundary-recovery.d.ts.map +1 -0
  490. package/dist/cli/orchestrate/exact-boundary-recovery.js +62 -0
  491. package/dist/cli/orchestrate/exact-boundary-recovery.js.map +1 -0
  492. package/dist/cli/orchestrate/flat-monorepo-strategy.d.ts +171 -0
  493. package/dist/cli/orchestrate/flat-monorepo-strategy.d.ts.map +1 -0
  494. package/dist/cli/orchestrate/flat-monorepo-strategy.js +328 -0
  495. package/dist/cli/orchestrate/flat-monorepo-strategy.js.map +1 -0
  496. package/dist/cli/orchestrate/incremental-merge.d.ts +46 -0
  497. package/dist/cli/orchestrate/incremental-merge.d.ts.map +1 -0
  498. package/dist/cli/orchestrate/incremental-merge.js +236 -0
  499. package/dist/cli/orchestrate/incremental-merge.js.map +1 -0
  500. package/dist/cli/orchestrate/partition-chunk.d.ts +36 -0
  501. package/dist/cli/orchestrate/partition-chunk.d.ts.map +1 -0
  502. package/dist/cli/orchestrate/partition-chunk.js +37 -0
  503. package/dist/cli/orchestrate/partition-chunk.js.map +1 -0
  504. package/dist/cli/orchestrate/partition-files.d.ts +52 -0
  505. package/dist/cli/orchestrate/partition-files.d.ts.map +1 -0
  506. package/dist/cli/orchestrate/partition-files.js +94 -0
  507. package/dist/cli/orchestrate/partition-files.js.map +1 -0
  508. package/dist/cli/orchestrate/resolution-trace.d.ts +11 -0
  509. package/dist/cli/orchestrate/resolution-trace.d.ts.map +1 -0
  510. package/dist/cli/orchestrate/resolution-trace.js +27 -0
  511. package/dist/cli/orchestrate/resolution-trace.js.map +1 -0
  512. package/dist/cli/orchestrate/shard-model.d.ts +99 -0
  513. package/dist/cli/orchestrate/shard-model.d.ts.map +1 -0
  514. package/dist/cli/orchestrate/shard-model.js +23 -0
  515. package/dist/cli/orchestrate/shard-model.js.map +1 -0
  516. package/dist/cli/orchestrate/shard-runner.d.ts +65 -0
  517. package/dist/cli/orchestrate/shard-runner.d.ts.map +1 -0
  518. package/dist/cli/orchestrate/shard-runner.js +169 -0
  519. package/dist/cli/orchestrate/shard-runner.js.map +1 -0
  520. package/dist/cli/orchestrate/sharded-graph.d.ts +86 -0
  521. package/dist/cli/orchestrate/sharded-graph.d.ts.map +1 -0
  522. package/dist/cli/orchestrate/sharded-graph.js +227 -0
  523. package/dist/cli/orchestrate/sharded-graph.js.map +1 -0
  524. package/dist/cli/orchestrate/types.d.ts +31 -0
  525. package/dist/cli/orchestrate/types.d.ts.map +1 -0
  526. package/dist/cli/orchestrate/types.js +24 -0
  527. package/dist/cli/orchestrate/types.js.map +1 -0
  528. package/dist/cli/orchestrate/worker-pool.d.ts +16 -0
  529. package/dist/cli/orchestrate/worker-pool.d.ts.map +1 -0
  530. package/dist/cli/orchestrate/worker-pool.js +39 -0
  531. package/dist/cli/orchestrate/worker-pool.js.map +1 -0
  532. package/dist/cli/orchestrate.d.ts +106 -0
  533. package/dist/cli/orchestrate.d.ts.map +1 -0
  534. package/dist/cli/orchestrate.js +228 -0
  535. package/dist/cli/orchestrate.js.map +1 -0
  536. package/dist/cli/positional-paths.d.ts +23 -0
  537. package/dist/cli/positional-paths.d.ts.map +1 -0
  538. package/dist/cli/positional-paths.js +64 -0
  539. package/dist/cli/positional-paths.js.map +1 -0
  540. package/dist/cli/pressure-monitor.d.ts +62 -0
  541. package/dist/cli/pressure-monitor.d.ts.map +1 -0
  542. package/dist/cli/pressure-monitor.js +110 -0
  543. package/dist/cli/pressure-monitor.js.map +1 -0
  544. package/dist/cli/profile.d.ts +82 -0
  545. package/dist/cli/profile.d.ts.map +1 -0
  546. package/dist/cli/profile.js +120 -0
  547. package/dist/cli/profile.js.map +1 -0
  548. package/dist/cli/report-data.d.ts +46 -0
  549. package/dist/cli/report-data.d.ts.map +1 -0
  550. package/dist/cli/report-data.js +48 -0
  551. package/dist/cli/report-data.js.map +1 -0
  552. package/dist/cli/resolve-adapters.d.ts +19 -0
  553. package/dist/cli/resolve-adapters.d.ts.map +1 -0
  554. package/dist/cli/resolve-adapters.js +38 -0
  555. package/dist/cli/resolve-adapters.js.map +1 -0
  556. package/dist/cli/sarif-export.d.ts +40 -0
  557. package/dist/cli/sarif-export.d.ts.map +1 -0
  558. package/dist/cli/sarif-export.js +69 -0
  559. package/dist/cli/sarif-export.js.map +1 -0
  560. package/dist/cli/shard-worker.d.ts +25 -0
  561. package/dist/cli/shard-worker.d.ts.map +1 -0
  562. package/dist/cli/shard-worker.js +98 -0
  563. package/dist/cli/shard-worker.js.map +1 -0
  564. package/dist/cli/symbol-index.d.ts +51 -0
  565. package/dist/cli/symbol-index.d.ts.map +1 -0
  566. package/dist/cli/symbol-index.js +120 -0
  567. package/dist/cli/symbol-index.js.map +1 -0
  568. package/dist/cli/workspace-report.d.ts +32 -0
  569. package/dist/cli/workspace-report.d.ts.map +1 -0
  570. package/dist/cli/workspace-report.js +107 -0
  571. package/dist/cli/workspace-report.js.map +1 -0
  572. package/dist/cli/workspace-runner.d.ts +104 -0
  573. package/dist/cli/workspace-runner.d.ts.map +1 -0
  574. package/dist/cli/workspace-runner.js +166 -0
  575. package/dist/cli/workspace-runner.js.map +1 -0
  576. package/dist/cross-package/export-index.d.ts +118 -0
  577. package/dist/cross-package/export-index.d.ts.map +1 -0
  578. package/dist/cross-package/export-index.js +296 -0
  579. package/dist/cross-package/export-index.js.map +1 -0
  580. package/dist/cross-package/posix-path.d.ts +16 -0
  581. package/dist/cross-package/posix-path.d.ts.map +1 -0
  582. package/dist/cross-package/posix-path.js +18 -0
  583. package/dist/cross-package/posix-path.js.map +1 -0
  584. package/dist/cross-package/resolve.d.ts +68 -0
  585. package/dist/cross-package/resolve.d.ts.map +1 -0
  586. package/dist/cross-package/resolve.js +83 -0
  587. package/dist/cross-package/resolve.js.map +1 -0
  588. package/dist/index.d.ts +33 -0
  589. package/dist/index.d.ts.map +1 -0
  590. package/dist/index.js +61 -0
  591. package/dist/index.js.map +1 -0
  592. package/dist/internal.d.ts +25 -0
  593. package/dist/internal.d.ts.map +1 -0
  594. package/dist/internal.js +38 -0
  595. package/dist/internal.js.map +1 -0
  596. package/dist/lang-adapter/body-digest.d.ts +46 -0
  597. package/dist/lang-adapter/body-digest.d.ts.map +1 -0
  598. package/dist/lang-adapter/body-digest.js +49 -0
  599. package/dist/lang-adapter/body-digest.js.map +1 -0
  600. package/dist/lang-adapter/edge-helpers.d.ts +104 -0
  601. package/dist/lang-adapter/edge-helpers.d.ts.map +1 -0
  602. package/dist/lang-adapter/edge-helpers.js +120 -0
  603. package/dist/lang-adapter/edge-helpers.js.map +1 -0
  604. package/dist/lang-adapter/registry.d.ts +59 -0
  605. package/dist/lang-adapter/registry.d.ts.map +1 -0
  606. package/dist/lang-adapter/registry.js +100 -0
  607. package/dist/lang-adapter/registry.js.map +1 -0
  608. package/dist/lang-adapter/selector.d.ts +39 -0
  609. package/dist/lang-adapter/selector.d.ts.map +1 -0
  610. package/dist/lang-adapter/selector.js +140 -0
  611. package/dist/lang-adapter/selector.js.map +1 -0
  612. package/dist/lang-adapter/types.d.ts +217 -0
  613. package/dist/lang-adapter/types.d.ts.map +1 -0
  614. package/dist/lang-adapter/types.js +18 -0
  615. package/dist/lang-adapter/types.js.map +1 -0
  616. package/dist/owner-key.d.ts +22 -0
  617. package/dist/owner-key.d.ts.map +1 -0
  618. package/dist/owner-key.js +25 -0
  619. package/dist/owner-key.js.map +1 -0
  620. package/dist/persistence/__tests__/shard-fragment-cache.test.d.ts +8 -0
  621. package/dist/persistence/__tests__/shard-fragment-cache.test.d.ts.map +1 -0
  622. package/dist/persistence/__tests__/shard-fragment-cache.test.js +126 -0
  623. package/dist/persistence/__tests__/shard-fragment-cache.test.js.map +1 -0
  624. package/dist/persistence/catalog-repo.d.ts +77 -0
  625. package/dist/persistence/catalog-repo.d.ts.map +1 -0
  626. package/dist/persistence/catalog-repo.js +229 -0
  627. package/dist/persistence/catalog-repo.js.map +1 -0
  628. package/dist/persistence/schema.d.ts +249 -0
  629. package/dist/persistence/schema.d.ts.map +1 -0
  630. package/dist/persistence/schema.js +53 -0
  631. package/dist/persistence/schema.js.map +1 -0
  632. package/dist/persistence/session-payload.d.ts +96 -0
  633. package/dist/persistence/session-payload.d.ts.map +1 -0
  634. package/dist/persistence/session-payload.js +116 -0
  635. package/dist/persistence/session-payload.js.map +1 -0
  636. package/dist/persistence/session-replay.d.ts +15 -0
  637. package/dist/persistence/session-replay.d.ts.map +1 -0
  638. package/dist/persistence/session-replay.js +80 -0
  639. package/dist/persistence/session-replay.js.map +1 -0
  640. package/dist/pipeline/__tests__/assign-packages.test.d.ts +2 -0
  641. package/dist/pipeline/__tests__/assign-packages.test.d.ts.map +1 -0
  642. package/dist/pipeline/__tests__/assign-packages.test.js +88 -0
  643. package/dist/pipeline/__tests__/assign-packages.test.js.map +1 -0
  644. package/dist/pipeline/__tests__/constrain-edges.test.d.ts +2 -0
  645. package/dist/pipeline/__tests__/constrain-edges.test.d.ts.map +1 -0
  646. package/dist/pipeline/__tests__/constrain-edges.test.js +228 -0
  647. package/dist/pipeline/__tests__/constrain-edges.test.js.map +1 -0
  648. package/dist/pipeline/__tests__/features.test.d.ts +9 -0
  649. package/dist/pipeline/__tests__/features.test.d.ts.map +1 -0
  650. package/dist/pipeline/__tests__/features.test.js +458 -0
  651. package/dist/pipeline/__tests__/features.test.js.map +1 -0
  652. package/dist/pipeline/__tests__/indexes-imports.test.d.ts +2 -0
  653. package/dist/pipeline/__tests__/indexes-imports.test.d.ts.map +1 -0
  654. package/dist/pipeline/__tests__/indexes-imports.test.js +114 -0
  655. package/dist/pipeline/__tests__/indexes-imports.test.js.map +1 -0
  656. package/dist/pipeline/assign-packages.d.ts +18 -0
  657. package/dist/pipeline/assign-packages.d.ts.map +1 -0
  658. package/dist/pipeline/assign-packages.js +86 -0
  659. package/dist/pipeline/assign-packages.js.map +1 -0
  660. package/dist/pipeline/constrain-edges.d.ts +34 -0
  661. package/dist/pipeline/constrain-edges.d.ts.map +1 -0
  662. package/dist/pipeline/constrain-edges.js +139 -0
  663. package/dist/pipeline/constrain-edges.js.map +1 -0
  664. package/dist/pipeline/feature-deps.d.ts +19 -0
  665. package/dist/pipeline/feature-deps.d.ts.map +1 -0
  666. package/dist/pipeline/feature-deps.js +28 -0
  667. package/dist/pipeline/feature-deps.js.map +1 -0
  668. package/dist/pipeline/features.d.ts +50 -0
  669. package/dist/pipeline/features.d.ts.map +1 -0
  670. package/dist/pipeline/features.js +462 -0
  671. package/dist/pipeline/features.js.map +1 -0
  672. package/dist/pipeline/indexes.d.ts +27 -0
  673. package/dist/pipeline/indexes.d.ts.map +1 -0
  674. package/dist/pipeline/indexes.js +159 -0
  675. package/dist/pipeline/indexes.js.map +1 -0
  676. package/dist/recipes/__tests__/built-in-recipes.test.d.ts +5 -0
  677. package/dist/recipes/__tests__/built-in-recipes.test.d.ts.map +1 -0
  678. package/dist/recipes/__tests__/built-in-recipes.test.js +24 -0
  679. package/dist/recipes/__tests__/built-in-recipes.test.js.map +1 -0
  680. package/dist/recipes/__tests__/registry.test.d.ts +7 -0
  681. package/dist/recipes/__tests__/registry.test.d.ts.map +1 -0
  682. package/dist/recipes/__tests__/registry.test.js +34 -0
  683. package/dist/recipes/__tests__/registry.test.js.map +1 -0
  684. package/dist/recipes/__tests__/resolve.test.d.ts +10 -0
  685. package/dist/recipes/__tests__/resolve.test.d.ts.map +1 -0
  686. package/dist/recipes/__tests__/resolve.test.js +38 -0
  687. package/dist/recipes/__tests__/resolve.test.js.map +1 -0
  688. package/dist/recipes/built-in-recipes.d.ts +26 -0
  689. package/dist/recipes/built-in-recipes.d.ts.map +1 -0
  690. package/dist/recipes/built-in-recipes.js +43 -0
  691. package/dist/recipes/built-in-recipes.js.map +1 -0
  692. package/dist/recipes/registry.d.ts +31 -0
  693. package/dist/recipes/registry.d.ts.map +1 -0
  694. package/dist/recipes/registry.js +48 -0
  695. package/dist/recipes/registry.js.map +1 -0
  696. package/dist/recipes/resolve.d.ts +31 -0
  697. package/dist/recipes/resolve.d.ts.map +1 -0
  698. package/dist/recipes/resolve.js +70 -0
  699. package/dist/recipes/resolve.js.map +1 -0
  700. package/dist/recipes/types.d.ts +58 -0
  701. package/dist/recipes/types.d.ts.map +1 -0
  702. package/dist/recipes/types.js +39 -0
  703. package/dist/recipes/types.js.map +1 -0
  704. package/dist/render/__tests__/catalog-json.test.d.ts +9 -0
  705. package/dist/render/__tests__/catalog-json.test.d.ts.map +1 -0
  706. package/dist/render/__tests__/catalog-json.test.js +132 -0
  707. package/dist/render/__tests__/catalog-json.test.js.map +1 -0
  708. package/dist/render/catalog-json-types.d.ts +114 -0
  709. package/dist/render/catalog-json-types.d.ts.map +1 -0
  710. package/dist/render/catalog-json-types.js +23 -0
  711. package/dist/render/catalog-json-types.js.map +1 -0
  712. package/dist/render/catalog-json.d.ts +43 -0
  713. package/dist/render/catalog-json.d.ts.map +1 -0
  714. package/dist/render/catalog-json.js +303 -0
  715. package/dist/render/catalog-json.js.map +1 -0
  716. package/dist/render/opensip-id-derivation.d.ts +73 -0
  717. package/dist/render/opensip-id-derivation.d.ts.map +1 -0
  718. package/dist/render/opensip-id-derivation.js +65 -0
  719. package/dist/render/opensip-id-derivation.js.map +1 -0
  720. package/dist/render/rule-id-mapping.d.ts +61 -0
  721. package/dist/render/rule-id-mapping.d.ts.map +1 -0
  722. package/dist/render/rule-id-mapping.js +82 -0
  723. package/dist/render/rule-id-mapping.js.map +1 -0
  724. package/dist/resolve-callee.d.ts +50 -0
  725. package/dist/resolve-callee.d.ts.map +1 -0
  726. package/dist/resolve-callee.js +80 -0
  727. package/dist/resolve-callee.js.map +1 -0
  728. package/dist/rules/__tests__/__fixtures__/catalog.fixture.d.ts +22 -0
  729. package/dist/rules/__tests__/__fixtures__/catalog.fixture.d.ts.map +1 -0
  730. package/dist/rules/__tests__/__fixtures__/catalog.fixture.js +143 -0
  731. package/dist/rules/__tests__/__fixtures__/catalog.fixture.js.map +1 -0
  732. package/dist/rules/__tests__/create-graph-signal.test.d.ts +8 -0
  733. package/dist/rules/__tests__/create-graph-signal.test.d.ts.map +1 -0
  734. package/dist/rules/__tests__/create-graph-signal.test.js +55 -0
  735. package/dist/rules/__tests__/create-graph-signal.test.js.map +1 -0
  736. package/dist/rules/__tests__/define-rule.test.d.ts +13 -0
  737. package/dist/rules/__tests__/define-rule.test.d.ts.map +1 -0
  738. package/dist/rules/__tests__/define-rule.test.js +102 -0
  739. package/dist/rules/__tests__/define-rule.test.js.map +1 -0
  740. package/dist/rules/__tests__/fingerprint-golden.test.d.ts +21 -0
  741. package/dist/rules/__tests__/fingerprint-golden.test.d.ts.map +1 -0
  742. package/dist/rules/__tests__/fingerprint-golden.test.js +69 -0
  743. package/dist/rules/__tests__/fingerprint-golden.test.js.map +1 -0
  744. package/dist/rules/__tests__/registry.test.d.ts +6 -0
  745. package/dist/rules/__tests__/registry.test.d.ts.map +1 -0
  746. package/dist/rules/__tests__/registry.test.js +37 -0
  747. package/dist/rules/__tests__/registry.test.js.map +1 -0
  748. package/dist/rules/__tests__/rule-behaviors.test.d.ts +9 -0
  749. package/dist/rules/__tests__/rule-behaviors.test.d.ts.map +1 -0
  750. package/dist/rules/__tests__/rule-behaviors.test.js +204 -0
  751. package/dist/rules/__tests__/rule-behaviors.test.js.map +1 -0
  752. package/dist/rules/__tests__/signal-output.snapshot.test.d.ts +11 -0
  753. package/dist/rules/__tests__/signal-output.snapshot.test.d.ts.map +1 -0
  754. package/dist/rules/__tests__/signal-output.snapshot.test.js +55 -0
  755. package/dist/rules/__tests__/signal-output.snapshot.test.js.map +1 -0
  756. package/dist/rules/_approximation.d.ts +23 -0
  757. package/dist/rules/_approximation.d.ts.map +1 -0
  758. package/dist/rules/_approximation.js +28 -0
  759. package/dist/rules/_approximation.js.map +1 -0
  760. package/dist/rules/_entry-points.d.ts +27 -0
  761. package/dist/rules/_entry-points.d.ts.map +1 -0
  762. package/dist/rules/_entry-points.js +81 -0
  763. package/dist/rules/_entry-points.js.map +1 -0
  764. package/dist/rules/_severity-override.d.ts +32 -0
  765. package/dist/rules/_severity-override.d.ts.map +1 -0
  766. package/dist/rules/_severity-override.js +33 -0
  767. package/dist/rules/_severity-override.js.map +1 -0
  768. package/dist/rules/always-throws-branch.d.ts +26 -0
  769. package/dist/rules/always-throws-branch.d.ts.map +1 -0
  770. package/dist/rules/always-throws-branch.js +66 -0
  771. package/dist/rules/always-throws-branch.js.map +1 -0
  772. package/dist/rules/create-graph-signal.d.ts +38 -0
  773. package/dist/rules/create-graph-signal.d.ts.map +1 -0
  774. package/dist/rules/create-graph-signal.js +35 -0
  775. package/dist/rules/create-graph-signal.js.map +1 -0
  776. package/dist/rules/cycle.d.ts +29 -0
  777. package/dist/rules/cycle.d.ts.map +1 -0
  778. package/dist/rules/cycle.js +166 -0
  779. package/dist/rules/cycle.js.map +1 -0
  780. package/dist/rules/cycle.memberlocations.test.d.ts +11 -0
  781. package/dist/rules/cycle.memberlocations.test.d.ts.map +1 -0
  782. package/dist/rules/cycle.memberlocations.test.js +84 -0
  783. package/dist/rules/cycle.memberlocations.test.js.map +1 -0
  784. package/dist/rules/define-rule.d.ts +67 -0
  785. package/dist/rules/define-rule.d.ts.map +1 -0
  786. package/dist/rules/define-rule.js +66 -0
  787. package/dist/rules/define-rule.js.map +1 -0
  788. package/dist/rules/duplicated-function-body.d.ts +40 -0
  789. package/dist/rules/duplicated-function-body.d.ts.map +1 -0
  790. package/dist/rules/duplicated-function-body.js +232 -0
  791. package/dist/rules/duplicated-function-body.js.map +1 -0
  792. package/dist/rules/high-blast-untested.d.ts +26 -0
  793. package/dist/rules/high-blast-untested.d.ts.map +1 -0
  794. package/dist/rules/high-blast-untested.js +82 -0
  795. package/dist/rules/high-blast-untested.js.map +1 -0
  796. package/dist/rules/large-function.d.ts +22 -0
  797. package/dist/rules/large-function.d.ts.map +1 -0
  798. package/dist/rules/large-function.js +72 -0
  799. package/dist/rules/large-function.js.map +1 -0
  800. package/dist/rules/no-side-effect-path.d.ts +31 -0
  801. package/dist/rules/no-side-effect-path.d.ts.map +1 -0
  802. package/dist/rules/no-side-effect-path.js +217 -0
  803. package/dist/rules/no-side-effect-path.js.map +1 -0
  804. package/dist/rules/orphan-subtree.d.ts +11 -0
  805. package/dist/rules/orphan-subtree.d.ts.map +1 -0
  806. package/dist/rules/orphan-subtree.js +104 -0
  807. package/dist/rules/orphan-subtree.js.map +1 -0
  808. package/dist/rules/registry.d.ts +35 -0
  809. package/dist/rules/registry.d.ts.map +1 -0
  810. package/dist/rules/registry.js +96 -0
  811. package/dist/rules/registry.js.map +1 -0
  812. package/dist/rules/test-only-reachable.d.ts +9 -0
  813. package/dist/rules/test-only-reachable.d.ts.map +1 -0
  814. package/dist/rules/test-only-reachable.js +101 -0
  815. package/dist/rules/test-only-reachable.js.map +1 -0
  816. package/dist/rules/unexpected-coupling.d.ts +29 -0
  817. package/dist/rules/unexpected-coupling.d.ts.map +1 -0
  818. package/dist/rules/unexpected-coupling.js +0 -0
  819. package/dist/rules/unexpected-coupling.js.map +1 -0
  820. package/dist/rules/wide-function.d.ts +18 -0
  821. package/dist/rules/wide-function.d.ts.map +1 -0
  822. package/dist/rules/wide-function.js +58 -0
  823. package/dist/rules/wide-function.js.map +1 -0
  824. package/dist/scope-augmentation.d.ts +58 -0
  825. package/dist/scope-augmentation.d.ts.map +1 -0
  826. package/dist/scope-augmentation.js +29 -0
  827. package/dist/scope-augmentation.js.map +1 -0
  828. package/dist/tool.d.ts +29 -0
  829. package/dist/tool.d.ts.map +1 -0
  830. package/dist/tool.js +241 -0
  831. package/dist/tool.js.map +1 -0
  832. package/dist/types.d.ts +642 -0
  833. package/dist/types.d.ts.map +1 -0
  834. package/dist/types.js +2 -0
  835. package/dist/types.js.map +1 -0
  836. 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"}