zard-cli 1.1.0-alpha.0 → 1.1.1

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 (234) hide show
  1. package/README.md +122 -60
  2. package/commands/add/component-installer.d.ts +2 -1
  3. package/commands/add/component-installer.d.ts.map +1 -1
  4. package/commands/add/component-installer.js +25 -7
  5. package/commands/add/component-installer.js.map +1 -1
  6. package/commands/add/component-selector.d.ts +3 -3
  7. package/commands/add/component-selector.js +4 -4
  8. package/commands/add/dark-mode-setup.d.ts +2 -0
  9. package/commands/add/dark-mode-setup.d.ts.map +1 -1
  10. package/commands/add/dark-mode-setup.js +15 -1
  11. package/commands/add/dark-mode-setup.js.map +1 -1
  12. package/commands/add/dependency-resolver.d.ts +8 -1
  13. package/commands/add/dependency-resolver.d.ts.map +1 -1
  14. package/commands/add/dependency-resolver.js +87 -16
  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 +55 -29
  18. package/commands/add/index.js.map +1 -1
  19. package/commands/add/stylesheet-setup.d.ts +3 -0
  20. package/commands/add/stylesheet-setup.d.ts.map +1 -0
  21. package/commands/add/stylesheet-setup.js +92 -0
  22. package/commands/add/stylesheet-setup.js.map +1 -0
  23. package/commands/add/wizard.d.ts +12 -8
  24. package/commands/add/wizard.d.ts.map +1 -1
  25. package/commands/add/wizard.js +12 -2
  26. package/commands/add/wizard.js.map +1 -1
  27. package/commands/init/config-prompter.d.ts +36 -16
  28. package/commands/init/config-prompter.d.ts.map +1 -1
  29. package/commands/init/config-prompter.js +37 -17
  30. package/commands/init/config-prompter.js.map +1 -1
  31. package/commands/init/dependencies.d.ts.map +1 -1
  32. package/commands/init/dependencies.js +35 -23
  33. package/commands/init/dependencies.js.map +1 -1
  34. package/commands/init/index.d.ts.map +1 -1
  35. package/commands/init/index.js +74 -23
  36. package/commands/init/index.js.map +1 -1
  37. package/commands/init/library-peers.d.ts +28 -0
  38. package/commands/init/library-peers.d.ts.map +1 -0
  39. package/commands/init/library-peers.js +61 -0
  40. package/commands/init/library-peers.js.map +1 -0
  41. package/commands/init/project-kind.d.ts +39 -39
  42. package/commands/init/project-kind.d.ts.map +1 -1
  43. package/commands/init/project-kind.js +45 -45
  44. package/commands/init/project-kind.js.map +1 -1
  45. package/commands/init/rtl-setup.d.ts +12 -0
  46. package/commands/init/rtl-setup.d.ts.map +1 -0
  47. package/commands/init/rtl-setup.js +42 -0
  48. package/commands/init/rtl-setup.js.map +1 -0
  49. package/commands/init/steps.d.ts +3 -4
  50. package/commands/init/steps.d.ts.map +1 -1
  51. package/commands/init/steps.js +100 -39
  52. package/commands/init/steps.js.map +1 -1
  53. package/commands/init/tailwind-setup.d.ts +5 -5
  54. package/commands/init/tailwind-setup.d.ts.map +1 -1
  55. package/commands/init/tailwind-setup.js +29 -15
  56. package/commands/init/tailwind-setup.js.map +1 -1
  57. package/commands/init/tsconfig-updater.d.ts +4 -4
  58. package/commands/init/tsconfig-updater.js +12 -12
  59. package/commands/init/tsconfig-updater.js.map +1 -1
  60. package/commands/init/update-angular-config.js +4 -4
  61. package/commands/init/vite-setup.d.ts +5 -4
  62. package/commands/init/vite-setup.d.ts.map +1 -1
  63. package/commands/init/vite-setup.js +11 -10
  64. package/commands/init/vite-setup.js.map +1 -1
  65. package/commands/init/wizard.d.ts +10 -7
  66. package/commands/init/wizard.d.ts.map +1 -1
  67. package/commands/init/wizard.js +73 -46
  68. package/commands/init/wizard.js.map +1 -1
  69. package/constants/app.constants.d.ts +17 -0
  70. package/constants/app.constants.d.ts.map +1 -1
  71. package/constants/app.constants.js +39 -16
  72. package/constants/app.constants.js.map +1 -1
  73. package/core/icons/families.d.ts +38 -0
  74. package/core/icons/families.d.ts.map +1 -0
  75. package/core/icons/families.js +26 -0
  76. package/core/icons/families.js.map +1 -0
  77. package/core/icons/icon-map.d.ts +24 -0
  78. package/core/icons/icon-map.d.ts.map +1 -0
  79. package/core/icons/icon-map.js +150 -0
  80. package/core/icons/icon-map.js.map +1 -0
  81. package/core/icons/index.d.ts +107 -0
  82. package/core/icons/index.d.ts.map +1 -0
  83. package/core/icons/index.js +183 -0
  84. package/core/icons/index.js.map +1 -0
  85. package/core/registry/registry-data.d.ts.map +1 -1
  86. package/core/registry/registry-data.js +545 -63
  87. package/core/registry/registry-data.js.map +1 -1
  88. package/core/themes/index.d.ts +1 -1
  89. package/core/themes/index.js +1 -1
  90. package/core/themes/theme-definitions.d.ts.map +1 -1
  91. package/core/themes/theme-definitions.js +61 -72
  92. package/core/themes/theme-definitions.js.map +1 -1
  93. package/index.js +3 -2
  94. package/index.js.map +1 -1
  95. package/package.json +56 -58
  96. package/ui/blocks.d.ts +29 -28
  97. package/ui/blocks.d.ts.map +1 -1
  98. package/ui/blocks.js +27 -27
  99. package/ui/blocks.js.map +1 -1
  100. package/ui/brand.d.ts +5 -5
  101. package/ui/brand.d.ts.map +1 -1
  102. package/ui/brand.js +6 -6
  103. package/ui/brand.js.map +1 -1
  104. package/ui/engine/animation/index.d.ts +2 -3
  105. package/ui/engine/animation/index.d.ts.map +1 -1
  106. package/ui/engine/animation/index.js +2 -3
  107. package/ui/engine/animation/index.js.map +1 -1
  108. package/ui/engine/ansi/index.d.ts +10 -11
  109. package/ui/engine/ansi/index.d.ts.map +1 -1
  110. package/ui/engine/ansi/index.js +6 -7
  111. package/ui/engine/ansi/index.js.map +1 -1
  112. package/ui/engine/components/index.d.ts +3 -3
  113. package/ui/engine/components/index.js +4 -4
  114. package/ui/engine/cursor/index.d.ts +3 -4
  115. package/ui/engine/cursor/index.d.ts.map +1 -1
  116. package/ui/engine/cursor/index.js +2 -3
  117. package/ui/engine/cursor/index.js.map +1 -1
  118. package/ui/engine/diff/index.d.ts +2 -3
  119. package/ui/engine/diff/index.d.ts.map +1 -1
  120. package/ui/engine/diff/index.js +5 -6
  121. package/ui/engine/diff/index.js.map +1 -1
  122. package/ui/engine/events/index.d.ts +2 -2
  123. package/ui/engine/events/index.js +3 -3
  124. package/ui/engine/events/index.js.map +1 -1
  125. package/ui/engine/focus/index.d.ts +2 -2
  126. package/ui/engine/focus/index.js +2 -2
  127. package/ui/engine/frame/index.d.ts +4 -4
  128. package/ui/engine/frame/index.js +0 -0
  129. package/ui/engine/index.d.ts +7 -7
  130. package/ui/engine/index.js +7 -7
  131. package/ui/engine/input/index.d.ts +2 -2
  132. package/ui/engine/input/index.js +11 -11
  133. package/ui/engine/input/index.js.map +1 -1
  134. package/ui/engine/layout/index.d.ts +3 -3
  135. package/ui/engine/layout/index.js +7 -7
  136. package/ui/engine/layout/index.js.map +1 -1
  137. package/ui/engine/renderer/index.d.ts +4 -4
  138. package/ui/engine/renderer/index.d.ts.map +1 -1
  139. package/ui/engine/renderer/index.js +3 -3
  140. package/ui/engine/scheduler/index.d.ts +3 -3
  141. package/ui/engine/scheduler/index.js +5 -5
  142. package/ui/engine/scheduler/index.js.map +1 -1
  143. package/ui/engine/screen/index.d.ts +5 -5
  144. package/ui/engine/screen/index.d.ts.map +1 -1
  145. package/ui/engine/screen/index.js +7 -7
  146. package/ui/engine/screen/index.js.map +1 -1
  147. package/ui/engine/terminal/index.d.ts +49 -3
  148. package/ui/engine/terminal/index.d.ts.map +1 -1
  149. package/ui/engine/terminal/index.js +149 -18
  150. package/ui/engine/terminal/index.js.map +1 -1
  151. package/ui/engine/testing/index.d.ts +4 -4
  152. package/ui/engine/testing/index.d.ts.map +1 -1
  153. package/ui/engine/testing/index.js +2 -2
  154. package/ui/engine/theme/index.d.ts +2 -3
  155. package/ui/engine/theme/index.d.ts.map +1 -1
  156. package/ui/engine/theme/index.js +3 -4
  157. package/ui/engine/theme/index.js.map +1 -1
  158. package/ui/engine/utils/index.d.ts +2 -2
  159. package/ui/engine/utils/index.js +4 -4
  160. package/ui/engine/utils/index.js.map +1 -1
  161. package/ui/gate.d.ts +7 -7
  162. package/ui/gate.d.ts.map +1 -1
  163. package/ui/gate.js +5 -5
  164. package/ui/index.d.ts +3 -3
  165. package/ui/index.js +3 -3
  166. package/ui/log-sink.d.ts +9 -9
  167. package/ui/log-sink.d.ts.map +1 -1
  168. package/ui/log-sink.js +9 -9
  169. package/ui/log-sink.js.map +1 -1
  170. package/ui/output.d.ts +6 -6
  171. package/ui/output.d.ts.map +1 -1
  172. package/ui/output.js +6 -6
  173. package/ui/output.js.map +1 -1
  174. package/ui/report.d.ts +8 -8
  175. package/ui/report.d.ts.map +1 -1
  176. package/ui/report.js +7 -7
  177. package/ui/report.js.map +1 -1
  178. package/ui/runner.d.ts +31 -22
  179. package/ui/runner.d.ts.map +1 -1
  180. package/ui/runner.js +41 -25
  181. package/ui/runner.js.map +1 -1
  182. package/ui/style.d.ts +7 -7
  183. package/ui/style.d.ts.map +1 -1
  184. package/ui/style.js +8 -8
  185. package/ui/style.js.map +1 -1
  186. package/ui/testing/fake-tty.d.ts +4 -4
  187. package/ui/testing/fake-tty.js +4 -4
  188. package/ui/text-input.d.ts +15 -14
  189. package/ui/text-input.d.ts.map +1 -1
  190. package/ui/text-input.js +15 -13
  191. package/ui/text-input.js.map +1 -1
  192. package/ui/theme.d.ts +4 -4
  193. package/ui/theme.js +4 -4
  194. package/utils/angular-compat.d.ts +21 -0
  195. package/utils/angular-compat.d.ts.map +1 -0
  196. package/utils/angular-compat.js +52 -0
  197. package/utils/angular-compat.js.map +1 -0
  198. package/utils/config.d.ts +16 -9
  199. package/utils/config.d.ts.map +1 -1
  200. package/utils/config.js +35 -13
  201. package/utils/config.js.map +1 -1
  202. package/utils/errors.d.ts +11 -0
  203. package/utils/errors.d.ts.map +1 -1
  204. package/utils/errors.js +14 -0
  205. package/utils/errors.js.map +1 -1
  206. package/utils/get-project-info.d.ts +6 -6
  207. package/utils/get-project-info.d.ts.map +1 -1
  208. package/utils/get-project-info.js +106 -36
  209. package/utils/get-project-info.js.map +1 -1
  210. package/utils/http-client.d.ts.map +1 -1
  211. package/utils/http-client.js +20 -5
  212. package/utils/http-client.js.map +1 -1
  213. package/utils/icon-catalog.d.ts +34 -0
  214. package/utils/icon-catalog.d.ts.map +1 -0
  215. package/utils/icon-catalog.js +63 -0
  216. package/utils/icon-catalog.js.map +1 -0
  217. package/utils/logger.d.ts +3 -3
  218. package/utils/logger.js +9 -9
  219. package/utils/logger.js.map +1 -1
  220. package/utils/package-manager.d.ts +25 -25
  221. package/utils/package-manager.js +50 -50
  222. package/utils/package-manager.js.map +1 -1
  223. package/utils/registry.d.ts +100 -6
  224. package/utils/registry.d.ts.map +1 -1
  225. package/utils/registry.js +141 -22
  226. package/utils/registry.js.map +1 -1
  227. package/utils/schema-version.d.ts +21 -0
  228. package/utils/schema-version.d.ts.map +1 -0
  229. package/utils/schema-version.js +28 -0
  230. package/utils/schema-version.js.map +1 -0
  231. package/utils/source-file.d.ts +21 -21
  232. package/utils/source-file.d.ts.map +1 -1
  233. package/utils/source-file.js +24 -24
  234. package/utils/source-file.js.map +1 -1
