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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/CHANGELOG.md +153 -0
  2. package/build-info.json +1 -1
  3. package/design/arrow-anchor.ts +55 -0
  4. package/design/define-call.ts +3 -0
  5. package/design/define-part.ts +28 -1
  6. package/design/web/frame.ts +28 -0
  7. package/package.json +1 -1
  8. package/src/lib/api/compose.js +3 -2
  9. package/src/lib/api/compose.js.map +1 -1
  10. package/src/lib/api/git.js +2 -1
  11. package/src/lib/api/git.js.map +1 -1
  12. package/src/lib/api/setup.js +2 -2
  13. package/src/lib/api/setup.js.map +1 -1
  14. package/src/lib/design/asset-shot.js +2 -2
  15. package/src/lib/design/asset-shot.js.map +1 -1
  16. package/src/lib/design/blank-png.d.ts +2 -0
  17. package/src/lib/design/blank-png.js +28 -0
  18. package/src/lib/design/blank-png.js.map +1 -0
  19. package/src/lib/design/cache-entry.d.ts +8 -0
  20. package/src/lib/design/cache-entry.js +30 -0
  21. package/src/lib/design/cache-entry.js.map +1 -0
  22. package/src/lib/design/calls-tsconfig.js +20 -13
  23. package/src/lib/design/calls-tsconfig.js.map +1 -1
  24. package/src/lib/design/calls.js +3 -3
  25. package/src/lib/design/calls.js.map +1 -1
  26. package/src/lib/design/changed-parts.d.ts +1 -1
  27. package/src/lib/design/check.d.ts +2 -0
  28. package/src/lib/design/check.js +91 -24
  29. package/src/lib/design/check.js.map +1 -1
  30. package/src/lib/design/code-hash.d.ts +30 -0
  31. package/src/lib/design/code-hash.js +118 -0
  32. package/src/lib/design/code-hash.js.map +1 -0
  33. package/src/lib/design/commit-hunks.d.ts +2 -2
  34. package/src/lib/design/commit-hunks.js +2 -2
  35. package/src/lib/design/design-command.js +131 -36
  36. package/src/lib/design/design-command.js.map +1 -1
  37. package/src/lib/design/{paths.d.ts → design-config.d.ts} +6 -28
  38. package/src/lib/design/design-config.js +35 -0
  39. package/src/lib/design/design-config.js.map +1 -0
  40. package/src/lib/design/design-lint.d.ts +68 -0
  41. package/src/lib/design/design-lint.js +183 -0
  42. package/src/lib/design/design-lint.js.map +1 -0
  43. package/src/lib/design/draw-ledger.d.ts +6 -0
  44. package/src/lib/design/draw-ledger.js +10 -0
  45. package/src/lib/design/draw-ledger.js.map +1 -1
  46. package/src/lib/design/force-interactions.d.ts +2 -0
  47. package/src/lib/design/force-interactions.js +4 -2
  48. package/src/lib/design/force-interactions.js.map +1 -1
  49. package/src/lib/design/generated-stylesheets.d.ts +1 -1
  50. package/src/lib/design/generated-stylesheets.js +2 -2
  51. package/src/lib/design/generated-stylesheets.js.map +1 -1
  52. package/src/lib/design/git-top.d.ts +5 -0
  53. package/src/lib/design/git-top.js +16 -0
  54. package/src/lib/design/git-top.js.map +1 -0
  55. package/src/lib/design/hooks-problem.d.ts +2 -0
  56. package/src/lib/design/hooks-problem.js +23 -0
  57. package/src/lib/design/hooks-problem.js.map +1 -0
  58. package/src/lib/design/index.d.ts +4 -1
  59. package/src/lib/design/index.js +4 -1
  60. package/src/lib/design/index.js.map +1 -1
  61. package/src/lib/design/is-running.d.ts +1 -0
  62. package/src/lib/design/is-running.js +14 -0
  63. package/src/lib/design/is-running.js.map +1 -0
  64. package/src/lib/design/legacy.js +3 -3
  65. package/src/lib/design/legacy.js.map +1 -1
  66. package/src/lib/design/mcp-command.js +5 -12
  67. package/src/lib/design/mcp-command.js.map +1 -1
  68. package/src/lib/design/merge-compare.js +3 -3
  69. package/src/lib/design/merge-compare.js.map +1 -1
  70. package/src/lib/design/motion-command.js +3 -3
  71. package/src/lib/design/motion-command.js.map +1 -1
  72. package/src/lib/design/new-call.js +3 -3
  73. package/src/lib/design/new-call.js.map +1 -1
  74. package/src/lib/design/old-shot-folders.d.ts +2 -0
  75. package/src/lib/design/old-shot-folders.js +26 -0
  76. package/src/lib/design/old-shot-folders.js.map +1 -0
  77. package/src/lib/design/package-root.d.ts +21 -0
  78. package/src/lib/design/package-root.js +79 -0
  79. package/src/lib/design/package-root.js.map +1 -0
  80. package/src/lib/design/parent-watch.d.ts +7 -0
  81. package/src/lib/design/parent-watch.js +23 -0
  82. package/src/lib/design/parent-watch.js.map +1 -0
  83. package/src/lib/design/part-marks.js +2 -2
  84. package/src/lib/design/part-marks.js.map +1 -1
  85. package/src/lib/design/phase-timing.d.ts +5 -0
  86. package/src/lib/design/phase-timing.js +27 -0
  87. package/src/lib/design/phase-timing.js.map +1 -0
  88. package/src/lib/design/physical-cores.d.ts +12 -0
  89. package/src/lib/design/physical-cores.js +43 -0
  90. package/src/lib/design/physical-cores.js.map +1 -0
  91. package/src/lib/design/product-command.js +4 -4
  92. package/src/lib/design/product-command.js.map +1 -1
  93. package/src/lib/design/push-status.d.ts +30 -0
  94. package/src/lib/design/push-status.js +122 -0
  95. package/src/lib/design/push-status.js.map +1 -0
  96. package/src/lib/design/ready-shots.d.ts +18 -35
  97. package/src/lib/design/ready-shots.js +46 -111
  98. package/src/lib/design/ready-shots.js.map +1 -1
  99. package/src/lib/design/render-packages.d.ts +3 -1
  100. package/src/lib/design/render-packages.js +6 -2
  101. package/src/lib/design/render-packages.js.map +1 -1
  102. package/src/lib/design/render-worker.js +23 -3
  103. package/src/lib/design/render-worker.js.map +1 -1
  104. package/src/lib/design/render.d.ts +24 -3
  105. package/src/lib/design/render.js +23 -9
  106. package/src/lib/design/render.js.map +1 -1
  107. package/src/lib/design/resident/client.d.ts +52 -0
  108. package/src/lib/design/resident/client.js +263 -0
  109. package/src/lib/design/resident/client.js.map +1 -0
  110. package/src/lib/design/resident/discovery.d.ts +21 -0
  111. package/src/lib/design/resident/discovery.js +63 -0
  112. package/src/lib/design/resident/discovery.js.map +1 -0
  113. package/src/lib/design/resident/resident-process.d.ts +19 -0
  114. package/src/lib/design/resident/resident-process.js +189 -0
  115. package/src/lib/design/resident/resident-process.js.map +1 -0
  116. package/src/lib/design/resident/server.d.ts +52 -0
  117. package/src/lib/design/resident/server.js +212 -0
  118. package/src/lib/design/resident/server.js.map +1 -0
  119. package/src/lib/design/run-abort.d.ts +9 -0
  120. package/src/lib/design/run-abort.js +45 -0
  121. package/src/lib/design/run-abort.js.map +1 -0
  122. package/src/lib/design/run-deadline.d.ts +19 -0
  123. package/src/lib/design/run-deadline.js +104 -0
  124. package/src/lib/design/run-deadline.js.map +1 -0
  125. package/src/lib/design/run-yield.d.ts +8 -0
  126. package/src/lib/design/run-yield.js +43 -0
  127. package/src/lib/design/run-yield.js.map +1 -0
  128. package/src/lib/design/serve-state.d.ts +15 -0
  129. package/src/lib/design/serve-state.js +56 -0
  130. package/src/lib/design/serve-state.js.map +1 -0
  131. package/src/lib/design/serve.d.ts +20 -2
  132. package/src/lib/design/serve.js +147 -43
  133. package/src/lib/design/serve.js.map +1 -1
  134. package/src/lib/design/server-identity.d.ts +5 -1
  135. package/src/lib/design/server-identity.js +4 -1
  136. package/src/lib/design/server-identity.js.map +1 -1
  137. package/src/lib/design/shot-board.d.ts +26 -0
  138. package/src/lib/design/shot-board.js +80 -0
  139. package/src/lib/design/shot-board.js.map +1 -0
  140. package/src/lib/design/shot-command.d.ts +1 -1
  141. package/src/lib/design/shot-command.js +12 -5
  142. package/src/lib/design/shot-command.js.map +1 -1
  143. package/src/lib/design/shot-store.d.ts +29 -3
  144. package/src/lib/design/shot-store.js +206 -36
  145. package/src/lib/design/shot-store.js.map +1 -1
  146. package/src/lib/design/shot.d.ts +12 -4
  147. package/src/lib/design/shot.js +98 -14
  148. package/src/lib/design/shot.js.map +1 -1
  149. package/src/lib/design/sketch-at.js +2 -1
  150. package/src/lib/design/sketch-at.js.map +1 -1
  151. package/src/lib/design/sketch-command.d.ts +13 -0
  152. package/src/lib/design/sketch-command.js +346 -73
  153. package/src/lib/design/sketch-command.js.map +1 -1
  154. package/src/lib/design/ssr-shims.d.ts +1 -0
  155. package/src/lib/design/ssr-shims.js +3 -3
  156. package/src/lib/design/ssr-shims.js.map +1 -1
  157. package/src/lib/design/stamp.d.ts +5 -0
  158. package/src/lib/design/stamp.js +6 -5
  159. package/src/lib/design/stamp.js.map +1 -1
  160. package/src/lib/design/status.d.ts +1 -1
  161. package/src/lib/design/status.js +15 -4
  162. package/src/lib/design/status.js.map +1 -1
  163. package/src/lib/design/studio-api.d.ts +7 -15
  164. package/src/lib/design/studio-api.js +39 -140
  165. package/src/lib/design/studio-api.js.map +1 -1
  166. package/src/lib/design/system/accepted-pictures.d.ts +15 -29
  167. package/src/lib/design/system/accepted-pictures.js +156 -134
  168. package/src/lib/design/system/accepted-pictures.js.map +1 -1
  169. package/src/lib/design/system/action-cache.d.ts +45 -0
  170. package/src/lib/design/system/action-cache.js +72 -0
  171. package/src/lib/design/system/action-cache.js.map +1 -0
  172. package/src/lib/design/system/action-lost.d.ts +8 -6
  173. package/src/lib/design/system/action-lost.js +13 -17
  174. package/src/lib/design/system/action-lost.js.map +1 -1
  175. package/src/lib/design/system/action-press.d.ts +7 -1
  176. package/src/lib/design/system/action-press.js +16 -4
  177. package/src/lib/design/system/action-press.js.map +1 -1
  178. package/src/lib/design/system/actions-command.d.ts +12 -5
  179. package/src/lib/design/system/actions-command.js +187 -66
  180. package/src/lib/design/system/actions-command.js.map +1 -1
  181. package/src/lib/design/system/actions.d.ts +27 -4
  182. package/src/lib/design/system/actions.js +59 -21
  183. package/src/lib/design/system/actions.js.map +1 -1
  184. package/src/lib/design/system/anti-alias.d.ts +2 -0
  185. package/src/lib/design/system/anti-alias.js +11 -0
  186. package/src/lib/design/system/anti-alias.js.map +1 -0
  187. package/src/lib/design/system/app-files.js +19 -3
  188. package/src/lib/design/system/app-files.js.map +1 -1
  189. package/src/lib/design/system/arrow-anchor.d.ts +9 -0
  190. package/src/lib/design/system/arrow-anchor.js +40 -0
  191. package/src/lib/design/system/arrow-anchor.js.map +1 -0
  192. package/src/lib/design/system/base-issues.d.ts +28 -0
  193. package/src/lib/design/system/base-issues.js +80 -0
  194. package/src/lib/design/system/base-issues.js.map +1 -0
  195. package/src/lib/design/system/base.d.ts +1 -1
  196. package/src/lib/design/system/base.js +2 -2
  197. package/src/lib/design/system/base.js.map +1 -1
  198. package/src/lib/design/system/baseline-history.d.ts +13 -0
  199. package/src/lib/design/system/baseline-history.js +40 -0
  200. package/src/lib/design/system/baseline-history.js.map +1 -0
  201. package/src/lib/design/system/bespoke-controls.d.ts +4 -1
  202. package/src/lib/design/system/bespoke-controls.js +72 -70
  203. package/src/lib/design/system/bespoke-controls.js.map +1 -1
  204. package/src/lib/design/system/build-ready-contract.d.ts +7 -1
  205. package/src/lib/design/system/build-ready-contract.js +7 -1
  206. package/src/lib/design/system/build-ready-contract.js.map +1 -1
  207. package/src/lib/design/system/build-running.d.ts +13 -0
  208. package/src/lib/design/system/build-running.js +48 -0
  209. package/src/lib/design/system/build-running.js.map +1 -0
  210. package/src/lib/design/system/check-record.d.ts +18 -0
  211. package/src/lib/design/system/check-record.js +47 -0
  212. package/src/lib/design/system/check-record.js.map +1 -0
  213. package/src/lib/design/system/check-rules.d.ts +1 -1
  214. package/src/lib/design/system/check-rules.js +19 -1
  215. package/src/lib/design/system/check-rules.js.map +1 -1
  216. package/src/lib/design/system/check-system.d.ts +25 -4
  217. package/src/lib/design/system/check-system.js +289 -121
  218. package/src/lib/design/system/check-system.js.map +1 -1
  219. package/src/lib/design/system/comments/inbox.d.ts +1 -1
  220. package/src/lib/design/system/compare-cache.d.ts +20 -0
  221. package/src/lib/design/system/compare-cache.js +92 -0
  222. package/src/lib/design/system/compare-cache.js.map +1 -0
  223. package/src/lib/design/system/compare-command.d.ts +82 -51
  224. package/src/lib/design/system/compare-command.js +362 -340
  225. package/src/lib/design/system/compare-command.js.map +1 -1
  226. package/src/lib/design/system/complete.d.ts +31 -1
  227. package/src/lib/design/system/complete.js +141 -27
  228. package/src/lib/design/system/complete.js.map +1 -1
  229. package/src/lib/design/system/decision-refs.d.ts +5 -0
  230. package/src/lib/design/system/decision-refs.js +21 -0
  231. package/src/lib/design/system/decision-refs.js.map +1 -0
  232. package/src/lib/design/system/design-hash.d.ts +22 -1
  233. package/src/lib/design/system/design-hash.js +63 -4
  234. package/src/lib/design/system/design-hash.js.map +1 -1
  235. package/src/lib/design/system/dom-command.d.ts +1 -1
  236. package/src/lib/design/system/dom-command.js +8 -5
  237. package/src/lib/design/system/dom-command.js.map +1 -1
  238. package/src/lib/design/system/drawn-open-points.d.ts +1 -1
  239. package/src/lib/design/system/dropped-props.d.ts +19 -5
  240. package/src/lib/design/system/dropped-props.js +133 -21
  241. package/src/lib/design/system/dropped-props.js.map +1 -1
  242. package/src/lib/design/system/grid-report.d.ts +5 -0
  243. package/src/lib/design/system/grid-report.js +78 -0
  244. package/src/lib/design/system/grid-report.js.map +1 -0
  245. package/src/lib/design/system/harness-build-cache.d.ts +17 -3
  246. package/src/lib/design/system/harness-build-cache.js +23 -10
  247. package/src/lib/design/system/harness-build-cache.js.map +1 -1
  248. package/src/lib/design/system/harness-inputs.d.ts +17 -0
  249. package/src/lib/design/system/harness-inputs.js +160 -0
  250. package/src/lib/design/system/harness-inputs.js.map +1 -0
  251. package/src/lib/design/system/harness-map.d.ts +1 -1
  252. package/src/lib/design/system/harness-server.d.ts +12 -1
  253. package/src/lib/design/system/harness-server.js +29 -19
  254. package/src/lib/design/system/harness-server.js.map +1 -1
  255. package/src/lib/design/system/harness-shot.d.ts +78 -0
  256. package/src/lib/design/system/harness-shot.js +349 -0
  257. package/src/lib/design/system/harness-shot.js.map +1 -0
  258. package/src/lib/design/system/harness-watch.d.ts +79 -0
  259. package/src/lib/design/system/harness-watch.js +334 -0
  260. package/src/lib/design/system/harness-watch.js.map +1 -0
  261. package/src/lib/design/system/implementation-baseline.d.ts +20 -0
  262. package/src/lib/design/system/implementation-baseline.js +44 -0
  263. package/src/lib/design/system/implementation-baseline.js.map +1 -0
  264. package/src/lib/design/system/leftover-gate-files.d.ts +2 -0
  265. package/src/lib/design/system/leftover-gate-files.js +15 -0
  266. package/src/lib/design/system/leftover-gate-files.js.map +1 -0
  267. package/src/lib/design/system/lib-build-lock.d.ts +18 -0
  268. package/src/lib/design/system/lib-build-lock.js +111 -0
  269. package/src/lib/design/system/lib-build-lock.js.map +1 -0
  270. package/src/lib/design/system/link-free.d.ts +12 -0
  271. package/src/lib/design/system/link-free.js +125 -0
  272. package/src/lib/design/system/link-free.js.map +1 -0
  273. package/src/lib/design/system/list-system.d.ts +4 -8
  274. package/src/lib/design/system/list-system.js +8 -78
  275. package/src/lib/design/system/list-system.js.map +1 -1
  276. package/src/lib/design/system/live-actions.d.ts +1 -1
  277. package/src/lib/design/system/live-actions.js +17 -8
  278. package/src/lib/design/system/live-actions.js.map +1 -1
  279. package/src/lib/design/system/live-compare.js +1 -1
  280. package/src/lib/design/system/live-compare.js.map +1 -1
  281. package/src/lib/design/system/live-uncovered.d.ts +7 -2
  282. package/src/lib/design/system/live-uncovered.js +44 -9
  283. package/src/lib/design/system/live-uncovered.js.map +1 -1
  284. package/src/lib/design/system/no-verdict.d.ts +13 -0
  285. package/src/lib/design/system/no-verdict.js +17 -0
  286. package/src/lib/design/system/no-verdict.js.map +1 -0
  287. package/src/lib/design/system/off-centre.d.ts +11 -0
  288. package/src/lib/design/system/off-centre.js +74 -0
  289. package/src/lib/design/system/off-centre.js.map +1 -0
  290. package/src/lib/design/system/open-points-cache.d.ts +11 -0
  291. package/src/lib/design/system/open-points-cache.js +27 -0
  292. package/src/lib/design/system/open-points-cache.js.map +1 -0
  293. package/src/lib/design/system/open-points-runner.d.ts +43 -0
  294. package/src/lib/design/system/open-points-runner.js +119 -0
  295. package/src/lib/design/system/open-points-runner.js.map +1 -0
  296. package/src/lib/design/system/open-points-worker.d.ts +1 -0
  297. package/src/lib/design/system/open-points-worker.js +28 -0
  298. package/src/lib/design/system/open-points-worker.js.map +1 -0
  299. package/src/lib/design/system/open-points.js +1 -1
  300. package/src/lib/design/system/open-points.js.map +1 -1
  301. package/src/lib/design/system/part-build-ready.d.ts +13 -7
  302. package/src/lib/design/system/part-build-ready.js +43 -15
  303. package/src/lib/design/system/part-build-ready.js.map +1 -1
  304. package/src/lib/design/system/part-compare.d.ts +18 -2
  305. package/src/lib/design/system/part-compare.js +147 -42
  306. package/src/lib/design/system/part-compare.js.map +1 -1
  307. package/src/lib/design/system/part-picture-cache.d.ts +23 -0
  308. package/src/lib/design/system/part-picture-cache.js +68 -0
  309. package/src/lib/design/system/part-picture-cache.js.map +1 -0
  310. package/src/lib/design/system/part-ready.d.ts +33 -7
  311. package/src/lib/design/system/part-ready.js +55 -17
  312. package/src/lib/design/system/part-ready.js.map +1 -1
  313. package/src/lib/design/system/part-task.d.ts +20 -0
  314. package/src/lib/design/system/part-task.js +53 -7
  315. package/src/lib/design/system/part-task.js.map +1 -1
  316. package/src/lib/design/system/pixel-cache.d.ts +16 -0
  317. package/src/lib/design/system/pixel-cache.js +79 -0
  318. package/src/lib/design/system/pixel-cache.js.map +1 -0
  319. package/src/lib/design/system/pointer-focus.d.ts +10 -2
  320. package/src/lib/design/system/pointer-focus.js +32 -9
  321. package/src/lib/design/system/pointer-focus.js.map +1 -1
  322. package/src/lib/design/system/prettier.js +4 -3
  323. package/src/lib/design/system/prettier.js.map +1 -1
  324. package/src/lib/design/system/problem.d.ts +6 -0
  325. package/src/lib/design/system/product.js +2 -2
  326. package/src/lib/design/system/product.js.map +1 -1
  327. package/src/lib/design/system/ready-command.d.ts +1 -1
  328. package/src/lib/design/system/ready-command.js +24 -4
  329. package/src/lib/design/system/ready-command.js.map +1 -1
  330. package/src/lib/design/system/record-settled.d.ts +24 -0
  331. package/src/lib/design/system/record-settled.js +50 -0
  332. package/src/lib/design/system/record-settled.js.map +1 -0
  333. package/src/lib/design/system/render-check.d.ts +18 -1
  334. package/src/lib/design/system/render-check.js +164 -104
  335. package/src/lib/design/system/render-check.js.map +1 -1
  336. package/src/lib/design/system/render-issue-key.d.ts +9 -0
  337. package/src/lib/design/system/render-issue-key.js +27 -0
  338. package/src/lib/design/system/render-issue-key.js.map +1 -0
  339. package/src/lib/design/system/resolve-product.d.ts +4 -1
  340. package/src/lib/design/system/resolve-product.js +14 -3
  341. package/src/lib/design/system/resolve-product.js.map +1 -1
  342. package/src/lib/design/system/rule-baseline.d.ts +53 -0
  343. package/src/lib/design/system/rule-baseline.js +124 -0
  344. package/src/lib/design/system/rule-baseline.js.map +1 -0
  345. package/src/lib/design/system/rule-skips.d.ts +20 -0
  346. package/src/lib/design/system/rule-skips.js +36 -0
  347. package/src/lib/design/system/rule-skips.js.map +1 -0
  348. package/src/lib/design/system/rules/canonical-class.d.ts +4 -0
  349. package/src/lib/design/system/rules/canonical-class.js +66 -13
  350. package/src/lib/design/system/rules/canonical-class.js.map +1 -1
  351. package/src/lib/design/system/rules/capability-place.d.ts +4 -2
  352. package/src/lib/design/system/rules/capability-place.js +15 -2
  353. package/src/lib/design/system/rules/capability-place.js.map +1 -1
  354. package/src/lib/design/system/rules/command-text.d.ts +7 -0
  355. package/src/lib/design/system/rules/command-text.js +72 -0
  356. package/src/lib/design/system/rules/command-text.js.map +1 -0
  357. package/src/lib/design/system/rules/design-coverage.d.ts +30 -0
  358. package/src/lib/design/system/rules/design-coverage.js +205 -0
  359. package/src/lib/design/system/rules/design-coverage.js.map +1 -0
  360. package/src/lib/design/system/rules/glued-interpolation.js +17 -1
  361. package/src/lib/design/system/rules/glued-interpolation.js.map +1 -1
  362. package/src/lib/design/system/rules/implements-unrendered.d.ts +13 -0
  363. package/src/lib/design/system/rules/implements-unrendered.js +63 -0
  364. package/src/lib/design/system/rules/implements-unrendered.js.map +1 -0
  365. package/src/lib/design/system/rules/motion.js +6 -0
  366. package/src/lib/design/system/rules/motion.js.map +1 -1
  367. package/src/lib/design/system/rules/native-title.js +13 -3
  368. package/src/lib/design/system/rules/native-title.js.map +1 -1
  369. package/src/lib/design/system/rules/option-values.d.ts +1 -1
  370. package/src/lib/design/system/rules/pending-state.d.ts +39 -0
  371. package/src/lib/design/system/rules/pending-state.js +289 -0
  372. package/src/lib/design/system/rules/pending-state.js.map +1 -0
  373. package/src/lib/design/system/rules/sdk-attribute-value.d.ts +10 -0
  374. package/src/lib/design/system/rules/sdk-attribute-value.js +78 -0
  375. package/src/lib/design/system/rules/sdk-attribute-value.js.map +1 -0
  376. package/src/lib/design/system/rules/sdk-private-var.d.ts +9 -0
  377. package/src/lib/design/system/rules/sdk-private-var.js +54 -0
  378. package/src/lib/design/system/rules/sdk-private-var.js.map +1 -0
  379. package/src/lib/design/system/rules/skips.d.ts +4 -0
  380. package/src/lib/design/system/rules/skips.js +27 -0
  381. package/src/lib/design/system/rules/skips.js.map +1 -0
  382. package/src/lib/design/system/rules/stale-replace.js +1 -0
  383. package/src/lib/design/system/rules/stale-replace.js.map +1 -1
  384. package/src/lib/design/system/rules/tailwind-classes.d.ts +1 -0
  385. package/src/lib/design/system/rules/tailwind-classes.js +11 -6
  386. package/src/lib/design/system/rules/tailwind-classes.js.map +1 -1
  387. package/src/lib/design/system/rules/token-selectors.js +10 -3
  388. package/src/lib/design/system/rules/token-selectors.js.map +1 -1
  389. package/src/lib/design/system/rules/unbound-input-known.d.ts +2 -0
  390. package/src/lib/design/system/rules/unbound-input-known.js +3 -6
  391. package/src/lib/design/system/rules/unbound-input-known.js.map +1 -1
  392. package/src/lib/design/system/rules/unbound-input.d.ts +2 -0
  393. package/src/lib/design/system/rules/unbound-input.js +12 -6
  394. package/src/lib/design/system/rules/unbound-input.js.map +1 -1
  395. package/src/lib/design/system/rules/undefined-class.js +11 -2
  396. package/src/lib/design/system/rules/undefined-class.js.map +1 -1
  397. package/src/lib/design/system/rules/utility-css.js +13 -1
  398. package/src/lib/design/system/rules/utility-css.js.map +1 -1
  399. package/src/lib/design/system/rules/visible-change.d.ts +1 -2
  400. package/src/lib/design/system/rules/visible-change.js +3 -3
  401. package/src/lib/design/system/rules/visible-change.js.map +1 -1
  402. package/src/lib/design/system/sdk-declarations.d.ts +10 -0
  403. package/src/lib/design/system/sdk-declarations.js +177 -0
  404. package/src/lib/design/system/sdk-declarations.js.map +1 -0
  405. package/src/lib/design/system/sdk-selectors.d.ts +18 -0
  406. package/src/lib/design/system/sdk-selectors.js +131 -0
  407. package/src/lib/design/system/sdk-selectors.js.map +1 -0
  408. package/src/lib/design/system/served-cache.d.ts +99 -0
  409. package/src/lib/design/system/served-cache.js +202 -0
  410. package/src/lib/design/system/served-cache.js.map +1 -0
  411. package/src/lib/design/system/settled-panes.d.ts +8 -3
  412. package/src/lib/design/system/settled-panes.js +10 -9
  413. package/src/lib/design/system/settled-panes.js.map +1 -1
  414. package/src/lib/design/system/sketch/baseline.d.ts +17 -1
  415. package/src/lib/design/system/sketch/baseline.js +48 -7
  416. package/src/lib/design/system/sketch/baseline.js.map +1 -1
  417. package/src/lib/design/system/sketch/check-format.js +3 -9
  418. package/src/lib/design/system/sketch/check-format.js.map +1 -1
  419. package/src/lib/design/system/sketch/clean-copy.d.ts +18 -0
  420. package/src/lib/design/system/sketch/clean-copy.js +104 -0
  421. package/src/lib/design/system/sketch/clean-copy.js.map +1 -0
  422. package/src/lib/design/system/sketch/cli-args.d.ts +1 -1
  423. package/src/lib/design/system/sketch/cli-args.js +2 -2
  424. package/src/lib/design/system/sketch/cli-args.js.map +1 -1
  425. package/src/lib/design/system/sketch/covered-diffs.d.ts +40 -0
  426. package/src/lib/design/system/sketch/covered-diffs.js +106 -0
  427. package/src/lib/design/system/sketch/covered-diffs.js.map +1 -0
  428. package/src/lib/design/system/sketch/edit-sketch.d.ts +14 -6
  429. package/src/lib/design/system/sketch/edit-sketch.js +87 -35
  430. package/src/lib/design/system/sketch/edit-sketch.js.map +1 -1
  431. package/src/lib/design/system/sketch/identical-renders.js +20 -14
  432. package/src/lib/design/system/sketch/identical-renders.js.map +1 -1
  433. package/src/lib/design/system/sketch/merge-commit.d.ts +20 -0
  434. package/src/lib/design/system/sketch/merge-commit.js +72 -0
  435. package/src/lib/design/system/sketch/merge-commit.js.map +1 -0
  436. package/src/lib/design/system/sketch/merge-runner.d.ts +20 -0
  437. package/src/lib/design/system/sketch/merge-runner.js +73 -0
  438. package/src/lib/design/system/sketch/merge-runner.js.map +1 -0
  439. package/src/lib/design/system/sketch/merge-step.d.ts +14 -2
  440. package/src/lib/design/system/sketch/merge-step.js +24 -12
  441. package/src/lib/design/system/sketch/merge-step.js.map +1 -1
  442. package/src/lib/design/system/sketch/merge-worker.d.ts +1 -0
  443. package/src/lib/design/system/sketch/merge-worker.js +14 -0
  444. package/src/lib/design/system/sketch/merge-worker.js.map +1 -0
  445. package/src/lib/design/system/sketch/merge.d.ts +10 -3
  446. package/src/lib/design/system/sketch/merge.js +180 -90
  447. package/src/lib/design/system/sketch/merge.js.map +1 -1
  448. package/src/lib/design/system/sketch/merged-parts.d.ts +0 -29
  449. package/src/lib/design/system/sketch/merged-parts.js +8 -56
  450. package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
  451. package/src/lib/design/system/sketch/note-language.d.ts +7 -0
  452. package/src/lib/design/system/sketch/note-language.js +83 -0
  453. package/src/lib/design/system/sketch/note-language.js.map +1 -0
  454. package/src/lib/design/system/sketch/part-definition.d.ts +6 -0
  455. package/src/lib/design/system/sketch/part-definition.js +31 -1
  456. package/src/lib/design/system/sketch/part-definition.js.map +1 -1
  457. package/src/lib/design/system/sketch/rebase-port.js +47 -2
  458. package/src/lib/design/system/sketch/rebase-port.js.map +1 -1
  459. package/src/lib/design/system/sketch/sketch-check-cache.d.ts +11 -0
  460. package/src/lib/design/system/sketch/sketch-check-cache.js +22 -0
  461. package/src/lib/design/system/sketch/sketch-check-cache.js.map +1 -0
  462. package/src/lib/design/system/sketch/sketch-check-worker.js +6 -1
  463. package/src/lib/design/system/sketch/sketch-check-worker.js.map +1 -1
  464. package/src/lib/design/system/sketch/sketch-checker.d.ts +14 -1
  465. package/src/lib/design/system/sketch/sketch-checker.js +16 -6
  466. package/src/lib/design/system/sketch/sketch-checker.js.map +1 -1
  467. package/src/lib/design/system/sketch/sketch.d.ts +37 -6
  468. package/src/lib/design/system/sketch/sketch.js +101 -13
  469. package/src/lib/design/system/sketch/sketch.js.map +1 -1
  470. package/src/lib/design/system/sketch/stale-base.js +1 -1
  471. package/src/lib/design/system/sketch/stale-base.js.map +1 -1
  472. package/src/lib/design/system/sketch/unchanged-states.d.ts +7 -3
  473. package/src/lib/design/system/sketch/unchanged-states.js +25 -12
  474. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
  475. package/src/lib/design/system/sketch/viewed-shots.d.ts +10 -2
  476. package/src/lib/design/system/sketch/viewed-shots.js +15 -22
  477. package/src/lib/design/system/sketch/viewed-shots.js.map +1 -1
  478. package/src/lib/design/system/skip-classes.d.ts +3 -0
  479. package/src/lib/design/system/skip-classes.js +17 -0
  480. package/src/lib/design/system/skip-classes.js.map +1 -0
  481. package/src/lib/design/system/slot-hosts.d.ts +38 -0
  482. package/src/lib/design/system/slot-hosts.js +93 -0
  483. package/src/lib/design/system/slot-hosts.js.map +1 -0
  484. package/src/lib/design/system/slow-checks.d.ts +4 -0
  485. package/src/lib/design/system/slow-checks.js +77 -24
  486. package/src/lib/design/system/slow-checks.js.map +1 -1
  487. package/src/lib/design/system/slow-run.d.ts +15 -5
  488. package/src/lib/design/system/slow-run.js +143 -84
  489. package/src/lib/design/system/slow-run.js.map +1 -1
  490. package/src/lib/design/system/stale-dist.d.ts +37 -1
  491. package/src/lib/design/system/stale-dist.js +58 -8
  492. package/src/lib/design/system/stale-dist.js.map +1 -1
  493. package/src/lib/design/system/stale-parts.d.ts +15 -0
  494. package/src/lib/design/system/stale-parts.js +67 -5
  495. package/src/lib/design/system/stale-parts.js.map +1 -1
  496. package/src/lib/design/system/system-command.js +3 -3
  497. package/src/lib/design/system/system-command.js.map +1 -1
  498. package/src/lib/design/system/system-modules.d.ts +4 -4
  499. package/src/lib/design/system/system-tsconfig.d.ts +9 -2
  500. package/src/lib/design/system/system-tsconfig.js +73 -13
  501. package/src/lib/design/system/system-tsconfig.js.map +1 -1
  502. package/src/lib/design/system/task-command.d.ts +3 -2
  503. package/src/lib/design/system/task-command.js +111 -73
  504. package/src/lib/design/system/task-command.js.map +1 -1
  505. package/src/lib/design/system/touched-parts.d.ts +1 -1
  506. package/src/lib/design/system/touched-parts.js +4 -5
  507. package/src/lib/design/system/touched-parts.js.map +1 -1
  508. package/src/lib/design/system/tracked-reads.d.ts +27 -0
  509. package/src/lib/design/system/tracked-reads.js +100 -0
  510. package/src/lib/design/system/tracked-reads.js.map +1 -0
  511. package/src/lib/design/system/unchanged-rows.d.ts +17 -8
  512. package/src/lib/design/system/unchanged-rows.js +90 -12
  513. package/src/lib/design/system/unchanged-rows.js.map +1 -1
  514. package/src/lib/design/system/uncommitted-decisions.d.ts +0 -2
  515. package/src/lib/design/system/uncommitted-decisions.js +3 -6
  516. package/src/lib/design/system/uncommitted-decisions.js.map +1 -1
  517. package/src/lib/design/system/visible-change-command.d.ts +13 -1
  518. package/src/lib/design/system/visible-change-command.js +10 -8
  519. package/src/lib/design/system/visible-change-command.js.map +1 -1
  520. package/src/lib/design/system/visible-change-parts.d.ts +1 -1
  521. package/src/lib/design/system/write-origin.d.ts +12 -0
  522. package/src/lib/design/system/write-origin.js +18 -0
  523. package/src/lib/design/system/write-origin.js.map +1 -0
  524. package/src/lib/design/system-use.js +4 -4
  525. package/src/lib/design/system-use.js.map +1 -1
  526. package/src/lib/design/thumb.d.ts +19 -3
  527. package/src/lib/design/thumb.js +71 -9
  528. package/src/lib/design/thumb.js.map +1 -1
  529. package/src/lib/design/timings-command.d.ts +22 -0
  530. package/src/lib/design/timings-command.js +175 -0
  531. package/src/lib/design/timings-command.js.map +1 -0
  532. package/src/lib/design/timings.d.ts +117 -0
  533. package/src/lib/design/timings.js +296 -0
  534. package/src/lib/design/timings.js.map +1 -0
  535. package/src/lib/design/typecheck.js +2 -2
  536. package/src/lib/design/typecheck.js.map +1 -1
  537. package/src/lib/design/vite-cache.d.ts +11 -0
  538. package/src/lib/design/vite-cache.js +61 -0
  539. package/src/lib/design/vite-cache.js.map +1 -0
  540. package/src/lib/design/warm-draw.d.ts +33 -0
  541. package/src/lib/design/warm-draw.js +74 -0
  542. package/src/lib/design/warm-draw.js.map +1 -0
  543. package/src/lib/design/warm-pages.d.ts +10 -2
  544. package/src/lib/design/warm-pages.js +6 -2
  545. package/src/lib/design/warm-pages.js.map +1 -1
  546. package/src/lib/design/work-root.d.ts +2 -0
  547. package/src/lib/design/work-root.js +8 -0
  548. package/src/lib/design/work-root.js.map +1 -0
  549. package/src/lib/plain-output.d.ts +27 -0
  550. package/src/lib/plain-output.js +66 -0
  551. package/src/lib/plain-output.js.map +1 -0
  552. package/src/lib/release.js +11 -3
  553. package/src/lib/release.js.map +1 -1
  554. package/src/lib/update/commits.js +2 -2
  555. package/src/lib/update/commits.js.map +1 -1
  556. package/src/lib/update/packages.js +4 -2
  557. package/src/lib/update/packages.js.map +1 -1
  558. package/src/lib/update/scan.js +8 -2
  559. package/src/lib/update/scan.js.map +1 -1
  560. package/src/lib/design/paths.js +0 -138
  561. package/src/lib/design/paths.js.map +0 -1
  562. package/src/lib/design/system/accept-command.d.ts +0 -41
  563. package/src/lib/design/system/accept-command.js +0 -139
  564. package/src/lib/design/system/accept-command.js.map +0 -1
  565. package/src/lib/design/system/go-batch.d.ts +0 -24
  566. package/src/lib/design/system/go-batch.js +0 -110
  567. package/src/lib/design/system/go-batch.js.map +0 -1
  568. package/src/lib/design/system/go-command.d.ts +0 -4
  569. package/src/lib/design/system/go-command.js +0 -64
  570. package/src/lib/design/system/go-command.js.map +0 -1
  571. package/src/lib/design/system/go-guard.d.ts +0 -26
  572. package/src/lib/design/system/go-guard.js +0 -70
  573. package/src/lib/design/system/go-guard.js.map +0 -1
  574. package/src/lib/design/system/go-step.d.ts +0 -13
  575. package/src/lib/design/system/go-step.js +0 -84
  576. package/src/lib/design/system/go-step.js.map +0 -1
  577. package/src/lib/design/system/part-go.d.ts +0 -70
  578. package/src/lib/design/system/part-go.js +0 -94
  579. package/src/lib/design/system/part-go.js.map +0 -1
  580. package/src/lib/design/system/tom-confirm.d.ts +0 -40
  581. package/src/lib/design/system/tom-confirm.js +0 -55
  582. package/src/lib/design/system/tom-confirm.js.map +0 -1
