@ethlete/cli 3.0.0-next.21 → 3.0.0-next.23

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 (340) hide show
  1. package/CHANGELOG.md +198 -0
  2. package/design/assets.d.ts +9 -0
  3. package/design/define-call.ts +20 -11
  4. package/design/define-part.ts +102 -0
  5. package/design/embed-page.ts +70 -0
  6. package/design/interaction-rows.ts +32 -0
  7. package/design/mark-part.ts +66 -0
  8. package/design/svg-asset.ts +36 -0
  9. package/design/systems/config.json +10 -0
  10. package/design/systems/ethlete-components/components/button/button.ts +18 -0
  11. package/design/web/env.d.ts +20 -0
  12. package/design/web/frame.ts +173 -41
  13. package/design/wireframe-kit.ts +386 -0
  14. package/package.json +4 -2
  15. package/playwright/failure-reporter.d.ts +2 -0
  16. package/playwright/failure-reporter.js +1 -0
  17. package/src/index.js.map +1 -1
  18. package/src/lib/api/api-command.js.map +1 -1
  19. package/src/lib/api/api-context.js.map +1 -1
  20. package/src/lib/api/api-state.js.map +1 -1
  21. package/src/lib/api/auth-hint.js.map +1 -1
  22. package/src/lib/api/clear.js.map +1 -1
  23. package/src/lib/api/clone.js.map +1 -1
  24. package/src/lib/api/compose.js.map +1 -1
  25. package/src/lib/api/definition.js.map +1 -1
  26. package/src/lib/api/doctor.js.map +1 -1
  27. package/src/lib/api/fingerprint.js.map +1 -1
  28. package/src/lib/api/git.js.map +1 -1
  29. package/src/lib/api/help.js.map +1 -1
  30. package/src/lib/api/index.js.map +1 -1
  31. package/src/lib/api/load-definitions.js.map +1 -1
  32. package/src/lib/api/lock.js.map +1 -1
  33. package/src/lib/api/parse-argv.js.map +1 -1
  34. package/src/lib/api/ports.js.map +1 -1
  35. package/src/lib/api/resolve-checkout.js.map +1 -1
  36. package/src/lib/api/run-locked.js.map +1 -1
  37. package/src/lib/api/run-ready.js.map +1 -1
  38. package/src/lib/api/run-snapshot.js.map +1 -1
  39. package/src/lib/api/run-status.js.map +1 -1
  40. package/src/lib/api/run.js.map +1 -1
  41. package/src/lib/api/seeds.js.map +1 -1
  42. package/src/lib/api/setup.js.map +1 -1
  43. package/src/lib/api/snapshot.js.map +1 -1
  44. package/src/lib/api/state.js.map +1 -1
  45. package/src/lib/api/suggest.js.map +1 -1
  46. package/src/lib/api/validate-definition.js.map +1 -1
  47. package/src/lib/auth/auth-command.js.map +1 -1
  48. package/src/lib/auth/composer-auth.js.map +1 -1
  49. package/src/lib/auth/composer-repositories.js.map +1 -1
  50. package/src/lib/auth/gitlab-token.js.map +1 -1
  51. package/src/lib/auth/index.js.map +1 -1
  52. package/src/lib/config/diagnose.js.map +1 -1
  53. package/src/lib/config/index.js.map +1 -1
  54. package/src/lib/config/local-config.js.map +1 -1
  55. package/src/lib/design/asset-shot.d.ts +26 -0
  56. package/src/lib/design/asset-shot.js +191 -0
  57. package/src/lib/design/asset-shot.js.map +1 -0
  58. package/src/lib/design/browser.js.map +1 -1
  59. package/src/lib/design/calls-tsconfig.d.ts +14 -1
  60. package/src/lib/design/calls-tsconfig.js +23 -18
  61. package/src/lib/design/calls-tsconfig.js.map +1 -1
  62. package/src/lib/design/calls.d.ts +28 -0
  63. package/src/lib/design/calls.js +58 -0
  64. package/src/lib/design/calls.js.map +1 -0
  65. package/src/lib/design/changed-parts.d.ts +51 -0
  66. package/src/lib/design/changed-parts.js +103 -0
  67. package/src/lib/design/changed-parts.js.map +1 -0
  68. package/src/lib/design/check.js +53 -54
  69. package/src/lib/design/check.js.map +1 -1
  70. package/src/lib/design/contact-sheet.d.ts +86 -0
  71. package/src/lib/design/contact-sheet.js +197 -0
  72. package/src/lib/design/contact-sheet.js.map +1 -0
  73. package/src/lib/design/design-command.js +167 -6
  74. package/src/lib/design/design-command.js.map +1 -1
  75. package/src/lib/design/force-interactions.d.ts +13 -0
  76. package/src/lib/design/force-interactions.js +75 -0
  77. package/src/lib/design/force-interactions.js.map +1 -0
  78. package/src/lib/design/inbox-command.d.ts +21 -0
  79. package/src/lib/design/inbox-command.js +156 -0
  80. package/src/lib/design/inbox-command.js.map +1 -0
  81. package/src/lib/design/index.js.map +1 -1
  82. package/src/lib/design/json-layout.d.ts +5 -0
  83. package/src/lib/design/json-layout.js +41 -0
  84. package/src/lib/design/json-layout.js.map +1 -0
  85. package/src/lib/design/legacy.d.ts +7 -0
  86. package/src/lib/design/legacy.js +23 -8
  87. package/src/lib/design/legacy.js.map +1 -1
  88. package/src/lib/design/merge-compare.d.ts +57 -0
  89. package/src/lib/design/merge-compare.js +80 -0
  90. package/src/lib/design/merge-compare.js.map +1 -0
  91. package/src/lib/design/missing-package.js.map +1 -1
  92. package/src/lib/design/new-call.js.map +1 -1
  93. package/src/lib/design/part-marks.d.ts +12 -0
  94. package/src/lib/design/part-marks.js +38 -0
  95. package/src/lib/design/part-marks.js.map +1 -0
  96. package/src/lib/design/paths.d.ts +35 -2
  97. package/src/lib/design/paths.js +62 -4
  98. package/src/lib/design/paths.js.map +1 -1
  99. package/src/lib/design/product-command.d.ts +38 -0
  100. package/src/lib/design/product-command.js +158 -0
  101. package/src/lib/design/product-command.js.map +1 -0
  102. package/src/lib/design/ready-shots.d.ts +13 -0
  103. package/src/lib/design/ready-shots.js +55 -0
  104. package/src/lib/design/ready-shots.js.map +1 -0
  105. package/src/lib/design/render-fields.js.map +1 -1
  106. package/src/lib/design/render-packages.js.map +1 -1
  107. package/src/lib/design/render-worker.js.map +1 -1
  108. package/src/lib/design/render.d.ts +11 -2
  109. package/src/lib/design/render.js +60 -15
  110. package/src/lib/design/render.js.map +1 -1
  111. package/src/lib/design/serve.d.ts +17 -0
  112. package/src/lib/design/serve.js +487 -103
  113. package/src/lib/design/serve.js.map +1 -1
  114. package/src/lib/design/shot-command.d.ts +100 -0
  115. package/src/lib/design/shot-command.js +453 -0
  116. package/src/lib/design/shot-command.js.map +1 -0
  117. package/src/lib/design/shot.d.ts +97 -0
  118. package/src/lib/design/shot.js +346 -0
  119. package/src/lib/design/shot.js.map +1 -0
  120. package/src/lib/design/sketch-at.d.ts +16 -0
  121. package/src/lib/design/sketch-at.js +34 -0
  122. package/src/lib/design/sketch-at.js.map +1 -0
  123. package/src/lib/design/sketch-command.d.ts +15 -0
  124. package/src/lib/design/sketch-command.js +618 -0
  125. package/src/lib/design/sketch-command.js.map +1 -0
  126. package/src/lib/design/ssr-shims.js.map +1 -1
  127. package/src/lib/design/stamp.js.map +1 -1
  128. package/src/lib/design/status.d.ts +2 -2
  129. package/src/lib/design/status.js +2 -2
  130. package/src/lib/design/status.js.map +1 -1
  131. package/src/lib/design/studio-api.d.ts +112 -0
  132. package/src/lib/design/studio-api.js +489 -0
  133. package/src/lib/design/studio-api.js.map +1 -0
  134. package/src/lib/design/system/accept-command.d.ts +7 -0
  135. package/src/lib/design/system/accept-command.js +55 -0
  136. package/src/lib/design/system/accept-command.js.map +1 -0
  137. package/src/lib/design/system/assets.d.ts +34 -0
  138. package/src/lib/design/system/assets.js +64 -0
  139. package/src/lib/design/system/assets.js.map +1 -0
  140. package/src/lib/design/system/base.d.ts +33 -0
  141. package/src/lib/design/system/base.js +49 -0
  142. package/src/lib/design/system/base.js.map +1 -0
  143. package/src/lib/design/system/check-system.d.ts +23 -0
  144. package/src/lib/design/system/check-system.js +151 -0
  145. package/src/lib/design/system/check-system.js.map +1 -0
  146. package/src/lib/design/system/colour.d.ts +2 -0
  147. package/src/lib/design/system/colour.js +9 -0
  148. package/src/lib/design/system/colour.js.map +1 -0
  149. package/src/lib/design/system/comments/comment.d.ts +196 -0
  150. package/src/lib/design/system/comments/comment.js +332 -0
  151. package/src/lib/design/system/comments/comment.js.map +1 -0
  152. package/src/lib/design/system/comments/complete.d.ts +15 -0
  153. package/src/lib/design/system/comments/complete.js +63 -0
  154. package/src/lib/design/system/comments/complete.js.map +1 -0
  155. package/src/lib/design/system/comments/inbox.d.ts +49 -0
  156. package/src/lib/design/system/comments/inbox.js +100 -0
  157. package/src/lib/design/system/comments/inbox.js.map +1 -0
  158. package/src/lib/design/system/css-source.d.ts +12 -0
  159. package/src/lib/design/system/css-source.js +39 -0
  160. package/src/lib/design/system/css-source.js.map +1 -0
  161. package/src/lib/design/system/flows/flow.d.ts +66 -0
  162. package/src/lib/design/system/flows/flow.js +157 -0
  163. package/src/lib/design/system/flows/flow.js.map +1 -0
  164. package/src/lib/design/system/imports.d.ts +70 -0
  165. package/src/lib/design/system/imports.js +159 -0
  166. package/src/lib/design/system/imports.js.map +1 -0
  167. package/src/lib/design/system/kit.d.ts +4 -0
  168. package/src/lib/design/system/kit.js +51 -0
  169. package/src/lib/design/system/kit.js.map +1 -0
  170. package/src/lib/design/system/layers.d.ts +9 -0
  171. package/src/lib/design/system/layers.js +16 -0
  172. package/src/lib/design/system/layers.js.map +1 -0
  173. package/src/lib/design/system/list-system.d.ts +104 -0
  174. package/src/lib/design/system/list-system.js +212 -0
  175. package/src/lib/design/system/list-system.js.map +1 -0
  176. package/src/lib/design/system/notes/note.d.ts +53 -0
  177. package/src/lib/design/system/notes/note.js +116 -0
  178. package/src/lib/design/system/notes/note.js.map +1 -0
  179. package/src/lib/design/system/part-command.d.ts +7 -0
  180. package/src/lib/design/system/part-command.js +134 -0
  181. package/src/lib/design/system/part-command.js.map +1 -0
  182. package/src/lib/design/system/problem.d.ts +5 -0
  183. package/src/lib/design/system/problem.js +3 -0
  184. package/src/lib/design/system/problem.js.map +1 -0
  185. package/src/lib/design/system/product.d.ts +18 -0
  186. package/src/lib/design/system/product.js +35 -0
  187. package/src/lib/design/system/product.js.map +1 -0
  188. package/src/lib/design/system/render-check.d.ts +45 -0
  189. package/src/lib/design/system/render-check.js +427 -0
  190. package/src/lib/design/system/render-check.js.map +1 -0
  191. package/src/lib/design/system/resolve-product.d.ts +32 -0
  192. package/src/lib/design/system/resolve-product.js +62 -0
  193. package/src/lib/design/system/resolve-product.js.map +1 -0
  194. package/src/lib/design/system/rules/component-copy.d.ts +7 -0
  195. package/src/lib/design/system/rules/component-copy.js +53 -0
  196. package/src/lib/design/system/rules/component-copy.js.map +1 -0
  197. package/src/lib/design/system/rules/flow.d.ts +8 -0
  198. package/src/lib/design/system/rules/flow.js +60 -0
  199. package/src/lib/design/system/rules/flow.js.map +1 -0
  200. package/src/lib/design/system/rules/hard-coded-colour.d.ts +7 -0
  201. package/src/lib/design/system/rules/hard-coded-colour.js +27 -0
  202. package/src/lib/design/system/rules/hard-coded-colour.js.map +1 -0
  203. package/src/lib/design/system/rules/interactions.d.ts +4 -0
  204. package/src/lib/design/system/rules/interactions.js +16 -0
  205. package/src/lib/design/system/rules/interactions.js.map +1 -0
  206. package/src/lib/design/system/rules/kit-outside-pages.d.ts +4 -0
  207. package/src/lib/design/system/rules/kit-outside-pages.js +14 -0
  208. package/src/lib/design/system/rules/kit-outside-pages.js.map +1 -0
  209. package/src/lib/design/system/rules/motion.d.ts +4 -0
  210. package/src/lib/design/system/rules/motion.js +13 -0
  211. package/src/lib/design/system/rules/motion.js.map +1 -0
  212. package/src/lib/design/system/rules/stale-comment.d.ts +8 -0
  213. package/src/lib/design/system/rules/stale-comment.js +51 -0
  214. package/src/lib/design/system/rules/stale-comment.js.map +1 -0
  215. package/src/lib/design/system/rules/stale-replace.d.ts +4 -0
  216. package/src/lib/design/system/rules/stale-replace.js +65 -0
  217. package/src/lib/design/system/rules/stale-replace.js.map +1 -0
  218. package/src/lib/design/system/rules/svg-asset.d.ts +6 -0
  219. package/src/lib/design/system/rules/svg-asset.js +30 -0
  220. package/src/lib/design/system/rules/svg-asset.js.map +1 -0
  221. package/src/lib/design/system/rules/token-selectors.d.ts +3 -0
  222. package/src/lib/design/system/rules/token-selectors.js +87 -0
  223. package/src/lib/design/system/rules/token-selectors.js.map +1 -0
  224. package/src/lib/design/system/rules/undefined-token.d.ts +8 -0
  225. package/src/lib/design/system/rules/undefined-token.js +103 -0
  226. package/src/lib/design/system/rules/undefined-token.js.map +1 -0
  227. package/src/lib/design/system/rules/unused-shared-export.d.ts +18 -0
  228. package/src/lib/design/system/rules/unused-shared-export.js +60 -0
  229. package/src/lib/design/system/rules/unused-shared-export.js.map +1 -0
  230. package/src/lib/design/system/rules/upward-dependency.d.ts +4 -0
  231. package/src/lib/design/system/rules/upward-dependency.js +17 -0
  232. package/src/lib/design/system/rules/upward-dependency.js.map +1 -0
  233. package/src/lib/design/system/rules/widths.d.ts +4 -0
  234. package/src/lib/design/system/rules/widths.js +14 -0
  235. package/src/lib/design/system/rules/widths.js.map +1 -0
  236. package/src/lib/design/system/sketch/baseline.d.ts +38 -0
  237. package/src/lib/design/system/sketch/baseline.js +66 -0
  238. package/src/lib/design/system/sketch/baseline.js.map +1 -0
  239. package/src/lib/design/system/sketch/check-format.d.ts +17 -0
  240. package/src/lib/design/system/sketch/check-format.js +56 -0
  241. package/src/lib/design/system/sketch/check-format.js.map +1 -0
  242. package/src/lib/design/system/sketch/check-sketches.d.ts +38 -0
  243. package/src/lib/design/system/sketch/check-sketches.js +104 -0
  244. package/src/lib/design/system/sketch/check-sketches.js.map +1 -0
  245. package/src/lib/design/system/sketch/cli-args.d.ts +26 -0
  246. package/src/lib/design/system/sketch/cli-args.js +63 -0
  247. package/src/lib/design/system/sketch/cli-args.js.map +1 -0
  248. package/src/lib/design/system/sketch/duplicate-class.d.ts +14 -0
  249. package/src/lib/design/system/sketch/duplicate-class.js +57 -0
  250. package/src/lib/design/system/sketch/duplicate-class.js.map +1 -0
  251. package/src/lib/design/system/sketch/merge-preview.d.ts +15 -0
  252. package/src/lib/design/system/sketch/merge-preview.js +43 -0
  253. package/src/lib/design/system/sketch/merge-preview.js.map +1 -0
  254. package/src/lib/design/system/sketch/merge-shared.d.ts +25 -0
  255. package/src/lib/design/system/sketch/merge-shared.js +53 -0
  256. package/src/lib/design/system/sketch/merge-shared.js.map +1 -0
  257. package/src/lib/design/system/sketch/merge.d.ts +31 -0
  258. package/src/lib/design/system/sketch/merge.js +148 -0
  259. package/src/lib/design/system/sketch/merge.js.map +1 -0
  260. package/src/lib/design/system/sketch/merged-parts.d.ts +59 -0
  261. package/src/lib/design/system/sketch/merged-parts.js +134 -0
  262. package/src/lib/design/system/sketch/merged-parts.js.map +1 -0
  263. package/src/lib/design/system/sketch/no-visible-change.d.ts +15 -0
  264. package/src/lib/design/system/sketch/no-visible-change.js +70 -0
  265. package/src/lib/design/system/sketch/no-visible-change.js.map +1 -0
  266. package/src/lib/design/system/sketch/overlay.d.ts +20 -0
  267. package/src/lib/design/system/sketch/overlay.js +38 -0
  268. package/src/lib/design/system/sketch/overlay.js.map +1 -0
  269. package/src/lib/design/system/sketch/part-definition.d.ts +31 -0
  270. package/src/lib/design/system/sketch/part-definition.js +157 -0
  271. package/src/lib/design/system/sketch/part-definition.js.map +1 -0
  272. package/src/lib/design/system/sketch/shared-class.d.ts +9 -0
  273. package/src/lib/design/system/sketch/shared-class.js +65 -0
  274. package/src/lib/design/system/sketch/shared-class.js.map +1 -0
  275. package/src/lib/design/system/sketch/sketch.d.ts +267 -0
  276. package/src/lib/design/system/sketch/sketch.js +568 -0
  277. package/src/lib/design/system/sketch/sketch.js.map +1 -0
  278. package/src/lib/design/system/sketch/unchanged-states.d.ts +23 -0
  279. package/src/lib/design/system/sketch/unchanged-states.js +144 -0
  280. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -0
  281. package/src/lib/design/system/sketch/unused-files.d.ts +10 -0
  282. package/src/lib/design/system/sketch/unused-files.js +56 -0
  283. package/src/lib/design/system/sketch/unused-files.js.map +1 -0
  284. package/src/lib/design/system/system-command.d.ts +9 -0
  285. package/src/lib/design/system/system-command.js +56 -0
  286. package/src/lib/design/system/system-command.js.map +1 -0
  287. package/src/lib/design/system/system-modules.d.ts +58 -0
  288. package/src/lib/design/system/system-modules.js +189 -0
  289. package/src/lib/design/system/system-modules.js.map +1 -0
  290. package/src/lib/design/system/system-tsconfig.d.ts +26 -0
  291. package/src/lib/design/system/system-tsconfig.js +68 -0
  292. package/src/lib/design/system/system-tsconfig.js.map +1 -0
  293. package/src/lib/design/system/ts-source.d.ts +13 -0
  294. package/src/lib/design/system/ts-source.js +108 -0
  295. package/src/lib/design/system/ts-source.js.map +1 -0
  296. package/src/lib/design/system-use.js.map +1 -1
  297. package/src/lib/design/thumb.d.ts +48 -4
  298. package/src/lib/design/thumb.js +127 -37
  299. package/src/lib/design/thumb.js.map +1 -1
  300. package/src/lib/design/typecheck.d.ts +29 -0
  301. package/src/lib/design/typecheck.js +77 -0
  302. package/src/lib/design/typecheck.js.map +1 -0
  303. package/src/lib/design/variant-diff.d.ts +64 -0
  304. package/src/lib/design/variant-diff.js +92 -0
  305. package/src/lib/design/variant-diff.js.map +1 -0
  306. package/src/lib/design/vite-paths.d.ts +2 -0
  307. package/src/lib/design/vite-paths.js +10 -1
  308. package/src/lib/design/vite-paths.js.map +1 -1
  309. package/src/lib/doctor/doctor-command.js.map +1 -1
  310. package/src/lib/doctor/index.js.map +1 -1
  311. package/src/lib/index.js.map +1 -1
  312. package/src/lib/invocation.js +6 -2
  313. package/src/lib/invocation.js.map +1 -1
  314. package/src/lib/playwright/failure-reporter.d.ts +35 -0
  315. package/src/lib/playwright/failure-reporter.js +66 -0
  316. package/src/lib/playwright/failure-reporter.js.map +1 -0
  317. package/src/lib/release.js.map +1 -1
  318. package/src/lib/update/agent-rules-sync.js.map +1 -1
  319. package/src/lib/update/agent-setup.js.map +1 -1
  320. package/src/lib/update/ai.js.map +1 -1
  321. package/src/lib/update/args.js.map +1 -1
  322. package/src/lib/update/available-migrations.js.map +1 -1
  323. package/src/lib/update/commits.js.map +1 -1
  324. package/src/lib/update/gitignore.js.map +1 -1
  325. package/src/lib/update/index.js.map +1 -1
  326. package/src/lib/update/migration-manifest.js.map +1 -1
  327. package/src/lib/update/migration-record.js.map +1 -1
  328. package/src/lib/update/migrations-command.js.map +1 -1
  329. package/src/lib/update/package-manager.d.ts +1 -1
  330. package/src/lib/update/package-manager.js.map +1 -1
  331. package/src/lib/update/packages.js.map +1 -1
  332. package/src/lib/update/pending.js.map +1 -1
  333. package/src/lib/update/plan.js.map +1 -1
  334. package/src/lib/update/registry.js.map +1 -1
  335. package/src/lib/update/run-migrations.js.map +1 -1
  336. package/src/lib/update/scan.js.map +1 -1
  337. package/src/lib/update/semver.js.map +1 -1
  338. package/src/lib/update/tasks.js.map +1 -1
  339. package/src/lib/update/update-command.js.map +1 -1
  340. package/src/lib/utils.js.map +1 -1
