diff --git a/packages/core/src/blitzkit/environment.ts b/packages/core/src/blitzkit/environment.ts index b7bb18bca..077dd0d20 100644 --- a/packages/core/src/blitzkit/environment.ts +++ b/packages/core/src/blitzkit/environment.ts @@ -6,23 +6,35 @@ interface EnvironmentConfig { aliases: Record; } -export const environments = import.meta.glob( - "../../../../environments/*.json", - { +let hasReadEnvironments = false; +const environments: Record = {}; + +/** + * This is set up this way to avoid errors in runtimes where + * `import.meta.glob` does not exist. + */ +function readEnvironments() { + if (hasReadEnvironments) return; + + hasReadEnvironments = true; + + const glob = import.meta.glob("../../../../environments/*.json", { eager: true, import: "default", - }, -) as Record; -const root = "../../../../environments"; + }) as Record; + const root = "../../../../environments"; -for (const key in environments) { - const trimmed = key.slice(root.length + 1, -5); + for (const key in glob) { + const trimmed = key.slice(root.length + 1, -5); - environments[trimmed] = environments[key]; - delete environments[key]; + environments[trimmed] = glob[key]; + delete environments[key]; + } } export function environmentConfig() { + readEnvironments(); + const environment = assertSecret(import.meta.env.PUBLIC_ENVIRONMENT); if (!(environment in environments)) { diff --git a/packages/scripts/src/recordPerformance/index.ts b/packages/scripts/src/recordPerformance/index.ts index 4eb650eaa..fd228a8aa 100644 --- a/packages/scripts/src/recordPerformance/index.ts +++ b/packages/scripts/src/recordPerformance/index.ts @@ -1,10 +1,13 @@ +import { idToRegion } from "@blitzkit/core"; import { GitObjectStorage } from "../core/blitzkit/gitObjectStorage"; import { IdArray } from "../core/blitzkit/idArray"; import { API_RATE } from "../discoverIds/constants"; import { sleep, withinTimeLimit } from "../discoverIds/time"; import { IdsManifest } from "../discoverIds/types"; import { IDS_API_BASE } from "./constants"; -import { PerformanceManifest } from "./types"; +import { PerformanceManifest, QuickStatistics } from "./types"; + +const applicationId = import.meta.env.PUBLIC_WARGAMING_APPLICATION_ID; const storage = await new GitObjectStorage( "blitzkit/data-performance", @@ -35,6 +38,26 @@ while (withinTimeLimit()) { for (let i = 0; i < size; i++) { await sleep(); + + const id = ids.get(i); + const domain = idToRegion(id); + + const url = `https://api.wotblitz.${ + domain + }/wotb/tanks/stats/?application_id=${applicationId}&account_id=${id}`; + const response = await fetch(url); + const json = (await response.json()) as QuickStatistics; + + const data = json.data[id]; + + if (json.status !== "ok" || data === null) { + console.log(`Failed player ${id}; skipping...`); + continue; + } + + for (const tank of data) { + console.log(new Date(tank.battle_life_time * 1000)); + } } } diff --git a/packages/scripts/src/recordPerformance/types.ts b/packages/scripts/src/recordPerformance/types.ts index e5c12d10a..316815a5e 100644 --- a/packages/scripts/src/recordPerformance/types.ts +++ b/packages/scripts/src/recordPerformance/types.ts @@ -4,3 +4,23 @@ interface PerformanceManifestV1 { version: 1; last_updated: number; } + +export interface QuickStatistics { + status: string; + data: Record; +} + +interface QuickStatisticsTank { + last_battle_time: number; + battle_life_time: number; + tank_id: number; + + all: Record; +} + +interface Observations { + count: number; + observations: Record; +} + +interface Observation {}