neex 0.2.8 → 0.3.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.
Files changed (66) hide show
  1. package/README.md +1 -1
  2. package/bun.lock +118 -544
  3. package/dist/cli.d.ts +1 -0
  4. package/dist/cli.js +46 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/build.d.ts +3 -0
  7. package/dist/commands/build.js +41 -0
  8. package/dist/commands/build.js.map +1 -0
  9. package/dist/commands/cache.d.ts +3 -0
  10. package/dist/commands/cache.js +34 -0
  11. package/dist/commands/cache.js.map +1 -0
  12. package/dist/commands/dev.d.ts +3 -0
  13. package/dist/commands/dev.js +51 -0
  14. package/dist/commands/dev.js.map +1 -0
  15. package/dist/commands/process-command/process.d.ts +2 -0
  16. package/dist/commands/process-command/process.js +149 -0
  17. package/dist/commands/process-command/process.js.map +1 -0
  18. package/dist/commands/process.d.ts +2 -0
  19. package/dist/commands/process.js +216 -0
  20. package/dist/commands/process.js.map +1 -0
  21. package/dist/commands/project-command/build.d.ts +3 -0
  22. package/dist/commands/project-command/build.js +41 -0
  23. package/dist/commands/project-command/build.js.map +1 -0
  24. package/dist/commands/project-command/cache.d.ts +3 -0
  25. package/dist/commands/project-command/cache.js +56 -0
  26. package/dist/commands/project-command/cache.js.map +1 -0
  27. package/dist/commands/project-command/dev.d.ts +3 -0
  28. package/dist/commands/project-command/dev.js +51 -0
  29. package/dist/commands/project-command/dev.js.map +1 -0
  30. package/dist/commands/project-command/start.d.ts +3 -0
  31. package/dist/commands/project-command/start.js +45 -0
  32. package/dist/commands/project-command/start.js.map +1 -0
  33. package/dist/commands/run-commands/run.d.ts +2 -0
  34. package/dist/commands/run-commands/run.js +81 -0
  35. package/dist/commands/run-commands/run.js.map +1 -0
  36. package/dist/commands/run.d.ts +2 -0
  37. package/dist/commands/run.js +81 -0
  38. package/dist/commands/run.js.map +1 -0
  39. package/dist/commands/start.d.ts +3 -0
  40. package/dist/commands/start.js +45 -0
  41. package/dist/commands/start.js.map +1 -0
  42. package/dist/dev-manager.d.ts +34 -0
  43. package/dist/dev-manager.js +172 -0
  44. package/dist/dev-manager.js.map +1 -0
  45. package/dist/index.d.ts +30 -0
  46. package/dist/index.js +65 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/logger.d.ts +31 -0
  49. package/dist/logger.js +238 -0
  50. package/dist/logger.js.map +1 -0
  51. package/dist/process-manager.d.ts +61 -0
  52. package/dist/process-manager.js +279 -0
  53. package/dist/process-manager.js.map +1 -0
  54. package/dist/project-manager.d.ts +51 -0
  55. package/dist/project-manager.js +252 -0
  56. package/dist/project-manager.js.map +1 -0
  57. package/dist/runner.d.ts +16 -0
  58. package/dist/runner.js +331 -0
  59. package/dist/runner.js.map +1 -0
  60. package/dist/types.d.ts +37 -0
  61. package/dist/types.js +3 -0
  62. package/dist/types.js.map +1 -0
  63. package/dist/typescript-runner.d.ts +12 -0
  64. package/dist/typescript-runner.js +162 -0
  65. package/dist/typescript-runner.js.map +1 -0
  66. package/package.json +5 -2
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.devManager = void 0;
7
+ const esbuild_1 = require("esbuild");
8
+ const chokidar_1 = require("chokidar");
9
+ const child_process_1 = require("child_process");
10
+ const path_1 = require("path");
11
+ const fs_1 = require("fs");
12
+ const chalk_1 = __importDefault(require("chalk"));
13
+ const figures_1 = __importDefault(require("figures"));
14
+ const events_1 = require("events");
15
+ class DevManager extends events_1.EventEmitter {
16
+ constructor() {
17
+ super();
18
+ this.watcher = null;
19
+ this.process = null;
20
+ this.isRestarting = false;
21
+ this.restartTimer = null;
22
+ this.defaultOutDir = 'dist';
23
+ this.defaultPort = 3000;
24
+ }
25
+ async build(options) {
26
+ const outdir = options.outdir || this.defaultOutDir;
27
+ const outfile = (0, path_1.resolve)(outdir, `${(0, path_1.basename)(options.entry, '.ts')}.js`);
28
+ try {
29
+ if (!(0, fs_1.existsSync)(outdir)) {
30
+ (0, fs_1.mkdirSync)(outdir, { recursive: true });
31
+ }
32
+ const buildOptions = {
33
+ entryPoints: [options.entry],
34
+ outfile,
35
+ bundle: true,
36
+ platform: 'node',
37
+ target: options.target || ['node18'],
38
+ format: options.format || 'cjs',
39
+ sourcemap: options.sourcemap ?? true,
40
+ minify: options.minify ?? false,
41
+ define: {
42
+ 'process.env.NODE_ENV': '"development"',
43
+ ...Object.entries(options.env || {}).reduce((acc, [key, value]) => ({
44
+ ...acc,
45
+ [`process.env.${key}`]: JSON.stringify(value)
46
+ }), {})
47
+ }
48
+ };
49
+ await (0, esbuild_1.build)(buildOptions);
50
+ return { success: true, outputPath: outfile };
51
+ }
52
+ catch (error) {
53
+ return { success: false, error: error };
54
+ }
55
+ }
56
+ startProcess(outputPath, options) {
57
+ if (this.process) {
58
+ this.process.kill();
59
+ }
60
+ this.process = (0, child_process_1.spawn)('node', [outputPath], {
61
+ stdio: 'inherit',
62
+ env: {
63
+ ...process.env,
64
+ PORT: options.port?.toString() || this.defaultPort.toString(),
65
+ NODE_ENV: 'development',
66
+ ...options.env
67
+ }
68
+ });
69
+ this.process.on('error', (err) => {
70
+ this.emit('error', err);
71
+ });
72
+ this.process.on('exit', (code) => {
73
+ if (code !== 0 && !this.isRestarting) {
74
+ this.emit('error', new Error(`Process exited with code ${code}`));
75
+ }
76
+ });
77
+ }
78
+ setupWatcher(options) {
79
+ if (this.watcher) {
80
+ this.watcher.close();
81
+ }
82
+ const watchPaths = [
83
+ options.entry,
84
+ (0, path_1.dirname)(options.entry)
85
+ ];
86
+ this.watcher = (0, chokidar_1.watch)(watchPaths, {
87
+ ignored: /(^|[\/\\])\../,
88
+ persistent: true
89
+ });
90
+ this.watcher.on('change', async (path) => {
91
+ console.log(chalk_1.default.blue(`${figures_1.default.info} File changed: ${path}`));
92
+ if (this.restartTimer) {
93
+ clearTimeout(this.restartTimer);
94
+ }
95
+ this.isRestarting = true;
96
+ this.restartTimer = setTimeout(async () => {
97
+ try {
98
+ const result = await this.build(options);
99
+ if (result.success && result.outputPath) {
100
+ this.startProcess(result.outputPath, options);
101
+ console.log(chalk_1.default.green(`${figures_1.default.tick} Restarted successfully`));
102
+ }
103
+ else {
104
+ console.error(chalk_1.default.red(`${figures_1.default.cross} Build failed: ${result.error?.message}`));
105
+ }
106
+ }
107
+ catch (error) {
108
+ console.error(chalk_1.default.red(`${figures_1.default.cross} Error during restart: ${error}`));
109
+ }
110
+ finally {
111
+ this.isRestarting = false;
112
+ }
113
+ }, 1000);
114
+ });
115
+ }
116
+ async dev(options) {
117
+ try {
118
+ console.log(chalk_1.default.blue(`${figures_1.default.info} Starting development server...`));
119
+ const result = await this.build(options);
120
+ if (!result.success || !result.outputPath) {
121
+ throw new Error(`Build failed: ${result.error?.message}`);
122
+ }
123
+ this.startProcess(result.outputPath, options);
124
+ if (options.watch) {
125
+ this.setupWatcher(options);
126
+ }
127
+ this.emit('start', { outputPath: result.outputPath });
128
+ }
129
+ catch (error) {
130
+ this.emit('error', error);
131
+ throw error;
132
+ }
133
+ }
134
+ async start(options) {
135
+ try {
136
+ const result = await this.build(options);
137
+ if (!result.success || !result.outputPath) {
138
+ throw new Error(`Build failed: ${result.error?.message}`);
139
+ }
140
+ console.log(chalk_1.default.blue(`${figures_1.default.info} Starting production server...`));
141
+ this.startProcess(result.outputPath, {
142
+ ...options,
143
+ env: {
144
+ ...options.env,
145
+ NODE_ENV: 'production'
146
+ }
147
+ });
148
+ this.emit('start', { outputPath: result.outputPath });
149
+ }
150
+ catch (error) {
151
+ this.emit('error', error);
152
+ throw error;
153
+ }
154
+ }
155
+ stop() {
156
+ if (this.process) {
157
+ this.process.kill();
158
+ this.process = null;
159
+ }
160
+ if (this.watcher) {
161
+ this.watcher.close();
162
+ this.watcher = null;
163
+ }
164
+ if (this.restartTimer) {
165
+ clearTimeout(this.restartTimer);
166
+ this.restartTimer = null;
167
+ }
168
+ this.emit('stop');
169
+ }
170
+ }
171
+ exports.devManager = new DevManager();
172
+ //# sourceMappingURL=dev-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-manager.js","sourceRoot":"","sources":["../src/dev-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { RunOptions, RunResult } from './types';
2
+ export { RunOptions, RunResult };
3
+ export interface neexOptions extends Partial<RunOptions> {
4
+ parallel?: boolean;
5
+ maxParallel?: number;
6
+ isServerMode?: boolean;
7
+ }
8
+ /**
9
+ * Run one or more commands with specified options
10
+ */
11
+ export declare function run(commands: string | string[], options?: neexOptions): Promise<RunResult[]>;
12
+ /**
13
+ * Run multiple commands in parallel
14
+ */
15
+ export declare function runParallel(commands: string | string[], options?: Omit<neexOptions, 'parallel'>): Promise<RunResult[]>;
16
+ /**
17
+ * Run multiple commands sequentially
18
+ */
19
+ export declare function runSequential(commands: string | string[], options?: Omit<neexOptions, 'parallel'>): Promise<RunResult[]>;
20
+ /**
21
+ * Run multiple servers with optimized output
22
+ */
23
+ export declare function runServers(commands: string | string[], options?: Omit<neexOptions, 'parallel' | 'isServerMode'>): Promise<RunResult[]>;
24
+ declare const _default: {
25
+ run: typeof run;
26
+ runParallel: typeof runParallel;
27
+ runSequential: typeof runSequential;
28
+ runServers: typeof runServers;
29
+ };
30
+ export default _default;
package/dist/index.js ADDED
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.run = run;
7
+ exports.runParallel = runParallel;
8
+ exports.runSequential = runSequential;
9
+ exports.runServers = runServers;
10
+ // src/index.ts - Simplified version
11
+ const runner_1 = require("./runner");
12
+ const logger_1 = __importDefault(require("./logger"));
13
+ /**
14
+ * Run one or more commands with specified options
15
+ */
16
+ async function run(commands, options) {
17
+ const cmdArray = Array.isArray(commands) ? commands : [commands];
18
+ const defaultOptions = {
19
+ parallel: false,
20
+ printOutput: true,
21
+ color: true,
22
+ showTiming: true,
23
+ prefix: true,
24
+ stopOnError: false,
25
+ minimalOutput: false,
26
+ groupOutput: false,
27
+ isServerMode: false
28
+ };
29
+ const runner = new runner_1.Runner({ ...defaultOptions, ...options });
30
+ const results = await runner.run(cmdArray);
31
+ if (options?.printOutput && cmdArray.length > 1) {
32
+ logger_1.default.printSummary(results);
33
+ }
34
+ return results;
35
+ }
36
+ /**
37
+ * Run multiple commands in parallel
38
+ */
39
+ async function runParallel(commands, options) {
40
+ return run(commands, { ...options, parallel: true });
41
+ }
42
+ /**
43
+ * Run multiple commands sequentially
44
+ */
45
+ async function runSequential(commands, options) {
46
+ return run(commands, { ...options, parallel: false });
47
+ }
48
+ /**
49
+ * Run multiple servers with optimized output
50
+ */
51
+ async function runServers(commands, options) {
52
+ return run(commands, {
53
+ ...options,
54
+ parallel: true,
55
+ isServerMode: true,
56
+ printOutput: true
57
+ });
58
+ }
59
+ exports.default = {
60
+ run,
61
+ runParallel,
62
+ runSequential,
63
+ runServers
64
+ };
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAgBA,kBAsBC;AAKD,kCAEC;AAKD,sCAEC;AAKD,gCAOC;AAhED,oCAAoC;AACpC,qCAAkC;AAElC,sDAA8B;AAU9B;;GAEG;AACI,KAAK,UAAU,GAAG,CAAC,QAA2B,EAAE,OAAqB;IACxE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjE,MAAM,cAAc,GAAe;QAC/B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,KAAK;QAClB,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;KACtB,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,OAAO,EAAE,WAAW,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,gBAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,WAAW,CAAC,QAA2B,EAAE,OAAuC;IAClG,OAAO,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,QAA2B,EAAE,OAAuC;IACpG,OAAO,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU,CAAC,QAA2B,EAAE,OAAwD;IAClH,OAAO,GAAG,CAAC,QAAQ,EAAE;QACjB,GAAG,OAAO;QACV,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,IAAI;KACpB,CAAC,CAAC;AACP,CAAC;AAED,kBAAe;IACX,GAAG;IACH,WAAW;IACX,aAAa;IACb,UAAU;CACb,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { CommandOutput, RunResult } from './types';
2
+ declare class Logger {
3
+ private static instance;
4
+ private prefixLength;
5
+ private outputBuffer;
6
+ private commandColors;
7
+ private startTimes;
8
+ private spinnerFrames;
9
+ private spinnerIndex;
10
+ private spinnerIntervals;
11
+ private isSpinnerActive;
12
+ private constructor();
13
+ static getInstance(): Logger;
14
+ private getSpinnerFrame;
15
+ private showBanner;
16
+ setCommands(commands: string[]): void;
17
+ private generateColor;
18
+ formatPrefix(command: string): string;
19
+ bufferOutput(output: CommandOutput): void;
20
+ printBuffer(command: string): void;
21
+ printLine(message: string, level?: 'info' | 'error' | 'warn'): void;
22
+ printStart(command: string): void;
23
+ startSpinner(command: string): void;
24
+ stopSpinner(command: string): void;
25
+ stopAllSpinners(): void;
26
+ printSuccess(result: RunResult): void;
27
+ printError(result: RunResult): void;
28
+ printSummary(results: RunResult[]): void;
29
+ }
30
+ declare const _default: Logger;
31
+ export default _default;
package/dist/logger.js ADDED
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ // src/logger.ts
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const figures_1 = __importDefault(require("figures"));
9
+ const string_width_1 = __importDefault(require("string-width"));
10
+ class Logger {
11
+ constructor() {
12
+ this.prefixLength = 0;
13
+ this.outputBuffer = new Map();
14
+ this.commandColors = new Map();
15
+ this.startTimes = new Map();
16
+ this.spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
17
+ this.spinnerIndex = 0;
18
+ this.spinnerIntervals = new Map();
19
+ this.isSpinnerActive = false;
20
+ }
21
+ static getInstance() {
22
+ if (!Logger.instance) {
23
+ Logger.instance = new Logger();
24
+ }
25
+ return Logger.instance;
26
+ }
27
+ getSpinnerFrame() {
28
+ const frame = this.spinnerFrames[this.spinnerIndex];
29
+ this.spinnerIndex = (this.spinnerIndex + 1) % this.spinnerFrames.length;
30
+ return frame;
31
+ }
32
+ showBanner() {
33
+ console.log('\n' + chalk_1.default.bgHex('#0066FF').black(' Neex ') + '\n');
34
+ }
35
+ setCommands(commands) {
36
+ // Clear any existing spinner intervals
37
+ this.stopAllSpinners();
38
+ // Show Neex banner
39
+ this.showBanner();
40
+ // Calculate prefix length for aligning output
41
+ this.prefixLength = Math.max(...commands.map(cmd => (0, string_width_1.default)(cmd))) + 3;
42
+ // Initialize buffers and colors for each command
43
+ commands.forEach(cmd => {
44
+ this.outputBuffer.set(cmd, []);
45
+ this.commandColors.set(cmd, this.generateColor(cmd));
46
+ });
47
+ // Log commands that will be executed
48
+ console.log(chalk_1.default.dim('» Commands to execute:'));
49
+ commands.forEach(cmd => {
50
+ const color = this.commandColors.get(cmd) || chalk_1.default.white;
51
+ console.log(chalk_1.default.dim(' ┌') + color(` ${cmd}`));
52
+ });
53
+ console.log(''); // Add a blank line after commands list
54
+ }
55
+ generateColor(command) {
56
+ // Generate distinct colors for commands based on the command string
57
+ const vibrantColors = [
58
+ '#00BFFF', // Deep Sky Blue
59
+ '#32CD32', // Lime Green
60
+ '#FF6347', // Tomato
61
+ '#9370DB', // Medium Purple
62
+ '#FF8C00', // Dark Orange
63
+ '#20B2AA', // Light Sea Green
64
+ '#0066FF', // Deep Pink
65
+ '#4169E1', // Royal Blue
66
+ '#FFD700', // Gold
67
+ '#8A2BE2' // Blue Violet
68
+ ];
69
+ let hash = 0;
70
+ for (let i = 0; i < command.length; i++) {
71
+ hash = (hash << 5) - hash + command.charCodeAt(i);
72
+ hash |= 0; // Convert to 32bit integer
73
+ }
74
+ const colorIndex = Math.abs(hash) % vibrantColors.length;
75
+ return chalk_1.default.hex(vibrantColors[colorIndex]);
76
+ }
77
+ formatPrefix(command) {
78
+ const color = this.commandColors.get(command) || chalk_1.default.white;
79
+ const prefix = `${command}:`.padEnd(this.prefixLength);
80
+ return color(prefix);
81
+ }
82
+ bufferOutput(output) {
83
+ const currentBuffer = this.outputBuffer.get(output.command) || [];
84
+ currentBuffer.push(output);
85
+ this.outputBuffer.set(output.command, currentBuffer);
86
+ }
87
+ printBuffer(command) {
88
+ const buffer = this.outputBuffer.get(command) || [];
89
+ const color = this.commandColors.get(command) || chalk_1.default.white;
90
+ // Stop spinner for this command if running
91
+ this.stopSpinner(command);
92
+ buffer.forEach(output => {
93
+ const prefix = this.formatPrefix(output.command);
94
+ const content = output.data.trim();
95
+ if (content) {
96
+ const lines = content.split('\n');
97
+ lines.forEach(line => {
98
+ if (line.trim()) {
99
+ const outputLine = `${prefix} ${line}`;
100
+ // Show stderr in appropriate colors
101
+ if (output.type === 'stderr') {
102
+ // Not all stderr is an error, check for warning or info patterns
103
+ if (line.toLowerCase().includes('warn') || line.toLowerCase().includes('warning')) {
104
+ console.log(`${prefix} ${chalk_1.default.yellow(line)}`);
105
+ }
106
+ else if (line.toLowerCase().includes('error')) {
107
+ console.log(`${prefix} ${chalk_1.default.red(line)}`);
108
+ }
109
+ else {
110
+ console.log(`${prefix} ${line}`);
111
+ }
112
+ }
113
+ else {
114
+ console.log(outputLine);
115
+ }
116
+ }
117
+ });
118
+ }
119
+ });
120
+ // Clear buffer after printing
121
+ this.outputBuffer.set(command, []);
122
+ }
123
+ printLine(message, level = 'info') {
124
+ if (level === 'error') {
125
+ console.error(chalk_1.default.red(`${figures_1.default.cross} ${message}`));
126
+ }
127
+ else if (level === 'warn') {
128
+ console.warn(chalk_1.default.yellow(`${figures_1.default.warning} ${message}`));
129
+ }
130
+ else {
131
+ console.log(chalk_1.default.blue(`${figures_1.default.info} ${message}`));
132
+ }
133
+ }
134
+ printStart(command) {
135
+ // Record start time
136
+ this.startTimes.set(command, new Date());
137
+ const prefix = this.formatPrefix(command);
138
+ const color = this.commandColors.get(command) || chalk_1.default.white;
139
+ console.log(`${prefix} ${color('Starting...')}`);
140
+ // Start spinner for this command
141
+ this.startSpinner(command);
142
+ }
143
+ startSpinner(command) {
144
+ // Only create a spinner if one doesn't already exist for this command
145
+ if (this.spinnerIntervals.has(command)) {
146
+ return;
147
+ }
148
+ this.isSpinnerActive = true;
149
+ const color = this.commandColors.get(command) || chalk_1.default.white;
150
+ const prefix = this.formatPrefix(command);
151
+ const interval = setInterval(() => {
152
+ const frame = this.getSpinnerFrame();
153
+ process.stdout.write(`\r${prefix} ${color(frame)} ${chalk_1.default.dim('Running...')}`);
154
+ }, 80);
155
+ this.spinnerIntervals.set(command, interval);
156
+ }
157
+ stopSpinner(command) {
158
+ const interval = this.spinnerIntervals.get(command);
159
+ if (interval) {
160
+ clearInterval(interval);
161
+ this.spinnerIntervals.delete(command);
162
+ // Clear the spinner line
163
+ if (this.isSpinnerActive) {
164
+ process.stdout.write('\r' + ' '.repeat(process.stdout.columns || 80) + '\r');
165
+ }
166
+ }
167
+ }
168
+ stopAllSpinners() {
169
+ this.spinnerIntervals.forEach((interval, command) => {
170
+ clearInterval(interval);
171
+ });
172
+ this.spinnerIntervals.clear();
173
+ this.isSpinnerActive = false;
174
+ // Clear the spinner line if any spinner was active
175
+ if (this.isSpinnerActive) {
176
+ process.stdout.write('\r' + ' '.repeat(process.stdout.columns || 80) + '\r');
177
+ }
178
+ }
179
+ printSuccess(result) {
180
+ const { command, duration } = result;
181
+ this.stopSpinner(command);
182
+ const prefix = this.formatPrefix(command);
183
+ const color = this.commandColors.get(command) || chalk_1.default.white;
184
+ const durationStr = duration
185
+ ? ` ${chalk_1.default.dim(`(${(duration / 1000).toFixed(2)}s)`)}`
186
+ : '';
187
+ console.log(`${prefix} ${chalk_1.default.green(figures_1.default.tick)} ${chalk_1.default.green('Completed')}${durationStr}`);
188
+ }
189
+ printError(result) {
190
+ const { command, error, code, duration } = result;
191
+ this.stopSpinner(command);
192
+ const prefix = this.formatPrefix(command);
193
+ const durationStr = duration ? ` ${chalk_1.default.dim(`(${(duration / 1000).toFixed(2)}s)`)}` : '';
194
+ const errorCode = code !== null ? ` ${chalk_1.default.red(`[code: ${code}]`)}` : '';
195
+ console.error(`${prefix} ${chalk_1.default.red(figures_1.default.cross)} ${chalk_1.default.red('Failed')}${errorCode}${durationStr}`);
196
+ if (error) {
197
+ console.error(`${prefix} ${chalk_1.default.red(error.message)}`);
198
+ }
199
+ }
200
+ printSummary(results) {
201
+ // Stop any remaining spinners
202
+ this.stopAllSpinners();
203
+ const successful = results.filter(r => r.success).length;
204
+ const failed = results.length - successful;
205
+ const totalDuration = results.reduce((sum, result) => sum + (result.duration || 0), 0);
206
+ const totalSeconds = (totalDuration / 1000).toFixed(2);
207
+ console.log('\n' + chalk_1.default.bgHex('#0066FF').black(' Execution Summary ') + '\n');
208
+ console.log(`${chalk_1.default.green(`${figures_1.default.tick} ${successful} succeeded`)}, ${chalk_1.default.red(`${figures_1.default.cross} ${failed} failed`)}`);
209
+ console.log(`${chalk_1.default.blue(figures_1.default.info)} ${chalk_1.default.dim(`Total execution time: ${totalSeconds}s`)}`);
210
+ if (successful > 0) {
211
+ console.log('\n' + chalk_1.default.green.bold('Successful commands:'));
212
+ results
213
+ .filter(r => r.success)
214
+ .forEach(result => {
215
+ const color = this.commandColors.get(result.command) || chalk_1.default.white;
216
+ const duration = result.duration
217
+ ? chalk_1.default.dim(` (${(result.duration / 1000).toFixed(2)}s)`)
218
+ : '';
219
+ console.log(` ${chalk_1.default.green(figures_1.default.tick)} ${color(result.command)}${duration}`);
220
+ });
221
+ }
222
+ if (failed > 0) {
223
+ console.log('\n' + chalk_1.default.red.bold('Failed commands:'));
224
+ results
225
+ .filter(r => !r.success)
226
+ .forEach(result => {
227
+ const color = this.commandColors.get(result.command) || chalk_1.default.white;
228
+ const duration = result.duration
229
+ ? chalk_1.default.dim(` (${(result.duration / 1000).toFixed(2)}s)`)
230
+ : '';
231
+ const code = result.code !== null ? chalk_1.default.red(` [code: ${result.code}]`) : '';
232
+ console.log(` ${chalk_1.default.red(figures_1.default.cross)} ${color(result.command)}${code}${duration}`);
233
+ });
234
+ }
235
+ }
236
+ }
237
+ exports.default = Logger.getInstance();
238
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { EventEmitter } from 'events';
2
+ interface ProcessInfo {
3
+ name: string;
4
+ pid: number;
5
+ status: 'running' | 'stopped' | 'error' | 'restarting';
6
+ startTime: number;
7
+ command: string;
8
+ logs: string[];
9
+ memory: number;
10
+ cpu: number;
11
+ uptime: number;
12
+ restarts: number;
13
+ lastError?: string;
14
+ maxRestarts: number;
15
+ restartDelay: number;
16
+ watch?: boolean;
17
+ cwd?: string;
18
+ env?: Record<string, string>;
19
+ }
20
+ declare class ProcessManager extends EventEmitter {
21
+ private processes;
22
+ private watchers;
23
+ private logDir;
24
+ private configFile;
25
+ private defaultMaxRestarts;
26
+ private defaultRestartDelay;
27
+ private defaultOutDir;
28
+ private defaultPort;
29
+ constructor();
30
+ private initialize;
31
+ private loadConfig;
32
+ private saveConfig;
33
+ getLogPath(name: string): string;
34
+ startProcess(command: string, options?: {
35
+ name?: string;
36
+ watch?: boolean;
37
+ maxRestarts?: number;
38
+ restartDelay?: number;
39
+ cwd?: string;
40
+ env?: Record<string, string>;
41
+ }): Promise<ProcessInfo>;
42
+ private startProcessInternal;
43
+ private getProcessStats;
44
+ stop(name: string): Promise<void>;
45
+ monit(name: string): void;
46
+ list(): void;
47
+ log(name: string, lines?: number): void;
48
+ private restart;
49
+ startx(command: string, options?: {
50
+ name?: string;
51
+ watch?: boolean;
52
+ maxRestarts?: number;
53
+ restartDelay?: number;
54
+ cwd?: string;
55
+ env?: Record<string, string>;
56
+ }): Promise<ProcessInfo>;
57
+ stopx(name: string): Promise<void>;
58
+ private generateName;
59
+ }
60
+ export declare const processManager: ProcessManager;
61
+ export {};