@@ -1,4 +1,5 @@
1
- import { candidateProjects, detectProjectKind, fallbackRootFor, isLibraryKind, libraryBaseUrl, libraryStylesPath, } from '../../commands/init/project-kind.js';
1
+ import { candidateProjects, detectProjectKind, fallbackRootFor, isLibraryKind, libraryBaseUrl, libraryStylesPath, } from './project-kind.js';
2
+ import { SOURCE_ICON_FAMILY } from '../../core/icons/index.js';
2
3
  import { existsSync } from 'node:fs';
3
4
  import { readFile } from 'node:fs/promises';
4
5
  import * as path from 'node:path';
@@ -7,6 +8,8 @@ export const SCHEMA_URL = 'https://zardui.com/schema.json';
7
8
  export const configSchema = z.object({
8
9
  $schema: z.string(),
9
10
  style: z.enum(['css']),
11
+ icons: z.string(),
12
+ rtl: z.boolean(),
10
13
  projectType: z.enum(['angular', 'angular-library', 'nx', 'nx-library', 'analog']),
11
14
  appConfigFile: z.string(),
12
15
  packageManager: z.enum(['npm', 'yarn', 'pnpm', 'bun']),
@@ -20,24 +23,27 @@ export const configSchema = z.object({
20
23
  utils: z.string(),
21
24
  core: z.string(),
22
25
  services: z.string(),
26
+ blocks: z.string(),
23
27
  }),
24
28
  });
