zard-cli 1.0.0-beta.99 → 1.0.0

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 (253) hide show
  1. package/README.md +92 -36
  2. package/commands/add/component-installer.d.ts +3 -0
  3. package/commands/add/component-installer.d.ts.map +1 -1
  4. package/commands/add/component-installer.js +10 -4
  5. package/commands/add/component-installer.js.map +1 -1
  6. package/commands/add/component-selector.d.ts +6 -0
  7. package/commands/add/component-selector.d.ts.map +1 -1
  8. package/commands/add/component-selector.js +9 -27
  9. package/commands/add/component-selector.js.map +1 -1
  10. package/commands/add/dark-mode-setup.d.ts.map +1 -1
  11. package/commands/add/dark-mode-setup.js +2 -11
  12. package/commands/add/dark-mode-setup.js.map +1 -1
  13. package/commands/add/dependency-resolver.d.ts +8 -1
  14. package/commands/add/dependency-resolver.d.ts.map +1 -1
  15. package/commands/add/dependency-resolver.js +87 -16
  16. package/commands/add/dependency-resolver.js.map +1 -1
  17. package/commands/add/index.d.ts.map +1 -1
  18. package/commands/add/index.js +128 -96
  19. package/commands/add/index.js.map +1 -1
  20. package/commands/add/stylesheet-setup.d.ts +3 -0
  21. package/commands/add/stylesheet-setup.d.ts.map +1 -0
  22. package/commands/add/stylesheet-setup.js +92 -0
  23. package/commands/add/stylesheet-setup.js.map +1 -0
  24. package/commands/add/wizard.d.ts +35 -0
  25. package/commands/add/wizard.d.ts.map +1 -0
  26. package/commands/add/wizard.js +299 -0
  27. package/commands/add/wizard.js.map +1 -0
  28. package/commands/init/config-prompter.d.ts +55 -3
  29. package/commands/init/config-prompter.d.ts.map +1 -1
  30. package/commands/init/config-prompter.js +92 -74
  31. package/commands/init/config-prompter.js.map +1 -1
  32. package/commands/init/dependencies.d.ts +1 -8
  33. package/commands/init/dependencies.d.ts.map +1 -1
  34. package/commands/init/dependencies.js +51 -25
  35. package/commands/init/dependencies.js.map +1 -1
  36. package/commands/init/index.d.ts.map +1 -1
  37. package/commands/init/index.js +147 -81
  38. package/commands/init/index.js.map +1 -1
  39. package/commands/init/project-kind.d.ts +82 -0
  40. package/commands/init/project-kind.d.ts.map +1 -0
  41. package/commands/init/project-kind.js +166 -0
  42. package/commands/init/project-kind.js.map +1 -0
  43. package/commands/init/steps.d.ts +15 -0
  44. package/commands/init/steps.d.ts.map +1 -0
  45. package/commands/init/steps.js +154 -0
  46. package/commands/init/steps.js.map +1 -0
  47. package/commands/init/tailwind-setup.d.ts +9 -2
  48. package/commands/init/tailwind-setup.d.ts.map +1 -1
  49. package/commands/init/tailwind-setup.js +33 -12
  50. package/commands/init/tailwind-setup.js.map +1 -1
  51. package/commands/init/tsconfig-updater.d.ts +8 -1
  52. package/commands/init/tsconfig-updater.d.ts.map +1 -1
  53. package/commands/init/tsconfig-updater.js +30 -11
  54. package/commands/init/tsconfig-updater.js.map +1 -1
  55. package/commands/init/update-angular-config.d.ts.map +1 -1
  56. package/commands/init/update-angular-config.js +28 -50
  57. package/commands/init/update-angular-config.js.map +1 -1
  58. package/commands/init/vite-setup.d.ts +11 -0
  59. package/commands/init/vite-setup.d.ts.map +1 -0
  60. package/commands/init/vite-setup.js +61 -0
  61. package/commands/init/vite-setup.js.map +1 -0
  62. package/commands/init/wizard.d.ts +30 -0
  63. package/commands/init/wizard.d.ts.map +1 -0
  64. package/commands/init/wizard.js +560 -0
  65. package/commands/init/wizard.js.map +1 -0
  66. package/constants/app.constants.d.ts +17 -0
  67. package/constants/app.constants.d.ts.map +1 -1
  68. package/constants/app.constants.js +39 -16
  69. package/constants/app.constants.js.map +1 -1
  70. package/core/icons/families.d.ts +38 -0
  71. package/core/icons/families.d.ts.map +1 -0
  72. package/core/icons/families.js +26 -0
  73. package/core/icons/families.js.map +1 -0
  74. package/core/icons/icon-map.d.ts +24 -0
  75. package/core/icons/icon-map.d.ts.map +1 -0
  76. package/core/icons/icon-map.js +141 -0
  77. package/core/icons/icon-map.js.map +1 -0
  78. package/core/icons/index.d.ts +107 -0
  79. package/core/icons/index.d.ts.map +1 -0
  80. package/core/icons/index.js +183 -0
  81. package/core/icons/index.js.map +1 -0
  82. package/core/registry/registry-data.d.ts.map +1 -1
  83. package/core/registry/registry-data.js +481 -36
  84. package/core/registry/registry-data.js.map +1 -1
  85. package/core/themes/theme-definitions.d.ts.map +1 -1
  86. package/core/themes/theme-definitions.js +61 -72
  87. package/core/themes/theme-definitions.js.map +1 -1
  88. package/index.js +6 -3
  89. package/index.js.map +1 -1
  90. package/package.json +6 -11
  91. package/ui/blocks.d.ts +71 -0
  92. package/ui/blocks.d.ts.map +1 -0
  93. package/ui/blocks.js +116 -0
  94. package/ui/blocks.js.map +1 -0
  95. package/ui/brand.d.ts +14 -0
  96. package/ui/brand.d.ts.map +1 -0
  97. package/ui/brand.js +35 -0
  98. package/ui/brand.js.map +1 -0
  99. package/ui/engine/animation/index.d.ts +38 -0
  100. package/ui/engine/animation/index.d.ts.map +1 -0
  101. package/ui/engine/animation/index.js +102 -0
  102. package/ui/engine/animation/index.js.map +1 -0
  103. package/ui/engine/ansi/index.d.ts +51 -0
  104. package/ui/engine/ansi/index.d.ts.map +1 -0
  105. package/ui/engine/ansi/index.js +116 -0
  106. package/ui/engine/ansi/index.js.map +1 -0
  107. package/ui/engine/components/index.d.ts +211 -0
  108. package/ui/engine/components/index.d.ts.map +1 -0
  109. package/ui/engine/components/index.js +109 -0
  110. package/ui/engine/components/index.js.map +1 -0
  111. package/ui/engine/cursor/index.d.ts +16 -0
  112. package/ui/engine/cursor/index.d.ts.map +1 -0
  113. package/ui/engine/cursor/index.js +40 -0
  114. package/ui/engine/cursor/index.js.map +1 -0
  115. package/ui/engine/diff/index.d.ts +26 -0
  116. package/ui/engine/diff/index.d.ts.map +1 -0
  117. package/ui/engine/diff/index.js +56 -0
  118. package/ui/engine/diff/index.js.map +1 -0
  119. package/ui/engine/events/index.d.ts +24 -0
  120. package/ui/engine/events/index.d.ts.map +1 -0
  121. package/ui/engine/events/index.js +60 -0
  122. package/ui/engine/events/index.js.map +1 -0
  123. package/ui/engine/focus/index.d.ts +25 -0
  124. package/ui/engine/focus/index.d.ts.map +1 -0
  125. package/ui/engine/focus/index.js +77 -0
  126. package/ui/engine/focus/index.js.map +1 -0
  127. package/ui/engine/frame/index.d.ts +48 -0
  128. package/ui/engine/frame/index.d.ts.map +1 -0
  129. package/ui/engine/frame/index.js +0 -0
  130. package/ui/engine/frame/index.js.map +1 -0
  131. package/ui/engine/index.d.ts +28 -0
  132. package/ui/engine/index.d.ts.map +1 -0
  133. package/ui/engine/index.js +28 -0
  134. package/ui/engine/index.js.map +1 -0
  135. package/ui/engine/input/index.d.ts +36 -0
  136. package/ui/engine/input/index.d.ts.map +1 -0
  137. package/ui/engine/input/index.js +224 -0
  138. package/ui/engine/input/index.js.map +1 -0
  139. package/ui/engine/layout/index.d.ts +42 -0
  140. package/ui/engine/layout/index.d.ts.map +1 -0
  141. package/ui/engine/layout/index.js +241 -0
  142. package/ui/engine/layout/index.js.map +1 -0
  143. package/ui/engine/renderer/index.d.ts +43 -0
  144. package/ui/engine/renderer/index.d.ts.map +1 -0
  145. package/ui/engine/renderer/index.js +619 -0
  146. package/ui/engine/renderer/index.js.map +1 -0
  147. package/ui/engine/scheduler/index.d.ts +22 -0
  148. package/ui/engine/scheduler/index.d.ts.map +1 -0
  149. package/ui/engine/scheduler/index.js +77 -0
  150. package/ui/engine/scheduler/index.js.map +1 -0
  151. package/ui/engine/screen/index.d.ts +39 -0
  152. package/ui/engine/screen/index.d.ts.map +1 -0
  153. package/ui/engine/screen/index.js +255 -0
  154. package/ui/engine/screen/index.js.map +1 -0
  155. package/ui/engine/terminal/index.d.ts +84 -0
  156. package/ui/engine/terminal/index.d.ts.map +1 -0
  157. package/ui/engine/terminal/index.js +235 -0
  158. package/ui/engine/terminal/index.js.map +1 -0
  159. package/ui/engine/testing/index.d.ts +27 -0
  160. package/ui/engine/testing/index.d.ts.map +1 -0
  161. package/ui/engine/testing/index.js +63 -0
  162. package/ui/engine/testing/index.js.map +1 -0
  163. package/ui/engine/theme/index.d.ts +26 -0
  164. package/ui/engine/theme/index.d.ts.map +1 -0
  165. package/ui/engine/theme/index.js +128 -0
  166. package/ui/engine/theme/index.js.map +1 -0
  167. package/ui/engine/utils/index.d.ts +12 -0
  168. package/ui/engine/utils/index.d.ts.map +1 -0
  169. package/ui/engine/utils/index.js +143 -0
  170. package/ui/engine/utils/index.js.map +1 -0
  171. package/ui/gate.d.ts +19 -0
  172. package/ui/gate.d.ts.map +1 -0
  173. package/ui/gate.js +36 -0
  174. package/ui/gate.js.map +1 -0
  175. package/ui/index.d.ts +18 -0
  176. package/ui/index.d.ts.map +1 -0
  177. package/ui/index.js +18 -0
  178. package/ui/index.js.map +1 -0
  179. package/ui/log-sink.d.ts +24 -0
  180. package/ui/log-sink.d.ts.map +1 -0
  181. package/ui/log-sink.js +35 -0
  182. package/ui/log-sink.js.map +1 -0
  183. package/ui/output.d.ts +14 -0
  184. package/ui/output.d.ts.map +1 -0
  185. package/ui/output.js +28 -0
  186. package/ui/output.js.map +1 -0
  187. package/ui/report.d.ts +30 -0
  188. package/ui/report.d.ts.map +1 -0
  189. package/ui/report.js +45 -0
  190. package/ui/report.js.map +1 -0
  191. package/ui/runner.d.ts +66 -0
  192. package/ui/runner.d.ts.map +1 -0
  193. package/ui/runner.js +135 -0
  194. package/ui/runner.js.map +1 -0
  195. package/ui/style.d.ts +24 -0
  196. package/ui/style.d.ts.map +1 -0
  197. package/ui/style.js +44 -0
  198. package/ui/style.js.map +1 -0
  199. package/ui/testing/fake-tty.d.ts +26 -0
  200. package/ui/testing/fake-tty.d.ts.map +1 -0
  201. package/ui/testing/fake-tty.js +61 -0
  202. package/ui/testing/fake-tty.js.map +1 -0
  203. package/ui/text-input.d.ts +31 -0
  204. package/ui/text-input.d.ts.map +1 -0
  205. package/ui/text-input.js +89 -0
  206. package/ui/text-input.js.map +1 -0
  207. package/ui/theme.d.ts +10 -0
  208. package/ui/theme.d.ts.map +1 -0
  209. package/ui/theme.js +20 -0
  210. package/ui/theme.js.map +1 -0
  211. package/utils/angular-compat.d.ts +21 -0
  212. package/utils/angular-compat.d.ts.map +1 -0
  213. package/utils/angular-compat.js +52 -0
  214. package/utils/angular-compat.js.map +1 -0
  215. package/utils/config.d.ts +29 -0
  216. package/utils/config.d.ts.map +1 -1
  217. package/utils/config.js +50 -4
  218. package/utils/config.js.map +1 -1
  219. package/utils/errors.d.ts +11 -0
  220. package/utils/errors.d.ts.map +1 -1
  221. package/utils/errors.js +14 -0
  222. package/utils/errors.js.map +1 -1
  223. package/utils/get-project-info.d.ts +29 -0
  224. package/utils/get-project-info.d.ts.map +1 -1
  225. package/utils/get-project-info.js +176 -1
  226. package/utils/get-project-info.js.map +1 -1
  227. package/utils/http-client.d.ts.map +1 -1
  228. package/utils/http-client.js +18 -3
  229. package/utils/http-client.js.map +1 -1
  230. package/utils/icon-catalog.d.ts +34 -0
  231. package/utils/icon-catalog.d.ts.map +1 -0
  232. package/utils/icon-catalog.js +63 -0
  233. package/utils/icon-catalog.js.map +1 -0
  234. package/utils/logger.d.ts +13 -1
  235. package/utils/logger.d.ts.map +1 -1
  236. package/utils/logger.js +95 -15
  237. package/utils/logger.js.map +1 -1
  238. package/utils/package-manager.d.ts +42 -1
  239. package/utils/package-manager.d.ts.map +1 -1
  240. package/utils/package-manager.js +204 -11
  241. package/utils/package-manager.js.map +1 -1
  242. package/utils/registry.d.ts +84 -2
  243. package/utils/registry.d.ts.map +1 -1
  244. package/utils/registry.js +121 -18
  245. package/utils/registry.js.map +1 -1
  246. package/utils/schema-version.d.ts +21 -0
  247. package/utils/schema-version.d.ts.map +1 -0
  248. package/utils/schema-version.js +28 -0
  249. package/utils/schema-version.js.map +1 -0
  250. package/utils/source-file.d.ts +40 -0
  251. package/utils/source-file.d.ts.map +1 -0
  252. package/utils/source-file.js +104 -0
  253. package/utils/source-file.js.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../../src/commands/init/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAKnD,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB/G"}
