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

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 (592) hide show
  1. package/CHANGELOG.md +417 -0
  2. package/build-info.json +1 -0
  3. package/design/define-call.ts +99 -31
  4. package/design/define-part.ts +50 -3
  5. package/design/icon-sheet.ts +1 -1
  6. package/design/interaction-rows.ts +13 -6
  7. package/design/logo-sheet.ts +52 -0
  8. package/design/mark-part.ts +51 -1
  9. package/design/motion-drive.ts +215 -0
  10. package/design/motion-runtime.ts +14 -2
  11. package/design/motion-tokens.ts +177 -0
  12. package/design/token-sheet.ts +1 -1
  13. package/design/web/frame-fill.ts +4 -0
  14. package/design/web/frame-fit.ts +7 -0
  15. package/design/web/frame-scheme.ts +44 -0
  16. package/design/web/frame-surfaces.ts +294 -0
  17. package/design/web/frame.ts +162 -43
  18. package/design/web/surface-interactive.css +42 -0
  19. package/design/with-action.ts +29 -0
  20. package/package.json +3 -1
  21. package/src/index.js +9 -1
  22. package/src/index.js.map +1 -1
  23. package/src/lib/design/asset-shot.js +2 -2
  24. package/src/lib/design/asset-shot.js.map +1 -1
  25. package/src/lib/design/build-watch.d.ts +26 -0
  26. package/src/lib/design/build-watch.js +138 -0
  27. package/src/lib/design/build-watch.js.map +1 -0
  28. package/src/lib/design/calls-tsconfig.d.ts +2 -0
  29. package/src/lib/design/calls-tsconfig.js +10 -3
  30. package/src/lib/design/calls-tsconfig.js.map +1 -1
  31. package/src/lib/design/check.d.ts +1 -0
  32. package/src/lib/design/check.js +195 -13
  33. package/src/lib/design/check.js.map +1 -1
  34. package/src/lib/design/commit-hunks.d.ts +22 -0
  35. package/src/lib/design/commit-hunks.js +173 -0
  36. package/src/lib/design/commit-hunks.js.map +1 -0
  37. package/src/lib/design/contact-sheet.d.ts +9 -0
  38. package/src/lib/design/contact-sheet.js +38 -4
  39. package/src/lib/design/contact-sheet.js.map +1 -1
  40. package/src/lib/design/design-command.d.ts +2 -0
  41. package/src/lib/design/design-command.js +183 -15
  42. package/src/lib/design/design-command.js.map +1 -1
  43. package/src/lib/design/draw-ledger.d.ts +36 -0
  44. package/src/lib/design/draw-ledger.js +52 -0
  45. package/src/lib/design/draw-ledger.js.map +1 -0
  46. package/src/lib/design/force-interactions.d.ts +1 -1
  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/inbox-command.js +9 -5
  50. package/src/lib/design/inbox-command.js.map +1 -1
  51. package/src/lib/design/mcp-command.d.ts +28 -3
  52. package/src/lib/design/mcp-command.js +134 -21
  53. package/src/lib/design/mcp-command.js.map +1 -1
  54. package/src/lib/design/merge-compare.d.ts +10 -2
  55. package/src/lib/design/merge-compare.js +63 -11
  56. package/src/lib/design/merge-compare.js.map +1 -1
  57. package/src/lib/design/motion-command.js +10 -16
  58. package/src/lib/design/motion-command.js.map +1 -1
  59. package/src/lib/design/motion-shot.js +3 -2
  60. package/src/lib/design/motion-shot.js.map +1 -1
  61. package/src/lib/design/new-call.js +19 -10
  62. package/src/lib/design/new-call.js.map +1 -1
  63. package/src/lib/design/part-marks.d.ts +3 -2
  64. package/src/lib/design/part-marks.js +13 -5
  65. package/src/lib/design/part-marks.js.map +1 -1
  66. package/src/lib/design/paths.d.ts +42 -0
  67. package/src/lib/design/paths.js +50 -1
  68. package/src/lib/design/paths.js.map +1 -1
  69. package/src/lib/design/product-command.d.ts +1 -1
  70. package/src/lib/design/product-command.js +12 -14
  71. package/src/lib/design/product-command.js.map +1 -1
  72. package/src/lib/design/ready-shots.d.ts +29 -3
  73. package/src/lib/design/ready-shots.js +105 -5
  74. package/src/lib/design/ready-shots.js.map +1 -1
  75. package/src/lib/design/render-packages.d.ts +9 -17
  76. package/src/lib/design/render-packages.js +25 -63
  77. package/src/lib/design/render-packages.js.map +1 -1
  78. package/src/lib/design/render-worker.js +2 -3
  79. package/src/lib/design/render-worker.js.map +1 -1
  80. package/src/lib/design/render.d.ts +2 -0
  81. package/src/lib/design/render.js +32 -7
  82. package/src/lib/design/render.js.map +1 -1
  83. package/src/lib/design/serve.d.ts +23 -3
  84. package/src/lib/design/serve.js +288 -35
  85. package/src/lib/design/serve.js.map +1 -1
  86. package/src/lib/design/server-identity.d.ts +36 -0
  87. package/src/lib/design/server-identity.js +68 -0
  88. package/src/lib/design/server-identity.js.map +1 -0
  89. package/src/lib/design/settle-frames.d.ts +4 -0
  90. package/src/lib/design/settle-frames.js +22 -0
  91. package/src/lib/design/settle-frames.js.map +1 -0
  92. package/src/lib/design/shot-command.d.ts +30 -6
  93. package/src/lib/design/shot-command.js +144 -56
  94. package/src/lib/design/shot-command.js.map +1 -1
  95. package/src/lib/design/shot-store.d.ts +24 -0
  96. package/src/lib/design/shot-store.js +120 -0
  97. package/src/lib/design/shot-store.js.map +1 -0
  98. package/src/lib/design/shot.d.ts +71 -1
  99. package/src/lib/design/shot.js +253 -40
  100. package/src/lib/design/shot.js.map +1 -1
  101. package/src/lib/design/sketch-command.d.ts +6 -1
  102. package/src/lib/design/sketch-command.js +452 -136
  103. package/src/lib/design/sketch-command.js.map +1 -1
  104. package/src/lib/design/ssr-shims.d.ts +2 -0
  105. package/src/lib/design/ssr-shims.js +12 -1
  106. package/src/lib/design/ssr-shims.js.map +1 -1
  107. package/src/lib/design/stale-cli-dist.d.ts +11 -0
  108. package/src/lib/design/stale-cli-dist.js +56 -0
  109. package/src/lib/design/stale-cli-dist.js.map +1 -0
  110. package/src/lib/design/stamp.d.ts +18 -1
  111. package/src/lib/design/stamp.js +53 -7
  112. package/src/lib/design/stamp.js.map +1 -1
  113. package/src/lib/design/started-by-studio.d.ts +1 -0
  114. package/src/lib/design/started-by-studio.js +6 -0
  115. package/src/lib/design/started-by-studio.js.map +1 -0
  116. package/src/lib/design/studio-api.d.ts +35 -4
  117. package/src/lib/design/studio-api.js +312 -41
  118. package/src/lib/design/studio-api.js.map +1 -1
  119. package/src/lib/design/system/accept-command.d.ts +39 -5
  120. package/src/lib/design/system/accept-command.js +109 -25
  121. package/src/lib/design/system/accept-command.js.map +1 -1
  122. package/src/lib/design/system/accepted-pictures.d.ts +83 -0
  123. package/src/lib/design/system/accepted-pictures.js +324 -0
  124. package/src/lib/design/system/accepted-pictures.js.map +1 -0
  125. package/src/lib/design/system/action-lost.d.ts +59 -0
  126. package/src/lib/design/system/action-lost.js +120 -0
  127. package/src/lib/design/system/action-lost.js.map +1 -0
  128. package/src/lib/design/system/action-press.d.ts +23 -0
  129. package/src/lib/design/system/action-press.js +76 -0
  130. package/src/lib/design/system/action-press.js.map +1 -0
  131. package/src/lib/design/system/action-undeclared.d.ts +34 -0
  132. package/src/lib/design/system/action-undeclared.js +81 -0
  133. package/src/lib/design/system/action-undeclared.js.map +1 -0
  134. package/src/lib/design/system/actions-command.d.ts +101 -0
  135. package/src/lib/design/system/actions-command.js +695 -0
  136. package/src/lib/design/system/actions-command.js.map +1 -0
  137. package/src/lib/design/system/actions.d.ts +158 -0
  138. package/src/lib/design/system/actions.js +295 -0
  139. package/src/lib/design/system/actions.js.map +1 -0
  140. package/src/lib/design/system/app-files.d.ts +10 -0
  141. package/src/lib/design/system/app-files.js +159 -0
  142. package/src/lib/design/system/app-files.js.map +1 -0
  143. package/src/lib/design/system/bespoke-controls.d.ts +30 -0
  144. package/src/lib/design/system/bespoke-controls.js +147 -0
  145. package/src/lib/design/system/bespoke-controls.js.map +1 -0
  146. package/src/lib/design/system/build-ready-contract.d.ts +27 -0
  147. package/src/lib/design/system/build-ready-contract.js +12 -0
  148. package/src/lib/design/system/build-ready-contract.js.map +1 -0
  149. package/src/lib/design/system/check-rules.d.ts +1 -0
  150. package/src/lib/design/system/check-rules.js +82 -0
  151. package/src/lib/design/system/check-rules.js.map +1 -0
  152. package/src/lib/design/system/check-system.d.ts +62 -3
  153. package/src/lib/design/system/check-system.js +527 -34
  154. package/src/lib/design/system/check-system.js.map +1 -1
  155. package/src/lib/design/system/colour.d.ts +4 -1
  156. package/src/lib/design/system/colour.js +54 -2
  157. package/src/lib/design/system/colour.js.map +1 -1
  158. package/src/lib/design/system/comments/comment.d.ts +4 -1
  159. package/src/lib/design/system/comments/comment.js +13 -4
  160. package/src/lib/design/system/comments/comment.js.map +1 -1
  161. package/src/lib/design/system/comments/inbox.js +2 -2
  162. package/src/lib/design/system/comments/inbox.js.map +1 -1
  163. package/src/lib/design/system/compare-command.d.ts +119 -0
  164. package/src/lib/design/system/compare-command.js +558 -0
  165. package/src/lib/design/system/compare-command.js.map +1 -0
  166. package/src/lib/design/system/complete-command.js +7 -3
  167. package/src/lib/design/system/complete-command.js.map +1 -1
  168. package/src/lib/design/system/complete.d.ts +99 -3
  169. package/src/lib/design/system/complete.js +358 -88
  170. package/src/lib/design/system/complete.js.map +1 -1
  171. package/src/lib/design/system/component-outputs.d.ts +20 -0
  172. package/src/lib/design/system/component-outputs.js +86 -0
  173. package/src/lib/design/system/component-outputs.js.map +1 -0
  174. package/src/lib/design/system/contrast-check.d.ts +6 -1
  175. package/src/lib/design/system/contrast-check.js +179 -13
  176. package/src/lib/design/system/contrast-check.js.map +1 -1
  177. package/src/lib/design/system/demo-backdrop.d.ts +11 -0
  178. package/src/lib/design/system/demo-backdrop.js +41 -0
  179. package/src/lib/design/system/demo-backdrop.js.map +1 -0
  180. package/src/lib/design/system/design-hash.d.ts +31 -0
  181. package/src/lib/design/system/design-hash.js +73 -0
  182. package/src/lib/design/system/design-hash.js.map +1 -0
  183. package/src/lib/design/system/disabled-interaction.d.ts +8 -0
  184. package/src/lib/design/system/disabled-interaction.js +37 -0
  185. package/src/lib/design/system/disabled-interaction.js.map +1 -0
  186. package/src/lib/design/system/dom-command.d.ts +36 -0
  187. package/src/lib/design/system/dom-command.js +175 -0
  188. package/src/lib/design/system/dom-command.js.map +1 -0
  189. package/src/lib/design/system/drawn-open-points.d.ts +38 -0
  190. package/src/lib/design/system/drawn-open-points.js +94 -0
  191. package/src/lib/design/system/drawn-open-points.js.map +1 -0
  192. package/src/lib/design/system/dropped-props.d.ts +25 -0
  193. package/src/lib/design/system/dropped-props.js +159 -0
  194. package/src/lib/design/system/dropped-props.js.map +1 -0
  195. package/src/lib/design/system/embedded-actions.d.ts +21 -0
  196. package/src/lib/design/system/embedded-actions.js +37 -0
  197. package/src/lib/design/system/embedded-actions.js.map +1 -0
  198. package/src/lib/design/system/exceptions.js +2 -1
  199. package/src/lib/design/system/exceptions.js.map +1 -1
  200. package/src/lib/design/system/flows/flow.js +2 -1
  201. package/src/lib/design/system/flows/flow.js.map +1 -1
  202. package/src/lib/design/system/frozen-animations.d.ts +13 -0
  203. package/src/lib/design/system/frozen-animations.js +51 -0
  204. package/src/lib/design/system/frozen-animations.js.map +1 -0
  205. package/src/lib/design/system/go-batch.d.ts +24 -0
  206. package/src/lib/design/system/go-batch.js +110 -0
  207. package/src/lib/design/system/go-batch.js.map +1 -0
  208. package/src/lib/design/system/go-command.d.ts +4 -0
  209. package/src/lib/design/system/go-command.js +64 -0
  210. package/src/lib/design/system/go-command.js.map +1 -0
  211. package/src/lib/design/system/go-guard.d.ts +26 -0
  212. package/src/lib/design/system/go-guard.js +70 -0
  213. package/src/lib/design/system/go-guard.js.map +1 -0
  214. package/src/lib/design/system/go-step.d.ts +13 -0
  215. package/src/lib/design/system/go-step.js +84 -0
  216. package/src/lib/design/system/go-step.js.map +1 -0
  217. package/src/lib/design/system/handoff.js +2 -1
  218. package/src/lib/design/system/handoff.js.map +1 -1
  219. package/src/lib/design/system/harness-build-cache.d.ts +35 -0
  220. package/src/lib/design/system/harness-build-cache.js +175 -0
  221. package/src/lib/design/system/harness-build-cache.js.map +1 -0
  222. package/src/lib/design/system/harness-command.d.ts +7 -0
  223. package/src/lib/design/system/harness-command.js +51 -0
  224. package/src/lib/design/system/harness-command.js.map +1 -0
  225. package/src/lib/design/system/harness-config.d.ts +9 -0
  226. package/src/lib/design/system/harness-config.js +65 -0
  227. package/src/lib/design/system/harness-config.js.map +1 -0
  228. package/src/lib/design/system/harness-map.d.ts +44 -0
  229. package/src/lib/design/system/harness-map.js +126 -0
  230. package/src/lib/design/system/harness-map.js.map +1 -0
  231. package/src/lib/design/system/harness-samples.d.ts +20 -0
  232. package/src/lib/design/system/harness-samples.js +92 -0
  233. package/src/lib/design/system/harness-samples.js.map +1 -0
  234. package/src/lib/design/system/harness-server.d.ts +40 -0
  235. package/src/lib/design/system/harness-server.js +296 -0
  236. package/src/lib/design/system/harness-server.js.map +1 -0
  237. package/src/lib/design/system/imports.js +14 -1
  238. package/src/lib/design/system/imports.js.map +1 -1
  239. package/src/lib/design/system/in-order-at-once.d.ts +6 -0
  240. package/src/lib/design/system/in-order-at-once.js +28 -0
  241. package/src/lib/design/system/in-order-at-once.js.map +1 -0
  242. package/src/lib/design/system/inventory-approval.js +2 -1
  243. package/src/lib/design/system/inventory-approval.js.map +1 -1
  244. package/src/lib/design/system/inventory.d.ts +13 -4
  245. package/src/lib/design/system/inventory.js +36 -7
  246. package/src/lib/design/system/inventory.js.map +1 -1
  247. package/src/lib/design/system/list-system.d.ts +8 -1
  248. package/src/lib/design/system/list-system.js +13 -3
  249. package/src/lib/design/system/list-system.js.map +1 -1
  250. package/src/lib/design/system/live-actions.d.ts +121 -0
  251. package/src/lib/design/system/live-actions.js +665 -0
  252. package/src/lib/design/system/live-actions.js.map +1 -0
  253. package/src/lib/design/system/live-compare.d.ts +136 -0
  254. package/src/lib/design/system/live-compare.js +441 -0
  255. package/src/lib/design/system/live-compare.js.map +1 -0
  256. package/src/lib/design/system/live-uncovered.d.ts +40 -0
  257. package/src/lib/design/system/live-uncovered.js +123 -0
  258. package/src/lib/design/system/live-uncovered.js.map +1 -0
  259. package/src/lib/design/system/nested-scroll.d.ts +7 -0
  260. package/src/lib/design/system/nested-scroll.js +25 -0
  261. package/src/lib/design/system/nested-scroll.js.map +1 -0
  262. package/src/lib/design/system/notes/note.js +2 -1
  263. package/src/lib/design/system/notes/note.js.map +1 -1
  264. package/src/lib/design/system/occluded.d.ts +13 -0
  265. package/src/lib/design/system/occluded.js +111 -0
  266. package/src/lib/design/system/occluded.js.map +1 -0
  267. package/src/lib/design/system/open-points.d.ts +119 -0
  268. package/src/lib/design/system/open-points.js +185 -0
  269. package/src/lib/design/system/open-points.js.map +1 -0
  270. package/src/lib/design/system/part-build-ready.d.ts +39 -0
  271. package/src/lib/design/system/part-build-ready.js +107 -0
  272. package/src/lib/design/system/part-build-ready.js.map +1 -0
  273. package/src/lib/design/system/part-command.js +2 -9
  274. package/src/lib/design/system/part-command.js.map +1 -1
  275. package/src/lib/design/system/part-compare.d.ts +123 -0
  276. package/src/lib/design/system/part-compare.js +396 -0
  277. package/src/lib/design/system/part-compare.js.map +1 -0
  278. package/src/lib/design/system/part-go.d.ts +70 -0
  279. package/src/lib/design/system/part-go.js +94 -0
  280. package/src/lib/design/system/part-go.js.map +1 -0
  281. package/src/lib/design/system/part-ready.d.ts +90 -0
  282. package/src/lib/design/system/part-ready.js +172 -0
  283. package/src/lib/design/system/part-ready.js.map +1 -0
  284. package/src/lib/design/system/part-task.d.ts +147 -0
  285. package/src/lib/design/system/part-task.js +285 -0
  286. package/src/lib/design/system/part-task.js.map +1 -0
  287. package/src/lib/design/system/pointer-focus.d.ts +81 -0
  288. package/src/lib/design/system/pointer-focus.js +152 -0
  289. package/src/lib/design/system/pointer-focus.js.map +1 -0
  290. package/src/lib/design/system/prettier.d.ts +10 -0
  291. package/src/lib/design/system/prettier.js +36 -0
  292. package/src/lib/design/system/prettier.js.map +1 -0
  293. package/src/lib/design/system/reach.d.ts +12 -0
  294. package/src/lib/design/system/reach.js +186 -0
  295. package/src/lib/design/system/reach.js.map +1 -0
  296. package/src/lib/design/system/reachable-controls.d.ts +6 -0
  297. package/src/lib/design/system/reachable-controls.js +19 -0
  298. package/src/lib/design/system/reachable-controls.js.map +1 -0
  299. package/src/lib/design/system/reachable-files.d.ts +14 -0
  300. package/src/lib/design/system/reachable-files.js +101 -0
  301. package/src/lib/design/system/reachable-files.js.map +1 -0
  302. package/src/lib/design/system/reached-state.d.ts +23 -0
  303. package/src/lib/design/system/reached-state.js +53 -0
  304. package/src/lib/design/system/reached-state.js.map +1 -0
  305. package/src/lib/design/system/read-open-points.d.ts +33 -0
  306. package/src/lib/design/system/read-open-points.js +110 -0
  307. package/src/lib/design/system/read-open-points.js.map +1 -0
  308. package/src/lib/design/system/ready-command.d.ts +11 -0
  309. package/src/lib/design/system/ready-command.js +82 -0
  310. package/src/lib/design/system/ready-command.js.map +1 -0
  311. package/src/lib/design/system/render-check.d.ts +52 -0
  312. package/src/lib/design/system/render-check.js +479 -60
  313. package/src/lib/design/system/render-check.js.map +1 -1
  314. package/src/lib/design/system/resolve-product.d.ts +2 -1
  315. package/src/lib/design/system/resolve-product.js +25 -3
  316. package/src/lib/design/system/resolve-product.js.map +1 -1
  317. package/src/lib/design/system/rules/app-spec.d.ts +30 -0
  318. package/src/lib/design/system/rules/app-spec.js +87 -0
  319. package/src/lib/design/system/rules/app-spec.js.map +1 -0
  320. package/src/lib/design/system/rules/canonical-class.d.ts +2 -0
  321. package/src/lib/design/system/rules/canonical-class.js +36 -110
  322. package/src/lib/design/system/rules/canonical-class.js.map +1 -1
  323. package/src/lib/design/system/rules/capability-place.d.ts +44 -0
  324. package/src/lib/design/system/rules/capability-place.js +116 -0
  325. package/src/lib/design/system/rules/capability-place.js.map +1 -0
  326. package/src/lib/design/system/rules/denied-class.d.ts +9 -0
  327. package/src/lib/design/system/rules/denied-class.js +121 -0
  328. package/src/lib/design/system/rules/denied-class.js.map +1 -0
  329. package/src/lib/design/system/rules/exemptions.d.ts +18 -0
  330. package/src/lib/design/system/rules/exemptions.js +18 -0
  331. package/src/lib/design/system/rules/exemptions.js.map +1 -0
  332. package/src/lib/design/system/rules/flow.js +1 -1
  333. package/src/lib/design/system/rules/flow.js.map +1 -1
  334. package/src/lib/design/system/rules/glued-interpolation.d.ts +8 -0
  335. package/src/lib/design/system/rules/glued-interpolation.js +61 -0
  336. package/src/lib/design/system/rules/glued-interpolation.js.map +1 -0
  337. package/src/lib/design/system/rules/hard-coded-colour.js +2 -1
  338. package/src/lib/design/system/rules/hard-coded-colour.js.map +1 -1
  339. package/src/lib/design/system/rules/implemented-components.d.ts +22 -0
  340. package/src/lib/design/system/rules/implemented-components.js +45 -0
  341. package/src/lib/design/system/rules/implemented-components.js.map +1 -0
  342. package/src/lib/design/system/rules/implements.d.ts +8 -0
  343. package/src/lib/design/system/rules/implements.js +48 -0
  344. package/src/lib/design/system/rules/implements.js.map +1 -0
  345. package/src/lib/design/system/rules/inline-svg.js +4 -1
  346. package/src/lib/design/system/rules/inline-svg.js.map +1 -1
  347. package/src/lib/design/system/rules/inline-ui-in-page-open.d.ts +13 -0
  348. package/src/lib/design/system/rules/inline-ui-in-page-open.js +5 -0
  349. package/src/lib/design/system/rules/inline-ui-in-page-open.js.map +1 -0
  350. package/src/lib/design/system/rules/inline-ui-in-page.d.ts +18 -0
  351. package/src/lib/design/system/rules/inline-ui-in-page.js +123 -0
  352. package/src/lib/design/system/rules/inline-ui-in-page.js.map +1 -0
  353. package/src/lib/design/system/rules/inline-ui.d.ts +16 -0
  354. package/src/lib/design/system/rules/inline-ui.js +100 -0
  355. package/src/lib/design/system/rules/inline-ui.js.map +1 -0
  356. package/src/lib/design/system/rules/motion.d.ts +2 -0
  357. package/src/lib/design/system/rules/motion.js +35 -2
  358. package/src/lib/design/system/rules/motion.js.map +1 -1
  359. package/src/lib/design/system/rules/native-title.d.ts +7 -0
  360. package/src/lib/design/system/rules/native-title.js +64 -0
  361. package/src/lib/design/system/rules/native-title.js.map +1 -0
  362. package/src/lib/design/system/rules/option-values.d.ts +15 -0
  363. package/src/lib/design/system/rules/option-values.js +145 -0
  364. package/src/lib/design/system/rules/option-values.js.map +1 -0
  365. package/src/lib/design/system/rules/orphan-endpoint-known.d.ts +12 -0
  366. package/src/lib/design/system/rules/orphan-endpoint-known.js +20 -0
  367. package/src/lib/design/system/rules/orphan-endpoint-known.js.map +1 -0
  368. package/src/lib/design/system/rules/orphan-endpoint.d.ts +23 -0
  369. package/src/lib/design/system/rules/orphan-endpoint.js +166 -0
  370. package/src/lib/design/system/rules/orphan-endpoint.js.map +1 -0
  371. package/src/lib/design/system/rules/part-rewrite.d.ts +13 -0
  372. package/src/lib/design/system/rules/part-rewrite.js +125 -0
  373. package/src/lib/design/system/rules/part-rewrite.js.map +1 -0
  374. package/src/lib/design/system/rules/sample-default-known.d.ts +5 -0
  375. package/src/lib/design/system/rules/sample-default-known.js +17 -0
  376. package/src/lib/design/system/rules/sample-default-known.js.map +1 -0
  377. package/src/lib/design/system/rules/sample-default.d.ts +22 -0
  378. package/src/lib/design/system/rules/sample-default.js +92 -0
  379. package/src/lib/design/system/rules/sample-default.js.map +1 -0
  380. package/src/lib/design/system/rules/stale-replace.js +45 -3
  381. package/src/lib/design/system/rules/stale-replace.js.map +1 -1
  382. package/src/lib/design/system/rules/state-in-component.d.ts +16 -0
  383. package/src/lib/design/system/rules/state-in-component.js +101 -0
  384. package/src/lib/design/system/rules/state-in-component.js.map +1 -0
  385. package/src/lib/design/system/rules/tailwind-classes.d.ts +51 -0
  386. package/src/lib/design/system/rules/tailwind-classes.js +232 -0
  387. package/src/lib/design/system/rules/tailwind-classes.js.map +1 -0
  388. package/src/lib/design/system/rules/top-level-await.d.ts +9 -0
  389. package/src/lib/design/system/rules/top-level-await.js +62 -0
  390. package/src/lib/design/system/rules/top-level-await.js.map +1 -0
  391. package/src/lib/design/system/rules/unbound-input-known.d.ts +5 -0
  392. package/src/lib/design/system/rules/unbound-input-known.js +47 -0
  393. package/src/lib/design/system/rules/unbound-input-known.js.map +1 -0
  394. package/src/lib/design/system/rules/unbound-input.d.ts +22 -0
  395. package/src/lib/design/system/rules/unbound-input.js +61 -0
  396. package/src/lib/design/system/rules/unbound-input.js.map +1 -0
  397. package/src/lib/design/system/rules/uncovered-region.d.ts +13 -0
  398. package/src/lib/design/system/rules/uncovered-region.js +36 -0
  399. package/src/lib/design/system/rules/uncovered-region.js.map +1 -0
  400. package/src/lib/design/system/rules/undefined-class.d.ts +9 -0
  401. package/src/lib/design/system/rules/undefined-class.js +32 -0
  402. package/src/lib/design/system/rules/undefined-class.js.map +1 -0
  403. package/src/lib/design/system/rules/undefined-token.d.ts +1 -1
  404. package/src/lib/design/system/rules/undefined-token.js +7 -61
  405. package/src/lib/design/system/rules/undefined-token.js.map +1 -1
  406. package/src/lib/design/system/rules/utility-css.d.ts +2 -1
  407. package/src/lib/design/system/rules/utility-css.js +29 -14
  408. package/src/lib/design/system/rules/utility-css.js.map +1 -1
  409. package/src/lib/design/system/rules/view-coverage.d.ts +8 -0
  410. package/src/lib/design/system/rules/view-coverage.js +51 -0
  411. package/src/lib/design/system/rules/view-coverage.js.map +1 -0
  412. package/src/lib/design/system/rules/visible-change.d.ts +20 -0
  413. package/src/lib/design/system/rules/visible-change.js +48 -0
  414. package/src/lib/design/system/rules/visible-change.js.map +1 -0
  415. package/src/lib/design/system/sdk-errors.d.ts +14 -0
  416. package/src/lib/design/system/sdk-errors.js +38 -0
  417. package/src/lib/design/system/sdk-errors.js.map +1 -0
  418. package/src/lib/design/system/see-through.d.ts +12 -0
  419. package/src/lib/design/system/see-through.js +112 -0
  420. package/src/lib/design/system/see-through.js.map +1 -0
  421. package/src/lib/design/system/settled-panes.d.ts +18 -0
  422. package/src/lib/design/system/settled-panes.js +70 -0
  423. package/src/lib/design/system/settled-panes.js.map +1 -0
  424. package/src/lib/design/system/sketch/after-merge.d.ts +11 -0
  425. package/src/lib/design/system/sketch/after-merge.js +51 -0
  426. package/src/lib/design/system/sketch/after-merge.js.map +1 -0
  427. package/src/lib/design/system/sketch/aktuell-placeholders.d.ts +30 -0
  428. package/src/lib/design/system/sketch/aktuell-placeholders.js +87 -0
  429. package/src/lib/design/system/sketch/aktuell-placeholders.js.map +1 -0
  430. package/src/lib/design/system/sketch/baseline.d.ts +29 -2
  431. package/src/lib/design/system/sketch/baseline.js +33 -9
  432. package/src/lib/design/system/sketch/baseline.js.map +1 -1
  433. package/src/lib/design/system/sketch/check-sketches.d.ts +11 -0
  434. package/src/lib/design/system/sketch/check-sketches.js +54 -6
  435. package/src/lib/design/system/sketch/check-sketches.js.map +1 -1
  436. package/src/lib/design/system/sketch/cli-args.d.ts +12 -2
  437. package/src/lib/design/system/sketch/cli-args.js +18 -3
  438. package/src/lib/design/system/sketch/cli-args.js.map +1 -1
  439. package/src/lib/design/system/sketch/edit-sketch.d.ts +21 -0
  440. package/src/lib/design/system/sketch/edit-sketch.js +117 -0
  441. package/src/lib/design/system/sketch/edit-sketch.js.map +1 -0
  442. package/src/lib/design/system/sketch/frame-budget.d.ts +24 -0
  443. package/src/lib/design/system/sketch/frame-budget.js +23 -0
  444. package/src/lib/design/system/sketch/frame-budget.js.map +1 -0
  445. package/src/lib/design/system/sketch/identical-renders.d.ts +31 -0
  446. package/src/lib/design/system/sketch/identical-renders.js +137 -0
  447. package/src/lib/design/system/sketch/identical-renders.js.map +1 -0
  448. package/src/lib/design/system/sketch/merge-shared.d.ts +2 -0
  449. package/src/lib/design/system/sketch/merge-shared.js +7 -10
  450. package/src/lib/design/system/sketch/merge-shared.js.map +1 -1
  451. package/src/lib/design/system/sketch/merge-step.d.ts +35 -0
  452. package/src/lib/design/system/sketch/merge-step.js +98 -0
  453. package/src/lib/design/system/sketch/merge-step.js.map +1 -0
  454. package/src/lib/design/system/sketch/merge.d.ts +10 -3
  455. package/src/lib/design/system/sketch/merge.js +122 -17
  456. package/src/lib/design/system/sketch/merge.js.map +1 -1
  457. package/src/lib/design/system/sketch/merged-layout.d.ts +17 -0
  458. package/src/lib/design/system/sketch/merged-layout.js +57 -0
  459. package/src/lib/design/system/sketch/merged-layout.js.map +1 -0
  460. package/src/lib/design/system/sketch/merged-parts.d.ts +41 -11
  461. package/src/lib/design/system/sketch/merged-parts.js +113 -50
  462. package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
  463. package/src/lib/design/system/sketch/no-visible-change.d.ts +10 -0
  464. package/src/lib/design/system/sketch/no-visible-change.js +16 -6
  465. package/src/lib/design/system/sketch/no-visible-change.js.map +1 -1
  466. package/src/lib/design/system/sketch/part-definition.d.ts +56 -0
  467. package/src/lib/design/system/sketch/part-definition.js +129 -13
  468. package/src/lib/design/system/sketch/part-definition.js.map +1 -1
  469. package/src/lib/design/system/sketch/rebase-port.d.ts +24 -0
  470. package/src/lib/design/system/sketch/rebase-port.js +170 -0
  471. package/src/lib/design/system/sketch/rebase-port.js.map +1 -0
  472. package/src/lib/design/system/sketch/sample-mark-drift.d.ts +33 -0
  473. package/src/lib/design/system/sketch/sample-mark-drift.js +88 -0
  474. package/src/lib/design/system/sketch/sample-mark-drift.js.map +1 -0
  475. package/src/lib/design/system/sketch/sketch-check-worker.d.ts +1 -0
  476. package/src/lib/design/system/sketch/sketch-check-worker.js +27 -0
  477. package/src/lib/design/system/sketch/sketch-check-worker.js.map +1 -0
  478. package/src/lib/design/system/sketch/sketch-checker.d.ts +27 -0
  479. package/src/lib/design/system/sketch/sketch-checker.js +99 -0
  480. package/src/lib/design/system/sketch/sketch-checker.js.map +1 -0
  481. package/src/lib/design/system/sketch/sketch.d.ts +78 -2
  482. package/src/lib/design/system/sketch/sketch.js +247 -54
  483. package/src/lib/design/system/sketch/sketch.js.map +1 -1
  484. package/src/lib/design/system/sketch/stale-base.d.ts +22 -0
  485. package/src/lib/design/system/sketch/stale-base.js +56 -0
  486. package/src/lib/design/system/sketch/stale-base.js.map +1 -0
  487. package/src/lib/design/system/sketch/unchanged-states.d.ts +36 -1
  488. package/src/lib/design/system/sketch/unchanged-states.js +60 -17
  489. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
  490. package/src/lib/design/system/sketch/unused-closure.js +26 -4
  491. package/src/lib/design/system/sketch/unused-closure.js.map +1 -1
  492. package/src/lib/design/system/sketch/unused-files.d.ts +1 -1
  493. package/src/lib/design/system/sketch/unused-files.js +6 -3
  494. package/src/lib/design/system/sketch/unused-files.js.map +1 -1
  495. package/src/lib/design/system/sketch/viewed-shots.d.ts +24 -0
  496. package/src/lib/design/system/sketch/viewed-shots.js +61 -0
  497. package/src/lib/design/system/sketch/viewed-shots.js.map +1 -0
  498. package/src/lib/design/system/slow-checks.d.ts +40 -0
  499. package/src/lib/design/system/slow-checks.js +197 -0
  500. package/src/lib/design/system/slow-checks.js.map +1 -0
  501. package/src/lib/design/system/slow-run.d.ts +57 -0
  502. package/src/lib/design/system/slow-run.js +253 -0
  503. package/src/lib/design/system/slow-run.js.map +1 -0
  504. package/src/lib/design/system/stale-design-mocks.d.ts +20 -0
  505. package/src/lib/design/system/stale-design-mocks.js +59 -0
  506. package/src/lib/design/system/stale-design-mocks.js.map +1 -0
  507. package/src/lib/design/system/stale-dist.d.ts +25 -0
  508. package/src/lib/design/system/stale-dist.js +91 -0
  509. package/src/lib/design/system/stale-dist.js.map +1 -0
  510. package/src/lib/design/system/stale-parts.d.ts +30 -0
  511. package/src/lib/design/system/stale-parts.js +106 -0
  512. package/src/lib/design/system/stale-parts.js.map +1 -0
  513. package/src/lib/design/system/surface-nesting.d.ts +11 -0
  514. package/src/lib/design/system/surface-nesting.js +86 -0
  515. package/src/lib/design/system/surface-nesting.js.map +1 -0
  516. package/src/lib/design/system/system-command.js +8 -6
  517. package/src/lib/design/system/system-command.js.map +1 -1
  518. package/src/lib/design/system/system-modules.d.ts +16 -1
  519. package/src/lib/design/system/system-modules.js +18 -2
  520. package/src/lib/design/system/system-modules.js.map +1 -1
  521. package/src/lib/design/system/system-tsconfig.js +2 -2
  522. package/src/lib/design/system/system-tsconfig.js.map +1 -1
  523. package/src/lib/design/system/task-command.d.ts +51 -0
  524. package/src/lib/design/system/task-command.js +233 -0
  525. package/src/lib/design/system/task-command.js.map +1 -0
  526. package/src/lib/design/system/theming-text.d.ts +2 -0
  527. package/src/lib/design/system/theming-text.js +6 -0
  528. package/src/lib/design/system/theming-text.js.map +1 -0
  529. package/src/lib/design/system/tom-confirm.d.ts +40 -0
  530. package/src/lib/design/system/tom-confirm.js +55 -0
  531. package/src/lib/design/system/tom-confirm.js.map +1 -0
  532. package/src/lib/design/system/touched-parts.d.ts +16 -0
  533. package/src/lib/design/system/touched-parts.js +122 -0
  534. package/src/lib/design/system/touched-parts.js.map +1 -0
  535. package/src/lib/design/system/ts-source.d.ts +5 -0
  536. package/src/lib/design/system/ts-source.js +35 -4
  537. package/src/lib/design/system/ts-source.js.map +1 -1
  538. package/src/lib/design/system/unchanged-rows.d.ts +15 -0
  539. package/src/lib/design/system/unchanged-rows.js +134 -0
  540. package/src/lib/design/system/unchanged-rows.js.map +1 -0
  541. package/src/lib/design/system/uncommitted-decisions.d.ts +6 -0
  542. package/src/lib/design/system/uncommitted-decisions.js +38 -0
  543. package/src/lib/design/system/uncommitted-decisions.js.map +1 -0
  544. package/src/lib/design/system/uncovered-regions.d.ts +61 -0
  545. package/src/lib/design/system/uncovered-regions.js +171 -0
  546. package/src/lib/design/system/uncovered-regions.js.map +1 -0
  547. package/src/lib/design/system/unused-base-parts.d.ts +7 -0
  548. package/src/lib/design/system/unused-base-parts.js +76 -0
  549. package/src/lib/design/system/unused-base-parts.js.map +1 -0
  550. package/src/lib/design/system/visible-change-command.d.ts +48 -0
  551. package/src/lib/design/system/visible-change-command.js +308 -0
  552. package/src/lib/design/system/visible-change-command.js.map +1 -0
  553. package/src/lib/design/system/visible-change-parts.d.ts +28 -0
  554. package/src/lib/design/system/visible-change-parts.js +96 -0
  555. package/src/lib/design/system/visible-change-parts.js.map +1 -0
  556. package/src/lib/design/system/visible-change.d.ts +82 -0
  557. package/src/lib/design/system/visible-change.js +149 -0
  558. package/src/lib/design/system/visible-change.js.map +1 -0
  559. package/src/lib/design/thumb.d.ts +50 -6
  560. package/src/lib/design/thumb.js +154 -54
  561. package/src/lib/design/thumb.js.map +1 -1
  562. package/src/lib/design/typecheck.d.ts +1 -1
  563. package/src/lib/design/typecheck.js +3 -3
  564. package/src/lib/design/typecheck.js.map +1 -1
  565. package/src/lib/design/unstable-cells.d.ts +23 -0
  566. package/src/lib/design/unstable-cells.js +40 -0
  567. package/src/lib/design/unstable-cells.js.map +1 -0
  568. package/src/lib/design/variant-diff.js +1 -1
  569. package/src/lib/design/variant-diff.js.map +1 -1
  570. package/src/lib/design/wait.d.ts +15 -0
  571. package/src/lib/design/wait.js +30 -0
  572. package/src/lib/design/wait.js.map +1 -0
  573. package/src/lib/json-file.d.ts +11 -0
  574. package/src/lib/json-file.js +21 -0
  575. package/src/lib/json-file.js.map +1 -0
  576. package/src/lib/source-hash.d.ts +7 -0
  577. package/src/lib/source-hash.js +62 -0
  578. package/src/lib/source-hash.js.map +1 -0
  579. package/src/lib/update/agent-setup.js +2 -1
  580. package/src/lib/update/agent-setup.js.map +1 -1
  581. package/src/lib/update/migration-manifest.d.ts +12 -0
  582. package/src/lib/update/migration-manifest.js +13 -0
  583. package/src/lib/update/migration-manifest.js.map +1 -1
  584. package/src/lib/update/migration-record.js +2 -1
  585. package/src/lib/update/migration-record.js.map +1 -1
  586. package/src/lib/update/pending.js +2 -1
  587. package/src/lib/update/pending.js.map +1 -1
  588. package/src/lib/update/run-migrations.d.ts +3 -2
  589. package/src/lib/update/run-migrations.js +38 -5
  590. package/src/lib/update/run-migrations.js.map +1 -1
  591. package/src/lib/update/tasks.js +2 -1
  592. package/src/lib/update/tasks.js.map +1 -1
