diff --git a/packages/api/src/app/tank-voting/[id]/average/route.ts b/packages/api/src/app/tank-voting/[id]/average/route.ts index 65b7d66c1..007727718 100644 --- a/packages/api/src/app/tank-voting/[id]/average/route.ts +++ b/packages/api/src/app/tank-voting/[id]/average/route.ts @@ -1,8 +1,8 @@ import { BlitzkitResponse, BlitzkitResponseError, + fetchTankDefinitions, isValidBlitzId, - tankDefinitions, TankVotes, usersDatabase, } from '@blitzkit/core'; @@ -13,9 +13,9 @@ export async function GET( { params }: { params: { id: string } }, ) { const id = Number(params.id); - const awaitedTankDefinitions = await tankDefinitions; + const tankDefinitions = await fetchTankDefinitions(); - if (isNaN(id) || !awaitedTankDefinitions[id]) { + if (isNaN(id) || !tankDefinitions.tanks[id]) { return NextResponse.json({ status: 'error', error: 'INVALID_TANK_ID', diff --git a/packages/api/src/app/tank-voting/[id]/cast/route.ts b/packages/api/src/app/tank-voting/[id]/cast/route.ts index b364de448..b0f1bbc08 100644 --- a/packages/api/src/app/tank-voting/[id]/cast/route.ts +++ b/packages/api/src/app/tank-voting/[id]/cast/route.ts @@ -1,10 +1,10 @@ import { BlitzkitResponse, BlitzkitResponseError, + fetchTankDefinitions, isValidBlitzId, StarsInt, TANK_VOTE_CATEGORIES, - tankDefinitions, TankVoteCategory, usersDatabase, } from '@blitzkit/core'; @@ -15,9 +15,9 @@ export async function GET( { params }: { params: { id: string } }, ) { const tankId = Number(params.id); - const awaitedTankDefinitions = await tankDefinitions; + const tankDefinitions = await fetchTankDefinitions(); - if (isNaN(tankId) || !awaitedTankDefinitions[tankId]) { + if (isNaN(tankId) || !tankDefinitions.tanks[tankId]) { return NextResponse.json({ status: 'error', error: 'INVALID_TANK_ID', diff --git a/packages/core/src/blitz/constants.ts b/packages/core/src/blitz/constants.ts index 2df9f341c..2bac44fbd 100644 --- a/packages/core/src/blitz/constants.ts +++ b/packages/core/src/blitz/constants.ts @@ -1,12 +1,14 @@ +import { TankClass } from '../protos'; import { BlitzStats } from '../statistics'; export const TREE_TYPES = ['researchable', 'premium', 'collector'] as const; export const TANK_CLASSES = [ - 'lightTank', - 'mediumTank', - 'heavyTank', - 'AT-SPG', + TankClass.TANK_CLASS_LIGHT, + TankClass.TANK_CLASS_MEDIUM, + TankClass.TANK_CLASS_HEAVY, + TankClass.TANK_CLASS_TANK_DESTROYER, + TankClass.UNRECOGNIZED, ] as const; export const emptyAllStats: BlitzStats = { diff --git a/packages/core/src/blitzkit/averageDefinitions/index.ts b/packages/core/src/blitzkit/averageDefinitions/index.ts index d04e5c38e..61ddb2c57 100644 --- a/packages/core/src/blitzkit/averageDefinitions/index.ts +++ b/packages/core/src/blitzkit/averageDefinitions/index.ts @@ -1,5 +1,5 @@ +import { fetchPB } from '../../protobuf'; import { AverageDefinitions } from '../../protos'; -import { fetchPB } from '../../types'; import { asset } from '../asset'; export interface AverageDefinitionsManifest { diff --git a/packages/core/src/blitzkit/camouflageDefinitions.ts b/packages/core/src/blitzkit/camouflageDefinitions.ts index 0ef38bc5e..1a65d3ac9 100644 --- a/packages/core/src/blitzkit/camouflageDefinitions.ts +++ b/packages/core/src/blitzkit/camouflageDefinitions.ts @@ -1,5 +1,5 @@ +import { fetchPB } from '../protobuf'; import { CamouflageDefinitions } from '../protos'; -import { fetchPB } from '../types'; import { asset } from './asset'; export function fetchCamouflageDefinitions() { diff --git a/packages/core/src/blitzkit/consumableDefinitions.ts b/packages/core/src/blitzkit/consumableDefinitions.ts index fd972e1fa..077e2e3b3 100644 --- a/packages/core/src/blitzkit/consumableDefinitions.ts +++ b/packages/core/src/blitzkit/consumableDefinitions.ts @@ -1,5 +1,5 @@ +import { fetchPB } from '../protobuf'; import { ConsumableDefinitions } from '../protos'; -import { fetchPB } from '../types'; import { asset } from './asset'; export function fetchConsumableDefinitions() { diff --git a/packages/core/src/blitzkit/equipmentDefinitions.ts b/packages/core/src/blitzkit/equipmentDefinitions.ts index a012b0655..a42f5bced 100644 --- a/packages/core/src/blitzkit/equipmentDefinitions.ts +++ b/packages/core/src/blitzkit/equipmentDefinitions.ts @@ -1,5 +1,5 @@ +import { fetchPB } from '../protobuf'; import { EquipmentDefinitions } from '../protos'; -import { fetchPB } from '../types'; import { asset } from './asset'; export function fetchEquipmentDefinitions() { diff --git a/packages/core/src/blitzkit/gameDefinitions.ts b/packages/core/src/blitzkit/gameDefinitions.ts index 60f5905f2..d7573adb0 100644 --- a/packages/core/src/blitzkit/gameDefinitions.ts +++ b/packages/core/src/blitzkit/gameDefinitions.ts @@ -1,5 +1,5 @@ +import { fetchPB } from '../protobuf'; import { GameDefinitions } from '../protos'; -import { fetchPB } from '../types'; import { asset } from './asset'; export function fetchGameDefinitions() { diff --git a/packages/core/src/blitzkit/index.ts b/packages/core/src/blitzkit/index.ts index 97a291acb..2d952a384 100644 --- a/packages/core/src/blitzkit/index.ts +++ b/packages/core/src/blitzkit/index.ts @@ -13,6 +13,7 @@ export * from './degressiveStat'; // export * from './emblemURL'; export * from './equipmentDefinitions'; export * from './eventManager'; +export * from './resolveGun'; // export * from './flagUserActivity'; export * from './gameDefinitions'; // export * from './getArchivedLatestSeasonNumber'; @@ -40,7 +41,7 @@ export * from './tankIcon'; export * from './tankNames'; export * from './unionBoundingBox'; export * from './uniqueGuns'; -// export * from './unwrapBlitzkitResponse'; +export * from './unwrapBlitzkitResponse'; export * from './votes'; // export * from './withCORSProxy'; export * from './youtubers'; diff --git a/packages/core/src/blitzkit/mapDefinitions.ts b/packages/core/src/blitzkit/mapDefinitions.ts index ee3001384..50bf8525a 100644 --- a/packages/core/src/blitzkit/mapDefinitions.ts +++ b/packages/core/src/blitzkit/mapDefinitions.ts @@ -1,5 +1,5 @@ +import { fetchPB } from '../protobuf'; import { MapDefinitions } from '../protos'; -import { fetchPB } from '../types'; import { asset } from './asset'; export function fetchMapDefinitions() { diff --git a/packages/core/src/blitzkit/modelDefinitions.ts b/packages/core/src/blitzkit/modelDefinitions.ts index 47006e61d..59ca764e5 100644 --- a/packages/core/src/blitzkit/modelDefinitions.ts +++ b/packages/core/src/blitzkit/modelDefinitions.ts @@ -1,5 +1,5 @@ +import { fetchPB } from '../protobuf'; import { ModelDefinitions } from '../protos'; -import { fetchPB } from '../types'; import { asset } from './asset'; export function fetchModelDefinitions() { diff --git a/packages/core/src/blitzkit/provisionDefinitions.ts b/packages/core/src/blitzkit/provisionDefinitions.ts index cc2faaa8f..6c85d2d5b 100644 --- a/packages/core/src/blitzkit/provisionDefinitions.ts +++ b/packages/core/src/blitzkit/provisionDefinitions.ts @@ -1,5 +1,5 @@ +import { fetchPB } from '../protobuf'; import { ProvisionDefinitions } from '../protos'; -import { fetchPB } from '../types'; import { asset } from './asset'; export function fetchProvisionDefinitions() { diff --git a/packages/core/src/blitzkit/resolveGun.ts b/packages/core/src/blitzkit/resolveGun.ts new file mode 100644 index 000000000..a5f8ec1ea --- /dev/null +++ b/packages/core/src/blitzkit/resolveGun.ts @@ -0,0 +1,9 @@ +import { GunDefinition } from '../protos'; + +export function resolveGun(gun: GunDefinition) { + if (gun.regular) return gun.regular; + else if (gun.autoLoader) return gun.autoLoader; + else if (gun.autoReloader) return gun.autoReloader; + + throw new Error('Could not resolve gun'); +} diff --git a/packages/core/src/blitzkit/reviews.ts b/packages/core/src/blitzkit/reviews.ts index 1852b1bd5..40922fca4 100644 --- a/packages/core/src/blitzkit/reviews.ts +++ b/packages/core/src/blitzkit/reviews.ts @@ -1,5 +1,5 @@ +import { fetchPB } from '../protobuf'; import { Reviews } from '../protos'; -import { fetchPB } from '../types'; import { asset } from './asset'; export function fetchReviews() { diff --git a/packages/core/src/blitzkit/skillDefinitions.ts b/packages/core/src/blitzkit/skillDefinitions.ts index 6e074577f..a2bebd8f0 100644 --- a/packages/core/src/blitzkit/skillDefinitions.ts +++ b/packages/core/src/blitzkit/skillDefinitions.ts @@ -1,5 +1,5 @@ +import { fetchPB } from '../protobuf'; import { SkillDefinitions } from '../protos'; -import { fetchPB } from '../types'; import { asset } from './asset'; export function fetchSkillDefinitions() { diff --git a/packages/core/src/blitzkit/tankDefinitions/index.ts b/packages/core/src/blitzkit/tankDefinitions/index.ts index 2e2229f86..18bdfcd2a 100644 --- a/packages/core/src/blitzkit/tankDefinitions/index.ts +++ b/packages/core/src/blitzkit/tankDefinitions/index.ts @@ -1,5 +1,5 @@ +import { fetchPB } from '../../protobuf'; import { TankDefinitions } from '../../protos'; -import { fetchPB } from '../../types'; import { asset } from '../asset'; export function fetchTankDefinitions() { diff --git a/packages/core/src/blitzkit/tankNames.ts b/packages/core/src/blitzkit/tankNames.ts index 65a5b3fdb..56a088cfe 100644 --- a/packages/core/src/blitzkit/tankNames.ts +++ b/packages/core/src/blitzkit/tankNames.ts @@ -1,14 +1,17 @@ import { deburr } from 'lodash-es'; -import { tankDefinitionsArray } from '.'; -import { camouflageDefinitions } from './camouflageDefinitions'; +import { fetchCamouflageDefinitions } from './camouflageDefinitions'; +import { fetchTankDefinitions } from './tankDefinitions'; -export const tankNames = Promise.all([ - tankDefinitionsArray, - camouflageDefinitions, -]).then(([tanks, camouflages]) => - Promise.all( - tanks.map(async (tank, index) => { - const { id } = (await tankDefinitionsArray)[index]; +export async function fetchTankNames() { + const [tankDefinitions, camouflageDefinitions] = await Promise.all([ + fetchTankDefinitions(), + fetchCamouflageDefinitions(), + ]); + const tankDefinitionsArray = Object.values(tankDefinitions.tanks); + + return await Promise.all( + tankDefinitionsArray.map(async (tank, index) => { + const { id } = tankDefinitionsArray[index]; return { id, @@ -17,10 +20,10 @@ export const tankNames = Promise.all([ searchableName: tank.nameFull ?? tank.name, searchableNameDeburr: deburr(tank.nameFull ?? tank.name), camouflages: tank.camouflages - ?.map((id) => camouflages[id].name) + ?.map((id) => camouflageDefinitions.camouflages[id].name) .join(' '), - treeType: tank.treeType, + treeType: tank.type, }; }), - ), -); + ); +} diff --git a/packages/core/src/blitzkit/unionBoundingBox.ts b/packages/core/src/blitzkit/unionBoundingBox.ts index 9ff7e83d4..72a703d75 100644 --- a/packages/core/src/blitzkit/unionBoundingBox.ts +++ b/packages/core/src/blitzkit/unionBoundingBox.ts @@ -1,9 +1,13 @@ import { BoundingBox } from '@blitzkit/core'; -import { Vector3Tuple } from 'three'; export function unionBoundingBox(a: BoundingBox, b: BoundingBox) { return { - min: a.min.map((a, index) => Math.min(a, b.min[index])) as Vector3Tuple, - max: a.max.map((a, index) => Math.max(a, b.max[index])) as Vector3Tuple, + // min: a.min.map((a, index) => Math.min(a, b.min[index])) as Vector3Tuple, + // max: a.max.map((a, index) => Math.max(a, b.max[index])) as Vector3Tuple, + min: { + x: Math.min(a.min.x, b.min.x), + y: Math.min(a.min.y, b.min.y), + z: Math.min(a.min.z, b.min.z), + }, } satisfies BoundingBox; } diff --git a/packages/core/src/blitzkit/unwrapBlitzkitResponse.ts b/packages/core/src/blitzkit/unwrapBlitzkitResponse.ts index ab2433929..ffc46f458 100644 --- a/packages/core/src/blitzkit/unwrapBlitzkitResponse.ts +++ b/packages/core/src/blitzkit/unwrapBlitzkitResponse.ts @@ -1,4 +1,3 @@ - export function unwrapBlitzkitResponse(response: BlitzkitResponse) { if (response.status === 'error') { throw new Error(response.error, { cause: response.message }); diff --git a/packages/core/src/protos/consumable_definitions.proto b/packages/core/src/protos/consumable_definitions.proto index 833e50f0a..dcf589e90 100644 --- a/packages/core/src/protos/consumable_definitions.proto +++ b/packages/core/src/protos/consumable_definitions.proto @@ -41,7 +41,7 @@ message ConsumableTankCategoryFilter { } enum ConsumableTankCategoryFilterCategory { - TANK_CATEGORY_CLIP = 0; + CONSUMABLE_TANK_CATEGORY_FILTER_CATEGORY_CLIP = 0; } message ConsumableTankNationFilter { diff --git a/packages/core/src/protos/test.proto b/packages/core/src/protos/test.proto new file mode 100644 index 000000000..88b4589ef --- /dev/null +++ b/packages/core/src/protos/test.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +message Test { + Child child_b = 1; + uint32 child_a = 2; +} + +message Child { + string value = 1; +} \ No newline at end of file diff --git a/packages/scripts/src/protos.ts b/packages/scripts/src/protos.ts index ea281399d..1416abe8c 100644 --- a/packages/scripts/src/protos.ts +++ b/packages/scripts/src/protos.ts @@ -9,7 +9,7 @@ const exec = promisify(execSync); let executableFileExtension: string; -if (existsSync('node_modules/.bin/protoc-gen-ts.exe')) { +if (existsSync('node_modules/.bin/protoc-gen-ts_proto.exe')) { executableFileExtension = '.exe'; } else { executableFileExtension = ''; @@ -27,6 +27,12 @@ await Promise.all( const files = filesRaw.filter((file) => file.endsWith('.proto')); const args = [ `--plugin=./node_modules/.bin/protoc-gen-ts_proto${executableFileExtension}`, + '--ts_proto_opt=esModuleInterop=true', + '--ts_proto_opt=oneof=unions', + '--ts_proto_opt=removeEnumPrefix=true', + '--ts_proto_opt=snakeToCamel=false', + '--ts_proto_opt=useOptionals=none', + '--ts_proto_opt=noDefaultsForOptionals=true', '--ts_proto_out=.', ...files.map((file) => `${ROOT}/${file}`), ]; diff --git a/packages/website/src/components/TankSearch/index.tsx b/packages/website/src/components/TankSearch/index.tsx index dc8fe9a2e..514fe1473 100644 --- a/packages/website/src/components/TankSearch/index.tsx +++ b/packages/website/src/components/TankSearch/index.tsx @@ -1,13 +1,13 @@ import { TANK_CLASSES, - gameDefinitions, - modelDefinitions, + fetchGameDefinitions, + fetchModelDefinitions, + fetchTankDefinitions, + fetchTankNames, normalizeBoundingBox, resolveDpm, + resolveGun, resolveNearPenetration, - tankDefinitions, - tankDefinitionsArray, - tankNames, unionBoundingBox, type TankDefinition, } from '@blitzkit/core'; @@ -44,20 +44,15 @@ type TankSearchProps = Omit & { const PREVIEW_COUNT = 25; const DEFAULT_LOADED_CARDS = 75; -const awaitedGameDefinitions = await gameDefinitions; -const awaitedModelDefinitions = await modelDefinitions; -const awaitedTankDefinitions = await tankDefinitions; -const awaitedTanksDefinitionsArray = await tankDefinitionsArray; -const awaitedTankNames = await tankNames; +const gameDefinitions = await fetchGameDefinitions(); +const modelDefinitions = await fetchModelDefinitions(); +const tankDefinitions = await fetchTankDefinitions(); +const tankNames = await fetchTankNames(); export const TankSearch = memo( ({ compact, onSelect, onSelectAll, ...props }) => { + const awaitedTanksDefinitionsArray = Object.values(tankDefinitions.tanks); const exempt = useAdExempt(); - // const awaitedGameDefinitions = useAwait(gameDefinitions); - // const awaitedModelDefinitions = useAwait(modelDefinitions); - // const awaitedTankDefinitions = useAwait(tankDefinitions); - // const awaitedTanksDefinitionsArray = useAwait(tankDefinitionsArray); - // const awaitedTankNames = useAwait(tankNames); const tankFilters = useStore($tankFilters); const tankopediaSort = useStore($tankopediaSort); @@ -74,8 +69,7 @@ export const TankSearch = memo( .sort((a, b) => b.tier - a.tier) .sort( (a, b) => - treeTypeOrder.indexOf(b.treeType) - - treeTypeOrder.indexOf(a.treeType), + treeTypeOrder.indexOf(b.type) - treeTypeOrder.indexOf(a.type), ) .sort( (a, b) => @@ -83,8 +77,8 @@ export const TankSearch = memo( ) .sort( (a, b) => - awaitedGameDefinitions.nations.indexOf(b.nation) - - awaitedGameDefinitions.nations.indexOf(a.nation), + gameDefinitions.nations.indexOf(b.nation) - + gameDefinitions.nations.indexOf(a.nation), ) .sort((a, b) => a.tier - b.tier); break; @@ -102,36 +96,38 @@ export const TankSearch = memo( case 'survivability.viewRange': sorted = filtered.sort( (a, b) => - a.turrets.at(-1)!.viewRange - b.turrets.at(-1)!.viewRange, + a.turrets.at(-1)!.view_range - b.turrets.at(-1)!.view_range, ); break; case 'survivability.camouflageStill': sorted = filtered.sort( - (a, b) => a.camouflage.still - b.camouflage.still, + (a, b) => a.camouflageStill - b.camouflageStill, ); break; case 'survivability.camouflageMoving': sorted = filtered.sort( - (a, b) => a.camouflage.moving - b.camouflage.moving, + (a, b) => a.camouflageMoving - b.camouflageMoving, ); break; case 'survivability.camouflageShooting': sorted = filtered.sort( (a, b) => - a.camouflage.still * - a.turrets.at(-1)!.guns.at(-1)!.camouflageLoss - - b.camouflage.still * - b.turrets.at(-1)!.guns.at(-1)!.camouflageLoss, + a.camouflageStill * + resolveGun(a.turrets.at(-1)!.guns.at(-1)!).gun! + .camouflageLoss - + b.camouflageStill * + resolveGun(b.turrets.at(-1)!.guns.at(-1)!).gun! + .camouflageLoss, ); break; case 'survivability.volume': sorted = filtered.sort((a, b) => { - const aTankModelDefinition = awaitedModelDefinitions[a.id]; - const bTankModelDefinition = awaitedModelDefinitions[b.id]; + const aTankModelDefinition = modelDefinitions.models[a.id]; + const bTankModelDefinition = modelDefinitions.models[b.id]; const aTurretModelDefinition = aTankModelDefinition.turrets[a.turrets.at(-1)!.id]; const bTurretModelDefinition = @@ -157,8 +153,8 @@ export const TankSearch = memo( case 'survivability.length': sorted = filtered.sort((a, b) => { - const aTankModelDefinition = awaitedModelDefinitions[a.id]; - const bTankModelDefinition = awaitedModelDefinitions[b.id]; + const aTankModelDefinition = modelDefinitions[a.id]; + const bTankModelDefinition = modelDefinitions[b.id]; const aTurretModelDefinition = aTankModelDefinition.turrets[a.turrets.at(-1)!.id]; const bTurretModelDefinition = @@ -297,24 +293,28 @@ export const TankSearch = memo( case 'fire.gunDepression': sorted = filtered.sort( (a, b) => - awaitedModelDefinitions[a.id].turrets[a.turrets.at(-1)!.id] - .guns[a.turrets.at(-1)!.guns.at(-1)!.id].pitch.max + - (awaitedModelDefinitions[a.id].turretRotation?.pitch ?? 0) - - awaitedModelDefinitions[b.id].turrets[b.turrets.at(-1)!.id] - .guns[b.turrets.at(-1)!.guns.at(-1)!.id].pitch.max - - (awaitedModelDefinitions[b.id].turretRotation?.pitch ?? 0), + modelDefinitions[a.id].turrets[a.turrets.at(-1)!.id].guns[ + a.turrets.at(-1)!.guns.at(-1)!.id + ].pitch.max + + (modelDefinitions[a.id].turretRotation?.pitch ?? 0) - + modelDefinitions[b.id].turrets[b.turrets.at(-1)!.id].guns[ + b.turrets.at(-1)!.guns.at(-1)!.id + ].pitch.max - + (modelDefinitions[b.id].turretRotation?.pitch ?? 0), ); break; case 'fire.gunElevation': sorted = filtered.sort( (a, b) => - awaitedModelDefinitions[b.id].turrets[b.turrets.at(-1)!.id] - .guns[b.turrets.at(-1)!.guns.at(-1)!.id].pitch.min + - (awaitedModelDefinitions[b.id].turretRotation?.pitch ?? 0) - - awaitedModelDefinitions[a.id].turrets[a.turrets.at(-1)!.id] - .guns[a.turrets.at(-1)!.guns.at(-1)!.id].pitch.min - - (awaitedModelDefinitions[a.id].turretRotation?.pitch ?? 0), + modelDefinitions[b.id].turrets[b.turrets.at(-1)!.id].guns[ + b.turrets.at(-1)!.guns.at(-1)!.id + ].pitch.min + + (modelDefinitions[b.id].turretRotation?.pitch ?? 0) - + modelDefinitions[a.id].turrets[a.turrets.at(-1)!.id].guns[ + a.turrets.at(-1)!.guns.at(-1)!.id + ].pitch.min - + (modelDefinitions[a.id].turretRotation?.pitch ?? 0), ); break; @@ -382,11 +382,11 @@ export const TankSearch = memo( ? sorted : sorted.reverse(); } else { - const searchedRaw = fuzzysort.go(tankFilters.search, awaitedTankNames, { + const searchedRaw = fuzzysort.go(tankFilters.search, tankNames, { keys: ['searchableName', 'searchableNameDeburr', 'camouflages'], }); const searchedTanks = searchedRaw.map( - (result) => awaitedTankDefinitions[result.obj.id], + (result) => tankDefinitions[result.obj.id], ); return searchedTanks; } diff --git a/packages/website/src/hooks/useEccentricity.ts b/packages/website/src/hooks/useEccentricity.ts index 57c6f2ba5..3f5fa0a46 100644 --- a/packages/website/src/hooks/useEccentricity.ts +++ b/packages/website/src/hooks/useEccentricity.ts @@ -1,20 +1,20 @@ -import { TankDefinition, tankDefinitions } from '@blitzkit/core'; +import { fetchTankDefinitions, TankDefinition } from '@blitzkit/core'; import { sumBy } from 'lodash-es'; import { useMemo } from 'react'; -import * as Duel from '../stores/duel'; +import { Duel } from '../stores/duel'; export enum UseEccentricityMode { Tier, Class, } -const awaitedTankDefinitions = await tankDefinitions; +const tankDefinitions = await fetchTankDefinitions(); export function useEccentricity(mode: UseEccentricityMode) { const tank = Duel.use((state) => state.protagonist.tank); const similarTanks = useMemo( () => - Object.values(awaitedTankDefinitions).filter( + Object.values(tankDefinitions).filter( (tankB) => tank.tier === tankB.tier && (mode === UseEccentricityMode.Class diff --git a/packages/website/src/pages/tools/tankopedia/[id]/index.astro b/packages/website/src/pages/tools/tankopedia/[id]/index.astro index b09d49ccd..459882c61 100644 --- a/packages/website/src/pages/tools/tankopedia/[id]/index.astro +++ b/packages/website/src/pages/tools/tankopedia/[id]/index.astro @@ -1,13 +1,13 @@ --- -import { tankDefinitions } from '@blitzkit/core'; +import { fetchTankDefinitions } from '@blitzkit/core'; import type { GetStaticPaths } from 'astro'; import ToolLayout from '../../../../layouts/ToolLayout.astro'; import { Page } from './index'; export const getStaticPaths = (async () => { - const awaitedTankDefinitions = await tankDefinitions; + const tankDefinitions = await fetchTankDefinitions(); - return Object.values(awaitedTankDefinitions).map((tank) => ({ + return Object.values(tankDefinitions).map((tank) => ({ params: { id: tank.id }, })); }) satisfies GetStaticPaths; diff --git a/packages/website/src/pages/tools/tankopedia/[id]/index.tsx b/packages/website/src/pages/tools/tankopedia/[id]/index.tsx index c5572be0e..a23718a5f 100644 --- a/packages/website/src/pages/tools/tankopedia/[id]/index.tsx +++ b/packages/website/src/pages/tools/tankopedia/[id]/index.tsx @@ -1,7 +1,7 @@ import { - modelDefinitions, - provisionDefinitions, - tankDefinitions, + fetchModelDefinitions, + fetchProvisionDefinitions, + fetchTankDefinitions, } from '@blitzkit/core'; import { PageWrapper } from '../../../../components/PageWrapper'; import { CalloutsSection } from '../../../../components/Tankopedia/CalloutsSection'; @@ -22,20 +22,20 @@ interface PageProps { id: number; } -const awaitedTankDefinitions = await tankDefinitions; -const awaitedProvisionDefinitions = await provisionDefinitions; -const awaitedModelDefinitions = await modelDefinitions; +const tankDefinitions = await fetchTankDefinitions(); +const provisionDefinitions = await fetchProvisionDefinitions(); +const modelDefinitions = await fetchModelDefinitions(); export function Page({ id }: PageProps) { - const tank = awaitedTankDefinitions[id]; - const model = awaitedModelDefinitions[id]; + const tank = tankDefinitions.tanks[id]; + const model = modelDefinitions.models[id]; return (