@ethlete/cli 3.0.0-next.27 → 3.0.0-next.28

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 (582) hide show
  1. package/CHANGELOG.md +153 -0
  2. package/build-info.json +1 -1
  3. package/design/arrow-anchor.ts +55 -0
  4. package/design/define-call.ts +3 -0
  5. package/design/define-part.ts +28 -1
  6. package/design/web/frame.ts +28 -0
  7. package/package.json +1 -1
  8. package/src/lib/api/compose.js +3 -2
  9. package/src/lib/api/compose.js.map +1 -1
  10. package/src/lib/api/git.js +2 -1
  11. package/src/lib/api/git.js.map +1 -1
  12. package/src/lib/api/setup.js +2 -2
  13. package/src/lib/api/setup.js.map +1 -1
  14. package/src/lib/design/asset-shot.js +2 -2
  15. package/src/lib/design/asset-shot.js.map +1 -1
  16. package/src/lib/design/blank-png.d.ts +2 -0
  17. package/src/lib/design/blank-png.js +28 -0
  18. package/src/lib/design/blank-png.js.map +1 -0
  19. package/src/lib/design/cache-entry.d.ts +8 -0
  20. package/src/lib/design/cache-entry.js +30 -0
  21. package/src/lib/design/cache-entry.js.map +1 -0
  22. package/src/lib/design/calls-tsconfig.js +20 -13
  23. package/src/lib/design/calls-tsconfig.js.map +1 -1
  24. package/src/lib/design/calls.js +3 -3
  25. package/src/lib/design/calls.js.map +1 -1
  26. package/src/lib/design/changed-parts.d.ts +1 -1
  27. package/src/lib/design/check.d.ts +2 -0
  28. package/src/lib/design/check.js +91 -24
  29. package/src/lib/design/check.js.map +1 -1
  30. package/src/lib/design/code-hash.d.ts +30 -0
  31. package/src/lib/design/code-hash.js +118 -0
  32. package/src/lib/design/code-hash.js.map +1 -0
  33. package/src/lib/design/commit-hunks.d.ts +2 -2
  34. package/src/lib/design/commit-hunks.js +2 -2
  35. package/src/lib/design/design-command.js +131 -36
  36. package/src/lib/design/design-command.js.map +1 -1
  37. package/src/lib/design/{paths.d.ts → design-config.d.ts} +6 -28
  38. package/src/lib/design/design-config.js +35 -0
  39. package/src/lib/design/design-config.js.map +1 -0
  40. package/src/lib/design/design-lint.d.ts +68 -0
  41. package/src/lib/design/design-lint.js +183 -0
  42. package/src/lib/design/design-lint.js.map +1 -0
  43. package/src/lib/design/draw-ledger.d.ts +6 -0
  44. package/src/lib/design/draw-ledger.js +10 -0
  45. package/src/lib/design/draw-ledger.js.map +1 -1
  46. package/src/lib/design/force-interactions.d.ts +2 -0
  47. package/src/lib/design/force-interactions.js +4 -2
  48. package/src/lib/design/force-interactions.js.map +1 -1
  49. package/src/lib/design/generated-stylesheets.d.ts +1 -1
  50. package/src/lib/design/generated-stylesheets.js +2 -2
  51. package/src/lib/design/generated-stylesheets.js.map +1 -1
  52. package/src/lib/design/git-top.d.ts +5 -0
  53. package/src/lib/design/git-top.js +16 -0
  54. package/src/lib/design/git-top.js.map +1 -0
  55. package/src/lib/design/hooks-problem.d.ts +2 -0
  56. package/src/lib/design/hooks-problem.js +23 -0
  57. package/src/lib/design/hooks-problem.js.map +1 -0
  58. package/src/lib/design/index.d.ts +4 -1
  59. package/src/lib/design/index.js +4 -1
  60. package/src/lib/design/index.js.map +1 -1
  61. package/src/lib/design/is-running.d.ts +1 -0
  62. package/src/lib/design/is-running.js +14 -0
  63. package/src/lib/design/is-running.js.map +1 -0
  64. package/src/lib/design/legacy.js +3 -3
  65. package/src/lib/design/legacy.js.map +1 -1
  66. package/src/lib/design/mcp-command.js +5 -12
  67. package/src/lib/design/mcp-command.js.map +1 -1
  68. package/src/lib/design/merge-compare.js +3 -3
  69. package/src/lib/design/merge-compare.js.map +1 -1
  70. package/src/lib/design/motion-command.js +3 -3
  71. package/src/lib/design/motion-command.js.map +1 -1
  72. package/src/lib/design/new-call.js +3 -3
  73. package/src/lib/design/new-call.js.map +1 -1
  74. package/src/lib/design/old-shot-folders.d.ts +2 -0
  75. package/src/lib/design/old-shot-folders.js +26 -0
  76. package/src/lib/design/old-shot-folders.js.map +1 -0
  77. package/src/lib/design/package-root.d.ts +21 -0
  78. package/src/lib/design/package-root.js +79 -0
  79. package/src/lib/design/package-root.js.map +1 -0
  80. package/src/lib/design/parent-watch.d.ts +7 -0
  81. package/src/lib/design/parent-watch.js +23 -0
  82. package/src/lib/design/parent-watch.js.map +1 -0
  83. package/src/lib/design/part-marks.js +2 -2
  84. package/src/lib/design/part-marks.js.map +1 -1
  85. package/src/lib/design/phase-timing.d.ts +5 -0
  86. package/src/lib/design/phase-timing.js +27 -0
  87. package/src/lib/design/phase-timing.js.map +1 -0
  88. package/src/lib/design/physical-cores.d.ts +12 -0
  89. package/src/lib/design/physical-cores.js +43 -0
  90. package/src/lib/design/physical-cores.js.map +1 -0
  91. package/src/lib/design/product-command.js +4 -4
  92. package/src/lib/design/product-command.js.map +1 -1
  93. package/src/lib/design/push-status.d.ts +30 -0
  94. package/src/lib/design/push-status.js +122 -0
  95. package/src/lib/design/push-status.js.map +1 -0
  96. package/src/lib/design/ready-shots.d.ts +18 -35
  97. package/src/lib/design/ready-shots.js +46 -111
  98. package/src/lib/design/ready-shots.js.map +1 -1
  99. package/src/lib/design/render-packages.d.ts +3 -1
  100. package/src/lib/design/render-packages.js +6 -2
  101. package/src/lib/design/render-packages.js.map +1 -1
  102. package/src/lib/design/render-worker.js +23 -3
  103. package/src/lib/design/render-worker.js.map +1 -1
  104. package/src/lib/design/render.d.ts +24 -3
  105. package/src/lib/design/render.js +23 -9
  106. package/src/lib/design/render.js.map +1 -1
  107. package/src/lib/design/resident/client.d.ts +52 -0
  108. package/src/lib/design/resident/client.js +263 -0
  109. package/src/lib/design/resident/client.js.map +1 -0
  110. package/src/lib/design/resident/discovery.d.ts +21 -0
  111. package/src/lib/design/resident/discovery.js +63 -0
  112. package/src/lib/design/resident/discovery.js.map +1 -0
  113. package/src/lib/design/resident/resident-process.d.ts +19 -0
  114. package/src/lib/design/resident/resident-process.js +189 -0
  115. package/src/lib/design/resident/resident-process.js.map +1 -0
  116. package/src/lib/design/resident/server.d.ts +52 -0
  117. package/src/lib/design/resident/server.js +212 -0
  118. package/src/lib/design/resident/server.js.map +1 -0
  119. package/src/lib/design/run-abort.d.ts +9 -0
  120. package/src/lib/design/run-abort.js +45 -0
  121. package/src/lib/design/run-abort.js.map +1 -0
  122. package/src/lib/design/run-deadline.d.ts +19 -0
  123. package/src/lib/design/run-deadline.js +104 -0
  124. package/src/lib/design/run-deadline.js.map +1 -0
  125. package/src/lib/design/run-yield.d.ts +8 -0
  126. package/src/lib/design/run-yield.js +43 -0
  127. package/src/lib/design/run-yield.js.map +1 -0
  128. package/src/lib/design/serve-state.d.ts +15 -0
  129. package/src/lib/design/serve-state.js +56 -0
  130. package/src/lib/design/serve-state.js.map +1 -0
  131. package/src/lib/design/serve.d.ts +20 -2
  132. package/src/lib/design/serve.js +147 -43
  133. package/src/lib/design/serve.js.map +1 -1
  134. package/src/lib/design/server-identity.d.ts +5 -1
  135. package/src/lib/design/server-identity.js +4 -1
  136. package/src/lib/design/server-identity.js.map +1 -1
  137. package/src/lib/design/shot-board.d.ts +26 -0
  138. package/src/lib/design/shot-board.js +80 -0
  139. package/src/lib/design/shot-board.js.map +1 -0
  140. package/src/lib/design/shot-command.d.ts +1 -1
  141. package/src/lib/design/shot-command.js +12 -5
  142. package/src/lib/design/shot-command.js.map +1 -1
  143. package/src/lib/design/shot-store.d.ts +29 -3
  144. package/src/lib/design/shot-store.js +206 -36
  145. package/src/lib/design/shot-store.js.map +1 -1
  146. package/src/lib/design/shot.d.ts +12 -4
  147. package/src/lib/design/shot.js +98 -14
  148. package/src/lib/design/shot.js.map +1 -1
  149. package/src/lib/design/sketch-at.js +2 -1
  150. package/src/lib/design/sketch-at.js.map +1 -1
  151. package/src/lib/design/sketch-command.d.ts +13 -0
  152. package/src/lib/design/sketch-command.js +346 -73
  153. package/src/lib/design/sketch-command.js.map +1 -1
  154. package/src/lib/design/ssr-shims.d.ts +1 -0
  155. package/src/lib/design/ssr-shims.js +3 -3
  156. package/src/lib/design/ssr-shims.js.map +1 -1
  157. package/src/lib/design/stamp.d.ts +5 -0
  158. package/src/lib/design/stamp.js +6 -5
  159. package/src/lib/design/stamp.js.map +1 -1
  160. package/src/lib/design/status.d.ts +1 -1
  161. package/src/lib/design/status.js +15 -4
  162. package/src/lib/design/status.js.map +1 -1
  163. package/src/lib/design/studio-api.d.ts +7 -15
  164. package/src/lib/design/studio-api.js +39 -140
  165. package/src/lib/design/studio-api.js.map +1 -1
  166. package/src/lib/design/system/accepted-pictures.d.ts +15 -29
  167. package/src/lib/design/system/accepted-pictures.js +156 -134
  168. package/src/lib/design/system/accepted-pictures.js.map +1 -1
  169. package/src/lib/design/system/action-cache.d.ts +45 -0
  170. package/src/lib/design/system/action-cache.js +72 -0
  171. package/src/lib/design/system/action-cache.js.map +1 -0
  172. package/src/lib/design/system/action-lost.d.ts +8 -6
  173. package/src/lib/design/system/action-lost.js +13 -17
  174. package/src/lib/design/system/action-lost.js.map +1 -1
  175. package/src/lib/design/system/action-press.d.ts +7 -1
  176. package/src/lib/design/system/action-press.js +16 -4
  177. package/src/lib/design/system/action-press.js.map +1 -1
  178. package/src/lib/design/system/actions-command.d.ts +12 -5
  179. package/src/lib/design/system/actions-command.js +187 -66
  180. package/src/lib/design/system/actions-command.js.map +1 -1
  181. package/src/lib/design/system/actions.d.ts +27 -4
  182. package/src/lib/design/system/actions.js +59 -21
  183. package/src/lib/design/system/actions.js.map +1 -1
  184. package/src/lib/design/system/anti-alias.d.ts +2 -0
  185. package/src/lib/design/system/anti-alias.js +11 -0
  186. package/src/lib/design/system/anti-alias.js.map +1 -0
  187. package/src/lib/design/system/app-files.js +19 -3
  188. package/src/lib/design/system/app-files.js.map +1 -1
  189. package/src/lib/design/system/arrow-anchor.d.ts +9 -0
  190. package/src/lib/design/system/arrow-anchor.js +40 -0
  191. package/src/lib/design/system/arrow-anchor.js.map +1 -0
  192. package/src/lib/design/system/base-issues.d.ts +28 -0
  193. package/src/lib/design/system/base-issues.js +80 -0
  194. package/src/lib/design/system/base-issues.js.map +1 -0
  195. package/src/lib/design/system/base.d.ts +1 -1
  196. package/src/lib/design/system/base.js +2 -2
  197. package/src/lib/design/system/base.js.map +1 -1
  198. package/src/lib/design/system/baseline-history.d.ts +13 -0
  199. package/src/lib/design/system/baseline-history.js +40 -0
  200. package/src/lib/design/system/baseline-history.js.map +1 -0
  201. package/src/lib/design/system/bespoke-controls.d.ts +4 -1
  202. package/src/lib/design/system/bespoke-controls.js +72 -70
  203. package/src/lib/design/system/bespoke-controls.js.map +1 -1
  204. package/src/lib/design/system/build-ready-contract.d.ts +7 -1
  205. package/src/lib/design/system/build-ready-contract.js +7 -1
  206. package/src/lib/design/system/build-ready-contract.js.map +1 -1
  207. package/src/lib/design/system/build-running.d.ts +13 -0
  208. package/src/lib/design/system/build-running.js +48 -0
  209. package/src/lib/design/system/build-running.js.map +1 -0
  210. package/src/lib/design/system/check-record.d.ts +18 -0
  211. package/src/lib/design/system/check-record.js +47 -0
  212. package/src/lib/design/system/check-record.js.map +1 -0
  213. package/src/lib/design/system/check-rules.d.ts +1 -1
  214. package/src/lib/design/system/check-rules.js +19 -1
  215. package/src/lib/design/system/check-rules.js.map +1 -1
  216. package/src/lib/design/system/check-system.d.ts +25 -4
  217. package/src/lib/design/system/check-system.js +289 -121
  218. package/src/lib/design/system/check-system.js.map +1 -1
  219. package/src/lib/design/system/comments/inbox.d.ts +1 -1
  220. package/src/lib/design/system/compare-cache.d.ts +20 -0
  221. package/src/lib/design/system/compare-cache.js +92 -0
  222. package/src/lib/design/system/compare-cache.js.map +1 -0
  223. package/src/lib/design/system/compare-command.d.ts +82 -51
  224. package/src/lib/design/system/compare-command.js +362 -340
  225. package/src/lib/design/system/compare-command.js.map +1 -1
  226. package/src/lib/design/system/complete.d.ts +31 -1
  227. package/src/lib/design/system/complete.js +141 -27
  228. package/src/lib/design/system/complete.js.map +1 -1
  229. package/src/lib/design/system/decision-refs.d.ts +5 -0
  230. package/src/lib/design/system/decision-refs.js +21 -0
  231. package/src/lib/design/system/decision-refs.js.map +1 -0
  232. package/src/lib/design/system/design-hash.d.ts +22 -1
  233. package/src/lib/design/system/design-hash.js +63 -4
  234. package/src/lib/design/system/design-hash.js.map +1 -1
  235. package/src/lib/design/system/dom-command.d.ts +1 -1
  236. package/src/lib/design/system/dom-command.js +8 -5
  237. package/src/lib/design/system/dom-command.js.map +1 -1
  238. package/src/lib/design/system/drawn-open-points.d.ts +1 -1
  239. package/src/lib/design/system/dropped-props.d.ts +19 -5
  240. package/src/lib/design/system/dropped-props.js +133 -21
  241. package/src/lib/design/system/dropped-props.js.map +1 -1
  242. package/src/lib/design/system/grid-report.d.ts +5 -0
  243. package/src/lib/design/system/grid-report.js +78 -0
  244. package/src/lib/design/system/grid-report.js.map +1 -0
  245. package/src/lib/design/system/harness-build-cache.d.ts +17 -3
  246. package/src/lib/design/system/harness-build-cache.js +23 -10
  247. package/src/lib/design/system/harness-build-cache.js.map +1 -1
  248. package/src/lib/design/system/harness-inputs.d.ts +17 -0
  249. package/src/lib/design/system/harness-inputs.js +160 -0
  250. package/src/lib/design/system/harness-inputs.js.map +1 -0
  251. package/src/lib/design/system/harness-map.d.ts +1 -1
  252. package/src/lib/design/system/harness-server.d.ts +12 -1
  253. package/src/lib/design/system/harness-server.js +29 -19
  254. package/src/lib/design/system/harness-server.js.map +1 -1
  255. package/src/lib/design/system/harness-shot.d.ts +78 -0
  256. package/src/lib/design/system/harness-shot.js +349 -0
  257. package/src/lib/design/system/harness-shot.js.map +1 -0
  258. package/src/lib/design/system/harness-watch.d.ts +79 -0
  259. package/src/lib/design/system/harness-watch.js +334 -0
  260. package/src/lib/design/system/harness-watch.js.map +1 -0
  261. package/src/lib/design/system/implementation-baseline.d.ts +20 -0
  262. package/src/lib/design/system/implementation-baseline.js +44 -0
  263. package/src/lib/design/system/implementation-baseline.js.map +1 -0
  264. package/src/lib/design/system/leftover-gate-files.d.ts +2 -0
  265. package/src/lib/design/system/leftover-gate-files.js +15 -0
  266. package/src/lib/design/system/leftover-gate-files.js.map +1 -0
  267. package/src/lib/design/system/lib-build-lock.d.ts +18 -0
  268. package/src/lib/design/system/lib-build-lock.js +111 -0
  269. package/src/lib/design/system/lib-build-lock.js.map +1 -0
  270. package/src/lib/design/system/link-free.d.ts +12 -0
  271. package/src/lib/design/system/link-free.js +125 -0
  272. package/src/lib/design/system/link-free.js.map +1 -0
  273. package/src/lib/design/system/list-system.d.ts +4 -8
  274. package/src/lib/design/system/list-system.js +8 -78
  275. package/src/lib/design/system/list-system.js.map +1 -1
  276. package/src/lib/design/system/live-actions.d.ts +1 -1
  277. package/src/lib/design/system/live-actions.js +17 -8
  278. package/src/lib/design/system/live-actions.js.map +1 -1
  279. package/src/lib/design/system/live-compare.js +1 -1
  280. package/src/lib/design/system/live-compare.js.map +1 -1
  281. package/src/lib/design/system/live-uncovered.d.ts +7 -2
  282. package/src/lib/design/system/live-uncovered.js +44 -9
  283. package/src/lib/design/system/live-uncovered.js.map +1 -1
  284. package/src/lib/design/system/no-verdict.d.ts +13 -0
  285. package/src/lib/design/system/no-verdict.js +17 -0
  286. package/src/lib/design/system/no-verdict.js.map +1 -0
  287. package/src/lib/design/system/off-centre.d.ts +11 -0
  288. package/src/lib/design/system/off-centre.js +74 -0
  289. package/src/lib/design/system/off-centre.js.map +1 -0
  290. package/src/lib/design/system/open-points-cache.d.ts +11 -0
  291. package/src/lib/design/system/open-points-cache.js +27 -0
  292. package/src/lib/design/system/open-points-cache.js.map +1 -0
  293. package/src/lib/design/system/open-points-runner.d.ts +43 -0
  294. package/src/lib/design/system/open-points-runner.js +119 -0
  295. package/src/lib/design/system/open-points-runner.js.map +1 -0
  296. package/src/lib/design/system/open-points-worker.d.ts +1 -0
  297. package/src/lib/design/system/open-points-worker.js +28 -0
  298. package/src/lib/design/system/open-points-worker.js.map +1 -0
  299. package/src/lib/design/system/open-points.js +1 -1
  300. package/src/lib/design/system/open-points.js.map +1 -1
  301. package/src/lib/design/system/part-build-ready.d.ts +13 -7
  302. package/src/lib/design/system/part-build-ready.js +43 -15
  303. package/src/lib/design/system/part-build-ready.js.map +1 -1
  304. package/src/lib/design/system/part-compare.d.ts +18 -2
  305. package/src/lib/design/system/part-compare.js +147 -42
  306. package/src/lib/design/system/part-compare.js.map +1 -1
  307. package/src/lib/design/system/part-picture-cache.d.ts +23 -0
  308. package/src/lib/design/system/part-picture-cache.js +68 -0
  309. package/src/lib/design/system/part-picture-cache.js.map +1 -0
  310. package/src/lib/design/system/part-ready.d.ts +33 -7
  311. package/src/lib/design/system/part-ready.js +55 -17
  312. package/src/lib/design/system/part-ready.js.map +1 -1
  313. package/src/lib/design/system/part-task.d.ts +20 -0
  314. package/src/lib/design/system/part-task.js +53 -7
  315. package/src/lib/design/system/part-task.js.map +1 -1
  316. package/src/lib/design/system/pixel-cache.d.ts +16 -0
  317. package/src/lib/design/system/pixel-cache.js +79 -0
  318. package/src/lib/design/system/pixel-cache.js.map +1 -0
  319. package/src/lib/design/system/pointer-focus.d.ts +10 -2
  320. package/src/lib/design/system/pointer-focus.js +32 -9
  321. package/src/lib/design/system/pointer-focus.js.map +1 -1
  322. package/src/lib/design/system/prettier.js +4 -3
  323. package/src/lib/design/system/prettier.js.map +1 -1
  324. package/src/lib/design/system/problem.d.ts +6 -0
  325. package/src/lib/design/system/product.js +2 -2
  326. package/src/lib/design/system/product.js.map +1 -1
  327. package/src/lib/design/system/ready-command.d.ts +1 -1
  328. package/src/lib/design/system/ready-command.js +24 -4
  329. package/src/lib/design/system/ready-command.js.map +1 -1
  330. package/src/lib/design/system/record-settled.d.ts +24 -0
  331. package/src/lib/design/system/record-settled.js +50 -0
  332. package/src/lib/design/system/record-settled.js.map +1 -0
  333. package/src/lib/design/system/render-check.d.ts +18 -1
  334. package/src/lib/design/system/render-check.js +164 -104
  335. package/src/lib/design/system/render-check.js.map +1 -1
  336. package/src/lib/design/system/render-issue-key.d.ts +9 -0
  337. package/src/lib/design/system/render-issue-key.js +27 -0
  338. package/src/lib/design/system/render-issue-key.js.map +1 -0
  339. package/src/lib/design/system/resolve-product.d.ts +4 -1
  340. package/src/lib/design/system/resolve-product.js +14 -3
  341. package/src/lib/design/system/resolve-product.js.map +1 -1
  342. package/src/lib/design/system/rule-baseline.d.ts +53 -0
  343. package/src/lib/design/system/rule-baseline.js +124 -0
  344. package/src/lib/design/system/rule-baseline.js.map +1 -0
  345. package/src/lib/design/system/rule-skips.d.ts +20 -0
  346. package/src/lib/design/system/rule-skips.js +36 -0
  347. package/src/lib/design/system/rule-skips.js.map +1 -0
  348. package/src/lib/design/system/rules/canonical-class.d.ts +4 -0
  349. package/src/lib/design/system/rules/canonical-class.js +66 -13
  350. package/src/lib/design/system/rules/canonical-class.js.map +1 -1
  351. package/src/lib/design/system/rules/capability-place.d.ts +4 -2
  352. package/src/lib/design/system/rules/capability-place.js +15 -2
  353. package/src/lib/design/system/rules/capability-place.js.map +1 -1
  354. package/src/lib/design/system/rules/command-text.d.ts +7 -0
  355. package/src/lib/design/system/rules/command-text.js +72 -0
  356. package/src/lib/design/system/rules/command-text.js.map +1 -0
  357. package/src/lib/design/system/rules/design-coverage.d.ts +30 -0
  358. package/src/lib/design/system/rules/design-coverage.js +205 -0
  359. package/src/lib/design/system/rules/design-coverage.js.map +1 -0
  360. package/src/lib/design/system/rules/glued-interpolation.js +17 -1
  361. package/src/lib/design/system/rules/glued-interpolation.js.map +1 -1
  362. package/src/lib/design/system/rules/implements-unrendered.d.ts +13 -0
  363. package/src/lib/design/system/rules/implements-unrendered.js +63 -0
  364. package/src/lib/design/system/rules/implements-unrendered.js.map +1 -0
  365. package/src/lib/design/system/rules/motion.js +6 -0
  366. package/src/lib/design/system/rules/motion.js.map +1 -1
  367. package/src/lib/design/system/rules/native-title.js +13 -3
  368. package/src/lib/design/system/rules/native-title.js.map +1 -1
  369. package/src/lib/design/system/rules/option-values.d.ts +1 -1
  370. package/src/lib/design/system/rules/pending-state.d.ts +39 -0
  371. package/src/lib/design/system/rules/pending-state.js +289 -0
  372. package/src/lib/design/system/rules/pending-state.js.map +1 -0
  373. package/src/lib/design/system/rules/sdk-attribute-value.d.ts +10 -0
  374. package/src/lib/design/system/rules/sdk-attribute-value.js +78 -0
  375. package/src/lib/design/system/rules/sdk-attribute-value.js.map +1 -0
  376. package/src/lib/design/system/rules/sdk-private-var.d.ts +9 -0
  377. package/src/lib/design/system/rules/sdk-private-var.js +54 -0
  378. package/src/lib/design/system/rules/sdk-private-var.js.map +1 -0
  379. package/src/lib/design/system/rules/skips.d.ts +4 -0
  380. package/src/lib/design/system/rules/skips.js +27 -0
  381. package/src/lib/design/system/rules/skips.js.map +1 -0
  382. package/src/lib/design/system/rules/stale-replace.js +1 -0
  383. package/src/lib/design/system/rules/stale-replace.js.map +1 -1
  384. package/src/lib/design/system/rules/tailwind-classes.d.ts +1 -0
  385. package/src/lib/design/system/rules/tailwind-classes.js +11 -6
  386. package/src/lib/design/system/rules/tailwind-classes.js.map +1 -1
  387. package/src/lib/design/system/rules/token-selectors.js +10 -3
  388. package/src/lib/design/system/rules/token-selectors.js.map +1 -1
  389. package/src/lib/design/system/rules/unbound-input-known.d.ts +2 -0
  390. package/src/lib/design/system/rules/unbound-input-known.js +3 -6
  391. package/src/lib/design/system/rules/unbound-input-known.js.map +1 -1
  392. package/src/lib/design/system/rules/unbound-input.d.ts +2 -0
  393. package/src/lib/design/system/rules/unbound-input.js +12 -6
  394. package/src/lib/design/system/rules/unbound-input.js.map +1 -1
  395. package/src/lib/design/system/rules/undefined-class.js +11 -2
  396. package/src/lib/design/system/rules/undefined-class.js.map +1 -1
  397. package/src/lib/design/system/rules/utility-css.js +13 -1
  398. package/src/lib/design/system/rules/utility-css.js.map +1 -1
  399. package/src/lib/design/system/rules/visible-change.d.ts +1 -2
  400. package/src/lib/design/system/rules/visible-change.js +3 -3
  401. package/src/lib/design/system/rules/visible-change.js.map +1 -1
  402. package/src/lib/design/system/sdk-declarations.d.ts +10 -0
  403. package/src/lib/design/system/sdk-declarations.js +177 -0
  404. package/src/lib/design/system/sdk-declarations.js.map +1 -0
  405. package/src/lib/design/system/sdk-selectors.d.ts +18 -0
  406. package/src/lib/design/system/sdk-selectors.js +131 -0
  407. package/src/lib/design/system/sdk-selectors.js.map +1 -0
  408. package/src/lib/design/system/served-cache.d.ts +99 -0
  409. package/src/lib/design/system/served-cache.js +202 -0
  410. package/src/lib/design/system/served-cache.js.map +1 -0
  411. package/src/lib/design/system/settled-panes.d.ts +8 -3
  412. package/src/lib/design/system/settled-panes.js +10 -9
  413. package/src/lib/design/system/settled-panes.js.map +1 -1
  414. package/src/lib/design/system/sketch/baseline.d.ts +17 -1
  415. package/src/lib/design/system/sketch/baseline.js +48 -7
  416. package/src/lib/design/system/sketch/baseline.js.map +1 -1
  417. package/src/lib/design/system/sketch/check-format.js +3 -9
  418. package/src/lib/design/system/sketch/check-format.js.map +1 -1
  419. package/src/lib/design/system/sketch/clean-copy.d.ts +18 -0
  420. package/src/lib/design/system/sketch/clean-copy.js +104 -0
  421. package/src/lib/design/system/sketch/clean-copy.js.map +1 -0
  422. package/src/lib/design/system/sketch/cli-args.d.ts +1 -1
  423. package/src/lib/design/system/sketch/cli-args.js +2 -2
  424. package/src/lib/design/system/sketch/cli-args.js.map +1 -1
  425. package/src/lib/design/system/sketch/covered-diffs.d.ts +40 -0
  426. package/src/lib/design/system/sketch/covered-diffs.js +106 -0
  427. package/src/lib/design/system/sketch/covered-diffs.js.map +1 -0
  428. package/src/lib/design/system/sketch/edit-sketch.d.ts +14 -6
  429. package/src/lib/design/system/sketch/edit-sketch.js +87 -35
  430. package/src/lib/design/system/sketch/edit-sketch.js.map +1 -1
  431. package/src/lib/design/system/sketch/identical-renders.js +20 -14
  432. package/src/lib/design/system/sketch/identical-renders.js.map +1 -1
  433. package/src/lib/design/system/sketch/merge-commit.d.ts +20 -0
  434. package/src/lib/design/system/sketch/merge-commit.js +72 -0
  435. package/src/lib/design/system/sketch/merge-commit.js.map +1 -0
  436. package/src/lib/design/system/sketch/merge-runner.d.ts +20 -0
  437. package/src/lib/design/system/sketch/merge-runner.js +73 -0
  438. package/src/lib/design/system/sketch/merge-runner.js.map +1 -0
  439. package/src/lib/design/system/sketch/merge-step.d.ts +14 -2
  440. package/src/lib/design/system/sketch/merge-step.js +24 -12
  441. package/src/lib/design/system/sketch/merge-step.js.map +1 -1
  442. package/src/lib/design/system/sketch/merge-worker.d.ts +1 -0
  443. package/src/lib/design/system/sketch/merge-worker.js +14 -0
  444. package/src/lib/design/system/sketch/merge-worker.js.map +1 -0
  445. package/src/lib/design/system/sketch/merge.d.ts +10 -3
  446. package/src/lib/design/system/sketch/merge.js +180 -90
  447. package/src/lib/design/system/sketch/merge.js.map +1 -1
  448. package/src/lib/design/system/sketch/merged-parts.d.ts +0 -29
  449. package/src/lib/design/system/sketch/merged-parts.js +8 -56
  450. package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
  451. package/src/lib/design/system/sketch/note-language.d.ts +7 -0
  452. package/src/lib/design/system/sketch/note-language.js +83 -0
  453. package/src/lib/design/system/sketch/note-language.js.map +1 -0
  454. package/src/lib/design/system/sketch/part-definition.d.ts +6 -0
  455. package/src/lib/design/system/sketch/part-definition.js +31 -1
  456. package/src/lib/design/system/sketch/part-definition.js.map +1 -1
  457. package/src/lib/design/system/sketch/rebase-port.js +47 -2
  458. package/src/lib/design/system/sketch/rebase-port.js.map +1 -1
  459. package/src/lib/design/system/sketch/sketch-check-cache.d.ts +11 -0
  460. package/src/lib/design/system/sketch/sketch-check-cache.js +22 -0
  461. package/src/lib/design/system/sketch/sketch-check-cache.js.map +1 -0
  462. package/src/lib/design/system/sketch/sketch-check-worker.js +6 -1
  463. package/src/lib/design/system/sketch/sketch-check-worker.js.map +1 -1
  464. package/src/lib/design/system/sketch/sketch-checker.d.ts +14 -1
  465. package/src/lib/design/system/sketch/sketch-checker.js +16 -6
  466. package/src/lib/design/system/sketch/sketch-checker.js.map +1 -1
  467. package/src/lib/design/system/sketch/sketch.d.ts +37 -6
  468. package/src/lib/design/system/sketch/sketch.js +101 -13
  469. package/src/lib/design/system/sketch/sketch.js.map +1 -1
  470. package/src/lib/design/system/sketch/stale-base.js +1 -1
  471. package/src/lib/design/system/sketch/stale-base.js.map +1 -1
  472. package/src/lib/design/system/sketch/unchanged-states.d.ts +7 -3
  473. package/src/lib/design/system/sketch/unchanged-states.js +25 -12
  474. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
  475. package/src/lib/design/system/sketch/viewed-shots.d.ts +10 -2
  476. package/src/lib/design/system/sketch/viewed-shots.js +15 -22
  477. package/src/lib/design/system/sketch/viewed-shots.js.map +1 -1
  478. package/src/lib/design/system/skip-classes.d.ts +3 -0
  479. package/src/lib/design/system/skip-classes.js +17 -0
  480. package/src/lib/design/system/skip-classes.js.map +1 -0
  481. package/src/lib/design/system/slot-hosts.d.ts +38 -0
  482. package/src/lib/design/system/slot-hosts.js +93 -0
  483. package/src/lib/design/system/slot-hosts.js.map +1 -0
  484. package/src/lib/design/system/slow-checks.d.ts +4 -0
  485. package/src/lib/design/system/slow-checks.js +77 -24
  486. package/src/lib/design/system/slow-checks.js.map +1 -1
  487. package/src/lib/design/system/slow-run.d.ts +15 -5
  488. package/src/lib/design/system/slow-run.js +143 -84
  489. package/src/lib/design/system/slow-run.js.map +1 -1
  490. package/src/lib/design/system/stale-dist.d.ts +37 -1
  491. package/src/lib/design/system/stale-dist.js +58 -8
  492. package/src/lib/design/system/stale-dist.js.map +1 -1
  493. package/src/lib/design/system/stale-parts.d.ts +15 -0
  494. package/src/lib/design/system/stale-parts.js +67 -5
  495. package/src/lib/design/system/stale-parts.js.map +1 -1
  496. package/src/lib/design/system/system-command.js +3 -3
  497. package/src/lib/design/system/system-command.js.map +1 -1
  498. package/src/lib/design/system/system-modules.d.ts +4 -4
  499. package/src/lib/design/system/system-tsconfig.d.ts +9 -2
  500. package/src/lib/design/system/system-tsconfig.js +73 -13
  501. package/src/lib/design/system/system-tsconfig.js.map +1 -1
  502. package/src/lib/design/system/task-command.d.ts +3 -2
  503. package/src/lib/design/system/task-command.js +111 -73
  504. package/src/lib/design/system/task-command.js.map +1 -1
  505. package/src/lib/design/system/touched-parts.d.ts +1 -1
  506. package/src/lib/design/system/touched-parts.js +4 -5
  507. package/src/lib/design/system/touched-parts.js.map +1 -1
  508. package/src/lib/design/system/tracked-reads.d.ts +27 -0
  509. package/src/lib/design/system/tracked-reads.js +100 -0
  510. package/src/lib/design/system/tracked-reads.js.map +1 -0
  511. package/src/lib/design/system/unchanged-rows.d.ts +17 -8
  512. package/src/lib/design/system/unchanged-rows.js +90 -12
  513. package/src/lib/design/system/unchanged-rows.js.map +1 -1
  514. package/src/lib/design/system/uncommitted-decisions.d.ts +0 -2
  515. package/src/lib/design/system/uncommitted-decisions.js +3 -6
  516. package/src/lib/design/system/uncommitted-decisions.js.map +1 -1
  517. package/src/lib/design/system/visible-change-command.d.ts +13 -1
  518. package/src/lib/design/system/visible-change-command.js +10 -8
  519. package/src/lib/design/system/visible-change-command.js.map +1 -1
  520. package/src/lib/design/system/visible-change-parts.d.ts +1 -1
  521. package/src/lib/design/system/write-origin.d.ts +12 -0
  522. package/src/lib/design/system/write-origin.js +18 -0
  523. package/src/lib/design/system/write-origin.js.map +1 -0
  524. package/src/lib/design/system-use.js +4 -4
  525. package/src/lib/design/system-use.js.map +1 -1
  526. package/src/lib/design/thumb.d.ts +19 -3
  527. package/src/lib/design/thumb.js +71 -9
  528. package/src/lib/design/thumb.js.map +1 -1
  529. package/src/lib/design/timings-command.d.ts +22 -0
  530. package/src/lib/design/timings-command.js +175 -0
  531. package/src/lib/design/timings-command.js.map +1 -0
  532. package/src/lib/design/timings.d.ts +117 -0
  533. package/src/lib/design/timings.js +296 -0
  534. package/src/lib/design/timings.js.map +1 -0
  535. package/src/lib/design/typecheck.js +2 -2
  536. package/src/lib/design/typecheck.js.map +1 -1
  537. package/src/lib/design/vite-cache.d.ts +11 -0
  538. package/src/lib/design/vite-cache.js +61 -0
  539. package/src/lib/design/vite-cache.js.map +1 -0
  540. package/src/lib/design/warm-draw.d.ts +33 -0
  541. package/src/lib/design/warm-draw.js +74 -0
  542. package/src/lib/design/warm-draw.js.map +1 -0
  543. package/src/lib/design/warm-pages.d.ts +10 -2
  544. package/src/lib/design/warm-pages.js +6 -2
  545. package/src/lib/design/warm-pages.js.map +1 -1
  546. package/src/lib/design/work-root.d.ts +2 -0
  547. package/src/lib/design/work-root.js +8 -0
  548. package/src/lib/design/work-root.js.map +1 -0
  549. package/src/lib/plain-output.d.ts +27 -0
  550. package/src/lib/plain-output.js +66 -0
  551. package/src/lib/plain-output.js.map +1 -0
  552. package/src/lib/release.js +11 -3
  553. package/src/lib/release.js.map +1 -1
  554. package/src/lib/update/commits.js +2 -2
  555. package/src/lib/update/commits.js.map +1 -1
  556. package/src/lib/update/packages.js +4 -2
  557. package/src/lib/update/packages.js.map +1 -1
  558. package/src/lib/update/scan.js +8 -2
  559. package/src/lib/update/scan.js.map +1 -1
  560. package/src/lib/design/paths.js +0 -138
  561. package/src/lib/design/paths.js.map +0 -1
  562. package/src/lib/design/system/accept-command.d.ts +0 -41
  563. package/src/lib/design/system/accept-command.js +0 -139
  564. package/src/lib/design/system/accept-command.js.map +0 -1
  565. package/src/lib/design/system/go-batch.d.ts +0 -24
  566. package/src/lib/design/system/go-batch.js +0 -110
  567. package/src/lib/design/system/go-batch.js.map +0 -1
  568. package/src/lib/design/system/go-command.d.ts +0 -4
  569. package/src/lib/design/system/go-command.js +0 -64
  570. package/src/lib/design/system/go-command.js.map +0 -1
  571. package/src/lib/design/system/go-guard.d.ts +0 -26
  572. package/src/lib/design/system/go-guard.js +0 -70
  573. package/src/lib/design/system/go-guard.js.map +0 -1
  574. package/src/lib/design/system/go-step.d.ts +0 -13
  575. package/src/lib/design/system/go-step.js +0 -84
  576. package/src/lib/design/system/go-step.js.map +0 -1
  577. package/src/lib/design/system/part-go.d.ts +0 -70
  578. package/src/lib/design/system/part-go.js +0 -94
  579. package/src/lib/design/system/part-go.js.map +0 -1
  580. package/src/lib/design/system/tom-confirm.d.ts +0 -40
  581. package/src/lib/design/system/tom-confirm.js +0 -55
  582. package/src/lib/design/system/tom-confirm.js.map +0 -1
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.serveDesign = exports.createDesignServer = exports.installedRootsOf = exports.DESIGN_EVENTS_HEARTBEAT_MS = exports.sendHeldJson = exports.KEEP_ALIVE_MS = void 0;
12
+ exports.serveDesign = exports.createDesignServer = exports.installedRootsOf = exports.DELAY_FRAMES_ENV = exports.DESIGN_EVENTS_HEARTBEAT_MS = exports.sendHeldJson = exports.KEEP_ALIVE_MS = exports.registrySliceOf = void 0;
13
13
  const crypto_1 = require("crypto");
