@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
@@ -27,9 +27,12 @@ var __rest = (this && this.__rest) || function (s, e) {
27
27
  return t;
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.flowNoteDeleteAnswer = exports.flowNoteChangeAnswer = exports.flowNoteAnswer = exports.noteDeleteAnswer = exports.noteChangeAnswer = exports.noteAnswer = exports.notesAnswer = exports.flowsAnswer = exports.commentReplyAnswer = exports.commentWithdrawAnswer = exports.commentDoneAnswer = exports.commentAnswer = exports.commentsAnswer = exports.sketchDiscardAnswer = exports.sketchMergeAnswer = exports.sketchDecisionAnswer = exports.sketchCropAnswer = exports.sketchDiffAnswer = exports.sketchCompareAnswer = exports.sketchPreviewAnswer = exports.sketchesAnswer = exports.PART_READY_PATH = exports.OPEN_POINTS_PATH = exports.MOTION_PATH = exports.EXCEPTION_APPROVE_PATH = exports.EXCEPTIONS_PATH = exports.INVENTORY_APPROVE_PATH = exports.INVENTORY_PATH = exports.FLOW_NOTE_DELETE_PATH = exports.FLOW_NOTE_CHANGE_PATH = exports.FLOW_NOTE_PATH = exports.NOTE_DELETE_PATH = exports.NOTE_CHANGE_PATH = exports.NOTE_PATH = exports.NOTES_PATH = exports.FLOWS_PATH = exports.COMMENT_EVENTS_PATH = exports.COMMENT_REPLY_PATH = exports.COMMENT_WITHDRAW_PATH = exports.COMMENT_DONE_PATH = exports.COMMENT_PATH = exports.COMMENTS_PATH = exports.SKETCH_DISCARD_PATH = exports.SKETCH_MERGE_PATH = exports.SKETCH_DECISION_PATH = exports.SKETCH_CROP_PATH = exports.SKETCH_DIFF_PATH = exports.SKETCH_COMPARE_PATH = exports.SKETCH_PREVIEW_PATH = exports.SKETCHES_PATH = void 0;
31
- exports.partReadyAnswer = exports.openPointsAnswer = exports.exceptionApproveAnswer = exports.exceptionsAnswer = exports.inventoryApproveAnswer = exports.inventoryAnswer = void 0;
30
+ exports.flowNoteChangeAnswer = exports.flowNoteAnswer = exports.noteDeleteAnswer = exports.noteChangeAnswer = exports.noteAnswer = exports.notesAnswer = exports.flowsAnswer = exports.commentReplyAnswer = exports.commentWithdrawAnswer = exports.commentDoneAnswer = exports.commentAnswer = exports.commentsAnswer = exports.sketchDiscardAnswer = exports.sketchMergeAnswer = exports.sketchDecisionAnswer = exports.sketchCropAnswer = exports.sketchDiffAnswer = exports.sketchCompareAnswer = exports.sketchPreviewAnswer = exports.sketchesAnswer = exports.PART_ACCEPT_PATH = exports.PART_GO_PATH = exports.OPEN_POINTS_PATH = exports.MOTION_PATH = exports.EXCEPTION_APPROVE_PATH = exports.EXCEPTIONS_PATH = exports.INVENTORY_APPROVE_PATH = exports.INVENTORY_PATH = exports.FLOW_NOTE_DELETE_PATH = exports.FLOW_NOTE_CHANGE_PATH = exports.FLOW_NOTE_PATH = exports.NOTE_DELETE_PATH = exports.NOTE_CHANGE_PATH = exports.NOTE_PATH = exports.NOTES_PATH = exports.FLOWS_PATH = exports.COMMENT_EVENTS_PATH = exports.COMMENT_REPLY_PATH = exports.COMMENT_WITHDRAW_PATH = exports.COMMENT_DONE_PATH = exports.COMMENT_PATH = exports.COMMENTS_PATH = exports.SKETCH_DISCARD_PATH = exports.SKETCH_MERGE_PATH = exports.SKETCH_DECISION_PATH = exports.SKETCH_CROP_PATH = exports.SKETCH_DIFF_PATH = exports.SKETCH_COMPARE_PATH = exports.SKETCH_PREVIEW_PATH = exports.SKETCHES_PATH = void 0;
31
+ exports.partAcceptAnswer = exports.partGoAnswer = exports.openPointsAnswer = exports.exceptionApproveAnswer = exports.exceptionsAnswer = exports.inventoryApproveAnswer = exports.inventoryAnswer = exports.flowNoteDeleteAnswer = void 0;
32
+ const child_process_1 = require("child_process");
32
33
  const path_1 = require("path");
34
+ const rxjs_1 = require("rxjs");
35
+ const promises_1 = require("timers/promises");
33
36
  const invocation_1 = require("../invocation");
34
37
  const paths_1 = require("./paths");
35
38
  const comment_1 = require("./system/comments/comment");
@@ -37,12 +40,20 @@ const flow_1 = require("./system/flows/flow");
37
40
  const note_1 = require("./system/notes/note");
38
41
  const exceptions_1 = require("./system/exceptions");
39
42
  const inventory_1 = require("./system/inventory");
43
+ const check_system_1 = require("./system/check-system");
44
+ const part_build_ready_1 = require("./system/part-build-ready");
40
45
  const part_ready_1 = require("./system/part-ready");
46
+ const harness_map_1 = require("./system/harness-map");
47
+ const part_go_1 = require("./system/part-go");
48
+ const action_lost_1 = require("./system/action-lost");
41
49
  const read_open_points_1 = require("./system/read-open-points");
42
50
  const flow_2 = require("./system/rules/flow");
43
51
  const check_sketches_1 = require("./system/sketch/check-sketches");
44
52
  const cli_args_1 = require("./system/sketch/cli-args");
45
53
  const merge_1 = require("./system/sketch/merge");
54
+ const merged_parts_1 = require("./system/sketch/merged-parts");
55
+ const accept_command_1 = require("./system/accept-command");
56
+ const accepted_pictures_1 = require("./system/accepted-pictures");
46
57
  const list_system_1 = require("./system/list-system");
47
58
  const merge_compare_1 = require("./merge-compare");
48
59
  const variant_diff_1 = require("./variant-diff");
@@ -80,8 +91,13 @@ exports.EXCEPTIONS_PATH = '/__design/exceptions';
80
91
  exports.EXCEPTION_APPROVE_PATH = '/__design/exception-approve';
81
92
  exports.MOTION_PATH = '/__design/motion';
82
93
  exports.OPEN_POINTS_PATH = '/__design/open-points';
83
- exports.PART_READY_PATH = '/__design/part-ready';
94
+ exports.PART_GO_PATH = '/__design/part-go';
95
+ exports.PART_ACCEPT_PATH = '/__design/part-accept';
84
96
  const failure = (status, message) => ({ status, body: { error: message } });
97
+ const refusal = (options) => ({
98
+ status: options.status,
99
+ body: Object.assign({ error: options.message, reason: options.reason }, options.extra),
100
+ });
85
101
  const productOf = ({ target, url }) => {
86
102
  const asked = url.searchParams.get('product');
87
103
  const config = (0, paths_1.readConfig)(target);
@@ -130,6 +146,17 @@ const withProduct = (method, run) => (asked) => {
130
146
  const found = productOf(asked);
131
147
  return isAnswer(found) ? found : run(Object.assign(Object.assign({}, found), { asked }));
132
148
  };
149
+ const stopping = (signal, run) => (...args) => __awaiter(void 0, void 0, void 0, function* () {
150
+ signal.throwIfAborted();
151
+ return run(...args);
152
+ });
153
+ /** `asked` with its loaders refusing to start a module load or a picture once `signal` aborts. */
154
+ const stoppingOn = (asked, signal) => {
155
+ if (!signal)
156
+ return asked;
157
+ const { load, pictureOf, boxOf } = asked;
158
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, asked), (load ? { load: stopping(signal, load) } : {})), (pictureOf ? { pictureOf: stopping(signal, pictureOf) } : {})), (boxOf ? { boxOf: stopping(signal, boxOf) } : {}));
159
+ };
133
160
  const withSketch = (method, run) => withProduct(method, (found) => {
134
161
  var _a;
135
162
  const parsed = (0, sketch_1.parseTarget)((_a = found.asked.url.searchParams.get('sketch')) !== null && _a !== void 0 ? _a : undefined);
@@ -140,7 +167,7 @@ const withSketch = (method, run) => withProduct(method, (found) => {
140
167
  return failure(404, `no sketch on ${parsed.layer}/${parsed.name} in ${found.product.name}`);
141
168
  if (typeof sketch === 'string')
142
169
  return failure(422, sketch);
143
- return run(Object.assign(Object.assign({}, found), { sketch }));
170
+ return run(Object.assign(Object.assign({}, found), { asked: stoppingOn(found.asked, found.asked.signal), sketch }));
144
171
  });
145
172
  const problemOf = ({ target, problem }) => ({
146
173
  rule: problem.rule,
@@ -160,7 +187,21 @@ const variantChangesOf = ({ current, drawn }) => ({
160
187
  dropped: current.states.filter((state) => !drawn.states.includes(state)),
161
188
  note: drawn.note === current.note ? null : { before: current.note, after: drawn.note },
162
189
  });
163
- const partTargetsOf = (_a) => __awaiter(void 0, [_a], void 0, function* ({ product, sketch, part, load, pictureOf, skipUnchanged, }) {
190
+ /** Maps `items` one after another, letting the server answer other requests before each, and stops once `signal` aborts. */
191
+ const inTurns = (_a, run_1) => __awaiter(void 0, [_a, run_1], void 0, function* ({ items, signal }, run) {
192
+ const results = [];
193
+ for (const item of items) {
194
+ yield (0, promises_1.setImmediate)();
195
+ signal === null || signal === void 0 ? void 0 : signal.throwIfAborted();
196
+ results.push(yield run(item));
197
+ }
198
+ return results;
199
+ });
200
+ const keptOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
201
+ const unchanged = options.problem ? null : yield (0, unchanged_states_1.keptUnchangedStatesOf)(options);
202
+ return unchanged ? { unchanged } : {};
203
+ });
204
+ const partTargetsOf = (_a) => __awaiter(void 0, [_a], void 0, function* ({ product, sketch, part, load, pictureOf, signal, compare, }) {
164
205
  var _b;
165
206
  const currentFile = (_b = product.parts.find((entry) => (0, resolve_product_1.partKeyOf)(entry) === part)) === null || _b === void 0 ? void 0 : _b.file;
166
207
  const current = currentFile && load
@@ -170,7 +211,7 @@ const partTargetsOf = (_a) => __awaiter(void 0, [_a], void 0, function* ({ produ
170
211
  load: () => load({ file: currentFile, product: product.name, sketch: null }),
171
212
  })
172
213
  : null;
173
- return Promise.all(sketch.variants.map((variant) => __awaiter(void 0, void 0, void 0, function* () {
214
+ return inTurns({ items: sketch.variants, signal }, (variant) => __awaiter(void 0, void 0, void 0, function* () {
174
215
  var _a;
175
216
  const file = (_a = (0, overlay_1.overlaySketch)({ product, sketch, variant }).parts.find((entry) => (0, resolve_product_1.partKeyOf)(entry) === part)) === null || _a === void 0 ? void 0 : _a.file;
176
217
  if (!file || !load)
@@ -181,50 +222,108 @@ const partTargetsOf = (_a) => __awaiter(void 0, [_a], void 0, function* ({ produ
181
222
  product: product.name,
182
223
  load: () => load({ file, product: product.name, sketch: { target: sketch.target, variant } }),
183
224
  }), { states, interactions, problem, note } = _b, widths = __rest(_b, ["states", "interactions", "problem", "note"]);
184
- return Object.assign(Object.assign(Object.assign(Object.assign({ part,
225
+ return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ part,
185
226
  variant,
186
- states }, ('widths' in widths ? { widths: widths.widths } : {})), { interactions, unchanged: problem || skipUnchanged
187
- ? []
188
- : yield (0, unchanged_states_1.unchangedStatesOf)({ product, sketch, variant, load, pictureOf, keepPictures: true, part }) }), (problem || !current || current.problem
227
+ states }, ('widths' in widths ? { widths: widths.widths } : {})), { interactions }), (compare
228
+ ? {
229
+ unchanged: problem
230
+ ? []
231
+ : yield (0, unchanged_states_1.unchangedStatesOf)({ product, sketch, variant, load, pictureOf, keepPictures: true, part }),
232
+ }
233
+ : yield keptOf({ product, sketch, variant, part, pictured: !!pictureOf, problem }))), (problem || !current || current.problem
189
234
  ? {}
190
235
  : { changes: variantChangesOf({ current, drawn: { states, note } }) })), (problem ? { error: problem } : {}));
191
- })));
236
+ }));
237
+ });
238
+ const targetsOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
239
+ return (yield inTurns({ items: options.sketch.targets, signal: options.signal }, (part) => partTargetsOf(Object.assign(Object.assign({}, options), { part })))).flat();
240
+ });
241
+ const listingOf = (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product, light, signal, }) {
242
+ var _b;
243
+ const { target } = asked;
244
+ const listOnly = light && asked.url.searchParams.get('targets') === 'no';
245
+ const listed = yield (0, sketch_1.listSketchesInTurns)({ productDir: product.dir, product: product.name });
246
+ const sketches = listed.filter((sketch) => typeof sketch !== 'string');
247
+ const checked = light
248
+ ? null
249
+ : asked.checkSketches
250
+ ? yield asked.checkSketches({ target, product: product.name })
251
+ : (0, check_sketches_1.openSketchListingOf)(product);
252
+ const unreadable = (_b = checked === null || checked === void 0 ? void 0 : checked.unreadable) !== null && _b !== void 0 ? _b : listed.flatMap((sketch) => typeof sketch === 'string' ? [{ rule: 'SKETCH', file: product.dir, message: sketch }] : []);
253
+ return {
254
+ status: 200,
255
+ body: {
256
+ sketches: yield inTurns({ items: sketches, signal }, (sketch) => __awaiter(void 0, void 0, void 0, function* () {
257
+ return (Object.assign(Object.assign(Object.assign(Object.assign({}, sketchOf({ sketch, target })), (checked
258
+ ? {
259
+ problems: checked.variants
260
+ .filter((entry) => entry.target === sketch.target)
261
+ .map((entry) => ({
262
+ variant: entry.variant,
263
+ problems: entry.problems.map((p) => problemOf({ target, problem: p })),
264
+ })),
265
+ }
266
+ : {})), (listOnly
267
+ ? {}
268
+ : {
269
+ targets: yield targetsOf({
270
+ product,
271
+ sketch,
272
+ load: asked.load,
273
+ pictureOf: asked.pictureOf,
274
+ signal,
275
+ compare: !light,
276
+ }),
277
+ })), { report: (0, sketch_1.readSketchReport)({ checkout: target, sketch }) }));
278
+ })),
279
+ unreadable: unreadable.map((problem) => problemOf({ target, problem })),
280
+ },
281
+ };
192
282
  });
