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();