neex 0.7.20 → 0.7.32

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 (58) hide show
  1. package/README.md +13 -31
  2. package/dist/bin/neex.d.ts +26 -0
  3. package/dist/bin/neex.d.ts.map +1 -0
  4. package/dist/src/build-manager.d.ts +41 -0
  5. package/dist/src/build-manager.d.ts.map +1 -0
  6. package/dist/src/build-manager.js +26 -24
  7. package/dist/src/cli.d.ts +2 -0
  8. package/dist/src/cli.d.ts.map +1 -0
  9. package/dist/src/commands/build-commands.d.ts +5 -0
  10. package/dist/src/commands/build-commands.d.ts.map +1 -0
  11. package/dist/src/commands/build-commands.js +2 -2
  12. package/dist/src/commands/dev-commands.d.ts +5 -0
  13. package/dist/src/commands/dev-commands.d.ts.map +1 -0
  14. package/dist/src/commands/dev-commands.js +5 -3
  15. package/dist/src/commands/index.d.ts +7 -0
  16. package/dist/src/commands/index.d.ts.map +1 -0
  17. package/dist/src/commands/init-commands.d.ts +2 -0
  18. package/dist/src/commands/init-commands.d.ts.map +1 -0
  19. package/dist/src/commands/init-commands.js +4 -4
  20. package/dist/src/commands/run-commands.d.ts +3 -0
  21. package/dist/src/commands/run-commands.d.ts.map +1 -0
  22. package/dist/src/commands/run-commands.js +26 -26
  23. package/dist/src/commands/server-commands.d.ts +3 -0
  24. package/dist/src/commands/server-commands.d.ts.map +1 -0
  25. package/dist/src/commands/server-commands.js +4 -2
  26. package/dist/src/commands/start-commands.d.ts +5 -0
  27. package/dist/src/commands/start-commands.d.ts.map +1 -0
  28. package/dist/src/commands/start-commands.js +2 -2
  29. package/dist/src/dev-manager.d.ts +51 -0
  30. package/dist/src/dev-manager.d.ts.map +1 -0
  31. package/dist/src/dev-manager.js +29 -21
  32. package/dist/src/index.d.ts +41 -0
  33. package/dist/src/index.d.ts.map +1 -0
  34. package/dist/src/index.js +15 -16
  35. package/dist/src/logger-manager.d.ts +4 -0
  36. package/dist/src/logger-manager.d.ts.map +1 -0
  37. package/dist/src/logger-manager.js +4 -4
  38. package/dist/src/logger.d.ts +34 -0
  39. package/dist/src/logger.d.ts.map +1 -0
  40. package/dist/src/logger.js +21 -15
  41. package/dist/src/runner.d.ts +21 -0
  42. package/dist/src/runner.d.ts.map +1 -0
  43. package/dist/src/runner.js +38 -25
  44. package/dist/src/start-manager.d.ts +49 -0
  45. package/dist/src/start-manager.d.ts.map +1 -0
  46. package/dist/src/start-manager.js +34 -29
  47. package/dist/src/types.d.ts +41 -0
  48. package/dist/src/types.d.ts.map +1 -0
  49. package/dist/src/utils.d.ts +2 -0
  50. package/dist/src/utils.d.ts.map +1 -0
  51. package/package.json +14 -9
  52. package/dist/src/cli-init.js +0 -1
  53. package/dist/src/commands/process-commands.js +0 -759
  54. package/dist/src/config.js +0 -59
  55. package/dist/src/dev-runner.js +0 -234
  56. package/dist/src/logger-process.js +0 -17
  57. package/dist/src/process-manager.js +0 -669
  58. package/dist/src/watcher.js +0 -245
@@ -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;
@@ -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
- };