omegga 1.2.9 → 1.4.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 +50 -11
- package/dist/brickadia/config.js +26 -90
- package/dist/brickadia/config.js.map +1 -1
- package/dist/brickadia/server.js +290 -293
- package/dist/brickadia/server.js.map +1 -1
- package/dist/cli/auth.js +149 -177
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/config.js +64 -66
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.js +14 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installer.js +37 -43
- package/dist/cli/installer.js.map +1 -1
- package/dist/cli/plugin.js +651 -682
- package/dist/cli/plugin.js.map +1 -1
- package/dist/cli/terminal.js +811 -733
- package/dist/cli/terminal.js.map +1 -1
- package/dist/config/formats/format_js.js +6 -6
- package/dist/config/formats/format_js.js.map +1 -1
- package/dist/config/formats/format_yml.js +7 -10
- package/dist/config/formats/format_yml.js.map +1 -1
- package/dist/config/index.js +46 -68
- package/dist/config/index.js.map +1 -1
- package/dist/config/reader.js +16 -27
- package/dist/config/reader.js.map +1 -1
- package/dist/config/validator.js +23 -25
- package/dist/config/validator.js.map +1 -1
- package/dist/config/writer.js +11 -21
- package/dist/config/writer.js.map +1 -1
- package/dist/index.js +18 -64
- package/dist/index.js.map +1 -1
- package/dist/info/default_commands.json.js +39 -0
- package/dist/info/default_commands.json.js.map +1 -0
- package/dist/logger.js +61 -60
- package/dist/logger.js.map +1 -1
- package/dist/main.js +425 -471
- package/dist/main.js.map +1 -1
- package/dist/omegga/auth.js +101 -148
- package/dist/omegga/auth.js.map +1 -1
- package/dist/omegga/commandInjector.js +261 -251
- package/dist/omegga/commandInjector.js.map +1 -1
- package/dist/omegga/index.js +14 -52
- package/dist/omegga/index.js.map +1 -1
- package/dist/omegga/logWrangler.js +224 -275
- package/dist/omegga/logWrangler.js.map +1 -1
- package/dist/omegga/matchers/auth.js +36 -50
- package/dist/omegga/matchers/auth.js.map +1 -1
- package/dist/omegga/matchers/chat.js +49 -71
- package/dist/omegga/matchers/chat.js.map +1 -1
- package/dist/omegga/matchers/command.js +25 -36
- package/dist/omegga/matchers/command.js.map +1 -1
- package/dist/omegga/matchers/exit.js +15 -18
- package/dist/omegga/matchers/exit.js.map +1 -1
- package/dist/omegga/matchers/index.js +26 -40
- package/dist/omegga/matchers/index.js.map +1 -1
- package/dist/omegga/matchers/init.js +20 -23
- package/dist/omegga/matchers/init.js.map +1 -1
- package/dist/omegga/matchers/interact.js +58 -64
- package/dist/omegga/matchers/interact.js.map +1 -1
- package/dist/omegga/matchers/join.js +74 -95
- package/dist/omegga/matchers/join.js.map +1 -1
- package/dist/omegga/matchers/leave.js +43 -56
- package/dist/omegga/matchers/leave.js.map +1 -1
- package/dist/omegga/matchers/mapChange.js +26 -35
- package/dist/omegga/matchers/mapChange.js.map +1 -1
- package/dist/omegga/matchers/minigameJoin.js +24 -31
- package/dist/omegga/matchers/minigameJoin.js.map +1 -1
- package/dist/omegga/matchers/version.js +42 -49
- package/dist/omegga/matchers/version.js.map +1 -1
- package/dist/omegga/player.js +562 -528
- package/dist/omegga/player.js.map +1 -1
- package/dist/omegga/plugin/interface.js +91 -98
- package/dist/omegga/plugin/interface.js.map +1 -1
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.js +578 -429
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js +282 -294
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_safe.js +365 -393
- package/dist/omegga/plugin/plugin_node_safe.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_unsafe.js +119 -179
- package/dist/omegga/plugin/plugin_node_unsafe.js.map +1 -1
- package/dist/omegga/plugin.js +402 -347
- package/dist/omegga/plugin.js.map +1 -1
- package/dist/omegga/server.js +742 -774
- package/dist/omegga/server.js.map +1 -1
- package/dist/omegga/wrapper.js +64 -91
- package/dist/omegga/wrapper.js.map +1 -1
- package/dist/plugin.js +11 -31
- package/dist/plugin.js.map +1 -1
- package/dist/softconfig.js +139 -100
- package/dist/softconfig.js.map +1 -1
- package/dist/updater/steam.js +104 -114
- package/dist/updater/steam.js.map +1 -1
- package/dist/util/brdb.js +496 -528
- package/dist/util/brdb.js.map +1 -1
- package/dist/util/brick/checkBounds.js +11 -15
- package/dist/util/brick/checkBounds.js.map +1 -1
- package/dist/util/brick/constants.js +723 -174
- package/dist/util/brick/constants.js.map +1 -1
- package/dist/util/brick/displayName.js +204 -211
- package/dist/util/brick/displayName.js.map +1 -1
- package/dist/util/brick/getBounds.js +29 -41
- package/dist/util/brick/getBounds.js.map +1 -1
- package/dist/util/brick/getBrickSize.js +6 -7
- package/dist/util/brick/getBrickSize.js.map +1 -1
- package/dist/util/brick/getScaleAxis.js +24 -30
- package/dist/util/brick/getScaleAxis.js.map +1 -1
- package/dist/util/brick/index.js +8 -29
- package/dist/util/brick/index.js.map +1 -1
- package/dist/util/brick/rotate.js +29 -34
- package/dist/util/brick/rotate.js.map +1 -1
- package/dist/util/brick/setOwnership.js +13 -19
- package/dist/util/brick/setOwnership.js.map +1 -1
- package/dist/util/chat.js +53 -44
- package/dist/util/chat.js.map +1 -1
- package/dist/util/color.js +112 -124
- package/dist/util/color.js.map +1 -1
- package/dist/util/file.js +54 -98
- package/dist/util/file.js.map +1 -1
- package/dist/util/index.js +84 -106
- package/dist/util/index.js.map +1 -1
- package/dist/util/map.js +18 -20
- package/dist/util/map.js.map +1 -1
- package/dist/util/pattern.js +6 -9
- package/dist/util/pattern.js.map +1 -1
- package/dist/util/time.js +31 -34
- package/dist/util/time.js.map +1 -1
- package/dist/util/uuid.js +10 -8
- package/dist/util/uuid.js.map +1 -1
- package/dist/util/wsl.js +19 -25
- package/dist/util/wsl.js.map +1 -1
- package/dist/version.js +7 -9
- package/dist/version.js.map +1 -1
- package/dist/webserver/backend/api.js +784 -874
- package/dist/webserver/backend/api.js.map +1 -1
- package/dist/webserver/backend/calendar.js +14 -17
- package/dist/webserver/backend/calendar.js.map +1 -1
- package/dist/webserver/backend/database.js +563 -613
- package/dist/webserver/backend/database.js.map +1 -1
- package/dist/webserver/backend/index.js +153 -191
- package/dist/webserver/backend/index.js.map +1 -1
- package/dist/webserver/backend/metrics.js +219 -248
- package/dist/webserver/backend/metrics.js.map +1 -1
- package/dist/webserver/backend/util.js +47 -68
- package/dist/webserver/backend/util.js.map +1 -1
- package/dist/worker.js +322 -0
- package/dist/worker.js.map +1 -0
- package/package.json +16 -11
- package/public/app.html +18 -18
- package/public/assets/IconArrowRight-BuVxhqKX.js +2 -0
- package/public/assets/{IconArrowRight-CA5_cccJ.js.map → IconArrowRight-BuVxhqKX.js.map} +1 -1
- package/public/assets/IconCheck-DOe3u7iH.js +2 -0
- package/public/assets/{IconCheck-Dyq5qyY1.js.map → IconCheck-DOe3u7iH.js.map} +1 -1
- package/public/assets/IconLockOpen-Bs7Tsf6u.js +2 -0
- package/public/assets/{IconLockOpen-D95XLORK.js.map → IconLockOpen-Bs7Tsf6u.js.map} +1 -1
- package/public/assets/IconWorld-B6GK5qpx.js +2 -0
- package/public/assets/{IconWorld-DtARpBKX.js.map → IconWorld-B6GK5qpx.js.map} +1 -1
- package/public/assets/IconWorldPlus-DpfueG8_.js +2 -0
- package/public/assets/{IconWorldPlus-CGBAsLNj.js.map → IconWorldPlus-DpfueG8_.js.map} +1 -1
- package/public/assets/IconX-CvmO0bbE.js +2 -0
- package/public/assets/{IconX-SYtbnYKI.js.map → IconX-CvmO0bbE.js.map} +1 -1
- package/public/assets/app-nJIpyOiP.js +6 -0
- package/public/assets/{app-BtOlgo__.js.map → app-nJIpyOiP.js.map} +1 -1
- package/public/assets/{auth-CvxEWAMc.js → auth-6N37o421.js} +2 -2
- package/public/assets/{auth-CvxEWAMc.js.map → auth-6N37o421.js.map} +1 -1
- package/public/assets/client-BT1QYH0O.js +10 -0
- package/public/assets/{client-C5T7_OK9.js.map → client-BT1QYH0O.js.map} +1 -1
- package/public/assets/index-2cgXLhrt.js +2 -0
- package/public/assets/{index-CRRRLlCc.js.map → index-2cgXLhrt.js.map} +1 -1
- package/public/assets/index-3dNmNZ9B.js +10 -0
- package/public/assets/{index-Bq9C9SqB.js.map → index-3dNmNZ9B.js.map} +1 -1
- package/public/assets/{index-i4mjW0og.js → index-CrN8I5Az.js} +2 -2
- package/public/assets/index-CrN8I5Az.js.map +1 -0
- package/public/assets/index-CtCtK5BX.js +2 -0
- package/public/assets/{index-DqHVrEeL.js.map → index-CtCtK5BX.js.map} +1 -1
- package/public/assets/index-D0OPOe3j.js +2 -0
- package/public/assets/{index-c0qeY2gs.js.map → index-D0OPOe3j.js.map} +1 -1
- package/public/assets/{index-DYcAgWjJ.js → index-DY750sgZ.js} +2 -2
- package/public/assets/{index-DYcAgWjJ.js.map → index-DY750sgZ.js.map} +1 -1
- package/public/assets/jsx-runtime-BX5r4UiA.js +2 -0
- package/public/assets/jsx-runtime-BX5r4UiA.js.map +1 -0
- package/public/assets/jsx-runtime-DldvXD6N.js +2 -0
- package/public/assets/{jsx-runtime-Bw5QeaCk.js.map → jsx-runtime-DldvXD6N.js.map} +1 -1
- package/public/assets/shared/@components-DdtLZOaA.js +2 -0
- package/public/assets/shared/@components-DdtLZOaA.js.map +1 -0
- package/public/assets/shared/{@hooks-DfTzYBIL.js → @hooks-Ch_hJYh0.js} +2 -2
- package/public/assets/shared/{@hooks-DfTzYBIL.js.map → @hooks-Ch_hJYh0.js.map} +1 -1
- package/public/assets/shared/{@nanostores_react-HTG3s0lp.js → @nanostores_react-DJPF1Eqx.js} +2 -2
- package/public/assets/shared/{@nanostores_react-HTG3s0lp.js.map → @nanostores_react-DJPF1Eqx.js.map} +1 -1
- package/public/assets/shared/@tabler_icons-react-B4bN8gHc.js +3 -0
- package/public/assets/shared/{@tabler_icons-react--FJWdUou.js.map → @tabler_icons-react-B4bN8gHc.js.map} +1 -1
- package/public/assets/shared/nanostores-BFqqIY_c.js.map +1 -1
- package/public/assets/shared/react-dom-8Rcmh_FG.js +2 -0
- package/public/assets/shared/{react-dom-BznoGTRX.js.map → react-dom-8Rcmh_FG.js.map} +1 -1
- package/public/assets/shared/react-iXLZ_Bod.js +2 -0
- package/public/assets/shared/{react-CR6vSpIu.js.map → react-iXLZ_Bod.js.map} +1 -1
- package/public/assets/shared/react_jsx-runtime-BwhiLcBy.js +2 -0
- package/public/assets/shared/{react_jsx-runtime-C15Zu6_p.js.map → react_jsx-runtime-BwhiLcBy.js.map} +1 -1
- package/public/assets/shared/{wouter-DbmGxXTo.js → wouter-CUC1caxu.js} +2 -2
- package/public/assets/shared/wouter-CUC1caxu.js.map +1 -0
- package/public/auth.html +14 -14
- package/templates/safe-ts/omegga.d.ts +31 -1
- package/dist/brickadia/config.d.ts +0 -3
- package/dist/brickadia/presets.d.ts +0 -65
- package/dist/brickadia/presets.js +0 -3
- package/dist/brickadia/presets.js.map +0 -1
- package/dist/brickadia/server.d.ts +0 -36
- package/dist/brickadia/types.d.ts +0 -45
- package/dist/brickadia/types.js +0 -3
- package/dist/brickadia/types.js.map +0 -1
- package/dist/cli/auth.d.ts +0 -26
- package/dist/cli/config.d.ts +0 -10
- package/dist/cli/index.d.ts +0 -30
- package/dist/cli/installer.d.ts +0 -1
- package/dist/cli/plugin.d.ts +0 -22
- package/dist/cli/terminal.d.ts +0 -25
- package/dist/config/authorizer.d.ts +0 -2
- package/dist/config/authorizer.js +0 -38
- package/dist/config/authorizer.js.map +0 -1
- package/dist/config/formats/format_js.d.ts +0 -3
- package/dist/config/formats/format_yml.d.ts +0 -3
- package/dist/config/index.d.ts +0 -18
- package/dist/config/reader.d.ts +0 -3
- package/dist/config/types.d.ts +0 -50
- package/dist/config/types.js +0 -3
- package/dist/config/types.js.map +0 -1
- package/dist/config/validator.d.ts +0 -6
- package/dist/config/writer.d.ts +0 -3
- package/dist/index.d.ts +0 -22
- package/dist/info/default_commands.json +0 -29
- package/dist/logger.d.ts +0 -41
- package/dist/main.d.ts +0 -1
- package/dist/omegga/auth.d.ts +0 -9
- package/dist/omegga/commandInjector.d.ts +0 -35
- package/dist/omegga/index.d.ts +0 -7
- package/dist/omegga/logWrangler.d.ts +0 -32
- package/dist/omegga/matchers/auth.d.ts +0 -10
- package/dist/omegga/matchers/chat.d.ts +0 -10
- package/dist/omegga/matchers/command.d.ts +0 -7
- package/dist/omegga/matchers/exit.d.ts +0 -3
- package/dist/omegga/matchers/index.d.ts +0 -3
- package/dist/omegga/matchers/init.d.ts +0 -3
- package/dist/omegga/matchers/interact.d.ts +0 -4
- package/dist/omegga/matchers/join.d.ts +0 -4
- package/dist/omegga/matchers/leave.d.ts +0 -4
- package/dist/omegga/matchers/mapChange.d.ts +0 -3
- package/dist/omegga/matchers/minigameJoin.d.ts +0 -9
- package/dist/omegga/matchers/types.d.ts +0 -5
- package/dist/omegga/matchers/types.js +0 -3
- package/dist/omegga/matchers/types.js.map +0 -1
- package/dist/omegga/matchers/version.d.ts +0 -3
- package/dist/omegga/player.d.ts +0 -81
- package/dist/omegga/plugin/interface.d.ts +0 -30
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.d.ts +0 -23
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts +0 -145
- package/dist/omegga/plugin/plugin_node_safe/worker.d.ts +0 -1
- package/dist/omegga/plugin/plugin_node_safe/worker.js +0 -367
- package/dist/omegga/plugin/plugin_node_safe/worker.js.map +0 -1
- package/dist/omegga/plugin/plugin_node_safe.d.ts +0 -23
- package/dist/omegga/plugin/plugin_node_unsafe.d.ts +0 -13
- package/dist/omegga/plugin.d.ts +0 -63
- package/dist/omegga/server.d.ts +0 -166
- package/dist/omegga/types.d.ts +0 -49
- package/dist/omegga/types.js +0 -3
- package/dist/omegga/types.js.map +0 -1
- package/dist/omegga/wrapper.d.ts +0 -32
- package/dist/plugin.d.ts +0 -916
- package/dist/softconfig.d.ts +0 -67
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/updater/index.d.ts +0 -1
- package/dist/updater/index.js +0 -10
- package/dist/updater/index.js.map +0 -1
- package/dist/updater/steam.d.ts +0 -52
- package/dist/util/brdb.d.ts +0 -31
- package/dist/util/brick/checkBounds.d.ts +0 -8
- package/dist/util/brick/constants.d.ts +0 -18
- package/dist/util/brick/displayName.d.ts +0 -7
- package/dist/util/brick/getBounds.d.ts +0 -5
- package/dist/util/brick/getBrickSize.d.ts +0 -3
- package/dist/util/brick/getScaleAxis.d.ts +0 -3
- package/dist/util/brick/index.d.ts +0 -14
- package/dist/util/brick/rotate.d.ts +0 -16
- package/dist/util/brick/setOwnership.d.ts +0 -12
- package/dist/util/chat.d.ts +0 -23
- package/dist/util/color.d.ts +0 -13
- package/dist/util/file.d.ts +0 -5
- package/dist/util/index.d.ts +0 -183
- package/dist/util/map.d.ts +0 -6
- package/dist/util/pattern.d.ts +0 -1
- package/dist/util/time.d.ts +0 -39
- package/dist/util/uuid.d.ts +0 -3
- package/dist/util/wsl.d.ts +0 -2
- package/dist/version.d.ts +0 -2
- package/dist/webserver/backend/api.d.ts +0 -115
- package/dist/webserver/backend/calendar.d.ts +0 -5
- package/dist/webserver/backend/database.d.ts +0 -150
- package/dist/webserver/backend/index.d.ts +0 -30
- package/dist/webserver/backend/metrics.d.ts +0 -3
- package/dist/webserver/backend/types.d.ts +0 -114
- package/dist/webserver/backend/types.js +0 -3
- package/dist/webserver/backend/types.js.map +0 -1
- package/dist/webserver/backend/util.d.ts +0 -2
- package/dist/webserver/index.d.ts +0 -2
- package/dist/webserver/index.js +0 -9
- package/dist/webserver/index.js.map +0 -1
- package/public/assets/IconArrowRight-CA5_cccJ.js +0 -7
- package/public/assets/IconCheck-Dyq5qyY1.js +0 -17
- package/public/assets/IconLockOpen-D95XLORK.js +0 -7
- package/public/assets/IconWorld-DtARpBKX.js +0 -72
- package/public/assets/IconWorldPlus-CGBAsLNj.js +0 -182
- package/public/assets/IconX-SYtbnYKI.js +0 -12
- package/public/assets/app-BtOlgo__.js +0 -6
- package/public/assets/client-C5T7_OK9.js +0 -26
- package/public/assets/index-Bq9C9SqB.js +0 -10
- package/public/assets/index-CRRRLlCc.js +0 -10
- package/public/assets/index-DqHVrEeL.js +0 -10
- package/public/assets/index-c0qeY2gs.js +0 -10
- package/public/assets/index-i4mjW0og.js.map +0 -1
- package/public/assets/jsx-runtime-Bw5QeaCk.js +0 -10
- package/public/assets/jsx-runtime-DoEZbXM1.js +0 -2
- package/public/assets/jsx-runtime-DoEZbXM1.js.map +0 -1
- package/public/assets/shared/@components-DVehBp7v.js +0 -2
- package/public/assets/shared/@components-DVehBp7v.js.map +0 -1
- package/public/assets/shared/@tabler_icons-react--FJWdUou.js +0 -29458
- package/public/assets/shared/react-CR6vSpIu.js +0 -2
- package/public/assets/shared/react-dom-BznoGTRX.js +0 -2
- package/public/assets/shared/react_jsx-runtime-C15Zu6_p.js +0 -2
- package/public/assets/shared/wouter-DbmGxXTo.js.map +0 -1
package/dist/softconfig.js
CHANGED
|
@@ -1,105 +1,144 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
exports.DEFAULT_PORT = 8080;
|
|
15
|
-
// filenames that omegga searches for
|
|
16
|
-
// extensions are added based on the available config formats
|
|
17
|
-
exports.CONFIG_FILENAMES = [
|
|
18
|
-
'omegga-config',
|
|
19
|
-
'omegga',
|
|
20
|
-
'.omegga-config',
|
|
21
|
-
'.omegga',
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const os = require("os");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const PROJECT_NAME = "omegga";
|
|
6
|
+
const CONFIG_HOME = path.join(os.homedir(), ".config/" + PROJECT_NAME);
|
|
7
|
+
const GLOBAL_TOKEN = path.join(CONFIG_HOME, "global_auth_token");
|
|
8
|
+
const DEFAULT_PORT = 8080;
|
|
9
|
+
const CONFIG_FILENAMES = [
|
|
10
|
+
"omegga-config",
|
|
11
|
+
"omegga",
|
|
12
|
+
".omegga-config",
|
|
13
|
+
".omegga"
|
|
22
14
|
];
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
15
|
+
const BRICKADIA_INSTALLS = path.join(
|
|
16
|
+
os.homedir(),
|
|
17
|
+
".local/share/brickadia-launcher/brickadia-installs"
|
|
18
|
+
);
|
|
19
|
+
const STEAM_DIR = path.join(CONFIG_HOME, "steam");
|
|
20
|
+
const STEAMCMD_PATH = path.join(STEAM_DIR, "steamcmd.sh");
|
|
21
|
+
const DEFAULT_STEAM_APP_ID = "3017590";
|
|
22
|
+
function getAppId() {
|
|
23
|
+
return process.env.STEAM_APP_ID ?? DEFAULT_STEAM_APP_ID;
|
|
24
|
+
}
|
|
25
|
+
const GAME_BIN_PATH = "Binaries/Linux/BrickadiaServer-Linux-Shipping";
|
|
26
|
+
const LOCAL_LAUNCHER = path.join(
|
|
27
|
+
CONFIG_HOME,
|
|
28
|
+
"launcher/brickadia-launcher/main-brickadia-launcher"
|
|
29
|
+
);
|
|
30
|
+
const getOverrideGameDir = () => process.env.BRICKADIA_DIR;
|
|
31
|
+
function getOverrideGameBinary() {
|
|
32
|
+
const overrideDir = getOverrideGameDir();
|
|
33
|
+
if (!overrideDir) return null;
|
|
34
|
+
return path.join(overrideDir, GAME_BIN_PATH);
|
|
35
|
+
}
|
|
36
|
+
function getSteamGameDir() {
|
|
37
|
+
let GAME_DIR = "Brickadia";
|
|
38
|
+
if (process.env.STEAM_GAME_DIR) GAME_DIR = process.env.STEAM_GAME_DIR;
|
|
39
|
+
return process.env.STEAM_GAME_DIR ?? GAME_DIR;
|
|
40
|
+
}
|
|
41
|
+
function getSteamInstallDir() {
|
|
42
|
+
let INSTALL_DIR = path.join(CONFIG_HOME, "steam_installs");
|
|
43
|
+
if (process.env.STEAM_INSTALLS_DIR)
|
|
29
44
|
INSTALL_DIR = process.env.STEAM_INSTALLS_DIR;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
// path to auth files
|
|
39
|
-
exports.CONFIG_AUTH_DIR = 'Auth';
|
|
40
|
-
exports.CONFIG_SAVED_DIR = 'Saved';
|
|
41
|
-
// files in Brickadia/Saved/Auth
|
|
42
|
-
exports.BRICKADIA_AUTH_FILES = [
|
|
43
|
-
'OfflinePayload.bin',
|
|
44
|
-
'OfflineSignature.bin',
|
|
45
|
-
'SessionToken.bin',
|
|
45
|
+
return INSTALL_DIR;
|
|
46
|
+
}
|
|
47
|
+
const CONFIG_AUTH_DIR = "Auth";
|
|
48
|
+
const CONFIG_SAVED_DIR = "Saved";
|
|
49
|
+
const BRICKADIA_AUTH_FILES = [
|
|
50
|
+
"OfflinePayload.bin",
|
|
51
|
+
"OfflineSignature.bin",
|
|
52
|
+
"SessionToken.bin"
|
|
46
53
|
];
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
STEAM_DIR: exports.STEAM_DIR,
|
|
100
|
-
STEAMCMD_PATH: exports.STEAMCMD_PATH,
|
|
101
|
-
STEAM_INSTALLS_DIR: exports.GAME_INSTALL_DIR,
|
|
102
|
-
STEAM_BRICKADIA_PATH: exports.GAME_BIN_PATH,
|
|
103
|
-
GLOBAL_TOKEN: exports.GLOBAL_TOKEN,
|
|
54
|
+
const TEMP_DIR_NAME = ".omegga-temp-data";
|
|
55
|
+
const DATA_PATH = "./data";
|
|
56
|
+
const PLUGIN_PATH = "./plugins";
|
|
57
|
+
const PLUGIN_FILE = "./plugin.json";
|
|
58
|
+
const PLUGIN_POSTINSTALL = "./setup.sh";
|
|
59
|
+
const CHAT_STORE = "chat.db";
|
|
60
|
+
const PLAYER_STORE = "players.db";
|
|
61
|
+
const PLUGIN_STORE = "plugins.db";
|
|
62
|
+
const STATUS_STORE = "status.db";
|
|
63
|
+
const USER_STORE = "users.db";
|
|
64
|
+
const SERVER_STORE = "store.db";
|
|
65
|
+
const SESSION_STORE = "session.db";
|
|
66
|
+
const ACTIVE_WORLD_FILE = "active_world";
|
|
67
|
+
const WEB_CERTS_DATA = "web_certs.json";
|
|
68
|
+
const WEB_SESSION_TOKEN = "web_session_token";
|
|
69
|
+
const METRIC_HEARTBEAT_INTERVAL = 60 * 1e3;
|
|
70
|
+
const METRIC_EMPTIES_BEFORE_PAUSE = 3;
|
|
71
|
+
const soft = {
|
|
72
|
+
PROJECT_NAME,
|
|
73
|
+
CONFIG_HOME,
|
|
74
|
+
DEFAULT_PORT,
|
|
75
|
+
CONFIG_FILENAMES,
|
|
76
|
+
BRICKADIA_INSTALLS,
|
|
77
|
+
LOCAL_LAUNCHER,
|
|
78
|
+
CONFIG_AUTH_DIR,
|
|
79
|
+
CONFIG_SAVED_DIR,
|
|
80
|
+
BRICKADIA_AUTH_FILES,
|
|
81
|
+
TEMP_DIR_NAME,
|
|
82
|
+
DATA_PATH,
|
|
83
|
+
PLUGIN_PATH,
|
|
84
|
+
PLUGIN_FILE,
|
|
85
|
+
PLUGIN_POSTINSTALL,
|
|
86
|
+
CHAT_STORE,
|
|
87
|
+
PLAYER_STORE,
|
|
88
|
+
PLUGIN_STORE,
|
|
89
|
+
STATUS_STORE,
|
|
90
|
+
USER_STORE,
|
|
91
|
+
SERVER_STORE,
|
|
92
|
+
SESSION_STORE,
|
|
93
|
+
WEB_CERTS_DATA,
|
|
94
|
+
WEB_SESSION_TOKEN,
|
|
95
|
+
METRIC_HEARTBEAT_INTERVAL,
|
|
96
|
+
METRIC_EMPTIES_BEFORE_PAUSE,
|
|
97
|
+
STEAM_DIR,
|
|
98
|
+
STEAMCMD_PATH,
|
|
99
|
+
STEAM_BRICKADIA_PATH: GAME_BIN_PATH,
|
|
100
|
+
GLOBAL_TOKEN,
|
|
101
|
+
getOverrideGameDir,
|
|
102
|
+
getOverrideGameBinary,
|
|
103
|
+
getSteamGameDir,
|
|
104
|
+
getSteamInstallDir,
|
|
105
|
+
getAppId
|
|
104
106
|
};
|
|
105
|
-
|
|
107
|
+
exports.ACTIVE_WORLD_FILE = ACTIVE_WORLD_FILE;
|
|
108
|
+
exports.BRICKADIA_AUTH_FILES = BRICKADIA_AUTH_FILES;
|
|
109
|
+
exports.BRICKADIA_INSTALLS = BRICKADIA_INSTALLS;
|
|
110
|
+
exports.CHAT_STORE = CHAT_STORE;
|
|
111
|
+
exports.CONFIG_AUTH_DIR = CONFIG_AUTH_DIR;
|
|
112
|
+
exports.CONFIG_FILENAMES = CONFIG_FILENAMES;
|
|
113
|
+
exports.CONFIG_HOME = CONFIG_HOME;
|
|
114
|
+
exports.CONFIG_SAVED_DIR = CONFIG_SAVED_DIR;
|
|
115
|
+
exports.DATA_PATH = DATA_PATH;
|
|
116
|
+
exports.DEFAULT_PORT = DEFAULT_PORT;
|
|
117
|
+
exports.DEFAULT_STEAM_APP_ID = DEFAULT_STEAM_APP_ID;
|
|
118
|
+
exports.GAME_BIN_PATH = GAME_BIN_PATH;
|
|
119
|
+
exports.GLOBAL_TOKEN = GLOBAL_TOKEN;
|
|
120
|
+
exports.LOCAL_LAUNCHER = LOCAL_LAUNCHER;
|
|
121
|
+
exports.METRIC_EMPTIES_BEFORE_PAUSE = METRIC_EMPTIES_BEFORE_PAUSE;
|
|
122
|
+
exports.METRIC_HEARTBEAT_INTERVAL = METRIC_HEARTBEAT_INTERVAL;
|
|
123
|
+
exports.PLAYER_STORE = PLAYER_STORE;
|
|
124
|
+
exports.PLUGIN_FILE = PLUGIN_FILE;
|
|
125
|
+
exports.PLUGIN_PATH = PLUGIN_PATH;
|
|
126
|
+
exports.PLUGIN_POSTINSTALL = PLUGIN_POSTINSTALL;
|
|
127
|
+
exports.PLUGIN_STORE = PLUGIN_STORE;
|
|
128
|
+
exports.PROJECT_NAME = PROJECT_NAME;
|
|
129
|
+
exports.SERVER_STORE = SERVER_STORE;
|
|
130
|
+
exports.SESSION_STORE = SESSION_STORE;
|
|
131
|
+
exports.STATUS_STORE = STATUS_STORE;
|
|
132
|
+
exports.STEAMCMD_PATH = STEAMCMD_PATH;
|
|
133
|
+
exports.STEAM_DIR = STEAM_DIR;
|
|
134
|
+
exports.TEMP_DIR_NAME = TEMP_DIR_NAME;
|
|
135
|
+
exports.USER_STORE = USER_STORE;
|
|
136
|
+
exports.WEB_CERTS_DATA = WEB_CERTS_DATA;
|
|
137
|
+
exports.WEB_SESSION_TOKEN = WEB_SESSION_TOKEN;
|
|
138
|
+
exports.default = soft;
|
|
139
|
+
exports.getAppId = getAppId;
|
|
140
|
+
exports.getOverrideGameBinary = getOverrideGameBinary;
|
|
141
|
+
exports.getOverrideGameDir = getOverrideGameDir;
|
|
142
|
+
exports.getSteamGameDir = getSteamGameDir;
|
|
143
|
+
exports.getSteamInstallDir = getSteamInstallDir;
|
|
144
|
+
//# sourceMappingURL=softconfig.js.map
|
package/dist/softconfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"softconfig.js","
|
|
1
|
+
{"version":3,"file":"softconfig.js","sources":["../src/softconfig.ts"],"sourcesContent":["import os from 'os';\nimport path from 'path';\n\n// home directory for omegga config\nexport const PROJECT_NAME = 'omegga';\nexport const CONFIG_HOME = path.join(os.homedir(), '.config/' + PROJECT_NAME);\nexport const GLOBAL_TOKEN = path.join(CONFIG_HOME, 'global_auth_token');\n\nexport const DEFAULT_PORT = 8080;\n\n// filenames that omegga searches for\n// extensions are added based on the available config formats\nexport const CONFIG_FILENAMES = [\n 'omegga-config',\n 'omegga',\n '.omegga-config',\n '.omegga',\n];\n\nexport const BRICKADIA_INSTALLS = path.join(\n os.homedir(),\n '.local/share/brickadia-launcher/brickadia-installs',\n);\n\nexport const STEAM_DIR = path.join(CONFIG_HOME, 'steam');\nexport const STEAMCMD_PATH = path.join(STEAM_DIR, 'steamcmd.sh');\nexport const DEFAULT_STEAM_APP_ID = '3017590'; // Brickadia app ID\nexport function getAppId() {\n return process.env.STEAM_APP_ID ?? DEFAULT_STEAM_APP_ID;\n}\nexport const GAME_BIN_PATH = 'Binaries/Linux/BrickadiaServer-Linux-Shipping';\nexport const LOCAL_LAUNCHER = path.join(\n CONFIG_HOME,\n 'launcher/brickadia-launcher/main-brickadia-launcher',\n);\n\nexport const getOverrideGameDir = () => process.env.BRICKADIA_DIR;\nexport function getOverrideGameBinary() {\n const overrideDir = getOverrideGameDir();\n if (!overrideDir) return null;\n return path.join(overrideDir, GAME_BIN_PATH);\n}\nexport function getSteamGameDir() {\n let GAME_DIR = 'Brickadia';\n if (process.env.STEAM_GAME_DIR) GAME_DIR = process.env.STEAM_GAME_DIR;\n return process.env.STEAM_GAME_DIR ?? GAME_DIR;\n}\nexport function getSteamInstallDir() {\n let INSTALL_DIR = path.join(CONFIG_HOME, 'steam_installs');\n if (process.env.STEAM_INSTALLS_DIR)\n INSTALL_DIR = process.env.STEAM_INSTALLS_DIR;\n return INSTALL_DIR;\n}\n\n// path to auth files\nexport const CONFIG_AUTH_DIR = 'Auth';\nexport const CONFIG_SAVED_DIR = 'Saved';\n// files in Brickadia/Saved/Auth\nexport const BRICKADIA_AUTH_FILES = [\n 'OfflinePayload.bin',\n 'OfflineSignature.bin',\n 'SessionToken.bin',\n];\n\n// temporary install for generating auth files\nexport const TEMP_DIR_NAME = '.omegga-temp-data';\n\n// path to certain info folders\nexport const DATA_PATH = './data';\nexport const PLUGIN_PATH = './plugins';\n\n// plugin data\nexport const PLUGIN_FILE = './plugin.json';\n// post install file\nexport const PLUGIN_POSTINSTALL = './setup.sh';\n\n// databases\nexport const CHAT_STORE = 'chat.db';\nexport const PLAYER_STORE = 'players.db';\nexport const PLUGIN_STORE = 'plugins.db';\nexport const STATUS_STORE = 'status.db';\nexport const USER_STORE = 'users.db';\nexport const SERVER_STORE = 'store.db';\nexport const SESSION_STORE = 'session.db';\nexport const ACTIVE_WORLD_FILE = 'active_world';\n\n// website config\nexport const WEB_CERTS_DATA = 'web_certs.json';\nexport const WEB_SESSION_TOKEN = 'web_session_token';\n\n// how often server status is requested in a heartbeat\nexport const METRIC_HEARTBEAT_INTERVAL = 60 * 1000;\n// the number of empty server statuses before metric logging is paused\nexport const METRIC_EMPTIES_BEFORE_PAUSE = 3;\n\n// rexport as default\nexport default {\n PROJECT_NAME,\n CONFIG_HOME,\n DEFAULT_PORT,\n CONFIG_FILENAMES,\n BRICKADIA_INSTALLS,\n LOCAL_LAUNCHER,\n CONFIG_AUTH_DIR,\n CONFIG_SAVED_DIR,\n BRICKADIA_AUTH_FILES,\n TEMP_DIR_NAME,\n DATA_PATH,\n PLUGIN_PATH,\n PLUGIN_FILE,\n PLUGIN_POSTINSTALL,\n CHAT_STORE,\n PLAYER_STORE,\n PLUGIN_STORE,\n STATUS_STORE,\n USER_STORE,\n SERVER_STORE,\n SESSION_STORE,\n WEB_CERTS_DATA,\n WEB_SESSION_TOKEN,\n METRIC_HEARTBEAT_INTERVAL,\n METRIC_EMPTIES_BEFORE_PAUSE,\n STEAM_DIR,\n STEAMCMD_PATH,\n STEAM_BRICKADIA_PATH: GAME_BIN_PATH,\n GLOBAL_TOKEN,\n getOverrideGameDir,\n getOverrideGameBinary,\n getSteamGameDir,\n getSteamInstallDir,\n getAppId,\n};\n"],"names":[],"mappings":";;;;AAIO,MAAM,eAAe;AACrB,MAAM,cAAc,KAAK,KAAK,GAAG,QAAA,GAAW,aAAa,YAAY;AACrE,MAAM,eAAe,KAAK,KAAK,aAAa,mBAAmB;AAE/D,MAAM,eAAe;AAIrB,MAAM,mBAAmB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,qBAAqB,KAAK;AAAA,EACrC,GAAG,QAAA;AAAA,EACH;AACF;AAEO,MAAM,YAAY,KAAK,KAAK,aAAa,OAAO;AAChD,MAAM,gBAAgB,KAAK,KAAK,WAAW,aAAa;AACxD,MAAM,uBAAuB;AAC7B,SAAS,WAAW;AACzB,SAAO,QAAQ,IAAI,gBAAgB;AACrC;AACO,MAAM,gBAAgB;AACtB,MAAM,iBAAiB,KAAK;AAAA,EACjC;AAAA,EACA;AACF;AAEO,MAAM,qBAAqB,MAAM,QAAQ,IAAI;AAC7C,SAAS,wBAAwB;AACtC,QAAM,cAAc,mBAAA;AACpB,MAAI,CAAC,YAAa,QAAO;AACzB,SAAO,KAAK,KAAK,aAAa,aAAa;AAC7C;AACO,SAAS,kBAAkB;AAChC,MAAI,WAAW;AACf,MAAI,QAAQ,IAAI,eAAgB,YAAW,QAAQ,IAAI;AACvD,SAAO,QAAQ,IAAI,kBAAkB;AACvC;AACO,SAAS,qBAAqB;AACnC,MAAI,cAAc,KAAK,KAAK,aAAa,gBAAgB;AACzD,MAAI,QAAQ,IAAI;AACd,kBAAc,QAAQ,IAAI;AAC5B,SAAO;AACT;AAGO,MAAM,kBAAkB;AACxB,MAAM,mBAAmB;AAEzB,MAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AACF;AAGO,MAAM,gBAAgB;AAGtB,MAAM,YAAY;AAClB,MAAM,cAAc;AAGpB,MAAM,cAAc;AAEpB,MAAM,qBAAqB;AAG3B,MAAM,aAAa;AACnB,MAAM,eAAe;AACrB,MAAM,eAAe;AACrB,MAAM,eAAe;AACrB,MAAM,aAAa;AACnB,MAAM,eAAe;AACrB,MAAM,gBAAgB;AACtB,MAAM,oBAAoB;AAG1B,MAAM,iBAAiB;AACvB,MAAM,oBAAoB;AAG1B,MAAM,4BAA4B,KAAK;AAEvC,MAAM,8BAA8B;AAG3C,MAAA,OAAe;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/updater/steam.js
CHANGED
|
@@ -1,139 +1,129 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
}
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const logger = require("../logger.js");
|
|
4
|
+
const softconfig = require("../softconfig.js");
|
|
5
|
+
const node_child_process = require("node:child_process");
|
|
6
|
+
const fs = require("node:fs");
|
|
7
|
+
const path = require("node:path");
|
|
8
|
+
const acfParser = require("steam-acf2json");
|
|
23
9
|
function steamcmdDownloadSelf() {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
10
|
+
node_child_process.execSync(path.join(__dirname, "../../tools/install_steamcmd.sh"), {
|
|
11
|
+
stdio: "inherit"
|
|
12
|
+
});
|
|
27
13
|
}
|
|
28
|
-
function steamcmdDownloadGame({
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
14
|
+
function steamcmdDownloadGame({
|
|
15
|
+
steambeta,
|
|
16
|
+
steambetaPassword
|
|
17
|
+
} = {}) {
|
|
18
|
+
let steamLogin = "anonymous";
|
|
19
|
+
if (process.env.STEAM_USERNAME && process.env.STEAM_PASSWORD) {
|
|
20
|
+
logger.default.verbose("Using provided Steam credentials for download.");
|
|
21
|
+
steamLogin = `"${process.env.STEAM_USERNAME}" "${process.env.STEAM_PASSWORD}"`;
|
|
22
|
+
}
|
|
23
|
+
const installDir = softconfig.getSteamInstallDir();
|
|
24
|
+
const appId = softconfig.getAppId();
|
|
25
|
+
logger.default.verbose("Using with steam install dir:", installDir.yellow);
|
|
26
|
+
logger.default.verbose("Using with app ID:", appId.yellow);
|
|
27
|
+
const args = [
|
|
28
|
+
`+force_install_dir ${path.join(installDir, steambeta ?? "main")}`,
|
|
29
|
+
`+login ${steamLogin}`,
|
|
30
|
+
`+app_update ${appId}`,
|
|
31
|
+
steambeta ? `-beta ${steambeta}` : null,
|
|
32
|
+
steambeta && steambetaPassword ? `-betapassword ${steambetaPassword}` : null,
|
|
33
|
+
"+quit"
|
|
34
|
+
].filter(Boolean);
|
|
35
|
+
node_child_process.execSync(`${softconfig.STEAMCMD_PATH} ${args.join(" ")}`, { stdio: "inherit" });
|
|
40
36
|
}
|
|
41
37
|
async function fetchSteamInfo() {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
38
|
+
const appId = softconfig.getAppId();
|
|
39
|
+
const res = await fetch("https://api.steamcmd.net/v1/info/" + appId);
|
|
40
|
+
const json = await res.json();
|
|
41
|
+
return json;
|
|
46
42
|
}
|
|
47
43
|
function getSteamAcf(steambeta) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
44
|
+
const appId = softconfig.getAppId();
|
|
45
|
+
const installDir = path.join(softconfig.getSteamInstallDir(), steambeta ?? "main");
|
|
46
|
+
const acfPath = path.join(
|
|
47
|
+
installDir,
|
|
48
|
+
"steamapps",
|
|
49
|
+
`appmanifest_${appId}.acf`
|
|
50
|
+
);
|
|
51
|
+
if (!fs.existsSync(acfPath)) {
|
|
52
|
+
logger.default.verbose(`File not found: ${acfPath}`);
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
const plaintext = fs.readFileSync(acfPath, "utf-8");
|
|
57
|
+
const json = acfParser.decode(plaintext);
|
|
58
|
+
return json;
|
|
59
|
+
} catch (err) {
|
|
60
|
+
logger.default.error(`Error parsing ACF file ${acfPath}:`, err);
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
64
63
|
}
|
|
65
64
|
function getSteamDepot(info, branch) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
return {
|
|
75
|
-
buildId: depot.buildid,
|
|
76
|
-
timeUpdated: Number(depot.timeupdated),
|
|
77
|
-
};
|
|
65
|
+
const appId = softconfig.getAppId();
|
|
66
|
+
const depot = info.data[appId]?.depots?.branches?.[!branch || branch === "main" ? "public" : branch];
|
|
67
|
+
if (!depot || typeof depot !== "object" || !("buildid" in depot) || !("timeupdated" in depot))
|
|
68
|
+
return null;
|
|
69
|
+
return {
|
|
70
|
+
buildId: depot.buildid,
|
|
71
|
+
timeUpdated: Number(depot.timeupdated)
|
|
72
|
+
};
|
|
78
73
|
}
|
|
79
74
|
function getSteamAcfDepot(acf) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return {
|
|
89
|
-
buildId: appState.buildid,
|
|
90
|
-
timeUpdated: Number(appState.lastupdated),
|
|
91
|
-
};
|
|
75
|
+
const appId = softconfig.getAppId();
|
|
76
|
+
const appState = acf.AppState;
|
|
77
|
+
if (!appState || typeof appState !== "object" || appState.appid !== appId || !("buildid" in appState) || !("lastupdated" in appState))
|
|
78
|
+
return null;
|
|
79
|
+
return {
|
|
80
|
+
buildId: appState.buildid,
|
|
81
|
+
timeUpdated: Number(appState.lastupdated)
|
|
82
|
+
};
|
|
92
83
|
}
|
|
93
84
|
function getLocalSteamDepot(steambeta) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
return null;
|
|
100
|
-
return depot;
|
|
85
|
+
const acf = getSteamAcf(steambeta);
|
|
86
|
+
if (!acf) return null;
|
|
87
|
+
const depot = getSteamAcfDepot(acf);
|
|
88
|
+
if (!depot) return null;
|
|
89
|
+
return depot;
|
|
101
90
|
}
|
|
102
91
|
async function getRemoteSteamDepot(steambeta) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return depot;
|
|
92
|
+
const info = await fetchSteamInfo();
|
|
93
|
+
if (!info || !info.data) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
const depot = getSteamDepot(info, steambeta);
|
|
97
|
+
if (!depot) return null;
|
|
98
|
+
return depot;
|
|
111
99
|
}
|
|
112
100
|
let lastUpdateCheck = 0;
|
|
113
101
|
let lastUpdateAvailable = 0;
|
|
114
102
|
let lastUpdateResult = false;
|
|
115
103
|
const getLastSteamUpdateCheck = () => ({
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
104
|
+
attempt: lastUpdateCheck,
|
|
105
|
+
available: lastUpdateAvailable,
|
|
106
|
+
result: lastUpdateResult
|
|
119
107
|
});
|
|
120
|
-
exports.getLastSteamUpdateCheck = getLastSteamUpdateCheck;
|
|
121
108
|
const clearLastSteamUpdateCheck = () => {
|
|
122
|
-
|
|
109
|
+
lastUpdateResult = false;
|
|
123
110
|
};
|
|
124
|
-
exports.clearLastSteamUpdateCheck = clearLastSteamUpdateCheck;
|
|
125
111
|
async function hasSteamUpdate(steambeta) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
localDepot.timeUpdated < remoteDepot.timeUpdated;
|
|
136
|
-
lastUpdateResult = res;
|
|
137
|
-
return res;
|
|
112
|
+
lastUpdateCheck = Date.now();
|
|
113
|
+
const localDepot = getLocalSteamDepot(steambeta);
|
|
114
|
+
if (!localDepot) return false;
|
|
115
|
+
const remoteDepot = await getRemoteSteamDepot(steambeta);
|
|
116
|
+
if (!remoteDepot) return false;
|
|
117
|
+
lastUpdateAvailable = Date.now();
|
|
118
|
+
const res = localDepot.buildId !== remoteDepot.buildId || localDepot.timeUpdated < remoteDepot.timeUpdated;
|
|
119
|
+
lastUpdateResult = res;
|
|
120
|
+
return res;
|
|
138
121
|
}
|
|
139
|
-
|
|
122
|
+
exports.clearLastSteamUpdateCheck = clearLastSteamUpdateCheck;
|
|
123
|
+
exports.getLastSteamUpdateCheck = getLastSteamUpdateCheck;
|
|
124
|
+
exports.getLocalSteamDepot = getLocalSteamDepot;
|
|
125
|
+
exports.getRemoteSteamDepot = getRemoteSteamDepot;
|
|
126
|
+
exports.hasSteamUpdate = hasSteamUpdate;
|
|
127
|
+
exports.steamcmdDownloadGame = steamcmdDownloadGame;
|
|
128
|
+
exports.steamcmdDownloadSelf = steamcmdDownloadSelf;
|
|
129
|
+
//# sourceMappingURL=steam.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steam.js","
|
|
1
|
+
{"version":3,"file":"steam.js","sources":["../../src/updater/steam.ts"],"sourcesContent":["import Logger from '@/logger';\nimport { getAppId, getSteamInstallDir, STEAMCMD_PATH } from '@/softconfig';\nimport { execSync } from 'node:child_process';\nimport { existsSync, readFileSync } from 'node:fs';\nimport path from 'node:path';\nimport acfParser from 'steam-acf2json';\n\nexport function steamcmdDownloadSelf() {\n execSync(path.join(__dirname, '../../tools/install_steamcmd.sh'), {\n stdio: 'inherit',\n });\n}\n\nexport function steamcmdDownloadGame({\n steambeta,\n steambetaPassword,\n}: {\n steambeta?: string;\n steambetaPassword?: string;\n} = {}) {\n let steamLogin = 'anonymous';\n if (process.env.STEAM_USERNAME && process.env.STEAM_PASSWORD) {\n Logger.verbose('Using provided Steam credentials for download.');\n steamLogin = `\"${process.env.STEAM_USERNAME}\" \"${process.env.STEAM_PASSWORD}\"`;\n }\n const installDir = getSteamInstallDir();\n const appId = getAppId();\n\n Logger.verbose('Using with steam install dir:', installDir.yellow);\n Logger.verbose('Using with app ID:', appId.yellow);\n\n const args = [\n `+force_install_dir ${path.join(installDir, steambeta ?? 'main')}`,\n `+login ${steamLogin}`,\n `+app_update ${appId}`,\n steambeta ? `-beta ${steambeta}` : null,\n steambeta && steambetaPassword\n ? `-betapassword ${steambetaPassword}`\n : null,\n '+quit',\n ].filter(Boolean);\n\n execSync(`${STEAMCMD_PATH} ${args.join(' ')}`, { stdio: 'inherit' });\n}\n\nexport type SteamInfo = {\n data: Record<\n string,\n {\n _change_number: number;\n _missing_token: boolean;\n _sha: string;\n _size: number;\n appid: number;\n common: unknown;\n config: unknown;\n depots: Record<\n string,\n {\n config: { oslist: 'linux' | 'windows' | 'macos' };\n }\n > & {\n branches: Record<\n string,\n {\n buildid: string;\n timeupdated: string;\n description?: string;\n }\n >;\n privatebranches: '1';\n };\n }\n >;\n status: 'success';\n};\n\nasync function fetchSteamInfo() {\n const appId = getAppId();\n const res = await fetch('https://api.steamcmd.net/v1/info/' + appId);\n const json = await res.json();\n return json as SteamInfo;\n}\n\nexport type SteamAcf = {\n AppState: {\n appid: string;\n buildid: string;\n lastupdated: string;\n };\n};\n\nfunction getSteamAcf(steambeta?: string) {\n const appId = getAppId();\n const installDir = path.join(getSteamInstallDir(), steambeta ?? 'main');\n const acfPath = path.join(\n installDir,\n 'steamapps',\n `appmanifest_${appId}.acf`,\n );\n if (!existsSync(acfPath)) {\n Logger.verbose(`File not found: ${acfPath}`);\n return null;\n }\n try {\n const plaintext = readFileSync(acfPath, 'utf-8');\n const json = acfParser.decode(plaintext);\n return json as SteamAcf;\n } catch (err) {\n Logger.error(`Error parsing ACF file ${acfPath}:`, err);\n return null;\n }\n}\n\nfunction getSteamDepot(info: SteamInfo, branch?: string) {\n const appId = getAppId();\n const depot =\n info.data[appId]?.depots?.branches?.[\n !branch || branch === 'main' ? 'public' : branch\n ];\n if (\n !depot ||\n typeof depot !== 'object' ||\n !('buildid' in depot) ||\n !('timeupdated' in depot)\n )\n return null;\n return {\n buildId: depot.buildid,\n timeUpdated: Number(depot.timeupdated),\n };\n}\n\nfunction getSteamAcfDepot(acf: SteamAcf) {\n const appId = getAppId();\n const appState = acf.AppState;\n if (\n !appState ||\n typeof appState !== 'object' ||\n appState.appid !== appId ||\n !('buildid' in appState) ||\n !('lastupdated' in appState)\n )\n return null;\n return {\n buildId: appState.buildid,\n timeUpdated: Number(appState.lastupdated),\n };\n}\n\nexport function getLocalSteamDepot(steambeta?: string) {\n const acf = getSteamAcf(steambeta);\n if (!acf) return null;\n const depot = getSteamAcfDepot(acf);\n if (!depot) return null;\n return depot;\n}\n\nexport async function getRemoteSteamDepot(steambeta?: string) {\n const info = await fetchSteamInfo();\n if (!info || !info.data) {\n return null;\n }\n const depot = getSteamDepot(info, steambeta);\n if (!depot) return null;\n return depot;\n}\n\nlet lastUpdateCheck = 0;\nlet lastUpdateAvailable = 0;\nlet lastUpdateResult = false;\n\nexport const getLastSteamUpdateCheck = () => ({\n attempt: lastUpdateCheck,\n available: lastUpdateAvailable,\n result: lastUpdateResult,\n});\n\nexport const clearLastSteamUpdateCheck = () => {\n lastUpdateResult = false;\n};\n\nexport async function hasSteamUpdate(steambeta?: string) {\n lastUpdateCheck = Date.now();\n const localDepot = getLocalSteamDepot(steambeta);\n if (!localDepot) return false;\n\n const remoteDepot = await getRemoteSteamDepot(steambeta);\n if (!remoteDepot) return false;\n\n lastUpdateAvailable = Date.now();\n const res =\n localDepot.buildId !== remoteDepot.buildId ||\n localDepot.timeUpdated < remoteDepot.timeUpdated;\n lastUpdateResult = res;\n\n return res;\n}\n"],"names":["execSync","Logger","getSteamInstallDir","getAppId","STEAMCMD_PATH","existsSync","readFileSync"],"mappings":"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"}
|