@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,21 +9,56 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.renderIssuesOf = exports.groupedIssueLinesOf = exports.renderIssueLineOf = void 0;
12
+ exports.renderIssuesOf = exports.inspectRetryingTimeouts = exports.RENDER_TIMEOUT = exports.RENDER_ISSUES = exports.INSPECTS_AT_ONCE = exports.uniqueIssuesOf = exports.BASELINED_RENDER_RULES = exports.WARNING_RULES = exports.groupedIssueLinesOf = exports.ownerPartOf = exports.renderIssueLineOf = exports.busyStatesOf = void 0;
13
+ const rxjs_1 = require("rxjs");
14
+ const run_yield_1 = require("../run-yield");
13
15
  const browser_1 = require("../browser");
16
+ const vite_cache_1 = require("../vite-cache");
14
17
  const contrast_check_1 = require("./contrast-check");
15
18
  const complete_1 = require("./complete");
19
+ const action_undeclared_1 = require("./action-undeclared");
20
+ const disabled_interaction_1 = require("./disabled-interaction");
21
+ const arrow_anchor_1 = require("./arrow-anchor");
22
+ const off_centre_1 = require("./off-centre");
16
23
  const css_source_1 = require("./css-source");
17
24
  const serve_1 = require("../serve");
18
25
  const shot_1 = require("../shot");
19
26
  const thumb_1 = require("../thumb");
20
- const list_system_1 = require("./list-system");
27
+ const grid_report_1 = require("./grid-report");
28
+ const sdk_errors_1 = require("./sdk-errors");
21
29
  const resolve_product_1 = require("./resolve-product");
22
30
  const system_modules_1 = require("./system-modules");
23
- const unchanged_states_1 = require("./sketch/unchanged-states");
24
31
  const option_values_1 = require("./rules/option-values");
32
+ const see_through_1 = require("./see-through");
33
+ const surface_nesting_1 = require("./surface-nesting");
34
+ const nested_scroll_1 = require("./nested-scroll");
35
+ const skip_classes_1 = require("./skip-classes");
36
+ const actions_1 = require("./actions");
37
+ const no_verdict_1 = require("./no-verdict");
38
+ const reach_1 = require("./reach");
39
+ const reachable_controls_1 = require("./reachable-controls");
40
+ const compare_cache_1 = require("./compare-cache");
41
+ const render_issue_key_1 = require("./render-issue-key");
42
+ const served_cache_1 = require("./served-cache");
43
+ const code_hash_1 = require("../code-hash");
44
+ const BUSY_MARK = 'BUSY';
45
+ /** @internal The states the busy marks of `issues` name, once each. */
46
+ const busyStatesOf = (issues) => {
47
+ const seen = new Set();
48
+ return issues.flatMap(({ rule, product, part, state, sketch }) => {
49
+ const key = JSON.stringify([product, part, state, sketch]);
50
+ if (rule !== BUSY_MARK || seen.has(key))
51
+ return [];
52
+ seen.add(key);
53
+ return [{ product, part, state, sketch }];
54
+ });
55
+ };
56
+ exports.busyStatesOf = busyStatesOf;
25
57
  const renderIssueLineOf = (issue) => `${issue.rule} ${issue.product} ${issue.part} ${issue.state} at ${issue.size}: ${issue.path} - ${issue.detail}`;
26
58
  exports.renderIssueLineOf = renderIssueLineOf;
59
+ /** The part whose code draws the element of an issue: the innermost embedded part on its path, else the drawn part. */
60
+ const ownerPartOf = (issue) => { var _a, _b; return (_b = (_a = [...issue.path.matchAll(/\[data-et-part=([^\]]+)\]/gu)].pop()) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : issue.part; };
61
+ exports.ownerPartOf = ownerPartOf;
27
62
  const SCHEME_IN_DETAIL = / in the (light|dark) scheme/u;
28
63
  /** The render issues as lines, one per finding that repeats across states, sizes, schemes and variants, with where it was found. */
