@minecraft-docker/mcctl 1.6.0 → 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.
- package/dist/application/index.d.ts +2 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +5 -0
- package/dist/application/index.js.map +1 -0
- package/dist/commands/backup.d.ts +16 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +182 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/ban.d.ts +14 -0
- package/dist/commands/ban.d.ts.map +1 -0
- package/dist/commands/ban.js +418 -0
- package/dist/commands/ban.js.map +1 -0
- package/dist/commands/config.d.ts +18 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +106 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/console/api.d.ts +19 -0
- package/dist/commands/console/api.d.ts.map +1 -0
- package/dist/commands/console/api.js +399 -0
- package/dist/commands/console/api.js.map +1 -0
- package/dist/commands/console/index.d.ts +10 -0
- package/dist/commands/console/index.d.ts.map +1 -0
- package/dist/commands/console/index.js +12 -0
- package/dist/commands/console/index.js.map +1 -0
- package/dist/commands/console/init.d.ts +47 -0
- package/dist/commands/console/init.d.ts.map +1 -0
- package/dist/commands/console/init.js +491 -0
- package/dist/commands/console/init.js.map +1 -0
- package/dist/commands/console/remove.d.ts +25 -0
- package/dist/commands/console/remove.d.ts.map +1 -0
- package/dist/commands/console/remove.js +189 -0
- package/dist/commands/console/remove.js.map +1 -0
- package/dist/commands/console/service.d.ts +40 -0
- package/dist/commands/console/service.d.ts.map +1 -0
- package/dist/commands/console/service.js +321 -0
- package/dist/commands/console/service.js.map +1 -0
- package/dist/commands/console/user.d.ts +17 -0
- package/dist/commands/console/user.d.ts.map +1 -0
- package/dist/commands/console/user.js +431 -0
- package/dist/commands/console/user.js.map +1 -0
- package/dist/commands/create.d.ts +22 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +86 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/delete.d.ts +17 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +74 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/exec.d.ts +10 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +29 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/index.d.ts +21 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +23 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +218 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/kick.d.ts +12 -0
- package/dist/commands/kick.d.ts.map +1 -0
- package/dist/commands/kick.js +71 -0
- package/dist/commands/kick.js.map +1 -0
- package/dist/commands/migrate.d.ts +18 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +470 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/mod.d.ts +19 -0
- package/dist/commands/mod.d.ts.map +1 -0
- package/dist/commands/mod.js +441 -0
- package/dist/commands/mod.js.map +1 -0
- package/dist/commands/msg.d.ts +12 -0
- package/dist/commands/msg.d.ts.map +1 -0
- package/dist/commands/msg.js +273 -0
- package/dist/commands/msg.js.map +1 -0
- package/dist/commands/op.d.ts +12 -0
- package/dist/commands/op.d.ts.map +1 -0
- package/dist/commands/op.js +220 -0
- package/dist/commands/op.js.map +1 -0
- package/dist/commands/player-online.d.ts +11 -0
- package/dist/commands/player-online.d.ts.map +1 -0
- package/dist/commands/player-online.js +153 -0
- package/dist/commands/player-online.js.map +1 -0
- package/dist/commands/player.d.ts +18 -0
- package/dist/commands/player.d.ts.map +1 -0
- package/dist/commands/player.js +352 -0
- package/dist/commands/player.js.map +1 -0
- package/dist/commands/server-backup.d.ts +36 -0
- package/dist/commands/server-backup.d.ts.map +1 -0
- package/dist/commands/server-backup.js +320 -0
- package/dist/commands/server-backup.js.map +1 -0
- package/dist/commands/server-restore.d.ts +13 -0
- package/dist/commands/server-restore.d.ts.map +1 -0
- package/dist/commands/server-restore.js +294 -0
- package/dist/commands/server-restore.js.map +1 -0
- package/dist/commands/status.d.ts +13 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +325 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/whitelist.d.ts +12 -0
- package/dist/commands/whitelist.d.ts.map +1 -0
- package/dist/commands/whitelist.js +316 -0
- package/dist/commands/whitelist.js.map +1 -0
- package/dist/commands/world.d.ts +18 -0
- package/dist/commands/world.d.ts.map +1 -0
- package/dist/commands/world.js +238 -0
- package/dist/commands/world.js.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +7 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +766 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts +30 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts.map +1 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.js +430 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.d.ts +78 -0
- package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.d.ts.map +1 -0
- package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.js +391 -0
- package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/index.d.ts +4 -0
- package/dist/infrastructure/adapters/index.d.ts.map +1 -0
- package/dist/infrastructure/adapters/index.js +6 -0
- package/dist/infrastructure/adapters/index.js.map +1 -0
- package/dist/infrastructure/di/container.d.ts +47 -0
- package/dist/infrastructure/di/container.d.ts.map +1 -0
- package/dist/infrastructure/di/container.js +140 -0
- package/dist/infrastructure/di/container.js.map +1 -0
- package/dist/infrastructure/di/index.d.ts +2 -0
- package/dist/infrastructure/di/index.d.ts.map +1 -0
- package/dist/infrastructure/di/index.js +2 -0
- package/dist/infrastructure/di/index.js.map +1 -0
- package/dist/infrastructure/index.d.ts +5 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +8 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/lib/admin-config.d.ts +66 -0
- package/dist/lib/admin-config.d.ts.map +1 -0
- package/dist/lib/admin-config.js +130 -0
- package/dist/lib/admin-config.js.map +1 -0
- package/dist/lib/mojang-api.d.ts +51 -0
- package/dist/lib/mojang-api.d.ts.map +1 -0
- package/dist/lib/mojang-api.js +136 -0
- package/dist/lib/mojang-api.js.map +1 -0
- package/dist/lib/player-cache.d.ts +79 -0
- package/dist/lib/player-cache.d.ts.map +1 -0
- package/dist/lib/player-cache.js +302 -0
- package/dist/lib/player-cache.js.map +1 -0
- package/dist/lib/player-json.d.ts +69 -0
- package/dist/lib/player-json.d.ts.map +1 -0
- package/dist/lib/player-json.js +96 -0
- package/dist/lib/player-json.js.map +1 -0
- package/dist/lib/pm2-utils.d.ts +71 -0
- package/dist/lib/pm2-utils.d.ts.map +1 -0
- package/dist/lib/pm2-utils.js +155 -0
- package/dist/lib/pm2-utils.js.map +1 -0
- package/dist/lib/prompts/action-select.d.ts +23 -0
- package/dist/lib/prompts/action-select.d.ts.map +1 -0
- package/dist/lib/prompts/action-select.js +124 -0
- package/dist/lib/prompts/action-select.js.map +1 -0
- package/dist/lib/prompts/index.d.ts +7 -0
- package/dist/lib/prompts/index.d.ts.map +1 -0
- package/dist/lib/prompts/index.js +7 -0
- package/dist/lib/prompts/index.js.map +1 -0
- package/dist/lib/prompts/ip-select.d.ts +25 -0
- package/dist/lib/prompts/ip-select.d.ts.map +1 -0
- package/dist/lib/prompts/ip-select.js +255 -0
- package/dist/lib/prompts/ip-select.js.map +1 -0
- package/dist/lib/prompts/player-select.d.ts +25 -0
- package/dist/lib/prompts/player-select.d.ts.map +1 -0
- package/dist/lib/prompts/player-select.js +122 -0
- package/dist/lib/prompts/player-select.js.map +1 -0
- package/dist/lib/prompts/server-select.d.ts +26 -0
- package/dist/lib/prompts/server-select.d.ts.map +1 -0
- package/dist/lib/prompts/server-select.js +99 -0
- package/dist/lib/prompts/server-select.js.map +1 -0
- package/dist/lib/rcon.d.ts +53 -0
- package/dist/lib/rcon.d.ts.map +1 -0
- package/dist/lib/rcon.js +131 -0
- package/dist/lib/rcon.js.map +1 -0
- package/dist/lib/shell.d.ts +111 -0
- package/dist/lib/shell.d.ts.map +1 -0
- package/dist/lib/shell.js +321 -0
- package/dist/lib/shell.js.map +1 -0
- package/dist/lib/sudo-utils.d.ts +14 -0
- package/dist/lib/sudo-utils.d.ts.map +1 -0
- package/dist/lib/sudo-utils.js +53 -0
- package/dist/lib/sudo-utils.js.map +1 -0
- package/package.json +8 -2
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PM2 Service Manager Adapter
|
|
3
|
+
*
|
|
4
|
+
* Implements IServiceManagerPort using PM2 for process management.
|
|
5
|
+
* Manages mcctl-api and mcctl-console services via PM2.
|
|
6
|
+
*/
|
|
7
|
+
import pm2 from 'pm2';
|
|
8
|
+
import { existsSync } from 'node:fs';
|
|
9
|
+
import { ProcessInfo, } from '@minecraft-docker/shared';
|
|
10
|
+
import { getEcosystemConfigPath, getPm2LogPaths, readLogFile, normalizePm2Status, formatPm2Error, PM2_SERVICE_NAMES, } from '../../lib/pm2-utils.js';
|
|
11
|
+
/**
|
|
12
|
+
* Promisified PM2 functions
|
|
13
|
+
*/
|
|
14
|
+
function pm2Connect(noDaemonMode = false) {
|
|
15
|
+
return new Promise((resolve, reject) => {
|
|
16
|
+
pm2.connect(noDaemonMode, (err) => {
|
|
17
|
+
if (err)
|
|
18
|
+
reject(err);
|
|
19
|
+
else
|
|
20
|
+
resolve();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function pm2List() {
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
pm2.list((err, list) => {
|
|
27
|
+
if (err)
|
|
28
|
+
reject(err);
|
|
29
|
+
else
|
|
30
|
+
resolve(list);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
function pm2Start(options) {
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
pm2.start(options, (err, proc) => {
|
|
37
|
+
if (err)
|
|
38
|
+
reject(err);
|
|
39
|
+
else
|
|
40
|
+
resolve(proc);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function pm2StartConfig(configPath, appName) {
|
|
45
|
+
return new Promise((resolve, reject) => {
|
|
46
|
+
if (appName) {
|
|
47
|
+
// Start only the specific app from config
|
|
48
|
+
pm2.start(configPath, { only: [appName] }, (err, proc) => {
|
|
49
|
+
if (err)
|
|
50
|
+
reject(err);
|
|
51
|
+
else
|
|
52
|
+
resolve(proc);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// Start all apps from config
|
|
57
|
+
pm2.start(configPath, (err, proc) => {
|
|
58
|
+
if (err)
|
|
59
|
+
reject(err);
|
|
60
|
+
else
|
|
61
|
+
resolve(proc);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function pm2Stop(name) {
|
|
67
|
+
return new Promise((resolve, reject) => {
|
|
68
|
+
pm2.stop(name, (err, proc) => {
|
|
69
|
+
if (err)
|
|
70
|
+
reject(err);
|
|
71
|
+
else
|
|
72
|
+
resolve(proc);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function pm2Restart(name) {
|
|
77
|
+
return new Promise((resolve, reject) => {
|
|
78
|
+
pm2.restart(name, (err, proc) => {
|
|
79
|
+
if (err)
|
|
80
|
+
reject(err);
|
|
81
|
+
else
|
|
82
|
+
resolve(proc);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function pm2Delete(name) {
|
|
87
|
+
return new Promise((resolve, reject) => {
|
|
88
|
+
pm2.delete(name, (err, proc) => {
|
|
89
|
+
if (err)
|
|
90
|
+
reject(err);
|
|
91
|
+
else
|
|
92
|
+
resolve(proc);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
function pm2Describe(name) {
|
|
97
|
+
return new Promise((resolve, reject) => {
|
|
98
|
+
pm2.describe(name, (err, desc) => {
|
|
99
|
+
if (err)
|
|
100
|
+
reject(err);
|
|
101
|
+
else
|
|
102
|
+
resolve(desc);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function pm2Flush(name) {
|
|
107
|
+
return new Promise((resolve, reject) => {
|
|
108
|
+
pm2.flush(name, (err) => {
|
|
109
|
+
if (err)
|
|
110
|
+
reject(err);
|
|
111
|
+
else
|
|
112
|
+
resolve();
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function pm2Dump() {
|
|
117
|
+
return new Promise((resolve, reject) => {
|
|
118
|
+
pm2.dump((err) => {
|
|
119
|
+
if (err)
|
|
120
|
+
reject(err);
|
|
121
|
+
else
|
|
122
|
+
resolve();
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* PM2 Service Manager Adapter
|
|
128
|
+
* Implements IServiceManagerPort for managing services via PM2
|
|
129
|
+
*/
|
|
130
|
+
export class Pm2ServiceManagerAdapter {
|
|
131
|
+
connected = false;
|
|
132
|
+
paths;
|
|
133
|
+
constructor(paths) {
|
|
134
|
+
this.paths = paths;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Ensure connected to PM2 daemon
|
|
138
|
+
*/
|
|
139
|
+
async ensureConnected() {
|
|
140
|
+
if (!this.connected) {
|
|
141
|
+
await pm2Connect(false);
|
|
142
|
+
this.connected = true;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Disconnect from PM2 daemon
|
|
147
|
+
*/
|
|
148
|
+
disconnect() {
|
|
149
|
+
if (this.connected) {
|
|
150
|
+
pm2.disconnect();
|
|
151
|
+
this.connected = false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Wait for a service to become online
|
|
156
|
+
* @param name - Service name
|
|
157
|
+
* @param timeout - Timeout in milliseconds
|
|
158
|
+
*/
|
|
159
|
+
async waitForOnline(name, timeout) {
|
|
160
|
+
const startTime = Date.now();
|
|
161
|
+
while (Date.now() - startTime < timeout) {
|
|
162
|
+
const procs = await pm2List();
|
|
163
|
+
const proc = procs.find((p) => p.name === name);
|
|
164
|
+
if (proc?.pm2_env?.status === 'online') {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
168
|
+
}
|
|
169
|
+
throw new Error(`Timeout waiting for ${name} to be ready`);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Start a service by name
|
|
173
|
+
*/
|
|
174
|
+
async start(name, options) {
|
|
175
|
+
try {
|
|
176
|
+
await this.ensureConnected();
|
|
177
|
+
// Check if already running
|
|
178
|
+
const processes = await pm2List();
|
|
179
|
+
const existing = processes.find((p) => p.name === name);
|
|
180
|
+
if (existing && existing.pm2_env?.status === 'online') {
|
|
181
|
+
// Already running, no action needed
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (existing) {
|
|
185
|
+
// Process exists but stopped, restart it
|
|
186
|
+
await pm2Restart(name);
|
|
187
|
+
// Wait for ready if requested (same logic as new process start)
|
|
188
|
+
if (options?.wait) {
|
|
189
|
+
await this.waitForOnline(name, options.waitTimeout || 30000);
|
|
190
|
+
}
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
// Start from ecosystem config
|
|
194
|
+
const configPath = getEcosystemConfigPath(this.paths);
|
|
195
|
+
if (!existsSync(configPath)) {
|
|
196
|
+
throw new Error(`Ecosystem config not found: ${configPath}. Run 'mcctl console init' first.`);
|
|
197
|
+
}
|
|
198
|
+
// Start the specific app from config (not all apps)
|
|
199
|
+
await pm2StartConfig(configPath, name);
|
|
200
|
+
// Wait for ready if requested
|
|
201
|
+
if (options?.wait) {
|
|
202
|
+
await this.waitForOnline(name, options.waitTimeout || 30000);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
throw new Error(`Failed to start ${name}: ${formatPm2Error(error)}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Stop a service by name
|
|
211
|
+
* @throws Error if service not found (as per IServiceManagerPort contract)
|
|
212
|
+
*/
|
|
213
|
+
async stop(name, options) {
|
|
214
|
+
try {
|
|
215
|
+
await this.ensureConnected();
|
|
216
|
+
// Check if process exists - throw if not found (interface contract)
|
|
217
|
+
const exists = await this.exists(name);
|
|
218
|
+
if (!exists) {
|
|
219
|
+
throw new Error(`Service '${name}' not found`);
|
|
220
|
+
}
|
|
221
|
+
if (options?.force) {
|
|
222
|
+
// Force stop: delete the process
|
|
223
|
+
await pm2Delete(name);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
// Graceful stop
|
|
227
|
+
await pm2Stop(name);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
throw new Error(`Failed to stop ${name}: ${formatPm2Error(error)}`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Restart a service by name
|
|
236
|
+
*/
|
|
237
|
+
async restart(name, options) {
|
|
238
|
+
try {
|
|
239
|
+
await this.ensureConnected();
|
|
240
|
+
// Check if process exists
|
|
241
|
+
const exists = await this.exists(name);
|
|
242
|
+
if (!exists) {
|
|
243
|
+
// Not running, start instead
|
|
244
|
+
await this.start(name, options);
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
await pm2Restart(name);
|
|
248
|
+
// Wait for ready if requested
|
|
249
|
+
if (options?.wait) {
|
|
250
|
+
await this.waitForOnline(name, options.waitTimeout || 30000);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
throw new Error(`Failed to restart ${name}: ${formatPm2Error(error)}`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get status of one or all services
|
|
259
|
+
*/
|
|
260
|
+
async status(name) {
|
|
261
|
+
try {
|
|
262
|
+
await this.ensureConnected();
|
|
263
|
+
let processes;
|
|
264
|
+
if (name) {
|
|
265
|
+
try {
|
|
266
|
+
processes = await pm2Describe(name);
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
// Process not found
|
|
270
|
+
return [];
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
processes = await pm2List();
|
|
275
|
+
// Filter to only our services
|
|
276
|
+
processes = processes.filter((p) => p.name === PM2_SERVICE_NAMES.API || p.name === PM2_SERVICE_NAMES.CONSOLE);
|
|
277
|
+
}
|
|
278
|
+
return processes.map((p) => ProcessInfo.create({
|
|
279
|
+
pmId: p.pm_id ?? 0,
|
|
280
|
+
name: p.name ?? 'unknown',
|
|
281
|
+
status: normalizePm2Status(p.pm2_env?.status ?? 'stopped'),
|
|
282
|
+
pid: p.pid,
|
|
283
|
+
cpu: p.monit?.cpu,
|
|
284
|
+
memory: p.monit?.memory,
|
|
285
|
+
uptime: p.pm2_env?.pm_uptime,
|
|
286
|
+
restarts: p.pm2_env?.restart_time,
|
|
287
|
+
interpreter: p.pm2_env?.exec_interpreter,
|
|
288
|
+
scriptPath: p.pm2_env?.pm_exec_path,
|
|
289
|
+
}));
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
throw new Error(`Failed to get status: ${formatPm2Error(error)}`);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Get logs for a service
|
|
297
|
+
*/
|
|
298
|
+
async logs(name, options) {
|
|
299
|
+
const logPaths = getPm2LogPaths(this.paths, name);
|
|
300
|
+
const lines = options?.lines ?? 100;
|
|
301
|
+
if (options?.err) {
|
|
302
|
+
return readLogFile(logPaths.error, lines);
|
|
303
|
+
}
|
|
304
|
+
// Return combined logs
|
|
305
|
+
const outLogs = readLogFile(logPaths.output, lines);
|
|
306
|
+
const errLogs = readLogFile(logPaths.error, lines);
|
|
307
|
+
if (outLogs && errLogs) {
|
|
308
|
+
return `=== stdout ===\n${outLogs}\n\n=== stderr ===\n${errLogs}`;
|
|
309
|
+
}
|
|
310
|
+
return outLogs || errLogs || 'No logs available';
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Delete a service from PM2
|
|
314
|
+
*/
|
|
315
|
+
async delete(name) {
|
|
316
|
+
try {
|
|
317
|
+
await this.ensureConnected();
|
|
318
|
+
const exists = await this.exists(name);
|
|
319
|
+
if (!exists) {
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
await pm2Delete(name);
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
throw new Error(`Failed to delete ${name}: ${formatPm2Error(error)}`);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Reload ecosystem configuration
|
|
330
|
+
*/
|
|
331
|
+
async reload(configPath) {
|
|
332
|
+
try {
|
|
333
|
+
await this.ensureConnected();
|
|
334
|
+
if (!existsSync(configPath)) {
|
|
335
|
+
throw new Error(`Config file not found: ${configPath}`);
|
|
336
|
+
}
|
|
337
|
+
// Reload by restarting from config
|
|
338
|
+
await pm2StartConfig(configPath);
|
|
339
|
+
}
|
|
340
|
+
catch (error) {
|
|
341
|
+
throw new Error(`Failed to reload config: ${formatPm2Error(error)}`);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Check if a service exists in PM2
|
|
346
|
+
*/
|
|
347
|
+
async exists(name) {
|
|
348
|
+
try {
|
|
349
|
+
await this.ensureConnected();
|
|
350
|
+
const processes = await pm2List();
|
|
351
|
+
return processes.some((p) => p.name === name);
|
|
352
|
+
}
|
|
353
|
+
catch {
|
|
354
|
+
return false;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Flush logs for a service
|
|
359
|
+
*/
|
|
360
|
+
async flush(name) {
|
|
361
|
+
try {
|
|
362
|
+
await this.ensureConnected();
|
|
363
|
+
await pm2Flush(name);
|
|
364
|
+
}
|
|
365
|
+
catch (error) {
|
|
366
|
+
throw new Error(`Failed to flush logs for ${name}: ${formatPm2Error(error)}`);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Save current process list
|
|
371
|
+
*/
|
|
372
|
+
async save() {
|
|
373
|
+
try {
|
|
374
|
+
await this.ensureConnected();
|
|
375
|
+
await pm2Dump();
|
|
376
|
+
}
|
|
377
|
+
catch (error) {
|
|
378
|
+
throw new Error(`Failed to save process list: ${formatPm2Error(error)}`);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Resurrect saved processes
|
|
383
|
+
* Note: This is typically done via 'pm2 resurrect' command
|
|
384
|
+
*/
|
|
385
|
+
async resurrect() {
|
|
386
|
+
// PM2 doesn't have a direct API for resurrect
|
|
387
|
+
// It's typically done via CLI: pm2 resurrect
|
|
388
|
+
throw new Error('Resurrect is not supported via API. Use: pm2 resurrect');
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=Pm2ServiceManagerAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pm2ServiceManagerAdapter.js","sourceRoot":"","sources":["../../../src/infrastructure/adapters/Pm2ServiceManagerAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ClackPromptAdapter } from './ClackPromptAdapter.js';
|
|
2
|
+
export { Pm2ServiceManagerAdapter } from './Pm2ServiceManagerAdapter.js';
|
|
3
|
+
export { ShellAdapter, ServerRepository, WorldRepository, DocsAdapter, } from '@minecraft-docker/shared';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// CLI-specific adapters
|
|
2
|
+
export { ClackPromptAdapter } from './ClackPromptAdapter.js';
|
|
3
|
+
export { Pm2ServiceManagerAdapter } from './Pm2ServiceManagerAdapter.js';
|
|
4
|
+
// Re-export shared adapters for backward compatibility
|
|
5
|
+
export { ShellAdapter, ServerRepository, WorldRepository, DocsAdapter, } from '@minecraft-docker/shared';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/adapters/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,uDAAuD;AACvD,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type IPromptPort, type IShellPort, type IServerRepository, type IWorldRepository, type IDocProvider, type ICreateServerUseCase, type IDeleteServerUseCase, type IServerStatusUseCase, type IWorldManagementUseCase, type IBackupUseCase, type IPlayerLookupUseCase } from '@minecraft-docker/shared';
|
|
2
|
+
export interface ContainerOptions {
|
|
3
|
+
rootDir?: string;
|
|
4
|
+
sudoPassword?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Dependency Injection Container
|
|
8
|
+
* Manages creation and lifecycle of dependencies
|
|
9
|
+
*/
|
|
10
|
+
export declare class Container {
|
|
11
|
+
private readonly paths;
|
|
12
|
+
private readonly sudoPassword?;
|
|
13
|
+
private _promptPort?;
|
|
14
|
+
private _shellPort?;
|
|
15
|
+
private _serverRepo?;
|
|
16
|
+
private _worldRepo?;
|
|
17
|
+
private _docProvider?;
|
|
18
|
+
constructor(options?: ContainerOptions | string);
|
|
19
|
+
get promptPort(): IPromptPort;
|
|
20
|
+
get shellPort(): IShellPort;
|
|
21
|
+
get serverRepository(): IServerRepository;
|
|
22
|
+
get worldRepository(): IWorldRepository;
|
|
23
|
+
get docProvider(): IDocProvider;
|
|
24
|
+
get createServerUseCase(): ICreateServerUseCase;
|
|
25
|
+
get deleteServerUseCase(): IDeleteServerUseCase;
|
|
26
|
+
get serverStatusUseCase(): IServerStatusUseCase;
|
|
27
|
+
get worldManagementUseCase(): IWorldManagementUseCase;
|
|
28
|
+
get backupUseCase(): IBackupUseCase;
|
|
29
|
+
get playerLookupUseCase(): IPlayerLookupUseCase;
|
|
30
|
+
/**
|
|
31
|
+
* Create a container with default configuration
|
|
32
|
+
*/
|
|
33
|
+
static create(options?: ContainerOptions | string): Container;
|
|
34
|
+
/**
|
|
35
|
+
* Create a container with custom adapters (for testing)
|
|
36
|
+
*/
|
|
37
|
+
static createWithAdapters(promptPort: IPromptPort, shellPort: IShellPort, serverRepo: IServerRepository, worldRepo: IWorldRepository): Container;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get or create the global container
|
|
41
|
+
*/
|
|
42
|
+
export declare function getContainer(options?: ContainerOptions | string): Container;
|
|
43
|
+
/**
|
|
44
|
+
* Reset the global container (for testing)
|
|
45
|
+
*/
|
|
46
|
+
export declare function resetContainer(): void;
|
|
47
|
+
//# sourceMappingURL=container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAeL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAIlC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IAGvC,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,WAAW,CAAC,CAAoB;IACxC,OAAO,CAAC,UAAU,CAAC,CAAmB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAe;gBAExB,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAkB/C,IAAI,UAAU,IAAI,WAAW,CAK5B;IAED,IAAI,SAAS,IAAI,UAAU,CAQ1B;IAED,IAAI,gBAAgB,IAAI,iBAAiB,CAKxC;IAED,IAAI,eAAe,IAAI,gBAAgB,CAKtC;IAED,IAAI,WAAW,IAAI,YAAY,CAK9B;IAMD,IAAI,mBAAmB,IAAI,oBAAoB,CAO9C;IAED,IAAI,mBAAmB,IAAI,oBAAoB,CAM9C;IAED,IAAI,mBAAmB,IAAI,oBAAoB,CAM9C;IAED,IAAI,sBAAsB,IAAI,uBAAuB,CAOpD;IAED,IAAI,aAAa,IAAI,cAAc,CAElC;IAED,IAAI,mBAAmB,IAAI,oBAAoB,CAE9C;IAMD;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS;IAI7D;;OAEG;IACH,MAAM,CAAC,kBAAkB,CACvB,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,UAAU,EACrB,UAAU,EAAE,iBAAiB,EAC7B,SAAS,EAAE,gBAAgB,GAC1B,SAAS;CAQb;AAQD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAe3E;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { Paths,
|
|
2
|
+
// Infrastructure adapters from shared
|
|
3
|
+
ShellAdapter, ServerRepository, WorldRepository, DocsAdapter,
|
|
4
|
+
// Use cases from shared
|
|
5
|
+
CreateServerUseCase, DeleteServerUseCase, ServerStatusUseCase, WorldManagementUseCase, BackupUseCase, PlayerLookupUseCase, } from '@minecraft-docker/shared';
|
|
6
|
+
// CLI-specific adapter
|
|
7
|
+
import { ClackPromptAdapter } from '../adapters/ClackPromptAdapter.js';
|
|
8
|
+
/**
|
|
9
|
+
* Dependency Injection Container
|
|
10
|
+
* Manages creation and lifecycle of dependencies
|
|
11
|
+
*/
|
|
12
|
+
export class Container {
|
|
13
|
+
paths;
|
|
14
|
+
sudoPassword;
|
|
15
|
+
// Adapters (singleton)
|
|
16
|
+
_promptPort;
|
|
17
|
+
_shellPort;
|
|
18
|
+
_serverRepo;
|
|
19
|
+
_worldRepo;
|
|
20
|
+
_docProvider;
|
|
21
|
+
constructor(options) {
|
|
22
|
+
if (typeof options === 'string') {
|
|
23
|
+
// Backward compatibility: rootDir as string
|
|
24
|
+
this.paths = new Paths(options);
|
|
25
|
+
this.sudoPassword = undefined;
|
|
26
|
+
}
|
|
27
|
+
else if (options) {
|
|
28
|
+
this.paths = new Paths(options.rootDir);
|
|
29
|
+
this.sudoPassword = options.sudoPassword;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.paths = new Paths();
|
|
33
|
+
this.sudoPassword = undefined;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// ========================================
|
|
37
|
+
// Ports (Adapters)
|
|
38
|
+
// ========================================
|
|
39
|
+
get promptPort() {
|
|
40
|
+
if (!this._promptPort) {
|
|
41
|
+
this._promptPort = new ClackPromptAdapter();
|
|
42
|
+
}
|
|
43
|
+
return this._promptPort;
|
|
44
|
+
}
|
|
45
|
+
get shellPort() {
|
|
46
|
+
if (!this._shellPort) {
|
|
47
|
+
this._shellPort = new ShellAdapter({
|
|
48
|
+
paths: this.paths,
|
|
49
|
+
sudoPassword: this.sudoPassword,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return this._shellPort;
|
|
53
|
+
}
|
|
54
|
+
get serverRepository() {
|
|
55
|
+
if (!this._serverRepo) {
|
|
56
|
+
this._serverRepo = new ServerRepository(this.paths);
|
|
57
|
+
}
|
|
58
|
+
return this._serverRepo;
|
|
59
|
+
}
|
|
60
|
+
get worldRepository() {
|
|
61
|
+
if (!this._worldRepo) {
|
|
62
|
+
this._worldRepo = new WorldRepository(this.paths);
|
|
63
|
+
}
|
|
64
|
+
return this._worldRepo;
|
|
65
|
+
}
|
|
66
|
+
get docProvider() {
|
|
67
|
+
if (!this._docProvider) {
|
|
68
|
+
this._docProvider = new DocsAdapter(this.paths.root);
|
|
69
|
+
}
|
|
70
|
+
return this._docProvider;
|
|
71
|
+
}
|
|
72
|
+
// ========================================
|
|
73
|
+
// Use Cases
|
|
74
|
+
// ========================================
|
|
75
|
+
get createServerUseCase() {
|
|
76
|
+
return new CreateServerUseCase(this.promptPort, this.shellPort, this.serverRepository, this.worldRepository);
|
|
77
|
+
}
|
|
78
|
+
get deleteServerUseCase() {
|
|
79
|
+
return new DeleteServerUseCase(this.promptPort, this.shellPort, this.serverRepository);
|
|
80
|
+
}
|
|
81
|
+
get serverStatusUseCase() {
|
|
82
|
+
return new ServerStatusUseCase(this.promptPort, this.shellPort, this.serverRepository);
|
|
83
|
+
}
|
|
84
|
+
get worldManagementUseCase() {
|
|
85
|
+
return new WorldManagementUseCase(this.promptPort, this.shellPort, this.worldRepository, this.serverRepository);
|
|
86
|
+
}
|
|
87
|
+
get backupUseCase() {
|
|
88
|
+
return new BackupUseCase(this.promptPort, this.shellPort);
|
|
89
|
+
}
|
|
90
|
+
get playerLookupUseCase() {
|
|
91
|
+
return new PlayerLookupUseCase(this.promptPort, this.shellPort);
|
|
92
|
+
}
|
|
93
|
+
// ========================================
|
|
94
|
+
// Factory
|
|
95
|
+
// ========================================
|
|
96
|
+
/**
|
|
97
|
+
* Create a container with default configuration
|
|
98
|
+
*/
|
|
99
|
+
static create(options) {
|
|
100
|
+
return new Container(options);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create a container with custom adapters (for testing)
|
|
104
|
+
*/
|
|
105
|
+
static createWithAdapters(promptPort, shellPort, serverRepo, worldRepo) {
|
|
106
|
+
const container = new Container();
|
|
107
|
+
container._promptPort = promptPort;
|
|
108
|
+
container._shellPort = shellPort;
|
|
109
|
+
container._serverRepo = serverRepo;
|
|
110
|
+
container._worldRepo = worldRepo;
|
|
111
|
+
return container;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Global container instance
|
|
116
|
+
*/
|
|
117
|
+
let globalContainer = null;
|
|
118
|
+
let globalContainerOptions = undefined;
|
|
119
|
+
/**
|
|
120
|
+
* Get or create the global container
|
|
121
|
+
*/
|
|
122
|
+
export function getContainer(options) {
|
|
123
|
+
// Convert string to options for comparison
|
|
124
|
+
const normalizedOptions = typeof options === 'string' ? { rootDir: options } : options;
|
|
125
|
+
// Check if we need to recreate the container (options changed)
|
|
126
|
+
const optionsChanged = globalContainerOptions?.rootDir !== normalizedOptions?.rootDir ||
|
|
127
|
+
globalContainerOptions?.sudoPassword !== normalizedOptions?.sudoPassword;
|
|
128
|
+
if (!globalContainer || optionsChanged) {
|
|
129
|
+
globalContainer = Container.create(normalizedOptions);
|
|
130
|
+
globalContainerOptions = normalizedOptions;
|
|
131
|
+
}
|
|
132
|
+
return globalContainer;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Reset the global container (for testing)
|
|
136
|
+
*/
|
|
137
|
+
export function resetContainer() {
|
|
138
|
+
globalContainer = null;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/infrastructure/di/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/di/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/di/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAyB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ClackPromptAdapter } from './adapters/ClackPromptAdapter.js';
|
|
2
|
+
export { Pm2ServiceManagerAdapter } from './adapters/Pm2ServiceManagerAdapter.js';
|
|
3
|
+
export { ShellAdapter, ServerRepository, WorldRepository, DocsAdapter, } from '@minecraft-docker/shared';
|
|
4
|
+
export { Container, getContainer, resetContainer } from './di/index.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAGlF,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// CLI-specific adapters
|
|
2
|
+
export { ClackPromptAdapter } from './adapters/ClackPromptAdapter.js';
|
|
3
|
+
export { Pm2ServiceManagerAdapter } from './adapters/Pm2ServiceManagerAdapter.js';
|
|
4
|
+
// Re-export shared adapters for backward compatibility
|
|
5
|
+
export { ShellAdapter, ServerRepository, WorldRepository, DocsAdapter, } from '@minecraft-docker/shared';
|
|
6
|
+
// DI Container (CLI-specific)
|
|
7
|
+
export { Container, getContainer, resetContainer } from './di/index.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,uDAAuD;AACvD,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAElC,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|