@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,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writeEditorTsconfig = exports.typecheckProduct = exports.writeSystemTsconfig = exports.DESIGN_SYSTEM_SPECIFIER = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ const typecheck_1 = require("../typecheck");
7
+ const calls_tsconfig_1 = require("../calls-tsconfig");
8
+ const paths_1 = require("../paths");
9
+ const render_packages_1 = require("../render-packages");
10
+ const imports_1 = require("./imports");
11
+ const kit_1 = require("./kit");
12
+ exports.DESIGN_SYSTEM_SPECIFIER = '@design-system';
13
+ /**
14
+ * Writes the tsconfig that types one product's design system, and answers with its path. Each
15
+ * `@system/<layer>/<name>` maps to the part the product resolves, so an override also replaces
16
+ * the part inside the base parts that import it.
17
+ */
18
+ const writeSystemTsconfig = (options) => {
19
+ const { target, product } = options;
20
+ const work = (0, paths_1.workRootOf)(target);
21
+ const path = (0, path_1.resolve)(work, `system-${product.name}.tsconfig.json`);
22
+ (0, fs_1.mkdirSync)(work, { recursive: true });
23
+ (0, fs_1.writeFileSync)(path, systemTsconfigText({ target, product }));
24
+ return path;
25
+ };
26
+ exports.writeSystemTsconfig = writeSystemTsconfig;
27
+ /** The one typecheck of a product, shared by `design check` and every sketch variant. */
28
+ const typecheckProduct = (options) => (0, typecheck_1.typecheck)({ target: options.target, tsconfig: (0, exports.writeSystemTsconfig)(options) });
29
+ exports.typecheckProduct = typecheckProduct;
30
+ /**
31
+ * Writes `tsconfig.json` into the product's own folder, the nearest tsconfig an editor finds for
32
+ * its parts, so `@design-system` and `@system/*` resolve there. The file is gitignored.
33
+ */
34
+ const writeEditorTsconfig = (options) => {
35
+ if (!(0, fs_1.existsSync)(options.product.dir))
36
+ return;
37
+ (0, fs_1.writeFileSync)((0, path_1.resolve)(options.product.dir, 'tsconfig.json'), systemTsconfigText(options));
38
+ };
39
+ exports.writeEditorTsconfig = writeEditorTsconfig;
40
+ const systemTsconfigText = (options) => {
41
+ var _a, _b, _c;
42
+ const { target, product } = options;
43
+ const defineCall = (0, path_1.resolve)((0, paths_1.installedAssetRoot)(), 'define-call.ts');
44
+ const definePart = (0, path_1.resolve)((0, paths_1.installedAssetRoot)(), 'define-part.ts');
45
+ const inlineCss = (0, path_1.resolve)((0, paths_1.installedAssetRoot)(), 'css-inline.d.ts');
46
+ const assets = (0, path_1.resolve)((0, paths_1.installedAssetRoot)(), 'assets.d.ts');
47
+ const kit = (0, path_1.resolve)((0, paths_1.installedAssetRoot)(), 'wireframe-kit.ts');
48
+ const typePaths = (0, render_packages_1.typePathsOf)({ packages: (_c = (_b = (_a = (0, paths_1.readConfig)(target)) === null || _a === void 0 ? void 0 : _a.render) === null || _b === void 0 ? void 0 : _b.packages) !== null && _c !== void 0 ? _c : {}, target });
49
+ const partPaths = Object.fromEntries(product.parts.map((part) => [(0, imports_1.partSpecifierOf)(part), [part.file]]));
50
+ const fixtures = product.fixtures ? [product.fixtures] : [];
51
+ const sharedDirs = (0, imports_1.sharedDirsOf)(product);
52
+ const shared = sharedDirs.map((dir) => (0, path_1.resolve)(dir, '**/*.ts'));
53
+ const config = {
54
+ compilerOptions: Object.assign(Object.assign({}, calls_tsconfig_1.DRAWING_COMPILER_OPTIONS), { paths: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, typePaths), partPaths), (product.fixtures ? { [imports_1.FIXTURES_SPECIFIER]: [product.fixtures] } : {})), { [exports.DESIGN_SYSTEM_SPECIFIER]: [definePart], [kit_1.KIT_SPECIFIER]: [kit] }), (sharedDirs.length > 0 ? { [`${imports_1.SHARED_PREFIX}*`]: sharedDirs.map((dir) => (0, path_1.resolve)(dir, '*')) } : {})) }),
55
+ include: [
56
+ ...product.parts.map((part) => part.file),
57
+ ...fixtures,
58
+ ...shared,
59
+ definePart,
60
+ kit,
61
+ defineCall,
62
+ inlineCss,
63
+ assets,
64
+ ],
65
+ };
66
+ return `${JSON.stringify(config, null, 2)}\n`;
67
+ };
68
+ //# sourceMappingURL=system-tsconfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-tsconfig.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/system-tsconfig.ts"],"names":[],"mappings":";;;AAAA,2BAA0D;AAC1D,+BAA+B;AAC/B,4CAA0D;AAC1D,sDAA6D;AAC7D,oCAAsE;AACtE,wDAAiD;AACjD,uCAAyG;AACzG,+BAAsC;AAGzB,QAAA,uBAAuB,GAAG,gBAAgB,CAAC;AAExD;;;;GAIG;AACI,MAAM,mBAAmB,GAAG,CAAC,OAAkE,EAAE,EAAE;IACxG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACpC,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,IAAI,EAAE,UAAU,OAAO,CAAC,IAAI,gBAAgB,CAAC,CAAC;IAEnE,IAAA,cAAS,EAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,IAAA,kBAAa,EAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAE7D,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AATW,QAAA,mBAAmB,uBAS9B;AAEF,yFAAyF;AAClF,MAAM,gBAAgB,GAAG,CAAC,OAAkE,EAAmB,EAAE,CACtH,IAAA,qBAAS,EAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAA,2BAAmB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AADnE,QAAA,gBAAgB,oBACmD;AAEhF;;;GAGG;AACI,MAAM,mBAAmB,GAAG,CAAC,OAAqD,EAAE,EAAE;IAC3F,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO;IAE7C,IAAA,kBAAa,EAAC,IAAA,cAAO,EAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5F,CAAC,CAAC;AAJW,QAAA,mBAAmB,uBAI9B;AAEF,MAAM,kBAAkB,GAAG,CAAC,OAAkE,EAAE,EAAE;;IAChG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACpC,MAAM,UAAU,GAAG,IAAA,cAAO,EAAC,IAAA,0BAAkB,GAAE,EAAE,gBAAgB,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,IAAA,cAAO,EAAC,IAAA,0BAAkB,GAAE,EAAE,gBAAgB,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAA,cAAO,EAAC,IAAA,0BAAkB,GAAE,EAAE,iBAAiB,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAA,cAAO,EAAC,IAAA,0BAAkB,GAAE,EAAE,aAAa,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,IAAA,0BAAkB,GAAE,EAAE,kBAAkB,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAA,6BAAW,EAAC,EAAE,QAAQ,EAAE,MAAA,MAAA,MAAA,IAAA,kBAAU,EAAC,MAAM,CAAC,0CAAE,MAAM,0CAAE,QAAQ,mCAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAChG,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAA,yBAAe,EAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACxG,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,cAAO,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG;QACb,eAAe,kCACV,yCAAwB,KAC3B,KAAK,4EACA,SAAS,GACT,SAAS,GACT,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,4BAAkB,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACzE,CAAC,+BAAuB,CAAC,EAAE,CAAC,UAAU,CAAC,EACvC,CAAC,mBAAa,CAAC,EAAE,CAAC,GAAG,CAAC,KACnB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,uBAAa,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,cAAO,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAE1G;QACD,OAAO,EAAE;YACP,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACzC,GAAG,QAAQ;YACX,GAAG,MAAM;YACT,UAAU;YACV,GAAG;YACH,UAAU;YACV,SAAS;YACT,MAAM;SACP;KACF,CAAC;IAEF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /** The module specifiers a TS file imports, static and dynamic. */
2
+ export declare const importsOf: (source: string) => string[];
3
+ /** The text of each string literal and template chunk, so markup and inline CSS can be scanned. */
4
+ export declare const textsOf: (source: string) => string[];
5
+ /** The name of each function a TS file calls, `requestAnimationFrame` for `window.requestAnimationFrame(…)` too. */
6
+ export declare const calledNamesOf: (source: string) => string[];
7
+ /** The names a TS module exports, `default` for its default export; a bare `export *` adds none. */
8
+ export declare const exportedNamesOf: (source: string) => string[];
9
+ /**
10
+ * The names a TS module takes from each module it imports or re-exports from, by specifier; `'*'` when it takes the
11
+ * whole module (`import * as`, `export *`, a dynamic `import()`).
12
+ */
13
+ export declare const importedNamesOf: (source: string) => Map<string, Set<string>>;
@@ -0,0 +1,108 @@
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.importedNamesOf = exports.exportedNamesOf = exports.calledNamesOf = exports.textsOf = exports.importsOf = void 0;
7
+ const typescript_1 = __importDefault(require("typescript"));
8
+ const sourceFileOf = (source) => typescript_1.default.createSourceFile('part.ts', source, typescript_1.default.ScriptTarget.Latest, true);
9
+ const nodesOf = (source) => {
10
+ const nodes = [];
11
+ const visit = (node) => {
12
+ nodes.push(node);
13
+ typescript_1.default.forEachChild(node, visit);
14
+ };
15
+ visit(sourceFileOf(source));
16
+ return nodes;
17
+ };
18
+ /** The module specifiers a TS file imports, static and dynamic. */
19
+ const importsOf = (source) => typescript_1.default.preProcessFile(source, true, true).importedFiles.map((imported) => imported.fileName);
20
+ exports.importsOf = importsOf;
21
+ /** The text of each string literal and template chunk, so markup and inline CSS can be scanned. */
22
+ const textsOf = (source) => nodesOf(source).flatMap((node) => typescript_1.default.isStringLiteral(node) ||
23
+ typescript_1.default.isNoSubstitutionTemplateLiteral(node) ||
24
+ typescript_1.default.isTemplateHead(node) ||
25
+ typescript_1.default.isTemplateMiddle(node) ||
26
+ typescript_1.default.isTemplateTail(node)
27
+ ? [node.text]
28
+ : []);
29
+ exports.textsOf = textsOf;
30
+ /** The name of each function a TS file calls, `requestAnimationFrame` for `window.requestAnimationFrame(…)` too. */
31
+ const calledNamesOf = (source) => nodesOf(source).flatMap((node) => {
32
+ if (!typescript_1.default.isCallExpression(node))
33
+ return [];
34
+ const callee = node.expression;
35
+ if (typescript_1.default.isIdentifier(callee))
36
+ return [callee.text];
37
+ if (typescript_1.default.isPropertyAccessExpression(callee))
38
+ return [callee.name.text];
39
+ return [];
40
+ });
41
+ exports.calledNamesOf = calledNamesOf;
42
+ const hasExportKeyword = (node) => { var _a; return typescript_1.default.canHaveModifiers(node) && ((_a = typescript_1.default.getModifiers(node)) !== null && _a !== void 0 ? _a : []).some((m) => m.kind === typescript_1.default.SyntaxKind.ExportKeyword); };
43
+ const hasDefaultKeyword = (node) => { var _a; return typescript_1.default.canHaveModifiers(node) && ((_a = typescript_1.default.getModifiers(node)) !== null && _a !== void 0 ? _a : []).some((m) => m.kind === typescript_1.default.SyntaxKind.DefaultKeyword); };
44
+ const declaredNamesOf = (statement) => {
45
+ if (typescript_1.default.isVariableStatement(statement))
46
+ return statement.declarationList.declarations.flatMap((declaration) => typescript_1.default.isIdentifier(declaration.name) ? [declaration.name.text] : []);
47
+ if (hasDefaultKeyword(statement))
48
+ return ['default'];
49
+ if ((typescript_1.default.isFunctionDeclaration(statement) ||
50
+ typescript_1.default.isClassDeclaration(statement) ||
51
+ typescript_1.default.isInterfaceDeclaration(statement) ||
52
+ typescript_1.default.isTypeAliasDeclaration(statement) ||
53
+ typescript_1.default.isEnumDeclaration(statement)) &&
54
+ statement.name)
55
+ return [statement.name.text];
56
+ return [];
57
+ };
58
+ /** The names a TS module exports, `default` for its default export; a bare `export *` adds none. */
59
+ const exportedNamesOf = (source) => sourceFileOf(source).statements.flatMap((statement) => {
60
+ if (typescript_1.default.isExportAssignment(statement))
61
+ return ['default'];
62
+ if (typescript_1.default.isExportDeclaration(statement))
63
+ return statement.exportClause && typescript_1.default.isNamedExports(statement.exportClause)
64
+ ? statement.exportClause.elements.map((element) => element.name.text)
65
+ : [];
66
+ return hasExportKeyword(statement) ? declaredNamesOf(statement) : [];
67
+ });
68
+ exports.exportedNamesOf = exportedNamesOf;
69
+ /**
70
+ * The names a TS module takes from each module it imports or re-exports from, by specifier; `'*'` when it takes the
71
+ * whole module (`import * as`, `export *`, a dynamic `import()`).
72
+ */
73
+ const importedNamesOf = (source) => {
74
+ const taken = new Map();
75
+ const take = (specifier, names) => {
76
+ var _a;
77
+ if (!specifier || !typescript_1.default.isStringLiteralLike(specifier))
78
+ return;
79
+ const known = (_a = taken.get(specifier.text)) !== null && _a !== void 0 ? _a : new Set();
80
+ names.forEach((name) => known.add(name));
81
+ taken.set(specifier.text, known);
82
+ };
83
+ for (const node of nodesOf(source)) {
84
+ if (typescript_1.default.isImportDeclaration(node)) {
85
+ const clause = node.importClause;
86
+ const bindings = clause === null || clause === void 0 ? void 0 : clause.namedBindings;
87
+ take(node.moduleSpecifier, [
88
+ ...((clause === null || clause === void 0 ? void 0 : clause.name) ? ['default'] : []),
89
+ ...(bindings && typescript_1.default.isNamespaceImport(bindings) ? ['*'] : []),
90
+ ...(bindings && typescript_1.default.isNamedImports(bindings)
91
+ ? bindings.elements.map((element) => { var _a; return ((_a = element.propertyName) !== null && _a !== void 0 ? _a : element.name).text; })
92
+ : []),
93
+ ]);
94
+ }
95
+ else if (typescript_1.default.isExportDeclaration(node)) {
96
+ const clause = node.exportClause;
97
+ take(node.moduleSpecifier, clause && typescript_1.default.isNamedExports(clause)
98
+ ? clause.elements.map((element) => { var _a; return ((_a = element.propertyName) !== null && _a !== void 0 ? _a : element.name).text; })
99
+ : ['*']);
100
+ }
101
+ else if (typescript_1.default.isCallExpression(node) && node.expression.kind === typescript_1.default.SyntaxKind.ImportKeyword) {
102
+ take(node.arguments[0], ['*']);
103
+ }
104
+ }
105
+ return taken;
106
+ };
107
+ exports.importedNamesOf = importedNamesOf;
108
+ //# sourceMappingURL=ts-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-source.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/ts-source.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAE5B,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,oBAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,oBAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAE9G,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE;IACjC,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,EAAE;QAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,oBAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5B,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,mEAAmE;AAC5D,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE,CAC1C,oBAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAD9E,QAAA,SAAS,aACqE;AAE3F,mGAAmG;AAC5F,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE,CACxC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/B,oBAAE,CAAC,eAAe,CAAC,IAAI,CAAC;IACxB,oBAAE,CAAC,+BAA+B,CAAC,IAAI,CAAC;IACxC,oBAAE,CAAC,cAAc,CAAC,IAAI,CAAC;IACvB,oBAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;IACzB,oBAAE,CAAC,cAAc,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACb,CAAC,CAAC,EAAE,CACP,CAAC;AATS,QAAA,OAAO,WAShB;AAEJ,oHAAoH;AAC7G,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,EAAE,CAC9C,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;IAC/B,IAAI,CAAC,oBAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IAE/B,IAAI,oBAAE,CAAC,YAAY,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,oBAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAErE,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAVQ,QAAA,aAAa,iBAUrB;AAEL,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAAE,EAAE,WACzC,OAAA,oBAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAA,oBAAE,CAAC,YAAY,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA,EAAA,CAAC;AAEjH,MAAM,iBAAiB,GAAG,CAAC,IAAa,EAAE,EAAE,WAC1C,OAAA,oBAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAA,oBAAE,CAAC,YAAY,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA,EAAA,CAAC;AAElH,MAAM,eAAe,GAAG,CAAC,SAAuB,EAAY,EAAE;IAC5D,IAAI,oBAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;QACnC,OAAO,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CACpE,oBAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CACjE,CAAC;IACJ,IAAI,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACrD,IACE,CAAC,oBAAE,CAAC,qBAAqB,CAAC,SAAS,CAAC;QAClC,oBAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC;QAChC,oBAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC;QACpC,oBAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC;QACpC,oBAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,SAAS,CAAC,IAAI;QAEd,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/B,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,oGAAoG;AAC7F,MAAM,eAAe,GAAG,CAAC,MAAc,EAAY,EAAE,CAC1D,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;IACpD,IAAI,oBAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC;QAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,oBAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;QACnC,OAAO,SAAS,CAAC,YAAY,IAAI,oBAAE,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC;YACxE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YACrE,CAAC,CAAC,EAAE,CAAC;IAET,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvE,CAAC,CAAC,CAAC;AATQ,QAAA,eAAe,mBASvB;AAEL;;;GAGG;AACI,MAAM,eAAe,GAAG,CAAC,MAAc,EAA4B,EAAE;IAC1E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC7C,MAAM,IAAI,GAAG,CAAC,SAAoC,EAAE,KAAe,EAAE,EAAE;;QACrE,IAAI,CAAC,SAAS,IAAI,CAAC,oBAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAAE,OAAO;QAE7D,MAAM,KAAK,GAAG,MAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,mCAAI,IAAI,GAAG,EAAU,CAAC;QAE7D,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,IAAI,oBAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;YACjC,MAAM,QAAQ,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC;YAEvC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,GAAG,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,GAAG,CAAC,QAAQ,IAAI,oBAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,GAAG,CAAC,QAAQ,IAAI,oBAAE,CAAC,cAAc,CAAC,QAAQ,CAAC;oBACzC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,WAAC,OAAA,CAAC,MAAA,OAAO,CAAC,YAAY,mCAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA,EAAA,CAAC;oBACjF,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,oBAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;YAEjC,IAAI,CACF,IAAI,CAAC,eAAe,EACpB,MAAM,IAAI,oBAAE,CAAC,cAAc,CAAC,MAAM,CAAC;gBACjC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,WAAC,OAAA,CAAC,MAAA,OAAO,CAAC,YAAY,mCAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA,EAAA,CAAC;gBAC/E,CAAC,CAAC,CAAC,GAAG,CAAC,CACV,CAAC;QACJ,CAAC;aAAM,IAAI,oBAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YAC7F,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAtCW,QAAA,eAAe,mBAsC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"system-use.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system-use.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-use.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/system-use.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,67 @@
1
1
  import { IncomingMessage, ServerResponse } from 'http';