25
29
  /**
26
- * O projeto que o tipo escolhido sugere como alvo.
30
+ * The project the chosen type suggests as the target.
27
31
  *
28
- * Havendo mais de um compatível, o wizard pergunta — mas alguém precisa abrir a
29
- * lista escolhido, e o primeiro declarado é a resposta menos surpreendente.
32
+ * When more than one is compatible the wizard asks — but something has to be
33
+ * preselected when the list opens, and the first declared project is the least
34
+ * surprising answer.
30
35
  */
31
36
  function targetProject(projectInfo, kind, projectRoot) {
32
37
  const candidates = candidateProjects(kind, projectInfo);
33
38
  return candidates.find(project => project.root === projectRoot) ?? candidates[0];
34
39
  }
35
40
  /**
36
- * Os caminhos sugeridos para o tipo que o usuário escolheu.
41
+ * The paths suggested for the type the user chose.
37
42
  *
38
- * Vêm do projeto declarado no workspace sempre que ele existe — o `styles` do
39
- * target de build é onde o CSS global realmente está, e adivinhá-lo era o que
40
- * fazia o init sugerir caminhos que não existiam em layouts de monorepo.
43
+ * They come from the project declared in the workspace whenever there is one —
44
+ * the build target's `styles` is where the global CSS actually lives, and
45
+ * guessing it was what made init suggest paths that did not exist in monorepo
46
+ * layouts.
41
47
  */
