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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/CHANGELOG.md +153 -0
  2. package/build-info.json +1 -1
  3. package/design/arrow-anchor.ts +55 -0
  4. package/design/define-call.ts +3 -0
  5. package/design/define-part.ts +28 -1
  6. package/design/web/frame.ts +28 -0
  7. package/package.json +1 -1
  8. package/src/lib/api/compose.js +3 -2
  9. package/src/lib/api/compose.js.map +1 -1
  10. package/src/lib/api/git.js +2 -1
  11. package/src/lib/api/git.js.map +1 -1
  12. package/src/lib/api/setup.js +2 -2
  13. package/src/lib/api/setup.js.map +1 -1
  14. package/src/lib/design/asset-shot.js +2 -2
  15. package/src/lib/design/asset-shot.js.map +1 -1
  16. package/src/lib/design/blank-png.d.ts +2 -0
  17. package/src/lib/design/blank-png.js +28 -0
  18. package/src/lib/design/blank-png.js.map +1 -0
  19. package/src/lib/design/cache-entry.d.ts +8 -0
  20. package/src/lib/design/cache-entry.js +30 -0
  21. package/src/lib/design/cache-entry.js.map +1 -0
  22. package/src/lib/design/calls-tsconfig.js +20 -13
  23. package/src/lib/design/calls-tsconfig.js.map +1 -1
  24. package/src/lib/design/calls.js +3 -3
  25. package/src/lib/design/calls.js.map +1 -1
  26. package/src/lib/design/changed-parts.d.ts +1 -1
  27. package/src/lib/design/check.d.ts +2 -0
  28. package/src/lib/design/check.js +91 -24
  29. package/src/lib/design/check.js.map +1 -1
  30. package/src/lib/design/code-hash.d.ts +30 -0
  31. package/src/lib/design/code-hash.js +118 -0
  32. package/src/lib/design/code-hash.js.map +1 -0
  33. package/src/lib/design/commit-hunks.d.ts +2 -2
  34. package/src/lib/design/commit-hunks.js +2 -2
  35. package/src/lib/design/design-command.js +131 -36
  36. package/src/lib/design/design-command.js.map +1 -1
  37. package/src/lib/design/{paths.d.ts → design-config.d.ts} +6 -28
  38. package/src/lib/design/design-config.js +35 -0
  39. package/src/lib/design/design-config.js.map +1 -0
  40. package/src/lib/design/design-lint.d.ts +68 -0
  41. package/src/lib/design/design-lint.js +183 -0
  42. package/src/lib/design/design-lint.js.map +1 -0
  43. package/src/lib/design/draw-ledger.d.ts +6 -0
  44. package/src/lib/design/draw-ledger.js +10 -0
  45. package/src/lib/design/draw-ledger.js.map +1 -1
  46. package/src/lib/design/force-interactions.d.ts +2 -0
  47. package/src/lib/design/force-interactions.js +4 -2
  48. package/src/lib/design/force-interactions.js.map +1 -1
  49. package/src/lib/design/generated-stylesheets.d.ts +1 -1
  50. package/src/lib/design/generated-stylesheets.js +2 -2
  51. package/src/lib/design/generated-stylesheets.js.map +1 -1
  52. package/src/lib/design/git-top.d.ts +5 -0
  53. package/src/lib/design/git-top.js +16 -0
  54. package/src/lib/design/git-top.js.map +1 -0
  55. package/src/lib/design/hooks-problem.d.ts +2 -0
  56. package/src/lib/design/hooks-problem.js +23 -0
  57. package/src/lib/design/hooks-problem.js.map +1 -0
  58. package/src/lib/design/index.d.ts +4 -1
  59. package/src/lib/design/index.js +4 -1
  60. package/src/lib/design/index.js.map +1 -1
  61. package/src/lib/design/is-running.d.ts +1 -0
  62. package/src/lib/design/is-running.js +14 -0
  63. package/src/lib/design/is-running.js.map +1 -0
  64. package/src/lib/design/legacy.js +3 -3
  65. package/src/lib/design/legacy.js.map +1 -1
  66. package/src/lib/design/mcp-command.js +5 -12
  67. package/src/lib/design/mcp-command.js.map +1 -1
  68. package/src/lib/design/merge-compare.js +3 -3
  69. package/src/lib/design/merge-compare.js.map +1 -1
  70. package/src/lib/design/motion-command.js +3 -3
  71. package/src/lib/design/motion-command.js.map +1 -1
  72. package/src/lib/design/new-call.js +3 -3
  73. package/src/lib/design/new-call.js.map +1 -1
  74. package/src/lib/design/old-shot-folders.d.ts +2 -0
  75. package/src/lib/design/old-shot-folders.js +26 -0
  76. package/src/lib/design/old-shot-folders.js.map +1 -0
  77. package/src/lib/design/package-root.d.ts +21 -0
  78. package/src/lib/design/package-root.js +79 -0
  79. package/src/lib/design/package-root.js.map +1 -0
  80. package/src/lib/design/parent-watch.d.ts +7 -0
  81. package/src/lib/design/parent-watch.js +23 -0
  82. package/src/lib/design/parent-watch.js.map +1 -0
  83. package/src/lib/design/part-marks.js +2 -2
  84. package/src/lib/design/part-marks.js.map +1 -1
  85. package/src/lib/design/phase-timing.d.ts +5 -0
  86. package/src/lib/design/phase-timing.js +27 -0
  87. package/src/lib/design/phase-timing.js.map +1 -0
  88. package/src/lib/design/physical-cores.d.ts +12 -0
  89. package/src/lib/design/physical-cores.js +43 -0
  90. package/src/lib/design/physical-cores.js.map +1 -0
  91. package/src/lib/design/product-command.js +4 -4
  92. package/src/lib/design/product-command.js.map +1 -1
  93. package/src/lib/design/push-status.d.ts +30 -0
  94. package/src/lib/design/push-status.js +122 -0
  95. package/src/lib/design/push-status.js.map +1 -0
  96. package/src/lib/design/ready-shots.d.ts +18 -35
  97. package/src/lib/design/ready-shots.js +46 -111
  98. package/src/lib/design/ready-shots.js.map +1 -1
  99. package/src/lib/design/render-packages.d.ts +3 -1
  100. package/src/lib/design/render-packages.js +6 -2
  101. package/src/lib/design/render-packages.js.map +1 -1
  102. package/src/lib/design/render-worker.js +23 -3
  103. package/src/lib/design/render-worker.js.map +1 -1
  104. package/src/lib/design/render.d.ts +24 -3
  105. package/src/lib/design/render.js +23 -9
  106. package/src/lib/design/render.js.map +1 -1
  107. package/src/lib/design/resident/client.d.ts +52 -0
  108. package/src/lib/design/resident/client.js +263 -0
  109. package/src/lib/design/resident/client.js.map +1 -0
  110. package/src/lib/design/resident/discovery.d.ts +21 -0
  111. package/src/lib/design/resident/discovery.js +63 -0
  112. package/src/lib/design/resident/discovery.js.map +1 -0
  113. package/src/lib/design/resident/resident-process.d.ts +19 -0
  114. package/src/lib/design/resident/resident-process.js +189 -0
  115. package/src/lib/design/resident/resident-process.js.map +1 -0
  116. package/src/lib/design/resident/server.d.ts +52 -0
  117. package/src/lib/design/resident/server.js +212 -0
  118. package/src/lib/design/resident/server.js.map +1 -0
  119. package/src/lib/design/run-abort.d.ts +9 -0
  120. package/src/lib/design/run-abort.js +45 -0
  121. package/src/lib/design/run-abort.js.map +1 -0
  122. package/src/lib/design/run-deadline.d.ts +19 -0
  123. package/src/lib/design/run-deadline.js +104 -0
  124. package/src/lib/design/run-deadline.js.map +1 -0
  125. package/src/lib/design/run-yield.d.ts +8 -0
  126. package/src/lib/design/run-yield.js +43 -0
  127. package/src/lib/design/run-yield.js.map +1 -0
  128. package/src/lib/design/serve-state.d.ts +15 -0
  129. package/src/lib/design/serve-state.js +56 -0
  130. package/src/lib/design/serve-state.js.map +1 -0
  131. package/src/lib/design/serve.d.ts +20 -2
  132. package/src/lib/design/serve.js +147 -43
  133. package/src/lib/design/serve.js.map +1 -1
  134. package/src/lib/design/server-identity.d.ts +5 -1
  135. package/src/lib/design/server-identity.js +4 -1
  136. package/src/lib/design/server-identity.js.map +1 -1
  137. package/src/lib/design/shot-board.d.ts +26 -0
  138. package/src/lib/design/shot-board.js +80 -0
  139. package/src/lib/design/shot-board.js.map +1 -0
  140. package/src/lib/design/shot-command.d.ts +1 -1
  141. package/src/lib/design/shot-command.js +12 -5
  142. package/src/lib/design/shot-command.js.map +1 -1
  143. package/src/lib/design/shot-store.d.ts +29 -3
  144. package/src/lib/design/shot-store.js +206 -36
  145. package/src/lib/design/shot-store.js.map +1 -1
  146. package/src/lib/design/shot.d.ts +12 -4
  147. package/src/lib/design/shot.js +98 -14
  148. package/src/lib/design/shot.js.map +1 -1
  149. package/src/lib/design/sketch-at.js +2 -1
  150. package/src/lib/design/sketch-at.js.map +1 -1
  151. package/src/lib/design/sketch-command.d.ts +13 -0
  152. package/src/lib/design/sketch-command.js +346 -73
  153. package/src/lib/design/sketch-command.js.map +1 -1
  154. package/src/lib/design/ssr-shims.d.ts +1 -0
  155. package/src/lib/design/ssr-shims.js +3 -3
  156. package/src/lib/design/ssr-shims.js.map +1 -1
  157. package/src/lib/design/stamp.d.ts +5 -0
  158. package/src/lib/design/stamp.js +6 -5
  159. package/src/lib/design/stamp.js.map +1 -1
  160. package/src/lib/design/status.d.ts +1 -1
  161. package/src/lib/design/status.js +15 -4
  162. package/src/lib/design/status.js.map +1 -1
  163. package/src/lib/design/studio-api.d.ts +7 -15
  164. package/src/lib/design/studio-api.js +39 -140
  165. package/src/lib/design/studio-api.js.map +1 -1
  166. package/src/lib/design/system/accepted-pictures.d.ts +15 -29
  167. package/src/lib/design/system/accepted-pictures.js +156 -134
  168. package/src/lib/design/system/accepted-pictures.js.map +1 -1
  169. package/src/lib/design/system/action-cache.d.ts +45 -0
  170. package/src/lib/design/system/action-cache.js +72 -0
  171. package/src/lib/design/system/action-cache.js.map +1 -0
  172. package/src/lib/design/system/action-lost.d.ts +8 -6
  173. package/src/lib/design/system/action-lost.js +13 -17
  174. package/src/lib/design/system/action-lost.js.map +1 -1
  175. package/src/lib/design/system/action-press.d.ts +7 -1
  176. package/src/lib/design/system/action-press.js +16 -4
  177. package/src/lib/design/system/action-press.js.map +1 -1
  178. package/src/lib/design/system/actions-command.d.ts +12 -5
  179. package/src/lib/design/system/actions-command.js +187 -66
  180. package/src/lib/design/system/actions-command.js.map +1 -1
  181. package/src/lib/design/system/actions.d.ts +27 -4
  182. package/src/lib/design/system/actions.js +59 -21
  183. package/src/lib/design/system/actions.js.map +1 -1
  184. package/src/lib/design/system/anti-alias.d.ts +2 -0
  185. package/src/lib/design/system/anti-alias.js +11 -0
  186. package/src/lib/design/system/anti-alias.js.map +1 -0
  187. package/src/lib/design/system/app-files.js +19 -3
  188. package/src/lib/design/system/app-files.js.map +1 -1
  189. package/src/lib/design/system/arrow-anchor.d.ts +9 -0
  190. package/src/lib/design/system/arrow-anchor.js +40 -0
  191. package/src/lib/design/system/arrow-anchor.js.map +1 -0
  192. package/src/lib/design/system/base-issues.d.ts +28 -0
  193. package/src/lib/design/system/base-issues.js +80 -0
  194. package/src/lib/design/system/base-issues.js.map +1 -0
  195. package/src/lib/design/system/base.d.ts +1 -1
  196. package/src/lib/design/system/base.js +2 -2
  197. package/src/lib/design/system/base.js.map +1 -1
  198. package/src/lib/design/system/baseline-history.d.ts +13 -0
  199. package/src/lib/design/system/baseline-history.js +40 -0
  200. package/src/lib/design/system/baseline-history.js.map +1 -0
  201. package/src/lib/design/system/bespoke-controls.d.ts +4 -1
  202. package/src/lib/design/system/bespoke-controls.js +72 -70
  203. package/src/lib/design/system/bespoke-controls.js.map +1 -1
  204. package/src/lib/design/system/build-ready-contract.d.ts +7 -1
  205. package/src/lib/design/system/build-ready-contract.js +7 -1
  206. package/src/lib/design/system/build-ready-contract.js.map +1 -1
  207. package/src/lib/design/system/build-running.d.ts +13 -0
  208. package/src/lib/design/system/build-running.js +48 -0
  209. package/src/lib/design/system/build-running.js.map +1 -0
  210. package/src/lib/design/system/check-record.d.ts +18 -0
  211. package/src/lib/design/system/check-record.js +47 -0
  212. package/src/lib/design/system/check-record.js.map +1 -0
  213. package/src/lib/design/system/check-rules.d.ts +1 -1
  214. package/src/lib/design/system/check-rules.js +19 -1
  215. package/src/lib/design/system/check-rules.js.map +1 -1
  216. package/src/lib/design/system/check-system.d.ts +25 -4
  217. package/src/lib/design/system/check-system.js +289 -121
  218. package/src/lib/design/system/check-system.js.map +1 -1
  219. package/src/lib/design/system/comments/inbox.d.ts +1 -1
  220. package/src/lib/design/system/compare-cache.d.ts +20 -0
  221. package/src/lib/design/system/compare-cache.js +92 -0
  222. package/src/lib/design/system/compare-cache.js.map +1 -0
  223. package/src/lib/design/system/compare-command.d.ts +82 -51
  224. package/src/lib/design/system/compare-command.js +362 -340
  225. package/src/lib/design/system/compare-command.js.map +1 -1
  226. package/src/lib/design/system/complete.d.ts +31 -1
  227. package/src/lib/design/system/complete.js +141 -27
  228. package/src/lib/design/system/complete.js.map +1 -1
  229. package/src/lib/design/system/decision-refs.d.ts +5 -0
  230. package/src/lib/design/system/decision-refs.js +21 -0
  231. package/src/lib/design/system/decision-refs.js.map +1 -0
  232. package/src/lib/design/system/design-hash.d.ts +22 -1
  233. package/src/lib/design/system/design-hash.js +63 -4
  234. package/src/lib/design/system/design-hash.js.map +1 -1
  235. package/src/lib/design/system/dom-command.d.ts +1 -1
  236. package/src/lib/design/system/dom-command.js +8 -5
  237. package/src/lib/design/system/dom-command.js.map +1 -1
  238. package/src/lib/design/system/drawn-open-points.d.ts +1 -1
  239. package/src/lib/design/system/dropped-props.d.ts +19 -5
  240. package/src/lib/design/system/dropped-props.js +133 -21
  241. package/src/lib/design/system/dropped-props.js.map +1 -1
  242. package/src/lib/design/system/grid-report.d.ts +5 -0
  243. package/src/lib/design/system/grid-report.js +78 -0
  244. package/src/lib/design/system/grid-report.js.map +1 -0
  245. package/src/lib/design/system/harness-build-cache.d.ts +17 -3
  246. package/src/lib/design/system/harness-build-cache.js +23 -10
  247. package/src/lib/design/system/harness-build-cache.js.map +1 -1
  248. package/src/lib/design/system/harness-inputs.d.ts +17 -0
  249. package/src/lib/design/system/harness-inputs.js +160 -0
  250. package/src/lib/design/system/harness-inputs.js.map +1 -0
  251. package/src/lib/design/system/harness-map.d.ts +1 -1
  252. package/src/lib/design/system/harness-server.d.ts +12 -1
  253. package/src/lib/design/system/harness-server.js +29 -19
  254. package/src/lib/design/system/harness-server.js.map +1 -1
  255. package/src/lib/design/system/harness-shot.d.ts +78 -0
  256. package/src/lib/design/system/harness-shot.js +349 -0
  257. package/src/lib/design/system/harness-shot.js.map +1 -0
  258. package/src/lib/design/system/harness-watch.d.ts +79 -0
  259. package/src/lib/design/system/harness-watch.js +334 -0
  260. package/src/lib/design/system/harness-watch.js.map +1 -0
  261. package/src/lib/design/system/implementation-baseline.d.ts +20 -0
  262. package/src/lib/design/system/implementation-baseline.js +44 -0
  263. package/src/lib/design/system/implementation-baseline.js.map +1 -0
  264. package/src/lib/design/system/leftover-gate-files.d.ts +2 -0
  265. package/src/lib/design/system/leftover-gate-files.js +15 -0
  266. package/src/lib/design/system/leftover-gate-files.js.map +1 -0
  267. package/src/lib/design/system/lib-build-lock.d.ts +18 -0
  268. package/src/lib/design/system/lib-build-lock.js +111 -0
  269. package/src/lib/design/system/lib-build-lock.js.map +1 -0
  270. package/src/lib/design/system/link-free.d.ts +12 -0
  271. package/src/lib/design/system/link-free.js +125 -0
  272. package/src/lib/design/system/link-free.js.map +1 -0
  273. package/src/lib/design/system/list-system.d.ts +4 -8
  274. package/src/lib/design/system/list-system.js +8 -78
  275. package/src/lib/design/system/list-system.js.map +1 -1
  276. package/src/lib/design/system/live-actions.d.ts +1 -1
  277. package/src/lib/design/system/live-actions.js +17 -8
  278. package/src/lib/design/system/live-actions.js.map +1 -1
  279. package/src/lib/design/system/live-compare.js +1 -1
  280. package/src/lib/design/system/live-compare.js.map +1 -1
  281. package/src/lib/design/system/live-uncovered.d.ts +7 -2
  282. package/src/lib/design/system/live-uncovered.js +44 -9
  283. package/src/lib/design/system/live-uncovered.js.map +1 -1
  284. package/src/lib/design/system/no-verdict.d.ts +13 -0
  285. package/src/lib/design/system/no-verdict.js +17 -0
  286. package/src/lib/design/system/no-verdict.js.map +1 -0
  287. package/src/lib/design/system/off-centre.d.ts +11 -0
  288. package/src/lib/design/system/off-centre.js +74 -0
  289. package/src/lib/design/system/off-centre.js.map +1 -0
  290. package/src/lib/design/system/open-points-cache.d.ts +11 -0
  291. package/src/lib/design/system/open-points-cache.js +27 -0
  292. package/src/lib/design/system/open-points-cache.js.map +1 -0
  293. package/src/lib/design/system/open-points-runner.d.ts +43 -0
  294. package/src/lib/design/system/open-points-runner.js +119 -0
  295. package/src/lib/design/system/open-points-runner.js.map +1 -0
  296. package/src/lib/design/system/open-points-worker.d.ts +1 -0
  297. package/src/lib/design/system/open-points-worker.js +28 -0
  298. package/src/lib/design/system/open-points-worker.js.map +1 -0
  299. package/src/lib/design/system/open-points.js +1 -1
  300. package/src/lib/design/system/open-points.js.map +1 -1
  301. package/src/lib/design/system/part-build-ready.d.ts +13 -7
  302. package/src/lib/design/system/part-build-ready.js +43 -15
  303. package/src/lib/design/system/part-build-ready.js.map +1 -1
  304. package/src/lib/design/system/part-compare.d.ts +18 -2
  305. package/src/lib/design/system/part-compare.js +147 -42
  306. package/src/lib/design/system/part-compare.js.map +1 -1
  307. package/src/lib/design/system/part-picture-cache.d.ts +23 -0
  308. package/src/lib/design/system/part-picture-cache.js +68 -0
  309. package/src/lib/design/system/part-picture-cache.js.map +1 -0
  310. package/src/lib/design/system/part-ready.d.ts +33 -7
  311. package/src/lib/design/system/part-ready.js +55 -17
  312. package/src/lib/design/system/part-ready.js.map +1 -1
  313. package/src/lib/design/system/part-task.d.ts +20 -0
  314. package/src/lib/design/system/part-task.js +53 -7
  315. package/src/lib/design/system/part-task.js.map +1 -1
  316. package/src/lib/design/system/pixel-cache.d.ts +16 -0
  317. package/src/lib/design/system/pixel-cache.js +79 -0
  318. package/src/lib/design/system/pixel-cache.js.map +1 -0
  319. package/src/lib/design/system/pointer-focus.d.ts +10 -2
  320. package/src/lib/design/system/pointer-focus.js +32 -9
  321. package/src/lib/design/system/pointer-focus.js.map +1 -1
  322. package/src/lib/design/system/prettier.js +4 -3
  323. package/src/lib/design/system/prettier.js.map +1 -1
  324. package/src/lib/design/system/problem.d.ts +6 -0
  325. package/src/lib/design/system/product.js +2 -2
  326. package/src/lib/design/system/product.js.map +1 -1
  327. package/src/lib/design/system/ready-command.d.ts +1 -1
  328. package/src/lib/design/system/ready-command.js +24 -4
  329. package/src/lib/design/system/ready-command.js.map +1 -1
  330. package/src/lib/design/system/record-settled.d.ts +24 -0
  331. package/src/lib/design/system/record-settled.js +50 -0
  332. package/src/lib/design/system/record-settled.js.map +1 -0
  333. package/src/lib/design/system/render-check.d.ts +18 -1
  334. package/src/lib/design/system/render-check.js +164 -104
  335. package/src/lib/design/system/render-check.js.map +1 -1
  336. package/src/lib/design/system/render-issue-key.d.ts +9 -0
  337. package/src/lib/design/system/render-issue-key.js +27 -0
  338. package/src/lib/design/system/render-issue-key.js.map +1 -0
  339. package/src/lib/design/system/resolve-product.d.ts +4 -1
  340. package/src/lib/design/system/resolve-product.js +14 -3
  341. package/src/lib/design/system/resolve-product.js.map +1 -1
  342. package/src/lib/design/system/rule-baseline.d.ts +53 -0
  343. package/src/lib/design/system/rule-baseline.js +124 -0
  344. package/src/lib/design/system/rule-baseline.js.map +1 -0
  345. package/src/lib/design/system/rule-skips.d.ts +20 -0
  346. package/src/lib/design/system/rule-skips.js +36 -0
  347. package/src/lib/design/system/rule-skips.js.map +1 -0
  348. package/src/lib/design/system/rules/canonical-class.d.ts +4 -0
  349. package/src/lib/design/system/rules/canonical-class.js +66 -13
  350. package/src/lib/design/system/rules/canonical-class.js.map +1 -1
  351. package/src/lib/design/system/rules/capability-place.d.ts +4 -2
  352. package/src/lib/design/system/rules/capability-place.js +15 -2
  353. package/src/lib/design/system/rules/capability-place.js.map +1 -1
  354. package/src/lib/design/system/rules/command-text.d.ts +7 -0
  355. package/src/lib/design/system/rules/command-text.js +72 -0
  356. package/src/lib/design/system/rules/command-text.js.map +1 -0
  357. package/src/lib/design/system/rules/design-coverage.d.ts +30 -0
  358. package/src/lib/design/system/rules/design-coverage.js +205 -0
  359. package/src/lib/design/system/rules/design-coverage.js.map +1 -0
  360. package/src/lib/design/system/rules/glued-interpolation.js +17 -1
  361. package/src/lib/design/system/rules/glued-interpolation.js.map +1 -1
  362. package/src/lib/design/system/rules/implements-unrendered.d.ts +13 -0
  363. package/src/lib/design/system/rules/implements-unrendered.js +63 -0
  364. package/src/lib/design/system/rules/implements-unrendered.js.map +1 -0
  365. package/src/lib/design/system/rules/motion.js +6 -0
  366. package/src/lib/design/system/rules/motion.js.map +1 -1
  367. package/src/lib/design/system/rules/native-title.js +13 -3
  368. package/src/lib/design/system/rules/native-title.js.map +1 -1
  369. package/src/lib/design/system/rules/option-values.d.ts +1 -1
  370. package/src/lib/design/system/rules/pending-state.d.ts +39 -0
  371. package/src/lib/design/system/rules/pending-state.js +289 -0
  372. package/src/lib/design/system/rules/pending-state.js.map +1 -0
  373. package/src/lib/design/system/rules/sdk-attribute-value.d.ts +10 -0
  374. package/src/lib/design/system/rules/sdk-attribute-value.js +78 -0
  375. package/src/lib/design/system/rules/sdk-attribute-value.js.map +1 -0
  376. package/src/lib/design/system/rules/sdk-private-var.d.ts +9 -0
  377. package/src/lib/design/system/rules/sdk-private-var.js +54 -0
  378. package/src/lib/design/system/rules/sdk-private-var.js.map +1 -0
  379. package/src/lib/design/system/rules/skips.d.ts +4 -0
  380. package/src/lib/design/system/rules/skips.js +27 -0
  381. package/src/lib/design/system/rules/skips.js.map +1 -0
  382. package/src/lib/design/system/rules/stale-replace.js +1 -0
  383. package/src/lib/design/system/rules/stale-replace.js.map +1 -1
  384. package/src/lib/design/system/rules/tailwind-classes.d.ts +1 -0
  385. package/src/lib/design/system/rules/tailwind-classes.js +11 -6
  386. package/src/lib/design/system/rules/tailwind-classes.js.map +1 -1
  387. package/src/lib/design/system/rules/token-selectors.js +10 -3
  388. package/src/lib/design/system/rules/token-selectors.js.map +1 -1
  389. package/src/lib/design/system/rules/unbound-input-known.d.ts +2 -0
  390. package/src/lib/design/system/rules/unbound-input-known.js +3 -6
  391. package/src/lib/design/system/rules/unbound-input-known.js.map +1 -1
  392. package/src/lib/design/system/rules/unbound-input.d.ts +2 -0
  393. package/src/lib/design/system/rules/unbound-input.js +12 -6
  394. package/src/lib/design/system/rules/unbound-input.js.map +1 -1
  395. package/src/lib/design/system/rules/undefined-class.js +11 -2
  396. package/src/lib/design/system/rules/undefined-class.js.map +1 -1
  397. package/src/lib/design/system/rules/utility-css.js +13 -1
  398. package/src/lib/design/system/rules/utility-css.js.map +1 -1
  399. package/src/lib/design/system/rules/visible-change.d.ts +1 -2
  400. package/src/lib/design/system/rules/visible-change.js +3 -3
  401. package/src/lib/design/system/rules/visible-change.js.map +1 -1
  402. package/src/lib/design/system/sdk-declarations.d.ts +10 -0
  403. package/src/lib/design/system/sdk-declarations.js +177 -0
  404. package/src/lib/design/system/sdk-declarations.js.map +1 -0
  405. package/src/lib/design/system/sdk-selectors.d.ts +18 -0
  406. package/src/lib/design/system/sdk-selectors.js +131 -0
  407. package/src/lib/design/system/sdk-selectors.js.map +1 -0
  408. package/src/lib/design/system/served-cache.d.ts +99 -0
  409. package/src/lib/design/system/served-cache.js +202 -0
  410. package/src/lib/design/system/served-cache.js.map +1 -0
  411. package/src/lib/design/system/settled-panes.d.ts +8 -3
  412. package/src/lib/design/system/settled-panes.js +10 -9
  413. package/src/lib/design/system/settled-panes.js.map +1 -1
  414. package/src/lib/design/system/sketch/baseline.d.ts +17 -1
  415. package/src/lib/design/system/sketch/baseline.js +48 -7
  416. package/src/lib/design/system/sketch/baseline.js.map +1 -1
  417. package/src/lib/design/system/sketch/check-format.js +3 -9
  418. package/src/lib/design/system/sketch/check-format.js.map +1 -1
  419. package/src/lib/design/system/sketch/clean-copy.d.ts +18 -0
  420. package/src/lib/design/system/sketch/clean-copy.js +104 -0
  421. package/src/lib/design/system/sketch/clean-copy.js.map +1 -0
  422. package/src/lib/design/system/sketch/cli-args.d.ts +1 -1
  423. package/src/lib/design/system/sketch/cli-args.js +2 -2
  424. package/src/lib/design/system/sketch/cli-args.js.map +1 -1
  425. package/src/lib/design/system/sketch/covered-diffs.d.ts +40 -0
  426. package/src/lib/design/system/sketch/covered-diffs.js +106 -0
  427. package/src/lib/design/system/sketch/covered-diffs.js.map +1 -0
  428. package/src/lib/design/system/sketch/edit-sketch.d.ts +14 -6
  429. package/src/lib/design/system/sketch/edit-sketch.js +87 -35
  430. package/src/lib/design/system/sketch/edit-sketch.js.map +1 -1
  431. package/src/lib/design/system/sketch/identical-renders.js +20 -14
  432. package/src/lib/design/system/sketch/identical-renders.js.map +1 -1
  433. package/src/lib/design/system/sketch/merge-commit.d.ts +20 -0
  434. package/src/lib/design/system/sketch/merge-commit.js +72 -0
  435. package/src/lib/design/system/sketch/merge-commit.js.map +1 -0
  436. package/src/lib/design/system/sketch/merge-runner.d.ts +20 -0
  437. package/src/lib/design/system/sketch/merge-runner.js +73 -0
  438. package/src/lib/design/system/sketch/merge-runner.js.map +1 -0
  439. package/src/lib/design/system/sketch/merge-step.d.ts +14 -2
  440. package/src/lib/design/system/sketch/merge-step.js +24 -12
  441. package/src/lib/design/system/sketch/merge-step.js.map +1 -1
  442. package/src/lib/design/system/sketch/merge-worker.d.ts +1 -0
  443. package/src/lib/design/system/sketch/merge-worker.js +14 -0
  444. package/src/lib/design/system/sketch/merge-worker.js.map +1 -0
  445. package/src/lib/design/system/sketch/merge.d.ts +10 -3
  446. package/src/lib/design/system/sketch/merge.js +180 -90
  447. package/src/lib/design/system/sketch/merge.js.map +1 -1
  448. package/src/lib/design/system/sketch/merged-parts.d.ts +0 -29
  449. package/src/lib/design/system/sketch/merged-parts.js +8 -56
  450. package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
  451. package/src/lib/design/system/sketch/note-language.d.ts +7 -0
  452. package/src/lib/design/system/sketch/note-language.js +83 -0
  453. package/src/lib/design/system/sketch/note-language.js.map +1 -0
  454. package/src/lib/design/system/sketch/part-definition.d.ts +6 -0
  455. package/src/lib/design/system/sketch/part-definition.js +31 -1
  456. package/src/lib/design/system/sketch/part-definition.js.map +1 -1
  457. package/src/lib/design/system/sketch/rebase-port.js +47 -2
  458. package/src/lib/design/system/sketch/rebase-port.js.map +1 -1
  459. package/src/lib/design/system/sketch/sketch-check-cache.d.ts +11 -0
  460. package/src/lib/design/system/sketch/sketch-check-cache.js +22 -0
  461. package/src/lib/design/system/sketch/sketch-check-cache.js.map +1 -0
  462. package/src/lib/design/system/sketch/sketch-check-worker.js +6 -1
  463. package/src/lib/design/system/sketch/sketch-check-worker.js.map +1 -1
  464. package/src/lib/design/system/sketch/sketch-checker.d.ts +14 -1
  465. package/src/lib/design/system/sketch/sketch-checker.js +16 -6
  466. package/src/lib/design/system/sketch/sketch-checker.js.map +1 -1
  467. package/src/lib/design/system/sketch/sketch.d.ts +37 -6
  468. package/src/lib/design/system/sketch/sketch.js +101 -13
  469. package/src/lib/design/system/sketch/sketch.js.map +1 -1
  470. package/src/lib/design/system/sketch/stale-base.js +1 -1
  471. package/src/lib/design/system/sketch/stale-base.js.map +1 -1
  472. package/src/lib/design/system/sketch/unchanged-states.d.ts +7 -3
  473. package/src/lib/design/system/sketch/unchanged-states.js +25 -12
  474. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
  475. package/src/lib/design/system/sketch/viewed-shots.d.ts +10 -2
  476. package/src/lib/design/system/sketch/viewed-shots.js +15 -22
  477. package/src/lib/design/system/sketch/viewed-shots.js.map +1 -1
  478. package/src/lib/design/system/skip-classes.d.ts +3 -0
  479. package/src/lib/design/system/skip-classes.js +17 -0
  480. package/src/lib/design/system/skip-classes.js.map +1 -0
  481. package/src/lib/design/system/slot-hosts.d.ts +38 -0
  482. package/src/lib/design/system/slot-hosts.js +93 -0
  483. package/src/lib/design/system/slot-hosts.js.map +1 -0
  484. package/src/lib/design/system/slow-checks.d.ts +4 -0
  485. package/src/lib/design/system/slow-checks.js +77 -24
  486. package/src/lib/design/system/slow-checks.js.map +1 -1
  487. package/src/lib/design/system/slow-run.d.ts +15 -5
  488. package/src/lib/design/system/slow-run.js +143 -84
  489. package/src/lib/design/system/slow-run.js.map +1 -1
  490. package/src/lib/design/system/stale-dist.d.ts +37 -1
  491. package/src/lib/design/system/stale-dist.js +58 -8
  492. package/src/lib/design/system/stale-dist.js.map +1 -1
  493. package/src/lib/design/system/stale-parts.d.ts +15 -0
  494. package/src/lib/design/system/stale-parts.js +67 -5
  495. package/src/lib/design/system/stale-parts.js.map +1 -1
  496. package/src/lib/design/system/system-command.js +3 -3
  497. package/src/lib/design/system/system-command.js.map +1 -1
  498. package/src/lib/design/system/system-modules.d.ts +4 -4
  499. package/src/lib/design/system/system-tsconfig.d.ts +9 -2
  500. package/src/lib/design/system/system-tsconfig.js +73 -13
  501. package/src/lib/design/system/system-tsconfig.js.map +1 -1
  502. package/src/lib/design/system/task-command.d.ts +3 -2
  503. package/src/lib/design/system/task-command.js +111 -73
  504. package/src/lib/design/system/task-command.js.map +1 -1
  505. package/src/lib/design/system/touched-parts.d.ts +1 -1
  506. package/src/lib/design/system/touched-parts.js +4 -5
  507. package/src/lib/design/system/touched-parts.js.map +1 -1
  508. package/src/lib/design/system/tracked-reads.d.ts +27 -0
  509. package/src/lib/design/system/tracked-reads.js +100 -0
  510. package/src/lib/design/system/tracked-reads.js.map +1 -0
  511. package/src/lib/design/system/unchanged-rows.d.ts +17 -8
  512. package/src/lib/design/system/unchanged-rows.js +90 -12
  513. package/src/lib/design/system/unchanged-rows.js.map +1 -1
  514. package/src/lib/design/system/uncommitted-decisions.d.ts +0 -2
  515. package/src/lib/design/system/uncommitted-decisions.js +3 -6
  516. package/src/lib/design/system/uncommitted-decisions.js.map +1 -1
  517. package/src/lib/design/system/visible-change-command.d.ts +13 -1
  518. package/src/lib/design/system/visible-change-command.js +10 -8
  519. package/src/lib/design/system/visible-change-command.js.map +1 -1
  520. package/src/lib/design/system/visible-change-parts.d.ts +1 -1
  521. package/src/lib/design/system/write-origin.d.ts +12 -0
  522. package/src/lib/design/system/write-origin.js +18 -0
  523. package/src/lib/design/system/write-origin.js.map +1 -0
  524. package/src/lib/design/system-use.js +4 -4
  525. package/src/lib/design/system-use.js.map +1 -1
  526. package/src/lib/design/thumb.d.ts +19 -3
  527. package/src/lib/design/thumb.js +71 -9
  528. package/src/lib/design/thumb.js.map +1 -1
  529. package/src/lib/design/timings-command.d.ts +22 -0
  530. package/src/lib/design/timings-command.js +175 -0
  531. package/src/lib/design/timings-command.js.map +1 -0
  532. package/src/lib/design/timings.d.ts +117 -0
  533. package/src/lib/design/timings.js +296 -0
  534. package/src/lib/design/timings.js.map +1 -0
  535. package/src/lib/design/typecheck.js +2 -2
  536. package/src/lib/design/typecheck.js.map +1 -1
  537. package/src/lib/design/vite-cache.d.ts +11 -0
  538. package/src/lib/design/vite-cache.js +61 -0
  539. package/src/lib/design/vite-cache.js.map +1 -0
  540. package/src/lib/design/warm-draw.d.ts +33 -0
  541. package/src/lib/design/warm-draw.js +74 -0
  542. package/src/lib/design/warm-draw.js.map +1 -0
  543. package/src/lib/design/warm-pages.d.ts +10 -2
  544. package/src/lib/design/warm-pages.js +6 -2
  545. package/src/lib/design/warm-pages.js.map +1 -1
  546. package/src/lib/design/work-root.d.ts +2 -0
  547. package/src/lib/design/work-root.js +8 -0
  548. package/src/lib/design/work-root.js.map +1 -0
  549. package/src/lib/plain-output.d.ts +27 -0
  550. package/src/lib/plain-output.js +66 -0
  551. package/src/lib/plain-output.js.map +1 -0
  552. package/src/lib/release.js +11 -3
  553. package/src/lib/release.js.map +1 -1
  554. package/src/lib/update/commits.js +2 -2
  555. package/src/lib/update/commits.js.map +1 -1
  556. package/src/lib/update/packages.js +4 -2
  557. package/src/lib/update/packages.js.map +1 -1
  558. package/src/lib/update/scan.js +8 -2
  559. package/src/lib/update/scan.js.map +1 -1
  560. package/src/lib/design/paths.js +0 -138
  561. package/src/lib/design/paths.js.map +0 -1
  562. package/src/lib/design/system/accept-command.d.ts +0 -41
  563. package/src/lib/design/system/accept-command.js +0 -139
  564. package/src/lib/design/system/accept-command.js.map +0 -1
  565. package/src/lib/design/system/go-batch.d.ts +0 -24
  566. package/src/lib/design/system/go-batch.js +0 -110
  567. package/src/lib/design/system/go-batch.js.map +0 -1
  568. package/src/lib/design/system/go-command.d.ts +0 -4
  569. package/src/lib/design/system/go-command.js +0 -64
  570. package/src/lib/design/system/go-command.js.map +0 -1
  571. package/src/lib/design/system/go-guard.d.ts +0 -26
  572. package/src/lib/design/system/go-guard.js +0 -70
  573. package/src/lib/design/system/go-guard.js.map +0 -1
  574. package/src/lib/design/system/go-step.d.ts +0 -13
  575. package/src/lib/design/system/go-step.js +0 -84
  576. package/src/lib/design/system/go-step.js.map +0 -1
  577. package/src/lib/design/system/part-go.d.ts +0 -70
  578. package/src/lib/design/system/part-go.js +0 -94
  579. package/src/lib/design/system/part-go.js.map +0 -1
  580. package/src/lib/design/system/tom-confirm.d.ts +0 -40
  581. package/src/lib/design/system/tom-confirm.js +0 -55
  582. package/src/lib/design/system/tom-confirm.js.map +0 -1
