@minecraft-docker/shared 1.6.1 → 1.6.3

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 (164) hide show
  1. package/dist/application/ports/inbound/IWorldManagementUseCase.d.ts +41 -0
  2. package/dist/application/ports/inbound/IWorldManagementUseCase.d.ts.map +1 -1
  3. package/dist/application/ports/inbound/index.d.ts +1 -1
  4. package/dist/application/ports/inbound/index.d.ts.map +1 -1
  5. package/dist/application/ports/index.d.ts +2 -2
  6. package/dist/application/ports/index.d.ts.map +1 -1
  7. package/dist/application/ports/outbound/IModSourcePort.d.ts +71 -0
  8. package/dist/application/ports/outbound/IModSourcePort.d.ts.map +1 -0
  9. package/dist/application/ports/outbound/IModSourcePort.js +19 -0
  10. package/dist/application/ports/outbound/IModSourcePort.js.map +1 -0
  11. package/dist/application/ports/outbound/IPromptPort.d.ts +12 -0
  12. package/dist/application/ports/outbound/IPromptPort.d.ts.map +1 -1
  13. package/dist/application/ports/outbound/IServiceManagerPort.d.ts +115 -0
  14. package/dist/application/ports/outbound/IServiceManagerPort.d.ts.map +1 -0
  15. package/dist/application/ports/outbound/IServiceManagerPort.js +2 -0
  16. package/dist/application/ports/outbound/IServiceManagerPort.js.map +1 -0
  17. package/dist/application/ports/outbound/IShellPort.d.ts +10 -2
  18. package/dist/application/ports/outbound/IShellPort.d.ts.map +1 -1
  19. package/dist/application/ports/outbound/IUserRepository.d.ts +42 -0
  20. package/dist/application/ports/outbound/IUserRepository.d.ts.map +1 -0
  21. package/dist/application/ports/outbound/IUserRepository.js +2 -0
  22. package/dist/application/ports/outbound/IUserRepository.js.map +1 -0
  23. package/dist/application/ports/outbound/IWorldRepository.d.ts +19 -0
  24. package/dist/application/ports/outbound/IWorldRepository.d.ts.map +1 -1
  25. package/dist/application/ports/outbound/index.d.ts +4 -1
  26. package/dist/application/ports/outbound/index.d.ts.map +1 -1
  27. package/dist/application/use-cases/CreateServerUseCase.d.ts.map +1 -1
  28. package/dist/application/use-cases/CreateServerUseCase.js +2 -3
  29. package/dist/application/use-cases/CreateServerUseCase.js.map +1 -1
  30. package/dist/application/use-cases/DeleteServerUseCase.js +5 -5
  31. package/dist/application/use-cases/DeleteServerUseCase.js.map +1 -1
  32. package/dist/application/use-cases/WorldManagementUseCase.d.ts +18 -1
  33. package/dist/application/use-cases/WorldManagementUseCase.d.ts.map +1 -1
  34. package/dist/application/use-cases/WorldManagementUseCase.js +332 -0
  35. package/dist/application/use-cases/WorldManagementUseCase.js.map +1 -1
  36. package/dist/docker/index.d.ts +51 -1
  37. package/dist/docker/index.d.ts.map +1 -1
  38. package/dist/docker/index.js +194 -4
  39. package/dist/docker/index.js.map +1 -1
  40. package/dist/domain/entities/User.d.ts +77 -0
  41. package/dist/domain/entities/User.d.ts.map +1 -0
  42. package/dist/domain/entities/User.js +121 -0
  43. package/dist/domain/entities/User.js.map +1 -0
  44. package/dist/domain/entities/World.d.ts +7 -1
  45. package/dist/domain/entities/World.d.ts.map +1 -1
  46. package/dist/domain/entities/World.js +14 -1
  47. package/dist/domain/entities/World.js.map +1 -1
  48. package/dist/domain/entities/index.d.ts +1 -0
  49. package/dist/domain/entities/index.d.ts.map +1 -1
  50. package/dist/domain/entities/index.js +1 -0
  51. package/dist/domain/entities/index.js.map +1 -1
  52. package/dist/domain/index.d.ts +2 -2
  53. package/dist/domain/index.d.ts.map +1 -1
  54. package/dist/domain/index.js +4 -2
  55. package/dist/domain/index.js.map +1 -1
  56. package/dist/domain/mod/ModDependency.d.ts +18 -0
  57. package/dist/domain/mod/ModDependency.d.ts.map +1 -0
  58. package/dist/domain/mod/ModDependency.js +5 -0
  59. package/dist/domain/mod/ModDependency.js.map +1 -0
  60. package/dist/domain/mod/ModFile.d.ts +27 -0
  61. package/dist/domain/mod/ModFile.d.ts.map +1 -0
  62. package/dist/domain/mod/ModFile.js +5 -0
  63. package/dist/domain/mod/ModFile.js.map +1 -0
  64. package/dist/domain/mod/ModProject.d.ts +36 -0
  65. package/dist/domain/mod/ModProject.d.ts.map +1 -0
  66. package/dist/domain/mod/ModProject.js +5 -0
  67. package/dist/domain/mod/ModProject.js.map +1 -0
  68. package/dist/domain/mod/ModSearchResult.d.ts +18 -0
  69. package/dist/domain/mod/ModSearchResult.d.ts.map +1 -0
  70. package/dist/domain/mod/ModSearchResult.js +5 -0
  71. package/dist/domain/mod/ModSearchResult.js.map +1 -0
  72. package/dist/domain/mod/ModVersion.d.ts +36 -0
  73. package/dist/domain/mod/ModVersion.d.ts.map +1 -0
  74. package/dist/domain/mod/ModVersion.js +5 -0
  75. package/dist/domain/mod/ModVersion.js.map +1 -0
  76. package/dist/domain/mod/index.d.ts +11 -0
  77. package/dist/domain/mod/index.d.ts.map +1 -0
  78. package/dist/domain/mod/index.js +6 -0
  79. package/dist/domain/mod/index.js.map +1 -0
  80. package/dist/domain/mod/types.d.ts +43 -0
  81. package/dist/domain/mod/types.d.ts.map +1 -0
  82. package/dist/domain/mod/types.js +6 -0
  83. package/dist/domain/mod/types.js.map +1 -0
  84. package/dist/domain/value-objects/ProcessInfo.d.ts +99 -0
  85. package/dist/domain/value-objects/ProcessInfo.d.ts.map +1 -0
  86. package/dist/domain/value-objects/ProcessInfo.js +171 -0
  87. package/dist/domain/value-objects/ProcessInfo.js.map +1 -0
  88. package/dist/domain/value-objects/Role.d.ts +41 -0
  89. package/dist/domain/value-objects/Role.d.ts.map +1 -0
  90. package/dist/domain/value-objects/Role.js +66 -0
  91. package/dist/domain/value-objects/Role.js.map +1 -0
  92. package/dist/domain/value-objects/ServerType.d.ts +1 -0
  93. package/dist/domain/value-objects/ServerType.d.ts.map +1 -1
  94. package/dist/domain/value-objects/ServerType.js +8 -0
  95. package/dist/domain/value-objects/ServerType.js.map +1 -1
  96. package/dist/domain/value-objects/ServiceStatus.d.ts +64 -0
  97. package/dist/domain/value-objects/ServiceStatus.d.ts.map +1 -0
  98. package/dist/domain/value-objects/ServiceStatus.js +99 -0
  99. package/dist/domain/value-objects/ServiceStatus.js.map +1 -0
  100. package/dist/domain/value-objects/UserId.d.ts +21 -0
  101. package/dist/domain/value-objects/UserId.d.ts.map +1 -0
  102. package/dist/domain/value-objects/UserId.js +43 -0
  103. package/dist/domain/value-objects/UserId.js.map +1 -0
  104. package/dist/domain/value-objects/Username.d.ts +16 -0
  105. package/dist/domain/value-objects/Username.d.ts.map +1 -0
  106. package/dist/domain/value-objects/Username.js +46 -0
  107. package/dist/domain/value-objects/Username.js.map +1 -0
  108. package/dist/domain/value-objects/index.d.ts +5 -0
  109. package/dist/domain/value-objects/index.d.ts.map +1 -1
  110. package/dist/domain/value-objects/index.js +7 -0
  111. package/dist/domain/value-objects/index.js.map +1 -1
  112. package/dist/index.d.ts +4 -2
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +9 -3
  115. package/dist/index.js.map +1 -1
  116. package/dist/infrastructure/adapters/ApiPromptAdapter.d.ts +115 -0
  117. package/dist/infrastructure/adapters/ApiPromptAdapter.d.ts.map +1 -0
  118. package/dist/infrastructure/adapters/ApiPromptAdapter.js +268 -0
  119. package/dist/infrastructure/adapters/ApiPromptAdapter.js.map +1 -0
  120. package/dist/infrastructure/adapters/ServerRepository.js +3 -3
  121. package/dist/infrastructure/adapters/ServerRepository.js.map +1 -1
  122. package/dist/infrastructure/adapters/ShellAdapter.d.ts +4 -2
  123. package/dist/infrastructure/adapters/ShellAdapter.d.ts.map +1 -1
  124. package/dist/infrastructure/adapters/ShellAdapter.js +15 -5
  125. package/dist/infrastructure/adapters/ShellAdapter.js.map +1 -1
  126. package/dist/infrastructure/adapters/SqliteUserRepository.d.ts +70 -0
  127. package/dist/infrastructure/adapters/SqliteUserRepository.d.ts.map +1 -0
  128. package/dist/infrastructure/adapters/SqliteUserRepository.js +149 -0
  129. package/dist/infrastructure/adapters/SqliteUserRepository.js.map +1 -0
  130. package/dist/infrastructure/adapters/WorldRepository.d.ts +12 -0
  131. package/dist/infrastructure/adapters/WorldRepository.d.ts.map +1 -1
  132. package/dist/infrastructure/adapters/WorldRepository.js +73 -3
  133. package/dist/infrastructure/adapters/WorldRepository.js.map +1 -1
  134. package/dist/infrastructure/adapters/YamlUserRepository.d.ts +67 -0
  135. package/dist/infrastructure/adapters/YamlUserRepository.d.ts.map +1 -0
  136. package/dist/infrastructure/adapters/YamlUserRepository.js +161 -0
  137. package/dist/infrastructure/adapters/YamlUserRepository.js.map +1 -0
  138. package/dist/infrastructure/adapters/index.d.ts +3 -0
  139. package/dist/infrastructure/adapters/index.d.ts.map +1 -1
  140. package/dist/infrastructure/adapters/index.js +3 -0
  141. package/dist/infrastructure/adapters/index.js.map +1 -1
  142. package/dist/infrastructure/config/Pm2EcosystemConfig.d.ts +192 -0
  143. package/dist/infrastructure/config/Pm2EcosystemConfig.d.ts.map +1 -0
  144. package/dist/infrastructure/config/Pm2EcosystemConfig.js +48 -0
  145. package/dist/infrastructure/config/Pm2EcosystemConfig.js.map +1 -0
  146. package/dist/infrastructure/config/index.d.ts +6 -0
  147. package/dist/infrastructure/config/index.d.ts.map +1 -0
  148. package/dist/infrastructure/config/index.js +6 -0
  149. package/dist/infrastructure/config/index.js.map +1 -0
  150. package/dist/infrastructure/factories/ModSourceFactory.d.ts +73 -0
  151. package/dist/infrastructure/factories/ModSourceFactory.d.ts.map +1 -0
  152. package/dist/infrastructure/factories/ModSourceFactory.js +98 -0
  153. package/dist/infrastructure/factories/ModSourceFactory.js.map +1 -0
  154. package/dist/infrastructure/factories/index.d.ts +5 -0
  155. package/dist/infrastructure/factories/index.d.ts.map +1 -0
  156. package/dist/infrastructure/factories/index.js +5 -0
  157. package/dist/infrastructure/factories/index.js.map +1 -0
  158. package/dist/infrastructure/index.d.ts +1 -0
  159. package/dist/infrastructure/index.d.ts.map +1 -1
  160. package/dist/infrastructure/index.js +1 -0
  161. package/dist/infrastructure/index.js.map +1 -1
  162. package/dist/types/index.d.ts +1 -1
  163. package/dist/types/index.d.ts.map +1 -1
  164. package/package.json +10 -2
