From 570da82434e37d0c8ecd2772f61e9896da89adb0 Mon Sep 17 00:00:00 2001 From: evanpelle Date: Sat, 9 May 2026 17:59:17 -0700 Subject: [PATCH] server refactor --- .github/workflows/deploy.yml | 2 + deploy.sh | 6 + index.html | 10 +- package-lock.json | 16 + package.json | 2 +- src/client/AccountModal.ts | 5 +- src/client/ClientEnv.ts | 112 ++ src/client/ClientGameRunner.ts | 6 +- src/client/GameModeSelector.ts | 6 +- src/client/HostLobbyModal.ts | 8 +- src/client/JoinLobbyModal.ts | 11 +- src/client/LobbySocket.ts | 5 +- src/client/LocalServer.ts | 6 +- src/client/Main.ts | 22 +- src/client/Matchmaking.ts | 37 +- src/client/Transport.ts | 5 +- src/client/components/CopyButton.ts | 5 +- src/client/graphics/AnimatedSpriteLoader.ts | 2 +- src/client/graphics/SpriteLoader.ts | 2 +- src/client/graphics/fx/SpriteFx.ts | 2 +- src/client/graphics/layers/FxLayer.ts | 2 +- src/client/graphics/layers/MultiTabModal.ts | 3 +- src/client/graphics/layers/NameLayer.ts | 3 +- .../graphics/layers/StructureDrawingUtils.ts | 2 +- .../graphics/layers/StructureIconsLayer.ts | 2 +- src/client/graphics/layers/StructureLayer.ts | 2 +- src/client/graphics/layers/TerrainLayer.ts | 3 +- src/client/graphics/layers/TerritoryLayer.ts | 2 +- src/client/graphics/layers/UILayer.ts | 2 +- src/client/graphics/layers/UnitLayer.ts | 2 +- src/core/AssetUrls.ts | 19 +- src/core/GameRunner.ts | 4 +- src/core/configuration/Config.ts | 1074 ++++++++++++++--- src/core/configuration/ConfigLoader.ts | 119 -- src/core/configuration/DefaultConfig.ts | 1014 ---------------- src/core/configuration/DevConfig.ts | 55 - src/core/configuration/Env.ts | 12 + src/core/configuration/PastelTheme.ts | 2 +- src/core/configuration/PreprodConfig.ts | 26 - src/core/configuration/ProdConfig.ts | 17 - src/core/configuration/Theme.ts | 31 + src/core/worker/Worker.worker.ts | 2 +- src/server/Archive.ts | 18 +- src/server/GameManager.ts | 7 +- src/server/GamePreviewRoute.ts | 20 +- src/server/GameServer.ts | 8 +- src/server/Logger.ts | 10 +- src/server/MapPlaylist.ts | 2 +- src/server/Master.ts | 17 +- src/server/MasterLobbyService.ts | 14 +- src/server/OtelResource.ts | 6 +- src/server/RenderHtml.ts | 4 + src/server/ServerEnv.ts | 146 +++ src/server/Turnstile.ts | 7 +- src/server/Worker.ts | 44 +- src/server/WorkerMetrics.ts | 11 +- src/server/jwt.ts | 17 +- tests/client/clan/ClanModalTestUtils.ts | 2 +- tests/core/configuration/ConfigLoader.test.ts | 47 +- tests/core/game/TrainStation.test.ts | 15 +- tests/core/pathfinding/_fixtures.ts | 9 +- tests/pathfinding/utils.ts | 2 - tests/server/Archive.test.ts | 6 +- tests/server/GameLifecycle.test.ts | 5 +- tests/server/KickPlayerAuthorization.test.ts | 12 +- tests/server/MasterLobbyServiceHealth.test.ts | 7 +- tests/util/Setup.ts | 10 +- tests/util/TestConfig.ts | 8 +- tests/util/TestServerConfig.ts | 91 -- vite.config.ts | 6 + 70 files changed, 1424 insertions(+), 1795 deletions(-) create mode 100644 src/client/ClientEnv.ts delete mode 100644 src/core/configuration/ConfigLoader.ts delete mode 100644 src/core/configuration/DefaultConfig.ts delete mode 100644 src/core/configuration/DevConfig.ts delete mode 100644 src/core/configuration/PreprodConfig.ts delete mode 100644 src/core/configuration/ProdConfig.ts create mode 100644 src/core/configuration/Theme.ts create mode 100644 src/server/ServerEnv.ts delete mode 100644 tests/util/TestServerConfig.ts diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index f1284dcbf..cf3f6e556 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -139,6 +139,8 @@ jobs: OTEL_EXPORTER_OTLP_ENDPOINT: ${{ secrets.OTEL_EXPORTER_OTLP_ENDPOINT }} OTEL_AUTH_HEADER: ${{ secrets.OTEL_AUTH_HEADER }} API_KEY: ${{ secrets.API_KEY }} + NUM_WORKERS: ${{ vars.NUM_WORKERS }} + TURNSTILE_SITE_KEY: ${{ vars.TURNSTILE_SITE_KEY }} SERVER_HOST_MASTERS: ${{ secrets.SERVER_HOST_MASTERS }} SERVER_HOST_FALK2: ${{ secrets.SERVER_HOST_FALK2 }} SERVER_HOST_STAGING: ${{ secrets.SERVER_HOST_STAGING }} diff --git a/deploy.sh b/deploy.sh index 53c90df21..f327a57a8 100755 --- a/deploy.sh +++ b/deploy.sh @@ -66,6 +66,9 @@ else GHCR_IMAGE="${GHCR_USERNAME}/${GHCR_REPO}:${VERSION_TAG}" fi +# jwtAudience always matched DOMAIN in the old per-env configs. +JWT_AUDIENCE="$DOMAIN" + if [ "$HOST" == "staging" ]; then print_header "DEPLOYING TO STAGING HOST" SERVER_HOST=$SERVER_HOST_STAGING @@ -138,6 +141,9 @@ API_KEY=$API_KEY DOMAIN=$DOMAIN SUBDOMAIN=$SUBDOMAIN CDN_BASE=$CDN_BASE +JWT_AUDIENCE=$JWT_AUDIENCE +NUM_WORKERS=$NUM_WORKERS +TURNSTILE_SITE_KEY=$TURNSTILE_SITE_KEY OTEL_EXPORTER_OTLP_ENDPOINT=$OTEL_EXPORTER_OTLP_ENDPOINT OTEL_AUTH_HEADER=$OTEL_AUTH_HEADER EOL diff --git a/index.html b/index.html index b196749fd..aca2853cd 100644 --- a/index.html +++ b/index.html @@ -60,11 +60,15 @@