14
14
  const fs_1 = require("fs");
15
15
  const net_1 = require("net");
@@ -18,6 +18,7 @@ const path_1 = require("path");
18
18
  const rxjs_1 = require("rxjs");
19
19
  const calls_1 = require("./calls");
20
20
  const calls_tsconfig_1 = require("./calls-tsconfig");
21
+ const parent_watch_1 = require("./parent-watch");
21
22
  const legacy_1 = require("./legacy");
22
23
  const vite_paths_1 = require("./vite-paths");
23
24
  const studio_api_1 = require("./studio-api");
@@ -30,12 +31,17 @@ const generated_stylesheets_1 = require("./generated-stylesheets");
30
31
  const sketch_stylesheets_1 = require("./sketch-stylesheets");
31
32
  const draw_ledger_1 = require("./draw-ledger");
32
33
  const shot_1 = require("./shot");
34
+ const old_shot_folders_1 = require("./old-shot-folders");
33
35
  const shot_store_1 = require("./shot-store");
34
36
  const imports_1 = require("./system/imports");
37
+ const served_cache_1 = require("./system/served-cache");
35
38
  const changed_parts_1 = require("./changed-parts");
36
39
  const server_identity_1 = require("./server-identity");
37
40
  const stamp_1 = require("./stamp");