@@ -9,17 +9,25 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.designActions = exports.PART_HARNESS_ONLY = exports.partActionFailuresOf = exports.hostLineOf = exports.actionLineOf = exports.checkActions = exports.runActionInput = exports.ACTIONS_USAGE = void 0;
12
+ exports.designActions = exports.PART_HARNESS_ONLY = exports.partActionFailuresOf = exports.unlinkedSkipLineOf = exports.hostLineOf = exports.actionLineOf = exports.checkActions = exports.runActionInput = exports.ACTIONS_USAGE = void 0;
13
+ const crypto_1 = require("crypto");
14
+ const no_verdict_1 = require("./no-verdict");
13
15
  const fs_1 = require("fs");
14
16
  const os_1 = require("os");
15
17
  const path_1 = require("path");
16
18
  const browser_1 = require("../browser");
19
+ const phase_timing_1 = require("../phase-timing");
20
+ const vite_cache_1 = require("../vite-cache");
17
21
  const serve_1 = require("../serve");
18
22
  const shot_1 = require("../shot");
23
+ const timings_1 = require("../timings");
24
+ const action_cache_1 = require("./action-cache");
25
+ const code_hash_1 = require("../code-hash");
26
+ const compare_cache_1 = require("./compare-cache");
19
27
  const thumb_1 = require("../thumb");