@@ -9,10 +9,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.createThumbnailer = exports.callDrawsFrom = exports.send = exports.sendShot = exports.noteFailure = exports.createDrawQueue = exports.DRAWS_AT_ONCE = exports.heldAnimations = exports.finished = exports.awaitFonts = exports.awaitSettled = exports.settled = exports.openFrame = exports.DrawDroppedError = exports.assertServed = exports.FrameUnservedError = exports.ShotTimeoutError = exports.ShotFailedError = exports.ShotUnprocessableError = exports.ThumbMissingError = exports.ThumbUnavailableError = exports.DRAW_TIMEOUT_MS = exports.THUMB_PIXEL_WIDTH = exports.THUMB_PATH = void 0;
12
+ exports.createThumbnailer = exports.callDrawsFrom = exports.send = exports.sendShot = exports.SHOT_MAX_AGE_S = exports.noteFailure = exports.createDrawQueue = exports.closingOnAbort = exports.DRAWS_AT_ONCE = exports.heldAnimations = exports.finished = exports.awaitFonts = exports.awaitSettled = exports.settled = exports.openFrame = exports.DrawDroppedError = exports.assertServed = exports.FrameUnservedError = exports.ShotTimeoutError = exports.ShotFailedError = exports.ShotUnprocessableError = exports.ThumbMissingError = exports.ThumbUnavailableError = exports.DRAW_TIMEOUT_MS = exports.THUMB_PIXEL_WIDTH = exports.THUMB_PATH = void 0;
13
+ const rxjs_1 = require("rxjs");
14
+ const crypto_1 = require("crypto");
13
15
  const path_1 = require("path");