41
+ const code_hash_1 = require("./code-hash");
38
42
  const list_system_1 = require("./system/list-system");
43
+ const stale_dist_1 = require("./system/stale-dist");
44
+ const check_system_1 = require("./system/check-system");
39
45
  const resolve_product_1 = require("./system/resolve-product");
40
46
  const system_modules_1 = require("./system/system-modules");
41
47
  const kit_1 = require("./system/kit");
@@ -44,9 +50,13 @@ const sketch_1 = require("./system/sketch/sketch");
44
50
  const sketch_checker_1 = require("./system/sketch/sketch-checker");
45
51
  const unchanged_states_1 = require("./system/sketch/unchanged-states");
46
52
  const inventory_1 = require("./system/inventory");
53
+ const shot_board_1 = require("./shot-board");
47
54
  const thumb_1 = require("./thumb");
48
55
  const motion_endpoint_1 = require("./motion-endpoint");
49
- const paths_1 = require("./paths");
56
+ const package_root_1 = require("./package-root");
57
+ const vite_cache_1 = require("./vite-cache");
58
+ const work_root_1 = require("./work-root");
59
+ const design_config_1 = require("./design-config");
50
60
  const slow_run_1 = require("./system/slow-run");
51
61
  const build_watch_1 = require("./build-watch");
