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,279 @@
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.processManager = void 0;
7
+ const child_process_1 = require("child_process");
8
+ const chokidar_1 = require("chokidar");
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const figures_1 = __importDefault(require("figures"));
13
+ const events_1 = require("events");
14
+ const cli_table3_1 = __importDefault(require("cli-table3"));
15
+ const child_process_2 = require("child_process");
16
+ const logger_1 = __importDefault(require("./logger"));
17
+ class ProcessManager extends events_1.EventEmitter {
18
+ constructor() {
19
+ super();
20
+ this.processes = new Map();
21
+ this.watchers = new Map();
22
+ this.defaultMaxRestarts = 5;
23
+ this.defaultRestartDelay = 1000;
24
+ this.defaultOutDir = 'dist';
25
+ this.defaultPort = 3000;
26
+ this.logDir = (0, path_1.resolve)(process.cwd(), '.neex-logs');
27
+ this.configFile = (0, path_1.resolve)(process.cwd(), '.neex-config.json');
28
+ this.initialize();
29
+ }
30
+ initialize() {
31
+ if (!(0, fs_1.existsSync)(this.logDir)) {
32
+ (0, fs_1.mkdirSync)(this.logDir, { recursive: true });
33
+ }
34
+ this.loadConfig();
35
+ }
36
+ loadConfig() {
37
+ if ((0, fs_1.existsSync)(this.configFile)) {
38
+ const config = JSON.parse((0, fs_1.readFileSync)(this.configFile, 'utf-8'));
39
+ this.processes = new Map(Object.entries(config));
40
+ }
41
+ }
42
+ saveConfig() {
43
+ const config = Object.fromEntries(this.processes);
44
+ (0, fs_1.writeFileSync)(this.configFile, JSON.stringify(config, null, 2));
45
+ }
46
+ getLogPath(name) {
47
+ return (0, path_1.join)(this.logDir, `${name}.log`);
48
+ }
49
+ async startProcess(command, options = {}) {
50
+ const name = options.name || this.generateName(command);
51
+ const cwd = options.cwd || process.cwd();
52
+ if (this.processes.has(name)) {
53
+ throw new Error(`Process with name ${name} already exists`);
54
+ }
55
+ const processInfo = {
56
+ name,
57
+ pid: 0,
58
+ status: 'stopped',
59
+ startTime: Date.now(),
60
+ command,
61
+ logs: [],
62
+ memory: 0,
63
+ cpu: 0,
64
+ uptime: 0,
65
+ restarts: 0,
66
+ maxRestarts: options.maxRestarts || this.defaultMaxRestarts,
67
+ restartDelay: options.restartDelay || this.defaultRestartDelay,
68
+ watch: options.watch,
69
+ cwd,
70
+ env: options.env
71
+ };
72
+ try {
73
+ await this.startProcessInternal(processInfo);
74
+ return processInfo;
75
+ }
76
+ catch (error) {
77
+ processInfo.status = 'error';
78
+ processInfo.lastError = error.message;
79
+ this.processes.set(name, processInfo);
80
+ this.saveConfig();
81
+ throw error;
82
+ }
83
+ }
84
+ async startProcessInternal(processInfo) {
85
+ const [cmd, ...args] = processInfo.command.split(' ');
86
+ const child = (0, child_process_1.spawn)(cmd, args, {
87
+ stdio: ['ignore', 'pipe', 'pipe'],
88
+ env: {
89
+ ...process.env,
90
+ NODE_ENV: 'production',
91
+ ...processInfo.env
92
+ },
93
+ cwd: processInfo.cwd,
94
+ shell: true
95
+ });
96
+ processInfo.pid = child.pid || 0;
97
+ processInfo.status = 'running';
98
+ processInfo.startTime = Date.now();
99
+ // Setup logging
100
+ (0, fs_1.writeFileSync)(this.getLogPath(processInfo.name), '', { flag: 'a' });
101
+ child.stdout?.on('data', (data) => {
102
+ const log = data.toString();
103
+ processInfo.logs.push(log);
104
+ (0, fs_1.writeFileSync)(this.getLogPath(processInfo.name), log, { flag: 'a' });
105
+ this.emit('log', { name: processInfo.name, log });
106
+ });
107
+ child.stderr?.on('data', (data) => {
108
+ const log = data.toString();
109
+ processInfo.logs.push(log);
110
+ (0, fs_1.writeFileSync)(this.getLogPath(processInfo.name), log, { flag: 'a' });
111
+ this.emit('error', { name: processInfo.name, log });
112
+ });
113
+ // Setup monitoring
114
+ if (processInfo.watch && processInfo.cwd) {
115
+ const watcher = (0, chokidar_1.watch)(processInfo.cwd, {
116
+ ignored: /(^|[\/\\])\../,
117
+ persistent: true
118
+ });
119
+ watcher.on('change', () => {
120
+ this.restart(processInfo.name);
121
+ });
122
+ this.watchers.set(processInfo.name, watcher);
123
+ }
124
+ // Monitor process
125
+ const monitorInterval = setInterval(() => {
126
+ if (child.pid) {
127
+ try {
128
+ const stats = this.getProcessStats(child.pid);
129
+ processInfo.memory = stats.memory;
130
+ processInfo.cpu = stats.cpu;
131
+ processInfo.uptime = (Date.now() - processInfo.startTime) / 1000;
132
+ this.emit('stats', { name: processInfo.name, stats: processInfo });
133
+ }
134
+ catch (error) {
135
+ console.error(`Error monitoring process ${processInfo.name}:`, error);
136
+ }
137
+ }
138
+ }, 1000);
139
+ child.on('exit', async (code) => {
140
+ clearInterval(monitorInterval);
141
+ if (code !== 0) {
142
+ processInfo.status = 'error';
143
+ processInfo.lastError = `Process exited with code ${code}`;
144
+ this.emit('error', { name: processInfo.name, code });
145
+ if (processInfo.restarts < processInfo.maxRestarts) {
146
+ processInfo.status = 'restarting';
147
+ this.emit('restart', { name: processInfo.name, attempt: processInfo.restarts + 1 });
148
+ await new Promise(resolve => setTimeout(resolve, processInfo.restartDelay));
149
+ processInfo.restarts++;
150
+ await this.startProcessInternal(processInfo);
151
+ }
152
+ else {
153
+ this.emit('max-restarts', { name: processInfo.name, maxRestarts: processInfo.maxRestarts });
154
+ }
155
+ }
156
+ else {
157
+ processInfo.status = 'stopped';
158
+ }
159
+ this.saveConfig();
160
+ });
161
+ this.processes.set(processInfo.name, processInfo);
162
+ this.saveConfig();
163
+ this.emit('start', { name: processInfo.name, processInfo });
164
+ }
165
+ getProcessStats(pid) {
166
+ try {
167
+ const stats = (0, child_process_2.execSync)(`ps -p ${pid} -o %mem,%cpu`).toString().split('\n')[1].trim().split(/\s+/);
168
+ return {
169
+ memory: parseFloat(stats[0]),
170
+ cpu: parseFloat(stats[1])
171
+ };
172
+ }
173
+ catch {
174
+ return { memory: 0, cpu: 0 };
175
+ }
176
+ }
177
+ async stop(name) {
178
+ const processInfo = this.processes.get(name);
179
+ if (!processInfo) {
180
+ throw new Error(`Process ${name} not found`);
181
+ }
182
+ try {
183
+ process.kill(processInfo.pid);
184
+ const watcher = this.watchers.get(name);
185
+ if (watcher) {
186
+ watcher.close();
187
+ this.watchers.delete(name);
188
+ }
189
+ this.processes.delete(name);
190
+ this.saveConfig();
191
+ this.emit('stop', { name });
192
+ }
193
+ catch (error) {
194
+ throw new Error(`Failed to stop process ${name}: ${error.message}`);
195
+ }
196
+ }
197
+ monit(name) {
198
+ const processInfo = this.processes.get(name);
199
+ if (!processInfo) {
200
+ throw new Error(`Process ${name} not found`);
201
+ }
202
+ console.log(chalk_1.default.blue(`${figures_1.default.info} Monitoring process ${name}...`));
203
+ console.log(chalk_1.default.cyan('Press Ctrl+C to stop monitoring'));
204
+ const interval = setInterval(() => {
205
+ if (!this.processes.has(name)) {
206
+ clearInterval(interval);
207
+ return;
208
+ }
209
+ const stats = this.getProcessStats(processInfo.pid);
210
+ console.clear();
211
+ console.log(chalk_1.default.blue(`${figures_1.default.info} Process ${name} stats:`));
212
+ console.log(chalk_1.default.cyan('Memory:'), `${stats.memory.toFixed(1)}%`);
213
+ console.log(chalk_1.default.cyan('CPU:'), `${stats.cpu.toFixed(1)}%`);
214
+ console.log(chalk_1.default.cyan('Uptime:'), `${processInfo.uptime.toFixed(1)}s`);
215
+ console.log(chalk_1.default.cyan('Restarts:'), processInfo.restarts);
216
+ }, 1000);
217
+ process.on('SIGINT', () => {
218
+ clearInterval(interval);
219
+ process.exit(0);
220
+ });
221
+ }
222
+ list() {
223
+ const table = new cli_table3_1.default({
224
+ head: ['Name', 'Status', 'PID', 'Memory', 'CPU', 'Uptime', 'Restarts'],
225
+ style: { head: ['cyan'] }
226
+ });
227
+ Array.from(this.processes.values()).forEach(process => {
228
+ const statusColor = process.status === 'running' ? 'green' :
229
+ process.status === 'error' ? 'red' :
230
+ process.status === 'restarting' ? 'yellow' : 'gray';
231
+ table.push([
232
+ process.name,
233
+ chalk_1.default[statusColor](process.status),
234
+ process.pid || '-',
235
+ `${process.memory.toFixed(1)}%`,
236
+ `${process.cpu.toFixed(1)}%`,
237
+ `${process.uptime.toFixed(1)}s`,
238
+ process.restarts
239
+ ]);
240
+ });
241
+ console.log(table.toString());
242
+ }
243
+ log(name, lines = 100) {
244
+ const processInfo = this.processes.get(name);
245
+ if (!processInfo) {
246
+ throw new Error(`Process ${name} not found`);
247
+ }
248
+ const logPath = this.getLogPath(name);
249
+ if (!(0, fs_1.existsSync)(logPath)) {
250
+ logger_1.default.printLine(`No logs found for process ${name}`, 'warn');
251
+ return;
252
+ }
253
+ const logs = (0, fs_1.readFileSync)(logPath, 'utf-8').split('\n').slice(-lines);
254
+ logger_1.default.printLine(`Last ${lines} lines of logs for process ${name}:`, 'info');
255
+ logs.forEach(log => logger_1.default.printLine(log, 'info'));
256
+ }
257
+ async restart(name) {
258
+ const processInfo = this.processes.get(name);
259
+ if (!processInfo) {
260
+ throw new Error(`Process ${name} not found`);
261
+ }
262
+ console.log(chalk_1.default.yellow(`${figures_1.default.info} Restarting process ${name}...`));
263
+ await this.stop(name);
264
+ await this.startProcessInternal(processInfo);
265
+ }
266
+ async startx(command, options = {}) {
267
+ return this.startProcess(command, options);
268
+ }
269
+ async stopx(name) {
270
+ return this.stop(name);
271
+ }
272
+ generateName(command) {
273
+ const baseName = command.split(' ')[0].replace(/[^a-zA-Z0-9]/g, '');
274
+ const timestamp = Date.now().toString(36);
275
+ return `${baseName}-${timestamp}`;
276
+ }
277
+ }
278
+ exports.processManager = new ProcessManager();
279
+ //# sourceMappingURL=process-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../src/process-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ export interface CacheStats {
2
+ size: string;
3
+ files: number;
4
+ lastUpdated: string;
5
+ }
6
+ export declare class ProjectManager {
7
+ private tsRunner;
8
+ private server;
9
+ private watcher;
10
+ constructor();
11
+ startDev(options: {
12
+ entry: string;
13
+ port: string;
14
+ watch: string[];
15
+ ignore: string[];
16
+ ext: string[];
17
+ delay: string;
18
+ clear: boolean;
19
+ cache: boolean;
20
+ compiler: string;
21
+ inspect: boolean;
22
+ inspectBrk: boolean;
23
+ }): Promise<void>;
24
+ build(options: {
25
+ outDir: string;
26
+ minify: boolean;
27
+ sourcemap: boolean;
28
+ watch: boolean;
29
+ compiler: string;
30
+ target: string;
31
+ }): Promise<void>;
32
+ start(options: {
33
+ port: string;
34
+ outDir: string;
35
+ entry: string;
36
+ inspect: boolean;
37
+ cluster: boolean;
38
+ workers: string;
39
+ maxMemory: string;
40
+ healthCheck: boolean;
41
+ }): Promise<void>;
42
+ private startServer;
43
+ private setupFileWatcher;
44
+ private setupCleanup;
45
+ private getBuildCommand;
46
+ private startProductionServer;
47
+ private handleError;
48
+ clearCache(): void;
49
+ getCacheStats(): CacheStats;
50
+ getCachePath(): string;
51
+ }
@@ -0,0 +1,252 @@
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.ProjectManager = void 0;
7
+ const child_process_1 = require("child_process");
8
+ const path_1 = require("path");
9
+ const fs_1 = require("fs");
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const figures_1 = __importDefault(require("figures"));
12
+ const chokidar_1 = require("chokidar");
13
+ const typescript_runner_js_1 = require("./typescript-runner.js");
14
+ const child_process_2 = require("child_process");
15
+ const logger_js_1 = __importDefault(require("./logger.js"));
16
+ class ProjectManager {
17
+ constructor() {
18
+ this.server = null;
19
+ this.watcher = null;
20
+ this.tsRunner = new typescript_runner_js_1.FastTypeScriptRunner();
21
+ }
22
+ async startDev(options) {
23
+ try {
24
+ const entryPath = (0, path_1.resolve)(process.cwd(), options.entry);
25
+ if (!(0, fs_1.existsSync)(entryPath)) {
26
+ throw new Error(`Entry file ${options.entry} not found`);
27
+ }
28
+ console.log(chalk_1.default.blue(`${figures_1.default.info} Starting development server with ${this.tsRunner['compiler']} compiler...`));
29
+ await this.startServer(entryPath, options);
30
+ this.setupFileWatcher(options);
31
+ this.setupCleanup();
32
+ }
33
+ catch (error) {
34
+ this.handleError(error);
35
+ }
36
+ }
37
+ async build(options) {
38
+ try {
39
+ console.log(chalk_1.default.blue(`${figures_1.default.info} Building project...`));
40
+ const startTime = Date.now();
41
+ const compiler = options.compiler === 'auto' ? this.tsRunner['compiler'] : options.compiler;
42
+ const buildCommand = this.getBuildCommand(compiler, options);
43
+ const build = (0, child_process_1.spawn)('sh', ['-c', buildCommand], {
44
+ stdio: 'inherit'
45
+ });
46
+ build.on('close', (code) => {
47
+ if (code === 0) {
48
+ const buildTime = Date.now() - startTime;
49
+ console.log(chalk_1.default.green(`${figures_1.default.tick} Build completed successfully in ${buildTime}ms`));
50
+ console.log(chalk_1.default.blue(`${figures_1.default.info} Output: ${options.outDir}`));
51
+ }
52
+ else {
53
+ console.error(chalk_1.default.red(`${figures_1.default.cross} Build failed with code ${code}`));
54
+ process.exit(code ?? 1);
55
+ }
56
+ });
57
+ }
58
+ catch (error) {
59
+ this.handleError(error);
60
+ }
61
+ }
62
+ async start(options) {
63
+ try {
64
+ const outDir = options.outDir;
65
+ const entryFile = options.entry;
66
+ const entryPath = (0, path_1.resolve)(process.cwd(), outDir, entryFile);
67
+ if (!(0, fs_1.existsSync)(entryPath)) {
68
+ console.log(chalk_1.default.yellow(`${figures_1.default.warning} Build not found. Building project first...`));
69
+ await this.build({ outDir: 'dist', minify: false, sourcemap: false, watch: false, compiler: 'auto', target: 'ES2022' });
70
+ }
71
+ this.startProductionServer(entryPath, options);
72
+ }
73
+ catch (error) {
74
+ this.handleError(error);
75
+ }
76
+ }
77
+ async startServer(entryPath, options) {
78
+ if (this.server) {
79
+ this.server.kill('SIGTERM');
80
+ await new Promise(resolve => setTimeout(resolve, 100));
81
+ }
82
+ try {
83
+ const startTime = Date.now();
84
+ let executablePath = entryPath;
85
+ // Check if file is TypeScript
86
+ if (entryPath.endsWith('.ts')) {
87
+ executablePath = await this.tsRunner.compile(entryPath);
88
+ const compileTime = Date.now() - startTime;
89
+ console.log(chalk_1.default.green(`${figures_1.default.tick} Compiled in ${compileTime}ms`));
90
+ }
91
+ else {
92
+ console.log(chalk_1.default.blue(`${figures_1.default.info} Using JavaScript file directly`));
93
+ }
94
+ const nodeArgs = [];
95
+ if (options.inspect)
96
+ nodeArgs.push('--inspect');
97
+ if (options.inspectBrk)
98
+ nodeArgs.push('--inspect-brk');
99
+ this.server = (0, child_process_1.spawn)('node', [...nodeArgs, executablePath], {
100
+ stdio: 'inherit',
101
+ env: {
102
+ ...process.env,
103
+ PORT: options.port,
104
+ NODE_ENV: 'development',
105
+ TS_NODE_DEV: 'true'
106
+ }
107
+ });
108
+ this.server.on('error', (err) => {
109
+ console.error(chalk_1.default.red(`${figures_1.default.cross} Server error: ${err.message}`));
110
+ });
111
+ this.server.on('exit', (code, signal) => {
112
+ if (code !== 0 && signal !== 'SIGTERM') {
113
+ console.error(chalk_1.default.red(`${figures_1.default.cross} Server crashed with code ${code}`));
114
+ }
115
+ });
116
+ console.log(chalk_1.default.green(`${figures_1.default.tick} Server started on port ${options.port}`));
117
+ }
118
+ catch (error) {
119
+ console.error(chalk_1.default.red(`${figures_1.default.cross} Error: ${error}`));
120
+ }
121
+ }
122
+ setupFileWatcher(options) {
123
+ this.watcher = (0, chokidar_1.watch)(options.watch, {
124
+ ignored: [
125
+ ...options.ignore,
126
+ /(^|[\/\\])\../,
127
+ '**/*.map',
128
+ '**/*.d.ts',
129
+ '**/node_modules/**'
130
+ ],
131
+ persistent: true,
132
+ ignoreInitial: true,
133
+ awaitWriteFinish: {
134
+ stabilityThreshold: 200,
135
+ pollInterval: 50
136
+ }
137
+ });
138
+ let restartTimer = null;
139
+ let isRestarting = false;
140
+ const handleFileChange = (path, event) => {
141
+ const ext = path.split('.').pop()?.toLowerCase();
142
+ if (!options.ext.includes(ext)) {
143
+ return;
144
+ }
145
+ if (restartTimer) {
146
+ clearTimeout(restartTimer);
147
+ }
148
+ isRestarting = true;
149
+ restartTimer = setTimeout(() => {
150
+ if (options.clear) {
151
+ process.stdout.write('\x1Bc');
152
+ }
153
+ console.log(chalk_1.default.yellow(`${figures_1.default.info} ${event}: ${path}`));
154
+ console.log(chalk_1.default.yellow(`${figures_1.default.info} Restarting server...`));
155
+ this.startServer((0, path_1.resolve)(process.cwd(), options.entry), options).then(() => {
156
+ isRestarting = false;
157
+ });
158
+ }, parseInt(options.delay));
159
+ };
160
+ this.watcher
161
+ .on('change', (path) => handleFileChange(path, 'Changed'))
162
+ .on('add', (path) => handleFileChange(path, 'Added'))
163
+ .on('unlink', (path) => handleFileChange(path, 'Removed'));
164
+ }
165
+ setupCleanup() {
166
+ const handleSignal = (signal) => {
167
+ console.log(`\n${chalk_1.default.yellow(`${figures_1.default.warning} Received ${signal}. Cleaning up...`)}`);
168
+ if (this.server) {
169
+ this.server.kill('SIGTERM');
170
+ }
171
+ if (this.watcher) {
172
+ this.watcher.close();
173
+ }
174
+ setTimeout(() => process.exit(0), 500);
175
+ };
176
+ process.on('SIGINT', () => handleSignal('SIGINT'));
177
+ process.on('SIGTERM', () => handleSignal('SIGTERM'));
178
+ process.on('SIGQUIT', () => handleSignal('SIGQUIT'));
179
+ }
180
+ getBuildCommand(compiler, options) {
181
+ switch (compiler) {
182
+ case 'swc':
183
+ return `npx swc src -d ${options.outDir} --config-file .swcrc`;
184
+ case 'esbuild':
185
+ return `npx esbuild src/**/*.ts --outdir=${options.outDir} --platform=node --target=node18 --format=cjs${options.sourcemap ? ' --sourcemap' : ''}${options.minify ? ' --minify' : ''}`;
186
+ default:
187
+ return `npx tsc --outDir ${options.outDir}${options.sourcemap ? ' --sourceMap' : ''}`;
188
+ }
189
+ }
190
+ startProductionServer(entryPath, options) {
191
+ console.log(chalk_1.default.blue(`${figures_1.default.info} Starting production server...`));
192
+ const nodeArgs = [];
193
+ if (options.inspect)
194
+ nodeArgs.push('--inspect');
195
+ if (options.maxMemory)
196
+ nodeArgs.push(`--max-old-space-size=${options.maxMemory.replace('M', '')}`);
197
+ let serverCommand = 'node';
198
+ let serverArgs = [...nodeArgs, entryPath];
199
+ if (options.cluster) {
200
+ serverCommand = 'npx';
201
+ serverArgs = ['pm2', 'start', entryPath, '--name', 'neex-app', '--instances', options.workers || 'max'];
202
+ }
203
+ this.server = (0, child_process_1.spawn)(serverCommand, serverArgs, {
204
+ stdio: 'inherit',
205
+ env: {
206
+ ...process.env,
207
+ PORT: options.port,
208
+ NODE_ENV: 'production'
209
+ }
210
+ });
211
+ this.server.on('error', (err) => {
212
+ console.error(chalk_1.default.red(`${figures_1.default.cross} Server error: ${err.message}`));
213
+ process.exit(1);
214
+ });
215
+ console.log(chalk_1.default.green(`${figures_1.default.tick} Production server started on port ${options.port}`));
216
+ }
217
+ handleError(error) {
218
+ if (error instanceof Error) {
219
+ logger_js_1.default.printLine(`Error: ${error.message}`, 'error');
220
+ }
221
+ else {
222
+ logger_js_1.default.printLine('An unknown error occurred', 'error');
223
+ }
224
+ process.exit(1);
225
+ }
226
+ clearCache() {
227
+ this.tsRunner.clearCache();
228
+ }
229
+ getCacheStats() {
230
+ const cacheDir = (0, path_1.join)(process.cwd(), '.neex', 'cache');
231
+ if (!(0, fs_1.existsSync)(cacheDir)) {
232
+ return {
233
+ size: '0B',
234
+ files: 0,
235
+ lastUpdated: 'Never'
236
+ };
237
+ }
238
+ const size = (0, child_process_2.execSync)(`du -sh ${cacheDir}`, { encoding: 'utf8' }).trim().split('\t')[0];
239
+ const files = (0, child_process_2.execSync)(`find ${cacheDir} -type f | wc -l`, { encoding: 'utf8' }).trim();
240
+ const lastUpdated = (0, child_process_2.execSync)(`stat -f "%Sm" ${cacheDir}`, { encoding: 'utf8' }).trim();
241
+ return {
242
+ size,
243
+ files: parseInt(files),
244
+ lastUpdated
245
+ };
246
+ }
247
+ getCachePath() {
248
+ return (0, path_1.join)(process.cwd(), '.neex', 'cache');
249
+ }
250
+ }
251
+ exports.ProjectManager = ProjectManager;
252
+ //# sourceMappingURL=project-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-manager.js","sourceRoot":"","sources":["../src/project-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { RunOptions, RunResult } from './types';
2
+ export declare class Runner {
3
+ private options;
4
+ private activeProcesses;
5
+ private serverInfo;
6
+ private portRegex;
7
+ private urlRegex;
8
+ constructor(options: RunOptions);
9
+ private resolveScriptAndCwd;
10
+ detectServerInfo(command: string, data: string): void;
11
+ runCommand(originalCommand: string): Promise<RunResult>;
12
+ runSequential(commands: string[]): Promise<RunResult[]>;
13
+ runParallel(commands: string[]): Promise<RunResult[]>;
14
+ run(commands: string[]): Promise<RunResult[]>;
15
+ cleanup(signal?: NodeJS.Signals): void;
16
+ }