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

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 (557) hide show
  1. package/CHANGELOG.md +328 -0
  2. package/build-info.json +1 -0
  3. package/design/define-call.ts +72 -30
  4. package/design/define-part.ts +37 -4
  5. package/design/icon-sheet.ts +1 -1
  6. package/design/interaction-rows.ts +13 -6
  7. package/design/mark-part.ts +51 -1
  8. package/design/token-sheet.ts +1 -1
  9. package/design/web/frame-fit.ts +7 -0
  10. package/design/web/frame-surfaces.ts +294 -0
  11. package/design/web/frame.ts +41 -15
  12. package/design/web/surface-interactive.css +42 -0
  13. package/design/with-action.ts +29 -0
  14. package/package.json +3 -1
  15. package/src/index.js +9 -1
  16. package/src/index.js.map +1 -1
  17. package/src/lib/design/asset-shot.js +2 -2
  18. package/src/lib/design/asset-shot.js.map +1 -1
  19. package/src/lib/design/build-watch.d.ts +26 -0
  20. package/src/lib/design/build-watch.js +138 -0
  21. package/src/lib/design/build-watch.js.map +1 -0
  22. package/src/lib/design/check.js +142 -16
  23. package/src/lib/design/check.js.map +1 -1
  24. package/src/lib/design/commit-hunks.d.ts +22 -0
  25. package/src/lib/design/commit-hunks.js +173 -0
  26. package/src/lib/design/commit-hunks.js.map +1 -0
  27. package/src/lib/design/design-command.d.ts +2 -0
  28. package/src/lib/design/design-command.js +160 -11
  29. package/src/lib/design/design-command.js.map +1 -1
  30. package/src/lib/design/force-interactions.d.ts +1 -1
  31. package/src/lib/design/force-interactions.js +4 -2
  32. package/src/lib/design/force-interactions.js.map +1 -1
  33. package/src/lib/design/inbox-command.js +9 -5
  34. package/src/lib/design/inbox-command.js.map +1 -1
  35. package/src/lib/design/mcp-command.d.ts +5 -1
  36. package/src/lib/design/mcp-command.js +29 -11
  37. package/src/lib/design/mcp-command.js.map +1 -1
  38. package/src/lib/design/merge-compare.d.ts +10 -2
  39. package/src/lib/design/merge-compare.js +63 -11
  40. package/src/lib/design/merge-compare.js.map +1 -1
  41. package/src/lib/design/motion-command.js +1 -1
  42. package/src/lib/design/motion-command.js.map +1 -1
  43. package/src/lib/design/motion-shot.js +3 -2
  44. package/src/lib/design/motion-shot.js.map +1 -1
  45. package/src/lib/design/new-call.js +19 -10
  46. package/src/lib/design/new-call.js.map +1 -1
  47. package/src/lib/design/part-marks.d.ts +3 -2
  48. package/src/lib/design/part-marks.js +13 -5
  49. package/src/lib/design/part-marks.js.map +1 -1
  50. package/src/lib/design/paths.d.ts +28 -0
  51. package/src/lib/design/paths.js.map +1 -1
  52. package/src/lib/design/product-command.d.ts +1 -1
  53. package/src/lib/design/product-command.js +12 -14
  54. package/src/lib/design/product-command.js.map +1 -1
  55. package/src/lib/design/ready-shots.d.ts +29 -3
  56. package/src/lib/design/ready-shots.js +105 -5
  57. package/src/lib/design/ready-shots.js.map +1 -1
  58. package/src/lib/design/render-packages.d.ts +4 -17
  59. package/src/lib/design/render-packages.js +20 -63
  60. package/src/lib/design/render-packages.js.map +1 -1
  61. package/src/lib/design/render-worker.js +1 -3
  62. package/src/lib/design/render-worker.js.map +1 -1
  63. package/src/lib/design/render.d.ts +2 -0
  64. package/src/lib/design/render.js +32 -7
  65. package/src/lib/design/render.js.map +1 -1
  66. package/src/lib/design/serve.d.ts +21 -1
  67. package/src/lib/design/serve.js +133 -19
  68. package/src/lib/design/serve.js.map +1 -1
  69. package/src/lib/design/server-identity.d.ts +36 -0
  70. package/src/lib/design/server-identity.js +68 -0
  71. package/src/lib/design/server-identity.js.map +1 -0
  72. package/src/lib/design/settle-frames.d.ts +4 -0
  73. package/src/lib/design/settle-frames.js +22 -0
  74. package/src/lib/design/settle-frames.js.map +1 -0
  75. package/src/lib/design/shot-command.d.ts +25 -4
  76. package/src/lib/design/shot-command.js +132 -46
  77. package/src/lib/design/shot-command.js.map +1 -1
  78. package/src/lib/design/shot.d.ts +50 -0
  79. package/src/lib/design/shot.js +143 -17
  80. package/src/lib/design/shot.js.map +1 -1
  81. package/src/lib/design/sketch-command.d.ts +6 -1
  82. package/src/lib/design/sketch-command.js +358 -126
  83. package/src/lib/design/sketch-command.js.map +1 -1
  84. package/src/lib/design/stale-cli-dist.d.ts +11 -0
  85. package/src/lib/design/stale-cli-dist.js +56 -0
  86. package/src/lib/design/stale-cli-dist.js.map +1 -0
  87. package/src/lib/design/stamp.d.ts +18 -1
  88. package/src/lib/design/stamp.js +53 -7
  89. package/src/lib/design/stamp.js.map +1 -1
  90. package/src/lib/design/started-by-studio.d.ts +1 -0
  91. package/src/lib/design/started-by-studio.js +6 -0
  92. package/src/lib/design/started-by-studio.js.map +1 -0
  93. package/src/lib/design/studio-api.d.ts +27 -8
  94. package/src/lib/design/studio-api.js +263 -58
  95. package/src/lib/design/studio-api.js.map +1 -1
  96. package/src/lib/design/system/accept-command.d.ts +39 -5
  97. package/src/lib/design/system/accept-command.js +109 -25
  98. package/src/lib/design/system/accept-command.js.map +1 -1
  99. package/src/lib/design/system/accepted-pictures.d.ts +83 -0
  100. package/src/lib/design/system/accepted-pictures.js +324 -0
  101. package/src/lib/design/system/accepted-pictures.js.map +1 -0
  102. package/src/lib/design/system/action-lost.d.ts +59 -0
  103. package/src/lib/design/system/action-lost.js +120 -0
  104. package/src/lib/design/system/action-lost.js.map +1 -0
  105. package/src/lib/design/system/action-press.d.ts +23 -0
  106. package/src/lib/design/system/action-press.js +76 -0
  107. package/src/lib/design/system/action-press.js.map +1 -0
  108. package/src/lib/design/system/action-undeclared.d.ts +34 -0
  109. package/src/lib/design/system/action-undeclared.js +81 -0
  110. package/src/lib/design/system/action-undeclared.js.map +1 -0
  111. package/src/lib/design/system/actions-command.d.ts +101 -0
  112. package/src/lib/design/system/actions-command.js +695 -0
  113. package/src/lib/design/system/actions-command.js.map +1 -0
  114. package/src/lib/design/system/actions.d.ts +158 -0
  115. package/src/lib/design/system/actions.js +295 -0
  116. package/src/lib/design/system/actions.js.map +1 -0
  117. package/src/lib/design/system/app-files.d.ts +10 -0
  118. package/src/lib/design/system/app-files.js +159 -0
  119. package/src/lib/design/system/app-files.js.map +1 -0
  120. package/src/lib/design/system/bespoke-controls.d.ts +30 -0
  121. package/src/lib/design/system/bespoke-controls.js +147 -0
  122. package/src/lib/design/system/bespoke-controls.js.map +1 -0
  123. package/src/lib/design/system/build-ready-contract.d.ts +27 -0
  124. package/src/lib/design/system/build-ready-contract.js +12 -0
  125. package/src/lib/design/system/build-ready-contract.js.map +1 -0
  126. package/src/lib/design/system/check-rules.d.ts +1 -0
  127. package/src/lib/design/system/check-rules.js +82 -0
  128. package/src/lib/design/system/check-rules.js.map +1 -0
  129. package/src/lib/design/system/check-system.d.ts +61 -6
  130. package/src/lib/design/system/check-system.js +479 -68
  131. package/src/lib/design/system/check-system.js.map +1 -1
  132. package/src/lib/design/system/comments/comment.d.ts +4 -1
  133. package/src/lib/design/system/comments/comment.js +13 -4
  134. package/src/lib/design/system/comments/comment.js.map +1 -1
  135. package/src/lib/design/system/comments/inbox.js +2 -2
  136. package/src/lib/design/system/comments/inbox.js.map +1 -1
  137. package/src/lib/design/system/compare-command.d.ts +119 -0
  138. package/src/lib/design/system/compare-command.js +558 -0
  139. package/src/lib/design/system/compare-command.js.map +1 -0
  140. package/src/lib/design/system/complete-command.js +1 -1
  141. package/src/lib/design/system/complete-command.js.map +1 -1
  142. package/src/lib/design/system/complete.d.ts +32 -1
  143. package/src/lib/design/system/complete.js +144 -48
  144. package/src/lib/design/system/complete.js.map +1 -1
  145. package/src/lib/design/system/component-outputs.d.ts +20 -0
  146. package/src/lib/design/system/component-outputs.js +86 -0
  147. package/src/lib/design/system/component-outputs.js.map +1 -0
  148. package/src/lib/design/system/contrast-check.d.ts +1 -1
  149. package/src/lib/design/system/contrast-check.js +14 -3
  150. package/src/lib/design/system/contrast-check.js.map +1 -1
  151. package/src/lib/design/system/demo-backdrop.d.ts +11 -0
  152. package/src/lib/design/system/demo-backdrop.js +41 -0
  153. package/src/lib/design/system/demo-backdrop.js.map +1 -0
  154. package/src/lib/design/system/design-hash.d.ts +31 -0
  155. package/src/lib/design/system/design-hash.js +73 -0
  156. package/src/lib/design/system/design-hash.js.map +1 -0
  157. package/src/lib/design/system/disabled-interaction.d.ts +8 -0
  158. package/src/lib/design/system/disabled-interaction.js +37 -0
  159. package/src/lib/design/system/disabled-interaction.js.map +1 -0
  160. package/src/lib/design/system/dom-command.d.ts +36 -0
  161. package/src/lib/design/system/dom-command.js +175 -0
  162. package/src/lib/design/system/dom-command.js.map +1 -0
  163. package/src/lib/design/system/drawn-open-points.d.ts +25 -3
  164. package/src/lib/design/system/drawn-open-points.js +65 -14
  165. package/src/lib/design/system/drawn-open-points.js.map +1 -1
  166. package/src/lib/design/system/dropped-props.d.ts +25 -0
  167. package/src/lib/design/system/dropped-props.js +159 -0
  168. package/src/lib/design/system/dropped-props.js.map +1 -0
  169. package/src/lib/design/system/embedded-actions.d.ts +21 -0
  170. package/src/lib/design/system/embedded-actions.js +37 -0
  171. package/src/lib/design/system/embedded-actions.js.map +1 -0
  172. package/src/lib/design/system/exceptions.js +2 -1
  173. package/src/lib/design/system/exceptions.js.map +1 -1
  174. package/src/lib/design/system/flows/flow.js +2 -1
  175. package/src/lib/design/system/flows/flow.js.map +1 -1
  176. package/src/lib/design/system/frozen-animations.d.ts +13 -0
  177. package/src/lib/design/system/frozen-animations.js +51 -0
  178. package/src/lib/design/system/frozen-animations.js.map +1 -0
  179. package/src/lib/design/system/go-batch.d.ts +24 -0
  180. package/src/lib/design/system/go-batch.js +110 -0
  181. package/src/lib/design/system/go-batch.js.map +1 -0
  182. package/src/lib/design/system/go-command.d.ts +4 -0
  183. package/src/lib/design/system/go-command.js +64 -0
  184. package/src/lib/design/system/go-command.js.map +1 -0
  185. package/src/lib/design/system/go-guard.d.ts +26 -0
  186. package/src/lib/design/system/go-guard.js +70 -0
  187. package/src/lib/design/system/go-guard.js.map +1 -0
  188. package/src/lib/design/system/go-step.d.ts +13 -0
  189. package/src/lib/design/system/go-step.js +84 -0
  190. package/src/lib/design/system/go-step.js.map +1 -0
  191. package/src/lib/design/system/handoff.js +2 -1
  192. package/src/lib/design/system/handoff.js.map +1 -1
  193. package/src/lib/design/system/harness-build-cache.d.ts +35 -0
  194. package/src/lib/design/system/harness-build-cache.js +175 -0
  195. package/src/lib/design/system/harness-build-cache.js.map +1 -0
  196. package/src/lib/design/system/harness-command.d.ts +7 -0
  197. package/src/lib/design/system/harness-command.js +51 -0
  198. package/src/lib/design/system/harness-command.js.map +1 -0
  199. package/src/lib/design/system/harness-config.d.ts +9 -0
  200. package/src/lib/design/system/harness-config.js +65 -0
  201. package/src/lib/design/system/harness-config.js.map +1 -0
  202. package/src/lib/design/system/harness-map.d.ts +44 -0
  203. package/src/lib/design/system/harness-map.js +126 -0
  204. package/src/lib/design/system/harness-map.js.map +1 -0
  205. package/src/lib/design/system/harness-samples.d.ts +20 -0
  206. package/src/lib/design/system/harness-samples.js +92 -0
  207. package/src/lib/design/system/harness-samples.js.map +1 -0
  208. package/src/lib/design/system/harness-server.d.ts +40 -0
  209. package/src/lib/design/system/harness-server.js +296 -0
  210. package/src/lib/design/system/harness-server.js.map +1 -0
  211. package/src/lib/design/system/imports.js +14 -1
  212. package/src/lib/design/system/imports.js.map +1 -1
  213. package/src/lib/design/system/in-order-at-once.d.ts +6 -0
  214. package/src/lib/design/system/in-order-at-once.js +28 -0
  215. package/src/lib/design/system/in-order-at-once.js.map +1 -0
  216. package/src/lib/design/system/inventory-approval.js +2 -1
  217. package/src/lib/design/system/inventory-approval.js.map +1 -1
  218. package/src/lib/design/system/inventory.d.ts +13 -4
  219. package/src/lib/design/system/inventory.js +36 -7
  220. package/src/lib/design/system/inventory.js.map +1 -1
  221. package/src/lib/design/system/list-system.d.ts +4 -0
  222. package/src/lib/design/system/list-system.js +12 -3
  223. package/src/lib/design/system/list-system.js.map +1 -1
  224. package/src/lib/design/system/live-actions.d.ts +121 -0
  225. package/src/lib/design/system/live-actions.js +665 -0
  226. package/src/lib/design/system/live-actions.js.map +1 -0
  227. package/src/lib/design/system/live-compare.d.ts +136 -0
  228. package/src/lib/design/system/live-compare.js +441 -0
  229. package/src/lib/design/system/live-compare.js.map +1 -0
  230. package/src/lib/design/system/live-uncovered.d.ts +40 -0
  231. package/src/lib/design/system/live-uncovered.js +123 -0
  232. package/src/lib/design/system/live-uncovered.js.map +1 -0
  233. package/src/lib/design/system/nested-scroll.d.ts +7 -0
  234. package/src/lib/design/system/nested-scroll.js +25 -0
  235. package/src/lib/design/system/nested-scroll.js.map +1 -0
  236. package/src/lib/design/system/notes/note.js +2 -1
  237. package/src/lib/design/system/notes/note.js.map +1 -1
  238. package/src/lib/design/system/occluded.d.ts +13 -0
  239. package/src/lib/design/system/occluded.js +111 -0
  240. package/src/lib/design/system/occluded.js.map +1 -0
  241. package/src/lib/design/system/open-points.d.ts +24 -6
  242. package/src/lib/design/system/open-points.js +59 -30
  243. package/src/lib/design/system/open-points.js.map +1 -1
  244. package/src/lib/design/system/part-build-ready.d.ts +39 -0
  245. package/src/lib/design/system/part-build-ready.js +107 -0
  246. package/src/lib/design/system/part-build-ready.js.map +1 -0
  247. package/src/lib/design/system/part-command.js +2 -9
  248. package/src/lib/design/system/part-command.js.map +1 -1
  249. package/src/lib/design/system/part-compare.d.ts +123 -0
  250. package/src/lib/design/system/part-compare.js +396 -0
  251. package/src/lib/design/system/part-compare.js.map +1 -0
  252. package/src/lib/design/system/part-go.d.ts +70 -0
  253. package/src/lib/design/system/part-go.js +94 -0
  254. package/src/lib/design/system/part-go.js.map +1 -0
  255. package/src/lib/design/system/part-ready.d.ts +44 -6
  256. package/src/lib/design/system/part-ready.js +88 -17
  257. package/src/lib/design/system/part-ready.js.map +1 -1
  258. package/src/lib/design/system/part-task.d.ts +147 -0
  259. package/src/lib/design/system/part-task.js +285 -0
  260. package/src/lib/design/system/part-task.js.map +1 -0
  261. package/src/lib/design/system/pointer-focus.d.ts +81 -0
  262. package/src/lib/design/system/pointer-focus.js +152 -0
  263. package/src/lib/design/system/pointer-focus.js.map +1 -0
  264. package/src/lib/design/system/prettier.d.ts +10 -0
  265. package/src/lib/design/system/prettier.js +36 -0
  266. package/src/lib/design/system/prettier.js.map +1 -0
  267. package/src/lib/design/system/reach.d.ts +12 -0
  268. package/src/lib/design/system/reach.js +186 -0
  269. package/src/lib/design/system/reach.js.map +1 -0
  270. package/src/lib/design/system/reachable-controls.d.ts +6 -0
  271. package/src/lib/design/system/reachable-controls.js +19 -0
  272. package/src/lib/design/system/reachable-controls.js.map +1 -0
  273. package/src/lib/design/system/reachable-files.d.ts +14 -0
  274. package/src/lib/design/system/reachable-files.js +101 -0
  275. package/src/lib/design/system/reachable-files.js.map +1 -0
  276. package/src/lib/design/system/reached-state.d.ts +23 -0
  277. package/src/lib/design/system/reached-state.js +53 -0
  278. package/src/lib/design/system/reached-state.js.map +1 -0
  279. package/src/lib/design/system/read-open-points.d.ts +9 -3
  280. package/src/lib/design/system/read-open-points.js +38 -9
  281. package/src/lib/design/system/read-open-points.js.map +1 -1
  282. package/src/lib/design/system/ready-command.d.ts +6 -2
  283. package/src/lib/design/system/ready-command.js +32 -15
  284. package/src/lib/design/system/ready-command.js.map +1 -1
  285. package/src/lib/design/system/render-check.d.ts +50 -0
  286. package/src/lib/design/system/render-check.js +341 -88
  287. package/src/lib/design/system/render-check.js.map +1 -1
  288. package/src/lib/design/system/resolve-product.js +5 -0
  289. package/src/lib/design/system/resolve-product.js.map +1 -1
  290. package/src/lib/design/system/rules/app-spec.d.ts +30 -0
  291. package/src/lib/design/system/rules/app-spec.js +87 -0
  292. package/src/lib/design/system/rules/app-spec.js.map +1 -0
  293. package/src/lib/design/system/rules/canonical-class.d.ts +2 -0
  294. package/src/lib/design/system/rules/canonical-class.js +36 -110
  295. package/src/lib/design/system/rules/canonical-class.js.map +1 -1
  296. package/src/lib/design/system/rules/capability-place.d.ts +44 -0
  297. package/src/lib/design/system/rules/capability-place.js +116 -0
  298. package/src/lib/design/system/rules/capability-place.js.map +1 -0
  299. package/src/lib/design/system/rules/denied-class.d.ts +9 -0
  300. package/src/lib/design/system/rules/denied-class.js +121 -0
  301. package/src/lib/design/system/rules/denied-class.js.map +1 -0
  302. package/src/lib/design/system/rules/exemptions.d.ts +18 -0
  303. package/src/lib/design/system/rules/exemptions.js +18 -0
  304. package/src/lib/design/system/rules/exemptions.js.map +1 -0
  305. package/src/lib/design/system/rules/flow.js +1 -1
  306. package/src/lib/design/system/rules/flow.js.map +1 -1
  307. package/src/lib/design/system/rules/glued-interpolation.d.ts +8 -0
  308. package/src/lib/design/system/rules/glued-interpolation.js +61 -0
  309. package/src/lib/design/system/rules/glued-interpolation.js.map +1 -0
  310. package/src/lib/design/system/rules/hard-coded-colour.js +2 -1
  311. package/src/lib/design/system/rules/hard-coded-colour.js.map +1 -1
  312. package/src/lib/design/system/rules/implemented-components.d.ts +22 -0
  313. package/src/lib/design/system/rules/implemented-components.js +45 -0
  314. package/src/lib/design/system/rules/implemented-components.js.map +1 -0
  315. package/src/lib/design/system/rules/implements.d.ts +2 -1
  316. package/src/lib/design/system/rules/implements.js +26 -21
  317. package/src/lib/design/system/rules/implements.js.map +1 -1
  318. package/src/lib/design/system/rules/inline-svg.js +4 -1
  319. package/src/lib/design/system/rules/inline-svg.js.map +1 -1
  320. package/src/lib/design/system/rules/inline-ui-in-page-open.d.ts +13 -0
  321. package/src/lib/design/system/rules/inline-ui-in-page-open.js +5 -0
  322. package/src/lib/design/system/rules/inline-ui-in-page-open.js.map +1 -0
  323. package/src/lib/design/system/rules/inline-ui-in-page.d.ts +18 -0
  324. package/src/lib/design/system/rules/inline-ui-in-page.js +123 -0
  325. package/src/lib/design/system/rules/inline-ui-in-page.js.map +1 -0
  326. package/src/lib/design/system/rules/inline-ui.d.ts +16 -0
  327. package/src/lib/design/system/rules/inline-ui.js +100 -0
  328. package/src/lib/design/system/rules/inline-ui.js.map +1 -0
  329. package/src/lib/design/system/rules/motion.d.ts +1 -1
  330. package/src/lib/design/system/rules/motion.js +25 -17
  331. package/src/lib/design/system/rules/motion.js.map +1 -1
  332. package/src/lib/design/system/rules/native-title.d.ts +7 -0
  333. package/src/lib/design/system/rules/native-title.js +64 -0
  334. package/src/lib/design/system/rules/native-title.js.map +1 -0
  335. package/src/lib/design/system/rules/orphan-endpoint-known.d.ts +12 -0
  336. package/src/lib/design/system/rules/orphan-endpoint-known.js +20 -0
  337. package/src/lib/design/system/rules/orphan-endpoint-known.js.map +1 -0
  338. package/src/lib/design/system/rules/orphan-endpoint.d.ts +23 -0
  339. package/src/lib/design/system/rules/orphan-endpoint.js +166 -0
  340. package/src/lib/design/system/rules/orphan-endpoint.js.map +1 -0
  341. package/src/lib/design/system/rules/part-rewrite.d.ts +13 -0
  342. package/src/lib/design/system/rules/part-rewrite.js +125 -0
  343. package/src/lib/design/system/rules/part-rewrite.js.map +1 -0
  344. package/src/lib/design/system/rules/sample-default-known.d.ts +5 -0
  345. package/src/lib/design/system/rules/sample-default-known.js +17 -0
  346. package/src/lib/design/system/rules/sample-default-known.js.map +1 -0
  347. package/src/lib/design/system/rules/sample-default.d.ts +22 -0
  348. package/src/lib/design/system/rules/sample-default.js +92 -0
  349. package/src/lib/design/system/rules/sample-default.js.map +1 -0
  350. package/src/lib/design/system/rules/stale-replace.js +4 -0
  351. package/src/lib/design/system/rules/stale-replace.js.map +1 -1
  352. package/src/lib/design/system/rules/state-in-component.d.ts +16 -0
  353. package/src/lib/design/system/rules/state-in-component.js +101 -0
  354. package/src/lib/design/system/rules/state-in-component.js.map +1 -0
  355. package/src/lib/design/system/rules/tailwind-classes.d.ts +51 -0
  356. package/src/lib/design/system/rules/tailwind-classes.js +232 -0
  357. package/src/lib/design/system/rules/tailwind-classes.js.map +1 -0
  358. package/src/lib/design/system/rules/top-level-await.d.ts +9 -0
  359. package/src/lib/design/system/rules/top-level-await.js +62 -0
  360. package/src/lib/design/system/rules/top-level-await.js.map +1 -0
  361. package/src/lib/design/system/rules/unbound-input-known.d.ts +5 -0
  362. package/src/lib/design/system/rules/unbound-input-known.js +47 -0
  363. package/src/lib/design/system/rules/unbound-input-known.js.map +1 -0
  364. package/src/lib/design/system/rules/unbound-input.d.ts +22 -0
  365. package/src/lib/design/system/rules/unbound-input.js +61 -0
  366. package/src/lib/design/system/rules/unbound-input.js.map +1 -0
  367. package/src/lib/design/system/rules/uncovered-region.d.ts +13 -0
  368. package/src/lib/design/system/rules/uncovered-region.js +36 -0
  369. package/src/lib/design/system/rules/uncovered-region.js.map +1 -0
  370. package/src/lib/design/system/rules/undefined-class.d.ts +9 -0
  371. package/src/lib/design/system/rules/undefined-class.js +32 -0
  372. package/src/lib/design/system/rules/undefined-class.js.map +1 -0
  373. package/src/lib/design/system/rules/undefined-token.d.ts +1 -1
  374. package/src/lib/design/system/rules/undefined-token.js +7 -61
  375. package/src/lib/design/system/rules/undefined-token.js.map +1 -1
  376. package/src/lib/design/system/rules/utility-css.d.ts +2 -1
  377. package/src/lib/design/system/rules/utility-css.js +29 -14
  378. package/src/lib/design/system/rules/utility-css.js.map +1 -1
  379. package/src/lib/design/system/rules/view-coverage.d.ts +8 -0
  380. package/src/lib/design/system/rules/view-coverage.js +51 -0
  381. package/src/lib/design/system/rules/view-coverage.js.map +1 -0
  382. package/src/lib/design/system/rules/visible-change.d.ts +20 -0
  383. package/src/lib/design/system/rules/visible-change.js +48 -0
  384. package/src/lib/design/system/rules/visible-change.js.map +1 -0
  385. package/src/lib/design/system/sdk-errors.d.ts +14 -0
  386. package/src/lib/design/system/sdk-errors.js +38 -0
  387. package/src/lib/design/system/sdk-errors.js.map +1 -0
  388. package/src/lib/design/system/see-through.d.ts +12 -0
  389. package/src/lib/design/system/see-through.js +112 -0
  390. package/src/lib/design/system/see-through.js.map +1 -0
  391. package/src/lib/design/system/settled-panes.d.ts +18 -0
  392. package/src/lib/design/system/settled-panes.js +70 -0
  393. package/src/lib/design/system/settled-panes.js.map +1 -0
  394. package/src/lib/design/system/sketch/after-merge.d.ts +11 -0
  395. package/src/lib/design/system/sketch/after-merge.js +51 -0
  396. package/src/lib/design/system/sketch/after-merge.js.map +1 -0
  397. package/src/lib/design/system/sketch/aktuell-placeholders.d.ts +30 -0
  398. package/src/lib/design/system/sketch/aktuell-placeholders.js +87 -0
  399. package/src/lib/design/system/sketch/aktuell-placeholders.js.map +1 -0
  400. package/src/lib/design/system/sketch/baseline.d.ts +19 -1
  401. package/src/lib/design/system/sketch/baseline.js +29 -7
  402. package/src/lib/design/system/sketch/baseline.js.map +1 -1
  403. package/src/lib/design/system/sketch/check-sketches.d.ts +10 -0
  404. package/src/lib/design/system/sketch/check-sketches.js +50 -4
  405. package/src/lib/design/system/sketch/check-sketches.js.map +1 -1
  406. package/src/lib/design/system/sketch/cli-args.d.ts +12 -2
  407. package/src/lib/design/system/sketch/cli-args.js +18 -3
  408. package/src/lib/design/system/sketch/cli-args.js.map +1 -1
  409. package/src/lib/design/system/sketch/edit-sketch.d.ts +21 -0
  410. package/src/lib/design/system/sketch/edit-sketch.js +117 -0
  411. package/src/lib/design/system/sketch/edit-sketch.js.map +1 -0
  412. package/src/lib/design/system/sketch/frame-budget.d.ts +24 -0
  413. package/src/lib/design/system/sketch/frame-budget.js +23 -0
  414. package/src/lib/design/system/sketch/frame-budget.js.map +1 -0
  415. package/src/lib/design/system/sketch/identical-renders.d.ts +31 -0
  416. package/src/lib/design/system/sketch/identical-renders.js +137 -0
  417. package/src/lib/design/system/sketch/identical-renders.js.map +1 -0
  418. package/src/lib/design/system/sketch/merge-shared.d.ts +2 -0
  419. package/src/lib/design/system/sketch/merge-shared.js +7 -10
  420. package/src/lib/design/system/sketch/merge-shared.js.map +1 -1
  421. package/src/lib/design/system/sketch/merge-step.d.ts +35 -0
  422. package/src/lib/design/system/sketch/merge-step.js +98 -0
  423. package/src/lib/design/system/sketch/merge-step.js.map +1 -0
  424. package/src/lib/design/system/sketch/merge.d.ts +10 -3
  425. package/src/lib/design/system/sketch/merge.js +103 -30
  426. package/src/lib/design/system/sketch/merge.js.map +1 -1
  427. package/src/lib/design/system/sketch/merged-layout.d.ts +17 -0
  428. package/src/lib/design/system/sketch/merged-layout.js +57 -0
  429. package/src/lib/design/system/sketch/merged-layout.js.map +1 -0
  430. package/src/lib/design/system/sketch/merged-parts.d.ts +40 -10
  431. package/src/lib/design/system/sketch/merged-parts.js +112 -49
  432. package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
  433. package/src/lib/design/system/sketch/no-visible-change.d.ts +10 -0
  434. package/src/lib/design/system/sketch/no-visible-change.js +16 -6
  435. package/src/lib/design/system/sketch/no-visible-change.js.map +1 -1
  436. package/src/lib/design/system/sketch/part-definition.d.ts +21 -1
  437. package/src/lib/design/system/sketch/part-definition.js +79 -17
  438. package/src/lib/design/system/sketch/part-definition.js.map +1 -1
  439. package/src/lib/design/system/sketch/rebase-port.d.ts +24 -0
  440. package/src/lib/design/system/sketch/rebase-port.js +170 -0
  441. package/src/lib/design/system/sketch/rebase-port.js.map +1 -0
  442. package/src/lib/design/system/sketch/sample-mark-drift.d.ts +33 -0
  443. package/src/lib/design/system/sketch/sample-mark-drift.js +88 -0
  444. package/src/lib/design/system/sketch/sample-mark-drift.js.map +1 -0
  445. package/src/lib/design/system/sketch/sketch-check-worker.d.ts +1 -0
  446. package/src/lib/design/system/sketch/sketch-check-worker.js +27 -0
  447. package/src/lib/design/system/sketch/sketch-check-worker.js.map +1 -0
  448. package/src/lib/design/system/sketch/sketch-checker.d.ts +27 -0
  449. package/src/lib/design/system/sketch/sketch-checker.js +99 -0
  450. package/src/lib/design/system/sketch/sketch-checker.js.map +1 -0
  451. package/src/lib/design/system/sketch/sketch.d.ts +63 -2
  452. package/src/lib/design/system/sketch/sketch.js +185 -30
  453. package/src/lib/design/system/sketch/sketch.js.map +1 -1
  454. package/src/lib/design/system/sketch/stale-base.d.ts +22 -0
  455. package/src/lib/design/system/sketch/stale-base.js +56 -0
  456. package/src/lib/design/system/sketch/stale-base.js.map +1 -0
  457. package/src/lib/design/system/sketch/unchanged-states.d.ts +32 -0
  458. package/src/lib/design/system/sketch/unchanged-states.js +52 -13
  459. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
  460. package/src/lib/design/system/sketch/unused-closure.js +16 -4
  461. package/src/lib/design/system/sketch/unused-closure.js.map +1 -1
  462. package/src/lib/design/system/sketch/viewed-shots.d.ts +24 -0
  463. package/src/lib/design/system/sketch/viewed-shots.js +61 -0
  464. package/src/lib/design/system/sketch/viewed-shots.js.map +1 -0
  465. package/src/lib/design/system/slow-checks.d.ts +40 -0
  466. package/src/lib/design/system/slow-checks.js +197 -0
  467. package/src/lib/design/system/slow-checks.js.map +1 -0
  468. package/src/lib/design/system/slow-run.d.ts +57 -0
  469. package/src/lib/design/system/slow-run.js +253 -0
  470. package/src/lib/design/system/slow-run.js.map +1 -0
  471. package/src/lib/design/system/stale-design-mocks.d.ts +20 -0
  472. package/src/lib/design/system/stale-design-mocks.js +59 -0
  473. package/src/lib/design/system/stale-design-mocks.js.map +1 -0
  474. package/src/lib/design/system/stale-dist.d.ts +25 -0
  475. package/src/lib/design/system/stale-dist.js +91 -0
  476. package/src/lib/design/system/stale-dist.js.map +1 -0
  477. package/src/lib/design/system/stale-parts.d.ts +30 -0
  478. package/src/lib/design/system/stale-parts.js +106 -0
  479. package/src/lib/design/system/stale-parts.js.map +1 -0
  480. package/src/lib/design/system/surface-nesting.d.ts +11 -0
  481. package/src/lib/design/system/surface-nesting.js +86 -0
  482. package/src/lib/design/system/surface-nesting.js.map +1 -0
  483. package/src/lib/design/system/system-command.js +8 -6
  484. package/src/lib/design/system/system-command.js.map +1 -1
  485. package/src/lib/design/system/system-modules.d.ts +16 -1
  486. package/src/lib/design/system/system-modules.js +18 -2
  487. package/src/lib/design/system/system-modules.js.map +1 -1
  488. package/src/lib/design/system/task-command.d.ts +51 -0
  489. package/src/lib/design/system/task-command.js +233 -0
  490. package/src/lib/design/system/task-command.js.map +1 -0
  491. package/src/lib/design/system/theming-text.d.ts +2 -0
  492. package/src/lib/design/system/theming-text.js +6 -0
  493. package/src/lib/design/system/theming-text.js.map +1 -0
  494. package/src/lib/design/system/tom-confirm.d.ts +40 -0
  495. package/src/lib/design/system/tom-confirm.js +55 -0
  496. package/src/lib/design/system/tom-confirm.js.map +1 -0
  497. package/src/lib/design/system/touched-parts.d.ts +16 -0
  498. package/src/lib/design/system/touched-parts.js +122 -0
  499. package/src/lib/design/system/touched-parts.js.map +1 -0
  500. package/src/lib/design/system/ts-source.d.ts +2 -0
  501. package/src/lib/design/system/ts-source.js +15 -1
  502. package/src/lib/design/system/ts-source.js.map +1 -1
  503. package/src/lib/design/system/unchanged-rows.d.ts +15 -0
  504. package/src/lib/design/system/unchanged-rows.js +134 -0
  505. package/src/lib/design/system/unchanged-rows.js.map +1 -0
  506. package/src/lib/design/system/uncommitted-decisions.d.ts +6 -0
  507. package/src/lib/design/system/uncommitted-decisions.js +38 -0
  508. package/src/lib/design/system/uncommitted-decisions.js.map +1 -0
  509. package/src/lib/design/system/uncovered-regions.d.ts +61 -0
  510. package/src/lib/design/system/uncovered-regions.js +171 -0
  511. package/src/lib/design/system/uncovered-regions.js.map +1 -0
  512. package/src/lib/design/system/unused-base-parts.d.ts +7 -0
  513. package/src/lib/design/system/unused-base-parts.js +76 -0
  514. package/src/lib/design/system/unused-base-parts.js.map +1 -0
  515. package/src/lib/design/system/visible-change-command.d.ts +48 -0
  516. package/src/lib/design/system/visible-change-command.js +308 -0
  517. package/src/lib/design/system/visible-change-command.js.map +1 -0
  518. package/src/lib/design/system/visible-change-parts.d.ts +28 -0
  519. package/src/lib/design/system/visible-change-parts.js +96 -0
  520. package/src/lib/design/system/visible-change-parts.js.map +1 -0
  521. package/src/lib/design/system/visible-change.d.ts +82 -0
  522. package/src/lib/design/system/visible-change.js +149 -0
  523. package/src/lib/design/system/visible-change.js.map +1 -0
  524. package/src/lib/design/thumb.d.ts +19 -2
  525. package/src/lib/design/thumb.js +50 -15
  526. package/src/lib/design/thumb.js.map +1 -1
  527. package/src/lib/design/typecheck.d.ts +1 -1
  528. package/src/lib/design/typecheck.js +3 -3
  529. package/src/lib/design/typecheck.js.map +1 -1
  530. package/src/lib/design/unstable-cells.d.ts +23 -0
  531. package/src/lib/design/unstable-cells.js +40 -0
  532. package/src/lib/design/unstable-cells.js.map +1 -0
  533. package/src/lib/design/variant-diff.js +1 -1
  534. package/src/lib/design/variant-diff.js.map +1 -1
  535. package/src/lib/design/wait.d.ts +15 -0
  536. package/src/lib/design/wait.js +30 -0
  537. package/src/lib/design/wait.js.map +1 -0
  538. package/src/lib/json-file.d.ts +11 -0
  539. package/src/lib/json-file.js +21 -0
  540. package/src/lib/json-file.js.map +1 -0
  541. package/src/lib/source-hash.d.ts +7 -0
  542. package/src/lib/source-hash.js +62 -0
  543. package/src/lib/source-hash.js.map +1 -0
  544. package/src/lib/update/agent-setup.js +2 -1
  545. package/src/lib/update/agent-setup.js.map +1 -1
  546. package/src/lib/update/migration-manifest.d.ts +12 -0
  547. package/src/lib/update/migration-manifest.js +13 -0
  548. package/src/lib/update/migration-manifest.js.map +1 -1
  549. package/src/lib/update/migration-record.js +2 -1
  550. package/src/lib/update/migration-record.js.map +1 -1
  551. package/src/lib/update/pending.js +2 -1
  552. package/src/lib/update/pending.js.map +1 -1
  553. package/src/lib/update/run-migrations.d.ts +3 -2
  554. package/src/lib/update/run-migrations.js +38 -5
  555. package/src/lib/update/run-migrations.js.map +1 -1
  556. package/src/lib/update/tasks.js +2 -1
  557. package/src/lib/update/tasks.js.map +1 -1