@@ -8,33 +8,79 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __rest = (this && this.__rest) || function (s, e) {
12
+ var t = {};
13
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
+ t[p] = s[p];
15
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
+ t[p[i]] = s[p[i]];
19
+ }
20
+ return t;
21
+ };
11
22
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.checkSystemRendered = exports.checkSystem = exports.ruleProblemsOf = exports.ruleLinesOf = void 0;
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;
13
24
  const path_1 = require("path");
25
+ const accepted_pictures_1 = require("./accepted-pictures");
14
26
  const imports_1 = require("./imports");
27
+ const complete_1 = require("./complete");
28
+ const embedded_actions_1 = require("./embedded-actions");
29
+ const action_lost_1 = require("./action-lost");
30
+ const capability_place_1 = require("./rules/capability-place");
31
+ const action_undeclared_1 = require("./action-undeclared");
32
+ const bespoke_controls_1 = require("./bespoke-controls");
33
+ const dropped_props_1 = require("./dropped-props");
34
+ const drawn_open_points_1 = require("./drawn-open-points");
35
+ const open_points_1 = require("./open-points");
36
+ const part_go_1 = require("./part-go");
37
+ const part_task_1 = require("./part-task");
38
+ const part_ready_1 = require("./part-ready");
39
+ const part_build_ready_1 = require("./part-build-ready");
40
+ const actions_command_1 = require("./actions-command");
41
+ const stale_parts_1 = require("./stale-parts");
42
+ const stale_dist_1 = require("./stale-dist");
43
+ const read_open_points_1 = require("./read-open-points");
15
44
  const resolve_product_1 = require("./resolve-product");