14
16
  const browser_1 = require("./browser");
17
+ const perf_hooks_1 = require("perf_hooks");
18
+ const phase_timing_1 = require("./phase-timing");
19
+ const run_abort_1 = require("./run-abort");
20
+ const timings_1 = require("./timings");
15
21
  const wait_1 = require("./wait");
22
+ const no_verdict_1 = require("./system/no-verdict");
16
23
  exports.THUMB_PATH = '/__design/thumb';
17
24
  /** The pixel width a thumbnail comes out at: twice the 180px tile Studio shows it in. */
18
25
  exports.THUMB_PIXEL_WIDTH = 360;
@@ -61,11 +68,13 @@ const frameWidthOf = (slug) => `(async (slug) => {
61
68
  return (await calls[slug]()).default.frameWidth ?? null;
62
69
  })(${JSON.stringify(slug)})`;
63
70
  /**
64
- * Opens a frame and waits until it drew its content or its error, then for its embedded frames. A frame that
65
- * draws nothing after one reload throws a `ShotTimeoutError` naming the URL.
71
+ * Opens a frame and waits until it drew its content or its error, then for its embedded frames. Each wait is
72
+ * `DRAW_TIMEOUT_MS` stretched by the machine load. A frame that draws nothing after one reload throws a
73
+ * `ShotTimeoutError` naming the URL.
66
74
  */
