react-scanner-ui 0.0.15 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +5 -6
  2. package/dist/commands/build.d.ts.map +1 -1
  3. package/dist/commands/build.js +25 -17
  4. package/dist/commands/build.js.map +1 -1
  5. package/dist/commands/info.d.ts.map +1 -1
  6. package/dist/commands/info.js +2 -1
  7. package/dist/commands/info.js.map +1 -1
  8. package/dist/commands/init.d.ts.map +1 -1
  9. package/dist/commands/init.js +26 -5
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/start.d.ts.map +1 -1
  12. package/dist/commands/start.js +14 -20
  13. package/dist/commands/start.js.map +1 -1
  14. package/dist/server/index.d.ts.map +1 -1
  15. package/dist/server/index.js +11 -5
  16. package/dist/server/index.js.map +1 -1
  17. package/dist/utils/config.d.ts +9 -1
  18. package/dist/utils/config.d.ts.map +1 -1
  19. package/dist/utils/config.js +76 -8
  20. package/dist/utils/config.js.map +1 -1
  21. package/dist/utils/dependencies.d.ts +1 -1
  22. package/dist/utils/dependencies.d.ts.map +1 -1
  23. package/dist/utils/dependencies.js +67 -38
  24. package/dist/utils/dependencies.js.map +1 -1
  25. package/dist/utils/index.d.ts +4 -1
  26. package/dist/utils/index.d.ts.map +1 -1
  27. package/dist/utils/index.js +3 -1
  28. package/dist/utils/index.js.map +1 -1
  29. package/dist/utils/logger.d.ts +111 -0
  30. package/dist/utils/logger.d.ts.map +1 -0
  31. package/dist/utils/logger.js +276 -0
  32. package/dist/utils/logger.js.map +1 -0
  33. package/dist/utils/port.d.ts.map +1 -1
  34. package/dist/utils/port.js +3 -2
  35. package/dist/utils/port.js.map +1 -1
  36. package/dist/utils/scannerConfig.d.ts +1 -0
  37. package/dist/utils/scannerConfig.d.ts.map +1 -1
  38. package/dist/utils/scannerConfig.js +22 -6
  39. package/dist/utils/scannerConfig.js.map +1 -1
  40. package/package.json +5 -1
@@ -1,7 +1,9 @@
1
1
  import { existsSync, readFileSync } from 'fs';
2
- import { execSync } from 'child_process';
3
- import { createInterface } from 'readline';
2
+ import { spawn } from 'child_process';
3
+ import { confirm } from '@inquirer/prompts';
4
4
  import { createRequire } from 'module';
5
+ import * as logger from './logger.js';
6
+ import { inquirerTheme } from './logger.js';
5
7
  // ESM equivalent of require.resolve
6
8
  const require = createRequire(import.meta.url);
