From 48dcbbc227f14b4324a8ff881724b87397242570 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Tue, 27 Aug 2024 14:40:43 -0500 Subject: [PATCH] feat: detached cdn branch --- .vscode/settings.json | 1 + scripts/applyPatches.ts | 21 ++-- scripts/averages.ts | 38 +++---- scripts/buildAssets/boosterIcons.ts | 4 +- scripts/buildAssets/camouflageIcons.ts | 4 +- .../buildAssets/consumableProvisionIcons.ts | 4 +- scripts/buildAssets/currencies.ts | 7 +- scripts/buildAssets/definitions.ts | 100 +++++++++--------- scripts/buildAssets/equipmentIcons.ts | 4 +- scripts/buildAssets/flags.ts | 4 +- scripts/buildAssets/gameModeBanners.ts | 4 +- scripts/buildAssets/index.ts | 3 +- scripts/buildAssets/moduleIcons.ts | 4 +- scripts/buildAssets/shellIcons.ts | 4 +- scripts/buildAssets/skillIcons.ts | 4 +- scripts/buildAssets/tankArmors.ts | 4 +- scripts/buildAssets/tankIcons.ts | 4 +- scripts/buildAssets/tankModels.ts | 4 +- scripts/buildRatingLeaderboard.ts | 6 +- scripts/discoverIds.ts | 56 ++++------ scripts/reviews.ts | 10 +- scripts/test.ts | 96 ----------------- scripts/test2.ts | 36 ------- src/app/api/patreon/auth/[code]/route.ts | 9 +- .../api/patreon/membership/[token]/route.ts | 3 +- src/app/api/patreon/refresh/[token]/route.ts | 7 +- src/app/docs/[directory]/[document]/page.tsx | 6 +- src/components/Footer/index.tsx | 77 +++++++++++--- src/core/blitz/writeDVPL.ts | 10 +- src/core/blitzkit/asset.ts | 8 +- src/core/blitzkit/commitAssets.ts | 9 +- src/core/blitzkit/discoveredIdDefinitions.ts | 7 +- src/core/blitzkit/fetchPreDiscoveredIds.ts | 8 +- src/core/blitzkit/isDev.ts | 23 ---- src/core/blitzkit/octokit.ts | 6 +- src/core/blitzkit/patreonLoginUrl.ts | 6 +- src/core/blitzkit/secrete.ts | 4 + src/core/blitzkit/secrets.ts | 27 ----- src/core/discord/manager.ts | 4 +- src/core/github/assetCommit.ts | 10 +- src/events/interactionCreate/index.ts | 11 +- src/workers/bot.ts | 5 +- tsconfig.json | 2 +- 43 files changed, 267 insertions(+), 397 deletions(-) delete mode 100644 scripts/test.ts delete mode 100644 scripts/test2.ts delete mode 100644 src/core/blitzkit/isDev.ts create mode 100644 src/core/blitzkit/secrete.ts delete mode 100644 src/core/blitzkit/secrets.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index db1baa6b6..387a377ea 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -88,6 +88,7 @@ "loddist", "lods", "lossrate", + "Maddoxkkm", "malum", "mantlets", "metallicness", diff --git a/scripts/applyPatches.ts b/scripts/applyPatches.ts index 471331661..b5423a104 100644 --- a/scripts/applyPatches.ts +++ b/scripts/applyPatches.ts @@ -5,7 +5,7 @@ import { parse as parseYaml, stringify as stringifyYaml } from 'yaml'; import { readStringDVPL } from '../src/core/blitz/readStringDVPL'; import { readYAMLDVPL } from '../src/core/blitz/readYAMLDVPL'; import { writeDVPL } from '../src/core/blitz/writeDVPL'; -import { secrets } from '../src/core/blitzkit/secrets'; +import { assertSecrete } from '../src/core/blitzkit/secrete'; import { dvp } from '../submodules/blitzkit-closed/src/dvp'; import { DATA } from './buildAssets/constants'; @@ -21,18 +21,18 @@ console.log(`Installing patches for ${currentVersion}...`); let patchIndex = 1; while (true) { const response = await fetch( - `${secrets.WOTB_DLC_CDN}/dlc/s${currentVersion}_${patchIndex}.yaml`, + `${assertSecrete(process.env.WOTB_DLC_CDN)}/dlc/s${currentVersion}_${patchIndex}.yaml`, ); if (response.status === 200) { console.log(`Applying patch ${patchIndex}...`); const data = parseYaml(await response.text()); - const dvpm = await fetch(`${secrets.WOTB_DLC_CDN}/dlc/${data.dx11}`).then( - (response) => response.arrayBuffer(), - ); + const dvpm = await fetch( + `${assertSecrete(process.env.WOTB_DLC_CDN)}/dlc/${data.dx11}`, + ).then((response) => response.arrayBuffer()); const dvpd = await fetch( - `${secrets.WOTB_DLC_CDN}/dlc/${data.dx11.replace('.dvpm', '.dvpd')}`, + `${assertSecrete(process.env.WOTB_DLC_CDN)}/dlc/${data.dx11.replace('.dvpm', '.dvpd')}`, ).then((response) => response.arrayBuffer()); const files = await dvp(dvpm, dvpd); const bar = new ProgressBar( @@ -45,7 +45,10 @@ while (true) { const { dir } = parsePath(path); await mkdir(`${DATA}/${dir}`, { recursive: true }); - await writeFile(`${DATA}/${path}.dvpl`, writeDVPL(Buffer.from(data))); + await writeFile( + `${DATA}/${path}.dvpl`, + new Uint8Array(writeDVPL(Buffer.from(data))), + ); bar.tick(); }), @@ -55,7 +58,7 @@ while (true) { console.log('Found dynamic content localizations; patching...'); const localizationsResponse = await fetch( - `${secrets.WOTB_DLC_CDN}/dlc/${data.dynamicContentLocalizationsDir}/en.yaml`, + `${assertSecrete(process.env.WOTB_DLC_CDN)}/dlc/${data.dynamicContentLocalizationsDir}/en.yaml`, ); const newStrings = parseYaml(await localizationsResponse.text()); const oldStrings = await readYAMLDVPL>( @@ -66,7 +69,7 @@ while (true) { await writeFile( `${DATA}/Strings/en.yaml.dvpl`, - writeDVPL(Buffer.from(patchedContent)), + new Uint8Array(writeDVPL(Buffer.from(patchedContent))), ); } diff --git a/scripts/averages.ts b/scripts/averages.ts index ae17683d3..91d759a0b 100644 --- a/scripts/averages.ts +++ b/scripts/averages.ts @@ -1,5 +1,4 @@ import { chunk, times } from 'lodash'; -import { argv } from 'process'; import { Region, REGIONS } from '../src/constants/regions'; import { getAccountInfo } from '../src/core/blitz/getAccountInfo'; import getTankStats from '../src/core/blitz/getTankStats'; @@ -36,8 +35,7 @@ const THREADS = 10; const PLAYER_IDS_PER_CALL = 100; const startTime = Date.now(); -const production = argv.includes('--production'); -const preDiscoveredIds = await fetchPreDiscoveredIds(!production); +const preDiscoveredIds = await fetchPreDiscoveredIds(); const playerIds: Record = { asia: chunk( preDiscoveredIds.filter((id) => idToRegion(id) === 'asia'), @@ -223,23 +221,19 @@ async function postWork() { latest, }; - commitAssets( - 'averages', - [ - { - path: `averages/${latest}.pb`, - content: await encodeToBase64( - 'blitzkit/blitzkit.AverageDefinitions', - averageDefinitions, - ), - encoding: 'base64', - }, - { - path: 'averages/manifest.json', - content: JSON.stringify(manifest), - encoding: 'utf-8', - }, - ], - production, - ); + commitAssets('averages', [ + { + path: `averages/${latest}.pb`, + content: await encodeToBase64( + 'blitzkit/blitzkit.AverageDefinitions', + averageDefinitions, + ), + encoding: 'base64', + }, + { + path: 'averages/manifest.json', + content: JSON.stringify(manifest), + encoding: 'utf-8', + }, + ]); } diff --git a/scripts/buildAssets/boosterIcons.ts b/scripts/buildAssets/boosterIcons.ts index 0f987a421..e2d0b7e5a 100644 --- a/scripts/buildAssets/boosterIcons.ts +++ b/scripts/buildAssets/boosterIcons.ts @@ -6,7 +6,7 @@ import { commitAssets } from '../../src/core/blitzkit/commitAssets'; import { FileChange } from '../../src/core/blitzkit/commitMultipleFiles'; import { DATA } from './constants'; -export async function boosterIcons(production: boolean) { +export async function boosterIcons() { const boosterFiles = (await readdir(`${DATA}/Gfx/Shared/boosters`)).filter( (file) => !file.endsWith('@2x.txt.dvpl') && !file.startsWith('texture0'), ); @@ -47,5 +47,5 @@ export async function boosterIcons(production: boolean) { }), ); - await commitAssets('booster icons', changes, production); + await commitAssets('booster icons', changes); } diff --git a/scripts/buildAssets/camouflageIcons.ts b/scripts/buildAssets/camouflageIcons.ts index dfa5eba0c..be7705a8b 100644 --- a/scripts/buildAssets/camouflageIcons.ts +++ b/scripts/buildAssets/camouflageIcons.ts @@ -3,7 +3,7 @@ import { commitAssets } from '../../src/core/blitzkit/commitAssets'; import { FileChange } from '../../src/core/blitzkit/commitMultipleFiles'; import { DATA } from './constants'; -export async function camouflageIcons(production: boolean) { +export async function camouflageIcons() { console.log('Building camouflage icons...'); const content = await readDVPLFile( `${DATA}/Gfx/UI/Hangar/IconCamouflage.packed.webp.dvpl`, @@ -16,5 +16,5 @@ export async function camouflageIcons(production: boolean) { }, ]; - await commitAssets('camo icons', changes, production); + await commitAssets('camo icons', changes); } diff --git a/scripts/buildAssets/consumableProvisionIcons.ts b/scripts/buildAssets/consumableProvisionIcons.ts index d22f91b0b..447612d14 100644 --- a/scripts/buildAssets/consumableProvisionIcons.ts +++ b/scripts/buildAssets/consumableProvisionIcons.ts @@ -19,7 +19,7 @@ interface Mappings { const listItemsPattern = //g; -export async function consumableProvisionIcons(production: boolean) { +export async function consumableProvisionIcons() { console.log('Building consumable and provision icons...'); const changes: FileChange[] = []; @@ -188,5 +188,5 @@ export async function consumableProvisionIcons(production: boolean) { ); } - await commitAssets('consumable and provision icons', changes, production); + await commitAssets('consumable and provision icons', changes); } diff --git a/scripts/buildAssets/currencies.ts b/scripts/buildAssets/currencies.ts index 1b2b658ba..3c2dae3d5 100644 --- a/scripts/buildAssets/currencies.ts +++ b/scripts/buildAssets/currencies.ts @@ -2,6 +2,7 @@ import sharp from 'sharp'; import { readDVPLFile } from '../../src/core/blitz/readDVPLFile'; import { commitAssets } from '../../src/core/blitzkit/commitAssets'; import { FileChange } from '../../src/core/blitzkit/commitMultipleFiles'; +import { assertSecrete } from '../../src/core/blitzkit/secrete'; import { DATA } from './constants'; const ICONS = [ @@ -21,7 +22,7 @@ type BlitzGlossary = Record< } >; -export async function currencies(production: boolean) { +export async function currencies() { console.log('Building currency icons...'); const changes: FileChange[] = []; @@ -44,7 +45,7 @@ export async function currencies(production: boolean) { }), ); - const glossary = await fetch(process.env.WOTB_GLOSSARY!).then( + const glossary = await fetch(assertSecrete(process.env.WOTB_GLOSSARY)).then( (response) => response.json() as Promise, ); @@ -74,5 +75,5 @@ export async function currencies(production: boolean) { }), ); - await commitAssets('currency icons', changes, production); + await commitAssets('currency icons', changes); } diff --git a/scripts/buildAssets/definitions.ts b/scripts/buildAssets/definitions.ts index 8d96b3985..318db172a 100644 --- a/scripts/buildAssets/definitions.ts +++ b/scripts/buildAssets/definitions.ts @@ -433,7 +433,7 @@ const missingStrings: Record = { }; export const botPattern = /^.+((tutorial_bot(\d+)?)|(TU(R?)))$/; -export async function definitions(production: boolean) { +export async function definitions() { console.log('Building definitions...'); const wargamingTankopedia = (await fetch( @@ -1460,55 +1460,51 @@ export async function definitions(production: boolean) { }; }); - await commitAssets( - 'definitions', - [ - { - content: superCompress(gameDefinitions), - encoding: 'base64', - path: 'definitions/game.cdon.lz4', - }, - { - content: superCompress(tankDefinitions), - encoding: 'base64', - path: 'definitions/tanks.cdon.lz4', - }, - { - content: superCompress(modelDefinitions), - encoding: 'base64', - path: 'definitions/models.cdon.lz4', - }, - { - content: superCompress(equipmentDefinitions), - encoding: 'base64', - path: 'definitions/equipment.cdon.lz4', - }, - { - content: superCompress(consumableDefinitions), - encoding: 'base64', - path: 'definitions/consumables.cdon.lz4', - }, - { - content: superCompress(provisionDefinitions), - encoding: 'base64', - path: 'definitions/provisions.cdon.lz4', - }, - { - content: superCompress(skillDefinitions), - encoding: 'base64', - path: 'definitions/skills.cdon.lz4', - }, - { - content: superCompress(mapDefinitions), - encoding: 'base64', - path: 'definitions/maps.cdon.lz4', - }, - { - content: superCompress(camouflageDefinitions), - encoding: 'base64', - path: 'definitions/camouflages.cdon.lz4', - }, - ], - production, - ); + await commitAssets('definitions', [ + { + content: superCompress(gameDefinitions), + encoding: 'base64', + path: 'definitions/game.cdon.lz4', + }, + { + content: superCompress(tankDefinitions), + encoding: 'base64', + path: 'definitions/tanks.cdon.lz4', + }, + { + content: superCompress(modelDefinitions), + encoding: 'base64', + path: 'definitions/models.cdon.lz4', + }, + { + content: superCompress(equipmentDefinitions), + encoding: 'base64', + path: 'definitions/equipment.cdon.lz4', + }, + { + content: superCompress(consumableDefinitions), + encoding: 'base64', + path: 'definitions/consumables.cdon.lz4', + }, + { + content: superCompress(provisionDefinitions), + encoding: 'base64', + path: 'definitions/provisions.cdon.lz4', + }, + { + content: superCompress(skillDefinitions), + encoding: 'base64', + path: 'definitions/skills.cdon.lz4', + }, + { + content: superCompress(mapDefinitions), + encoding: 'base64', + path: 'definitions/maps.cdon.lz4', + }, + { + content: superCompress(camouflageDefinitions), + encoding: 'base64', + path: 'definitions/camouflages.cdon.lz4', + }, + ]); } diff --git a/scripts/buildAssets/equipmentIcons.ts b/scripts/buildAssets/equipmentIcons.ts index 795a142e9..22514c963 100644 --- a/scripts/buildAssets/equipmentIcons.ts +++ b/scripts/buildAssets/equipmentIcons.ts @@ -17,7 +17,7 @@ interface Mappings { }[]; } -export async function equipmentIcons(production: boolean) { +export async function equipmentIcons() { console.log('Building equipment icons...'); const changes: FileChange[] = []; @@ -91,5 +91,5 @@ export async function equipmentIcons(production: boolean) { ), ); - await commitAssets('equipment icons', changes, production); + await commitAssets('equipment icons', changes); } diff --git a/scripts/buildAssets/flags.ts b/scripts/buildAssets/flags.ts index 21ca7f41c..9aa0206ec 100644 --- a/scripts/buildAssets/flags.ts +++ b/scripts/buildAssets/flags.ts @@ -6,7 +6,7 @@ import { commitAssets } from '../../src/core/blitzkit/commitAssets'; import { FileChange } from '../../src/core/blitzkit/commitMultipleFiles'; import { DATA } from './constants'; -export async function flags(production: boolean) { +export async function flags() { console.log('Building flags...'); const changes = [ @@ -82,5 +82,5 @@ export async function flags(production: boolean) { )), ]; - await commitAssets('flags', changes, production); + await commitAssets('flags', changes); } diff --git a/scripts/buildAssets/gameModeBanners.ts b/scripts/buildAssets/gameModeBanners.ts index a3fcc6d8f..506fed1d0 100644 --- a/scripts/buildAssets/gameModeBanners.ts +++ b/scripts/buildAssets/gameModeBanners.ts @@ -6,7 +6,7 @@ import { FileChange } from '../../src/core/blitzkit/commitMultipleFiles'; import { DATA } from './constants'; import { SquadBattleTypeStyles } from './definitions'; -export async function gameModeBanners(production: boolean) { +export async function gameModeBanners() { console.log('Building game mode banners...'); const changes: FileChange[] = []; @@ -50,5 +50,5 @@ export async function gameModeBanners(production: boolean) { }); } - await commitAssets('game mode banners', changes, production); + await commitAssets('game mode banners', changes); } diff --git a/scripts/buildAssets/index.ts b/scripts/buildAssets/index.ts index 32a886455..a3b5cf0a8 100644 --- a/scripts/buildAssets/index.ts +++ b/scripts/buildAssets/index.ts @@ -8,7 +8,6 @@ const targets = argv .find((argument) => argument.startsWith('--target')) ?.split('=')[1] .split(','); -const production = argv.includes('--production'); import { boosterIcons } from './boosterIcons'; import { camouflageIcons } from './camouflageIcons'; @@ -45,5 +44,5 @@ const methods = [ ]; for (const method of methods) { - if (allTargets || targets?.includes(method.name)) await method(production); + if (allTargets || targets?.includes(method.name)) await method(); } diff --git a/scripts/buildAssets/moduleIcons.ts b/scripts/buildAssets/moduleIcons.ts index 763404d39..878cb2410 100644 --- a/scripts/buildAssets/moduleIcons.ts +++ b/scripts/buildAssets/moduleIcons.ts @@ -5,7 +5,7 @@ import { commitAssets } from '../../src/core/blitzkit/commitAssets'; import { FileChange } from '../../src/core/blitzkit/commitMultipleFiles'; import { DATA } from './constants'; -export async function moduleIcons(production: boolean) { +export async function moduleIcons() { console.log('Building module icons...'); const changes = await Promise.all( @@ -33,5 +33,5 @@ export async function moduleIcons(production: boolean) { }), ); - await commitAssets('module icons', changes, production); + await commitAssets('module icons', changes); } diff --git a/scripts/buildAssets/shellIcons.ts b/scripts/buildAssets/shellIcons.ts index 60adc62a0..b66546a17 100644 --- a/scripts/buildAssets/shellIcons.ts +++ b/scripts/buildAssets/shellIcons.ts @@ -6,7 +6,7 @@ import { commitAssets } from '../../src/core/blitzkit/commitAssets'; import { FileChange } from '../../src/core/blitzkit/commitMultipleFiles'; import { DATA } from './constants'; -export async function shellIcons(production: boolean) { +export async function shellIcons() { console.log('Building shell icons...'); const image = sharp( @@ -47,5 +47,5 @@ export async function shellIcons(production: boolean) { }), ); - await commitAssets('shell icons', changes, production); + await commitAssets('shell icons', changes); } diff --git a/scripts/buildAssets/skillIcons.ts b/scripts/buildAssets/skillIcons.ts index 100d3ca5a..02b556c5a 100644 --- a/scripts/buildAssets/skillIcons.ts +++ b/scripts/buildAssets/skillIcons.ts @@ -25,7 +25,7 @@ export interface Avatar { }; } -export async function skillIcons(production: boolean) { +export async function skillIcons() { console.log('Building skill icons...'); const avatar = await readXMLDVPL<{ root: Avatar }>( @@ -47,5 +47,5 @@ export async function skillIcons(production: boolean) { }), ); - commitAssets('skill icons', changes, production); + commitAssets('skill icons', changes); } diff --git a/scripts/buildAssets/tankArmors.ts b/scripts/buildAssets/tankArmors.ts index da233edd0..a3a6dd08e 100644 --- a/scripts/buildAssets/tankArmors.ts +++ b/scripts/buildAssets/tankArmors.ts @@ -8,7 +8,7 @@ import { FileChange } from '../../src/core/blitzkit/commitMultipleFiles'; import { DATA } from './constants'; import { VehicleDefinitionList } from './definitions'; -export async function tankArmors(production: boolean) { +export async function tankArmors() { console.log('Building tank armors...'); const changes: FileChange[] = []; @@ -42,5 +42,5 @@ export async function tankArmors(production: boolean) { }), ); - await commitAssets('tank armor', changes, production); + await commitAssets('tank armor', changes); } diff --git a/scripts/buildAssets/tankIcons.ts b/scripts/buildAssets/tankIcons.ts index ef5a00e5c..d3d751824 100644 --- a/scripts/buildAssets/tankIcons.ts +++ b/scripts/buildAssets/tankIcons.ts @@ -42,7 +42,7 @@ export interface TankParameters { }; } -export async function tankIcons(production: boolean) { +export async function tankIcons() { console.log('Building tank icons...'); const changes: FileChange[] = []; @@ -97,5 +97,5 @@ export async function tankIcons(production: boolean) { }), ); - await commitAssets('tank icons', changes, production); + await commitAssets('tank icons', changes); } diff --git a/scripts/buildAssets/tankModels.ts b/scripts/buildAssets/tankModels.ts index 42721811c..d2f05dc9d 100644 --- a/scripts/buildAssets/tankModels.ts +++ b/scripts/buildAssets/tankModels.ts @@ -10,7 +10,7 @@ import { DATA } from './constants'; import { VehicleDefinitionList } from './definitions'; import { TankParameters } from './tankIcons'; -export async function tankModels(production: boolean) { +export async function tankModels() { console.log('Building tank models...'); const nodeIO = new NodeIO(); @@ -50,6 +50,6 @@ export async function tankModels(production: boolean) { }), ); - await commitAssets(`tank models ${nation}`, changes, production); + await commitAssets(`tank models ${nation}`, changes); } } diff --git a/scripts/buildRatingLeaderboard.ts b/scripts/buildRatingLeaderboard.ts index d7e967568..234614bdd 100644 --- a/scripts/buildRatingLeaderboard.ts +++ b/scripts/buildRatingLeaderboard.ts @@ -191,9 +191,5 @@ regionSubdomains.split(',').forEach(async (regionSubdomain) => { }, ]; - commitAssets( - `rating leaderboard ${regionSubdomain} ${target}`, - changes, - production, - ); + commitAssets(`rating leaderboard ${regionSubdomain} ${target}`, changes); }); diff --git a/scripts/discoverIds.ts b/scripts/discoverIds.ts index f27710bc9..7e3b250b9 100644 --- a/scripts/discoverIds.ts +++ b/scripts/discoverIds.ts @@ -1,13 +1,12 @@ import { chunk, times, uniq } from 'lodash'; import { compress, decompress } from 'lz4js'; -import { argv } from 'process'; import { REGIONS, Region } from '../src/constants/regions'; import { retryAbleBlitzFetchEvent } from '../src/core/blitz/fetchBlitz'; import { getAccountInfo } from '../src/core/blitz/getAccountInfo'; import { MIN_IDS, idToRegion } from '../src/core/blitz/idToRegion'; import { asset } from '../src/core/blitzkit/asset'; import { commitAssets } from '../src/core/blitzkit/commitAssets'; -import { DiscoverIdsDefinitions } from '../src/core/blitzkit/discoveredIdDefinitions'; +import { DiscoveredIdsDefinitions } from '../src/core/blitzkit/discoveredIdDefinitions'; import { DidsReadStream, DidsWriteStream } from '../src/core/streams/dids'; const CHUNK_SIZE = 2 ** 21; @@ -16,17 +15,12 @@ const PROGRESS_UPDATE_FREQUENCY = 1000 * 60; const MAX_REQUESTS = 10; const ACCOUNTS_PER_CALL = 100; const TERMINATION_THRESHOLD = 1000; - -const production = argv.includes('--production'); - -console.log(`Running in ${production ? 'production' : 'development'} mode`); - const startTime = Date.now(); const indexableRegions = [...REGIONS]; let ids: number[] = []; -const preDiscoveredManifest = (await fetch( - asset('ids/manifest.json', !production), -).then((response) => response.json())) as DiscoverIdsDefinitions; +const preDiscoveredManifest = (await fetch(asset('ids/manifest.json')).then( + (response) => response.json(), +)) as DiscoveredIdsDefinitions; console.log( `Fetching ${preDiscoveredManifest.chunks} pre-discovered chunks...`, @@ -34,13 +28,13 @@ console.log( let chunkIndex = 0; while (chunkIndex < preDiscoveredManifest.chunks) { - const preDiscovered = await fetch( - asset(`ids/${chunkIndex}.dids.lz4`, !production), - ).then(async (response) => { - const buffer = await response.arrayBuffer(); - const decompressed = decompress(new Uint8Array(buffer)).buffer; - return new DidsReadStream(decompressed as ArrayBuffer).dids(); - }); + const preDiscovered = await fetch(asset(`ids/${chunkIndex}.dids.lz4`)).then( + async (response) => { + const buffer = await response.arrayBuffer(); + const decompressed = decompress(new Uint8Array(buffer)).buffer; + return new DidsReadStream(decompressed as ArrayBuffer).dids(); + }, + ); // no spread syntax: https://github.com/oven-sh/bun/issues/11734 ids = ids.concat(preDiscovered); @@ -149,20 +143,16 @@ function post() { }; }); - commitAssets( - 'discovered ids', - [ - ...files, - { - content: JSON.stringify({ - chunks: idsChunked.length, - count: ids.length, - time: Date.now(), - } satisfies DiscoverIdsDefinitions), - encoding: 'utf-8', - path: 'ids/manifest.json', - }, - ], - production, - ); + commitAssets('discovered ids', [ + ...files, + { + content: JSON.stringify({ + chunks: idsChunked.length, + count: ids.length, + time: Date.now(), + } satisfies DiscoveredIdsDefinitions), + encoding: 'utf-8', + path: 'ids/manifest.json', + }, + ]); } diff --git a/scripts/reviews.ts b/scripts/reviews.ts index d3a232644..961cd5709 100644 --- a/scripts/reviews.ts +++ b/scripts/reviews.ts @@ -22,7 +22,7 @@ const MAX_QUERIES = 128; console.log('Finding reviews...'); -const currentReviews = await fetch(asset('definitions/reviews.pb', false)) +const currentReviews = await fetch(asset('definitions/reviews.pb')) .then((response) => response.arrayBuffer()) .then((buffer) => decode('reviews/blitzkit.Reviews', new Uint8Array(buffer)), @@ -128,8 +128,6 @@ const content = await encode('reviews/blitzkit.Reviews', reviews).then( (array) => Buffer.from(array).toString('base64'), ); -await commitAssets( - 'reviews', - [{ content, encoding: 'base64', path: 'definitions/reviews.pb' }], - true, -); +await commitAssets('reviews', [ + { content, encoding: 'base64', path: 'definitions/reviews.pb' }, +]); diff --git a/scripts/test.ts b/scripts/test.ts deleted file mode 100644 index 1b5c1c1c8..000000000 --- a/scripts/test.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { chunk, times } from 'lodash'; -import { compress } from 'lz4js'; -import { argv } from 'process'; -import { Region, REGIONS } from '../src/constants/regions'; -import getTankStats from '../src/core/blitz/getTankStats'; -import { idToRegion } from '../src/core/blitz/idToRegion'; -import { commitAssets } from '../src/core/blitzkit/commitAssets'; -import { FileChange } from '../src/core/blitzkit/commitMultipleFiles'; -import { - RtscWritePlayer, - RtscWriteStream, - RtsmWriteStream, -} from '../src/core/streams/rts'; -import usersRaw from '../test.users.json'; - -const PLAYERS_PER_CHUNK = 256; -const CHUNKS_PER_BATCH = 128; - -const production = argv.includes('--production'); -const region = argv - .find((argument) => argument.startsWith('--region')) - ?.split('=')[1] as Region | undefined; - -if (!region || !REGIONS.includes(region)) { - throw new Error('No valid region specified'); -} - -const today = new Date(); -const todayPath = `${today.getUTCFullYear()}/${today.getUTCMonth() + 1}/${today.getUTCDate()}`; -const users = usersRaw.filter(({ blitz }) => idToRegion(blitz) === region); -const base = Math.ceil(users.length / PLAYERS_PER_CHUNK); -const chunks = times(base, (offset) => ({ - offset, - users: users.filter((user) => user.blitz % base === offset), -})); -const batches = chunk(chunks, CHUNKS_PER_BATCH); -const manifestWriteStream = new RtsmWriteStream(); - -console.log(`Found ${users.length} players in ${region}`); - -await commitAssets( - `regular tank stats manifests ${todayPath}`, - [ - { - encoding: 'base64', - path: `regions/${region}/regular/tanks/${todayPath}/manifest.rtsm`, - content: Buffer.from( - compress(manifestWriteStream.rtsm(base).uint8Array), - ).toString('base64'), - }, - ], - production, -); - -let batchesDone = 0; -for (const batch of batches) { - console.log(`Batch ${++batchesDone} of ${batches.length}`); - - const changes: FileChange[] = []; - - let chunksDone = 0; - for (const chunk of batch) { - console.log(`Chunk ${++chunksDone} of ${chunks.length}`); - - let playersDone = 0; - const players = await Promise.all( - chunk.users.map(async (user) => { - const tanks = await getTankStats(region, user.blitz); - - console.log(`Player ${++playersDone} of ${chunk.users.length}`); - - if (tanks === null) return null; - - return { - id: user.blitz, - tanks, - } satisfies RtscWritePlayer; - }), - ).then((players) => players.filter((player) => player !== null)); - const writeStream = new RtscWriteStream(); - - writeStream.rtsc(players); - changes.push({ - encoding: 'base64', - content: Buffer.from(compress(writeStream.uint8Array)).toString('base64'), - path: `regions/${region}/regular/tanks/${todayPath}/${chunk.offset}.rtsc.lz4`, - }); - } - - // do not await; commit in background - commitAssets( - `regular tank stats ${todayPath} batch ${batches.indexOf(batch) + 1}`, - changes, - production, - ); -} diff --git a/scripts/test2.ts b/scripts/test2.ts deleted file mode 100644 index df4215dc2..000000000 --- a/scripts/test2.ts +++ /dev/null @@ -1,36 +0,0 @@ -import AdmZip from 'adm-zip'; -import { readFile } from 'fs/promises'; -import { BattleResultsReadStream } from '../src/core/streams/battleResults'; - -interface WoTBReplayMeta { - version: string; - title: string; - dbid: string; - playerName: string; - battleStartTime: string; - playerVehicleName: string; - mapName: string; - arenaUniqueId: string; - battleDuration: number; - vehicleCompDescriptor: number; - camouflageId: number; - mapId: number; - arenaBonusType: number; -} - -const file = await readFile('temp/test.wotbreplay'); -const zip = new AdmZip(file); -const entries = zip.getEntries(); - -const metaRaw = entries.find((entry) => entry.name === 'meta.json'); -const battleResultsRaw = entries.find( - (entry) => entry.name === 'battle_results.dat', -); - -if (!metaRaw) throw new Error('No meta.json found'); -if (!battleResultsRaw) throw new Error('No battle_results.dat found'); - -const meta = JSON.parse(metaRaw.getData().toString()) as WoTBReplayMeta; -const battleResults = new BattleResultsReadStream( - battleResultsRaw.getData().buffer, -).battleResults(); diff --git a/src/app/api/patreon/auth/[code]/route.ts b/src/app/api/patreon/auth/[code]/route.ts index 9230c4b55..67b674629 100644 --- a/src/app/api/patreon/auth/[code]/route.ts +++ b/src/app/api/patreon/auth/[code]/route.ts @@ -1,11 +1,18 @@ import { NextResponse } from 'next/server'; +import { assertSecrete } from '../../../../../core/blitzkit/secrete'; export async function GET( request: Request, { params }: { params: { code: string } }, ) { const response = await fetch( - `https://www.patreon.com/api/oauth2/token?code=${params.code}&grant_type=authorization_code&client_id=${process.env.NEXT_PUBLIC_PATREON_CLIENT_ID}&client_secret=${process.env.PATREON_CLIENT_SECRET}&redirect_uri=${process.env.NEXT_PUBLIC_PATREON_REDIRECT_URI}`, + `https://www.patreon.com/api/oauth2/token?code=${ + params.code + }&grant_type=authorization_code&client_id=${assertSecrete( + process.env.NEXT_PUBLIC_PATREON_CLIENT_ID, + )}&client_secret=${assertSecrete( + process.env.PATREON_CLIENT_SECRET, + )}&redirect_uri=${assertSecrete(process.env.NEXT_PUBLIC_PATREON_REDIRECT_URI)}`, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, diff --git a/src/app/api/patreon/membership/[token]/route.ts b/src/app/api/patreon/membership/[token]/route.ts index 8c1a42e15..0ade27193 100644 --- a/src/app/api/patreon/membership/[token]/route.ts +++ b/src/app/api/patreon/membership/[token]/route.ts @@ -1,4 +1,5 @@ import { NextResponse } from 'next/server'; +import { assertSecrete } from '../../../../../core/blitzkit/secrete'; interface PatreonMembershipResponse { data: { @@ -68,7 +69,7 @@ export async function GET( (item) => item.type === 'member' && item.relationships.campaign.data.id === - process.env.PATREON_CAMPAIGN_ID && + assertSecrete(process.env.PATREON_CAMPAIGN_ID) && item.attributes.patron_status === 'active_patron', ), ); diff --git a/src/app/api/patreon/refresh/[token]/route.ts b/src/app/api/patreon/refresh/[token]/route.ts index a34e8e376..e7e98868a 100644 --- a/src/app/api/patreon/refresh/[token]/route.ts +++ b/src/app/api/patreon/refresh/[token]/route.ts @@ -1,11 +1,16 @@ import { NextResponse } from 'next/server'; +import { assertSecrete } from '../../../../../core/blitzkit/secrete'; export async function GET( request: Request, { params }: { params: { token: string } }, ) { const response = await fetch( - `https://www.patreon.com/api/oauth2/token?grant_type=refresh_token&refresh_token=${params.token}&client_id=${process.env.NEXT_PUBLIC_PATREON_CLIENT_ID}&client_secret=${process.env.PATREON_CLIENT_SECRET}`, + `https://www.patreon.com/api/oauth2/token?grant_type=refresh_token&refresh_token=${ + params.token + }&client_id=${assertSecrete( + process.env.NEXT_PUBLIC_PATREON_CLIENT_ID, + )}&client_secret=${assertSecrete(process.env.PATREON_CLIENT_SECRET)}`, { method: 'POST' }, ); const json = await response.json(); diff --git a/src/app/docs/[directory]/[document]/page.tsx b/src/app/docs/[directory]/[document]/page.tsx index b0a8cdcc9..08c6b3d69 100644 --- a/src/app/docs/[directory]/[document]/page.tsx +++ b/src/app/docs/[directory]/[document]/page.tsx @@ -3,7 +3,7 @@ import Markdown from 'markdown-to-jsx'; import { use } from 'react'; import { Link } from '../../../../components/Link'; import PageWrapper from '../../../../components/PageWrapper'; -import isDev from '../../../../core/blitzkit/isDev'; +import { assertSecrete } from '../../../../core/blitzkit/secrete'; export default function Page({ params, @@ -12,7 +12,9 @@ export default function Page({ }) { const markdown = use( fetch( - `https://raw.githubusercontent.com/tresabhi/blitzkit/${isDev() ? 'dev' : 'main'}/docs/${params.directory}/${params.document}.md`, + `https://raw.githubusercontent.com/tresabhi/blitzkit/${assertSecrete( + process.env.NEXT_PUBLIC_ASSET_BRANCH, + )}/docs/${params.directory}/${params.document}.md`, ).then((response) => response.text()), ); diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx index 27979740f..0a3cc5ceb 100644 --- a/src/components/Footer/index.tsx +++ b/src/components/Footer/index.tsx @@ -1,31 +1,32 @@ 'use client'; -import { Flex, Heading, Text, Theme } from '@radix-ui/themes'; +import { Code, Flex, Heading, Text, Theme } from '@radix-ui/themes'; +import { use } from 'react'; import packageJson from '../../../package.json'; +import { gameDefinitions } from '../../core/blitzkit/gameDefinitions'; import { Link } from '../Link'; export function Footer() { + const awaitedGameDefinitions = use(gameDefinitions); + return ( - - BlitzKit{' '} - - {packageJson.version} - - + BlitzKit Everything World of Tanks Blitz @@ -131,6 +127,53 @@ export function Footer() { + + + + + BlitzKit + + + WoT Blitz + + + CDN + + + + + + {packageJson.version} + + + {awaitedGameDefinitions.version} + + + {process.env.NEXT_PUBLIC_ASSET_BRANCH} + + + + + + + BlitzKit + + + {packageJson.version} + + + WoT Blitz + + + {awaitedGameDefinitions.version} + + + CDN + + + {process.env.NEXT_PUBLIC_ASSET_BRANCH} + + ); diff --git a/src/core/blitz/writeDVPL.ts b/src/core/blitz/writeDVPL.ts index c89872ca7..6925f3f4a 100644 --- a/src/core/blitz/writeDVPL.ts +++ b/src/core/blitz/writeDVPL.ts @@ -26,7 +26,10 @@ export function writeDVPL(buffer: Buffer) { 0, ); - return Buffer.concat([buffer, footerBuffer], buffer.length + 20); + return Buffer.concat( + [new Uint8Array(buffer), new Uint8Array(footerBuffer)], + buffer.length + 20, + ); } else { output = output.subarray(0, compressedBlockSize); const footerBuffer = toDVPLFooter( @@ -36,7 +39,10 @@ export function writeDVPL(buffer: Buffer) { 2, ); - return Buffer.concat([output, footerBuffer], compressedBlockSize + 20); + return Buffer.concat( + [new Uint8Array(output), new Uint8Array(footerBuffer)], + compressedBlockSize + 20, + ); } } diff --git a/src/core/blitzkit/asset.ts b/src/core/blitzkit/asset.ts index db18ee675..c1f396e97 100644 --- a/src/core/blitzkit/asset.ts +++ b/src/core/blitzkit/asset.ts @@ -1,6 +1,8 @@ import { ASSETS_REPO } from '../../constants/assets'; -import isDev from './isDev'; +import { assertSecrete } from './secrete'; -export function asset(path: string, dev = isDev()) { - return `https://raw.githubusercontent.com/tresabhi/${ASSETS_REPO}/${dev ? 'dev' : 'main'}/${path}`; +export function asset(path: string) { + return `https://raw.githubusercontent.com/tresabhi/${ASSETS_REPO}/${assertSecrete( + process.env.NEXT_PUBLIC_ASSET_BRANCH, + )}/${path}`; } diff --git a/src/core/blitzkit/commitAssets.ts b/src/core/blitzkit/commitAssets.ts index a769a0799..cfc8f776e 100644 --- a/src/core/blitzkit/commitAssets.ts +++ b/src/core/blitzkit/commitAssets.ts @@ -1,11 +1,8 @@ import { ASSETS_REPO } from '../../constants/assets'; import commitMultipleFiles, { FileChange } from './commitMultipleFiles'; +import { assertSecrete } from './secrete'; -export async function commitAssets( - message: string, - changes: FileChange[], - production: boolean, -) { +export async function commitAssets(message: string, changes: FileChange[]) { console.log(`Committing ${message}...`); if (changes.length === 0) return; @@ -13,7 +10,7 @@ export async function commitAssets( await commitMultipleFiles( 'tresabhi', ASSETS_REPO, - production ? 'main' : 'dev', + assertSecrete(process.env.NEXT_PUBLIC_ASSET_BRANCH), `${message} - ${new Date().toDateString()}`, changes, ); diff --git a/src/core/blitzkit/discoveredIdDefinitions.ts b/src/core/blitzkit/discoveredIdDefinitions.ts index 361991583..183c674ea 100644 --- a/src/core/blitzkit/discoveredIdDefinitions.ts +++ b/src/core/blitzkit/discoveredIdDefinitions.ts @@ -1,5 +1,4 @@ import { asset } from './asset'; -import isDev from './isDev'; export interface DiscoveredIdsDefinitions { time: number; @@ -7,6 +6,6 @@ export interface DiscoveredIdsDefinitions { count: number; } -export const discoveredIdsDefinitions = fetch( - asset('ids/manifest.json', isDev()), -).then((response) => response.json() as Promise); +export const discoveredIdsDefinitions = fetch(asset('ids/manifest.json')).then( + (response) => response.json() as Promise, +); diff --git a/src/core/blitzkit/fetchPreDiscoveredIds.ts b/src/core/blitzkit/fetchPreDiscoveredIds.ts index 484f99165..d5bfed266 100644 --- a/src/core/blitzkit/fetchPreDiscoveredIds.ts +++ b/src/core/blitzkit/fetchPreDiscoveredIds.ts @@ -5,10 +5,10 @@ import { DidsReadStream } from '../streams/dids'; import { asset } from './asset'; import { DiscoveredIdsDefinitions } from './discoveredIdDefinitions'; -export async function fetchPreDiscoveredIds(dev: boolean) { +export async function fetchPreDiscoveredIds() { const idChunks: number[][] = []; - const manifest = (await fetch(asset('ids/manifest.json', dev)).then( - (response) => response.json(), + const manifest = (await fetch(asset('ids/manifest.json')).then((response) => + response.json(), )) as DiscoveredIdsDefinitions; const bar = new ProgressBar( `Fetching ${manifest.count.toLocaleString()} ids in ${manifest.chunks} chunks :bar`, @@ -19,7 +19,7 @@ export async function fetchPreDiscoveredIds(dev: boolean) { await Promise.all( times(manifest.chunks, async (chunkIndex) => { const preDiscovered = await fetch( - asset(`ids/${chunkIndex}.dids.lz4`, dev), + asset(`ids/${chunkIndex}.dids.lz4`), ).then(async (response) => { const buffer = await response.arrayBuffer(); const decompressed = decompress(new Uint8Array(buffer)).buffer; diff --git a/src/core/blitzkit/isDev.ts b/src/core/blitzkit/isDev.ts deleted file mode 100644 index d22641b22..000000000 --- a/src/core/blitzkit/isDev.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { config } from 'dotenv'; - -config(); - -const devHostStartNames = [ - 'dev', - 'beta', - 'blitzkrieg-', - 'localhost', - 'betakrieg', - 'devkrieg', - 'blitzrinth-', - 'blitzkit-', -]; - -export default function isDev() { - return ( - process.env.NODE_ENV === 'development' || - process.env.VERCEL_ENV === 'preview' || - (typeof window !== 'undefined' && - devHostStartNames.some((name) => window.location.host.startsWith(name))) - ); -} diff --git a/src/core/blitzkit/octokit.ts b/src/core/blitzkit/octokit.ts index a5fa63fe4..a5d1cdadc 100644 --- a/src/core/blitzkit/octokit.ts +++ b/src/core/blitzkit/octokit.ts @@ -1,7 +1,9 @@ import { throttling } from '@octokit/plugin-throttling'; import { Octokit } from '@octokit/rest'; -import { secrets } from './secrets'; +import { assertSecrete } from './secrete'; Octokit.plugin(throttling); -export const octokit = new Octokit({ auth: secrets.GH_TOKEN }); +export const octokit = new Octokit({ + auth: assertSecrete(process.env.GH_TOKEN), +}); diff --git a/src/core/blitzkit/patreonLoginUrl.ts b/src/core/blitzkit/patreonLoginUrl.ts index 1d26fe311..2ca21161a 100644 --- a/src/core/blitzkit/patreonLoginUrl.ts +++ b/src/core/blitzkit/patreonLoginUrl.ts @@ -1,8 +1,10 @@ +import { assertSecrete } from './secrete'; + export function patreonLoginUrl() { const params = new URLSearchParams({ response_type: 'code', - client_id: process.env.NEXT_PUBLIC_PATREON_CLIENT_ID as string, - redirect_uri: process.env.NEXT_PUBLIC_PATREON_REDIRECT_URI as string, + client_id: assertSecrete(process.env.NEXT_PUBLIC_PATREON_CLIENT_ID), + redirect_uri: assertSecrete(process.env.NEXT_PUBLIC_PATREON_REDIRECT_URI), scope: 'identity', }); diff --git a/src/core/blitzkit/secrete.ts b/src/core/blitzkit/secrete.ts new file mode 100644 index 000000000..a8be621b5 --- /dev/null +++ b/src/core/blitzkit/secrete.ts @@ -0,0 +1,4 @@ +export function assertSecrete(secrete?: string) { + if (secrete === undefined) throw new Error('Missing secret'); + return secrete; +} diff --git a/src/core/blitzkit/secrets.ts b/src/core/blitzkit/secrets.ts deleted file mode 100644 index 78e939edd..000000000 --- a/src/core/blitzkit/secrets.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { config } from 'dotenv'; - -config(); - -const SECRET_KEYS = [ - 'DISCORD_TOKEN', - 'DISCORD_CLIENT_ID', - 'GH_TOKEN', - 'DATABASE_URL', - 'WOTB_DLC_CDN', -] as const; - -export type SECRET = typeof SECRET_KEYS extends readonly (infer T)[] - ? T - : never; - -export const secrets = SECRET_KEYS.reduce>>( - (accumulator, key) => ({ - ...accumulator, - - get [key](): string { - if (!(key in process.env)) throw new Error(`Secret ${key} not provided`); - return process.env[key]!; - }, - }), - {}, -) as Record; diff --git a/src/core/discord/manager.ts b/src/core/discord/manager.ts index 8c8b249dd..1af5dd96b 100644 --- a/src/core/discord/manager.ts +++ b/src/core/discord/manager.ts @@ -1,6 +1,6 @@ import { ShardingManager } from 'discord.js'; -import { secrets } from '../blitzkit/secrets'; +import { assertSecrete } from '../blitzkit/secrete'; export const manager = new ShardingManager('dist/bot/workers/bot.js', { - token: secrets.DISCORD_TOKEN, + token: assertSecrete(process.env.DISCORD_TOKEN), }); diff --git a/src/core/github/assetCommit.ts b/src/core/github/assetCommit.ts index 38e33ca59..88afd88db 100644 --- a/src/core/github/assetCommit.ts +++ b/src/core/github/assetCommit.ts @@ -1,12 +1,10 @@ import { ASSETS_REPO } from '../../constants/assets'; import { GithubChangeBlob, createBlob } from '../blitzkit/createBlob'; import { octokit } from '../blitzkit/octokit'; +import { assertSecrete } from '../blitzkit/secrete'; export class AssetCommit { - constructor( - public message: string, - public production: boolean, - ) {} + constructor(public message: string) {} private blobs: GithubChangeBlob[] = []; async add(path: string, content: string, encoding: 'utf-8' | 'base64') { @@ -28,7 +26,7 @@ export class AssetCommit { await octokit.git.getRef({ owner: 'tresabhi', repo: ASSETS_REPO, - ref: `heads/${this.production ? 'main' : 'dev'}`, + ref: `heads/${assertSecrete(process.env.NEXT_PUBLIC_ASSET_BRANCH)}`, }) ).data.object.sha; const treeSha = ( @@ -56,7 +54,7 @@ export class AssetCommit { await octokit.git.updateRef({ owner: 'tresabhi', repo: ASSETS_REPO, - ref: `heads/${this.production ? 'main' : 'dev'}`, + ref: `heads/${assertSecrete(process.env.NEXT_PUBLIC_ASSET_BRANCH)}`, sha: newCommitData.sha, }); } diff --git a/src/events/interactionCreate/index.ts b/src/events/interactionCreate/index.ts index 3d3818784..48cf7f4fd 100644 --- a/src/events/interactionCreate/index.ts +++ b/src/events/interactionCreate/index.ts @@ -33,7 +33,7 @@ import { searchPlayersCommand } from '../../commands/searchPlayers'; import { statsCommand } from '../../commands/stats'; import { todayCommand } from '../../commands/today'; import { RenderConfiguration } from '../../core/blitzkit/renderConfiguration'; -import { secrets } from '../../core/blitzkit/secrets'; +import { assertSecrete } from '../../core/blitzkit/secrete'; import handleAutocomplete from './handlers/autocomplete'; import handleButton from './handlers/button'; import handleChatInputCommand from './handlers/chatInputCommand'; @@ -115,14 +115,19 @@ export const commands = Promise.allSettled(COMMANDS_RAW).then((rawCommands) => { ); }); -const rest = new REST().setToken(secrets.DISCORD_TOKEN); +const rest = new REST().setToken(assertSecrete(process.env.DISCORD_TOKEN)); commands.then((awaitedCommands) => { const body = Object.values(awaitedCommands).map((registry) => registry.command.toJSON(), ); - rest.put(Routes.applicationCommands(secrets.DISCORD_CLIENT_ID), { body }); + rest.put( + Routes.applicationCommands(assertSecrete(process.env.DISCORD_CLIENT_ID)), + { + body, + }, + ); }); export default async function interactionCreate( diff --git a/src/workers/bot.ts b/src/workers/bot.ts index 0dcb7a901..68c6cfd43 100644 --- a/src/workers/bot.ts +++ b/src/workers/bot.ts @@ -1,8 +1,9 @@ import { registerProcesses } from '../core/blitzkit/processes'; -import { secrets } from '../core/blitzkit/secrets'; +import { assertSecrete } from '../core/blitzkit/secrete'; import { client } from '../core/discord/client'; console.log(`🟡 Launching bot ${client.shard?.ids[0]}`); registerProcesses(); -client.login(secrets.DISCORD_TOKEN); + +client.login(assertSecrete(process.env.DISCORD_TOKEN)); diff --git a/tsconfig.json b/tsconfig.json index 4b5167694..3cf8ab563 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,5 +21,5 @@ ] }, "include": ["src/**/*", "scripts/**/*", "dist/website/types/**/*.ts"], - "exclude": ["node_modules/**/*", "dist", "scripts"] + "exclude": ["node_modules/**/*", "dist"] }