@@ -1,4 +1,4 @@
1
- import type { IWorldManagementUseCase, WorldListResult, WorldAssignResult, WorldReleaseResult, IPromptPort, IShellPort, IWorldRepository, IServerRepository } from '../ports/index.js';
1
+ import type { IWorldManagementUseCase, WorldListResult, WorldAssignResult, WorldReleaseResult, WorldDeleteResult, WorldCreateOptions, WorldCreateResult, IPromptPort, IShellPort, IWorldRepository, IServerRepository } from '../ports/index.js';
2
2
  /**
3
3
  * World Management Use Case
4
4
  * Manages world assignments and locks
@@ -9,6 +9,11 @@ export declare class WorldManagementUseCase implements IWorldManagementUseCase {
9
9
  private readonly worldRepo;
10
10
  private readonly serverRepo;
11
11
  constructor(prompt: IPromptPort, shell: IShellPort, worldRepo: IWorldRepository, serverRepo: IServerRepository);
12
+ /**
13
+ * Create a new world with optional seed
14
+ * Interactive mode if options not fully provided
15
+ */
16
+ createWorld(options?: WorldCreateOptions): Promise<WorldCreateResult>;
12
17
  /**
13
18
  * List all worlds with lock status
14
19
  */
@@ -29,5 +34,17 @@ export declare class WorldManagementUseCase implements IWorldManagementUseCase {
29
34
  * Release world by name
30
35
  */
31
36
  releaseWorldByName(worldName: string, force?: boolean): Promise<WorldReleaseResult>;
37
+ /**
38
+ * Interactive world deletion
39
+ */
40
+ deleteWorld(): Promise<WorldDeleteResult>;
41
+ /**
42
+ * Delete world by name
43
+ */
44
+ deleteWorldByName(worldName: string, force?: boolean): Promise<WorldDeleteResult>;
45
+ /**
46
+ * Perform the actual world deletion
47
+ */
48
+ private performWorldDeletion;
32
49
  }