20
28
  const actions_1 = require("./actions");
21
29
  const action_press_1 = require("./action-press");
22
- const compare_command_1 = require("./compare-command");
30
+ const harness_shot_1 = require("./harness-shot");
23
31
  const component_outputs_1 = require("./component-outputs");
24
32
  const live_actions_1 = require("./live-actions");
25
33
  const pointer_focus_1 = require("./pointer-focus");
@@ -37,8 +45,15 @@ const system_modules_1 = require("./system-modules");
37
45
  exports.ACTIONS_USAGE = 'actions <layer>/<name> --product <name> [--url <app dev server url>] [--state <name>] | actions [<layer>/<name>] --product <name> --live [--url <app build url>]';
38
46
  const ROOM_PX = 1024;
39
47
  const ACTION_BATCH_STATES = 4;
48
+ const sha256Of = (text) => (0, crypto_1.createHash)('sha256').update(text).digest('hex');
40
49
  const messageOf = (error) => (error instanceof Error ? error.message : String(error));
41
50
  const scanOf = (page, roots) => __awaiter(void 0, void 0, void 0, function* () { return (yield page.evaluate((0, actions_1.actionScanScriptOf)(roots))); });
51
+ const noSuchElementOf = (nearMisses) => {
52
+ const named = nearMisses.map((near) => `${(0, actions_1.elementNameOf)(near)}${near.owners[0] === undefined ? '' : ` in ${near.owners[0]}`}`);
53
+ return named.length === 0
54
+ ? 'the design draws no such element, so it declares no action'
55
+ : `the design draws no element of this name - it draws ${named.join(', ')}: the accessible names differ`;
56
+ };
42
57
  const probeOf = (probe) => `[data-et-action-probe="${probe}"]`;