16
45
  const canonical_class_1 = require("./rules/canonical-class");
17
46
  const component_copy_1 = require("./rules/component-copy");
47
+ const denied_class_1 = require("./rules/denied-class");
48
+ const native_title_1 = require("./rules/native-title");
18
49
  const render_check_1 = require("./render-check");
19
50
  const flow_1 = require("./rules/flow");
51
+ const implements_1 = require("./rules/implements");
52
+ const state_in_component_1 = require("./rules/state-in-component");
53
+ const part_rewrite_1 = require("./rules/part-rewrite");
20
54
  const hard_coded_colour_1 = require("./rules/hard-coded-colour");
21
55
  const interactions_1 = require("./rules/interactions");
22
56
  const kit_outside_pages_1 = require("./rules/kit-outside-pages");
57
+ const inline_ui_in_page_1 = require("./rules/inline-ui-in-page");
23
58
  const inline_svg_1 = require("./rules/inline-svg");
59
+ const top_level_await_1 = require("./rules/top-level-await");
24
60
  const motion_1 = require("./rules/motion");
25
61
  const stale_comment_1 = require("./rules/stale-comment");
62
+ const glued_interpolation_1 = require("./rules/glued-interpolation");
63
+ const undefined_class_1 = require("./rules/undefined-class");
26
64
  const undefined_token_1 = require("./rules/undefined-token");
