@ethlete/cli 3.0.0-next.20 → 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 (337) hide show
  1. package/CHANGELOG.md +190 -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 +446 -62
  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 +67 -0
  296. package/src/lib/design/thumb.js +222 -0
  297. package/src/lib/design/thumb.js.map +1 -0
  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 +14 -4
  324. package/src/lib/update/migrations-command.js.map +1 -1
  325. package/src/lib/update/package-manager.d.ts +1 -1
  326. package/src/lib/update/package-manager.js.map +1 -1
  327. package/src/lib/update/packages.js.map +1 -1
  328. package/src/lib/update/pending.js.map +1 -1
  329. package/src/lib/update/plan.js.map +1 -1
  330. package/src/lib/update/registry.js.map +1 -1
  331. package/src/lib/update/run-migrations.js.map +1 -1
  332. package/src/lib/update/scan.js +8 -3
  333. package/src/lib/update/scan.js.map +1 -1
  334. package/src/lib/update/semver.js.map +1 -1
  335. package/src/lib/update/tasks.js.map +1 -1
  336. package/src/lib/update/update-command.js.map +1 -1
  337. 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":"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"}
@@ -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":"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"}
@@ -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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"}
@@ -0,0 +1,67 @@
1
+ import { IncomingMessage, ServerResponse } from 'http';
2
+ import { Chromium, chromiumOf } from './browser';
3
+ export declare const THUMB_PATH = "/__design/thumb";
4
+ /** The pixel width a thumbnail comes out at: twice the 180px tile Studio shows it in. */
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
+ };
13
+ export declare class ThumbUnavailableError extends Error {
14
+ }
15
+ export declare class ThumbMissingError extends Error {
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;
52
+ /**
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.
55
+ */
56
+ export declare const createThumbnailer: (options: {
57
+ target: string;
58
+ base: string | (() => string);
59
+ chromiumOf?: typeof chromiumOf;
60
+ }) => {
61
+ middleware: (request: IncomingMessage, response: ServerResponse) => void;
62
+ /** Drops the pictures a changed file may draw into: its own call's, or every call below its folder. */
63
+ forget: (file: string) => void;
64
+ clear: () => void;
65
+ close: () => Promise<void>;
66
+ };
67
+ export {};
@@ -0,0 +1,222 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
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
+ const path_1 = require("path");
14
+ const browser_1 = require("./browser");
15
+ exports.THUMB_PATH = '/__design/thumb';
16
+ /** The pixel width a thumbnail comes out at: twice the 180px tile Studio shows it in. */
17
+ exports.THUMB_PIXEL_WIDTH = 360;
18
+ const THUMB_ASPECT = 9 / 16;
19
+ exports.DRAW_TIMEOUT_MS = 15000;
20
+ class ThumbUnavailableError extends Error {
21
+ }
22
+ exports.ThumbUnavailableError = ThumbUnavailableError;
23
+ class ThumbMissingError extends Error {
24
+ }
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;
40
+ const frameWidthOf = (slug) => `(async (slug) => {
41
+ const { calls } = await import('/@id/__x00__virtual:design-explore');
42
+ if (!calls[slug]) return null;
43
+ return (await calls[slug]()).default.frameWidth ?? null;
44
+ })(${JSON.stringify(slug)})`;
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(() =>
61
+ requestAnimationFrame(() => requestAnimationFrame(() => done(true)))))`;
62
+ /**
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.
66
+ */
67
+ const createDrawQueue = (options) => {
68
+ var _a;
69
+ const { target } = options;
70
+ const resolveChromium = (_a = options.chromiumOf) !== null && _a !== void 0 ? _a : browser_1.chromiumOf;
71
+ let browser = null;
72
+ const waiting = { high: [], low: [] };
73
+ const jobs = new WeakMap();
74
+ let drawing = false;
75
+ const launch = () => {
76
+ browser !== null && browser !== void 0 ? browser : (browser = resolveChromium(target).then((resolved) => {
77
+ if (!resolved) {
78
+ throw new ThumbUnavailableError('design-explore: no playwright or playwright-core resolves, so the server can not draw thumbnails');
79
+ }
80
+ return resolved.chromium.launch().catch((error) => {
81
+ throw new ThumbUnavailableError(`design-explore: the Chromium of ${resolved.from} did not start\n${error instanceof Error ? error.message : String(error)}`);
82
+ });
83
+ }));
84
+ browser.catch(() => (browser = null));
85
+ return browser;
86
+ };
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 } });
162
+ try {
163
+ const page = yield context.newPage();
164
+ yield (0, exports.openFrame)(page, `${baseOf()}/frame.html${search}`);
165
+ const width = (yield page.evaluate(frameWidthOf(slug)));
166
+ if (!width)
167
+ throw new ThumbMissingError(`design-explore: no call "${slug}" with a frameWidth`);
168
+ const cdp = yield context.newCDPSession(page);
169
+ yield cdp.send('Emulation.setDeviceMetricsOverride', {
170
+ width,
171
+ height: Math.round(width * THUMB_ASPECT),
172
+ deviceScaleFactor: exports.THUMB_PIXEL_WIDTH / width,
173
+ mobile: false,
174
+ });
175
+ yield page.evaluate(exports.settled);
176
+ const { data } = yield cdp.send('Page.captureScreenshot', { format: 'png' });
177
+ return Buffer.from(data, 'base64');
178
+ }
179
+ finally {
180
+ yield context.close();
181
+ }
182
+ });
183
+ const shotOf = (slug, search) => {
184
+ const cached = cache.get(search);
185
+ if (cached)
186
+ return cached.shot;
187
+ const shot = drawQueue.run((browser) => draw(browser, { slug, search }));
188
+ cache.set(search, { slug, shot });
189
+ shot.catch(() => { var _a; return ((_a = cache.get(search)) === null || _a === void 0 ? void 0 : _a.shot) === shot && cache.delete(search); });
190
+ return shot;
191
+ };
192
+ return {
193
+ middleware: (request, response) => {
194
+ var _a, _b;
195
+ const url = new URL((_a = request.url) !== null && _a !== void 0 ? _a : '', 'http://localhost');
196
+ const slug = (_b = url.searchParams.get('call')) !== null && _b !== void 0 ? _b : '';
197
+ if (!slug || !url.searchParams.get('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
+ });
203
+ return;
204
+ }
205
+ (0, exports.sendShot)(response, shotOf(slug, url.search));
206
+ },
207
+ /** Drops the pictures a changed file may draw into: its own call's, or every call below its folder. */
208
+ forget: (file) => {
209
+ for (const [key, entry] of cache) {
210
+ if ((0, exports.callDrawsFrom)({ slug: entry.slug, file }))
211
+ cache.delete(key);
212
+ }
213
+ },
214
+ clear: () => cache.clear(),
215
+ close: () => __awaiter(void 0, void 0, void 0, function* () {
216
+ cache.clear();
217
+ yield drawQueue.close();
218
+ }),
219
+ };
220
+ };
221
+ exports.createThumbnailer = createThumbnailer;
222
+ //# sourceMappingURL=thumb.js.map
@@ -0,0 +1 @@
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;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.typecheck = exports.outputOf = exports.trim = exports.binaryOf = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const fs_1 = require("fs");
6
+ const path_1 = require("path");
7
+ /**
8
+ * A tool the checker shells out to, taken from the checkout first and from this package second, so
9
+ * a checkout that keeps design calls need not install anything of its own. The path comes out of
10
+ * the package's own `bin` field, because an `exports` map hides the file from a direct resolve.
11
+ */
12
+ const binaryOf = (options) => {
13
+ const { target, pkg, bin } = options;
14
+ try {
15
+ const manifest = require.resolve(`${pkg}/package.json`, { paths: [target, __dirname] });
16
+ const declared = JSON.parse((0, fs_1.readFileSync)(manifest, 'utf8')).bin;
17
+ const path = typeof declared === 'string' ? declared : declared === null || declared === void 0 ? void 0 : declared[bin];
18
+ return path ? (0, path_1.resolve)((0, path_1.dirname)(manifest), path) : null;
19
+ }
20
+ catch (_a) {
21
+ return null;
22
+ }
23
+ };
24
+ exports.binaryOf = binaryOf;
25
+ /** A bundler stack runs to hundreds of frames and says nothing. Keep the message. */
26
+ const trim = (text) => [...new Set(text.split('\n').filter((line) => !/^\s+at /.test(line) && line.trim() !== ''))].slice(0, 12).join('\n');
27
+ exports.trim = trim;
28
+ const outputOf = (error) => {
29
+ var _a, _b;
30
+ const shape = error;
31
+ return (0, exports.trim)(`${(_a = shape.stdout) !== null && _a !== void 0 ? _a : ''}${(_b = shape.stderr) !== null && _b !== void 0 ? _b : ''}`);
32
+ };
33
+ exports.outputOf = outputOf;
34
+ /** Runs `tsc --noEmit -p <tsconfig>` from the checkout. */
35
+ const typecheck = (options) => {
36
+ const { target, tsconfig } = options;
37
+ /**
38
+ * `TSC=@typescript/native-preview` runs the Go port, which is about a third faster - but it
39
+ * rejects a `baseUrl` in the config, so a repository that still uses one cannot run it.
40
+ */
41
+ const native = process.env['TSC'];
42
+ const tsc = native ? null : (0, exports.binaryOf)({ target, pkg: 'typescript', bin: 'tsc' });
43
+ if (!native && !tsc)
44
+ return {
45
+ kind: 'unavailable',
46
+ message: 'NO TYPE CHECKER - neither the checkout nor this package resolves typescript.',
47
+ };
48
+ const command = native
49
+ ? { file: 'npx', args: ['-y', native, '--noEmit', '-p', tsconfig] }
50
+ : { file: process.execPath, args: [tsc, '--noEmit', '-p', tsconfig] };
51
+ try {
52
+ (0, child_process_1.execFileSync)(command.file, command.args, { cwd: target, encoding: 'utf8', stdio: 'pipe' });
53
+ }
54
+ catch (error) {
55
+ return { kind: 'failed', output: (0, exports.outputOf)(error) };
56
+ }
57
+ return { kind: 'ok' };
58
+ };
59
+ exports.typecheck = typecheck;
60
+ //# sourceMappingURL=typecheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typecheck.js","sourceRoot":"","sources":["../../../../../libs/cli/src/lib/design/typecheck.ts"],"names":[],"mappings":"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"}