@minecraft-docker/mcctl 1.6.1 → 1.6.2

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 (90) hide show
  1. package/dist/commands/console/api.d.ts +19 -0
  2. package/dist/commands/console/api.d.ts.map +1 -0
  3. package/dist/commands/console/api.js +399 -0
  4. package/dist/commands/console/api.js.map +1 -0
  5. package/dist/commands/console/index.d.ts +10 -0
  6. package/dist/commands/console/index.d.ts.map +1 -0
  7. package/dist/commands/console/index.js +12 -0
  8. package/dist/commands/console/index.js.map +1 -0
  9. package/dist/commands/console/init.d.ts +47 -0
  10. package/dist/commands/console/init.d.ts.map +1 -0
  11. package/dist/commands/console/init.js +491 -0
  12. package/dist/commands/console/init.js.map +1 -0
  13. package/dist/commands/console/remove.d.ts +25 -0
  14. package/dist/commands/console/remove.d.ts.map +1 -0
  15. package/dist/commands/console/remove.js +189 -0
  16. package/dist/commands/console/remove.js.map +1 -0
  17. package/dist/commands/console/service.d.ts +40 -0
  18. package/dist/commands/console/service.d.ts.map +1 -0
  19. package/dist/commands/console/service.js +321 -0
  20. package/dist/commands/console/service.js.map +1 -0
  21. package/dist/commands/console/user.d.ts +17 -0
  22. package/dist/commands/console/user.d.ts.map +1 -0
  23. package/dist/commands/console/user.js +431 -0
  24. package/dist/commands/console/user.js.map +1 -0
  25. package/dist/commands/create.d.ts.map +1 -1
  26. package/dist/commands/create.js +4 -1
  27. package/dist/commands/create.js.map +1 -1
  28. package/dist/commands/delete.d.ts.map +1 -1
  29. package/dist/commands/delete.js +4 -1
  30. package/dist/commands/delete.js.map +1 -1
  31. package/dist/commands/index.d.ts +3 -0
  32. package/dist/commands/index.d.ts.map +1 -1
  33. package/dist/commands/index.js +5 -0
  34. package/dist/commands/index.js.map +1 -1
  35. package/dist/commands/init.d.ts.map +1 -1
  36. package/dist/commands/init.js +58 -26
  37. package/dist/commands/init.js.map +1 -1
  38. package/dist/commands/mod.d.ts +19 -0
  39. package/dist/commands/mod.d.ts.map +1 -0
  40. package/dist/commands/mod.js +441 -0
  41. package/dist/commands/mod.js.map +1 -0
  42. package/dist/commands/msg.d.ts +12 -0
  43. package/dist/commands/msg.d.ts.map +1 -0
  44. package/dist/commands/msg.js +273 -0
  45. package/dist/commands/msg.js.map +1 -0
  46. package/dist/commands/player-online.js +4 -2
  47. package/dist/commands/player-online.js.map +1 -1
  48. package/dist/commands/world.d.ts +2 -0
  49. package/dist/commands/world.d.ts.map +1 -1
  50. package/dist/commands/world.js +104 -1
  51. package/dist/commands/world.js.map +1 -1
  52. package/dist/index.js +162 -5
  53. package/dist/index.js.map +1 -1
  54. package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts +2 -1
  55. package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts.map +1 -1
  56. package/dist/infrastructure/adapters/ClackPromptAdapter.js +11 -0
  57. package/dist/infrastructure/adapters/ClackPromptAdapter.js.map +1 -1
  58. package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.d.ts +78 -0
  59. package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.d.ts.map +1 -0
  60. package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.js +391 -0
  61. package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.js.map +1 -0
  62. package/dist/infrastructure/adapters/index.d.ts +1 -0
  63. package/dist/infrastructure/adapters/index.d.ts.map +1 -1
  64. package/dist/infrastructure/adapters/index.js +2 -1
  65. package/dist/infrastructure/adapters/index.js.map +1 -1
  66. package/dist/infrastructure/index.d.ts +1 -0
  67. package/dist/infrastructure/index.d.ts.map +1 -1
  68. package/dist/infrastructure/index.js +2 -1
  69. package/dist/infrastructure/index.js.map +1 -1
  70. package/dist/lib/admin-config.d.ts +66 -0
  71. package/dist/lib/admin-config.d.ts.map +1 -0
  72. package/dist/lib/admin-config.js +130 -0
  73. package/dist/lib/admin-config.js.map +1 -0
  74. package/dist/lib/pm2-utils.d.ts +71 -0
  75. package/dist/lib/pm2-utils.d.ts.map +1 -0
  76. package/dist/lib/pm2-utils.js +155 -0
  77. package/dist/lib/pm2-utils.js.map +1 -0
  78. package/dist/lib/prompts/ip-select.d.ts +25 -0
  79. package/dist/lib/prompts/ip-select.d.ts.map +1 -0
  80. package/dist/lib/prompts/ip-select.js +255 -0
  81. package/dist/lib/prompts/ip-select.js.map +1 -0
  82. package/dist/lib/shell.d.ts +2 -0
  83. package/dist/lib/shell.d.ts.map +1 -1
  84. package/dist/lib/shell.js +7 -4
  85. package/dist/lib/shell.js.map +1 -1
  86. package/dist/lib/sudo-utils.d.ts +14 -0
  87. package/dist/lib/sudo-utils.d.ts.map +1 -0
  88. package/dist/lib/sudo-utils.js +53 -0
  89. package/dist/lib/sudo-utils.js.map +1 -0
  90. package/package.json +8 -2
