@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
@@ -20,25 +20,32 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  return t;
21
21
  };
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.checkSystemRendered = exports.checkSystem = exports.staleSketchBasesOf = exports.ruleSummaryText = exports.summaryText = exports.partOfFile = exports.buildReadyInputsOf = exports.ruleProblemsOf = exports.checkRules = exports.ruleLinesOf = exports.warningProblemsOf = void 0;
23
+ exports.checkSystemRendered = exports.checkSystem = exports.staleSketchBasesOf = exports.ruleSummaryText = exports.summaryText = exports.buildReadyInputsOf = exports.ruleProblemsOf = exports.uncomparedLinesOf = exports.checkRules = exports.ruleLinesOf = exports.warningProblemsOf = void 0;
24
24
  const path_1 = require("path");
25
+ const base_issues_1 = require("./base-issues");
26
+ const design_hash_1 = require("./design-hash");
27
+ const reachable_files_1 = require("./reachable-files");
25
28
  const accepted_pictures_1 = require("./accepted-pictures");
26
29
  const imports_1 = require("./imports");
27
30
  const complete_1 = require("./complete");
28
31
  const embedded_actions_1 = require("./embedded-actions");
29
32
  const action_lost_1 = require("./action-lost");
33
+ const harness_map_1 = require("./harness-map");
34
+ const stale_cli_dist_1 = require("../stale-cli-dist");
30
35
  const capability_place_1 = require("./rules/capability-place");
31
36
  const action_undeclared_1 = require("./action-undeclared");
32
37
  const bespoke_controls_1 = require("./bespoke-controls");
33
38
  const dropped_props_1 = require("./dropped-props");
34
39
  const drawn_open_points_1 = require("./drawn-open-points");
35
40
  const open_points_1 = require("./open-points");
36
- const part_go_1 = require("./part-go");
37
41
  const part_task_1 = require("./part-task");
38
42
  const part_ready_1 = require("./part-ready");
39
- const part_build_ready_1 = require("./part-build-ready");
43
+ const check_record_1 = require("./check-record");
40
44
  const actions_command_1 = require("./actions-command");
45
+ const rule_baseline_1 = require("./rule-baseline");
46
+ const slow_checks_1 = require("./slow-checks");
41
47
  const stale_parts_1 = require("./stale-parts");
48
+ const rule_skips_1 = require("./rule-skips");
42
49
  const stale_dist_1 = require("./stale-dist");
43
50
  const read_open_points_1 = require("./read-open-points");
44
51
  const resolve_product_1 = require("./resolve-product");
@@ -46,6 +53,7 @@ const canonical_class_1 = require("./rules/canonical-class");
46
53
  const component_copy_1 = require("./rules/component-copy");
47
54
  const denied_class_1 = require("./rules/denied-class");
48
55
  const native_title_1 = require("./rules/native-title");
56
+ const command_text_1 = require("./rules/command-text");
49
57
  const render_check_1 = require("./render-check");
50
58
  const flow_1 = require("./rules/flow");
51
59
  const implements_1 = require("./rules/implements");
@@ -57,12 +65,15 @@ const kit_outside_pages_1 = require("./rules/kit-outside-pages");
57
65
  const inline_ui_in_page_1 = require("./rules/inline-ui-in-page");
58
66
  const inline_svg_1 = require("./rules/inline-svg");
59
67
  const top_level_await_1 = require("./rules/top-level-await");
68
+ const skips_1 = require("./rules/skips");
60
69
  const motion_1 = require("./rules/motion");
61
70
  const stale_comment_1 = require("./rules/stale-comment");
62
71
  const glued_interpolation_1 = require("./rules/glued-interpolation");
63
72
  const undefined_class_1 = require("./rules/undefined-class");
64
73
  const undefined_token_1 = require("./rules/undefined-token");
65
74
  const token_selectors_1 = require("./rules/token-selectors");
75
+ const sdk_attribute_value_1 = require("./rules/sdk-attribute-value");
76
+ const sdk_private_var_1 = require("./rules/sdk-private-var");
66
77
  const upward_dependency_1 = require("./rules/upward-dependency");
67
78
  const svg_asset_1 = require("./rules/svg-asset");
68
79
  const stale_replace_1 = require("./rules/stale-replace");
@@ -72,7 +83,9 @@ const utility_css_1 = require("./rules/utility-css");
72
83
  const orphan_endpoint_1 = require("./rules/orphan-endpoint");
73
84
  const sample_default_1 = require("./rules/sample-default");
74
85
  const unbound_input_1 = require("./rules/unbound-input");
86
+ const pending_state_1 = require("./rules/pending-state");
75
87
  const view_coverage_1 = require("./rules/view-coverage");
88
+ const design_coverage_1 = require("./rules/design-coverage");
76
89
  const widths_1 = require("./rules/widths");
77
90
  const check_sketches_1 = require("./sketch/check-sketches");
78
91
  const merged_parts_1 = require("./sketch/merged-parts");
@@ -80,7 +93,9 @@ const stale_base_1 = require("./sketch/stale-base");
80
93
  const sketch_1 = require("./sketch/sketch");
81
94
  const system_tsconfig_1 = require("./system-tsconfig");
82
95
  const invocation_1 = require("../../invocation");
96
+ const leftover_gate_files_1 = require("./leftover-gate-files");
83
97
  const uncommitted_decisions_1 = require("./uncommitted-decisions");