193
- const targetsOf = (options) => __awaiter(void 0, void 0, void 0, function* () { return (yield Promise.all(options.sketch.targets.map((part) => partTargetsOf(Object.assign(Object.assign({}, options), { part }))))).flat(); });
283
+ const runningListings = new Map();
284
+ const startedListing = ({ key, asked, product, light, }) => {
285
+ const stop = new AbortController();
286
+ const listing = {
287
+ askers: 0,
288
+ stop,
289
+ answer: listingOf({ asked: stoppingOn(asked, stop.signal), product, light, signal: stop.signal }).finally(() => {
290
+ if (runningListings.get(key) === listing)
291
+ runningListings.delete(key);
292
+ }),
293
+ };
294
+ runningListings.set(key, listing);
295
+ return listing;
296
+ };
194
297
  /**
195
298
  * The open sketches of `?product=`, each with its target parts (`targetParts`, the first one first), variants, status,
196
299
  * decision, the rule problems of every variant, the states, widths and interactions of each target part as each variant
197
300
  * draws it (`targets`, one entry per part and variant, tagged with `part`, the first part's entries first), with the states it
198
301
  * draws the same as the product now (`unchanged`), the states it adds and drops and its part note when that differs
199
302
  * from the product's (`changes`), and the live report
200
- * of the agent (`report`, `null` when none runs). `?unchanged=no` leaves `unchanged` empty and skips the pixel comparison, which
201
- * is the slow part of a cold call.
303
+ * of the agent (`report`, `null` when none runs). `?unchanged=no` answers without `problems`, and with the `unchanged` of a target only
304
+ * while a full listing's comparison of the same sources is kept: no rule check, no pictures. `&targets=no` also leaves out `targets`: no part module loads.
305
+ * A listing asked while the same one runs gets that one's answer; it stops when every client that asked for it has closed its request.
202
306
  */
