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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (837) hide show
  1. package/CHANGELOG.md +481 -0
  2. package/build-info.json +1 -0
  3. package/design/arrow-anchor.ts +55 -0
  4. package/design/define-call.ts +75 -30
  5. package/design/define-part.ts +64 -4
  6. package/design/icon-sheet.ts +1 -1
  7. package/design/interaction-rows.ts +13 -6
  8. package/design/mark-part.ts +51 -1
  9. package/design/token-sheet.ts +1 -1
  10. package/design/web/frame-fit.ts +7 -0
  11. package/design/web/frame-surfaces.ts +294 -0
  12. package/design/web/frame.ts +69 -15
  13. package/design/web/surface-interactive.css +42 -0
  14. package/design/with-action.ts +29 -0
  15. package/package.json +3 -1
  16. package/src/index.js +9 -1
  17. package/src/index.js.map +1 -1
  18. package/src/lib/api/compose.js +3 -2
  19. package/src/lib/api/compose.js.map +1 -1
  20. package/src/lib/api/git.js +2 -1
  21. package/src/lib/api/git.js.map +1 -1
  22. package/src/lib/api/setup.js +2 -2
  23. package/src/lib/api/setup.js.map +1 -1
  24. package/src/lib/design/asset-shot.js +4 -4
  25. package/src/lib/design/asset-shot.js.map +1 -1
  26. package/src/lib/design/blank-png.d.ts +2 -0
  27. package/src/lib/design/blank-png.js +28 -0
  28. package/src/lib/design/blank-png.js.map +1 -0
  29. package/src/lib/design/build-watch.d.ts +26 -0
  30. package/src/lib/design/build-watch.js +138 -0
  31. package/src/lib/design/build-watch.js.map +1 -0
  32. package/src/lib/design/cache-entry.d.ts +8 -0
  33. package/src/lib/design/cache-entry.js +30 -0
  34. package/src/lib/design/cache-entry.js.map +1 -0
  35. package/src/lib/design/calls-tsconfig.js +20 -13
  36. package/src/lib/design/calls-tsconfig.js.map +1 -1
  37. package/src/lib/design/calls.js +3 -3
  38. package/src/lib/design/calls.js.map +1 -1
  39. package/src/lib/design/changed-parts.d.ts +1 -1
  40. package/src/lib/design/check.d.ts +2 -0
  41. package/src/lib/design/check.js +217 -24
  42. package/src/lib/design/check.js.map +1 -1
  43. package/src/lib/design/code-hash.d.ts +30 -0
  44. package/src/lib/design/code-hash.js +118 -0
  45. package/src/lib/design/code-hash.js.map +1 -0
  46. package/src/lib/design/commit-hunks.d.ts +22 -0
  47. package/src/lib/design/commit-hunks.js +173 -0
  48. package/src/lib/design/commit-hunks.js.map +1 -0
  49. package/src/lib/design/design-command.d.ts +2 -0
  50. package/src/lib/design/design-command.js +271 -27
  51. package/src/lib/design/design-command.js.map +1 -1
  52. package/src/lib/design/{paths.d.ts → design-config.d.ts} +34 -28
  53. package/src/lib/design/design-config.js +35 -0
  54. package/src/lib/design/design-config.js.map +1 -0
  55. package/src/lib/design/design-lint.d.ts +68 -0
  56. package/src/lib/design/design-lint.js +183 -0
  57. package/src/lib/design/design-lint.js.map +1 -0
  58. package/src/lib/design/draw-ledger.d.ts +6 -0
  59. package/src/lib/design/draw-ledger.js +10 -0
  60. package/src/lib/design/draw-ledger.js.map +1 -1
  61. package/src/lib/design/force-interactions.d.ts +3 -1
  62. package/src/lib/design/force-interactions.js +8 -4
  63. package/src/lib/design/force-interactions.js.map +1 -1
  64. package/src/lib/design/generated-stylesheets.d.ts +1 -1
  65. package/src/lib/design/generated-stylesheets.js +2 -2
  66. package/src/lib/design/generated-stylesheets.js.map +1 -1
  67. package/src/lib/design/git-top.d.ts +5 -0
  68. package/src/lib/design/git-top.js +16 -0
  69. package/src/lib/design/git-top.js.map +1 -0
  70. package/src/lib/design/hooks-problem.d.ts +2 -0
  71. package/src/lib/design/hooks-problem.js +23 -0
  72. package/src/lib/design/hooks-problem.js.map +1 -0
  73. package/src/lib/design/inbox-command.js +9 -5
  74. package/src/lib/design/inbox-command.js.map +1 -1
  75. package/src/lib/design/index.d.ts +4 -1
  76. package/src/lib/design/index.js +4 -1
  77. package/src/lib/design/index.js.map +1 -1
  78. package/src/lib/design/is-running.d.ts +1 -0
  79. package/src/lib/design/is-running.js +14 -0
  80. package/src/lib/design/is-running.js.map +1 -0
  81. package/src/lib/design/legacy.js +3 -3
  82. package/src/lib/design/legacy.js.map +1 -1
  83. package/src/lib/design/mcp-command.d.ts +5 -1
  84. package/src/lib/design/mcp-command.js +27 -16
  85. package/src/lib/design/mcp-command.js.map +1 -1
  86. package/src/lib/design/merge-compare.d.ts +10 -2
  87. package/src/lib/design/merge-compare.js +63 -11
  88. package/src/lib/design/merge-compare.js.map +1 -1
  89. package/src/lib/design/motion-command.js +4 -4
  90. package/src/lib/design/motion-command.js.map +1 -1
  91. package/src/lib/design/motion-shot.js +3 -2
  92. package/src/lib/design/motion-shot.js.map +1 -1
  93. package/src/lib/design/new-call.js +22 -13
  94. package/src/lib/design/new-call.js.map +1 -1
  95. package/src/lib/design/old-shot-folders.d.ts +2 -0
  96. package/src/lib/design/old-shot-folders.js +26 -0
  97. package/src/lib/design/old-shot-folders.js.map +1 -0
  98. package/src/lib/design/package-root.d.ts +21 -0
  99. package/src/lib/design/package-root.js +79 -0
  100. package/src/lib/design/package-root.js.map +1 -0
  101. package/src/lib/design/parent-watch.d.ts +7 -0
  102. package/src/lib/design/parent-watch.js +23 -0
  103. package/src/lib/design/parent-watch.js.map +1 -0
  104. package/src/lib/design/part-marks.d.ts +3 -2
  105. package/src/lib/design/part-marks.js +15 -7
  106. package/src/lib/design/part-marks.js.map +1 -1
  107. package/src/lib/design/phase-timing.d.ts +5 -0
  108. package/src/lib/design/phase-timing.js +27 -0
  109. package/src/lib/design/phase-timing.js.map +1 -0
  110. package/src/lib/design/physical-cores.d.ts +12 -0
  111. package/src/lib/design/physical-cores.js +43 -0
  112. package/src/lib/design/physical-cores.js.map +1 -0
  113. package/src/lib/design/product-command.d.ts +1 -1
  114. package/src/lib/design/product-command.js +16 -18
  115. package/src/lib/design/product-command.js.map +1 -1
  116. package/src/lib/design/push-status.d.ts +30 -0
  117. package/src/lib/design/push-status.js +122 -0
  118. package/src/lib/design/push-status.js.map +1 -0
  119. package/src/lib/design/ready-shots.d.ts +21 -12
  120. package/src/lib/design/ready-shots.js +79 -44
  121. package/src/lib/design/ready-shots.js.map +1 -1
  122. package/src/lib/design/render-packages.d.ts +7 -18
  123. package/src/lib/design/render-packages.js +24 -63
  124. package/src/lib/design/render-packages.js.map +1 -1
  125. package/src/lib/design/render-worker.js +24 -6
  126. package/src/lib/design/render-worker.js.map +1 -1
  127. package/src/lib/design/render.d.ts +26 -3
  128. package/src/lib/design/render.js +52 -13
  129. package/src/lib/design/render.js.map +1 -1
  130. package/src/lib/design/resident/client.d.ts +52 -0
  131. package/src/lib/design/resident/client.js +263 -0
  132. package/src/lib/design/resident/client.js.map +1 -0
  133. package/src/lib/design/resident/discovery.d.ts +21 -0
  134. package/src/lib/design/resident/discovery.js +63 -0
  135. package/src/lib/design/resident/discovery.js.map +1 -0
  136. package/src/lib/design/resident/resident-process.d.ts +19 -0
  137. package/src/lib/design/resident/resident-process.js +189 -0
  138. package/src/lib/design/resident/resident-process.js.map +1 -0
  139. package/src/lib/design/resident/server.d.ts +52 -0
  140. package/src/lib/design/resident/server.js +212 -0
  141. package/src/lib/design/resident/server.js.map +1 -0
  142. package/src/lib/design/run-abort.d.ts +9 -0
  143. package/src/lib/design/run-abort.js +45 -0
  144. package/src/lib/design/run-abort.js.map +1 -0
  145. package/src/lib/design/run-deadline.d.ts +19 -0
  146. package/src/lib/design/run-deadline.js +104 -0
  147. package/src/lib/design/run-deadline.js.map +1 -0
  148. package/src/lib/design/run-yield.d.ts +8 -0
  149. package/src/lib/design/run-yield.js +43 -0
  150. package/src/lib/design/run-yield.js.map +1 -0
  151. package/src/lib/design/serve-state.d.ts +15 -0
  152. package/src/lib/design/serve-state.js +56 -0
  153. package/src/lib/design/serve-state.js.map +1 -0
  154. package/src/lib/design/serve.d.ts +41 -3
  155. package/src/lib/design/serve.js +272 -54
  156. package/src/lib/design/serve.js.map +1 -1
  157. package/src/lib/design/server-identity.d.ts +40 -0
  158. package/src/lib/design/server-identity.js +71 -0
  159. package/src/lib/design/server-identity.js.map +1 -0
  160. package/src/lib/design/settle-frames.d.ts +4 -0
  161. package/src/lib/design/settle-frames.js +22 -0
  162. package/src/lib/design/settle-frames.js.map +1 -0
  163. package/src/lib/design/shot-board.d.ts +26 -0
  164. package/src/lib/design/shot-board.js +80 -0
  165. package/src/lib/design/shot-board.js.map +1 -0
  166. package/src/lib/design/shot-command.d.ts +26 -5
  167. package/src/lib/design/shot-command.js +143 -50
  168. package/src/lib/design/shot-command.js.map +1 -1
  169. package/src/lib/design/shot-store.d.ts +29 -3
  170. package/src/lib/design/shot-store.js +206 -36
  171. package/src/lib/design/shot-store.js.map +1 -1
  172. package/src/lib/design/shot.d.ts +60 -2
  173. package/src/lib/design/shot.js +238 -28
  174. package/src/lib/design/shot.js.map +1 -1
  175. package/src/lib/design/sketch-at.js +2 -1
  176. package/src/lib/design/sketch-at.js.map +1 -1
  177. package/src/lib/design/sketch-command.d.ts +19 -1
  178. package/src/lib/design/sketch-command.js +664 -159
  179. package/src/lib/design/sketch-command.js.map +1 -1
  180. package/src/lib/design/ssr-shims.d.ts +1 -0
  181. package/src/lib/design/ssr-shims.js +3 -3
  182. package/src/lib/design/ssr-shims.js.map +1 -1
  183. package/src/lib/design/stale-cli-dist.d.ts +11 -0
  184. package/src/lib/design/stale-cli-dist.js +56 -0
  185. package/src/lib/design/stale-cli-dist.js.map +1 -0
  186. package/src/lib/design/stamp.d.ts +23 -1
  187. package/src/lib/design/stamp.js +56 -9
  188. package/src/lib/design/stamp.js.map +1 -1
  189. package/src/lib/design/started-by-studio.d.ts +1 -0
  190. package/src/lib/design/started-by-studio.js +6 -0
  191. package/src/lib/design/started-by-studio.js.map +1 -0
  192. package/src/lib/design/status.d.ts +1 -1
  193. package/src/lib/design/status.js +15 -4
  194. package/src/lib/design/status.js.map +1 -1
  195. package/src/lib/design/studio-api.d.ts +21 -10
  196. package/src/lib/design/studio-api.js +192 -88
  197. package/src/lib/design/studio-api.js.map +1 -1
  198. package/src/lib/design/system/accepted-pictures.d.ts +69 -0
  199. package/src/lib/design/system/accepted-pictures.js +346 -0
  200. package/src/lib/design/system/accepted-pictures.js.map +1 -0
  201. package/src/lib/design/system/action-cache.d.ts +45 -0
  202. package/src/lib/design/system/action-cache.js +72 -0
  203. package/src/lib/design/system/action-cache.js.map +1 -0
  204. package/src/lib/design/system/action-lost.d.ts +61 -0
  205. package/src/lib/design/system/action-lost.js +116 -0
  206. package/src/lib/design/system/action-lost.js.map +1 -0
  207. package/src/lib/design/system/action-press.d.ts +29 -0
  208. package/src/lib/design/system/action-press.js +88 -0
  209. package/src/lib/design/system/action-press.js.map +1 -0
  210. package/src/lib/design/system/action-undeclared.d.ts +34 -0
  211. package/src/lib/design/system/action-undeclared.js +81 -0
  212. package/src/lib/design/system/action-undeclared.js.map +1 -0
  213. package/src/lib/design/system/actions-command.d.ts +108 -0
  214. package/src/lib/design/system/actions-command.js +816 -0
  215. package/src/lib/design/system/actions-command.js.map +1 -0
  216. package/src/lib/design/system/actions.d.ts +181 -0
  217. package/src/lib/design/system/actions.js +333 -0
  218. package/src/lib/design/system/actions.js.map +1 -0
  219. package/src/lib/design/system/anti-alias.d.ts +2 -0
  220. package/src/lib/design/system/anti-alias.js +11 -0
  221. package/src/lib/design/system/anti-alias.js.map +1 -0
  222. package/src/lib/design/system/app-files.d.ts +10 -0
  223. package/src/lib/design/system/app-files.js +175 -0
  224. package/src/lib/design/system/app-files.js.map +1 -0
  225. package/src/lib/design/system/arrow-anchor.d.ts +9 -0
  226. package/src/lib/design/system/arrow-anchor.js +40 -0
  227. package/src/lib/design/system/arrow-anchor.js.map +1 -0
  228. package/src/lib/design/system/base-issues.d.ts +28 -0
  229. package/src/lib/design/system/base-issues.js +80 -0
  230. package/src/lib/design/system/base-issues.js.map +1 -0
  231. package/src/lib/design/system/base.d.ts +1 -1
  232. package/src/lib/design/system/base.js +2 -2
  233. package/src/lib/design/system/base.js.map +1 -1
  234. package/src/lib/design/system/baseline-history.d.ts +13 -0
  235. package/src/lib/design/system/baseline-history.js +40 -0
  236. package/src/lib/design/system/baseline-history.js.map +1 -0
  237. package/src/lib/design/system/bespoke-controls.d.ts +33 -0
  238. package/src/lib/design/system/bespoke-controls.js +149 -0
  239. package/src/lib/design/system/bespoke-controls.js.map +1 -0
  240. package/src/lib/design/system/build-ready-contract.d.ts +33 -0
  241. package/src/lib/design/system/build-ready-contract.js +18 -0
  242. package/src/lib/design/system/build-ready-contract.js.map +1 -0
  243. package/src/lib/design/system/build-running.d.ts +13 -0
  244. package/src/lib/design/system/build-running.js +48 -0
  245. package/src/lib/design/system/build-running.js.map +1 -0
  246. package/src/lib/design/system/check-record.d.ts +18 -0
  247. package/src/lib/design/system/check-record.js +47 -0
  248. package/src/lib/design/system/check-record.js.map +1 -0
  249. package/src/lib/design/system/check-rules.d.ts +1 -0
  250. package/src/lib/design/system/check-rules.js +100 -0
  251. package/src/lib/design/system/check-rules.js.map +1 -0
  252. package/src/lib/design/system/check-system.d.ts +83 -7
  253. package/src/lib/design/system/check-system.js +647 -68
  254. package/src/lib/design/system/check-system.js.map +1 -1
  255. package/src/lib/design/system/comments/comment.d.ts +4 -1
  256. package/src/lib/design/system/comments/comment.js +13 -4
  257. package/src/lib/design/system/comments/comment.js.map +1 -1
  258. package/src/lib/design/system/comments/inbox.d.ts +1 -1
  259. package/src/lib/design/system/comments/inbox.js +2 -2
  260. package/src/lib/design/system/comments/inbox.js.map +1 -1
  261. package/src/lib/design/system/compare-cache.d.ts +20 -0
  262. package/src/lib/design/system/compare-cache.js +92 -0
  263. package/src/lib/design/system/compare-cache.js.map +1 -0
  264. package/src/lib/design/system/compare-command.d.ts +150 -0
  265. package/src/lib/design/system/compare-command.js +580 -0
  266. package/src/lib/design/system/compare-command.js.map +1 -0
  267. package/src/lib/design/system/complete-command.js +1 -1
  268. package/src/lib/design/system/complete-command.js.map +1 -1
  269. package/src/lib/design/system/complete.d.ts +63 -2
  270. package/src/lib/design/system/complete.js +281 -71
  271. package/src/lib/design/system/complete.js.map +1 -1
  272. package/src/lib/design/system/component-outputs.d.ts +20 -0
  273. package/src/lib/design/system/component-outputs.js +86 -0
  274. package/src/lib/design/system/component-outputs.js.map +1 -0
  275. package/src/lib/design/system/contrast-check.d.ts +1 -1
  276. package/src/lib/design/system/contrast-check.js +14 -3
  277. package/src/lib/design/system/contrast-check.js.map +1 -1
  278. package/src/lib/design/system/decision-refs.d.ts +5 -0
  279. package/src/lib/design/system/decision-refs.js +21 -0
  280. package/src/lib/design/system/decision-refs.js.map +1 -0
  281. package/src/lib/design/system/demo-backdrop.d.ts +11 -0
  282. package/src/lib/design/system/demo-backdrop.js +41 -0
  283. package/src/lib/design/system/demo-backdrop.js.map +1 -0
  284. package/src/lib/design/system/design-hash.d.ts +52 -0
  285. package/src/lib/design/system/design-hash.js +132 -0
  286. package/src/lib/design/system/design-hash.js.map +1 -0
  287. package/src/lib/design/system/disabled-interaction.d.ts +8 -0
  288. package/src/lib/design/system/disabled-interaction.js +37 -0
  289. package/src/lib/design/system/disabled-interaction.js.map +1 -0
  290. package/src/lib/design/system/dom-command.d.ts +36 -0
  291. package/src/lib/design/system/dom-command.js +178 -0
  292. package/src/lib/design/system/dom-command.js.map +1 -0
  293. package/src/lib/design/system/drawn-open-points.d.ts +26 -4
  294. package/src/lib/design/system/drawn-open-points.js +65 -14
  295. package/src/lib/design/system/drawn-open-points.js.map +1 -1
  296. package/src/lib/design/system/dropped-props.d.ts +39 -0
  297. package/src/lib/design/system/dropped-props.js +271 -0
  298. package/src/lib/design/system/dropped-props.js.map +1 -0
  299. package/src/lib/design/system/embedded-actions.d.ts +21 -0
  300. package/src/lib/design/system/embedded-actions.js +37 -0
  301. package/src/lib/design/system/embedded-actions.js.map +1 -0
  302. package/src/lib/design/system/exceptions.js +2 -1
  303. package/src/lib/design/system/exceptions.js.map +1 -1
  304. package/src/lib/design/system/flows/flow.js +2 -1
  305. package/src/lib/design/system/flows/flow.js.map +1 -1
  306. package/src/lib/design/system/frozen-animations.d.ts +13 -0
  307. package/src/lib/design/system/frozen-animations.js +51 -0
  308. package/src/lib/design/system/frozen-animations.js.map +1 -0
  309. package/src/lib/design/system/grid-report.d.ts +5 -0
  310. package/src/lib/design/system/grid-report.js +78 -0
  311. package/src/lib/design/system/grid-report.js.map +1 -0
  312. package/src/lib/design/system/handoff.js +2 -1
  313. package/src/lib/design/system/handoff.js.map +1 -1
  314. package/src/lib/design/system/harness-build-cache.d.ts +49 -0
  315. package/src/lib/design/system/harness-build-cache.js +188 -0
  316. package/src/lib/design/system/harness-build-cache.js.map +1 -0
  317. package/src/lib/design/system/harness-command.d.ts +7 -0
  318. package/src/lib/design/system/harness-command.js +51 -0
  319. package/src/lib/design/system/harness-command.js.map +1 -0
  320. package/src/lib/design/system/harness-config.d.ts +9 -0
  321. package/src/lib/design/system/harness-config.js +65 -0
  322. package/src/lib/design/system/harness-config.js.map +1 -0
  323. package/src/lib/design/system/harness-inputs.d.ts +17 -0
  324. package/src/lib/design/system/harness-inputs.js +160 -0
  325. package/src/lib/design/system/harness-inputs.js.map +1 -0
  326. package/src/lib/design/system/harness-map.d.ts +44 -0
  327. package/src/lib/design/system/harness-map.js +126 -0
  328. package/src/lib/design/system/harness-map.js.map +1 -0
  329. package/src/lib/design/system/harness-samples.d.ts +20 -0
  330. package/src/lib/design/system/harness-samples.js +92 -0
  331. package/src/lib/design/system/harness-samples.js.map +1 -0
  332. package/src/lib/design/system/harness-server.d.ts +51 -0
  333. package/src/lib/design/system/harness-server.js +306 -0
  334. package/src/lib/design/system/harness-server.js.map +1 -0
  335. package/src/lib/design/system/harness-shot.d.ts +78 -0
  336. package/src/lib/design/system/harness-shot.js +349 -0
  337. package/src/lib/design/system/harness-shot.js.map +1 -0
  338. package/src/lib/design/system/harness-watch.d.ts +79 -0
  339. package/src/lib/design/system/harness-watch.js +334 -0
  340. package/src/lib/design/system/harness-watch.js.map +1 -0
  341. package/src/lib/design/system/implementation-baseline.d.ts +20 -0
  342. package/src/lib/design/system/implementation-baseline.js +44 -0
  343. package/src/lib/design/system/implementation-baseline.js.map +1 -0
  344. package/src/lib/design/system/imports.js +14 -1
  345. package/src/lib/design/system/imports.js.map +1 -1
  346. package/src/lib/design/system/in-order-at-once.d.ts +6 -0
  347. package/src/lib/design/system/in-order-at-once.js +28 -0
  348. package/src/lib/design/system/in-order-at-once.js.map +1 -0
  349. package/src/lib/design/system/inventory-approval.js +2 -1
  350. package/src/lib/design/system/inventory-approval.js.map +1 -1
  351. package/src/lib/design/system/inventory.d.ts +13 -4
  352. package/src/lib/design/system/inventory.js +36 -7
  353. package/src/lib/design/system/inventory.js.map +1 -1
  354. package/src/lib/design/system/leftover-gate-files.d.ts +2 -0
  355. package/src/lib/design/system/leftover-gate-files.js +15 -0
  356. package/src/lib/design/system/leftover-gate-files.js.map +1 -0
  357. package/src/lib/design/system/lib-build-lock.d.ts +18 -0
  358. package/src/lib/design/system/lib-build-lock.js +111 -0
  359. package/src/lib/design/system/lib-build-lock.js.map +1 -0
  360. package/src/lib/design/system/link-free.d.ts +12 -0
  361. package/src/lib/design/system/link-free.js +125 -0
  362. package/src/lib/design/system/link-free.js.map +1 -0
  363. package/src/lib/design/system/list-system.d.ts +8 -8
  364. package/src/lib/design/system/list-system.js +19 -80
  365. package/src/lib/design/system/list-system.js.map +1 -1
  366. package/src/lib/design/system/live-actions.d.ts +121 -0
  367. package/src/lib/design/system/live-actions.js +674 -0
  368. package/src/lib/design/system/live-actions.js.map +1 -0
  369. package/src/lib/design/system/live-compare.d.ts +136 -0
  370. package/src/lib/design/system/live-compare.js +441 -0
  371. package/src/lib/design/system/live-compare.js.map +1 -0
  372. package/src/lib/design/system/live-uncovered.d.ts +45 -0
  373. package/src/lib/design/system/live-uncovered.js +158 -0
  374. package/src/lib/design/system/live-uncovered.js.map +1 -0
  375. package/src/lib/design/system/nested-scroll.d.ts +7 -0
  376. package/src/lib/design/system/nested-scroll.js +25 -0
  377. package/src/lib/design/system/nested-scroll.js.map +1 -0
  378. package/src/lib/design/system/no-verdict.d.ts +13 -0
  379. package/src/lib/design/system/no-verdict.js +17 -0
  380. package/src/lib/design/system/no-verdict.js.map +1 -0
  381. package/src/lib/design/system/notes/note.js +2 -1
  382. package/src/lib/design/system/notes/note.js.map +1 -1
  383. package/src/lib/design/system/occluded.d.ts +13 -0
  384. package/src/lib/design/system/occluded.js +111 -0
  385. package/src/lib/design/system/occluded.js.map +1 -0
  386. package/src/lib/design/system/off-centre.d.ts +11 -0
  387. package/src/lib/design/system/off-centre.js +74 -0
  388. package/src/lib/design/system/off-centre.js.map +1 -0
  389. package/src/lib/design/system/open-points-cache.d.ts +11 -0
  390. package/src/lib/design/system/open-points-cache.js +27 -0
  391. package/src/lib/design/system/open-points-cache.js.map +1 -0
  392. package/src/lib/design/system/open-points-runner.d.ts +43 -0
  393. package/src/lib/design/system/open-points-runner.js +119 -0
  394. package/src/lib/design/system/open-points-runner.js.map +1 -0
  395. package/src/lib/design/system/open-points-worker.d.ts +1 -0
  396. package/src/lib/design/system/open-points-worker.js +28 -0
  397. package/src/lib/design/system/open-points-worker.js.map +1 -0
  398. package/src/lib/design/system/open-points.d.ts +24 -6
  399. package/src/lib/design/system/open-points.js +59 -30
  400. package/src/lib/design/system/open-points.js.map +1 -1
  401. package/src/lib/design/system/part-build-ready.d.ts +45 -0
  402. package/src/lib/design/system/part-build-ready.js +135 -0
  403. package/src/lib/design/system/part-build-ready.js.map +1 -0
  404. package/src/lib/design/system/part-command.js +2 -9
  405. package/src/lib/design/system/part-command.js.map +1 -1
  406. package/src/lib/design/system/part-compare.d.ts +139 -0
  407. package/src/lib/design/system/part-compare.js +501 -0
  408. package/src/lib/design/system/part-compare.js.map +1 -0
  409. package/src/lib/design/system/part-picture-cache.d.ts +23 -0
  410. package/src/lib/design/system/part-picture-cache.js +68 -0
  411. package/src/lib/design/system/part-picture-cache.js.map +1 -0
  412. package/src/lib/design/system/part-ready.d.ts +71 -7
  413. package/src/lib/design/system/part-ready.js +128 -19
  414. package/src/lib/design/system/part-ready.js.map +1 -1
  415. package/src/lib/design/system/part-task.d.ts +167 -0
  416. package/src/lib/design/system/part-task.js +331 -0
  417. package/src/lib/design/system/part-task.js.map +1 -0
  418. package/src/lib/design/system/pixel-cache.d.ts +16 -0
  419. package/src/lib/design/system/pixel-cache.js +79 -0
  420. package/src/lib/design/system/pixel-cache.js.map +1 -0
  421. package/src/lib/design/system/pointer-focus.d.ts +89 -0
  422. package/src/lib/design/system/pointer-focus.js +175 -0
  423. package/src/lib/design/system/pointer-focus.js.map +1 -0
  424. package/src/lib/design/system/prettier.d.ts +10 -0
  425. package/src/lib/design/system/prettier.js +37 -0
  426. package/src/lib/design/system/prettier.js.map +1 -0
  427. package/src/lib/design/system/problem.d.ts +6 -0
  428. package/src/lib/design/system/product.js +2 -2
  429. package/src/lib/design/system/product.js.map +1 -1
  430. package/src/lib/design/system/reach.d.ts +12 -0
  431. package/src/lib/design/system/reach.js +186 -0
  432. package/src/lib/design/system/reach.js.map +1 -0
  433. package/src/lib/design/system/reachable-controls.d.ts +6 -0
  434. package/src/lib/design/system/reachable-controls.js +19 -0
  435. package/src/lib/design/system/reachable-controls.js.map +1 -0
  436. package/src/lib/design/system/reachable-files.d.ts +14 -0
  437. package/src/lib/design/system/reachable-files.js +101 -0
  438. package/src/lib/design/system/reachable-files.js.map +1 -0
  439. package/src/lib/design/system/reached-state.d.ts +23 -0
  440. package/src/lib/design/system/reached-state.js +53 -0
  441. package/src/lib/design/system/reached-state.js.map +1 -0
  442. package/src/lib/design/system/read-open-points.d.ts +9 -3
  443. package/src/lib/design/system/read-open-points.js +38 -9
  444. package/src/lib/design/system/read-open-points.js.map +1 -1
  445. package/src/lib/design/system/ready-command.d.ts +6 -2
  446. package/src/lib/design/system/ready-command.js +52 -15
  447. package/src/lib/design/system/ready-command.js.map +1 -1
  448. package/src/lib/design/system/record-settled.d.ts +24 -0
  449. package/src/lib/design/system/record-settled.js +50 -0
  450. package/src/lib/design/system/record-settled.js.map +1 -0
  451. package/src/lib/design/system/render-check.d.ts +68 -1
  452. package/src/lib/design/system/render-check.js +427 -114
  453. package/src/lib/design/system/render-check.js.map +1 -1
  454. package/src/lib/design/system/render-issue-key.d.ts +9 -0
  455. package/src/lib/design/system/render-issue-key.js +27 -0
  456. package/src/lib/design/system/render-issue-key.js.map +1 -0
  457. package/src/lib/design/system/resolve-product.d.ts +4 -1
  458. package/src/lib/design/system/resolve-product.js +19 -3
  459. package/src/lib/design/system/resolve-product.js.map +1 -1
  460. package/src/lib/design/system/rule-baseline.d.ts +53 -0
  461. package/src/lib/design/system/rule-baseline.js +124 -0
  462. package/src/lib/design/system/rule-baseline.js.map +1 -0
  463. package/src/lib/design/system/rule-skips.d.ts +20 -0
  464. package/src/lib/design/system/rule-skips.js +36 -0
  465. package/src/lib/design/system/rule-skips.js.map +1 -0
  466. package/src/lib/design/system/rules/app-spec.d.ts +30 -0
  467. package/src/lib/design/system/rules/app-spec.js +87 -0
  468. package/src/lib/design/system/rules/app-spec.js.map +1 -0
  469. package/src/lib/design/system/rules/canonical-class.d.ts +6 -0
  470. package/src/lib/design/system/rules/canonical-class.js +92 -113
  471. package/src/lib/design/system/rules/canonical-class.js.map +1 -1
  472. package/src/lib/design/system/rules/capability-place.d.ts +46 -0
  473. package/src/lib/design/system/rules/capability-place.js +129 -0
  474. package/src/lib/design/system/rules/capability-place.js.map +1 -0
  475. package/src/lib/design/system/rules/command-text.d.ts +7 -0
  476. package/src/lib/design/system/rules/command-text.js +72 -0
  477. package/src/lib/design/system/rules/command-text.js.map +1 -0
  478. package/src/lib/design/system/rules/denied-class.d.ts +9 -0
  479. package/src/lib/design/system/rules/denied-class.js +121 -0
  480. package/src/lib/design/system/rules/denied-class.js.map +1 -0
  481. package/src/lib/design/system/rules/design-coverage.d.ts +30 -0
  482. package/src/lib/design/system/rules/design-coverage.js +205 -0
  483. package/src/lib/design/system/rules/design-coverage.js.map +1 -0
  484. package/src/lib/design/system/rules/exemptions.d.ts +18 -0
  485. package/src/lib/design/system/rules/exemptions.js +18 -0
  486. package/src/lib/design/system/rules/exemptions.js.map +1 -0
  487. package/src/lib/design/system/rules/flow.js +1 -1
  488. package/src/lib/design/system/rules/flow.js.map +1 -1
  489. package/src/lib/design/system/rules/glued-interpolation.d.ts +8 -0
  490. package/src/lib/design/system/rules/glued-interpolation.js +77 -0
  491. package/src/lib/design/system/rules/glued-interpolation.js.map +1 -0
  492. package/src/lib/design/system/rules/hard-coded-colour.js +2 -1
  493. package/src/lib/design/system/rules/hard-coded-colour.js.map +1 -1
  494. package/src/lib/design/system/rules/implemented-components.d.ts +22 -0
  495. package/src/lib/design/system/rules/implemented-components.js +45 -0
  496. package/src/lib/design/system/rules/implemented-components.js.map +1 -0
  497. package/src/lib/design/system/rules/implements-unrendered.d.ts +13 -0
  498. package/src/lib/design/system/rules/implements-unrendered.js +63 -0
  499. package/src/lib/design/system/rules/implements-unrendered.js.map +1 -0
  500. package/src/lib/design/system/rules/implements.d.ts +2 -1
  501. package/src/lib/design/system/rules/implements.js +26 -21
  502. package/src/lib/design/system/rules/implements.js.map +1 -1
  503. package/src/lib/design/system/rules/inline-svg.js +4 -1
  504. package/src/lib/design/system/rules/inline-svg.js.map +1 -1
  505. package/src/lib/design/system/rules/inline-ui-in-page-open.d.ts +13 -0
  506. package/src/lib/design/system/rules/inline-ui-in-page-open.js +5 -0
  507. package/src/lib/design/system/rules/inline-ui-in-page-open.js.map +1 -0
  508. package/src/lib/design/system/rules/inline-ui-in-page.d.ts +18 -0
  509. package/src/lib/design/system/rules/inline-ui-in-page.js +123 -0
  510. package/src/lib/design/system/rules/inline-ui-in-page.js.map +1 -0
  511. package/src/lib/design/system/rules/inline-ui.d.ts +16 -0
  512. package/src/lib/design/system/rules/inline-ui.js +100 -0
  513. package/src/lib/design/system/rules/inline-ui.js.map +1 -0
  514. package/src/lib/design/system/rules/motion.d.ts +1 -1
  515. package/src/lib/design/system/rules/motion.js +31 -17
  516. package/src/lib/design/system/rules/motion.js.map +1 -1
  517. package/src/lib/design/system/rules/native-title.d.ts +7 -0
  518. package/src/lib/design/system/rules/native-title.js +74 -0
  519. package/src/lib/design/system/rules/native-title.js.map +1 -0
  520. package/src/lib/design/system/rules/option-values.d.ts +1 -1
  521. package/src/lib/design/system/rules/orphan-endpoint-known.d.ts +12 -0
  522. package/src/lib/design/system/rules/orphan-endpoint-known.js +20 -0
  523. package/src/lib/design/system/rules/orphan-endpoint-known.js.map +1 -0
  524. package/src/lib/design/system/rules/orphan-endpoint.d.ts +23 -0
  525. package/src/lib/design/system/rules/orphan-endpoint.js +166 -0
  526. package/src/lib/design/system/rules/orphan-endpoint.js.map +1 -0
  527. package/src/lib/design/system/rules/part-rewrite.d.ts +13 -0
  528. package/src/lib/design/system/rules/part-rewrite.js +125 -0
  529. package/src/lib/design/system/rules/part-rewrite.js.map +1 -0
  530. package/src/lib/design/system/rules/pending-state.d.ts +39 -0
  531. package/src/lib/design/system/rules/pending-state.js +289 -0
  532. package/src/lib/design/system/rules/pending-state.js.map +1 -0
  533. package/src/lib/design/system/rules/sample-default-known.d.ts +5 -0
  534. package/src/lib/design/system/rules/sample-default-known.js +17 -0
  535. package/src/lib/design/system/rules/sample-default-known.js.map +1 -0
  536. package/src/lib/design/system/rules/sample-default.d.ts +22 -0
  537. package/src/lib/design/system/rules/sample-default.js +92 -0
  538. package/src/lib/design/system/rules/sample-default.js.map +1 -0
  539. package/src/lib/design/system/rules/sdk-attribute-value.d.ts +10 -0
  540. package/src/lib/design/system/rules/sdk-attribute-value.js +78 -0
  541. package/src/lib/design/system/rules/sdk-attribute-value.js.map +1 -0
  542. package/src/lib/design/system/rules/sdk-private-var.d.ts +9 -0
  543. package/src/lib/design/system/rules/sdk-private-var.js +54 -0
  544. package/src/lib/design/system/rules/sdk-private-var.js.map +1 -0
  545. package/src/lib/design/system/rules/skips.d.ts +4 -0
  546. package/src/lib/design/system/rules/skips.js +27 -0
  547. package/src/lib/design/system/rules/skips.js.map +1 -0
  548. package/src/lib/design/system/rules/stale-replace.js +5 -0
  549. package/src/lib/design/system/rules/stale-replace.js.map +1 -1
  550. package/src/lib/design/system/rules/state-in-component.d.ts +16 -0
  551. package/src/lib/design/system/rules/state-in-component.js +101 -0
  552. package/src/lib/design/system/rules/state-in-component.js.map +1 -0
  553. package/src/lib/design/system/rules/tailwind-classes.d.ts +52 -0
  554. package/src/lib/design/system/rules/tailwind-classes.js +237 -0
  555. package/src/lib/design/system/rules/tailwind-classes.js.map +1 -0
  556. package/src/lib/design/system/rules/token-selectors.js +10 -3
  557. package/src/lib/design/system/rules/token-selectors.js.map +1 -1
  558. package/src/lib/design/system/rules/top-level-await.d.ts +9 -0
  559. package/src/lib/design/system/rules/top-level-await.js +62 -0
  560. package/src/lib/design/system/rules/top-level-await.js.map +1 -0
  561. package/src/lib/design/system/rules/unbound-input-known.d.ts +7 -0
  562. package/src/lib/design/system/rules/unbound-input-known.js +44 -0
  563. package/src/lib/design/system/rules/unbound-input-known.js.map +1 -0
  564. package/src/lib/design/system/rules/unbound-input.d.ts +24 -0
  565. package/src/lib/design/system/rules/unbound-input.js +67 -0
  566. package/src/lib/design/system/rules/unbound-input.js.map +1 -0
  567. package/src/lib/design/system/rules/uncovered-region.d.ts +13 -0
  568. package/src/lib/design/system/rules/uncovered-region.js +36 -0
  569. package/src/lib/design/system/rules/uncovered-region.js.map +1 -0
  570. package/src/lib/design/system/rules/undefined-class.d.ts +9 -0
  571. package/src/lib/design/system/rules/undefined-class.js +41 -0
  572. package/src/lib/design/system/rules/undefined-class.js.map +1 -0
  573. package/src/lib/design/system/rules/undefined-token.d.ts +1 -1
  574. package/src/lib/design/system/rules/undefined-token.js +7 -61
  575. package/src/lib/design/system/rules/undefined-token.js.map +1 -1
  576. package/src/lib/design/system/rules/utility-css.d.ts +2 -1
  577. package/src/lib/design/system/rules/utility-css.js +40 -13
  578. package/src/lib/design/system/rules/utility-css.js.map +1 -1
  579. package/src/lib/design/system/rules/view-coverage.d.ts +8 -0
  580. package/src/lib/design/system/rules/view-coverage.js +51 -0
  581. package/src/lib/design/system/rules/view-coverage.js.map +1 -0
  582. package/src/lib/design/system/rules/visible-change.d.ts +19 -0
  583. package/src/lib/design/system/rules/visible-change.js +48 -0
  584. package/src/lib/design/system/rules/visible-change.js.map +1 -0
  585. package/src/lib/design/system/sdk-declarations.d.ts +10 -0
  586. package/src/lib/design/system/sdk-declarations.js +177 -0
  587. package/src/lib/design/system/sdk-declarations.js.map +1 -0
  588. package/src/lib/design/system/sdk-errors.d.ts +14 -0
  589. package/src/lib/design/system/sdk-errors.js +38 -0
  590. package/src/lib/design/system/sdk-errors.js.map +1 -0
  591. package/src/lib/design/system/sdk-selectors.d.ts +18 -0
  592. package/src/lib/design/system/sdk-selectors.js +131 -0
  593. package/src/lib/design/system/sdk-selectors.js.map +1 -0
  594. package/src/lib/design/system/see-through.d.ts +12 -0
  595. package/src/lib/design/system/see-through.js +112 -0
  596. package/src/lib/design/system/see-through.js.map +1 -0
  597. package/src/lib/design/system/served-cache.d.ts +99 -0
  598. package/src/lib/design/system/served-cache.js +202 -0
  599. package/src/lib/design/system/served-cache.js.map +1 -0
  600. package/src/lib/design/system/settled-panes.d.ts +23 -0
  601. package/src/lib/design/system/settled-panes.js +71 -0
  602. package/src/lib/design/system/settled-panes.js.map +1 -0
  603. package/src/lib/design/system/sketch/after-merge.d.ts +11 -0
  604. package/src/lib/design/system/sketch/after-merge.js +51 -0
  605. package/src/lib/design/system/sketch/after-merge.js.map +1 -0
  606. package/src/lib/design/system/sketch/aktuell-placeholders.d.ts +30 -0
  607. package/src/lib/design/system/sketch/aktuell-placeholders.js +87 -0
  608. package/src/lib/design/system/sketch/aktuell-placeholders.js.map +1 -0
  609. package/src/lib/design/system/sketch/baseline.d.ts +36 -2
  610. package/src/lib/design/system/sketch/baseline.js +76 -13
  611. package/src/lib/design/system/sketch/baseline.js.map +1 -1
  612. package/src/lib/design/system/sketch/check-format.js +3 -9
  613. package/src/lib/design/system/sketch/check-format.js.map +1 -1
  614. package/src/lib/design/system/sketch/check-sketches.d.ts +10 -0
  615. package/src/lib/design/system/sketch/check-sketches.js +50 -4
  616. package/src/lib/design/system/sketch/check-sketches.js.map +1 -1
  617. package/src/lib/design/system/sketch/clean-copy.d.ts +18 -0
  618. package/src/lib/design/system/sketch/clean-copy.js +104 -0
  619. package/src/lib/design/system/sketch/clean-copy.js.map +1 -0
  620. package/src/lib/design/system/sketch/cli-args.d.ts +13 -3
  621. package/src/lib/design/system/sketch/cli-args.js +20 -5
  622. package/src/lib/design/system/sketch/cli-args.js.map +1 -1
  623. package/src/lib/design/system/sketch/covered-diffs.d.ts +40 -0
  624. package/src/lib/design/system/sketch/covered-diffs.js +106 -0
  625. package/src/lib/design/system/sketch/covered-diffs.js.map +1 -0
  626. package/src/lib/design/system/sketch/edit-sketch.d.ts +29 -0
  627. package/src/lib/design/system/sketch/edit-sketch.js +169 -0
  628. package/src/lib/design/system/sketch/edit-sketch.js.map +1 -0
  629. package/src/lib/design/system/sketch/frame-budget.d.ts +24 -0
  630. package/src/lib/design/system/sketch/frame-budget.js +23 -0
  631. package/src/lib/design/system/sketch/frame-budget.js.map +1 -0
  632. package/src/lib/design/system/sketch/identical-renders.d.ts +31 -0
  633. package/src/lib/design/system/sketch/identical-renders.js +143 -0
  634. package/src/lib/design/system/sketch/identical-renders.js.map +1 -0
  635. package/src/lib/design/system/sketch/merge-commit.d.ts +20 -0
  636. package/src/lib/design/system/sketch/merge-commit.js +72 -0
  637. package/src/lib/design/system/sketch/merge-commit.js.map +1 -0
  638. package/src/lib/design/system/sketch/merge-runner.d.ts +20 -0
  639. package/src/lib/design/system/sketch/merge-runner.js +73 -0
  640. package/src/lib/design/system/sketch/merge-runner.js.map +1 -0
  641. package/src/lib/design/system/sketch/merge-shared.d.ts +2 -0
  642. package/src/lib/design/system/sketch/merge-shared.js +7 -10
  643. package/src/lib/design/system/sketch/merge-shared.js.map +1 -1
  644. package/src/lib/design/system/sketch/merge-step.d.ts +47 -0
  645. package/src/lib/design/system/sketch/merge-step.js +110 -0
  646. package/src/lib/design/system/sketch/merge-step.js.map +1 -0
  647. package/src/lib/design/system/sketch/merge-worker.d.ts +1 -0
  648. package/src/lib/design/system/sketch/merge-worker.js +14 -0
  649. package/src/lib/design/system/sketch/merge-worker.js.map +1 -0
  650. package/src/lib/design/system/sketch/merge.d.ts +19 -5
  651. package/src/lib/design/system/sketch/merge.js +245 -82
  652. package/src/lib/design/system/sketch/merge.js.map +1 -1
  653. package/src/lib/design/system/sketch/merged-layout.d.ts +17 -0
  654. package/src/lib/design/system/sketch/merged-layout.js +57 -0
  655. package/src/lib/design/system/sketch/merged-layout.js.map +1 -0
  656. package/src/lib/design/system/sketch/merged-parts.d.ts +31 -30
  657. package/src/lib/design/system/sketch/merged-parts.js +99 -84
  658. package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
  659. package/src/lib/design/system/sketch/no-visible-change.d.ts +10 -0
  660. package/src/lib/design/system/sketch/no-visible-change.js +16 -6
  661. package/src/lib/design/system/sketch/no-visible-change.js.map +1 -1
  662. package/src/lib/design/system/sketch/note-language.d.ts +7 -0
  663. package/src/lib/design/system/sketch/note-language.js +83 -0
  664. package/src/lib/design/system/sketch/note-language.js.map +1 -0
  665. package/src/lib/design/system/sketch/part-definition.d.ts +27 -1
  666. package/src/lib/design/system/sketch/part-definition.js +109 -17
  667. package/src/lib/design/system/sketch/part-definition.js.map +1 -1
  668. package/src/lib/design/system/sketch/rebase-port.d.ts +24 -0
  669. package/src/lib/design/system/sketch/rebase-port.js +215 -0
  670. package/src/lib/design/system/sketch/rebase-port.js.map +1 -0
  671. package/src/lib/design/system/sketch/sample-mark-drift.d.ts +33 -0
  672. package/src/lib/design/system/sketch/sample-mark-drift.js +88 -0
  673. package/src/lib/design/system/sketch/sample-mark-drift.js.map +1 -0
  674. package/src/lib/design/system/sketch/sketch-check-cache.d.ts +11 -0
  675. package/src/lib/design/system/sketch/sketch-check-cache.js +22 -0
  676. package/src/lib/design/system/sketch/sketch-check-cache.js.map +1 -0
  677. package/src/lib/design/system/sketch/sketch-check-worker.d.ts +1 -0
  678. package/src/lib/design/system/sketch/sketch-check-worker.js +32 -0
  679. package/src/lib/design/system/sketch/sketch-check-worker.js.map +1 -0
  680. package/src/lib/design/system/sketch/sketch-checker.d.ts +40 -0
  681. package/src/lib/design/system/sketch/sketch-checker.js +109 -0
  682. package/src/lib/design/system/sketch/sketch-checker.js.map +1 -0
  683. package/src/lib/design/system/sketch/sketch.d.ts +100 -8
  684. package/src/lib/design/system/sketch/sketch.js +279 -36
  685. package/src/lib/design/system/sketch/sketch.js.map +1 -1
  686. package/src/lib/design/system/sketch/stale-base.d.ts +22 -0
  687. package/src/lib/design/system/sketch/stale-base.js +56 -0
  688. package/src/lib/design/system/sketch/stale-base.js.map +1 -0
  689. package/src/lib/design/system/sketch/unchanged-states.d.ts +39 -3
  690. package/src/lib/design/system/sketch/unchanged-states.js +75 -23
  691. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
  692. package/src/lib/design/system/sketch/unused-closure.js +16 -4
  693. package/src/lib/design/system/sketch/unused-closure.js.map +1 -1
  694. package/src/lib/design/system/sketch/viewed-shots.d.ts +32 -0
  695. package/src/lib/design/system/sketch/viewed-shots.js +54 -0
  696. package/src/lib/design/system/sketch/viewed-shots.js.map +1 -0
  697. package/src/lib/design/system/skip-classes.d.ts +3 -0
  698. package/src/lib/design/system/skip-classes.js +17 -0
  699. package/src/lib/design/system/skip-classes.js.map +1 -0
  700. package/src/lib/design/system/slot-hosts.d.ts +38 -0
  701. package/src/lib/design/system/slot-hosts.js +93 -0
  702. package/src/lib/design/system/slot-hosts.js.map +1 -0
  703. package/src/lib/design/system/slow-checks.d.ts +44 -0
  704. package/src/lib/design/system/slow-checks.js +250 -0
  705. package/src/lib/design/system/slow-checks.js.map +1 -0
  706. package/src/lib/design/system/slow-run.d.ts +67 -0
  707. package/src/lib/design/system/slow-run.js +312 -0
  708. package/src/lib/design/system/slow-run.js.map +1 -0
  709. package/src/lib/design/system/stale-design-mocks.d.ts +20 -0
  710. package/src/lib/design/system/stale-design-mocks.js +59 -0
  711. package/src/lib/design/system/stale-design-mocks.js.map +1 -0
  712. package/src/lib/design/system/stale-dist.d.ts +61 -0
  713. package/src/lib/design/system/stale-dist.js +141 -0
  714. package/src/lib/design/system/stale-dist.js.map +1 -0
  715. package/src/lib/design/system/stale-parts.d.ts +45 -0
  716. package/src/lib/design/system/stale-parts.js +168 -0
  717. package/src/lib/design/system/stale-parts.js.map +1 -0
  718. package/src/lib/design/system/surface-nesting.d.ts +11 -0
  719. package/src/lib/design/system/surface-nesting.js +86 -0
  720. package/src/lib/design/system/surface-nesting.js.map +1 -0
  721. package/src/lib/design/system/system-command.js +11 -9
  722. package/src/lib/design/system/system-command.js.map +1 -1
  723. package/src/lib/design/system/system-modules.d.ts +17 -2
  724. package/src/lib/design/system/system-modules.js +18 -2
  725. package/src/lib/design/system/system-modules.js.map +1 -1
  726. package/src/lib/design/system/system-tsconfig.d.ts +9 -2
  727. package/src/lib/design/system/system-tsconfig.js +73 -13
  728. package/src/lib/design/system/system-tsconfig.js.map +1 -1
  729. package/src/lib/design/system/task-command.d.ts +52 -0
  730. package/src/lib/design/system/task-command.js +271 -0
  731. package/src/lib/design/system/task-command.js.map +1 -0
  732. package/src/lib/design/system/theming-text.d.ts +2 -0
  733. package/src/lib/design/system/theming-text.js +6 -0
  734. package/src/lib/design/system/theming-text.js.map +1 -0
  735. package/src/lib/design/system/touched-parts.d.ts +16 -0
  736. package/src/lib/design/system/touched-parts.js +121 -0
  737. package/src/lib/design/system/touched-parts.js.map +1 -0
  738. package/src/lib/design/system/tracked-reads.d.ts +27 -0
  739. package/src/lib/design/system/tracked-reads.js +100 -0
  740. package/src/lib/design/system/tracked-reads.js.map +1 -0
  741. package/src/lib/design/system/ts-source.d.ts +2 -0
  742. package/src/lib/design/system/ts-source.js +15 -1
  743. package/src/lib/design/system/ts-source.js.map +1 -1
  744. package/src/lib/design/system/unchanged-rows.d.ts +24 -0
  745. package/src/lib/design/system/unchanged-rows.js +212 -0
  746. package/src/lib/design/system/unchanged-rows.js.map +1 -0
  747. package/src/lib/design/system/uncommitted-decisions.d.ts +4 -0
  748. package/src/lib/design/system/uncommitted-decisions.js +35 -0
  749. package/src/lib/design/system/uncommitted-decisions.js.map +1 -0
  750. package/src/lib/design/system/uncovered-regions.d.ts +61 -0
  751. package/src/lib/design/system/uncovered-regions.js +171 -0
  752. package/src/lib/design/system/uncovered-regions.js.map +1 -0
  753. package/src/lib/design/system/unused-base-parts.d.ts +7 -0
  754. package/src/lib/design/system/unused-base-parts.js +76 -0
  755. package/src/lib/design/system/unused-base-parts.js.map +1 -0
  756. package/src/lib/design/system/visible-change-command.d.ts +60 -0
  757. package/src/lib/design/system/visible-change-command.js +310 -0
  758. package/src/lib/design/system/visible-change-command.js.map +1 -0
  759. package/src/lib/design/system/visible-change-parts.d.ts +28 -0
  760. package/src/lib/design/system/visible-change-parts.js +96 -0
  761. package/src/lib/design/system/visible-change-parts.js.map +1 -0
  762. package/src/lib/design/system/visible-change.d.ts +82 -0
  763. package/src/lib/design/system/visible-change.js +149 -0
  764. package/src/lib/design/system/visible-change.js.map +1 -0
  765. package/src/lib/design/system/write-origin.d.ts +12 -0
  766. package/src/lib/design/system/write-origin.js +18 -0
  767. package/src/lib/design/system/write-origin.js.map +1 -0
  768. package/src/lib/design/system-use.js +4 -4
  769. package/src/lib/design/system-use.js.map +1 -1
  770. package/src/lib/design/thumb.d.ts +37 -4
  771. package/src/lib/design/thumb.js +118 -21
  772. package/src/lib/design/thumb.js.map +1 -1
  773. package/src/lib/design/timings-command.d.ts +22 -0
  774. package/src/lib/design/timings-command.js +175 -0
  775. package/src/lib/design/timings-command.js.map +1 -0
  776. package/src/lib/design/timings.d.ts +117 -0
  777. package/src/lib/design/timings.js +296 -0
  778. package/src/lib/design/timings.js.map +1 -0
  779. package/src/lib/design/typecheck.d.ts +1 -1
  780. package/src/lib/design/typecheck.js +5 -5
  781. package/src/lib/design/typecheck.js.map +1 -1
  782. package/src/lib/design/unstable-cells.d.ts +23 -0
  783. package/src/lib/design/unstable-cells.js +40 -0
  784. package/src/lib/design/unstable-cells.js.map +1 -0
  785. package/src/lib/design/variant-diff.js +1 -1
  786. package/src/lib/design/variant-diff.js.map +1 -1
  787. package/src/lib/design/vite-cache.d.ts +11 -0
  788. package/src/lib/design/vite-cache.js +61 -0
  789. package/src/lib/design/vite-cache.js.map +1 -0
  790. package/src/lib/design/wait.d.ts +15 -0
  791. package/src/lib/design/wait.js +30 -0
  792. package/src/lib/design/wait.js.map +1 -0
  793. package/src/lib/design/warm-draw.d.ts +33 -0
  794. package/src/lib/design/warm-draw.js +74 -0
  795. package/src/lib/design/warm-draw.js.map +1 -0
  796. package/src/lib/design/warm-pages.d.ts +10 -2
  797. package/src/lib/design/warm-pages.js +6 -2
  798. package/src/lib/design/warm-pages.js.map +1 -1
  799. package/src/lib/design/work-root.d.ts +2 -0
  800. package/src/lib/design/work-root.js +8 -0
  801. package/src/lib/design/work-root.js.map +1 -0
  802. package/src/lib/json-file.d.ts +11 -0
  803. package/src/lib/json-file.js +21 -0
  804. package/src/lib/json-file.js.map +1 -0
  805. package/src/lib/plain-output.d.ts +27 -0
  806. package/src/lib/plain-output.js +66 -0
  807. package/src/lib/plain-output.js.map +1 -0
  808. package/src/lib/release.js +11 -3
  809. package/src/lib/release.js.map +1 -1
  810. package/src/lib/source-hash.d.ts +7 -0
  811. package/src/lib/source-hash.js +62 -0
  812. package/src/lib/source-hash.js.map +1 -0
  813. package/src/lib/update/agent-setup.js +2 -1
  814. package/src/lib/update/agent-setup.js.map +1 -1
  815. package/src/lib/update/commits.js +2 -2
  816. package/src/lib/update/commits.js.map +1 -1
  817. package/src/lib/update/migration-manifest.d.ts +12 -0
  818. package/src/lib/update/migration-manifest.js +13 -0
  819. package/src/lib/update/migration-manifest.js.map +1 -1
  820. package/src/lib/update/migration-record.js +2 -1
  821. package/src/lib/update/migration-record.js.map +1 -1
  822. package/src/lib/update/packages.js +4 -2
  823. package/src/lib/update/packages.js.map +1 -1
  824. package/src/lib/update/pending.js +2 -1
  825. package/src/lib/update/pending.js.map +1 -1
  826. package/src/lib/update/run-migrations.d.ts +3 -2
  827. package/src/lib/update/run-migrations.js +38 -5
  828. package/src/lib/update/run-migrations.js.map +1 -1
  829. package/src/lib/update/scan.js +8 -2
  830. package/src/lib/update/scan.js.map +1 -1
  831. package/src/lib/update/tasks.js +2 -1
  832. package/src/lib/update/tasks.js.map +1 -1
  833. package/src/lib/design/paths.js +0 -138
  834. package/src/lib/design/paths.js.map +0 -1
  835. package/src/lib/design/system/accept-command.d.ts +0 -7
  836. package/src/lib/design/system/accept-command.js +0 -55
  837. package/src/lib/design/system/accept-command.js.map +0 -1