2
- import { chromiumOf } from './browser';
2
+ import { Chromium, chromiumOf } from './browser';
3
3
  export declare const THUMB_PATH = "/__design/thumb";
4
4
  /** The pixel width a thumbnail comes out at: twice the 180px tile Studio shows it in. */
5
5
  export declare const THUMB_PIXEL_WIDTH = 360;
6
+ export declare const DRAW_TIMEOUT_MS = 15000;
7
+ export type Browser = Awaited<ReturnType<Chromium['launch']>>;
8
+ type Shot = {
9
+ status: number;
10
+ type: string;
11
+ body: Buffer | string;
12
+ };
6
13
  export declare class ThumbUnavailableError extends Error {
7
14
  }
8
15
  export declare class ThumbMissingError extends Error {
9
16
  }
17
+ export declare class ShotUnprocessableError extends Error {
18
+ }
19
+ /** A frame that drew its own error text: the shot is that picture, answered with a failing status. */
20
+ export declare class ShotFailedError extends Error {
21
+ readonly png: Buffer;
22
+ constructor(message: string, png: Buffer);
23
+ }
24
+ export declare class ShotTimeoutError extends Error {
25
+ }
26
+ type Page = Awaited<ReturnType<Awaited<ReturnType<Browser['newContext']>>['newPage']>>;
27
+ /** Opens a frame and waits until it drew its content or its error, then for fonts and two frames. */
28
+ export declare const openFrame: (page: Page, url: string) => Promise<void>;
29
+ export declare const settled = "new Promise((done) => document.fonts.ready.then(() =>\n requestAnimationFrame(() => requestAnimationFrame(() => done(true)))))";
30
+ export type DrawPriority = 'high' | 'low';
31
+ /**
32
+ * One shared headless Chromium, launched on the first ask, that runs one drawing at a time. A waiting
33
+ * `high` drawing runs before every waiting `low` one, each lane in the order asked. A failed launch is
34
+ * not kept, so the next ask tries again.
35
+ */
36
+ export declare const createDrawQueue: (options: {
37
+ target: string;
38
+ chromiumOf?: typeof chromiumOf;
39
+ }) => {
40
+ run: <T>(draw: (browser: Browser) => Promise<T>, priority?: DrawPriority) => Promise<T>;
41
+ /** Moves a drawing `run` returned into the high lane, unless it already started. */
42
+ hurry: (drawn: Promise<unknown>) => void;
43
+ close: () => Promise<void>;
44
+ };
45
+ export declare const sendShot: (response: ServerResponse, shot: Promise<Buffer>) => undefined;
46
+ export declare const send: (response: ServerResponse, { status, type, body }: Shot) => void;
47
+ /** Whether a call may draw from a file under the calls root: its own, or one in a folder above it. */
48
+ export declare const callDrawsFrom: ({ slug, file }: {
49
+ slug: string;
50
+ file: string;
51
+ }) => boolean;
10
52
  /**
11
- * Draws variants into PNGs in one shared headless Chromium, launched on the first ask. Renders run
12
- * one at a time, and each finished picture is kept per query until its call is drawn again.
53
+ * Draws variants into PNGs in the shared Chromium of a draw queue. Each finished picture is kept per
54
+ * query until its call is drawn again.
13
55
  */
