mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-24 03:59:50 +02:00
dynamically import client api
This commit is contained in:
1 parent
8a3e57637d
commit
b060e65af5
5 files changed
+82
-111
No files matched your search
@@ -1,22 +0,0 @@
|
|||||||
import { fetchTankDefinitions } from '../blitzkit';
|
|
||||||
import type { BlitzStats } from './compositeStats/constants';
|
|
||||||
|
|
||||||
export async function getTierWeights(
|
|
||||||
stats: Record<number, BlitzStats>,
|
|
||||||
order: number[] = Object.keys(stats).map(parseInt),
|
|
||||||
) {
|
|
||||||
const tankDefinitions = await fetchTankDefinitions();
|
|
||||||
const tierWeights: TierWeightsRecord = {};
|
|
||||||
|
|
||||||
order.forEach((id) => {
|
|
||||||
const entry = tankDefinitions.tanks[id];
|
|
||||||
|
|
||||||
if (!entry) return;
|
|
||||||
if (!tierWeights[entry.tier]) tierWeights[entry.tier] = 0;
|
|
||||||
|
|
||||||
tierWeights[entry.tier]! += stats[id].battles;
|
|
||||||
});
|
|
||||||
|
|
||||||
return tierWeights;
|
|
||||||
}
|
|
||||||
export type TierWeightsRecord = Partial<Record<number, number>>;
|
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
export * from './calculateWN8';
|
export * from "./calculateWN8";
|
||||||
export * from './compositeStats';
|
export * from "./compositeStats";
|
||||||
export * from './deltaBkrlBlitzStats';
|
export * from "./deltaBkrlBlitzStats";
|
||||||
export * from './deltaTankStats';
|
export * from "./deltaTankStats";
|
||||||
export * from './getBkniPercentile';
|
export * from "./getBkniPercentile";
|
||||||
export * from './getTierWeights';
|
export * from "./getWN8Percentile";
|
||||||
export * from './getWN8Percentile';
|
export * from "./percentiles";
|
||||||
export * from './percentiles';
|
export * from "./sumAllStats";
|
||||||
export * from './sumAllStats';
|
|
||||||
@@ -5,7 +5,6 @@ import { parse as parsePath } from "path";
|
|||||||
import ProgressBar from "progress";
|
import ProgressBar from "progress";
|
||||||
import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
|
import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
|
||||||
import { PATCHES_ROOT, vfs } from "./buildAssets/constants";
|
import { PATCHES_ROOT, vfs } from "./buildAssets/constants";
|
||||||
import { writeDVPL } from "./core/blitz/writeDVPL";
|
|
||||||
|
|
||||||
const versionTextFile = await vfs.text(`Data/version.txt`);
|
const versionTextFile = await vfs.text(`Data/version.txt`);
|
||||||
const currentVersion = versionTextFile
|
const currentVersion = versionTextFile
|
||||||
@@ -24,83 +23,80 @@ while (true) {
|
|||||||
)}/dlc/s${currentVersion}_${patchIndex}.yaml`,
|
)}/dlc/s${currentVersion}_${patchIndex}.yaml`,
|
||||||
);
|
);
|
||||||
|
|
||||||
console.log(patchIndex, response.status)
|
console.log(patchIndex, response.status);
|
||||||
|
|
||||||
if (!response.ok) break;
|
if (!response.ok) break;
|
||||||
|
|
||||||
console.log(`Applying patch ${patchIndex}...`);
|
|
||||||
|
|
||||||
const data = parseYaml(await response.text());
|
console.log(`Applying patch ${patchIndex}...`);
|
||||||
const dvpm = await fetch(
|
|
||||||
`${assertSecret(import.meta.env.WOTB_DLC_CDN)}/dlc/${data.dx11}`,
|
const data = parseYaml(await response.text());
|
||||||
).then((response) => response.arrayBuffer());
|
const dvpm = await fetch(
|
||||||
const dvpd = await fetch(
|
`${assertSecret(import.meta.env.WOTB_DLC_CDN)}/dlc/${data.dx11}`,
|
||||||
`${assertSecret(import.meta.env.WOTB_DLC_CDN)}/dlc/${data.dx11.replace(
|
).then((response) => response.arrayBuffer());
|
||||||
".dvpm",
|
const dvpd = await fetch(
|
||||||
".dvpd",
|
`${assertSecret(import.meta.env.WOTB_DLC_CDN)}/dlc/${data.dx11.replace(
|
||||||
)}`,
|
".dvpm",
|
||||||
).then((response) => response.arrayBuffer());
|
".dvpd",
|
||||||
const files = await dvp(dvpm, dvpd);
|
)}`,
|
||||||
const bar = new ProgressBar(
|
).then((response) => response.arrayBuffer());
|
||||||
`Patching ${files.length} files :bar`,
|
const files = await dvp(dvpm, dvpd);
|
||||||
files.length,
|
const bar = new ProgressBar(
|
||||||
|
`Patching ${files.length} files :bar`,
|
||||||
|
files.length,
|
||||||
|
);
|
||||||
|
|
||||||
|
for (const { path, data } of files) {
|
||||||
|
console.log(`Patching "${path}"...`);
|
||||||
|
|
||||||
|
const { dir } = parsePath(path);
|
||||||
|
|
||||||
|
try {
|
||||||
|
await mkdir(`${PATCHES_ROOT}/Data/${dir}`, { recursive: true });
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(`Failed to make directory "${dir}"`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const buffer = Buffer.from(data);
|
||||||
|
|
||||||
|
await writeFile(`${PATCHES_ROOT}/Data/${path}`, new Uint8Array(buffer));
|
||||||
|
|
||||||
|
bar.tick();
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("patches done for patch");
|
||||||
|
|
||||||
|
if ("dynamicContentLocalizationsDir" in data) {
|
||||||
|
console.log(
|
||||||
|
`${assertSecret(import.meta.env.WOTB_DLC_CDN)}/dlc/${
|
||||||
|
data.dynamicContentLocalizationsDir
|
||||||
|
}/en.yaml`,
|
||||||
);
|
);
|
||||||
|
const localizationsResponse = await fetch(
|
||||||
|
`${assertSecret(import.meta.env.WOTB_DLC_CDN)}/dlc/${
|
||||||
|
data.dynamicContentLocalizationsDir
|
||||||
|
}/en.yaml`,
|
||||||
|
);
|
||||||
|
console.log("fetched");
|
||||||
|
const newStrings = parseYaml(await localizationsResponse.text());
|
||||||
|
console.log("got new strings");
|
||||||
|
const oldStrings =
|
||||||
|
await vfs.yaml<Record<string, string>>(`Data/Strings/en.yaml`);
|
||||||
|
console.log("got old strings");
|
||||||
|
const patchedStrings = { ...oldStrings, ...newStrings };
|
||||||
|
const patchedContent = stringifyYaml(patchedStrings);
|
||||||
|
console.log("stringified");
|
||||||
|
|
||||||
for (const { path, data } of files) {
|
await mkdir(`${PATCHES_ROOT}/Data/Strings`, { recursive: true });
|
||||||
console.log(`Patching "${path}"...`);
|
console.log("mkdir");
|
||||||
|
await writeFile(
|
||||||
|
`${PATCHES_ROOT}/Data/Strings/en.yaml`,
|
||||||
|
new Uint8Array(Buffer.from(patchedContent)),
|
||||||
|
);
|
||||||
|
console.log("file");
|
||||||
|
}
|
||||||
|
|
||||||
const { dir } = parsePath(path);
|
patchIndex++;
|
||||||
|
|
||||||
try {
|
|
||||||
await mkdir(`${PATCHES_ROOT}/Data/${dir}`, { recursive: true });
|
|
||||||
} catch (error) {
|
|
||||||
console.warn(`Failed to make directory "${dir}"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
const buffer = Buffer.from(data);
|
|
||||||
|
|
||||||
await writeFile(
|
|
||||||
`${PATCHES_ROOT}/Data/${path}`,
|
|
||||||
new Uint8Array(buffer),
|
|
||||||
);
|
|
||||||
|
|
||||||
bar.tick();
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('patches done for patch')
|
|
||||||
|
|
||||||
if ("dynamicContentLocalizationsDir" in data) {
|
|
||||||
console.log(
|
|
||||||
`${assertSecret(import.meta.env.WOTB_DLC_CDN)}/dlc/${
|
|
||||||
data.dynamicContentLocalizationsDir
|
|
||||||
}/en.yaml`,
|
|
||||||
);
|
|
||||||
const localizationsResponse = await fetch(
|
|
||||||
`${assertSecret(import.meta.env.WOTB_DLC_CDN)}/dlc/${
|
|
||||||
data.dynamicContentLocalizationsDir
|
|
||||||
}/en.yaml`,
|
|
||||||
);
|
|
||||||
console.log('fetched')
|
|
||||||
const newStrings = parseYaml(await localizationsResponse.text());
|
|
||||||
console.log('got new strings')
|
|
||||||
const oldStrings =
|
|
||||||
await vfs.yaml<Record<string, string>>(`Data/Strings/en.yaml`);
|
|
||||||
console.log('got old strings')
|
|
||||||
const patchedStrings = { ...oldStrings, ...newStrings };
|
|
||||||
const patchedContent = stringifyYaml(patchedStrings);
|
|
||||||
console.log('stringified')
|
|
||||||
|
|
||||||
await mkdir(`${PATCHES_ROOT}/Data/Strings`, { recursive: true });
|
|
||||||
console.log('mkdir')
|
|
||||||
await writeFile(
|
|
||||||
`${PATCHES_ROOT}/Data/Strings/en.yaml`,
|
|
||||||
new Uint8Array((Buffer.from(patchedContent))),
|
|
||||||
);
|
|
||||||
console.log('file')
|
|
||||||
}
|
|
||||||
|
|
||||||
patchIndex++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vfs.dispose()
|
vfs.dispose();
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { asset, TankType, type TankDefinition } from "@blitzkit/core";
|
import { TankType, type TankDefinition } from "@blitzkit/core";
|
||||||
import { Flex, Text, type TextProps } from "@radix-ui/themes";
|
import { Flex, Text, type TextProps } from "@radix-ui/themes";
|
||||||
import { uniq } from "lodash-es";
|
import { uniq } from "lodash-es";
|
||||||
import { forwardRef, type ReactNode } from "react";
|
import { forwardRef, type ReactNode } from "react";
|
||||||
@@ -60,7 +60,7 @@ export const TankCard = forwardRef<HTMLSpanElement, TankCardProps>(
|
|||||||
className="tank-search-card"
|
className="tank-search-card"
|
||||||
data-provide-link={provideLink}
|
data-provide-link={provideLink}
|
||||||
style={{
|
style={{
|
||||||
backgroundImage: `url(${asset(`flags/scratched/${tank.nation}.webp`)})`,
|
backgroundImage: `url(/api/flags/scratched/${tank.nation}.webp)`,
|
||||||
...style,
|
...style,
|
||||||
}}
|
}}
|
||||||
{...props}
|
{...props}
|
||||||
@@ -76,7 +76,7 @@ export const TankCard = forwardRef<HTMLSpanElement, TankCardProps>(
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
alt={unwrap(tank.name!)}
|
alt={unwrap(tank.name!)}
|
||||||
src={asset(`icons/tanks/big/${tank.id}.webp`)}
|
src={`/api/tanks/${tank.id}/icons/big.webp`}
|
||||||
className="image"
|
className="image"
|
||||||
draggable={false}
|
draggable={false}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -1,15 +1,13 @@
|
|||||||
import {
|
import { type BlitzKitAPI } from "@blitzkit/core";
|
||||||
ClientBlitzKitAPI,
|
|
||||||
ServerBlitzKitAPI,
|
|
||||||
type BlitzKitAPI,
|
|
||||||
} from "@blitzkit/core";
|
|
||||||
import { vfs } from "./vfs";
|
import { vfs } from "./vfs";
|
||||||
|
|
||||||
let _api: BlitzKitAPI;
|
let _api: BlitzKitAPI;
|
||||||
|
|
||||||
if (import.meta.env.SSR) {
|
if (import.meta.env.SSR) {
|
||||||
|
const { ServerBlitzKitAPI } = await import("@blitzkit/core");
|
||||||
_api = await new ServerBlitzKitAPI(vfs).init();
|
_api = await new ServerBlitzKitAPI(vfs).init();
|
||||||
} else {
|
} else {
|
||||||
|
const { ClientBlitzKitAPI } = await import("@blitzkit/core");
|
||||||
_api = new ClientBlitzKitAPI();
|
_api = new ClientBlitzKitAPI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user