29
64
  const groupedIssueLinesOf = (issues) => {
@@ -60,13 +95,17 @@ const SINGLE_LINE = 'button, [role="button"], [role="tab"], [role="switch"], [ro
60
95
  * Reads the rule breaks in a drawn frame. A string, not a function: the build would add helpers to a
61
96
  * function that the page does not have.
62
97
  */
63
- const ESCAPABLE = ['CLIPPED', 'WRAP'];
64
- const WARNING_RULES = new Set(['UNDEFINED-CLASS', 'EMBED-SCALE']);
98
+ const ESCAPABLE = skip_classes_1.ESCAPABLE_RULES;
99
+ /** The render rules that warn instead of failing. A new rule fails, with a rule baseline for its old hits (ADR 0201). */
100
+ exports.WARNING_RULES = new Set(['UNDEFINED-CLASS', 'EMBED-SCALE']);
101
+ /** The render rules whose hits on merged parts the rule baseline of their product lists (ADR 0201). */
102
+ exports.BASELINED_RENDER_RULES = new Set([off_centre_1.OFF_CENTRE_RULE]);
103
+ const BUSY_SELECTOR = '[aria-busy="true"], [data-loading="true"]';
65
104
  // complete.ts and this module sit in an import cycle: read PLAIN_CONTROL_SELECTOR here, a top-level copy can be undefined.
66
105
  const inspectFrame = (options) => `((options) => {
67
106
  const root = document.getElementById('root');
68
107
  const refused = root.innerText.trim();
69
- if (refused.startsWith('design-explore:')) return [{ rule: 'RENDER', path: '#root', detail: refused.split('\\n')[0] }];
108
+ if (refused.startsWith('design-explore:')) return options.sdkStylesOnly ? [] : [{ rule: 'RENDER', path: '#root', detail: refused.split('\\n').map((line) => line.trim()).filter(Boolean).join(' - ') }];
70
109
 
71
110
  const found = [];
72
111
  const seen = new Set();
@@ -92,7 +131,7 @@ const inspectFrame = (options) => `((options) => {
92
131
  };
93
132
  const pathOf = (element) => {
94
133
  const names = [];
95
- for (let at = element; at && at !== root && names.length < 4; at = at.parentElement) names.unshift(nameOf(at));
134
+ for (let at = element; at && at !== root && names.length < ${render_issue_key_1.PATH_DEPTH}; at = at.parentElement) names.unshift(nameOf(at));
96
135
  return names.join(' > ');
97
136
  };
98
137
  const report = (rule, element, detail) => {
@@ -105,9 +144,22 @@ const inspectFrame = (options) => `((options) => {
105
144
  const sizeOf = (element) =>
106
145
  element.scrollWidth + 'x' + element.scrollHeight + ' in ' + element.clientWidth + 'x' + element.clientHeight;
107
146
 
147
+ if (options.sdkStylesOnly) {
148
+ for (const element of root.querySelectorAll('.et-visually-hidden')) {
149
+ if (element.getClientRects().length === 0) continue;
150
+ const style = getComputedStyle(element);
151
+ if (style.position !== 'absolute' || style.clipPath === 'none')
152
+ report('UNSTYLED-SDK', element, 'the visually hidden "' + element.textContent.trim().slice(0, 32) + '" draws in the picture, so an SDK component here renders without its styles');
153
+ }
154
+ return found;
155
+ }
156
+
108
157
  const partRoot = root.querySelector('[data-et-part]') ?? root.querySelector(':scope > :not(style)');
109
158
  if (!partRoot) return found;
110
159
 
160
+ const busy = root.querySelector('${BUSY_SELECTOR}');
161
+ if (busy) found.push({ rule: '${BUSY_MARK}', path: pathOf(busy), detail: 'draws ongoing work' });
162
+
111
163
  const sheets = [...document.styleSheets].map((sheet) => {
112
164
  try {
113
165
  return [...sheet.cssRules].map((rule) => rule.cssText).join('\\n');
@@ -170,19 +222,31 @@ const inspectFrame = (options) => `((options) => {
170
222
  }
171
223
 
172
224
  const clips = (value) => value === 'hidden' || value === 'clip';
225
+ const isMoved = (style) => style.transform !== 'none' || (style.translate && style.translate !== 'none');
226
+ const isPanned = (style) => (style.translate && style.translate !== 'none') || style.transform.startsWith('matrix(1, 0, 0, 1,');
227
+ const scaledChildOf = (element) =>
228
+ [...element.children].find((child) => {
229
+ const style = getComputedStyle(child);
230
+ return isMoved(style) && !isPanned(style);
231
+ });
173
232
  const drawnSizeOf = (element) => {
174
- if (!element.hasAttribute('data-et-embed-box')) return { width: element.scrollWidth, height: element.scrollHeight };
175
- const rect = element.firstElementChild.getBoundingClientRect();
233
+ const scaled = element.hasAttribute('data-et-embed-box') ? element.firstElementChild : scaledChildOf(element);
234
+ if (!scaled) return { width: element.scrollWidth, height: element.scrollHeight };
235
+ const rect = scaled.getBoundingClientRect();
176
236
  return { width: Math.floor(rect.width), height: Math.floor(rect.height) };
177
237
  };
238
+ const clipMarginOf = (style, axis) => (style[axis] === 'clip' ? parseFloat((style.overflowClipMargin ?? '').split(' ').pop()) || 0 : 0);
239
+ const drawsByClipping = (element) => element.closest('.et-spinner') !== null;
240
+ const pans = (element, style) => /^grab/.test(style.cursor) || [...element.children].some((child) => isPanned(getComputedStyle(child)));
178
241
  for (const element of root.querySelectorAll('*')) {
179
242
  const style = getComputedStyle(element);
180
243
  const drawn = drawnSizeOf(element);
181
- const cutX = clips(style.overflowX) && drawn.width > element.clientWidth;
182
- const cutY = clips(style.overflowY) && drawn.height > element.clientHeight;
183
- const cutsOnPurpose = style.textOverflow === 'ellipsis' || style.webkitLineClamp !== 'none';
244
+ const cutX = clips(style.overflowX) && drawn.width > element.clientWidth + clipMarginOf(style, 'overflowX');
245
+ const cutY = clips(style.overflowY) && drawn.height > element.clientHeight + clipMarginOf(style, 'overflowY');
246
+ const cutsOnPurpose = style.textOverflow === 'ellipsis' || style.webkitLineClamp !== 'none' || pans(element, style) || drawsByClipping(element);
184
247
  if ((cutX || cutY) && !cutsOnPurpose) report('CLIPPED', element, 'content ' + drawn.width + 'x' + drawn.height + ' in ' + element.clientWidth + 'x' + element.clientHeight);
185
248
  }
249
+ ${nested_scroll_1.NESTED_SCROLL_STATEMENTS}
186
250
 
187
251
  const px = (value) => parseFloat(value) || 0;
188
252
  const invisible = (colour) => colour === 'transparent' || /^rgba\\(.*,\\s*0\\)$/.test(colour);
@@ -198,16 +262,39 @@ const inspectFrame = (options) => `((options) => {
198
262
  const rect = at.getBoundingClientRect();
199
263
  const left = rect.left + at.clientLeft;
200
264
  const top = rect.top + at.clientTop;
265
+ const marginX = clipMarginOf(style, 'overflowX');
266
+ const marginY = clipMarginOf(style, 'overflowY');
201
267
  const box = {
202
- left: style.overflowX === 'visible' ? -Infinity : left,
203
- right: style.overflowX === 'visible' ? Infinity : left + at.clientWidth,
204
- top: style.overflowY === 'visible' ? -Infinity : top,
205
- bottom: style.overflowY === 'visible' ? Infinity : top + at.clientHeight,
268
+ left: style.overflowX === 'visible' ? -Infinity : left - marginX,
269
+ right: style.overflowX === 'visible' ? Infinity : left + at.clientWidth + marginX,
270
+ top: style.overflowY === 'visible' ? -Infinity : top - marginY,
271
+ bottom: style.overflowY === 'visible' ? Infinity : top + at.clientHeight + marginY,
206
272
  };
207
- return { name: pathOf(at), box };
273
+ return { name: pathOf(at), box, style, element: at };
208
274
  }
209
275
  return frameBox();
210
276
  };
277
+ const movedBetween = (from, clipper) => {
278
+ for (let at = from; at && at !== clipper; at = at.parentElement) {
279
+ const style = getComputedStyle(at);
280
+ if (isMoved(style)) return true;
281
+ }
282
+ return false;
283
+ };
284
+ const ringClipOf = (element) => {
285
+ const clip = clipOf(element.parentElement);
286
+ if (!clip.element) return clip;
287
+ const moved = movedBetween(element, clip.element);
288
+ const panX = moved || clip.element.scrollWidth > clip.element.clientWidth;
289
+ const panY = moved || clip.element.scrollHeight > clip.element.clientHeight;
290
+ const box = {
291
+ left: panX ? -Infinity : clip.box.left,
292
+ right: panX ? Infinity : clip.box.right,
293
+ top: panY ? -Infinity : clip.box.top,
294
+ bottom: panY ? Infinity : clip.box.bottom,
295
+ };
296
+ return { ...clip, box };
297
+ };
211
298
  const pastOf = (rect, reach, box) =>
212
299
  Math.max(
213
300
  rect.left >= box.left ? box.left - (rect.left - reach.left) : 0,
@@ -237,13 +324,44 @@ const inspectFrame = (options) => `((options) => {
237
324
  if (rect.width === 0 && rect.height === 0) continue;
238
325
  const outline = style.outlineStyle !== 'none' && !invisible(style.outlineColor) ? Math.max(0, px(style.outlineWidth) + px(style.outlineOffset)) : 0;
239
326
  const shadow = shadowReachOf(style.boxShadow);
240
- const clip = clipOf(element.parentElement);
327
+ const clip = ringClipOf(element);
241
328
  const outlinePast = outline > 0 ? pastOf(rect, { left: outline, right: outline, top: outline, bottom: outline }, clip.box) : 0;
242
329
  const shadowPast = pastOf(rect, shadow, clip.box);
243
330
  if (outlinePast > 1) report('CLIPPED', element, 'outline ' + Math.round(outlinePast) + 'px past ' + clip.name);
244
331
  else if (shadowPast > 1) report('CLIPPED', element, 'box-shadow ' + Math.round(shadowPast) + 'px past ' + clip.name);
245
332
  }
246
333
 
334
+ const unseen = (element) => {
335
+ if (getComputedStyle(element).visibility === 'hidden' || element.closest('[inert], [aria-hidden="true"]')) return true;
336
+ for (let at = element; at && at !== root; at = at.parentElement) if (getComputedStyle(at).opacity === '0') return true;
337
+ return false;
338
+ };
339
+ ${reachable_controls_1.REACHABLE_CONTROLS_STATEMENTS}
340
+ const interactive = ${JSON.stringify(actions_1.INTERACTIVE_SELECTOR)};
341
+ for (const element of reachableControlsOf(root, interactive)) {
342
+ const rect = element.getBoundingClientRect();
343
+ if (rect.width === 0 || rect.height === 0) continue;
344
+ const clip = clipOf(element.parentElement);
345
+ if (!clip.style || unseen(element)) continue;
346
+ const shown = {
347
+ width: Math.min(rect.right, clip.box.right) - Math.max(rect.left, clip.box.left),
348
+ height: Math.min(rect.bottom, clip.box.bottom) - Math.max(rect.top, clip.box.top),
349
+ };
350
+ if (shown.width <= 0 || shown.height <= 0) continue;
351
+ const cuts = [];
352
+ if (clips(clip.style.overflowX) && rect.width - shown.width > 1) cuts.push(Math.round(rect.width - shown.width) + 'px of its width');
353
+ if (clips(clip.style.overflowY) && rect.height - shown.height > 1) cuts.push(Math.round(rect.height - shown.height) + 'px of its height');
354
+ if (cuts.length) report('CUT-CONTROL', element, cuts.join(' and ') + ' is cut by ' + clip.name + ', so the control is only partly reachable');
355
+ }
356
+ for (const element of root.querySelectorAll('[data-et-skip~="CLIPPED"]')) {
357
+ if (reachableControlsOf(element, interactive).length === 0) continue;
358
+ const path = pathOf(element);
359
+ if (seen.has('SKIP-SCOPE' + path)) continue;
360
+ seen.add('SKIP-SCOPE' + path);
361
+ found.push({ rule: 'SKIP-SCOPE', path, detail: 'data-et-skip=CLIPPED on ' + path + ' covers interactive controls - put the skip on the clipped element itself' });
362
+ }
363
+ ${reach_1.REACH_STATEMENTS}
364
+
247
365
  const metrics = document.createElement('canvas').getContext('2d');
248
366
  for (const element of root.querySelectorAll('*')) {
249
367
  const style = getComputedStyle(element);
@@ -287,6 +405,7 @@ const inspectFrame = (options) => `((options) => {
287
405
  for (const [block, nodes] of groups) {
288
406
  const style = getComputedStyle(block);
289
407
  if (!singleLine(block) && style.whiteSpace !== 'nowrap' && style.textWrapMode !== 'nowrap') continue;
408
+ if (style.webkitLineClamp !== 'none') continue;
290
409
  const lines = [];
291
410
  for (const node of nodes) {
292
411
  const range = document.createRange();
@@ -303,6 +422,8 @@ const inspectFrame = (options) => `((options) => {
303
422
  }
304
423
  }
305
424
  ${contrast_check_1.CONTRAST_STATEMENTS}
425
+ ${see_through_1.SEE_THROUGH_STATEMENTS}
426
+ ${surface_nesting_1.SURFACE_STATEMENTS}
306
427
  const ownedOf = (element) => {
307
428
  const slotted = (element.getAttribute('data-et-slot') ?? '').split(' ').filter(Boolean);
308
429
  for (let at = element; at && at !== root; at = at.parentElement)
@@ -313,17 +434,25 @@ ${contrast_check_1.CONTRAST_STATEMENTS}
313
434
  }
314
435
  return true;
315
436
  };
437
+ const textOf = (node) =>
438
+ [...node.childNodes]
439
+ .map((child) => (child.nodeType === Node.TEXT_NODE ? child.data : child.nodeType === Node.ELEMENT_NODE && !child.matches('style, script, template') ? textOf(child) : ''))
440
+ .join('');
316
441
  if (options.part !== null)
317
442
  for (const element of root.querySelectorAll(options.controlInputs)) {
318
443
  if (element.getClientRects().length === 0 || element.closest('[data-et-control]') || !ownedOf(element)) continue;
319
444
  if (element.matches('[role="option"], [role^="menuitem"]') && element.closest('[data-et-surface]')) continue;
320
445
  const sdk = element.parentElement?.closest(options.sdkControls);
321
446
  if (sdk && root.contains(sdk)) continue;
322
- const text = (element.textContent.trim() || element.getAttribute('aria-label') || element.getAttribute('placeholder') || '').replace(/\\s+/g, ' ');
447
+ const text = (element.getAttribute('aria-label') || textOf(element).trim() || element.getAttribute('placeholder') || '').replace(/\\s+/g, ' ');
323
448
  const cls = [...element.classList].find((name) => !/^et-(surface|color)--/.test(name));
324
449
  const named = element.tagName.toLowerCase() + (cls ? '.' + cls : '') + (text ? ' "' + (text.length > 32 ? text.slice(0, 31) + '…' : text) + '"' : '');
325
450
  report('CONTROL-PART-INPUT', element, named + ' is a control without data-et-control, so no control check sees it - mark it with control(markup, name) from @ethlete/components/design/control and declare the name in controls');
326
451
  }
452
+ ${action_undeclared_1.ACTION_UNDECLARED_STATEMENTS}
453
+ ${arrow_anchor_1.ARROW_ANCHOR_STATEMENTS}
454
+ ${off_centre_1.OFF_CENTRE_STATEMENTS}
455
+ ${disabled_interaction_1.DISABLED_INTERACTION_STATEMENTS}
327
456
  return found;
328
457
  })(${JSON.stringify(Object.assign(Object.assign({}, options), { escapable: ESCAPABLE, controlInputs: complete_1.PLAIN_CONTROL_SELECTOR, sdkControls: complete_1.SDK_CONTROLS.join(', ') }))})`;
329
458
  const stringsOf = (value) => Array.isArray(value) ? value.filter((entry) => typeof entry === 'string') : [];
@@ -346,30 +475,164 @@ const firstOfEach = (issues) => {
346
475
  return true;
347
476
  });
348
477
  };
478
+ const uniqueIssuesOf = (issues) => {
479
+ const seen = new Set();
480
+ return issues.filter((issue) => {
481
+ const perState = issue.rule !== 'SKIP-SCOPE';
482
+ const key = JSON.stringify([
483
+ issue.product,
484
+ issue.part,
485
+ issue.sketch,
486
+ perState ? issue.state : null,
487
+ perState ? issue.size : null,
488
+ issue.rule,
489
+ issue.path,
490
+ issue.detail,
491
+ ]);
492
+ if (seen.has(key))
493
+ return false;
494
+ seen.add(key);
495
+ return true;
496
+ });
497
+ };
498
+ exports.uniqueIssuesOf = uniqueIssuesOf;
349
499
  const widthsOf = (value) => Array.isArray(value)
350
500
  ? value.filter((width) => typeof width === 'number' && Number.isInteger(width) && width > 0)
351
501
  : [];
502
+ const PART_TIMEOUT_MS = 120000;
503
+ /** @internal How many frames of one part `inspect` draws at once, each on a page of its own. */
504
+ exports.INSPECTS_AT_ONCE = 4;
505
+ /** The cache folder of the render issues of each part, kept with the responses its drawing loaded. */
506
+ exports.RENDER_ISSUES = 'render-issues';
507
+ const RENDER_ISSUES_LIMIT = 64 * 1024 * 1024;
508
+ const embedControlsOf = (controls) => typeof controls === 'object' && controls !== null
509
+ ? Object.entries(controls)
510
+ .filter(([, declared]) => typeof (declared === null || declared === void 0 ? void 0 : declared.part) === 'string')
511
+ .map(([name]) => name)
512
+ : [];
513
+ /** The render rule of a part whose drawing did not finish in time, apart from a part that failed to draw. */
514
+ exports.RENDER_TIMEOUT = 'RENDER-TIMEOUT';
515
+ const timedOutKeyOf = (address) => JSON.stringify([address.product, address.part, address.sketch]);
516
+ /** @internal Inspects `frames`, then the parts that timed out once more alone, and keeps that second answer. */
517
+ const inspectRetryingTimeouts = (options) => __awaiter(void 0, void 0, void 0, function* () {
518
+ var _a;
519
+ const inspectOf = (_a = options.inspectOf) !== null && _a !== void 0 ? _a : inspect;
520
+ const first = yield inspectOf(options);
521
+ const timedOut = new Set(first.filter((issue) => issue.rule === exports.RENDER_TIMEOUT).map(timedOutKeyOf));
522
+ if (timedOut.size === 0)
523
+ return first;
524
+ const again = yield inspectOf(Object.assign(Object.assign({}, options), { frames: options.frames.filter((frame) => timedOut.has(timedOutKeyOf(frame.address))), onPart: undefined }));
525
+ return [...first.filter((issue) => !timedOut.has(timedOutKeyOf(issue))), ...again];
526
+ });
527
+ exports.inspectRetryingTimeouts = inspectRetryingTimeouts;
528
+ const inspectedFrameOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
529
+ const { page, base, frame } = options;
530
+ yield page.emulateMedia({ colorScheme: frame.contrast.scheme });
531
+ yield page.setViewportSize(frame.viewport);
532
+ yield (0, thumb_1.openFrame)(page, `${base}/frame.html?${frame.search}`);
533
+ yield (0, thumb_1.awaitSettled)(page);
534
+ const inspected = {
535
+ fixed: frame.fixed,
536
+ fit: frame.fit,
537
+ skips: frame.skips,
538
+ namespaces: frame.namespaces,
539
+ contrast: frame.contrast,
540
+ part: frame.controlInputs ? frame.address.part : null,
541
+ embedControls: frame.embedControls,
542
+ };
543
+ const inFrame = (yield page.evaluate(inspectFrame(inspected)));
544
+ yield page.evaluate((0, shot_1.emptySlotsScriptOf)(frame.address.part));
545
+ const unstyled = (yield page.evaluate(inspectFrame(Object.assign(Object.assign({}, inspected), { sdkStylesOnly: true }))));
546
+ const { product, part, state, sketch } = frame.address;
547
+ return [...inFrame, ...unstyled].map((issue) => (Object.assign(Object.assign({}, issue), { product, part, state, sketch, size: frame.size })));
548
+ });
352
549
  const inspect = (options) => __awaiter(void 0, void 0, void 0, function* () {
353
- const { browser, base, frames } = options;
550
+ var _a, _b, _c, _d, _e;
551
+ const { browser, base, frames, cache } = options;
552
+ const timeoutMs = (_a = options.timeoutMs) !== null && _a !== void 0 ? _a : PART_TIMEOUT_MS;
354
553
  const context = yield browser.newContext();
554
+ let requested = [];
555
+ yield context.addInitScript(action_undeclared_1.CLICK_LISTENER_INIT_SCRIPT);
556
+ if (cache)
557
+ (0, served_cache_1.recordRequests)(context, () => requested);
355
558
  const issues = [];
559
+ const groups = new Map();
560
+ for (const frame of frames) {
561
+ const { product, part, sketch } = frame.address;
562
+ const key = JSON.stringify([product, part, sketch]);
563
+ groups.set(key, [...((_b = groups.get(key)) !== null && _b !== void 0 ? _b : []), frame]);
564
+ }
356
565
  try {
357
- const page = yield context.newPage();
358
- for (const frame of frames) {
359
- yield page.emulateMedia({ colorScheme: frame.contrast.scheme });
360
- yield page.setViewportSize(frame.viewport);
361
- yield (0, thumb_1.openFrame)(page, `${base}/frame.html?${frame.search}`);
362
- yield page.evaluate(thumb_1.settled);
363
- const found = (yield page.evaluate(inspectFrame({
364
- fixed: frame.fixed,
365
- fit: frame.fit,
366
- skips: frame.skips,
367
- namespaces: frame.namespaces,
368
- contrast: frame.contrast,
369
- part: frame.controlInputs ? frame.address.part : null,
566
+ let lanes = [];
567
+ let done = 0;
568
+ for (const group of groups.values()) {
569
+ yield (0, run_yield_1.yieldRun)();
570
+ const started = Date.now();
571
+ const first = (_c = group[0]) === null || _c === void 0 ? void 0 : _c.address;
572
+ const key = cache ? (0, compare_cache_1.cacheKeyOf)([cache.salt, group]) : null;
573
+ const hit = cache && key ? yield (0, served_cache_1.servedHitOf)(cache, key) : null;
574
+ if (hit) {
575
+ issues.push(...hit);
576
+ done++;
577
+ if (first)
578
+ (_d = options.onPart) === null || _d === void 0 ? void 0 : _d.call(options, { done, total: groups.size, part: first.part, ms: Date.now() - started });
579
+ continue;
580
+ }
581
+ const width = Math.min(exports.INSPECTS_AT_ONCE, group.length);
582
+ while (lanes.length < width) {
583
+ const page = yield context.newPage();
584
+ if (cache)
585
+ yield (yield context.newCDPSession(page)).send('Network.setCacheDisabled', { cacheDisabled: true });
586
+ lanes.push({ page, sdkErrors: (0, sdk_errors_1.watchSdkErrorLines)(page) });
587
+ }
588
+ requested = [];
589
+ const found = group.map(() => []);
590
+ let next = 0;
591
+ const drawn = Promise.all(lanes.slice(0, width).map((_a) => __awaiter(void 0, [_a], void 0, function* ({ page }) {
592
+ for (let at = next++; at < group.length; at = next++) {
593
+ const frame = group[at];
594
+ if (frame)
595
+ found[at] = yield inspectedFrameOf({ page, base, frame });
596
+ }
370
597
  })));
371
- const { product, part, state, sketch } = frame.address;
372
- issues.push(...found.map((issue) => (Object.assign(Object.assign({}, issue), { product, part, state, sketch, size: frame.size }))));
598
+ drawn.catch(() => undefined);
599
+ const result = yield (0, rxjs_1.firstValueFrom)((0, rxjs_1.race)((0, rxjs_1.from)(drawn).pipe((0, rxjs_1.map)(() => 'drawn')), (0, rxjs_1.timer)(timeoutMs).pipe((0, rxjs_1.map)(() => 'timeout'))));
600
+ if (result === 'timeout') {
601
+ yield Promise.all(lanes.map(({ page }) => page.close().catch(() => undefined)));
602
+ lanes = [];
603
+ if (first)
604
+ issues.push({
605
+ rule: exports.RENDER_TIMEOUT,
606
+ product: first.product,
607
+ part: first.part,
608
+ state: '-',
609
+ size: '-',
610
+ path: '-',
611
+ detail: `drawing the part did not finish within ${Math.round(timeoutMs / 1000)}s`,
612
+ sketch: first.sketch,
613
+ });
614
+ }
615
+ else {
616
+ const groupIssues = found.flat();
617
+ if (first)
618
+ for (const line of new Set(lanes.flatMap(({ sdkErrors }) => sdkErrors.drain())))
619
+ groupIssues.push({
620
+ rule: 'RENDER',
621
+ product: first.product,
622
+ part: first.part,
623
+ state: '-',
624
+ size: '-',
625
+ path: '-',
626
+ detail: `logged SDK error ${line.split('\n')[0]}`,
627
+ sketch: first.sketch,
628
+ });
629
+ issues.push(...groupIssues);
630
+ if (cache && key)
631
+ yield (0, served_cache_1.writeServed)(cache, { key, requested, value: groupIssues });
632
+ }
633
+ done++;
634
+ if (first)
635
+ (_e = options.onPart) === null || _e === void 0 ? void 0 : _e.call(options, { done, total: groups.size, part: first.part, ms: Date.now() - started });
373
636
  }
374
637
  }
375
638
  finally {
@@ -383,35 +646,48 @@ const inspect = (options) => __awaiter(void 0, void 0, void 0, function* () {
383
646
  * its content. Answers the rule breaks it finds, or why it could not draw.
384
647
  */
385
648
  const renderIssuesOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
386
- var _a, _b, _c, _d, _e, _f, _g, _h;
649
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
387
650
  const { target, config, jobs } = options;
388
651
  const resolveChromium = (_a = options.chromiumOf) !== null && _a !== void 0 ? _a : browser_1.chromiumOf;
652
+ const timeoutMs = (_b = options.partTimeoutMs) !== null && _b !== void 0 ? _b : (0, no_verdict_1.loadScaledMs)(PART_TIMEOUT_MS);
389
653
  if (jobs.length === 0)
390
654
  return { issues: [], warnings: [], grids: [], drawn: [] };
391
- if (!(yield resolveChromium(target)))
392
- return { unavailable: 'neither the checkout nor this package resolves playwright or playwright-core' };
393
- const queue = (0, thumb_1.createDrawQueue)({ target, chromiumOf: resolveChromium });
394
- const server = yield (0, serve_1.createDesignServer)({ target, config, listen: true, port: 0 });
395
- let shots;
655
+ const chromium = yield resolveChromium(target);
656
+ if (!chromium)
657
+ return {
658
+ unavailable: `neither ${target} nor this package (${__dirname}) resolves playwright or playwright-core, so there is no Chromium to launch`,
659
+ };
660
+ const { warm } = options;
661
+ const queue = warm ? warm.queue() : (0, thumb_1.createDrawQueue)({ target, chromiumOf: resolveChromium });
662
+ const server = warm ? yield warm.server(config) : yield (0, serve_1.createDesignServer)({ target, config, listen: true, port: 0 });
396
663
  try {
397
- yield server.listen();
398
- const { port } = (_b = server.httpServer) === null || _b === void 0 ? void 0 : _b.address();
399
- const base = `http://localhost:${port}`;
664
+ if (!warm)
665
+ yield server.listen();
666
+ const address = (_c = server.httpServer) === null || _c === void 0 ? void 0 : _c.address();
667
+ const base = `http://localhost:${address.port}`;
668
+ const cache = options.cached
669
+ ? {
670
+ store: (0, served_cache_1.createServedCache)((0, vite_cache_1.viteCacheOf)(target, exports.RENDER_ISSUES), RENDER_ISSUES_LIMIT),
671
+ served: (0, served_cache_1.createServedHashes)(base, (0, served_cache_1.fetchServedOf)((0, served_cache_1.reachableBaseOf)(address))),
672
+ salt: `${(0, code_hash_1.renderInspectCodeOf)()} ${(0, compare_cache_1.browserVersionOf)(chromium.from)}`,
673
+ }
674
+ : undefined;
400
675
  const system = (0, system_modules_1.createSystemModules)({ target, config });
401
- shots = (0, shot_1.createPartShooter)({ target, base, system, queue });
402
676
  const frames = [];
403
677
  const issues = [];
404
678
  const grids = [];
405
679
  const gridWarnings = [];
406
680
  const baselines = new Map();
407
- for (const { product, sketch, parts } of jobs) {
681
+ const mergedSkips = new Map();
682
+ const framed = new Map();
683
+ for (const { product, sketch, parts, unchanged } of jobs) {
408
684
  const skips = {};
409
685
  const drawn = system.drawnOf(product, sketch);
410
686
  if (!drawn)
411
687
  continue;
412
688
  const optionValuesOf = (0, option_values_1.optionValuesChecker)({ target, config, parts: drawn.parts });
413
689
  const merged = sketch ? system.productOf(product) : null;
414
- const mergedOptionValuesOf = (0, option_values_1.optionValuesChecker)({ target, config, parts: (_c = merged === null || merged === void 0 ? void 0 : merged.parts) !== null && _c !== void 0 ? _c : [] });
690
+ const mergedOptionValuesOf = (0, option_values_1.optionValuesChecker)({ target, config, parts: (_d = merged === null || merged === void 0 ? void 0 : merged.parts) !== null && _d !== void 0 ? _d : [] });
415
691
  const namespaces = namespacesOf(drawn.parts.map((part) => part.cssSource));
416
692
  const schemes = (0, contrast_check_1.schemesOf)(drawn.parts.map((part) => part.cssSource));
417
693
  for (const part of drawn.parts) {
@@ -429,17 +705,17 @@ const renderIssuesOf = (options) => __awaiter(void 0, void 0, void 0, function*
429
705
  state: '-',
430
706
  size: '-',
431
707
  path: '-',
432
- detail: (_d = loaded.error.split('\n')[0]) !== null && _d !== void 0 ? _d : '',
708
+ detail: (_e = loaded.error.split('\n')[0]) !== null && _e !== void 0 ? _e : '',
433
709
  sketch,
434
710
  });
435
711
  continue;
436
712
  }
437
713
  const definition = loaded.module.default;
438
- skips[key] = stringsOf((_e = definition === null || definition === void 0 ? void 0 : definition.checks) === null || _e === void 0 ? void 0 : _e.skip);
714
+ skips[key] = stringsOf((_f = definition === null || definition === void 0 ? void 0 : definition.checks) === null || _f === void 0 ? void 0 : _f.skip);
439
715
  if (parts && !parts.includes(key))
440
716
  continue;
441
717
  const states = (definition === null || definition === void 0 ? void 0 : definition.states) && typeof definition.states === 'object' ? Object.keys(definition.states) : [];
442
- const grid = (0, list_system_1.gridReportOf)(definition === null || definition === void 0 ? void 0 : definition.grid, states);
718
+ const grid = (0, grid_report_1.gridReportOf)(definition === null || definition === void 0 ? void 0 : definition.grid, states);
443
719
  const mergedPart = merged === null || merged === void 0 ? void 0 : merged.parts.find((candidate) => (0, resolve_product_1.partKeyOf)(candidate) === key);
444
720
  const mergedDefinition = mergedPart
445
721
  ? (yield server.ssrLoadModule((0, system_modules_1.productModuleIdOf)({ file: mergedPart.file, product })))['default']
@@ -460,27 +736,16 @@ const renderIssuesOf = (options) => __awaiter(void 0, void 0, void 0, function*
460
736
  sketch,
461
737
  });
462
738
  }
463
- const compare = sketch && states.some(complete_1.isInteractionState) && !(0, complete_1.isControlPart)({ part: key, controls: definition === null || definition === void 0 ? void 0 : definition.controls });
464
- const baseline = compare ? system.productOf(product) : null;
465
- const foundSketch = compare
466
- ? system.sketchesOf(product).find((candidate) => candidate.target === sketch.target)
467
- : null;
468
- const unchanged = baseline && foundSketch && sketch
469
- ? yield (0, unchanged_states_1.unchangedStatesOf)({
470
- product: baseline,
471
- sketch: foundSketch,
472
- variant: sketch.variant,
473
- part: key,
474
- compareFrames: false,
475
- states: states.filter(complete_1.isInteractionState),
476
- pictureOf: shots.pictureOf,
477
- load: ({ file, product: name, sketch: variant }) => server.ssrLoadModule((0, system_modules_1.productModuleIdOf)({ file, product: name, sketch: variant })),
478
- })
739
+ const mergedStates = (mergedDefinition === null || mergedDefinition === void 0 ? void 0 : mergedDefinition.states) && typeof mergedDefinition.states === 'object'
740
+ ? Object.keys(mergedDefinition.states)
479
741
  : [];
480
- for (const gap of (0, complete_1.controlStateGapsOf)({
742
+ const base = mergedPart ? { controls: mergedDefinition === null || mergedDefinition === void 0 ? void 0 : mergedDefinition.controls, states: mergedStates } : null;
743
+ for (const gap of (0, complete_1.introducedControlStateGapsOf)({
481
744
  part: key,
482
745
  controls: definition === null || definition === void 0 ? void 0 : definition.controls,
483
- states: sketch ? states.filter((state) => !unchanged.includes(state)) : [],
746
+ states,
747
+ sketch: !!sketch,
748
+ base,
484
749
  }))
485
750
  issues.push({
486
751
  rule: gap.code,
@@ -506,8 +771,8 @@ const renderIssuesOf = (options) => __awaiter(void 0, void 0, void 0, function*
506
771
  sketch,
507
772
  }));
508
773
  }
509
- const exceptions = (0, contrast_check_1.contrastExceptionsOf)((_f = definition === null || definition === void 0 ? void 0 : definition.contrast) === null || _f === void 0 ? void 0 : _f.exceptions);
510
- const pairs = (0, contrast_check_1.contrastPairsOf)((_g = definition === null || definition === void 0 ? void 0 : definition.contrast) === null || _g === void 0 ? void 0 : _g.pairs);
774
+ const exceptions = (0, contrast_check_1.contrastExceptionsOf)((_g = definition === null || definition === void 0 ? void 0 : definition.contrast) === null || _g === void 0 ? void 0 : _g.exceptions);
775
+ const pairs = (0, contrast_check_1.contrastPairsOf)((_h = definition === null || definition === void 0 ? void 0 : definition.contrast) === null || _h === void 0 ? void 0 : _h.pairs);
511
776
  exceptions.problems.forEach((detail) => issues.push({ rule: 'CONTRAST', product, part: key, state: '-', size: '-', path: '-', detail, sketch }));
512
777
  const sizesOf = (widths, presets) => part.layer === 'pages'
513
778
  ? Object.keys(presets).map((preset) => ({ preset, width: null }))
@@ -516,35 +781,44 @@ const renderIssuesOf = (options) => __awaiter(void 0, void 0, void 0, function*
516
781
  : [{ preset: null, width: null }];
517
782
  const sizes = sizesOf(widthsOf(definition === null || definition === void 0 ? void 0 : definition.widths), drawn.presets);
518
783
  const controlInputs = part.layer !== 'foundations';
784
+ const embedControls = embedControlsOf(definition === null || definition === void 0 ? void 0 : definition.controls);
519
785
  const baselineKey = JSON.stringify([product, key]);
520
- if (merged && mergedPart && controlInputs && !baselines.has(baselineKey)) {
521
- const mergedStates = (mergedDefinition === null || mergedDefinition === void 0 ? void 0 : mergedDefinition.states) && typeof mergedDefinition.states === 'object'
522
- ? Object.keys(mergedDefinition.states)
523
- : [];
524
- baselines.set(baselineKey, mergedStates.flatMap((state) => sizesOf(widthsOf(mergedDefinition === null || mergedDefinition === void 0 ? void 0 : mergedDefinition.widths), merged.presets).flatMap(({ preset, width }) => {
525
- var _a, _b;
786
+ framed.set(JSON.stringify([product, key, sketch]), typeof (definition === null || definition === void 0 ? void 0 : definition.frame) === 'function');
787
+ if (merged && mergedPart && !baselines.has(baselineKey)) {
788
+ const mergedContrast = {
789
+ exceptions: (0, contrast_check_1.contrastExceptionsOf)((_j = mergedDefinition === null || mergedDefinition === void 0 ? void 0 : mergedDefinition.contrast) === null || _j === void 0 ? void 0 : _j.exceptions).selectors,
790
+ pairs: (0, contrast_check_1.contrastPairsOf)((_k = mergedDefinition === null || mergedDefinition === void 0 ? void 0 : mergedDefinition.contrast) === null || _k === void 0 ? void 0 : _k.pairs),
791
+ };
792
+ const measured = new Set();
793
+ mergedSkips.set(baselineKey, stringsOf((_l = mergedDefinition === null || mergedDefinition === void 0 ? void 0 : mergedDefinition.checks) === null || _l === void 0 ? void 0 : _l.skip));
794
+ framed.set(JSON.stringify([product, key, null]), typeof (mergedDefinition === null || mergedDefinition === void 0 ? void 0 : mergedDefinition.frame) === 'function');
795
+ baselines.set(baselineKey, mergedStates.flatMap((state) => sizesOf(widthsOf(mergedDefinition === null || mergedDefinition === void 0 ? void 0 : mergedDefinition.widths), merged.presets).flatMap(({ preset, width }) => schemes.flatMap((scheme) => {
796
+ var _a;
526
797
  const address = { product, part: key, state, preset, width, sketch: null, interaction: null };
527
798
  const frame = (0, shot_1.partFrameOf)(Object.assign({ system }, address));
528
- return frame instanceof Error
529
- ? []
530
- : [
531
- {
532
- address,
533
- size: preset !== null && preset !== void 0 ? preset : (width ? `${width}px` : 'fitted'),
534
- search: frame.search.toString(),
535
- viewport: (0, shot_1.viewportOf)(frame.size),
536
- fixed: ((_a = frame.size) === null || _a === void 0 ? void 0 : _a.height) !== undefined,
537
- fit: frame.size === null,
538
- skips: {},
539
- namespaces,
540
- contrast: { exceptions: [], pairs: [], scheme: (_b = schemes[0]) !== null && _b !== void 0 ? _b : null },
541
- controlInputs,
542
- },
543
- ];
544
- })));
799
+ if (frame instanceof Error)
800
+ return [];
801
+ const pairs = measured.has(scheme) ? [] : mergedContrast.pairs;
802
+ measured.add(scheme);
803
+ return [
804
+ {
805
+ address,
806
+ size: preset !== null && preset !== void 0 ? preset : (width ? `${width}px` : 'fitted'),
807
+ search: frame.search.toString(),
808
+ viewport: (0, shot_1.viewportOf)(frame.size),
809
+ fixed: ((_a = frame.size) === null || _a === void 0 ? void 0 : _a.height) !== undefined,
810
+ fit: frame.size === null,
811
+ skips,
812
+ namespaces,
813
+ contrast: { exceptions: mergedContrast.exceptions, pairs, scheme },
814
+ controlInputs,
815
+ embedControls,
816
+ },
817
+ ];
818
+ }))));
545
819
  }
546
820
  const measuresPairs = new Set();
547
- for (const state of states) {
821
+ for (const state of states.filter((name) => { var _a; return !((_a = unchanged === null || unchanged === void 0 ? void 0 : unchanged[key]) === null || _a === void 0 ? void 0 : _a.includes(name)); })) {
548
822
  for (const { preset, width } of sizes) {
549
823
  for (const scheme of schemes) {
550
824
  const address = { product, part: key, state, preset, width, sketch, interaction: null };
@@ -556,11 +830,12 @@ const renderIssuesOf = (options) => __awaiter(void 0, void 0, void 0, function*
556
830
  size: preset !== null && preset !== void 0 ? preset : (width ? `${width}px` : 'fitted'),
557
831
  search: frame.search.toString(),
558
832
  viewport: (0, shot_1.viewportOf)(frame.size),
559
- fixed: ((_h = frame.size) === null || _h === void 0 ? void 0 : _h.height) !== undefined,
833
+ fixed: ((_m = frame.size) === null || _m === void 0 ? void 0 : _m.height) !== undefined,
560
834
  fit: frame.size === null,
561
835
  skips,
562
836
  namespaces,
563
837
  controlInputs,
838
+ embedControls,
564
839
  contrast: {
565
840
  exceptions: exceptions.selectors,
566
841
  pairs: measuresPairs.has(scheme) ? [] : pairs,
@@ -573,26 +848,64 @@ const renderIssuesOf = (options) => __awaiter(void 0, void 0, void 0, function*
573
848
  }
574
849
  }
575
850
  }
576
- const inspected = yield queue.run((browser) => inspect({ browser, base, frames }));
577
- const isInput = (issue) => issue.rule === 'CONTROL-PART-INPUT';
578
- const sketchedInputs = inspected.filter((issue) => isInput(issue) && issue.sketch);
579
- const compared = [...new Set(sketchedInputs.map((issue) => JSON.stringify([issue.product, issue.part])))];
580
- const baseline = compared.flatMap((key) => { var _a; return (_a = baselines.get(key)) !== null && _a !== void 0 ? _a : []; });
851
+ const asked = new Set(((_o = options.before) !== null && _o !== void 0 ? _o : []).map(({ product, part }) => JSON.stringify([product, part])));
852
+ const inspectBaselineOf = (keys) => {
853
+ const baseline = keys.flatMap((key) => {
854
+ var _a;
855
+ return ((_a = baselines.get(key)) !== null && _a !== void 0 ? _a : []).map((frame) => {
856
+ var _a;
857
+ return (Object.assign(Object.assign({}, frame), { skips: Object.assign(Object.assign({}, frame.skips), { [frame.address.part]: (_a = mergedSkips.get(key)) !== null && _a !== void 0 ? _a : [] }) }));
858
+ });
859
+ });
860
+ return baseline.length > 0
861
+ ? queue.run((browser) => inspect({ browser, base, frames: baseline, cache, timeoutMs }))
862
+ : [];
863
+ };
864
+ const askedInProduct = Promise.resolve(inspectBaselineOf([...asked]));
865
+ askedInProduct.catch(() => undefined);
866
+ const all = yield queue.run((browser) => (0, exports.inspectRetryingTimeouts)({
867
+ browser,
868
+ base,
869
+ frames,
870
+ cache,
871
+ timeoutMs,
872
+ onPart: ({ done, total, part, ms }) => { var _a; return (_a = options.onProgress) === null || _a === void 0 ? void 0 : _a.call(options, `[${done}/${total}] ${part} ${Math.round(ms / 1000)}s`); },
873
+ }));
874
+ const inspected = (0, exports.uniqueIssuesOf)(all.filter((issue) => issue.rule !== BUSY_MARK));
875
+ const isInput = render_issue_key_1.isControlInput;
876
+ const sketched = inspected.filter((issue) => issue.sketch && !exports.WARNING_RULES.has(issue.rule));
877
+ const keyOf = (issue) => JSON.stringify([issue.product, issue.part]);
878
+ const compared = [...new Set([...sketched.map(keyOf), ...asked])];
879
+ const comparedAt = new Map(compared.map((key, index) => [key, index]));
880
+ const inProduct = [
881
+ ...(yield askedInProduct),
882
+ ...(yield inspectBaselineOf(compared.filter((key) => !asked.has(key)))),
883
+ ].sort((a, b) => { var _a, _b; return ((_a = comparedAt.get(keyOf(a))) !== null && _a !== void 0 ? _a : 0) - ((_b = comparedAt.get(keyOf(b))) !== null && _b !== void 0 ? _b : 0); });
581
884
  const elementOf = (issue) => JSON.stringify([issue.product, issue.part, issue.path]);
582
- const existing = new Set((baseline.length > 0 ? yield queue.run((browser) => inspect({ browser, base, frames: baseline })) : [])
583
- .filter(isInput)
584
- .map(elementOf));
885
+ const sameIssueOf = render_issue_key_1.sameRenderIssueKeyOf;
886
+ const framedOf = (issue, sketch) => { var _a; return (_a = framed.get(JSON.stringify([issue.product, issue.part, sketch]))) !== null && _a !== void 0 ? _a : false; };
887
+ const existing = new Set(inProduct.flatMap((issue) => [sameIssueOf(issue, null), sameIssueOf(issue, framedOf(issue, null))]));
888
+ const isOld = (issue) => existing.has(sameIssueOf(issue, null)) ||
889
+ (framedOf(issue, issue.sketch) !== framedOf(issue, null) &&
890
+ existing.has(sameIssueOf(issue, framedOf(issue, issue.sketch))));
585
891
  const mergedInputs = inspected.filter((issue) => isInput(issue) && !issue.sketch);
586
- issues.push(...inspected.filter((issue) => !WARNING_RULES.has(issue.rule) && !isInput(issue)), ...sketchedInputs.filter((issue) => !existing.has(elementOf(issue))));
587
- return {
588
- issues,
589
- warnings: [
892
+ const undrawnBase = [
893
+ ...new Set(inProduct.filter((issue) => issue.rule === exports.RENDER_TIMEOUT).map((issue) => issue.part)),
894
+ ];
895
+ issues.push(...inspected.filter((issue) => !issue.sketch && !exports.WARNING_RULES.has(issue.rule) && !isInput(issue)), ...sketched.filter((issue) => !isOld(issue)));
896
+ return Object.assign(Object.assign({ issues, warnings: [
590
897
  ...gridWarnings,
591
898
  ...mergedInputs.filter((issue, index) => mergedInputs.findIndex((other) => elementOf(other) === elementOf(issue)) === index),
592
- ...firstOfEach(inspected.filter((issue) => WARNING_RULES.has(issue.rule))),
593
- ],
594
- grids,
595
- drawn: frames
899
+ ...firstOfEach(inspected.filter((issue) => exports.WARNING_RULES.has(issue.rule))),
900
+ ], grids, busy: (0, exports.busyStatesOf)(all) }, (undrawnBase.length > 0
901
+ ? {
902
+ noVerdict: (0, no_verdict_1.noVerdictOf)(`the base of ${undrawnBase.join(', ')} did not draw within ${Math.round(timeoutMs / 1000)}s, so its problems could not be told apart from the sketch's`),
903
+ }
904
+ : {})), { before: (0, exports.uniqueIssuesOf)(inProduct.filter((issue) => asked.has(JSON.stringify([issue.product, issue.part])) &&
905
+ issue.rule !== BUSY_MARK &&
906
+ issue.rule !== exports.RENDER_TIMEOUT &&
907
+ !exports.WARNING_RULES.has(issue.rule) &&
908
+ !isInput(issue))), drawn: frames
596
909
  .filter(({ contrast }) => contrast.scheme !== 'dark')
597
910
  .map(({ address }) => {
598
911
  var _a;
@@ -603,8 +916,7 @@ const renderIssuesOf = (options) => __awaiter(void 0, void 0, void 0, function*
603
916
  size: (_a = address.preset) !== null && _a !== void 0 ? _a : (address.width ? `${address.width}px` : 'fitted'),
604
917
  sketch: address.sketch,
605
918
  });
606
- }),
607
- };
919
+ }) });
608
920
  }
609
921
  catch (error) {
610
922
  if (error instanceof thumb_1.ThumbUnavailableError)
@@ -612,7 +924,8 @@ const renderIssuesOf = (options) => __awaiter(void 0, void 0, void 0, function*
612
924
  throw error;
613
925
  }
614
926
  finally {
615
- yield Promise.all([shots ? shots.close() : queue.close(), server.close()]);
927
+ if (!warm)
928
+ yield Promise.all([queue.close(), server.close()]);
616
929
  }
617
930
  });
618
931
  exports.renderIssuesOf = renderIssuesOf;