14
56
  export declare const createThumbnailer: (options: {
15
57
  target: string;
16
- base: string;
58
+ base: string | (() => string);
17
59
  chromiumOf?: typeof chromiumOf;
18
60
  }) => {
19
61
  middleware: (request: IncomingMessage, response: ServerResponse) => void;
20
62
  /** Drops the pictures a changed file may draw into: its own call's, or every call below its folder. */
21
63
  forget: (file: string) => void;
64
+ clear: () => void;
22
65
  close: () => Promise<void>;
23
66
  };
67
+ export {};
@@ -9,38 +9,69 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.createThumbnailer = exports.ThumbMissingError = exports.ThumbUnavailableError = exports.THUMB_PIXEL_WIDTH = exports.THUMB_PATH = void 0;
12
+ exports.createThumbnailer = exports.callDrawsFrom = exports.send = exports.sendShot = exports.createDrawQueue = exports.settled = exports.openFrame = exports.ShotTimeoutError = exports.ShotFailedError = exports.ShotUnprocessableError = exports.ThumbMissingError = exports.ThumbUnavailableError = exports.DRAW_TIMEOUT_MS = exports.THUMB_PIXEL_WIDTH = exports.THUMB_PATH = void 0;
13
13
  const path_1 = require("path");
14
14
  const browser_1 = require("./browser");