@@ -9,22 +9,30 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.partsCompletenessOf = exports.completenessOf = exports.inventoryIdsOf = exports.seePart = exports.PLAIN_CONTROL_SELECTOR = exports.SDK_CONTROLS = exports.isMissingStateGap = exports.completenessGapLineOf = exports.completenessGapsOf = exports.findingKeyOf = exports.isFindingOf = exports.smallChangeHintsOf = exports.controlStateGapsOf = exports.isControlPart = exports.isInteractionState = exports.declaredControlsOf = void 0;
12
+ exports.addedUndeclaredControlsOf = exports.partsCompletenessOf = exports.completenessOf = exports.inventoryIdsOf = exports.seePart = exports.seeFrame = exports.PLAIN_CONTROL_SELECTOR = exports.SDK_CONTROLS = exports.isMissingStateGap = exports.completenessGapLineOf = exports.completenessGapsOf = exports.findingKeyOf = exports.isFindingOf = exports.smallChangeHintsOf = exports.introducedControlStateGapsOf = exports.controlStateGapsOf = exports.isControlPart = exports.isInteractionState = exports.declaredControlsOf = void 0;
13
13
  const fs_1 = require("fs");
14
14
  const path_1 = require("path");
15
15
  const browser_1 = require("../browser");
16
16
  const force_interactions_1 = require("../force-interactions");