203
- exports.sketchesAnswer = withProduct('GET', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product }) {
204
- const { target } = asked;
205
- const { unreadable, variants } = (0, check_sketches_1.openSketchProblemsOf)(product);
206
- const sketches = (0, sketch_1.listSketches)({ productDir: product.dir, product: product.name }).filter((sketch) => typeof sketch !== 'string');
207
- return {
208
- status: 200,
209
- body: {
210
- sketches: yield Promise.all(sketches.map((sketch) => __awaiter(void 0, void 0, void 0, function* () {
211
- return (Object.assign(Object.assign({}, sketchOf({ sketch, target })), { problems: variants
212
- .filter((entry) => entry.sketch.target === sketch.target)
213
- .map((entry) => ({
214
- variant: entry.variant,
215
- problems: entry.problems.map((p) => problemOf({ target, problem: p })),
216
- })), targets: yield targetsOf({
217
- product,
218
- sketch,
219
- load: asked.load,
220
- pictureOf: asked.pictureOf,
221
- skipUnchanged: asked.url.searchParams.get('unchanged') === 'no',
222
- }), report: (0, sketch_1.readSketchReport)({ checkout: target, sketch }) }));
223
- }))),
224
- unreadable: unreadable.map((problem) => problemOf({ target, problem })),
225
- },
307
+ exports.sketchesAnswer = withProduct('GET', ({ asked, product }) => {
308
+ var _a, _b;
309
+ const light = asked.url.searchParams.get('unchanged') === 'no';
310
+ const key = JSON.stringify([asked.target, product.name, light, asked.url.searchParams.get('targets') === 'no']);
311
+ const listing = (_a = runningListings.get(key)) !== null && _a !== void 0 ? _a : startedListing({ key, asked, product, light });
312
+ const leave = () => {
313
+ listing.askers -= 1;
314
+ if (listing.askers > 0)
315
+ return;
316
+ listing.stop.abort();
317
+ if (runningListings.get(key) === listing)
318
+ runningListings.delete(key);
226
319
  };
227
- }));
320
+ listing.askers += 1;
321
+ if ((_b = asked.signal) === null || _b === void 0 ? void 0 : _b.aborted)
322
+ leave();
323
+ else if (asked.signal)
324
+ (0, rxjs_1.fromEvent)(asked.signal, 'abort').pipe((0, rxjs_1.take)(1)).subscribe(leave);
325
+ return listing.answer;
326
+ });
228
327
  /** `?product=&sketch=<layer>/<name>&variant=`: the parts a merge of that variant changes and the elements and pages that show them. */
