From 4e0952a3c05c98605f93e1f076c88c754b421372 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Fri, 27 Mar 2026 19:13:02 +0000 Subject: [PATCH] Output largest inputs --- pr-checks/bundle-metadata.ts | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/pr-checks/bundle-metadata.ts b/pr-checks/bundle-metadata.ts index 1e7585536..b112cbfbd 100755 --- a/pr-checks/bundle-metadata.ts +++ b/pr-checks/bundle-metadata.ts @@ -4,14 +4,25 @@ import * as fs from "node:fs/promises"; import { BUNDLE_METADATA_FILE } from "./config"; +interface InputInfo { + bytesInOutput: number; +} + +type Inputs = Record; + interface Output { bytes: number; + inputs: Inputs; } interface Metadata { outputs: Output[]; } +function toMB(bytes: number): string { + return `${(bytes / (1024 * 1024)).toFixed(2)}MB`; +} + async function main() { const fileContents = await fs.readFile(BUNDLE_METADATA_FILE); const metadata = JSON.parse(String(fileContents)) as Metadata; @@ -19,9 +30,15 @@ async function main() { for (const [outputFile, outputData] of Object.entries( metadata.outputs, ).reverse()) { - console.info( - `${outputFile}: ${(outputData.bytes / (1024 * 1024)).toFixed(2)}MB`, - ); + console.info(`${outputFile}: ${toMB(outputData.bytes)}`); + + for (const [inputName, inputData] of Object.entries(outputData.inputs)) { + // Ignore any inputs that make up less than 5% of the output. + const percentage = (inputData.bytesInOutput / outputData.bytes) * 100.0; + if (percentage < 5.0) continue; + + console.info(` ${inputName}: ${toMB(inputData.bytesInOutput)}`); + } } }