diff --git a/packages/core/src/protobuf/encodePB64.ts b/packages/core/src/protobuf/encodePB64.ts deleted file mode 100644 index 24280f104..000000000 --- a/packages/core/src/protobuf/encodePB64.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { MessageFns } from '../protos'; - -export function encodePB64(message: MessageFns, data: Type) { - return Buffer.from(message.encode(data).finish()).toString('base64'); -} diff --git a/packages/core/src/protobuf/encodePBBuffer.ts b/packages/core/src/protobuf/encodePBBuffer.ts new file mode 100644 index 000000000..55828bb80 --- /dev/null +++ b/packages/core/src/protobuf/encodePBBuffer.ts @@ -0,0 +1,5 @@ +import { MessageFns } from '../protos'; + +export function encodePBBuffer(message: MessageFns, data: Type) { + return Buffer.from(message.encode(data).finish()); +} diff --git a/packages/core/src/protobuf/index.ts b/packages/core/src/protobuf/index.ts index 8d92a6d2f..773b86baa 100644 --- a/packages/core/src/protobuf/index.ts +++ b/packages/core/src/protobuf/index.ts @@ -1,3 +1,3 @@ -export * from './encodePB64'; +export * from './encodePBBuffer'; export * from './fetchPB'; export * from './pbMap'; diff --git a/packages/scripts/src/averages.ts b/packages/scripts/src/averages.ts index b6d869a6e..ee07cc981 100644 --- a/packages/scripts/src/averages.ts +++ b/packages/scripts/src/averages.ts @@ -8,7 +8,7 @@ import { Samples, averageDefinitionsAllStatsKeys, emptySamples, - encodePB64, + encodePBBuffer, getAccountInfo, getTankStats, idToRegion, @@ -235,13 +235,11 @@ async function postWork() { commitAssets('averages', [ { path: `averages/${latest}.pb`, - content: encodePB64(AverageDefinitions, averageDefinitions), - encoding: 'base64', + content: encodePBBuffer(AverageDefinitions, averageDefinitions), }, { path: 'averages/manifest.json', - content: JSON.stringify(manifest), - encoding: 'utf-8', + content: Buffer.from(JSON.stringify(manifest), 'utf-8'), }, ]); } diff --git a/packages/scripts/src/buildAssets/boosterIcons.ts b/packages/scripts/src/buildAssets/boosterIcons.ts index 6302ce9f3..27710363f 100644 --- a/packages/scripts/src/buildAssets/boosterIcons.ts +++ b/packages/scripts/src/buildAssets/boosterIcons.ts @@ -27,22 +27,19 @@ export async function boosterIcons() { .split('\n')[4] .split(' ') .map(Number); - const content = ( - await image - .clone() - .extract({ - left: sizes[0], - top: sizes[1], - width: sizes[2], - height: sizes[3], - }) - .toBuffer() - ).toString('base64'); + const content = await image + .clone() + .extract({ + left: sizes[0], + top: sizes[1], + width: sizes[2], + height: sizes[3], + }) + .toBuffer(); changes.push({ path: `icons/boosters/${name}.webp`, content, - encoding: 'base64', }); }), ); diff --git a/packages/scripts/src/buildAssets/camouflageIcons.ts b/packages/scripts/src/buildAssets/camouflageIcons.ts index ff8f0a1bc..6035876d5 100644 --- a/packages/scripts/src/buildAssets/camouflageIcons.ts +++ b/packages/scripts/src/buildAssets/camouflageIcons.ts @@ -7,11 +7,10 @@ export async function camouflageIcons() { console.log('Building camouflage icons...'); const content = await readDVPLFile( `${DATA}/Gfx/UI/Hangar/IconCamouflage.packed.webp.dvpl`, - ).then((content) => content.toString('base64')); + ); const changes: FileChange[] = [ { content, - encoding: 'base64', path: 'icons/camo.webp', }, ]; diff --git a/packages/scripts/src/buildAssets/consumableProvisionIcons.ts b/packages/scripts/src/buildAssets/consumableProvisionIcons.ts index 9d4257c2a..e8e5afa3c 100644 --- a/packages/scripts/src/buildAssets/consumableProvisionIcons.ts +++ b/packages/scripts/src/buildAssets/consumableProvisionIcons.ts @@ -74,13 +74,10 @@ export async function consumableProvisionIcons() { const image = sharp( await readDVPLFile(`${DATA}/${configPath}.packed.webp.dvpl`), ); - const content = ( - await image.trim({ threshold: 100 }).toBuffer() - ).toString('base64'); + const content = await image.trim({ threshold: 100 }).toBuffer(); changes.push({ path: `icons/consumables/${consumable.id}.webp`, - encoding: 'base64', content, }); } else { @@ -93,21 +90,18 @@ export async function consumableProvisionIcons() { .split('\n')[4] .split(' ') .map(Number); - const content = ( - await consumablesTexture - .clone() - .extract({ - left: sizes[0], - top: sizes[1], - width: sizes[2], - height: sizes[3], - }) - .toBuffer() - ).toString('base64'); + const content = await consumablesTexture + .clone() + .extract({ + left: sizes[0], + top: sizes[1], + width: sizes[2], + height: sizes[3], + }) + .toBuffer(); changes.push({ path: `icons/consumables/${consumable.id}.webp`, - encoding: 'base64', content, }); } @@ -147,13 +141,10 @@ export async function consumableProvisionIcons() { const image = sharp( await readDVPLFile(`${DATA}/${configPath}.packed.webp.dvpl`), ); - const content = ( - await image.trim({ threshold: 100 }).toBuffer() - ).toString('base64'); + const content = await image.trim({ threshold: 100 }).toBuffer(); changes.push({ path: `icons/provisions/${provision.id}.webp`, - encoding: 'base64', content, }); } else { @@ -166,21 +157,18 @@ export async function consumableProvisionIcons() { .split('\n')[4] .split(' ') .map(Number); - const content = ( - await provisionsTexture - .clone() - .extract({ - left: sizes[0], - top: sizes[1], - width: sizes[2], - height: sizes[3], - }) - .toBuffer() - ).toString('base64'); + const content = await provisionsTexture + .clone() + .extract({ + left: sizes[0], + top: sizes[1], + width: sizes[2], + height: sizes[3], + }) + .toBuffer(); changes.push({ path: `icons/provisions/${provision.id}.webp`, - encoding: 'base64', content, }); } diff --git a/packages/scripts/src/buildAssets/currencies.ts b/packages/scripts/src/buildAssets/currencies.ts index a066ff577..61e2d4c31 100644 --- a/packages/scripts/src/buildAssets/currencies.ts +++ b/packages/scripts/src/buildAssets/currencies.ts @@ -29,17 +29,14 @@ export async function currencies() { await Promise.all( ICONS.map(async ([file, name]) => { - const content = ( - await sharp( - await readDVPLFile(`${DATA}/Gfx/Lobby/currency/${file}.dvpl`), - ) - .trim() - .toBuffer() - ).toString('base64'); + const content = await sharp( + await readDVPLFile(`${DATA}/Gfx/Lobby/currency/${file}.dvpl`), + ) + .trim() + .toBuffer(); changes.push({ content, - encoding: 'base64', path: `icons/currencies/${name}.webp`, }); }), @@ -58,18 +55,15 @@ export async function currencies() { const imageRaw = await fetch(item.image_url).then((response) => response.arrayBuffer(), ); - const content = ( - await sharp(imageRaw) - .trim({ - threshold: 100, - background: { r: 0, g: 0, b: 0, alpha: 0 }, - }) - .toBuffer() - ).toString('base64'); + const content = await sharp(imageRaw) + .trim({ + threshold: 100, + background: { r: 0, g: 0, b: 0, alpha: 0 }, + }) + .toBuffer(); changes.push({ content, - encoding: 'base64', path: `icons/currencies/${key}.webp`, }); }), diff --git a/packages/scripts/src/buildAssets/definitions.ts b/packages/scripts/src/buildAssets/definitions.ts index 9f923f9c5..de1b8fb7d 100644 --- a/packages/scripts/src/buildAssets/definitions.ts +++ b/packages/scripts/src/buildAssets/definitions.ts @@ -7,7 +7,7 @@ import { ConsumableTankCategoryFilterCategory, Crew, CrewType, - encodePB64, + encodePBBuffer, EquipmentDefinitions, EquipmentSlot, GameDefinitions, @@ -1650,48 +1650,39 @@ export async function definitions() { await commitAssets('definitions', [ { - content: encodePB64(GameDefinitions, gameDefinitions), - encoding: 'base64', + content: encodePBBuffer(GameDefinitions, gameDefinitions), path: 'definitions/game.pb', }, { - content: encodePB64(TankDefinitions, tankDefinitions), - encoding: 'base64', + content: encodePBBuffer(TankDefinitions, tankDefinitions), path: 'definitions/tanks.pb', }, { - content: encodePB64(ModelDefinitions, modelDefinitions), - encoding: 'base64', + content: encodePBBuffer(ModelDefinitions, modelDefinitions), path: 'definitions/models.pb', }, { - content: encodePB64(EquipmentDefinitions, equipmentDefinitions), - encoding: 'base64', + content: encodePBBuffer(EquipmentDefinitions, equipmentDefinitions), path: 'definitions/equipment.pb', }, { - content: encodePB64(ConsumableDefinitions, consumableDefinitions), - encoding: 'base64', + content: encodePBBuffer(ConsumableDefinitions, consumableDefinitions), path: 'definitions/consumables.pb', }, { - content: encodePB64(ProvisionDefinitions, provisionDefinitions), - encoding: 'base64', + content: encodePBBuffer(ProvisionDefinitions, provisionDefinitions), path: 'definitions/provisions.pb', }, { - content: encodePB64(SkillDefinitions, skillDefinitions), - encoding: 'base64', + content: encodePBBuffer(SkillDefinitions, skillDefinitions), path: 'definitions/skills.pb', }, { - content: encodePB64(MapDefinitions, mapDefinitions), - encoding: 'base64', + content: encodePBBuffer(MapDefinitions, mapDefinitions), path: 'definitions/maps.pb', }, { - content: encodePB64(CamouflageDefinitions, camouflageDefinitions), - encoding: 'base64', + content: encodePBBuffer(CamouflageDefinitions, camouflageDefinitions), path: 'definitions/camouflages.pb', }, ]); diff --git a/packages/scripts/src/buildAssets/equipmentIcons.ts b/packages/scripts/src/buildAssets/equipmentIcons.ts index a6b217deb..762ab7b6d 100644 --- a/packages/scripts/src/buildAssets/equipmentIcons.ts +++ b/packages/scripts/src/buildAssets/equipmentIcons.ts @@ -59,31 +59,27 @@ export async function equipmentIcons() { const image = sharp( await readDVPLFile(`${DATA}/${configPathWebp}.packed.webp.dvpl`), ); - const content = (await image.trim().toBuffer()).toString('base64'); + const content = await image.trim().toBuffer(); changes.push({ path: `icons/equipment/${optionalDevice.id}.webp`, - encoding: 'base64', content, }); } else { const config = await readStringDVPL(`${DATA}/${configPath}.dvpl`); const sizes = config.split('\n')[4].split(' ').map(Number); - const content = ( - await image - .clone() - .extract({ - left: sizes[0], - top: sizes[1], - width: sizes[2], - height: sizes[3], - }) - .toBuffer() - ).toString('base64'); + const content = await image + .clone() + .extract({ + left: sizes[0], + top: sizes[1], + width: sizes[2], + height: sizes[3], + }) + .toBuffer(); changes.push({ path: `icons/equipment/${optionalDevice.id}.webp`, - encoding: 'base64', content, }); } diff --git a/packages/scripts/src/buildAssets/flags.ts b/packages/scripts/src/buildAssets/flags.ts index 3f94b1724..93f21b10a 100644 --- a/packages/scripts/src/buildAssets/flags.ts +++ b/packages/scripts/src/buildAssets/flags.ts @@ -1,6 +1,5 @@ import { readdir } from 'fs/promises'; import sharp from 'sharp'; -import { readBase64DVPL } from '../core/blitz/readBase64DVPL'; import { readDVPLFile } from '../core/blitz/readDVPLFile'; import { commitAssets } from '../core/github/commitAssets'; import { FileChange } from '../core/github/commitMultipleFiles'; @@ -11,9 +10,7 @@ export async function flags() { const changes = [ ...(await Promise.all( - ( - await readdir(`${DATA}/Gfx/Lobby/flags`) - ) + (await readdir(`${DATA}/Gfx/Lobby/flags`)) .filter( (flag) => flag.startsWith('flag_profile-stat_') && @@ -23,63 +20,52 @@ export async function flags() { const image = sharp( await readDVPLFile(`${DATA}/Gfx/Lobby/flags/${flag}`), ); - const content = ( - await image.trim({ threshold: 100 }).toBuffer() - ).toString('base64'); + const content = await image.trim({ threshold: 100 }).toBuffer(); const name = flag.match(/flag_profile-stat_(.+)\.packed\.webp/)![1]; return { content, - encoding: 'base64', path: `flags/circle/${name}.webp`, } satisfies FileChange; }), )), ...(await Promise.all( - ( - await readdir(`${DATA}/Gfx/Lobby/flags`) - ) + (await readdir(`${DATA}/Gfx/Lobby/flags`)) .filter( (flag) => flag.startsWith('flag_tutor-tank_') && !flag.endsWith('@2x.packed.webp.dvpl'), ) .map(async (flag) => { - const content = await readBase64DVPL( - `${DATA}/Gfx/Lobby/flags/${flag}`, - ); + const content = await readDVPLFile(`${DATA}/Gfx/Lobby/flags/${flag}`); const name = flag.match(/flag_tutor-tank_(.+)\.packed\.webp/)![1]; return { - content, - encoding: 'base64', path: `flags/scratched/${name}.webp`, + content, } satisfies FileChange; }), )), ...(await Promise.all( - ( - await readdir(`${DATA}/Gfx/Lobby/flags`) - ) + (await readdir(`${DATA}/Gfx/Lobby/flags`)) .filter( (flag) => flag.startsWith('flag_filter_') && flag.endsWith('@2x.packed.webp.dvpl'), ) .map(async (flag) => { - const content = ( - await sharp(await readDVPLFile(`${DATA}/Gfx/Lobby/flags/${flag}`)) - .trim({ - threshold: 100, - background: { r: 0, g: 0, b: 0, alpha: 0 }, - }) - .toBuffer() - ).toString('base64'); + const content = await sharp( + await readDVPLFile(`${DATA}/Gfx/Lobby/flags/${flag}`), + ) + .trim({ + threshold: 100, + background: { r: 0, g: 0, b: 0, alpha: 0 }, + }) + .toBuffer(); const name = flag.match(/flag_filter_(.+)@2x\.packed\.webp/)![1]; return { content, - encoding: 'base64', path: `flags/fade_small/${name}.webp`, } satisfies FileChange; }), diff --git a/packages/scripts/src/buildAssets/gameModeBanners.ts b/packages/scripts/src/buildAssets/gameModeBanners.ts index bf0fbee22..c30e6b223 100644 --- a/packages/scripts/src/buildAssets/gameModeBanners.ts +++ b/packages/scripts/src/buildAssets/gameModeBanners.ts @@ -37,16 +37,15 @@ export async function gameModeBanners() { path = `/Gfx/UI/Hangar/GameTypes/battle-type_${name.toLowerCase()}`; } - const content = ( - await sharp(await readDVPLFile(`${DATA}${path}.packed.webp.dvpl`)) - .trim({ background: { r: 0, g: 0, b: 0, alpha: 0 } }) - .toBuffer() - ).toString('base64'); + const content = await sharp( + await readDVPLFile(`${DATA}${path}.packed.webp.dvpl`), + ) + .trim({ background: { r: 0, g: 0, b: 0, alpha: 0 } }) + .toBuffer(); changes.push({ path: `icons/game_mode_banners/${id}.webp`, content, - encoding: 'base64', }); } diff --git a/packages/scripts/src/buildAssets/moduleIcons.ts b/packages/scripts/src/buildAssets/moduleIcons.ts index 21e66e684..23d240f67 100644 --- a/packages/scripts/src/buildAssets/moduleIcons.ts +++ b/packages/scripts/src/buildAssets/moduleIcons.ts @@ -17,18 +17,15 @@ export async function moduleIcons() { .map(async (file) => { const nameRaw = file.match(/vehicle(.+)\.packed\.webp\.dvpl/)![1]; const name = nameRaw[0].toLowerCase() + nameRaw.slice(1); - const content = ( - await sharp( - await readDVPLFile(`${DATA}/Gfx/UI/ModulesTechTree/${file}`), - ) - .trim() - .toBuffer() - ).toString('base64'); + const content = await sharp( + await readDVPLFile(`${DATA}/Gfx/UI/ModulesTechTree/${file}`), + ) + .trim() + .toBuffer(); return { content, path: `icons/modules/${name}.webp`, - encoding: 'base64', } satisfies FileChange; }), ); diff --git a/packages/scripts/src/buildAssets/shellIcons.ts b/packages/scripts/src/buildAssets/shellIcons.ts index 48f46133d..c20f5c12c 100644 --- a/packages/scripts/src/buildAssets/shellIcons.ts +++ b/packages/scripts/src/buildAssets/shellIcons.ts @@ -16,9 +16,7 @@ export async function shellIcons() { ); const changes = await Promise.all( - ( - await readdir(`${DATA}/Gfx/Shared/tank-supply/ammunition/big`) - ) + (await readdir(`${DATA}/Gfx/Shared/tank-supply/ammunition/big`)) .filter((file) => file.endsWith('_l.txt.dvpl')) .map(async (file) => { const name = file.match(/(.+)_l\.txt\.dvpl/)![1]; @@ -32,18 +30,15 @@ export async function shellIcons() { .map(Number); return { - content: ( - await image - .clone() - .extract({ - left: sizes[0], - top: sizes[1], - width: sizes[2], - height: sizes[3], - }) - .toBuffer() - ).toString('base64'), - encoding: 'base64', + content: await image + .clone() + .extract({ + left: sizes[0], + top: sizes[1], + width: sizes[2], + height: sizes[3], + }) + .toBuffer(), path: `icons/shells/${name}.webp`, } satisfies FileChange; }), diff --git a/packages/scripts/src/buildAssets/skillIcons.ts b/packages/scripts/src/buildAssets/skillIcons.ts index 8eeb7eeb5..98bb67f5b 100644 --- a/packages/scripts/src/buildAssets/skillIcons.ts +++ b/packages/scripts/src/buildAssets/skillIcons.ts @@ -37,11 +37,10 @@ export async function skillIcons() { const name = icon.name.split('/').at(-1)!.replace(/_\d$/, ''); const path = `${DATA}${icon.name.replace('~res:', '')}.packed.webp.dvpl`; const image = sharp(await readDVPLFile(path)).trim(); - const content = (await image.toBuffer()).toString('base64'); + const content = await image.toBuffer(); return { content, - encoding: 'base64', path: `icons/skills/${name}.webp`, } satisfies FileChange; }), diff --git a/packages/scripts/src/buildAssets/tankArmors.ts b/packages/scripts/src/buildAssets/tankArmors.ts index 2bb3c6c38..96b956a8d 100644 --- a/packages/scripts/src/buildAssets/tankArmors.ts +++ b/packages/scripts/src/buildAssets/tankArmors.ts @@ -32,10 +32,7 @@ export async function tankArmors() { changes.push({ path: `3d/tanks/armor/${id}.glb`, - encoding: 'base64', - content: Buffer.from(await nodeIO.writeBinary(model)).toString( - 'base64', - ), + content: Buffer.from(await nodeIO.writeBinary(model)), }); }), ); diff --git a/packages/scripts/src/buildAssets/tankIcons.ts b/packages/scripts/src/buildAssets/tankIcons.ts index d1a792ffe..d3421c42d 100644 --- a/packages/scripts/src/buildAssets/tankIcons.ts +++ b/packages/scripts/src/buildAssets/tankIcons.ts @@ -80,15 +80,13 @@ export async function tankIcons() { if (big) { changes.push({ - content: big.toString('base64'), - encoding: 'base64', + content: big, path: `icons/tanks/big/${id}.webp`, }); } if (small) { changes.push({ - content: small.toString('base64'), - encoding: 'base64', + content: small, path: `icons/tanks/small/${id}.webp`, }); } diff --git a/packages/scripts/src/buildAssets/tankModels.ts b/packages/scripts/src/buildAssets/tankModels.ts index 3be402e2e..fcca43f4c 100644 --- a/packages/scripts/src/buildAssets/tankModels.ts +++ b/packages/scripts/src/buildAssets/tankModels.ts @@ -42,10 +42,7 @@ export async function tankModels() { changes.push({ path: `3d/tanks/models/${id}.glb`, - content: Buffer.from(await nodeIO.writeBinary(model)).toString( - 'base64', - ), - encoding: 'base64', + content: Buffer.from(await nodeIO.writeBinary(model)), }); }), ); diff --git a/packages/scripts/src/core/github/assetCommit.ts b/packages/scripts/src/core/github/assetCommit.ts deleted file mode 100644 index 40ab2b77d..000000000 --- a/packages/scripts/src/core/github/assetCommit.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { assertSecret } from '@blitzkit/core'; -import { GithubChangeBlob, createBlob } from './createBlob'; -import { octokit } from './octokit'; - -export class AssetCommit { - constructor(public message: string) {} - private blobs: GithubChangeBlob[] = []; - - async add(path: string, content: string, encoding: 'utf-8' | 'base64') { - console.log(`Blob: adding ${path}...`); - - const blob = await createBlob( - 'tresabhi', - assertSecret(process.env.PUBLIC_ASSET_REPO), - { - content, - encoding, - path, - }, - ); - - this.blobs.push(blob!); - } - - async push() { - if (this.blobs.length === 0) return; - - const latestCommitSha = ( - await octokit.git.getRef({ - owner: 'tresabhi', - repo: assertSecret(process.env.PUBLIC_ASSET_REPO), - ref: `heads/${assertSecret(process.env.PUBLIC_ASSET_BRANCH)}`, - }) - ).data.object.sha; - const treeSha = ( - await octokit.git.getCommit({ - owner: 'tresabhi', - repo: assertSecret(process.env.PUBLIC_ASSET_REPO), - commit_sha: latestCommitSha, - }) - ).data.tree.sha; - const blobs: GithubChangeBlob[] = []; - - const { data: treeData } = await octokit.git.createTree({ - owner: 'tresabhi', - repo: assertSecret(process.env.PUBLIC_ASSET_REPO), - base_tree: treeSha, - tree: blobs, - }); - const { data: newCommitData } = await octokit.git.createCommit({ - owner: 'tresabhi', - repo: assertSecret(process.env.PUBLIC_ASSET_REPO), - message: this.message, - tree: treeData.sha, - parents: [latestCommitSha], - }); - await octokit.git.updateRef({ - owner: 'tresabhi', - repo: assertSecret(process.env.PUBLIC_ASSET_REPO), - ref: `heads/${assertSecret(process.env.PUBLIC_ASSET_BRANCH)}`, - sha: newCommitData.sha, - }); - } -} diff --git a/packages/scripts/src/core/github/commitAssets.ts b/packages/scripts/src/core/github/commitAssets.ts index 5b9ab72e0..5d28f1dd1 100644 --- a/packages/scripts/src/core/github/commitAssets.ts +++ b/packages/scripts/src/core/github/commitAssets.ts @@ -7,7 +7,6 @@ export async function commitAssets(message: string, changes: FileChange[]) { if (changes.length === 0) return; await commitMultipleFiles( - 'tresabhi', assertSecret(process.env.PUBLIC_ASSET_REPO), assertSecret(process.env.PUBLIC_ASSET_BRANCH), `${message} - ${new Date().toDateString()}`, diff --git a/packages/scripts/src/core/github/commitMultipleFiles.ts b/packages/scripts/src/core/github/commitMultipleFiles.ts index 34d0a29cd..f65020321 100644 --- a/packages/scripts/src/core/github/commitMultipleFiles.ts +++ b/packages/scripts/src/core/github/commitMultipleFiles.ts @@ -4,17 +4,16 @@ import { octokit } from './octokit'; export interface FileChange { path: string; - content: string; - encoding: 'utf-8' | 'base64'; + content: Buffer; } export async function commitMultipleFiles( - owner: string, - repo: string, + repoRaw: string, branch: string, message: string, changes: FileChange[], ) { + const [owner, repo] = repoRaw.split('/'); const latestCommitSha = ( await octokit.git.getRef({ owner, diff --git a/packages/scripts/src/core/github/createBlob.ts b/packages/scripts/src/core/github/createBlob.ts index 45ccd7cd7..e63bd1d82 100644 --- a/packages/scripts/src/core/github/createBlob.ts +++ b/packages/scripts/src/core/github/createBlob.ts @@ -20,8 +20,8 @@ export const createBlob = throttle( await octokit.git.createBlob({ owner, repo, - content: change.content, - encoding: change.encoding, + content: change.content.toString('base64'), + encoding: 'base64', }) ).data; @@ -34,7 +34,6 @@ export const createBlob = throttle( } catch (error) { console.warn( `Failed blob ${change.path}; retrying in ${TIME_PER_BLOB}ms...`, - // error, ); await new Promise((resolve) => setTimeout(resolve, TIME_PER_BLOB)); diff --git a/packages/scripts/src/discoverIds.ts b/packages/scripts/src/discoverIds.ts index 0123f6181..c57aaa541 100644 --- a/packages/scripts/src/discoverIds.ts +++ b/packages/scripts/src/discoverIds.ts @@ -13,6 +13,7 @@ import { import { chunk, times, uniq } from 'lodash-es'; import { compress, decompress } from 'lz4js'; import { commitAssets } from './core/github/commitAssets'; +import { FileChange } from './core/github/commitMultipleFiles'; const CHUNK_SIZE = 2 ** 21; const RUN_TIME = 1000 * 60 * 60 * 5.5; @@ -139,24 +140,25 @@ function post() { `Chunk ${index} with ${chunk.length} ids (compressed: ${compressed.length}; uncompressed: ${buffer.length})`, ); - const content = Buffer.from(compressed).toString('base64'); + const content = Buffer.from(compressed); return { content, - encoding: 'base64' as const, path: `ids/${index}.dids.lz4`, - }; + } satisfies FileChange; }); commitAssets('discovered ids', [ ...files, { - content: JSON.stringify({ - chunks: idsChunked.length, - count: ids.length, - time: Date.now(), - } satisfies DiscoveredIdsDefinitions), - encoding: 'utf-8', + content: Buffer.from( + JSON.stringify({ + chunks: idsChunked.length, + count: ids.length, + time: Date.now(), + } satisfies DiscoveredIdsDefinitions), + 'utf-8', + ), path: 'ids/manifest.json', }, ]); diff --git a/packages/scripts/src/reviews.ts b/packages/scripts/src/reviews.ts index c3914b7d1..b85c7e6c2 100644 --- a/packages/scripts/src/reviews.ts +++ b/packages/scripts/src/reviews.ts @@ -1,6 +1,6 @@ import { asset, - encodePB64, + encodePBBuffer, Reviews, toUniqueId, Video, @@ -126,8 +126,7 @@ for (const tank of tanksSanitized) { await commitAssets('reviews', [ { - content: encodePB64(Reviews, reviews), - encoding: 'base64', + content: encodePBBuffer(Reviews, reviews), path: 'definitions/reviews.pb', }, ]); diff --git a/packages/website/src/components/Checks.tsx b/packages/website/src/components/Checks.tsx index 00b1c9654..f62067494 100644 --- a/packages/website/src/components/Checks.tsx +++ b/packages/website/src/components/Checks.tsx @@ -1,6 +1,6 @@ 'use client'; -import { idToRegion } from '@blitzkit/core'; +import { assertSecret, idToRegion } from '@blitzkit/core'; import { Button, Flex, Heading, Link, Text } from '@radix-ui/themes'; import { useEffect, useState } from 'react'; import { App } from '../stores/app'; @@ -81,9 +81,9 @@ function Content() { fetch( `https://api.worldoftanks.${idToRegion( wargaming.id, - )}/wot/auth/prolongate/?application_id=${ - import.meta.env.PUBLIC_WARGAMING_APPLICATION_ID - }&access_token=${wargaming.token}`, + )}/wot/auth/prolongate/?application_id=${assertSecret( + import.meta.env.PUBLIC_WARGAMING_APPLICATION_ID, + )}&access_token=${wargaming.token}`, ) .then((response) => response.json() as Promise) .then((json) => { diff --git a/packages/website/src/components/Footer.astro b/packages/website/src/components/Footer.astro index 56df86030..a42fd930c 100644 --- a/packages/website/src/components/Footer.astro +++ b/packages/website/src/components/Footer.astro @@ -1,5 +1,5 @@ --- -import { fetchGameDefinitions } from '@blitzkit/core'; +import { assertSecret, fetchGameDefinitions } from '@blitzkit/core'; import { Code, Flex, Heading, Link, Text } from '@radix-ui/themes'; import packageJson from '../../../../package.json'; @@ -134,7 +134,7 @@ const gameDefinitions = await fetchGameDefinitions(); {gameDefinitions.version} - {import.meta.env.PUBLIC_ASSET_BRANCH} + {assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH)} @@ -150,7 +150,7 @@ const gameDefinitions = await fetchGameDefinitions(); CDN - {import.meta.env.PUBLIC_ASSET_BRANCH} + {assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH)}