43
58
  /**
44
59
  * Waits until the harness host shows and holds the mounted part: a page-layout host fills the viewport before the
@@ -107,8 +122,8 @@ const runActionInput = (options) => __awaiter(void 0, void 0, void 0, function*
107
122
  const listened = listen.length > 0 ? (yield page.evaluate((0, actions_1.listenEmbeddedScriptOf)(listen))) : 0;
108
123
  const target = page.locator(probeOf(element.probe));
109
124
  yield (0, action_press_1.watchMutations)(page);
110
- if (input === 'click') {
111
- yield target.click({ timeout });
125
+ if (input === 'click' || input === 'dblclick') {
126
+ yield (input === 'click' ? target.click({ timeout }) : target.dblclick({ timeout }));
112
127
  yield page.mouse.move(-1, -1);
113
128
  }
114
129
  else {
@@ -118,7 +133,7 @@ const runActionInput = (options) => __awaiter(void 0, void 0, void 0, function*
118
133
  }
119
134
  yield (0, action_press_1.awaitOutput)(page, (_a = options.output) !== null && _a !== void 0 ? _a : null);
120
135
  yield (0, action_press_1.settle)(page, timeout);
121
- if (shoot && input !== 'click' && !options.focused) {
136
+ if (shoot && input !== 'click' && input !== 'dblclick' && !options.focused) {
122
137
  yield (0, action_press_1.dropKeyboardFocus)(page);
123
138
  yield (0, action_press_1.settle)(page, timeout);
124
139
  }
@@ -136,14 +151,16 @@ const runActionInput = (options) => __awaiter(void 0, void 0, void 0, function*
136
151
  exports.runActionInput = runActionInput;
137
152
  /** Presses each interactive element of each start state of a part on the app's harness page and checks its declared action. */
