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)}`); + } } }