17
+ const vite_cache_1 = require("../vite-cache");
17
18
  const serve_1 = require("../serve");
18
19
  const shot_1 = require("../shot");
19
20
  const thumb_1 = require("../thumb");
21
+ const run_yield_1 = require("../run-yield");
22
+ const actions_1 = require("./actions");
20
23
  const resolve_product_1 = require("./resolve-product");
21
24
  const contact_sheet_1 = require("../contact-sheet");
22
25
  const baseline_1 = require("./sketch/baseline");
23
26
  const merged_parts_1 = require("./sketch/merged-parts");
27
+ const render_check_1 = require("./render-check");
24
28
  const system_modules_1 = require("./system-modules");
25
29
  const exceptions_1 = require("./exceptions");
26
30
  const inventory_approval_1 = require("./inventory-approval");
27
31
  const option_values_1 = require("./rules/option-values");
32
+ const demo_backdrop_1 = require("./demo-backdrop");
33
+ const code_hash_1 = require("../code-hash");
34
+ const compare_cache_1 = require("./compare-cache");
35
+ const served_cache_1 = require("./served-cache");
28
36
  const KINDS = {
29
37
  disclosure: { surface: 'body', closed: 'collapsed' },
30
38
  button: { adds: ['active'] },
@@ -54,7 +62,7 @@ const requiredInteractionsOf = (control) => {
54
62
  ];
55
63
  };