52
62
  const VIRTUAL = 'virtual:design-explore';
@@ -54,7 +64,7 @@ const REBUILD_SETTLE_MS = 300;
54
64
  /** What a slug says about which project drew it: its first segment. */
55
65
  const projectOf = (slug) => { var _a; return (_a = slug.split('/')[0]) !== null && _a !== void 0 ? _a : ''; };
56
66
  const registry = (target) => {
57
- const root = (0, paths_1.callsRootOf)(target);
67
+ const root = (0, design_config_1.callsRootOf)(target);
58
68
  const entries = (0, calls_1.callSlugsOf)(target).map((slug) => [slug, (0, vite_paths_1.fsUrl)((0, path_1.resolve)(root, slug, 'call.ts'))]);
59
69
  return `export const calls = {\n${entries
60
70
  .map(([slug, url]) => ` ${JSON.stringify(slug)}: () => import(${JSON.stringify(url)}),`)
@@ -189,6 +199,37 @@ const systemRegistry = (system) => `export const parts = {\n${system
189
199
  .products()
190
200
  .map((product) => ` ${JSON.stringify(product)}: {\n${sketchRegistry(system, product)}\n },`)
191
201
  .join('\n')}\n};\n${tokensRegistry(system)}`;
202
+ /**
203
+ * The entries of the env and system modules that a frame with the search params `query` can read: its product's parts,
204
+ * tokens and stylesheets, and those of the sketch variants it names; a call frame's project stylesheets and themes.
205
+ */
206
+ const registrySliceOf = (options) => {
207
+ var _a, _b, _c, _d, _e, _f;
208
+ const { target, config, system, query } = options;
209
+ const product = query.get('product');
210
+ if (!product) {
211
+ const project = projectOf((_a = query.get('call')) !== null && _a !== void 0 ? _a : '');
212
+ const entry = (_b = config.projects) === null || _b === void 0 ? void 0 : _b[project];
213
+ return `project ${JSON.stringify(project)}\n${entry ? stylesLoaderOf({ target, entry }) : 'none'}\n${themesOfSettings(entry ? { [project]: entry } : {})}\n`;
214
+ }
215
+ const entry = (_c = config.products) === null || _c === void 0 ? void 0 : _c[product];
216
+ const sketchOf = (part, variant) => part ? { target: part, variant: variant !== null && variant !== void 0 ? variant : '' } : null;
217
+ const sketch = sketchOf(query.get('sketch'), query.get('variant'));
218
+ const named = [sketch, sketchOf(query.get('props'), query.get('props-variant'))].filter((named) => named !== null);
219
+ const listed = system.sketchesOf(product);
220
+ const sketchStyles = sketch && entry && system.replacedStylesheetsOf({ product, sketch }).size > 0
221
+ ? stylesLoaderOf({ target, entry, product, sketch })
222
+ : 'none';
223
+ return [
224
+ `product ${JSON.stringify(product)}`,
225
+ partsRegistry({ parts: (_e = (_d = system.productOf(product)) === null || _d === void 0 ? void 0 : _d.parts) !== null && _e !== void 0 ? _e : [], product, indent: '' }),
226
+ ...named.map((variant) => { var _a, _b; return `sketch ${JSON.stringify(variant)} ${listed.some(({ target: part, variants }) => part === variant.target && variants.includes(variant.variant))}\n${partsRegistry({ parts: (_b = (_a = system.drawnOf(product, variant)) === null || _a === void 0 ? void 0 : _a.parts) !== null && _b !== void 0 ? _b : [], product, sketch: variant, indent: '' })}`; }),
227
+ `tokens ${(_f = tokensLoaderOf({ system, product, sketch: sketch !== null && sketch !== void 0 ? sketch : undefined })) !== null && _f !== void 0 ? _f : 'none'}`,
228
+ `styles ${entry ? stylesLoaderOf({ target, entry, product }) : 'none'} ${sketchStyles}`,
229
+ '',
230
+ ].join('\n');
231
+ };
232
+ exports.registrySliceOf = registrySliceOf;
192
233
  const sendJson = (response, answer) => {
193
234
  response.setHeader('access-control-allow-origin', '*');
194
235
  (0, thumb_1.send)(response, { status: answer.status, type: 'application/json', body: JSON.stringify(answer.body) });
@@ -230,6 +271,13 @@ const isSketchFile = (designRoot, file) => {
230
271
  };
231
272
  // Workaround: WebKit drops an event stream that sends nothing for 60 seconds.
232
273
  exports.DESIGN_EVENTS_HEARTBEAT_MS = 20000;
274
+ /** Test tooling: when set to a whole number of ms, every `/frame.html` document waits that long before it is served. */
275
+ exports.DELAY_FRAMES_ENV = 'ETHLETE_DESIGN_DELAY_FRAMES_MS';
276
+ const frameDelayMsOf = () => {
277
+ var _a;
278
+ const ms = Number((_a = process.env[exports.DELAY_FRAMES_ENV]) !== null && _a !== void 0 ? _a : 0);
279
+ return Number.isInteger(ms) && ms > 0 ? ms : 0;
280
+ };
233
281
  /**
234
282
  * A server-sent event stream for Studio: `comments`, `notes`, `flows`, `calls` and `sketches` when a file of that
235
283
  * kind changed, and `parts` with the parts a design system change redraws and the revision it gave them. A `parts`
@@ -298,6 +346,7 @@ const shotStoreOf = (options) => {
298
346
  return (0, shot_store_1.createShotStore)({
299
347
  dir,
300
348
  salt,
349
+ checkout: target,
301
350
  inputsOf: (address) => {
302
351
  var _a, _b;
303
352
  const { product, part } = address;
@@ -319,15 +368,15 @@ const shotStoreOf = (options) => {
319
368
  ...((_a = entry.generated) !== null && _a !== void 0 ? _a : []).flatMap((generated) => { var _a, _b; return (_b = (_a = system.partOf({ product, part: generated.part, sketch })) === null || _a === void 0 ? void 0 : _a.css) !== null && _b !== void 0 ? _b : []; }),
320
369
  ];
321
370
  });
322
- // The snapshot folder is named after the server's pid, so its files are gone after a restart; the salt's build stamp covers them.
323
- const snapshot = (0, path_1.dirname)((0, paths_1.assetRoot)());
371
+ // The snapshot folder is named after the server's pid, so its files are gone after a restart; the salt's asset hash covers them.
372
+ const snapshots = [...new Set([(0, path_1.dirname)((0, package_root_1.assetRoot)()), (0, fs_1.realpathSync)((0, path_1.dirname)((0, package_root_1.assetRoot)()))])];
324
373
  return [
325
374
  ...(0, shot_1.dependencyFilesOf)([...roots.flatMap((root) => root !== null && root !== void 0 ? root : []), ...styles], stylesheetImports),
326
375
  ...read,
327
- (0, paths_1.configPathOf)(target),
376
+ (0, design_config_1.configPathOf)(target),
328
377
  (0, path_1.resolve)(target, 'tsconfig.base.json'),
329
378
  ...(entry.head ? [(0, path_1.resolve)(target, entry.head)] : []),
330
- ].filter((file) => !isInside(snapshot, (0, path_1.resolve)(file)));
379
+ ].filter((file) => !snapshots.some((snapshot) => isInside(snapshot, (0, path_1.resolve)(file))));
331
380
  },
332
381
  scopeOf: (address) => JSON.stringify(drawnSystemsOf(address).map((sketch) => {
333
382
  const drawn = system.drawnOf(address.product, sketch);
@@ -397,14 +446,14 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
397
446
  /** The registries are built once per load, so a new call or part folder is invisible until it is invalidated. */
398
447
  configureServer: (vite) => {
399
448
  var _a, _b, _c;
400
- const callsRoot = (0, paths_1.callsRootOf)(target);
401
- const designRoot = (0, path_1.resolve)(target, paths_1.DESIGN_DIR);
449
+ const callsRoot = (0, design_config_1.callsRootOf)(target);
450
+ const designRoot = (0, path_1.resolve)(target, design_config_1.DESIGN_DIR);
402
451
  const stamp = (0, stamp_1.buildStampOf)();
403
452
  const identityOf = (0, server_identity_1.serverIdentityOf)(target);
404
453
  const base = () => {
405
454
  var _a;
406
455
  const address = (_a = vite.httpServer) === null || _a === void 0 ? void 0 : _a.address();
407
- return `http://localhost:${address && typeof address === 'object' ? address.port : (0, paths_1.portOf)(config)}`;
456
+ return `http://localhost:${address && typeof address === 'object' ? address.port : (0, design_config_1.portOf)(config)}`;
408
457
  };