27
65
  const token_selectors_1 = require("./rules/token-selectors");
28
66
  const upward_dependency_1 = require("./rules/upward-dependency");
29
67
  const svg_asset_1 = require("./rules/svg-asset");
30
68
  const stale_replace_1 = require("./rules/stale-replace");
69
+ const check_rules_1 = require("./check-rules");
31
70
  const unused_shared_export_1 = require("./rules/unused-shared-export");
32
71
  const utility_css_1 = require("./rules/utility-css");
72
+ const orphan_endpoint_1 = require("./rules/orphan-endpoint");
73
+ const sample_default_1 = require("./rules/sample-default");
74
+ const unbound_input_1 = require("./rules/unbound-input");
75
+ const view_coverage_1 = require("./rules/view-coverage");
33
76
  const widths_1 = require("./rules/widths");
34
77
  const check_sketches_1 = require("./sketch/check-sketches");
35
78
  const merged_parts_1 = require("./sketch/merged-parts");
79
+ const stale_base_1 = require("./sketch/stale-base");
36
80
  const sketch_1 = require("./sketch/sketch");
37
81
  const system_tsconfig_1 = require("./system-tsconfig");
82
+ const invocation_1 = require("../../invocation");
83
+ const uncommitted_decisions_1 = require("./uncommitted-decisions");
38
84
  const RULES = [
39
85
  imports_1.importProblemsOf,
40
86
  upward_dependency_1.upwardDependenciesOf,
@@ -43,27 +89,162 @@ const RULES = [
43
89
  component_copy_1.componentCopiesOf,
44
90
  motion_1.scriptedMotionOf,
45
91
  motion_1.badMotionsOf,
92
+ motion_1.badUnreachableOf,
46
93
  motion_1.hardCodedMotionOf,
47
94
  stale_comment_1.staleCommentsOf,
48
95
  stale_comment_1.staleNotesOf,
49
96
  widths_1.badWidthsOf,
97
+ implements_1.badLinksOf,
98
+ state_in_component_1.statesNotInComponentOf,
99
+ part_rewrite_1.partRewritesOf,
50
100
  interactions_1.unknownInteractionsOf,
51
101
  kit_outside_pages_1.kitOutsidePagesOf,
102
+ inline_ui_in_page_1.inlineUiInPageProblemsOf,
52
103
  flow_1.flowProblemsOf,
53
104
  svg_asset_1.badSvgAssetsOf,
54
105
  inline_svg_1.inlineSvgsOf,
106
+ top_level_await_1.topLevelAwaitsOf,
55
107
  canonical_class_1.canonicalClassesOf,
108
+ undefined_class_1.undefinedClassesOf,
109
+ denied_class_1.deniedClassesOf,
110
+ native_title_1.nativeTitlesOf,
56
111
  utility_css_1.utilityCssOf,
112
+ orphan_endpoint_1.orphanEndpointProblemsOf,
113
+ sample_default_1.sampleDefaultProblemsOf,
114
+ unbound_input_1.unboundInputProblemsOf,
115
+ glued_interpolation_1.gluedInterpolationsOf,
57
116
  ];
117
+ const warningProblemsOf = (product) => [
118
+ ...(0, unused_shared_export_1.unusedSharedExportsOf)(product),
119
+ ...(0, stale_replace_1.staleReplacesOf)(product),
120
+ ...(0, token_selectors_1.tokenSelectorsOf)(product),
121
+ ...(0, orphan_endpoint_1.orphanEndpointWarningsOf)(product),
122
+ ...(0, sample_default_1.sampleDefaultWarningsOf)(product),
123
+ ...(0, unbound_input_1.unboundInputWarningsOf)(product),
124
+ ...(0, inline_ui_in_page_1.inlineUiInPageWarningsOf)(product),
125
+ ];
126
+ exports.warningProblemsOf = warningProblemsOf;
58
127
  const ruleLinesOf = (target, product) => (0, exports.ruleProblemsOf)(product).map((problem) => lineOf(target, problem));
59
128
  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. */
130
+ const checkRules = (options) => {
131
+ var _a;
132
+ const { target, config } = options;
133
+ let failed = 0;
134
+ for (const name of options.products) {
135
+ const entry = (_a = config.products) === null || _a === void 0 ? void 0 : _a[name];
136
+ if (!entry) {
137
+ console.error(`NO PRODUCT "${name}" in config.json.`);
138
+ failed++;
139
+ continue;
140
+ }
141
+ const product = (0, resolve_product_1.resolveProduct)({ target, name, config: entry });
142
+ const problems = (0, exports.ruleProblemsOf)(product).filter((problem) => !isInBasePart(product, problem.file));
143
+ problems.forEach((problem) => console.error(lineOf(target, problem)));
144
+ failed += problems.length;
145
+ }
146
+ console.log(failed === 0 ? 'No static design rule finds a problem.' : `${failed} problem(s).`);
147
+ return failed === 0 ? 0 : 1;
148
+ };
149
+ exports.checkRules = checkRules;
60
150
  /** Every problem the rules find in a resolved product, its resolution problems first. */
61
151
  const ruleProblemsOf = (product) => [
62
152
  ...product.problems,
63
153
  ...RULES.flatMap((rule) => rule(product)),
64
154
  ];
65
155
  exports.ruleProblemsOf = ruleProblemsOf;
156
+ /** Build-ready inputs from the open points of `points`, read without a draw by default, and the static rules. */
157
+ const buildReadyInputsOf = (product, points = (0, read_open_points_1.readOpenPoints)(product)) => {
158
+ const problems = (0, exports.ruleProblemsOf)(product);
159
+ return {
160
+ pointsOf: (part) => (0, read_open_points_1.partPointsOf)(points, part),
161
+ problemsOf: (part) => problems.filter((problem) => (0, exports.partOfFile)(product, problem.file) === part),
162
+ };
163
+ };
164
+ exports.buildReadyInputsOf = buildReadyInputsOf;
165
+ const withTalliedProblems = (inputs, tally) => (Object.assign(Object.assign({}, inputs), { problemsOf: (part) => {
166
+ var _a, _b;
167
+ const own = inputs.problemsOf(part);
168
+ const ruled = new Set(own.map((problem) => problem.rule));
169
+ const tallied = [...new Set((_b = (_a = tally === null || tally === void 0 ? void 0 : tally.get(part)) === null || _a === void 0 ? void 0 : _a.problems) !== null && _b !== void 0 ? _b : [])].filter((rule) => !ruled.has(rule));
170
+ return [...own, ...tallied.map((rule) => ({ rule, file: '', message: 'found by design check' }))];
171
+ } }));
66
172
  const lineOf = (target, problem) => `${problem.rule} ${(0, path_1.relative)(target, problem.file)}: ${problem.message}`;
173
+ const PRODUCT_LEVEL = '(product)';
174
+ 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
+ /** The tally key of `file`: its part, `(product)` for a design file outside every part, or `app code:<file>` for app code. */
185
+ const tallyKeyOf = (target, { product, file }) => {
186
+ var _a;
187
+ const part = (0, exports.partOfFile)(product, file);
188
+ 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
+ return part !== PRODUCT_LEVEL || inDesign ? part : `${APP_CODE}${(0, path_1.relative)(target, file) || '.'}`;
190
+ };
191
+ const tallyOf = (tally, at) => {
192
+ var _a, _b;
193
+ const { product, part } = at;
194
+ if (!tally)
195
+ return null;
196
+ const parts = (_a = tally.get(product)) !== null && _a !== void 0 ? _a : new Map();
197
+ const entry = (_b = parts.get(part)) !== null && _b !== void 0 ? _b : { problems: [], warnings: 0, open: 0 };
198
+ tally.set(product, parts);
199
+ parts.set(part, entry);
200
+ return entry;
201
+ };
202
+ const countText = (count, noun) => `${count} ${noun}${count === 1 ? '' : 's'}`;
203
+ /**
204
+ * One line per part with findings, then one line with the count of clean parts; with `only`, one line for that part
205
+ * even when it is clean.
206
+ */
207
+ const summaryText = (options) => {
208
+ var _a, _b, _c;
209
+ const found = (_a = options.tally.get(options.product)) !== null && _a !== void 0 ? _a : new Map();
210
+ const keys = options.only ? [options.only] : [...new Set([...options.parts, ...found.keys()])];
211
+ const lineOf = (key) => {
212
+ var _a;
213
+ const entry = found.get(key);
214
+ const rules = [...new Set((_a = entry === null || entry === void 0 ? void 0 : entry.problems) !== null && _a !== void 0 ? _a : [])].join(', ');
215
+ const items = [
216
+ ...((entry === null || entry === void 0 ? void 0 : entry.problems.length) ? [`${countText(entry.problems.length, 'problem')} (${rules})`] : []),
217
+ ...((entry === null || entry === void 0 ? void 0 : entry.warnings) ? [countText(entry.warnings, 'warning')] : []),
218
+ ...((entry === null || entry === void 0 ? void 0 : entry.open) ? [countText(entry.open, 'open point')] : []),
219
+ ];
220
+ if (items.length === 0)
221
+ return null;
222
+ return key.startsWith(APP_CODE)
223
+ ? `APP CODE ${options.product} ${key.slice(APP_CODE.length)}: ${items.join(', ')}`
224
+ : `PART ${options.product} ${key}: ${items.join(', ')}`;
225
+ };
226
+ const lines = keys.map((key) => ({ key, line: lineOf(key) }));
227
+ if (options.only)
228
+ return [(_c = (_b = lines[0]) === null || _b === void 0 ? void 0 : _b.line) !== null && _c !== void 0 ? _c : `PART ${options.product} ${options.only}: clean`];
229
+ const clean = lines.filter(({ key, line }) => line === null && key !== PRODUCT_LEVEL && !key.startsWith(APP_CODE)).length;
230
+ return [
231
+ ...lines.flatMap(({ line }) => (line ? [line] : [])),
232
+ `PARTS ${options.product}: ${clean} of ${options.parts.length} clean`,
233
+ ...(options.done === undefined ? [] : [`DONE ${options.product}: ${options.done} of ${options.parts.length}`]),
234
+ ];
235
+ };
236
+ exports.summaryText = summaryText;
237
+ /** One line per rule with how many problems this run found, zeros included, rules outside `CHECK_RULES` after them. */
238
+ const ruleSummaryText = (tally) => {
239
+ var _a;
240
+ const counts = new Map(check_rules_1.CHECK_RULES.map((rule) => [rule, 0]));
241
+ for (const parts of tally.values())
242
+ for (const { problems } of parts.values())
243
+ for (const rule of problems)
244
+ counts.set(rule, ((_a = counts.get(rule)) !== null && _a !== void 0 ? _a : 0) + 1);
245
+ return [...counts].map(([rule, n]) => `${rule} ${n}`);
246
+ };
247
+ exports.ruleSummaryText = ruleSummaryText;
67
248
  const typecheckOpenSketches = (options) => (0, sketch_1.listSketches)({ productDir: options.product.dir, product: options.product.name }).flatMap((sketch) => typeof sketch === 'string'
68
249
  ? []
69
250
  : sketch.variants.flatMap((variant) => {
@@ -78,82 +259,394 @@ const typecheckOpenSketches = (options) => (0, sketch_1.listSketches)({ productD
78
259
  },
79
260
  ];
80
261
  }));
262
+ /**
263
+ * One SKETCH-BASE-STALE problem, with its printed line, per undiscarded sketch (open or picked) whose base changed since it was drawn or
264
+ * rebased; with `parts`, only the sketches where one of those parts changed; with `targets`, only the sketches on those targets.
265
+ */
266
+ const staleSketchBasesOf = (options) => {
267
+ const { product, invocation, parts, targets } = options;
268
+ return (0, sketch_1.listSketches)({ productDir: product.dir, product: product.name }).flatMap((sketch) => {
269
+ var _a;
270
+ if (typeof sketch === 'string' || ((_a = sketch.decision) === null || _a === void 0 ? void 0 : _a.kind) === 'discard')
271
+ return [];
272
+ if (targets && !targets.has(sketch.target))
273
+ return [];
274
+ const changed = (0, stale_base_1.staleBaseOf)({ product, sketch });
275
+ if (!(changed === null || changed === void 0 ? void 0 : changed.length) || (parts && !changed.some((part) => parts.has(part))))
276
+ return [];
277
+ const message = `${changed.join(', ')} changed since the sketch was drawn - bring each variant up to date, then run ${invocation} sketch rebase ${sketch.target} --product ${product.name} --by <model id>`;
278
+ return [
279
+ {
280
+ rule: 'SKETCH-BASE-STALE',
281
+ file: sketch.dir,
282
+ message,
283
+ line: `SKETCH-BASE-STALE ${product.name} ${sketch.target}: ${message}`,
284
+ },
285
+ ];
286
+ });
287
+ };
288
+ exports.staleSketchBasesOf = staleSketchBasesOf;
81
289
  const warnChangedOutsideSketch = (product) => {
82
290
  for (const part of (0, merged_parts_1.changedOutsideSketchOf)(product))
83
291
  console.warn(`WARNING ${product.name} ${part} changed outside a sketch - every change to a merged part goes through a sketch, with one variant when there is no choice`);
84
292
  };
85
- const reportSystem = (options) => {
293
+ const isInBasePart = (product, file) => product.parts.some((part) => part.origin === 'base' && !(0, path_1.relative)((0, path_1.dirname)(part.file), file).startsWith('..'));
294
+ const isBasePartKey = (product, key) => { var _a; return ((_a = product.parts.find((part) => (0, resolve_product_1.partKeyOf)(part) === key)) === null || _a === void 0 ? void 0 : _a.origin) === 'base'; };
295
+ const printBaseFindings = (product, rules) => {
86
296
  var _a;
297
+ if (rules.length === 0 || !product.base)
298
+ return;
299
+ const counts = new Map();
300
+ for (const rule of rules)
301
+ counts.set(rule, ((_a = counts.get(rule)) !== null && _a !== void 0 ? _a : 0) + 1);
302
+ const perRule = [...counts]
303
+ .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
304
+ .map(([rule, n]) => `${rule} ${n}`);
305
+ console.log(`${rules.length} finding${rules.length === 1 ? '' : 's'} in base product ${product.base.name} (${perRule.join(', ')}) - they do not block this product; run et design check --product ${product.base.name} for the base's own`);
306
+ };
307
+ const reportSystem = (options) => {
308
+ var _a, _b;
87
309
  const { target, config, products } = options;
88
310
  const declared = (_a = config.products) !== null && _a !== void 0 ? _a : {};
89
311
  let failed = false;
90
- const report = (problem) => {
91
- var _a;
92
- const line = lineOf(target, problem);
93
- if ((_a = options.known) === null || _a === void 0 ? void 0 : _a.includes(line)) {
312
+ const report = (problem, product) => {
313
+ var _a, _b, _c;
314
+ const line = (_a = problem.line) !== null && _a !== void 0 ? _a : lineOf(target, problem);
315
+ if ((_b = options.known) === null || _b === void 0 ? void 0 : _b.includes(line)) {
94
316
  console.warn(`NOTE (was there before) ${line}`);
95
317
  return;
96
318
  }
97
319
  console.error(line);
98
320
  failed = true;
321
+ (_c = tallyOf(options.tally, {
322
+ product: product.name,
323
+ part: tallyKeyOf(target, { product, file: problem.file }),
324
+ })) === null || _c === void 0 ? void 0 : _c.problems.push(problem.rule);
99
325
  };
100
326
  for (const name of products) {
101
327
  const entry = declared[name];
102
328
  if (!entry) {
103
329
  console.error(`NO PRODUCT "${name}" - config.json declares ${Object.keys(declared).join(', ') || 'none'}.`);
104
- return 1;
330
+ return { code: 1, fatal: true };
105
331
  }
106
332
  const product = (0, resolve_product_1.resolveProduct)({ target, name, config: entry });
107
- if (options.warn)
333
+ if (options.part && !product.parts.some((part) => (0, resolve_product_1.partKeyOf)(part) === options.part)) {
334
+ console.error(`NO PART "${options.part}" in product ${name}.`);
335
+ return { code: 1, fatal: true };
336
+ }
337
+ if (options.warn && !options.part)
108
338
  warnChangedOutsideSketch(product);
109
- (0, stale_comment_1.goneSketchCommentWarningsOf)(product).forEach((warning) => console.warn(warning));
110
- (0, unused_shared_export_1.unusedSharedExportsOf)(product).forEach((problem) => console.warn(`WARNING ${lineOf(target, problem)}`));
111
- (0, stale_replace_1.staleReplacesOf)(product).forEach((problem) => console.warn(`WARNING ${lineOf(target, problem)}`));
112
- (0, token_selectors_1.tokenSelectorsOf)(product).forEach((problem) => console.warn(`WARNING ${lineOf(target, problem)}`));
113
- (0, exports.ruleProblemsOf)(product).forEach(report);
339
+ const uncommitted = options.warn ? (0, uncommitted_decisions_1.uncommittedDecisionsWarningOf)(product) : null;
340
+ if (uncommitted)
341
+ console.warn(uncommitted);
342
+ if (!options.part)
343
+ (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;
345
+ const isOwn = (problem) => !isInBasePart(product, problem.file) && isWanted(problem);
346
+ const warnings = (0, exports.warningProblemsOf)(product);
347
+ const problems = (0, exports.ruleProblemsOf)(product);
348
+ warnings.filter(isOwn).forEach((problem) => {
349
+ console.warn(`WARNING ${lineOf(target, problem)}`);
350
+ const counted = tallyOf(options.tally, {
351
+ product: name,
352
+ part: tallyKeyOf(target, { product, file: problem.file }),
353
+ });
354
+ if (counted)
355
+ counted.warnings += 1;
356
+ });
357
+ problems.filter(isOwn).forEach((problem) => report(problem, product));
358
+ if (!options.part)
359
+ printBaseFindings(product, problems.filter((problem) => !isOwn(problem)).map((problem) => problem.rule));
114
360
  (0, system_tsconfig_1.writeEditorTsconfig)({ target, product });
115
361
  const result = (0, system_tsconfig_1.typecheckProduct)({ target, product });
116
362
  if (result.kind === 'unavailable') {
117
363
  console.error(result.message);
118
- return 1;
364
+ return { code: 1, fatal: true };
119
365
  }
120
366
  if (result.kind === 'failed')
121
- report({ rule: 'TYPE-ERROR', file: product.dir, message: `\n${result.output}` });
122
- if (options.warn)
123
- typecheckOpenSketches({ target, product }).forEach(report);
367
+ report({ rule: 'TYPE-ERROR', file: product.dir, message: `\n${result.output}` }, product);
368
+ if (options.warn && !options.part)
369
+ typecheckOpenSketches({ target, product }).forEach((problem) => report(problem, product));
370
+ if (options.warn && !options.part)
371
+ (0, exports.staleSketchBasesOf)({
372
+ product,
373
+ invocation: (_b = options.invocation) !== null && _b !== void 0 ? _b : (0, invocation_1.repoInvocation)({ root: target, subcommand: 'design' }),
374
+ }).forEach((problem) => report(problem, product));
124
375
  }
125
- return failed ? 1 : 0;
376
+ return { code: failed ? 1 : 0, fatal: false };
126
377
  };
127
378
  /**
128
379
  * Checks the design system of each named product: the rules, then `tsc --noEmit` over its
129
- * generated tsconfig. Prints one line per problem and `ok` when there is none.
380
+ * generated tsconfig. Prints one line per problem and `ok` when there is none. The problems of a part the
381
+ * product takes from its base are counted in one line and do not fail it.
130
382
  */
131
383
  const checkSystem = (options) => {
132
- const code = reportSystem(options);
384
+ const { code } = reportSystem(options);
133
385
  if (code === 0)
134
386
  console.log('ok');
135
387
  return code;
136
388
  };
137
389
  exports.checkSystem = checkSystem;
390
+ const cannotDrawLine = (options) => `CANNOT DRAW ${options.product} ${options.line} - et design ready refuses the part until it draws`;
391
+ const countCannotDraw = (options) => {
392
+ for (const part of (0, drawn_open_points_1.statefulPartsOf)(options.product, options.part ? [options.part] : null)) {
393
+ console.log(cannotDrawLine({ product: options.product.name, line: `${part}: ${options.why}` }));
394
+ const counted = tallyOf(options.tally, { product: options.product.name, part });
395
+ if (counted)
396
+ counted.open += 1;
397
+ }
398
+ };
399
+ const drawnFindingsFor = (options) => __awaiter(void 0, void 0, void 0, function* () {
400
+ const { product, rendered, busy } = options;
401
+ const stateful = (0, drawn_open_points_1.statefulPartsOf)(product, options.part ? [options.part] : null);
402
+ let gaps = null;
403
+ if (stateful.length > 0) {
404
+ const checked = yield (0, complete_1.partsCompletenessOf)(Object.assign(Object.assign({}, options), { parts: stateful }));
405
+ if ('unavailable' in checked) {
406
+ console.log(`COMPLETE CHECK SKIPPED - ${checked.unavailable}`);
407
+ countCannotDraw(Object.assign(Object.assign({}, options), { why: checked.unavailable }));
408
+ }
409
+ else {
410
+ for (const hint of [...checked.hints.values()].flat())
411
+ console.log(hint);
412
+ gaps = checked.gaps;
413
+ }
414
+ }
415
+ const _a = (0, drawn_open_points_1.drawnFindingsFrom)({ product, issues: rendered, busy, gaps, stateful }), { failed } = _a, findings = __rest(_a, ["failed"]);
416
+ for (const line of failed) {
417
+ console.log(cannotDrawLine({ product: product.name, line }));
418
+ const counted = tallyOf(options.tally, { product: product.name, part: line.slice(0, line.indexOf(':')) });
419
+ if (counted)
420
+ counted.open += 1;
421
+ }
422
+ return findings;
423
+ });
424
+ const printOpenPoints = (options) => __awaiter(void 0, void 0, void 0, function* () {
425
+ var _a, _b, _c, _d;
426
+ const { target, config, products, rendered } = options;
427
+ for (const name of products) {
428
+ const entry = (_a = config.products) === null || _a === void 0 ? void 0 : _a[name];
429
+ if (!entry)
430
+ continue;
431
+ 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
457
+ ? {}
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)));
480
+ }
481
+ });
482
+ const notCheckedLineOf = (options) => `NOT CHECKED ${options.product} render rules on ${options.parts} - ${options.why}`;
483
+ const printUndrawn = (issues) => {
484
+ for (const product of new Set(issues.map((issue) => issue.product))) {
485
+ const own = issues.filter((issue) => issue.product === product);
486
+ const parts = [...new Set(own.filter(drawn_open_points_1.isPartUndrawn).map((issue) => issue.part))];
487
+ const states = [
488
+ ...new Set(own
489
+ .filter((issue) => (0, drawn_open_points_1.isStateUndrawn)(issue) && !parts.includes(issue.part))
490
+ .map((issue) => `${issue.part} state ${issue.state}`)),
491
+ ];
492
+ if (parts.length > 0)
493
+ console.log(notCheckedLineOf({
494
+ product,
495
+ parts: `${countText(parts.length, 'part')}: ${parts.join(', ')}`,
496
+ why: `${parts.length === 1 ? 'it' : 'they'} did not draw, see RENDER above`,
497
+ }));
498
+ states.forEach((state) => console.log(notCheckedLineOf({ product, parts: state, why: 'it did not draw, see RENDER above' })));
499
+ }
500
+ };
501
+ const renderSystem = (options) => __awaiter(void 0, void 0, void 0, function* () {
502
+ const { code, fatal } = reportSystem(Object.assign(Object.assign({}, options), { warn: true }));
503
+ if (fatal)
504
+ 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 })) }));
506
+ const resolved = options.products.flatMap((name) => {
507
+ var _a;
508
+ const entry = (_a = options.config.products) === null || _a === void 0 ? void 0 : _a[name];
509
+ return entry ? [(0, resolve_product_1.resolveProduct)({ target: options.target, name, config: entry })] : [];
510
+ });
511
+ if ('unavailable' in rendered) {
512
+ const ci = Boolean(process.env['CI']);
513
+ if (ci)
514
+ console.log(`RENDER CHECK SKIPPED - ${rendered.unavailable}`);
515
+ else
516
+ console.log(`RENDER CHECK FAILED - no usable browser: ${rendered.unavailable}`);
517
+ for (const product of resolved) {
518
+ const parts = product.parts
519
+ .filter((part) => part.origin !== 'base')
520
+ .map(resolve_product_1.partKeyOf)
521
+ .filter((key) => !options.part || key === options.part);
522
+ if (parts.length > 0)
523
+ console.log(notCheckedLineOf({
524
+ product: product.name,
525
+ parts: parts.length === 1 ? `1 part: ${parts[0]}` : `all ${parts.length} parts`,
526
+ why: rendered.unavailable,
527
+ }));
528
+ }
529
+ return { code: ci ? code : 1, rendered: null, notDrawn: rendered.unavailable };
530
+ }
531
+ const isInBase = (issue) => resolved.some((product) => product.name === issue.product && isBasePartKey(product, (0, render_check_1.ownerPartOf)(issue)));
532
+ const underGo = (0, action_undeclared_1.actionUndeclaredUnderGoOf)({
533
+ issues: rendered.issues.filter((issue) => !isInBase(issue)),
534
+ isGo: ({ product, part }) => {
535
+ const found = resolved.find((candidate) => candidate.name === product);
536
+ return found !== undefined && (0, part_ready_1.readyMarkOf)({ product: found, part }) !== null;
537
+ },
538
+ });
539
+ const { issues } = underGo;
540
+ underGo.warnings.forEach(({ product, part, line }) => {
541
+ console.warn(line);
542
+ const counted = tallyOf(options.tally, { product, part });
543
+ if (counted)
544
+ counted.warnings += 1;
545
+ });
546
+ rendered.warnings
547
+ .filter((issue) => !isInBase(issue))
548
+ .forEach((issue) => {
549
+ console.warn(`WARNING ${(0, render_check_1.renderIssueLineOf)(issue)}`);
550
+ const counted = tallyOf(options.tally, { product: issue.product, part: (0, render_check_1.ownerPartOf)(issue) });
551
+ if (counted)
552
+ counted.warnings += 1;
553
+ });
554
+ issues.forEach((issue) => {
555
+ var _a;
556
+ console.error((0, render_check_1.renderIssueLineOf)(issue));
557
+ (_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
+ });
559
+ printUndrawn(issues.filter((issue) => (0, drawn_open_points_1.isPartUndrawn)(issue) || (0, drawn_open_points_1.isStateUndrawn)(issue)));
560
+ if (!options.part)
561
+ for (const product of resolved)
562
+ 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 };
564
+ });
138
565
  /**
139
566
  * Checks as `checkSystem` does, then draws every state in a headless browser and prints one line per
140
- * render rule a drawing breaks, and warns of each merged part that changed outside a sketch. Without a browser it prints one skip line and passes on the other checks.
567
+ * render rule a drawing breaks, also when a static rule failed, and warns of each merged part that changed outside a sketch. A part that does not
568
+ * draw, each state that does not draw, or every part without a browser, gets one `NOT CHECKED` line; without a browser it passes on the other checks.
569
+ * It then lists the open points of each product's parts, with the contrasts the drawing found and the missing states
570
+ * of each component part as `design complete` draws them, the blockers `design ready` refuses on; they do not change
571
+ * the exit code.
141
572
  */