42
48
  export function defaultAnswers(projectInfo, kind = detectProjectKind(projectInfo), projectRoot) {
43
49
  const project = targetProject(projectInfo, kind, projectRoot);
@@ -48,11 +54,13 @@ export function defaultAnswers(projectInfo, kind = detectProjectKind(projectInfo
48
54
  theme: 'neutral',
49
55
  componentsAlias: '@/shared/components',
50
56
  utilsAlias: '@/shared/utils',
57
+ // Off unless the user says otherwise (`--rtl` or the wizard's question).
58
+ rtl: false,
51
59
  };
52
60
  if (isLibraryKind(kind)) {
53
61
  return {
54
62
  ...shared,
55
- // Não há app.config numa biblioteca; o campo fica vazio no components.json.
63
+ // A library has no app.config; the field stays empty in components.json.
56
64
  appConfig: '',
57
65
  globalCss: libraryStylesPath(root),
58
66
  };
@@ -65,26 +73,37 @@ export function defaultAnswers(projectInfo, kind = detectProjectKind(projectInfo
65
73
  };
66
74
  }
67
75
  /**
68
- * De onde os componentes são escritos, deduzido do `app.config.ts`.
76
+ * The defaults with whatever the flags already answered on top.
69
77
  *
70
- * Fixar `src/app` quebrava todo layout que não fosse app único na raiz: num
71
- * workspace o app.config vive em `apps/<app>/src/app`, e os componentes
72
- * acabavam num `src/app` na raiz que não pertence a projeto nenhum. O diretório
73
- * do app.config é exatamente a raiz do código do app.
78
+ * Headless, that is the whole answer; in the wizard, it is what each question
79
+ * opens filled with. A library has no app.config, so `--app-config` does not
80
+ * apply there — writing it would register providers in a file init never edits.
74
81
  */
82
+ export function withPresets(answers, presets = {}) {
83
+ const defined = Object.fromEntries(Object.entries(presets).filter(([, value]) => value));
84
+ if (isLibraryKind(answers.kind))
85
+ delete defined.appConfig;
86
+ return { ...answers, ...defined };
87
+ }
75
88
  export function deriveBaseUrl(appConfigFile) {
76
- const dir = path.dirname(appConfigFile).replace(/\\/g, '/');
89
+ const dir = path.posix.dirname(appConfigFile.replace(/\\/g, '/'));
77
90
  return dir === '.' ? 'src/app' : dir;
78
91
  }
79
- /** Numa biblioteca o app.config não existe, então quem manda é a raiz da lib. */
92
+ /** In a library there is no app.config, so the library root decides. */
80
93
  function baseUrlFor(answers) {
81
94
  return isLibraryKind(answers.kind) ? libraryBaseUrl(answers.projectRoot) : deriveBaseUrl(answers.appConfig);
82
95
  }
83
96
  export function buildConfig(answers, packageManager) {
84
- const sharedBase = path.dirname(answers.componentsAlias).replace(/\\/g, '/');
97
+ const sharedBase = path.posix.dirname(answers.componentsAlias.replace(/\\/g, '/'));
85
98
  return configSchema.parse({
86
99
  $schema: SCHEMA_URL,
87
100
  style: 'css',
101
+ // The icon family is not asked in the wizard: today there is only one. It goes
102
+ // into the file with its default so it can be edited later. RTL is asked (or
103
+ // given by `--rtl`): the components are direction-agnostic, so it only decides
104
+ // whether init sets `dir="rtl"` on the app's index.html.
105
+ icons: SOURCE_ICON_FAMILY,
106
+ rtl: answers.rtl,
88
107
  projectType: answers.kind,
89
108
  appConfigFile: answers.appConfig,
90
109
  packageManager,
@@ -98,6 +117,7 @@ export function buildConfig(answers, packageManager) {
98
117
  utils: answers.utilsAlias,
99
118
  core: `${sharedBase}/core`,
100
119
  services: `${sharedBase}/services`,
120
+ blocks: `${sharedBase}/blocks`,
101
121
  },
102
122
  });
103
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-prompter.js","sourceRoot":"","sources":["../../../src/commands/init/config-prompter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-prompter.js","sourceRoot":"","sources":["../../../src/commands/init/config-prompter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../../src/commands/init/dependencies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIlF,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB/G"}
1
+ {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../../src/commands/init/dependencies.ts"],"names":[],"mappings":"AAIA,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,CA0C/G"}
@@ -1,39 +1,58 @@
1
- import { bundlerFor, isLibraryKind } from '../../commands/init/project-kind.js';
1
+ import { syncLibraryPeerDependencies } from './library-peers.js';
2
+ import { bundlerFor, isLibraryKind } from './project-kind.js';
3
+ import { iconPackagesFor } from '../../core/icons/index.js';
4
+ import { pinAllForAngular } from '../../utils/angular-compat.js';
2
5
  import { getProjectInfo } from '../../utils/get-project-info.js';
6
+ import { iconCatalog } from '../../utils/icon-catalog.js';
3
7
  import { logger } from '../../utils/logger.js';
4
8
  import { filterInstalledPackages, installPackagesWithRetry } from '../../utils/package-manager.js';
5
9
  export async function installDependencies(cwd, config, projectInfo) {
6
10
  const info = projectInfo || (await getProjectInfo(cwd));
7
- const cdkVersion = getCdkVersion(info.angularVersion);
8
- const deps = [cdkVersion, 'class-variance-authority', 'clsx', 'tailwind-merge', '@ng-icons/core', '@ng-icons/lucide'];
11
+ // The icon package comes from the family chosen in `components.json`, not from
12
+ // a fixed list: that is what makes `"icons"` mean something the day there is
13
+ // more than one family.
14
+ //
15
+ // Pinned against the project's Angular: the CDK and ng-icons both ship one
16
+ // release per Angular major and peer on `>=` it, so `latest` is the wrong
17
+ // answer for anyone not already on the newest Angular.
18
+ const deps = pinAllForAngular([
19
+ '@angular/cdk',
20
+ 'class-variance-authority',
21
+ 'clsx',
22
+ 'tailwind-merge',
23
+ ...iconPackagesFor(config.icons, iconCatalog()),
24
+ ], info.angularVersion);
9
25
  const devDeps = tailwindPackages(config.projectType);
10
26
  if (info.hasTailwind) {
11
27
  logger.info('Tailwind CSS is already installed. Only the missing pieces will be added.');
12
28
  }
13
- // Cada lote que sobra vazio é uma invocação inteira do gerenciador poupada —
14
- // o caso comum de um `init` repetido é justamente esse, nada a instalar.
29
+ // Every batch that comes back empty is a whole manager invocation saved — and
30
+ // that is exactly the common case for a repeated `init`: nothing to install.
15
31
  const [missingDeps, missingDevDeps] = await Promise.all([
16
32
  filterInstalledPackages(deps, cwd),
17
33
  filterInstalledPackages(devDeps, cwd),
18
34
  ]);
19
35
  if (!missingDeps.length && !missingDevDeps.length) {
20
36
  logger.info('All dependencies are already installed.');
21
- return;
22
37
  }
23
- await installPackagesWithRetry(missingDeps, cwd, config.packageManager, false);
24
- await installPackagesWithRetry(missingDevDeps, cwd, config.packageManager, true);
38
+ else {
39
+ await installPackagesWithRetry(missingDeps, cwd, config.packageManager, false);
40
+ await installPackagesWithRetry(missingDevDeps, cwd, config.packageManager, true);
41
+ }
42
+ // A library's components import these, and the theme it ships loads Tailwind and its plugin.
43
+ await syncLibraryPeerDependencies(cwd, config, [...deps, ...tailwindPackages(config.projectType)]);
25
44
  }
26
45
  /**
27
- * O que o Tailwind precisa para rodar naquele tipo de projeto.
46
+ * What Tailwind needs to run in that kind of project.
28
47
  *
29
- * A lista é sempre a completa e o filtro de instalados decide o que sobra:
30
- * checar só a presença do `tailwindcss` deixava passar o caso de quem já o
31
- * tinha instalado mas sem o adaptador do bundler, e aí o build não gerava
32
- * utilitário nenhum.
48
+ * The list is always the complete one and the installed-filter decides what is
49
+ * left: checking only for `tailwindcss` missed the case of someone who had it
50
+ * installed but not the bundler adapter, and then the build emitted no
51
+ * utilities at all.
33
52
  *
34
- * Numa biblioteca não há bundler a configurar — quem compila o CSS é a
35
- * aplicação que a consome —, mas os pacotes ficam porque o tema que o init
36
- * escreve ali os declara.
53
+ * A library has no bundler to configure — the consuming application compiles
54
+ * the CSS — but the packages stay because the theme init writes there declares
55
+ * them.
37
56
  */
38
57
  function tailwindPackages(kind) {
39
58
  const shared = ['tailwindcss', 'tailwindcss-animate'];
@@ -43,11 +62,4 @@ function tailwindPackages(kind) {
43
62
  ? [...shared, '@tailwindcss/vite']
44
63
  : [...shared, '@tailwindcss/postcss', 'postcss'];
45
64
  }
46
- function getCdkVersion(angularVersion) {
47
- if (!angularVersion) {
48
- return '@angular/cdk';
49
- }
50
- const majorVersion = Number.parseInt(angularVersion.split('.')[0]);
51
- return `@angular/cdk@^${majorVersion}`;
52
- }
53
65
  //# sourceMappingURL=dependencies.js.map
@@ -1 +1 @@
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;AAE/E,OAAO,EAAE,cAAc,EAAoB,MAAM,gCAAgC,CAAC;AAClF,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,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;IACtH,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,6EAA6E;IAC7E,yEAAyE;IACzE,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;AAED,SAAS,aAAa,CAAC,cAA8B;IACnD,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"}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/commands/init/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,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;IACzD,CAAC;SAAM,CAAC;QACN,MAAM,wBAAwB,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAC/E,MAAM,wBAAwB,CAAC,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC;IAED,6FAA6F;IAC7F,MAAM,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACrG,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":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,IAAI,SA6Db,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,IAAI,SA4Eb,CAAC"}
@@ -1,12 +1,15 @@
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';
1
+ import { buildConfig, defaultAnswers, inspectCssFile, withPresets, } from './config-prompter.js';
2
+ import { candidateProjects, detectProjectKind, isLibraryKind, PROJECT_KINDS, } from './project-kind.js';
3
+ import { buildInitSteps } from './steps.js';
4
+ import { runInitWizard } from './wizard.js';
5
5
  import { isInteractive, printReport, WizardCancelledError } from '../../ui/index.js';
6
6
  import { CliError } from '../../utils/errors.js';
7
7
  import { getProjectInfo } from '../../utils/get-project-info.js';
8
+ import { loadIconCatalog } from '../../utils/icon-catalog.js';
8
9
  import { logger, spinner } from '../../utils/logger.js';
9
10
  import { detectPackageManager, suggestedRunner } from '../../utils/package-manager.js';
11
+ import { getRegistryUrl } from '../../utils/registry.js';
12
+ import { getAvailableThemes } from '../../utils/theme-selector.js';
10
13
  import { Command } from 'commander';
11
14
  import { existsSync } from 'node:fs';
12
15
  import * as path from 'node:path';
@@ -17,17 +20,29 @@ export const init = new Command()
17
20
  .option('-c, --cwd <cwd>', 'the working directory. defaults to the current directory.', process.cwd())
18
21
  .option('-t, --type <type>', `the project type: ${PROJECT_KINDS.map(kind => kind.value).join(', ')}.`)
19
22
  .option('-p, --project <name>', 'the workspace project to configure. defaults to the first compatible one.')
23
+ .option('--css <path>', 'the global stylesheet that receives the theme (in a library, the file init creates).')
24
+ .option('--app-config <path>', 'the app.config.ts that receives provideZard(). ignored for libraries.')
25
+ .option('--base-color <color>', `the theme base color: ${getAvailableThemes().join(', ')}.`)
26
+ .option('--components-alias <alias>', 'the import alias for components. defaults to @/shared/components.')
27
+ .option('--utils-alias <alias>', 'the import alias for utils. defaults to @/shared/utils.')
28
+ .option('--rtl', 'the project reads right to left: sets dir="rtl" on <html> in index.html.')
29
+ .option('--no-rtl', 'the project reads left to right (the default).')
20
30
  .action(async (options) => {
21
31
  const cwd = path.resolve(options.cwd);
22
32
  validateWorkingDirectory(cwd);
23
33
  const projectInfo = await getProjectInfo(cwd);
24
34
  validateAngularProject(projectInfo);
25
35
  const kind = resolveKind(options.type);
36
+ const presets = resolvePresets(options);
26
37
  const projectRoot = resolveProjectRoot(options.project, kind ?? detectProjectKind(projectInfo), projectInfo);
27
38
  const isReInitializing = existsSync(path.resolve(cwd, 'components.json'));
28
39
  const packageManager = await detectPackageManager(cwd);
40
+ // Before any step: the catalog is what says which icon package to install,
41
+ // and it comes from the registry so it does not depend on the CLI version.
42
+ await loadIconCatalog(getRegistryUrl());
29
43
  const buildSteps = (config) => buildInitSteps(cwd, config, projectInfo, isReInitializing);
30
44
  if (!isInteractive()) {
45
+ logHeadlessReason();
31
46
  await runHeadless({
32
47
  cwd,
33
48
  projectInfo,
@@ -37,6 +52,7 @@ export const init = new Command()
37
52
  yes: options.yes,
38
53
  kind,
39
54
  projectRoot,
55
+ presets,
40
56
  });
41
57
  return;
42
58
  }
@@ -50,6 +66,7 @@ export const init = new Command()
50
66
  buildSteps,
51
67
  presetKind: kind,
52
68
  presetProjectRoot: projectRoot,
69
+ presetAnswers: presets,
53
70
  });
54
71
  reportSuccess(config, buildSteps(config), logs);
55
72
  }
@@ -65,6 +82,18 @@ export const init = new Command()
65
82
  throw error;
66
83
  }
67
84
  });
85
+ /**
86
+ * Why the full screen was not mounted.
87
+ *
88
+ * The CLI falling back to text mode is, to whoever is watching, indistinguishable
89
+ * from the interface not existing — which is how the degradation on macOS and
90
+ * Linux went unnoticed until it turned into "it never showed up" reports. With
91
+ * `--debug`, the command answers for itself.
92
+ */
93
+ function logHeadlessReason() {
94
+ logger.debug(`No terminal to draw on (stdin TTY: ${Boolean(process.stdin.isTTY)}, ` +
95
+ `stdout TTY: ${Boolean(process.stdout.isTTY)}, controlling terminal: unreachable) — running headless.`);
96
+ }
68
97
  function validateWorkingDirectory(cwd) {
69
98
  if (!existsSync(cwd)) {
70
99
  throw new CliError(`The path ${cwd} does not exist. Please try again.`, 'INVALID_CWD');
@@ -76,10 +105,10 @@ function validateAngularProject(projectInfo) {
76
105
  }
77
106
  }
78
107
  /**
79
- * O tipo pedido em `--type`, quando houver.
108
+ * The type asked for with `--type`, when there is one.
80
109
  *
81
- * É a resposta à primeira pergunta do wizard dada de antemão — o que torna o
82
- * init utilizável em CI, onde ninguém pode escolher no menu.
110
+ * It is the answer to the wizard's first question given up front — which is what
111
+ * makes init usable in CI, where nobody can pick from a menu.
83
112
  */
84
113
  function resolveKind(value) {
85
114
  if (!value)
@@ -90,7 +119,26 @@ function resolveKind(value) {
90
119
  }
91
120
  return kind.value;
92
121
  }
93
- /** A raiz do projeto pedido em `--project`, procurado entre os compatíveis. */
122
+ /**
123
+ * The answers given as flags.
124
+ *
125
+ * Every question the wizard asks has one, so CI — and anyone who already knows
126
+ * the answers — can configure a project without a terminal to draw on.
127
+ */
128
+ function resolvePresets(options) {
129
+ if (options.baseColor && !getAvailableThemes().includes(options.baseColor)) {
130
+ throw new CliError(`Unknown base color "${options.baseColor}". Expected one of: ${getAvailableThemes().join(', ')}.`, 'UNKNOWN_BASE_COLOR');
131
+ }
132
+ return {
133
+ globalCss: options.css,
134
+ appConfig: options.appConfig,
135
+ theme: options.baseColor,
136
+ componentsAlias: options.componentsAlias,
137
+ utilsAlias: options.utilsAlias,
138
+ rtl: options.rtl,
139
+ };
140
+ }
141
+ /** The root of the project asked for with `--project`, looked up among the compatible ones. */
94
142
  function resolveProjectRoot(name, kind, projectInfo) {
95
143
  if (!name)
96
144
  return undefined;
@@ -103,26 +151,26 @@ function resolveProjectRoot(name, kind, projectInfo) {
103
151
  return project.root;
104
152
  }
105
153
  /**
106
- * Caminho sem UI — CI, pipes e terminais não interativos.
154
+ * The path without a UI — CI, pipes and non-interactive terminals.
107
155
  *
108
- * Aqui ninguém pode responder nada, então os defaults valem e `--yes` é
109
- * obrigatório: sem ele a CLI se recusa a sobrescrever o CSS global do projeto.
156
+ * Nobody can answer anything here, so the defaults apply and `--yes` is
157
+ * required: without it the CLI refuses to overwrite the project's global CSS.
110
158
  */
111
159
  async function runHeadless(options) {
112
160
  if (!options.yes) {
113
161
  throw new CliError('Running without an interactive terminal requires --yes, since init overwrites your global CSS.', 'NOT_INTERACTIVE');
114
162
  }
115
163
  const kind = options.kind ?? detectProjectKind(options.projectInfo);
116
- const answers = defaultAnswers(options.projectInfo, kind, options.projectRoot);
164
+ const answers = withPresets(defaultAnswers(options.projectInfo, kind, options.projectRoot), options.presets);
117
165
  const cssState = await inspectCssFile(options.cwd, answers.globalCss);
118
- // Numa biblioteca o CSS de tema é criado pelo init, então não existir é o
119
- // esperado; numa aplicação, o arquivo tem que estar lá e ligado ao build.
166
+ // In a library the theme CSS is created by init, so its absence is expected;
167
+ // in an application the file has to be there and wired into the build.
120
168
  if (cssState === 'missing' && !isLibraryKind(answers.kind)) {
121
- throw new CliError(`CSS file not found at: ${answers.globalCss}. Run init in an interactive terminal to choose another path.`, 'CSS_NOT_FOUND');
169
+ throw new CliError(`CSS file not found at: ${answers.globalCss}. Pass the right one with --css, or run init in an interactive terminal.`, 'CSS_NOT_FOUND');
122
170
  }
123
171
  const config = buildConfig(answers, options.packageManager);
124
172
  const steps = options.buildSteps(config);
125
- logger.info(options.isReInitializing ? 'Re-initializing ZardUI...' : 'Initializing ZardUI...');
173
+ logger.info(options.isReInitializing ? 'Re-initializing zard/ui...' : 'Initializing zard/ui...');
126
174
  for (const step of steps) {
127
175
  const stepSpinner = spinner(`${step.label} — ${step.note}`).start();
128
176
  try {
@@ -139,7 +187,7 @@ async function runHeadless(options) {
139
187
  function reportSuccess(config, steps, logs) {
140
188
  printReport({
141
189
  status: 'success',
142
- headline: 'ZardUI has been initialized successfully!',
190
+ headline: 'zard/ui has been initialized successfully!',
143
191
  items: steps.map(step => `${step.label} — ${step.note}`),
144
192
  notes: nextStepsFor(config),
145
193
  commands: [{ command: `${suggestedRunner(config.packageManager)} zard-cli add`, argument: '[component]' }],
@@ -147,19 +195,22 @@ function reportSuccess(config, steps, logs) {
147
195
  });
148
196
  }
149
197
  /**
150
- * O que ainda falta fazer à mão.
198
+ * What is still left to do by hand.
151
199
  *
152
- * Numa biblioteca o init não tem onde registrar `provideZard()` nem como
153
- * importar os tokens — as duas coisas pertencem ao app que consome a lib, e
154
- * sem esse aviso o usuário só descobre quando os componentes não renderizam.
200
+ * In a library init has nowhere to register `provideZard()` and no way to import
201
+ * the tokens — both belong to the app consuming the library, and without this
202
+ * notice the user only finds out when the components do not render.
155
203
  */
156
204
  function nextStepsFor(config) {
157
205
  if (!isLibraryKind(config.projectType)) {
158
206
  return ['You can now add components using:'];
159
207
  }
160
208
  return [
161
- 'The consuming app still needs to register provideZard() in its app.config.ts',
162
- `and import the theme tokens from this library's ${path.basename(config.tailwind.css)}.`,
209
+ 'The consuming app still needs the Tailwind PostCSS pipeline (tailwindcss, @tailwindcss/postcss,',
210
+ 'postcss, tailwindcss-animate and a .postcssrc.json), to register provideZard() in its',
211
+ `app.config.ts and to import the theme tokens from this library's ${path.basename(config.tailwind.css)}.`,
212
+ // A library has no index.html, so `--rtl` could not set the direction anywhere.
213
+ ...(config.rtl ? ['It also needs dir="rtl" on the <html> tag of its index.html to read right to left.'] : []),
163
214
  '',
164
215
  'You can now add components using:',
165
216
  ];
@@ -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,28 @@
1
+ import { type Config } from '../../utils/config.js';
2
+ /**
3
+ * Declares what the library's components import as its peer dependencies.
4
+ *
5
+ * The packages are installed at the workspace root, where the library builds
6
+ * against them — but ng-packagr leaves them external, and an app installing the
7
+ * published library learns it needs `@angular/cdk` or `echarts` only when its
8
+ * build fails to resolve them. As peers, the package manager says so up front.
9
+ *
10
+ * The range is the one the workspace installed. An entry the library already
11
+ * declares is left alone: whoever wrote it chose that range on purpose.
12
+ * Libraries without a `package.json` of their own — a non-buildable Nx library —
13
+ * publish nothing, so there is nothing to declare.
14
+ */
15
+ export declare function syncLibraryPeerDependencies(cwd: string, config: Config, packages: string[]): Promise<void>;
16
+ /**
17
+ * Whether the project is a library ng-packagr bundles — one with an `ng-package.json`.
18
+ *
19
+ * Only that kind needs relative imports: ng-packagr leaves aliased imports
20
+ * external. A non-buildable Nx library is compiled from source by the app that
21
+ * uses it, through the same aliases — and in a Vite build, reaching one file
22
+ * by alias and by relative path loads it twice, so rewriting there would only
23
+ * add risk. `baseUrl` is absolute; the library root sits two levels above it.
24
+ */
25
+ export declare function isPublishableLibrary(config: {
26
+ projectType?: Config['projectType'];
27
+ }, baseUrl: string): boolean;
28
+ //# sourceMappingURL=library-peers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library-peers.d.ts","sourceRoot":"","sources":["../../../src/commands/init/library-peers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAMnD;;;;;;;;;;;;GAYG;AACH,wBAAsB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BhH;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAA;CAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAK9G"}
@@ -0,0 +1,61 @@
1
+ import { isLibraryKind, projectRootOf } from './project-kind.js';
2
+ import { logger } from '../../utils/logger.js';
3
+ import { existsSync } from 'node:fs';
4
+ import { readFile, writeFile } from 'node:fs/promises';
5
+ import * as path from 'node:path';
6
+ /**
7
+ * Declares what the library's components import as its peer dependencies.
8
+ *
9
+ * The packages are installed at the workspace root, where the library builds
10
+ * against them — but ng-packagr leaves them external, and an app installing the
11
+ * published library learns it needs `@angular/cdk` or `echarts` only when its
12
+ * build fails to resolve them. As peers, the package manager says so up front.
13
+ *
14
+ * The range is the one the workspace installed. An entry the library already
15
+ * declares is left alone: whoever wrote it chose that range on purpose.
16
+ * Libraries without a `package.json` of their own — a non-buildable Nx library —
17
+ * publish nothing, so there is nothing to declare.
18
+ */
19
+ export async function syncLibraryPeerDependencies(cwd, config, packages) {
20
+ if (!isLibraryKind(config.projectType) || packages.length === 0)
21
+ return;
22
+ const libraryPackageJson = path.resolve(cwd, projectRootOf(config.baseUrl), 'package.json');
23
+ if (!existsSync(libraryPackageJson)) {
24
+ logger.debug(`No package.json in ${path.relative(cwd, path.dirname(libraryPackageJson))}; no peers to declare.`);
25
+ return;
26
+ }
27
+ const workspace = JSON.parse(await readFile(path.resolve(cwd, 'package.json'), 'utf8'));
28
+ const installed = { ...workspace.devDependencies, ...workspace.dependencies };
29
+ const library = JSON.parse(await readFile(libraryPackageJson, 'utf8'));
30
+ const peers = { ...library.peerDependencies };
31
+ let changed = false;
32
+ for (const name of packages.map(packageName)) {
33
+ if (peers[name])
34
+ continue;
35
+ peers[name] = installed[name] ?? '*';
36
+ changed = true;
37
+ }
38
+ if (!changed)
39
+ return;
40
+ library.peerDependencies = peers;
41
+ await writeFile(libraryPackageJson, `${JSON.stringify(library, null, 2)}\n`, 'utf8');
42
+ }
43
+ /**
44
+ * Whether the project is a library ng-packagr bundles — one with an `ng-package.json`.
45
+ *
46
+ * Only that kind needs relative imports: ng-packagr leaves aliased imports
47
+ * external. A non-buildable Nx library is compiled from source by the app that
48
+ * uses it, through the same aliases — and in a Vite build, reaching one file
49
+ * by alias and by relative path loads it twice, so rewriting there would only
50
+ * add risk. `baseUrl` is absolute; the library root sits two levels above it.
51
+ */
52
+ export function isPublishableLibrary(config, baseUrl) {
53
+ return (Boolean(config.projectType && isLibraryKind(config.projectType)) &&
54
+ existsSync(path.resolve(baseUrl, '..', '..', 'ng-package.json')));
55
+ }
56
+ /** `@angular/cdk@^22` → `@angular/cdk`; the `@` that opens a scope is not a version. */
57
+ function packageName(spec) {
58
+ const separator = spec.lastIndexOf('@');
59
+ return separator > 0 ? spec.slice(0, separator) : spec;
60
+ }
61
+ //# sourceMappingURL=library-peers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library-peers.js","sourceRoot":"","sources":["../../../src/commands/init/library-peers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,GAAW,EAAE,MAAc,EAAE,QAAkB;IAC/F,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAExE,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;IAC5F,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,wBAAwB,CAAC,CAAC;QACjH,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACxF,MAAM,SAAS,GAA2B,EAAE,GAAG,SAAS,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;IAEtG,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;IACvE,MAAM,KAAK,GAA2B,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAEtE,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;QACrC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACjC,MAAM,SAAS,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACvF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA+C,EAAE,OAAe;IACnG,OAAO,CACL,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC"}