56
64
  const gridGapOf = (options) => {
57
- const { grid, states, interactions } = options;
65
+ const { grid, states, interactions, disabledStates = new Set() } = options;
58
66
  const fix = `draw its states with interactionRows, which gives the grid a column per interaction (${interactions.join(', ')})`;
59
67
  if (!isRecord(grid) || !Array.isArray(grid['columns']) || !isRecord(grid['rows']))
60
68
  return `the part has no grid - ${fix}`;
@@ -62,12 +70,14 @@ const gridGapOf = (options) => {
62
70
  const missing = interactions.filter((interaction) => !columns.includes(interaction));
63
71
  if (missing.length > 0)
64
72
  return `its grid has no column ${missing.join(', ')} - ${fix}`;
65
- const holes = Object.entries(grid['rows']).flatMap(([row, cells]) => interactions
66
- .filter((interaction) => {
67
- const state = isRecord(cells) ? cells[interaction] : undefined;
68
- return typeof state !== 'string' || !states.includes(state);
69
- })
70
- .map((interaction) => `${row} ${interaction}`));
73
+ const holes = Object.entries(grid['rows']).flatMap(([row, cells]) => isRecord(cells) && typeof cells['rest'] === 'string' && disabledStates.has(cells['rest'])
74
+ ? []
75
+ : interactions
76
+ .filter((interaction) => {
77
+ const state = isRecord(cells) ? cells[interaction] : undefined;
78
+ return typeof state !== 'string' || !states.includes(state);
79
+ })
80
+ .map((interaction) => `${row} ${interaction}`));
71
81
  return holes.length > 0 ? `its grid draws no state in ${holes.join(', ')} - ${fix}` : null;
72
82
  };
73
83
  const declaredControlsOf = (value) => isRecord(value)
@@ -147,6 +157,18 @@ const controlStateGapsOf = (options) => {
147
157
  }));
