zard-cli 1.0.0-beta.12 → 1.0.0-beta.121

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 (265) hide show
  1. package/README.md +39 -167
  2. package/commands/add/component-installer.d.ts +4 -1
  3. package/commands/add/component-installer.d.ts.map +1 -1
  4. package/commands/add/component-installer.js +33 -5
  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 +2 -0
  11. package/commands/add/dark-mode-setup.d.ts.map +1 -1
  12. package/commands/add/dark-mode-setup.js +5 -11
  13. package/commands/add/dark-mode-setup.js.map +1 -1
  14. package/commands/add/dependency-resolver.d.ts +5 -2
  15. package/commands/add/dependency-resolver.d.ts.map +1 -1
  16. package/commands/add/dependency-resolver.js +54 -20
  17. package/commands/add/dependency-resolver.js.map +1 -1
  18. package/commands/add/index.d.ts.map +1 -1
  19. package/commands/add/index.js +135 -86
  20. package/commands/add/index.js.map +1 -1
  21. package/commands/add/typeset-setup.d.ts +12 -0
  22. package/commands/add/typeset-setup.d.ts.map +1 -0
  23. package/commands/add/typeset-setup.js +68 -0
  24. package/commands/add/typeset-setup.js.map +1 -0
  25. package/commands/add/wizard.d.ts +34 -0
  26. package/commands/add/wizard.d.ts.map +1 -0
  27. package/commands/add/wizard.js +295 -0
  28. package/commands/add/wizard.js.map +1 -0
  29. package/commands/init/config-prompter.d.ts +66 -56
  30. package/commands/init/config-prompter.d.ts.map +1 -1
  31. package/commands/init/config-prompter.js +90 -74
  32. package/commands/init/config-prompter.js.map +1 -1
  33. package/commands/init/dependencies.d.ts +1 -8
  34. package/commands/init/dependencies.d.ts.map +1 -1
  35. package/commands/init/dependencies.js +51 -23
  36. package/commands/init/dependencies.js.map +1 -1
  37. package/commands/init/index.d.ts.map +1 -1
  38. package/commands/init/index.js +150 -86
  39. package/commands/init/index.js.map +1 -1
  40. package/commands/init/project-kind.d.ts +82 -0
  41. package/commands/init/project-kind.d.ts.map +1 -0
  42. package/commands/init/project-kind.js +166 -0
  43. package/commands/init/project-kind.js.map +1 -0
  44. package/commands/init/steps.d.ts +15 -0
  45. package/commands/init/steps.d.ts.map +1 -0
  46. package/commands/init/steps.js +154 -0
  47. package/commands/init/steps.js.map +1 -0
  48. package/commands/init/tailwind-setup.d.ts +9 -2
  49. package/commands/init/tailwind-setup.d.ts.map +1 -1
  50. package/commands/init/tailwind-setup.js +33 -9
  51. package/commands/init/tailwind-setup.js.map +1 -1
  52. package/commands/init/theme-loader.d.ts.map +1 -1
  53. package/commands/init/theme-loader.js +1 -3
  54. package/commands/init/theme-loader.js.map +1 -1
  55. package/commands/init/tsconfig-updater.d.ts +8 -1
  56. package/commands/init/tsconfig-updater.d.ts.map +1 -1
  57. package/commands/init/tsconfig-updater.js +30 -11
  58. package/commands/init/tsconfig-updater.js.map +1 -1
  59. package/commands/init/update-angular-config.d.ts.map +1 -1
  60. package/commands/init/update-angular-config.js +28 -47
  61. package/commands/init/update-angular-config.js.map +1 -1
  62. package/commands/init/vite-setup.d.ts +11 -0
  63. package/commands/init/vite-setup.d.ts.map +1 -0
  64. package/commands/init/vite-setup.js +61 -0
  65. package/commands/init/vite-setup.js.map +1 -0
  66. package/commands/init/wizard.d.ts +30 -0
  67. package/commands/init/wizard.d.ts.map +1 -0
  68. package/commands/init/wizard.js +560 -0
  69. package/commands/init/wizard.js.map +1 -0
  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 +135 -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 +752 -126
  84. package/core/registry/registry-data.js.map +1 -1
  85. package/core/themes/theme-definitions.d.ts +5 -5
  86. package/core/themes/theme-definitions.d.ts.map +1 -1
  87. package/core/themes/theme-definitions.js +75 -61
  88. package/core/themes/theme-definitions.js.map +1 -1
  89. package/index.js +41 -4
  90. package/index.js.map +1 -1
  91. package/package.json +9 -14
  92. package/ui/blocks.d.ts +71 -0
  93. package/ui/blocks.d.ts.map +1 -0
  94. package/ui/blocks.js +116 -0
  95. package/ui/blocks.js.map +1 -0
  96. package/ui/brand.d.ts +14 -0
  97. package/ui/brand.d.ts.map +1 -0
  98. package/ui/brand.js +35 -0
  99. package/ui/brand.js.map +1 -0
  100. package/ui/engine/animation/index.d.ts +38 -0
  101. package/ui/engine/animation/index.d.ts.map +1 -0
  102. package/ui/engine/animation/index.js +102 -0
  103. package/ui/engine/animation/index.js.map +1 -0
  104. package/ui/engine/ansi/index.d.ts +51 -0
  105. package/ui/engine/ansi/index.d.ts.map +1 -0
  106. package/ui/engine/ansi/index.js +116 -0
  107. package/ui/engine/ansi/index.js.map +1 -0
  108. package/ui/engine/components/index.d.ts +211 -0
  109. package/ui/engine/components/index.d.ts.map +1 -0
  110. package/ui/engine/components/index.js +109 -0
  111. package/ui/engine/components/index.js.map +1 -0
  112. package/ui/engine/cursor/index.d.ts +16 -0
  113. package/ui/engine/cursor/index.d.ts.map +1 -0
  114. package/ui/engine/cursor/index.js +40 -0
  115. package/ui/engine/cursor/index.js.map +1 -0
  116. package/ui/engine/diff/index.d.ts +26 -0
  117. package/ui/engine/diff/index.d.ts.map +1 -0
  118. package/ui/engine/diff/index.js +56 -0
  119. package/ui/engine/diff/index.js.map +1 -0
  120. package/ui/engine/events/index.d.ts +24 -0
  121. package/ui/engine/events/index.d.ts.map +1 -0
  122. package/ui/engine/events/index.js +60 -0
  123. package/ui/engine/events/index.js.map +1 -0
  124. package/ui/engine/focus/index.d.ts +25 -0
  125. package/ui/engine/focus/index.d.ts.map +1 -0
  126. package/ui/engine/focus/index.js +77 -0
  127. package/ui/engine/focus/index.js.map +1 -0
  128. package/ui/engine/frame/index.d.ts +48 -0
  129. package/ui/engine/frame/index.d.ts.map +1 -0
  130. package/ui/engine/frame/index.js +0 -0
  131. package/ui/engine/frame/index.js.map +1 -0
  132. package/ui/engine/index.d.ts +28 -0
  133. package/ui/engine/index.d.ts.map +1 -0
  134. package/ui/engine/index.js +28 -0
  135. package/ui/engine/index.js.map +1 -0
  136. package/ui/engine/input/index.d.ts +36 -0
  137. package/ui/engine/input/index.d.ts.map +1 -0
  138. package/ui/engine/input/index.js +224 -0
  139. package/ui/engine/input/index.js.map +1 -0
  140. package/ui/engine/layout/index.d.ts +42 -0
  141. package/ui/engine/layout/index.d.ts.map +1 -0
  142. package/ui/engine/layout/index.js +241 -0
  143. package/ui/engine/layout/index.js.map +1 -0
  144. package/ui/engine/renderer/index.d.ts +43 -0
  145. package/ui/engine/renderer/index.d.ts.map +1 -0
  146. package/ui/engine/renderer/index.js +619 -0
  147. package/ui/engine/renderer/index.js.map +1 -0
  148. package/ui/engine/scheduler/index.d.ts +22 -0
  149. package/ui/engine/scheduler/index.d.ts.map +1 -0
  150. package/ui/engine/scheduler/index.js +77 -0
  151. package/ui/engine/scheduler/index.js.map +1 -0
  152. package/ui/engine/screen/index.d.ts +39 -0
  153. package/ui/engine/screen/index.d.ts.map +1 -0
  154. package/ui/engine/screen/index.js +255 -0
  155. package/ui/engine/screen/index.js.map +1 -0
  156. package/ui/engine/terminal/index.d.ts +84 -0
  157. package/ui/engine/terminal/index.d.ts.map +1 -0
  158. package/ui/engine/terminal/index.js +235 -0
  159. package/ui/engine/terminal/index.js.map +1 -0
  160. package/ui/engine/testing/index.d.ts +27 -0
  161. package/ui/engine/testing/index.d.ts.map +1 -0
  162. package/ui/engine/testing/index.js +63 -0
  163. package/ui/engine/testing/index.js.map +1 -0
  164. package/ui/engine/theme/index.d.ts +26 -0
  165. package/ui/engine/theme/index.d.ts.map +1 -0
  166. package/ui/engine/theme/index.js +128 -0
  167. package/ui/engine/theme/index.js.map +1 -0
  168. package/ui/engine/utils/index.d.ts +12 -0
  169. package/ui/engine/utils/index.d.ts.map +1 -0
  170. package/ui/engine/utils/index.js +143 -0
  171. package/ui/engine/utils/index.js.map +1 -0
  172. package/ui/gate.d.ts +19 -0
  173. package/ui/gate.d.ts.map +1 -0
  174. package/ui/gate.js +36 -0
  175. package/ui/gate.js.map +1 -0
  176. package/ui/index.d.ts +18 -0
  177. package/ui/index.d.ts.map +1 -0
  178. package/ui/index.js +18 -0
  179. package/ui/index.js.map +1 -0
  180. package/ui/log-sink.d.ts +24 -0
  181. package/ui/log-sink.d.ts.map +1 -0
  182. package/ui/log-sink.js +35 -0
  183. package/ui/log-sink.js.map +1 -0
  184. package/ui/output.d.ts +14 -0
  185. package/ui/output.d.ts.map +1 -0
  186. package/ui/output.js +28 -0
  187. package/ui/output.js.map +1 -0
  188. package/ui/report.d.ts +30 -0
  189. package/ui/report.d.ts.map +1 -0
  190. package/ui/report.js +45 -0
  191. package/ui/report.js.map +1 -0
  192. package/ui/runner.d.ts +66 -0
  193. package/ui/runner.d.ts.map +1 -0
  194. package/ui/runner.js +135 -0
  195. package/ui/runner.js.map +1 -0
  196. package/ui/style.d.ts +24 -0
  197. package/ui/style.d.ts.map +1 -0
  198. package/ui/style.js +44 -0
  199. package/ui/style.js.map +1 -0
  200. package/ui/testing/fake-tty.d.ts +26 -0
  201. package/ui/testing/fake-tty.d.ts.map +1 -0
  202. package/ui/testing/fake-tty.js +61 -0
  203. package/ui/testing/fake-tty.js.map +1 -0
  204. package/ui/text-input.d.ts +31 -0
  205. package/ui/text-input.d.ts.map +1 -0
  206. package/ui/text-input.js +89 -0
  207. package/ui/text-input.js.map +1 -0
  208. package/ui/theme.d.ts +10 -0
  209. package/ui/theme.d.ts.map +1 -0
  210. package/ui/theme.js +20 -0
  211. package/ui/theme.js.map +1 -0
  212. package/utils/angular-compat.d.ts +21 -0
  213. package/utils/angular-compat.d.ts.map +1 -0
  214. package/utils/angular-compat.js +52 -0
  215. package/utils/angular-compat.js.map +1 -0
  216. package/utils/config.d.ts +52 -69
  217. package/utils/config.d.ts.map +1 -1
  218. package/utils/config.js +60 -9
  219. package/utils/config.js.map +1 -1
  220. package/utils/errors.d.ts +27 -0
  221. package/utils/errors.d.ts.map +1 -0
  222. package/utils/errors.js +45 -0
  223. package/utils/errors.js.map +1 -0
  224. package/utils/get-package-info.js +4 -4
  225. package/utils/get-package-info.js.map +1 -1
  226. package/utils/get-project-info.d.ts +30 -0
  227. package/utils/get-project-info.d.ts.map +1 -1
  228. package/utils/get-project-info.js +195 -6
  229. package/utils/get-project-info.js.map +1 -1
  230. package/utils/http-client.d.ts +8 -0
  231. package/utils/http-client.d.ts.map +1 -0
  232. package/utils/http-client.js +83 -0
  233. package/utils/http-client.js.map +1 -0
  234. package/utils/icon-catalog.d.ts +34 -0
  235. package/utils/icon-catalog.d.ts.map +1 -0
  236. package/utils/icon-catalog.js +63 -0
  237. package/utils/icon-catalog.js.map +1 -0
  238. package/utils/logger.d.ts +16 -1
  239. package/utils/logger.d.ts.map +1 -1
  240. package/utils/logger.js +104 -12
  241. package/utils/logger.js.map +1 -1
  242. package/utils/package-manager.d.ts +44 -1
  243. package/utils/package-manager.d.ts.map +1 -1
  244. package/utils/package-manager.js +210 -14
  245. package/utils/package-manager.js.map +1 -1
  246. package/utils/registry.d.ts +44 -2
  247. package/utils/registry.d.ts.map +1 -1
  248. package/utils/registry.js +89 -30
  249. package/utils/registry.js.map +1 -1
  250. package/utils/schema-version.d.ts +21 -0
  251. package/utils/schema-version.d.ts.map +1 -0
  252. package/utils/schema-version.js +28 -0
  253. package/utils/schema-version.js.map +1 -0
  254. package/utils/source-file.d.ts +40 -0
  255. package/utils/source-file.d.ts.map +1 -0
  256. package/utils/source-file.js +104 -0
  257. package/utils/source-file.js.map +1 -0
  258. package/utils/theme-selector.d.ts +1 -1
  259. package/utils/theme-selector.d.ts.map +1 -1
  260. package/utils/theme-selector.js +6 -6
  261. package/utils/theme-selector.js.map +1 -1
  262. package/utils/fetch-component.d.ts +0 -3
  263. package/utils/fetch-component.d.ts.map +0 -1
  264. package/utils/fetch-component.js +0 -75
  265. package/utils/fetch-component.js.map +0 -1