1
+ {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../../src/commands/init/dependencies.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAKlF,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC/G"}
@@ -1,35 +1,61 @@
1
+ import { bundlerFor, isLibraryKind } from '../../commands/init/project-kind.js';
2
+ import { iconPackagesFor } from '../../core/icons/index.js';
3
+ import { pinAllForAngular } from '../../utils/angular-compat.js';
1
4
  import { getProjectInfo } from '../../utils/get-project-info.js';
5
+ import { iconCatalog } from '../../utils/icon-catalog.js';
2
6
  import { logger } from '../../utils/logger.js';
3
- import { installPackages } from '../../utils/package-manager.js';
7
+ import { filterInstalledPackages, installPackagesWithRetry } from '../../utils/package-manager.js';
4
8
  export async function installDependencies(cwd, config, projectInfo) {
5
9
  const info = projectInfo || (await getProjectInfo(cwd));
6
- const cdkVersion = getCdkVersion(info.angularVersion);
7
- const deps = [cdkVersion, 'class-variance-authority', 'clsx', 'tailwind-merge', '@ng-icons/core', '@ng-icons/lucide'];
8
- const devDeps = info.hasTailwind
9
- ? ['tailwindcss-animate']
10
- : ['tailwindcss', '@tailwindcss/postcss', 'postcss', 'tailwindcss-animate'];
10
+ // The icon package comes from the family chosen in `components.json`, not from
11
+ // a fixed list: that is what makes `"icons"` mean something the day there is
12
+ // more than one family.
13
+ //
14
+ // Pinned against the project's Angular: the CDK and ng-icons both ship one
15
+ // release per Angular major and peer on `>=` it, so `latest` is the wrong
16
+ // answer for anyone not already on the newest Angular.
17
+ const deps = pinAllForAngular([
18
+ '@angular/cdk',
19
+ 'class-variance-authority',
20
+ 'clsx',
21
+ 'tailwind-merge',
22
+ ...iconPackagesFor(config.icons, iconCatalog()),
23
+ ], info.angularVersion);
24
+ const devDeps = tailwindPackages(config.projectType);
11
25
  if (info.hasTailwind) {
12
- logger.info('Tailwind CSS is already installed. Skipping Tailwind dependencies installation.');
26
+ logger.info('Tailwind CSS is already installed. Only the missing pieces will be added.');
13
27
  }
14
- await installWithRetry(deps, cwd, config.packageManager, false);
15
- if (devDeps.length > 0) {
16
- await installWithRetry(devDeps, cwd, config.packageManager, true);
28
+ // Every batch that comes back empty is a whole manager invocation saved — and
29
+ // that is exactly the common case for a repeated `init`: nothing to install.
30
+ const [missingDeps, missingDevDeps] = await Promise.all([
31
+ filterInstalledPackages(deps, cwd),
32
+ filterInstalledPackages(devDeps, cwd),
33
+ ]);
34
+ if (!missingDeps.length && !missingDevDeps.length) {
35
+ logger.info('All dependencies are already installed.');
36
+ return;
17
37
  }
38
+ await installPackagesWithRetry(missingDeps, cwd, config.packageManager, false);
39
+ await installPackagesWithRetry(missingDevDeps, cwd, config.packageManager, true);
18
40
  }
19
- function getCdkVersion(angularVersion) {
20
- if (!angularVersion) {
21
- return '@angular/cdk';
22
- }
23
- const majorVersion = Number.parseInt(angularVersion.split('.')[0]);
24
- return `@angular/cdk@^${majorVersion}`;
25
- }
26
- async function installWithRetry(packages, cwd, packageManager, isDev) {
27
- try {
28
- await installPackages(packages, cwd, packageManager, isDev);
29
- }
30
- catch {
31
- logger.warn('Installation failed, retrying with --legacy-peer-deps...');
32
- await installPackages(packages, cwd, packageManager, isDev, true);
33
- }
41
+ /**
42
+ * What Tailwind needs to run in that kind of project.
43
+ *
44
+ * The list is always the complete one and the installed-filter decides what is
45
+ * left: checking only for `tailwindcss` missed the case of someone who had it
46
+ * installed but not the bundler adapter, and then the build emitted no
47
+ * utilities at all.
48
+ *
49
+ * A library has no bundler to configure — the consuming application compiles
50
+ * the CSS — but the packages stay because the theme init writes there declares
51
+ * them.
52
+ */
53
+ function tailwindPackages(kind) {
54
+ const shared = ['tailwindcss', 'tailwindcss-animate'];
55
+ if (isLibraryKind(kind))
56
+ return shared;
57
+ return bundlerFor(kind) === 'vite'
58
+ ? [...shared, '@tailwindcss/vite']
59
+ : [...shared, '@tailwindcss/postcss', 'postcss'];
34
60
  }
35
61
  //# sourceMappingURL=dependencies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/commands/init/dependencies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAUhE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,MAAc,EAAE,WAAyB;IAC9F,MAAM,IAAI,GAAG,WAAW,IAAI,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,0BAA0B,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;IAEtH,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;QAC9B,CAAC,CAAC,CAAC,qBAAqB,CAAC;QACzB,CAAC,CAAC,CAAC,aAAa,EAAE,sBAAsB,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAE9E,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAEhE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,cAAuB;IAC5C,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,OAAO,iBAAiB,YAAY,EAAE,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,QAAkB,EAClB,GAAW,EACX,cAA+C,EAC/C,KAAc;IAEd,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACxE,MAAM,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/commands/init/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAoB,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAElG,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,MAAc,EAAE,WAAyB;IAC9F,MAAM,IAAI,GAAG,WAAW,IAAI,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAExD,+EAA+E;IAC/E,6EAA6E;IAC7E,wBAAwB;IACxB,EAAE;IACF,2EAA2E;IAC3E,0EAA0E;IAC1E,uDAAuD;IACvD,MAAM,IAAI,GAAG,gBAAgB,CAC3B;QACE,cAAc;QACd,0BAA0B;QAC1B,MAAM;QACN,gBAAgB;QAChB,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;KAChD,EACD,IAAI,CAAC,cAAc,CACpB,CAAC;IACF,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAErD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IAC3F,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtD,uBAAuB,CAAC,IAAI,EAAE,GAAG,CAAC;QAClC,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC;KACtC,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,MAAM,wBAAwB,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAC/E,MAAM,wBAAwB,CAAC,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,gBAAgB,CAAC,IAA2B;IACnD,MAAM,MAAM,GAAG,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAEtD,IAAI,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAEvC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,MAAM;QAChC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,mBAAmB,CAAC;QAClC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;AACrD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,IAAI,SA2Cb,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,IAAI,SAkEb,CAAC"}
@@ -1,53 +1,88 @@
1
- import { installComponent } from '../../commands/add/component-installer.js';
2
- import { promptForConfig } from '../../commands/init/config-prompter.js';
3
- import { installDependencies } from '../../commands/init/dependencies.js';
4
- import { applyThemeToStyles, createPostCssConfig } from '../../commands/init/tailwind-setup.js';
5
- import { updateTsConfig } from '../../commands/init/tsconfig-updater.js';
6
- import { resolveConfigPaths } from '../../utils/config.js';
1
+ import { buildConfig, defaultAnswers, inspectCssFile } from '../../commands/init/config-prompter.js';
2
+ import { candidateProjects, detectProjectKind, isLibraryKind, PROJECT_KINDS, } from '../../commands/init/project-kind.js';
3
+ import { buildInitSteps } from '../../commands/init/steps.js';
4
+ import { runInitWizard } from '../../commands/init/wizard.js';
5
+ import { isInteractive, printReport, WizardCancelledError } from '../../ui/index.js';
7
6
  import { CliError } from '../../utils/errors.js';
8
7
  import { getProjectInfo } from '../../utils/get-project-info.js';
8
+ import { loadIconCatalog } from '../../utils/icon-catalog.js';
9
9
  import { logger, spinner } from '../../utils/logger.js';
10
- import { detectPackageManager } from '../../utils/package-manager.js';
11
- import chalk from 'chalk';
10
+ import { detectPackageManager, suggestedRunner } from '../../utils/package-manager.js';
11
+ import { getRegistryUrl } from '../../utils/registry.js';
12
12
  import { Command } from 'commander';
13
13
  import { existsSync } from 'node:fs';
14
- import { mkdir, writeFile } from 'node:fs/promises';
15
14
  import * as path from 'node:path';
16
- import prompts from 'prompts';
17
- import { updateAngularConfig } from './update-angular-config.js';
18
15
  export const init = new Command()
19
16
  .name('init')
20
17
  .description('initialize your project and install dependencies')
21
18
  .option('-y, --yes', 'skip confirmation prompt.', false)
22
19
  .option('-c, --cwd <cwd>', 'the working directory. defaults to the current directory.', process.cwd())
20
+ .option('-t, --type <type>', `the project type: ${PROJECT_KINDS.map(kind => kind.value).join(', ')}.`)
21
+ .option('-p, --project <name>', 'the workspace project to configure. defaults to the first compatible one.')
23
22
  .action(async (options) => {
24
23
  const cwd = path.resolve(options.cwd);
25
24
  validateWorkingDirectory(cwd);
26
25
  const projectInfo = await getProjectInfo(cwd);
27
26
  validateAngularProject(projectInfo);
28
- const componentsJsonPath = path.resolve(cwd, 'components.json');
29
- const isReInitializing = existsSync(componentsJsonPath);
30
- if (isReInitializing) {
31
- const shouldContinue = await confirmReinitialization();
32
- if (!shouldContinue) {
33
- logger.info('Re-initialization cancelled.');
34
- process.exit(0);
35
- }
27
+ const kind = resolveKind(options.type);
28
+ const projectRoot = resolveProjectRoot(options.project, kind ?? detectProjectKind(projectInfo), projectInfo);
29
+ const isReInitializing = existsSync(path.resolve(cwd, 'components.json'));
30
+ const packageManager = await detectPackageManager(cwd);
31
+ // Before any step: the catalog is what says which icon package to install,
32
+ // and it comes from the registry so it does not depend on the CLI version.
33
+ await loadIconCatalog(getRegistryUrl());
34
+ const buildSteps = (config) => buildInitSteps(cwd, config, projectInfo, isReInitializing);
35
+ if (!isInteractive()) {
36
+ logHeadlessReason();
37
+ await runHeadless({
38
+ cwd,
39
+ projectInfo,
40
+ packageManager,
41
+ isReInitializing,
42
+ buildSteps,
43
+ yes: options.yes,
44
+ kind,
45
+ projectRoot,
46
+ });
47
+ return;
36
48
  }
37
- logger.info(isReInitializing ? 'Re-initializing ZardUI...' : 'Initializing ZardUI...');
38
- logger.break();
39
- const detectedPm = await detectPackageManager();
40
- logger.break();
41
- const config = await promptForConfig(cwd, projectInfo, detectedPm);
42
- if (!options.yes) {
43
- const shouldProceed = await confirmConfiguration();
44
- if (!shouldProceed) {
49
+ try {
50
+ const { config, logs } = await runInitWizard({
51
+ cwd,
52
+ projectInfo,
53
+ packageManager,
54
+ isReInitializing,
55
+ skipConfirmation: options.yes,
56
+ buildSteps,
57
+ presetKind: kind,
58
+ presetProjectRoot: projectRoot,
59
+ });
60
+ reportSuccess(config, buildSteps(config), logs);
61
+ }
62
+ catch (error) {
63
+ if (error instanceof WizardCancelledError) {
64
+ printReport({
65
+ status: 'cancelled',
66
+ headline: error.message,
67
+ notes: ['Nothing was changed in your project.'],
68
+ });
45
69
  process.exit(0);
46
70
  }
71
+ throw error;
47
72
  }
48
- await runInitializationSteps(cwd, config, projectInfo, isReInitializing);
49
- displaySuccessMessage(config);
50
73
  });
74
+ /**
75
+ * Why the full screen was not mounted.
76
+ *
77
+ * The CLI falling back to text mode is, to whoever is watching, indistinguishable
78
+ * from the interface not existing — which is how the degradation on macOS and
79
+ * Linux went unnoticed until it turned into "it never showed up" reports. With
80
+ * `--debug`, the command answers for itself.
81
+ */
82
+ function logHeadlessReason() {
83
+ logger.debug(`No terminal to draw on (stdin TTY: ${Boolean(process.stdin.isTTY)}, ` +
84
+ `stdout TTY: ${Boolean(process.stdout.isTTY)}, controlling terminal: unreachable) — running headless.`);
85
+ }
51
86
  function validateWorkingDirectory(cwd) {
52
87
  if (!existsSync(cwd)) {
53
88
  throw new CliError(`The path ${cwd} does not exist. Please try again.`, 'INVALID_CWD');
@@ -58,62 +93,93 @@ function validateAngularProject(projectInfo) {
58
93
  throw new CliError('This project does not appear to be an Angular project.', 'NOT_ANGULAR');
59
94
  }
60
95
  }
61
- async function confirmReinitialization() {
62
- logger.warn('ZardUI is already initialized in this project.');
63
- const { reinitialize } = await prompts({
64
- type: 'confirm',
65
- name: 'reinitialize',
66
- message: 'Do you want to re-initialize? This will overwrite your existing configuration and utils.',
67
- initial: true,
68
- });
69
- return reinitialize;
96
+ /**
97
+ * The type asked for with `--type`, when there is one.
98
+ *
99
+ * It is the answer to the wizard's first question given up front — which is what
100
+ * makes init usable in CI, where nobody can pick from a menu.
101
+ */
102
+ function resolveKind(value) {
103
+ if (!value)
104
+ return undefined;
105
+ const kind = PROJECT_KINDS.find(option => option.value === value);
106
+ if (!kind) {
107
+ throw new CliError(`Unknown project type "${value}". Expected one of: ${PROJECT_KINDS.map(option => option.value).join(', ')}.`, 'UNKNOWN_PROJECT_TYPE');
108
+ }
109
+ return kind.value;
70
110
  }
71
- async function confirmConfiguration() {
72
- const { proceed } = await prompts({
73
- type: 'confirm',
74
- name: 'proceed',
75
- message: 'Write configuration to components.json?',
76
- initial: true,
77
- });
78
- return proceed;
111
+ /** The root of the project asked for with `--project`, looked up among the compatible ones. */
112
+ function resolveProjectRoot(name, kind, projectInfo) {
113
+ if (!name)
114
+ return undefined;
115
+ const candidates = candidateProjects(kind, projectInfo);
116
+ const project = candidates.find(candidate => candidate.name === name);
117
+ if (!project) {
118
+ const available = candidates.map(candidate => candidate.name).join(', ') || 'none';
119
+ throw new CliError(`Project "${name}" is not a ${kind} project in this workspace. Available: ${available}.`, 'UNKNOWN_PROJECT');
120
+ }
121
+ return project.root;
79
122
  }
80
- async function runInitializationSteps(cwd, config, projectInfo, isReInitializing) {
81
- const initSpinner = spinner('Initializing project...').start();
82
- await writeFile(path.resolve(cwd, 'components.json'), JSON.stringify(config, null, 2), 'utf8');
83
- initSpinner.text = 'Installing dependencies...';
84
- await installDependencies(cwd, config, projectInfo);
85
- initSpinner.text = 'Configuring Angular...';
86
- await updateAngularConfig(cwd, config);
87
- if (!projectInfo.hasTailwind || isReInitializing) {
88
- initSpinner.text = 'Setting up PostCSS...';
89
- await createPostCssConfig(cwd);
123
+ /**
124
+ * The path without a UI — CI, pipes and non-interactive terminals.
125
+ *
126
+ * Nobody can answer anything here, so the defaults apply and `--yes` is
127
+ * required: without it the CLI refuses to overwrite the project's global CSS.
128
+ */
129
+ async function runHeadless(options) {
130
+ if (!options.yes) {
131
+ throw new CliError('Running without an interactive terminal requires --yes, since init overwrites your global CSS.', 'NOT_INTERACTIVE');
132
+ }
133
+ const kind = options.kind ?? detectProjectKind(options.projectInfo);
134
+ const answers = defaultAnswers(options.projectInfo, kind, options.projectRoot);
135
+ const cssState = await inspectCssFile(options.cwd, answers.globalCss);
136
+ // In a library the theme CSS is created by init, so its absence is expected;
137
+ // in an application the file has to be there and wired into the build.
138
+ if (cssState === 'missing' && !isLibraryKind(answers.kind)) {
139
+ throw new CliError(`CSS file not found at: ${answers.globalCss}. Run init in an interactive terminal to choose another path.`, 'CSS_NOT_FOUND');
140
+ }
141
+ const config = buildConfig(answers, options.packageManager);
142
+ const steps = options.buildSteps(config);
143
+ logger.info(options.isReInitializing ? 'Re-initializing zard/ui...' : 'Initializing zard/ui...');
144
+ for (const step of steps) {
145
+ const stepSpinner = spinner(`${step.label} — ${step.note}`).start();
146
+ try {
147
+ await step.run();
148
+ stepSpinner.succeed(step.label);
149
+ }
150
+ catch (error) {
151
+ stepSpinner.fail(`${step.label}: ${error instanceof Error ? error.message : String(error)}`);
152
+ throw error;
153
+ }
90
154
  }
91
- initSpinner.text = 'Applying theme...';
92
- await applyThemeToStyles(cwd, config);
93
- initSpinner.text = 'Updating TypeScript config...';
94
- await updateTsConfig(cwd, config);
95
- initSpinner.text = 'Installing core dependencies...';
96
- await installCoreDependencies(cwd, config);
97
- initSpinner.succeed('Project initialized');
155
+ reportSuccess(config, steps, []);
98
156
  }
99
- async function installCoreDependencies(cwd, config) {
100
- const resolvedConfig = await resolveConfigPaths(cwd, config);
101
- await mkdir(resolvedConfig.resolvedPaths.core, { recursive: true });
102
- await mkdir(resolvedConfig.resolvedPaths.utils, { recursive: true });
103
- await installComponent('core', resolvedConfig.resolvedPaths.core, resolvedConfig);
104
- await installComponent('utils', resolvedConfig.resolvedPaths.utils, resolvedConfig);
157
+ function reportSuccess(config, steps, logs) {
158
+ printReport({
159
+ status: 'success',
160
+ headline: 'zard/ui has been initialized successfully!',
161
+ items: steps.map(step => `${step.label} — ${step.note}`),
162
+ notes: nextStepsFor(config),
163
+ commands: [{ command: `${suggestedRunner(config.packageManager)} zard-cli add`, argument: '[component]' }],
164
+ logs,
165
+ });
105
166
  }
106
- function displaySuccessMessage(config) {
107
- logger.break();
108
- logger.success('ZardUI has been initialized successfully!');
109
- logger.break();
110
- const runCommand = config.packageManager === 'npm'
111
- ? 'npx'
112
- : config.packageManager === 'yarn'
113
- ? 'yarn dlx'
114
- : `${config.packageManager}x`;
115
- logger.info('You can now add components using:');
116
- logger.info(chalk.bold(` ${runCommand} zard-cli add [component]`));
117
- logger.break();
167
+ /**
168
+ * What is still left to do by hand.
169
+ *
170
+ * In a library init has nowhere to register `provideZard()` and no way to import
171
+ * the tokens — both belong to the app consuming the library, and without this
172
+ * notice the user only finds out when the components do not render.
173
+ */
174
+ function nextStepsFor(config) {
175
+ if (!isLibraryKind(config.projectType)) {
176
+ return ['You can now add components using:'];
177
+ }
178
+ return [
179
+ 'The consuming app still needs to register provideZard() in its app.config.ts',
180
+ `and import the theme tokens from this library's ${path.basename(config.tailwind.css)}.`,
181
+ '',
182
+ 'You can now add components using:',
183
+ ];
118
184
  }
119
185
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Which kind of project `init` is configuring.
3
+ *
4
+ * The user answers, in the wizard's first question — the CLI does not decide for
5
+ * them. What the workspace reveals comes afterwards, to fill in the suggested
6
+ * paths for the chosen type; detection only becomes a decision on the headless
7
+ * path, where there is nobody to ask.
8
+ *
9
+ * The differences between the types are not cosmetic: a library has no
10
+ * `app.config.ts` to register providers in and no pre-existing global CSS, Nx
11
+ * keeps the TypeScript paths in a different file, and Analog swaps Angular's
12
+ * build for Vite — and with it the way Tailwind is configured. Concentrating
13
+ * those differences here keeps every step from rediscovering them.
14
+ */
15
+ import type { ProjectInfo, WorkspaceProject } from '../../utils/get-project-info.js';
16
+ export type ProjectKind = 'angular' | 'angular-library' | 'nx' | 'nx-library' | 'analog';
17
+ export interface ProjectKindOption {
18
+ readonly value: ProjectKind;
19
+ readonly label: string;
20
+ readonly detail: string;
21
+ /** The ecosystem's colour, so the menu says at a glance which world the type belongs to. */
22
+ readonly color: string;
23
+ }
24
+ /**
25
+ * Menu order: each ecosystem with the application before the library, from the
26
+ * most common to the rarest. Angular opens the list because it is the default.
27
+ */
28
+ export declare const PROJECT_KINDS: readonly ProjectKindOption[];
29
+ export declare function isLibraryKind(kind: ProjectKind): boolean;
30
+ /** Where the TypeScript paths have to be written for the project to see them. */
31
+ export declare function tsconfigFileFor(kind: ProjectKind, projectInfo: ProjectInfo): string;
32
+ /** Se o Tailwind entra pelo PostCSS do Angular ou pelo plugin do Vite. */
33
+ export declare function bundlerFor(kind: ProjectKind): 'angular' | 'vite';
34
+ /**
35
+ * The workspace projects that can receive the install.
36
+ *
37
+ * Once the type is chosen, only what matches it makes sense to offer: asking
38
+ * someone who chose "library" to install into an application would offer a
39
+ * target the following steps do not know how to configure.
40
+ */
41
+ export declare function candidateProjects(kind: ProjectKind, projectInfo: ProjectInfo): WorkspaceProject[];
42
+ /** Default root when the workspace declares no compatible project. */
43
+ export declare function fallbackRootFor(kind: ProjectKind): string;
44
+ /**
45
+ * The type the headless path assumes.
46
+ *
47
+ * With no interactive terminal nobody answers the first question, so here — and
48
+ * only here — the workspace decides: the manager gives the world (Nx or
49
+ * Angular), Analog announces itself through its own dependencies, and the
50
+ * absence of any application is what suggests the target is a library.
51
+ */
52
+ export declare function detectProjectKind(projectInfo: ProjectInfo): ProjectKind;
53
+ /**
54
+ * Where a library's code lives.
55
+ *
56
+ * `src/lib` is the convention for both `ng generate library` and
57
+ * `nx g @nx/angular:library`: `src/` holds the public entry point, and
58
+ * everything it exports sits in `src/lib`.
59
+ */
60
+ export declare function libraryBaseUrl(libraryRoot: string): string;
61
+ /** The theme CSS the library starts exposing to whoever consumes it. */
62
+ export declare function libraryStylesPath(libraryRoot: string): string;
63
+ /**
64
+ * The project root, derived from `baseUrl`.
65
+ *
66
+ * Both layouts end two levels below the root — `<root>/src/app` in an
67
+ * application, `<root>/src/lib` in a library — so going up two levels gives the
68
+ * directory holding that project's `project.json`, `ng-package.json` and
69
+ * `.postcssrc.json`. A single app at the root gives `.`.
70
+ */
71
+ export declare function projectRootOf(baseUrl: string): string;
72
+ /** The project's source directory — where `index.html` and `main.ts` sit. */
73
+ export declare function sourceRootOf(baseUrl: string): string;
74
+ /**
75
+ * Where to look for the project's `index.html`.
76
+ *
77
+ * In Analog it is Vite's entry page and sits at the project root, not in `src/`
78
+ * as in the Angular build — suggesting the wrong path made `add dark-mode` fail
79
+ * right after asking.
80
+ */
81
+ export declare function indexHtmlFor(kind: ProjectKind, baseUrl: string): string;
82
+ //# sourceMappingURL=project-kind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-kind.d.ts","sourceRoot":"","sources":["../../../src/commands/init/project-kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGpF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,iBAAiB,GAAG,IAAI,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEzF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAYD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,iBAAiB,EA+BrD,CAAC;AAqBF,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAExD;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,CAOnF;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,gBAAgB,EAAE,CAIjG;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAEzD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,CASvE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAOvE"}