@@ -20,12 +20,13 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  return t;
21
21
  };
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.forceMiddleware = exports.renderMiddleware = exports.createRenderer = exports.isStale = exports.FORCE_PATH = exports.RENDER_PATH = void 0;
23
+ exports.forceMiddleware = exports.renderMiddleware = exports.createRenderer = exports.RENDER_TIMEOUT_MS = exports.isStale = exports.FORCE_PATH = exports.RENDER_PATH = void 0;
24
24
  const fs_1 = require("fs");
25
25
  const path_1 = require("path");
26
26
  const worker_threads_1 = require("worker_threads");
27
27
  const force_interactions_1 = require("./force-interactions");
28
28
  const paths_1 = require("./paths");
29
+ const wait_1 = require("./wait");
29
30
  const render_packages_1 = require("./render-packages");
30
31
  exports.RENDER_PATH = '/__design/render';
31
32
  exports.FORCE_PATH = '/__design/force';
@@ -44,8 +45,9 @@ exports.isStale = isStale;
44
45
  * Renders Angular templates in a worker that loads the target checkout's own packages. The worker
45
46
  * is replaced on the first request after a package it loaded was rebuilt.
46
47
  */
48
+ exports.RENDER_TIMEOUT_MS = 120000;
47
49
  const createRenderer = (options) => {
48
- const { target, config } = options;
50
+ const { target, config, timeout = exports.RENDER_TIMEOUT_MS } = options;
49
51
  const workerDataOf = () => {
50
52
  var _a, _b;
51
53
  return ({
@@ -56,6 +58,7 @@ const createRenderer = (options) => {
56
58
  };
57
59
  let startedWith = '';
58
60
  const pending = new Map();
61
+ const sentTo = new Map();
59
62
  let worker = null;
60
63
  let watched = {};
61
64
  let nextId = 0;
@@ -63,23 +66,31 @@ const createRenderer = (options) => {
63
66
  for (const settle of pending.values())
64
67
  settle({ error });
65
68
  pending.clear();
69
+ sentTo.clear();
70
+ };
71
+ const answer = (id, result) => {
72
+ var _a;
73
+ (_a = pending.get(id)) === null || _a === void 0 ? void 0 : _a(result);
74
+ pending.delete(id);
75
+ sentTo.delete(id);
66
76
  };
67
77
  const start = () => {
68
78
  const workerData = workerDataOf();
69
79
  startedWith = JSON.stringify(workerData);
70
80
  const started = new worker_threads_1.Worker((0, paths_1.packageFileOf)((0, path_1.resolve)(__dirname, 'render-worker.js')), { workerData });
71
81
  started.on('message', (response) => {
72
- var _a;
73
82
  const { id, watched: loaded } = response, result = __rest(response, ["id", "watched"]);
74
83
  if (started === worker)
75
84
  watched = Object.assign({}, loaded);
76
- (_a = pending.get(id)) === null || _a === void 0 ? void 0 : _a(result);
77
- pending.delete(id);
85
+ answer(id, result);
78
86
  });
79
87
  started.on('error', (error) => settleAll(`design-explore: the render worker failed: ${error instanceof Error ? error.message : String(error)}`));
80
88
  started.on('exit', () => {
81
89
  if (started === worker)
82
90
  worker = null;
91
+ for (const [id, to] of sentTo)
92
+ if (to === started)
93
+ answer(id, { error: 'design-explore: the render worker exited before it answered' });
83
94
  });
84
95
  watched = {};
85
96
  return started;
@@ -102,8 +113,22 @@ const createRenderer = (options) => {
102
113
  providers: providers ? (0, path_1.resolve)(target, providers) : null,
103
114
  };
104
115
  const result = new Promise((settle) => pending.set(request.id, settle));
105
- worker.postMessage(request);
106
- return result;
116
+ const sent = worker;
117
+ sentTo.set(request.id, sent);
118
+ sent.postMessage(request);
119
+ return (0, wait_1.withinLimit)(result, {
120
+ ms: timeout,
121
+ what: `the render worker to draw ${ask.call}`,
122
+ announceAfterMs: 10000,
123
+ }).catch((error) => {
124
+ const message = error instanceof Error ? error.message : String(error);
125
+ answer(request.id, { error: message });
126
+ if (sent === worker) {
127
+ worker = null;
128
+ void sent.terminate();
129
+ }
130
+ return { error: message };
131
+ });
107
132
  };
108
133
  const close = () => __awaiter(void 0, void 0, void 0, function* () {
109
134
  const stopped = worker;
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/render.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAA8B;AAE9B,+BAA+B;AAC/B,mDAAwC;AACxC,6DAAyD;AACzD,mCAAsD;AAEtD,iCAAqC;AACrC,uDAO2B;AAEd,QAAA,WAAW,GAAG,kBAAkB,CAAC;AAEjC,QAAA,UAAU,GAAG,iBAAiB,CAAC;AAE5C,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE;IAC/B,IAAI,CAAC;QACH,OAAO,IAAA,aAAQ,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IAChC,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF,mGAAmG;AAC5F,MAAM,OAAO,GAAG,CAAC,OAA+B,EAAE,QAAkC,OAAO,EAAE,EAAE,CACpG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;AAD9D,QAAA,OAAO,WACuD;AAU3E;;;GAGG;AACU,QAAA,iBAAiB,GAAG,MAAO,CAAC;AAElC,MAAM,cAAc,GAAG,CAAC,OAAmE,EAAE,EAAE;IACpG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,yBAAiB,EAAE,GAAG,OAAO,CAAC;IAChE,MAAM,YAAY,GAAG,GAAqB,EAAE;;QAAC,OAAA,CAAC;YAC5C,MAAM;YACN,QAAQ,EAAE,IAAA,kCAAgB,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC9C,OAAO,EAAE,MAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,OAAO,mCAAI,wCAAsB;SAC1D,CAAC,CAAA;KAAA,CAAC;IACH,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0C,CAAC;IAClE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,OAAO,GAA2B,EAAE,CAAC;IACzC,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE;QAClC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;YAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,MAAoB,EAAE,EAAE;;QAClD,MAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,0CAAG,MAAM,CAAC,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;QAElC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEzC,MAAM,OAAO,GAAG,IAAI,uBAAM,CAAC,IAAA,qBAAa,EAAC,IAAA,cAAO,EAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAElG,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,QAAwB,EAAE,EAAE;YACjD,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,KAAgB,QAAQ,EAAnB,MAAM,UAAK,QAAQ,EAA7C,iBAAkC,CAAW,CAAC;YAEpD,IAAI,OAAO,KAAK,MAAM;gBAAE,OAAO,qBAAQ,MAAM,CAAE,CAAC;YAChD,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAC5B,SAAS,CAAC,6CAA6C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CACjH,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,IAAI,OAAO,KAAK,MAAM;gBAAE,MAAM,GAAG,IAAI,CAAC;YAEtC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM;gBAC3B,IAAI,EAAE,KAAK,OAAO;oBAAE,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,6DAA6D,EAAE,CAAC,CAAC;QAC7G,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE,CAAC;QAEb,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,GAAc,EAAE,EAAE;;QAChC,IAAI,MAAM,IAAI,CAAC,IAAA,eAAO,EAAC,OAAO,CAAC,IAAI,WAAW,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC;YACnF,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,aAAN,MAAM,cAAN,MAAM,IAAN,MAAM,GAAK,KAAK,EAAE,EAAC;QAEnB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO;YAC3B,CAAC,CAAC,MAAA,MAAA,MAAM,CAAC,QAAQ,0CAAG,GAAG,CAAC,OAAO,CAAC,0CAAE,SAAS;YAC3C,CAAC,CAAC,MAAA,MAAA,MAAM,CAAC,QAAQ,0CAAG,MAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC,0CAAE,SAAS,CAAC;QAC/D,MAAM,OAAO,GAAkB;YAC7B,EAAE,EAAE,MAAM,EAAE;YACZ,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,MAAA,GAAG,CAAC,MAAM,mCAAI,IAAI;YAC1B,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAA,cAAO,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;SACzD,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,OAAO,CAAe,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;QACtF,MAAM,IAAI,GAAG,MAAM,CAAC;QAEpB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE1B,OAAO,IAAA,kBAAW,EAAC,MAAM,EAAE;YACzB,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,6BAA6B,GAAG,CAAC,IAAI,EAAE;YAC7C,eAAe,EAAE,KAAM;SACxB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAgB,EAAE;YACxC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEvE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAEvC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,MAAM,GAAG,IAAI,CAAC;gBACd,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACxB,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,MAAM,OAAO,GAAG,MAAM,CAAC;QAEvB,MAAM,GAAG,IAAI,CAAC;QACd,SAAS,CAAC,qCAAqC,CAAC,CAAC;QACjD,MAAM,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE,CAAA,CAAC;IAC7B,CAAC,CAAA,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC;AAxGW,QAAA,cAAc,kBAwGzB;AAEF,MAAM,QAAQ,GAAG,CAAC,OAAwB,EAAE,EAAE,CAC5C,IAAI,OAAO,CAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;IACrC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEL;;;GAGG;AACI,MAAM,gBAAgB,GAC3B,CAAC,MAAiD,EAAE,EAAE,CAAC,CAAC,OAAwB,EAAE,QAAwB,EAAE,EAAE;IAC5G,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;QAC1B,QAAQ,CAAC,GAAG,EAAE,CAAC;QAEf,OAAO;IACT,CAAC;IAED,KAAK,QAAQ,CAAC,OAAO,CAAC;SACnB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC,CAAC;SACrD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SAC9F,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACf,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACtB,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;YAC1B,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;YAChE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE3B,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QACvD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,iCAAM,MAAM,KAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,sCAAiB,CAAC,IAAG,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAxBS,QAAA,gBAAgB,oBAwBzB;AAEJ,2GAA2G;AACpG,MAAM,eAAe,GAAG,CAAC,OAAwB,EAAE,QAAwB,EAAE,EAAE;IACpF,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;QAC1B,QAAQ,CAAC,GAAG,EAAE,CAAC;QAEf,OAAO;IACT,CAAC;IAED,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CACzB,CAAC,GAAG,EAAE,EAAE;QACN,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;QAC9D,QAAQ,CAAC,GAAG,CAAC,IAAA,sCAAiB,EAAC,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC,EACD,GAAG,EAAE;QACH,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;QAC1B,QAAQ,CAAC,GAAG,EAAE,CAAC;IACjB,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,eAAe,mBAkB1B"}
@@ -1,4 +1,19 @@
1
+ import { ServerResponse } from 'http';
2
+ import { CheckSketches } from './system/sketch/sketch-checker';
1
3
  import { DesignConfig } from './paths';
4
+ export declare const KEEP_ALIVE_MS = 15000;
5
+ /**
6
+ * Sends `answered` as JSON, and a space every `KEEP_ALIVE_MS` while it is pending: WebKit fails a fetch with "Load
7
+ * failed" when no byte arrives for 60 s. Once a space went out the status is 200, so a later failure arrives as its
8
+ * body alone.
9
+ */
10
+ export declare const sendHeldJson: (response: ServerResponse, answered: Promise<{
11
+ status: number;
12
+ body: unknown;
13
+ }>) => Promise<void>;
14
+ export declare const DESIGN_EVENTS_HEARTBEAT_MS = 20000;
15
+ /** The real directories a checkout's `node_modules` points into, which Vite refuses to serve unless allowed. */
16
+ export declare const installedRootsOf: (target: string) => string[];
2
17
  /**
3
18
  * The Vite server that draws a checkout: listening on the configured port to serve the frames, or in
4
19
  * middleware mode only to load design modules for a command. With `port`, it listens there instead
@@ -13,12 +28,17 @@ export declare const createDesignServer: (options: {
13
28
  listenOn?: number;
14
29
  host?: string;
15
30
  sketchesRoot?: string;
31
+ checkSketches?: CheckSketches;
16
32
  }) => Promise<import("vite", { with: { "resolution-mode": "import" } }).ViteDevServer>;
17
33
  /**
18
34
  * Starts the design server for a checkout and keeps it running. The returned exit code is the
19
- * command's, not the server's: a listening server holds the process open on its own.
35
+ * command's, not the server's: a listening server holds the process open on its own. With
36
+ * `reloadOnRebuild`, a rebuild or reinstall of the cli restarts the server on the same port from
37
+ * the new build, inside the process that was started.
20
38
  */
21
39
  export declare const serveDesign: (options: {
22
40
  target: string;
23
41
  host?: string;
42
+ reloadOnRebuild?: boolean;
43
+ checkSketches?: CheckSketches;
24
44
  }) => Promise<number>;
@@ -9,12 +9,13 @@ 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 = void 0;
12
+ exports.serveDesign = exports.createDesignServer = exports.installedRootsOf = exports.DESIGN_EVENTS_HEARTBEAT_MS = exports.sendHeldJson = exports.KEEP_ALIVE_MS = void 0;
13
13
  const crypto_1 = require("crypto");
14
14
  const fs_1 = require("fs");
15
15
  const net_1 = require("net");
16
16
  const promises_1 = require("timers/promises");
17
17
  const path_1 = require("path");
18
+ const rxjs_1 = require("rxjs");
18
19
  const calls_1 = require("./calls");
19
20
  const calls_tsconfig_1 = require("./calls-tsconfig");
20
21
  const legacy_1 = require("./legacy");
@@ -32,6 +33,7 @@ const shot_1 = require("./shot");
32
33
  const shot_store_1 = require("./shot-store");
33
34
  const imports_1 = require("./system/imports");
34
35
  const changed_parts_1 = require("./changed-parts");
36
+ const server_identity_1 = require("./server-identity");
35
37
  const stamp_1 = require("./stamp");
36
38
  const list_system_1 = require("./system/list-system");
37
39
  const resolve_product_1 = require("./system/resolve-product");
@@ -39,11 +41,14 @@ const system_modules_1 = require("./system/system-modules");
39
41
  const kit_1 = require("./system/kit");
40
42
  const system_tsconfig_1 = require("./system/system-tsconfig");
41
43
  const sketch_1 = require("./system/sketch/sketch");
44
+ const sketch_checker_1 = require("./system/sketch/sketch-checker");
42
45
  const unchanged_states_1 = require("./system/sketch/unchanged-states");
43
46
  const inventory_1 = require("./system/inventory");
44
47
  const thumb_1 = require("./thumb");
45
48
  const motion_endpoint_1 = require("./motion-endpoint");
46
49
  const paths_1 = require("./paths");
50
+ const slow_run_1 = require("./system/slow-run");
51
+ const build_watch_1 = require("./build-watch");
47
52
  const VIRTUAL = 'virtual:design-explore';
48
53
  const REBUILD_SETTLE_MS = 300;
49
54
  /** What a slug says about which project drew it: its first segment. */
@@ -188,6 +193,33 @@ const sendJson = (response, answer) => {
188
193
  response.setHeader('access-control-allow-origin', '*');
189
194
  (0, thumb_1.send)(response, { status: answer.status, type: 'application/json', body: JSON.stringify(answer.body) });
190
195
  };
196
+ exports.KEEP_ALIVE_MS = 15000;
197
+ /**
198
+ * Sends `answered` as JSON, and a space every `KEEP_ALIVE_MS` while it is pending: WebKit fails a fetch with "Load
199
+ * failed" when no byte arrives for 60 s. Once a space went out the status is 200, so a later failure arrives as its
200
+ * body alone.
201
+ */
202
+ const sendHeldJson = (response, answered) => {
203
+ let started = false;
204
+ const tick = (0, rxjs_1.interval)(exports.KEEP_ALIVE_MS)
205
+ .pipe((0, rxjs_1.tap)(() => {
206
+ if (!started) {
207
+ started = true;
208
+ response.writeHead(200, { 'access-control-allow-origin': '*', 'content-type': 'application/json' });
209
+ }
210
+ response.write(' ');
211
+ }))
212
+ .subscribe();
213
+ response.once('close', () => tick.unsubscribe());
214
+ return answered.then((answer) => {
215
+ tick.unsubscribe();
216
+ if (started)
217
+ response.end(JSON.stringify(answer.body));
218
+ else
219
+ sendJson(response, answer);
220
+ });
221
+ };
222
+ exports.sendHeldJson = sendHeldJson;
191
223
  const isCommentFile = (file) => file.endsWith('.json') && (0, path_1.basename)((0, path_1.dirname)(file)) === 'comments';
192
224
  const isNoteFile = (file) => file.endsWith('.json') && (0, path_1.basename)((0, path_1.dirname)(file)) === 'notes';
193
225
  const isFlowFile = (file) => file.endsWith('.json') && (0, path_1.basename)((0, path_1.dirname)(file)) === 'flows';
@@ -196,6 +228,8 @@ const isSketchFile = (designRoot, file) => {
196
228
  const [product, folder, ...inside] = (0, path_1.relative)(designRoot, (0, path_1.resolve)(file)).split(path_1.sep);
197
229
  return !!product && product !== '..' && folder === 'sketches' && inside.length > 0;
198
230
  };
231
+ // Workaround: WebKit drops an event stream that sends nothing for 60 seconds.
232
+ exports.DESIGN_EVENTS_HEARTBEAT_MS = 20000;
199
233
  /**
200
234
  * A server-sent event stream for Studio: `comments`, `notes`, `flows`, `calls` and `sketches` when a file of that
201
235
  * kind changed, and `parts` with the parts a design system change redraws and the revision it gave them. A `parts`
@@ -203,6 +237,11 @@ const isSketchFile = (designRoot, file) => {
203
237
  */
204
238
  const createDesignEvents = () => {
205
239
  const listeners = new Set();
240
+ let heartbeat;
241
+ const beat = () => {
242
+ for (const response of listeners)
243
+ response.write(': heartbeat\n\n');
244
+ };
206
245
  return {
207
246
  middleware: (request, response) => {
208
247
  response.writeHead(200, {
@@ -213,13 +252,22 @@ const createDesignEvents = () => {
213
252
  });
214
253
  response.write(': open\n\n');
215
254
  listeners.add(response);
216
- request.on('close', () => listeners.delete(response));
255
+ heartbeat !== null && heartbeat !== void 0 ? heartbeat : (heartbeat = (0, rxjs_1.interval)(exports.DESIGN_EVENTS_HEARTBEAT_MS).subscribe(beat));
256
+ request.on('close', () => {
257
+ listeners.delete(response);
258
+ if (listeners.size === 0) {
259
+ heartbeat === null || heartbeat === void 0 ? void 0 : heartbeat.unsubscribe();
260
+ heartbeat = undefined;
261
+ }
262
+ });
217
263
  },
218
264
  signal: (event, data = {}) => {
219
265
  for (const response of listeners)
220
266
  response.write(`event: ${event}\ndata: ${JSON.stringify(data)}\n\n`);
221
267
  },
222
268
  close: () => {
269
+ heartbeat === null || heartbeat === void 0 ? void 0 : heartbeat.unsubscribe();
270
+ heartbeat = undefined;
223
271
  for (const response of listeners)
224
272
  response.end();
225
273
  listeners.clear();
@@ -291,7 +339,7 @@ const shotStoreOf = (options) => {
291
339
  })),
292
340
  });
293
341
  };
294
- const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir, }) => {
342
+ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir, checkSketches, }) => {
295
343
  const renderer = (0, render_1.createRenderer)({ target, config });
296
344
  const transform = withAssetUrls(system);
297
345
  const packageDirs = () => (0, render_packages_1.renderPackageDirsOf)({ target, packages: (0, render_packages_1.renderPackagesOf)({ target, config }) });
@@ -352,14 +400,19 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
352
400
  const callsRoot = (0, paths_1.callsRootOf)(target);
353
401
  const designRoot = (0, path_1.resolve)(target, paths_1.DESIGN_DIR);
354
402
  const stamp = (0, stamp_1.buildStampOf)();
403
+ const identityOf = (0, server_identity_1.serverIdentityOf)(target);
355
404
  const base = () => {
356
405
  var _a;
357
406
  const address = (_a = vite.httpServer) === null || _a === void 0 ? void 0 : _a.address();
358
407
  return `http://localhost:${address && typeof address === 'object' ? address.port : (0, paths_1.portOf)(config)}`;
359
408
  };
360
- const ledger = (0, draw_ledger_1.createDrawLedger)(Date.now, ({ sketch }) => !sketch || system.drawnOf(sketch.product, sketch) !== null);
409
+ const ledger = (0, draw_ledger_1.createDrawLedger)(Date.now, ({ sketch }) => {
410
+ const drawn = sketch && system.drawnOf(sketch.product, sketch);
411
+ return !sketch || (!!drawn && !('sketchGone' in drawn));
412
+ });
361
413
  const thumbs = (0, thumb_1.createThumbnailer)({ target, base, ledger });
362
414
  const inventoryDraws = (0, thumb_1.createDrawQueue)({ target, ledger });
415
+ const sketchChecker = checkSketches ? undefined : (0, sketch_checker_1.createSketchChecker)();
363
416
  const shots = (0, shot_1.createPartShooter)(Object.assign(Object.assign({ target,
364
417
  base,
365
418
  ledger,
@@ -531,16 +584,25 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
531
584
  const dependents = (0, shot_1.dependentIdsOf)((_a = vite.moduleGraph.getModulesByFile(file)) !== null && _a !== void 0 ? _a : [], stylesheetImports);
532
585
  redraw((0, changed_parts_1.changedPartsOf)({ target, config, system, file, dependents }), isSystemFile(file));
533
586
  };
534
- const answer = (handle) => (request, response) => {
587
+ const answer = (handle, held = false) => (request, response) => {
535
588
  var _a;
536
- return void handle(new URL((_a = request.url) !== null && _a !== void 0 ? _a : '', 'http://localhost'), request).then((answered) => sendJson(response, answered), (error) => sendJson(response, {
589
+ const closed = new AbortController();
590
+ response.once('close', () => {
591
+ if (!response.writableFinished)
592
+ closed.abort();
593
+ });
594
+ const answered = handle(new URL((_a = request.url) !== null && _a !== void 0 ? _a : '', 'http://localhost'), {
595
+ request,
596
+ signal: closed.signal,
597
+ }).catch((error) => ({
537
598
  status: 500,
538
599
  body: { error: error instanceof Error ? error.message : String(error) },
539
600
  }));
601
+ void (held ? (0, exports.sendHeldJson)(response, answered) : answered.then((answer) => sendJson(response, answer)));
540
602
  };
541
603
  vite.middlewares.use(stamp_1.STAMP_PATH, (_request, response) => {
542
604
  response.setHeader('content-type', 'application/json');
543
- response.end(JSON.stringify(stamp));
605
+ response.end(JSON.stringify(Object.assign(Object.assign({}, stamp), identityOf())));
544
606
  });
545
607
  vite.middlewares.use(draw_ledger_1.QUEUE_PATH, (_request, response) => sendJson(response, { status: 200, body: ledger.report() }));
546
608
  vite.middlewares.use(render_1.RENDER_PATH, (0, render_1.renderMiddleware)(renderer));
@@ -576,7 +638,7 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
576
638
  });
577
639
  return { status: 200, body: products };
578
640
  })));
579
- vite.middlewares.use(product_command_1.PRODUCT_PATH, answer((_url, request) => __awaiter(void 0, void 0, void 0, function* () {
641
+ vite.middlewares.use(product_command_1.PRODUCT_PATH, answer((_url_1, _a) => __awaiter(void 0, [_url_1, _a], void 0, function* (_url, { request }) {
580
642
  const created = yield (0, product_command_1.newProductAnswer)({ target, request });
581
643
  if (created.status === 201)
582
644
  reloadConfig();
@@ -588,22 +650,24 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
588
650
  body: yield (0, calls_1.listCalls)({ target, load: (file) => vite.ssrLoadModule(file) }),
589
651
  });
590
652
  })));
591
- vite.middlewares.use(legacy_1.TRANSFER_PATH, answer((url, request) => __awaiter(void 0, void 0, void 0, function* () {
592
- var _a;
653
+ vite.middlewares.use(legacy_1.TRANSFER_PATH, answer((url_1, _a) => __awaiter(void 0, [url_1, _a], void 0, function* (url, { request }) {
654
+ var _b;
593
655
  if (request.method !== 'POST')
594
656
  return { status: 405, body: { error: 'POST only' } };
595
- const result = (0, legacy_1.markTransferred)({ target, slug: (_a = url.searchParams.get('call')) !== null && _a !== void 0 ? _a : '' });
657
+ const result = (0, legacy_1.markTransferred)({ target, slug: (_b = url.searchParams.get('call')) !== null && _b !== void 0 ? _b : '' });
596
658
  const status = result === 'missing' ? 404 : result === 'unreadable' ? 422 : 200;
597
659
  return { status, body: { result } };
598
660
  })));
599
- const studio = (path, handle) => vite.middlewares.use(path, answer((url, request) => __awaiter(void 0, void 0, void 0, function* () {
661
+ const studio = (path, handle) => vite.middlewares.use(path, answer((url_1, _a) => __awaiter(void 0, [url_1, _a], void 0, function* (url, { request, signal }) {
600
662
  return handle({
601
663
  target,
602
664
  url,
603
665
  request,
666
+ signal,
604
667
  load: ({ file, product, sketch }) => vite.ssrLoadModule((0, system_modules_1.productModuleIdOf)({ file, product, sketch })),
605
668
  pictureOf: shots.pictureOf,
606
669
  boxOf: shots.changedBoxesOf,
670
+ checkSketches: checkSketches !== null && checkSketches !== void 0 ? checkSketches : sketchChecker,
607
671
  inventoryOf: ({ product, part }) => (0, inventory_1.inventoryOf)({
608
672
  product,
609
673
  part,
@@ -613,7 +677,7 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
613
677
  draw: (job) => inventoryDraws.run(job),
614
678
  }),
615
679
  });
616
- })));
680
+ }), path === studio_api_1.SKETCHES_PATH));
617
681
  studio(studio_api_1.SKETCHES_PATH, studio_api_1.sketchesAnswer);
618
682
  studio(studio_api_1.SKETCH_PREVIEW_PATH, studio_api_1.sketchPreviewAnswer);
619
683
  studio(studio_api_1.SKETCH_COMPARE_PATH, studio_api_1.sketchCompareAnswer);
@@ -638,14 +702,15 @@ const designExplore = ({ target, config, system, stylesheetImports, shotCacheDir
638
702
  studio(studio_api_1.INVENTORY_PATH, studio_api_1.inventoryAnswer);
639
703
  studio(studio_api_1.INVENTORY_APPROVE_PATH, studio_api_1.inventoryApproveAnswer);
640
704
  studio(studio_api_1.OPEN_POINTS_PATH, studio_api_1.openPointsAnswer);
641
- studio(studio_api_1.PART_READY_PATH, studio_api_1.partReadyAnswer);
705
+ studio(studio_api_1.PART_GO_PATH, studio_api_1.partGoAnswer);
706
+ studio(studio_api_1.PART_ACCEPT_PATH, studio_api_1.partAcceptAnswer);
642
707
  studio(studio_api_1.EXCEPTIONS_PATH, studio_api_1.exceptionsAnswer);
643
708
  studio(studio_api_1.EXCEPTION_APPROVE_PATH, studio_api_1.exceptionApproveAnswer);
644
709
  vite.middlewares.use(studio_api_1.COMMENT_EVENTS_PATH, events.middleware);
645
710
  (_c = vite.httpServer) === null || _c === void 0 ? void 0 : _c.on('close', () => {
646
711
  events.close();
647
712
  settling === null || settling === void 0 ? void 0 : settling.abort();
648
- void Promise.all([thumbs.close(), shots.close(), inventoryDraws.close()]);
713
+ void Promise.all([thumbs.close(), shots.close(), inventoryDraws.close(), sketchChecker === null || sketchChecker === void 0 ? void 0 : sketchChecker.close()]);
649
714
  });
650
715
  vite.watcher.add([designRoot, ...baseDirs, ...packageDirs()]);
651
716
  vite.watcher.on('add', (file) => (isPackageFile(file) ? packageChanged(file) : refresh(file)));
@@ -663,6 +728,24 @@ const freePortOf = () => new Promise((resolvePort, reject) => {
663
728
  probe.close(() => resolvePort(port));
664
729
  });
665
730
  });
731
+ /** The real directories a checkout's `node_modules` points into, which Vite refuses to serve unless allowed. */
732
+ const installedRootsOf = (target) => {
733
+ const modules = (0, path_1.join)(target, 'node_modules');
734
+ const roots = new Set();
735
+ try {
736
+ roots.add((0, fs_1.realpathSync)(modules));
737
+ for (const entry of (0, fs_1.readdirSync)(modules, { withFileTypes: true })) {
738
+ if (entry.isSymbolicLink() && !entry.name.startsWith('.')) {
739
+ roots.add((0, path_1.dirname)((0, fs_1.realpathSync)((0, path_1.join)(modules, entry.name))));
740
+ }
741
+ }
742
+ }
743
+ catch (_a) {
744
+ return [...roots];
745
+ }
746
+ return [...roots];
747
+ };
748
+ exports.installedRootsOf = installedRootsOf;
666
749
  /**
667
750
  * The Vite server that draws a checkout: listening on the configured port to serve the frames, or in
668
751
  * middleware mode only to load design modules for a command. With `port`, it listens there instead
@@ -671,7 +754,7 @@ const freePortOf = () => new Promise((resolvePort, reject) => {
671
754
  */
672
755
  const createDesignServer = (options) => __awaiter(void 0, void 0, void 0, function* () {
673
756
  var _a;
674
- const { target, config, listen, sketchesRoot } = options;
757
+ const { target, config, listen, sketchesRoot, checkSketches } = options;
675
758
  const host = options.host || process.env['DE_HOST'] || undefined;
676
759
  const own = listen && options.port !== undefined;
677
760
  const port = own ? yield freePortOf() : options.listenOn;
@@ -730,6 +813,7 @@ const createDesignServer = (options) => __awaiter(void 0, void 0, void 0, functi
730
813
  system,
731
814
  stylesheetImports,
732
815
  shotCacheDir: listen && !own ? (0, paths_1.viteCacheOf)(target, 'shots') : null,
816
+ checkSketches,
733
817
  }),
734
818
  ] }, (listen ? {} : { appType: 'custom' })), (listen && !own ? {} : { logLevel: 'error' })), { server: Object.assign(Object.assign({
735
819
  // Studio swaps a frame for a fresh one once it has painted; a Vite reload would blank every frame at once.
@@ -737,7 +821,7 @@ const createDesignServer = (options) => __awaiter(void 0, void 0, void 0, functi
737
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 })), {
738
822
  // The frame page lives inside this package, which is outside the checkout it draws. Vite
739
823
  // serves neither root unless both are allowed.
740
- fs: { allow: [target, here, ...baseDirs] } }) }));
824
+ fs: { allow: [target, here, ...baseDirs, ...(0, exports.installedRootsOf)(target)] } }) }));
741
825
  const closing = server.close.bind(server);
