import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { brotliDecompressSync, gunzipSync } from "node:zlib"; import { afterEach, describe, expect, test } from "vitest"; import { precompressWebAssets, pruneUnreferencedDuplicateCss } from "./precompress-web-assets.mjs"; const temporaryDirectories = []; afterEach(async () => { await Promise.all(temporaryDirectories.splice(0).map((directory) => rm(directory, { force: true, recursive: true }))); }); describe("precompressWebAssets", () => { test("writes deterministic sidecars only for worthwhile static text assets", async () => { const directory = await mkdtemp(path.join(os.tmpdir(), "hivegrid-precompress-")); temporaryDirectories.push(directory); const source = Buffer.from("const message = 'compressible';\n".repeat(500)); const jsPath = path.join(directory, "app.js"); await Promise.all([writeFile(jsPath, source), writeFile(path.join(directory, "small.json"), "{}")]); const report = await precompressWebAssets(directory); expect(report).toEqual({ considered: 1, brotliWritten: 1, gzipWritten: 1 }); expect(brotliDecompressSync(await readFile(`${jsPath}.br`))).toEqual(source); expect(gunzipSync(await readFile(`${jsPath}.gz`))).toEqual(source); await expect(readFile(path.join(directory, "small.json.br"))).rejects.toMatchObject({ code: "ENOENT" }); }); test("removes only byte-identical unreferenced React Router server CSS duplicates", async () => { const directory = await mkdtemp(path.join(os.tmpdir(), "hivegrid-css-prune-")); temporaryDirectories.push(directory); const duplicateCss = Buffer.from(".root { color: green; }".repeat(100)); await Promise.all([ writeFile(path.join(directory, "root-hash.css"), duplicateCss), writeFile(path.join(directory, "server-build-hash.css"), duplicateCss), writeFile(path.join(directory, "manifest.js"), 'window.assets=["root-hash.css"];'), ]); await expect(pruneUnreferencedDuplicateCss(directory)).resolves.toEqual({ removed: 1, bytesRemoved: duplicateCss.length, }); await expect(readFile(path.join(directory, "server-build-hash.css"))).rejects.toMatchObject({ code: "ENOENT" }); await expect(readFile(path.join(directory, "root-hash.css"))).resolves.toEqual(duplicateCss); }); test("keeps referenced or non-identical server CSS assets", async () => { const directory = await mkdtemp(path.join(os.tmpdir(), "hivegrid-css-prune-")); temporaryDirectories.push(directory); await Promise.all([ writeFile(path.join(directory, "root-hash.css"), ".root { color: green; }"), writeFile(path.join(directory, "server-build-referenced.css"), ".root { color: green; }"), writeFile(path.join(directory, "server-build-distinct.css"), ".root { color: red; }"), writeFile(path.join(directory, "manifest.js"), 'window.assets=["server-build-referenced.css"];'), ]); await expect(pruneUnreferencedDuplicateCss(directory)).resolves.toEqual({ removed: 0, bytesRemoved: 0 }); await expect(readFile(path.join(directory, "server-build-referenced.css"))).resolves.toBeTruthy(); await expect(readFile(path.join(directory, "server-build-distinct.css"))).resolves.toBeTruthy(); }); });