UNPKG

varan

Version:

A webpack starter kit for offline-first bring-your-own-code apps with server side rendering

77 lines 3.18 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const fs_extra_1 = __importDefault(require("fs-extra")); // Init const additionalExtensions = { gzip: '.gz', brotli: '.br', }; const ignoredExtensions = ['.map']; // Exports async function getBuildStatsFromManifest(searchPath, manifest) { try { // Locate all files const statistics = (manifest.assets || []) .filter((asset) => !ignoredExtensions.includes(path_1.default.extname(asset.name))) .reduce((acc, asset) => { acc.assets[asset.name] = { name: asset.name, size: asset.size, chunks: {}, }; asset.chunkNames.forEach((chunkName) => { if (!acc.chunks[chunkName]) { acc.chunks[chunkName] = { name: chunkName, assets: {}, get size() { return Object.values(this.assets).reduce((sum, curAsset) => { return curAsset.size ? sum + curAsset.size : sum; }, 0); }, get gzip() { return Object.values(this.assets).reduce((sum, curAsset) => { return curAsset.gzip ? (sum || 0) + curAsset.gzip : sum; }, undefined); }, get brotli() { return Object.values(this.assets).reduce((sum, curAsset) => { return curAsset.brotli ? (sum || 0) + curAsset.brotli : sum; }, undefined); }, }; } acc.chunks[chunkName].assets[asset.name] = acc.assets[asset.name]; acc.assets[asset.name].chunks[chunkName] = acc.chunks[chunkName]; }); return acc; }, { chunks: {}, assets: {} }); // Enrich files with compressed version details const files = Object.values(statistics.assets); const extensions = Object.entries(additionalExtensions); // TODO: Consider rewriting to optimize for parallel lookup for (const file of files) { for (const [extName, extValue] of extensions) { try { // eslint-disable-next-line no-await-in-loop const extFile = await fs_extra_1.default.stat(path_1.default.resolve(searchPath, file.name + extValue)); file[extName] = extFile.size; } catch (err) { // Empty } } } // Rewrite to correct format return statistics; } catch (err) { return null; } } exports.default = getBuildStatsFromManifest; //# sourceMappingURL=getBuildStatsFromManifest.js.map