15
15
  exports.THUMB_PATH = '/__design/thumb';
16
16
  /** The pixel width a thumbnail comes out at: twice the 180px tile Studio shows it in. */
17
17
  exports.THUMB_PIXEL_WIDTH = 360;
18
18
  const THUMB_ASPECT = 9 / 16;
19
- const DRAW_TIMEOUT_MS = 15000;
19
+ exports.DRAW_TIMEOUT_MS = 15000;
20
20
  class ThumbUnavailableError extends Error {
21
21
  }
22
22
  exports.ThumbUnavailableError = ThumbUnavailableError;
23
23
  class ThumbMissingError extends Error {
24
24
  }
25
25
  exports.ThumbMissingError = ThumbMissingError;
26
+ class ShotUnprocessableError extends Error {
27
+ }
28
+ exports.ShotUnprocessableError = ShotUnprocessableError;
29
+ /** A frame that drew its own error text: the shot is that picture, answered with a failing status. */
30
+ class ShotFailedError extends Error {
31
+ constructor(message, png) {
32
+ super(message);
33
+ this.png = png;
34
+ }
35
+ }
36
+ exports.ShotFailedError = ShotFailedError;
37
+ class ShotTimeoutError extends Error {
38
+ }
39
+ exports.ShotTimeoutError = ShotTimeoutError;
26
40
  const frameWidthOf = (slug) => `(async (slug) => {
27
41
  const { calls } = await import('/@id/__x00__virtual:design-explore');
28
42
  if (!calls[slug]) return null;
29
43
  return (await calls[slug]()).default.frameWidth ?? null;
30
44
  })(${JSON.stringify(slug)})`;
