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
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
import { logger } from '../../utils/logger.js';
|
|
2
|
+
import { arrayRange, lineEndingOf, withImport } from '../../utils/source-file.js';
|
|
2
3
|
import { existsSync } from 'fs';
|
|
3
4
|
import * as fsPromises from 'fs/promises';
|
|
4
5
|
import * as path from 'path';
|
|
5
|
-
const ZARD_PROVIDER_IMPORT = (corePath) => `
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
const ZARD_PROVIDER_IMPORT = (corePath) => `import { provideZard } from '${corePath}/provider/providezard';`;
|
|
7
|
+
const ZARD_PROVIDER_ENTRY = 'provideZard()';
|
|
8
|
+
/**
|
|
9
|
+
* Acrescenta o provider ao fim da lista.
|
|
10
|
+
*
|
|
11
|
+
* O `]` fica na própria linha: a lista é código que o usuário vai ler e editar
|
|
12
|
+
* depois, e emendar o fechamento no último provider deixa o arquivo torto assim
|
|
13
|
+
* que o Prettier do projeto não roda em seguida.
|
|
14
|
+
*/
|
|
15
|
+
function withProvider(content, providers, eol) {
|
|
16
|
+
const body = providers.body.replace(/\s+$/, '');
|
|
17
|
+
const entries = body.trim() === '' ? '' : `${body.endsWith(',') ? body : `${body},`}`;
|
|
18
|
+
return (content.slice(0, providers.open) +
|
|
19
|
+
`[${entries}${eol} ${ZARD_PROVIDER_ENTRY},${eol} ]` +
|
|
20
|
+
content.slice(providers.close + 1));
|
|
21
|
+
}
|
|
9
22
|
/**
|
|
10
23
|
* Asynchronously reads, modifies, and writes the Angular application configuration file.
|
|
11
24
|
* @returns {Promise<void>} A promise that resolves when the file operation is complete.
|
|
@@ -18,55 +31,20 @@ export async function updateAngularConfig(cwd, config) {
|
|
|
18
31
|
}
|
|
19
32
|
try {
|
|
20
33
|
await fsPromises.access(appConfigPath);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
let match;
|
|
27
|
-
while ((match = importRegex.exec(content)) !== null) {
|
|
28
|
-
lastImportMatch = match;
|
|
29
|
-
}
|
|
30
|
-
if (lastImportMatch && lastImportMatch.index) {
|
|
31
|
-
const insertionIndex = lastImportMatch.index + lastImportMatch[0].length;
|
|
32
|
-
content =
|
|
33
|
-
content.slice(0, insertionIndex) + ZARD_PROVIDER_IMPORT(config.aliases.core) + content.slice(insertionIndex);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
content = ZARD_PROVIDER_IMPORT(config.aliases.core) + content;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
logger.warn('Import statement already exists. Skipping.');
|
|
41
|
-
}
|
|
42
|
-
// Add the provider to the providers array
|
|
43
|
-
const providersRegex = /providers:\s*\[([^\]]*?)\]/s;
|
|
44
|
-
if (providersRegex.test(content)) {
|
|
45
|
-
content = content.replace(providersRegex, (match, providersContent) => {
|
|
46
|
-
const entryToCheck = ZARD_PROVIDER_ENTRY.replace(/,$/, '').trim();
|
|
47
|
-
if (providersContent.includes(entryToCheck)) {
|
|
48
|
-
logger.warn('Provider already exists in the list. Skipping.');
|
|
49
|
-
return match;
|
|
50
|
-
}
|
|
51
|
-
let newProvidersContent;
|
|
52
|
-
const trimmedContent = providersContent.trim();
|
|
53
|
-
if (trimmedContent === '') {
|
|
54
|
-
newProvidersContent = `\n ${ZARD_PROVIDER_ENTRY.trim().replace(/,$/, '')}\n `;
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
const contentWithTrailingComma = trimmedContent.endsWith(',')
|
|
58
|
-
? providersContent
|
|
59
|
-
: providersContent.trimEnd() + ',';
|
|
60
|
-
newProvidersContent = `${contentWithTrailingComma}\n ${ZARD_PROVIDER_ENTRY}`;
|
|
61
|
-
}
|
|
62
|
-
return `providers: [${newProvidersContent.replace(/,\s*$/, ',')}]`;
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
34
|
+
const original = await fsPromises.readFile(appConfigPath, 'utf8');
|
|
35
|
+
const eol = lineEndingOf(original);
|
|
36
|
+
const content = withImport(original, ZARD_PROVIDER_IMPORT(config.aliases.core));
|
|
37
|
+
const providers = arrayRange(content, 'providers');
|
|
38
|
+
if (!providers) {
|
|
66
39
|
logger.error('Could not find the "providers: [...]" array in app.config.ts. The file structure may be unsupported.');
|
|
67
40
|
return;
|
|
68
41
|
}
|
|
69
|
-
|
|
42
|
+
if (providers.body.includes(ZARD_PROVIDER_ENTRY)) {
|
|
43
|
+
logger.warn('Provider already exists in the list. Skipping.');
|
|
44
|
+
await fsPromises.writeFile(appConfigPath, content, 'utf8');
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
await fsPromises.writeFile(appConfigPath, withProvider(content, providers, eol), 'utf8');
|
|
70
48
|
}
|
|
71
49
|
catch (e) {
|
|
72
50
|
if (e && typeof e === 'object' && 'code' in e && e.code === 'ENOENT') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-angular-config.js","sourceRoot":"","sources":["../../../src/commands/init/update-angular-config.ts"],"names":[],"mappings":"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,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"update-angular-config.js","sourceRoot":"","sources":["../../../src/commands/init/update-angular-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function findViteConfig(cwd: string): string | null;
|
|
2
|
+
/**
|
|
3
|
+
* Registra o Tailwind como plugin do Vite.
|
|
4
|
+
*
|
|
5
|
+
* No Analog quem compila é o Vite, não o build do Angular — um `.postcssrc.json`
|
|
6
|
+
* ali não é lido por ninguém, e sem o plugin o `@import 'tailwindcss'` que o
|
|
7
|
+
* tema escreve no CSS global não gera utilitário nenhum.
|
|
8
|
+
*/
|
|
9
|
+
export declare function setupVitePlugin(cwd: string): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=vite-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-setup.d.ts","sourceRoot":"","sources":["../../../src/commands/init/vite-setup.ts"],"names":[],"mappings":"AAYA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEzD;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBhE"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { logger } from '../../utils/logger.js';
|
|
2
|
+
import { arrayRange, lineEndingOf, withImport } from '../../utils/source-file.js';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
5
|
+
import * as path from 'node:path';
|
|
6
|
+
const TAILWIND_IMPORT = "import tailwindcss from '@tailwindcss/vite';";
|
|
7
|
+
const TAILWIND_PLUGIN = 'tailwindcss()';
|
|
8
|
+
/** Os nomes que o Vite aceita, na ordem em que ele próprio procura. */
|
|
9
|
+
const CONFIG_FILES = ['vite.config.ts', 'vite.config.mts', 'vite.config.js', 'vite.config.mjs'];
|
|
10
|
+
export function findViteConfig(cwd) {
|
|
11
|
+
return CONFIG_FILES.map(name => path.join(cwd, name)).find(existsSync) ?? null;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Registra o Tailwind como plugin do Vite.
|
|
15
|
+
*
|
|
16
|
+
* No Analog quem compila é o Vite, não o build do Angular — um `.postcssrc.json`
|
|
17
|
+
* ali não é lido por ninguém, e sem o plugin o `@import 'tailwindcss'` que o
|
|
18
|
+
* tema escreve no CSS global não gera utilitário nenhum.
|
|
19
|
+
*/
|
|
20
|
+
export async function setupVitePlugin(cwd) {
|
|
21
|
+
const configPath = findViteConfig(cwd);
|
|
22
|
+
if (!configPath) {
|
|
23
|
+
logger.warn('vite.config.ts not found; add the @tailwindcss/vite plugin manually.');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const original = await readFile(configPath, 'utf8');
|
|
27
|
+
if (original.includes('@tailwindcss/vite')) {
|
|
28
|
+
logger.info('Tailwind is already registered as a Vite plugin. Skipping.');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const withPlugin = registerPlugin(withImport(original, TAILWIND_IMPORT), lineEndingOf(original));
|
|
32
|
+
if (withPlugin === null) {
|
|
33
|
+
logger.warn(`Could not find the "plugins: [...]" array in ${path.basename(configPath)}; add tailwindcss() manually.`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
await writeFile(configPath, withPlugin, 'utf8');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Acrescenta `tailwindcss()` à lista de plugins.
|
|
40
|
+
*
|
|
41
|
+
* O plugin entra no fim: a ordem importa para o Vite, e o do Analog precisa
|
|
42
|
+
* processar os arquivos Angular antes que o Tailwind varra as classes.
|
|
43
|
+
*/
|
|
44
|
+
function registerPlugin(content, eol) {
|
|
45
|
+
const plugins = arrayRange(content, 'plugins');
|
|
46
|
+
if (!plugins)
|
|
47
|
+
return null;
|
|
48
|
+
if (plugins.body.includes(TAILWIND_PLUGIN))
|
|
49
|
+
return content;
|
|
50
|
+
// A indentação dos itens existentes é a que o arquivo já usa; repeti-la evita
|
|
51
|
+
// que a linha nova destoe do resto quando não há Prettier depois.
|
|
52
|
+
const indent = /\n([ \t]+)\S/.exec(plugins.body)?.[1] ?? ' ';
|
|
53
|
+
const closingIndent = indent.slice(0, Math.max(0, indent.length - 2));
|
|
54
|
+
const trimmed = plugins.body.replace(/\s+$/, '');
|
|
55
|
+
const entries = trimmed.trim() ? `${trimmed.endsWith(',') ? trimmed : `${trimmed},`}` : '';
|
|
56
|
+
return (content.slice(0, plugins.open) +
|
|
57
|
+
`[${entries}${eol}${indent}${TAILWIND_PLUGIN},${eol}${closingIndent}]` +
|
|
58
|
+
content.slice(plugins.close + 1));
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=vite-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-setup.js","sourceRoot":"","sources":["../../../src/commands/init/vite-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type ProjectKind } from '../../commands/init/project-kind.js';
|
|
2
|
+
import { type InitStep } from '../../commands/init/steps.js';
|
|
3
|
+
import { type LogRecord } from '../../ui/index.js';
|
|
4
|
+
import { type Config } from '../../utils/config.js';
|
|
5
|
+
import { type ProjectInfo } from '../../utils/get-project-info.js';
|
|
6
|
+
export interface InitWizardOptions {
|
|
7
|
+
readonly cwd: string;
|
|
8
|
+
readonly projectInfo: ProjectInfo;
|
|
9
|
+
readonly packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun';
|
|
10
|
+
readonly isReInitializing: boolean;
|
|
11
|
+
/** Pula a confirmação final (`--yes`). */
|
|
12
|
+
readonly skipConfirmation: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* O tipo pedido em `--type`, se houver.
|
|
15
|
+
*
|
|
16
|
+
* A pergunta continua sendo feita — a flag só posiciona o cursor no que o
|
|
17
|
+
* usuário já disse querer, em vez de deixá-lo procurar na lista de novo.
|
|
18
|
+
*/
|
|
19
|
+
readonly presetKind?: ProjectKind;
|
|
20
|
+
/** O projeto pedido em `--project`, pelo mesmo motivo. */
|
|
21
|
+
readonly presetProjectRoot?: string;
|
|
22
|
+
/** Etapas de execução, montadas só quando o config está pronto. */
|
|
23
|
+
buildSteps(config: Config): InitStep[];
|
|
24
|
+
}
|
|
25
|
+
export interface InitWizardResult {
|
|
26
|
+
readonly config: Config;
|
|
27
|
+
readonly logs: readonly LogRecord[];
|
|
28
|
+
}
|
|
29
|
+
export declare function runInitWizard(options: InitWizardOptions): Promise<InitWizardResult>;
|
|
30
|
+
//# sourceMappingURL=wizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../../src/commands/init/wizard.ts"],"names":[],"mappings":"AACA,OAAO,EAAmD,KAAK,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACvH,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAwBL,KAAK,SAAS,EAKf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,gCAAgC,CAAC;AAuMzF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IACzD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,0CAA0C;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,mEAAmE;IACnE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;CACrC;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqVzF"}
|