33
50
  //# sourceMappingURL=WorldManagementUseCase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorldManagementUseCase.d.ts","sourceRoot":"","sources":["../../../src/application/use-cases/WorldManagementUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,uBAAuB;IAElE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAHV,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,iBAAiB;IAGhD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAa9C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAiF/C;;OAEG;IACG,iBAAiB,CACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC;IA2C7B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA0EjD;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,KAAK,UAAQ,GACZ,OAAO,CAAC,kBAAkB,CAAC;CA8B/B"}
1
+ {"version":3,"file":"WorldManagementUseCase.d.ts","sourceRoot":"","sources":["../../../src/application/use-cases/WorldManagementUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,uBAAuB;IAElE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAHV,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,iBAAiB;IAGhD;;;OAGG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmO3E;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAa9C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAiF/C;;OAEG;IACG,iBAAiB,CACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC;IA2C7B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA0EjD;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,KAAK,UAAQ,GACZ,OAAO,CAAC,kBAAkB,CAAC;IA+B9B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAiE/C;;OAEG;IACG,iBAAiB,CACrB,SAAS,EAAE,MAAM,EACjB,KAAK,UAAQ,GACZ,OAAO,CAAC,iBAAiB,CAAC;IAuB7B;;OAEG;YACW,oBAAoB;CA2CnC"}
@@ -13,6 +13,222 @@ export class WorldManagementUseCase {
13
13
  this.worldRepo = worldRepo;
14
14
  this.serverRepo = serverRepo;
15
15
  }
16
+ /**
17
+ * Create a new world with optional seed
18
+ * Interactive mode if options not fully provided
19
+ */
20
+ async createWorld(options) {
21
+ const isInteractive = !options?.name;
22
+ if (isInteractive) {
23
+ this.prompt.intro('Create New World');
24
+ }
25
+ try {
26
+ // Get world name
27
+ let worldName = options?.name;
28
+ if (!worldName) {
29
+ worldName = await this.prompt.text({
30
+ message: 'Enter world name:',
31
+ placeholder: 'myworld',
32
+ validate: (value) => {
33
+ if (!value || value.trim() === '') {
34
+ return 'World name is required';
35
+ }
36
+ if (!/^[a-z0-9_-]+$/i.test(value)) {
37
+ return 'World name can only contain letters, numbers, hyphens, and underscores';
38
+ }
39
+ return undefined;
40
+ },
41
+ });
42
+ }
43
+ // Check if world already exists
44
+ const existingWorld = await this.worldRepo.findByName(worldName);
45
+ if (existingWorld) {
46
+ const errorMsg = `World '${worldName}' already exists`;
47
+ if (isInteractive) {
48
+ this.prompt.error(errorMsg);
49
+ this.prompt.outro('World creation cancelled');
50
+ }
51
+ return {
52
+ success: false,
53
+ worldName,
54
+ error: errorMsg,
55
+ };
56
+ }
57
+ // Get seed (optional)
58
+ let seed = options?.seed;
59
+ if (isInteractive && seed === undefined) {
60
+ seed = await this.prompt.text({
61
+ message: 'Enter seed (leave empty for random):',
62
+ placeholder: 'random',
63
+ validate: () => undefined, // Allow empty
64
+ });
65
+ if (seed === '' || seed === 'random') {
66
+ seed = undefined;
67
+ }
68
+ }
69
+ // Get servers for selection
70
+ const servers = await this.serverRepo.findAll();
71
+ if (servers.length === 0) {
72
+ const errorMsg = 'No servers available. Create a server first.';
73
+ if (isInteractive) {
74
+ this.prompt.warn(errorMsg);
75
+ this.prompt.outro('World creation cancelled');
76
+ }
77
+ return {
78
+ success: false,
79
+ worldName,
80
+ seed,
81
+ error: errorMsg,
82
+ };
83
+ }
84
+ // Get server to assign
85
+ let serverName = options?.serverName;
86
+ let selectedServer;
87
+ if (!serverName && isInteractive) {
88
+ selectedServer = await this.prompt.promptServerSelection(servers);
89
+ serverName = selectedServer.name.value;
90
+ }
91
+ else if (serverName) {
92
+ // Validate server exists
93
+ if (!(await this.serverRepo.exists(serverName))) {
94
+ const errorMsg = `Server '${serverName}' not found`;
95
+ if (isInteractive) {
96
+ this.prompt.error(errorMsg);
97
+ this.prompt.outro('World creation cancelled');
98
+ }
99
+ return {
100
+ success: false,
101
+ worldName,
102
+ seed,
103
+ serverName,
104
+ error: errorMsg,
105
+ };
106
+ }
107
+ }
108
+ // Ask about auto-start
109
+ let autoStart = options?.autoStart;
110
+ if (autoStart === undefined && isInteractive) {
111
+ autoStart = await this.prompt.confirm({
112
+ message: 'Start server after creating world?',
113
+ initialValue: true,
114
+ });
115
+ }
116
+ // Execute world creation
117
+ const spinner = isInteractive ? this.prompt.spinner() : null;
118
+ spinner?.start('Creating world...');
119
+ // Create the world directory with seed
120
+ try {
121
+ await this.worldRepo.create(worldName, seed);
122
+ spinner?.message('World directory created');
123
+ }
124
+ catch (error) {
125
+ spinner?.stop('Failed to create world');
126
+ const errorMsg = error instanceof Error ? error.message : String(error);
127
+ if (isInteractive) {
128
+ this.prompt.error(errorMsg);
129
+ this.prompt.outro('World creation failed');
130
+ }
131
+ return {
132
+ success: false,
133
+ worldName,
134
+ seed,
135
+ serverName,
136
+ error: errorMsg,
137
+ };
138
+ }
139
+ // If server specified, configure it to use the new world
140
+ if (serverName) {
141
+ // Check if server is running and stop it
142
+ const statusResult = await this.shell.serverStatus(serverName);
143
+ if (statusResult.success && statusResult.stdout?.includes('running')) {
144
+ spinner?.message('Stopping server...');
145
+ await this.shell.stopServer(serverName);
146
+ }
147
+ spinner?.message('Configuring server...');
148
+ // Set LEVEL to new world name
149
+ const levelResult = await this.shell.setServerConfig(serverName, 'LEVEL', worldName);
150
+ if (!levelResult.success) {
151
+ spinner?.stop('Failed to configure server');
152
+ const errorMsg = levelResult.stderr || 'Failed to set LEVEL';
153
+ if (isInteractive) {
154
+ this.prompt.error(errorMsg);
155
+ this.prompt.outro('World created but server configuration failed');
156
+ }
157
+ return {
158
+ success: false,
159
+ worldName,
160
+ seed,
161
+ serverName,
162
+ error: errorMsg,
163
+ };
164
+ }
165
+ // Set SEED if provided
166
+ if (seed) {
167
+ const seedResult = await this.shell.setServerConfig(serverName, 'SEED', seed);
168
+ if (!seedResult.success) {
169
+ spinner?.stop('Failed to set seed');
170
+ const errorMsg = seedResult.stderr || 'Failed to set SEED';
171
+ if (isInteractive) {
172
+ this.prompt.error(errorMsg);
173
+ this.prompt.outro('World created but seed configuration failed');
174
+ }
175
+ return {
176
+ success: false,
177
+ worldName,
178
+ seed,
179
+ serverName,
180
+ error: errorMsg,
181
+ };
182
+ }
183
+ }
184
+ }
185
+ spinner?.stop('World created');
186
+ // Start server if requested
187
+ let started = false;
188
+ if (autoStart && serverName) {
189
+ const startSpinner = isInteractive ? this.prompt.spinner() : null;
190
+ startSpinner?.start('Starting server...');
191
+ const startResult = await this.shell.startServer(serverName);
192
+ if (startResult.success) {
193
+ started = true;
194
+ startSpinner?.stop('Server started');
195
+ }
196
+ else {
197
+ startSpinner?.stop('Server start failed (world was created)');
198
+ if (isInteractive) {
199
+ this.prompt.warn('World created but server failed to start');
200
+ }
201
+ }
202
+ }
203
+ if (isInteractive) {
204
+ this.prompt.success(`World '${worldName}' created${seed ? ` with seed '${seed}'` : ''}`);
205
+ if (serverName) {
206
+ this.prompt.note(`Assigned to server '${serverName}'`);
207
+ }
208
+ this.prompt.outro('World creation complete');
209
+ }
210
+ return {
211
+ success: true,
212
+ worldName,
213
+ seed,
214
+ serverName,
215
+ started,
216
+ };
217
+ }
218
+ catch (error) {
219
+ if (this.prompt.isCancel(error)) {
220
+ if (isInteractive) {
221
+ this.prompt.outro('World creation cancelled');
222
+ }
223
+ return {
224
+ success: false,
225
+ worldName: options?.name || '',
226
+ error: 'Cancelled',
227
+ };
228
+ }
229
+ throw error;
230
+ }
231
+ }
16
232
  /**
17
233
  * List all worlds with lock status
18
234
  */
@@ -235,5 +451,121 @@ export class WorldManagementUseCase {
235
451
  error: result.success ? undefined : result.stderr,
236
452
  };
237
453
  }