7
9
  export function isReactScannerInstalled() {
@@ -15,52 +17,79 @@ export function isReactScannerInstalled() {
15
17
  }
16
18
  export function checkPeerDependency() {
17
19
  if (!isReactScannerInstalled()) {
18
- console.error('Error: react-scanner is not installed.');
19
- console.error('Please install it by running:');
20
- console.error(' npm install react-scanner');
21
- console.error(' or');
22
- console.error(' yarn add react-scanner');
20
+ logger.errorBox('Missing Dependency: "react-scanner"', 'react-scanner is not installed.\nThis package is required to analyze your React components.');
21
+ logger.installInstructions('react-scanner');
23
22
  process.exit(1);
24
23
  }
25
24
  return true;
26
25
  }
27
26
  export async function promptInstallReactScanner() {
28
- const rl = createInterface({
29
- input: process.stdin,
30
- output: process.stdout,
31
- });
32
- return new Promise(resolve => {
33
- rl.question('react-scanner is required. Would you like to install it? (y/n): ', answer => {
34
- rl.close();
35
- resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
36
- });
27
+ logger.warning('react-scanner is required but not installed.');
28
+ const shouldInstall = await confirm({
29
+ message: 'Would you like to install it now?',
30
+ default: true,
31
+ theme: inquirerTheme,
37
32
  });
33
+ return shouldInstall;
38
34
  }
39
- export function installReactScanner() {
40
- console.log('Installing react-scanner...');
41
- try {
42
- const useYarn = existsSync('yarn.lock');
43
- let isWorkspace = false;
44
- if (existsSync('package.json')) {
45
- const packageContent = readFileSync('package.json', 'utf-8');
46
- const packageJson = JSON.parse(packageContent);
47
- if (packageJson.workspaces) {
48
- isWorkspace = true;
49
- }
35
+ export async function installReactScanner() {
36
+ const spinner = logger.startSpinner('Installing react-scanner...');
37
+ const useYarn = existsSync('yarn.lock');
38
+ let isWorkspace = false;
39
+ if (existsSync('package.json')) {
40
+ const packageContent = readFileSync('package.json', 'utf-8');
41
+ const packageJson = JSON.parse(packageContent);
42
+ if (packageJson.workspaces) {
43
+ isWorkspace = true;
50
44
  }
51
- let command;
52
- if (useYarn) {
53
- command = `yarn add react-scanner --dev --ignore-engines${isWorkspace ? ' -W' : ''}`;
54
- }
55
- else {
56
- command = 'npm install react-scanner --save-dev';
45
+ }
46
+ let command;
47
+ let args;
48
+ if (useYarn) {
49
+ command = 'yarn';
50
+ args = ['add', 'react-scanner', '--dev', '--ignore-engines'];
51
+ if (isWorkspace) {
52
+ args.push('-W');
57
53
  }
58
- execSync(command, { stdio: 'inherit' });
59
- console.log('react-scanner installed successfully!');
60
54
  }
61
- catch {
62
- console.error('Failed to install react-scanner. Please install it manually.');
63
- process.exit(1);
55
+ else {
56
+ command = 'npm';
57
+ args = ['install', 'react-scanner', '--save-dev'];
64
58
  }
59
+ return new Promise((resolve, reject) => {
60
+ const child = spawn(command, args, {
61
+ stdio: 'pipe',
62
+ });
63
+ // Handle SIGINT (Ctrl+C)
64
+ const handleSignal = () => {
65
+ child.kill('SIGTERM');
66
+ logger.spinnerError('Installation cancelled');
67
+ process.exit(1);
68
+ };
69
+ process.on('SIGINT', handleSignal);
70
+ process.on('SIGTERM', handleSignal);
71
+ child.on('close', code => {
72
+ // Remove signal handlers
73
+ process.off('SIGINT', handleSignal);
74
+ process.off('SIGTERM', handleSignal);
75
+ if (code === 0) {
76
+ logger.spinnerSuccess('react-scanner installed successfully!');
77
+ resolve();
78
+ }
79
+ else {
80
+ logger.spinnerError('Failed to install react-scanner');
81
+ logger.errorBox('Installation Failed', 'Could not install react-scanner automatically.\nPlease install it manually and try again.');
82
+ reject(new Error(`Installation failed with code ${code}`));
83
+ }
84
+ });
85
+ child.on('error', err => {
86
+ // Remove signal handlers
87
+ process.off('SIGINT', handleSignal);
88
+ process.off('SIGTERM', handleSignal);
89
+ spinner.fail('Failed to install react-scanner');
90
+ logger.errorBox('Installation Failed', `Could not install react-scanner automatically.\n${err.message}\nPlease install it manually and try again.`);
91
+ reject(err);
92
+ });
93
+ });
65
94
  }
66
95
  //# sourceMappingURL=dependencies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/utils/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,oCAAoC;AACpC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,EAAE,CAAC,QAAQ,CACT,kEAAkE,EAClE,MAAM,CAAC,EAAE;YACP,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;QAC1E,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC/C,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;gBAC3B,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC;QACZ,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,GAAG,gDAAgD,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACvF,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,sCAAsC,CAAC;QACnD,CAAC;QAED,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CACX,8DAA8D,CAC/D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/utils/dependencies.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  export { isReactScannerInstalled, checkPeerDependency, promptInstallReactScanner, installReactScanner, } from './dependencies.js';
2
- export { createReactScannerConfig } from './config.js';
2
+ export { createReactScannerConfig, updateIgnoreFiles } from './config.js';
3
+ export type { ScannerConfigOptions } from './config.js';
3
4
  export { getServerPort, isPortAvailable } from './port.js';
4
5
  export type { PortOptions } from './port.js';
5
6
  export { readScannerConfig, readScanData, getScanData, } from './scannerConfig.js';
7
+ export * as logger from './logger.js';
8
+ export { inquirerTheme } from './logger.js';
6
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1E,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export { isReactScannerInstalled, checkPeerDependency, promptInstallReactScanner, installReactScanner, } from './dependencies.js';
2
- export { createReactScannerConfig } from './config.js';
2
+ export { createReactScannerConfig, updateIgnoreFiles } from './config.js';
3
3
  export { getServerPort, isPortAvailable } from './port.js';
4
4
  export { readScannerConfig, readScanData, getScanData, } from './scannerConfig.js';
5
+ export * as logger from './logger.js';
6
+ export { inquirerTheme } from './logger.js';
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,111 @@
1
+ import pc from 'picocolors';
2
+ import { type Ora } from 'ora';
3
+ import type { Theme } from '@inquirer/core';
4
+ import type { PartialDeep } from '@inquirer/type';
5
+ export declare const inquirerTheme: PartialDeep<Theme>;
6
+ /**
7
+ * Display a styled info box
8
+ */
9
+ export declare function infoBox(title: string, content?: string): void;
10
+ /**
11
+ * Display a styled success box
12
+ */
13
+ export declare function successBox(title: string, content?: string): void;
14
+ /**
15
+ * Display a styled error box
16
+ */
17
+ export declare function errorBox(title: string, content?: string): void;
18
+ /**
19
+ * Display a styled warning box
20
+ */
21
+ export declare function warningBox(title: string, content?: string): void;
22
+ /**
23
+ * Log a success message with a checkmark
24
+ */
25
+ export declare function success(message: string): void;
26
+ /**
27
+ * Log an error message with an X
28
+ */
29
+ export declare function error(message: string): void;
30
+ /**
31
+ * Log a warning message
32
+ */
33
+ export declare function warning(message: string): void;
34
+ /**
35
+ * Log an info message
36
+ */
37
+ export declare function info(message: string): void;
38
+ /**
39
+ * Log a step/bullet point
40
+ */
41
+ export declare function step(message: string): void;
42
+ /**
43
+ * Log a highlighted message
44
+ */
45
+ export declare function highlight(message: string): void;
46
+ /**
47
+ * Log a dimmed/subtle message
48
+ */
49
+ export declare function dim(message: string): void;
50
+ /**
51
+ * Log a URL or link
52
+ */
53
+ export declare function link(url: string): string;
54
+ /**
55
+ * Format text as bold
56
+ */
57
+ export declare function bold(text: string): string;
58
+ /**
59
+ * Format text with background highlight (e.g., for "Tip:", "Note:", etc.)
60
+ */
61
+ export declare function bgHighlight(text: string): string;
62
+ /**
63
+ * Start a spinner with a message
64
+ */
65
+ export declare function startSpinner(message: string): Ora;
66
+ /**
67
+ * Update the spinner text
68
+ */
69
+ export declare function updateSpinner(message: string): void;
70
+ /**
71
+ * Stop the spinner with a success message
72
+ */
73
+ export declare function spinnerSuccess(message: string): void;
74
+ /**
75
+ * Stop the spinner with an error message
76
+ */
77
+ export declare function spinnerError(message: string): void;
78
+ /**
79
+ * Stop the spinner with a warning message
80
+ */
81
+ export declare function spinnerWarning(message: string): void;
82
+ /**
83
+ * Stop the spinner with an info message
84
+ */
85
+ export declare function spinnerInfo(message: string): void;
86
+ /**
87
+ * Stop the spinner without a message
88
+ */
89
+ export declare function stopSpinner(): void;
90
+ /**
91
+ * Display the welcome/banner box for the CLI
92
+ */
93
+ export declare function banner(name: string, version?: string): void;
94
+ /**
95
+ * Display server running information
96
+ */
97
+ export declare function serverInfo(port: number, features?: string[]): void;
98
+ /**
99
+ * Display build complete information
100
+ */
101
+ export declare function buildComplete(outputDir: string, commands?: string[]): void;
102
+ /**
103
+ * Display an error with details
104
+ */
105
+ export declare function errorWithDetails(title: string, details: string[]): void;
106
+ /**
107
+ * Display installation instructions
108
+ */
109
+ export declare function installInstructions(packageName: string): void;
110
+ export { pc };
111
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,276 @@
1
+ import pc from 'picocolors';
2
+ import boxen from 'boxen';
3
+ import ora from 'ora';
4
+ /**
5
+ * Beautiful logger utility using boxen, picocolors, and ora
6
+ */
7
+ // Spinner instance for loading states
8
+ let currentSpinner = null;
9
+ // Consistent box width for all boxes
10
+ const BOX_WIDTH = 60;
11
+ // Indentation to align with box border (margin of 1 = 3 spaces)
12
+ const INDENT = ' ';
13
+ // Default box options for consistency
14
+ const defaultBoxOptions = {
15
+ padding: 1,
16
+ margin: 1,
17
+ borderStyle: 'round',
18
+ width: BOX_WIDTH,
19
+ };
20
+ // Inquirer theme with proper indentation
21
+ export const inquirerTheme = {
22
+ prefix: {
23
+ idle: `${INDENT}${pc.cyan('?')}`,
24
+ done: `${INDENT}${pc.green('✔')}`,
25
+ },
26
+ };
27
+ /**
28
+ * Display a styled info box
29
+ */
30
+ export function infoBox(title, content) {
31
+ const message = content
32
+ ? `${pc.bold(pc.cyan(title))}\n\n${content}`
33
+ : pc.bold(pc.cyan(title));
34
+ console.log(boxen(message, {
35
+ ...defaultBoxOptions,
36
+ borderColor: 'cyan',
37
+ }));
38
+ }
39
+ /**
40
+ * Display a styled success box
41
+ */
42
+ export function successBox(title, content) {
43
+ const message = content
44
+ ? `${pc.bold(pc.green(title))}\n\n${content}`
45
+ : pc.bold(pc.green(title));
46
+ console.log(boxen(message, {
47
+ ...defaultBoxOptions,
48
+ borderColor: 'green',
49
+ }));
50
+ }
51
+ /**
52
+ * Display a styled error box
53
+ */
54
+ export function errorBox(title, content) {
55
+ const message = content
56
+ ? `${pc.bold(pc.red(title))}\n\n${content}`
57
+ : pc.bold(pc.red(title));
58
+ console.log(boxen(message, {
59
+ ...defaultBoxOptions,
60
+ borderColor: 'red',
61
+ }));
62
+ }
63
+ /**
64
+ * Display a styled warning box
65
+ */
66
+ export function warningBox(title, content) {
67
+ const message = content
68
+ ? `${pc.bold(pc.yellow(title))}\n\n${content}`
69
+ : pc.bold(pc.yellow(title));
70
+ console.log(boxen(message, {
71
+ ...defaultBoxOptions,
72
+ borderColor: 'yellow',
73
+ }));
74
+ }
75
+ /**
76
+ * Log a success message with a checkmark
77
+ */
78
+ export function success(message) {
79
+ console.log(`${INDENT}${pc.green('✔')} ${pc.green(message)}`);
80
+ }
81
+ /**
82
+ * Log an error message with an X
83
+ */
84
+ export function error(message) {
85
+ console.log(`${INDENT}${pc.red('✖')} ${pc.red(message)}`);
86
+ }
87
+ /**
88
+ * Log a warning message
89
+ */
90
+ export function warning(message) {
91
+ console.log(`${INDENT}${pc.yellow('⚠')} ${pc.yellow(message)}`);
92
+ }
93
+ /**
94
+ * Log an info message
95
+ */
96
+ export function info(message) {
97
+ console.log(`${INDENT}${pc.cyan('ℹ')} ${pc.cyan(message)}`);
98
+ }
99
+ /**
100
+ * Log a step/bullet point
101
+ */
102
+ export function step(message) {
103
+ console.log(`${INDENT} ${pc.dim('➜')} ${message}`);
104
+ }
105
+ /**
106
+ * Log a highlighted message
107
+ */
108
+ export function highlight(message) {
109
+ console.log(`${INDENT}${pc.bold(pc.magenta(message))}`);
110
+ }
111
+ /**
112
+ * Log a dimmed/subtle message
113
+ */
114
+ export function dim(message) {
115
+ console.log(`${INDENT}${pc.dim(message)}`);
116
+ }
117
+ /**
118
+ * Log a URL or link
119
+ */
120
+ export function link(url) {
121
+ return pc.underline(pc.cyan(url));
122
+ }
123
+ /**
124
+ * Format text as bold
125
+ */
126
+ export function bold(text) {
127
+ return pc.bold(text);
128
+ }
129
+ /**
130
+ * Format text with background highlight (e.g., for "Tip:", "Note:", etc.)
131
+ */
132
+ export function bgHighlight(text) {
133
+ return pc.bgYellow(pc.black(pc.bold(` ${text} `)));
134
+ }
135
+ /**
136
+ * Start a spinner with a message
137
+ */
138
+ export function startSpinner(message) {
139
+ if (currentSpinner) {
140
+ currentSpinner.stop();
141
+ }
142
+ currentSpinner = ora({
143
+ text: message,
144
+ color: 'cyan',
145
+ indent: 3,
146
+ }).start();
147
+ return currentSpinner;
148
+ }
149
+ /**
150
+ * Update the spinner text
151
+ */
152
+ export function updateSpinner(message) {
153
+ if (currentSpinner) {
154
+ currentSpinner.text = message;
155
+ }
156
+ }
157
+ /**
158
+ * Stop the spinner with a success message
159
+ */
160
+ export function spinnerSuccess(message) {
161
+ if (currentSpinner) {
162
+ currentSpinner.succeed(pc.green(message));
163
+ currentSpinner = null;
164
+ }
165
+ }
166
+ /**
167
+ * Stop the spinner with an error message
168
+ */
169
+ export function spinnerError(message) {
170
+ if (currentSpinner) {
171
+ currentSpinner.fail(pc.red(message));
172
+ currentSpinner = null;
173
+ }
174
+ }
175
+ /**
176
+ * Stop the spinner with a warning message
177
+ */
178
+ export function spinnerWarning(message) {
179
+ if (currentSpinner) {
180
+ currentSpinner.warn(pc.yellow(message));
181
+ currentSpinner = null;
182
+ }
183
+ }
184
+ /**
185
+ * Stop the spinner with an info message
186
+ */
187
+ export function spinnerInfo(message) {
188
+ if (currentSpinner) {
189
+ currentSpinner.info(pc.cyan(message));
190
+ currentSpinner = null;
191
+ }
192
+ }
193
+ /**
194
+ * Stop the spinner without a message
195
+ */
196
+ export function stopSpinner() {
197
+ if (currentSpinner) {
198
+ currentSpinner.stop();
199
+ currentSpinner = null;
200
+ }
201
+ }
202
+ /**
203
+ * Display the welcome/banner box for the CLI
204
+ */
205
+ export function banner(name, version) {
206
+ const versionText = version ? pc.dim(`v${version}`) : '';
207
+ const title = `${pc.bold(pc.cyan(name))} ${versionText}`;
208
+ console.log(boxen(title, {
209
+ ...defaultBoxOptions,
210
+ borderColor: 'cyan',
211
+ }));
212
+ }
213
+ /**
214
+ * Display server running information
215
+ */
216
+ export function serverInfo(port, features = []) {
217
+ const url = `http://localhost:${port}`;
218
+ let content = `${pc.bold('Local:')} ${link(url)}`;
219
+ if (features.length > 0) {
220
+ content += '\n\n' + features.map(f => `${pc.dim('➜')} ${f}`).join('\n');
221
+ }
222
+ console.log(boxen(content, {
223
+ ...defaultBoxOptions,
224
+ borderColor: 'green',
225
+ title: pc.bold(pc.green('🚀 React Scanner UI: Server Running')),
226
+ titleAlignment: 'center',
227
+ }));
228
+ }
229
+ /**
230
+ * Display build complete information
231
+ */
232
+ export function buildComplete(outputDir, commands = []) {
233
+ let content = `${pc.bold('Output:')} ${pc.cyan(outputDir)}`;
234
+ if (commands.length > 0) {
235
+ content +=
236
+ '\n\n' +
237
+ pc.dim('Serve with:') +
238
+ '\n' +
239
+ commands.map(c => ` ${pc.cyan(c)}`).join('\n');
240
+ }
241
+ console.log(boxen(content, {
242
+ ...defaultBoxOptions,
243
+ borderColor: 'green',
244
+ title: pc.bold(pc.green('✔ Build Complete')),
245
+ titleAlignment: 'center',
246
+ }));
247
+ }
248
+ /**
249
+ * Display an error with details
250
+ */
251
+ export function errorWithDetails(title, details) {
252
+ const content = details.map(d => `${pc.dim('•')} ${d}`).join('\n');
253
+ console.log(boxen(`${pc.bold(pc.red(title))}\n\n${content}`, {
254
+ ...defaultBoxOptions,
255
+ borderColor: 'red',
256
+ }));
257
+ }
258
+ /**
259
+ * Display installation instructions
260
+ */
261
+ export function installInstructions(packageName) {
262
+ const content = [
263
+ `${pc.bold('npm:')} npm install ${packageName}`,
264
+ `${pc.bold('yarn:')} yarn add ${packageName}`,
265
+ `${pc.bold('pnpm:')} pnpm add ${packageName}`,
266
+ ].join('\n');
267
+ console.log(boxen(content, {
268
+ ...defaultBoxOptions,
269
+ borderColor: 'yellow',
270
+ title: pc.bold(pc.yellow('📦 Install Required')),
271
+ titleAlignment: 'center',
272
+ }));
273
+ }
274
+ // Export picocolors for direct use if needed
275
+ export { pc };
276
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/utils/port.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,IAAI,GAAE,MAAa,EACnB,EAAE,SAAS,EAAE,GAAE,WAAgB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOpE"}
1
+ {"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/utils/port.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,IAAI,GAAE,MAAa,EACnB,EAAE,SAAS,EAAE,GAAE,WAAgB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOpE"}
@@ -1,4 +1,5 @@
1
1
  import detectPort from 'detect-port';
2
+ import * as logger from './logger.js';
2
3
  /**
3
4
  * Get an available server port using detect-port (same approach as Storybook)
4
5
  * If the requested port is busy, it will find the next available port
@@ -8,13 +9,13 @@ export async function getServerPort(port = 3000, { exactPort } = {}) {
8
9
  try {
9
10
  const freePort = await detectPort(port);
10
11
  if (freePort !== port && exactPort) {
11
- console.error(`Error: Port ${port} is not available.`);
12
+ logger.errorBox('Port Unavailable', `Port ${logger.bold(String(port))} is not available.\nUse a different port or remove the --exact-port flag.`);
12
13
  process.exit(1);
13
14
  }
14
15
  return freePort;
15
16
  }
16
17
  catch (error) {
17
- console.error('Error detecting available port:', error);
18
+ logger.errorBox('Port Detection Error', `Failed to detect available port: ${error}`);
18
19
  process.exit(1);
19
20
  }
20
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"port.js","sourceRoot":"","sources":["../../src/utils/port.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AAMrC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,IAAI,EACnB,EAAE,SAAS,KAAkB,EAAE;IAE/B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,QAAQ,KAAK,IAAI,IAAI,SAAS,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,oBAAoB,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,QAAQ,KAAK,IAAI,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"port.js","sourceRoot":"","sources":["../../src/utils/port.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAMtC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,IAAI,EACnB,EAAE,SAAS,KAAkB,EAAE;IAE/B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,QAAQ,KAAK,IAAI,IAAI,SAAS,EAAE,CAAC;YACnC,MAAM,CAAC,QAAQ,CACb,kBAAkB,EAClB,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,2EAA2E,CAC7G,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,QAAQ,CACb,sBAAsB,EACtB,oCAAoC,KAAK,EAAE,CAC5C,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,QAAQ,KAAK,IAAI,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -22,6 +22,7 @@ export declare function readScannerConfig(): Promise<ScannerConfig | null>;
22
22
  export declare function getOutputFile(config: ScannerConfig): string | null;
23
23
  /**
24
24
  * Read and parse the scan data from a JSON file
25
+ * Handles both raw format (from react-scanner) and wrapped format (from build)
25
26
  */
26
27
  export declare function readScanData(filePath: string): ScanData | null;
27
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"scannerConfig.d.ts","sourceRoot":"","sources":["../../src/utils/scannerConfig.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,aAAa,EAAE,MAAM,GAAG;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAkBvE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAgBlE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAgB9D;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAC3C,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC,CAqBD"}
1
+ {"version":3,"file":"scannerConfig.d.ts","sourceRoot":"","sources":["../../src/utils/scannerConfig.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,aAAa,EAAE,MAAM,GAAG;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAsBvE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAgBlE;AAgBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CA0B9D;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAC3C,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC,CAqBD"}