neex 0.7.20 → 0.7.31
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 +13 -31
- package/dist/bin/neex.d.ts +26 -0
- package/dist/bin/neex.d.ts.map +1 -0
- package/dist/src/build-manager.d.ts +41 -0
- package/dist/src/build-manager.d.ts.map +1 -0
- package/dist/src/build-manager.js +26 -24
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/commands/build-commands.d.ts +5 -0
- package/dist/src/commands/build-commands.d.ts.map +1 -0
- package/dist/src/commands/build-commands.js +2 -2
- package/dist/src/commands/dev-commands.d.ts +5 -0
- package/dist/src/commands/dev-commands.d.ts.map +1 -0
- package/dist/src/commands/dev-commands.js +5 -3
- package/dist/src/commands/index.d.ts +7 -0
- package/dist/src/commands/index.d.ts.map +1 -0
- package/dist/src/commands/init-commands.d.ts +2 -0
- package/dist/src/commands/init-commands.d.ts.map +1 -0
- package/dist/src/commands/init-commands.js +4 -4
- package/dist/src/commands/run-commands.d.ts +3 -0
- package/dist/src/commands/run-commands.d.ts.map +1 -0
- package/dist/src/commands/run-commands.js +26 -26
- package/dist/src/commands/server-commands.d.ts +3 -0
- package/dist/src/commands/server-commands.d.ts.map +1 -0
- package/dist/src/commands/server-commands.js +4 -2
- package/dist/src/commands/start-commands.d.ts +5 -0
- package/dist/src/commands/start-commands.d.ts.map +1 -0
- package/dist/src/commands/start-commands.js +2 -2
- package/dist/src/dev-manager.d.ts +51 -0
- package/dist/src/dev-manager.d.ts.map +1 -0
- package/dist/src/dev-manager.js +29 -21
- package/dist/src/index.d.ts +41 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +15 -16
- package/dist/src/logger-manager.d.ts +4 -0
- package/dist/src/logger-manager.d.ts.map +1 -0
- package/dist/src/logger-manager.js +4 -4
- package/dist/src/logger.d.ts +34 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +21 -15
- package/dist/src/runner.d.ts +21 -0
- package/dist/src/runner.d.ts.map +1 -0
- package/dist/src/runner.js +38 -25
- package/dist/src/start-manager.d.ts +49 -0
- package/dist/src/start-manager.d.ts.map +1 -0
- package/dist/src/start-manager.js +34 -29
- package/dist/src/types.d.ts +41 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/utils.d.ts +2 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/package.json +14 -9
- package/dist/src/cli-init.js +0 -1
- package/dist/src/commands/process-commands.js +0 -759
- package/dist/src/config.js +0 -59
- package/dist/src/dev-runner.js +0 -234
- package/dist/src/logger-process.js +0 -17
- package/dist/src/process-manager.js +0 -669
- package/dist/src/watcher.js +0 -245
package/dist/src/config.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
var _a;
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.loadConfig = void 0;
|
|
31
|
-
const path_1 = __importDefault(require("path"));
|
|
32
|
-
const fs_1 = __importDefault(require("fs"));
|
|
33
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
34
|
-
async function loadConfig(configPath) {
|
|
35
|
-
const defaultConfigPath = path_1.default.resolve(process.cwd(), 'neex.config.js');
|
|
36
|
-
const finalConfigPath = configPath ? path_1.default.resolve(process.cwd(), configPath) : defaultConfigPath;
|
|
37
|
-
if (!fs_1.default.existsSync(finalConfigPath)) {
|
|
38
|
-
console.error(chalk_1.default.red(`Configuration file not found at: ${finalConfigPath}`));
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
try {
|
|
42
|
-
// Use a dynamic import to load the config file.
|
|
43
|
-
// The 'file://' protocol is important for ensuring correct module resolution on all platforms.
|
|
44
|
-
const configModule = await (_a = `file://${finalConfigPath}`, Promise.resolve().then(() => __importStar(require(_a))));
|
|
45
|
-
// The config can be the default export or the entire module.
|
|
46
|
-
const config = configModule.default || configModule;
|
|
47
|
-
// Basic validation to ensure the config has the expected structure.
|
|
48
|
-
if (!config.commands || !Array.isArray(config.commands)) {
|
|
49
|
-
console.error(chalk_1.default.red('Invalid configuration: \'commands\' array is missing or not an array.'));
|
|
50
|
-
process.exit(1);
|
|
51
|
-
}
|
|
52
|
-
return config;
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
console.error(chalk_1.default.red(`Error loading configuration file: ${error.message}`));
|
|
56
|
-
process.exit(1);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
exports.loadConfig = loadConfig;
|
package/dist/src/dev-runner.js
DELETED
|
@@ -1,234 +0,0 @@
|
|
|
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.DevRunner = void 0;
|
|
7
|
-
// src/dev-runner.ts - Development runner with file watching (nodemon functionality)
|
|
8
|
-
const watcher_1 = require("./watcher");
|
|
9
|
-
const runner_1 = require("./runner");
|
|
10
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
-
const figures_1 = __importDefault(require("figures"));
|
|
12
|
-
const logger_process_1 = require("./logger-process");
|
|
13
|
-
class DevRunner {
|
|
14
|
-
constructor(options) {
|
|
15
|
-
this.commands = [];
|
|
16
|
-
this.isRunning = false;
|
|
17
|
-
this.restartCount = 0;
|
|
18
|
-
this.startTime = new Date();
|
|
19
|
-
const defaultOptions = {
|
|
20
|
-
parallel: false,
|
|
21
|
-
printOutput: true,
|
|
22
|
-
color: true,
|
|
23
|
-
showTiming: true,
|
|
24
|
-
prefix: true,
|
|
25
|
-
stopOnError: false,
|
|
26
|
-
minimalOutput: false,
|
|
27
|
-
groupOutput: false,
|
|
28
|
-
isServerMode: false,
|
|
29
|
-
restartOnChange: true,
|
|
30
|
-
clearConsole: false,
|
|
31
|
-
signal: 'SIGTERM',
|
|
32
|
-
watch: ['./'],
|
|
33
|
-
ignore: [
|
|
34
|
-
'node_modules/**',
|
|
35
|
-
'.git/**',
|
|
36
|
-
'*.log',
|
|
37
|
-
'dist/**',
|
|
38
|
-
'build/**',
|
|
39
|
-
'coverage/**',
|
|
40
|
-
'.nyc_output/**',
|
|
41
|
-
'*.tmp',
|
|
42
|
-
'*.temp'
|
|
43
|
-
],
|
|
44
|
-
ext: ['js', 'mjs', 'json', 'ts', 'tsx', 'jsx'],
|
|
45
|
-
delay: 1000,
|
|
46
|
-
verbose: false,
|
|
47
|
-
showInfo: false,
|
|
48
|
-
runnerName: 'neex dev',
|
|
49
|
-
};
|
|
50
|
-
this.options = {
|
|
51
|
-
...defaultOptions,
|
|
52
|
-
...options
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
setupFileWatcher() {
|
|
56
|
-
const watchOptions = {
|
|
57
|
-
watch: this.options.watch || ['./'],
|
|
58
|
-
ignore: this.options.ignore,
|
|
59
|
-
ext: this.options.ext,
|
|
60
|
-
delay: this.options.delay,
|
|
61
|
-
verbose: this.options.verbose && this.options.showInfo // Only show verbose watcher logs if both verbose and showInfo are true
|
|
62
|
-
};
|
|
63
|
-
this.fileWatcher = new watcher_1.FileWatcher(watchOptions);
|
|
64
|
-
this.fileWatcher.on('change', (event) => {
|
|
65
|
-
if (this.options.restartOnChange && this.isRunning) {
|
|
66
|
-
this.handleFileChange(event);
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
async handleFileChange(event) {
|
|
71
|
-
const prefix = chalk_1.default.cyan(`[${this.options.runnerName}]`);
|
|
72
|
-
if (this.options.showInfo) {
|
|
73
|
-
logger_process_1.logger.printLine(`${prefix} File changed: ${chalk_1.default.yellow(event.relativePath)}`, 'info');
|
|
74
|
-
}
|
|
75
|
-
if (this.options.clearConsole) {
|
|
76
|
-
console.clear();
|
|
77
|
-
}
|
|
78
|
-
await this.restart();
|
|
79
|
-
}
|
|
80
|
-
async runCommands() {
|
|
81
|
-
if (this.commands.length === 0) {
|
|
82
|
-
return [];
|
|
83
|
-
}
|
|
84
|
-
// Create a modified options object for the runner to clean up output
|
|
85
|
-
const runnerOptions = {
|
|
86
|
-
...this.options,
|
|
87
|
-
// Override prefix behavior to show clean command name
|
|
88
|
-
customPrefix: (command) => {
|
|
89
|
-
// Extract just the filename from the command
|
|
90
|
-
const match = command.match(/(?:npx ts-node|node)\s+(.+)/);
|
|
91
|
-
if (match) {
|
|
92
|
-
const filePath = match[1];
|
|
93
|
-
const fileName = filePath.split('/').pop() || filePath;
|
|
94
|
-
return `${fileName}`;
|
|
95
|
-
}
|
|
96
|
-
return command;
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
this.runner = new runner_1.Runner(runnerOptions);
|
|
100
|
-
try {
|
|
101
|
-
const results = await this.runner.run(this.commands);
|
|
102
|
-
return results;
|
|
103
|
-
}
|
|
104
|
-
catch (error) {
|
|
105
|
-
if (this.options.showInfo) {
|
|
106
|
-
logger_process_1.logger.printLine(`Execution failed: ${error.message}`, 'error');
|
|
107
|
-
}
|
|
108
|
-
return [];
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
printDevBanner() {
|
|
112
|
-
var _a, _b;
|
|
113
|
-
if (!this.options.showInfo) {
|
|
114
|
-
return; // Don't show banner if showInfo is false
|
|
115
|
-
}
|
|
116
|
-
const prefix = chalk_1.default.cyan(`[${this.options.runnerName}]`);
|
|
117
|
-
const uptime = Math.floor((Date.now() - this.startTime.getTime()) / 1000);
|
|
118
|
-
const uptimeStr = this.formatUptime(uptime);
|
|
119
|
-
console.log('\n' + chalk_1.default.bgGreen.black(` ${(_a = this.options.runnerName) === null || _a === void 0 ? void 0 : _a.toUpperCase()} MODE `) + '\n');
|
|
120
|
-
if (this.restartCount > 0) {
|
|
121
|
-
console.log(`${prefix} ${chalk_1.default.green(`${figures_1.default.arrowUp} Restarted ${this.restartCount} times`)}`);
|
|
122
|
-
}
|
|
123
|
-
console.log(`${prefix} ${chalk_1.default.blue(`${figures_1.default.info} Uptime: ${uptimeStr}`)}`);
|
|
124
|
-
console.log(`${prefix} ${chalk_1.default.blue(`${figures_1.default.info} Watching: ${((_b = this.options.watch) === null || _b === void 0 ? void 0 : _b.join(', ')) || 'current directory'}`)}`);
|
|
125
|
-
if (this.options.ext && this.options.ext.length > 0) {
|
|
126
|
-
console.log(`${prefix} ${chalk_1.default.blue(`${figures_1.default.info} Extensions: ${this.options.ext.join(', ')}`)}`);
|
|
127
|
-
}
|
|
128
|
-
console.log('');
|
|
129
|
-
}
|
|
130
|
-
formatUptime(seconds) {
|
|
131
|
-
if (seconds < 60) {
|
|
132
|
-
return `${seconds}s`;
|
|
133
|
-
}
|
|
134
|
-
else if (seconds < 3600) {
|
|
135
|
-
const minutes = Math.floor(seconds / 60);
|
|
136
|
-
const remainingSeconds = seconds % 60;
|
|
137
|
-
return `${minutes}m ${remainingSeconds}s`;
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
const hours = Math.floor(seconds / 3600);
|
|
141
|
-
const minutes = Math.floor((seconds % 3600) / 60);
|
|
142
|
-
return `${hours}h ${minutes}m`;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
async start(commands) {
|
|
146
|
-
this.commands = commands;
|
|
147
|
-
this.isRunning = true;
|
|
148
|
-
this.startTime = new Date();
|
|
149
|
-
// Setup file watcher
|
|
150
|
-
this.setupFileWatcher();
|
|
151
|
-
// Print development banner only if showInfo is true
|
|
152
|
-
this.printDevBanner();
|
|
153
|
-
// Start file watcher
|
|
154
|
-
if (this.fileWatcher) {
|
|
155
|
-
await this.fileWatcher.start();
|
|
156
|
-
}
|
|
157
|
-
// Run initial commands
|
|
158
|
-
const prefix = chalk_1.default.cyan(`[${this.options.runnerName}]`);
|
|
159
|
-
if (this.options.showInfo) {
|
|
160
|
-
logger_process_1.logger.printLine(`${prefix} Starting development server...`, 'info');
|
|
161
|
-
}
|
|
162
|
-
await this.runCommands();
|
|
163
|
-
// Set up graceful shutdown
|
|
164
|
-
this.setupGracefulShutdown();
|
|
165
|
-
if (this.options.showInfo) {
|
|
166
|
-
logger_process_1.logger.printLine(`${prefix} Development server started. Watching for changes...`, 'info');
|
|
167
|
-
logger_process_1.logger.printLine(`${prefix} Press ${chalk_1.default.cyan('Ctrl+C')} to stop`, 'info');
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
async restart() {
|
|
171
|
-
const prefix = chalk_1.default.cyan(`[${this.options.runnerName}]`);
|
|
172
|
-
if (!this.isRunning) {
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
if (this.options.showInfo) {
|
|
176
|
-
logger_process_1.logger.printLine(`${prefix} Restarting due to file changes...`, 'info');
|
|
177
|
-
}
|
|
178
|
-
this.restartCount++;
|
|
179
|
-
// Stop current processes
|
|
180
|
-
if (this.runner) {
|
|
181
|
-
this.runner.cleanup(this.options.signal);
|
|
182
|
-
}
|
|
183
|
-
// Wait a moment before restarting
|
|
184
|
-
await new Promise(resolve => setTimeout(resolve, 500));
|
|
185
|
-
// Print restart banner only if showInfo is true
|
|
186
|
-
this.printDevBanner();
|
|
187
|
-
// Run commands again
|
|
188
|
-
await this.runCommands();
|
|
189
|
-
if (this.options.showInfo) {
|
|
190
|
-
logger_process_1.logger.printLine(`${prefix} Restart completed. Watching for changes...`, 'info');
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
async stop() {
|
|
194
|
-
const prefix = chalk_1.default.cyan(`[${this.options.runnerName}]`);
|
|
195
|
-
if (!this.isRunning) {
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
this.isRunning = false;
|
|
199
|
-
// Stop file watcher
|
|
200
|
-
if (this.fileWatcher) {
|
|
201
|
-
this.fileWatcher.stop();
|
|
202
|
-
}
|
|
203
|
-
// Stop current processes
|
|
204
|
-
if (this.runner) {
|
|
205
|
-
this.runner.cleanup(this.options.signal);
|
|
206
|
-
}
|
|
207
|
-
const uptime = Math.floor((Date.now() - this.startTime.getTime()) / 1000);
|
|
208
|
-
const uptimeStr = this.formatUptime(uptime);
|
|
209
|
-
}
|
|
210
|
-
setupGracefulShutdown() {
|
|
211
|
-
const handleSignal = (signal) => {
|
|
212
|
-
this.stop().then(() => {
|
|
213
|
-
process.exit(0);
|
|
214
|
-
});
|
|
215
|
-
};
|
|
216
|
-
process.on('SIGINT', () => handleSignal('SIGINT'));
|
|
217
|
-
process.on('SIGTERM', () => handleSignal('SIGTERM'));
|
|
218
|
-
process.on('SIGQUIT', () => handleSignal('SIGQUIT'));
|
|
219
|
-
}
|
|
220
|
-
isActive() {
|
|
221
|
-
return this.isRunning;
|
|
222
|
-
}
|
|
223
|
-
getUptime() {
|
|
224
|
-
return Math.floor((Date.now() - this.startTime.getTime()) / 1000);
|
|
225
|
-
}
|
|
226
|
-
getRestartCount() {
|
|
227
|
-
return this.restartCount;
|
|
228
|
-
}
|
|
229
|
-
getWatchedFiles() {
|
|
230
|
-
var _a;
|
|
231
|
-
return ((_a = this.fileWatcher) === null || _a === void 0 ? void 0 : _a.getWatchedFiles()) || [];
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
exports.DevRunner = DevRunner;
|
|
@@ -1,17 +0,0 @@
|
|
|
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.logger = void 0;
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
exports.logger = {
|
|
9
|
-
printLine: (message, level = "info") => {
|
|
10
|
-
const prefix = {
|
|
11
|
-
info: chalk_1.default.blue("i"),
|
|
12
|
-
warn: chalk_1.default.yellow("!"),
|
|
13
|
-
error: chalk_1.default.red("x"),
|
|
14
|
-
}[level];
|
|
15
|
-
console.log(`${prefix} ${message}`);
|
|
16
|
-
},
|
|
17
|
-
};
|