138
153
  const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* () {
139
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
154
+ var _a, _b, _c, _d, _e;
140
155
  const { target, config, product, part, url, only, onLine } = options;
141
- const frame = (0, compare_command_1.compareFrameOf)({ presets: product.presets, part, preset: null });
156
+ const frame = (0, harness_shot_1.compareFrameOf)({ presets: product.presets, part, preset: null });
142
157
  if (typeof frame === 'string')
143
158
  return frame;
144
- if (!(yield (0, browser_1.chromiumOf)(target)))
159
+ const chromium = yield (0, browser_1.chromiumOf)(target);
160
+ if (!chromium)
145
161
  return 'actions needs playwright or playwright-core in the checkout';
146
162
  const server = yield (0, serve_1.createDesignServer)({ target, config, listen: true, port: 0 });
163
+ const store = server.shotStore((0, vite_cache_1.viteCacheOf)(target, compare_cache_1.COMPARE_DESIGN_SHOTS), (0, compare_cache_1.browserVersionOf)(chromium.from));
147
164
  let browser;
148
165
  const closeBrowser = () => __awaiter(void 0, void 0, void 0, function* () {
149
166
  const open = browser;
@@ -158,7 +175,10 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
158
175
  const freshBrowser = () => __awaiter(void 0, void 0, void 0, function* () {
159
176
  yield closeBrowser();
160
177
  const queue = (0, thumb_1.createDrawQueue)({ target });
161
- browser = { queue, shooter: (0, shot_1.createPartShooter)({ target, base: `http://localhost:${port}`, system, queue }) };
178
+ browser = {
179
+ queue,
180
+ shooter: (0, shot_1.createPartShooter)({ target, base: `http://localhost:${port}`, system, queue, store }),
181
+ };
162
182
  return browser;
163
183
  });
164
184
  const file = (_c = (_b = product.parts.find((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === part)) === null || _b === void 0 ? void 0 : _b.file) !== null && _c !== void 0 ? _c : '';
@@ -193,8 +213,8 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
193
213
  drawn.catch(() => designs.get(key) === drawn && designs.delete(key));
194
214
  return drawn;
195
215
  };
196
- for (const state of names)
197
- yield draw(state);
216
+ yield options.designsDrawn;
217
+ yield (0, phase_timing_1.timedPhase)('actions-designs', () => Promise.all(names.map((state) => draw(state))));
198
218
  const markups = new Map(yield Promise.all([...designs].map((_a) => __awaiter(void 0, [_a], void 0, function* ([state, design]) { var _b; return [state, (_b = (yield design).markup) !== null && _b !== void 0 ? _b : '']; }))));
199
219
  const opens = (0, part_compare_1.pointerOpensOf)({
200
220
  states,
@@ -247,7 +267,7 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
247
267
  var _a;
248
268
  const key = `${owner}\n${state}`;
249
269
  const cached = (_a = expectedCache.get(key)) !== null && _a !== void 0 ? _a : (() => __awaiter(void 0, void 0, void 0, function* () {
250
- const ownerFrame = (0, compare_command_1.compareFrameOf)({ presets: product.presets, part: owner, preset: null });
270
+ const ownerFrame = (0, harness_shot_1.compareFrameOf)({ presets: product.presets, part: owner, preset: null });
251
271
  const size = typeof ownerFrame === 'string' ? null : ownerFrame.size;
252
272
  const picture = yield shooter.pictureOf({
253
273
  product: product.name,
@@ -277,36 +297,44 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
277
297
  expectedCache.set(key, cached);
278
298
  return cached;
279
299
  };
280
- const lines = [];
281
- const skippedHosts = [];
282
- const pushLine = (line) => {
283
- lines.push(line);
284
- onLine === null || onLine === void 0 ? void 0 : onLine(line);
285
- };
286
300
  let dir = null;
287
- const checked = only === null ? names : [only];
288
- for (const [index, state] of checked.entries()) {
289
- if (index % ACTION_BATCH_STATES === 0) {
290
- designs.clear();
291
- ({ queue, shooter } = yield freshBrowser());
292
- }
293
- const markup = (_f = markups.get(state)) !== null && _f !== void 0 ? _f : '';
294
- if ((0, part_compare_1.forcedElementsOf)(markup).length > 0)
295
- continue;
301
+ const printOf = (dep) => __awaiter(void 0, void 0, void 0, function* () {
302
+ return dep.kind === 'draw'
303
+ ? sha256Of((yield draw(dep.state, dep.opened)).png)
304
+ : dep.kind === 'expected'
305
+ ? sha256Of(JSON.stringify(yield expectedOf(dep.owner, dep.state)))
306
+ : sha256Of(JSON.stringify(yield embeddersOfPart()));
307
+ });
308
+ const checkState = (state_1, ...args_1) => __awaiter(void 0, [state_1, ...args_1], void 0, function* (state, track = () => undefined) {
309
+ var _a, _b, _c, _d, _e;
310
+ const tracked = (dep, value) => __awaiter(void 0, void 0, void 0, function* () {
311
+ const resolved = yield value;
312
+ track(dep, yield printOf(dep));
313
+ return resolved;
314
+ });
315
+ const drawFor = (drawn, opened) => tracked({ kind: 'draw', state: drawn, opened }, draw(drawn, opened));
316
+ const expectedFor = (owner, expected) => tracked({ kind: 'expected', owner, state: expected }, expectedOf(owner, expected));
317
+ const embeddersFor = () => tracked({ kind: 'embedders' }, embeddersOfPart());
318
+ let wrotePictures = false;
319
+ const lines = [];
320
+ const pushLine = (line) => {
321
+ lines.push(line);
322
+ onLine === null || onLine === void 0 ? void 0 : onLine(line);
323
+ };
296
324
  const open = opens[state];
297
325
  if (typeof open === 'string') {
298
326
  pushLine({ state, element: '-', input: null, failure: open });
299
- continue;
327
+ return { lines, hosts: [], keep: true };
300
328
  }
301
- const design = yield designScan(state);
302
- const opener = open ? ((_h = (_g = design.find((element) => element.control === open.control)) === null || _g === void 0 ? void 0 : _g.key) !== null && _h !== void 0 ? _h : null) : null;
329
+ const design = yield (0, phase_timing_1.timedPhase)('actions-design-scan', () => designScan(state));
330
+ const opener = open ? ((_b = (_a = design.find((element) => element.control === open.control)) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : null) : null;
303
331
  if (open && opener === null) {
304
332
  pushLine({ state, element: '-', input: null, failure: `no ${open.control} trigger to open it with` });
305
- continue;
333
+ return { lines, hosts: [], keep: true };
306
334
  }
307
- const start = { state, props: open ? ((_j = open.props) !== null && _j !== void 0 ? _j : states[open.from]) : states[state], opener };
335
+ const start = { state, props: open ? ((_c = open.props) !== null && _c !== void 0 ? _c : states[open.from]) : states[state], opener };
308
336
  const startUrl = (0, part_compare_1.harnessUrlOf)({ url, part, state, props: start.props, layout: frame.layout });
309
- const app = yield queue.run((browser) => __awaiter(void 0, void 0, void 0, function* () {
337
+ const app = yield (0, phase_timing_1.timedPhase)('actions-app-scan', () => queue.run((browser) => __awaiter(void 0, void 0, void 0, function* () {
310
338
  const context = yield browser.newContext({ viewport: (0, shot_1.viewportOf)(frame.size) });
311
339
  try {
312
340
  const page = yield context.newPage();
@@ -323,11 +351,17 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
323
351
  finally {
324
352
  yield context.close();
325
353
  }
326
- }));
327
- const hosts = (_l = (_k = product.config.harness) === null || _k === void 0 ? void 0 : _k.hosts) !== null && _l !== void 0 ? _l : [];
354
+ })));
355
+ const hosts = (_e = (_d = product.config.harness) === null || _d === void 0 ? void 0 : _d.hosts) !== null && _e !== void 0 ? _e : [];
328
356
  const scope = (0, actions_1.ownScopeOf)({ design, app, hosts });
329
- skippedHosts.push(...scope.skipped.filter((host) => !skippedHosts.includes(host)));
330
357
  const { paired, missing } = (0, actions_1.pairElementsOf)({ design: scope.design, app: scope.app });
358
+ for (const drift of (0, actions_1.accessibleNameDriftsOf)(paired))
359
+ pushLine({
360
+ state,
361
+ element: (0, actions_1.elementNameOf)(drift.app),
362
+ input: null,
363
+ failure: (0, actions_1.accessibleNameFailureOf)(drift),
364
+ });
331
365
  for (const element of missing)
332
366
  pushLine({
333
367
  state,
@@ -348,7 +382,7 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
348
382
  };
349
383
  const name = (0, actions_1.elementNameOf)(element);
350
384
  try {
351
- const probes = yield queue.run((browser) => (0, pointer_focus_1.probePointerFocus)({
385
+ const probes = yield (0, phase_timing_1.timedPhase)('actions-pointer-focus', () => queue.run((browser) => (0, pointer_focus_1.probePointerFocus)({
352
386
  open: () => __awaiter(void 0, void 0, void 0, function* () {
353
387
  const context = yield browser.newContext({ viewport: (0, shot_1.viewportOf)(frame.size) });
354
388
  const page = yield context.newPage();
@@ -375,7 +409,7 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
375
409
  }
376
410
  }),
377
411
  settle: (page) => (0, action_press_1.settle)(page, thumb_1.DRAW_TIMEOUT_MS),
378
- }));
412
+ })));
379
413
  if (probes) {
380
414
  const { failure, warning } = (0, pointer_focus_1.pointerFocusVerdictOf)(Object.assign(Object.assign({}, probes), { activatable: !!(drawn === null || drawn === void 0 ? void 0 : drawn.action) }));
381
415
  out.push({ state, element: `${name} pointer focus`, input: null, failure, warning });
@@ -395,8 +429,8 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
395
429
  for (const candidate of owners)
396
430
  if (candidate.states.includes(value) &&
397
431
  (0, actions_1.drawsStateAlreadyOf)({
398
- expected: yield expectedOf(candidate.part, value),
399
- current: yield expectedOf(part, state),
432
+ expected: yield expectedFor(candidate.part, value),
433
+ current: yield expectedFor(part, state),
400
434
  }))
401
435
  settled.push(candidate.part);
402
436
  const { action, owner } = drawn
@@ -405,7 +439,7 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
405
439
  const embeddedState = owners.find((candidate) => candidate.part === owner);
406
440
  const listen = owners.flatMap((candidate) => (candidate.selector === null ? [] : [candidate.selector]));
407
441
  if (drawn === null || action === null || typeof action === 'string') {
408
- if (typeof action !== 'string' && (yield embeddersOfPart()).length > 0)
442
+ if (typeof action !== 'string' && (yield embeddersFor()).length > 0)
409
443
  return finish();
410
444
  if (drawn !== null &&
411
445
  action === null &&
@@ -418,19 +452,21 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
418
452
  failure: typeof action === 'string'
419
453
  ? action
420
454
  : drawn === null
421
- ? 'the design draws no such element, so it declares no action'
455
+ ? noSuchElementOf((0, actions_1.nearMissesOf)({ element, design, app }))
422
456
  : 'the design declares no data-et-action',
423
457
  });
424
458
  return finish();
425
459
  }
426
- for (const input of (0, actions_1.actionInputsOf)(element.key)) {
460
+ for (const input of (0, actions_1.actionInputsOf)(element.key, action)) {
427
461
  const goal = action.kind === 'state'
428
462
  ? (0, actions_1.targetStateOf)({ state: action.state, input, states: (_f = embeddedState === null || embeddedState === void 0 ? void 0 : embeddedState.states) !== null && _f !== void 0 ? _f : names })
429
463
  : '';
430
464
  const opened = goal === '' ? null : (0, actions_1.openedFromOf)({ goal, start: state, states, open: opens[goal] });
431
- const goalPicture = goal === '' || embeddedState ? null : yield draw(opened ? state : goal, opened);
465
+ const goalPicture = goal === '' || embeddedState
466
+ ? null
467
+ : yield (0, phase_timing_1.timedPhase)('actions-goal-draw', () => drawFor(opened ? state : goal, opened));
432
468
  try {
433
- const run = yield queue.run((browser) => {
469
+ const run = yield (0, phase_timing_1.timedPhase)('actions-input', () => queue.run((browser) => {
434
470
  var _a, _b;
435
471
  return (0, exports.runActionInput)({
436
472
  browser,
@@ -450,7 +486,7 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
450
486
  expanded: !!embeddedState && action.kind === 'state',
451
487
  focused: goal.endsWith('-focus-visible'),
452
488
  });
453
- });
489
+ }));
454
490
  const result = goalPicture && run.app ? (0, part_compare_1.comparePngs)({ design: goalPicture.png, app: run.app }) : null;
455
491
  const outcome = {
456
492
  emitted: run.emitted,
@@ -458,7 +494,7 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
458
494
  compare: embeddedState && action.kind === 'state'
459
495
  ? (0, live_actions_1.liveStateCompareOf)({
460
496
  state: `${owner} ${goal}`,
461
- expected: yield expectedOf(owner, goal),
497
+ expected: yield expectedFor(owner, goal),
462
498
  after: (_g = run.after) !== null && _g !== void 0 ? _g : [],
463
499
  })
464
500
  : result
@@ -467,22 +503,22 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
467
503
  };
468
504
  const app = run.app;
469
505
  if (action.kind === 'state' && result && result.kind !== 'ok' && goalPicture && app)
470
- outcome.reached = yield (0, reached_state_1.reachedStateOf)({
506
+ outcome.reached = yield (0, phase_timing_1.timedPhase)('actions-reached', () => (0, reached_state_1.reachedStateOf)({
471
507
  goal,
472
508
  states: names,
473
509
  compare: (candidate) => __awaiter(void 0, void 0, void 0, function* () {
474
510
  if (candidate === goal)
475
511
  return result;
476
512
  const reopened = (0, actions_1.openedFromOf)({ goal: candidate, start: state, states, open: opens[candidate] });
477
- const picture = yield draw(reopened ? state : candidate, reopened);
513
+ const picture = yield drawFor(reopened ? state : candidate, reopened);
478
514
  return (0, part_compare_1.comparePngs)({ design: picture.png, app });
479
515
  }),
480
- });
516
+ }));
481
517
  if (embeddedState && action.kind === 'state' && outcome.compare && !outcome.compare.ok)
482
518
  outcome.reached = yield (0, reached_state_1.reachedExpandedStateOf)({
483
519
  goal,
484
520
  states: embeddedState.states,
485
- expectedOf: (candidate) => expectedOf(owner, candidate),
521
+ expectedOf: (candidate) => expectedFor(owner, candidate),
486
522
  after: (_h = run.after) !== null && _h !== void 0 ? _h : [],
487
523
  });
488
524
  const failure = (0, actions_1.actionFailureOf)({
@@ -495,6 +531,7 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
495
531
  : [],
496
532
  });
497
533
  if (failure !== null && result && result.kind !== 'ok' && goalPicture && run.app) {
534
+ wrotePictures = true;
498
535
  dir !== null && dir !== void 0 ? dir : (dir = (0, fs_1.mkdtempSync)((0, path_1.join)((0, os_1.tmpdir)(), 'et-design-actions-')));
499
536
  const stem = `${state}--${name}--${input}`.replace(/[^\w.-]/g, '-');
500
537
  (0, fs_1.writeFileSync)((0, path_1.join)(dir, `${stem}.design.png`), goalPicture.png);
@@ -511,6 +548,73 @@ const checkActions = (options) => __awaiter(void 0, void 0, void 0, function* ()
511
548
  }),
512
549
  });
513
550
  lines.push(...checkedElements.flat());
551
+ return { lines, hosts: scope.skipped, keep: !wrotePictures };
552
+ });
553
+ const cacheInputs = options.appRoot
554
+ ? {
555
+ salt: `${(0, code_hash_1.actionCheckCodeOf)()} ${(0, compare_cache_1.browserVersionOf)(chromium.from)}`,
556
+ built: (0, compare_cache_1.builtAppHashOf)(options.appRoot),
557
+ }
558
+ : null;
559
+ const actionCache = cacheInputs ? (0, action_cache_1.createActionCache)((0, vite_cache_1.viteCacheOf)(target, action_cache_1.COMPARE_ACTIONS)) : null;
560
+ const actionKeyOf = (state) => {
561
+ var _a, _b, _c, _d, _e, _f, _g;
562
+ if (!cacheInputs)
563
+ return null;
564
+ try {
565
+ return (0, compare_cache_1.cacheKeyOf)([
566
+ cacheInputs.salt,
567
+ cacheInputs.built,
568
+ url === '' ? '' : new URL(url).pathname,
569
+ part,
570
+ state,
571
+ sha256Of((_a = markups.get(state)) !== null && _a !== void 0 ? _a : ''),
572
+ (_b = states[state]) !== null && _b !== void 0 ? _b : null,
573
+ (_c = opens[state]) !== null && _c !== void 0 ? _c : null,
574
+ names,
575
+ (_e = (_d = module.default) === null || _d === void 0 ? void 0 : _d.controls) !== null && _e !== void 0 ? _e : null,
576
+ appOutputs,
577
+ (_g = (_f = product.config.harness) === null || _f === void 0 ? void 0 : _f.hosts) !== null && _g !== void 0 ? _g : [],
578
+ frame,
579
+ ]);
580
+ }
581
+ catch (_h) {
582
+ return null;
583
+ }
584
+ };
585
+ const lines = [];
586
+ const skippedHosts = [];
587
+ const checked = (only === null ? names : [only]).filter((state) => { var _a; return (0, part_compare_1.forcedElementsOf)((_a = markups.get(state)) !== null && _a !== void 0 ? _a : '').length === 0; });
588
+ for (let at = 0; at < checked.length; at += ACTION_BATCH_STATES) {
589
+ designs.clear();
590
+ ({ queue, shooter } = yield (0, phase_timing_1.timedPhase)('actions-browser', freshBrowser));
591
+ const batch = yield (0, in_order_at_once_1.inOrderAtOnce)({
592
+ items: checked.slice(at, at + ACTION_BATCH_STATES),
593
+ limit: ACTION_BATCH_STATES,
594
+ run: (state) => (0, phase_timing_1.timedPhase)(`actions-state ${state}`, () => __awaiter(void 0, void 0, void 0, function* () {
595
+ const key = actionKeyOf(state);
596
+ if (key === null)
597
+ return checkState(state);
598
+ const { value, hit } = yield (0, action_cache_1.cachedActionsOf)({
599
+ cache: actionCache,
600
+ key,
601
+ printOf,
602
+ run: (track) => __awaiter(void 0, void 0, void 0, function* () {
603
+ const checkedState = yield checkState(state, track);
604
+ return { value: checkedState, keep: checkedState.keep };
605
+ }),
606
+ });
607
+ (0, timings_1.recordCache)(hit);
608
+ if (hit)
609
+ for (const line of value.lines)
610
+ onLine === null || onLine === void 0 ? void 0 : onLine(line);
611
+ return value;
612
+ })),
613
+ });
614
+ for (const checkedState of batch) {
615
+ lines.push(...checkedState.lines);
616
+ skippedHosts.push(...checkedState.hosts.filter((host) => !skippedHosts.includes(host)));
617
+ }
514
618
  }
515
619
  return { lines, pictures: dir, embedders: embedders ? yield embedders : [], hosts: skippedHosts };
516
620
  }
@@ -529,30 +633,47 @@ exports.actionLineOf = actionLineOf;
529
633
  /** The line the action check prints once per run for a declared host component it skipped in a state. */
530
634
  const hostLineOf = (host) => `host ${host}: skipped - the app's own chrome around the part, which the design does not draw`;
531
635
  exports.hostLineOf = hostLineOf;
532
- /** The failed lines `design actions` prints for a part, or why the check could not run. */
636
+ /** The line the action check prints for a part it skips because no app component renders it in the harness. */
637
+ const unlinkedSkipLineOf = (part) => `actions ${part}: skipped - no implements link, nothing to click`;
638
+ exports.unlinkedSkipLineOf = unlinkedSkipLineOf;
639
+ /** The failed lines `design actions` prints for a part, or why the check could not run (`[]` for a part without an implements link); with `harness` it checks the part harness at that URL instead of starting one. */
533
640
  const partActionFailuresOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
534
- var _a, _b, _c;
641
+ var _a, _b, _c, _d, _e;
535
642
  const { target, config, product, part } = options;
643
+ const source = (_a = product.parts.find((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === part)) === null || _a === void 0 ? void 0 : _a.source;
644
+ if (source !== undefined && (0, part_definition_1.partLinkOf)(source).kind === 'none') {
645
+ (_b = options.onNote) === null || _b === void 0 ? void 0 : _b.call(options, (0, exports.unlinkedSkipLineOf)(part));
646
+ return [];
647
+ }
536
648
  const stale = (0, harness_map_1.harnessStaleOf)({ target, product });
537
649
  if (stale !== null)
538
- return { unavailable: stale };
539
- const checked = yield (0, harness_server_1.withHarnessUrl)({
540
- target,
541
- product,
542
- url: options.url,
543
- start: options.start,
544
- run: (url) => { var _a; return ((_a = options.check) !== null && _a !== void 0 ? _a : exports.checkActions)({ target, config, product, part, url, only: null }); },
545
- });
650
+ return (0, no_verdict_1.noVerdictOf)(stale);
651
+ const check = (url) => {
652
+ var _a, _b;
653
+ return ((_a = options.check) !== null && _a !== void 0 ? _a : exports.checkActions)({
654
+ target,
655
+ config,
656
+ product,
657
+ part,
658
+ url,
659
+ only: null,
660
+ appRoot: (_b = options.appRoot) !== null && _b !== void 0 ? _b : null,
661
+ designsDrawn: options.designsDrawn,
662
+ });
663
+ };
664
+ const checked = options.harness
665
+ ? yield check(options.harness)
666
+ : yield (0, harness_server_1.withHarnessUrl)({ target, product, url: options.url, start: options.start, run: check });
546
667
  if (typeof checked === 'string')
547
- return { unavailable: checked };
548
- for (const host of (_a = checked.hosts) !== null && _a !== void 0 ? _a : [])
549
- (_b = options.onNote) === null || _b === void 0 ? void 0 : _b.call(options, (0, exports.hostLineOf)(host));
668
+ return (0, no_verdict_1.noVerdictOf)(checked);
669
+ for (const host of (_c = checked.hosts) !== null && _c !== void 0 ? _c : [])
670
+ (_d = options.onNote) === null || _d === void 0 ? void 0 : _d.call(options, (0, exports.hostLineOf)(host));
550
671
  const failures = checked.lines.filter((line) => line.failure !== null).map(exports.actionLineOf);
551
672
  if (!options.url || typeof (0, live_compare_1.liveSpecOf)({ target, product }) === 'string')
552
673
  return failures;
553
- const live = yield ((_c = options.checkLive) !== null && _c !== void 0 ? _c : live_actions_1.checkLiveActions)({ target, config, product, url: options.url, part });
674
+ const live = yield ((_e = options.checkLive) !== null && _e !== void 0 ? _e : live_actions_1.checkLiveActions)({ target, config, product, url: options.url, part });
554
675
  if (typeof live === 'string')
555
- return { unavailable: `the live action check: ${live}` };
676
+ return (0, no_verdict_1.noVerdictOf)(`the live action check: ${live}`);
556
677
  return [...failures, ...live.lines.filter((line) => line.failure !== null).map((line) => `live ${(0, live_actions_1.liveLineOf)(line)}`)];
557
678
  });
558
679
  exports.partActionFailuresOf = partActionFailuresOf;