454
+ /**
455
+ * Interactive world deletion
456
+ */
457
+ async deleteWorld() {
458
+ this.prompt.intro('Delete World');
459
+ try {
460
+ // Get all worlds
461
+ const worlds = await this.worldRepo.findAll();
462
+ if (worlds.length === 0) {
463
+ this.prompt.warn('No worlds found');
464
+ this.prompt.outro('Nothing to delete');
465
+ return {
466
+ success: false,
467
+ worldName: '',
468
+ error: 'No worlds found',
469
+ };
470
+ }
471
+ // Prompt for world selection
472
+ const world = await this.prompt.promptWorldSelection(worlds);
473
+ // Show world info
474
+ this.prompt.note(`Name: ${world.name}\n` +
475
+ `Size: ${world.sizeFormatted}\n` +
476
+ `Status: ${world.isLocked ? `locked by ${world.lockedBy}` : 'unlocked'}`, 'World Info');
477
+ // Warn if locked
478
+ if (world.isLocked) {
479
+ this.prompt.warn(`Warning: This world is currently locked by '${world.lockedBy}'!`);
480
+ }
481
+ // Confirm deletion
482
+ const confirmed = await this.prompt.confirm({
483
+ message: 'Are you sure you want to delete this world? This action cannot be undone!',
484
+ initialValue: false,
485
+ });
486
+ if (!confirmed) {
487
+ this.prompt.outro('Deletion cancelled');
488
+ return {
489
+ success: false,
490
+ worldName: world.name,
491
+ error: 'Cancelled',
492
+ };
493
+ }
494
+ // Execute deletion
495
+ return await this.performWorldDeletion(world.name, world.sizeFormatted);
496
+ }
497
+ catch (error) {
498
+ if (this.prompt.isCancel(error)) {
499
+ this.prompt.outro('Deletion cancelled');
500
+ return {
501
+ success: false,
502
+ worldName: '',
503
+ error: 'Cancelled',
504
+ };
505
+ }
506
+ throw error;
507
+ }
508
+ }
509
+ /**
510
+ * Delete world by name
511
+ */
512
+ async deleteWorldByName(worldName, force = false) {
513
+ // Check world exists
514
+ const world = await this.worldRepo.findByName(worldName);
515
+ if (!world) {
516
+ return {
517
+ success: false,
518
+ worldName,
519
+ error: `World '${worldName}' not found`,
520
+ };
521
+ }
522
+ // If not force mode and world is locked, throw error
523
+ if (!force && world.isLocked) {
524
+ return {
525
+ success: false,
526
+ worldName,
527
+ error: `World '${worldName}' is locked by '${world.lockedBy}'. Use --force to delete anyway.`,
528
+ };
529
+ }
530
+ return await this.performWorldDeletion(worldName, world.sizeFormatted, force);
531
+ }
532
+ /**
533
+ * Perform the actual world deletion
534
+ */
535
+ async performWorldDeletion(worldName, size, force = false) {
536
+ const spinner = this.prompt.spinner();
537
+ try {
538
+ spinner.start('Deleting world...');
539
+ // Delete the world
540
+ const success = await this.worldRepo.delete(worldName);
541
+ if (!success) {
542
+ spinner.stop('Deletion failed');
543
+ this.prompt.error('Failed to delete world directory');
544
+ return {
545
+ success: false,
546
+ worldName,
547
+ error: 'Failed to delete world directory',
548
+ };
549
+ }
550
+ spinner.stop('World deleted');
551
+ this.prompt.success(`World '${worldName}' deleted (${size})`);
552
+ this.prompt.outro('World removed successfully');
553
+ return {
554
+ success: true,
555
+ worldName,
556
+ size,
557
+ };
558
+ }
559
+ catch (error) {
560
+ spinner.stop('Deletion failed');
561
+ const message = error instanceof Error ? error.message : String(error);
562
+ this.prompt.error(message);
563
+ return {
564
+ success: false,
565
+ worldName,
566
+ error: message,
567
+ };
568
+ }
569
+ }
238
570
  }