229
328
  exports.sketchPreviewAnswer = withSketch('GET', ({ asked, product, sketch }) => {
230
329
  var _a;
@@ -255,7 +354,7 @@ exports.sketchCompareAnswer = withSketch('GET', (_a) => __awaiter(void 0, [_a],
255
354
  size: asked.url.searchParams.get('size'),
256
355
  params: asked.url.searchParams,
257
356
  pictureOf,
258
- load: ({ file, product: name }) => load({ file, product: name, sketch: null }),
357
+ load,
259
358
  }),
260
359
  };
261
360
  }));
@@ -266,7 +365,7 @@ exports.sketchCompareAnswer = withSketch('GET', (_a) => __awaiter(void 0, [_a],
266
365
  exports.sketchDiffAnswer = withSketch('GET', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product, sketch }) {
267
366
  var _b, _c;
268
367
  const variant = (_b = asked.url.searchParams.get('variant')) !== null && _b !== void 0 ? _b : '';
269
- const part = (_c = asked.url.searchParams.get('part')) !== null && _c !== void 0 ? _c : sketch.target;
368
+ const part = (_c = asked.url.searchParams.get('part')) !== null && _c !== void 0 ? _c : sketch.targets[0];
270
369
  const { load, pictureOf, boxOf } = asked;
271
370
  if (!sketch.variants.includes(variant))
272
371
  return failure(404, `${sketch.target} has no variant "${variant}"`);
@@ -344,14 +443,27 @@ exports.sketchDecisionAnswer = withSketch('POST', (_a) => __awaiter(void 0, [_a]
344
443
  }));
345
444
  /**
346
445
  * POST `?product=&sketch=`, body `{ note? }`: merges the picked variant into the product, as `et design sketch merge` does.
347
- * A merge refused for a stale baseline answers 422 with `changed` (the parts, `[]` without a baseline) and the `rebase` command.
446
+ * A merge refused for a stale baseline answers 422 with `changed` (the parts, `[]` without a baseline) and the `rebase` command;
447
+ * one the check fails after answers 422 with reason `check-failed` and the check's `findings` lines.
348
448
  */
349
449
  exports.sketchMergeAnswer = withSketch('POST', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, config, product, sketch }) {
350
450
  const body = yield bodyOf(asked.request);
351
451
  const note = textOf(body === null || body === void 0 ? void 0 : body['note']);
352
452
  const merged = (0, merge_1.mergeSketch)({ target: asked.target, config, product, sketch, note });
453
+ if (Array.isArray(merged))
454
+ (0, harness_map_1.refreshHarnessMap)({ target: asked.target, product });
455
+ if (Array.isArray(merged) && (note === null || note === void 0 ? void 0 : note.trim()))
456
+ for (const part of sketch.targets)
457
+ (0, merged_parts_1.recordMergeReason)({ product, part, reason: note.trim() });
353
458
  if (Array.isArray(merged))
354
459
  return { status: 200, body: { merged } };
460
+ if (merged.findings)
461
+ return refusal({
462
+ status: 422,
463
+ reason: 'check-failed',
464
+ message: merged.reason,
465
+ extra: { findings: merged.findings },
466
+ });
355
467
  if (!merged.changed)
356
468
  return failure(422, merged.reason);
357
469
  return {
@@ -368,9 +480,22 @@ exports.sketchDiscardAnswer = withSketch('POST', ({ asked, sketch }) => {
368
480
  const problem = (0, merge_1.discardSketch)({ target: asked.target, sketch });
369
481
  return problem ? failure(422, problem) : { status: 200, body: { discarded: sketch.target } };
370
482
  });
483
+ const userNameOf = (dir) => {
484
+ try {
485
+ return ((0, child_process_1.execFileSync)('git', ['config', 'user.name'], {
486
+ cwd: dir,
487
+ encoding: 'utf8',
488
+ stdio: ['ignore', 'pipe', 'ignore'],
489
+ }).trim() || null);
490
+ }
491
+ catch (_a) {
492
+ return null;
493
+ }
494
+ };
371
495
  /**
372
496
  * `?product=[&part=<layer>/<name>]`: every comment with its `replies`, oldest first, each with the reason it
373
- * is stale or `null`, its `threadState` (`agent`, `question` or `answered`) and, once closed, its `resolved`.
497
+ * is stale or `null`, its `threadState` (`agent`, `question` or `answered`) and, once closed, its `resolved`; `userName` is
498
+ * the `git config user.name` of the checkout, or `null`.
374
499
  */
375
500
  exports.commentsAnswer = withProduct('GET', ({ asked, product }) => {
376
501
  const part = asked.url.searchParams.get('part');
@@ -382,6 +507,7 @@ exports.commentsAnswer = withProduct('GET', ({ asked, product }) => {
382
507
  .filter((comment) => !part || comment.part === part)
383
508
  .map((comment) => commentOf({ comment, target: asked.target, product })),
384
509
  unreadable: unreadable.map(({ file, problem }) => ({ file: (0, path_1.relative)(asked.target, file), problem })),
510
+ userName: userNameOf(product.dir),
385
511
  },
386
512
  };
387
513
  });
@@ -577,10 +703,10 @@ exports.exceptionApproveAnswer = withProduct('POST', (_a) => __awaiter(void 0, [
577
703
  }));
578
704
  const knownPartOf = (product, part) => {
579
705
  if (typeof part !== 'string' || part === '')
580
- return failure(400, 'part is required');
706
+ return refusal({ status: 400, reason: 'part-missing', message: 'part is required' });
581
707
  return product.parts.some((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === part)
582
708
  ? part
583
- : failure(404, `product "${product.name}" has no part "${part}"`);
709
+ : refusal({ status: 404, reason: 'unknown-part', message: `product "${product.name}" has no part "${part}"` });
584
710
  };
585
711
  const drawnPointsOf = (_a, part_1) => __awaiter(void 0, [_a, part_1], void 0, function* ({ asked, config, product }, part) {
586
712
  const points = yield (0, part_ready_1.drawnPartPointsOf)({ target: asked.target, config, product, part });
@@ -589,6 +715,8 @@ const drawnPointsOf = (_a, part_1) => __awaiter(void 0, [_a, part_1], void 0, fu
589
715
  /**
590
716
  * GET `?product=&part=&draw=`: the open points of one part, or of every part without `part`. Contrasts and missing
591
717
  * control states need a draw: only `draw=true` with a `part` lists them, and `drawn` says whether they are in.
718
+ * `directEdit` says whether the merged part changed outside a sketch and waits for an accept; `buildReady` whether the
719
+ * part may be built now, or its blockers.
592
720
  */
593
721
  exports.openPointsAnswer = withProduct('GET', (found) => __awaiter(void 0, void 0, void 0, function* () {
594
722
  const { url } = found.asked;
@@ -610,31 +738,108 @@ exports.openPointsAnswer = withProduct('GET', (found) => __awaiter(void 0, void
610
738
  const located = (0, part_ready_1.readyPartOf)({ product: found.product, part });
611
739
  const hash = typeof located === 'string' ? null : located.hash;
612
740
  const ready = (0, part_ready_1.readyMarkOf)({ product: found.product, part });
613
- return { status: 200, body: { part, hash, ready, drawn: draw === 'true', points } };
741
+ const directEdit = (0, merged_parts_1.changedOutsideSketchOf)(found.product).includes(part);
742
+ const inputs = (0, check_system_1.buildReadyInputsOf)(found.product);
743
+ const buildReady = (0, part_build_ready_1.buildReadyOf)({
744
+ product: found.product,
745
+ part,
746
+ inputs: Object.assign(Object.assign({}, inputs), { pointsOf: (key) => (key === part ? points : inputs.pointsOf(key)) }),
747
+ });
748
+ return { status: 200, body: { part, hash, ready, directEdit, buildReady, drawn: draw === 'true', points } };
614
749
  }));
750
+ const STUDIO_CLICK = 'user';
751
+ const shownHashRefusalOf = (options) => {
752
+ const { product, part, shown } = options;
753
+ if (typeof shown !== 'string' || shown === '')
754
+ return refusal({ status: 400, reason: 'hash-missing', message: 'hash is required' });
755
+ const located = (0, part_ready_1.readyPartOf)({ product, part });
756
+ return typeof located !== 'string' && located.hash !== shown
757
+ ? refusal({
758
+ status: 409,
759
+ reason: 'changed',
760
+ message: `${part} changed since it was shown - reload and check it again`,
761
+ })
762
+ : null;
763
+ };
615
764
  /**
616
- * POST `?product=`, body `{ part, hash, by }`: marks a part ready at the hash Studio showed. It draws the part and
617
- * refuses with 422 and the `points` while its open-point list is not empty.
765
+ * POST `?product=`, body `{ part, hash }`: stores the Studio user's go for a part at the hash Studio showed, with the action keys it declares, regenerates a
766
+ * stale harness map (`harness` says why it could not; the go stands), then its go pictures (`unstored` says why not). A refusal answers `reason`: `hash-missing` (400), `unknown-part` (404) or
767
+ * `changed` (409). A go needs no empty open-point list.
618
768
  */
619
- exports.partReadyAnswer = withProduct('POST', (found) => __awaiter(void 0, void 0, void 0, function* () {
769
+ exports.partGoAnswer = withProduct('POST', (found) => __awaiter(void 0, void 0, void 0, function* () {
620
770
  const body = yield bodyOf(found.asked.request);
621
771
  if (!body)
622
772
  return failure(400, 'the body must be a JSON object');
623
773
  const part = knownPartOf(found.product, body['part']);
624
774
  if (typeof part !== 'string')
625
775
  return part;
626
- const marked = yield (0, part_ready_1.markPartReady)({
776
+ const shown = shownHashRefusalOf({ product: found.product, part, shown: body['hash'] });
777
+ if (shown)
778
+ return shown;
779
+ const load = found.asked.load;
780
+ const actions = load
781
+ ? yield (0, action_lost_1.partActionsOf)({
782
+ load: ({ file, product }) => load({ file, product, sketch: null }),
783
+ product: found.product,
784
+ part,
785
+ })
786
+ : undefined;
787
+ const marked = (0, part_go_1.markPartGo)(Object.assign({ product: found.product, part, by: STUDIO_CLICK, via: 'studio click', hash: body['hash'], note: 'studio click' }, (Array.isArray(actions) ? { actions } : {})));
788
+ if ('status' in marked)
789
+ return refusal({
790
+ status: marked.status,
791
+ reason: marked.status === 409 ? 'changed' : 'unknown-part',
792
+ message: marked.error,
793
+ });
794
+ const refreshed = (0, harness_map_1.refreshHarnessMap)({ target: found.asked.target, product: found.product });
795
+ const harness = typeof refreshed === 'string' ? refreshed : undefined;
796
+ const unstored = yield (0, accepted_pictures_1.storePictures)({
797
+ target: found.asked.target,
798
+ config: found.config,
627
799
  product: found.product,
628
800
  part,
629
- hash: body['hash'],
630
- by: body['by'],
631
- pointsOf: () => drawnPointsOf(found, part),
801
+ kind: 'go',
802
+ hash: marked.hash,
803
+ draw: found.asked.drawStates,
632
804
  });
633
- if ('status' in marked)
634
- return {
635
- status: marked.status,
636
- body: Object.assign({ error: marked.error }, (marked.points ? { points: marked.points } : {})),
637
- };
638
- return { status: 200, body: { part, hash: marked.hash, ready: marked, points: [] } };
805
+ return { status: 200, body: Object.assign({ part, hash: marked.hash, go: marked, unstored }, (harness ? { harness } : {})) };
806
+ }));
807
+ /**
808
+ * POST `?product=`, body `{ part, hash, note? }`: accepts the Studio user's approval of a direct edit of a merged part,
809
+ * as `et design accept` does. Checks everything before it writes; a refusal answers `reason`: `hash-missing`,
810
+ * `unknown-part`, `changed`, `findings` (with the `findings` lines), `open-sketch` or `nothing-to-accept`.
811
+ */
812
+ exports.partAcceptAnswer = withProduct('POST', (found) => __awaiter(void 0, void 0, void 0, function* () {
813
+ var _a;
814
+ const body = yield bodyOf(found.asked.request);
815
+ if (!body)
816
+ return failure(400, 'the body must be a JSON object');
817
+ const part = knownPartOf(found.product, body['part']);
818
+ if (typeof part !== 'string')
819
+ return part;
820
+ const shown = shownHashRefusalOf({ product: found.product, part, shown: body['hash'] });
821
+ if (shown)
822
+ return shown;
823
+ const refused = (0, accept_command_1.partAcceptRefusalOf)({ target: found.asked.target, product: found.product, part });
824
+ if (refused)
825
+ return refusal({
826
+ status: refused.reason === 'unknown-part' ? 404 : 422,
827
+ reason: refused.reason,
828
+ message: refused.error,
829
+ extra: 'findings' in refused ? { findings: refused.findings } : {},
830
+ });
831
+ const note = ((_a = textOf(body['note'])) === null || _a === void 0 ? void 0 : _a.trim()) || 'approved by a click in Studio';
832
+ const step = (0, accept_command_1.acceptRunOf)({
833
+ target: found.asked.target,
834
+ config: found.config,
835
+ product: found.product,
836
+ part,
837
+ by: STUDIO_CLICK,
838
+ note,
839
+ draw: found.asked.drawStates,
840
+ });
841
+ if ((yield step.run()) !== 0)
842
+ return refusal({ status: 409, reason: 'changed', message: `${part} changed while it was accepted - reload it` });
843
+ return { status: 200, body: { part, accepted: { by: STUDIO_CLICK, note } } };
639
844
  }));
640
845
  //# sourceMappingURL=studio-api.js.map