@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,104 @@
1
+ import { Interaction } from '../force-interactions';
2
+ import { DesignPreset } from '../paths';
3
+ import { Problem } from './problem';
4
+ import { PartOrigin, ResolvedPart } from './resolve-product';
5
+ import { SystemModules } from './system-modules';
6
+ export declare const SYSTEM_PATH = "/__design/system";
7
+ export type ListedPart = {
8
+ layer: string;
9
+ name: string;
10
+ origin: PartOrigin;
11
+ note: string | null;
12
+ /** The model ids that drew the part, written by the last sketch merge; empty when none is known. */
13
+ madeBy: string[];
14
+ states: string[];
15
+ /** The container widths the part is drawn at, when it declares valid ones. */
16
+ widths?: number[];
17
+ /** The interactions the part is drawn in besides rest, in the order it declares them. */
18
+ interactions: Interaction[];
19
+ /** The states the part draws as one table in rest, when it declares a `grid` that places any. */
20
+ grid?: ListedGrid;
21
+ /** The calls of wireframe kit parts in a page's source; a page with any is a wireframe. */
22
+ kitUses: number;
23
+ /** The pages that import the part, directly or through another part: of its own product, and of each product that draws it as its base part. */
24
+ usedIn: PageUse[];
25
+ /** Whether the part changed since its last sketch merge while no open sketch holds it. */
26
+ changedOutsideSketch: boolean;
27
+ problems: Problem[];
28
+ };
29
+ export type ListedGrid = {
30
+ columns: string[];
31
+ rows: string[];
32
+ cells: {
33
+ row: string;
34
+ column: string;
35
+ state: string;
36
+ }[];
37
+ };
38
+ export type PageUse = {
39
+ product: string;
40
+ part: string;
41
+ };
42
+ export type ListedProduct = {
43
+ name: string;
44
+ base: string | null;
45
+ presets: Record<string, DesignPreset>;
46
+ themes: {
47
+ surface: string[];
48
+ color: string[];
49
+ };
50
+ parts: ListedPart[];
51
+ problems: Problem[];
52
+ };
53
+ /** Answers with the module of a part file as one product draws it. */
54
+ export type PartLoader = (options: {
55
+ file: string;
56
+ product: string;
57
+ }) => Promise<unknown>;
58
+ /** The cells of a declared grid that name a listed column and a known state, each state in its first cell only. */
59
+ export declare const gridOf: (grid: unknown, states: string[]) => Pick<ListedPart, "grid">;
60
+ export declare const gridReportOf: (grid: unknown, states: string[]) => {
61
+ line: string;
62
+ problems: string[];
63
+ warnings: string[];
64
+ } | null;
65
+ /** The note, state names, widths, interactions and grid a part module declares, or the problem that kept it from loading. */
66
+ export declare const readPartModule: (options: {
67
+ part: Pick<ResolvedPart, "file">;
68
+ product: string;
69
+ load: PartLoader;
70
+ }) => Promise<{
71
+ note: null;
72
+ madeBy: never[];
73
+ states: never[];
74
+ interactions: never[];
75
+ problem: string;
76
+ } | {
77
+ problem: null;
78
+ grid?: ListedGrid | undefined;
79
+ interactions: ("hover" | "focus-visible" | "active" | "disabled")[];
80
+ widths: number[];
81
+ note: string | null;
82
+ madeBy: string[];
83
+ states: string[];
84
+ } | {
85
+ problem: null;
86
+ grid?: ListedGrid | undefined;
87
+ interactions: ("hover" | "focus-visible" | "active" | "disabled")[];
88
+ widths?: undefined;
89
+ note: string | null;
90
+ madeBy: string[];
91
+ states: string[];
92
+ }>;
93
+ /**
94
+ * Each named product of a workspace with its own theme names and its resolved parts: where each
95
+ * comes from, its note, the names of its states, and the problems the rules and the loading of its
96
+ * module find in it. Base parts draw under the product's themes, so a base's themes are not inherited.
97
+ * Problem files are relative to the workspace.
98
+ */
99
+ export declare const listSystem: (options: {
100
+ target: string;
101
+ system: SystemModules;
102
+ products: string[];
103
+ load: PartLoader;
104
+ }) => Promise<ListedProduct[]>;
@@ -0,0 +1,212 @@
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 __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
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.listSystem = exports.readPartModule = exports.gridReportOf = exports.gridOf = exports.SYSTEM_PATH = void 0;
24
+ const path_1 = require("path");
25
+ const force_interactions_1 = require("../force-interactions");
26
+ const check_system_1 = require("./check-system");
27
+ const imports_1 = require("./imports");
28
+ const kit_1 = require("./kit");
29
+ const resolve_product_1 = require("./resolve-product");
30
+ const merged_parts_1 = require("./sketch/merged-parts");
31
+ exports.SYSTEM_PATH = '/__design/system';
32
+ const madeByOf = (madeBy) => Array.isArray(madeBy) ? madeBy.filter((author) => typeof author === 'string' && author !== '') : [];
33
+ const widthsOf = (widths) => Array.isArray(widths) &&
34
+ widths.length > 0 &&
35
+ widths.every((width) => typeof width === 'number' && Number.isFinite(width) && width > 0)
36
+ ? { widths: widths }
37
+ : {};
38
+ const isInteraction = (name) => force_interactions_1.INTERACTIONS.some((known) => known === name);
39
+ const interactionsOf = (interactions) => Array.isArray(interactions) ? [...new Set(interactions.filter(isInteraction))] : [];
40
+ const isRecord = (value) => typeof value === 'object' && value !== null;
41
+ /** The cells of a declared grid that name a listed column and a known state, each state in its first cell only. */
42
+ const gridOf = (grid, states) => {
43
+ if (!isRecord(grid) || !Array.isArray(grid['columns']) || !isRecord(grid['rows']))
44
+ return {};
45
+ const columns = [...new Set(grid['columns'].filter((column) => typeof column === 'string'))];
46
+ const placed = new Set();
47
+ const cells = Object.entries(grid['rows']).flatMap(([row, cellsOfRow]) => isRecord(cellsOfRow)
48
+ ? columns.flatMap((column) => {
49
+ const state = cellsOfRow[column];
50
+ if (typeof state !== 'string' || !states.includes(state) || placed.has(state))
51
+ return [];
52
+ placed.add(state);
53
+ return [{ row, column, state }];
54
+ })
55
+ : []);
56
+ if (cells.length === 0)
57
+ return {};
58
+ return { grid: { columns, rows: [...new Set(cells.map((cell) => cell.row))], cells } };
59
+ };
60
+ exports.gridOf = gridOf;
61
+ const countOf = (count, noun) => `${count} ${noun}${count === 1 ? '' : 's'}`;
62
+ /**
63
+ * The summary line of a part's `grid` and the problems that fail it: a state in two cells, a cell
64
+ * naming no state. `null` when the part declares no grid.
65
+ */
66
+ const isInteractionColumn = (column) => column === 'rest' || force_interactions_1.INTERACTIONS.some((interaction) => interaction === column);
67
+ const coverageWarningsOf = (columns, rows) => {
68
+ var _a;
69
+ const interactions = columns.filter(isInteractionColumn);
70
+ if (interactions.length < 2)
71
+ return [];
72
+ const filled = rows.map(([row, cells]) => {
73
+ const has = (column) => isRecord(cells) && typeof cells[column] === 'string';
74
+ return {
75
+ row,
76
+ missing: interactions.filter((column) => !has(column)),
77
+ interactive: interactions.some((column) => column !== 'rest' && has(column)),
78
+ };
79
+ });
80
+ const full = filled.filter(({ missing }) => missing.length === 0).map(({ row }) => row);
81
+ const partial = filled.filter(({ missing, interactive }) => interactive && missing.length > 0);
82
+ if (full.length === 0 || partial.length === 0)
83
+ return [];
84
+ const byMissing = new Map();
85
+ for (const { row, missing } of partial)
86
+ byMissing.set(missing.join(', '), [...((_a = byMissing.get(missing.join(', '))) !== null && _a !== void 0 ? _a : []), row]);
87
+ const skips = [...byMissing].map(([missing, skipping]) => skipping.length === 1
88
+ ? `row ${skipping[0]} leaves out ${missing}`
89
+ : `rows ${skipping.join(', ')} leave out ${missing}`);
90
+ return [
91
+ `grid ${skips.join('; ')}, which ${full.join(', ')} ${full.length === 1 ? 'fills' : 'fill'} - a state can break there unseen`,
92
+ ];
93
+ };
94
+ const gridReportOf = (grid, states) => {
95
+ var _a;
96
+ if (!isRecord(grid) || !Array.isArray(grid['columns']) || !isRecord(grid['rows']))
97
+ return null;
98
+ const columns = grid['columns'].filter((column) => typeof column === 'string');
99
+ const rows = Object.entries(grid['rows']);
100
+ const cellsOf = new Map();
101
+ const problems = [];
102
+ for (const [row, cells] of rows)
103
+ for (const column of columns) {
104
+ const state = isRecord(cells) ? cells[column] : undefined;
105
+ if (typeof state !== 'string')
106
+ continue;
107
+ if (!states.includes(state))
108
+ problems.push(`grid cell ${row} ${column} names ${state}, which is no state`);
109
+ else
110
+ cellsOf.set(state, [...((_a = cellsOf.get(state)) !== null && _a !== void 0 ? _a : []), `${row} ${column}`]);
111
+ }
112
+ const twice = [...cellsOf].flatMap(([state, cells]) => cells.length > 1
113
+ ? [
114
+ `grid names the state ${state} ${cells.length === 2 ? 'twice' : `${cells.length} times`} (${cells.join(', ')})`,
115
+ ]
116
+ : []);
117
+ const left = states.filter((state) => !cellsOf.has(state));
118
+ const size = `grid ${countOf(rows.length, 'row')} x ${countOf(columns.length, 'column')}`;
119
+ return {
120
+ line: left.length === 0 ? `${size} ok` : `${size}, leaves out ${left.join(', ')}`,
121
+ problems: [...twice, ...problems],
122
+ warnings: coverageWarningsOf(columns, rows),
123
+ };
124
+ };
125
+ exports.gridReportOf = gridReportOf;
126
+ const pageReachOf = (system) => system.products().flatMap((name) => {
127
+ const product = system.productOf(name);
128
+ if (!product)
129
+ return [];
130
+ const tokenParts = new Set((0, resolve_product_1.tokenPartsOf)(product.config));
131
+ const tokens = product.parts.filter((part) => tokenParts.has((0, resolve_product_1.partKeyOf)(part)));
132
+ return product.parts
133
+ .filter((part) => part.layer === 'pages')
134
+ .map((page) => ({
135
+ use: { product: name, part: (0, resolve_product_1.partKeyOf)(page) },
136
+ files: new Set([...(0, imports_1.partsReachedFrom)({ product, from: page }), ...tokens].map((part) => part.file)),
137
+ }));
138
+ });
139
+ const belongsTo = (part, problem) => problem.file === part.file || problem.file.startsWith(`${(0, path_1.dirname)(part.file)}${path_1.sep}`);
140
+ /** The note, state names, widths, interactions and grid a part module declares, or the problem that kept it from loading. */
141
+ const readPartModule = (options) => __awaiter(void 0, void 0, void 0, function* () {
142
+ const { part, product, load } = options;
143
+ try {
144
+ const loaded = (yield load({ file: part.file, product })).default;
145
+ const states = loaded === null || loaded === void 0 ? void 0 : loaded.states;
146
+ if (!states || typeof states !== 'object') {
147
+ return {
148
+ note: null,
149
+ madeBy: [],
150
+ states: [],
151
+ interactions: [],
152
+ problem: 'default-exports no definePart({ note, states, render })',
153
+ };
154
+ }
155
+ const names = Object.keys(states);
156
+ return Object.assign(Object.assign(Object.assign(Object.assign({ note: typeof loaded.note === 'string' ? loaded.note : null, madeBy: madeByOf(loaded.madeBy), states: names }, widthsOf(loaded.widths)), { interactions: interactionsOf(loaded.interactions) }), (0, exports.gridOf)(loaded.grid, names)), { problem: null });
157
+ }
158
+ catch (error) {
159
+ return {
160
+ note: null,
161
+ madeBy: [],
162
+ states: [],
163
+ interactions: [],
164
+ problem: error instanceof Error ? error.message : String(error),
165
+ };
166
+ }
167
+ });
168
+ exports.readPartModule = readPartModule;
169
+ /**
170
+ * Each named product of a workspace with its own theme names and its resolved parts: where each
171
+ * comes from, its note, the names of its states, and the problems the rules and the loading of its
172
+ * module find in it. Base parts draw under the product's themes, so a base's themes are not inherited.
173
+ * Problem files are relative to the workspace.
174
+ */
175
+ const listSystem = (options) => __awaiter(void 0, void 0, void 0, function* () {
176
+ const { target, system, products, load } = options;
177
+ const relativeTo = (problem) => (Object.assign(Object.assign({}, problem), { file: (0, path_1.relative)(target, problem.file) }));
178
+ const pages = pageReachOf(system);
179
+ const usedInOf = (part) => pages.filter(({ files }) => files.has(part.file)).map(({ use }) => use);
180
+ return Promise.all(products.flatMap((name) => {
181
+ const product = system.productOf(name);
182
+ if (!product)
183
+ return [];
184
+ const problems = (0, check_system_1.ruleProblemsOf)(product);
185
+ const changedOutsideSketch = new Set((0, merged_parts_1.changedOutsideSketchOf)(product));
186
+ return [
187
+ (() => __awaiter(void 0, void 0, void 0, function* () {
188
+ var _a, _b, _c, _d, _e;
189
+ return ({
190
+ name,
191
+ base: (_a = product.config.base) !== null && _a !== void 0 ? _a : null,
192
+ presets: product.presets,
193
+ themes: { surface: (_c = (_b = product.config.themes) === null || _b === void 0 ? void 0 : _b.surface) !== null && _c !== void 0 ? _c : [], color: (_e = (_d = product.config.themes) === null || _d === void 0 ? void 0 : _d.color) !== null && _e !== void 0 ? _e : [] },
194
+ parts: yield Promise.all(product.parts.map((part) => __awaiter(void 0, void 0, void 0, function* () {
195
+ const _a = yield (0, exports.readPartModule)({
196
+ part,
197
+ product: name,
198
+ load,
199
+ }), { note, madeBy, states, interactions, problem } = _a, layout = __rest(_a, ["note", "madeBy", "states", "interactions", "problem"]);
200
+ const own = problems.filter((found) => belongsTo(part, found));
201
+ return Object.assign(Object.assign({ layer: part.layer, name: part.name, origin: part.origin, note,
202
+ madeBy,
203
+ states }, layout), { interactions, kitUses: part.layer === 'pages' ? (0, kit_1.kitUsesOf)(part.source) : 0, usedIn: usedInOf(part), changedOutsideSketch: changedOutsideSketch.has((0, resolve_product_1.partKeyOf)(part)), problems: [...own, ...(problem ? [{ rule: 'LOAD', file: part.file, message: problem }] : [])].map(relativeTo) });
204
+ }))),
205
+ problems: problems.filter((found) => !product.parts.some((part) => belongsTo(part, found))).map(relativeTo),
206
+ });
207
+ }))(),
208
+ ];
209
+ }));
210
+ });
211
+ exports.listSystem = listSystem;
212
+ //# sourceMappingURL=list-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-system.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/list-system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { CommentPoint, CommentSize } from '../comments/comment';
2
+ import { ResolvedProduct } from '../resolve-product';
3
+ /** A note on a state of a part; a pointed note names the `size` it was written at and shows only there. */
4
+ export type NoteFile = {
5
+ part: string;
6
+ state: string;
7
+ point?: CommentPoint;
8
+ size?: CommentSize;
9
+ text: string;
10
+ };
11
+ export type DesignNote = NoteFile & {
12
+ id: string;
13
+ file: string;
14
+ };
15
+ /** What a change sets: a new text, a new point at a size, or `point: null` to pin the note to the whole state. */
16
+ export type NoteChange = {
17
+ text?: string;
18
+ point?: CommentPoint | null;
19
+ size?: CommentSize;
20
+ };
21
+ export declare const notesDirOf: (productDir: string) => string;
22
+ /** A new note id: the time it was written and a random suffix, as comment ids are. */
23
+ export declare const newNoteId: () => string;
24
+ export declare const MISSING_NOTE_SIZE = "a pointed note needs the size it was written at - add size: a preset name, a width in CSS pixels or \"fitted\"";
25
+ /** Why a note points at nothing: its part, state or size is gone, or a pointed note names no size. `null` when it does. */
26
+ export declare const noteProblemOf: (options: {
27
+ product: ResolvedProduct;
28
+ note: NoteFile;
29
+ }) => string | null;
30
+ /** Every note on a state of a product, `<product>/notes/<id>.json`; a file that cannot be read answers with its problem. */
31
+ export declare const listNotes: (productDir: string) => {
32
+ notes: DesignNote[];
33
+ unreadable: {
34
+ file: string;
35
+ problem: string;
36
+ }[];
37
+ };
38
+ /** Writes a note on a state of a part, or answers with why it cannot: a bad shape or a part or state that is gone. */
39
+ export declare const createNote: (options: {
40
+ product: ResolvedProduct;
41
+ note: NoteFile;
42
+ }) => DesignNote | string;
43
+ /** Changes the text or the point of a note and keeps the rest of it. Answers with the changed note. */
44
+ export declare const changeNote: (options: {
45
+ productDir: string;
46
+ id: string;
47
+ change: NoteChange;
48
+ }) => DesignNote | string;
49
+ /** Deletes a note by its id. Answers with the deleted note. */
50
+ export declare const deleteNote: (options: {
51
+ productDir: string;
52
+ id: string;
53
+ }) => DesignNote | string;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.deleteNote = exports.changeNote = exports.createNote = exports.listNotes = exports.noteProblemOf = exports.MISSING_NOTE_SIZE = exports.newNoteId = exports.notesDirOf = void 0;
15
+ const crypto_1 = require("crypto");
16
+ const fs_1 = require("fs");
17
+ const path_1 = require("path");
18
+ const comment_1 = require("../comments/comment");
19
+ const NOTE_ID = /^[A-Za-z0-9-]+$/u;
20
+ const notesDirOf = (productDir) => (0, path_1.resolve)(productDir, 'notes');
21
+ exports.notesDirOf = notesDirOf;
22
+ /** A new note id: the time it was written and a random suffix, as comment ids are. */
23
+ const newNoteId = () => `${new Date()
24
+ .toISOString()
25
+ .replace(/[-:]/gu, '')
26
+ .replace(/\.\d+Z$/u, 'Z')}-${(0, crypto_1.randomBytes)(2).toString('hex')}`;
27
+ exports.newNoteId = newNoteId;
28
+ const SIZE_PROBLEM = `size must be a preset name, a width in CSS pixels or "${comment_1.FITTED}"`;
29
+ exports.MISSING_NOTE_SIZE = `a pointed note needs the size it was written at - add size: a preset name, a width in CSS pixels or "${comment_1.FITTED}"`;
30
+ const shapeProblemOf = (value) => {
31
+ for (const key of ['part', 'state', 'text'])
32
+ if (typeof value[key] !== 'string' || value[key].trim() === '')
33
+ return `${key} must be a non-empty string`;
34
+ if (value.point !== undefined && !(0, comment_1.isPoint)(value.point))
35
+ return 'point must be { x, y } in CSS pixels, both >= 0';
36
+ return value.size !== undefined && !(0, comment_1.isSize)(value.size) ? SIZE_PROBLEM : null;
37
+ };
38
+ /** Why a note points at nothing: its part, state or size is gone, or a pointed note names no size. `null` when it does. */
39
+ const noteProblemOf = (options) => {
40
+ var _a, _b;
41
+ const { product, note } = options;
42
+ return ((_b = (_a = (0, comment_1.goneStateOf)({ product, part: note.part, state: note.state })) !== null && _a !== void 0 ? _a : (note.point && note.size === undefined ? exports.MISSING_NOTE_SIZE : null)) !== null && _b !== void 0 ? _b : (note.point && note.size !== undefined ? (0, comment_1.goneSizeOf)({ product, part: note.part, size: note.size }) : null));
43
+ };
44
+ exports.noteProblemOf = noteProblemOf;
45
+ const writeNote = (file, note) => (0, fs_1.writeFileSync)(file, `${JSON.stringify(note, null, 2)}\n`);
46
+ /** Every note on a state of a product, `<product>/notes/<id>.json`; a file that cannot be read answers with its problem. */
47
+ const listNotes = (productDir) => {
48
+ const dir = (0, exports.notesDirOf)(productDir);
49
+ const files = (0, fs_1.existsSync)(dir) ? (0, fs_1.readdirSync)(dir).filter((name) => name.endsWith('.json')) : [];
50
+ const read = files.sort().map((name) => {
51
+ const file = (0, path_1.resolve)(dir, name);
52
+ try {
53
+ const parsed = JSON.parse((0, fs_1.readFileSync)(file, 'utf8'));
54
+ const problem = shapeProblemOf(parsed);
55
+ return problem ? { file, problem } : Object.assign(Object.assign({}, parsed), { id: name.slice(0, -'.json'.length), file });
56
+ }
57
+ catch (error) {
58
+ return { file, problem: `is no JSON: ${error instanceof Error ? error.message : String(error)}` };
59
+ }
60
+ });
61
+ return {
62
+ notes: read.filter((entry) => !('problem' in entry)),
63
+ unreadable: read.filter((entry) => 'problem' in entry),
64
+ };
65
+ };
66
+ exports.listNotes = listNotes;
67
+ /** Writes a note on a state of a part, or answers with why it cannot: a bad shape or a part or state that is gone. */
68
+ const createNote = (options) => {
69
+ var _a;
70
+ const { product } = options;
71
+ const { part, state, point, size, text } = options.note;
72
+ const note = Object.assign(Object.assign({ part,
73
+ state }, (point === undefined ? {} : Object.assign({ point }, (size === undefined ? {} : { size })))), { text });
74
+ const problem = (_a = shapeProblemOf(note)) !== null && _a !== void 0 ? _a : (0, exports.noteProblemOf)({ product, note });
75
+ if (problem)
76
+ return problem;
77
+ const dir = (0, exports.notesDirOf)(product.dir);
78
+ const id = (0, exports.newNoteId)();
79
+ const file = (0, path_1.resolve)(dir, `${id}.json`);
80
+ (0, fs_1.mkdirSync)(dir, { recursive: true });
81
+ writeNote(file, note);
82
+ return Object.assign(Object.assign({}, note), { id, file });
83
+ };
84
+ exports.createNote = createNote;
85
+ const findNote = (productDir, id) => {
86
+ var _a;
87
+ if (!NOTE_ID.test(id))
88
+ return `"${id}" is no note id`;
89
+ return (_a = (0, exports.listNotes)(productDir).notes.find((note) => note.id === id)) !== null && _a !== void 0 ? _a : `no note "${id}"`;
90
+ };
91
+ /** Changes the text or the point of a note and keeps the rest of it. Answers with the changed note. */
92
+ const changeNote = (options) => {
93
+ const found = findNote(options.productDir, options.id);
94
+ if (typeof found === 'string')
95
+ return found;
96
+ const { text = found.text, point, size } = options.change;
97
+ const { id, file, point: before, size: sizeBefore } = found, rest = __rest(found, ["id", "file", "point", "size"]);
98
+ const kept = point === undefined ? before : (point !== null && point !== void 0 ? point : undefined);
99
+ const keptSize = size !== null && size !== void 0 ? size : sizeBefore;
100
+ const note = Object.assign(Object.assign(Object.assign({}, rest), (kept ? Object.assign({ point: kept }, (keptSize === undefined ? {} : { size: keptSize })) : {})), { text });
101
+ const problem = shapeProblemOf(note);
102
+ if (problem)
103
+ return problem;
104
+ writeNote(file, note);
105
+ return Object.assign(Object.assign({}, note), { id, file });
106
+ };
107
+ exports.changeNote = changeNote;
108
+ /** Deletes a note by its id. Answers with the deleted note. */
109
+ const deleteNote = (options) => {
110
+ const found = findNote(options.productDir, options.id);
111
+ if (typeof found !== 'string')
112
+ (0, fs_1.rmSync)(found.file);
113
+ return found;
114
+ };
115
+ exports.deleteNote = deleteNote;
116
+ //# sourceMappingURL=note.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/notes/note.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const PART_USAGE = "part remove <layer>/<name> --by <model id> [--product <name>]";
2
+ /** `et design part remove <layer>/<name> …` deletes a part of a product with its `merged.json` entry, and resolves its comments. */
3
+ export declare const designPart: (options: {
4
+ target: string;
5
+ argv: string[];
6
+ invocation: string;
7
+ }) => 0 | 1 | 2;