zard-cli 1.0.0-beta.9 → 1.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -188
- package/commands/add/component-installer.d.ts +4 -1
- package/commands/add/component-installer.d.ts.map +1 -1
- package/commands/add/component-installer.js +33 -5
- 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 +2 -0
- package/commands/add/dark-mode-setup.d.ts.map +1 -1
- package/commands/add/dark-mode-setup.js +5 -11
- package/commands/add/dark-mode-setup.js.map +1 -1
- package/commands/add/dependency-resolver.d.ts +1 -1
- package/commands/add/dependency-resolver.d.ts.map +1 -1
- package/commands/add/dependency-resolver.js +5 -6
- package/commands/add/dependency-resolver.js.map +1 -1
- package/commands/add/index.d.ts.map +1 -1
- package/commands/add/index.js +127 -85
- 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 +59 -56
- package/commands/init/config-prompter.d.ts.map +1 -1
- package/commands/init/config-prompter.js +76 -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 +36 -16
- package/commands/init/dependencies.js.map +1 -1
- package/commands/init/index.d.ts.map +1 -1
- package/commands/init/index.js +132 -86
- 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 +151 -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 -9
- package/commands/init/tailwind-setup.js.map +1 -1
- package/commands/init/theme-loader.d.ts.map +1 -1
- package/commands/init/theme-loader.js +1 -3
- package/commands/init/theme-loader.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 -47
- 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/registry/registry-data.d.ts.map +1 -1
- package/core/registry/registry-data.js +359 -61
- package/core/registry/registry-data.js.map +1 -1
- package/core/themes/theme-definitions.d.ts +5 -5
- package/core/themes/theme-definitions.d.ts.map +1 -1
- package/core/themes/theme-definitions.js +15 -11
- package/core/themes/theme-definitions.js.map +1 -1
- package/index.js +40 -4
- package/index.js.map +1 -1
- package/package.json +58 -61
- 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 +38 -0
- package/ui/engine/terminal/index.d.ts.map +1 -0
- package/ui/engine/terminal/index.js +104 -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 +57 -0
- package/ui/runner.d.ts.map +1 -0
- package/ui/runner.js +119 -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 +48 -69
- package/utils/config.d.ts.map +1 -1
- package/utils/config.js +43 -7
- package/utils/config.js.map +1 -1
- package/utils/errors.d.ts +16 -0
- package/utils/errors.d.ts.map +1 -0
- package/utils/errors.js +31 -0
- package/utils/errors.js.map +1 -0
- package/utils/get-package-info.js +4 -4
- package/utils/get-package-info.js.map +1 -1
- package/utils/get-project-info.d.ts +30 -0
- package/utils/get-project-info.d.ts.map +1 -1
- package/utils/get-project-info.js +195 -6
- package/utils/get-project-info.js.map +1 -1
- package/utils/http-client.d.ts +8 -0
- package/utils/http-client.d.ts.map +1 -0
- package/utils/http-client.js +68 -0
- package/utils/http-client.js.map +1 -0
- package/utils/logger.d.ts +16 -1
- package/utils/logger.d.ts.map +1 -1
- package/utils/logger.js +104 -12
- package/utils/logger.js.map +1 -1
- package/utils/package-manager.d.ts +44 -1
- package/utils/package-manager.d.ts.map +1 -1
- package/utils/package-manager.js +210 -14
- package/utils/package-manager.js.map +1 -1
- package/utils/registry.d.ts +14 -2
- package/utils/registry.d.ts.map +1 -1
- package/utils/registry.js +52 -24
- package/utils/registry.js.map +1 -1
- 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
- package/utils/theme-selector.d.ts +1 -1
- package/utils/theme-selector.d.ts.map +1 -1
- package/utils/theme-selector.js +6 -6
- package/utils/theme-selector.js.map +1 -1
- package/utils/fetch-component.d.ts +0 -3
- package/utils/fetch-component.d.ts.map +0 -1
- package/utils/fetch-component.js +0 -75
- package/utils/fetch-component.js.map +0 -1
package/ui/text-input.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edição de uma linha de texto num campo do wizard.
|
|
3
|
+
*
|
|
4
|
+
* O campo aceitava só duas coisas — digitar no fim e apagar de trás para a
|
|
5
|
+
* frente. Quem quisesse trocar o meio de um alias (`@/shared/components` para
|
|
6
|
+
* `@app/shared/components`) apertava as setas, não via nada acontecer e ficava
|
|
7
|
+
* sem saída a não ser apagar tudo e redigitar. Aqui o cursor é de verdade:
|
|
8
|
+
* anda, insere no meio, apaga para os dois lados.
|
|
9
|
+
*/
|
|
10
|
+
export function startInput(value) {
|
|
11
|
+
return { value, caret: [...value].length, pristine: true };
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Aplica uma tecla ao campo.
|
|
15
|
+
*
|
|
16
|
+
* Devolve `null` quando a tecla não é de edição — `enter` e `escape` pertencem
|
|
17
|
+
* ao fluxo do wizard, e é ele quem decide o que fazer com elas.
|
|
18
|
+
*/
|
|
19
|
+
export function editInput(state, event) {
|
|
20
|
+
const chars = [...state.value];
|
|
21
|
+
const caret = clamp(state.caret, chars.length);
|
|
22
|
+
if (event.ctrl)
|
|
23
|
+
return editWithControl(state, chars, caret, event.key);
|
|
24
|
+
if (event.alt)
|
|
25
|
+
return null;
|
|
26
|
+
if (event.key.length === 1) {
|
|
27
|
+
// A sugestão inteira sai na primeira tecla: quem já sabe o que quer digita
|
|
28
|
+
// direto, sem apagar caractere por caractere o que a CLI propôs.
|
|
29
|
+
if (state.pristine)
|
|
30
|
+
return { value: event.key, caret: 1, pristine: false };
|
|
31
|
+
chars.splice(caret, 0, event.key);
|
|
32
|
+
return { value: chars.join(''), caret: caret + 1, pristine: false };
|
|
33
|
+
}
|
|
34
|
+
switch (event.key) {
|
|
35
|
+
case 'backspace':
|
|
36
|
+
if (caret === 0)
|
|
37
|
+
return { ...state, caret, pristine: false };
|
|
38
|
+
chars.splice(caret - 1, 1);
|
|
39
|
+
return { value: chars.join(''), caret: caret - 1, pristine: false };
|
|
40
|
+
case 'delete':
|
|
41
|
+
if (caret >= chars.length)
|
|
42
|
+
return { ...state, caret, pristine: false };
|
|
43
|
+
chars.splice(caret, 1);
|
|
44
|
+
return { value: chars.join(''), caret, pristine: false };
|
|
45
|
+
case 'left':
|
|
46
|
+
return { ...state, caret: Math.max(0, caret - 1), pristine: false };
|
|
47
|
+
case 'right':
|
|
48
|
+
return { ...state, caret: Math.min(chars.length, caret + 1), pristine: false };
|
|
49
|
+
case 'home':
|
|
50
|
+
return { ...state, caret: 0, pristine: false };
|
|
51
|
+
case 'end':
|
|
52
|
+
return { ...state, caret: chars.length, pristine: false };
|
|
53
|
+
default:
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** Os atalhos de linha que qualquer shell oferece. */
|
|
58
|
+
function editWithControl(state, chars, caret, key) {
|
|
59
|
+
switch (key) {
|
|
60
|
+
case 'u': // limpa até o começo
|
|
61
|
+
return { value: chars.slice(caret).join(''), caret: 0, pristine: false };
|
|
62
|
+
case 'k': // limpa até o fim
|
|
63
|
+
return { value: chars.slice(0, caret).join(''), caret, pristine: false };
|
|
64
|
+
case 'w': {
|
|
65
|
+
// apaga a palavra anterior, incluindo os separadores que a antecedem
|
|
66
|
+
let start = caret;
|
|
67
|
+
while (start > 0 && isSeparator(chars[start - 1]))
|
|
68
|
+
start--;
|
|
69
|
+
while (start > 0 && !isSeparator(chars[start - 1]))
|
|
70
|
+
start--;
|
|
71
|
+
return { value: [...chars.slice(0, start), ...chars.slice(caret)].join(''), caret: start, pristine: false };
|
|
72
|
+
}
|
|
73
|
+
case 'a':
|
|
74
|
+
return { ...state, caret: 0, pristine: false };
|
|
75
|
+
case 'e':
|
|
76
|
+
return { ...state, caret: chars.length, pristine: false };
|
|
77
|
+
default:
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function isSeparator(char) {
|
|
82
|
+
return char === ' ' || char === '/' || char === '\\' || char === '.' || char === '-';
|
|
83
|
+
}
|
|
84
|
+
function clamp(caret, length) {
|
|
85
|
+
return Math.max(0, Math.min(caret, length));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=text-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-input.js","sourceRoot":"","sources":["../../src/ui/text-input.ts"],"names":[],"mappings":"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"}
|
package/ui/theme.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tema da CLI — tokens semânticos consumidos por toda a UI do terminal.
|
|
3
|
+
*
|
|
4
|
+
* A paleta segue a base neutra do ZardUI (zinc) para texto e bordas, com os
|
|
5
|
+
* acentos reservados para estado: primary marca o passo ativo e o cursor,
|
|
6
|
+
* success/warning/danger comunicam o resultado de cada etapa.
|
|
7
|
+
*/
|
|
8
|
+
import { type Theme } from './engine/index.js';
|
|
9
|
+
export declare const zardTheme: Theme;
|
|
10
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/ui/theme.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE5D,eAAO,MAAM,SAAS,EAAE,KAUtB,CAAC"}
|
package/ui/theme.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tema da CLI — tokens semânticos consumidos por toda a UI do terminal.
|
|
3
|
+
*
|
|
4
|
+
* A paleta segue a base neutra do ZardUI (zinc) para texto e bordas, com os
|
|
5
|
+
* acentos reservados para estado: primary marca o passo ativo e o cursor,
|
|
6
|
+
* success/warning/danger comunicam o resultado de cada etapa.
|
|
7
|
+
*/
|
|
8
|
+
import { createTheme } from './engine/index.js';
|
|
9
|
+
export const zardTheme = createTheme({
|
|
10
|
+
primary: '#7c93ff',
|
|
11
|
+
secondary: '#a78bfa',
|
|
12
|
+
success: '#4ade80',
|
|
13
|
+
warning: '#fbbf24',
|
|
14
|
+
danger: '#f87171',
|
|
15
|
+
muted: '#a1a1aa',
|
|
16
|
+
foreground: '#fafafa',
|
|
17
|
+
background: '#09090b',
|
|
18
|
+
border: '#27272a',
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=theme.js.map
|
package/ui/theme.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/ui/theme.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAC;AAE5D,MAAM,CAAC,MAAM,SAAS,GAAU,WAAW,CAAC;IAC1C,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,SAAS;CAClB,CAAC,CAAC"}
|
package/utils/config.d.ts
CHANGED
|
@@ -2,74 +2,52 @@ import { z } from 'zod';
|
|
|
2
2
|
declare const configSchema: z.ZodObject<{
|
|
3
3
|
$schema: z.ZodOptional<z.ZodString>;
|
|
4
4
|
appConfigFile: z.ZodDefault<z.ZodString>;
|
|
5
|
-
style: z.ZodDefault<z.ZodEnum<
|
|
6
|
-
|
|
5
|
+
style: z.ZodDefault<z.ZodEnum<{
|
|
6
|
+
css: "css";
|
|
7
|
+
}>>;
|
|
8
|
+
projectType: z.ZodDefault<z.ZodEnum<{
|
|
9
|
+
angular: "angular";
|
|
10
|
+
"angular-library": "angular-library";
|
|
11
|
+
nx: "nx";
|
|
12
|
+
"nx-library": "nx-library";
|
|
13
|
+
analog: "analog";
|
|
14
|
+
}>>;
|
|
15
|
+
packageManager: z.ZodDefault<z.ZodEnum<{
|
|
16
|
+
npm: "npm";
|
|
17
|
+
yarn: "yarn";
|
|
18
|
+
pnpm: "pnpm";
|
|
19
|
+
bun: "bun";
|
|
20
|
+
}>>;
|
|
7
21
|
registryUrl: z.ZodOptional<z.ZodString>;
|
|
8
22
|
tailwind: z.ZodDefault<z.ZodObject<{
|
|
9
23
|
css: z.ZodDefault<z.ZodString>;
|
|
10
24
|
baseColor: z.ZodDefault<z.ZodString>;
|
|
11
|
-
},
|
|
12
|
-
css?: string;
|
|
13
|
-
baseColor?: string;
|
|
14
|
-
}, {
|
|
15
|
-
css?: string;
|
|
16
|
-
baseColor?: string;
|
|
17
|
-
}>>;
|
|
25
|
+
}, z.core.$strip>>;
|
|
18
26
|
baseUrl: z.ZodDefault<z.ZodString>;
|
|
19
27
|
aliases: z.ZodDefault<z.ZodObject<{
|
|
20
28
|
components: z.ZodDefault<z.ZodString>;
|
|
21
29
|
utils: z.ZodDefault<z.ZodString>;
|
|
22
30
|
core: z.ZodDefault<z.ZodString>;
|
|
23
31
|
services: z.ZodDefault<z.ZodString>;
|
|
24
|
-
},
|
|
25
|
-
|
|
26
|
-
utils?: string;
|
|
27
|
-
core?: string;
|
|
28
|
-
services?: string;
|
|
29
|
-
}, {
|
|
30
|
-
components?: string;
|
|
31
|
-
utils?: string;
|
|
32
|
-
core?: string;
|
|
33
|
-
services?: string;
|
|
34
|
-
}>>;
|
|
35
|
-
}, "strip", z.ZodTypeAny, {
|
|
36
|
-
$schema?: string;
|
|
37
|
-
appConfigFile?: string;
|
|
38
|
-
style?: "css";
|
|
39
|
-
packageManager?: "npm" | "yarn" | "pnpm" | "bun";
|
|
40
|
-
registryUrl?: string;
|
|
41
|
-
tailwind?: {
|
|
42
|
-
css?: string;
|
|
43
|
-
baseColor?: string;
|
|
44
|
-
};
|
|
45
|
-
baseUrl?: string;
|
|
46
|
-
aliases?: {
|
|
47
|
-
components?: string;
|
|
48
|
-
utils?: string;
|
|
49
|
-
core?: string;
|
|
50
|
-
services?: string;
|
|
51
|
-
};
|
|
52
|
-
}, {
|
|
53
|
-
$schema?: string;
|
|
54
|
-
appConfigFile?: string;
|
|
55
|
-
style?: "css";
|
|
56
|
-
packageManager?: "npm" | "yarn" | "pnpm" | "bun";
|
|
57
|
-
registryUrl?: string;
|
|
58
|
-
tailwind?: {
|
|
59
|
-
css?: string;
|
|
60
|
-
baseColor?: string;
|
|
61
|
-
};
|
|
62
|
-
baseUrl?: string;
|
|
63
|
-
aliases?: {
|
|
64
|
-
components?: string;
|
|
65
|
-
utils?: string;
|
|
66
|
-
core?: string;
|
|
67
|
-
services?: string;
|
|
68
|
-
};
|
|
69
|
-
}>;
|
|
32
|
+
}, z.core.$strip>>;
|
|
33
|
+
}, z.core.$strip>;
|
|
70
34
|
export type Config = z.infer<typeof configSchema>;
|
|
71
35
|
export declare const DEFAULT_CONFIG: Config;
|
|
72
36
|
export declare function getConfig(cwd: string): Promise<Config | null>;
|
|
37
|
+
/**
|
|
38
|
+
* Separa o prefixo do alias do caminho que vem depois dele.
|
|
39
|
+
*
|
|
40
|
+
* `@`, `@app`, `~` — o nome não importa: o prefixo é um apelido para `baseUrl`,
|
|
41
|
+
* e o resto é o caminho dentro do projeto. Tratar só `@/` fazia um alias como
|
|
42
|
+
* `@app/components` escapar da substituição e virar uma pasta literal chamada
|
|
43
|
+
* `@app` na raiz, fora de qualquer coisa que o tsconfig mapeie.
|
|
44
|
+
*/
|
|
45
|
+
export declare function splitAlias(alias: string): {
|
|
46
|
+
prefix: string;
|
|
47
|
+
rest: string;
|
|
48
|
+
};
|
|
49
|
+
/** O prefixo do alias, com `/*` — a chave que o tsconfig precisa mapear. */
|
|
50
|
+
export declare function aliasPattern(alias: string): string;
|
|
73
51
|
export declare function resolveAliasToPath(alias: string, baseUrl: string): string;
|
|
74
52
|
export declare function resolveConfigPaths(cwd: string, config: Config): Promise<{
|
|
75
53
|
resolvedPaths: {
|
|
@@ -80,22 +58,23 @@ export declare function resolveConfigPaths(cwd: string, config: Config): Promise
|
|
|
80
58
|
core: string;
|
|
81
59
|
services: string;
|
|
82
60
|
};
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
packageManager
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
baseColor?: string;
|
|
61
|
+
appConfigFile: string;
|
|
62
|
+
style: "css";
|
|
63
|
+
projectType: "angular" | "angular-library" | "nx" | "nx-library" | "analog";
|
|
64
|
+
packageManager: "npm" | "yarn" | "pnpm" | "bun";
|
|
65
|
+
tailwind: {
|
|
66
|
+
css: string;
|
|
67
|
+
baseColor: string;
|
|
91
68
|
};
|
|
92
|
-
baseUrl
|
|
93
|
-
aliases
|
|
94
|
-
components
|
|
95
|
-
utils
|
|
96
|
-
core
|
|
97
|
-
services
|
|
69
|
+
baseUrl: string;
|
|
70
|
+
aliases: {
|
|
71
|
+
components: string;
|
|
72
|
+
utils: string;
|
|
73
|
+
core: string;
|
|
74
|
+
services: string;
|
|
98
75
|
};
|
|
76
|
+
$schema?: string;
|
|
77
|
+
registryUrl?: string;
|
|
99
78
|
}>;
|
|
100
79
|
export {};
|
|
101
80
|
//# sourceMappingURL=config.d.ts.map
|
package/utils/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgBxB,QAAA,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgBxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BhB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,MAgB5B,CAAC;AAEF,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBnE;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAO1E;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKzE;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;GAcnE"}
|
package/utils/config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ConfigError } from '../utils/errors.js';
|
|
2
2
|
import { access, readFile } from 'node:fs/promises';
|
|
3
3
|
import * as path from 'node:path';
|
|
4
4
|
import { z } from 'zod';
|
|
@@ -19,6 +19,9 @@ const configSchema = z.object({
|
|
|
19
19
|
$schema: z.string().optional(),
|
|
20
20
|
appConfigFile: z.string().default('src/app/app.config.ts'),
|
|
21
21
|
style: z.enum(['css']).default('css'),
|
|
22
|
+
// Ausente nos components.json escritos antes do menu de tipo de projeto;
|
|
23
|
+
// aplicação Angular é o que eles descrevem.
|
|
24
|
+
projectType: z.enum(['angular', 'angular-library', 'nx', 'nx-library', 'analog']).default('angular'),
|
|
22
25
|
packageManager: z.enum(['npm', 'yarn', 'pnpm', 'bun']).default('npm'),
|
|
23
26
|
registryUrl: z.string().optional(),
|
|
24
27
|
tailwind: z
|
|
@@ -26,7 +29,7 @@ const configSchema = z.object({
|
|
|
26
29
|
css: z.string().default('src/styles.css'),
|
|
27
30
|
baseColor: z.string().default('slate'),
|
|
28
31
|
})
|
|
29
|
-
.default({}),
|
|
32
|
+
.default({ css: 'src/styles.css', baseColor: 'slate' }),
|
|
30
33
|
baseUrl: z.string().default('src/app'),
|
|
31
34
|
aliases: z
|
|
32
35
|
.object({
|
|
@@ -35,10 +38,16 @@ const configSchema = z.object({
|
|
|
35
38
|
core: z.string().default('@/shared/core'),
|
|
36
39
|
services: z.string().default('@/shared/services'),
|
|
37
40
|
})
|
|
38
|
-
.default({
|
|
41
|
+
.default({
|
|
42
|
+
components: '@/shared/components',
|
|
43
|
+
utils: '@/shared/utils',
|
|
44
|
+
core: '@/shared/core',
|
|
45
|
+
services: '@/shared/services',
|
|
46
|
+
}),
|
|
39
47
|
});
|
|
40
48
|
export const DEFAULT_CONFIG = {
|
|
41
49
|
style: 'css',
|
|
50
|
+
projectType: 'angular',
|
|
42
51
|
appConfigFile: 'src/app/app.config.ts',
|
|
43
52
|
packageManager: 'npm',
|
|
44
53
|
tailwind: {
|
|
@@ -60,15 +69,42 @@ export async function getConfig(cwd) {
|
|
|
60
69
|
}
|
|
61
70
|
try {
|
|
62
71
|
const configJson = await readJson(configPath);
|
|
63
|
-
|
|
72
|
+
const config = configSchema.parse(configJson);
|
|
73
|
+
if (config.registryUrl) {
|
|
74
|
+
const { validateRegistryUrl } = await import('../utils/registry.js');
|
|
75
|
+
validateRegistryUrl(config.registryUrl);
|
|
76
|
+
}
|
|
77
|
+
return config;
|
|
64
78
|
}
|
|
65
79
|
catch (error) {
|
|
66
|
-
|
|
67
|
-
|
|
80
|
+
if (error instanceof ConfigError)
|
|
81
|
+
throw error;
|
|
82
|
+
throw new ConfigError('Invalid configuration file: components.json');
|
|
68
83
|
}
|
|
69
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Separa o prefixo do alias do caminho que vem depois dele.
|
|
87
|
+
*
|
|
88
|
+
* `@`, `@app`, `~` — o nome não importa: o prefixo é um apelido para `baseUrl`,
|
|
89
|
+
* e o resto é o caminho dentro do projeto. Tratar só `@/` fazia um alias como
|
|
90
|
+
* `@app/components` escapar da substituição e virar uma pasta literal chamada
|
|
91
|
+
* `@app` na raiz, fora de qualquer coisa que o tsconfig mapeie.
|
|
92
|
+
*/
|
|
93
|
+
export function splitAlias(alias) {
|
|
94
|
+
const clean = alias.replace(/\/+$/, '');
|
|
95
|
+
const separator = clean.indexOf('/');
|
|
96
|
+
if (separator === -1)
|
|
97
|
+
return { prefix: clean, rest: '' };
|
|
98
|
+
return { prefix: clean.slice(0, separator), rest: clean.slice(separator + 1) };
|
|
99
|
+
}
|
|
100
|
+
/** O prefixo do alias, com `/*` — a chave que o tsconfig precisa mapear. */
|
|
101
|
+
export function aliasPattern(alias) {
|
|
102
|
+
return `${splitAlias(alias).prefix}/*`;
|
|
103
|
+
}
|
|
70
104
|
export function resolveAliasToPath(alias, baseUrl) {
|
|
71
|
-
|
|
105
|
+
const { rest } = splitAlias(alias);
|
|
106
|
+
const base = baseUrl.replace(/\/+$/, '');
|
|
107
|
+
return rest ? `${base}/${rest}` : base;
|
|
72
108
|
}
|
|
73
109
|
export async function resolveConfigPaths(cwd, config) {
|
|
74
110
|
const { baseUrl, aliases } = config;
|
package/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class CliError extends Error {
|
|
2
|
+
readonly code: string;
|
|
3
|
+
constructor(message: string, code: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class NetworkError extends CliError {
|
|
6
|
+
readonly url: string;
|
|
7
|
+
constructor(message: string, url: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class ConfigError extends CliError {
|
|
10
|
+
constructor(message: string);
|
|
11
|
+
}
|
|
12
|
+
export declare class InstallError extends CliError {
|
|
13
|
+
readonly component: string;
|
|
14
|
+
constructor(message: string, component: string);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAS,SAAQ,KAAK;aAGf,IAAI,EAAE,MAAM;gBAD5B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM;CAK/B;AAED,qBAAa,YAAa,SAAQ,QAAQ;aAGtB,GAAG,EAAE,MAAM;gBAD3B,OAAO,EAAE,MAAM,EACC,GAAG,EAAE,MAAM;CAK9B;AAED,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,QAAQ;aAGtB,SAAS,EAAE,MAAM;gBADjC,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM;CAKpC"}
|
package/utils/errors.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export class CliError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
constructor(message, code) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.code = code;
|
|
6
|
+
this.name = 'CliError';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class NetworkError extends CliError {
|
|
10
|
+
url;
|
|
11
|
+
constructor(message, url) {
|
|
12
|
+
super(message, 'NETWORK_ERROR');
|
|
13
|
+
this.url = url;
|
|
14
|
+
this.name = 'NetworkError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class ConfigError extends CliError {
|
|
18
|
+
constructor(message) {
|
|
19
|
+
super(message, 'CONFIG_ERROR');
|
|
20
|
+
this.name = 'ConfigError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class InstallError extends CliError {
|
|
24
|
+
component;
|
|
25
|
+
constructor(message, component) {
|
|
26
|
+
super(message, 'INSTALL_ERROR');
|
|
27
|
+
this.component = component;
|
|
28
|
+
this.name = 'InstallError';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGf;IAFlB,YACE,OAAe,EACC,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IAGtB;IAFlB,YACE,OAAe,EACC,GAAW;QAE3B,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAFhB,QAAG,GAAH,GAAG,CAAQ;QAG3B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IAGtB;IAFlB,YACE,OAAe,EACC,SAAiB;QAEjC,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAFhB,cAAS,GAAT,SAAS,CAAQ;QAGjC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { APP_VERSION } from '../constants/app.constants.js';
|
|
2
|
-
import { fileURLToPath } from 'url';
|
|
3
2
|
import { access, readFile } from 'node:fs/promises';
|
|
4
3
|
import * as path from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
5
|
async function pathExists(filePath) {
|
|
6
6
|
try {
|
|
7
7
|
await access(filePath);
|
|
@@ -23,7 +23,7 @@ export async function getPackageInfo() {
|
|
|
23
23
|
path.resolve(__dirname, '../../../package.json'),
|
|
24
24
|
path.resolve(__dirname, '../../package.json'),
|
|
25
25
|
path.resolve(__dirname, '../../../../package.json'),
|
|
26
|
-
path.resolve(__dirname, '../node_modules
|
|
26
|
+
path.resolve(__dirname, '../node_modules/zard-cli/package.json'),
|
|
27
27
|
];
|
|
28
28
|
for (const packageJsonPath of possiblePaths) {
|
|
29
29
|
try {
|
|
@@ -37,14 +37,14 @@ export async function getPackageInfo() {
|
|
|
37
37
|
}
|
|
38
38
|
// Fallback to hardcoded info if package.json is not found
|
|
39
39
|
return {
|
|
40
|
-
name: '
|
|
40
|
+
name: 'zard-cli',
|
|
41
41
|
version: APP_VERSION,
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
catch (error) {
|
|
45
45
|
// Ultimate fallback
|
|
46
46
|
return {
|
|
47
|
-
name: '
|
|
47
|
+
name: 'zard-cli',
|
|
48
48
|
version: APP_VERSION,
|
|
49
49
|
};
|
|
50
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-package-info.js","sourceRoot":"","sources":["../../src/utils/get-package-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"get-package-info.js","sourceRoot":"","sources":["../../src/utils/get-package-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/D,MAAM,aAAa,GAAG;YACpB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,0BAA0B,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,uCAAuC,CAAC;SACjE,CAAC;QAEF,KAAK,MAAM,eAAe,IAAI,aAAa,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,IAAI,MAAM,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;oBACtC,OAAO,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,WAAW;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,oBAAoB;QACpB,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,WAAW;SACrB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,9 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Qual toolchain compila o projeto.
|
|
3
|
+
*
|
|
4
|
+
* Analog troca o build do Angular por Vite, e com isso troca também onde o
|
|
5
|
+
* Tailwind é configurado: plugin no `vite.config.ts` em vez de `.postcssrc.json`.
|
|
6
|
+
*/
|
|
7
|
+
export type ProjectFlavor = 'angular' | 'analog';
|
|
8
|
+
/** Um projeto declarado no workspace — `angular.json` ou `project.json` do Nx. */
|
|
9
|
+
export type WorkspaceProject = {
|
|
10
|
+
name: string;
|
|
11
|
+
projectType: 'application' | 'library';
|
|
12
|
+
/** Raiz do projeto, relativa ao workspace (`apps/web`, ou `''` no app único). */
|
|
13
|
+
root: string;
|
|
14
|
+
sourceRoot: string;
|
|
15
|
+
flavor: ProjectFlavor;
|
|
16
|
+
/** Os `styles` do target de build, relativos ao workspace. */
|
|
17
|
+
styles: string[];
|
|
18
|
+
/** O `index` do target de build, quando declarado. */
|
|
19
|
+
index: string | null;
|
|
20
|
+
};
|
|
1
21
|
export type ProjectInfo = {
|
|
2
22
|
framework: 'angular' | 'unknown';
|
|
23
|
+
/** Onde o package.json foi encontrado — a raiz do workspace. */
|
|
24
|
+
root: string;
|
|
25
|
+
/** Quem gerencia o workspace: define onde os projetos e os paths do TS vivem. */
|
|
26
|
+
workspace: 'angular' | 'nx';
|
|
3
27
|
hasTypeScript: boolean;
|
|
4
28
|
hasTailwind: boolean;
|
|
5
29
|
hasNx: boolean;
|
|
30
|
+
hasAnalog: boolean;
|
|
31
|
+
/** O tsconfig que guarda `compilerOptions.paths` — `tsconfig.base.json` no Nx. */
|
|
32
|
+
tsconfigFile: string;
|
|
6
33
|
angularVersion: string | null;
|
|
34
|
+
angularVersionRaw: string | null;
|
|
35
|
+
/** O que o workspace declara, na ordem em que aparece. Vazio se não houver. */
|
|
36
|
+
projects: WorkspaceProject[];
|
|
7
37
|
};
|
|
8
38
|
export declare function getProjectInfo(cwd: string): Promise<ProjectInfo>;
|
|
9
39
|
//# sourceMappingURL=get-project-info.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-project-info.d.ts","sourceRoot":"","sources":["../../src/utils/get-project-info.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"get-project-info.d.ts","sourceRoot":"","sources":["../../src/utils/get-project-info.ts"],"names":[],"mappings":"AAyBA;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEjD,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,aAAa,GAAG,SAAS,CAAC;IACvC,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,sDAAsD;IACtD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,kFAAkF;IAClF,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,+EAA+E;IAC/E,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B,CAAC;AAuMF,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA4CtE"}
|