From 53ea8584b6f92eda15c1962ac7c0aa5d2c5c2fed Mon Sep 17 00:00:00 2001 From: Gowtham Shanmugasundaram Date: Tue, 8 Oct 2024 17:13:44 +0530 Subject: [PATCH] Fix bundle analyzer script Signed-off-by: Gowtham Shanmugasundaram --- .eslintrc.js | 1 + analyzeTest.ts | 15 ++++++++------- package.json | 1 + yarn.lock | 5 +++++ 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 04c0c9de1..ee8c53fce 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -86,6 +86,7 @@ module.exports = { '**/*.spec.tsx', './jest/setup.ts', './cypress/**', + './analyzeTest.ts', ], optionalDependencies: false, peerDependencies: false, diff --git a/analyzeTest.ts b/analyzeTest.ts index b91169808..adbae2323 100644 --- a/analyzeTest.ts +++ b/analyzeTest.ts @@ -1,4 +1,5 @@ import * as fs from 'fs'; +import { parseChunked } from '@discoveryjs/json-ext'; const pluginName = process.env.PLUGIN; const MAX_ASSET_SIZE = 17; //17 MiB @@ -12,17 +13,17 @@ const stringifyMiB = (value: ReturnType): string => const getParsedStatFile = () => { const filePath = getStatsFilePath(); - const statsFile = fs.readFileSync(filePath, 'utf-8'); - return JSON.parse(statsFile); + + return parseChunked(fs.createReadStream(filePath, { encoding: 'utf8' })); }; type BundleDataMap = Record; // [Valid Bundles, Violating Bunldes] -type GetBundleInformation = () => [BundleDataMap, BundleDataMap]; +type GetBundleInformation = () => Promise<[BundleDataMap, BundleDataMap]>; -const getBundleInformation: GetBundleInformation = () => { - const statsData = getParsedStatFile(); +const getBundleInformation: GetBundleInformation = async () => { + const statsData = await getParsedStatFile(); const validAssets = {}; const violatingAssets = {}; @@ -39,8 +40,8 @@ const getBundleInformation: GetBundleInformation = () => { return [validAssets, violatingAssets]; }; -const validateBuild = () => { - const [validAssets, violatingAssets] = getBundleInformation(); +const validateBuild = async () => { + const [validAssets, violatingAssets] = await getBundleInformation(); if (Object.keys(violatingAssets).length > 0) { // eslint-disable-next-line no-console console.error('Assets are larger than expected', violatingAssets); diff --git a/package.json b/package.json index 9ad42f1b4..7db94177e 100644 --- a/package.json +++ b/package.json @@ -128,6 +128,7 @@ }, "devDependencies": { "@cypress/webpack-preprocessor": "^5.9.1", + "@discoveryjs/json-ext": "0.6.1", "@swc/core": "1.3.19", "@swc/jest": "^0.2.23", "@testing-library/jest-dom": "^6.4.5", diff --git a/yarn.lock b/yarn.lock index f3f6fc4f2..58d939acb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1278,6 +1278,11 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@discoveryjs/json-ext@0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.6.1.tgz#593da7a17a31a72a874e313677183334a49b01c9" + integrity sha512-boghen8F0Q8D+0/Q1/1r6DUEieUJ8w2a1gIknExMSHBsJFOr2+0KUfHiVYBvucPwl3+RU5PFBK833FjFCh3BhA== + "@discoveryjs/json-ext@^0.5.0": version "0.5.3" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz#90420f9f9c6d3987f176a19a7d8e764271a2f55d"