From 7f80723ee71b9a1c006fb324866ed3c00d83e74d Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Sat, 14 Nov 2026 11:16:49 -0600 Subject: [PATCH] add zip vfs --- packages/core/src/blitzkit/vfs/client.ts | 18 ++++++++++++++++++ packages/scripts/src/downloadClient/index.ts | 5 ++--- packages/scripts/src/vfs/vfs.ts | 5 ++--- packages/website/src/core/blitzkit/vfs.ts | 5 ++--- 4 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 packages/core/src/blitzkit/vfs/client.ts diff --git a/packages/core/src/blitzkit/vfs/client.ts b/packages/core/src/blitzkit/vfs/client.ts new file mode 100644 index 000000000..663e2c32d --- /dev/null +++ b/packages/core/src/blitzkit/vfs/client.ts @@ -0,0 +1,18 @@ +import { assertSecret } from "@blitzkit/core"; +import { LocalVFS } from "./local"; +import { MixedVFS } from "./mixed"; +import { ZipVFS } from "./zip"; + +// zip reads straight from the remote archive; CLIENT_DIR stays first so SmartDLC patches override it +export function createClientVFS() { + const local = new LocalVFS(assertSecret(import.meta.env.CLIENT_DIR)); + + if (import.meta.env.CLIENT_PROVIDER === "zip") { + return new MixedVFS([ + local, + new ZipVFS(assertSecret(import.meta.env.CLIENT_SOURCE)), + ]); + } + + return local; +} diff --git a/packages/scripts/src/downloadClient/index.ts b/packages/scripts/src/downloadClient/index.ts index 44b5531bd..464d54b58 100644 --- a/packages/scripts/src/downloadClient/index.ts +++ b/packages/scripts/src/downloadClient/index.ts @@ -3,7 +3,6 @@ import { mkdir, rm } from "node:fs/promises"; import { downloadSteamClient } from "./steam"; import { downloadWGCClient } from "./wgc"; import { downloadWGPKGClient } from "./wgpkg"; -import { downloadZipClient } from "./zip"; export const DEPOT_DOWNLOADER_RETRY_TIME = 30_000; @@ -20,9 +19,9 @@ switch (provider) { await downloadSteamClient(); break; - // from zip, usually has a root directory for opentest + // from zip, read remotely by ZipVFS at build time; nothing to download case "zip": - await downloadZipClient(); + console.log("Zip client provider; skipping download in favor of ZipVFS"); break; // effectively the same as wgc, but direct for preview diff --git a/packages/scripts/src/vfs/vfs.ts b/packages/scripts/src/vfs/vfs.ts index a94b39bae..cf3fe8c5f 100644 --- a/packages/scripts/src/vfs/vfs.ts +++ b/packages/scripts/src/vfs/vfs.ts @@ -1,4 +1,3 @@ -import { assertSecret } from "@blitzkit/core"; -import { LocalVFS } from "@blitzkit/core/src/blitzkit/vfs/local"; +import { createClientVFS } from "@blitzkit/core/src/blitzkit/vfs/client"; -export const vfs = new LocalVFS(assertSecret(import.meta.env.CLIENT_DIR)); +export const vfs = createClientVFS(); diff --git a/packages/website/src/core/blitzkit/vfs.ts b/packages/website/src/core/blitzkit/vfs.ts index a94b39bae..cf3fe8c5f 100644 --- a/packages/website/src/core/blitzkit/vfs.ts +++ b/packages/website/src/core/blitzkit/vfs.ts @@ -1,4 +1,3 @@ -import { assertSecret } from "@blitzkit/core"; -import { LocalVFS } from "@blitzkit/core/src/blitzkit/vfs/local"; +import { createClientVFS } from "@blitzkit/core/src/blitzkit/vfs/client"; -export const vfs = new LocalVFS(assertSecret(import.meta.env.CLIENT_DIR)); +export const vfs = createClientVFS();