@minecraft-docker/shared 1.6.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.
- package/dist/application/index.d.ts +3 -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/application/ports/inbound/IBackupUseCase.d.ts +69 -0
- package/dist/application/ports/inbound/IBackupUseCase.d.ts.map +1 -0
- package/dist/application/ports/inbound/IBackupUseCase.js +2 -0
- package/dist/application/ports/inbound/IBackupUseCase.js.map +1 -0
- package/dist/application/ports/inbound/ICreateServerUseCase.d.ts +32 -0
- package/dist/application/ports/inbound/ICreateServerUseCase.d.ts.map +1 -0
- package/dist/application/ports/inbound/ICreateServerUseCase.js +2 -0
- package/dist/application/ports/inbound/ICreateServerUseCase.js.map +1 -0
- package/dist/application/ports/inbound/IDeleteServerUseCase.d.ts +26 -0
- package/dist/application/ports/inbound/IDeleteServerUseCase.d.ts.map +1 -0
- package/dist/application/ports/inbound/IDeleteServerUseCase.js +2 -0
- package/dist/application/ports/inbound/IDeleteServerUseCase.js.map +1 -0
- package/dist/application/ports/inbound/IPlayerLookupUseCase.d.ts +47 -0
- package/dist/application/ports/inbound/IPlayerLookupUseCase.d.ts.map +1 -0
- package/dist/application/ports/inbound/IPlayerLookupUseCase.js +2 -0
- package/dist/application/ports/inbound/IPlayerLookupUseCase.js.map +1 -0
- package/dist/application/ports/inbound/IServerStatusUseCase.d.ts +34 -0
- package/dist/application/ports/inbound/IServerStatusUseCase.d.ts.map +1 -0
- package/dist/application/ports/inbound/IServerStatusUseCase.js +2 -0
- package/dist/application/ports/inbound/IServerStatusUseCase.js.map +1 -0
- package/dist/application/ports/inbound/IWorldManagementUseCase.d.ts +56 -0
- package/dist/application/ports/inbound/IWorldManagementUseCase.d.ts.map +1 -0
- package/dist/application/ports/inbound/IWorldManagementUseCase.js +2 -0
- package/dist/application/ports/inbound/IWorldManagementUseCase.js.map +1 -0
- package/dist/application/ports/inbound/index.d.ts +7 -0
- package/dist/application/ports/inbound/index.d.ts.map +1 -0
- package/dist/application/ports/inbound/index.js +2 -0
- package/dist/application/ports/inbound/index.js.map +1 -0
- package/dist/application/ports/index.d.ts +3 -0
- package/dist/application/ports/index.d.ts.map +1 -0
- package/dist/application/ports/index.js +2 -0
- package/dist/application/ports/index.js.map +1 -0
- package/dist/application/ports/outbound/IDocProvider.d.ts +73 -0
- package/dist/application/ports/outbound/IDocProvider.d.ts.map +1 -0
- package/dist/application/ports/outbound/IDocProvider.js +2 -0
- package/dist/application/ports/outbound/IDocProvider.js.map +1 -0
- package/dist/application/ports/outbound/IPromptPort.d.ts +136 -0
- package/dist/application/ports/outbound/IPromptPort.d.ts.map +1 -0
- package/dist/application/ports/outbound/IPromptPort.js +2 -0
- package/dist/application/ports/outbound/IPromptPort.js.map +1 -0
- package/dist/application/ports/outbound/IServerRepository.d.ts +54 -0
- package/dist/application/ports/outbound/IServerRepository.d.ts.map +1 -0
- package/dist/application/ports/outbound/IServerRepository.js +2 -0
- package/dist/application/ports/outbound/IServerRepository.js.map +1 -0
- package/dist/application/ports/outbound/IShellPort.d.ts +106 -0
- package/dist/application/ports/outbound/IShellPort.d.ts.map +1 -0
- package/dist/application/ports/outbound/IShellPort.js +2 -0
- package/dist/application/ports/outbound/IShellPort.js.map +1 -0
- package/dist/application/ports/outbound/IWorldRepository.d.ts +71 -0
- package/dist/application/ports/outbound/IWorldRepository.d.ts.map +1 -0
- package/dist/application/ports/outbound/IWorldRepository.js +2 -0
- package/dist/application/ports/outbound/IWorldRepository.js.map +1 -0
- package/dist/application/ports/outbound/index.d.ts +6 -0
- package/dist/application/ports/outbound/index.d.ts.map +1 -0
- package/dist/application/ports/outbound/index.js +2 -0
- package/dist/application/ports/outbound/index.js.map +1 -0
- package/dist/application/use-cases/BackupUseCase.d.ts +35 -0
- package/dist/application/use-cases/BackupUseCase.d.ts.map +1 -0
- package/dist/application/use-cases/BackupUseCase.js +222 -0
- package/dist/application/use-cases/BackupUseCase.js.map +1 -0
- package/dist/application/use-cases/CreateServerUseCase.d.ts +22 -0
- package/dist/application/use-cases/CreateServerUseCase.d.ts.map +1 -0
- package/dist/application/use-cases/CreateServerUseCase.js +145 -0
- package/dist/application/use-cases/CreateServerUseCase.js.map +1 -0
- package/dist/application/use-cases/DeleteServerUseCase.d.ts +24 -0
- package/dist/application/use-cases/DeleteServerUseCase.d.ts.map +1 -0
- package/dist/application/use-cases/DeleteServerUseCase.js +108 -0
- package/dist/application/use-cases/DeleteServerUseCase.js.map +1 -0
- package/dist/application/use-cases/PlayerLookupUseCase.d.ts +23 -0
- package/dist/application/use-cases/PlayerLookupUseCase.d.ts.map +1 -0
- package/dist/application/use-cases/PlayerLookupUseCase.js +130 -0
- package/dist/application/use-cases/PlayerLookupUseCase.js.map +1 -0
- package/dist/application/use-cases/ServerStatusUseCase.d.ts +30 -0
- package/dist/application/use-cases/ServerStatusUseCase.d.ts.map +1 -0
- package/dist/application/use-cases/ServerStatusUseCase.js +117 -0
- package/dist/application/use-cases/ServerStatusUseCase.js.map +1 -0
- package/dist/application/use-cases/WorldManagementUseCase.d.ts +33 -0
- package/dist/application/use-cases/WorldManagementUseCase.d.ts.map +1 -0
- package/dist/application/use-cases/WorldManagementUseCase.js +239 -0
- package/dist/application/use-cases/WorldManagementUseCase.js.map +1 -0
- package/dist/application/use-cases/index.d.ts +7 -0
- package/dist/application/use-cases/index.d.ts.map +1 -0
- package/dist/application/use-cases/index.js +7 -0
- package/dist/application/use-cases/index.js.map +1 -0
- package/dist/docker/index.d.ts +111 -0
- package/dist/docker/index.d.ts.map +1 -0
- package/dist/docker/index.js +532 -0
- package/dist/docker/index.js.map +1 -0
- package/dist/domain/entities/Server.d.ts +77 -0
- package/dist/domain/entities/Server.d.ts.map +1 -0
- package/dist/domain/entities/Server.js +138 -0
- package/dist/domain/entities/Server.js.map +1 -0
- package/dist/domain/entities/World.d.ts +70 -0
- package/dist/domain/entities/World.d.ts.map +1 -0
- package/dist/domain/entities/World.js +128 -0
- package/dist/domain/entities/World.js.map +1 -0
- package/dist/domain/entities/index.d.ts +3 -0
- package/dist/domain/entities/index.d.ts.map +1 -0
- package/dist/domain/entities/index.js +3 -0
- package/dist/domain/entities/index.js.map +1 -0
- package/dist/domain/index.d.ts +3 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +5 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/value-objects/McVersion.d.ts +35 -0
- package/dist/domain/value-objects/McVersion.d.ts.map +1 -0
- package/dist/domain/value-objects/McVersion.js +117 -0
- package/dist/domain/value-objects/McVersion.js.map +1 -0
- package/dist/domain/value-objects/Memory.d.ts +37 -0
- package/dist/domain/value-objects/Memory.d.ts.map +1 -0
- package/dist/domain/value-objects/Memory.js +107 -0
- package/dist/domain/value-objects/Memory.js.map +1 -0
- package/dist/domain/value-objects/ServerName.d.ts +21 -0
- package/dist/domain/value-objects/ServerName.d.ts.map +1 -0
- package/dist/domain/value-objects/ServerName.js +58 -0
- package/dist/domain/value-objects/ServerName.js.map +1 -0
- package/dist/domain/value-objects/ServerType.d.ts +39 -0
- package/dist/domain/value-objects/ServerType.d.ts.map +1 -0
- package/dist/domain/value-objects/ServerType.js +128 -0
- package/dist/domain/value-objects/ServerType.js.map +1 -0
- package/dist/domain/value-objects/WorldOptions.d.ts +49 -0
- package/dist/domain/value-objects/WorldOptions.d.ts.map +1 -0
- package/dist/domain/value-objects/WorldOptions.js +149 -0
- package/dist/domain/value-objects/WorldOptions.js.map +1 -0
- package/dist/domain/value-objects/index.d.ts +6 -0
- package/dist/domain/value-objects/index.d.ts.map +1 -0
- package/dist/domain/value-objects/index.js +6 -0
- package/dist/domain/value-objects/index.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/adapters/DocsAdapter.d.ts +45 -0
- package/dist/infrastructure/adapters/DocsAdapter.d.ts.map +1 -0
- package/dist/infrastructure/adapters/DocsAdapter.js +490 -0
- package/dist/infrastructure/adapters/DocsAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/ServerRepository.d.ts +49 -0
- package/dist/infrastructure/adapters/ServerRepository.d.ts.map +1 -0
- package/dist/infrastructure/adapters/ServerRepository.js +206 -0
- package/dist/infrastructure/adapters/ServerRepository.js.map +1 -0
- package/dist/infrastructure/adapters/ShellAdapter.d.ts +39 -0
- package/dist/infrastructure/adapters/ShellAdapter.d.ts.map +1 -0
- package/dist/infrastructure/adapters/ShellAdapter.js +188 -0
- package/dist/infrastructure/adapters/ShellAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/WorldRepository.d.ts +55 -0
- package/dist/infrastructure/adapters/WorldRepository.d.ts.map +1 -0
- package/dist/infrastructure/adapters/WorldRepository.js +213 -0
- package/dist/infrastructure/adapters/WorldRepository.js.map +1 -0
- package/dist/infrastructure/adapters/index.d.ts +9 -0
- package/dist/infrastructure/adapters/index.d.ts.map +1 -0
- package/dist/infrastructure/adapters/index.js +9 -0
- package/dist/infrastructure/adapters/index.js.map +1 -0
- package/dist/infrastructure/index.d.ts +6 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +6 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/types/index.d.ts +151 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/index.d.ts +81 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +200 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { readdir, readFile, stat } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { Paths } from '../../utils/index.js';
|
|
5
|
+
import { World } from '../../domain/index.js';
|
|
6
|
+
import { getContainerStatus } from '../../docker/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* WorldRepository
|
|
9
|
+
* Implements IWorldRepository for world data access
|
|
10
|
+
*/
|
|
11
|
+
export class WorldRepository {
|
|
12
|
+
paths;
|
|
13
|
+
worldsDir;
|
|
14
|
+
locksDir;
|
|
15
|
+
constructor(paths) {
|
|
16
|
+
this.paths = paths ?? new Paths();
|
|
17
|
+
this.worldsDir = join(this.paths.root, 'worlds');
|
|
18
|
+
this.locksDir = join(this.worldsDir, '.locks');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get all worlds
|
|
22
|
+
*/
|
|
23
|
+
async findAll() {
|
|
24
|
+
const names = await this.listNames();
|
|
25
|
+
const worlds = [];
|
|
26
|
+
for (const name of names) {
|
|
27
|
+
const world = await this.findByName(name);
|
|
28
|
+
if (world) {
|
|
29
|
+
worlds.push(world);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return worlds;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Find world by name
|
|
36
|
+
*/
|
|
37
|
+
async findByName(name) {
|
|
38
|
+
const worldPath = join(this.worldsDir, name);
|
|
39
|
+
if (!existsSync(worldPath)) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const world = new World(name, worldPath);
|
|
43
|
+
// Get lock status
|
|
44
|
+
const lockData = await this.getLockStatus(name);
|
|
45
|
+
if (lockData) {
|
|
46
|
+
world.lockTo(lockData.serverName, lockData.pid);
|
|
47
|
+
}
|
|
48
|
+
// Get world metadata
|
|
49
|
+
try {
|
|
50
|
+
const worldStat = await stat(worldPath);
|
|
51
|
+
const size = await this.getDirectorySize(worldPath);
|
|
52
|
+
world.setMetadata(size, worldStat.mtime);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Ignore metadata errors
|
|
56
|
+
}
|
|
57
|
+
return world;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if world exists
|
|
61
|
+
*/
|
|
62
|
+
async exists(name) {
|
|
63
|
+
const worldPath = join(this.worldsDir, name);
|
|
64
|
+
return existsSync(worldPath);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get unlocked worlds
|
|
68
|
+
*/
|
|
69
|
+
async findUnlocked() {
|
|
70
|
+
const worlds = await this.findAll();
|
|
71
|
+
return worlds.filter((w) => !w.isLocked);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get locked worlds
|
|
75
|
+
*/
|
|
76
|
+
async findLocked() {
|
|
77
|
+
const worlds = await this.findAll();
|
|
78
|
+
return worlds.filter((w) => w.isLocked);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get worlds locked by a specific server
|
|
82
|
+
*/
|
|
83
|
+
async findByServer(serverName) {
|
|
84
|
+
const worlds = await this.findAll();
|
|
85
|
+
return worlds.filter((w) => w.lockedBy === serverName);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* List world names
|
|
89
|
+
*/
|
|
90
|
+
async listNames() {
|
|
91
|
+
if (!existsSync(this.worldsDir)) {
|
|
92
|
+
return [];
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
const entries = await readdir(this.worldsDir, { withFileTypes: true });
|
|
96
|
+
return entries
|
|
97
|
+
.filter((entry) => entry.isDirectory())
|
|
98
|
+
.filter((entry) => !entry.name.startsWith('.')) // Skip hidden dirs like .locks
|
|
99
|
+
.map((entry) => entry.name);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return [];
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get lock status for a world
|
|
107
|
+
*/
|
|
108
|
+
async getLockStatus(name) {
|
|
109
|
+
const lockFile = join(this.locksDir, `${name}.lock`);
|
|
110
|
+
if (!existsSync(lockFile)) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
const content = await readFile(lockFile, 'utf-8');
|
|
115
|
+
const [serverName, timestampStr, pidStr] = content.trim().split(':');
|
|
116
|
+
if (!serverName || !timestampStr) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
worldName: name,
|
|
121
|
+
serverName,
|
|
122
|
+
timestamp: new Date(parseInt(timestampStr, 10) * 1000),
|
|
123
|
+
pid: pidStr ? parseInt(pidStr, 10) : undefined,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get all worlds with their server status
|
|
132
|
+
* Returns worlds categorized by availability
|
|
133
|
+
*/
|
|
134
|
+
async findAllWithServerStatus() {
|
|
135
|
+
const worlds = await this.findAll();
|
|
136
|
+
const results = [];
|
|
137
|
+
for (const world of worlds) {
|
|
138
|
+
if (!world.isLocked) {
|
|
139
|
+
// World is not locked by any server - available
|
|
140
|
+
results.push({
|
|
141
|
+
world,
|
|
142
|
+
category: 'available',
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// World is locked - check server status
|
|
147
|
+
const serverName = world.lockedBy;
|
|
148
|
+
const containerName = serverName.startsWith('mc-')
|
|
149
|
+
? serverName
|
|
150
|
+
: `mc-${serverName}`;
|
|
151
|
+
const containerStatus = getContainerStatus(containerName);
|
|
152
|
+
let serverStatus;
|
|
153
|
+
let category;
|
|
154
|
+
if (containerStatus === 'running') {
|
|
155
|
+
serverStatus = 'running';
|
|
156
|
+
category = 'running';
|
|
157
|
+
}
|
|
158
|
+
else if (containerStatus === 'not_found') {
|
|
159
|
+
serverStatus = 'not_found';
|
|
160
|
+
// If container not found, treat as available (stale lock)
|
|
161
|
+
category = 'available';
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
// exited, paused, created, etc. - server is stopped
|
|
165
|
+
serverStatus = 'stopped';
|
|
166
|
+
category = 'stopped';
|
|
167
|
+
}
|
|
168
|
+
results.push({
|
|
169
|
+
world,
|
|
170
|
+
assignedServer: serverName,
|
|
171
|
+
serverStatus,
|
|
172
|
+
category,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Sort: available first, then stopped, then running
|
|
177
|
+
const categoryOrder = {
|
|
178
|
+
available: 0,
|
|
179
|
+
stopped: 1,
|
|
180
|
+
running: 2,
|
|
181
|
+
};
|
|
182
|
+
return results.sort((a, b) => {
|
|
183
|
+
const orderDiff = categoryOrder[a.category] - categoryOrder[b.category];
|
|
184
|
+
if (orderDiff !== 0)
|
|
185
|
+
return orderDiff;
|
|
186
|
+
return a.world.name.localeCompare(b.world.name);
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get directory size recursively
|
|
191
|
+
*/
|
|
192
|
+
async getDirectorySize(dirPath) {
|
|
193
|
+
let totalSize = 0;
|
|
194
|
+
try {
|
|
195
|
+
const entries = await readdir(dirPath, { withFileTypes: true });
|
|
196
|
+
for (const entry of entries) {
|
|
197
|
+
const entryPath = join(dirPath, entry.name);
|
|
198
|
+
if (entry.isFile()) {
|
|
199
|
+
const fileStat = await stat(entryPath);
|
|
200
|
+
totalSize += fileStat.size;
|
|
201
|
+
}
|
|
202
|
+
else if (entry.isDirectory()) {
|
|
203
|
+
totalSize += await this.getDirectorySize(entryPath);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
// Ignore errors
|
|
209
|
+
}
|
|
210
|
+
return totalSize;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=WorldRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorldRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/adapters/WorldRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infrastructure Adapters
|
|
3
|
+
* Concrete implementations of application ports
|
|
4
|
+
*/
|
|
5
|
+
export { ShellAdapter, type ShellAdapterOptions } from './ShellAdapter.js';
|
|
6
|
+
export { ServerRepository } from './ServerRepository.js';
|
|
7
|
+
export { WorldRepository } from './WorldRepository.js';
|
|
8
|
+
export { DocsAdapter } from './DocsAdapter.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infrastructure Adapters
|
|
3
|
+
* Concrete implementations of application ports
|
|
4
|
+
*/
|
|
5
|
+
export { ShellAdapter } from './ShellAdapter.js';
|
|
6
|
+
export { ServerRepository } from './ServerRepository.js';
|
|
7
|
+
export { WorldRepository } from './WorldRepository.js';
|
|
8
|
+
export { DocsAdapter } from './DocsAdapter.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/adapters/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server status types
|
|
3
|
+
*/
|
|
4
|
+
export type ContainerStatus = 'running' | 'exited' | 'paused' | 'restarting' | 'dead' | 'created' | 'not_found';
|
|
5
|
+
export type HealthStatus = 'healthy' | 'unhealthy' | 'starting' | 'none' | 'unknown';
|
|
6
|
+
export interface ServerInfo {
|
|
7
|
+
name: string;
|
|
8
|
+
container: string;
|
|
9
|
+
status: ContainerStatus;
|
|
10
|
+
health: HealthStatus;
|
|
11
|
+
hostname: string;
|
|
12
|
+
}
|
|
13
|
+
export interface RouterInfo {
|
|
14
|
+
name: string;
|
|
15
|
+
status: ContainerStatus;
|
|
16
|
+
health: HealthStatus;
|
|
17
|
+
port: number;
|
|
18
|
+
}
|
|
19
|
+
export interface AvahiInfo {
|
|
20
|
+
name: string;
|
|
21
|
+
status: string;
|
|
22
|
+
type: 'system';
|
|
23
|
+
}
|
|
24
|
+
export interface PlatformStatus {
|
|
25
|
+
router: RouterInfo;
|
|
26
|
+
avahi_daemon: AvahiInfo;
|
|
27
|
+
servers: ServerInfo[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Configuration types
|
|
31
|
+
*/
|
|
32
|
+
export interface McctlConfig {
|
|
33
|
+
version: string;
|
|
34
|
+
initialized: string;
|
|
35
|
+
dataDir: string;
|
|
36
|
+
defaultType: ServerType;
|
|
37
|
+
defaultVersion: string;
|
|
38
|
+
autoStart: boolean;
|
|
39
|
+
avahiEnabled: boolean;
|
|
40
|
+
}
|
|
41
|
+
export type ServerType = 'PAPER' | 'VANILLA' | 'FORGE' | 'FABRIC' | 'SPIGOT' | 'BUKKIT';
|
|
42
|
+
export interface ServerConfig {
|
|
43
|
+
name: string;
|
|
44
|
+
type: ServerType;
|
|
45
|
+
version: string;
|
|
46
|
+
memory: string;
|
|
47
|
+
motd?: string;
|
|
48
|
+
seed?: string;
|
|
49
|
+
worldUrl?: string;
|
|
50
|
+
world?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface EnvConfig {
|
|
53
|
+
HOST_IP?: string;
|
|
54
|
+
RCON_PASSWORD?: string;
|
|
55
|
+
TZ?: string;
|
|
56
|
+
DEFAULT_VERSION?: string;
|
|
57
|
+
DEFAULT_MEMORY?: string;
|
|
58
|
+
MINECRAFT_NETWORK?: string;
|
|
59
|
+
MINECRAFT_SUBNET?: string;
|
|
60
|
+
BACKUP_GITHUB_TOKEN?: string;
|
|
61
|
+
BACKUP_GITHUB_REPO?: string;
|
|
62
|
+
BACKUP_GITHUB_BRANCH?: string;
|
|
63
|
+
BACKUP_AUTO_ON_STOP?: boolean;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* World lock types
|
|
67
|
+
*/
|
|
68
|
+
export type LockStatus = 'unlocked' | 'locked' | 'stale';
|
|
69
|
+
export interface WorldLock {
|
|
70
|
+
world: string;
|
|
71
|
+
status: LockStatus;
|
|
72
|
+
holder?: string;
|
|
73
|
+
timestamp?: Date;
|
|
74
|
+
age?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Backup types
|
|
78
|
+
*/
|
|
79
|
+
export interface BackupInfo {
|
|
80
|
+
commit: string;
|
|
81
|
+
message: string;
|
|
82
|
+
date: Date;
|
|
83
|
+
author: string;
|
|
84
|
+
}
|
|
85
|
+
export interface BackupStatus {
|
|
86
|
+
configured: boolean;
|
|
87
|
+
repo?: string;
|
|
88
|
+
branch?: string;
|
|
89
|
+
lastBackup?: BackupInfo;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Player types
|
|
93
|
+
*/
|
|
94
|
+
export interface PlayerInfo {
|
|
95
|
+
username: string;
|
|
96
|
+
uuid: string;
|
|
97
|
+
offlineUuid?: string;
|
|
98
|
+
avatar?: string;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Command result types
|
|
102
|
+
*/
|
|
103
|
+
export interface CommandResult<T = void> {
|
|
104
|
+
success: boolean;
|
|
105
|
+
data?: T;
|
|
106
|
+
error?: string;
|
|
107
|
+
code?: number;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Container stats types
|
|
111
|
+
*/
|
|
112
|
+
export interface ContainerStats {
|
|
113
|
+
memoryUsage: number;
|
|
114
|
+
memoryLimit: number;
|
|
115
|
+
memoryPercent: number;
|
|
116
|
+
cpuPercent: number;
|
|
117
|
+
}
|
|
118
|
+
export interface PlayerListResult {
|
|
119
|
+
online: number;
|
|
120
|
+
max: number;
|
|
121
|
+
players: string[];
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Detailed server info
|
|
125
|
+
*/
|
|
126
|
+
export interface DetailedServerInfo extends ServerInfo {
|
|
127
|
+
type?: string;
|
|
128
|
+
version?: string;
|
|
129
|
+
memory?: string;
|
|
130
|
+
uptime?: string;
|
|
131
|
+
uptimeSeconds?: number;
|
|
132
|
+
players?: PlayerListResult;
|
|
133
|
+
stats?: ContainerStats;
|
|
134
|
+
worldName?: string;
|
|
135
|
+
worldSize?: string;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Router detail info
|
|
139
|
+
*/
|
|
140
|
+
export interface RouterDetailInfo extends RouterInfo {
|
|
141
|
+
uptime?: string;
|
|
142
|
+
uptimeSeconds?: number;
|
|
143
|
+
routes: RouteInfo[];
|
|
144
|
+
mode?: string;
|
|
145
|
+
}
|
|
146
|
+
export interface RouteInfo {
|
|
147
|
+
hostname: string;
|
|
148
|
+
target: string;
|
|
149
|
+
serverStatus: ContainerStatus;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { McctlConfig, EnvConfig } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Get the package root directory
|
|
4
|
+
*/
|
|
5
|
+
export declare function getPackageRoot(): string;
|
|
6
|
+
/**
|
|
7
|
+
* Path resolution utilities
|
|
8
|
+
*/
|
|
9
|
+
export declare class Paths {
|
|
10
|
+
private readonly dataDir;
|
|
11
|
+
private readonly packageRoot;
|
|
12
|
+
constructor(dataDir?: string);
|
|
13
|
+
/** User data directory (~/.minecraft-servers) */
|
|
14
|
+
get root(): string;
|
|
15
|
+
/** Platform directory within data */
|
|
16
|
+
get platform(): string;
|
|
17
|
+
/** Scripts directory (from package or local) */
|
|
18
|
+
get scripts(): string;
|
|
19
|
+
/** Templates directory (from package) */
|
|
20
|
+
get templates(): string;
|
|
21
|
+
/** Servers directory */
|
|
22
|
+
get servers(): string;
|
|
23
|
+
/** Worlds directory */
|
|
24
|
+
get worlds(): string;
|
|
25
|
+
/** Locks directory */
|
|
26
|
+
get locks(): string;
|
|
27
|
+
/** Shared plugins directory */
|
|
28
|
+
get plugins(): string;
|
|
29
|
+
/** Shared mods directory */
|
|
30
|
+
get mods(): string;
|
|
31
|
+
/** Backups directory */
|
|
32
|
+
get backups(): string;
|
|
33
|
+
/** .env file path */
|
|
34
|
+
get envFile(): string;
|
|
35
|
+
/** docker-compose.yml path */
|
|
36
|
+
get composeFile(): string;
|
|
37
|
+
/** Server template directory */
|
|
38
|
+
get serverTemplate(): string;
|
|
39
|
+
/** Config file path */
|
|
40
|
+
get configFile(): string;
|
|
41
|
+
/** Check if platform is initialized */
|
|
42
|
+
isInitialized(): boolean;
|
|
43
|
+
/** Get server directory */
|
|
44
|
+
serverDir(name: string): string;
|
|
45
|
+
/** Get world directory */
|
|
46
|
+
worldDir(name: string): string;
|
|
47
|
+
/** Get lock file path */
|
|
48
|
+
lockFile(world: string): string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Configuration utilities
|
|
52
|
+
*/
|
|
53
|
+
export declare class Config {
|
|
54
|
+
private readonly paths;
|
|
55
|
+
constructor(paths?: Paths);
|
|
56
|
+
/** Load mcctl config */
|
|
57
|
+
load(): McctlConfig | null;
|
|
58
|
+
/** Save mcctl config */
|
|
59
|
+
save(config: McctlConfig): void;
|
|
60
|
+
/** Load .env file */
|
|
61
|
+
loadEnv(): EnvConfig;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Console output utilities with colors
|
|
65
|
+
*/
|
|
66
|
+
export declare const colors: {
|
|
67
|
+
red: (s: string) => string;
|
|
68
|
+
green: (s: string) => string;
|
|
69
|
+
yellow: (s: string) => string;
|
|
70
|
+
blue: (s: string) => string;
|
|
71
|
+
cyan: (s: string) => string;
|
|
72
|
+
bold: (s: string) => string;
|
|
73
|
+
dim: (s: string) => string;
|
|
74
|
+
};
|
|
75
|
+
export declare const log: {
|
|
76
|
+
info: (msg: string) => void;
|
|
77
|
+
warn: (msg: string) => void;
|
|
78
|
+
error: (msg: string) => void;
|
|
79
|
+
debug: (msg: string) => void;
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAsBvC;AAED;;GAEG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,OAAO,CAAC,EAAE,MAAM;IAK5B,iDAAiD;IACjD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,qCAAqC;IACrC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,gDAAgD;IAChD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,yCAAyC;IACzC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,wBAAwB;IACxB,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,uBAAuB;IACvB,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,sBAAsB;IACtB,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,+BAA+B;IAC/B,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,4BAA4B;IAC5B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,wBAAwB;IACxB,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,qBAAqB;IACrB,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,8BAA8B;IAC9B,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,gCAAgC;IAChC,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,uBAAuB;IACvB,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,uCAAuC;IACvC,aAAa,IAAI,OAAO;IAIxB,2BAA2B;IAC3B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/B,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI9B,yBAAyB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAGhC;AAED;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAElB,KAAK,CAAC,EAAE,KAAK;IAIzB,wBAAwB;IACxB,IAAI,IAAI,WAAW,GAAG,IAAI;IAc1B,wBAAwB;IACxB,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAW/B,qBAAqB;IACrB,OAAO,IAAI,SAAS;CAqCrB;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;aACR,MAAM;eACJ,MAAM;gBACL,MAAM;cACR,MAAM;cACN,MAAM;cACN,MAAM;aACP,MAAM;CAChB,CAAC;AAEF,eAAO,MAAM,GAAG;gBACF,MAAM;gBACN,MAAM;iBACL,MAAM;iBACN,MAAM;CAKpB,CAAC"}
|