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

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 (335) hide show
  1. package/CHANGELOG.md +180 -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/src/index.js.map +1 -1
  16. package/src/lib/api/api-command.js.map +1 -1
  17. package/src/lib/api/api-context.js.map +1 -1
  18. package/src/lib/api/api-state.js.map +1 -1
  19. package/src/lib/api/auth-hint.js.map +1 -1
  20. package/src/lib/api/clear.js.map +1 -1
  21. package/src/lib/api/clone.js.map +1 -1
  22. package/src/lib/api/compose.js.map +1 -1
  23. package/src/lib/api/definition.js.map +1 -1
  24. package/src/lib/api/doctor.js.map +1 -1
  25. package/src/lib/api/fingerprint.js.map +1 -1
  26. package/src/lib/api/git.js.map +1 -1
  27. package/src/lib/api/help.js.map +1 -1
  28. package/src/lib/api/index.js.map +1 -1
  29. package/src/lib/api/load-definitions.js.map +1 -1
  30. package/src/lib/api/lock.js.map +1 -1
  31. package/src/lib/api/parse-argv.js.map +1 -1
  32. package/src/lib/api/ports.js.map +1 -1
  33. package/src/lib/api/resolve-checkout.js.map +1 -1
  34. package/src/lib/api/run-locked.js.map +1 -1
  35. package/src/lib/api/run-ready.js.map +1 -1
  36. package/src/lib/api/run-snapshot.js.map +1 -1
  37. package/src/lib/api/run-status.js.map +1 -1
  38. package/src/lib/api/run.js.map +1 -1
  39. package/src/lib/api/seeds.js.map +1 -1
  40. package/src/lib/api/setup.js.map +1 -1
  41. package/src/lib/api/snapshot.js.map +1 -1
  42. package/src/lib/api/state.js.map +1 -1
  43. package/src/lib/api/suggest.js.map +1 -1
  44. package/src/lib/api/validate-definition.js.map +1 -1
  45. package/src/lib/auth/auth-command.js.map +1 -1
  46. package/src/lib/auth/composer-auth.js.map +1 -1
  47. package/src/lib/auth/composer-repositories.js.map +1 -1
  48. package/src/lib/auth/gitlab-token.js.map +1 -1
  49. package/src/lib/auth/index.js.map +1 -1
  50. package/src/lib/config/diagnose.js.map +1 -1
  51. package/src/lib/config/index.js.map +1 -1
  52. package/src/lib/config/local-config.js.map +1 -1
  53. package/src/lib/design/asset-shot.d.ts +26 -0
  54. package/src/lib/design/asset-shot.js +191 -0
  55. package/src/lib/design/asset-shot.js.map +1 -0
  56. package/src/lib/design/browser.js.map +1 -1
  57. package/src/lib/design/calls-tsconfig.d.ts +14 -1
  58. package/src/lib/design/calls-tsconfig.js +23 -18
  59. package/src/lib/design/calls-tsconfig.js.map +1 -1
  60. package/src/lib/design/calls.d.ts +28 -0
  61. package/src/lib/design/calls.js +58 -0
  62. package/src/lib/design/calls.js.map +1 -0
  63. package/src/lib/design/changed-parts.d.ts +51 -0
  64. package/src/lib/design/changed-parts.js +103 -0
  65. package/src/lib/design/changed-parts.js.map +1 -0
  66. package/src/lib/design/check.js +53 -54
  67. package/src/lib/design/check.js.map +1 -1
  68. package/src/lib/design/contact-sheet.d.ts +68 -0
  69. package/src/lib/design/contact-sheet.js +169 -0
  70. package/src/lib/design/contact-sheet.js.map +1 -0
  71. package/src/lib/design/design-command.js +165 -6
  72. package/src/lib/design/design-command.js.map +1 -1
  73. package/src/lib/design/force-interactions.d.ts +13 -0
  74. package/src/lib/design/force-interactions.js +75 -0
  75. package/src/lib/design/force-interactions.js.map +1 -0
  76. package/src/lib/design/inbox-command.d.ts +21 -0
  77. package/src/lib/design/inbox-command.js +156 -0
  78. package/src/lib/design/inbox-command.js.map +1 -0
  79. package/src/lib/design/index.js.map +1 -1
  80. package/src/lib/design/json-layout.d.ts +5 -0
  81. package/src/lib/design/json-layout.js +41 -0
  82. package/src/lib/design/json-layout.js.map +1 -0
  83. package/src/lib/design/legacy.d.ts +7 -0
  84. package/src/lib/design/legacy.js +23 -8
  85. package/src/lib/design/legacy.js.map +1 -1
  86. package/src/lib/design/merge-compare.d.ts +57 -0
  87. package/src/lib/design/merge-compare.js +80 -0
  88. package/src/lib/design/merge-compare.js.map +1 -0
  89. package/src/lib/design/missing-package.js.map +1 -1
  90. package/src/lib/design/new-call.js.map +1 -1
  91. package/src/lib/design/part-marks.d.ts +12 -0
  92. package/src/lib/design/part-marks.js +38 -0
  93. package/src/lib/design/part-marks.js.map +1 -0
  94. package/src/lib/design/paths.d.ts +35 -2
  95. package/src/lib/design/paths.js +62 -4
  96. package/src/lib/design/paths.js.map +1 -1
  97. package/src/lib/design/product-command.d.ts +38 -0
  98. package/src/lib/design/product-command.js +158 -0
  99. package/src/lib/design/product-command.js.map +1 -0
  100. package/src/lib/design/ready-shots.d.ts +13 -0
  101. package/src/lib/design/ready-shots.js +55 -0
  102. package/src/lib/design/ready-shots.js.map +1 -0
  103. package/src/lib/design/render-fields.js.map +1 -1
  104. package/src/lib/design/render-packages.js.map +1 -1
  105. package/src/lib/design/render-worker.js.map +1 -1
  106. package/src/lib/design/render.d.ts +8 -1
  107. package/src/lib/design/render.js +43 -14
  108. package/src/lib/design/render.js.map +1 -1
  109. package/src/lib/design/serve.d.ts +17 -0
  110. package/src/lib/design/serve.js +444 -67
  111. package/src/lib/design/serve.js.map +1 -1
  112. package/src/lib/design/shot-command.d.ts +75 -0
  113. package/src/lib/design/shot-command.js +361 -0
  114. package/src/lib/design/shot-command.js.map +1 -0
  115. package/src/lib/design/shot.d.ts +97 -0
  116. package/src/lib/design/shot.js +346 -0
  117. package/src/lib/design/shot.js.map +1 -0
  118. package/src/lib/design/sketch-at.d.ts +16 -0
  119. package/src/lib/design/sketch-at.js +34 -0
  120. package/src/lib/design/sketch-at.js.map +1 -0
  121. package/src/lib/design/sketch-command.d.ts +9 -0
  122. package/src/lib/design/sketch-command.js +572 -0
  123. package/src/lib/design/sketch-command.js.map +1 -0
  124. package/src/lib/design/ssr-shims.js.map +1 -1
  125. package/src/lib/design/stamp.js.map +1 -1
  126. package/src/lib/design/status.d.ts +2 -2
  127. package/src/lib/design/status.js +2 -2
  128. package/src/lib/design/status.js.map +1 -1
  129. package/src/lib/design/studio-api.d.ts +102 -0
  130. package/src/lib/design/studio-api.js +452 -0
  131. package/src/lib/design/studio-api.js.map +1 -0
  132. package/src/lib/design/system/accept-command.d.ts +7 -0
  133. package/src/lib/design/system/accept-command.js +55 -0
  134. package/src/lib/design/system/accept-command.js.map +1 -0
  135. package/src/lib/design/system/assets.d.ts +34 -0
  136. package/src/lib/design/system/assets.js +64 -0
  137. package/src/lib/design/system/assets.js.map +1 -0
  138. package/src/lib/design/system/base.d.ts +33 -0
  139. package/src/lib/design/system/base.js +49 -0
  140. package/src/lib/design/system/base.js.map +1 -0
  141. package/src/lib/design/system/check-system.d.ts +23 -0
  142. package/src/lib/design/system/check-system.js +151 -0
  143. package/src/lib/design/system/check-system.js.map +1 -0
  144. package/src/lib/design/system/colour.d.ts +2 -0
  145. package/src/lib/design/system/colour.js +9 -0
  146. package/src/lib/design/system/colour.js.map +1 -0
  147. package/src/lib/design/system/comments/comment.d.ts +196 -0
  148. package/src/lib/design/system/comments/comment.js +332 -0
  149. package/src/lib/design/system/comments/comment.js.map +1 -0
  150. package/src/lib/design/system/comments/complete.d.ts +15 -0
  151. package/src/lib/design/system/comments/complete.js +63 -0
  152. package/src/lib/design/system/comments/complete.js.map +1 -0
  153. package/src/lib/design/system/comments/inbox.d.ts +49 -0
  154. package/src/lib/design/system/comments/inbox.js +100 -0
  155. package/src/lib/design/system/comments/inbox.js.map +1 -0
  156. package/src/lib/design/system/css-source.d.ts +12 -0
  157. package/src/lib/design/system/css-source.js +39 -0
  158. package/src/lib/design/system/css-source.js.map +1 -0
  159. package/src/lib/design/system/flows/flow.d.ts +66 -0
  160. package/src/lib/design/system/flows/flow.js +157 -0
  161. package/src/lib/design/system/flows/flow.js.map +1 -0
  162. package/src/lib/design/system/imports.d.ts +70 -0
  163. package/src/lib/design/system/imports.js +159 -0
  164. package/src/lib/design/system/imports.js.map +1 -0
  165. package/src/lib/design/system/kit.d.ts +4 -0
  166. package/src/lib/design/system/kit.js +51 -0
  167. package/src/lib/design/system/kit.js.map +1 -0
  168. package/src/lib/design/system/layers.d.ts +9 -0
  169. package/src/lib/design/system/layers.js +16 -0
  170. package/src/lib/design/system/layers.js.map +1 -0
  171. package/src/lib/design/system/list-system.d.ts +104 -0
  172. package/src/lib/design/system/list-system.js +212 -0
  173. package/src/lib/design/system/list-system.js.map +1 -0
  174. package/src/lib/design/system/notes/note.d.ts +53 -0
  175. package/src/lib/design/system/notes/note.js +116 -0
  176. package/src/lib/design/system/notes/note.js.map +1 -0
  177. package/src/lib/design/system/part-command.d.ts +7 -0
  178. package/src/lib/design/system/part-command.js +134 -0
  179. package/src/lib/design/system/part-command.js.map +1 -0
  180. package/src/lib/design/system/problem.d.ts +5 -0
  181. package/src/lib/design/system/problem.js +3 -0
  182. package/src/lib/design/system/problem.js.map +1 -0
  183. package/src/lib/design/system/product.d.ts +18 -0
  184. package/src/lib/design/system/product.js +35 -0
  185. package/src/lib/design/system/product.js.map +1 -0
  186. package/src/lib/design/system/render-check.d.ts +45 -0
  187. package/src/lib/design/system/render-check.js +427 -0
  188. package/src/lib/design/system/render-check.js.map +1 -0
  189. package/src/lib/design/system/resolve-product.d.ts +32 -0
  190. package/src/lib/design/system/resolve-product.js +62 -0
  191. package/src/lib/design/system/resolve-product.js.map +1 -0
  192. package/src/lib/design/system/rules/component-copy.d.ts +7 -0
  193. package/src/lib/design/system/rules/component-copy.js +53 -0
  194. package/src/lib/design/system/rules/component-copy.js.map +1 -0
  195. package/src/lib/design/system/rules/flow.d.ts +8 -0
  196. package/src/lib/design/system/rules/flow.js +60 -0
  197. package/src/lib/design/system/rules/flow.js.map +1 -0
  198. package/src/lib/design/system/rules/hard-coded-colour.d.ts +7 -0
  199. package/src/lib/design/system/rules/hard-coded-colour.js +27 -0
  200. package/src/lib/design/system/rules/hard-coded-colour.js.map +1 -0
  201. package/src/lib/design/system/rules/interactions.d.ts +4 -0
  202. package/src/lib/design/system/rules/interactions.js +16 -0
  203. package/src/lib/design/system/rules/interactions.js.map +1 -0
  204. package/src/lib/design/system/rules/kit-outside-pages.d.ts +4 -0
  205. package/src/lib/design/system/rules/kit-outside-pages.js +14 -0
  206. package/src/lib/design/system/rules/kit-outside-pages.js.map +1 -0
  207. package/src/lib/design/system/rules/motion.d.ts +4 -0
  208. package/src/lib/design/system/rules/motion.js +13 -0
  209. package/src/lib/design/system/rules/motion.js.map +1 -0
  210. package/src/lib/design/system/rules/stale-comment.d.ts +8 -0
  211. package/src/lib/design/system/rules/stale-comment.js +51 -0
  212. package/src/lib/design/system/rules/stale-comment.js.map +1 -0
  213. package/src/lib/design/system/rules/stale-replace.d.ts +4 -0
  214. package/src/lib/design/system/rules/stale-replace.js +65 -0
  215. package/src/lib/design/system/rules/stale-replace.js.map +1 -0
  216. package/src/lib/design/system/rules/svg-asset.d.ts +6 -0
  217. package/src/lib/design/system/rules/svg-asset.js +30 -0
  218. package/src/lib/design/system/rules/svg-asset.js.map +1 -0
  219. package/src/lib/design/system/rules/token-selectors.d.ts +3 -0
  220. package/src/lib/design/system/rules/token-selectors.js +87 -0
  221. package/src/lib/design/system/rules/token-selectors.js.map +1 -0
  222. package/src/lib/design/system/rules/undefined-token.d.ts +8 -0
  223. package/src/lib/design/system/rules/undefined-token.js +103 -0
  224. package/src/lib/design/system/rules/undefined-token.js.map +1 -0
  225. package/src/lib/design/system/rules/unused-shared-export.d.ts +18 -0
  226. package/src/lib/design/system/rules/unused-shared-export.js +60 -0
  227. package/src/lib/design/system/rules/unused-shared-export.js.map +1 -0
  228. package/src/lib/design/system/rules/upward-dependency.d.ts +4 -0
  229. package/src/lib/design/system/rules/upward-dependency.js +17 -0
  230. package/src/lib/design/system/rules/upward-dependency.js.map +1 -0
  231. package/src/lib/design/system/rules/widths.d.ts +4 -0
  232. package/src/lib/design/system/rules/widths.js +14 -0
  233. package/src/lib/design/system/rules/widths.js.map +1 -0
  234. package/src/lib/design/system/sketch/baseline.d.ts +38 -0
  235. package/src/lib/design/system/sketch/baseline.js +66 -0
  236. package/src/lib/design/system/sketch/baseline.js.map +1 -0
  237. package/src/lib/design/system/sketch/check-format.d.ts +17 -0
  238. package/src/lib/design/system/sketch/check-format.js +56 -0
  239. package/src/lib/design/system/sketch/check-format.js.map +1 -0
  240. package/src/lib/design/system/sketch/check-sketches.d.ts +38 -0
  241. package/src/lib/design/system/sketch/check-sketches.js +104 -0
  242. package/src/lib/design/system/sketch/check-sketches.js.map +1 -0
  243. package/src/lib/design/system/sketch/cli-args.d.ts +26 -0
  244. package/src/lib/design/system/sketch/cli-args.js +63 -0
  245. package/src/lib/design/system/sketch/cli-args.js.map +1 -0
  246. package/src/lib/design/system/sketch/duplicate-class.d.ts +14 -0
  247. package/src/lib/design/system/sketch/duplicate-class.js +57 -0
  248. package/src/lib/design/system/sketch/duplicate-class.js.map +1 -0
  249. package/src/lib/design/system/sketch/merge-preview.d.ts +15 -0
  250. package/src/lib/design/system/sketch/merge-preview.js +43 -0
  251. package/src/lib/design/system/sketch/merge-preview.js.map +1 -0
  252. package/src/lib/design/system/sketch/merge-shared.d.ts +25 -0
  253. package/src/lib/design/system/sketch/merge-shared.js +53 -0
  254. package/src/lib/design/system/sketch/merge-shared.js.map +1 -0
  255. package/src/lib/design/system/sketch/merge.d.ts +31 -0
  256. package/src/lib/design/system/sketch/merge.js +145 -0
  257. package/src/lib/design/system/sketch/merge.js.map +1 -0
  258. package/src/lib/design/system/sketch/merged-parts.d.ts +59 -0
  259. package/src/lib/design/system/sketch/merged-parts.js +134 -0
  260. package/src/lib/design/system/sketch/merged-parts.js.map +1 -0
  261. package/src/lib/design/system/sketch/no-visible-change.d.ts +15 -0
  262. package/src/lib/design/system/sketch/no-visible-change.js +70 -0
  263. package/src/lib/design/system/sketch/no-visible-change.js.map +1 -0
  264. package/src/lib/design/system/sketch/overlay.d.ts +20 -0
  265. package/src/lib/design/system/sketch/overlay.js +38 -0
  266. package/src/lib/design/system/sketch/overlay.js.map +1 -0
  267. package/src/lib/design/system/sketch/part-definition.d.ts +31 -0
  268. package/src/lib/design/system/sketch/part-definition.js +157 -0
  269. package/src/lib/design/system/sketch/part-definition.js.map +1 -0
  270. package/src/lib/design/system/sketch/shared-class.d.ts +9 -0
  271. package/src/lib/design/system/sketch/shared-class.js +65 -0
  272. package/src/lib/design/system/sketch/shared-class.js.map +1 -0
  273. package/src/lib/design/system/sketch/sketch.d.ts +221 -0
  274. package/src/lib/design/system/sketch/sketch.js +481 -0
  275. package/src/lib/design/system/sketch/sketch.js.map +1 -0
  276. package/src/lib/design/system/sketch/unchanged-states.d.ts +23 -0
  277. package/src/lib/design/system/sketch/unchanged-states.js +144 -0
  278. package/src/lib/design/system/sketch/unchanged-states.js.map +1 -0
  279. package/src/lib/design/system/sketch/unused-files.d.ts +10 -0
  280. package/src/lib/design/system/sketch/unused-files.js +56 -0
  281. package/src/lib/design/system/sketch/unused-files.js.map +1 -0
  282. package/src/lib/design/system/system-command.d.ts +9 -0
  283. package/src/lib/design/system/system-command.js +56 -0
  284. package/src/lib/design/system/system-command.js.map +1 -0
  285. package/src/lib/design/system/system-modules.d.ts +58 -0
  286. package/src/lib/design/system/system-modules.js +189 -0
  287. package/src/lib/design/system/system-modules.js.map +1 -0
  288. package/src/lib/design/system/system-tsconfig.d.ts +26 -0
  289. package/src/lib/design/system/system-tsconfig.js +68 -0
  290. package/src/lib/design/system/system-tsconfig.js.map +1 -0
  291. package/src/lib/design/system/ts-source.d.ts +13 -0
  292. package/src/lib/design/system/ts-source.js +108 -0
  293. package/src/lib/design/system/ts-source.js.map +1 -0
  294. package/src/lib/design/system-use.js.map +1 -1
  295. package/src/lib/design/thumb.d.ts +48 -4
  296. package/src/lib/design/thumb.js +127 -37
  297. package/src/lib/design/thumb.js.map +1 -1
  298. package/src/lib/design/typecheck.d.ts +27 -0
  299. package/src/lib/design/typecheck.js +60 -0
  300. package/src/lib/design/typecheck.js.map +1 -0
  301. package/src/lib/design/variant-diff.d.ts +48 -0
  302. package/src/lib/design/variant-diff.js +77 -0
  303. package/src/lib/design/variant-diff.js.map +1 -0
  304. package/src/lib/design/vite-paths.d.ts +2 -0
  305. package/src/lib/design/vite-paths.js +10 -1
  306. package/src/lib/design/vite-paths.js.map +1 -1
  307. package/src/lib/doctor/doctor-command.js.map +1 -1
  308. package/src/lib/doctor/index.js.map +1 -1
  309. package/src/lib/index.js.map +1 -1
  310. package/src/lib/invocation.js +6 -2
  311. package/src/lib/invocation.js.map +1 -1
  312. package/src/lib/release.js.map +1 -1
  313. package/src/lib/update/agent-rules-sync.js.map +1 -1
  314. package/src/lib/update/agent-setup.js.map +1 -1
  315. package/src/lib/update/ai.js.map +1 -1
  316. package/src/lib/update/args.js.map +1 -1
  317. package/src/lib/update/available-migrations.js.map +1 -1
  318. package/src/lib/update/commits.js.map +1 -1
  319. package/src/lib/update/gitignore.js.map +1 -1
  320. package/src/lib/update/index.js.map +1 -1
  321. package/src/lib/update/migration-manifest.js.map +1 -1
  322. package/src/lib/update/migration-record.js.map +1 -1
  323. package/src/lib/update/migrations-command.js.map +1 -1
  324. package/src/lib/update/package-manager.d.ts +1 -1
  325. package/src/lib/update/package-manager.js.map +1 -1
  326. package/src/lib/update/packages.js.map +1 -1
  327. package/src/lib/update/pending.js.map +1 -1
  328. package/src/lib/update/plan.js.map +1 -1
  329. package/src/lib/update/registry.js.map +1 -1
  330. package/src/lib/update/run-migrations.js.map +1 -1
  331. package/src/lib/update/scan.js.map +1 -1
  332. package/src/lib/update/semver.js.map +1 -1
  333. package/src/lib/update/tasks.js.map +1 -1
  334. package/src/lib/update/update-command.js.map +1 -1
  335. package/src/lib/utils.js.map +1 -1
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.partsReachedFrom = exports.importProblemsOf = exports.sharedFileOf = exports.sharedDirsOf = exports.partDependenciesOf = exports.folderModulesOf = exports.importsOfPart = exports.classifyImport = exports.partSpecifierOf = exports.SHARED_PREFIX = exports.FIXTURES_SPECIFIER = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ const vite_paths_1 = require("../vite-paths");
7
+ const assets_1 = require("./assets");
8
+ const resolve_product_1 = require("./resolve-product");
9
+ const ts_source_1 = require("./ts-source");
10
+ const SYSTEM = '@system/';
11
+ exports.FIXTURES_SPECIFIER = '@system/fixtures';
12
+ exports.SHARED_PREFIX = '@shared/';
13
+ const STYLESHEET = /\.css(?:\?.*)?$/u;
14
+ const partSpecifierOf = (part) => `${SYSTEM}${(0, resolve_product_1.partKeyOf)(part)}`;
15
+ exports.partSpecifierOf = partSpecifierOf;
16
+ const classifyImport = (specifier) => {
17
+ if (specifier === exports.FIXTURES_SPECIFIER)
18
+ return { kind: 'fixtures', specifier };
19
+ if (specifier.startsWith(SYSTEM)) {
20
+ const [layer = '', ...path] = specifier.slice(SYSTEM.length).split('/');
21
+ const name = path.join('/');
22
+ const stylesheet = STYLESHEET.exec(name);
23
+ return stylesheet
24
+ ? { kind: 'part', layer, name: name.slice(0, stylesheet.index), specifier, stylesheet: true }
25
+ : { kind: 'part', layer, name, specifier };
26
+ }
27
+ const asset = (0, assets_1.assetPathOf)(specifier);
28
+ if (asset !== null)
29
+ return { kind: 'asset', path: asset, specifier };
30
+ if (specifier.startsWith(exports.SHARED_PREFIX))
31
+ return { kind: 'shared', path: specifier.slice(exports.SHARED_PREFIX.length), specifier };
32
+ if (specifier.startsWith('.'))
33
+ return { kind: 'relative', specifier };
34
+ return { kind: 'other', specifier };
35
+ };
36
+ exports.classifyImport = classifyImport;
37
+ const importsOfPart = (part) => (0, ts_source_1.importsOf)(part.source).map(exports.classifyImport);
38
+ exports.importsOfPart = importsOfPart;
39
+ /** The modules of the part's own folder its file imports, directly or through another such module. */
40
+ const folderModulesOf = (part) => {
41
+ var _a;
42
+ const folder = (0, path_1.dirname)(part.file);
43
+ const seen = new Set([part.file]);
44
+ const queue = [{ file: part.file, source: part.source }];
45
+ const modules = [];
46
+ for (let current = queue.shift(); current !== undefined; current = queue.shift()) {
47
+ for (const specifier of (0, ts_source_1.importsOf)(current.source)) {
48
+ if (!specifier.startsWith('.') || STYLESHEET.test(specifier))
49
+ continue;
50
+ const file = (0, vite_paths_1.sourceFileOf)((0, path_1.resolve)((0, path_1.dirname)(current.file), (_a = specifier.split('?')[0]) !== null && _a !== void 0 ? _a : specifier));
51
+ const path = file === null ? '..' : (0, path_1.relative)(folder, file);
52
+ if (file === null || seen.has(file) || path.startsWith('..') || (0, path_1.isAbsolute)(path))
53
+ continue;
54
+ seen.add(file);
55
+ const module = { file, source: (0, fs_1.readFileSync)(file, 'utf8') };
56
+ modules.push(module);
57
+ queue.push(module);
58
+ }
59
+ }
60
+ return modules;
61
+ };
62
+ exports.folderModulesOf = folderModulesOf;
63
+ /** The parts a part imports, from its file or from a plain module of its own folder that the file imports. */
64
+ const partDependenciesOf = (part) => {
65
+ const seen = new Set();
66
+ return [part, ...(0, exports.folderModulesOf)(part)]
67
+ .flatMap((module) => (0, ts_source_1.importsOf)(module.source).map(exports.classifyImport))
68
+ .flatMap((imported) => {
69
+ if (imported.kind !== 'part' || seen.has(imported.specifier))
70
+ return [];
71
+ seen.add(imported.specifier);
72
+ return [imported];
73
+ });
74
+ };
75
+ exports.partDependenciesOf = partDependenciesOf;
76
+ const leavesFolder = (part, specifier) => {
77
+ var _a;
78
+ const folder = (0, path_1.dirname)(part.file);
79
+ const path = (0, path_1.relative)(folder, (0, path_1.resolve)(folder, (_a = specifier.split('?')[0]) !== null && _a !== void 0 ? _a : specifier));
80
+ return path.startsWith('..') || (0, path_1.isAbsolute)(path);
81
+ };
82
+ /** The folders `@shared/<path>` looks in, the variant's own `shared/` first. */
83
+ const sharedDirsOf = (product) => [product.variantSharedDir, product.sharedDir].filter((dir) => dir !== undefined);
84
+ exports.sharedDirsOf = sharedDirsOf;
85
+ /** The file `@shared/<path>` resolves to, the variant's own copy first; `null` when no folder holds it. */
86
+ const sharedFileOf = (options) => {
87
+ var _a;
88
+ const path = (_a = options.path.split('?')[0]) !== null && _a !== void 0 ? _a : options.path;
89
+ for (const dir of options.dirs) {
90
+ const file = (0, path_1.resolve)(dir, path);
91
+ const found = STYLESHEET.test(file) ? ((0, fs_1.existsSync)(file) ? file : null) : (0, vite_paths_1.sourceFileOf)(file);
92
+ if (found)
93
+ return found;
94
+ }
95
+ return null;
96
+ };
97
+ exports.sharedFileOf = sharedFileOf;
98
+ /**
99
+ * Imports and stylesheet `url(@assets/...)` that name no part, fixture set or asset file, `@shared/` imports outside a sketch variant (`sharedDir` is the
100
+ * sketch's `shared/` folder, `assetsDir` the variant's `assets/`), and relative imports that reach into another part.
101
+ */
102
+ const importProblemsOf = (product) => {
103
+ const parts = new Map(product.parts.map((part) => [(0, resolve_product_1.partKeyOf)(part), part]));
104
+ const missingCssAssets = (part) => {
105
+ var _a;
106
+ return (0, assets_1.cssAssetPathsOf)((_a = part.cssSource) !== null && _a !== void 0 ? _a : '')
107
+ .filter((path) => !(0, assets_1.assetFileOf)({ product, path }))
108
+ .map((path) => {
109
+ var _a;
110
+ return ({
111
+ rule: 'IMPORT',
112
+ file: (_a = part.css) !== null && _a !== void 0 ? _a : part.file,
113
+ message: `url(${assets_1.ASSETS_PREFIX}${path}) resolves to no file in an assets/ folder`,
114
+ });
115
+ });
116
+ };
117
+ return product.parts.flatMap((part) => [
118
+ ...missingCssAssets(part),
119
+ ...(0, exports.importsOfPart)(part).flatMap((imported) => {
120
+ var _a;
121
+ const problem = (message) => [{ rule: 'IMPORT', file: part.file, message }];
122
+ if (imported.kind === 'part' && !parts.has((0, resolve_product_1.partKeyOf)(imported)))
123
+ return problem(`${imported.specifier} resolves to no part`);
124
+ if (imported.kind === 'part' && imported.stylesheet && !((_a = parts.get((0, resolve_product_1.partKeyOf)(imported))) === null || _a === void 0 ? void 0 : _a.css))
125
+ return problem(`${imported.specifier} resolves to a part without ${imported.name}.css`);
126
+ if (imported.kind === 'fixtures' && !product.fixtures)
127
+ return problem(`${exports.FIXTURES_SPECIFIER} resolves to no fixtures.ts`);
128
+ if (imported.kind === 'shared' && !product.sharedDir)
129
+ return problem(`${imported.specifier} - only a part in a sketch variant may import the sketch's ${exports.SHARED_PREFIX}`);
130
+ if (imported.kind === 'shared' && !(0, exports.sharedFileOf)({ dirs: (0, exports.sharedDirsOf)(product), path: imported.path }))
131
+ return problem(`${imported.specifier} resolves to no file in the variant's or the sketch's shared/ folder`);
132
+ if (imported.kind === 'asset' && !(0, assets_1.assetFileOf)({ product, path: imported.path }))
133
+ return problem(`${imported.specifier} resolves to no file in an assets/ folder`);
134
+ if (imported.kind === 'relative' && leavesFolder(part, imported.specifier))
135
+ return problem(`"${imported.specifier}" leaves the part's folder - import another part as @system/<layer>/<name>`);
136
+ return [];
137
+ }),
138
+ ]);
139
+ };
140
+ exports.importProblemsOf = importProblemsOf;
141
+ /** The parts `from` imports, directly or through another part, as the product resolves them. */
142
+ const partsReachedFrom = (options) => {
143
+ const parts = new Map(options.product.parts.map((part) => [(0, resolve_product_1.partKeyOf)(part), part]));
144
+ const reached = new Map();
145
+ const queue = [options.from];
146
+ for (let part = queue.shift(); part !== undefined; part = queue.shift()) {
147
+ for (const dependency of (0, exports.partDependenciesOf)(part)) {
148
+ const key = (0, resolve_product_1.partKeyOf)(dependency);
149
+ const found = parts.get(key);
150
+ if (!found || reached.has(key))
151
+ continue;
152
+ reached.set(key, found);
153
+ queue.push(found);
154
+ }
155
+ }
156
+ return [...reached.values()];
157
+ };
158
+ exports.partsReachedFrom = partsReachedFrom;
159
+ //# sourceMappingURL=imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/imports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const KIT_SPECIFIER = "@design-system/kit";
2
+ export declare const importsKit: (source: string) => boolean;
3
+ /** How many calls of a wireframe kit part a part's source writes, read from the source without a render. */
4
+ export declare const kitUsesOf: (source: string) => number;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.kitUsesOf = exports.importsKit = exports.KIT_SPECIFIER = void 0;
7
+ const typescript_1 = __importDefault(require("typescript"));
8
+ const ts_source_1 = require("./ts-source");
9
+ exports.KIT_SPECIFIER = '@design-system/kit';
10
+ const importsKit = (source) => (0, ts_source_1.importsOf)(source).includes(exports.KIT_SPECIFIER);
11
+ exports.importsKit = importsKit;
12
+ const kitBindingsOf = (file) => {
13
+ var _a;
14
+ const named = new Set();
15
+ const namespaces = new Set();
16
+ for (const statement of file.statements) {
17
+ if (!typescript_1.default.isImportDeclaration(statement) ||
18
+ !typescript_1.default.isStringLiteral(statement.moduleSpecifier) ||
19
+ statement.moduleSpecifier.text !== exports.KIT_SPECIFIER)
20
+ continue;
21
+ const bindings = (_a = statement.importClause) === null || _a === void 0 ? void 0 : _a.namedBindings;
22
+ if (bindings && typescript_1.default.isNamespaceImport(bindings))
23
+ namespaces.add(bindings.name.text);
24
+ if (bindings && typescript_1.default.isNamedImports(bindings))
25
+ bindings.elements.forEach((element) => named.add(element.name.text));
26
+ }
27
+ return { named, namespaces };
28
+ };
29
+ /** How many calls of a wireframe kit part a part's source writes, read from the source without a render. */
30
+ const kitUsesOf = (source) => {
31
+ const file = typescript_1.default.createSourceFile('part.ts', source, typescript_1.default.ScriptTarget.Latest, true);
32
+ const { named, namespaces } = kitBindingsOf(file);
33
+ let uses = 0;
34
+ const visit = (node) => {
35
+ if (typescript_1.default.isCallExpression(node)) {
36
+ const callee = node.expression;
37
+ if (typescript_1.default.isIdentifier(callee) && named.has(callee.text))
38
+ uses++;
39
+ if (typescript_1.default.isPropertyAccessExpression(callee) &&
40
+ typescript_1.default.isIdentifier(callee.expression) &&
41
+ namespaces.has(callee.expression.text))
42
+ uses++;
43
+ }
44
+ typescript_1.default.forEachChild(node, visit);
45
+ };
46
+ if (named.size > 0 || namespaces.size > 0)
47
+ visit(file);
48
+ return uses;
49
+ };
50
+ exports.kitUsesOf = kitUsesOf;
51
+ //# sourceMappingURL=kit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kit.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/kit.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAC5B,2CAAwC;AAE3B,QAAA,aAAa,GAAG,oBAAoB,CAAC;AAE3C,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAA,qBAAS,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,qBAAa,CAAC,CAAC;AAA3E,QAAA,UAAU,cAAiE;AAExF,MAAM,aAAa,GAAG,CAAC,IAAmB,EAAE,EAAE;;IAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,IACE,CAAC,oBAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAClC,CAAC,oBAAE,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC;YAC9C,SAAS,CAAC,eAAe,CAAC,IAAI,KAAK,qBAAa;YAEhD,SAAS;QAEX,MAAM,QAAQ,GAAG,MAAA,SAAS,CAAC,YAAY,0CAAE,aAAa,CAAC;QAEvD,IAAI,QAAQ,IAAI,oBAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnF,IAAI,QAAQ,IAAI,oBAAE,CAAC,cAAc,CAAC,QAAQ,CAAC;YAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,4GAA4G;AACrG,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE;IAC1C,MAAM,IAAI,GAAG,oBAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,oBAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClF,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,EAAE;QAC9B,IAAI,oBAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAE/B,IAAI,oBAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,IAAI,EAAE,CAAC;YAC9D,IACE,oBAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC;gBACrC,oBAAE,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;gBAClC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;gBAEtC,IAAI,EAAE,CAAC;QACX,CAAC;QAED,oBAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAvBW,QAAA,SAAS,aAuBpB"}
@@ -0,0 +1,9 @@
1
+ export declare const LAYERS: readonly ["foundations", "components", "elements", "pages"];
2
+ export type Layer = (typeof LAYERS)[number];
3
+ /** The layers a part of each layer may import. */
4
+ export declare const LAYER_USES: Record<Layer, readonly Layer[]>;
5
+ export declare const isLayer: (name: string) => name is Layer;
6
+ export declare const mayUse: (options: {
7
+ from: Layer;
8
+ to: Layer;
9
+ }) => boolean;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mayUse = exports.isLayer = exports.LAYER_USES = exports.LAYERS = void 0;
4
+ exports.LAYERS = ['foundations', 'components', 'elements', 'pages'];
5
+ /** The layers a part of each layer may import. */
6
+ exports.LAYER_USES = {
7
+ foundations: ['foundations'],
8
+ components: ['foundations', 'components'],
9
+ elements: ['foundations', 'components'],
10
+ pages: ['foundations', 'components', 'elements'],
11
+ };
12
+ const isLayer = (name) => exports.LAYERS.includes(name);
13
+ exports.isLayer = isLayer;
14
+ const mayUse = (options) => exports.LAYER_USES[options.from].includes(options.to);
15
+ exports.mayUse = mayUse;
16
+ //# sourceMappingURL=layers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/layers.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;AAIlF,kDAAkD;AACrC,QAAA,UAAU,GAAoC;IACzD,WAAW,EAAE,CAAC,aAAa,CAAC;IAC5B,UAAU,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;IACzC,QAAQ,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;IACvC,KAAK,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAAC;CACjD,CAAC;AAEK,MAAM,OAAO,GAAG,CAAC,IAAY,EAAiB,EAAE,CAAE,cAA4B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAAxF,QAAA,OAAO,WAAiF;AAE9F,MAAM,MAAM,GAAG,CAAC,OAAmC,EAAE,EAAE,CAAC,kBAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAAhG,QAAA,MAAM,UAA0F"}
@@ -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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"}