@minecraft-docker/mcctl 1.5.0 → 1.6.1

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 (141) hide show
  1. package/dist/application/index.d.ts +2 -0
  2. package/dist/application/index.d.ts.map +1 -0
  3. package/dist/application/index.js +5 -0
  4. package/dist/application/index.js.map +1 -0
  5. package/dist/commands/backup.d.ts +16 -0
  6. package/dist/commands/backup.d.ts.map +1 -0
  7. package/dist/commands/backup.js +182 -0
  8. package/dist/commands/backup.js.map +1 -0
  9. package/dist/commands/ban.d.ts +14 -0
  10. package/dist/commands/ban.d.ts.map +1 -0
  11. package/dist/commands/ban.js +418 -0
  12. package/dist/commands/ban.js.map +1 -0
  13. package/dist/commands/config.d.ts +18 -0
  14. package/dist/commands/config.d.ts.map +1 -0
  15. package/dist/commands/config.js +106 -0
  16. package/dist/commands/config.js.map +1 -0
  17. package/dist/commands/create.d.ts +22 -0
  18. package/dist/commands/create.d.ts.map +1 -0
  19. package/dist/commands/create.js +83 -0
  20. package/dist/commands/create.js.map +1 -0
  21. package/dist/commands/delete.d.ts +17 -0
  22. package/dist/commands/delete.d.ts.map +1 -0
  23. package/dist/commands/delete.js +71 -0
  24. package/dist/commands/delete.js.map +1 -0
  25. package/dist/commands/exec.d.ts +10 -0
  26. package/dist/commands/exec.d.ts.map +1 -0
  27. package/dist/commands/exec.js +29 -0
  28. package/dist/commands/exec.js.map +1 -0
  29. package/dist/commands/index.d.ts +18 -0
  30. package/dist/commands/index.d.ts.map +1 -0
  31. package/dist/commands/index.js +18 -0
  32. package/dist/commands/index.js.map +1 -0
  33. package/dist/commands/init.d.ts +9 -0
  34. package/dist/commands/init.d.ts.map +1 -0
  35. package/dist/commands/init.js +186 -0
  36. package/dist/commands/init.js.map +1 -0
  37. package/dist/commands/kick.d.ts +12 -0
  38. package/dist/commands/kick.d.ts.map +1 -0
  39. package/dist/commands/kick.js +71 -0
  40. package/dist/commands/kick.js.map +1 -0
  41. package/dist/commands/migrate.d.ts +18 -0
  42. package/dist/commands/migrate.d.ts.map +1 -0
  43. package/dist/commands/migrate.js +470 -0
  44. package/dist/commands/migrate.js.map +1 -0
  45. package/dist/commands/op.d.ts +12 -0
  46. package/dist/commands/op.d.ts.map +1 -0
  47. package/dist/commands/op.js +220 -0
  48. package/dist/commands/op.js.map +1 -0
  49. package/dist/commands/player-online.d.ts +11 -0
  50. package/dist/commands/player-online.d.ts.map +1 -0
  51. package/dist/commands/player-online.js +151 -0
  52. package/dist/commands/player-online.js.map +1 -0
  53. package/dist/commands/player.d.ts +18 -0
  54. package/dist/commands/player.d.ts.map +1 -0
  55. package/dist/commands/player.js +352 -0
  56. package/dist/commands/player.js.map +1 -0
  57. package/dist/commands/server-backup.d.ts +36 -0
  58. package/dist/commands/server-backup.d.ts.map +1 -0
  59. package/dist/commands/server-backup.js +320 -0
  60. package/dist/commands/server-backup.js.map +1 -0
  61. package/dist/commands/server-restore.d.ts +13 -0
  62. package/dist/commands/server-restore.d.ts.map +1 -0
  63. package/dist/commands/server-restore.js +294 -0
  64. package/dist/commands/server-restore.js.map +1 -0
  65. package/dist/commands/status.d.ts +13 -0
  66. package/dist/commands/status.d.ts.map +1 -0
  67. package/dist/commands/status.js +325 -0
  68. package/dist/commands/status.js.map +1 -0
  69. package/dist/commands/whitelist.d.ts +12 -0
  70. package/dist/commands/whitelist.d.ts.map +1 -0
  71. package/dist/commands/whitelist.js +316 -0
  72. package/dist/commands/whitelist.js.map +1 -0
  73. package/dist/commands/world.d.ts +16 -0
  74. package/dist/commands/world.d.ts.map +1 -0
  75. package/dist/commands/world.js +135 -0
  76. package/dist/commands/world.js.map +1 -0
  77. package/dist/domain/index.d.ts +2 -0
  78. package/dist/domain/index.d.ts.map +1 -0
  79. package/dist/domain/index.js +7 -0
  80. package/dist/domain/index.js.map +1 -0
  81. package/dist/index.d.ts +3 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +609 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts +29 -0
  86. package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts.map +1 -0
  87. package/dist/infrastructure/adapters/ClackPromptAdapter.js +419 -0
  88. package/dist/infrastructure/adapters/ClackPromptAdapter.js.map +1 -0
  89. package/dist/infrastructure/adapters/index.d.ts +3 -0
  90. package/dist/infrastructure/adapters/index.d.ts.map +1 -0
  91. package/dist/infrastructure/adapters/index.js +5 -0
  92. package/dist/infrastructure/adapters/index.js.map +1 -0
  93. package/dist/infrastructure/di/container.d.ts +47 -0
  94. package/dist/infrastructure/di/container.d.ts.map +1 -0
  95. package/dist/infrastructure/di/container.js +140 -0
  96. package/dist/infrastructure/di/container.js.map +1 -0
  97. package/dist/infrastructure/di/index.d.ts +2 -0
  98. package/dist/infrastructure/di/index.d.ts.map +1 -0
  99. package/dist/infrastructure/di/index.js +2 -0
  100. package/dist/infrastructure/di/index.js.map +1 -0
  101. package/dist/infrastructure/index.d.ts +4 -0
  102. package/dist/infrastructure/index.d.ts.map +1 -0
  103. package/dist/infrastructure/index.js +7 -0
  104. package/dist/infrastructure/index.js.map +1 -0
  105. package/dist/lib/mojang-api.d.ts +51 -0
  106. package/dist/lib/mojang-api.d.ts.map +1 -0
  107. package/dist/lib/mojang-api.js +136 -0
  108. package/dist/lib/mojang-api.js.map +1 -0
  109. package/dist/lib/player-cache.d.ts +79 -0
  110. package/dist/lib/player-cache.d.ts.map +1 -0
  111. package/dist/lib/player-cache.js +302 -0
  112. package/dist/lib/player-cache.js.map +1 -0
  113. package/dist/lib/player-json.d.ts +69 -0
  114. package/dist/lib/player-json.d.ts.map +1 -0
  115. package/dist/lib/player-json.js +96 -0
  116. package/dist/lib/player-json.js.map +1 -0
  117. package/dist/lib/prompts/action-select.d.ts +23 -0
  118. package/dist/lib/prompts/action-select.d.ts.map +1 -0
  119. package/dist/lib/prompts/action-select.js +124 -0
  120. package/dist/lib/prompts/action-select.js.map +1 -0
  121. package/dist/lib/prompts/index.d.ts +7 -0
  122. package/dist/lib/prompts/index.d.ts.map +1 -0
  123. package/dist/lib/prompts/index.js +7 -0
  124. package/dist/lib/prompts/index.js.map +1 -0
  125. package/dist/lib/prompts/player-select.d.ts +25 -0
  126. package/dist/lib/prompts/player-select.d.ts.map +1 -0
  127. package/dist/lib/prompts/player-select.js +122 -0
  128. package/dist/lib/prompts/player-select.js.map +1 -0
  129. package/dist/lib/prompts/server-select.d.ts +26 -0
  130. package/dist/lib/prompts/server-select.d.ts.map +1 -0
  131. package/dist/lib/prompts/server-select.js +99 -0
  132. package/dist/lib/prompts/server-select.js.map +1 -0
  133. package/dist/lib/rcon.d.ts +53 -0
  134. package/dist/lib/rcon.d.ts.map +1 -0
  135. package/dist/lib/rcon.js +131 -0
  136. package/dist/lib/rcon.js.map +1 -0
  137. package/dist/lib/shell.d.ts +109 -0
  138. package/dist/lib/shell.d.ts.map +1 -0
  139. package/dist/lib/shell.js +318 -0
  140. package/dist/lib/shell.js.map +1 -0
  141. package/package.json +2 -2
