api strings

This commit is contained in:
tresabhi committed 2026-09-22 16:38:30 -05:00
1 parent 99317c2075
commit 5f24887535
23 files changed
+132 -118

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
export async function fetchJSON<Type>(url: string) {
const response = await fetch(url);
const json = await response.json();
return json as Type;
}
@@ -1,4 +1,4 @@
import type { MessageFns } from '../../../protos/src/blitzkit';
import type { MessageFns } from "@blitzkit/protos/src/blitzkit";
export async function fetchPB<Type>(url: string, message: MessageFns<Type>) {
const response = await fetch(url);
File renamed without changes.
@@ -10,9 +10,10 @@ import {
SkillDefinitions,
TankDefinitions,
} from "@blitzkit/core";
import { Strings } from "@blitzkit/i18n";
import { BlitzScripts } from "../../types/blitzScripts";
export abstract class BlitzKitAPI {
export abstract class AbstractBlitzKitAPI {
abstract skills(): Promise<SkillDefinitions>;
abstract provisions(): Promise<ProvisionDefinitions>;
abstract consumables(): Promise<ConsumableDefinitions>;
@@ -25,6 +26,8 @@ export abstract class BlitzKitAPI {
abstract gallery(): Promise<Gallery>;
abstract scripts(): Promise<BlitzScripts>;
abstract strings(locale: string): Promise<Strings>;
async tank(id: number) {
const tanks = await this.tanks();
return tanks.tanks[id];
+11 -7
View File
@@ -1,4 +1,5 @@
import { alias } from "@blitzkit/core";
import { BlitzKitStrings } from "@blitzkit/i18n";
import {
CamouflageDefinitions,
ConsumableDefinitions,
@@ -11,11 +12,12 @@ import {
SkillDefinitions,
TankDefinitions,
} from "@blitzkit/protos";
import { fetchPB } from "../../protobuf";
import { fetchPB } from "../../api";
import { fetchJSON } from "../../api/fetchJSON";
import { BlitzScripts } from "../../types/blitzScripts";
import { BlitzKitAPI } from "./base";
import { AbstractBlitzKitAPI } from "./abstract";
export class ClientBlitzKitAPI extends BlitzKitAPI {
export class ClientBlitzKitAPI extends AbstractBlitzKitAPI {
game() {
return fetchPB(alias("api", "/definitions/game.pb"), GameDefinitions);
}
@@ -68,9 +70,11 @@ export class ClientBlitzKitAPI extends BlitzKitAPI {
return fetchPB(alias("api", "/definitions/maps.pb"), MapDefinitions);
}
async scripts() {
const response = await fetch(alias("api", "/definitions/scripts.json"));
const json = await response.json();
return json as BlitzScripts;
scripts() {
return fetchJSON<BlitzScripts>(alias("api", "/definitions/scripts.json"));
}
strings(locale: string) {
return fetchJSON<BlitzKitStrings>(alias("api", `/strings/${locale}.json`));
}
}
+2 -2
View File
@@ -1,7 +1,7 @@
import { AbstractVFS, BlitzKitAPI } from "@blitzkit/core";
import { AbstractBlitzKitAPI, AbstractVFS } from "@blitzkit/core";
export async function createDynamicAPI(vfs: () => Promise<AbstractVFS>) {
let _api: BlitzKitAPI;
let _api: AbstractBlitzKitAPI;
if (import.meta.env.SSR) {
const { ServerBlitzKitAPI } = await import(
+1 -1
View File
@@ -1,4 +1,4 @@
export * from "./base";
export * from "./abstract";
export * from "./client";
export * from "./dynamic";
export * from "./server";
@@ -25,13 +25,12 @@ 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 type { extname, parse } from "node:path";
import { parse as parseYaml } from "yaml";
import { BlitzKitAPI } from "../base";
import { AbstractBlitzKitAPI } from "../abstract";
export abstract class ServerBlitzKitAPI0 extends BlitzKitAPI {
export abstract class ServerBlitzKitAPI0 extends AbstractBlitzKitAPI {
protected vfs: AbstractVFS;
protected parsePath?: typeof parse;
protected extname?: typeof extname;
@@ -171,8 +170,8 @@ export abstract class ServerBlitzKitAPI0 extends BlitzKitAPI {
let fetchedLocalizations = 0;
await Promise.all(
locales.supported.map(async ({ locale }) => {
const blitzLocale = SUPPORTED_LOCALE_BLITZ_MAP[locale];
locales.supported.map(async (locale) => {
const blitzLocale = locale.variant_blitz_cdn ?? locale.locale;
const cache = await fetch(
`https://stufficons.wgcdn.co/localizations/${blitzLocale}.yaml`,
)
@@ -182,7 +181,7 @@ export abstract class ServerBlitzKitAPI0 extends BlitzKitAPI {
`Data/Strings/${blitzLocale}.yaml`,
);
this.stringsI18n[locale] = {
this.stringsI18n[locale.locale] = {
...cache,
...preInstalled,
};
@@ -1,9 +1,11 @@
import { ConsumablesCommon, OptionalDevices } from "../../../types";
import { BlitzScripts } from "../../../types/blitzScripts";
import { AbstractVFS } from "../../vfs";
import { Cache } from "./0_base";
import { ServerBlitzKitAPI10 } from "./10_avatars";
export abstract class ServerBlitzKitAPI11 extends ServerBlitzKitAPI10 {
@Cache()
async scripts() {
const scripts: BlitzScripts = {
consumables: {},
@@ -0,0 +1,25 @@
import { Strings } from "@blitzkit/i18n";
import locales from "@blitzkit/i18n/locales.json";
import { DeepPartial } from "@blitzkit/protos";
import { merge } from "lodash-es";
import { Cache } from "./0_base";
import { ServerBlitzKitAPI11 } from "./11_scripts";
const globbedStrings = import.meta.glob("../../../../../i18n/strings/*.json", {
import: "default",
});
export abstract class ServerBlitzKitAPI12 extends ServerBlitzKitAPI11 {
@Cache()
async strings(locale: string) {
const localized = (await globbedStrings[
`../../../../../i18n/strings/${locale}.json`
]()) as DeepPartial<Strings>;
const defaults = (await globbedStrings[
`../../../../../i18n/strings/${locales.default}.json`
]()) as Strings;
const strings = merge({}, defaults, localized);
return strings;
}
}
@@ -1,3 +1,3 @@
import { ServerBlitzKitAPI11 } from "./11_scripts";
import { ServerBlitzKitAPI12 } from "./12_strings";
export class ServerBlitzKitAPI extends ServerBlitzKitAPI11 {}
export class ServerBlitzKitAPI extends ServerBlitzKitAPI12 {}
@@ -1,6 +1,6 @@
import { staticAsset } from "@blitzkit/core";
import { fetchPB } from "../../protobuf";
import { AverageDefinitions } from "../../../../protos/src/blitzkit";
import { fetchPB } from "../../api";
export interface AverageDefinitionsManifest {
version: 1;
+1 -1
View File
@@ -1,6 +1,6 @@
import { staticAsset } from "@blitzkit/core";
import { fetchPB } from "../protobuf";
import { PopularTanks } from "../../../protos/src/blitzkit";
import { fetchPB } from "../api";
export function fetchPopularTanks() {
return fetchPB(staticAsset("definitions/popular-tanks.pb"), PopularTanks);
+1 -1
View File
@@ -1,6 +1,6 @@
import { staticAsset } from "@blitzkit/core";
import { fetchPB } from "../protobuf";
import { Reviews } from "../../../protos/src/blitzkit";
import { fetchPB } from "../api";
export function fetchReviews() {
return fetchPB(staticAsset("definitions/reviews.pb"), Reviews);
+2 -2
View File
@@ -1,10 +1,10 @@
export * from "../../protos/src/blitzkit";
export * from "./api";
export * from "./blitz";
export * from "./blitzkit";
export * from "./imgur";
export * from "./math";
export * from "./patreon";
export * from "./protobuf";
export * from "../../protos/src/blitzkit";
export * from "./statistics";
export * from "./streams";
export * from "./types";
-1
View File
@@ -1 +0,0 @@
export type PBMap<T> = T[keyof T] extends number ? T[keyof T] : never;