148
158
  };
149
159
  exports.controlStateGapsOf = controlStateGapsOf;
160
+ /**
161
+ * The `CONTROL-STATE` gaps render check fails a part on. Only a sketch variant fails, and only on interaction states
162
+ * its base part, `base`, does not already draw as a gap: product check leaves those gaps to `design complete`.
163
+ */
164
+ const introducedControlStateGapsOf = (options) => {
165
+ const { part, controls, states, sketch, base } = options;
166
+ if (!sketch)
167
+ return [];
168
+ const inherited = new Set(base && !(0, exports.isControlPart)({ part, controls: base.controls }) ? base.states.filter(exports.isInteractionState) : []);
169
+ return (0, exports.controlStateGapsOf)({ part, controls, states: states.filter((state) => !inherited.has(state)) });
170
+ };
171
+ exports.introducedControlStateGapsOf = introducedControlStateGapsOf;
150
172
  const SMALL_CHANGE = 0.1;
151
173
  /**
152
174
  * One hint per state of an element or component that is no control part whose pixels differ from its first state in
@@ -166,7 +188,7 @@ const isFindingOf = (declared) => (found) => {
166
188
  !(found.kind === 'control' && found.marked !== null);
167
189
  };
168
190
  exports.isFindingOf = isFindingOf;
169
- const findingKeyOf = (found) => `${found.kind} ${found.what} ${found.path}`;
191
+ const findingKeyOf = (found) => { var _a; return `${found.kind} ${found.what} ${found.path} ${(_a = found.label) !== null && _a !== void 0 ? _a : ''}`; };
170
192
  exports.findingKeyOf = findingKeyOf;
171
193
  const NATIVE_CONTROLS = ['button', 'a[href]', 'input:not([type="hidden"])', 'select', 'textarea', 'summary'];
172
194
  const discoveryGapsOf = (options) => {
@@ -207,6 +229,28 @@ const discoveryGapsOf = (options) => {
207
229
  };
208
230
  });
209
231
  };
232
+ const actionGapsOf = (options) => {
233
+ var _a, _b, _c;
234
+ const { part, declared, frames } = options;
235
+ const groups = new Map();
236
+ for (const frame of frames.filter((seen) => seen.interaction === null))
237
+ for (const found of (_a = frame.found) !== null && _a !== void 0 ? _a : []) {
238
+ if (found.action !== null ||
239
+ ((_b = found.owner) !== null && _b !== void 0 ? _b : null) !== null ||
240
+ found.within.some((id) => { var _a, _b; return ((_b = (_a = declared[id]) === null || _a === void 0 ? void 0 : _a.part) !== null && _b !== void 0 ? _b : null) !== null; }))
241
+ continue;
242
+ const key = (0, exports.findingKeyOf)(found);
243
+ const group = (_c = groups.get(key)) !== null && _c !== void 0 ? _c : { found, states: [] };
244
+ if (!group.states.includes(frame.state))
245
+ group.states.push(frame.state);
246
+ groups.set(key, group);
247
+ }
248
+ return [...groups.values()].map(({ found, states }) => ({
249
+ code: 'ACTION-UNDECLARED',
250
+ target: part,
251
+ detail: `${found.what}${found.label ? ` "${found.label}"` : ''} at ${found.path} in ${statesShownOf(states)} - declare what it does: data-et-action="<state>" or "emit:<output>"`,
252
+ }));
253
+ };
210
254
  const isUndeclaredControlGap = (gap) => gap.code === 'CONTROL-UNDECLARED';
211
255
  const statesShownOf = (states) => states.length > 4 ? `${states.slice(0, 3).join(', ')} and ${states.length - 3} more` : states.join(', ');
212
256
  const overrideGapsOf = (options) => {
@@ -499,7 +543,10 @@ const completenessGapsOf = (options) => {
499
543
  detail: `${control.part} is not design complete: ${used.length} gap(s) - run design complete ${control.part}`,
500
544
  });
501
545
  const interactions = control.part === null && !part.startsWith('pages/') ? requiredInteractionsOf(control) : [];
502
- const gridGap = interactions.length > 0 ? gridGapOf({ grid, states, interactions }) : null;
546
+ const disabledStates = new Set(frames
547
+ .filter((frame) => frame.interaction === null && frame.controls.some((seen) => seen.id === id && seen.disabled))
548
+ .map((frame) => frame.state));
549
+ const gridGap = interactions.length > 0 ? gridGapOf({ grid, states, interactions, disabledStates }) : null;
503
550
  if (gridGap)
504
551
  gaps.push({ code: 'CONTROL-GRID-MISSING', target: `${part}.${id}`, detail: gridGap });
505
552
  if (!seenIds.has(id)) {
@@ -517,6 +564,7 @@ const completenessGapsOf = (options) => {
517
564
  return [
518
565
  ...gaps,
519
566
  ...discoveryGapsOf({ part, declared, frames }).filter((gap) => !isUndeclaredControlGap(gap)),
567
+ ...actionGapsOf({ part, declared, frames }),
520
568
  ...ownerGapsOf({ part, declared, frames, referenced }),
521
569
  ...overrideGapsOf({ part, frames }),
522
570
  ...inventoryGapsOf({ part, inventory }),
@@ -647,7 +695,7 @@ exports.SDK_CONTROLS = [
647
695
  'et-accordion',
648
696
  'et-cascader',
649
697
  'et-checkbox',
650
- 'et-chip',
698
+ 'et-chip:is([data-removable], [role])',
651
699
  'et-color-input',
652
700
  'et-counter',
653
701
  'et-date-input',
@@ -682,10 +730,11 @@ const LIKELY_CONTROLS = [...exports.SDK_CONTROLS, ...PLAIN_CONTROLS];
682
730
  const LOOK_PROPERTIES = [...COLOUR_PROPERTIES, 'opacity', 'box-shadow', 'font-weight', 'text-decoration-line'];
683
731
  const OPTION_SELECTOR = '[role="option"], [role^="menuitem"], [data-et-option]';
684
732
  const COMPOSITE_ROLES = ['grid', 'listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'];
685
- const FOCUS_CONTAINER = COMPOSITE_ROLES.flatMap((role) => [
686
- `[role="${role}"][tabindex="-1"]`,
687
- `[role="${role}"][aria-activedescendant]`,
688
- ]).join(', ');
733
+ const DIALOG_ROLES = ['dialog', 'alertdialog'];
734
+ const FOCUS_CONTAINER = [
735
+ ...COMPOSITE_ROLES.flatMap((role) => [`[role="${role}"][tabindex="-1"]`, `[role="${role}"][aria-activedescendant]`]),
736
+ ...DIALOG_ROLES.map((role) => `[role="${role}"][tabindex="-1"]`),
737
+ ].join(', ');
689
738
  exports.PLAIN_CONTROL_SELECTOR = `:is(${PLAIN_CONTROLS.join(', ')}):not(${FOCUS_CONTAINER})`;
690
739
  const discoverControls = `((root) => {
691
740
  const LIKELY = ${JSON.stringify(LIKELY_CONTROLS)};
@@ -695,7 +744,7 @@ const discoverControls = `((root) => {
695
744
  const sdk = ${JSON.stringify(exports.SDK_CONTROLS.join(', '))};
696
745
  const rendered = (element) => element.getClientRects().length > 0;
697
746
  const HOVER = /(?<!\\\\):hover(?![\\w-])/g;
698
- const FORCED_HOVER = /:is\\(:hover,\\s*\\[data-et-force~="?hover"?\\]\\)/g;
747
+ const FORCED_HOVER = /:is\\(:hover,\\s*\\[data-et-force~="?hover"?\\](?:,\\s*\\[data-et-force~="?active"?\\])?\\)/g;
699
748
  const hoveredOf = (written) => {
700
749
  const selector = written.replace(FORCED_HOVER, ':hover');
701
750
  const match = new RegExp(HOVER.source).exec(selector);
@@ -756,6 +805,8 @@ const discoverControls = `((root) => {
756
805
  }
757
806
  return null;
758
807
  };
808
+ const labelOf = (element) =>
809
+ (element.getAttribute('aria-label') ?? element.innerText ?? element.textContent ?? '').replace(/\\s+/g, ' ').trim().slice(0, 60) || null;
759
810
  const found = [];
760
811
  for (const element of root.querySelectorAll('*')) {
761
812
  if (!rendered(element)) continue;
@@ -763,7 +814,7 @@ const discoverControls = `((root) => {
763
814
  if (what) {
764
815
  const inSdk = element.parentElement.closest(sdk);
765
816
  if (inSdk !== null && root.contains(inSdk)) continue;
766
- found.push({ kind: 'control', what: what.startsWith('[') ? element.tagName.toLowerCase() + what : what, path: pathOf(element), marked: markedOf(element), within: withinOf(element), owner: ownerOf(element)?.key ?? null, box: frameBoxOf(element) });
817
+ found.push({ kind: 'control', what: what.startsWith('[') ? element.tagName.toLowerCase() + what : what, path: pathOf(element), label: labelOf(element), marked: markedOf(element), within: withinOf(element), owner: ownerOf(element)?.key ?? null, box: frameBoxOf(element), covered: isCovered(element), ...(element.matches(${JSON.stringify(actions_1.INTERACTIVE_SELECTOR)}) ? { action: element.getAttribute('data-et-action') } : {}) });
767
818
  continue;
768
819
  }
769
820
  const cursor = getComputedStyle(element).cursor;
@@ -773,7 +824,7 @@ const discoverControls = `((root) => {
773
824
  for (let at = element; at && !inControl; at = at.parentElement) inControl = at.hasAttribute('data-et-control') || isLikely(at);
774
825
  if (inControl) continue;
775
826
  const reason = [pointer ? 'cursor: pointer' : '', hovered.has(element) ? ':hover rule' : ''].filter(Boolean).join(' and ');
776
- found.push({ kind: 'unclassified', what: nameOf(element) + ' with ' + reason, path: pathOf(element), marked: null, within: [], owner: ownerOf(element)?.key ?? null, box: frameBoxOf(element) });
827
+ found.push({ kind: 'unclassified', what: nameOf(element) + ' with ' + reason, path: pathOf(element), label: labelOf(element), marked: null, within: [], owner: ownerOf(element)?.key ?? null, box: frameBoxOf(element), covered: isCovered(element) });
777
828
  }
778
829
  return found;
779
830
  })`;
@@ -857,7 +908,31 @@ const seeFrame = (options) => `(() => {
857
908
  ? { x: Math.round(box.left - ORIGIN.left), y: Math.round(box.top - ORIGIN.top), width: Math.round(box.width), height: Math.round(box.height) }
858
909
  : null;
859
910
  };
911
+ const isCovered = (element) => {
912
+ const box = element.getBoundingClientRect();
913
+ if (box.width <= 0 || box.height <= 0) return false;
914
+ const x = [box.left + 1, box.left + box.width / 2, box.right - 1];
915
+ const y = [box.top + 1, box.top + box.height / 2, box.bottom - 1];
916
+ const points = [[x[1], y[1]], [x[0], y[0]], [x[2], y[0]], [x[0], y[2]], [x[2], y[2]]];
917
+ let hit = false;
918
+ const inline = element.style.getPropertyValue('pointer-events');
919
+ const priority = element.style.getPropertyPriority('pointer-events');
920
+ element.style.setProperty('pointer-events', 'auto', 'important');
921
+ try {
922
+ for (const [px, py] of points) {
923
+ const top = document.elementFromPoint(px, py);
924
+ if (top === null) return false;
925
+ if (element.contains(top)) return false;
926
+ hit = true;
927
+ }
928
+ } finally {
929
+ if (inline) element.style.setProperty('pointer-events', inline, priority);
930
+ else element.style.removeProperty('pointer-events');
931
+ }
932
+ return hit;
933
+ };
860
934
  const OWN = ${JSON.stringify(options.part)};
935
+ const CONTROL_PARTS = ${JSON.stringify(options.controlParts)};
861
936
  const tokensOf = (element, name) => (element.getAttribute(name) ?? '').split(' ').filter(Boolean);
862
937
  const ownerOf = (element) => {
863
938
  const slotted = tokensOf(element, 'data-et-slot');
@@ -936,15 +1011,21 @@ const seeFrame = (options) => `(() => {
936
1011
  const box = element.getBoundingClientRect();
937
1012
  const x = Math.max(0, box.x + scrollX - ${PAD});
938
1013
  const y = Math.max(0, box.y + scrollY - ${PAD});
1014
+ const width = Math.min(box.x + scrollX + box.width + ${PAD}, document.documentElement.scrollWidth) - x;
1015
+ const height = Math.min(box.y + scrollY + box.height + ${PAD}, document.documentElement.scrollHeight) - y;
939
1016
  return {
940
1017
  at,
941
1018
  forced: tokensOf(element, 'data-et-force'),
942
- box: box.width > 0 && box.height > 0 ? { x, y, width: box.width + ${PAD * 2}, height: box.height + ${PAD * 2} } : null,
1019
+ box: box.width > 0 && box.height > 0 && width > 0 && height > 0 ? { x, y, width, height } : null,
943
1020
  selected: isSelected(element),
944
1021
  look: lookOf(element),
945
1022
  };
946
1023
  };
947
- const controls = [...root.querySelectorAll('[data-et-control]')].filter((element) => ownerOf(element) === null).map((element) => {
1024
+ const isOwnControl = (element) => {
1025
+ const owner = ownerOf(element);
1026
+ return owner === null || CONTROL_PARTS[element.getAttribute('data-et-control')] === owner.key;
1027
+ };
1028
+ const controls = [...root.querySelectorAll('[data-et-control]')].filter(isOwnControl).map((element) => {
948
1029
  const parts = ${controlPartsOf}(element);
949
1030
  const forced = new Set(parts.flatMap((part) => tokensOf(part, 'data-et-force')));
950
1031
  for (const part of parts) if (forced.size > 0) part.setAttribute('data-et-force', [...forced].join(' '));
@@ -953,10 +1034,12 @@ const seeFrame = (options) => `(() => {
953
1034
  disabled: parts.some(isDisabled),
954
1035
  keyboard: parts.some(isKeyboard),
955
1036
  frameBox: frameBoxOf(element),
1037
+ covered: isCovered(element),
956
1038
  ...tagged(element),
957
1039
  };
958
1040
  });
959
- const surfaces = [...root.querySelectorAll('[data-et-surface]')].filter((element) => ownerOf(element) === null).map((element) => ({
1041
+ const partRoot = [root, ...root.querySelectorAll('[data-et-part]')].find((element) => (element.getAttribute('data-et-part') ?? '').split(' ').includes(${JSON.stringify(options.part)}));
1042
+ const surfaces = [...root.querySelectorAll('[data-et-surface]')].filter((element) => ownerOf(element) === null && !(element === partRoot && element.getAttribute('data-et-surface') === '')).map((element) => ({
960
1043
  id: element.getAttribute('data-et-surface'),
961
1044
  shown: shown(element),
962
1045
  options: [...element.querySelectorAll(${JSON.stringify(OPTION_SELECTOR)})].filter((option) => ownerOf(option) === null && shown(option)).map((option) => ({ ...tagged(option), named: option.id !== '' && named.has(option.id), keyboard: isKeyboard(option) })),
@@ -967,8 +1050,10 @@ const seeFrame = (options) => `(() => {
967
1050
  surfaces,
968
1051
  found: discover ? ${discoverControls}(root) : [],
969
1052
  overrides: discover ? ${findOverrides}(${JSON.stringify(options.ownCss)}) : [],
1053
+ backdrop: discover ? ${(0, demo_backdrop_1.findDemoBackdrop)(options.part)}(root) : null,
970
1054
  };
971
1055
  })()`;
1056
+ exports.seeFrame = seeFrame;
972
1057
  const forceOn = ({ at, interaction, on, }) => `((at, interaction, on) => {
973
1058
  const found = document.querySelector('[data-et-complete="' + at + '"]');
974
1059
  for (const element of found.hasAttribute('data-et-control') ? ${controlPartsOf}(found) : [found]) {
@@ -981,22 +1066,26 @@ const forceOn = ({ at, interaction, on, }) => `((at, interaction, on) => {
981
1066
  })(${JSON.stringify(at)}, ${JSON.stringify(interaction)}, ${JSON.stringify(on)})`;
982
1067
  const FORCEABLE = new Set(['hover', 'focus-visible', 'active']);
983
1068
  const seeFrames = (options) => __awaiter(void 0, void 0, void 0, function* () {
984
- const { browser, base, frames, part, ownCss } = options;
1069
+ const { browser, base, frames, part, ownCss, controlParts, requested } = options;
985
1070
  const context = yield browser.newContext();
986
1071
  const seen = [];
987
1072
  const refused = [];
988
1073
  const shots = [];
1074
+ if (requested)
1075
+ (0, served_cache_1.recordRequests)(context, () => requested);
989
1076
  try {
990
1077
  const page = yield context.newPage();
991
- for (const frame of frames) {
1078
+ if (requested)
1079
+ yield (yield context.newCDPSession(page)).send('Network.setCacheDisabled', { cacheDisabled: true });
1080
+ const seeOne = (frame) => __awaiter(void 0, void 0, void 0, function* () {
992
1081
  yield page.setViewportSize((0, shot_1.viewportOf)(frame.size));
993
1082
  yield (0, thumb_1.openFrame)(page, `${base}/frame.html?${frame.search}`);
994
1083
  yield page.addStyleTag({ content: NO_MOTION });
995
- yield page.evaluate(thumb_1.settled);
996
- const found = (yield page.evaluate(seeFrame({ discover: frame.interaction === null, part, ownCss, clip: frame.clip })));
1084
+ yield (0, thumb_1.awaitSettled)(page);
1085
+ const found = (yield page.evaluate((0, exports.seeFrame)({ discover: frame.interaction === null, part, ownCss, controlParts, clip: frame.clip })));
997
1086
  if ('refused' in found) {
998
1087
  refused.push(`${frame.state}: ${found.refused}`);
999
- continue;
1088
+ return;
1000
1089
  }
1001
1090
  if (frame.interaction === null) {
1002
1091
  const box = frame.clip ? yield page.locator('#root').boundingBox() : null;
@@ -1016,7 +1105,7 @@ const seeFrames = (options) => __awaiter(void 0, void 0, void 0, function* () {
1016
1105
  const drawn = yield shot();
1017
1106
  const drawnColours = (yield page.evaluate(colourSnapshot(element.at)));
1018
1107
  yield page.evaluate(forceOn({ at: element.at, interaction, on: false }));
1019
- yield page.evaluate(thumb_1.settled);
1108
+ yield (0, thumb_1.awaitSettled)(page);
1020
1109
  const rest = yield shot();
1021
1110
  const restColours = (yield page.evaluate(colourSnapshot(element.at)));
1022
1111
  yield page.evaluate(forceOn({ at: element.at, interaction, on: true }));
@@ -1032,7 +1121,7 @@ const seeFrames = (options) => __awaiter(void 0, void 0, void 0, function* () {
1032
1121
  const controls = [];
1033
1122
  const surfaces = [];
1034
1123
  for (const control of found.controls)
1035
- controls.push(Object.assign(Object.assign({ id: control.id, forced: yield forcedOf(control), selected: control.selected, disabled: control.disabled, look: control.look }, (control.keyboard ? { keyboard: true } : {})), { box: control.frameBox }));
1124
+ controls.push(Object.assign(Object.assign(Object.assign({ id: control.id, forced: yield forcedOf(control), selected: control.selected, disabled: control.disabled, look: control.look }, (control.keyboard ? { keyboard: true } : {})), { box: control.frameBox }), (control.covered ? { covered: true } : {})));
1036
1125
  for (const surface of found.surfaces) {
1037
1126
  const options = [];
1038
1127
  for (const option of surface.options)
@@ -1046,7 +1135,16 @@ const seeFrames = (options) => __awaiter(void 0, void 0, void 0, function* () {
1046
1135
  surfaces,
1047
1136
  found: found.found,
1048
1137
  overrides: found.overrides,
1138
+ backdrop: found.backdrop,
1049
1139
  });
1140
+ });
1141
+ for (const frame of frames) {
1142
+ try {
1143
+ yield seeOne(frame);
1144
+ }
1145
+ catch (error) {
1146
+ refused.push(`${frame.state}: design check could not draw this frame (${error instanceof Error ? error.message.split('\n')[0] : String(error)})`);
1147
+ }
1050
1148
  }
1051
1149
  }
1052
1150
  finally {
@@ -1067,13 +1165,20 @@ const seeFrames = (options) => __awaiter(void 0, void 0, void 0, function* () {
1067
1165
  }),
1068
1166
  };
1069
1167
  });
1168
+ const COMPLETENESS_SIGHTS = 'completeness-sights';
1169
+ const COMPLETENESS_SIGHTS_LIMIT = 64 * 1024 * 1024;
1170
+ const completenessCacheOf = (options) => ({
1171
+ store: (0, served_cache_1.createServedCache)((0, vite_cache_1.viteCacheOf)(options.target, COMPLETENESS_SIGHTS), COMPLETENESS_SIGHTS_LIMIT),
1172
+ served: (0, served_cache_1.createServedHashes)(options.base, (0, served_cache_1.fetchServedOf)((0, served_cache_1.reachableBaseOf)(options.address))),
1173
+ salt: `${(0, code_hash_1.completenessCodeOf)()} ${(0, compare_cache_1.browserVersionOf)(options.from)}`,
1174
+ });
1070
1175
  /**
1071
1176
  * Draws every state of one part of the product, at rest and, unless `restOnly`, in each interaction it declares,
1072
1177
  * once at its first preset or width, and answers what each frame showed, or why its module did not load as a string.
1073
1178
  */
