zard-cli 1.0.0-beta.103 → 1.0.0-beta.104
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.
- package/commands/add/component-installer.d.ts +2 -0
- package/commands/add/component-installer.d.ts.map +1 -1
- package/commands/add/component-installer.js +9 -4
- package/commands/add/component-installer.js.map +1 -1
- package/commands/add/component-selector.d.ts +6 -0
- package/commands/add/component-selector.d.ts.map +1 -1
- package/commands/add/component-selector.js +9 -27
- package/commands/add/component-selector.js.map +1 -1
- package/commands/add/dark-mode-setup.d.ts.map +1 -1
- package/commands/add/dark-mode-setup.js +2 -11
- package/commands/add/dark-mode-setup.js.map +1 -1
- package/commands/add/dependency-resolver.d.ts +2 -1
- package/commands/add/dependency-resolver.d.ts.map +1 -1
- package/commands/add/dependency-resolver.js +19 -4
- package/commands/add/dependency-resolver.js.map +1 -1
- package/commands/add/index.d.ts.map +1 -1
- package/commands/add/index.js +116 -86
- package/commands/add/index.js.map +1 -1
- package/commands/add/wizard.d.ts +31 -0
- package/commands/add/wizard.d.ts.map +1 -0
- package/commands/add/wizard.js +289 -0
- package/commands/add/wizard.js.map +1 -0
- package/commands/init/config-prompter.d.ts +49 -3
- package/commands/init/config-prompter.d.ts.map +1 -1
- package/commands/init/config-prompter.js +84 -74
- package/commands/init/config-prompter.js.map +1 -1
- package/commands/init/dependencies.d.ts +1 -8
- package/commands/init/dependencies.d.ts.map +1 -1
- package/commands/init/dependencies.js +47 -18
- package/commands/init/dependencies.js.map +1 -1
- package/commands/init/index.d.ts.map +1 -1
- package/commands/init/index.js +147 -81
- package/commands/init/index.js.map +1 -1
- package/commands/init/project-kind.d.ts +82 -0
- package/commands/init/project-kind.d.ts.map +1 -0
- package/commands/init/project-kind.js +166 -0
- package/commands/init/project-kind.js.map +1 -0
- package/commands/init/steps.d.ts +16 -0
- package/commands/init/steps.d.ts.map +1 -0
- package/commands/init/steps.js +153 -0
- package/commands/init/steps.js.map +1 -0
- package/commands/init/tailwind-setup.d.ts +9 -2
- package/commands/init/tailwind-setup.d.ts.map +1 -1
- package/commands/init/tailwind-setup.js +33 -12
- package/commands/init/tailwind-setup.js.map +1 -1
- package/commands/init/tsconfig-updater.d.ts +8 -1
- package/commands/init/tsconfig-updater.d.ts.map +1 -1
- package/commands/init/tsconfig-updater.js +30 -11
- package/commands/init/tsconfig-updater.js.map +1 -1
- package/commands/init/update-angular-config.d.ts.map +1 -1
- package/commands/init/update-angular-config.js +28 -50
- package/commands/init/update-angular-config.js.map +1 -1
- package/commands/init/vite-setup.d.ts +10 -0
- package/commands/init/vite-setup.d.ts.map +1 -0
- package/commands/init/vite-setup.js +60 -0
- package/commands/init/vite-setup.js.map +1 -0
- package/commands/init/wizard.d.ts +30 -0
- package/commands/init/wizard.d.ts.map +1 -0
- package/commands/init/wizard.js +560 -0
- package/commands/init/wizard.js.map +1 -0
- package/core/icons/families.d.ts +38 -0
- package/core/icons/families.d.ts.map +1 -0
- package/core/icons/families.js +26 -0
- package/core/icons/families.js.map +1 -0
- package/core/icons/icon-map.d.ts +22 -0
- package/core/icons/icon-map.d.ts.map +1 -0
- package/core/icons/icon-map.js +125 -0
- package/core/icons/icon-map.js.map +1 -0
- package/core/icons/index.d.ts +107 -0
- package/core/icons/index.d.ts.map +1 -0
- package/core/icons/index.js +183 -0
- package/core/icons/index.js.map +1 -0
- package/core/registry/registry-data.d.ts.map +1 -1
- package/core/registry/registry-data.js +8 -0
- package/core/registry/registry-data.js.map +1 -1
- package/index.js +5 -3
- package/index.js.map +1 -1
- package/package.json +1 -4
- package/ui/blocks.d.ts +70 -0
- package/ui/blocks.d.ts.map +1 -0
- package/ui/blocks.js +116 -0
- package/ui/blocks.js.map +1 -0
- package/ui/brand.d.ts +14 -0
- package/ui/brand.d.ts.map +1 -0
- package/ui/brand.js +35 -0
- package/ui/brand.js.map +1 -0
- package/ui/engine/animation/index.d.ts +39 -0
- package/ui/engine/animation/index.d.ts.map +1 -0
- package/ui/engine/animation/index.js +103 -0
- package/ui/engine/animation/index.js.map +1 -0
- package/ui/engine/ansi/index.d.ts +52 -0
- package/ui/engine/ansi/index.d.ts.map +1 -0
- package/ui/engine/ansi/index.js +117 -0
- package/ui/engine/ansi/index.js.map +1 -0
- package/ui/engine/components/index.d.ts +211 -0
- package/ui/engine/components/index.d.ts.map +1 -0
- package/ui/engine/components/index.js +109 -0
- package/ui/engine/components/index.js.map +1 -0
- package/ui/engine/cursor/index.d.ts +17 -0
- package/ui/engine/cursor/index.d.ts.map +1 -0
- package/ui/engine/cursor/index.js +41 -0
- package/ui/engine/cursor/index.js.map +1 -0
- package/ui/engine/diff/index.d.ts +27 -0
- package/ui/engine/diff/index.d.ts.map +1 -0
- package/ui/engine/diff/index.js +57 -0
- package/ui/engine/diff/index.js.map +1 -0
- package/ui/engine/events/index.d.ts +24 -0
- package/ui/engine/events/index.d.ts.map +1 -0
- package/ui/engine/events/index.js +60 -0
- package/ui/engine/events/index.js.map +1 -0
- package/ui/engine/focus/index.d.ts +25 -0
- package/ui/engine/focus/index.d.ts.map +1 -0
- package/ui/engine/focus/index.js +77 -0
- package/ui/engine/focus/index.js.map +1 -0
- package/ui/engine/frame/index.d.ts +48 -0
- package/ui/engine/frame/index.d.ts.map +1 -0
- package/ui/engine/frame/index.js +0 -0
- package/ui/engine/frame/index.js.map +1 -0
- package/ui/engine/index.d.ts +28 -0
- package/ui/engine/index.d.ts.map +1 -0
- package/ui/engine/index.js +28 -0
- package/ui/engine/index.js.map +1 -0
- package/ui/engine/input/index.d.ts +36 -0
- package/ui/engine/input/index.d.ts.map +1 -0
- package/ui/engine/input/index.js +224 -0
- package/ui/engine/input/index.js.map +1 -0
- package/ui/engine/layout/index.d.ts +42 -0
- package/ui/engine/layout/index.d.ts.map +1 -0
- package/ui/engine/layout/index.js +241 -0
- package/ui/engine/layout/index.js.map +1 -0
- package/ui/engine/renderer/index.d.ts +43 -0
- package/ui/engine/renderer/index.d.ts.map +1 -0
- package/ui/engine/renderer/index.js +619 -0
- package/ui/engine/renderer/index.js.map +1 -0
- package/ui/engine/scheduler/index.d.ts +22 -0
- package/ui/engine/scheduler/index.d.ts.map +1 -0
- package/ui/engine/scheduler/index.js +77 -0
- package/ui/engine/scheduler/index.js.map +1 -0
- package/ui/engine/screen/index.d.ts +39 -0
- package/ui/engine/screen/index.d.ts.map +1 -0
- package/ui/engine/screen/index.js +255 -0
- package/ui/engine/screen/index.js.map +1 -0
- package/ui/engine/terminal/index.d.ts +84 -0
- package/ui/engine/terminal/index.d.ts.map +1 -0
- package/ui/engine/terminal/index.js +235 -0
- package/ui/engine/terminal/index.js.map +1 -0
- package/ui/engine/testing/index.d.ts +27 -0
- package/ui/engine/testing/index.d.ts.map +1 -0
- package/ui/engine/testing/index.js +63 -0
- package/ui/engine/testing/index.js.map +1 -0
- package/ui/engine/theme/index.d.ts +27 -0
- package/ui/engine/theme/index.d.ts.map +1 -0
- package/ui/engine/theme/index.js +129 -0
- package/ui/engine/theme/index.js.map +1 -0
- package/ui/engine/utils/index.d.ts +12 -0
- package/ui/engine/utils/index.d.ts.map +1 -0
- package/ui/engine/utils/index.js +143 -0
- package/ui/engine/utils/index.js.map +1 -0
- package/ui/gate.d.ts +19 -0
- package/ui/gate.d.ts.map +1 -0
- package/ui/gate.js +36 -0
- package/ui/gate.js.map +1 -0
- package/ui/index.d.ts +18 -0
- package/ui/index.d.ts.map +1 -0
- package/ui/index.js +18 -0
- package/ui/index.js.map +1 -0
- package/ui/log-sink.d.ts +24 -0
- package/ui/log-sink.d.ts.map +1 -0
- package/ui/log-sink.js +35 -0
- package/ui/log-sink.js.map +1 -0
- package/ui/output.d.ts +14 -0
- package/ui/output.d.ts.map +1 -0
- package/ui/output.js +28 -0
- package/ui/output.js.map +1 -0
- package/ui/report.d.ts +30 -0
- package/ui/report.d.ts.map +1 -0
- package/ui/report.js +45 -0
- package/ui/report.js.map +1 -0
- package/ui/runner.d.ts +66 -0
- package/ui/runner.d.ts.map +1 -0
- package/ui/runner.js +135 -0
- package/ui/runner.js.map +1 -0
- package/ui/style.d.ts +24 -0
- package/ui/style.d.ts.map +1 -0
- package/ui/style.js +44 -0
- package/ui/style.js.map +1 -0
- package/ui/testing/fake-tty.d.ts +26 -0
- package/ui/testing/fake-tty.d.ts.map +1 -0
- package/ui/testing/fake-tty.js +61 -0
- package/ui/testing/fake-tty.js.map +1 -0
- package/ui/text-input.d.ts +30 -0
- package/ui/text-input.d.ts.map +1 -0
- package/ui/text-input.js +87 -0
- package/ui/text-input.js.map +1 -0
- package/ui/theme.d.ts +10 -0
- package/ui/theme.d.ts.map +1 -0
- package/ui/theme.js +20 -0
- package/ui/theme.js.map +1 -0
- package/utils/config.d.ts +26 -0
- package/utils/config.d.ts.map +1 -1
- package/utils/config.js +41 -1
- package/utils/config.js.map +1 -1
- package/utils/errors.d.ts +11 -0
- package/utils/errors.d.ts.map +1 -1
- package/utils/errors.js +14 -0
- package/utils/errors.js.map +1 -1
- package/utils/get-project-info.d.ts +29 -0
- package/utils/get-project-info.d.ts.map +1 -1
- package/utils/get-project-info.js +176 -1
- package/utils/get-project-info.js.map +1 -1
- package/utils/icon-catalog.d.ts +33 -0
- package/utils/icon-catalog.d.ts.map +1 -0
- package/utils/icon-catalog.js +62 -0
- package/utils/icon-catalog.js.map +1 -0
- package/utils/logger.d.ts +13 -1
- package/utils/logger.d.ts.map +1 -1
- package/utils/logger.js +95 -15
- package/utils/logger.js.map +1 -1
- package/utils/package-manager.d.ts +42 -1
- package/utils/package-manager.d.ts.map +1 -1
- package/utils/package-manager.js +204 -11
- package/utils/package-manager.js.map +1 -1
- package/utils/registry.d.ts +42 -2
- package/utils/registry.d.ts.map +1 -1
- package/utils/registry.js +51 -9
- package/utils/registry.js.map +1 -1
- package/utils/schema-version.d.ts +20 -0
- package/utils/schema-version.d.ts.map +1 -0
- package/utils/schema-version.js +27 -0
- package/utils/schema-version.js.map +1 -0
- package/utils/source-file.d.ts +40 -0
- package/utils/source-file.d.ts.map +1 -0
- package/utils/source-file.js +104 -0
- package/utils/source-file.js.map +1 -0
|
@@ -2,5 +2,7 @@ import { Config } from '../../utils/config';
|
|
|
2
2
|
export declare function validateTargetPath(targetDir: string, projectRoot: string): void;
|
|
3
3
|
export declare function installComponent(componentName: string, targetDir: string, config: Config & {
|
|
4
4
|
resolvedPaths: any;
|
|
5
|
+
}, options?: {
|
|
6
|
+
customPath?: boolean;
|
|
5
7
|
}): Promise<void>;
|
|
6
8
|
//# sourceMappingURL=component-installer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-installer.d.ts","sourceRoot":"","sources":["../../../src/commands/add/component-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAO3C,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"component-installer.d.ts","sourceRoot":"","sources":["../../../src/commands/add/component-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAO3C,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAS/E;AAED,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,EACvC,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GACrC,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
|
|
@@ -4,13 +4,18 @@ import { fetchComponent } from '../../utils/registry.js';
|
|
|
4
4
|
import { promises as fs } from 'node:fs';
|
|
5
5
|
import * as path from 'node:path';
|
|
6
6
|
export function validateTargetPath(targetDir, projectRoot) {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
// Comparar prefixo de string deixava passar o diretório vizinho: `/proj-evil`
|
|
8
|
+
// começa com `/proj` sem estar dentro dele. O caminho relativo responde a
|
|
9
|
+
// pergunta certa — está contido? — e ainda normaliza os `..` do meio.
|
|
10
|
+
const relative = path.relative(path.resolve(projectRoot), path.resolve(targetDir));
|
|
11
|
+
if (relative.startsWith('..') || path.isAbsolute(relative)) {
|
|
9
12
|
throw new CliError('Target path must be within the project directory', 'INVALID_PATH');
|
|
10
13
|
}
|
|
11
14
|
}
|
|
12
|
-
export async function installComponent(componentName, targetDir, config) {
|
|
13
|
-
const component = await fetchComponent(componentName, config
|
|
15
|
+
export async function installComponent(componentName, targetDir, config, options = {}) {
|
|
16
|
+
const component = await fetchComponent(componentName, config, undefined, {
|
|
17
|
+
siblingComponents: options.customPath,
|
|
18
|
+
});
|
|
14
19
|
await fs.mkdir(targetDir, { recursive: true });
|
|
15
20
|
const writtenFiles = [];
|
|
16
21
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-installer.js","sourceRoot":"","sources":["../../../src/commands/add/component-installer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAgB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,WAAmB;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"component-installer.js","sourceRoot":"","sources":["../../../src/commands/add/component-installer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAgB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,WAAmB;IACvE,8EAA8E;IAC9E,0EAA0E;IAC1E,sEAAsE;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnF,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,QAAQ,CAAC,kDAAkD,EAAE,cAAc,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAqB,EACrB,SAAiB,EACjB,MAAuC,EACvC,UAAoC,EAAE;IAEtC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE;QACvE,iBAAiB,EAAE,OAAO,CAAC,UAAU;KACtC,CAAC,CAAC;IAEH,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC7D,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qCAAqC;QACrC,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnC,2BAA2B;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,eAAe,YAAY,CAAC,MAAM,2BAA2B,aAAa,GAAG,CAAC,CAAC;QAE5F,MAAM,IAAI,YAAY,CACpB,gCAAgC,aAAa,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EACnG,aAAa,CACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAA8B,EAAE,SAAiB;IACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEnD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,2 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve quais componentes o comando deve instalar a partir dos argumentos.
|
|
3
|
+
*
|
|
4
|
+
* Devolve uma lista vazia quando não há nada informado: nesse caso quem escolhe
|
|
5
|
+
* é o wizard (ou, sem terminal interativo, o comando falha pedindo os nomes).
|
|
6
|
+
*/
|
|
1
7
|
export declare function selectComponents(components: string[], allFlag: boolean): Promise<string[]>;
|
|
2
8
|
//# sourceMappingURL=component-selector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-selector.d.ts","sourceRoot":"","sources":["../../../src/commands/add/component-selector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"component-selector.d.ts","sourceRoot":"","sources":["../../../src/commands/add/component-selector.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGhG"}
|
|
@@ -1,31 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { getAllComponentNames } from '../../commands/add/dependency-resolver.js';
|
|
2
|
+
/**
|
|
3
|
+
* Resolve quais componentes o comando deve instalar a partir dos argumentos.
|
|
4
|
+
*
|
|
5
|
+
* Devolve uma lista vazia quando não há nada informado: nesse caso quem escolhe
|
|
6
|
+
* é o wizard (ou, sem terminal interativo, o comando falha pedindo os nomes).
|
|
7
|
+
*/
|
|
4
8
|
export async function selectComponents(components, allFlag) {
|
|
5
|
-
if (allFlag)
|
|
9
|
+
if (allFlag)
|
|
6
10
|
return getAllComponentNames();
|
|
7
|
-
|
|
8
|
-
if (!components?.length) {
|
|
9
|
-
return await promptForComponents();
|
|
10
|
-
}
|
|
11
|
-
return components;
|
|
12
|
-
}
|
|
13
|
-
async function promptForComponents() {
|
|
14
|
-
const allNames = await getAllComponentNames();
|
|
15
|
-
const { components: selected } = await prompts({
|
|
16
|
-
type: 'multiselect',
|
|
17
|
-
name: 'components',
|
|
18
|
-
message: 'Which components would you like to add?',
|
|
19
|
-
hint: 'Space to select. A to toggle all. Enter to submit.',
|
|
20
|
-
choices: allNames.map(name => ({
|
|
21
|
-
title: name,
|
|
22
|
-
value: name,
|
|
23
|
-
})),
|
|
24
|
-
});
|
|
25
|
-
if (!selected?.length) {
|
|
26
|
-
logger.warn('No components selected. Exiting.');
|
|
27
|
-
process.exit(0);
|
|
28
|
-
}
|
|
29
|
-
return selected;
|
|
11
|
+
return components ?? [];
|
|
30
12
|
}
|
|
31
13
|
//# sourceMappingURL=component-selector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-selector.js","sourceRoot":"","sources":["../../../src/commands/add/component-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"component-selector.js","sourceRoot":"","sources":["../../../src/commands/add/component-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAoB,EAAE,OAAgB;IAC3E,IAAI,OAAO;QAAE,OAAO,oBAAoB,EAAE,CAAC;IAC3C,OAAO,UAAU,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dark-mode-setup.d.ts","sourceRoot":"","sources":["../../../src/commands/add/dark-mode-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"dark-mode-setup.d.ts","sourceRoot":"","sources":["../../../src/commands/add/dark-mode-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAanD,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,MAAM,EACX,cAAc,EAAE;IAAE,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;CAAE,GACjG,OAAO,CAAC,IAAI,CAAC,CAwCf"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { logger } from '../../utils/logger.js';
|
|
2
|
+
import { 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';
|
|
@@ -23,17 +24,7 @@ export async function updateProvideZardWithDarkMode(cwd, resolvedConfig) {
|
|
|
23
24
|
if (!content.includes('provideAppInitializer')) {
|
|
24
25
|
content = content.replace(/import \{ (.*) \} from '@angular\/core';/, "import { $1, provideAppInitializer } from '@angular/core';");
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
-
let lastImportMatch = null;
|
|
28
|
-
let match;
|
|
29
|
-
while ((match = importRegex.exec(content)) !== null) {
|
|
30
|
-
lastImportMatch = match;
|
|
31
|
-
}
|
|
32
|
-
if (lastImportMatch) {
|
|
33
|
-
const insertionIndex = lastImportMatch.index + lastImportMatch[0].length;
|
|
34
|
-
const darkModeImport = getDarkModeImport(resolvedConfig.aliases?.services);
|
|
35
|
-
content = content.slice(0, insertionIndex) + darkModeImport + '\n' + content.slice(insertionIndex);
|
|
36
|
-
}
|
|
27
|
+
content = withImport(content, getDarkModeImport(resolvedConfig.aliases?.services));
|
|
37
28
|
content = content.replace(/return makeEnvironmentProviders\(\[(.*?)\]\);/s, (match, providers) => {
|
|
38
29
|
const trimmedProviders = providers.trim();
|
|
39
30
|
if (trimmedProviders) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dark-mode-setup.js","sourceRoot":"","sources":["../../../src/commands/add/dark-mode-setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,SAAS,iBAAiB,CAAC,aAAsB;IAC/C,OAAO,iCAAiC,aAAa,IAAI,mBAAmB,cAAc,CAAC;AAC7F,CAAC;AAED,MAAM,qBAAqB,GAAG,0DAA0D,CAAC;AAEzF,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,GAAW,EACX,cAAkG;IAElG,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;IAEhG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAEjE,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,0CAA0C,EAC1C,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/C,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,0CAA0C,EAC1C,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"dark-mode-setup.js","sourceRoot":"","sources":["../../../src/commands/add/dark-mode-setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,SAAS,iBAAiB,CAAC,aAAsB;IAC/C,OAAO,iCAAiC,aAAa,IAAI,mBAAmB,cAAc,CAAC;AAC7F,CAAC;AAED,MAAM,qBAAqB,GAAG,0DAA0D,CAAC;AAEzF,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,GAAW,EACX,cAAkG;IAElG,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;IAEhG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAEjE,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,0CAA0C,EAC1C,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/C,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,0CAA0C,EAC1C,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEnF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gDAAgD,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QAC/F,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,oCAAoC,qBAAqB,KAAK,gBAAgB,KAAK,CAAC;QAC7F,CAAC;QACD,OAAO,oCAAoC,qBAAqB,KAAK,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Config } from '../../utils/config.js';
|
|
2
|
-
import { type RegistryIndex } from '../../utils/registry.js';
|
|
2
|
+
import { type RegistryIcons, type RegistryIndex } from '../../utils/registry.js';
|
|
3
3
|
export declare function getTargetDir(component: ComponentMeta, resolvedConfig: Config & {
|
|
4
4
|
resolvedPaths: any;
|
|
5
5
|
}, cwd: string, customPath?: string): string;
|
|
@@ -9,6 +9,7 @@ export interface ComponentMeta {
|
|
|
9
9
|
dependencies?: string[];
|
|
10
10
|
devDependencies?: string[];
|
|
11
11
|
registryDependencies?: string[];
|
|
12
|
+
icons?: RegistryIcons;
|
|
12
13
|
}
|
|
13
14
|
export interface ResolvedDependencies {
|
|
14
15
|
componentsToInstall: ComponentMeta[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../../../src/commands/add/dependency-resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../../../src/commands/add/dependency-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,yBAAyB,CAAC;AAajC,wBAAgB,YAAY,CAC1B,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,EAC/C,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAoBR;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,aAAa,EAAE,CAAC;IACrC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,wBAAsB,gBAAgB,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAKnF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAavF;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG9D;AAED,wBAAsB,mBAAmB,CACvC,kBAAkB,EAAE,MAAM,EAAE,EAC5B,cAAc,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,EAC/C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7D,OAAO,CAAC,oBAAoB,CAAC,CA4C/B"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { existsSync, readdirSync } from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
+
import { iconPackagesFor } from '../../core/icons/index.js';
|
|
4
|
+
import { iconCatalog } from '../../utils/icon-catalog.js';
|
|
3
5
|
import { logger } from '../../utils/logger.js';
|
|
4
|
-
import { fetchRegistryIndex, invalidateRegistryCache } from '../../utils/registry.js';
|
|
6
|
+
import { fetchRegistryIndex, invalidateRegistryCache, } from '../../utils/registry.js';
|
|
5
7
|
function isComponentInstalled(dir) {
|
|
6
8
|
if (!existsSync(dir))
|
|
7
9
|
return false;
|
|
@@ -46,6 +48,7 @@ export async function getComponentMeta(name) {
|
|
|
46
48
|
dependencies: item.dependencies,
|
|
47
49
|
devDependencies: item.devDependencies,
|
|
48
50
|
registryDependencies: item.registryDependencies,
|
|
51
|
+
icons: item.icons,
|
|
49
52
|
};
|
|
50
53
|
}
|
|
51
54
|
export async function getAllComponentNames() {
|
|
@@ -72,7 +75,7 @@ export async function resolveDependencies(selectedComponents, resolvedConfig, cw
|
|
|
72
75
|
continue;
|
|
73
76
|
}
|
|
74
77
|
componentsToInstall.push(component);
|
|
75
|
-
addComponentDependencies(component, dependenciesToInstall);
|
|
78
|
+
addComponentDependencies(component, dependenciesToInstall, resolvedConfig.icons);
|
|
76
79
|
if (component.registryDependencies && !options.all) {
|
|
77
80
|
await resolveRegistryDependencies(component, componentsToInstall, dependenciesToInstall, resolvedConfig, cwd, options);
|
|
78
81
|
}
|
|
@@ -82,8 +85,20 @@ export async function resolveDependencies(selectedComponents, resolvedConfig, cw
|
|
|
82
85
|
dependenciesToInstall,
|
|
83
86
|
};
|
|
84
87
|
}
|
|
85
|
-
|
|
88
|
+
/**
|
|
89
|
+
* As dependências npm que o componente exige.
|
|
90
|
+
*
|
|
91
|
+
* Além das declaradas, quem desenha ícones precisa do ng-icons e do pacote da
|
|
92
|
+
* família configurada. Isso não vem do registry: o registry publica QUAIS
|
|
93
|
+
* ícones o componente usa, e de que família eles saem é decisão do projeto que
|
|
94
|
+
* está instalando. Instalar dentro do `add` também cobre quem escolheu outra
|
|
95
|
+
* família depois do init.
|
|
96
|
+
*/
|
|
97
|
+
function addComponentDependencies(component, dependenciesToInstall, iconFamily) {
|
|
86
98
|
component.dependencies?.forEach(dep => dependenciesToInstall.add(dep));
|
|
99
|
+
if (component.icons?.symbols?.length) {
|
|
100
|
+
iconPackagesFor(iconFamily, iconCatalog()).forEach(pkg => dependenciesToInstall.add(pkg));
|
|
101
|
+
}
|
|
87
102
|
}
|
|
88
103
|
async function resolveRegistryDependencies(component, componentsToInstall, dependenciesToInstall, resolvedConfig, cwd, options) {
|
|
89
104
|
if (!component.registryDependencies)
|
|
@@ -97,7 +112,7 @@ async function resolveRegistryDependencies(component, componentsToInstall, depen
|
|
|
97
112
|
const depTargetDir = getTargetDir(depComponent, resolvedConfig, cwd, options.path);
|
|
98
113
|
if (!isComponentInstalled(depTargetDir) || options.overwrite) {
|
|
99
114
|
componentsToInstall.push(depComponent);
|
|
100
|
-
addComponentDependencies(depComponent, dependenciesToInstall);
|
|
115
|
+
addComponentDependencies(depComponent, dependenciesToInstall, resolvedConfig.icons);
|
|
101
116
|
if (depComponent.registryDependencies) {
|
|
102
117
|
await resolveRegistryDependencies(depComponent, componentsToInstall, dependenciesToInstall, resolvedConfig, cwd, options);
|
|
103
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../../src/commands/add/dependency-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../../src/commands/add/dependency-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,GAAG,SAmFZ,CAAC"}
|
package/commands/add/index.js
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { installComponent, validateTargetPath } from '../../commands/add/component-installer.js';
|
|
2
2
|
import { selectComponents } from '../../commands/add/component-selector.js';
|
|
3
3
|
import { updateProvideZardWithDarkMode } from '../../commands/add/dark-mode-setup.js';
|
|
4
|
-
import {
|
|
4
|
+
import { getAllComponentNames, getTargetDir, resolveDependencies, } from '../../commands/add/dependency-resolver.js';
|
|
5
|
+
import { runAddWizard } from '../../commands/add/wizard.js';
|
|
6
|
+
import { indexHtmlFor } from '../../commands/init/project-kind.js';
|
|
5
7
|
import { injectThemeScript } from '../../commands/init/theme-loader.js';
|
|
8
|
+
import { isInteractive, printReport, WizardCancelledError } from '../../ui/index.js';
|
|
6
9
|
import { getConfig, resolveConfigPaths } from '../../utils/config.js';
|
|
7
10
|
import { CliError } from '../../utils/errors.js';
|
|
8
11
|
import { getProjectInfo } from '../../utils/get-project-info.js';
|
|
12
|
+
import { assertIconFamily, loadIconCatalog } from '../../utils/icon-catalog.js';
|
|
9
13
|
import { logger, spinner } from '../../utils/logger.js';
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
14
|
+
import { filterInstalledPackages, installPackagesWithRetry } from '../../utils/package-manager.js';
|
|
15
|
+
import { getRegistryUrl } from '../../utils/registry.js';
|
|
12
16
|
import { Command } from 'commander';
|
|
13
17
|
import { existsSync } from 'node:fs';
|
|
14
18
|
import * as path from 'node:path';
|
|
15
|
-
import prompts from 'prompts';
|
|
16
19
|
export const add = new Command()
|
|
17
20
|
.name('add')
|
|
18
21
|
.description('add a component to your project')
|
|
@@ -31,33 +34,112 @@ export const add = new Command()
|
|
|
31
34
|
const config = await loadConfiguration(cwd);
|
|
32
35
|
const projectInfo = await validateProject(cwd);
|
|
33
36
|
const resolvedConfig = await resolveConfigPaths(cwd, config);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
// O catálogo decide se `icons` é um valor válido e como traduzir os símbolos
|
|
38
|
+
// na instalação, então vem antes de resolver componente nenhum.
|
|
39
|
+
await loadIconCatalog(getRegistryUrl(config));
|
|
40
|
+
assertIconFamily(config.icons);
|
|
41
|
+
const preselected = await selectComponents(components, options.all);
|
|
42
|
+
warnOnPrereleaseAngular(projectInfo.angularVersionRaw);
|
|
43
|
+
const actions = {
|
|
44
|
+
loadNames: () => getAllComponentNames(),
|
|
45
|
+
resolve: async (names) => {
|
|
46
|
+
const { componentsToInstall, dependenciesToInstall } = await resolveDependencies(names, resolvedConfig, cwd, options);
|
|
47
|
+
return {
|
|
48
|
+
components: componentsToInstall,
|
|
49
|
+
dependencies: resolveCompatibleVersions(dependenciesToInstall, projectInfo.angularVersion),
|
|
50
|
+
};
|
|
51
|
+
},
|
|
52
|
+
installDependencies: (packages) => installDependencies(packages, cwd, config.packageManager),
|
|
53
|
+
installComponent: (component) => installComponent(component.name, getTargetDir(component, resolvedConfig, cwd, options.path), resolvedConfig, {
|
|
54
|
+
customPath: Boolean(options.path),
|
|
55
|
+
}),
|
|
56
|
+
setupDarkMode: async (indexHtml) => {
|
|
57
|
+
await injectThemeScript(cwd, indexHtml);
|
|
58
|
+
await updateProvideZardWithDarkMode(cwd, resolvedConfig);
|
|
59
|
+
},
|
|
60
|
+
defaultIndexHtml: indexHtmlFor(config.projectType, config.baseUrl),
|
|
61
|
+
};
|
|
62
|
+
if (!isInteractive()) {
|
|
63
|
+
// Ver a nota em `init`: sem isto, sair em modo texto é indistinguível de
|
|
64
|
+
// a interface não existir.
|
|
65
|
+
logger.debug(`No terminal to draw on (stdin TTY: ${Boolean(process.stdin.isTTY)}, ` +
|
|
66
|
+
`stdout TTY: ${Boolean(process.stdout.isTTY)}, controlling terminal: unreachable) — running headless.`);
|
|
67
|
+
await runHeadless(preselected, options, actions);
|
|
40
68
|
return;
|
|
41
69
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
70
|
+
try {
|
|
71
|
+
const { installed, logs } = await runAddWizard({
|
|
72
|
+
preselected,
|
|
73
|
+
skipConfirmation: options.yes,
|
|
74
|
+
...actions,
|
|
75
|
+
});
|
|
76
|
+
reportSuccess(installed, logs);
|
|
45
77
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (error instanceof WizardCancelledError) {
|
|
80
|
+
printReport({ status: 'cancelled', headline: error.message, notes: ['No files were written.'] });
|
|
49
81
|
process.exit(0);
|
|
50
82
|
}
|
|
83
|
+
throw error;
|
|
51
84
|
}
|
|
52
|
-
await installDependencies(resolvedDeps, cwd, config.packageManager);
|
|
53
|
-
await installComponents(componentsToInstall, cwd, resolvedConfig, options);
|
|
54
|
-
const isDarkModeBeingInstalled = componentsToInstall.some(c => c.name === 'dark-mode');
|
|
55
|
-
if (isDarkModeBeingInstalled) {
|
|
56
|
-
await setupDarkMode(cwd, resolvedConfig);
|
|
57
|
-
}
|
|
58
|
-
logger.break();
|
|
59
|
-
logger.success('Done!');
|
|
60
85
|
});
|
|
86
|
+
/**
|
|
87
|
+
* Caminho sem UI — CI, pipes e terminais não interativos.
|
|
88
|
+
*
|
|
89
|
+
* Sem alguém para escolher na lista, os componentes precisam vir por argumento
|
|
90
|
+
* ou via `--all`; a confirmação é dispensada porque não há como respondê-la.
|
|
91
|
+
*/
|
|
92
|
+
async function runHeadless(preselected, options, actions) {
|
|
93
|
+
if (!preselected.length) {
|
|
94
|
+
throw new CliError('No components specified. Pass the component names or --all when running without an interactive terminal.', 'NO_COMPONENTS');
|
|
95
|
+
}
|
|
96
|
+
const resolveSpinner = spinner('Resolving components...').start();
|
|
97
|
+
const { components, dependencies } = await actions.resolve(preselected);
|
|
98
|
+
resolveSpinner.stop();
|
|
99
|
+
if (components.length === 0) {
|
|
100
|
+
logger.info('All components already installed.');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (dependencies.length) {
|
|
104
|
+
const depsSpinner = spinner('Installing dependencies...').start();
|
|
105
|
+
await actions.installDependencies(dependencies);
|
|
106
|
+
depsSpinner.succeed('Dependencies installed');
|
|
107
|
+
}
|
|
108
|
+
const installed = [];
|
|
109
|
+
const failed = [];
|
|
110
|
+
for (const component of components) {
|
|
111
|
+
const componentSpinner = spinner(`Installing ${component.name}...`).start();
|
|
112
|
+
try {
|
|
113
|
+
await actions.installComponent(component);
|
|
114
|
+
installed.push(component.name);
|
|
115
|
+
componentSpinner.succeed(component.name);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
failed.push(component.name);
|
|
119
|
+
componentSpinner.fail(component.name);
|
|
120
|
+
logger.debug(`Failed to install ${component.name}: ${error instanceof Error ? error.message : error}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (components.some(component => component.name === 'dark-mode')) {
|
|
124
|
+
logger.warn('Dark mode needs an index.html path; run `zard-cli add dark-mode` interactively to configure it.');
|
|
125
|
+
}
|
|
126
|
+
if (failed.length) {
|
|
127
|
+
throw new CliError(`Failed to install: ${failed.join(', ')}`, 'INSTALL_FAILED');
|
|
128
|
+
}
|
|
129
|
+
reportSuccess(installed, []);
|
|
130
|
+
}
|
|
131
|
+
function reportSuccess(installed, logs) {
|
|
132
|
+
if (!installed.length) {
|
|
133
|
+
printReport({ status: 'success', headline: 'All components are already installed.', logs });
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
printReport({
|
|
137
|
+
status: 'success',
|
|
138
|
+
headline: `Installed ${installed.length} component${installed.length > 1 ? 's' : ''}.`,
|
|
139
|
+
items: [...installed],
|
|
140
|
+
logs,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
61
143
|
function validateWorkingDirectory(cwd) {
|
|
62
144
|
if (!existsSync(cwd)) {
|
|
63
145
|
throw new CliError(`The path ${cwd} does not exist. Please try again.`, 'INVALID_CWD');
|
|
@@ -77,14 +159,10 @@ async function validateProject(cwd) {
|
|
|
77
159
|
}
|
|
78
160
|
return projectInfo;
|
|
79
161
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
message: `Ready to install ${componentsCount} component(s) and ${depsCount} dependencies. Proceed?`,
|
|
85
|
-
initial: true,
|
|
86
|
-
});
|
|
87
|
-
return proceed;
|
|
162
|
+
function warnOnPrereleaseAngular(angularVersionRaw) {
|
|
163
|
+
if (angularVersionRaw && /-(rc|next|canary)/.test(angularVersionRaw)) {
|
|
164
|
+
logger.warn(`You are using a pre-release version of Angular (${angularVersionRaw}). Some dependencies may have compatibility issues.`);
|
|
165
|
+
}
|
|
88
166
|
}
|
|
89
167
|
const ANGULAR_VERSION_PACKAGES = ['embla-carousel-angular'];
|
|
90
168
|
function resolveCompatibleVersions(dependencies, angularVersion) {
|
|
@@ -99,61 +177,13 @@ function resolveCompatibleVersions(dependencies, angularVersion) {
|
|
|
99
177
|
async function installDependencies(packages, cwd, packageManager) {
|
|
100
178
|
if (packages.length === 0)
|
|
101
179
|
return;
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
depsSpinner.text = 'Retrying with --legacy-peer-deps...';
|
|
108
|
-
await installPackages(packages, cwd, packageManager, false, true);
|
|
109
|
-
}
|
|
110
|
-
depsSpinner.succeed('Dependencies installed');
|
|
111
|
-
}
|
|
112
|
-
async function installComponents(componentsToInstall, cwd, resolvedConfig, options) {
|
|
113
|
-
const installSpinner = spinner('Installing components...').start();
|
|
114
|
-
const installed = [];
|
|
115
|
-
const failed = [];
|
|
116
|
-
for (const component of componentsToInstall) {
|
|
117
|
-
try {
|
|
118
|
-
installSpinner.text = `Installing ${component.name}...`;
|
|
119
|
-
const targetDir = getTargetDir(component, resolvedConfig, cwd, options.path);
|
|
120
|
-
await installComponent(component.name, targetDir, resolvedConfig);
|
|
121
|
-
installed.push(component.name);
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
failed.push(component.name);
|
|
125
|
-
logger.debug(`Failed to install ${component.name}: ${error instanceof Error ? error.message : error}`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
if (failed.length > 0) {
|
|
129
|
-
installSpinner.fail(`Failed to install: ${failed.join(', ')}`);
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
installSpinner.succeed(`Installed ${installed.length} component${installed.length > 1 ? 's' : ''}`);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
async function setupDarkMode(cwd, resolvedConfig) {
|
|
136
|
-
logger.break();
|
|
137
|
-
logger.info('Dark mode requires additional configuration.');
|
|
138
|
-
const { indexFile } = await prompts({
|
|
139
|
-
type: 'text',
|
|
140
|
-
name: 'indexFile',
|
|
141
|
-
message: `Where is your ${chalk.cyan('index.html')} file?`,
|
|
142
|
-
initial: 'src/index.html',
|
|
143
|
-
});
|
|
144
|
-
if (!indexFile) {
|
|
145
|
-
logger.warn('Skipping dark mode script injection.');
|
|
180
|
+
// Um projeto já inicializado costuma ter todas elas: sem o filtro, cada `add`
|
|
181
|
+
// pagaria uma revalidação completa da árvore para não instalar nada.
|
|
182
|
+
const missing = await filterInstalledPackages(packages, cwd);
|
|
183
|
+
if (missing.length === 0) {
|
|
184
|
+
logger.debug(`Dependencies already installed: ${packages.join(', ')}`);
|
|
146
185
|
return;
|
|
147
186
|
}
|
|
148
|
-
|
|
149
|
-
try {
|
|
150
|
-
await injectThemeScript(cwd, indexFile);
|
|
151
|
-
await updateProvideZardWithDarkMode(cwd, resolvedConfig);
|
|
152
|
-
darkModeSpinner.succeed('Dark mode configured');
|
|
153
|
-
}
|
|
154
|
-
catch (error) {
|
|
155
|
-
darkModeSpinner.fail('Failed to configure dark mode');
|
|
156
|
-
logger.debug(`Dark mode error: ${error instanceof Error ? error.message : error}`);
|
|
157
|
-
}
|
|
187
|
+
await installPackagesWithRetry(missing, cwd, packageManager, false);
|
|
158
188
|
}
|
|
159
189
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type ComponentMeta } from '../../commands/add/dependency-resolver.js';
|
|
2
|
+
import { type LogRecord } from '../../ui/index.js';
|
|
3
|
+
export interface AddWizardOptions {
|
|
4
|
+
/** Componentes já informados na linha de comando — pulam a seleção. */
|
|
5
|
+
readonly preselected: readonly string[];
|
|
6
|
+
/** Carrega os nomes disponíveis; só é chamado quando há seleção a fazer. */
|
|
7
|
+
loadNames(): Promise<string[]>;
|
|
8
|
+
resolve(names: string[]): Promise<{
|
|
9
|
+
components: ComponentMeta[];
|
|
10
|
+
dependencies: string[];
|
|
11
|
+
}>;
|
|
12
|
+
/** Pula a confirmação (`--yes`). */
|
|
13
|
+
readonly skipConfirmation: boolean;
|
|
14
|
+
installDependencies(packages: string[]): Promise<void>;
|
|
15
|
+
installComponent(component: ComponentMeta): Promise<void>;
|
|
16
|
+
/** Só é chamado quando dark-mode entra na instalação. */
|
|
17
|
+
setupDarkMode(indexHtml: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Onde o index.html deve estar, segundo o tipo de projeto configurado.
|
|
20
|
+
*
|
|
21
|
+
* Um `src/index.html` fixo só existe no app Angular único: num workspace ele
|
|
22
|
+
* está sob `apps/<app>/`, e no Analog é a página de entrada do Vite, na raiz.
|
|
23
|
+
*/
|
|
24
|
+
readonly defaultIndexHtml: string;
|
|
25
|
+
}
|
|
26
|
+
export interface AddWizardResult {
|
|
27
|
+
readonly installed: readonly string[];
|
|
28
|
+
readonly logs: readonly LogRecord[];
|
|
29
|
+
}
|
|
30
|
+
export declare function runAddWizard(options: AddWizardOptions): Promise<AddWizardResult>;
|
|
31
|
+
//# sourceMappingURL=wizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../../src/commands/add/wizard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAuBL,KAAK,SAAS,EAKf,MAAM,kBAAkB,CAAC;AA6B1B,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,4EAA4E;IAC5E,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,aAAa,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC3F,oCAAoC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,gBAAgB,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,yDAAyD;IACzD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;CACrC;AAID,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwKtF"}
|