rollup-plugin-visualizer
Version:
Visualize and analyze your bundle to quickly see which modules are taking up space.
33 lines (32 loc) • 1.23 kB
JavaScript
import * as zlib from "node:zlib";
import { promisify } from "node:util";
const gzip = promisify(zlib.gzip);
const brotliCompress = promisify(zlib.brotliCompress);
const gzipOptions = (options) => ({
level: 9,
...options,
});
const brotliOptions = (options, buffer) => ({
params: {
[zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT,
[zlib.constants.BROTLI_PARAM_QUALITY]: zlib.constants.BROTLI_MAX_QUALITY,
[zlib.constants.BROTLI_PARAM_SIZE_HINT]: buffer.length,
},
...options,
});
const createGzipCompressor = (options) => (buffer) => gzip(buffer, gzipOptions(options || {}));
export const createGzipSizeGetter = (options) => {
const compress = createGzipCompressor(options);
return async (code) => {
const data = await compress(Buffer.from(code, "utf-8"));
return data.length;
};
};
const createBrotliCompressor = (options) => (buffer) => brotliCompress(buffer, brotliOptions(options || {}, buffer));
export const createBrotliSizeGetter = (options) => {
const compress = createBrotliCompressor(options);
return async (code) => {
const data = await compress(Buffer.from(code, "utf-8"));
return data.length;
};
};