1074
1179
  const seePart = (options) => __awaiter(void 0, void 0, void 0, function* () {
1075
- var _a, _b, _c, _d, _e;
1076
- const { product, part, system, base, load, draw, restOnly = false, sketch = null } = options;
1180
+ var _a, _b, _c, _d, _e, _f;
1181
+ const { product, part, system, base, load, draw, restOnly = false, sketch = null, cache } = options;
1077
1182
  const key = (0, resolve_product_1.partKeyOf)(part);
1078
1183
  const loaded = yield load((0, system_modules_1.productModuleIdOf)({ file: part.file, product: product.name, sketch }))
1079
1184
  .then((module) => ({ module: module }))
@@ -1118,7 +1223,17 @@ const seePart = (options) => __awaiter(void 0, void 0, void 0, function* () {
1118
1223
  .filter((file) => file.endsWith('.css'))
1119
1224
  .sort()
1120
1225
  .map((file) => (0, fs_1.readFileSync)((0, path_1.join)(dir, file), 'utf8'));
1121
- const { seen, refused, changes } = yield draw((browser) => seeFrames({ browser, base, frames, part: key, ownCss }));
1226
+ const controlParts = Object.fromEntries(Object.entries((_f = (0, exports.declaredControlsOf)(definition === null || definition === void 0 ? void 0 : definition.controls)) !== null && _f !== void 0 ? _f : {}).flatMap(([id, control]) => control.part === null ? [] : [[id, control.part]]));
1227
+ const cacheKey = cache ? (0, compare_cache_1.cacheKeyOf)([cache.salt, product.name, sketch, key, frames, ownCss, controlParts]) : null;
1228
+ const held = cache && cacheKey ? yield (0, served_cache_1.servedHitOf)(cache, cacheKey) : null;
1229
+ const requested = [];
1230
+ const drawn = () => __awaiter(void 0, void 0, void 0, function* () {
1231
+ const sight = yield draw((browser) => seeFrames({ browser, base, frames, part: key, ownCss, controlParts, requested: cache ? requested : undefined }));
1232
+ if (cache && cacheKey)
1233
+ yield (0, served_cache_1.writeServed)(cache, { key: cacheKey, requested, value: sight });
1234
+ return sight;
1235
+ });
1236
+ const { seen, refused, changes } = held !== null && held !== void 0 ? held : (yield drawn());
1122
1237
  const owner = (0, inventory_approval_1.partOwnerOf)({ product, part });
1123
1238
  return {
1124
1239
  definition,
@@ -1168,27 +1283,74 @@ const completenessOf = (options) => __awaiter(void 0, void 0, void 0, function*
1168
1283
  return Object.assign(Object.assign({ gaps }, (checked.exceptions.length > 0 ? { exceptions: checked.exceptions } : {})), (hints.length > 0 ? { hints } : {}));
1169
1284
  });
1170
1285
  exports.completenessOf = completenessOf;
1286
+ const slotsOf = (size) => {
1287
+ let free = size;
1288
+ const waiting = [];
1289
+ return (work) => __awaiter(void 0, void 0, void 0, function* () {
1290
+ if (free > 0)
1291
+ free--;
1292
+ else
1293
+ yield new Promise((resolve) => waiting.push(resolve));
1294
+ try {
1295
+ return yield work();
1296
+ }
1297
+ finally {
1298
+ const next = waiting.shift();
1299
+ if (next)
1300
+ next();
1301
+ else
1302
+ free++;
1303
+ }
1304
+ });
1305
+ };
1171
1306
  /**
1172
1307
  * Checks each named part as `completenessOf` does, sharing one server, browser and cache, and answers the gaps of
1173
1308
  * each part, or why it could not be checked as a string.
1174
1309
  */
1175
1310
  const partsCompletenessOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
1176
1311
  var _a, _b, _c, _d;
1177
- const { target, config, product, sketch = null } = options;
1312
+ const { target, config, product, sketch = null, warm } = options;
1178
1313
  const resolveChromium = (_a = options.chromiumOf) !== null && _a !== void 0 ? _a : browser_1.chromiumOf;
1179
1314
  const system = (0, system_modules_1.createSystemModules)({ target, config });
1180
1315
  const parts = (_c = (_b = (sketch ? system.drawnOf(product.name, sketch) : product)) === null || _b === void 0 ? void 0 : _b.parts) !== null && _c !== void 0 ? _c : [];
1181
1316
  const optionValuesOf = (0, option_values_1.optionValuesChecker)({ target, config, parts });
1182
- if (!(yield resolveChromium(target)))
1317
+ const chromium = yield resolveChromium(target);
1318
+ if (!chromium)
1183
1319
  return { unavailable: 'neither the checkout nor this package resolves playwright or playwright-core' };
1184
- const queue = (0, thumb_1.createDrawQueue)({ target, chromiumOf: resolveChromium });
1185
- const server = yield (0, serve_1.createDesignServer)({ target, config, listen: true, port: 0 });
1320
+ const queue = warm ? warm.queue() : (0, thumb_1.createDrawQueue)({ target, chromiumOf: resolveChromium });
1321
+ const server = warm ? yield warm.server(config) : yield (0, serve_1.createDesignServer)({ target, config, listen: true, port: 0 });
1322
+ const sights = new Map();
1323
+ const atOnce = slotsOf(render_check_1.INSPECTS_AT_ONCE);
1186
1324
  try {
1187
- yield server.listen();
1188
- const { port } = (_d = server.httpServer) === null || _d === void 0 ? void 0 : _d.address();
1325
+ if (!warm)
1326
+ yield server.listen();
1327
+ const address = (_d = server.httpServer) === null || _d === void 0 ? void 0 : _d.address();
1328
+ const base = `http://localhost:${address.port}`;
1329
+ const cache = options.cached ? completenessCacheOf({ target, base, address, from: chromium.from }) : undefined;
1189
1330
  const checked = new Map();
1190
1331
  const exceptions = [];
1191
1332
  const hints = new Map();
1333
+ const sightOf = (resolved) => {
1334
+ const key = (0, resolve_product_1.partKeyOf)(resolved);
1335
+ const known = sights.get(key);
1336
+ if (known)
1337
+ return known;
1338
+ const sight = atOnce(() => (0, exports.seePart)({
1339
+ product,
1340
+ part: resolved,
1341
+ system,
1342
+ base,
1343
+ load: (id) => server.ssrLoadModule(id),
1344
+ draw: (job) => queue.run(job),
1345
+ sketch,
1346
+ cache,
1347
+ restOnly: options.undeclaredOnly,
1348
+ }));
1349
+ sight.catch(() => undefined);
1350
+ sights.set(key, sight);
1351
+ return sight;
1352
+ };
1353
+ const resolvedOf = (key) => parts.find((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === key);
1192
1354
  const gapsOfPart = (key, chain) => __awaiter(void 0, void 0, void 0, function* () {
1193
1355
  const known = checked.get(key);
1194
1356
  if (known !== undefined && !chain.includes(key))
@@ -1198,43 +1360,50 @@ const partsCompletenessOf = (options) => __awaiter(void 0, void 0, void 0, funct
1198
1360
  return gaps;
1199
1361
  });
1200
1362
  const freshGapsOfPart = (key, chain) => __awaiter(void 0, void 0, void 0, function* () {
1201
- var _a, _b, _c, _d;
1202
- const resolved = parts.find((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === key);
1363
+ var _a, _b, _c, _d, _e;
1364
+ const resolved = resolvedOf(key);
1203
1365
  if (!resolved)
1204
1366
  return `product "${product.name}" has no part "${key}"`;
1205
1367
  if (chain.includes(key))
1206
1368
  return `its controls name each other in a cycle: ${[...chain, key].join(' > ')}`;
1207
- const sight = yield (0, exports.seePart)({
1208
- product,
1209
- part: resolved,
1210
- system,
1211
- base: `http://localhost:${port}`,
1212
- load: (id) => server.ssrLoadModule(id),
1213
- draw: (job) => queue.run(job),
1214
- sketch,
1215
- });
1369
+ const sight = yield sightOf(resolved);
1216
1370
  if (typeof sight === 'string')
1217
1371
  return [{ code: 'RENDER', target: key, detail: (_a = sight.split('\n')[0]) !== null && _a !== void 0 ? _a : '' }];
1218
1372
  const { definition, states, seen, refused, changes, owner, hash } = sight;
1373
+ if (options.undeclaredOnly)
1374
+ return discoveryGapsOf({
1375
+ part: key,
1376
+ declared: (_b = (0, exports.declaredControlsOf)(definition === null || definition === void 0 ? void 0 : definition.controls)) !== null && _b !== void 0 ? _b : {},
1377
+ frames: seen,
1378
+ }).filter(isUndeclaredControlGap);
1219
1379
  const optionProblems = optionValuesOf(resolved, definition !== null && definition !== void 0 ? definition : {});
1220
1380
  hints.set(key, [
1221
1381
  ...(0, exports.smallChangeHintsOf)({ part: key, controls: definition === null || definition === void 0 ? void 0 : definition.controls, changes }),
1222
- ...(0, exports.controlStateGapsOf)({ part: key, controls: definition === null || definition === void 0 ? void 0 : definition.controls, states }).map(exports.completenessGapLineOf),
1223
- ...discoveryGapsOf({ part: key, declared: (_b = (0, exports.declaredControlsOf)(definition === null || definition === void 0 ? void 0 : definition.controls)) !== null && _b !== void 0 ? _b : {}, frames: seen })
1224
- .filter(isUndeclaredControlGap)
1225
- .map(exports.completenessGapLineOf),
1226
- ...optionProblems
1227
- .filter((gap) => gap.code === 'OPTION-VALUE-MISSING')
1228
- .map((gap) => (0, exports.completenessGapLineOf)(Object.assign(Object.assign({}, gap), { target: key }))),
1382
+ ...[
1383
+ ...(0, exports.controlStateGapsOf)({ part: key, controls: definition === null || definition === void 0 ? void 0 : definition.controls, states }),
1384
+ ...discoveryGapsOf({
1385
+ part: key,
1386
+ declared: (_c = (0, exports.declaredControlsOf)(definition === null || definition === void 0 ? void 0 : definition.controls)) !== null && _c !== void 0 ? _c : {},
1387
+ frames: seen,
1388
+ }).filter(isUndeclaredControlGap),
1389
+ ...optionProblems
1390
+ .filter((gap) => gap.code === 'OPTION-VALUE-MISSING')
1391
+ .map((gap) => (Object.assign(Object.assign({}, gap), { target: key }))),
1392
+ ].map((gap) => `HINT ${(0, exports.completenessGapLineOf)(gap)}`),
1229
1393
  ]);
1230
- const sketched = ((_c = product.parts.find((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === key)) === null || _c === void 0 ? void 0 : _c.file) !== resolved.file;
1394
+ const sketched = ((_d = product.parts.find((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === key)) === null || _d === void 0 ? void 0 : _d.file) !== resolved.file;
1231
1395
  const reviewed = sketched || (0, merged_parts_1.readMerged)(owner.dir)[key] === hash;
1232
1396
  const referenced = {};
1233
1397
  const used = [
1234
- ...Object.values((_d = (0, exports.declaredControlsOf)(definition === null || definition === void 0 ? void 0 : definition.controls)) !== null && _d !== void 0 ? _d : {}).map((control) => control.part),
1398
+ ...Object.values((_e = (0, exports.declaredControlsOf)(definition === null || definition === void 0 ? void 0 : definition.controls)) !== null && _e !== void 0 ? _e : {}).map((control) => control.part),
1235
1399
  ...ownersOf(seen),
1236
1400
  ];
1237
1401
  const isKitPart = (other) => { var _a; return resolved.origin !== 'base' && ((_a = parts.find((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === other)) === null || _a === void 0 ? void 0 : _a.origin) === 'base'; };
1402
+ for (const other of used) {
1403
+ const ahead = other === null || isKitPart(other) ? undefined : resolvedOf(other);
1404
+ if (ahead)
1405
+ void sightOf(ahead);
1406
+ }
1238
1407
  for (const other of used)
1239
1408
  if (other !== null && !(other in referenced))
1240
1409
  referenced[other] = isKitPart(other) ? [] : yield gapsOfPart(other, [...chain, key]);
@@ -1242,18 +1411,21 @@ const partsCompletenessOf = (options) => __awaiter(void 0, void 0, void 0, funct
1242
1411
  part: key,
1243
1412
  exceptions: (0, exceptions_1.readExceptions)(owner.dir),
1244
1413
  hash,
1245
- gaps: (0, exports.completenessGapsOf)({
1246
- part: key,
1247
- controls: definition === null || definition === void 0 ? void 0 : definition.controls,
1248
- states,
1249
- frames: seen,
1250
- reviewed,
1251
- grid: definition === null || definition === void 0 ? void 0 : definition.grid,
1252
- referenced,
1253
- inventory: resolved.layer === 'pages'
1254
- ? (0, inventory_approval_1.inventoryStateOf)({ approval: (0, inventory_approval_1.readInventory)(owner.dir)[key], ids: (0, exports.inventoryIdsOf)(seen), hash })
1255
- : undefined,
1256
- }),
1414
+ gaps: [
1415
+ ...(0, exports.completenessGapsOf)({
1416
+ part: key,
1417
+ controls: definition === null || definition === void 0 ? void 0 : definition.controls,
1418
+ states,
1419
+ frames: seen,
1420
+ reviewed,
1421
+ grid: definition === null || definition === void 0 ? void 0 : definition.grid,
1422
+ referenced,
1423
+ inventory: resolved.layer === 'pages'
1424
+ ? (0, inventory_approval_1.inventoryStateOf)({ approval: (0, inventory_approval_1.readInventory)(owner.dir)[key], ids: (0, exports.inventoryIdsOf)(seen), hash })
1425
+ : undefined,
1426
+ }),
1427
+ ...(resolved.layer === 'pages' ? [] : (0, demo_backdrop_1.demoBackdropGapsOf)({ part: key, frames: seen })),
1428
+ ],
1257
1429
  });
1258
1430
  exceptions.push(...excepted.listed);
1259
1431
  return [
@@ -1262,9 +1434,16 @@ const partsCompletenessOf = (options) => __awaiter(void 0, void 0, void 0, funct
1262
1434
  ...excepted.gaps,
1263
1435
  ];
1264
1436
  });
1437
+ for (const key of options.parts) {
1438
+ const ahead = resolvedOf(key);
1439
+ if (ahead)
1440
+ void sightOf(ahead);
1441
+ }
1265
1442
  const gaps = new Map();
1266
- for (const part of options.parts)
1443
+ for (const part of options.parts) {
1444
+ yield (0, run_yield_1.yieldRun)();
1267
1445
  gaps.set(part, yield gapsOfPart(part, []));
1446
+ }
1268
1447
  return { gaps, exceptions, hints };
1269
1448
  }
1270
1449
  catch (error) {
@@ -1273,8 +1452,39 @@ const partsCompletenessOf = (options) => __awaiter(void 0, void 0, void 0, funct
1273
1452
  throw error;
1274
1453
  }
1275
1454
  finally {
1276
- yield Promise.all([queue.close(), server.close()]);
1455
+ yield Promise.allSettled(sights.values());
1456
+ if (!warm)
1457
+ yield Promise.all([queue.close(), server.close()]);
1277
1458
  }
1278
1459
  });
1279
1460
  exports.partsCompletenessOf = partsCompletenessOf;
1461
+ /**
1462
+ * The `CONTROL-UNDECLARED` gaps a sketch variant adds to `parts`: a control it draws at rest that no `controls`
1463
+ * entry declares and the merged part does not draw undeclared either. Answers the gap lines, or why it could not draw.
1464
+ */
1465
+ const addedUndeclaredControlsOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
1466
+ const { target, config, product, sketch, parts, warm } = options;
1467
+ const drawn = yield (0, exports.partsCompletenessOf)({ target, config, product, parts, sketch, warm, undeclaredOnly: true });
1468
+ if ('unavailable' in drawn)
1469
+ return drawn;
1470
+ const failed = new Map();
1471
+ for (const [part, gaps] of drawn.gaps)
1472
+ if (Array.isArray(gaps) && gaps.length > 0)
1473
+ failed.set(part, gaps);
1474
+ const merged = [...failed.keys()].filter((part) => product.parts.some((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === part));
1475
+ const before = merged.length > 0
1476
+ ? yield (0, exports.partsCompletenessOf)({ target, config, product, parts: merged, warm, undeclaredOnly: true })
1477
+ : null;
1478
+ if (before && 'unavailable' in before)
1479
+ return before;
1480
+ const lines = [...failed].flatMap(([part, gaps]) => {
1481
+ const known = before === null || before === void 0 ? void 0 : before.gaps.get(part);
1482
+ const details = new Set(Array.isArray(known) ? known.map((gap) => gap.detail) : []);
1483
+ return gaps
1484
+ .filter((gap) => !details.has(gap.detail))
1485
+ .map((gap) => `${(0, exports.completenessGapLineOf)(gap)} (variant ${sketch.variant})`);
1486
+ });
1487
+ return { lines };
1488
+ });
1489
+ exports.addedUndeclaredControlsOf = addedUndeclaredControlsOf;
1280
1490
  //# sourceMappingURL=complete.js.map