98
+ const phase_timing_1 = require("../phase-timing");
84
99
  const RULES = [
85
100
  imports_1.importProblemsOf,
86
101
  upward_dependency_1.upwardDependenciesOf,
@@ -90,6 +105,7 @@ const RULES = [
90
105
  motion_1.scriptedMotionOf,
91
106
  motion_1.badMotionsOf,
92
107
  motion_1.badUnreachableOf,
108
+ skips_1.badSkipsOf,
93
109
  motion_1.hardCodedMotionOf,
94
110
  stale_comment_1.staleCommentsOf,
95
111
  stale_comment_1.staleNotesOf,
@@ -108,11 +124,14 @@ const RULES = [
108
124
  undefined_class_1.undefinedClassesOf,
109
125
  denied_class_1.deniedClassesOf,
110
126
  native_title_1.nativeTitlesOf,
127
+ command_text_1.commandTextOf,
111
128
  utility_css_1.utilityCssOf,
112
129
  orphan_endpoint_1.orphanEndpointProblemsOf,
113
130
  sample_default_1.sampleDefaultProblemsOf,
114
131
  unbound_input_1.unboundInputProblemsOf,
115
132
  glued_interpolation_1.gluedInterpolationsOf,
133
+ sdk_attribute_value_1.sdkAttributeValuesOf,
134
+ sdk_private_var_1.sdkPrivateVarsOf,
116
135
  ];
117
136
  const warningProblemsOf = (product) => [
118
137
  ...(0, unused_shared_export_1.unusedSharedExportsOf)(product),
@@ -122,31 +141,83 @@ const warningProblemsOf = (product) => [
122
141
  ...(0, sample_default_1.sampleDefaultWarningsOf)(product),
123
142
  ...(0, unbound_input_1.unboundInputWarningsOf)(product),
124
143
  ...(0, inline_ui_in_page_1.inlineUiInPageWarningsOf)(product),
144
+ ...(0, pending_state_1.pendingStateWarningsOf)(product),
125
145
  ];
126
146
  exports.warningProblemsOf = warningProblemsOf;
127
147
  const ruleLinesOf = (target, product) => (0, exports.ruleProblemsOf)(product).map((problem) => lineOf(target, problem));
128
148
  exports.ruleLinesOf = ruleLinesOf;
129
- /** Runs only the static rules of `products` - no draw, no tsc - and prints each problem a product's own files hold; exits 1 on one. */
149
+ /**
150
+ * Runs only the static rules of `products` - no draw, no tsc - and prints each problem a product's own files hold
151
+ * that its rule baseline does not list, and each baselined hit; exits 1 on a problem. With `base`, it also flags each app file changed since `base` that moved since its part's implemented record.
152
+ * Prints one line per rule that did not run; under `CI` a rule skipped for a missing input, such as no `base`, fails.
153
+ */
130
154
  const checkRules = (options) => {
131
- var _a;
132
- const { target, config } = options;
155
+ var _a, _b;
156
+ const { target, config, base } = options;
157
+ const changed = base === undefined ? [] : (0, part_task_1.gitDiffFilesOf)({ root: target, range: base });
158
+ const invocation = (_a = options.invocation) !== null && _a !== void 0 ? _a : (0, invocation_1.repoInvocation)({ root: target, subcommand: 'design' });
159
+ const ci = (0, rule_skips_1.isCiEnv)();
133
160
  let failed = 0;
161
+ const failing = [];
134
162
  for (const name of options.products) {
135
- const entry = (_a = config.products) === null || _a === void 0 ? void 0 : _a[name];
163
+ const entry = (_b = config.products) === null || _b === void 0 ? void 0 : _b[name];
136
164
  if (!entry) {
137
165
  console.error(`NO PRODUCT "${name}" in config.json.`);
138
166
  failed++;
167
+ failing.push(name);
139
168
  continue;
140
169
  }
141
170
  const product = (0, resolve_product_1.resolveProduct)({ target, name, config: entry });
142
- const problems = (0, exports.ruleProblemsOf)(product).filter((problem) => !isInBasePart(product, problem.file));
171
+ const isStatic = (rule) => !(0, slow_checks_1.isSlowRule)(rule) && !render_check_1.BASELINED_RENDER_RULES.has(rule) && rule !== stale_parts_1.UNCOMPARED_RULE;
172
+ const { result: own, skips } = (0, rule_skips_1.collectingSkips)(() => (0, exports.ruleProblemsOf)(product).filter((problem) => !isInBasePart(product, problem.file)));
173
+ const baselined = (0, rule_baseline_1.ruleBaselineOf)({ product, problems: own, checked: isStatic });
174
+ const problems = [
175
+ ...baselined.problems.filter((problem) => !isInBasePart(product, problem.file)),
176
+ ...uncomparedOf({ product, changed, invocation }),
177
+ ];
178
+ const allSkips = [
179
+ ...skips,
180
+ ...(base === undefined
181
+ ? [{ rule: stale_parts_1.UNCOMPARED_RULE, product: name, kind: 'missing-input', reason: 'no --base given' }]
182
+ : []),
183
+ ];
184
+ const failingSkips = allSkips.filter((skip) => (0, rule_skips_1.isFailingSkip)(skip, ci));
185
+ [...baselined.lines, ...(0, rule_baseline_1.ruleBaselineLinesOf)(product, (rule) => !isStatic(rule))].forEach((line) => console.log(line));
186
+ allSkips.filter((skip) => !(0, rule_skips_1.isFailingSkip)(skip, ci)).forEach((skip) => console.log((0, rule_skips_1.skipLineOf)(skip, ci)));
143
187
  problems.forEach((problem) => console.error(lineOf(target, problem)));
144
- failed += problems.length;
188
+ failingSkips.forEach((skip) => console.error((0, rule_skips_1.skipLineOf)(skip, ci)));
189
+ failed += problems.length + failingSkips.length;
190
+ if (problems.length + failingSkips.length > 0)
191
+ failing.push(name);
145
192
  }
146
- console.log(failed === 0 ? 'No static design rule finds a problem.' : `${failed} problem(s).`);
193
+ console.log(failed === 0 ? 'No static design rule finds a problem.' : `${failed} problem(s) in ${failing.join(', ')}.`);
147
194
  return failed === 0 ? 0 : 1;
148
195
  };
149
196
  exports.checkRules = checkRules;
197
+ const uncomparedOf = (options) => (options.changed.length > 0 ? (0, stale_parts_1.uncomparedAppProblemsOf)(options) : []).filter((problem) => !isInBasePart(options.product, problem.file));
198
+ /**
199
+ * The IMPLEMENTATION-UNCOMPARED lines `check --rules --base` prints for `products`, limited to the files in `changed`,
200
+ * without the other rules, and the uncompared parts they name.
201
+ */
202
+ const uncomparedLinesOf = (options) => {
203
+ var _a;
204
+ const { target, config, changed } = options;
205
+ const invocation = (_a = options.invocation) !== null && _a !== void 0 ? _a : (0, invocation_1.repoInvocation)({ root: target, subcommand: 'design' });
206
+ const files = new Set(changed.map((file) => (0, path_1.resolve)(target, file)));
207
+ return options.products.flatMap((name) => {
208
+ var _a;
209
+ const entry = (_a = config.products) === null || _a === void 0 ? void 0 : _a[name];
210
+ if (!entry)
211
+ return [];
212
+ const product = (0, resolve_product_1.resolveProduct)({ target, name, config: entry });
213
+ const problems = uncomparedOf({ product, changed, invocation, onlyChanged: true }).filter((problem) => files.has((0, path_1.resolve)(target, problem.file)));
214
+ const parts = [...new Set(problems.flatMap((problem) => (problem.part ? [problem.part] : [])))].sort();
215
+ return problems.length > 0
216
+ ? [{ product: name, lines: problems.map((problem) => lineOf(target, problem)), parts }]
217
+ : [];
218
+ });
219
+ };
220
+ exports.uncomparedLinesOf = uncomparedLinesOf;
150
221
  /** Every problem the rules find in a resolved product, its resolution problems first. */
151
222
  const ruleProblemsOf = (product) => [
152
223
  ...product.problems,
@@ -158,7 +229,7 @@ const buildReadyInputsOf = (product, points = (0, read_open_points_1.readOpenPoi
158
229
  const problems = (0, exports.ruleProblemsOf)(product);
159
230
  return {
160
231
  pointsOf: (part) => (0, read_open_points_1.partPointsOf)(points, part),
161
- problemsOf: (part) => problems.filter((problem) => (0, exports.partOfFile)(product, problem.file) === part),
232
+ problemsOf: (part) => problems.filter((problem) => (0, resolve_product_1.partOfFile)(product, problem.file) === part),
162
233
  };
163
234
  };
164
235
  exports.buildReadyInputsOf = buildReadyInputsOf;
@@ -170,21 +241,12 @@ const withTalliedProblems = (inputs, tally) => (Object.assign(Object.assign({},
170
241
  return [...own, ...tallied.map((rule) => ({ rule, file: '', message: 'found by design check' }))];
171
242
  } }));
172
243
  const lineOf = (target, problem) => `${problem.rule} ${(0, path_1.relative)(target, problem.file)}: ${problem.message}`;
173
- const PRODUCT_LEVEL = '(product)';
244
+ const PRODUCT_LEVEL = resolve_product_1.PRODUCT_PART_KEY;
174
245
  const APP_CODE = 'app code:';
175
- /** The key of the part whose folder holds `file`, the innermost one, or `(product)` for a file outside every part. */
176
- const partOfFile = (product, file) => {
177
- var _a, _b;
178
- return (_b = (_a = product.parts
179
- .map((part) => ({ key: (0, resolve_product_1.partKeyOf)(part), dir: (0, path_1.dirname)(part.file) }))
180
- .filter(({ dir }) => !(0, path_1.relative)(dir, file).startsWith('..'))
181
- .sort((a, b) => b.dir.length - a.dir.length)[0]) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : PRODUCT_LEVEL;
182
- };
183
- exports.partOfFile = partOfFile;
184
246
  /** The tally key of `file`: its part, `(product)` for a design file outside every part, or `app code:<file>` for app code. */
185
247
  const tallyKeyOf = (target, { product, file }) => {
186
248
  var _a;
187
- const part = (0, exports.partOfFile)(product, file);
249
+ const part = (0, resolve_product_1.partOfFile)(product, file);
188
250
  const inDesign = [product.dir, (_a = product.base) === null || _a === void 0 ? void 0 : _a.dir].some((dir) => dir && !(0, path_1.relative)(dir, file).startsWith('..'));
189
251
  return part !== PRODUCT_LEVEL || inDesign ? part : `${APP_CODE}${(0, path_1.relative)(target, file) || '.'}`;
190
252
  };
@@ -339,9 +401,12 @@ const reportSystem = (options) => {
339
401
  const uncommitted = options.warn ? (0, uncommitted_decisions_1.uncommittedDecisionsWarningOf)(product) : null;
340
402
  if (uncommitted)
341
403
  console.warn(uncommitted);
404
+ const leftover = options.warn ? (0, leftover_gate_files_1.leftoverGateFilesWarningOf)(product) : null;
405
+ if (leftover)
406
+ console.warn(leftover);
342
407
  if (!options.part)
343
408
  (0, stale_comment_1.goneSketchCommentWarningsOf)(product).forEach((warning) => console.warn(warning));
344
- const isWanted = (problem) => !options.part || (0, exports.partOfFile)(product, problem.file) === options.part;
409
+ const isWanted = (problem) => !options.part || (0, resolve_product_1.partOfFile)(product, problem.file) === options.part;
345
410
  const isOwn = (problem) => !isInBasePart(product, problem.file) && isWanted(problem);
346
411
  const warnings = (0, exports.warningProblemsOf)(product);
347
412
  const problems = (0, exports.ruleProblemsOf)(product);
@@ -401,7 +466,7 @@ const drawnFindingsFor = (options) => __awaiter(void 0, void 0, void 0, function
401
466
  const stateful = (0, drawn_open_points_1.statefulPartsOf)(product, options.part ? [options.part] : null);
402
467
  let gaps = null;
403
468
  if (stateful.length > 0) {
404
- const checked = yield (0, complete_1.partsCompletenessOf)(Object.assign(Object.assign({}, options), { parts: stateful }));
469
+ const checked = yield (0, complete_1.partsCompletenessOf)(Object.assign(Object.assign({}, options), { parts: stateful, cached: true }));
405
470
  if ('unavailable' in checked) {
406
471
  console.log(`COMPLETE CHECK SKIPPED - ${checked.unavailable}`);
407
472
  countCannotDraw(Object.assign(Object.assign({}, options), { why: checked.unavailable }));
@@ -422,63 +487,75 @@ const drawnFindingsFor = (options) => __awaiter(void 0, void 0, void 0, function
422
487
  return findings;
423
488
  });
424
489
  const printOpenPoints = (options) => __awaiter(void 0, void 0, void 0, function* () {
425
- var _a, _b, _c, _d;
490
+ var _a;
426
491
  const { target, config, products, rendered } = options;
427
492
  for (const name of products) {
428
493
  const entry = (_a = config.products) === null || _a === void 0 ? void 0 : _a[name];
429
494
  if (!entry)
430
495
  continue;
431
496
  const product = (0, resolve_product_1.resolveProduct)({ target, name, config: entry });
432
- const findings = rendered === null ? {} : yield drawnFindingsFor(Object.assign(Object.assign({}, options), { product, rendered }));
433
- if (rendered === null && options.notDrawn)
434
- countCannotDraw(Object.assign(Object.assign({}, options), { product, why: options.notDrawn }));
435
- const allPoints = (0, read_open_points_1.readOpenPoints)(product, findings);
436
- const points = allPoints.filter(({ part }) => !options.part || part === options.part);
437
- for (const { part, points: ofPart } of points) {
438
- const counted = tallyOf(options.tally, { product: name, part });
439
- if (counted)
440
- counted.open += ofPart.length;
441
- }
442
- (0, open_points_1.openPointsText)(name, points).forEach((line) => console.log(line));
443
- if (!options.part)
444
- (0, view_coverage_1.uncoveredViewsText)(name, (0, view_coverage_1.uncoveredViewsOf)(product)).forEach((line) => console.log(line));
445
- const unlinked = (0, read_open_points_1.unlinkedPartsOf)(product).filter((part) => !options.part || part === options.part);
446
- if (unlinked.length > 0)
447
- console.log(`UNLINKED ${name}: ${unlinked.join(', ')}`);
448
- (0, read_open_points_1.instantLinesOf)(product, options.part
449
- ? [options.part]
450
- : product.parts.filter((part) => part.origin !== 'base').map((part) => (0, resolve_product_1.partKeyOf)(part))).forEach((line) => console.log(line));
451
- const upgraded = (0, stale_parts_1.upgradeLegacyMarksOf)({ product, only: options.part });
452
- if (upgraded.length > 0)
453
- console.log(`REHASHED ${name}: ${upgraded.map(({ part, marks }) => `${part} (${marks.join(', ')})`).join(', ')}`);
454
- yield (0, part_build_ready_1.recordBuildReady)(Object.assign({ product, parts: options.part
455
- ? [options.part]
456
- : product.parts.filter((part) => part.origin !== 'base').map((part) => (0, resolve_product_1.partKeyOf)(part)), inputs: withTalliedProblems((0, exports.buildReadyInputsOf)(product, allPoints), (_b = options.tally) === null || _b === void 0 ? void 0 : _b.get(name)) }, (rendered === null
497
+ const findings = rendered === null
457
498
  ? {}
458
- : { actionsOf: (part) => (0, actions_command_1.partActionFailuresOf)({ target, config, product, part }) })));
459
- const ready = (0, part_ready_1.readyPartsOf)(product).filter((key) => !options.part || key === options.part);
460
- if (ready.length > 0)
461
- console.log(`READY ${name}: ${ready.join(', ')}`);
462
- for (const part of ready) {
463
- const embedded = (0, part_ready_1.actionsRerunOf)({ product, part });
464
- if (embedded.length === 0)
465
- continue;
466
- console.log((0, embedded_actions_1.actionsRerunLineOf)({ product: name, part, embedded }));
467
- const counted = tallyOf(options.tally, { product: name, part });
468
- if (counted)
469
- counted.open += 1;
470
- }
471
- const go = (0, part_go_1.goPartsOf)(product).filter((key) => !options.part || key === options.part);
472
- if (go.length > 0)
473
- console.log(`GO ${name}: ${go.join(', ')}`);
474
- for (const part of go) {
475
- const review = (_d = (_c = (0, part_go_1.goMarkOf)({ product, part })) === null || _c === void 0 ? void 0 : _c.review) !== null && _d !== void 0 ? _d : [];
476
- if (review.length > 0)
477
- console.log((0, accepted_pictures_1.newStatesLineOf)({ product: name, part, states: review }));
478
- }
479
- (0, stale_parts_1.stalePartsOf)({ product, only: options.part }).forEach((stale) => console.log((0, stale_parts_1.staleLineOf)(name, stale)));
499
+ : yield (0, phase_timing_1.timedPhase)('completeness', () => drawnFindingsFor(Object.assign(Object.assign({}, options), { product, rendered })));
500
+ yield (0, phase_timing_1.timedPhase)('open-points', () => printProductOpenPoints(Object.assign(Object.assign({}, options), { product, findings })));
480
501
  }
481
502
  });
503
+ const printProductOpenPoints = (options) => __awaiter(void 0, void 0, void 0, function* () {
504
+ var _a;
505
+ const { target, config, rendered, product, findings } = options;
506
+ const name = product.name;
507
+ if (rendered === null && options.notDrawn)
508
+ countCannotDraw(Object.assign(Object.assign({}, options), { product, why: options.notDrawn }));
509
+ const allPoints = (0, read_open_points_1.readOpenPoints)(product, findings);
510
+ const points = allPoints.filter(({ part }) => !options.part || part === options.part);
511
+ for (const { part, points: ofPart } of points) {
512
+ const counted = tallyOf(options.tally, { product: name, part });
513
+ if (counted)
514
+ counted.open += ofPart.length;
515
+ }
516
+ (0, open_points_1.openPointsText)(name, points).forEach((line) => console.log(line));
517
+ if (!options.part)
518
+ (0, view_coverage_1.uncoveredViewsText)(name, (0, view_coverage_1.uncoveredViewsOf)(product)).forEach((line) => console.log(line));
519
+ const unlinked = (0, read_open_points_1.unlinkedPartsOf)(product).filter((part) => !options.part || part === options.part);
520
+ if (unlinked.length > 0)
521
+ console.log(`UNLINKED ${name}: ${unlinked.join(', ')}`);
522
+ (0, read_open_points_1.instantLinesOf)(product, options.part
523
+ ? [options.part]
524
+ : product.parts.filter((part) => part.origin !== 'base').map((part) => (0, resolve_product_1.partKeyOf)(part))).forEach((line) => console.log(line));
525
+ const upgraded = (0, stale_parts_1.upgradeLegacyMarksOf)({ product, only: options.part });
526
+ if (upgraded.length > 0)
527
+ console.log(`REHASHED ${name}: ${upgraded.map(({ part, marks }) => `${part} (${marks.join(', ')})`).join(', ')}`);
528
+ const recorded = yield (0, check_record_1.recordCheckedBuildReady)(Object.assign(Object.assign({ target,
529
+ config, settle: options.part && rendered !== null ? [options.part] : [], product, parts: options.part
530
+ ? [options.part]
531
+ : product.parts.filter((part) => part.origin !== 'base').map((part) => (0, resolve_product_1.partKeyOf)(part)), inputs: withTalliedProblems((0, exports.buildReadyInputsOf)(product, allPoints), (_a = options.tally) === null || _a === void 0 ? void 0 : _a.get(name)) }, (rendered === null
532
+ ? {}
533
+ : {
534
+ actionsOf: (part) => (0, actions_command_1.partActionFailuresOf)(Object.assign({ target, config, product, part }, (options.part ? { onNote: console.log } : {}))),
535
+ declaredActionsOf: (part) => __awaiter(void 0, void 0, void 0, function* () {
536
+ const declared = yield (0, action_lost_1.declaredPartActionsOf)({ target, config, product, part, warm: options.warm });
537
+ if (typeof declared === 'string')
538
+ console.log(`ACTIONS NOT RECORDED ${name} ${part}: ${declared}`);
539
+ return declared;
540
+ }),
541
+ })), (options.part ? { onNoRecord: (line) => console.log(line) } : {})));
542
+ const waiting = [...recorded.values()].filter((result) => !result.ready && result.blockers.some((blocker) => blocker.kind === 'pending')).length;
543
+ if (waiting > 0)
544
+ console.log((0, check_record_1.slowWaitingLineOf)({ product: name, count: waiting }));
545
+ const ready = (0, part_ready_1.readyPartsOf)(product).filter((key) => !options.part || key === options.part);
546
+ if (ready.length > 0)
547
+ console.log(`READY ${name}: ${ready.join(', ')}`);
548
+ for (const part of ready) {
549
+ const embedded = (0, part_ready_1.actionsRerunOf)({ product, part });
550
+ if (embedded.length === 0)
551
+ continue;
552
+ console.log((0, embedded_actions_1.actionsRerunLineOf)({ product: name, part, embedded }));
553
+ const counted = tallyOf(options.tally, { product: name, part });
554
+ if (counted)
555
+ counted.open += 1;
556
+ }
557
+ (0, stale_parts_1.stalePartsOf)({ product, only: options.part }).forEach((stale) => console.log((0, stale_parts_1.staleLineOf)(name, stale)));
558
+ });
482
559
  const notCheckedLineOf = (options) => `NOT CHECKED ${options.product} render rules on ${options.parts} - ${options.why}`;
483
560
  const printUndrawn = (issues) => {
484
561
  for (const product of new Set(issues.map((issue) => issue.product))) {
@@ -498,11 +575,41 @@ const printUndrawn = (issues) => {
498
575
  states.forEach((state) => console.log(notCheckedLineOf({ product, parts: state, why: 'it did not draw, see RENDER above' })));
499
576
  }
500
577
  };
578
+ const RENDER_INPUTS_OUTSIDE_PARTS = ['libs/', 'package.json', 'yarn.lock'];
579
+ const oldIssuesOfRun = (options) => {
580
+ try {
581
+ return new Set(options.resolved.flatMap((product) => {
582
+ const root = (0, reachable_files_1.repoRootOf)(product);
583
+ const parts = product.parts
584
+ .filter((part) => part.origin !== 'base' && (!options.part || (0, resolve_product_1.partKeyOf)(part) === options.part))
585
+ .filter((part) => !options.undrawn.has((0, resolve_product_1.partKeyOf)(part)))
586
+ .map((part) => ({
587
+ part: (0, resolve_product_1.partKeyOf)(part),
588
+ inputs: [
589
+ ...Object.keys((0, design_hash_1.designHashOf)({ product, part }).files),
590
+ `${(0, path_1.relative)(root, (0, path_1.dirname)(part.file)).split(path_1.sep).join('/')}/`,
591
+ ...RENDER_INPUTS_OUTSIDE_PARTS,
592
+ ],
593
+ }));
594
+ return [
595
+ ...(0, base_issues_1.oldRenderIssuesOf)({
596
+ root,
597
+ file: (0, base_issues_1.baseIssuesFileOf)(product),
598
+ parts,
599
+ issues: options.issues.filter((issue) => issue.product === product.name),
600
+ }),
601
+ ];
602
+ }));
603
+ }
604
+ catch (_a) {
605
+ return new Set();
606
+ }
607
+ };
501
608
  const renderSystem = (options) => __awaiter(void 0, void 0, void 0, function* () {
502
- const { code, fatal } = reportSystem(Object.assign(Object.assign({}, options), { warn: true }));
609
+ const { code, fatal } = (0, phase_timing_1.timedPhase)('static', () => reportSystem(Object.assign(Object.assign({}, options), { warn: true })));
503
610
  if (fatal)
504
611
  return { code, rendered: null };
505
- const rendered = yield (0, render_check_1.renderIssuesOf)(Object.assign(Object.assign({}, options), { onProgress: (line) => console.log(line), jobs: options.products.map((product) => ({ product, sketch: null, parts: options.part ? [options.part] : null })) }));
612
+ const rendered = yield (0, phase_timing_1.timedPhase)('render-inspect', () => (0, render_check_1.renderIssuesOf)(Object.assign(Object.assign({}, options), { cached: true, onProgress: (line) => console.log(line), jobs: options.products.map((product) => ({ product, sketch: null, parts: options.part ? [options.part] : null })) })));
506
613
  const resolved = options.products.flatMap((name) => {
507
614
  var _a;
508
615
  const entry = (_a = options.config.products) === null || _a === void 0 ? void 0 : _a[name];
@@ -536,7 +643,37 @@ const renderSystem = (options) => __awaiter(void 0, void 0, void 0, function* ()
536
643
  return found !== undefined && (0, part_ready_1.readyMarkOf)({ product: found, part }) !== null;
537
644
  },
538
645
  });
539
- const { issues } = underGo;
646
+ const baselined = resolved.map((product) => {
647
+ const own = underGo.issues.filter((issue) => issue.product === product.name && render_check_1.BASELINED_RENDER_RULES.has(issue.rule));
648
+ const undrawn = new Set(underGo.issues
649
+ .filter((issue) => issue.product === product.name && ((0, drawn_open_points_1.isPartUndrawn)(issue) || (0, drawn_open_points_1.isStateUndrawn)(issue)))
650
+ .map((issue) => issue.part));
651
+ const problemOf = new Map(own.map((issue) => [(0, rule_baseline_1.renderProblemOf)(product, issue), issue]));
652
+ const result = (0, rule_baseline_1.ruleBaselineOf)({
653
+ product,
654
+ problems: [...problemOf.keys()],
655
+ checked: (rule, part) => render_check_1.BASELINED_RENDER_RULES.has(rule) && !undrawn.has(part) && (!options.part || part === options.part),
656
+ });
657
+ return {
658
+ product,
659
+ own,
660
+ lines: result.lines,
661
+ failing: result.problems.flatMap((problem) => { var _a; return (_a = problemOf.get(problem)) !== null && _a !== void 0 ? _a : []; }),
662
+ problems: result.problems.filter((problem) => !problemOf.has(problem)),
663
+ };
664
+ });
665
+ const passed = new Set(baselined.flatMap(({ own, failing }) => own.filter((issue) => !failing.includes(issue))));
666
+ const issues = underGo.issues.filter((issue) => !passed.has(issue));
667
+ const baselineProblems = baselined.flatMap(({ product, problems }) => problems.map((problem) => ({ product, problem })));
668
+ baselined.forEach(({ lines }) => lines.forEach((line) => console.log(line)));
669
+ baselineProblems.forEach(({ product, problem }) => {
670
+ var _a;
671
+ console.error(lineOf(options.target, problem));
672
+ (_a = tallyOf(options.tally, {
673
+ product: product.name,
674
+ part: tallyKeyOf(options.target, { product, file: problem.file }),
675
+ })) === null || _a === void 0 ? void 0 : _a.problems.push(problem.rule);
676
+ });
540
677
  underGo.warnings.forEach(({ product, part, line }) => {
541
678
  console.warn(line);
542
679
  const counted = tallyOf(options.tally, { product, part });
@@ -551,16 +688,62 @@ const renderSystem = (options) => __awaiter(void 0, void 0, void 0, function* ()
551
688
  if (counted)
552
689
  counted.warnings += 1;
553
690
  });
691
+ const old = oldIssuesOfRun({
692
+ resolved,
693
+ part: options.part,
694
+ issues: rendered.issues.filter((issue) => !isInBase(issue)),
695
+ undrawn: new Set(issues.filter(drawn_open_points_1.isPartUndrawn).map((issue) => issue.part)),
696
+ });
554
697
  issues.forEach((issue) => {
555
698
  var _a;
556
- console.error((0, render_check_1.renderIssueLineOf)(issue));
699
+ console.error(old.has(issue) ? `OLD ${(0, render_check_1.renderIssueLineOf)(issue)}` : (0, render_check_1.renderIssueLineOf)(issue));
557
700
  (_a = tallyOf(options.tally, { product: issue.product, part: (0, render_check_1.ownerPartOf)(issue) })) === null || _a === void 0 ? void 0 : _a.problems.push(issue.rule);
558
701
  });
559
702
  printUndrawn(issues.filter((issue) => (0, drawn_open_points_1.isPartUndrawn)(issue) || (0, drawn_open_points_1.isStateUndrawn)(issue)));
560
703
  if (!options.part)
561
704
  for (const product of resolved)
562
705
  printBaseFindings(product, rendered.issues.filter((issue) => issue.product === product.name && isInBase(issue)).map((issue) => issue.rule));
563
- return { code: code !== 0 || issues.length > 0 ? 1 : 0, rendered: issues, busy: rendered.busy };
706
+ return {
707
+ code: code !== 0 || issues.length > 0 || baselineProblems.length > 0 ? 1 : 0,
708
+ rendered: issues,
709
+ busy: rendered.busy,
710
+ };
711
+ });
712
+ const checkProductTail = (options) => __awaiter(void 0, void 0, void 0, function* () {
713
+ var _a, _b;
714
+ const { tally, name, entry } = options;
715
+ const resolved = (0, resolve_product_1.resolveProduct)({ target: options.target, name, config: entry });
716
+ const capabilities = yield (0, capability_place_1.capabilityPlaceOf)(Object.assign(Object.assign({}, options), { product: resolved }));
717
+ const isWanted = (problem) => !options.part || (0, resolve_product_1.partOfFile)(resolved, problem.file) === options.part;
718
+ const coverage = yield (0, design_coverage_1.designCoverageOf)(Object.assign(Object.assign({}, options), { product: resolved }));
719
+ [...capabilities.warnings, ...coverage].filter(isWanted).forEach((warning) => {
720
+ console.warn(`WARNING ${lineOf(options.target, warning)}`);
721
+ const counted = tallyOf(tally, {
722
+ product: name,
723
+ part: tallyKeyOf(options.target, { product: resolved, file: warning.file }),
724
+ });
725
+ if (counted)
726
+ counted.warnings += 1;
727
+ });
728
+ const drawn = (0, rule_baseline_1.ruleBaselineOf)({
729
+ product: resolved,
730
+ problems: [
731
+ ...(yield (0, dropped_props_1.droppedPropProblemsOf)(Object.assign(Object.assign({}, options), { product: resolved }))),
732
+ ...(yield (0, bespoke_controls_1.bespokeControlProblemsOf)(Object.assign(Object.assign({}, options), { product: resolved }))),
733
+ ...(yield (0, action_lost_1.actionLostProblemsOf)(Object.assign(Object.assign({}, options), { product: resolved, invocation: (_a = options.invocation) !== null && _a !== void 0 ? _a : (0, invocation_1.repoInvocation)({ root: options.target, subcommand: 'design' }) }))),
734
+ ].filter(isWanted),
735
+ checked: (rule, part) => (0, slow_checks_1.isDrawRule)(rule) && (!options.part || part === options.part),
736
+ });
737
+ drawn.lines.forEach((line) => console.log(line));
738
+ const problems = [...drawn.problems, ...capabilities.errors, ...options.problemsOfEdits].filter(isWanted);
739
+ for (const problem of problems) {
740
+ console.error(lineOf(options.target, problem));
741
+ (_b = tallyOf(tally, {
742
+ product: name,
743
+ part: tallyKeyOf(options.target, { product: resolved, file: problem.file }),
744
+ })) === null || _b === void 0 ? void 0 : _b.problems.push(problem.rule);
745
+ }
746
+ return problems.length;
564
747
  });
565
748
  /**
566
749
  * Checks as `checkSystem` does, then draws every state in a headless browser and prints one line per
@@ -571,10 +754,10 @@ const renderSystem = (options) => __awaiter(void 0, void 0, void 0, function* ()
571
754
  * the exit code.
572
755
  */
573
756
  const checkSystemRendered = (options) => __awaiter(void 0, void 0, void 0, function* () {
574
- var _a, _b, _c, _d, _e, _f;
757
+ var _a, _b;
575
758
  const tally = new Map();
576
759
  const counted = Object.assign(Object.assign({}, options), { tally });
577
- for (const line of (0, stale_dist_1.staleDistWarningsOf)(options))
760
+ for (const line of (0, phase_timing_1.timedPhase)('stale-dist', () => (0, stale_dist_1.staleDistWarningsOf)(options)))
578
761
  console.warn(line);
579
762
  const editProblems = new Map();
580
763
  for (const name of options.products) {
@@ -582,8 +765,13 @@ const checkSystemRendered = (options) => __awaiter(void 0, void 0, void 0, funct
582
765
  if (!entry)
583
766
  continue;
584
767
  const product = (0, resolve_product_1.resolveProduct)({ target: options.target, name, config: entry });
768
+ const refreshed = (0, phase_timing_1.timedPhase)('harness-map', () => (0, harness_map_1.refreshHarnessMap)({ target: options.target, product }));
769
+ if (typeof refreshed === 'string')
770
+ console.log(`HARNESS MAP STALE ${name}: ${refreshed}`);
771
+ if (refreshed === true)
772
+ console.log(`REGENERATED ${name}: the stale harness map`);
585
773
  const problems = [];
586
- const lines = yield (0, accepted_pictures_1.autoAcceptOf)(Object.assign(Object.assign({}, options), { product, only: options.part, draw: options.drawPictures, problems }));
774
+ const lines = yield (0, phase_timing_1.timedPhase)('auto-accept', () => (0, accepted_pictures_1.autoAcceptOf)(Object.assign(Object.assign({}, options), { product, only: options.part, draw: options.drawPictures, problems })));
587
775
  editProblems.set(name, problems);
588
776
  lines.forEach((line) => console.log(line));
589
777
  }
@@ -595,49 +783,29 @@ const checkSystemRendered = (options) => __awaiter(void 0, void 0, void 0, funct
595
783
  const entry = (_b = options.config.products) === null || _b === void 0 ? void 0 : _b[name];
596
784
  if (!entry)
597
785
  continue;
598
- const resolved = (0, resolve_product_1.resolveProduct)({ target: options.target, name, config: entry });
599
- const capabilities = yield (0, capability_place_1.capabilityPlaceOf)(Object.assign(Object.assign({}, options), { product: resolved }));
600
- const isWanted = (problem) => !options.part || (0, exports.partOfFile)(resolved, problem.file) === options.part;
601
- capabilities.warnings.filter(isWanted).forEach((warning) => {
602
- console.warn(`WARNING ${lineOf(options.target, warning)}`);
603
- const counted = tallyOf(tally, {
604
- product: name,
605
- part: tallyKeyOf(options.target, { product: resolved, file: warning.file }),
606
- });
607
- if (counted)
608
- counted.warnings += 1;
609
- });
610
- const problems = [
611
- ...(yield (0, dropped_props_1.droppedPropProblemsOf)(Object.assign(Object.assign({}, options), { product: resolved }))),
612
- ...(yield (0, bespoke_controls_1.bespokeControlProblemsOf)(Object.assign(Object.assign({}, options), { product: resolved }))),
613
- ...(yield (0, action_lost_1.actionLostProblemsOf)(Object.assign(Object.assign({}, options), { product: resolved, invocation: (_c = options.invocation) !== null && _c !== void 0 ? _c : (0, invocation_1.repoInvocation)({ root: options.target, subcommand: 'design' }) }))),
614
- ...capabilities.errors,
615
- ...((_d = editProblems.get(name)) !== null && _d !== void 0 ? _d : []),
616
- ].filter(isWanted);
617
- for (const problem of problems) {
618
- console.error(lineOf(options.target, problem));
619
- (_e = tallyOf(tally, {
786
+ failed += yield (0, phase_timing_1.timedPhase)('tail', () => { var _a; return checkProductTail(Object.assign(Object.assign({}, options), { tally, name, entry, problemsOfEdits: (_a = editProblems.get(name)) !== null && _a !== void 0 ? _a : [] })); });
787
+ }
788
+ (0, phase_timing_1.timedPhase)('summary', () => {
789
+ var _a;
790
+ const staleCli = (0, stale_cli_dist_1.runningCliStaleWarning)();
791
+ if (staleCli)
792
+ console.log(staleCli);
793
+ for (const name of options.products) {
794
+ const entry = (_a = options.config.products) === null || _a === void 0 ? void 0 : _a[name];
795
+ if (!entry)
796
+ continue;
797
+ const resolved = (0, resolve_product_1.resolveProduct)({ target: options.target, name, config: entry });
798
+ const parts = resolved.parts.filter((part) => part.origin !== 'base').map(resolve_product_1.partKeyOf);
799
+ partsTotal += options.part ? parts.filter((key) => key === options.part).length : parts.length;
800
+ (0, exports.summaryText)({
620
801
  product: name,
621
- part: tallyKeyOf(options.target, { product: resolved, file: problem.file }),
622
- })) === null || _e === void 0 ? void 0 : _e.problems.push(problem.rule);
802
+ parts,
803
+ tally,
804
+ only: options.part,
805
+ done: (0, part_task_1.doneParts)({ product: resolved, parts }).length,
806
+ }).forEach((line) => console.log(line));
623
807
  }
624
- failed += problems.length;
625
- }
626
- for (const name of options.products) {
627
- const entry = (_f = options.config.products) === null || _f === void 0 ? void 0 : _f[name];
628
- if (!entry)
629
- continue;
630
- const resolved = (0, resolve_product_1.resolveProduct)({ target: options.target, name, config: entry });
631
- const parts = resolved.parts.filter((part) => part.origin !== 'base').map(resolve_product_1.partKeyOf);
632
- partsTotal += options.part ? parts.filter((key) => key === options.part).length : parts.length;
633
- (0, exports.summaryText)({
634
- product: name,
635
- parts,
636
- tally,
637
- only: options.part,
638
- done: (0, part_task_1.doneParts)({ product: resolved, parts }).length,
639
- }).forEach((line) => console.log(line));
640
- }
808
+ });
641
809
  const exit = code !== 0 || failed > 0 ? 1 : 0;
642
810
  if (exit === 0)
643
811
  console.log('ok');