239
571
  //# sourceMappingURL=WorldManagementUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorldManagementUseCase.js","sourceRoot":"","sources":["../../../src/application/use-cases/WorldManagementUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorldManagementUseCase.js","sourceRoot":"","sources":["../../../src/application/use-cases/WorldManagementUseCase.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
1
  import type { ContainerStatus, HealthStatus, ServerInfo, RouterInfo, PlatformStatus, ContainerStats, PlayerListResult, DetailedServerInfo, RouterDetailInfo } from '../types/index.js';
2
+ /**
3
+ * Execute a command and return stdout
4
+ * Uses spawnSync to properly handle arguments with special characters
5
+ */
6
+ export declare function execCommand(command: string, args: string[]): string;
2
7
  /**
3
8
  * Check if Docker is available
4
9
  */
@@ -51,8 +56,9 @@ export declare function getRouterInfo(): RouterInfo;
51
56
  export declare function getAvahiStatus(): string;
52
57
  /**
53
58
  * Get full platform status
59
+ * Includes both running containers and configured-but-not-running servers
54
60
  */
55
- export declare function getPlatformStatus(): PlatformStatus;
61
+ export declare function getPlatformStatus(serversDir?: string): PlatformStatus;
56
62
  /**
57
63
  * Start a container
58
64
  */