742
826
  server.close = () => closing().finally(() => cache === null || cache === void 0 ? void 0 : cache.release());
743
827
  const listening = server.listen.bind(server);
@@ -762,17 +846,22 @@ const exitWhenStdinCloses = (server) => {
762
846
  process.stdin.once('close', shutDown);
763
847
  process.stdin.resume();
764
848
  };
849
+ const installedStampOf = () => (0, stamp_1.buildStampOf)((0, paths_1.installedAssetRoot)()).build;
765
850
  /**
766
851
  * Starts the design server for a checkout and keeps it running. The returned exit code is the
767
- * command's, not the server's: a listening server holds the process open on its own.
852
+ * command's, not the server's: a listening server holds the process open on its own. With
853
+ * `reloadOnRebuild`, a rebuild or reinstall of the cli restarts the server on the same port from
854
+ * the new build, inside the process that was started.
768
855
  */
769
856
  const serveDesign = (options) => __awaiter(void 0, void 0, void 0, function* () {
770
- const { target, host } = options;
857
+ const { target, host, reloadOnRebuild, checkSketches } = options;
771
858
  const config = (0, paths_1.readConfig)(target);
772
859
  if (!config) {
773
860
  console.error(`design-explore: no config at ${(0, paths_1.configPathOf)(target)}`);
774
861
  return 1;
775
862
  }
863
+ const cwd = process.cwd();
864
+ const served = reloadOnRebuild ? installedStampOf() : '';
776
865
  (0, paths_1.snapshotPackage)(target);
777
866
  const ownedByStudio = process.env['ETHLETE_DESIGN_EXIT_ON_STDIN_CLOSE'] === '1';
778
867
  const portPinned = ownedByStudio || !!Number(process.env['DE_PORT']);
@@ -782,6 +871,7 @@ const serveDesign = (options) => __awaiter(void 0, void 0, void 0, function* ()
782
871
  listen: true,
783
872
  host,
784
873
  listenOn: portPinned ? undefined : yield freePortOf(),
874
+ checkSketches,
785
875
  });
786
876
  yield server.listen();
787
877
  console.log(`design-explore: drawing ${target}`);
@@ -789,9 +879,33 @@ const serveDesign = (options) => __awaiter(void 0, void 0, void 0, function* ()
789
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`);
790
880
  }
791
881
  server.printUrls();
882
+ if (process.env['ETHLETE_DESIGN_SLOW_CHECKS'] !== 'off')
883
+ (0, slow_run_1.startSlowRunner)({
884
+ target,
885
+ configOf: () => (0, paths_1.readConfig)(target),
886
+ log: (line) => console.log(`design-explore: ${line}`),
887
+ });
792
888
  if (ownedByStudio) {
793
889
  exitWhenStdinCloses(server);
794
890
  }
891
+ if (reloadOnRebuild) {
892
+ (0, build_watch_1.watchBuild)({
893
+ root: (0, path_1.dirname)((0, paths_1.installedAssetRoot)()),
894
+ served,
895
+ stampOf: installedStampOf,
896
+ onRebuild: () => {
897
+ var _a;
898
+ 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);
900
+ console.log('design-explore: the cli was rebuilt, restarting the server from the new build');
901
+ void server
902
+ .close()
903
+ .then(() => process.env[build_watch_1.SUPERVISED_ENV] === '1'
904
+ ? process.exit(build_watch_1.RELOAD_EXIT_CODE)
905
+ : (0, build_watch_1.superviseReloads)(() => (0, build_watch_1.relaunch)({ port, cwd })).then((code) => process.exit(code)));
906
+ },
907
+ });
908
+ }
795
909
  return 0;
796
910
  });
797
911
  exports.serveDesign = serveDesign;