omegga 1.1.2 → 1.2.0
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/README.md +10 -1
- package/dist/brickadia/server.d.ts +17 -0
- package/dist/brickadia/server.js +81 -4
- package/dist/brickadia/server.js.map +1 -1
- package/dist/cli/auth.js +1 -1
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/terminal.js +99 -6
- package/dist/cli/terminal.js.map +1 -1
- package/dist/config/reader.js.map +1 -1
- package/dist/config/types.d.ts +5 -0
- package/dist/main.js +43 -47
- package/dist/main.js.map +1 -1
- package/dist/omegga/player.js +4 -2
- package/dist/omegga/player.js.map +1 -1
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts +5 -5
- package/dist/omegga/plugin.d.ts +2 -2
- package/dist/omegga/server.d.ts +6 -5
- package/dist/omegga/server.js +128 -84
- package/dist/omegga/server.js.map +1 -1
- package/dist/omegga/wrapper.d.ts +11 -0
- package/dist/omegga/wrapper.js +16 -0
- package/dist/omegga/wrapper.js.map +1 -1
- package/dist/plugin.d.ts +7 -9
- package/dist/plugin.js.map +1 -1
- package/dist/softconfig.d.ts +1 -0
- package/dist/softconfig.js +2 -1
- package/dist/softconfig.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/updater/index.d.ts +1 -0
- package/dist/updater/index.js +10 -0
- package/dist/updater/index.js.map +1 -0
- package/dist/updater/steam.d.ts +52 -0
- package/dist/updater/steam.js +139 -0
- package/dist/updater/steam.js.map +1 -0
- package/dist/util/color.js +7 -7
- package/dist/util/color.js.map +1 -1
- package/dist/util/time.js +1 -1
- package/dist/util/time.js.map +1 -1
- package/dist/webserver/backend/api.d.ts +83 -1
- package/dist/webserver/backend/api.js +174 -15
- package/dist/webserver/backend/api.js.map +1 -1
- package/dist/webserver/backend/database.js +10 -3
- package/dist/webserver/backend/database.js.map +1 -1
- package/dist/webserver/backend/index.js +5 -9
- package/dist/webserver/backend/index.js.map +1 -1
- package/dist/webserver/backend/metrics.js +58 -11
- package/dist/webserver/backend/metrics.js.map +1 -1
- package/eslint.config.mjs +53 -0
- package/package.json +37 -29
- package/public/app.html +1865 -0
- package/public/assets/IconArrowRight-CA5_cccJ.js +7 -0
- package/public/assets/IconArrowRight-CA5_cccJ.js.map +1 -0
- package/public/assets/IconCheck-Dyq5qyY1.js +17 -0
- package/public/assets/IconCheck-Dyq5qyY1.js.map +1 -0
- package/public/assets/IconLockOpen-D95XLORK.js +7 -0
- package/public/assets/IconLockOpen-D95XLORK.js.map +1 -0
- package/public/assets/IconWorld-DtARpBKX.js +72 -0
- package/public/assets/IconWorld-DtARpBKX.js.map +1 -0
- package/public/assets/IconWorldPlus-CMeE6oOX.js +182 -0
- package/public/assets/IconWorldPlus-CMeE6oOX.js.map +1 -0
- package/public/assets/IconX-SYtbnYKI.js +12 -0
- package/public/assets/IconX-SYtbnYKI.js.map +1 -0
- package/public/assets/_commonjsHelpers-CE1G-McA.js +2 -0
- package/public/assets/_commonjsHelpers-CE1G-McA.js.map +1 -0
- package/public/assets/app-CRu25Om6.js +6 -0
- package/public/assets/app-CRu25Om6.js.map +1 -0
- package/public/assets/auth-DdQ5DJ5h.js +2 -0
- package/public/assets/auth-DdQ5DJ5h.js.map +1 -0
- package/public/assets/client-C5T7_OK9.js +26 -0
- package/public/assets/client-C5T7_OK9.js.map +1 -0
- package/public/assets/index-CJ4e7_2M.js +2 -0
- package/public/assets/index-CJ4e7_2M.js.map +1 -0
- package/public/assets/index-CRRRLlCc.js +10 -0
- package/public/assets/index-CRRRLlCc.js.map +1 -0
- package/public/assets/index-CSV4ZXsq.js +2 -0
- package/public/assets/index-CSV4ZXsq.js.map +1 -0
- package/public/assets/index-CtY8r8rg.js +9 -0
- package/public/assets/index-CtY8r8rg.js.map +1 -0
- package/public/assets/index-DaWNRjkx.js +2 -0
- package/public/assets/index-DaWNRjkx.js.map +1 -0
- package/public/assets/index-DqHVrEeL.js +10 -0
- package/public/assets/index-DqHVrEeL.js.map +1 -0
- package/public/assets/index-c0qeY2gs.js +10 -0
- package/public/assets/index-c0qeY2gs.js.map +1 -0
- package/public/assets/index-i4mjW0og.js +2 -0
- package/public/assets/index-i4mjW0og.js.map +1 -0
- package/public/assets/jsx-runtime-Bw5QeaCk.js +10 -0
- package/public/assets/jsx-runtime-Bw5QeaCk.js.map +1 -0
- package/public/assets/jsx-runtime-DoEZbXM1.js +2 -0
- package/public/assets/jsx-runtime-DoEZbXM1.js.map +1 -0
- package/public/assets/shared/@components-BiaBe0jO.js +2 -0
- package/public/assets/shared/@components-BiaBe0jO.js.map +1 -0
- package/public/assets/shared/@hooks-DfTzYBIL.js +2 -0
- package/public/assets/shared/@hooks-DfTzYBIL.js.map +1 -0
- package/public/assets/shared/@nanostores_react-HTG3s0lp.js +2 -0
- package/public/assets/shared/@nanostores_react-HTG3s0lp.js.map +1 -0
- package/public/assets/shared/@tabler_icons-react-DwfGvIVr.js +29458 -0
- package/public/assets/shared/@tabler_icons-react-DwfGvIVr.js.map +1 -0
- package/public/assets/shared/@utils-BQyGUOvP.js +2 -0
- package/public/assets/shared/@utils-BQyGUOvP.js.map +1 -0
- package/public/assets/shared/nanostores-BFqqIY_c.js +2 -0
- package/public/assets/shared/nanostores-BFqqIY_c.js.map +1 -0
- package/public/assets/shared/react-CR6vSpIu.js +2 -0
- package/public/assets/shared/react-CR6vSpIu.js.map +1 -0
- package/public/assets/shared/react-dom-BznoGTRX.js +2 -0
- package/public/assets/shared/react-dom-BznoGTRX.js.map +1 -0
- package/public/assets/shared/react_jsx-runtime-C15Zu6_p.js +2 -0
- package/public/assets/shared/react_jsx-runtime-C15Zu6_p.js.map +1 -0
- package/public/assets/shared/wouter-DbmGxXTo.js +2 -0
- package/public/assets/shared/wouter-DbmGxXTo.js.map +1 -0
- package/public/auth.html +1206 -0
- package/templates/rust/src/main.rs +25 -0
- package/templates/safe-ts/omegga.d.ts +7 -9
- package/tools/install_steamcmd.sh +1 -1
- package/.prettierignore +0 -6
- package/frontend/app.html +0 -14
- package/frontend/auth.html +0 -14
- package/omegga-config.yml +0 -7
- package/public/app.bundle.js +0 -54537
- package/public/app.bundle.js.map +0 -1
- package/public/app.css +0 -6345
- package/public/app.css.map +0 -1
- package/public/auth.bundle.js +0 -17789
- package/public/auth.bundle.js.map +0 -1
- package/public/auth.css +0 -3313
- package/public/auth.css.map +0 -1
- /package/{frontend/assets/fonts/GlacialIndifferenceBold.ttf → public/assets/GlacialIndifferenceBold-DhenBmgZ.ttf} +0 -0
- /package/{frontend/assets/fonts/GlacialIndifferenceItalic.otf → public/assets/GlacialIndifferenceItalic-BApAEtVA.otf} +0 -0
- /package/{frontend/assets/fonts/GlacialIndifferenceMedium.otf → public/assets/GlacialIndifferenceMedium-CALcoUYm.otf} +0 -0
- /package/{frontend/assets/fonts/GlacialIndifferenceRegular.ttf → public/assets/GlacialIndifferenceRegular-DynFsoUc.ttf} +0 -0
- /package/{frontend/assets/fonts/RobotoBold.ttf → public/assets/RobotoBold-DB1hqCFM.ttf} +0 -0
- /package/{frontend/assets/fonts/RobotoItalic.ttf → public/assets/RobotoItalic-DIrf6xfk.ttf} +0 -0
- /package/{frontend/assets/fonts/RobotoRegular.ttf → public/assets/RobotoRegular-CGSfnFoJ.ttf} +0 -0
- /package/{frontend/assets/img/auth_bg.webp → public/assets/auth_bg-DJZN1T-H.webp} +0 -0
- /package/{frontend/assets/img/dark_bg.webp → public/assets/dark_bg-uu5tZDxN.webp} +0 -0
- /package/{frontend/assets/img/turkey.webp → public/assets/turkey-BW4gu-4u.webp} +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export declare function getAppId(): string;
|
|
2
|
+
export declare function steamcmdDownloadSelf(): void;
|
|
3
|
+
export declare function steamcmdDownloadGame({ steambeta, steambetaPassword, }?: {
|
|
4
|
+
steambeta?: string;
|
|
5
|
+
steambetaPassword?: string;
|
|
6
|
+
}): void;
|
|
7
|
+
export type SteamInfo = {
|
|
8
|
+
data: Record<string, {
|
|
9
|
+
_change_number: number;
|
|
10
|
+
_missing_token: boolean;
|
|
11
|
+
_sha: string;
|
|
12
|
+
_size: number;
|
|
13
|
+
appid: number;
|
|
14
|
+
common: unknown;
|
|
15
|
+
config: unknown;
|
|
16
|
+
depots: Record<string, {
|
|
17
|
+
config: {
|
|
18
|
+
oslist: 'linux' | 'windows' | 'macos';
|
|
19
|
+
};
|
|
20
|
+
}> & {
|
|
21
|
+
branches: Record<string, {
|
|
22
|
+
buildid: string;
|
|
23
|
+
timeupdated: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
}>;
|
|
26
|
+
privatebranches: '1';
|
|
27
|
+
};
|
|
28
|
+
}>;
|
|
29
|
+
status: 'success';
|
|
30
|
+
};
|
|
31
|
+
export type SteamAcf = {
|
|
32
|
+
AppState: {
|
|
33
|
+
appid: string;
|
|
34
|
+
buildid: string;
|
|
35
|
+
lastupdated: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
export declare function getLocalSteamDepot(steambeta?: string): {
|
|
39
|
+
buildId: string;
|
|
40
|
+
timeUpdated: number;
|
|
41
|
+
};
|
|
42
|
+
export declare function getRemoteSteamDepot(steambeta?: string): Promise<{
|
|
43
|
+
buildId: string;
|
|
44
|
+
timeUpdated: number;
|
|
45
|
+
}>;
|
|
46
|
+
export declare const getLastSteamUpdateCheck: () => {
|
|
47
|
+
attempt: number;
|
|
48
|
+
available: number;
|
|
49
|
+
result: boolean;
|
|
50
|
+
};
|
|
51
|
+
export declare const clearLastSteamUpdateCheck: () => void;
|
|
52
|
+
export declare function hasSteamUpdate(steambeta?: string): Promise<boolean>;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.clearLastSteamUpdateCheck = exports.getLastSteamUpdateCheck = void 0;
|
|
7
|
+
exports.getAppId = getAppId;
|
|
8
|
+
exports.steamcmdDownloadSelf = steamcmdDownloadSelf;
|
|
9
|
+
exports.steamcmdDownloadGame = steamcmdDownloadGame;
|
|
10
|
+
exports.getLocalSteamDepot = getLocalSteamDepot;
|
|
11
|
+
exports.getRemoteSteamDepot = getRemoteSteamDepot;
|
|
12
|
+
exports.hasSteamUpdate = hasSteamUpdate;
|
|
13
|
+
const logger_1 = __importDefault(require("../logger"));
|
|
14
|
+
const softconfig_1 = require("../softconfig");
|
|
15
|
+
const child_process_1 = require("child_process");
|
|
16
|
+
const fs_1 = require("fs");
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
18
|
+
const steam_acf2json_1 = __importDefault(require("steam-acf2json"));
|
|
19
|
+
function getAppId() {
|
|
20
|
+
var _a;
|
|
21
|
+
return (_a = process.env.STEAM_APP_ID) !== null && _a !== void 0 ? _a : softconfig_1.STEAM_APP_ID;
|
|
22
|
+
}
|
|
23
|
+
function steamcmdDownloadSelf() {
|
|
24
|
+
(0, child_process_1.execSync)(path_1.default.join(__dirname, '../../tools/install_steamcmd.sh'), {
|
|
25
|
+
stdio: 'inherit',
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function steamcmdDownloadGame({ steambeta, steambetaPassword, } = {}) {
|
|
29
|
+
const args = [
|
|
30
|
+
`+force_install_dir ${path_1.default.join(softconfig_1.GAME_INSTALL_DIR, steambeta !== null && steambeta !== void 0 ? steambeta : 'main')}`,
|
|
31
|
+
`+login anonymous`,
|
|
32
|
+
`+app_update ${getAppId()}`,
|
|
33
|
+
steambeta ? `-beta ${steambeta}` : null,
|
|
34
|
+
steambeta && steambetaPassword
|
|
35
|
+
? `-betapassword ${steambetaPassword}`
|
|
36
|
+
: null,
|
|
37
|
+
'+quit',
|
|
38
|
+
].filter(Boolean);
|
|
39
|
+
(0, child_process_1.execSync)(`${softconfig_1.STEAMCMD_PATH} ${args.join(' ')}`, { stdio: 'inherit' });
|
|
40
|
+
}
|
|
41
|
+
async function fetchSteamInfo() {
|
|
42
|
+
const appId = getAppId();
|
|
43
|
+
const res = await fetch('https://api.steamcmd.net/v1/info/' + appId);
|
|
44
|
+
const json = await res.json();
|
|
45
|
+
return json;
|
|
46
|
+
}
|
|
47
|
+
function getSteamAcf(steambeta) {
|
|
48
|
+
const appId = getAppId();
|
|
49
|
+
const installDir = path_1.default.join(softconfig_1.GAME_INSTALL_DIR, steambeta !== null && steambeta !== void 0 ? steambeta : 'main');
|
|
50
|
+
const acfPath = path_1.default.join(installDir, 'steamapps', `appmanifest_${appId}.acf`);
|
|
51
|
+
if (!(0, fs_1.existsSync)(acfPath)) {
|
|
52
|
+
logger_1.default.verbose(`File not found: ${acfPath}`);
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
const plaintext = (0, fs_1.readFileSync)(acfPath, 'utf-8');
|
|
57
|
+
const json = steam_acf2json_1.default.decode(plaintext);
|
|
58
|
+
return json;
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
logger_1.default.error(`Error parsing ACF file ${acfPath}:`, err);
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function getSteamDepot(info, branch) {
|
|
66
|
+
var _a, _b, _c;
|
|
67
|
+
const appId = getAppId();
|
|
68
|
+
const depot = (_c = (_b = (_a = info.data[appId]) === null || _a === void 0 ? void 0 : _a.depots) === null || _b === void 0 ? void 0 : _b.branches) === null || _c === void 0 ? void 0 : _c[!branch || branch === 'main' ? 'public' : branch];
|
|
69
|
+
if (!depot ||
|
|
70
|
+
typeof depot !== 'object' ||
|
|
71
|
+
!('buildid' in depot) ||
|
|
72
|
+
!('timeupdated' in depot))
|
|
73
|
+
return null;
|
|
74
|
+
return {
|
|
75
|
+
buildId: depot.buildid,
|
|
76
|
+
timeUpdated: Number(depot.timeupdated),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function getSteamAcfDepot(acf) {
|
|
80
|
+
const appId = getAppId();
|
|
81
|
+
const appState = acf.AppState;
|
|
82
|
+
if (!appState ||
|
|
83
|
+
typeof appState !== 'object' ||
|
|
84
|
+
appState.appid !== appId ||
|
|
85
|
+
!('buildid' in appState) ||
|
|
86
|
+
!('lastupdated' in appState))
|
|
87
|
+
return null;
|
|
88
|
+
return {
|
|
89
|
+
buildId: appState.buildid,
|
|
90
|
+
timeUpdated: Number(appState.lastupdated),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function getLocalSteamDepot(steambeta) {
|
|
94
|
+
const acf = getSteamAcf(steambeta);
|
|
95
|
+
if (!acf)
|
|
96
|
+
return null;
|
|
97
|
+
const depot = getSteamAcfDepot(acf);
|
|
98
|
+
if (!depot)
|
|
99
|
+
return null;
|
|
100
|
+
return depot;
|
|
101
|
+
}
|
|
102
|
+
async function getRemoteSteamDepot(steambeta) {
|
|
103
|
+
const info = await fetchSteamInfo();
|
|
104
|
+
if (!info || !info.data) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
const depot = getSteamDepot(info, steambeta);
|
|
108
|
+
if (!depot)
|
|
109
|
+
return null;
|
|
110
|
+
return depot;
|
|
111
|
+
}
|
|
112
|
+
let lastUpdateCheck = 0;
|
|
113
|
+
let lastUpdateAvailable = 0;
|
|
114
|
+
let lastUpdateResult = false;
|
|
115
|
+
const getLastSteamUpdateCheck = () => ({
|
|
116
|
+
attempt: lastUpdateCheck,
|
|
117
|
+
available: lastUpdateAvailable,
|
|
118
|
+
result: lastUpdateResult,
|
|
119
|
+
});
|
|
120
|
+
exports.getLastSteamUpdateCheck = getLastSteamUpdateCheck;
|
|
121
|
+
const clearLastSteamUpdateCheck = () => {
|
|
122
|
+
lastUpdateResult = false;
|
|
123
|
+
};
|
|
124
|
+
exports.clearLastSteamUpdateCheck = clearLastSteamUpdateCheck;
|
|
125
|
+
async function hasSteamUpdate(steambeta) {
|
|
126
|
+
lastUpdateCheck = Date.now();
|
|
127
|
+
const localDepot = getLocalSteamDepot(steambeta);
|
|
128
|
+
if (!localDepot)
|
|
129
|
+
return false;
|
|
130
|
+
const remoteDepot = await getRemoteSteamDepot(steambeta);
|
|
131
|
+
if (!remoteDepot)
|
|
132
|
+
return false;
|
|
133
|
+
lastUpdateAvailable = Date.now();
|
|
134
|
+
const res = localDepot.buildId !== remoteDepot.buildId ||
|
|
135
|
+
localDepot.timeUpdated < remoteDepot.timeUpdated;
|
|
136
|
+
lastUpdateResult = res;
|
|
137
|
+
return res;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=steam.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steam.js","sourceRoot":"","sources":["../../src/updater/steam.ts"],"names":[],"mappings":"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"}
|
package/dist/util/color.js
CHANGED
|
@@ -10,7 +10,7 @@ exports.hsv = hsv;
|
|
|
10
10
|
function hsv(h, s, v) {
|
|
11
11
|
var r, g, b, i, f, p, q, t;
|
|
12
12
|
if (arguments.length === 1 && typeof h === 'object') {
|
|
13
|
-
(s = h.s), (v = h.v), (h = h.h);
|
|
13
|
+
((s = h.s), (v = h.v), (h = h.h));
|
|
14
14
|
}
|
|
15
15
|
h = h;
|
|
16
16
|
i = Math.floor(h * 6);
|
|
@@ -20,22 +20,22 @@ function hsv(h, s, v) {
|
|
|
20
20
|
t = v * (1 - (1 - f) * s);
|
|
21
21
|
switch (i % 6) {
|
|
22
22
|
case 0:
|
|
23
|
-
(r = v), (g = t), (b = p);
|
|
23
|
+
((r = v), (g = t), (b = p));
|
|
24
24
|
break;
|
|
25
25
|
case 1:
|
|
26
|
-
(r = q), (g = v), (b = p);
|
|
26
|
+
((r = q), (g = v), (b = p));
|
|
27
27
|
break;
|
|
28
28
|
case 2:
|
|
29
|
-
(r = p), (g = v), (b = t);
|
|
29
|
+
((r = p), (g = v), (b = t));
|
|
30
30
|
break;
|
|
31
31
|
case 3:
|
|
32
|
-
(r = p), (g = q), (b = v);
|
|
32
|
+
((r = p), (g = q), (b = v));
|
|
33
33
|
break;
|
|
34
34
|
case 4:
|
|
35
|
-
(r = t), (g = p), (b = v);
|
|
35
|
+
((r = t), (g = p), (b = v));
|
|
36
36
|
break;
|
|
37
37
|
case 5:
|
|
38
|
-
(r = v), (g = p), (b = q);
|
|
38
|
+
((r = v), (g = p), (b = q));
|
|
39
39
|
break;
|
|
40
40
|
}
|
|
41
41
|
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
|
package/dist/util/color.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/util/color.ts"],"names":[],"mappings":";;;AAKA,kBAoCC;AAzCD;;;;GAIG;AACH,SAAgB,GAAG,CACjB,CAA+C,EAC/C,CAAU,EACV,CAAU;IAEV,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QACpD,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/util/color.ts"],"names":[],"mappings":"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CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACd,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;CACf,CAAC"}
|
package/dist/util/time.js
CHANGED
|
@@ -36,6 +36,6 @@ function parseDuration(str) {
|
|
|
36
36
|
// parse brickadia's time format (YYYY.MM.DD-HH-MM-SS) into a time object
|
|
37
37
|
function parseBrickadiaTime(str) {
|
|
38
38
|
const [date, time] = str.split('-');
|
|
39
|
-
return new Date(date.replace(/\./g, '-') + 'T' + time.replace(/\./g, ':')).getTime();
|
|
39
|
+
return new Date(date.replace(/\./g, '-') + 'T' + time.replace(/\./g, ':') + 'Z').getTime();
|
|
40
40
|
}
|
|
41
41
|
//# sourceMappingURL=time.js.map
|
package/dist/util/time.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/util/time.ts"],"names":[],"mappings":";;;;;;AA+DA,sCAmBC;AAGD,gDAKC;AA1FD,+DAAwC;AAyC3B,QAAA,QAAQ,GAUQ,kBAAS,CAAC;AAEvC,MAAM,eAAe,GAA2B;IAC9C,EAAE,EAAE,CAAC,EAAE,eAAe;IACtB,CAAC,EAAE,IAAI,EAAE,UAAU;IACnB,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,UAAU;IACxB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ;IAC3B,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO;IAC/B,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ;CACrC,CAAC;AAEF,sDAAsD;AACtD,SAAgB,aAAa,CAAC,GAAW;IACvC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,+CAA+C;IAC/C,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE9B,mBAAmB;IACnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,+CAA+C;QAC/C,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAE7D,wBAAwB;QACxB,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAAE,SAAS;QAE3D,sCAAsC;QACtC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yEAAyE;AACzE,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/util/time.ts"],"names":[],"mappings":";;;;;;AA+DA,sCAmBC;AAGD,gDAKC;AA1FD,+DAAwC;AAyC3B,QAAA,QAAQ,GAUQ,kBAAS,CAAC;AAEvC,MAAM,eAAe,GAA2B;IAC9C,EAAE,EAAE,CAAC,EAAE,eAAe;IACtB,CAAC,EAAE,IAAI,EAAE,UAAU;IACnB,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,UAAU;IACxB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ;IAC3B,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO;IAC/B,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ;CACrC,CAAC;AAEF,sDAAsD;AACtD,SAAgB,aAAa,CAAC,GAAW;IACvC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,+CAA+C;IAC/C,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE9B,mBAAmB;IACnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,+CAA+C;QAC/C,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAE7D,wBAAwB;QACxB,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAAE,SAAS;QAE3D,sCAAsC;QACtC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yEAAyE;AACzE,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAChE,CAAC,OAAO,EAAE,CAAC;AACd,CAAC"}
|
|
@@ -1,3 +1,85 @@
|
|
|
1
|
+
import { IPluginDocumentation } from "../../plugin";
|
|
2
|
+
import Database from './database';
|
|
1
3
|
import type Webserver from './index';
|
|
2
|
-
import { OmeggaSocketIo } from './types';
|
|
4
|
+
import { IFrontendBanEntry, IStoreBanHistory, IStoreKickHistory, IStoreUser, IUserAgo, IUserHistory, IUserNote, OmeggaSocketIo } from './types';
|
|
5
|
+
export type OmeggaSocketData = {
|
|
6
|
+
roles: {
|
|
7
|
+
type: 'role';
|
|
8
|
+
name: string;
|
|
9
|
+
}[];
|
|
10
|
+
version: string;
|
|
11
|
+
canLogOut: boolean;
|
|
12
|
+
now: number;
|
|
13
|
+
userless: boolean;
|
|
14
|
+
isSteam: boolean;
|
|
15
|
+
update: {
|
|
16
|
+
canCheck: boolean;
|
|
17
|
+
lastCheck: boolean | null;
|
|
18
|
+
};
|
|
19
|
+
user: {
|
|
20
|
+
username: string;
|
|
21
|
+
isOwner: boolean;
|
|
22
|
+
roles: string[];
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export type GetPlayersRes = {
|
|
26
|
+
pages: number;
|
|
27
|
+
total: number;
|
|
28
|
+
players: (IUserHistory & IUserAgo & {
|
|
29
|
+
ban?: IFrontendBanEntry;
|
|
30
|
+
})[];
|
|
31
|
+
};
|
|
32
|
+
export type GetPlayerRes = Omit<IUserHistory, 'nameHistory'> & {
|
|
33
|
+
banHistory: (IStoreBanHistory & {
|
|
34
|
+
duration?: number;
|
|
35
|
+
bannerName?: string;
|
|
36
|
+
})[];
|
|
37
|
+
kickHistory: (IStoreKickHistory & {
|
|
38
|
+
kickerName?: string;
|
|
39
|
+
})[];
|
|
40
|
+
notes: IUserNote[];
|
|
41
|
+
nameHistory: {
|
|
42
|
+
name: string;
|
|
43
|
+
date: number;
|
|
44
|
+
ago?: number;
|
|
45
|
+
}[];
|
|
46
|
+
} & IUserAgo & {
|
|
47
|
+
isHost: boolean;
|
|
48
|
+
isOnline: boolean;
|
|
49
|
+
currentBan: IFrontendBanEntry | null;
|
|
50
|
+
roles: {
|
|
51
|
+
name: string;
|
|
52
|
+
color: string;
|
|
53
|
+
}[];
|
|
54
|
+
};
|
|
55
|
+
export type GetPluginsRes = {
|
|
56
|
+
name: string;
|
|
57
|
+
documentation: IPluginDocumentation;
|
|
58
|
+
path: string;
|
|
59
|
+
isLoaded: boolean;
|
|
60
|
+
isEnabled: boolean;
|
|
61
|
+
}[];
|
|
62
|
+
export type GetPluginRes = {
|
|
63
|
+
name: string;
|
|
64
|
+
format: string;
|
|
65
|
+
info: Record<string, unknown>;
|
|
66
|
+
documentation: IPluginDocumentation;
|
|
67
|
+
config: Record<string, unknown>;
|
|
68
|
+
defaultConfig: Record<string, unknown>;
|
|
69
|
+
objCount: number;
|
|
70
|
+
path: string;
|
|
71
|
+
isLoaded: boolean;
|
|
72
|
+
isEnabled: boolean;
|
|
73
|
+
};
|
|
74
|
+
export type GetUsersRes = {
|
|
75
|
+
pages: number;
|
|
76
|
+
total: number;
|
|
77
|
+
users: (IStoreUser & IUserAgo)[];
|
|
78
|
+
};
|
|
79
|
+
export type HistoryRes = Awaited<ReturnType<Database['getChats']>>;
|
|
80
|
+
export type WorldRevisionsRes = {
|
|
81
|
+
index: number;
|
|
82
|
+
date: number;
|
|
83
|
+
note: string;
|
|
84
|
+
}[];
|
|
3
85
|
export default function (server: Webserver, io: OmeggaSocketIo): void;
|
|
@@ -38,6 +38,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.default = default_1;
|
|
40
40
|
const logger_1 = __importDefault(require("../../logger"));
|
|
41
|
+
const updater_1 = require("../../updater");
|
|
42
|
+
const steam_1 = require("../../updater/steam");
|
|
41
43
|
const player_1 = __importDefault(require("../../omegga/player"));
|
|
42
44
|
const chat_1 = require("../../util/chat");
|
|
43
45
|
const color_1 = require("../../util/color");
|
|
@@ -106,6 +108,7 @@ function default_1(server, io) {
|
|
|
106
108
|
// let this user receive messages directed to this user
|
|
107
109
|
socket.join('user:' + socket.data.user._id);
|
|
108
110
|
database.getRoles().then(roles => {
|
|
111
|
+
var _a, _b, _c;
|
|
109
112
|
socket.emit('data', {
|
|
110
113
|
roles,
|
|
111
114
|
version: pkg.version,
|
|
@@ -117,6 +120,11 @@ function default_1(server, io) {
|
|
|
117
120
|
isOwner: socket.data.user.isOwner,
|
|
118
121
|
roles: socket.data.user.roles,
|
|
119
122
|
},
|
|
123
|
+
isSteam: Boolean(omegga.config.__STEAM),
|
|
124
|
+
update: {
|
|
125
|
+
canCheck: omegga.config.__STEAM && !((_a = omegga.config.server) === null || _a === void 0 ? void 0 : _a.steambeta),
|
|
126
|
+
lastCheck: (_c = (_b = (0, steam_1.getLastSteamUpdateCheck)()) === null || _b === void 0 ? void 0 : _b.result) !== null && _c !== void 0 ? _c : null,
|
|
127
|
+
},
|
|
120
128
|
});
|
|
121
129
|
});
|
|
122
130
|
// logging for this user in the console for web ui actions
|
|
@@ -168,7 +176,7 @@ function default_1(server, io) {
|
|
|
168
176
|
});
|
|
169
177
|
// find chat messages after a certain time
|
|
170
178
|
// TODO: add permission check
|
|
171
|
-
rpc.addMethod('chat.history', ([{ after, before }]) => {
|
|
179
|
+
rpc.addMethod('chat.history', ([{ after, before }] = [{}]) => {
|
|
172
180
|
return database.getChats({ after, before });
|
|
173
181
|
});
|
|
174
182
|
// see what days chat messages were sent
|
|
@@ -408,7 +416,7 @@ function default_1(server, io) {
|
|
|
408
416
|
return false;
|
|
409
417
|
// check if user is banned
|
|
410
418
|
const banList = (omegga.getBanList() || { banList: {} }).banList;
|
|
411
|
-
if (!banList[id]
|
|
419
|
+
if (!banList[id])
|
|
412
420
|
return false;
|
|
413
421
|
log('Unbanning player', (_c = (_b = (_a = omegga.getNameCache()) === null || _a === void 0 ? void 0 : _a.savedPlayerNames) === null || _b === void 0 ? void 0 : _b[id].yellow) !== null && _c !== void 0 ? _c : 'with id ' + id.yellow);
|
|
414
422
|
// unban the user
|
|
@@ -531,10 +539,16 @@ function default_1(server, io) {
|
|
|
531
539
|
// get a paginated list of users
|
|
532
540
|
// TODO: add permission check
|
|
533
541
|
rpc.addMethod('users.list', async ([{ page = 0, search = '', sort = 'name', direction = '1' } = {}]) => {
|
|
534
|
-
const resp = await database.getUsers({
|
|
542
|
+
const resp = await database.getUsers({
|
|
543
|
+
page,
|
|
544
|
+
search,
|
|
545
|
+
sort,
|
|
546
|
+
direction,
|
|
547
|
+
});
|
|
535
548
|
const now = Date.now();
|
|
536
|
-
resp.users = resp.users.map(user => ({
|
|
549
|
+
resp.users = resp.users.map(({ hash: _, ...user }) => ({
|
|
537
550
|
...user,
|
|
551
|
+
hash: '',
|
|
538
552
|
seenAgo: user.lastOnline ? now - user.lastOnline : Infinity,
|
|
539
553
|
createdAgo: now - user.created,
|
|
540
554
|
}));
|
|
@@ -621,10 +635,10 @@ function default_1(server, io) {
|
|
|
621
635
|
dailyHour: 'number',
|
|
622
636
|
dailyHourEnabled: 'boolean',
|
|
623
637
|
announcementEnabled: 'boolean',
|
|
624
|
-
bricksEnabled: 'boolean',
|
|
625
|
-
minigamesEnabled: 'boolean',
|
|
626
|
-
environmentEnabled: 'boolean',
|
|
627
638
|
playersEnabled: 'boolean',
|
|
639
|
+
saveWorld: 'boolean',
|
|
640
|
+
autoUpdateEnabled: 'boolean',
|
|
641
|
+
autoUpdateIntervalMins: 'number',
|
|
628
642
|
};
|
|
629
643
|
rpc.addMethod('server.autorestart.set', async ([config]) => {
|
|
630
644
|
// validate the autorestart config
|
|
@@ -668,16 +682,15 @@ function default_1(server, io) {
|
|
|
668
682
|
// restart the server if it's running, start the server if it's stopped
|
|
669
683
|
// TODO: server status permission check
|
|
670
684
|
rpc.addMethod('server.restart', async () => {
|
|
685
|
+
var _a;
|
|
671
686
|
if (omegga.starting || omegga.stopping)
|
|
672
687
|
return;
|
|
673
688
|
try {
|
|
674
689
|
const config = await database.getAutoRestartConfig();
|
|
675
690
|
await omegga.saveServer({
|
|
676
691
|
players: config.playersEnabled,
|
|
677
|
-
|
|
692
|
+
saveWorld: (_a = config.saveWorld) !== null && _a !== void 0 ? _a : true,
|
|
678
693
|
announcement: config.announcementEnabled,
|
|
679
|
-
minigames: config.minigamesEnabled,
|
|
680
|
-
environment: config.environmentEnabled,
|
|
681
694
|
});
|
|
682
695
|
}
|
|
683
696
|
catch (err) {
|
|
@@ -687,12 +700,158 @@ function default_1(server, io) {
|
|
|
687
700
|
logger_1.default.logp('Restarting in 5 seconds...');
|
|
688
701
|
omegga.broadcast(`<size="20">Server restart in <b><color="ffffbb">${5} seconds</></></>`);
|
|
689
702
|
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
690
|
-
omegga.
|
|
691
|
-
|
|
692
|
-
|
|
703
|
+
await omegga.restartServer();
|
|
704
|
+
});
|
|
705
|
+
// check if the server has a steam update available
|
|
706
|
+
rpc.addMethod('server.updatecheck', async () => {
|
|
707
|
+
var _a;
|
|
708
|
+
if (!omegga.config.__STEAM)
|
|
709
|
+
return null;
|
|
710
|
+
const lastUpdate = (0, steam_1.getLastSteamUpdateCheck)();
|
|
711
|
+
if (Date.now() - lastUpdate.attempt < 1000 * 5) {
|
|
712
|
+
logger_1.default.verbose('[rpc] Using cached steam update check');
|
|
713
|
+
return lastUpdate.result;
|
|
714
|
+
}
|
|
715
|
+
logger_1.default.verbose('[rpc] Checking for steam update');
|
|
716
|
+
return await (0, steam_1.hasSteamUpdate)((_a = omegga.config.server) === null || _a === void 0 ? void 0 : _a.steambeta);
|
|
717
|
+
});
|
|
718
|
+
// check if the server has a steam update available
|
|
719
|
+
rpc.addMethod('server.update', async () => {
|
|
720
|
+
var _a, _b;
|
|
721
|
+
if (!omegga.config.__STEAM)
|
|
722
|
+
return false;
|
|
723
|
+
if (omegga.stopping || omegga.starting)
|
|
724
|
+
return false;
|
|
725
|
+
const wasStarted = omegga.started;
|
|
726
|
+
if (wasStarted) {
|
|
727
|
+
log('Stopping server to update...');
|
|
693
728
|
await omegga.stop();
|
|
694
|
-
|
|
695
|
-
|
|
729
|
+
}
|
|
730
|
+
log('Updating server...');
|
|
731
|
+
let ok = false;
|
|
732
|
+
try {
|
|
733
|
+
(0, updater_1.steamcmdDownloadGame)({
|
|
734
|
+
steambeta: (_a = omegga.config.server) === null || _a === void 0 ? void 0 : _a.steambeta,
|
|
735
|
+
steambetaPassword: (_b = omegga.config.server) === null || _b === void 0 ? void 0 : _b.steambetaPassword,
|
|
736
|
+
});
|
|
737
|
+
ok = true;
|
|
738
|
+
log('Server updated successfully');
|
|
739
|
+
}
|
|
740
|
+
catch (err) {
|
|
741
|
+
error('Error updating server', err);
|
|
742
|
+
}
|
|
743
|
+
if (wasStarted) {
|
|
744
|
+
log('Starting server...');
|
|
745
|
+
await omegga.start();
|
|
746
|
+
}
|
|
747
|
+
return ok;
|
|
748
|
+
});
|
|
749
|
+
// list available worlds
|
|
750
|
+
rpc.addMethod('world.list', async () => {
|
|
751
|
+
const prefix = omegga.worldPath + '/';
|
|
752
|
+
return omegga
|
|
753
|
+
.getWorlds()
|
|
754
|
+
.map(world => world.replace(prefix, '').replace(/\.brdb$/, ''));
|
|
755
|
+
});
|
|
756
|
+
// list a world's revisions (while the server is running)
|
|
757
|
+
rpc.addMethod('world.revisions', async ([world]) => {
|
|
758
|
+
var _a;
|
|
759
|
+
try {
|
|
760
|
+
return (_a = (await omegga.getWorldRevisions(world))) === null || _a === void 0 ? void 0 : _a.map(({ date, ...r }) => ({ ...r, date: date.getTime() }));
|
|
761
|
+
}
|
|
762
|
+
catch (_err) {
|
|
763
|
+
return null;
|
|
764
|
+
}
|
|
765
|
+
});
|
|
766
|
+
// get the next world to load
|
|
767
|
+
rpc.addMethod('world.next', async () => {
|
|
768
|
+
return omegga.getNextWorld();
|
|
769
|
+
});
|
|
770
|
+
// get the configured default world
|
|
771
|
+
rpc.addMethod('world.active', async () => {
|
|
772
|
+
return omegga.getActiveWorld();
|
|
773
|
+
});
|
|
774
|
+
// load a world or revision of a world
|
|
775
|
+
rpc.addMethod('world.load', async ([world, revision]) => {
|
|
776
|
+
try {
|
|
777
|
+
let res = false;
|
|
778
|
+
if (revision) {
|
|
779
|
+
log('Loading world revision', revision, 'of', world.yellow);
|
|
780
|
+
res = await omegga.loadWorldRevision(world, revision);
|
|
781
|
+
}
|
|
782
|
+
else {
|
|
783
|
+
log('Loading world', world.yellow);
|
|
784
|
+
res = await omegga.loadWorld(world);
|
|
785
|
+
}
|
|
786
|
+
if (res) {
|
|
787
|
+
log('World loaded successfully');
|
|
788
|
+
}
|
|
789
|
+
else {
|
|
790
|
+
log('World load failed');
|
|
791
|
+
}
|
|
792
|
+
return res;
|
|
793
|
+
}
|
|
794
|
+
catch (err) {
|
|
795
|
+
error('Error while loading world', err);
|
|
796
|
+
return false;
|
|
797
|
+
}
|
|
798
|
+
});
|
|
799
|
+
/// set or clear the default world
|
|
800
|
+
rpc.addMethod('world.use', async ([world]) => {
|
|
801
|
+
try {
|
|
802
|
+
const ok = omegga.setActiveWorld(world || null);
|
|
803
|
+
if (ok) {
|
|
804
|
+
log('Set default world to', (world || 'none').yellow);
|
|
805
|
+
}
|
|
806
|
+
return ok;
|
|
807
|
+
}
|
|
808
|
+
catch (err) {
|
|
809
|
+
error('Error while using world', err);
|
|
810
|
+
return false;
|
|
811
|
+
}
|
|
812
|
+
});
|
|
813
|
+
// create a new world
|
|
814
|
+
rpc.addMethod('world.create', async ([name, level]) => {
|
|
815
|
+
try {
|
|
816
|
+
log('Creating new world', name.yellow, 'with level', (level === null || level === void 0 ? void 0 : level.yellow) || 'Plate');
|
|
817
|
+
const res = await omegga.createEmptyWorld(name, level);
|
|
818
|
+
if (res) {
|
|
819
|
+
log('World created successfully');
|
|
820
|
+
}
|
|
821
|
+
else {
|
|
822
|
+
log('World creation failed');
|
|
823
|
+
}
|
|
824
|
+
return res;
|
|
825
|
+
}
|
|
826
|
+
catch (err) {
|
|
827
|
+
error('Error while creating world', err);
|
|
828
|
+
return false;
|
|
829
|
+
}
|
|
830
|
+
});
|
|
831
|
+
// save a world or save as a world
|
|
832
|
+
rpc.addMethod('world.save', async ([name]) => {
|
|
833
|
+
try {
|
|
834
|
+
let res = false;
|
|
835
|
+
if (name) {
|
|
836
|
+
log('Saving world as', name.yellow);
|
|
837
|
+
res = await omegga.saveWorldAs(name);
|
|
838
|
+
}
|
|
839
|
+
else {
|
|
840
|
+
log('Saving current world');
|
|
841
|
+
res = await omegga.saveWorld();
|
|
842
|
+
}
|
|
843
|
+
if (res) {
|
|
844
|
+
log('World saved successfully');
|
|
845
|
+
}
|
|
846
|
+
else {
|
|
847
|
+
log('World save failed');
|
|
848
|
+
}
|
|
849
|
+
return res;
|
|
850
|
+
}
|
|
851
|
+
catch (err) {
|
|
852
|
+
error('Error while saving world', err);
|
|
853
|
+
return false;
|
|
854
|
+
}
|
|
696
855
|
});
|
|
697
856
|
// subscribe and unsubscribe to events
|
|
698
857
|
socket.on('subscribe', room => {
|