31
- const settled = `new Promise((done) => document.fonts.ready.then(() =>
45
+ /** Opens a frame and waits until it drew its content or its error, then for fonts and two frames. */
46
+ const openFrame = (page, url) => __awaiter(void 0, void 0, void 0, function* () {
47
+ yield page.goto(url, { waitUntil: 'domcontentloaded' });
48
+ yield page
49
+ .locator('#root > :not(style)')
50
+ .first()
51
+ .waitFor({ state: 'attached', timeout: exports.DRAW_TIMEOUT_MS })
52
+ .catch(() => undefined);
53
+ yield page
54
+ .locator('iframe[data-et-embed]:not([data-et-embed-drawn])')
55
+ .first()
56
+ .waitFor({ state: 'detached', timeout: exports.DRAW_TIMEOUT_MS })
57
+ .catch(() => undefined);
58
+ });
59
+ exports.openFrame = openFrame;
60
+ exports.settled = `new Promise((done) => document.fonts.ready.then(() =>
32
61
  requestAnimationFrame(() => requestAnimationFrame(() => done(true)))))`;
33
62
  /**
34
- * Draws variants into PNGs in one shared headless Chromium, launched on the first ask. Renders run
35
- * one at a time, and each finished picture is kept per query until its call is drawn again.
63
+ * One shared headless Chromium, launched on the first ask, that runs one drawing at a time. A waiting
64
+ * `high` drawing runs before every waiting `low` one, each lane in the order asked. A failed launch is
65
+ * not kept, so the next ask tries again.
36
66
  */
37
- const createThumbnailer = (options) => {
67
+ const createDrawQueue = (options) => {
38
68
  var _a;
39
- const { target, base } = options;
69
+ const { target } = options;
40
70
  const resolveChromium = (_a = options.chromiumOf) !== null && _a !== void 0 ? _a : browser_1.chromiumOf;
41
- const cache = new Map();
42
71
  let browser = null;
43
- let queue = Promise.resolve();
72
+ const waiting = { high: [], low: [] };
73
+ const jobs = new WeakMap();
74
+ let drawing = false;
44
75
  const launch = () => {
45
76
  browser !== null && browser !== void 0 ? browser : (browser = resolveChromium(target).then((resolved) => {
46
77
  if (!resolved) {
@@ -53,16 +84,84 @@ const createThumbnailer = (options) => {
53
84
  browser.catch(() => (browser = null));
54
85
  return browser;
55
86
  };
56
- const draw = (slug, search) => __awaiter(void 0, void 0, void 0, function* () {
57
- const context = yield (yield launch()).newContext({ viewport: { width: 1600, height: 900 } });
87
+ const next = () => {
88
+ var _a;
89
+ const job = drawing ? undefined : ((_a = waiting.high.shift()) !== null && _a !== void 0 ? _a : waiting.low.shift());
90
+ if (!job)
91
+ return;
92
+ drawing = true;
93
+ void job().finally(() => {
94
+ drawing = false;
95
+ next();
96
+ });
97
+ };
98
+ return {
99
+ run: (draw, priority = 'high') => {
100
+ let job = () => Promise.resolve();
101
+ const drawn = new Promise((resolve, reject) => {
102
+ job = () => launch().then(draw).then(resolve, reject);
103
+ });
104
+ jobs.set(drawn, job);
105
+ waiting[priority].push(job);
106
+ next();
107
+ return drawn;
108
+ },
109
+ /** Moves a drawing `run` returned into the high lane, unless it already started. */
110
+ hurry: (drawn) => {
111
+ const job = jobs.get(drawn);
112
+ const at = job ? waiting.low.indexOf(job) : -1;
113
+ if (job && at >= 0)
114
+ waiting.high.push(...waiting.low.splice(at, 1));
115
+ },
116
+ close: () => __awaiter(void 0, void 0, void 0, function* () {
117
+ const running = browser;
118
+ browser = null;
119
+ yield (running === null || running === void 0 ? void 0 : running.then((open) => open.close()).catch(() => undefined));
120
+ }),
121
+ };
122
+ };
123
+ exports.createDrawQueue = createDrawQueue;
124
+ const sendShot = (response, shot) => void shot.then((body) => (0, exports.send)(response, { status: 200, type: 'image/png', body }), (error) => (0, exports.send)(response, error instanceof ShotFailedError
125
+ ? { status: 500, type: 'image/png', body: error.png }
126
+ : {
127
+ status: error instanceof ThumbUnavailableError
128
+ ? 503
129
+ : error instanceof ThumbMissingError
130
+ ? 404
131
+ : error instanceof ShotUnprocessableError
132
+ ? 422
133
+ : error instanceof ShotTimeoutError
134
+ ? 504
135
+ : 500,
136
+ type: 'text/plain; charset=utf-8',
137
+ body: error instanceof Error ? error.message : String(error),
138
+ }));
139
+ exports.sendShot = sendShot;
140
+ const send = (response, { status, type, body }) => {
141
+ response.statusCode = status;
142
+ response.setHeader('content-type', type);
143
+ response.end(body);
144
+ };
145
+ exports.send = send;
146
+ /** Whether a call may draw from a file under the calls root: its own, or one in a folder above it. */
147
+ const callDrawsFrom = ({ slug, file }) => {
148
+ const folder = path_1.posix.dirname(file.replace(/\\/g, '/'));
149
+ return folder === '.' || slug.startsWith(`${folder}/`) || folder === slug || folder.startsWith(`${slug}/`);
150
+ };
151
+ exports.callDrawsFrom = callDrawsFrom;
152
+ /**
153
+ * Draws variants into PNGs in the shared Chromium of a draw queue. Each finished picture is kept per
154
+ * query until its call is drawn again.
155
+ */
156
+ const createThumbnailer = (options) => {
157
+ const baseOf = () => (typeof options.base === 'function' ? options.base() : options.base);
158
+ const drawQueue = (0, exports.createDrawQueue)(options);
159
+ const cache = new Map();
160
+ const draw = (browser_2, _a) => __awaiter(void 0, [browser_2, _a], void 0, function* (browser, { slug, search }) {
161
+ const context = yield browser.newContext({ viewport: { width: 1600, height: 900 } });
58
162
  try {
59
163
  const page = yield context.newPage();
60
- yield page.goto(`${base}/frame.html${search}`, { waitUntil: 'domcontentloaded' });
61
- yield page
62
- .locator('#root > :not(style)')
63
- .first()
64
- .waitFor({ timeout: DRAW_TIMEOUT_MS })
65
- .catch(() => undefined);
164
+ yield (0, exports.openFrame)(page, `${baseOf()}/frame.html${search}`);
66
165
  const width = (yield page.evaluate(frameWidthOf(slug)));
67
166
  if (!width)
68
167
  throw new ThumbMissingError(`design-explore: no call "${slug}" with a frameWidth`);
@@ -73,7 +172,7 @@ const createThumbnailer = (options) => {
73
172
  deviceScaleFactor: exports.THUMB_PIXEL_WIDTH / width,
74
173
  mobile: false,
75
174
  });
76
- yield page.evaluate(settled);
175
+ yield page.evaluate(exports.settled);
77
176
  const { data } = yield cdp.send('Page.captureScreenshot', { format: 'png' });
78
177
  return Buffer.from(data, 'base64');
79
178
  }
@@ -85,8 +184,7 @@ const createThumbnailer = (options) => {
85
184
  const cached = cache.get(search);
86
185
  if (cached)
87
186
  return cached.shot;
88
- const shot = queue.then(() => draw(slug, search));
89
- queue = shot.catch(() => undefined);
187
+ const shot = drawQueue.run((browser) => draw(browser, { slug, search }));
90
188
  cache.set(search, { slug, shot });
91
189
  shot.catch(() => { var _a; return ((_a = cache.get(search)) === null || _a === void 0 ? void 0 : _a.shot) === shot && cache.delete(search); });
92
190
  return shot;
@@ -96,35 +194,27 @@ const createThumbnailer = (options) => {
96
194
  var _a, _b;
97
195
  const url = new URL((_a = request.url) !== null && _a !== void 0 ? _a : '', 'http://localhost');
98
196
  const slug = (_b = url.searchParams.get('call')) !== null && _b !== void 0 ? _b : '';
99
- const send = ({ status, type, body }) => {
100
- response.statusCode = status;
101
- response.setHeader('content-type', type);
102
- response.end(body);
103
- };
104
197
  if (!slug || !url.searchParams.get('variant')) {
105
- send({ status: 400, type: 'text/plain; charset=utf-8', body: 'design-explore: pass call and variant' });
198
+ (0, exports.send)(response, {
199
+ status: 400,
200
+ type: 'text/plain; charset=utf-8',
201
+ body: 'design-explore: pass call and variant',
202
+ });
106
203
  return;
107
204
  }
108
- void shotOf(slug, url.search).then((body) => send({ status: 200, type: 'image/png', body }), (error) => send({
109
- status: error instanceof ThumbUnavailableError ? 503 : error instanceof ThumbMissingError ? 404 : 500,
110
- type: 'text/plain; charset=utf-8',
111
- body: error instanceof Error ? error.message : String(error),
112
- }));
205
+ (0, exports.sendShot)(response, shotOf(slug, url.search));
113
206
  },
114
207
  /** Drops the pictures a changed file may draw into: its own call's, or every call below its folder. */
115
208
  forget: (file) => {
116
- const folder = path_1.posix.dirname(file.replace(/\\/g, '/'));
117
209
  for (const [key, entry] of cache) {
118
- const shared = folder === '.' || entry.slug.startsWith(`${folder}/`);
119
- if (shared || folder === entry.slug || folder.startsWith(`${entry.slug}/`))
210
+ if ((0, exports.callDrawsFrom)({ slug: entry.slug, file }))
120
211
  cache.delete(key);
121
212
  }
122
213
  },
214
+ clear: () => cache.clear(),
123
215
  close: () => __awaiter(void 0, void 0, void 0, function* () {
124
- const running = browser;
125
- browser = null;
126
216
  cache.clear();
127
- yield (running === null || running === void 0 ? void 0 : running.then((open) => open.close()).catch(() => undefined));
217
+ yield drawQueue.close();
128
218
  }),
129
219
  };
130
220
  };
@@ -1 +1 @@
1
- {"version":3,"file":"thumb.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/thumb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thumb.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/thumb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * A tool the checker shells out to, taken from the checkout first and from this package second, so
3
+ * a checkout that keeps design calls need not install anything of its own. The path comes out of
4
+ * the package's own `bin` field, because an `exports` map hides the file from a direct resolve.
5
+ */
6
+ export declare const binaryOf: (options: {
7
+ target: string;
8
+ pkg: string;
9
+ bin: string;
10
+ }) => string | null;
11
+ /** A bundler stack runs to hundreds of frames and says nothing. Keep the message. */
12
+ export declare const trim: (text: string) => string;
13
+ export declare const outputOf: (error: unknown) => string;
14
+ export type TypecheckResult = {
15
+ kind: 'ok';
16
+ } | {
17
+ kind: 'unavailable';
18
+ message: string;
19
+ } | {
20
+ kind: 'failed';
21
+ output: string;
22
+ };
23
+ /** Runs `tsc --noEmit -p <tsconfig>` from the checkout. */
24
+ export declare const typecheck: (options: {
25
+ target: string;
26
+ tsconfig: string;
27
+ }) => TypecheckResult;