@@ -65,6 +71,15 @@ export declare function stopContainer(container: string): boolean;
65
71
  * Get container logs
66
72
  */
67
73
  export declare function getContainerLogs(container: string, lines?: number): string;
74
+ /**
75
+ * Execute a command asynchronously and return result
76
+ * For docker commands that need async/await pattern
77
+ */
78
+ export declare function execCommandAsync(command: string, args: string[]): Promise<{
79
+ code: number;
80
+ stdout: string;
81
+ stderr: string;
82
+ }>;
68
83
  /**
69
84
  * Execute shell script with environment variables
70
85
  */
@@ -108,4 +123,39 @@ export declare function getRouterDetailInfo(): RouterDetailInfo;
108
123
  * Format bytes to human readable string
109
124
  */
110
125
  export declare function formatBytes(bytes: number): string;
126
+ /**
127
+ * Get configured servers from filesystem (servers/ directory)
128
+ * Returns server names (not container names)
129
+ */
130
+ export declare function getConfiguredServers(serversDir?: string): string[];
131
+ /**
132
+ * Get server info for a configured server (may or may not have a container)
133
+ */
134
+ export declare function getServerInfoFromConfig(serverName: string): ServerInfo;
135
+ /**
136
+ * Get all servers (both configured and running containers)
137
+ * Merges filesystem-configured servers with Docker container status
138
+ */
139
+ export declare function getAllServers(serversDir?: string): string[];
140
+ /**
141
+ * Get the servers directory path
142
+ */
143
+ export declare function getServersDir(): string;
144
+ /**
145
+ * Read config.env file for a server
146
+ * Returns key-value pairs of environment variables
147
+ */
148
+ export declare function readServerConfigEnv(serverName: string, serversDir?: string): Record<string, string>;
149
+ /**
150
+ * Check if a server exists (either as container or as configuration)
151
+ */
152
+ export declare function serverExists(serverName: string, serversDir?: string): boolean;
153
+ /**
154
+ * Get detailed server info from config.env (for servers without containers)
155
+ */
156
+ export declare function getDetailedServerInfoFromConfig(serverName: string, serversDir?: string): DetailedServerInfo;
157
+ /**
158
+ * Get detailed server info (works for both running containers and config-only servers)
159
+ */
160
+ export declare function getServerDetailedInfo(serverName: string, serversDir?: string): Promise<DetailedServerInfo>;
111
161
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/docker/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/docker/index.ts"],"names":[],"mappings":"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"}