142
573
  const checkSystemRendered = (options) => __awaiter(void 0, void 0, void 0, function* () {
143
- const code = reportSystem(Object.assign(Object.assign({}, options), { warn: true }));
144
- if (code !== 0)
145
- return code;
146
- const rendered = yield (0, render_check_1.renderIssuesOf)(Object.assign(Object.assign({}, options), { jobs: options.products.map((product) => ({ product, sketch: null, parts: null })) }));
147
- if ('unavailable' in rendered)
148
- console.log(`RENDER CHECK SKIPPED - ${rendered.unavailable}`);
149
- else {
150
- rendered.warnings.forEach((issue) => console.warn(`WARNING ${(0, render_check_1.renderIssueLineOf)(issue)}`));
151
- rendered.issues.forEach((issue) => console.error((0, render_check_1.renderIssueLineOf)(issue)));
574
+ var _a, _b, _c, _d, _e, _f;
575
+ const tally = new Map();
576
+ const counted = Object.assign(Object.assign({}, options), { tally });
577
+ for (const line of (0, stale_dist_1.staleDistWarningsOf)(options))
578
+ console.warn(line);
579
+ const editProblems = new Map();
580
+ for (const name of options.products) {
581
+ const entry = (_a = options.config.products) === null || _a === void 0 ? void 0 : _a[name];
582
+ if (!entry)
583
+ continue;
584
+ const product = (0, resolve_product_1.resolveProduct)({ target: options.target, name, config: entry });
585
+ const problems = [];
586
+ const lines = yield (0, accepted_pictures_1.autoAcceptOf)(Object.assign(Object.assign({}, options), { product, only: options.part, draw: options.drawPictures, problems }));
587
+ editProblems.set(name, problems);
588
+ lines.forEach((line) => console.log(line));
152
589
  }
153
- if ('issues' in rendered && rendered.issues.length > 0)
154
- return 1;
155
- console.log('ok');
156
- return 0;
590
+ const { code, rendered, busy, notDrawn } = yield renderSystem(counted);
591
+ yield printOpenPoints(Object.assign(Object.assign({}, counted), { rendered, busy, notDrawn }));
592
+ let failed = 0;
593
+ let partsTotal = 0;
594
+ for (const name of options.products) {
595
+ const entry = (_b = options.config.products) === null || _b === void 0 ? void 0 : _b[name];
596
+ if (!entry)
597
+ 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, {
620
+ product: name,
621
+ part: tallyKeyOf(options.target, { product: resolved, file: problem.file }),
622
+ })) === null || _e === void 0 ? void 0 : _e.problems.push(problem.rule);
623
+ }
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
+ }
641
+ const exit = code !== 0 || failed > 0 ? 1 : 0;
642
+ if (exit === 0)
643
+ console.log('ok');
644
+ (0, exports.ruleSummaryText)(tally).forEach((line) => console.log(line));
645
+ const findings = [...tally.values()]
646
+ .flatMap((found) => [...found.values()])
647
+ .reduce((n, e) => n + e.problems.length, 0);
648
+ console.log(`check complete: ${countText(partsTotal, 'part')}, ${countText(findings, 'finding')}`);
649
+ return exit;
157
650
  });
158
651
  exports.checkSystemRendered = checkSystemRendered;
159
652
  //# sourceMappingURL=check-system.js.map