@@ -1,9 +1,24 @@
1
1
  import { logger } from '../../utils/logger.js';
2
+ import { arrayRange, lineEndingOf, withImport } from '../../utils/source-file.js';
2
3
  import { existsSync } from 'fs';
3
4
  import * as fsPromises from 'fs/promises';
4
5
  import * as path from 'path';
5
- const ZARD_PROVIDER_IMPORT = "import { provideZard } from '@/shared/core/provider/providezard';\n";
6
- const ZARD_PROVIDER_ENTRY = 'provideZard(),';
6
+ const ZARD_PROVIDER_IMPORT = (corePath) => `import { provideZard } from '${corePath}/provider/providezard';`;
7
+ const ZARD_PROVIDER_ENTRY = 'provideZard()';
8
+ /**
9
+ * Appends the provider to the end of the list.
10
+ *
11
+ * The `]` stays on its own line: the list is code the user will read and edit
12
+ * later, and welding the closing bracket onto the last provider leaves the file
13
+ * crooked the moment the project's Prettier does not run afterwards.
14
+ */
15
+ function withProvider(content, providers, eol) {
16
+ const body = providers.body.replace(/\s+$/, '');
17
+ const entries = body.trim() === '' ? '' : `${body.endsWith(',') ? body : `${body},`}`;
18
+ return (content.slice(0, providers.open) +
19
+ `[${entries}${eol} ${ZARD_PROVIDER_ENTRY},${eol} ]` +
20
+ content.slice(providers.close + 1));
21
+ }
7
22
  /**
8
23
  * Asynchronously reads, modifies, and writes the Angular application configuration file.
9
24
  * @returns {Promise<void>} A promise that resolves when the file operation is complete.
@@ -16,54 +31,20 @@ export async function updateAngularConfig(cwd, config) {
16
31
  }
17
32
  try {
18
33
  await fsPromises.access(appConfigPath);
19
- let content = await fsPromises.readFile(appConfigPath, 'utf8');
20
- // Add new import at the top
21
- if (!content.includes(ZARD_PROVIDER_IMPORT.trim())) {
22
- const importRegex = /^import .* from '.*';\n?/gm;
23
- let lastImportMatch = null;
24
- let match;
25
- while ((match = importRegex.exec(content)) !== null) {
26
- lastImportMatch = match;
27
- }
28
- if (lastImportMatch) {
29
- const insertionIndex = lastImportMatch.index + lastImportMatch[0].length;
30
- content = content.slice(0, insertionIndex) + ZARD_PROVIDER_IMPORT + content.slice(insertionIndex);
31
- }
32
- else {
33
- content = ZARD_PROVIDER_IMPORT + content;
34
- }
35
- }
36
- else {
37
- logger.warn('Import statement already exists. Skipping.');
38
- }
39
- // Add the provider to the providers array
40
- const providersRegex = /providers:\s*\[([^\]]*?)\]/s;
41
- if (providersRegex.test(content)) {
42
- content = content.replace(providersRegex, (match, providersContent) => {
43
- const entryToCheck = ZARD_PROVIDER_ENTRY.replace(/,$/, '').trim();
44
- if (providersContent.includes(entryToCheck)) {
45
- logger.warn('Provider already exists in the list. Skipping.');
46
- return match;
47
- }
48
- let newProvidersContent;
49
- const trimmedContent = providersContent.trim();
50
- if (trimmedContent === '') {
51
- newProvidersContent = `\n ${ZARD_PROVIDER_ENTRY.trim().replace(/,$/, '')}\n `;
52
- }
53
- else {
54
- const contentWithTrailingComma = trimmedContent.endsWith(',')
55
- ? providersContent
56
- : providersContent.trimEnd() + ',';
57
- newProvidersContent = `${contentWithTrailingComma}\n ${ZARD_PROVIDER_ENTRY}`;
58
- }
59
- return `providers: [${newProvidersContent.replace(/,\s*$/, ',')}]`;
60
- });
61
- }
62
- else {
34
+ const original = await fsPromises.readFile(appConfigPath, 'utf8');
35
+ const eol = lineEndingOf(original);
36
+ const content = withImport(original, ZARD_PROVIDER_IMPORT(config.aliases.core));
37
+ const providers = arrayRange(content, 'providers');
38
+ if (!providers) {
63
39
  logger.error('Could not find the "providers: [...]" array in app.config.ts. The file structure may be unsupported.');
64
40
  return;
65
41
  }
66
- await fsPromises.writeFile(appConfigPath, content, 'utf8');
42
+ if (providers.body.includes(ZARD_PROVIDER_ENTRY)) {
43
+ logger.warn('Provider already exists in the list. Skipping.');
44
+ await fsPromises.writeFile(appConfigPath, content, 'utf8');
45
+ return;
46
+ }
47
+ await fsPromises.writeFile(appConfigPath, withProvider(content, providers, eol), 'utf8');
67
48
  }
68
49
  catch (e) {
69
50
  if (e && typeof e === 'object' && 'code' in e && e.code === 'ENOENT') {
@@ -1 +1 @@
1
- {"version":3,"file":"update-angular-config.js","sourceRoot":"","sources":["../../../src/commands/init/update-angular-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-angular-config.js","sourceRoot":"","sources":["../../../src/commands/init/update-angular-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare function findViteConfig(cwd: string): string | null;
2
+ /**
3
+ * Registers Tailwind as a Vite plugin.
4
+ *
5
+ * In Analog it is Vite that compiles, not the Angular build — a
6
+ * `.postcssrc.json` there is read by nobody, and without the plugin the
7
+ * `@import 'tailwindcss'` the theme writes into the global CSS emits no
8
+ * utilities at all.
9
+ */
10
+ export declare function setupVitePlugin(cwd: string): Promise<void>;
11
+ //# sourceMappingURL=vite-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-setup.d.ts","sourceRoot":"","sources":["../../../src/commands/init/vite-setup.ts"],"names":[],"mappings":"AAYA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEzD;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBhE"}
@@ -0,0 +1,61 @@
1
+ import { logger } from '../../utils/logger.js';
2
+ import { arrayRange, lineEndingOf, withImport } from '../../utils/source-file.js';
3
+ import { existsSync } from 'node:fs';
4
+ import { readFile, writeFile } from 'node:fs/promises';
5
+ import * as path from 'node:path';
6
+ const TAILWIND_IMPORT = "import tailwindcss from '@tailwindcss/vite';";
7
+ const TAILWIND_PLUGIN = 'tailwindcss()';
8
+ /** The names Vite accepts, in the order it looks for them. */
9
+ const CONFIG_FILES = ['vite.config.ts', 'vite.config.mts', 'vite.config.js', 'vite.config.mjs'];
10
+ export function findViteConfig(cwd) {
11
+ return CONFIG_FILES.map(name => path.join(cwd, name)).find(existsSync) ?? null;
12
+ }
13
+ /**
14
+ * Registers Tailwind as a Vite plugin.
15
+ *
16
+ * In Analog it is Vite that compiles, not the Angular build — a
17
+ * `.postcssrc.json` there is read by nobody, and without the plugin the
18
+ * `@import 'tailwindcss'` the theme writes into the global CSS emits no
19
+ * utilities at all.
20
+ */
21
+ export async function setupVitePlugin(cwd) {
22
+ const configPath = findViteConfig(cwd);
23
+ if (!configPath) {
24
+ logger.warn('vite.config.ts not found; add the @tailwindcss/vite plugin manually.');
25
+ return;
26
+ }
27
+ const original = await readFile(configPath, 'utf8');
28
+ if (original.includes('@tailwindcss/vite')) {
29
+ logger.info('Tailwind is already registered as a Vite plugin. Skipping.');
30
+ return;
31
+ }
32
+ const withPlugin = registerPlugin(withImport(original, TAILWIND_IMPORT), lineEndingOf(original));
33
+ if (withPlugin === null) {
34
+ logger.warn(`Could not find the "plugins: [...]" array in ${path.basename(configPath)}; add tailwindcss() manually.`);
35
+ return;
36
+ }
37
+ await writeFile(configPath, withPlugin, 'utf8');
38
+ }
39
+ /**
40
+ * Appends `tailwindcss()` to the plugin list.
41
+ *
42
+ * It goes at the end: order matters to Vite, and Analog's plugin has to process
43
+ * the Angular files before Tailwind scans them for classes.
44
+ */
45
+ function registerPlugin(content, eol) {
46
+ const plugins = arrayRange(content, 'plugins');
47
+ if (!plugins)
48
+ return null;
49
+ if (plugins.body.includes(TAILWIND_PLUGIN))
50
+ return content;
51
+ // The existing items' indentation is whatever the file already uses; matching
52
+ // it keeps the new line from standing out when no Prettier runs afterwards.
53
+ const indent = /\n([ \t]+)\S/.exec(plugins.body)?.[1] ?? ' ';
54
+ const closingIndent = indent.slice(0, Math.max(0, indent.length - 2));
55
+ const trimmed = plugins.body.replace(/\s+$/, '');
56
+ const entries = trimmed.trim() ? `${trimmed.endsWith(',') ? trimmed : `${trimmed},`}` : '';
57
+ return (content.slice(0, plugins.open) +
58
+ `[${entries}${eol}${indent}${TAILWIND_PLUGIN},${eol}${closingIndent}]` +
59
+ content.slice(plugins.close + 1));
60
+ }
61
+ //# sourceMappingURL=vite-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-setup.js","sourceRoot":"","sources":["../../../src/commands/init/vite-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { type ProjectKind } from '../../commands/init/project-kind.js';
2
+ import { type InitStep } from '../../commands/init/steps.js';
3
+ import { type LogRecord } from '../../ui/index.js';
4
+ import { type Config } from '../../utils/config.js';
5
+ import { type ProjectInfo } from '../../utils/get-project-info.js';
6
+ export interface InitWizardOptions {
7
+ readonly cwd: string;
8
+ readonly projectInfo: ProjectInfo;
9
+ readonly packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun';
10
+ readonly isReInitializing: boolean;
11
+ /** Skips the final confirmation (`--yes`). */
12
+ readonly skipConfirmation: boolean;
13
+ /**
14
+ * The type asked for with `--type`, if any.
15
+ *
16
+ * The question is still asked — the flag only puts the cursor on what the user
17
+ * already said they wanted, instead of making them find it in the list again.
18
+ */
19
+ readonly presetKind?: ProjectKind;
20
+ /** O projeto pedido em `--project`, pelo mesmo motivo. */
21
+ readonly presetProjectRoot?: string;
22
+ /** Execution steps, built only once the config is ready. */
23
+ buildSteps(config: Config): InitStep[];
24
+ }
25
+ export interface InitWizardResult {
26
+ readonly config: Config;
27
+ readonly logs: readonly LogRecord[];
28
+ }
29
+ export declare function runInitWizard(options: InitWizardOptions): Promise<InitWizardResult>;
30
+ //# sourceMappingURL=wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../../src/commands/init/wizard.ts"],"names":[],"mappings":"AACA,OAAO,EAAmD,KAAK,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACvH,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAwBL,KAAK,SAAS,EAKf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,gCAAgC,CAAC;AAuMzF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IACzD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,8CAA8C;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,4DAA4D;IAC5D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;CACrC;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqVzF"}