From d79e0ddb5d289c157f95f3157c2fc2a3cfa8bb7c Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 5 Oct 2026 11:24:01 -0500 Subject: [PATCH 1/3] caching for strings --- .../core/src/blitzkit/api/server/0_base.ts | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/packages/core/src/blitzkit/api/server/0_base.ts b/packages/core/src/blitzkit/api/server/0_base.ts index a41ec123d..d67af5898 100644 --- a/packages/core/src/blitzkit/api/server/0_base.ts +++ b/packages/core/src/blitzkit/api/server/0_base.ts @@ -25,8 +25,8 @@ import { VehicleDefinitionList, } from "@blitzkit/core"; import { AbstractVFS } from "@blitzkit/core/src/blitzkit/vfs/abstract"; -import { SUPPORTED_LOCALE_BLITZ_MAP } from "@blitzkit/i18n"; import locales from "@blitzkit/i18n/locales.json"; +import { SUPPORTED_LOCALE_BLITZ_MAP } from "@blitzkit/i18n/src/strings"; import { parse as parseYaml } from "yaml"; import { BlitzKitAPI } from "../base"; @@ -113,6 +113,9 @@ export abstract class ServerBlitzKitAPI0 extends BlitzKitAPI { } async init() { + const { existsSync } = await import("fs"); + const { readFile, writeFile, mkdir } = await import("fs/promises"); + console.log("Initializing virtual file system..."); await this.vfs.init(); @@ -155,31 +158,37 @@ export abstract class ServerBlitzKitAPI0 extends BlitzKitAPI { console.log("Fetching game localizations..."); - if (import.meta.env.DEV) { - locales.supported = [locales.supported[0]]; - } - - let fetchedLocalizations = 0; await Promise.all( locales.supported.map(async ({ locale }) => { + const root = "../../temp/strings"; + const cachePath = `${root}/${locale}.json`; + + if (existsSync(cachePath)) { + console.log(` Cache hit for ${locale}`); + + const content = await readFile(cachePath, "utf-8"); + this.stringsI18n[locale] = JSON.parse(content) as BlitzStrings; + + return; + } + + console.log(` Cache miss for ${locale} (this will take a while...)`); + const blitzLocale = SUPPORTED_LOCALE_BLITZ_MAP[locale]; - const cache = await fetch( + const networkStrings = (await fetch( `https://stufficons.wgcdn.co/localizations/${blitzLocale}.yaml`, ) .then((response) => response.text()) - .then((string) => parseYaml(string) as BlitzStrings); - const preInstalled = await this.vfs.yaml( + .then(parseYaml)) as BlitzStrings; + const localStrings = await this.vfs.yaml( `Data/Strings/${blitzLocale}.yaml`, ); + const combined = { ...networkStrings, ...localStrings }; - this.stringsI18n[locale] = { - ...cache, - ...preInstalled, - }; + await mkdir(root, { recursive: true }); + await writeFile(cachePath, JSON.stringify(combined)); - console.log( - `Fetched localizations for ${locale} (${++fetchedLocalizations}/${locales.supported.length})`, - ); + this.stringsI18n[locale] = combined; }), ); From c70fae81622c6e55593d425bc387b159fb41d387 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 5 Oct 2026 11:24:29 -0500 Subject: [PATCH 2/3] game strings --- packages/core/src/blitzkit/api/server/0_base.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/blitzkit/api/server/0_base.ts b/packages/core/src/blitzkit/api/server/0_base.ts index d67af5898..2efff35ec 100644 --- a/packages/core/src/blitzkit/api/server/0_base.ts +++ b/packages/core/src/blitzkit/api/server/0_base.ts @@ -160,7 +160,7 @@ export abstract class ServerBlitzKitAPI0 extends BlitzKitAPI { await Promise.all( locales.supported.map(async ({ locale }) => { - const root = "../../temp/strings"; + const root = "../../temp/game-strings"; const cachePath = `${root}/${locale}.json`; if (existsSync(cachePath)) { From 5ce927be4e8748861fa7b5c41a27963c7085501f Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Wed, 7 Oct 2026 10:14:44 -0500 Subject: [PATCH 3/3] force bun even with node installed --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 979a37799..3b4791010 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "license": "BlitzKit License", "private": true, "scripts": { - "dev": "cd packages/website && bun run dev", + "dev": "cd packages/website && bun --bun run dev", "build": "cd packages/website && bun run build", "discover-ids": "cd packages/scripts && bun run discover-ids", "build-protos": "cd packages/scripts && bun run build-protos",