zard-cli 1.0.0-beta.103 → 1.0.0-beta.105

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 (235) hide show
  1. package/commands/add/component-installer.d.ts +2 -0
  2. package/commands/add/component-installer.d.ts.map +1 -1
  3. package/commands/add/component-installer.js +9 -4
  4. package/commands/add/component-installer.js.map +1 -1
  5. package/commands/add/component-selector.d.ts +6 -0
  6. package/commands/add/component-selector.d.ts.map +1 -1
  7. package/commands/add/component-selector.js +9 -27
  8. package/commands/add/component-selector.js.map +1 -1
  9. package/commands/add/dark-mode-setup.d.ts.map +1 -1
  10. package/commands/add/dark-mode-setup.js +2 -11
  11. package/commands/add/dark-mode-setup.js.map +1 -1
  12. package/commands/add/dependency-resolver.d.ts +2 -1
  13. package/commands/add/dependency-resolver.d.ts.map +1 -1
  14. package/commands/add/dependency-resolver.js +19 -4
  15. package/commands/add/dependency-resolver.js.map +1 -1
  16. package/commands/add/index.d.ts.map +1 -1
  17. package/commands/add/index.js +116 -86
  18. package/commands/add/index.js.map +1 -1
  19. package/commands/add/wizard.d.ts +31 -0
  20. package/commands/add/wizard.d.ts.map +1 -0
  21. package/commands/add/wizard.js +289 -0
  22. package/commands/add/wizard.js.map +1 -0
  23. package/commands/init/config-prompter.d.ts +49 -3
  24. package/commands/init/config-prompter.d.ts.map +1 -1
  25. package/commands/init/config-prompter.js +84 -74
  26. package/commands/init/config-prompter.js.map +1 -1
  27. package/commands/init/dependencies.d.ts +1 -8
  28. package/commands/init/dependencies.d.ts.map +1 -1
  29. package/commands/init/dependencies.js +47 -18
  30. package/commands/init/dependencies.js.map +1 -1
  31. package/commands/init/index.d.ts.map +1 -1
  32. package/commands/init/index.js +147 -81
  33. package/commands/init/index.js.map +1 -1
  34. package/commands/init/project-kind.d.ts +82 -0
  35. package/commands/init/project-kind.d.ts.map +1 -0
  36. package/commands/init/project-kind.js +166 -0
  37. package/commands/init/project-kind.js.map +1 -0
  38. package/commands/init/steps.d.ts +16 -0
  39. package/commands/init/steps.d.ts.map +1 -0
  40. package/commands/init/steps.js +153 -0
  41. package/commands/init/steps.js.map +1 -0
  42. package/commands/init/tailwind-setup.d.ts +9 -2
  43. package/commands/init/tailwind-setup.d.ts.map +1 -1
  44. package/commands/init/tailwind-setup.js +33 -12
  45. package/commands/init/tailwind-setup.js.map +1 -1
  46. package/commands/init/tsconfig-updater.d.ts +8 -1
  47. package/commands/init/tsconfig-updater.d.ts.map +1 -1
  48. package/commands/init/tsconfig-updater.js +30 -11
  49. package/commands/init/tsconfig-updater.js.map +1 -1
  50. package/commands/init/update-angular-config.d.ts.map +1 -1
  51. package/commands/init/update-angular-config.js +28 -50
  52. package/commands/init/update-angular-config.js.map +1 -1
  53. package/commands/init/vite-setup.d.ts +10 -0
  54. package/commands/init/vite-setup.d.ts.map +1 -0
  55. package/commands/init/vite-setup.js +60 -0
  56. package/commands/init/vite-setup.js.map +1 -0
  57. package/commands/init/wizard.d.ts +30 -0
  58. package/commands/init/wizard.d.ts.map +1 -0
  59. package/commands/init/wizard.js +560 -0
  60. package/commands/init/wizard.js.map +1 -0
  61. package/core/icons/families.d.ts +38 -0
  62. package/core/icons/families.d.ts.map +1 -0
  63. package/core/icons/families.js +26 -0
  64. package/core/icons/families.js.map +1 -0
  65. package/core/icons/icon-map.d.ts +22 -0
  66. package/core/icons/icon-map.d.ts.map +1 -0
  67. package/core/icons/icon-map.js +128 -0
  68. package/core/icons/icon-map.js.map +1 -0
  69. package/core/icons/index.d.ts +107 -0
  70. package/core/icons/index.d.ts.map +1 -0
  71. package/core/icons/index.js +183 -0
  72. package/core/icons/index.js.map +1 -0
  73. package/core/registry/registry-data.d.ts.map +1 -1
  74. package/core/registry/registry-data.js +74 -0
  75. package/core/registry/registry-data.js.map +1 -1
  76. package/core/themes/theme-definitions.js +50 -50
  77. package/index.js +5 -3
  78. package/index.js.map +1 -1
  79. package/package.json +1 -4
  80. package/ui/blocks.d.ts +70 -0
  81. package/ui/blocks.d.ts.map +1 -0
  82. package/ui/blocks.js +116 -0
  83. package/ui/blocks.js.map +1 -0
  84. package/ui/brand.d.ts +14 -0
  85. package/ui/brand.d.ts.map +1 -0
  86. package/ui/brand.js +35 -0
  87. package/ui/brand.js.map +1 -0
  88. package/ui/engine/animation/index.d.ts +39 -0
  89. package/ui/engine/animation/index.d.ts.map +1 -0
  90. package/ui/engine/animation/index.js +103 -0
  91. package/ui/engine/animation/index.js.map +1 -0
  92. package/ui/engine/ansi/index.d.ts +52 -0
  93. package/ui/engine/ansi/index.d.ts.map +1 -0
  94. package/ui/engine/ansi/index.js +117 -0
  95. package/ui/engine/ansi/index.js.map +1 -0
  96. package/ui/engine/components/index.d.ts +211 -0
  97. package/ui/engine/components/index.d.ts.map +1 -0
  98. package/ui/engine/components/index.js +109 -0
  99. package/ui/engine/components/index.js.map +1 -0
  100. package/ui/engine/cursor/index.d.ts +17 -0
  101. package/ui/engine/cursor/index.d.ts.map +1 -0
  102. package/ui/engine/cursor/index.js +41 -0
  103. package/ui/engine/cursor/index.js.map +1 -0
  104. package/ui/engine/diff/index.d.ts +27 -0
  105. package/ui/engine/diff/index.d.ts.map +1 -0
  106. package/ui/engine/diff/index.js +57 -0
  107. package/ui/engine/diff/index.js.map +1 -0
  108. package/ui/engine/events/index.d.ts +24 -0
  109. package/ui/engine/events/index.d.ts.map +1 -0
  110. package/ui/engine/events/index.js +60 -0
  111. package/ui/engine/events/index.js.map +1 -0
  112. package/ui/engine/focus/index.d.ts +25 -0
  113. package/ui/engine/focus/index.d.ts.map +1 -0
  114. package/ui/engine/focus/index.js +77 -0
  115. package/ui/engine/focus/index.js.map +1 -0
  116. package/ui/engine/frame/index.d.ts +48 -0
  117. package/ui/engine/frame/index.d.ts.map +1 -0
  118. package/ui/engine/frame/index.js +0 -0
  119. package/ui/engine/frame/index.js.map +1 -0
  120. package/ui/engine/index.d.ts +28 -0
  121. package/ui/engine/index.d.ts.map +1 -0
  122. package/ui/engine/index.js +28 -0
  123. package/ui/engine/index.js.map +1 -0
  124. package/ui/engine/input/index.d.ts +36 -0
  125. package/ui/engine/input/index.d.ts.map +1 -0
  126. package/ui/engine/input/index.js +224 -0
  127. package/ui/engine/input/index.js.map +1 -0
  128. package/ui/engine/layout/index.d.ts +42 -0
  129. package/ui/engine/layout/index.d.ts.map +1 -0
  130. package/ui/engine/layout/index.js +241 -0
  131. package/ui/engine/layout/index.js.map +1 -0
  132. package/ui/engine/renderer/index.d.ts +43 -0
  133. package/ui/engine/renderer/index.d.ts.map +1 -0
  134. package/ui/engine/renderer/index.js +619 -0
  135. package/ui/engine/renderer/index.js.map +1 -0
  136. package/ui/engine/scheduler/index.d.ts +22 -0
  137. package/ui/engine/scheduler/index.d.ts.map +1 -0
  138. package/ui/engine/scheduler/index.js +77 -0
  139. package/ui/engine/scheduler/index.js.map +1 -0
  140. package/ui/engine/screen/index.d.ts +39 -0
  141. package/ui/engine/screen/index.d.ts.map +1 -0
  142. package/ui/engine/screen/index.js +255 -0
  143. package/ui/engine/screen/index.js.map +1 -0
  144. package/ui/engine/terminal/index.d.ts +84 -0
  145. package/ui/engine/terminal/index.d.ts.map +1 -0
  146. package/ui/engine/terminal/index.js +235 -0
  147. package/ui/engine/terminal/index.js.map +1 -0
  148. package/ui/engine/testing/index.d.ts +27 -0
  149. package/ui/engine/testing/index.d.ts.map +1 -0
  150. package/ui/engine/testing/index.js +63 -0
  151. package/ui/engine/testing/index.js.map +1 -0
  152. package/ui/engine/theme/index.d.ts +27 -0
  153. package/ui/engine/theme/index.d.ts.map +1 -0
  154. package/ui/engine/theme/index.js +129 -0
  155. package/ui/engine/theme/index.js.map +1 -0
  156. package/ui/engine/utils/index.d.ts +12 -0
  157. package/ui/engine/utils/index.d.ts.map +1 -0
  158. package/ui/engine/utils/index.js +143 -0
  159. package/ui/engine/utils/index.js.map +1 -0
  160. package/ui/gate.d.ts +19 -0
  161. package/ui/gate.d.ts.map +1 -0
  162. package/ui/gate.js +36 -0
  163. package/ui/gate.js.map +1 -0
  164. package/ui/index.d.ts +18 -0
  165. package/ui/index.d.ts.map +1 -0
  166. package/ui/index.js +18 -0
  167. package/ui/index.js.map +1 -0
  168. package/ui/log-sink.d.ts +24 -0
  169. package/ui/log-sink.d.ts.map +1 -0
  170. package/ui/log-sink.js +35 -0
  171. package/ui/log-sink.js.map +1 -0
  172. package/ui/output.d.ts +14 -0
  173. package/ui/output.d.ts.map +1 -0
  174. package/ui/output.js +28 -0
  175. package/ui/output.js.map +1 -0
  176. package/ui/report.d.ts +30 -0
  177. package/ui/report.d.ts.map +1 -0
  178. package/ui/report.js +45 -0
  179. package/ui/report.js.map +1 -0
  180. package/ui/runner.d.ts +66 -0
  181. package/ui/runner.d.ts.map +1 -0
  182. package/ui/runner.js +135 -0
  183. package/ui/runner.js.map +1 -0
  184. package/ui/style.d.ts +24 -0
  185. package/ui/style.d.ts.map +1 -0
  186. package/ui/style.js +44 -0
  187. package/ui/style.js.map +1 -0
  188. package/ui/testing/fake-tty.d.ts +26 -0
  189. package/ui/testing/fake-tty.d.ts.map +1 -0
  190. package/ui/testing/fake-tty.js +61 -0
  191. package/ui/testing/fake-tty.js.map +1 -0
  192. package/ui/text-input.d.ts +30 -0
  193. package/ui/text-input.d.ts.map +1 -0
  194. package/ui/text-input.js +87 -0
  195. package/ui/text-input.js.map +1 -0
  196. package/ui/theme.d.ts +10 -0
  197. package/ui/theme.d.ts.map +1 -0
  198. package/ui/theme.js +20 -0
  199. package/ui/theme.js.map +1 -0
  200. package/utils/config.d.ts +26 -0
  201. package/utils/config.d.ts.map +1 -1
  202. package/utils/config.js +41 -1
  203. package/utils/config.js.map +1 -1
  204. package/utils/errors.d.ts +11 -0
  205. package/utils/errors.d.ts.map +1 -1
  206. package/utils/errors.js +14 -0
  207. package/utils/errors.js.map +1 -1
  208. package/utils/get-project-info.d.ts +29 -0
  209. package/utils/get-project-info.d.ts.map +1 -1
  210. package/utils/get-project-info.js +176 -1
  211. package/utils/get-project-info.js.map +1 -1
  212. package/utils/icon-catalog.d.ts +33 -0
  213. package/utils/icon-catalog.d.ts.map +1 -0
  214. package/utils/icon-catalog.js +62 -0
  215. package/utils/icon-catalog.js.map +1 -0
  216. package/utils/logger.d.ts +13 -1
  217. package/utils/logger.d.ts.map +1 -1
  218. package/utils/logger.js +95 -15
  219. package/utils/logger.js.map +1 -1
  220. package/utils/package-manager.d.ts +42 -1
  221. package/utils/package-manager.d.ts.map +1 -1
  222. package/utils/package-manager.js +204 -11
  223. package/utils/package-manager.js.map +1 -1
  224. package/utils/registry.d.ts +42 -2
  225. package/utils/registry.d.ts.map +1 -1
  226. package/utils/registry.js +51 -9
  227. package/utils/registry.js.map +1 -1
  228. package/utils/schema-version.d.ts +20 -0
  229. package/utils/schema-version.d.ts.map +1 -0
  230. package/utils/schema-version.js +27 -0
  231. package/utils/schema-version.js.map +1 -0
  232. package/utils/source-file.d.ts +40 -0
  233. package/utils/source-file.d.ts.map +1 -0
  234. package/utils/source-file.js +104 -0
  235. package/utils/source-file.js.map +1 -0
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Que tipo de projeto o `init` está configurando.
3
+ *
4
+ * Quem responde é o usuário, na primeira pergunta do wizard — a CLI não decide
5
+ * por ele. O que o workspace revela entra depois, para preencher os caminhos
6
+ * sugeridos do tipo escolhido; a detecção só vira decisão no caminho headless,
7
+ * onde não há ninguém para perguntar.
8
+ *
9
+ * As diferenças entre os tipos não são cosméticas: uma biblioteca não tem
10
+ * `app.config.ts` onde registrar providers nem CSS global pré-existente, o Nx
11
+ * guarda os paths do TypeScript noutro arquivo, e o Analog troca o build do
12
+ * Angular por Vite — e com ele a forma de configurar o Tailwind. Concentrar
13
+ * essas diferenças aqui evita que cada etapa precise redescobri-las.
14
+ */
15
+ import * as path from 'node:path';
16
+ /**
17
+ * As cores de cada ecossistema no menu.
18
+ *
19
+ * Angular fica no branco da base — é o caso padrão, e destacá-lo com uma cor
20
+ * daria a impressão de que é uma opção especial entre as outras.
21
+ */
22
+ const ANGULAR = '#fafafa';
23
+ const NX = '#6aa9ff';
24
+ const ANALOG = '#fb7185';
25
+ /**
26
+ * A ordem é a do menu: cada ecossistema com a aplicação antes da biblioteca,
27
+ * do mais comum ao mais raro. Angular abre a lista porque é o default.
28
+ */
29
+ export const PROJECT_KINDS = [
30
+ {
31
+ value: 'angular',
32
+ label: 'Angular',
33
+ detail: 'Application — providers in app.config.ts, tokens in the global CSS.',
34
+ color: ANGULAR,
35
+ },
36
+ {
37
+ value: 'angular-library',
38
+ label: 'Angular Library',
39
+ detail: 'Publishable library — components ship with it, no app providers.',
40
+ color: ANGULAR,
41
+ },
42
+ {
43
+ value: 'nx',
44
+ label: 'Nx',
45
+ detail: 'Application inside an Nx workspace — paths go to tsconfig.base.json.',
46
+ color: NX,
47
+ },
48
+ {
49
+ value: 'nx-library',
50
+ label: 'Nx Library',
51
+ detail: 'Library inside an Nx workspace — lives in libs/, no app providers.',
52
+ color: NX,
53
+ },
54
+ {
55
+ value: 'analog',
56
+ label: 'Analog.js',
57
+ detail: 'Vite-powered Angular app — Tailwind is a Vite plugin, not PostCSS.',
58
+ color: ANALOG,
59
+ },
60
+ ];
61
+ const TRAITS = {
62
+ angular: { isLibrary: false, workspace: 'angular', bundler: 'angular', fallbackRoot: '' },
63
+ analog: { isLibrary: false, workspace: 'angular', bundler: 'vite', fallbackRoot: '' },
64
+ nx: { isLibrary: false, workspace: 'nx', bundler: 'angular', fallbackRoot: 'apps/app' },
65
+ 'angular-library': { isLibrary: true, workspace: 'angular', bundler: 'angular', fallbackRoot: 'projects/ui' },
66
+ 'nx-library': { isLibrary: true, workspace: 'nx', bundler: 'angular', fallbackRoot: 'libs/ui' },
67
+ };
68
+ export function isLibraryKind(kind) {
69
+ return TRAITS[kind].isLibrary;
70
+ }
71
+ /** Onde os paths do TypeScript precisam ser escritos para o projeto enxergá-los. */
72
+ export function tsconfigFileFor(kind, projectInfo) {
73
+ // O Nx estende um tsconfig.base.json na raiz; escrever no tsconfig.json de lá
74
+ // não chegaria a projeto nenhum. Fora do Nx o próprio tsconfig.json é o alvo,
75
+ // a menos que o workspace já mantenha um base — aí ele é quem manda.
76
+ if (TRAITS[kind].workspace === 'nx')
77
+ return 'tsconfig.base.json';
78
+ return projectInfo.tsconfigFile;
79
+ }
80
+ /** Se o Tailwind entra pelo PostCSS do Angular ou pelo plugin do Vite. */
81
+ export function bundlerFor(kind) {
82
+ return TRAITS[kind].bundler;
83
+ }
84
+ /**
85
+ * Os projetos do workspace que podem receber a instalação.
86
+ *
87
+ * Escolhido o tipo, só faz sentido oferecer o que combina com ele: pedir para
88
+ * instalar numa aplicação quem escolheu biblioteca seria oferecer um alvo que
89
+ * as etapas seguintes não sabem configurar.
90
+ */
91
+ export function candidateProjects(kind, projectInfo) {
92
+ const wanted = TRAITS[kind].isLibrary ? 'library' : 'application';
93
+ return projectInfo.projects.filter(project => project.projectType === wanted);
94
+ }
95
+ /** Raiz padrão quando o workspace não declara nenhum projeto compatível. */
96
+ export function fallbackRootFor(kind) {
97
+ return TRAITS[kind].fallbackRoot;
98
+ }
99
+ /**
100
+ * O tipo que o caminho headless assume.
101
+ *
102
+ * Sem terminal interativo ninguém responde à primeira pergunta, então aqui — e
103
+ * só aqui — o workspace decide: o gerenciador dá o mundo (Nx ou Angular), o
104
+ * Analog se anuncia pelas próprias dependências, e a ausência de qualquer
105
+ * aplicação é o que sugere que o alvo é uma biblioteca.
106
+ */
107
+ export function detectProjectKind(projectInfo) {
108
+ const hasApplication = projectInfo.projects.some(project => project.projectType === 'application');
109
+ const hasLibrary = projectInfo.projects.some(project => project.projectType === 'library');
110
+ const isLibraryWorkspace = !hasApplication && hasLibrary;
111
+ if (projectInfo.hasNx)
112
+ return isLibraryWorkspace ? 'nx-library' : 'nx';
113
+ if (isLibraryWorkspace)
114
+ return 'angular-library';
115
+ return projectInfo.hasAnalog ? 'analog' : 'angular';
116
+ }
117
+ /**
118
+ * Onde o código da biblioteca vive.
119
+ *
120
+ * `src/lib` é a convenção tanto do `ng generate library` quanto do
121
+ * `nx g @nx/angular:library`: `src/` guarda o ponto de entrada público, e tudo
122
+ * que ele exporta fica em `src/lib`.
123
+ */
124
+ export function libraryBaseUrl(libraryRoot) {
125
+ return `${trimSlashes(libraryRoot)}/src/lib`;
126
+ }
127
+ /** O CSS de tema que a biblioteca passa a expor para quem a consome. */
128
+ export function libraryStylesPath(libraryRoot) {
129
+ return `${trimSlashes(libraryRoot)}/src/styles.css`;
130
+ }
131
+ /**
132
+ * A raiz do projeto, deduzida do `baseUrl`.
133
+ *
134
+ * Os dois layouts terminam dois níveis abaixo da raiz — `<root>/src/app` numa
135
+ * aplicação, `<root>/src/lib` numa biblioteca —, então subir dois níveis
136
+ * devolve o diretório onde vivem o `project.json`, o `ng-package.json` e o
137
+ * `.postcssrc.json` daquele projeto. Um app único na raiz devolve `.`.
138
+ */
139
+ export function projectRootOf(baseUrl) {
140
+ return path.posix.normalize(path.posix.join(toPosix(baseUrl), '..', '..'));
141
+ }
142
+ /** O diretório de fontes do projeto — onde `index.html` e `main.ts` ficam. */
143
+ export function sourceRootOf(baseUrl) {
144
+ return path.posix.dirname(toPosix(baseUrl));
145
+ }
146
+ /**
147
+ * Onde procurar o `index.html` do projeto.
148
+ *
149
+ * No Analog ele é a página de entrada do Vite e fica na raiz, e não em `src/`
150
+ * como no build do Angular — sugerir o caminho errado fazia o `add dark-mode`
151
+ * falhar logo depois de perguntar.
152
+ */
153
+ export function indexHtmlFor(kind, baseUrl) {
154
+ if (kind === 'analog') {
155
+ const root = projectRootOf(baseUrl);
156
+ return root === '.' ? 'index.html' : `${root}/index.html`;
157
+ }
158
+ return `${sourceRootOf(baseUrl)}/index.html`;
159
+ }
160
+ function toPosix(value) {
161
+ return value.replace(/\\/g, '/');
162
+ }
163
+ function trimSlashes(value) {
164
+ return value.replace(/\/+$/, '');
165
+ }
166
+ //# sourceMappingURL=project-kind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-kind.js","sourceRoot":"","sources":["../../../src/commands/init/project-kind.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type Config } from '../../utils/config.js';
2
+ import { type ProjectInfo } from '../../utils/get-project-info.js';
3
+ /**
4
+ * Uma etapa da inicialização: o rótulo que a UI mostra e o trabalho que ela faz.
5
+ *
6
+ * A lista é montada uma vez e consumida tanto pelo wizard quanto pelo caminho
7
+ * headless, para que os dois executem exatamente a mesma sequência — a UI só
8
+ * decide como apresentá-la.
9
+ */
10
+ export interface InitStep {
11
+ readonly label: string;
12
+ readonly note: string;
13
+ run(): Promise<void>;
14
+ }
15
+ export declare function buildInitSteps(cwd: string, config: Config, projectInfo: ProjectInfo, isReInitializing: boolean): InitStep[];
16
+ //# sourceMappingURL=steps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../../src/commands/init/steps.ts"],"names":[],"mappings":"AAQA,OAAO,EAAsB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAOlE;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,OAAO,GACxB,QAAQ,EAAE,CA6DZ"}
@@ -0,0 +1,153 @@
1
+ import { installComponent } from '../../commands/add/component-installer.js';
2
+ import { installDependencies } from '../../commands/init/dependencies.js';
3
+ import { bundlerFor, isLibraryKind, projectRootOf, tsconfigFileFor } from '../../commands/init/project-kind.js';
4
+ import { applyThemeToStyles, createPostCssConfig } from '../../commands/init/tailwind-setup.js';
5
+ import { updateTsConfig } from '../../commands/init/tsconfig-updater.js';
6
+ import { updateAngularConfig } from '../../commands/init/update-angular-config.js';
7
+ import { setupVitePlugin } from '../../commands/init/vite-setup.js';
8
+ import { iconFamily } from '../../core/icons/index.js';
9
+ import { resolveConfigPaths } from '../../utils/config.js';
10
+ import { iconCatalog } from '../../utils/icon-catalog.js';
11
+ import { logger } from '../../utils/logger.js';
12
+ import { existsSync } from 'node:fs';
13
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
14
+ import * as path from 'node:path';
15
+ export function buildInitSteps(cwd, config, projectInfo, isReInitializing) {
16
+ const kind = config.projectType;
17
+ const isLibrary = isLibraryKind(kind);
18
+ const projectRoot = projectRootOf(config.baseUrl);
19
+ const tsconfigFile = tsconfigFileFor(kind, projectInfo);
20
+ const steps = [
21
+ {
22
+ label: 'components.json',
23
+ note: 'component & utils aliases',
24
+ run: async () => {
25
+ await writeFile(path.resolve(cwd, 'components.json'), JSON.stringify(config, null, 2), 'utf8');
26
+ },
27
+ },
28
+ {
29
+ label: 'dependencies',
30
+ note: `CDK, CVA, tailwind-merge, ng-icons (${iconFamily(config.icons, iconCatalog())?.label ?? config.icons})`,
31
+ run: () => installDependencies(cwd, config, projectInfo),
32
+ },
33
+ ];
34
+ // Providers de aplicação não são da biblioteca: quem os registra é o app que
35
+ // a consome, e numa lib não existe app.config.ts para escrever.
36
+ if (!isLibrary) {
37
+ steps.push({
38
+ label: config.appConfigFile,
39
+ note: 'zard/ui providers',
40
+ run: () => updateAngularConfig(cwd, config),
41
+ });
42
+ steps.push(tailwindPipelineStep(cwd, projectRoot, kind, projectInfo, isReInitializing));
43
+ }
44
+ steps.push({
45
+ label: config.tailwind.css,
46
+ note: `theme tokens (${config.tailwind.baseColor})`,
47
+ run: () => applyThemeToStyles(cwd, config),
48
+ });
49
+ if (isLibrary) {
50
+ steps.push({
51
+ label: 'ng-package.json',
52
+ note: 'ship the theme with the library',
53
+ run: () => registerStylesAsset(cwd, config),
54
+ });
55
+ }
56
+ steps.push({
57
+ label: tsconfigFile,
58
+ note: 'import path aliases',
59
+ run: () => updateTsConfig(cwd, config, tsconfigFile),
60
+ }, {
61
+ label: 'core & utils',
62
+ note: 'shared helpers used by every component',
63
+ run: () => installCoreDependencies(cwd, config),
64
+ });
65
+ return steps;
66
+ }
67
+ /**
68
+ * Como o Tailwind entra no build da aplicação.
69
+ *
70
+ * No Analog quem compila é o Vite, e o Tailwind é um plugin dele — um
71
+ * `.postcssrc.json` ali não seria lido por ninguém. Nos demais o build do
72
+ * Angular carrega o PostCSS, e o arquivo vai para a raiz do projeto: num
73
+ * workspace com vários apps, escrevê-lo na raiz do repositório configuraria
74
+ * todos eles de uma vez.
75
+ */
76
+ function tailwindPipelineStep(cwd, projectRoot, kind, projectInfo, isReInitializing) {
77
+ if (bundlerFor(kind) === 'vite') {
78
+ return {
79
+ label: 'vite.config.ts',
80
+ note: 'Tailwind Vite plugin',
81
+ run: () => setupVitePlugin(cwd),
82
+ };
83
+ }
84
+ const relative = projectRoot === '.' ? '.postcssrc.json' : `${projectRoot}/.postcssrc.json`;
85
+ return {
86
+ label: relative,
87
+ note: 'Tailwind PostCSS plugin',
88
+ // Reinicializar reescreve o arquivo de propósito: é a chance de corrigir um
89
+ // `.postcssrc.json` que ficou de uma configuração anterior.
90
+ run: () => !projectInfo.hasTailwind || isReInitializing || !existsSync(path.resolve(cwd, relative))
91
+ ? createPostCssConfig(cwd, projectRoot)
92
+ : Promise.resolve(),
93
+ };
94
+ }
95
+ /**
96
+ * Declara o CSS de tema como asset da biblioteca.
97
+ *
98
+ * O ng-packagr só publica o que o ponto de entrada alcança; um `.css` solto em
99
+ * `src/` fica de fora do pacote. Sem esta entrada, o arquivo que a etapa
100
+ * anterior escreveu existiria só no repositório e nunca chegaria a quem
101
+ * instala a lib.
102
+ *
103
+ * O asset é declarado com `output: '/'` para cair na raiz do pacote. Listá-lo
104
+ * como caminho simples preserva a pasta de origem, e o consumidor acabaria
105
+ * importando `<lib>/src/styles.css` — um `src/` que é detalhe do repositório da
106
+ * lib, não algo que quem a instala deva conhecer.
107
+ */
108
+ async function registerStylesAsset(cwd, config) {
109
+ const libraryRoot = path.resolve(cwd, projectRootOf(config.baseUrl));
110
+ const ngPackagePath = path.join(libraryRoot, 'ng-package.json');
111
+ if (!existsSync(ngPackagePath)) {
112
+ // Uma lib Nx só ganha ng-package.json quando é publicável; nas demais não
113
+ // há pacote a montar, e o CSS é consumido direto do código-fonte.
114
+ logger.warn(`ng-package.json not found in ${path.relative(cwd, libraryRoot)}; skipping the theme asset.`);
115
+ return;
116
+ }
117
+ const relative = path.relative(libraryRoot, path.resolve(cwd, config.tailwind.css)).split(path.sep).join('/');
118
+ const input = path.posix.dirname(relative);
119
+ const glob = path.posix.basename(relative);
120
+ const entry = { glob, input, output: '/' };
121
+ const ngPackage = JSON.parse(await readFile(ngPackagePath, 'utf8'));
122
+ const assets = Array.isArray(ngPackage.assets) ? ngPackage.assets : [];
123
+ // Entradas antigas apontando para o mesmo arquivo são substituídas, e não
124
+ // acumuladas: um init repetido publicaria o CSS duas vezes, em dois lugares.
125
+ const others = assets.filter(asset => !describesSameFile(asset, relative, entry));
126
+ const alreadyCorrect = assets.length === others.length + 1 && hasEntry(assets, entry);
127
+ if (alreadyCorrect)
128
+ return;
129
+ ngPackage.assets = [...others, entry];
130
+ await writeFile(ngPackagePath, `${JSON.stringify(ngPackage, null, 2)}\n`, 'utf8');
131
+ }
132
+ /** Se um asset já declarado publica exatamente o mesmo arquivo. */
133
+ function describesSameFile(asset, relative, entry) {
134
+ if (typeof asset === 'string')
135
+ return asset.replace(/^\.\//, '') === relative;
136
+ const declared = asset;
137
+ return declared?.glob === entry.glob && declared?.input === entry.input;
138
+ }
139
+ function hasEntry(assets, entry) {
140
+ return assets.some(asset => typeof asset === 'object' &&
141
+ asset !== null &&
142
+ asset.glob === entry.glob &&
143
+ asset.input === entry.input &&
144
+ asset.output === entry.output);
145
+ }
146
+ async function installCoreDependencies(cwd, config) {
147
+ const resolvedConfig = await resolveConfigPaths(cwd, config);
148
+ await mkdir(resolvedConfig.resolvedPaths.core, { recursive: true });
149
+ await mkdir(resolvedConfig.resolvedPaths.utils, { recursive: true });
150
+ await installComponent('core', resolvedConfig.resolvedPaths.core, resolvedConfig);
151
+ await installComponent('utils', resolvedConfig.resolvedPaths.utils, resolvedConfig);
152
+ }
153
+ //# sourceMappingURL=steps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../../src/commands/init/steps.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,12 @@
1
1
  import { type Config } from '../../utils/config.js';
2
- export declare function setupTailwind(cwd: string, config: Config): Promise<void>;
3
- export declare function createPostCssConfig(cwd: string): Promise<void>;
2
+ /**
3
+ * Escreve o `.postcssrc.json` na raiz do projeto que vai usá-lo.
4
+ *
5
+ * O build do Angular procura o arquivo a partir do CSS que está processando e
6
+ * sobe até a raiz do workspace, então o projeto é o lugar mais específico que
7
+ * funciona — e num monorepo com vários apps é o único que não configura todos
8
+ * eles de uma vez. `projectRoot` é `.` no app único.
9
+ */
10
+ export declare function createPostCssConfig(cwd: string, projectRoot?: string): Promise<void>;
4
11
  export declare function applyThemeToStyles(cwd: string, config: Config): Promise<void>;
5
12
  //# sourceMappingURL=tailwind-setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind-setup.d.ts","sourceRoot":"","sources":["../../../src/commands/init/tailwind-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAYnD,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9E;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpE;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASnF"}
1
+ {"version":3,"file":"tailwind-setup.d.ts","sourceRoot":"","sources":["../../../src/commands/init/tailwind-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAYvE;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvF;AAqBD,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnF"}
@@ -1,5 +1,6 @@
1
+ import { resolveAliasToPath } from '../../utils/config.js';
1
2
  import { getThemeContent } from '../../utils/theme-selector.js';
2
- import { writeFile } from 'node:fs/promises';
3
+ import { mkdir, writeFile } from 'node:fs/promises';
3
4
  import * as path from 'path';
4
5
  const POSTCSS_CONFIG = `{
5
6
  "plugins": {
@@ -7,21 +8,41 @@ const POSTCSS_CONFIG = `{
7
8
  }
8
9
  }
9
10
  `;
10
- export async function setupTailwind(cwd, config) {
11
- await createPostCssConfig(cwd);
12
- await applyThemeToStyles(cwd, config);
11
+ /**
12
+ * Escreve o `.postcssrc.json` na raiz do projeto que vai usá-lo.
13
+ *
14
+ * O build do Angular procura o arquivo a partir do CSS que está processando e
15
+ * sobe até a raiz do workspace, então o projeto é o lugar mais específico que
16
+ * funciona — e num monorepo com vários apps é o único que não configura todos
17
+ * eles de uma vez. `projectRoot` é `.` no app único.
18
+ */
19
+ export async function createPostCssConfig(cwd, projectRoot = '.') {
20
+ const targetDir = path.resolve(cwd, projectRoot);
21
+ await mkdir(targetDir, { recursive: true });
22
+ await writeFile(path.join(targetDir, '.postcssrc.json'), POSTCSS_CONFIG, 'utf8');
13
23
  }
14
- export async function createPostCssConfig(cwd) {
15
- const postcssConfigPath = path.join(cwd, '.postcssrc.json');
16
- await writeFile(postcssConfigPath, POSTCSS_CONFIG, 'utf8');
24
+ /**
25
+ * O `@import` do CSS é resolvido pelo bundler a partir do arquivo que o contém,
26
+ * então precisa ser um caminho relativo de verdade — não dá para montá-lo
27
+ * fatiando o alias.
28
+ *
29
+ * A versão anterior pegava o segundo segmento do baseUrl e colava o alias sem o
30
+ * primeiro caractere. Só acertava no layout `src/app` + `@/...`: com baseUrl
31
+ * `projects/admin/src/app` mirava `./admin/...`, e com um alias `@app/core`
32
+ * gerava `./appapp/core`.
33
+ */
34
+ function coreImportPath(cwd, config) {
35
+ const cssDir = path.dirname(path.resolve(cwd, config.tailwind.css));
36
+ const coreDir = path.resolve(cwd, resolveAliasToPath(config.aliases.core, config.baseUrl));
37
+ const relative = path.relative(cssDir, coreDir).split(path.sep).join('/');
38
+ return relative.startsWith('.') ? relative : `./${relative}`;
17
39
  }
18
40
  export async function applyThemeToStyles(cwd, config) {
19
41
  const stylesPath = path.join(cwd, config.tailwind.css);
20
- const selectedTheme = config.tailwind.baseColor;
21
- const parts = config.baseUrl.split('/');
22
- const base = parts.length > 1 ? parts[1] : parts[0];
23
- const corePath = './' + base + config.aliases.core.substring(1);
24
- const themeContent = getThemeContent(selectedTheme, corePath);
42
+ const themeContent = getThemeContent(config.tailwind.baseColor, coreImportPath(cwd, config));
43
+ // Numa biblioteca esse arquivo normalmente não existe — é o init que o cria,
44
+ // para a lib expor os tokens a quem a consome.
45
+ await mkdir(path.dirname(stylesPath), { recursive: true });
25
46
  await writeFile(stylesPath, themeContent, 'utf8');
26
47
  }
27
48
  //# sourceMappingURL=tailwind-setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind-setup.js","sourceRoot":"","sources":["../../../src/commands/init/tailwind-setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,cAAc,GAAG;;;;;CAKtB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,MAAc;IAC7D,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW;IACnD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC5D,MAAM,SAAS,CAAC,iBAAiB,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,MAAc;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAE9D,MAAM,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"tailwind-setup.js","sourceRoot":"","sources":["../../../src/commands/init/tailwind-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAe,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,cAAc,GAAG;;;;;CAKtB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,WAAW,GAAG,GAAG;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAEjD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,cAAc,CAAC,GAAW,EAAE,MAAc;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAE3F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1E,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,MAAc;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAE7F,6EAA6E;IAC7E,+CAA+C;IAC/C,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
@@ -1,3 +1,10 @@
1
1
  import { type Config } from '../../utils/config.js';
2
- export declare function updateTsConfig(cwd: string, config: Config): Promise<void>;
2
+ /**
3
+ * Escreve o alias no tsconfig que os projetos realmente estendem.
4
+ *
5
+ * Num workspace Nx isso é o `tsconfig.base.json`: o `tsconfig.json` da raiz não
6
+ * é herdado por projeto nenhum, e o mapeamento escrito nele nunca chegaria ao
7
+ * compilador — o alias resolvia no editor e quebrava no build.
8
+ */
9
+ export declare function updateTsConfig(cwd: string, config: Config, tsconfigFile?: string): Promise<void>;
3
10
  //# sourceMappingURL=tsconfig-updater.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tsconfig-updater.d.ts","sourceRoot":"","sources":["../../../src/commands/init/tsconfig-updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAOnD,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/E"}
1
+ {"version":3,"file":"tsconfig-updater.d.ts","sourceRoot":"","sources":["../../../src/commands/init/tsconfig-updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAOjE;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,SAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/G"}
@@ -1,12 +1,20 @@
1
+ import { aliasPattern } from '../../utils/config.js';
1
2
  import { logger } from '../../utils/logger.js';
2
3
  import * as commentJson from 'comment-json';
3
4
  import { existsSync } from 'fs';
4
5
  import { writeFile, readFile } from 'node:fs/promises';
5
6
  import * as path from 'path';
6
- export async function updateTsConfig(cwd, config) {
7
- const tsconfigPath = path.join(cwd, 'tsconfig.json');
7
+ /**
8
+ * Escreve o alias no tsconfig que os projetos realmente estendem.
9
+ *
10
+ * Num workspace Nx isso é o `tsconfig.base.json`: o `tsconfig.json` da raiz não
11
+ * é herdado por projeto nenhum, e o mapeamento escrito nele nunca chegaria ao
12
+ * compilador — o alias resolvia no editor e quebrava no build.
13
+ */
14
+ export async function updateTsConfig(cwd, config, tsconfigFile = 'tsconfig.json') {
15
+ const tsconfigPath = path.join(cwd, tsconfigFile);
8
16
  if (!existsSync(tsconfigPath)) {
9
- logger.warn('tsconfig.json not found, skipping path configuration');
17
+ logger.warn(`${tsconfigFile} not found, skipping path configuration`);
10
18
  return;
11
19
  }
12
20
  try {
@@ -15,7 +23,7 @@ export async function updateTsConfig(cwd, config) {
15
23
  await writeTsConfig(tsconfigPath, updatedTsConfig);
16
24
  }
17
25
  catch (error) {
18
- logger.warn('Failed to update tsconfig.json paths');
26
+ logger.warn(`Failed to update ${tsconfigFile} paths`);
19
27
  logger.error(error);
20
28
  }
21
29
  }
@@ -27,21 +35,32 @@ function updatePaths(tsconfig, config) {
27
35
  if (!tsconfig.compilerOptions) {
28
36
  tsconfig.compilerOptions = {};
29
37
  }
30
- if (!tsconfig.compilerOptions.baseUrl) {
31
- tsconfig.compilerOptions.baseUrl = './';
32
- }
33
38
  if (!tsconfig.compilerOptions.paths) {
34
39
  tsconfig.compilerOptions.paths = {};
35
40
  }
36
- const pathMappings = {
37
- '@/*': [`${config.baseUrl}/*`],
38
- };
41
+ // A chave vem do alias escolhido, não de um `@/*` fixo: quem configurou
42
+ // `@app/components` gera imports com esse prefixo, e mapear outro deixaria
43
+ // todo import do projeto sem resolver.
39
44
  tsconfig.compilerOptions.paths = {
40
45
  ...tsconfig.compilerOptions.paths,
41
- ...pathMappings,
46
+ [aliasPattern(config.aliases.components)]: [`${pathMappingBase(tsconfig, config)}/*`],
42
47
  };
43
48
  return tsconfig;
44
49
  }
50
+ /**
51
+ * Escreve o mapeamento sem introduzir `baseUrl`.
52
+ *
53
+ * Declarar `baseUrl` quebra o build em TypeScript 6 — a opção virou erro e some
54
+ * no 7 —, e desde o 4.1 ela não é mais necessária: sem ela, os caminhos são
55
+ * resolvidos a partir do próprio tsconfig. Projetos que já declaram a opção
56
+ * continuam sendo respeitados, com o mapeamento escrito em relação a ela.
57
+ */
58
+ function pathMappingBase(tsconfig, config) {
59
+ const baseUrl = tsconfig.compilerOptions.baseUrl;
60
+ if (!baseUrl)
61
+ return `./${config.baseUrl}`;
62
+ return path.posix.relative(path.posix.normalize(baseUrl), path.posix.normalize(config.baseUrl)) || '.';
63
+ }
45
64
  async function writeTsConfig(tsconfigPath, tsconfig) {
46
65
  const updatedContent = commentJson.stringify(tsconfig, null, 2);
47
66
  await writeFile(tsconfigPath, updatedContent, 'utf8');
@@ -1 +1 @@
1
- {"version":3,"file":"tsconfig-updater.js","sourceRoot":"","sources":["../../../src/commands/init/tsconfig-updater.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,MAAc;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAErD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,YAAoB;IAC9C,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7D,OAAO,WAAW,CAAC,KAAK,CAAC,eAAe,CAAQ,CAAC;AACnD,CAAC;AAED,SAAS,WAAW,CAAC,QAAa,EAAE,MAAc;IAChD,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC9B,QAAQ,CAAC,eAAe,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QACtC,QAAQ,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QACpC,QAAQ,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,YAAY,GAAG;QACnB,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC;KAC/B,CAAC;IAEF,QAAQ,CAAC,eAAe,CAAC,KAAK,GAAG;QAC/B,GAAG,QAAQ,CAAC,eAAe,CAAC,KAAK;QACjC,GAAG,YAAY;KAChB,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,YAAoB,EAAE,QAAa;IAC9D,MAAM,cAAc,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,SAAS,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"tsconfig-updater.js","sourceRoot":"","sources":["../../../src/commands/init/tsconfig-updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,MAAc,EAAE,YAAY,GAAG,eAAe;IAC9F,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAElD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,yCAAyC,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,oBAAoB,YAAY,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,YAAoB;IAC9C,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7D,OAAO,WAAW,CAAC,KAAK,CAAC,eAAe,CAAQ,CAAC;AACnD,CAAC;AAED,SAAS,WAAW,CAAC,QAAa,EAAE,MAAc;IAChD,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC9B,QAAQ,CAAC,eAAe,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QACpC,QAAQ,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE,CAAC;IACtC,CAAC;IAED,wEAAwE;IACxE,2EAA2E;IAC3E,uCAAuC;IACvC,QAAQ,CAAC,eAAe,CAAC,KAAK,GAAG;QAC/B,GAAG,QAAQ,CAAC,eAAe,CAAC,KAAK;QACjC,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;KACtF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,QAAa,EAAE,MAAc;IACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC;IAEjD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;IAE3C,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC;AACzG,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,YAAoB,EAAE,QAAa;IAC9D,MAAM,cAAc,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,SAAS,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"update-angular-config.d.ts","sourceRoot":"","sources":["../../../src/commands/init/update-angular-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAWnD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6EpF"}
1
+ {"version":3,"file":"update-angular-config.d.ts","sourceRoot":"","sources":["../../../src/commands/init/update-angular-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AA4BnD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCpF"}