409
458
  const ledger = (0, draw_ledger_1.createDrawLedger)(Date.now, ({ sketch }) => {
410
459
  const drawn = sketch && system.drawnOf(sketch.product, sketch);
@@ -413,10 +462,16 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
413
462
  const thumbs = (0, thumb_1.createThumbnailer)({ target, base, ledger });
414
463
  const inventoryDraws = (0, thumb_1.createDrawQueue)({ target, ledger });
415
464
  const sketchChecker = checkSketches ? undefined : (0, sketch_checker_1.createSketchChecker)();
465
+ const ruleChecker = checkSketches ? undefined : (0, sketch_checker_1.createSketchChecker)();
466
+ const events = createDesignEvents();
467
+ let revision = 0;
416
468
  const shots = (0, shot_1.createPartShooter)(Object.assign(Object.assign({ target,
417
469
  base,
418
470
  ledger,
419
- system }, (shotCacheDir
471
+ system, changed: (part) => {
472
+ revision += 1;
473
+ events.signal('parts', { revision, all: false, parts: [part] });
474
+ } }, (shotCacheDir
420
475
  ? {
421
476
  store: shotStoreOf({
422
477
  target,
@@ -424,7 +479,7 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
424
479
  system,
425
480
  stylesheetImports,
426
481
  dir: shotCacheDir,
427
- salt: `${stamp.version} ${stamp.build}`,
482
+ salt: (0, code_hash_1.designPictureCodeOf)(),
428
483
  moduleById: (id) => vite.moduleGraph.getModuleById(id),
429
484
  }),
430
485
  }
@@ -455,8 +510,6 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
455
510
  thumbs.forget((0, path_1.relative)(callsRoot, file));
456
511
  shots.forgetCalls((0, path_1.relative)(callsRoot, file));
457
512
  };
458
- const events = createDesignEvents();
459
- let revision = 0;
460
513
  const redraw = (change, listed = false) => {
461
514
  if (!change.all && change.parts.length === 0 && !change.errored) {
462
515
  if (listed)
@@ -464,9 +517,10 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
464
517
  return;
465
518
  }
466
519
  revision += 1;
467
- (0, unchanged_states_1.forgetUnchangedStates)();
520
+ (0, unchanged_states_1.forgetUnchangedStates)(change);
521
+ (0, studio_api_1.detachRunningListings)();
468
522
  if (change.all)
469
- shots.clear();
523
+ shots.clear({ announced: true });
470
524
  else
471
525
  shots.forget(change);
472
526
  events.signal('parts', Object.assign({ revision }, change));
@@ -475,19 +529,21 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
475
529
  if (hot) {
476
530
  const send = hot.send.bind(hot);
477
531
  hot.send = (payload, data) => {
532
+ var _a, _b;
478
533
  // HMR is disabled: Studio must replace frames when Vite invalidates optimized dependency URLs.
479
534
  if (typeof payload === 'object' && payload.type === 'full-reload') {
535
+ console.error(`[design] vite full-reload: ${(_b = (_a = payload.triggeredBy) !== null && _a !== void 0 ? _a : payload.path) !== null && _b !== void 0 ? _b : 'no path'}`);
480
536
  thumbs.clear();
481
537
  redraw(changed_parts_1.ALL_PARTS);
482
538
  }
483
539
  return typeof payload === 'string' ? send(payload, data) : send(payload);
484
540
  };
485
541
  }
486
- const configPath = (0, paths_1.configPathOf)(target);
542
+ const configPath = (0, design_config_1.configPathOf)(target);
487
543
  const reloadConfig = () => {
488
544
  let next;
489
545
  try {
490
- next = (0, paths_1.readConfig)(target);
546
+ next = (0, design_config_1.readConfig)(target);
491
547
  }
492
548
  catch (error) {
493
549
  console.error(`design-explore: ${configPath} is invalid, keeping the last good config (${error instanceof Error ? error.message : String(error)})`);
@@ -505,14 +561,16 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
505
561
  };
506
562
  const reloadFlows = () => {
507
563
  thumbs.clear();
508
- shots.clear();
564
+ shots.clear({ announced: false });
509
565
  events.signal('flows');
510
566
  };
511
567
  const signalLists = (file) => {
512
568
  if (isInside(callsRoot, file))
513
569
  events.signal('calls');
514
- else if (isSketchFile(designRoot, file))
570
+ else if (isSketchFile(designRoot, file)) {
571
+ (0, studio_api_1.detachRunningListings)();
515
572
  events.signal('sketches');
573
+ }
516
574
  };
517
575
  const isSystemFile = (file) => !isInside(callsRoot, file) &&
518
576
  !isSketchFile(designRoot, file) &&
@@ -600,15 +658,34 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
600
658
  }));
601
659
  void (held ? (0, exports.sendHeldJson)(response, answered) : answered.then((answer) => sendJson(response, answer)));
602
660
  };
661
+ const frameDelayMs = frameDelayMsOf();
662
+ if (frameDelayMs)
663
+ vite.middlewares.use('/frame.html', (...[, , next]) => (0, rxjs_1.timer)(frameDelayMs)
664
+ .pipe((0, rxjs_1.tap)(() => next()))
665
+ .subscribe());
603
666
  vite.middlewares.use(stamp_1.STAMP_PATH, (_request, response) => {
604
667
  response.setHeader('content-type', 'application/json');
605
668
  response.end(JSON.stringify(Object.assign(Object.assign({}, stamp), identityOf())));
606
669
  });
607
670
  vite.middlewares.use(draw_ledger_1.QUEUE_PATH, (_request, response) => sendJson(response, { status: 200, body: ledger.report() }));
608
671
  vite.middlewares.use(render_1.RENDER_PATH, (0, render_1.renderMiddleware)(renderer));
672
+ vite.middlewares.use(served_cache_1.REGISTRY_SLICE_PATH, (request, response) => {
673
+ var _a;
674
+ return (0, thumb_1.send)(response, {
675
+ status: 200,
676
+ type: 'text/plain',
677
+ body: (0, exports.registrySliceOf)({
678
+ target,
679
+ config,
680
+ system,
681
+ query: new URL((_a = request.url) !== null && _a !== void 0 ? _a : '', 'http://localhost').searchParams,
682
+ }),
683
+ });
684
+ });
609
685
  vite.middlewares.use(render_1.FORCE_PATH, render_1.forceMiddleware);
610
686
  vite.middlewares.use(thumb_1.THUMB_PATH, thumbs.middleware);
611
687
  vite.middlewares.use(shot_1.SHOT_PATH, shots.middleware);
688
+ vite.middlewares.use(shot_board_1.SHOT_VIEW_PATH, shots.viewMiddleware);
612
689
  vite.middlewares.use(studio_api_1.MOTION_PATH, (0, motion_endpoint_1.motionMiddleware)({
613
690
  system,
614
691
  motionOf: shots.motionOf,
@@ -630,12 +707,13 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
630
707
  const asked = url.searchParams.get('product');
631
708
  if (asked && !((_a = config.products) === null || _a === void 0 ? void 0 : _a[asked]))
632
709
  return { status: 404, body: { error: `no product "${asked}"` } };
633
- const products = yield (0, list_system_1.listSystem)({
634
- target,
635
- system,
636
- products: asked ? [asked] : system.products(),
637
- load: ({ file, product }) => vite.ssrLoadModule((0, system_modules_1.productModuleIdOf)({ file, product })),
638
- });
710
+ const missing = (0, stale_dist_1.missingDistOf)({ target, config });
711
+ if (missing.length > 0)
712
+ return { status: 503, body: { error: `missing build: ${missing.join('; ')}` } };
713
+ const products = yield (0, list_system_1.listSystem)(Object.assign({ target,
714
+ system, products: asked ? [asked] : system.products(), load: ({ file, product }) => vite.ssrLoadModule((0, system_modules_1.productModuleIdOf)({ file, product })) }, (ruleChecker && {
715
+ problemsOf: (name, product) => ruleChecker.rules({ target, product: name }).catch(() => (0, check_system_1.ruleProblemsOf)(product)),
716
+ })));
639
717
  return { status: 200, body: products };
640
718
  })));
641
719
  vite.middlewares.use(product_command_1.PRODUCT_PATH, answer((_url_1, _a) => __awaiter(void 0, [_url_1, _a], void 0, function* (_url, { request }) {
@@ -702,15 +780,19 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
702
780
  studio(studio_api_1.INVENTORY_PATH, studio_api_1.inventoryAnswer);
703
781
  studio(studio_api_1.INVENTORY_APPROVE_PATH, studio_api_1.inventoryApproveAnswer);
704
782
  studio(studio_api_1.OPEN_POINTS_PATH, studio_api_1.openPointsAnswer);
705
- studio(studio_api_1.PART_GO_PATH, studio_api_1.partGoAnswer);
706
- studio(studio_api_1.PART_ACCEPT_PATH, studio_api_1.partAcceptAnswer);
707
783
  studio(studio_api_1.EXCEPTIONS_PATH, studio_api_1.exceptionsAnswer);
708
784
  studio(studio_api_1.EXCEPTION_APPROVE_PATH, studio_api_1.exceptionApproveAnswer);
709
785
  vite.middlewares.use(studio_api_1.COMMENT_EVENTS_PATH, events.middleware);
710
786
  (_c = vite.httpServer) === null || _c === void 0 ? void 0 : _c.on('close', () => {
711
787
  events.close();
712
788
  settling === null || settling === void 0 ? void 0 : settling.abort();
713
- void Promise.all([thumbs.close(), shots.close(), inventoryDraws.close(), sketchChecker === null || sketchChecker === void 0 ? void 0 : sketchChecker.close()]);
789
+ void Promise.all([
790
+ thumbs.close(),
791
+ shots.close(),
792
+ inventoryDraws.close(),
793
+ sketchChecker === null || sketchChecker === void 0 ? void 0 : sketchChecker.close(),
794
+ ruleChecker === null || ruleChecker === void 0 ? void 0 : ruleChecker.close(),
795
+ ]);
714
796
  });
715
797
  vite.watcher.add([designRoot, ...baseDirs, ...packageDirs()]);
716
798
  vite.watcher.on('add', (file) => (isPackageFile(file) ? packageChanged(file) : refresh(file)));
@@ -764,7 +846,7 @@ const createDesignServer = (options) => __awaiter(void 0, void 0, void 0, functi
764
846
  process.chdir(target);
765
847
  const { createServer } = yield import('vite');
766
848
  const { default: tailwind } = yield import('@tailwindcss/postcss');
767
- const here = (0, paths_1.assetRoot)();
849
+ const here = (0, package_root_1.assetRoot)();
768
850
  const system = (0, system_modules_1.createSystemModules)({ target, config, sketchesRoot });
769
851
  const generatedStylesheetsOf = (0, generated_stylesheets_1.createGeneratedStylesheets)({ target, config, system });
770
852
  if (listen) {
@@ -776,7 +858,9 @@ const createDesignServer = (options) => __awaiter(void 0, void 0, void 0, functi
776
858
  }
777
859
  const baseDirs = system.products().flatMap((name) => { var _a, _b, _c; return (_c = (_b = (_a = system.productOf(name)) === null || _a === void 0 ? void 0 : _a.base) === null || _b === void 0 ? void 0 : _b.dir) !== null && _c !== void 0 ? _c : []; });
778
860
  const stylesheetImports = new Map();
779
- const cache = listen && !own ? null : (0, paths_1.claimViteCache)(target, 'vite-check');
861
+ const cache = listen && !own ? null : (0, vite_cache_1.claimViteCache)(target, 'vite-check');
862
+ if (listen && !own)
863
+ void (0, old_shot_folders_1.removeOldShotFolders)((0, work_root_1.workRootOf)(target));
780
864
  const server = yield createServer(Object.assign(Object.assign(Object.assign({ configFile: false, root: (0, path_1.resolve)(here, 'web'),
781
865
  // Every drawing is ruled under Tailwind 4, whatever the checkout installs. The tool brings its
782
866
  // own pipeline so no checkout's postcss config reaches a drawing.
@@ -793,7 +877,7 @@ const createDesignServer = (options) => __awaiter(void 0, void 0, void 0, functi
793
877
  (0, shot_1.stylesheetImportsPlugin)(stylesheetImports),
794
878
  ],
795
879
  },
796
- }, cacheDir: (_a = cache === null || cache === void 0 ? void 0 : cache.dir) !== null && _a !== void 0 ? _a : (0, paths_1.viteCacheOf)(target, 'vite'), resolve: {
880
+ }, cacheDir: (_a = cache === null || cache === void 0 ? void 0 : cache.dir) !== null && _a !== void 0 ? _a : (0, vite_cache_1.viteCacheOf)(target, 'vite'), resolve: {
797
881
  alias: [
798
882
  { find: /^@design-explore$/, replacement: (0, path_1.resolve)(here, 'define-call.ts') },
799
883
  { find: new RegExp(`^${system_tsconfig_1.DESIGN_SYSTEM_SPECIFIER}$`), replacement: (0, path_1.resolve)(here, 'define-part.ts') },
@@ -812,13 +896,13 @@ const createDesignServer = (options) => __awaiter(void 0, void 0, void 0, functi
812
896
  config,
813
897
  system,
814
898
  stylesheetImports,
815
- shotCacheDir: listen && !own ? (0, paths_1.viteCacheOf)(target, 'shots') : null,
899
+ shotCacheDir: listen && !own ? (0, path_1.resolve)((0, work_root_1.workRootOf)(target), shot_store_1.SHOT_STORE_DIR) : null,
816
900
  checkSketches,
817
901
  }),
818
902
  ] }, (listen ? {} : { appType: 'custom' })), (listen && !own ? {} : { logLevel: 'error' })), { server: Object.assign(Object.assign({
819
903
  // Studio swaps a frame for a fresh one once it has painted; a Vite reload would blank every frame at once.
820
904
  hmr: false }, (listen
821
- ? Object.assign(Object.assign(Object.assign({ port: port !== null && port !== void 0 ? port : (0, paths_1.portOf)(config) }, (host ? { host } : {})), { strictPort: true }), (own ? { watch: null } : {})) : { middlewareMode: true, ws: false, watch: null })), {
905
+ ? Object.assign(Object.assign(Object.assign({ port: port !== null && port !== void 0 ? port : (0, design_config_1.portOf)(config) }, (host ? { host } : {})), { strictPort: !own }), (own ? { watch: null } : {})) : { middlewareMode: true, ws: false, watch: null })), {
822
906
  // The frame page lives inside this package, which is outside the checkout it draws. Vite
823
907
  // serves neither root unless both are allowed.
824
908
  fs: { allow: [target, here, ...baseDirs, ...(0, exports.installedRootsOf)(target)] } }) }));
@@ -831,9 +915,28 @@ const createDesignServer = (options) => __awaiter(void 0, void 0, void 0, functi
831
915
  throw error;
832
916
  throw new Error(`design-explore: cannot open a local port (${code}) - the environment forbids listening, so nothing was drawn. This is a permission failure, not a drawing failure: run outside the sandbox.`);
833
917
  });
834
- return server;
918
+ return Object.assign(server, {
919
+ /** A disk store of this server's part pictures under `dir`; an entry is served while every file it was drawn from is unchanged. */
920
+ shotStore: (dir, salt) => {
921
+ return shotStoreOf({
922
+ target,
923
+ config,
924
+ system,
925
+ stylesheetImports,
926
+ dir,
927
+ salt: `${(0, code_hash_1.designPictureCodeOf)()} ${salt}`,
928
+ moduleById: (id) => server.moduleGraph.getModuleById(id),
929
+ });
930
+ },
931
+ /** Forgets every loaded part, sketch and module, so the next draw reads the files as they are now: a server started with `port` does not watch them. */
932
+ forgetDrawn: () => {
933
+ system.forget();
934
+ Object.values(server.environments).forEach((environment) => environment.moduleGraph.invalidateAll());
935
+ },
936
+ });
835
937
  });
836
938
  exports.createDesignServer = createDesignServer;
939
+ const exitWhenParentIsGone = (server) => (0, parent_watch_1.exitWhenParentGone)({ onGone: () => void server.close().finally(() => process.exit(0)) });
837
940
  const exitWhenStdinCloses = (server) => {
838
941
  let closing = false;
839
942
  const shutDown = () => {
@@ -846,7 +949,7 @@ const exitWhenStdinCloses = (server) => {
846
949
  process.stdin.once('close', shutDown);
847
950
  process.stdin.resume();
848
951
  };
849
- const installedStampOf = () => (0, stamp_1.buildStampOf)((0, paths_1.installedAssetRoot)()).build;
952
+ const installedStampOf = () => (0, stamp_1.buildStampOf)((0, package_root_1.installedAssetRoot)()).build;
850
953
  /**
851
954
  * Starts the design server for a checkout and keeps it running. The returned exit code is the
852
955
  * command's, not the server's: a listening server holds the process open on its own. With
@@ -855,14 +958,14 @@ const installedStampOf = () => (0, stamp_1.buildStampOf)((0, paths_1.installedAs
855
958
  */
856
959
  const serveDesign = (options) => __awaiter(void 0, void 0, void 0, function* () {
857
960
  const { target, host, reloadOnRebuild, checkSketches } = options;
858
- const config = (0, paths_1.readConfig)(target);
961
+ const config = (0, design_config_1.readConfig)(target);
859
962
  if (!config) {
860
- console.error(`design-explore: no config at ${(0, paths_1.configPathOf)(target)}`);
963
+ console.error(`design-explore: no config at ${(0, design_config_1.configPathOf)(target)}`);
861
964
  return 1;
862
965
  }
863
966
  const cwd = process.cwd();
864
967
  const served = reloadOnRebuild ? installedStampOf() : '';
865
- (0, paths_1.snapshotPackage)(target);
968
+ (0, package_root_1.snapshotPackage)(target);
866
969
  const ownedByStudio = process.env['ETHLETE_DESIGN_EXIT_ON_STDIN_CLOSE'] === '1';
867
970
  const portPinned = ownedByStudio || !!Number(process.env['DE_PORT']);
868
971
  const server = yield (0, exports.createDesignServer)({
@@ -876,27 +979,28 @@ const serveDesign = (options) => __awaiter(void 0, void 0, void 0, function* ()
876
979
  yield server.listen();
877
980
  console.log(`design-explore: drawing ${target}`);
878
981
  if (!portPinned) {
879
- console.log(`design-explore: not started by Studio, so it listens on a free port and leaves ${(0, paths_1.portOf)(config)} to Studio`);
982
+ console.log(`design-explore: not started by Studio, so it listens on a free port and leaves ${(0, design_config_1.portOf)(config)} to Studio`);
880
983
  }
881
984
  server.printUrls();
882
985
  if (process.env['ETHLETE_DESIGN_SLOW_CHECKS'] !== 'off')
883
986
  (0, slow_run_1.startSlowRunner)({
884
987
  target,
885
- configOf: () => (0, paths_1.readConfig)(target),
988
+ configOf: () => (0, design_config_1.readConfig)(target),
886
989
  log: (line) => console.log(`design-explore: ${line}`),
887
990
  });
888
991
  if (ownedByStudio) {
889
992
  exitWhenStdinCloses(server);
890
993
  }
994
+ exitWhenParentIsGone(server);
891
995
  if (reloadOnRebuild) {
892
996
  (0, build_watch_1.watchBuild)({
893
- root: (0, path_1.dirname)((0, paths_1.installedAssetRoot)()),
997
+ root: (0, path_1.dirname)((0, package_root_1.installedAssetRoot)()),
894
998
  served,
895
999
  stampOf: installedStampOf,
896
1000
  onRebuild: () => {
897
1001
  var _a;
898
1002
  const address = (_a = server.httpServer) === null || _a === void 0 ? void 0 : _a.address();
899
- const port = address && typeof address === 'object' ? address.port : (0, paths_1.portOf)(config);
1003
+ const port = address && typeof address === 'object' ? address.port : (0, design_config_1.portOf)(config);
900
1004
  console.log('design-explore: the cli was rebuilt, restarting the server from the new build');
901
1005
  void server
902
1006
  .close()