@@ -0,0 +1,489 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
12
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
13
+ var m = o[Symbol.asyncIterator], i;
14
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
15
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
16
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
17
+ };
18
+ var __rest = (this && this.__rest) || function (s, e) {
19
+ var t = {};
20
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
21
+ t[p] = s[p];
22
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
23
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
24
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
25
+ t[p[i]] = s[p[i]];
26
+ }
27
+ return t;
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.flowNoteDeleteAnswer = exports.flowNoteChangeAnswer = exports.flowNoteAnswer = exports.noteDeleteAnswer = exports.noteChangeAnswer = exports.noteAnswer = exports.notesAnswer = exports.flowsAnswer = exports.commentReplyAnswer = exports.commentWithdrawAnswer = exports.commentDoneAnswer = exports.commentAnswer = exports.commentsAnswer = exports.sketchDiscardAnswer = exports.sketchMergeAnswer = exports.sketchDecisionAnswer = exports.sketchCropAnswer = exports.sketchDiffAnswer = exports.sketchCompareAnswer = exports.sketchPreviewAnswer = exports.sketchesAnswer = exports.FLOW_NOTE_DELETE_PATH = exports.FLOW_NOTE_CHANGE_PATH = exports.FLOW_NOTE_PATH = exports.NOTE_DELETE_PATH = exports.NOTE_CHANGE_PATH = exports.NOTE_PATH = exports.NOTES_PATH = exports.FLOWS_PATH = exports.COMMENT_EVENTS_PATH = exports.COMMENT_REPLY_PATH = exports.COMMENT_WITHDRAW_PATH = exports.COMMENT_DONE_PATH = exports.COMMENT_PATH = exports.COMMENTS_PATH = exports.SKETCH_DISCARD_PATH = exports.SKETCH_MERGE_PATH = exports.SKETCH_DECISION_PATH = exports.SKETCH_CROP_PATH = exports.SKETCH_DIFF_PATH = exports.SKETCH_COMPARE_PATH = exports.SKETCH_PREVIEW_PATH = exports.SKETCHES_PATH = void 0;
31
+ const path_1 = require("path");
32
+ const invocation_1 = require("../invocation");
33
+ const paths_1 = require("./paths");
34
+ const comment_1 = require("./system/comments/comment");
35
+ const flow_1 = require("./system/flows/flow");
36
+ const note_1 = require("./system/notes/note");
37
+ const flow_2 = require("./system/rules/flow");
38
+ const check_sketches_1 = require("./system/sketch/check-sketches");
39
+ const cli_args_1 = require("./system/sketch/cli-args");
40
+ const merge_1 = require("./system/sketch/merge");
41
+ const list_system_1 = require("./system/list-system");
42
+ const merge_compare_1 = require("./merge-compare");
43
+ const variant_diff_1 = require("./variant-diff");
44
+ const merge_preview_1 = require("./system/sketch/merge-preview");
45
+ const overlay_1 = require("./system/sketch/overlay");
46
+ const sketch_1 = require("./system/sketch/sketch");
47
+ const resolve_product_1 = require("./system/resolve-product");
48
+ const unchanged_states_1 = require("./system/sketch/unchanged-states");
49
+ exports.SKETCHES_PATH = '/__design/sketches';
50
+ exports.SKETCH_PREVIEW_PATH = '/__design/sketch-preview';
51
+ exports.SKETCH_COMPARE_PATH = '/__design/sketch-compare';
52
+ exports.SKETCH_DIFF_PATH = '/__design/sketch-diff';
53
+ exports.SKETCH_CROP_PATH = '/__design/sketch-crop';
54
+ exports.SKETCH_DECISION_PATH = '/__design/sketch-decision';
55
+ exports.SKETCH_MERGE_PATH = '/__design/sketch-merge';
56
+ const SKETCH_DECISION_KINDS = ['pick', 'discard', 'reject', 'reason', 'reopen'];
57
+ exports.SKETCH_DISCARD_PATH = '/__design/sketch-discard';
58
+ exports.COMMENTS_PATH = '/__design/comments';
59
+ exports.COMMENT_PATH = '/__design/comment';
60
+ exports.COMMENT_DONE_PATH = '/__design/comment-done';
61
+ exports.COMMENT_WITHDRAW_PATH = '/__design/comment-withdraw';
62
+ exports.COMMENT_REPLY_PATH = '/__design/comment-reply';
63
+ exports.COMMENT_EVENTS_PATH = '/__design/comment-events';
64
+ exports.FLOWS_PATH = '/__design/flows';
65
+ exports.NOTES_PATH = '/__design/notes';
66
+ exports.NOTE_PATH = '/__design/note';
67
+ exports.NOTE_CHANGE_PATH = '/__design/note-change';
68
+ exports.NOTE_DELETE_PATH = '/__design/note-delete';
69
+ exports.FLOW_NOTE_PATH = '/__design/flow-note';
70
+ exports.FLOW_NOTE_CHANGE_PATH = '/__design/flow-note-change';
71
+ exports.FLOW_NOTE_DELETE_PATH = '/__design/flow-note-delete';
72
+ const failure = (status, message) => ({ status, body: { error: message } });
73
+ const productOf = ({ target, url }) => {
74
+ const asked = url.searchParams.get('product');
75
+ const config = (0, paths_1.readConfig)(target);
76
+ if (!config)
77
+ return failure(404, 'no design config');
78
+ if (!asked)
79
+ return failure(400, 'product is required');
80
+ const product = (0, cli_args_1.oneProductOf)({ target, config, asked });
81
+ return typeof product === 'string' ? failure(404, product) : { config, product };
82
+ };
83
+ const isAnswer = (value) => 'status' in value;
84
+ const bodyOf = (request) => __awaiter(void 0, void 0, void 0, function* () {
85
+ var _a, request_1, request_1_1;
86
+ var _b, e_1, _c, _d;
87
+ const chunks = [];
88
+ try {
89
+ for (_a = true, request_1 = __asyncValues(request); request_1_1 = yield request_1.next(), _b = request_1_1.done, !_b; _a = true) {
90
+ _d = request_1_1.value;
91
+ _a = false;
92
+ const chunk = _d;
93
+ chunks.push(Buffer.from(chunk));
94
+ }
95
+ }
96
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
97
+ finally {
98
+ try {
99
+ if (!_a && !_b && (_c = request_1.return)) yield _c.call(request_1);
100
+ }
101
+ finally { if (e_1) throw e_1.error; }
102
+ }
103
+ try {
104
+ const parsed = JSON.parse(Buffer.concat(chunks).toString('utf8') || '{}');
105
+ return parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)
106
+ ? parsed
107
+ : null;
108
+ }
109
+ catch (_e) {
110
+ return null;
111
+ }
112
+ });
113
+ const textOf = (value) => (typeof value === 'string' && value !== '' ? value : undefined);
114
+ const withProduct = (method, run) => (asked) => {
115
+ var _a;
116
+ if (((_a = asked.request.method) !== null && _a !== void 0 ? _a : 'GET') !== method)
117
+ return failure(405, method === 'POST' ? 'POST only' : 'GET only');
118
+ const found = productOf(asked);
119
+ return isAnswer(found) ? found : run(Object.assign(Object.assign({}, found), { asked }));
120
+ };
121
+ const withSketch = (method, run) => withProduct(method, (found) => {
122
+ var _a;
123
+ const parsed = (0, sketch_1.parseTarget)((_a = found.asked.url.searchParams.get('sketch')) !== null && _a !== void 0 ? _a : undefined);
124
+ if (typeof parsed === 'string')
125
+ return failure(400, parsed);
126
+ const sketch = (0, sketch_1.findSketch)({ productDir: found.product.dir, product: found.product.name, sketch: parsed });
127
+ if (sketch === null)
128
+ return failure(404, `no sketch on ${parsed.layer}/${parsed.name} in ${found.product.name}`);
129
+ if (typeof sketch === 'string')
130
+ return failure(422, sketch);
131
+ return run(Object.assign(Object.assign({}, found), { sketch }));
132
+ });
133
+ const problemOf = ({ target, problem }) => ({
134
+ rule: problem.rule,
135
+ file: (0, path_1.relative)(target, problem.file),
136
+ message: problem.message,
137
+ });
138
+ const sketchOf = (_a) => {
139
+ var _b = _a.sketch, { dir } = _b, sketch = __rest(_b, ["dir"]), { target } = _a;
140
+ return (Object.assign(Object.assign({}, sketch), { dir: (0, path_1.relative)(target, dir) }));
141
+ };
142
+ const commentOf = ({ comment, target, product, }) => {
143
+ const { file } = comment, rest = __rest(comment, ["file"]);
144
+ return Object.assign(Object.assign({}, rest), { file: (0, path_1.relative)(target, file), stale: (0, comment_1.isOpenComment)(comment) ? (0, comment_1.staleReasonOf)({ product, comment }) : null, threadState: (0, comment_1.threadStateOf)(comment) });
145
+ };
146
+ const targetsOf = (_a) => __awaiter(void 0, [_a], void 0, function* ({ product, sketch, load, pictureOf, }) {
147
+ return Promise.all(sketch.variants.map((variant) => __awaiter(void 0, void 0, void 0, function* () {
148
+ var _a;
149
+ const file = (_a = (0, overlay_1.overlaySketch)({ product, sketch, variant }).parts.find((part) => (0, resolve_product_1.partKeyOf)(part) === sketch.target)) === null || _a === void 0 ? void 0 : _a.file;
150
+ if (!file || !load)
151
+ return Object.assign({ variant, states: [], interactions: [] }, (file ? {} : { error: `variant ${variant} has no part ${sketch.target}` }));
152
+ const _b = yield (0, list_system_1.readPartModule)({
153
+ part: { file },
154
+ product: product.name,
155
+ load: () => load({ file, product: product.name, sketch: { target: sketch.target, variant } }),
156
+ }), { states, interactions, problem } = _b, widths = __rest(_b, ["states", "interactions", "problem"]);
157
+ return Object.assign(Object.assign(Object.assign({ variant,
158
+ states }, ('widths' in widths ? { widths: widths.widths } : {})), { interactions, unchanged: problem ? [] : yield (0, unchanged_states_1.unchangedStatesOf)({ product, sketch, variant, load, pictureOf }) }), (problem ? { error: problem } : {}));
159
+ })));
160
+ });
161
+ /**
162
+ * The open sketches of `?product=`, each with its variants, status, decision, the rule problems of every
163
+ * variant, the states, widths and interactions of the target as each variant draws it (`targets`), with the states it
164
+ * draws the same as the product now (`unchanged`), and the live report
165
+ * of the agent (`report`, `null` when none runs).
166
+ */
167
+ exports.sketchesAnswer = withProduct('GET', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product }) {
168
+ const { target } = asked;
169
+ const { unreadable, variants } = (0, check_sketches_1.openSketchProblemsOf)(product);
170
+ const sketches = (0, sketch_1.listSketches)({ productDir: product.dir, product: product.name }).filter((sketch) => typeof sketch !== 'string');
171
+ return {
172
+ status: 200,
173
+ body: {
174
+ sketches: yield Promise.all(sketches.map((sketch) => __awaiter(void 0, void 0, void 0, function* () {
175
+ return (Object.assign(Object.assign({}, sketchOf({ sketch, target })), { problems: variants
176
+ .filter((entry) => entry.sketch.target === sketch.target)
177
+ .map((entry) => ({
178
+ variant: entry.variant,
179
+ problems: entry.problems.map((p) => problemOf({ target, problem: p })),
180
+ })), targets: yield targetsOf({ product, sketch, load: asked.load, pictureOf: asked.pictureOf }), report: (0, sketch_1.readSketchReport)({ checkout: target, sketch }) }));
181
+ }))),
182
+ unreadable: unreadable.map((problem) => problemOf({ target, problem })),
183
+ },
184
+ };
185
+ }));
186
+ /** `?product=&sketch=<layer>/<name>&variant=`: the parts a merge of that variant changes and the elements and pages that show them. */
187
+ exports.sketchPreviewAnswer = withSketch('GET', ({ asked, product, sketch }) => {
188
+ var _a;
189
+ const variant = (_a = asked.url.searchParams.get('variant')) !== null && _a !== void 0 ? _a : '';
190
+ return sketch.variants.includes(variant)
191
+ ? { status: 200, body: Object.assign({ target: sketch.target }, (0, merge_preview_1.mergePreviewOf)({ product, sketch, variant })) }
192
+ : failure(404, `${sketch.target} has no variant "${variant}"`);
193
+ });
194
+ /**
195
+ * `?product=&sketch=&variant=` with optional `size=` (a preset or a width) and `surface=`/`color=`: each state of every
196
+ * element and page that shows the sketch target, drawn now and after merging the variant, split into `changed` and
197
+ * `unchanged` by whether any pixel differs, with the outline of every instance of the target in both pictures.
198
+ */
199
+ exports.sketchCompareAnswer = withSketch('GET', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product, sketch }) {
200
+ var _b;
201
+ const variant = (_b = asked.url.searchParams.get('variant')) !== null && _b !== void 0 ? _b : '';
202
+ const { load, pictureOf } = asked;
203
+ if (!sketch.variants.includes(variant))
204
+ return failure(404, `${sketch.target} has no variant "${variant}"`);
205
+ if (!load || !pictureOf)
206
+ return failure(503, 'this server draws no pictures');
207
+ return {
208
+ status: 200,
209
+ body: yield (0, merge_compare_1.compareMerge)({
210
+ product,
211
+ sketch,
212
+ variant,
213
+ size: asked.url.searchParams.get('size'),
214
+ params: asked.url.searchParams,
215
+ pictureOf,
216
+ load: ({ file, product: name }) => load({ file, product: name, sketch: null }),
217
+ }),
218
+ };
219
+ }));
220
+ /**
221
+ * `?product=&sketch=&variant=&size=`: per state of the sketched part, the box of the pixels the variant changes
222
+ * against the product now, at rest, in the theme of `surface` and `color`.
223
+ */
224
+ exports.sketchDiffAnswer = withSketch('GET', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product, sketch }) {
225
+ var _b;
226
+ const variant = (_b = asked.url.searchParams.get('variant')) !== null && _b !== void 0 ? _b : '';
227
+ const { load, pictureOf, boxOf } = asked;
228
+ if (!sketch.variants.includes(variant))
229
+ return failure(404, `${sketch.target} has no variant "${variant}"`);
230
+ if (!load || !pictureOf || !boxOf)
231
+ return failure(503, 'this server draws no pictures');
232
+ return {
233
+ status: 200,
234
+ body: yield (0, variant_diff_1.diffVariant)({
235
+ product,
236
+ sketch,
237
+ variant,
238
+ size: asked.url.searchParams.get('size'),
239
+ params: asked.url.searchParams,
240
+ pictureOf,
241
+ boxOf,
242
+ load,
243
+ }),
244
+ };
245
+ }));
246
+ /**
247
+ * `?product=&sketch=&variants=a,b&size=`: `{ area }`, the one crop around every pixel the variants change in any state
248
+ * against the product now, at rest, and the frame it sits in; `area` is `null` when no pixel changes.
249
+ */
250
+ exports.sketchCropAnswer = withSketch('GET', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product, sketch }) {
251
+ var _b;
252
+ const variants = ((_b = asked.url.searchParams.get('variants')) !== null && _b !== void 0 ? _b : '').split(',').filter(Boolean);
253
+ const unknown = variants.find((variant) => !sketch.variants.includes(variant));
254
+ const { load, pictureOf, boxOf } = asked;
255
+ if (variants.length === 0)
256
+ return failure(400, 'variants names no variant');
257
+ if (unknown !== undefined)
258
+ return failure(404, `${sketch.target} has no variant "${unknown}"`);
259
+ if (!load || !pictureOf || !boxOf)
260
+ return failure(503, 'this server draws no pictures');
261
+ const diffs = yield Promise.all(variants.map((variant) => (0, variant_diff_1.diffVariant)({
262
+ product,
263
+ sketch,
264
+ variant,
265
+ size: asked.url.searchParams.get('size'),
266
+ params: asked.url.searchParams,
267
+ pictureOf,
268
+ boxOf,
269
+ load,
270
+ })));
271
+ return { status: 200, body: { area: (0, variant_diff_1.changedAreaOf)(diffs) } };
272
+ }));
273
+ /**
274
+ * POST `?product=&sketch=`, body `{ kind: 'pick', variant, comment? }`, `{ kind: 'discard', comment? }`, or a verdict
275
+ * by the designer on one variant: `{ kind: 'reject' | 'reopen', variant, reason? }` or `{ kind: 'reason', variant, reason }`.
276
+ * Writes it into sketch.json.
277
+ */
278
+ exports.sketchDecisionAnswer = withSketch('POST', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, sketch }) {
279
+ var _b;
280
+ const body = yield bodyOf(asked.request);
281
+ const kind = body === null || body === void 0 ? void 0 : body['kind'];
282
+ const comment = textOf(body === null || body === void 0 ? void 0 : body['comment']);
283
+ const reason = textOf(body === null || body === void 0 ? void 0 : body['reason']);
284
+ const variant = (_b = textOf(body === null || body === void 0 ? void 0 : body['variant'])) !== null && _b !== void 0 ? _b : '';
285
+ if (!SKETCH_DECISION_KINDS.includes(kind))
286
+ return failure(400, `kind must be one of ${SKETCH_DECISION_KINDS.join(', ')}`);
287
+ if (kind !== 'discard' && !variant)
288
+ return failure(400, `a ${kind} needs a variant`);
289
+ if (kind === 'reason' && !reason)
290
+ return failure(400, 'a reason needs text');
291
+ const decision = kind === 'discard'
292
+ ? Object.assign({ kind }, (comment ? { comment } : {})) : kind === 'pick'
293
+ ? Object.assign({ kind, variant }, (comment ? { comment } : {})) : { kind, variant, reason: reason !== null && reason !== void 0 ? reason : '', by: 'designer' };
294
+ const decided = (0, sketch_1.decideSketch)({ sketch, decision });
295
+ return typeof decided === 'string'
296
+ ? failure(422, decided)
297
+ : { status: 200, body: sketchOf({ sketch: decided, target: asked.target }) };
298
+ }));
299
+ /**
300
+ * POST `?product=&sketch=`, body `{ note? }`: merges the picked variant into the product, as `et design sketch merge` does.
301
+ * A merge refused for a stale baseline answers 422 with `changed` (the parts, `[]` without a baseline) and the `rebase` command.
302
+ */
303
+ exports.sketchMergeAnswer = withSketch('POST', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, config, product, sketch }) {
304
+ const body = yield bodyOf(asked.request);
305
+ const note = textOf(body === null || body === void 0 ? void 0 : body['note']);
306
+ const merged = (0, merge_1.mergeSketch)({ target: asked.target, config, product, sketch, note });
307
+ if (Array.isArray(merged))
308
+ return { status: 200, body: { merged } };
309
+ if (!merged.changed)
310
+ return failure(422, merged.reason);
311
+ return {
312
+ status: 422,
313
+ body: {
314
+ error: merged.reason,
315
+ changed: merged.changed,
316
+ rebase: `${(0, invocation_1.repoInvocation)({ root: asked.target, subcommand: 'design' })} sketch rebase ${sketch.target} --product ${product.name} --by <model id>`,
317
+ },
318
+ };
319
+ }));
320
+ /** POST `?product=&sketch=`: deletes the sketch with all its variants, as `et design sketch discard` does. */
321
+ exports.sketchDiscardAnswer = withSketch('POST', ({ asked, sketch }) => {
322
+ const problem = (0, merge_1.discardSketch)({ target: asked.target, sketch });
323
+ return problem ? failure(422, problem) : { status: 200, body: { discarded: sketch.target } };
324
+ });
325
+ /**
326
+ * `?product=[&part=<layer>/<name>]`: every comment with its `replies`, oldest first, each with the reason it
327
+ * is stale or `null`, its `threadState` (`agent`, `question` or `answered`) and, once closed, its `resolved`.
328
+ */
329
+ exports.commentsAnswer = withProduct('GET', ({ asked, product }) => {
330
+ const part = asked.url.searchParams.get('part');
331
+ const { comments, unreadable } = (0, comment_1.listComments)({ productDir: product.dir, product: product.name, all: true });
332
+ return {
333
+ status: 200,
334
+ body: {
335
+ comments: comments
336
+ .filter((comment) => !part || comment.part === part)
337
+ .map((comment) => commentOf({ comment, target: asked.target, product })),
338
+ unreadable: unreadable.map(({ file, problem }) => ({ file: (0, path_1.relative)(asked.target, file), problem })),
339
+ },
340
+ };
341
+ });
342
+ /** POST `?product=`, body `{ part, state, size, text, interaction?, point?: { x, y }, sketch?: { target, variant } }`: writes a canvas comment. */
343
+ exports.commentAnswer = withProduct('POST', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product }) {
344
+ const body = yield bodyOf(asked.request);
345
+ if (!body)
346
+ return failure(400, 'the body must be a JSON object');
347
+ const { part, state, size, text, interaction, point, sketch } = body;
348
+ const created = (0, comment_1.createComment)({
349
+ product,
350
+ comment: Object.assign(Object.assign(Object.assign({ part: part, state: state, size: size, text: text }, (interaction === undefined ? {} : { interaction: interaction })), (point === undefined ? {} : { point: point })), (sketch === undefined ? {} : { sketch: sketch })),
351
+ });
352
+ return typeof created === 'string'
353
+ ? failure(422, created)
354
+ : { status: 200, body: commentOf({ comment: created, target: asked.target, product }) };
355
+ }));
356
+ /** POST `?product=`, body `{ id, note? }`: the user resolves an open or addressed comment in Studio. */
357
+ exports.commentDoneAnswer = withProduct('POST', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product }) {
358
+ const body = yield bodyOf(asked.request);
359
+ const id = textOf(body === null || body === void 0 ? void 0 : body['id']);
360
+ if (!id)
361
+ return failure(400, 'the body must be { id, note? }');
362
+ const done = (0, comment_1.resolveComment)({
363
+ products: [{ name: product.name, dir: product.dir }],
364
+ id,
365
+ note: textOf(body === null || body === void 0 ? void 0 : body['note']),
366
+ });
367
+ return typeof done === 'string'
368
+ ? failure(done.startsWith('no open comment') ? 404 : 422, done)
369
+ : { status: 200, body: { id: done.id } };
370
+ }));
371
+ /** POST `?product=`, body `{ id }`: deletes a comment without a note, as the user withdraws it in Studio. */
372
+ exports.commentWithdrawAnswer = withProduct('POST', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product }) {
373
+ const body = yield bodyOf(asked.request);
374
+ const id = textOf(body === null || body === void 0 ? void 0 : body['id']);
375
+ if (!id)
376
+ return failure(400, 'the body must be { id }');
377
+ const deleted = (0, comment_1.deleteComment)({ products: [{ name: product.name, dir: product.dir }], id });
378
+ return typeof deleted === 'string' ? failure(404, deleted) : { status: 200, body: { id: deleted.id } };
379
+ }));
380
+ /** POST `?product=`, body `{ id, text }`: adds a reply by the user to a comment thread. Answers with the updated comment. */
381
+ exports.commentReplyAnswer = withProduct('POST', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product }) {
382
+ const body = yield bodyOf(asked.request);
383
+ const id = textOf(body === null || body === void 0 ? void 0 : body['id']);
384
+ const text = textOf(body === null || body === void 0 ? void 0 : body['text']);
385
+ if (!id || !text)
386
+ return failure(400, 'the body must be { id, text }');
387
+ const replied = (0, comment_1.replyToComment)({ products: [{ name: product.name, dir: product.dir }], id, by: 'user', text });
388
+ return typeof replied === 'string'
389
+ ? failure(replied.startsWith('no open comment') ? 404 : 422, replied)
390
+ : { status: 200, body: commentOf({ comment: replied, target: asked.target, product }) };
391
+ }));
392
+ /** `?product=`: the product's flows by name, each with its frames, its lines and what the flow rule finds in it. */
393
+ exports.flowsAnswer = withProduct('GET', ({ asked, product }) => {
394
+ const { flows, unreadable } = (0, flow_1.listFlows)(product.dir);
395
+ const problems = (0, flow_2.flowProblemsOf)(product);
396
+ return {
397
+ status: 200,
398
+ body: {
399
+ flows: flows.map((_a) => {
400
+ var { file } = _a, flow = __rest(_a, ["file"]);
401
+ return (Object.assign(Object.assign({}, flow), { file: (0, path_1.relative)(asked.target, file), problems: problems
402
+ .filter((problem) => problem.file === file)
403
+ .map((problem) => problemOf({ target: asked.target, problem })) }));
404
+ }),
405
+ unreadable: unreadable.map(({ file, problem }) => ({ file: (0, path_1.relative)(asked.target, file), problem })),
406
+ },
407
+ };
408
+ });
409
+ const noteOf = ({ note, target, product }) => {
410
+ const { file } = note, rest = __rest(note, ["file"]);
411
+ return Object.assign(Object.assign({}, rest), { file: (0, path_1.relative)(target, file), stale: (0, note_1.noteProblemOf)({ product, note }) });
412
+ };
413
+ const changeOf = (body, place) => (Object.assign(Object.assign({}, (body['text'] === undefined ? {} : { text: body['text'] })), (body[place] === undefined ? {} : { [place]: body[place] })));
414
+ const missingNoteStatusOf = (problem) => (/^no (note|flow) |has no note /u.test(problem) ? 404 : 422);
415
+ /** `?product=`: the notes on the product's states, each with the reason its part or state is gone, or `null`. */
416
+ exports.notesAnswer = withProduct('GET', ({ asked, product }) => {
417
+ const { notes, unreadable } = (0, note_1.listNotes)(product.dir);
418
+ return {
419
+ status: 200,
420
+ body: {
421
+ notes: notes.map((note) => noteOf({ note, target: asked.target, product })),
422
+ unreadable: unreadable.map(({ file, problem }) => ({ file: (0, path_1.relative)(asked.target, file), problem })),
423
+ },
424
+ };
425
+ });
426
+ /** POST `?product=`, body `{ part, state, text, point?: { x, y }, size? }`: writes a note on a state into `<product>/notes/`; a point needs its size. */
427
+ exports.noteAnswer = withProduct('POST', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product }) {
428
+ const body = yield bodyOf(asked.request);
429
+ if (!body)
430
+ return failure(400, 'the body must be a JSON object');
431
+ const { part, state, text, point, size } = body;
432
+ const created = (0, note_1.createNote)({
433
+ product,
434
+ note: Object.assign(Object.assign({ part: part, state: state, text: text }, (point === undefined ? {} : { point: point })), (size === undefined ? {} : { size: size })),
435
+ });
436
+ return typeof created === 'string'
437
+ ? failure(422, created)
438
+ : { status: 200, body: noteOf({ note: created, target: asked.target, product }) };
439
+ }));
440
+ /** POST `?product=`, body `{ id, text?, point?: { x, y } | null, size? }`: changes a note on a state; `point: null` drops its point and size. */
441
+ exports.noteChangeAnswer = withProduct('POST', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product }) {
442
+ const body = yield bodyOf(asked.request);
443
+ const id = textOf(body === null || body === void 0 ? void 0 : body['id']);
444
+ if (!body || !id)
445
+ return failure(400, 'the body must be { id, text?, point? }');
446
+ const change = Object.assign(Object.assign({}, changeOf(body, 'point')), (body['size'] === undefined ? {} : { size: body['size'] }));
447
+ const changed = (0, note_1.changeNote)({ productDir: product.dir, id, change });
448
+ return typeof changed === 'string'
449
+ ? failure(missingNoteStatusOf(changed), changed)
450
+ : { status: 200, body: noteOf({ note: changed, target: asked.target, product }) };
451
+ }));
452
+ /** POST `?product=`, body `{ id }`: deletes a note on a state. */
453
+ exports.noteDeleteAnswer = withProduct('POST', (_a) => __awaiter(void 0, [_a], void 0, function* ({ asked, product }) {
454
+ const body = yield bodyOf(asked.request);
455
+ const id = textOf(body === null || body === void 0 ? void 0 : body['id']);
456
+ if (!id)
457
+ return failure(400, 'the body must be { id }');
458
+ const deleted = (0, note_1.deleteNote)({ productDir: product.dir, id });
459
+ return typeof deleted === 'string' ? failure(missingNoteStatusOf(deleted), deleted) : { status: 200, body: { id } };
460
+ }));
461
+ const withFlowNote = (run) => withProduct('POST', (found) => __awaiter(void 0, void 0, void 0, function* () {
462
+ const name = found.asked.url.searchParams.get('flow');
463
+ const body = yield bodyOf(found.asked.request);
464
+ if (!name)
465
+ return failure(400, 'flow is required');
466
+ if (!body)
467
+ return failure(400, 'the body must be a JSON object');
468
+ const answer = run(Object.assign(Object.assign({}, found), { name, body }));
469
+ return typeof answer === 'string' ? failure(missingNoteStatusOf(answer), answer) : { status: 200, body: answer };
470
+ }));
471
+ /** POST `?product=&flow=`, body `{ text, at?: { x, y } }`: adds a free note to `<product>/flows/<flow>.json`. */
472
+ exports.flowNoteAnswer = withFlowNote(({ product, name, body }) => (0, flow_1.addFlowNote)({
473
+ productDir: product.dir,
474
+ name,
475
+ note: Object.assign({ text: body['text'] }, (body['at'] === undefined ? {} : { at: body['at'] })),
476
+ }));
477
+ /** POST `?product=&flow=`, body `{ id, text?, at?: { x, y } | null }`: changes a free note of a flow; `at: null` lets Studio place it. */
478
+ exports.flowNoteChangeAnswer = withFlowNote(({ product, name, body }) => {
479
+ var _a;
480
+ return (0, flow_1.changeFlowNote)({
481
+ productDir: product.dir,
482
+ name,
483
+ id: String((_a = body['id']) !== null && _a !== void 0 ? _a : ''),
484
+ change: changeOf(body, 'at'),
485
+ });
486
+ });
487
+ /** POST `?product=&flow=`, body `{ id }`: deletes a free note of a flow. */
488
+ exports.flowNoteDeleteAnswer = withFlowNote(({ product, name, body }) => { var _a; return (0, flow_1.deleteFlowNote)({ productDir: product.dir, name, id: String((_a = body['id']) !== null && _a !== void 0 ? _a : '') }); });
489
+ //# sourceMappingURL=studio-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studio-api.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/studio-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const ACCEPT_USAGE = "accept <layer>/<name> --product <name> --by <model id> --note <why the user approved the direct edit>";
2
+ /** `et design accept <layer>/<name> …` records a direct edit of a merged part the user approved, so check stops warning of it. */
3
+ export declare const designAccept: (options: {
4
+ target: string;
5
+ argv: string[];
6
+ invocation: string;
7
+ }) => 0 | 1 | 2;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.designAccept = exports.ACCEPT_USAGE = void 0;
4
+ const resolve_product_1 = require("./resolve-product");
5
+ const cli_args_1 = require("./sketch/cli-args");
6
+ const merged_parts_1 = require("./sketch/merged-parts");
7
+ const sketch_1 = require("./sketch/sketch");
8
+ exports.ACCEPT_USAGE = 'accept <layer>/<name> --product <name> --by <model id> --note <why the user approved the direct edit>';
9
+ /** `et design accept <layer>/<name> …` records a direct edit of a merged part the user approved, so check stops warning of it. */
10
+ const designAccept = (options) => {
11
+ var _a;
12
+ const { target, argv, invocation } = options;
13
+ const args = (0, cli_args_1.argsOf)(argv, ['--product', '--by', '--note']);
14
+ const usage = `usage: ${invocation} ${exports.ACCEPT_USAGE}`;
15
+ if (typeof args === 'string') {
16
+ console.error(args);
17
+ console.error(usage);
18
+ return 2;
19
+ }
20
+ const by = (0, cli_args_1.authorOf)(args);
21
+ const note = (_a = args.values['--note']) === null || _a === void 0 ? void 0 : _a.trim();
22
+ if (by === null || !note || args.positional.length !== 1) {
23
+ if (by === null)
24
+ console.error(`accept ${cli_args_1.NEEDS_AUTHOR}`);
25
+ if (!note)
26
+ console.error('accept needs --note <why the user approved the direct edit>');
27
+ console.error(usage);
28
+ return 2;
29
+ }
30
+ const config = (0, cli_args_1.configOf)(target);
31
+ if (typeof config === 'string') {
32
+ console.error(config);
33
+ return 1;
34
+ }
35
+ const parsed = (0, sketch_1.parseTarget)(args.positional[0]);
36
+ if (typeof parsed === 'string') {
37
+ console.error(parsed);
38
+ return 1;
39
+ }
40
+ const product = (0, cli_args_1.oneProductOf)({ target, config, asked: args.values['--product'] });
41
+ if (typeof product === 'string') {
42
+ console.error(product);
43
+ return 1;
44
+ }
45
+ const part = (0, resolve_product_1.partKeyOf)(parsed);
46
+ const problem = (0, merged_parts_1.acceptPart)({ product, part, by, note });
47
+ if (problem) {
48
+ console.error(problem);
49
+ return 1;
50
+ }
51
+ console.log(`accepted the direct edit of ${part} in ${product.name}`);
52
+ return 0;
53
+ };
54
+ exports.designAccept = designAccept;
55
+ //# sourceMappingURL=accept-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accept-command.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/accept-command.ts"],"names":[],"mappings":";;;AAAA,uDAA8C;AAC9C,gDAA2F;AAC3F,wDAAmD;AACnD,4CAA8C;AAEjC,QAAA,YAAY,GACvB,uGAAuG,CAAC;AAE1G,kIAAkI;AAC3H,MAAM,YAAY,GAAG,CAAC,OAA+D,EAAE,EAAE;;IAC9F,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAA,iBAAM,EAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,UAAU,UAAU,IAAI,oBAAY,EAAE,CAAC;IAErD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAErB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,EAAE,GAAG,IAAA,mBAAQ,EAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,0CAAE,IAAI,EAAE,CAAC;IAE3C,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,CAAC,KAAK,CAAC,UAAU,uBAAY,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAExF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAErB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,mBAAQ,EAAC,MAAM,CAAC,CAAC;IAEhC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEtB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEtB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,uBAAY,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAElF,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEvB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,IAAA,2BAAS,EAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAA,yBAAU,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAExD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEvB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAEtE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AA5DW,QAAA,YAAY,gBA4DvB"}
@@ -0,0 +1,34 @@
1
+ import { ProductSource } from './base';
2
+ export declare const ASSETS_PREFIX = "@assets/";
3
+ export declare const ASSETS_FOLDER = "assets";
4
+ type AssetSource = Pick<ProductSource, 'dir'> & {
5
+ base: Pick<ProductSource, 'dir'> | null;
6
+ assetsDir?: string;
7
+ };
8
+ /** The `@assets/` path of a specifier without its query, or `null` for any other import. */
9
+ export declare const assetPathOf: (specifier: string) => string | null;
10
+ /** The folders `@assets/` looks in, first match wins: a sketch variant's own, the product's, its base product's. */
11
+ export declare const assetDirsOf: (product: AssetSource) => string[];
12
+ export declare const assetFileOf: (options: {
13
+ product: AssetSource;
14
+ path: string;
15
+ }) => string | null;
16
+ /** A `url(@assets/<file>)` in a stylesheet; the second group is the file's path, without a query or fragment. */
17
+ export declare const ASSET_URL: RegExp;
18
+ export declare const cssAssetPathsOf: (css: string) => string[];
19
+ /** The `@assets/` paths a source file imports. */
20
+ export declare const assetImportsOf: (source: string) => string[];
21
+ /** Every file in a folder and below it, sorted by path, `[]` when it does not exist. */
22
+ export declare const filesBelow: (dir: string) => string[];
23
+ /**
24
+ * The asset files the files of a part folder use, as the product resolves them, sorted by path: the `@assets/`
25
+ * imports of its source files and the `url(@assets/...)` of its stylesheets.
26
+ */
27
+ export declare const importedAssetsOf: (options: {
28
+ product: AssetSource;
29
+ files: string[];
30
+ }) => {
31
+ path: string;
32
+ file: string;
33
+ }[];
34
+ export {};