@@ -0,0 +1,19 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Console API command options
4
+ */
5
+ export interface ConsoleApiCommandOptions {
6
+ json?: boolean;
7
+ force?: boolean;
8
+ }
9
+ export type AdminApiCommandOptions = ConsoleApiCommandOptions;
10
+ /**
11
+ * Access modes for the API
12
+ */
13
+ export type AccessMode = 'internal' | 'api-key' | 'ip-whitelist' | 'api-key-ip' | 'open';
14
+ /**
15
+ * Create console api command
16
+ */
17
+ export declare function consoleApiCommand(): Command;
18
+ export declare const adminApiCommand: typeof consoleApiCommand;
19
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/commands/console/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAGD,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC;AAwWzF;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CA+F3C;AAGD,eAAO,MAAM,eAAe,0BAAoB,CAAC"}
@@ -0,0 +1,399 @@
1
+ import { Command } from 'commander';
2
+ import * as p from '@clack/prompts';
3
+ import { Paths, colors } from '@minecraft-docker/shared';
4
+ import { readFileSync, writeFileSync, existsSync } from 'node:fs';
5
+ import { resolve } from 'node:path';
6
+ import { randomBytes } from 'node:crypto';
7
+ /**
8
+ * Get the API config file path
9
+ */
10
+ function getConfigPath() {
11
+ const paths = new Paths();
12
+ return resolve(paths.platform, 'api-config.json');
13
+ }
14
+ /**
15
+ * Load API configuration
16
+ */
17
+ function loadConfig() {
18
+ const configPath = getConfigPath();
19
+ if (!existsSync(configPath)) {
20
+ // Return default config
21
+ return {
22
+ accessMode: 'internal',
23
+ apiKey: generateApiKey(),
24
+ port: 3001,
25
+ ipWhitelist: [],
26
+ };
27
+ }
28
+ try {
29
+ const content = readFileSync(configPath, 'utf-8');
30
+ return JSON.parse(content);
31
+ }
32
+ catch {
33
+ return {
34
+ accessMode: 'internal',
35
+ apiKey: generateApiKey(),
36
+ port: 3001,
37
+ ipWhitelist: [],
38
+ };
39
+ }
40
+ }
41
+ /**
42
+ * Save API configuration
43
+ */
44
+ function saveConfig(config) {
45
+ const configPath = getConfigPath();
46
+ writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
47
+ }
48
+ /**
49
+ * Generate a new API key
50
+ */
51
+ function generateApiKey() {
52
+ const bytes = randomBytes(32);
53
+ return `mctk_${bytes.toString('hex')}`;
54
+ }
55
+ /**
56
+ * Mask API key for display
57
+ */
58
+ function maskApiKey(key) {
59
+ if (key.length <= 12)
60
+ return key;
61
+ const prefix = key.slice(0, 8);
62
+ const suffix = key.slice(-4);
63
+ return `${prefix}...${suffix}`;
64
+ }
65
+ /**
66
+ * Validate CIDR notation
67
+ */
68
+ function isValidCidr(value) {
69
+ // Simple IP validation (IPv4)
70
+ const ipPattern = /^(\d{1,3}\.){3}\d{1,3}(\/\d{1,2})?$/;
71
+ if (!ipPattern.test(value))
72
+ return false;
73
+ const parts = value.split('/');
74
+ const ip = parts[0];
75
+ const cidr = parts[1] ? parseInt(parts[1], 10) : 32;
76
+ // Validate IP octets
77
+ const octets = ip.split('.').map(Number);
78
+ if (octets.some((o) => o < 0 || o > 255))
79
+ return false;
80
+ // Validate CIDR range
81
+ if (cidr < 0 || cidr > 32)
82
+ return false;
83
+ return true;
84
+ }
85
+ /**
86
+ * Show API status
87
+ */
88
+ async function showStatus(options) {
89
+ const config = loadConfig();
90
+ if (options.json) {
91
+ console.log(JSON.stringify({
92
+ accessMode: config.accessMode,
93
+ port: config.port,
94
+ apiKey: maskApiKey(config.apiKey),
95
+ ipWhitelist: config.ipWhitelist,
96
+ }, null, 2));
97
+ return;
98
+ }
99
+ console.log();
100
+ console.log(colors.bold('API Configuration'));
101
+ console.log();
102
+ console.log(` Access Mode: ${colors.cyan(config.accessMode)}`);
103
+ console.log(` Port: ${colors.cyan(config.port.toString())}`);
104
+ console.log(` API Key: ${colors.dim(maskApiKey(config.apiKey))}`);
105
+ console.log();
106
+ if (config.ipWhitelist.length > 0) {
107
+ console.log(' IP Whitelist:');
108
+ for (const ip of config.ipWhitelist) {
109
+ console.log(` • ${ip}`);
110
+ }
111
+ }
112
+ else {
113
+ console.log(' IP Whitelist: ' + colors.dim('(empty)'));
114
+ }
115
+ console.log();
116
+ // Show mode description
117
+ const modeDescriptions = {
118
+ internal: 'Docker network only (most secure)',
119
+ 'api-key': 'External access with X-API-Key header',
120
+ 'ip-whitelist': 'IP-based access control',
121
+ 'api-key-ip': 'Both API key and IP required',
122
+ open: colors.red('No authentication (development only!)'),
123
+ };
124
+ console.log(` Mode: ${modeDescriptions[config.accessMode]}`);
125
+ if (config.accessMode === 'open') {
126
+ console.log();
127
+ console.log(colors.red(' ⚠️ WARNING: API is open without authentication!'));
128
+ console.log(colors.red(' Do not use this mode in production!'));
129
+ }
130
+ }
131
+ /**
132
+ * Regenerate API key
133
+ */
134
+ async function regenerateKey(options) {
135
+ const config = loadConfig();
136
+ if (!options.force) {
137
+ const confirmed = await p.confirm({
138
+ message: 'Are you sure you want to regenerate the API key? All existing clients will need to be updated.',
139
+ });
140
+ if (p.isCancel(confirmed) || !confirmed) {
141
+ p.cancel('Operation cancelled.');
142
+ process.exit(0);
143
+ }
144
+ }
145
+ config.apiKey = generateApiKey();
146
+ saveConfig(config);
147
+ console.log(colors.green('API key regenerated successfully.'));
148
+ console.log();
149
+ console.log(`New API Key: ${colors.cyan(config.apiKey)}`);
150
+ console.log();
151
+ console.log(colors.yellow('Please update all clients with the new API key.'));
152
+ }
153
+ /**
154
+ * Change access mode
155
+ */
156
+ async function changeMode(mode, options) {
157
+ const config = loadConfig();
158
+ const validModes = ['internal', 'api-key', 'ip-whitelist', 'api-key-ip', 'open'];
159
+ let newMode;
160
+ if (mode) {
161
+ if (!validModes.includes(mode)) {
162
+ console.error(colors.red(`Invalid mode: ${mode}`));
163
+ console.error(`Valid modes: ${validModes.join(', ')}`);
164
+ process.exit(1);
165
+ }
166
+ newMode = mode;
167
+ }
168
+ else {
169
+ // Interactive mode
170
+ const result = await p.select({
171
+ message: 'Select access mode:',
172
+ initialValue: config.accessMode,
173
+ options: [
174
+ { value: 'internal', label: 'internal - Docker network only (most secure)' },
175
+ { value: 'api-key', label: 'api-key - External access with X-API-Key header' },
176
+ { value: 'ip-whitelist', label: 'ip-whitelist - IP-based access control' },
177
+ { value: 'api-key-ip', label: 'api-key-ip - Both API key and IP required' },
178
+ { value: 'open', label: 'open - No authentication (development only!)' },
179
+ ],
180
+ });
181
+ if (p.isCancel(result)) {
182
+ p.cancel('Operation cancelled.');
183
+ process.exit(0);
184
+ }
185
+ newMode = result;
186
+ }
187
+ // Warn about open mode
188
+ if (newMode === 'open' && !options.force) {
189
+ console.log();
190
+ console.log(colors.red('⚠️ WARNING: Setting access mode to "open" disables all authentication!'));
191
+ console.log(colors.red(' This mode should only be used for development purposes.'));
192
+ console.log();
193
+ const confirmed = await p.confirm({
194
+ message: 'Are you sure you want to proceed?',
195
+ });
196
+ if (p.isCancel(confirmed) || !confirmed) {
197
+ p.cancel('Operation cancelled.');
198
+ process.exit(0);
199
+ }
200
+ }
201
+ config.accessMode = newMode;
202
+ saveConfig(config);
203
+ console.log(colors.green(`Access mode changed to: ${newMode}`));
204
+ }
205
+ /**
206
+ * Manage IP whitelist
207
+ */
208
+ async function manageWhitelist(action, ip, options) {
209
+ const config = loadConfig();
210
+ if (!action) {
211
+ action = 'list';
212
+ }
213
+ switch (action) {
214
+ case 'list': {
215
+ if (options.json) {
216
+ console.log(JSON.stringify(config.ipWhitelist, null, 2));
217
+ return;
218
+ }
219
+ console.log();
220
+ console.log(colors.bold('IP Whitelist'));
221
+ console.log();
222
+ if (config.ipWhitelist.length === 0) {
223
+ console.log(colors.dim(' (empty)'));
224
+ }
225
+ else {
226
+ for (const entry of config.ipWhitelist) {
227
+ console.log(` • ${entry}`);
228
+ }
229
+ }
230
+ console.log();
231
+ break;
232
+ }
233
+ case 'add': {
234
+ if (!ip) {
235
+ // Interactive mode
236
+ const result = await p.text({
237
+ message: 'Enter IP address or CIDR range:',
238
+ placeholder: '192.168.1.100 or 10.0.0.0/8',
239
+ validate: (value) => {
240
+ if (!value || value.trim().length === 0) {
241
+ return 'IP address is required';
242
+ }
243
+ if (!isValidCidr(value)) {
244
+ return 'Invalid IP address or CIDR notation';
245
+ }
246
+ return undefined;
247
+ },
248
+ });
249
+ if (p.isCancel(result)) {
250
+ p.cancel('Operation cancelled.');
251
+ process.exit(0);
252
+ }
253
+ ip = result;
254
+ }
255
+ if (!isValidCidr(ip)) {
256
+ console.error(colors.red(`Invalid IP address or CIDR notation: ${ip}`));
257
+ process.exit(1);
258
+ }
259
+ if (config.ipWhitelist.includes(ip)) {
260
+ console.log(colors.yellow(`IP ${ip} is already in the whitelist.`));
261
+ return;
262
+ }
263
+ config.ipWhitelist.push(ip);
264
+ saveConfig(config);
265
+ console.log(colors.green(`Added ${ip} to IP whitelist.`));
266
+ break;
267
+ }
268
+ case 'remove': {
269
+ if (!ip) {
270
+ if (config.ipWhitelist.length === 0) {
271
+ console.error(colors.red('IP whitelist is empty.'));
272
+ process.exit(1);
273
+ }
274
+ // Interactive mode
275
+ const result = await p.select({
276
+ message: 'Select IP to remove:',
277
+ options: config.ipWhitelist.map((entry) => ({
278
+ value: entry,
279
+ label: entry,
280
+ })),
281
+ });
282
+ if (p.isCancel(result)) {
283
+ p.cancel('Operation cancelled.');
284
+ process.exit(0);
285
+ }
286
+ ip = result;
287
+ }
288
+ const index = config.ipWhitelist.indexOf(ip);
289
+ if (index === -1) {
290
+ console.error(colors.red(`IP ${ip} is not in the whitelist.`));
291
+ process.exit(1);
292
+ }
293
+ config.ipWhitelist.splice(index, 1);
294
+ saveConfig(config);
295
+ console.log(colors.green(`Removed ${ip} from IP whitelist.`));
296
+ break;
297
+ }
298
+ default:
299
+ console.error(colors.red(`Unknown whitelist action: ${action}`));
300
+ console.error('Valid actions: list, add, remove');
301
+ process.exit(1);
302
+ }
303
+ }
304
+ /**
305
+ * Create console api command
306
+ */
307
+ export function consoleApiCommand() {
308
+ const cmd = new Command('api')
309
+ .description('Manage API configuration')
310
+ .addHelpText('after', `
311
+ Examples:
312
+ $ mcctl console api status Show API configuration
313
+ $ mcctl console api status --json JSON output
314
+ $ mcctl console api key regenerate Regenerate API key
315
+ $ mcctl console api mode api-key Change access mode
316
+ $ mcctl console api mode Interactive mode selection
317
+ $ mcctl console api whitelist list List IP whitelist
318
+ $ mcctl console api whitelist add 192.168.1.100
319
+ $ mcctl console api whitelist add 10.0.0.0/8
320
+ $ mcctl console api whitelist remove 192.168.1.100
321
+
322
+ Access Modes:
323
+ internal Docker network only (default, most secure)
324
+ api-key External access with X-API-Key header
325
+ ip-whitelist IP-based access control
326
+ api-key-ip Both API key and IP required
327
+ open No authentication (development only!)
328
+ `);
329
+ // status subcommand
330
+ cmd
331
+ .command('status')
332
+ .description('Show API configuration')
333
+ .option('--json', 'Output in JSON format')
334
+ .action(async (options) => {
335
+ try {
336
+ await showStatus(options);
337
+ }
338
+ catch (error) {
339
+ console.error(colors.red(`Error: ${error.message}`));
340
+ process.exit(1);
341
+ }
342
+ });
343
+ // key subcommand
344
+ const keyCmd = cmd
345
+ .command('key')
346
+ .description('API key management');
347
+ keyCmd
348
+ .command('regenerate')
349
+ .description('Regenerate API key')
350
+ .option('--force', 'Skip confirmation')
351
+ .action(async (options) => {
352
+ try {
353
+ await regenerateKey(options);
354
+ }
355
+ catch (error) {
356
+ console.error(colors.red(`Error: ${error.message}`));
357
+ process.exit(1);
358
+ }
359
+ });
360
+ // mode subcommand
361
+ cmd
362
+ .command('mode [mode]')
363
+ .description('Change access mode')
364
+ .option('--force', 'Skip confirmation for dangerous modes')
365
+ .action(async (mode, options) => {
366
+ try {
367
+ await changeMode(mode, options);
368
+ }
369
+ catch (error) {
370
+ console.error(colors.red(`Error: ${error.message}`));
371
+ process.exit(1);
372
+ }
373
+ });
374
+ // whitelist subcommand
375
+ const whitelistCmd = cmd
376
+ .command('whitelist [action] [ip]')
377
+ .description('Manage IP whitelist')
378
+ .option('--json', 'Output in JSON format')
379
+ .action(async (action, ip, options) => {
380
+ try {
381
+ await manageWhitelist(action, ip, options);
382
+ }
383
+ catch (error) {
384
+ console.error(colors.red(`Error: ${error.message}`));
385
+ process.exit(1);
386
+ }
387
+ });
388
+ // Add explicit whitelist subcommands for better help
389
+ whitelistCmd.addHelpText('after', `
390
+ Actions:
391
+ list List all whitelisted IPs
392
+ add <ip> Add IP or CIDR range to whitelist
393
+ remove <ip> Remove IP from whitelist
394
+ `);
395
+ return cmd;
396
+ }
397
+ // Backward compatibility alias
398
+ export const adminApiCommand = consoleApiCommand;
399
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/commands/console/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export { consoleInitCommand, deleteAdminImages, checkNodeVersion, type ConsoleInitOptions, } from './init.js';
2
+ export { consoleServiceCommand, deleteAdminImages as deleteConsoleImages, type ConsoleServiceOptions, } from './service.js';
3
+ export { consoleUserCommand, type ConsoleUserCommandOptions } from './user.js';
4
+ export { consoleApiCommand, type ConsoleApiCommandOptions } from './api.js';
5
+ export { consoleRemoveCommand, type ConsoleRemoveOptions } from './remove.js';
6
+ export { adminInitCommand, type AdminInitOptions } from './init.js';
7
+ export { adminServiceCommand, type AdminServiceOptions } from './service.js';
8
+ export { adminUserCommand, type AdminUserCommandOptions } from './user.js';
9
+ export { adminApiCommand, type AdminApiCommandOptions } from './api.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/console/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,IAAI,mBAAmB,EACxC,KAAK,qBAAqB,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAG9E,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,12 @@
1
+ // Primary exports (new names)
2
+ export { consoleInitCommand, deleteAdminImages, checkNodeVersion, } from './init.js';
3
+ export { consoleServiceCommand, deleteAdminImages as deleteConsoleImages, } from './service.js';
4
+ export { consoleUserCommand } from './user.js';
5
+ export { consoleApiCommand } from './api.js';
6
+ export { consoleRemoveCommand } from './remove.js';
7
+ // Backward compatibility aliases (deprecated)
8
+ export { adminInitCommand } from './init.js';
9
+ export { adminServiceCommand } from './service.js';
10
+ export { adminUserCommand } from './user.js';
11
+ export { adminApiCommand } from './api.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/console/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GAEjB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,IAAI,mBAAmB,GAEzC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAkC,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAiC,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAA6B,MAAM,aAAa,CAAC;AAE9E,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAyB,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAA4B,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAgC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,eAAe,EAA+B,MAAM,UAAU,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Console init command options
3
+ */
4
+ export interface ConsoleInitOptions {
5
+ root?: string;
6
+ force?: boolean;
7
+ apiPort?: number;
8
+ consolePort?: number;
9
+ }
10
+ export type AdminInitOptions = ConsoleInitOptions;
11
+ /**
12
+ * Check Node.js version meets requirements
13
+ * @returns Object with version check result
14
+ */
15
+ export declare function checkNodeVersion(): {
16
+ valid: boolean;
17
+ version: string;
18
+ required: number;
19
+ };
20
+ /**
21
+ * Delete admin images (legacy - now a no-op for backward compatibility)
22
+ * @deprecated Use PM2 process management instead
23
+ */
24
+ export declare function deleteAdminImages(): {
25
+ success: boolean;
26
+ deleted: string[];
27
+ errors: string[];
28
+ };
29
+ /**
30
+ * Execute console init command
31
+ *
32
+ * Interactive flow:
33
+ * 1. Check Node.js version (>= 18)
34
+ * 2. Check PM2 installation
35
+ * 3. Check if already initialized
36
+ * 4. If exists: prompt for reinitialize confirmation (unless --force)
37
+ * 5. Cleanup existing config if reinitializing
38
+ * 6. Prompt for admin username
39
+ * 7. Prompt for admin password (with confirmation)
40
+ * 8. Prompt for API access mode
41
+ * 9. Generate API key if needed
42
+ * 10. Generate ecosystem.config.cjs
43
+ * 11. Save configuration and user
44
+ */
45
+ export declare function consoleInitCommand(options: ConsoleInitOptions): Promise<number>;
46
+ export declare const adminInitCommand: typeof consoleInitCommand;
47
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/console/init.ts"],"names":[],"mappings":"AAsBA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAOlD;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,CASA;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAQA;AAkID;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAqXjB;AAGD,eAAO,MAAM,gBAAgB,2BAAqB,CAAC"}