@@ -0,0 +1,316 @@
1
+ import { join } from 'node:path';
2
+ import { Paths, log, colors } from '@minecraft-docker/shared';
3
+ import { ShellExecutor } from '../lib/shell.js';
4
+ import { isContainerRunning, execRconWithOutput, getContainerName } from '../lib/rcon.js';
5
+ import { readPlayerJson, findPlayerByName, } from '../lib/player-json.js';
6
+ /**
7
+ * Manage server whitelist
8
+ */
9
+ export async function whitelistCommand(options) {
10
+ const paths = new Paths(options.root);
11
+ if (!paths.isInitialized()) {
12
+ log.error('Platform not initialized. Run: mcctl init');
13
+ return 1;
14
+ }
15
+ if (!options.serverName) {
16
+ log.error('Server name is required');
17
+ log.info('Usage: mcctl whitelist <server> <list|add|remove|on|off|status> [player]');
18
+ return 1;
19
+ }
20
+ if (!options.subCommand) {
21
+ log.error('Action is required: list, add, remove, on, off, status');
22
+ log.info('Usage: mcctl whitelist <server> <list|add|remove|on|off|status> [player]');
23
+ return 1;
24
+ }
25
+ const shell = new ShellExecutor(paths);
26
+ const config = shell.readConfig(options.serverName);
27
+ if (config === null) {
28
+ log.error(`Server '${options.serverName}' not found`);
29
+ return 1;
30
+ }
31
+ const containerName = getContainerName(options.serverName);
32
+ const isRunning = await isContainerRunning(containerName);
33
+ const whitelistJsonPath = join(paths.servers, options.serverName, 'data', 'whitelist.json');
34
+ switch (options.subCommand) {
35
+ case 'list':
36
+ return await listWhitelist(options, config, whitelistJsonPath, containerName, isRunning);
37
+ case 'add':
38
+ if (!options.playerName) {
39
+ log.error('Player name is required for add');
40
+ log.info('Usage: mcctl whitelist <server> add <player>');
41
+ return 1;
42
+ }
43
+ return await addToWhitelist(shell, options, config, whitelistJsonPath, containerName, isRunning);
44
+ case 'remove':
45
+ if (!options.playerName) {
46
+ log.error('Player name is required for remove');
47
+ log.info('Usage: mcctl whitelist <server> remove <player>');
48
+ return 1;
49
+ }
50
+ return await removeFromWhitelist(shell, options, config, whitelistJsonPath, containerName, isRunning);
51
+ case 'on':
52
+ return await enableWhitelist(shell, options, containerName, isRunning);
53
+ case 'off':
54
+ return await disableWhitelist(shell, options, containerName, isRunning);
55
+ case 'status':
56
+ return await whitelistStatus(options, config, containerName, isRunning);
57
+ default:
58
+ log.error(`Unknown action: ${options.subCommand}`);
59
+ log.info('Valid actions: list, add, remove, on, off, status');
60
+ return 1;
61
+ }
62
+ }
63
+ /**
64
+ * List whitelisted players
65
+ */
66
+ async function listWhitelist(options, config, whitelistJsonPath, containerName, isRunning) {
67
+ let players = [];
68
+ let source = 'json';
69
+ if (isRunning) {
70
+ // Try RCON first for accurate data
71
+ const result = await execRconWithOutput(containerName, ['whitelist', 'list']);
72
+ if (result.code === 0) {
73
+ // Parse RCON output: "There are X whitelisted players: player1, player2"
74
+ const match = result.output.match(/:\s*(.+)$/);
75
+ if (match && match[1]) {
76
+ const names = match[1]
77
+ .split(',')
78
+ .map((s) => s.trim())
79
+ .filter(Boolean);
80
+ players = names.map((name) => ({ uuid: '', name }));
81
+ source = 'rcon';
82
+ }
83
+ }
84
+ }
85
+ // Fallback to JSON file
86
+ if (players.length === 0 || source !== 'rcon') {
87
+ players = await readPlayerJson(whitelistJsonPath);
88
+ source = 'json';
89
+ }
90
+ // Also check config.env WHITELIST
91
+ const configWhitelist = config['WHITELIST']
92
+ ? config['WHITELIST'].split(',').map((s) => s.trim()).filter(Boolean)
93
+ : [];
94
+ if (options.json) {
95
+ console.log(JSON.stringify({
96
+ server: options.serverName,
97
+ running: isRunning,
98
+ players: players.map((p) => p.name),
99
+ configWhitelist,
100
+ source,
101
+ }));
102
+ }
103
+ else {
104
+ console.log(colors.bold(`\nWhitelist for ${options.serverName}:\n`));
105
+ if (players.length === 0) {
106
+ console.log(' (none)');
107
+ }
108
+ else {
109
+ for (const player of players) {
110
+ console.log(` ${colors.cyan(player.name)}`);
111
+ }
112
+ }
113
+ console.log('');
114
+ if (!isRunning) {
115
+ log.warn('Server is not running. Showing whitelist from JSON file');
116
+ }
117
+ }
118
+ return 0;
119
+ }
120
+ /**
121
+ * Add player to whitelist
122
+ */
123
+ async function addToWhitelist(shell, options, config, whitelistJsonPath, containerName, isRunning) {
124
+ const playerName = options.playerName;
125
+ // Read current whitelist
126
+ const players = await readPlayerJson(whitelistJsonPath);
127
+ // Check if already whitelisted
128
+ if (findPlayerByName(players, playerName)) {
129
+ if (options.json) {
130
+ console.log(JSON.stringify({
131
+ success: false,
132
+ error: 'already_whitelisted',
133
+ player: playerName,
134
+ server: options.serverName,
135
+ }));
136
+ }
137
+ else {
138
+ log.warn(`${playerName} is already whitelisted`);
139
+ }
140
+ return 0;
141
+ }
142
+ let rconSuccess = false;
143
+ let rconMessage = '';
144
+ // Execute RCON if server is running
145
+ if (isRunning) {
146
+ const result = await execRconWithOutput(containerName, ['whitelist', 'add', playerName]);
147
+ rconSuccess = result.code === 0;
148
+ rconMessage = result.output.trim();
149
+ }
150
+ // Update config.env WHITELIST
151
+ const currentConfigList = config['WHITELIST']
152
+ ? config['WHITELIST'].split(',').map((s) => s.trim()).filter(Boolean)
153
+ : [];
154
+ if (!currentConfigList.some((n) => n.toLowerCase() === playerName.toLowerCase())) {
155
+ const newList = [...currentConfigList, playerName].join(',');
156
+ shell.writeConfigValue(options.serverName, 'WHITELIST', newList);
157
+ }
158
+ if (options.json) {
159
+ console.log(JSON.stringify({
160
+ success: true,
161
+ player: playerName,
162
+ server: options.serverName,
163
+ rcon: isRunning ? { success: rconSuccess, message: rconMessage } : null,
164
+ running: isRunning,
165
+ }));
166
+ }
167
+ else {
168
+ if (isRunning && rconSuccess) {
169
+ console.log(colors.green(`${playerName} added to whitelist (applied immediately)`));
170
+ }
171
+ else if (isRunning && !rconSuccess) {
172
+ console.log(colors.yellow(`RCON: ${rconMessage}`));
173
+ console.log(colors.green(`Config updated. Will apply on server restart.`));
174
+ }
175
+ else {
176
+ console.log(colors.yellow(`Server is not running.`));
177
+ console.log(colors.green(`Config updated. Changes will apply on next start.`));
178
+ }
179
+ }
180
+ return 0;
181
+ }
182
+ /**
183
+ * Remove player from whitelist
184
+ */
185
+ async function removeFromWhitelist(shell, options, config, whitelistJsonPath, containerName, isRunning) {
186
+ const playerName = options.playerName;
187
+ let rconSuccess = false;
188
+ let rconMessage = '';
189
+ // Execute RCON if server is running
190
+ if (isRunning) {
191
+ const result = await execRconWithOutput(containerName, ['whitelist', 'remove', playerName]);
192
+ rconSuccess = result.code === 0;
193
+ rconMessage = result.output.trim();
194
+ }
195
+ // Update config.env WHITELIST
196
+ const currentConfigList = config['WHITELIST']
197
+ ? config['WHITELIST'].split(',').map((s) => s.trim()).filter(Boolean)
198
+ : [];
199
+ const newConfigList = currentConfigList.filter((n) => n.toLowerCase() !== playerName.toLowerCase());
200
+ shell.writeConfigValue(options.serverName, 'WHITELIST', newConfigList.join(','));
201
+ if (options.json) {
202
+ console.log(JSON.stringify({
203
+ success: true,
204
+ player: playerName,
205
+ server: options.serverName,
206
+ rcon: isRunning ? { success: rconSuccess, message: rconMessage } : null,
207
+ running: isRunning,
208
+ }));
209
+ }
210
+ else {
211
+ if (isRunning && rconSuccess) {
212
+ console.log(colors.green(`${playerName} removed from whitelist (applied immediately)`));
213
+ }
214
+ else if (isRunning && !rconSuccess) {
215
+ console.log(colors.yellow(`RCON: ${rconMessage}`));
216
+ console.log(colors.green(`Config updated. Will apply on server restart.`));
217
+ }
218
+ else {
219
+ console.log(colors.yellow(`Server is not running.`));
220
+ console.log(colors.green(`Config updated. Changes will apply on next start.`));
221
+ }
222
+ }
223
+ return 0;
224
+ }
225
+ /**
226
+ * Enable whitelist
227
+ */
228
+ async function enableWhitelist(shell, options, containerName, isRunning) {
229
+ let rconSuccess = false;
230
+ let rconMessage = '';
231
+ if (isRunning) {
232
+ const result = await execRconWithOutput(containerName, ['whitelist', 'on']);
233
+ rconSuccess = result.code === 0;
234
+ rconMessage = result.output.trim();
235
+ }
236
+ // Update config.env
237
+ shell.writeConfigValue(options.serverName, 'ENABLE_WHITELIST', 'true');
238
+ if (options.json) {
239
+ console.log(JSON.stringify({
240
+ success: true,
241
+ action: 'enable',
242
+ server: options.serverName,
243
+ rcon: isRunning ? { success: rconSuccess, message: rconMessage } : null,
244
+ running: isRunning,
245
+ }));
246
+ }
247
+ else {
248
+ if (isRunning && rconSuccess) {
249
+ console.log(colors.green(`Whitelist enabled (applied immediately)`));
250
+ }
251
+ else if (!isRunning) {
252
+ console.log(colors.yellow(`Server is not running.`));
253
+ console.log(colors.green(`Config updated. Whitelist will be enabled on next start.`));
254
+ }
255
+ }
256
+ return 0;
257
+ }
258
+ /**
259
+ * Disable whitelist
260
+ */
261
+ async function disableWhitelist(shell, options, containerName, isRunning) {
262
+ let rconSuccess = false;
263
+ let rconMessage = '';
264
+ if (isRunning) {
265
+ const result = await execRconWithOutput(containerName, ['whitelist', 'off']);
266
+ rconSuccess = result.code === 0;
267
+ rconMessage = result.output.trim();
268
+ }
269
+ // Update config.env
270
+ shell.writeConfigValue(options.serverName, 'ENABLE_WHITELIST', 'false');
271
+ if (options.json) {
272
+ console.log(JSON.stringify({
273
+ success: true,
274
+ action: 'disable',
275
+ server: options.serverName,
276
+ rcon: isRunning ? { success: rconSuccess, message: rconMessage } : null,
277
+ running: isRunning,
278
+ }));
279
+ }
280
+ else {
281
+ if (isRunning && rconSuccess) {
282
+ console.log(colors.green(`Whitelist disabled (applied immediately)`));
283
+ }
284
+ else if (!isRunning) {
285
+ console.log(colors.yellow(`Server is not running.`));
286
+ console.log(colors.green(`Config updated. Whitelist will be disabled on next start.`));
287
+ }
288
+ }
289
+ return 0;
290
+ }
291
+ /**
292
+ * Show whitelist status
293
+ */
294
+ async function whitelistStatus(options, config, containerName, isRunning) {
295
+ const enabled = config['ENABLE_WHITELIST']?.toLowerCase() === 'true';
296
+ const whitelistPlayers = config['WHITELIST']
297
+ ? config['WHITELIST'].split(',').map((s) => s.trim()).filter(Boolean)
298
+ : [];
299
+ if (options.json) {
300
+ console.log(JSON.stringify({
301
+ server: options.serverName,
302
+ enabled,
303
+ playerCount: whitelistPlayers.length,
304
+ running: isRunning,
305
+ }));
306
+ }
307
+ else {
308
+ console.log(colors.bold(`\nWhitelist Status for ${options.serverName}:\n`));
309
+ console.log(` Enabled: ${enabled ? colors.green('Yes') : colors.red('No')}`);
310
+ console.log(` Players: ${colors.cyan(String(whitelistPlayers.length))}`);
311
+ console.log(` Running: ${isRunning ? colors.green('Yes') : colors.yellow('No')}`);
312
+ console.log('');
313
+ }
314
+ return 0;
315
+ }
316
+ //# sourceMappingURL=whitelist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whitelist.js","sourceRoot":"","sources":["../../src/commands/whitelist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * World command options
3
+ */
4
+ export interface WorldCommandOptions {
5
+ root?: string;
6
+ subCommand?: string;
7
+ worldName?: string;
8
+ serverName?: string;
9
+ json?: boolean;
10
+ force?: boolean;
11
+ }
12
+ /**
13
+ * Execute world management command
14
+ */
15
+ export declare function worldCommand(options: WorldCommandOptions): Promise<number>;
16
+ //# sourceMappingURL=world.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../src/commands/world.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BhF"}
@@ -0,0 +1,135 @@
1
+ import { Paths, log, colors } from '@minecraft-docker/shared';
2
+ import { getContainer } from '../infrastructure/index.js';
3
+ /**
4
+ * Execute world management command
5
+ */
6
+ export async function worldCommand(options) {
7
+ const paths = new Paths(options.root);
8
+ // Check if initialized
9
+ if (!paths.isInitialized()) {
10
+ log.error('Platform not initialized. Run: mcctl init');
11
+ return 1;
12
+ }
13
+ const container = getContainer(options.root);
14
+ const subCommand = options.subCommand ?? 'list';
15
+ switch (subCommand) {
16
+ case 'list':
17
+ return worldList(container, options);
18
+ case 'assign':
19
+ return worldAssign(container, options);
20
+ case 'release':
21
+ return worldRelease(container, options);
22
+ default:
23
+ log.error(`Unknown world subcommand: ${subCommand}`);
24
+ console.log('Usage: mcctl world [list|assign|release]');
25
+ return 1;
26
+ }
27
+ }
28
+ /**
29
+ * List all worlds
30
+ */
31
+ async function worldList(container, options) {
32
+ const useCase = container.worldManagementUseCase;
33
+ try {
34
+ const worlds = await useCase.listWorlds();
35
+ if (worlds.length === 0) {
36
+ console.log('No worlds found in worlds/ directory');
37
+ return 0;
38
+ }
39
+ if (options.json) {
40
+ console.log(JSON.stringify(worlds, null, 2));
41
+ return 0;
42
+ }
43
+ console.log('');
44
+ console.log(colors.bold('Worlds:'));
45
+ console.log('');
46
+ for (const world of worlds) {
47
+ const lockStatus = world.isLocked
48
+ ? colors.yellow(`locked: ${world.lockedBy}`)
49
+ : colors.green('unlocked');
50
+ console.log(` ${colors.cyan(world.name)}`);
51
+ console.log(` Status: ${lockStatus}`);
52
+ console.log(` Size: ${world.size}`);
53
+ console.log(` Path: ${world.path}`);
54
+ console.log('');
55
+ }
56
+ return 0;
57
+ }
58
+ catch (error) {
59
+ const message = error instanceof Error ? error.message : String(error);
60
+ log.error(message);
61
+ return 1;
62
+ }
63
+ }
64
+ /**
65
+ * Assign world to server
66
+ */
67
+ async function worldAssign(container, options) {
68
+ const useCase = container.worldManagementUseCase;
69
+ try {
70
+ // If both world and server provided, use direct assignment
71
+ if (options.worldName && options.serverName) {
72
+ const result = await useCase.assignWorldByName(options.worldName, options.serverName);
73
+ if (result.success) {
74
+ console.log('');
75
+ console.log(colors.green(`✓ World '${result.worldName}' assigned to '${result.serverName}'`));
76
+ console.log('');
77
+ return 0;
78
+ }
79
+ else {
80
+ log.error(result.error || 'Failed to assign world');
81
+ return 1;
82
+ }
83
+ }
84
+ // Interactive mode
85
+ const result = await useCase.assignWorld();
86
+ return result.success ? 0 : 1;
87
+ }
88
+ catch (error) {
89
+ const prompt = container.promptPort;
90
+ if (prompt.isCancel(error)) {
91
+ return 0;
92
+ }
93
+ const message = error instanceof Error ? error.message : String(error);
94
+ log.error(message);
95
+ return 1;
96
+ }
97
+ }
98
+ /**
99
+ * Release world lock
100
+ */
101
+ async function worldRelease(container, options) {
102
+ const useCase = container.worldManagementUseCase;
103
+ try {
104
+ // If world name provided, use direct release
105
+ if (options.worldName) {
106
+ const result = await useCase.releaseWorldByName(options.worldName, options.force ?? false);
107
+ if (result.success) {
108
+ console.log('');
109
+ console.log(colors.green(`✓ World '${result.worldName}' lock released`));
110
+ if (result.previousServer) {
111
+ console.log(colors.dim(` Previously locked by: ${result.previousServer}`));
112
+ }
113
+ console.log('');
114
+ return 0;
115
+ }
116
+ else {
117
+ log.error(result.error || 'Failed to release world lock');
118
+ return 1;
119
+ }
120
+ }
121
+ // Interactive mode
122
+ const result = await useCase.releaseWorld();
123
+ return result.success ? 0 : 1;
124
+ }
125
+ catch (error) {
126
+ const prompt = container.promptPort;
127
+ if (prompt.isCancel(error)) {
128
+ return 0;
129
+ }
130
+ const message = error instanceof Error ? error.message : String(error);
131
+ log.error(message);
132
+ return 1;
133
+ }
134
+ }
135
+ //# sourceMappingURL=world.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world.js","sourceRoot":"","sources":["../../src/commands/world.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { ServerName, ServerType, ServerTypeEnum, type ServerTypeInfo, McVersion, Memory, WorldOptions, WorldSetupType, type WorldOptionsData, Server, ServerStatus, type ServerConfig, World, WorldLockStatus, type WorldLock, } from '@minecraft-docker/shared';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,UAAU,EACV,UAAU,EACV,cAAc,EACd,KAAK,cAAc,EACnB,SAAS,EACT,MAAM,EACN,YAAY,EACZ,cAAc,EACd,KAAK,gBAAgB,EAErB,MAAM,EACN,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,EACL,eAAe,EACf,KAAK,SAAS,GACf,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,7 @@
1
+ // Re-export from shared package for backward compatibility
2
+ export {
3
+ // Value Objects
4
+ ServerName, ServerType, ServerTypeEnum, McVersion, Memory, WorldOptions, WorldSetupType,
5
+ // Entities
6
+ Server, ServerStatus, World, WorldLockStatus, } from '@minecraft-docker/shared';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO;AACL,gBAAgB;AAChB,UAAU,EACV,UAAU,EACV,cAAc,EAEd,SAAS,EACT,MAAM,EACN,YAAY,EACZ,cAAc;AAEd,WAAW;AACX,MAAM,EACN,YAAY,EAEZ,KAAK,EACL,eAAe,GAEhB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}