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.
- package/README.md +5 -6
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +25 -17
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/info.d.ts.map +1 -1
- package/dist/commands/info.js +2 -1
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +26 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +14 -20
- package/dist/commands/start.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +11 -5
- package/dist/server/index.js.map +1 -1
- package/dist/utils/config.d.ts +9 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +76 -8
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/dependencies.d.ts +1 -1
- package/dist/utils/dependencies.d.ts.map +1 -1
- package/dist/utils/dependencies.js +67 -38
- package/dist/utils/dependencies.js.map +1 -1
- package/dist/utils/index.d.ts +4 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.d.ts +111 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +276 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/port.d.ts.map +1 -1
- package/dist/utils/port.js +3 -2
- package/dist/utils/port.js.map +1 -1
- package/dist/utils/scannerConfig.d.ts +1 -0
- package/dist/utils/scannerConfig.d.ts.map +1 -1
- package/dist/utils/scannerConfig.js +22 -6
- package/dist/utils/scannerConfig.js.map +1 -1
- package/package.json +5 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from 'fs';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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
|
-
|
|
19
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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,
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/utils/dependencies.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/utils/index.js
CHANGED
|
@@ -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
|
package/dist/utils/index.js.map
CHANGED
|
@@ -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;
|
|
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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"}
|
package/dist/utils/port.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/utils/port.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/utils/port.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
18
|
+
logger.errorBox('Port Detection Error', `Failed to detect available port: ${error}`);
|
|
18
19
|
process.exit(1);
|
|
19
20
|
}
|
|
20
21
|
}
|
package/dist/utils/port.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port.js","sourceRoot":"","sources":["../../src/utils/port.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,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":"
|
|
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"}
|