import { createId } from "@paralleldrive/cuid2"; import brotliPromise from "brotli-wasm"; import { spawn } from "bun"; import { dir } from "dir"; import { fdir } from "fdir"; import { existsAsync, listAsync, removeAsync, writeAsync } from "fs-jetpack"; const brotli = await brotliPromise; await removeAsync(dir.path("app/web/.parcel-cache")); await removeAsync(dir.path("app/static")); await writeAsync( dir.path("app/web/timestamp.ts"), `export const version = "${createId().substring(0, 7)}";`, ); const args = [ "node", dir.path("node_modules/.bin/parcel"), "build", "./src/index.tsx", // "--no-optimize", "--no-scope-hoist", "--dist-dir", dir.path(`app/static`), ]; const parcel = spawn({ cmd: args, cwd: dir.path("app/web"), stdio: ["ignore", "inherit", "inherit"], }); await parcel.exited; const public_br = dir.path("app/web/public-br"); if (!(await existsAsync(public_br))) { const api = new fdir().withRelativePaths().crawl(dir.path("app/web/public")); const files = api.sync(); if (files) { await Promise.all( files.map(async (file) => { const br = brotli.compress( new Uint8Array( await Bun.file(dir.path(`app/web/public/${file}`)).arrayBuffer(), ), { quality: 11 }, ); if (br) { console.log(`Compressing [public] ${file}`); await writeAsync( dir.path(`app/web/public-br/${file}`), Buffer.from(br), ); } }), ); } } const static_br = dir.path("app/static-br"); await removeAsync(static_br); const files = await listAsync(dir.path("app/static")); if (files) { // await Promise.all( // files // .filter((file) => statSync(dir.path(`app/static/${file}`)).isFile()) // .map(async (file) => { // if (!(await Bun.file(dir.path(`app/static-br/${file}`)).exists())) { // const br = brotli.compress( // new Uint8Array( // await Bun.file(dir.path(`app/static/${file}`)).arrayBuffer(), // ), // { quality: 11 }, // ); // if (br) { // console.log(`Compressing [static] ${file}`); // await writeAsync( // dir.path(`app/static-br/${file}`), // Buffer.from(br), // ); // } // } // }), // ); // const pub = await listAsync(dir.path("app/web/public-br")); // if (pub) { // await Promise.all( // pub.map(async (file) => { // if (await existsAsync(`app/static-br/${file}`)) { // await removeAsync(`app/static-br/${file}`); // } // await copyAsync( // dir.path(`app/web/public-br/${file}`), // dir.path(`app/static-br/${file}`), // ); // }), // ); // } } await import("./build-site");