67
75
  const openFrame = (page, url) => __awaiter(void 0, void 0, void 0, function* () {
68
- const never = (what) => new ShotTimeoutError(`design-explore: ${url} did not ${what} within ${exports.DRAW_TIMEOUT_MS} ms`);
76
+ const timeout = (0, no_verdict_1.loadScaledMs)(exports.DRAW_TIMEOUT_MS);
77
+ const never = (what) => new ShotTimeoutError(`design-explore: ${url} did not ${what} within ${timeout} ms`);
69
78
  const drawn = () => __awaiter(void 0, void 0, void 0, function* () {
70
79
  (0, exports.assertServed)(yield page.goto(url, { waitUntil: 'domcontentloaded' }), url);
71
80
  // Headless Chromium's pointer starts at 0,0 on a new page and draws a real :hover on whatever fills the
@@ -74,7 +83,7 @@ const openFrame = (page, url) => __awaiter(void 0, void 0, void 0, function* ()
74
83
  return page
75
84
  .locator('#root > :not(style)')
76
85
  .first()
77
- .waitFor({ state: 'attached', timeout: exports.DRAW_TIMEOUT_MS })
86
+ .waitFor({ state: 'attached', timeout })
78
87
  .then(() => true, () => __awaiter(void 0, void 0, void 0, function* () { return (yield page.locator('vite-error-overlay').count()) > 0; }));
79
88
  });
80
89
  if (!(yield drawn()) && !(yield drawn()))
@@ -82,7 +91,7 @@ const openFrame = (page, url) => __awaiter(void 0, void 0, void 0, function* ()
82
91
  yield page
83
92
  .locator('iframe[data-et-embed]:not([data-et-embed-drawn])')
84
93
  .first()
85
- .waitFor({ state: 'detached', timeout: exports.DRAW_TIMEOUT_MS })
94
+ .waitFor({ state: 'detached', timeout })
86
95
  .catch(() => {
87
96
  throw never('draw its embedded frames');
88
97
  });
@@ -124,6 +133,29 @@ exports.DRAWS_AT_ONCE = 8;
124
133
  * A drawing every ask withdrew before it started is dropped. A failed launch is not kept, so the next ask
125
134
  * tries again.
126
135
  */
136
+ /** `browser` with every context it opens closed when `signal` aborts, so a draw of an aborted run fails at once. */
137
+ const closingOnAbort = (browser, signal) => new Proxy(browser, {
138
+ get: (target, key) => {
139
+ const value = Reflect.get(target, key, target);
140
+ if (key !== 'newContext' || typeof value !== 'function') {
141
+ return typeof value === 'function' ? value.bind(target) : value;
142
+ }
143
+ return (...args) => __awaiter(void 0, void 0, void 0, function* () {
144
+ if (signal.aborted)
145
+ throw new run_abort_1.RunAbortedError();
146
+ const context = yield target.newContext(...args);
147
+ const close = () => void context.close().catch(() => undefined);
148
+ if (signal.aborted)
149
+ close();
150
+ else {
151
+ const aborting = (0, rxjs_1.fromEvent)(signal, 'abort').pipe((0, rxjs_1.take)(1), (0, rxjs_1.tap)(close)).subscribe();
152
+ context.once('close', () => aborting.unsubscribe());
153
+ }
154
+ return context;
155
+ });
156
+ },
157
+ });
158
+ exports.closingOnAbort = closingOnAbort;
127
159
  const createDrawQueue = (options) => {
128
160
  var _a;
129
161
  const { target, ledger } = options;
@@ -138,7 +170,7 @@ const createDrawQueue = (options) => {
138
170
  if (!resolved) {
139
171
  throw new ThumbUnavailableError('design-explore: no playwright or playwright-core resolves, so the server can not draw thumbnails');
140
172
  }
141
- return resolved.chromium.launch({ args: DRAW_BROWSER_ARGS }).catch((error) => {
173
+ return (0, phase_timing_1.timedPhase)('browser-start', () => resolved.chromium.launch({ args: DRAW_BROWSER_ARGS })).catch((error) => {
142
174
  throw new ThumbUnavailableError(`design-explore: the Chromium of ${resolved.from} did not start\n${error instanceof Error ? error.message : String(error)}`);
143
175
  });
144
176
  }));
@@ -146,8 +178,12 @@ const createDrawQueue = (options) => {
146
178
  return browser;
147
179
  };
148
180
  const laneOf = (want) => {
181
+ var _a;
149
182
  if (want.priority === 'high')
150
183
  return 0;
184
+ const shown = want.board && ((_a = options.board) === null || _a === void 0 ? void 0 : _a.laneOf(want.board));
185
+ if (shown)
186
+ return shown;
151
187
  if (typeof want.view === 'number' && want.view < shownView)
152
188
  return 4;
153
189
  return want.rank === 'active' ? 1 : want.rank === 'visible' ? 2 : 3;
@@ -197,6 +233,8 @@ const createDrawQueue = (options) => {
197
233
  return {
198
234
  run: (draw, want = 'high') => {
199
235
  const ticket = ledger === null || ledger === void 0 ? void 0 : ledger.ask();
236
+ const asked = perf_hooks_1.performance.now();
237
+ const signal = (0, run_abort_1.runSignal)();
200
238
  const entry = {
201
239
  job: () => Promise.resolve(),
202
240
  wants: new Set(),
@@ -205,8 +243,14 @@ const createDrawQueue = (options) => {
205
243
  const drawn = new Promise((resolve, reject) => {
206
244
  entry.job = () => {
207
245
  ticket === null || ticket === void 0 ? void 0 : ticket.start();
246
+ (0, timings_1.recordDrawWait)(perf_hooks_1.performance.now() - asked);
247
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
248
+ ticket === null || ticket === void 0 ? void 0 : ticket.end();
249
+ reject(new run_abort_1.RunAbortedError());
250
+ return Promise.resolve();
251
+ }
208
252
  return launch()
209
- .then(draw)
253
+ .then((open) => draw(signal ? (0, exports.closingOnAbort)(open, signal) : open))
210
254
  .then(resolve, reject)
211
255
  .finally(() => ticket === null || ticket === void 0 ? void 0 : ticket.end());
212
256
  };
@@ -251,7 +295,24 @@ const noteFailure = (shot, failed) => {
251
295
  return shot;
252
296
  };
253
297
  exports.noteFailure = noteFailure;
254
- const sendShot = (response, shot) => void shot.then((body) => (0, exports.send)(response, { status: 200, type: 'image/png', body }), (error) => {
298
+ exports.SHOT_MAX_AGE_S = 3600;
299
+ /**
300
+ * Answers with the PNG `shot` resolves to, tagged with its content hash; an ask whose `if-none-match` names that
301
+ * tag gets a 304. The asker keys the URL on the content it shows (Studio: session, epoch and revision), so the
302
+ * browser may keep a picture for `SHOT_MAX_AGE_S` and paint it again without asking.
303
+ */
304
+ const sendShot = (response, shot) => void shot.then((body) => {
305
+ var _a;
306
+ const tag = `"${(0, crypto_1.createHash)('sha1').update(body).digest('base64url')}"`;
307
+ response.setHeader('etag', tag);
308
+ response.setHeader('cache-control', `private, max-age=${exports.SHOT_MAX_AGE_S}`);
309
+ if (((_a = response.req) === null || _a === void 0 ? void 0 : _a.headers['if-none-match']) === tag) {
310
+ response.statusCode = 304;
311
+ response.end();
312
+ }
313
+ else
314
+ (0, exports.send)(response, { status: 200, type: 'image/png', body });
315
+ }, (error) => {
255
316
  const failure = failureOf(error);
256
317
  (0, exports.send)(response, error instanceof ShotFailedError
257
318
  ? { status: 500, type: 'image/png', body: error.png }
@@ -303,6 +364,7 @@ const createThumbnailer = (options) => {
303
364
  });
304
365
  const shotOf = (slug, search) => {
305
366
  const cached = cache.get(search);
367
+ (0, timings_1.recordCache)(cached !== undefined);
306
368
  if (cached)
307
369
  return cached.shot;
308
370
  const shot = drawQueue.run((browser) => draw(browser, { slug, search }));
@@ -1 +1 @@
1
- {"version":3,"file":"thumb.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/thumb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thumb.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/thumb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { TimingLine } from './timings';
2
+ export declare const TIMINGS_USAGE = "timings [--since <n>m|h|d] [--command <command>]";
3
+ export declare const sinceMsOf: (value: string) => number | null;
4
+ export declare const parseTimings: (text: string) => TimingLine[];
5
+ /**
6
+ * The timings report of `lines`. Each run shows its commit and load; a target verdict counts only the clean runs: not
7
+ * noisy, and at `head` (the checkout's short sha, `null` when unknown).
8
+ */
9
+ export declare const timingsReportOf: (options: {
10
+ lines: TimingLine[];
11
+ now: number;
12
+ sinceMs: number;
13
+ command?: string;
14
+ head?: string | null;
15
+ }) => string;
16
+ /** `et design timings`: reports the logged timings of the design runs of the checkout. */
17
+ export declare const designTimings: (options: {
18
+ target: string;
19
+ argv: string[];
20
+ invocation: string;
21
+ now?: number;
22
+ }) => 0 | 2;
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.designTimings = exports.timingsReportOf = exports.parseTimings = exports.sinceMsOf = exports.TIMINGS_USAGE = void 0;
4
+ const fs_1 = require("fs");
5
+ const child_process_1 = require("child_process");
6
+ const timings_1 = require("./timings");
7
+ exports.TIMINGS_USAGE = 'timings [--since <n>m|h|d] [--command <command>]';
8
+ const LISTED = 10;
9
+ const UNITS = { m: 60000, h: 3600000, d: 86400000 };
10
+ const sinceMsOf = (value) => {
11
+ var _a, _b;
12
+ const match = /^(\d+)([mhd])$/.exec(value);
13
+ return match ? Number(match[1]) * ((_b = UNITS[(_a = match[2]) !== null && _a !== void 0 ? _a : '']) !== null && _b !== void 0 ? _b : 0) : null;
14
+ };
15
+ exports.sinceMsOf = sinceMsOf;
16
+ const matchesCommand = (line, command) => (0, timings_1.labelOf)(line) === command || line.command === command || line.command.startsWith(`${command} `);
17
+ const secondsOf = (ms) => (ms < 1000 ? `${Math.round(ms)} ms` : `${(ms / 1000).toFixed(1)} s`);
18
+ const medianOf = (values) => {
19
+ var _a, _b, _c;
20
+ const sorted = [...values].sort((a, b) => a - b);
21
+ const middle = Math.floor(sorted.length / 2);
22
+ return sorted.length % 2 === 1 ? ((_a = sorted[middle]) !== null && _a !== void 0 ? _a : 0) : (((_b = sorted[middle - 1]) !== null && _b !== void 0 ? _b : 0) + ((_c = sorted[middle]) !== null && _c !== void 0 ? _c : 0)) / 2;
23
+ };
24
+ const runOf = (line, head) => [
25
+ line.start,
26
+ (0, timings_1.labelOf)(line),
27
+ ...line.parts,
28
+ secondsOf(line.totalMs),
29
+ line.unphasedMs === undefined ? '' : `(unphased ${secondsOf(line.unphasedMs)})`,
30
+ line.exit === 0 ? '' : `exit ${line.exit}`,
31
+ line.commit ? `@${line.commit.sha}${line.commit.dirty ? '+dirty' : ''}` : '',
32
+ line.load ? `load ${line.load.avg1.toFixed(1)}/${line.load.cores}` : '',
33
+ (0, timings_1.isStale)(line, head) ? 'STALE' : '',
34
+ (0, timings_1.isNoisy)(line) ? 'NOISY' : '',
35
+ (0, timings_1.isUnexplained)(line) ? 'UNEXPLAINED' : '',
36
+ line.nullHashes ? `NULL-HASHES ${line.nullHashes}` : '',
37
+ ]
38
+ .filter(Boolean)
39
+ .join(' ');
40
+ const padded = (rows) => {
41
+ var _a, _b;
42
+ const widths = (_b = (_a = rows[0]) === null || _a === void 0 ? void 0 : _a.map((_, column) => Math.max(...rows.map((row) => { var _a; return ((_a = row[column]) !== null && _a !== void 0 ? _a : '').length; })))) !== null && _b !== void 0 ? _b : [];
43
+ return rows.map((row) => ` ${row.map((cell, column) => { var _a; return cell.padEnd((_a = widths[column]) !== null && _a !== void 0 ? _a : 0); }).join(' ')}`.trimEnd());
44
+ };
45
+ const parseTimings = (text) => text.split('\n').flatMap((raw) => {
46
+ if (!raw.trim())
47
+ return [];
48
+ try {
49
+ const line = JSON.parse(raw);
50
+ return typeof line.command === 'string' && typeof line.totalMs === 'number' ? [line] : [];
51
+ }
52
+ catch (_a) {
53
+ return [];
54
+ }
55
+ });
56
+ exports.parseTimings = parseTimings;
57
+ /**
58
+ * The timings report of `lines`. Each run shows its commit and load; a target verdict counts only the clean runs: not
59
+ * noisy, and at `head` (the checkout's short sha, `null` when unknown).
60
+ */
61
+ const timingsReportOf = (options) => {
62
+ const { now, sinceMs, command, head = null } = options;
63
+ const isClean = (line) => !(0, timings_1.isNoisy)(line) && !(0, timings_1.isStale)(line, head);
64
+ const from = now - sinceMs;
65
+ const lines = options.lines.filter((line) => Date.parse(line.start) >= from && (command === undefined || matchesCommand(line, command)));
66
+ const header = `${lines.length} design runs since ${new Date(from).toISOString()}${command ? ` (${command})` : ''}`;
67
+ if (lines.length === 0)
68
+ return header;
69
+ const byLabel = new Map();
70
+ lines.forEach((line) => { var _a; return byLabel.set((0, timings_1.labelOf)(line), [...((_a = byLabel.get((0, timings_1.labelOf)(line))) !== null && _a !== void 0 ? _a : []), line]); });
71
+ const commands = [...byLabel.entries()]
72
+ .map(([label, runs]) => ({
73
+ label,
74
+ runs,
75
+ median: medianOf(runs.map((run) => run.totalMs)),
76
+ clean: runs.filter(isClean).map((run) => run.totalMs),
77
+ target: timings_1.TIMING_TARGETS[label],
78
+ }))
79
+ .sort((a, b) => b.median - a.median);
80
+ const over = lines.filter((line) => {
81
+ const target = timings_1.TIMING_TARGETS[(0, timings_1.labelOf)(line)];
82
+ return target !== undefined && line.totalMs > target;
83
+ });
84
+ const misses = over.filter(isClean).sort((a, b) => b.start.localeCompare(a.start));
85
+ const phases = new Map();
86
+ lines.forEach((line) => line.phases.forEach((phase) => { var _a; return phases.set(phase.name, [...((_a = phases.get(phase.name)) !== null && _a !== void 0 ? _a : []), phase.ms]); }));
87
+ const slowestPhases = [...phases.entries()]
88
+ .map(([name, values]) => ({ name, values, total: values.reduce((sum, ms) => sum + ms, 0) }))
89
+ .sort((a, b) => b.total - a.total)
90
+ .slice(0, LISTED);
91
+ const slowestRuns = [...lines].sort((a, b) => b.totalMs - a.totalMs).slice(0, LISTED);
92
+ const unexplained = lines.filter(timings_1.isUnexplained).sort((a, b) => b.start.localeCompare(a.start));
93
+ const unverified = lines.filter((line) => { var _a; return ((_a = line.nullHashes) !== null && _a !== void 0 ? _a : 0) > 0; }).sort((a, b) => b.start.localeCompare(a.start));
94
+ return [
95
+ header,
96
+ '',
97
+ 'median per command:',
98
+ ...padded([
99
+ ['command', 'runs', 'median', 'max', 'clean', 'clean median', 'target', ''],
100
+ ...commands.map(({ label, runs, median, clean, target }) => [
101
+ label,
102
+ String(runs.length),
103
+ secondsOf(median),
104
+ secondsOf(Math.max(...runs.map((run) => run.totalMs))),
105
+ String(clean.length),
106
+ clean.length === 0 ? '-' : secondsOf(medianOf(clean)),
107
+ target === undefined ? '-' : secondsOf(target),
108
+ target === undefined ? '' : clean.length === 0 ? 'no clean run' : medianOf(clean) <= target ? 'ok' : 'MISS',
109
+ ]),
110
+ ]),
111
+ '',
112
+ `clean runs over their target: ${misses.length}${over.length > misses.length ? ` (${over.length - misses.length} more stale or noisy, no verdict)` : ''}`,
113
+ ...misses.slice(0, LISTED).map((line) => {
114
+ var _a;
115
+ const costliest = (0, timings_1.costliestPhaseOf)(line);
116
+ const target = (_a = timings_1.TIMING_TARGETS[(0, timings_1.labelOf)(line)]) !== null && _a !== void 0 ? _a : 0;
117
+ return ` ${runOf(line, head)} > ${secondsOf(target)} - most expensive phase ${costliest ? `${costliest.name} ${secondsOf(costliest.ms)}` : 'none recorded'}`;
118
+ }),
119
+ ...(misses.length > LISTED ? [` and ${misses.length - LISTED} more`] : []),
120
+ '',
121
+ `runs with unexplained time (unphased over ${timings_1.UNEXPLAINED_SHARE * 100} % of the run): ${unexplained.length}`,
122
+ ...unexplained.slice(0, LISTED).map((line) => ` ${runOf(line, head)}`),
123
+ ...(unexplained.length > LISTED ? [` and ${unexplained.length - LISTED} more`] : []),
124
+ '',
125
+ `runs with null cache input hashes (unfetched, nothing verified): ${unverified.length}`,
126
+ ...unverified.slice(0, LISTED).map((line) => ` ${runOf(line, head)}`),
127
+ ...(unverified.length > LISTED ? [` and ${unverified.length - LISTED} more`] : []),
128
+ '',
129
+ 'slowest phases (total over all runs):',
130
+ ...padded([
131
+ ['phase', 'runs', 'total', 'median', 'max'],
132
+ ...slowestPhases.map(({ name, values, total }) => [
133
+ name,
134
+ String(values.length),
135
+ secondsOf(total),
136
+ secondsOf(medianOf(values)),
137
+ secondsOf(Math.max(...values)),
138
+ ]),
139
+ ]),
140
+ '',
141
+ 'slowest runs:',
142
+ ...slowestRuns.map((line) => ` ${runOf(line, head)}`),
143
+ ].join('\n');
144
+ };
145
+ exports.timingsReportOf = timingsReportOf;
146
+ const flagOf = (argv, flag) => {
147
+ const index = argv.indexOf(flag);
148
+ return index === -1 ? undefined : argv[index + 1];
149
+ };
150
+ const headOf = (checkout) => {
151
+ try {
152
+ return (0, child_process_1.execFileSync)('git', ['-C', checkout, 'rev-parse', '--short', 'HEAD'], { encoding: 'utf8' }).trim() || null;
153
+ }
154
+ catch (_a) {
155
+ return null;
156
+ }
157
+ };
158
+ /** `et design timings`: reports the logged timings of the design runs of the checkout. */
159
+ const designTimings = (options) => {
160
+ var _a;
161
+ const { target, argv, invocation, now = Date.now() } = options;
162
+ const since = (_a = flagOf(argv, '--since')) !== null && _a !== void 0 ? _a : '1d';
163
+ const sinceMs = (0, exports.sinceMsOf)(since);
164
+ const command = flagOf(argv, '--command');
165
+ if (sinceMs === null || (argv.includes('--command') && !command)) {
166
+ console.error(`usage: ${invocation} ${exports.TIMINGS_USAGE}`);
167
+ return 2;
168
+ }
169
+ const file = (0, timings_1.timingsFileOf)(target);
170
+ const lines = (0, fs_1.existsSync)(file) ? (0, exports.parseTimings)((0, fs_1.readFileSync)(file, 'utf8')) : [];
171
+ console.log((0, exports.timingsReportOf)({ lines, now, sinceMs, command, head: headOf(target) }));
172
+ return 0;
173
+ };
174
+ exports.designTimings = designTimings;
175
+ //# sourceMappingURL=timings-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timings-command.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/timings-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ export declare const TIMINGS_FILE = ".ethlete/design/.timings.jsonl";
2
+ export declare const BUILD_WAIT_PHASES: string[];
3
+ export declare const BROWSER_START_PHASES: string[];
4
+ export declare const SERVER_START_PHASES: string[];
5
+ export declare const QUEUE_WAIT_PHASES: string[];
6
+ export type TimingSession = {
7
+ claude: string | null;
8
+ tmux: string | null;
9
+ role: string | null;
10
+ };
11
+ /** `at` is when the phase started, in ms from the start of its run. */
12
+ export type TimingPhase = {
13
+ name: string;
14
+ ms: number;
15
+ at?: number;
16
+ };
17
+ /** The checkout commit a run measured, and whether its tracked files differed from it. */
18
+ export type TimingCommit = {
19
+ sha: string;
20
+ dirty: boolean;
21
+ };
22
+ /** The 1-minute load average when a run ended, and the physical cores it shared. */
23
+ export type TimingLoad = {
24
+ avg1: number;
25
+ cores: number;
26
+ };
27
+ export type TimingLine = {
28
+ command: string;
29
+ args: string[];
30
+ parts: string[];
31
+ session: TimingSession | null;
32
+ resident: boolean;
33
+ start: string;
34
+ totalMs: number;
35
+ exit: number;
36
+ phases: TimingPhase[];
37
+ queueWaitMs: number;
38
+ buildWaitMs: number;
39
+ browserStartMs: number;
40
+ serverStartMs: number;
41
+ cache: {
42
+ hits: number;
43
+ misses: number;
44
+ };
45
+ concurrentHeavy: number | null;
46
+ nullHashes?: number;
47
+ unphasedMs?: number;
48
+ commit?: TimingCommit | null;
49
+ load?: TimingLoad;
50
+ };
51
+ export declare const TIMING_TARGETS: Record<string, number>;
52
+ export declare const PAGE_SWITCH_COMMAND = "page-switch";
53
+ export declare const FIRST_PAGE_SWITCH_COMMAND = "page-switch (first)";
54
+ export declare const timingsFileOf: (target: string) => string;
55
+ /** The phases the run in progress has ended so far. */
56
+ export declare const phasesSoFar: () => readonly TimingPhase[];
57
+ export declare const recordPhase: (name: string, ms: number) => void;
58
+ export declare const recordCache: (hit: boolean) => void;
59
+ /** Records `count` cache inputs the run could not fetch, so their hash is null and they verify nothing. */
60
+ export declare const recordNullHashes: (count: number) => void;
61
+ /** Records how long one drawing waited in the draw queue; the run logs its longest wait. */
62
+ export declare const recordDrawWait: (ms: number) => undefined;
63
+ /** Records how many other heavy design runs read the lib build when this run started reading it. */
64
+ export declare const recordConcurrentHeavy: (count: number) => void;
65
+ /** Drops the line of the run in progress, for a run another process logs (the resident design process). */
66
+ export declare const skipRunTimings: () => void;
67
+ export declare const sessionOf: (env: NodeJS.ProcessEnv) => TimingSession | null;
68
+ export declare const commandOf: (argv: string[]) => string;
69
+ export declare const partsOf: (argv: string[]) => string[];
70
+ export declare const labelOf: (line: Pick<TimingLine, "command" | "parts" | "args">) => string;
71
+ /** The part of `totalMs` no recorded phase covers, or `null` when the phases carry no start. */
72
+ export declare const unphasedMsOf: (phases: TimingPhase[], totalMs: number) => number | null;
73
+ /** The phase that cost the most, the unphased time included as `unphased`. */
74
+ export declare const costliestPhaseOf: (line: Pick<TimingLine, "phases" | "unphasedMs">) => TimingPhase | null;
75
+ /** A run whose machine had more runnable work than cores, or did not log its load: its time is no verdict. */
76
+ export declare const UNEXPLAINED_SHARE = 0.1;
77
+ /** Whether more than a tenth of the run, and at least a second, ran outside every recorded phase. */
78
+ export declare const isUnexplained: (line: Pick<TimingLine, "totalMs" | "unphasedMs">) => boolean;
79
+ export declare const isNoisy: (line: Pick<TimingLine, "load">) => boolean;
80
+ /** A run that measured another commit than `head`, or logged none; with no `head` known nothing is stale. */
81
+ export declare const isStale: (line: Pick<TimingLine, "commit">, head: string | null) => boolean;
82
+ /** The line a run over its target prints at the end of its output, or `null` when it met its target or has none. */
83
+ export declare const overTargetLineOf: (line: TimingLine) => string | null;
84
+ /** The commit `checkout` is at (short sha) and whether its tracked files differ from it, or `null` outside git. */
85
+ export declare const checkoutCommitOf: (checkout: string) => Promise<TimingCommit | null>;
86
+ /**
87
+ * Runs one `et design` command and appends its timings as one JSON line to `file`, also when it fails or the process
88
+ * exits early. Writing never throws.
89
+ */
90
+ export declare const recordRun: (options: {
91
+ file: string;
92
+ argv: string[];
93
+ resident?: boolean;
94
+ env?: NodeJS.ProcessEnv;
95
+ write?: (file: string, text: string) => void;
96
+ commitOf?: (checkout: string) => Promise<TimingCommit | null>;
97
+ loadOf?: () => TimingLoad;
98
+ }, run: () => Promise<number>) => Promise<number>;
99
+ /**
100
+ * Appends one measured Studio page switch to `file`: `ms` runs from the click until every frame with a stored picture
101
+ * painted. A page `seen` before in the same Studio session is timed against its own target. Returns `null` when the
102
+ * line could not be written.
103
+ */
104
+ export declare const recordPageSwitch: (options: {
105
+ file: string;
106
+ from: string;
107
+ to: string;
108
+ seen: boolean;
109
+ ms: number;
110
+ painted: boolean;
111
+ start?: Date;
112
+ phases?: TimingPhase[];
113
+ env?: NodeJS.ProcessEnv;
114
+ write?: (file: string, text: string) => void;
115
+ commitOf?: (checkout: string) => Promise<TimingCommit | null>;
116
+ loadOf?: () => TimingLoad;
117
+ }) => Promise<TimingLine | null>;