create-dev-to 1.0.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/dist/index.js ADDED
@@ -0,0 +1,590 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import { spawn, execSync } from 'node:child_process';
5
+ import process from 'node:process';
6
+ import { randomUUID } from 'node:crypto';
7
+ import readline from 'node:readline';
8
+ import * as clack from '@clack/prompts';
9
+ import { red, cyan, yellow, green, dim } from 'kolorist';
10
+ import { InstallLogger } from './installLogger.js';
11
+ import { displayInstallSummary } from './visualComponents.js';
12
+ const PACKAGE_MANAGERS = ['pnpm', 'npm', 'yarn', 'bun'];
13
+ const FRAMEWORKS = [
14
+ {
15
+ name: 'react',
16
+ display: 'React',
17
+ color: cyan,
18
+ supported: true,
19
+ },
20
+ {
21
+ name: 'vue',
22
+ display: 'Vue',
23
+ color: green,
24
+ supported: false,
25
+ },
26
+ {
27
+ name: 'svelte',
28
+ display: 'Svelte',
29
+ color: red,
30
+ supported: false,
31
+ },
32
+ {
33
+ name: 'solid',
34
+ display: 'Solid',
35
+ color: cyan,
36
+ supported: false,
37
+ },
38
+ {
39
+ name: 'preact',
40
+ display: 'Preact',
41
+ color: cyan,
42
+ supported: false,
43
+ },
44
+ {
45
+ name: 'lit',
46
+ display: 'Lit',
47
+ color: yellow,
48
+ supported: false,
49
+ },
50
+ {
51
+ name: 'qwik',
52
+ display: 'Qwik',
53
+ color: cyan,
54
+ supported: false,
55
+ },
56
+ {
57
+ name: 'vanilla',
58
+ display: 'Vanilla',
59
+ color: yellow,
60
+ supported: false,
61
+ },
62
+ ];
63
+ const REACT_TEMPLATES = [
64
+ {
65
+ name: 'react-ts',
66
+ display: 'TypeScript',
67
+ color: cyan,
68
+ },
69
+ {
70
+ name: 'react-swc-ts',
71
+ display: 'TypeScript + SWC',
72
+ color: cyan,
73
+ },
74
+ {
75
+ name: 'react',
76
+ display: 'JavaScript',
77
+ color: yellow,
78
+ },
79
+ {
80
+ name: 'react-swc',
81
+ display: 'JavaScript + SWC',
82
+ color: yellow,
83
+ },
84
+ ];
85
+ const TEMPLATE_SOURCES = [
86
+ {
87
+ name: 'GitHub',
88
+ getCloneCommand: (template, targetDir, packageManager) => {
89
+ const pmCommand = getDegitCommandForPM(packageManager);
90
+ return {
91
+ command: pmCommand.command,
92
+ args: pmCommand.args('degit', [`vitejs/vite/packages/create-vite/template-${template}`, targetDir, '--force']),
93
+ };
94
+ },
95
+ },
96
+ {
97
+ name: 'Gitee Mirror (国内镜像)',
98
+ isGitBased: true,
99
+ getCloneCommand: (_template, targetDir) => ({
100
+ command: 'git',
101
+ args: [
102
+ 'clone',
103
+ '--depth',
104
+ '1',
105
+ 'https://gitee.com/mirrors/ViteJS.git',
106
+ targetDir,
107
+ ],
108
+ }),
109
+ },
110
+ ];
111
+ const PM_CONFIGS = {
112
+ pnpm: {
113
+ install: 'pnpm install',
114
+ dev: 'pnpm dev',
115
+ },
116
+ npm: {
117
+ install: 'npm install',
118
+ dev: 'npm run dev',
119
+ },
120
+ yarn: {
121
+ install: 'yarn',
122
+ dev: 'yarn dev',
123
+ },
124
+ bun: {
125
+ install: 'bun install',
126
+ dev: 'bun dev',
127
+ },
128
+ };
129
+ function checkCommandExists(command) {
130
+ try {
131
+ execSync(`${command} --version`, { stdio: 'ignore' });
132
+ return true;
133
+ }
134
+ catch {
135
+ return false;
136
+ }
137
+ }
138
+ function detectPackageManager(userAgent) {
139
+ for (const pm of PACKAGE_MANAGERS) {
140
+ if (userAgent.includes(pm))
141
+ return pm;
142
+ }
143
+ for (const pm of PACKAGE_MANAGERS) {
144
+ if (checkCommandExists(pm))
145
+ return pm;
146
+ }
147
+ return null;
148
+ }
149
+ function formatTargetDir(targetDir) {
150
+ return targetDir?.trim().replace(/\/+$/g, '');
151
+ }
152
+ function isEmpty(path) {
153
+ const files = fs.readdirSync(path);
154
+ return files.length === 0 || (files.length === 1 && files[0] === '.git');
155
+ }
156
+ function toValidPackageName(projectName) {
157
+ return projectName
158
+ .trim()
159
+ .toLowerCase()
160
+ .replace(/\s+/g, '-')
161
+ .replace(/^[._]/, '')
162
+ .replace(/[^a-z\d\-~]+/g, '-');
163
+ }
164
+ function emptyDir(dir) {
165
+ if (!fs.existsSync(dir)) {
166
+ return;
167
+ }
168
+ for (const file of fs.readdirSync(dir)) {
169
+ if (file === '.git') {
170
+ continue;
171
+ }
172
+ fs.rmSync(path.resolve(dir, file), { recursive: true, force: true });
173
+ }
174
+ }
175
+ function copyDir(srcDir, destDir) {
176
+ fs.mkdirSync(destDir, { recursive: true });
177
+ for (const file of fs.readdirSync(srcDir)) {
178
+ const srcFile = path.resolve(srcDir, file);
179
+ const destFile = path.resolve(destDir, file);
180
+ copy(srcFile, destFile);
181
+ }
182
+ }
183
+ function copy(src, dest) {
184
+ const stat = fs.statSync(src);
185
+ if (stat.isDirectory()) {
186
+ copyDir(src, dest);
187
+ }
188
+ else {
189
+ fs.copyFileSync(src, dest);
190
+ }
191
+ }
192
+ function run(command, args, cwd) {
193
+ return new Promise((resolve, reject) => {
194
+ const child = spawn(command, args, { cwd, stdio: 'inherit' });
195
+ child.on('close', (code) => {
196
+ if (code !== 0) {
197
+ reject(new Error(`${command} ${args.join(' ')} failed`));
198
+ return;
199
+ }
200
+ resolve();
201
+ });
202
+ child.on('error', reject);
203
+ });
204
+ }
205
+ async function runWithLogger(command, args, cwd, packageManager) {
206
+ const logger = new InstallLogger(packageManager);
207
+ return new Promise((resolve, reject) => {
208
+ const child = spawn(command, args, {
209
+ cwd,
210
+ stdio: ['ignore', 'pipe', 'pipe'],
211
+ });
212
+ logger.start();
213
+ if (child.stdout) {
214
+ const stdoutReader = readline.createInterface({
215
+ input: child.stdout,
216
+ crlfDelay: Infinity,
217
+ });
218
+ stdoutReader.on('line', line => logger.processLine(line, 'stdout'));
219
+ }
220
+ if (child.stderr) {
221
+ const stderrReader = readline.createInterface({
222
+ input: child.stderr,
223
+ crlfDelay: Infinity,
224
+ });
225
+ stderrReader.on('line', line => logger.processLine(line, 'stderr'));
226
+ }
227
+ child.on('close', async (code) => {
228
+ if (code !== 0) {
229
+ logger.error();
230
+ reject(new Error(`${command} ${args.join(' ')} failed`));
231
+ return;
232
+ }
233
+ const stats = await logger.finish(cwd);
234
+ resolve(stats);
235
+ });
236
+ child.on('error', (err) => {
237
+ logger.error();
238
+ reject(err);
239
+ });
240
+ });
241
+ }
242
+ function findViteConfigFile(projectDir) {
243
+ const candidates = ['vite.config.ts', 'vite.config.js', 'vite.config.mjs', 'vite.config.cjs'];
244
+ for (const name of candidates) {
245
+ const p = path.join(projectDir, name);
246
+ if (fs.existsSync(p))
247
+ return p;
248
+ }
249
+ return null;
250
+ }
251
+ async function cloneViteTemplate(template, targetDir, packageManager, spinner) {
252
+ const errors = [];
253
+ for (let i = 0; i < TEMPLATE_SOURCES.length; i++) {
254
+ const source = TEMPLATE_SOURCES[i];
255
+ let tempTargetDir = null;
256
+ try {
257
+ // Show which source we're trying
258
+ if (i > 0) {
259
+ spinner.message(`Trying ${source.name}...`);
260
+ }
261
+ const { command, args } = source.getCloneCommand(template, targetDir, packageManager);
262
+ // For git-based sources, we need special handling
263
+ if (source.isGitBased) {
264
+ // Create temp directory for cloning (git clone will create the target folder)
265
+ const tempCloneDir = path.join(process.cwd(), `.tmp-clone-${randomUUID()}`);
266
+ const cloneArgs = [...args.slice(0, -1), tempCloneDir]; // Replace last arg (targetDir) with tempCloneDir
267
+ // Stop spinner before git clone to ensure proper output formatting
268
+ spinner.stop();
269
+ // Clone the entire repo to temp directory
270
+ await run(command, cloneArgs, process.cwd());
271
+ // Restart spinner after git clone
272
+ spinner.start('Processing template');
273
+ try {
274
+ // Extract the template folder from the cloned repo
275
+ const templateSrcPath = path.join(tempCloneDir, 'packages/create-vite', `template-${template}`);
276
+ if (!fs.existsSync(templateSrcPath)) {
277
+ throw new Error(`Template not found at packages/create-vite/template-${template}. The repository structure may have changed.`);
278
+ }
279
+ // Move the template files to a temp location with unique name
280
+ tempTargetDir = path.join(process.cwd(), `.tmp-template-${randomUUID()}`);
281
+ copyDir(templateSrcPath, tempTargetDir);
282
+ // Clean up the cloned repo
283
+ fs.rmSync(tempCloneDir, { recursive: true, force: true });
284
+ // Move the template to the final location
285
+ fs.renameSync(tempTargetDir, targetDir);
286
+ tempTargetDir = null; // Mark as successfully moved
287
+ }
288
+ catch (extractError) {
289
+ // Clean up temp clone directory on extraction error
290
+ if (fs.existsSync(tempCloneDir)) {
291
+ fs.rmSync(tempCloneDir, { recursive: true, force: true });
292
+ }
293
+ throw extractError;
294
+ }
295
+ }
296
+ else {
297
+ // For degit sources, command and args are already properly formatted
298
+ await run(command, args, process.cwd());
299
+ }
300
+ return;
301
+ }
302
+ catch (error) {
303
+ // Clean up any temp directory on failure
304
+ if (tempTargetDir && fs.existsSync(tempTargetDir)) {
305
+ fs.rmSync(tempTargetDir, { recursive: true, force: true });
306
+ }
307
+ const errorMsg = error instanceof Error ? error.message : String(error);
308
+ errors.push({ source: source.name, error: errorMsg });
309
+ if (i < TEMPLATE_SOURCES.length - 1) {
310
+ // Not the last source, will try next one
311
+ // Ensure spinner is running before showing retry message
312
+ if (source.isGitBased) {
313
+ spinner.start(`${source.name} failed, trying ${TEMPLATE_SOURCES[i + 1].name}`);
314
+ }
315
+ else {
316
+ spinner.message(`${source.name} failed, trying ${TEMPLATE_SOURCES[i + 1].name}...`);
317
+ }
318
+ }
319
+ else {
320
+ // This is the last source, throw comprehensive error
321
+ const errorDetails = errors
322
+ .map(e => ` • ${e.source}: ${e.error}`)
323
+ .join('\n');
324
+ throw new Error(`Failed to clone template from all sources:\n${errorDetails}\n\nPlease check your network connection or try again later.`);
325
+ }
326
+ }
327
+ }
328
+ }
329
+ function getDegitCommandForPM(pm) {
330
+ switch (pm) {
331
+ case 'pnpm':
332
+ return {
333
+ command: 'pnpx',
334
+ args: (cmd, cmdArgs) => [cmd, ...cmdArgs],
335
+ };
336
+ case 'npm':
337
+ return {
338
+ command: 'npx',
339
+ args: (cmd, cmdArgs) => [cmd, ...cmdArgs],
340
+ };
341
+ case 'yarn':
342
+ return {
343
+ command: 'yarn',
344
+ args: (cmd, cmdArgs) => ['dlx', cmd, ...cmdArgs],
345
+ };
346
+ case 'bun':
347
+ return {
348
+ command: 'bunx',
349
+ args: (cmd, cmdArgs) => [cmd, ...cmdArgs],
350
+ };
351
+ }
352
+ }
353
+ function injectPluginIntoViteConfig(content, pluginPackage, pluginName) {
354
+ const hasImport = new RegExp(`['"]${pluginPackage.replace(/\//g, '\\/')}['"]`).test(content);
355
+ const hasCall = content.includes(`${pluginName}(`);
356
+ let out = content;
357
+ // 添加 import 语句
358
+ if (!hasImport) {
359
+ const importMatches = Array.from(out.matchAll(/^import .+$/gm));
360
+ if (importMatches.length > 0) {
361
+ const last = importMatches[importMatches.length - 1];
362
+ const insertPos = (last.index ?? 0) + last[0].length;
363
+ out = `${out.slice(0, insertPos)}\nimport { ${pluginName} } from '${pluginPackage}'\n${out.slice(insertPos)}`;
364
+ }
365
+ else {
366
+ out = `import { ${pluginName} } from '${pluginPackage}'\n${out}`;
367
+ }
368
+ }
369
+ // 添加插件到 plugins 数组
370
+ if (!hasCall) {
371
+ // 匹配 plugins: [...] 或 plugins:[...]
372
+ const pluginsRegex = /plugins\s*:\s*\[([^\]]*(?:\[[^\]]*\][^\]]*)*)\]/;
373
+ const m = pluginsRegex.exec(out);
374
+ if (m && m.index !== undefined) {
375
+ const full = m[0];
376
+ const inner = m[1] || '';
377
+ // 检查是否是多行格式
378
+ if (inner.includes('\n')) {
379
+ // 多行格式:找到缩进
380
+ const lines = inner.split('\n');
381
+ const pluginLines = lines.filter(line => line.trim() && !line.trim().startsWith('//'));
382
+ let indent = ' '; // 默认 4 空格
383
+ if (pluginLines.length > 0) {
384
+ const firstPluginLine = pluginLines[0];
385
+ const match = firstPluginLine.match(/^(\s+)/);
386
+ if (match)
387
+ indent = match[1];
388
+ }
389
+ // 在最后一个插件后添加新插件
390
+ const trimmedInner = inner.trimEnd();
391
+ const hasTrailingComma = trimmedInner.trim().endsWith(',');
392
+ const newPlugin = `${indent}${pluginName}(),`;
393
+ // 找到最后一个非空白行
394
+ const lastContentIndex = trimmedInner.lastIndexOf('\n');
395
+ if (lastContentIndex === -1) {
396
+ // 单行但包含换行符的情况
397
+ out = out.replace(full, `plugins: [\n${newPlugin}\n ]`);
398
+ }
399
+ else {
400
+ const beforeLast = trimmedInner.slice(0, lastContentIndex + 1);
401
+ const lastLine = trimmedInner.slice(lastContentIndex + 1);
402
+ if (!hasTrailingComma && lastLine.trim()) {
403
+ // 最后一行没有逗号,需要添加
404
+ out = out.replace(full, `plugins: [${beforeLast}${lastLine},\n${newPlugin}\n ]`);
405
+ }
406
+ else {
407
+ // 最后一行有逗号或为空
408
+ out = out.replace(full, `plugins: [${trimmedInner}\n${newPlugin}\n ]`);
409
+ }
410
+ }
411
+ }
412
+ else {
413
+ // 单行格式
414
+ const compactInner = inner.trim();
415
+ const nextInner = compactInner ? `${compactInner}, ${pluginName}()` : `${pluginName}()`;
416
+ out = out.replace(full, `plugins: [${nextInner}]`);
417
+ }
418
+ }
419
+ }
420
+ return out;
421
+ }
422
+ function addDevDependency(projectDir, pkgName, version) {
423
+ const pkgPath = path.join(projectDir, 'package.json');
424
+ const raw = fs.readFileSync(pkgPath, 'utf-8');
425
+ const pkg = JSON.parse(raw);
426
+ const devDependencies = (pkg['devDependencies'] ?? {});
427
+ if (!devDependencies[pkgName])
428
+ devDependencies[pkgName] = version;
429
+ pkg['devDependencies'] = devDependencies;
430
+ fs.writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`);
431
+ }
432
+ async function init() {
433
+ const userAgent = process.env.npm_config_user_agent || '';
434
+ let packageManager = detectPackageManager(userAgent);
435
+ clack.intro(cyan('create-dev-to'));
436
+ const cwd = process.cwd();
437
+ const argTargetDir = formatTargetDir(process.argv[2]);
438
+ let targetDir = argTargetDir || '.';
439
+ const getProjectName = () => targetDir === '.' ? path.basename(path.resolve()) : targetDir;
440
+ // 项目名称
441
+ const project = await clack.group({
442
+ projectName: () => clack.text({
443
+ message: 'Project name:',
444
+ placeholder: 'dev-to-app',
445
+ initialValue: argTargetDir,
446
+ defaultValue: argTargetDir || 'dev-to-app',
447
+ }),
448
+ shouldOverwrite: ({ results }) => {
449
+ targetDir = formatTargetDir(results.projectName) || 'dev-to-app';
450
+ const root = path.join(cwd, targetDir);
451
+ if (!fs.existsSync(root)) {
452
+ return Promise.resolve(false);
453
+ }
454
+ if (isEmpty(root)) {
455
+ return Promise.resolve(false);
456
+ }
457
+ return clack.confirm({
458
+ message: targetDir === '.'
459
+ ? 'Current directory is not empty. Remove existing files and continue?'
460
+ : `Target directory "${targetDir}" is not empty. Remove existing files and continue?`,
461
+ });
462
+ },
463
+ }, {
464
+ onCancel: () => {
465
+ clack.cancel('Operation cancelled.');
466
+ process.exit(0);
467
+ },
468
+ });
469
+ const { shouldOverwrite } = project;
470
+ // 覆盖目录
471
+ if (shouldOverwrite) {
472
+ emptyDir(path.join(cwd, targetDir));
473
+ }
474
+ // 包管理器选择
475
+ if (!packageManager) {
476
+ const pmChoice = await clack.select({
477
+ message: 'Select a package manager:',
478
+ options: PACKAGE_MANAGERS.map(pm => ({
479
+ value: pm,
480
+ label: pm,
481
+ })),
482
+ });
483
+ if (clack.isCancel(pmChoice)) {
484
+ clack.cancel('Operation cancelled.');
485
+ process.exit(0);
486
+ }
487
+ packageManager = pmChoice;
488
+ }
489
+ // 框架选择
490
+ const framework = await clack.select({
491
+ message: 'Select a framework:',
492
+ options: FRAMEWORKS.map(fw => ({
493
+ value: fw.name,
494
+ label: fw.supported ? fw.color(fw.display) : `${fw.color(fw.display)} ${dim('(Coming soon)')}`,
495
+ hint: fw.supported ? undefined : 'Not yet supported',
496
+ })),
497
+ initialValue: 'react',
498
+ });
499
+ if (clack.isCancel(framework)) {
500
+ clack.cancel('Operation cancelled.');
501
+ process.exit(0);
502
+ }
503
+ // 检查框架是否支持
504
+ const selectedFramework = FRAMEWORKS.find(fw => fw.name === framework);
505
+ if (!selectedFramework?.supported) {
506
+ clack.outro(yellow(`⚠️ ${selectedFramework?.display} support is coming soon!`));
507
+ clack.note(`We're working hard to add support for ${selectedFramework?.display}.\n\nFor now, please use React or stay tuned for updates!`, 'Roadmap');
508
+ process.exit(0);
509
+ }
510
+ // React 模板选择
511
+ const variant = await clack.select({
512
+ message: 'Select a variant:',
513
+ options: REACT_TEMPLATES.map(template => ({
514
+ value: template.name,
515
+ label: template.color(template.display),
516
+ })),
517
+ });
518
+ if (clack.isCancel(variant)) {
519
+ clack.cancel('Operation cancelled.');
520
+ process.exit(0);
521
+ }
522
+ const template = variant;
523
+ // 询问是否使用 Rolldown(实验性)
524
+ const shouldUseRolldown = await clack.confirm({
525
+ message: 'Use Rolldown for bundling? (Experimental)',
526
+ initialValue: false,
527
+ });
528
+ if (clack.isCancel(shouldUseRolldown)) {
529
+ clack.cancel('Operation cancelled.');
530
+ process.exit(0);
531
+ }
532
+ const root = path.join(cwd, targetDir);
533
+ const spinner = clack.spinner();
534
+ spinner.start('Scaffolding project');
535
+ // 使用 degit 克隆模板
536
+ await cloneViteTemplate(template, root, packageManager, spinner);
537
+ // 修改 package.json 名称
538
+ const pkgPath = path.join(root, 'package.json');
539
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
540
+ pkg.name = toValidPackageName(getProjectName());
541
+ fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
542
+ spinner.message('Adding @dev-to/react-plugin');
543
+ // 添加插件依赖
544
+ const pluginPackage = '@dev-to/react-plugin';
545
+ const pluginName = 'devToReactPlugin';
546
+ addDevDependency(root, pluginPackage, 'latest');
547
+ // 注入插件到 vite.config
548
+ const viteConfigPath = findViteConfigFile(root);
549
+ if (viteConfigPath) {
550
+ const original = fs.readFileSync(viteConfigPath, 'utf-8');
551
+ const patched = injectPluginIntoViteConfig(original, pluginPackage, pluginName);
552
+ fs.writeFileSync(viteConfigPath, patched);
553
+ }
554
+ spinner.stop('Project created');
555
+ // 询问是否立即安装
556
+ const shouldInstall = await clack.confirm({
557
+ message: 'Install dependencies and start dev server?',
558
+ initialValue: true,
559
+ });
560
+ if (clack.isCancel(shouldInstall)) {
561
+ // 用户取消
562
+ }
563
+ if (shouldInstall) {
564
+ try {
565
+ const stats = await runWithLogger(packageManager, ['install'], root, packageManager);
566
+ displayInstallSummary(stats);
567
+ clack.log.info('Starting dev server...');
568
+ const devArgs = packageManager === 'npm' ? ['run', 'dev'] : ['dev'];
569
+ spawn(packageManager, devArgs, { cwd: root, stdio: 'inherit' });
570
+ }
571
+ catch (error) {
572
+ clack.log.error('Installation failed');
573
+ throw error;
574
+ }
575
+ }
576
+ else {
577
+ const pkgManager = packageManager || 'npm';
578
+ const cdPath = targetDir !== '.' ? `cd ${targetDir}` : null;
579
+ const installCmd = PM_CONFIGS[pkgManager].install;
580
+ const devCmd = PM_CONFIGS[pkgManager].dev;
581
+ const nextSteps = [cdPath, installCmd, devCmd].filter(Boolean).join('\n ');
582
+ clack.note(nextSteps, 'Next steps');
583
+ clack.outro('Done');
584
+ }
585
+ }
586
+ init().catch((e) => {
587
+ clack.log.error(red(e.message || e));
588
+ process.exit(1);
589
+ });
590
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { InstallStats } from './visualComponents.js';
2
+ type PackageManager = 'pnpm' | 'npm' | 'yarn' | 'bun';
3
+ export declare class InstallLogger {
4
+ private packageManager;
5
+ private parser;
6
+ private renderer;
7
+ private stats;
8
+ private phases;
9
+ private renderScheduled;
10
+ private lastRenderTime;
11
+ private readonly RENDER_INTERVAL;
12
+ private smoothProgressTimer;
13
+ constructor(packageManager: PackageManager);
14
+ start(): void;
15
+ processLine(line: string, stream: 'stdout' | 'stderr'): void;
16
+ finish(projectDir: string): Promise<InstallStats>;
17
+ error(): void;
18
+ private startSmoothProgress;
19
+ private stopSmoothProgress;
20
+ private handleParsedOutput;
21
+ private activatePhase;
22
+ private updatePhase;
23
+ private scheduleRender;
24
+ private render;
25
+ private calculateNodeModulesSize;
26
+ private getDirectorySize;
27
+ }
28
+ export {};
29
+ //# sourceMappingURL=installLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installLogger.d.ts","sourceRoot":"","sources":["../src/installLogger.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAIvE,KAAK,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAA;AAErD,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAK;IACrC,OAAO,CAAC,mBAAmB,CAA8B;gBAE7C,cAAc,EAAE,cAAc;IAqB1C,KAAK,IAAI,IAAI;IAMb,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAetD,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAwBvD,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,MAAM;YAWA,wBAAwB;IAwBtC,OAAO,CAAC,gBAAgB;CA8BzB"}