61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
import { file } from "bun";
|
|
import { $ } from "execa";
|
|
import {
|
|
dirAsync,
|
|
existsAsync,
|
|
inspectTreeAsync,
|
|
readAsync,
|
|
removeAsync,
|
|
writeAsync,
|
|
} from "fs-jetpack";
|
|
import { gunzipSync } from "zlib";
|
|
import { downloadFile } from "../api/_deploy";
|
|
import { dir } from "../utils/dir";
|
|
import { g } from "../utils/global";
|
|
const decoder = new TextDecoder();
|
|
|
|
export const loadWeb = async () => {
|
|
await dirAsync(dir(`app/static`));
|
|
};
|
|
|
|
export const loadWebCache = async (site_id: string, ts: number | string) => {
|
|
const web = g.web;
|
|
if (web) {
|
|
const path = dir(`app/web/deploys/${ts}`);
|
|
if (await existsAsync(path)) {
|
|
const fileContent = await readAsync(path, "buffer");
|
|
if (fileContent) {
|
|
console.log(
|
|
`Loading site ${site_id}: ${humanFileSize(fileContent.byteLength)}`
|
|
);
|
|
|
|
const res = gunzipSync(fileContent);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
function humanFileSize(bytes: any, si = false, dp = 1) {
|
|
const thresh = si ? 1000 : 1024;
|
|
|
|
if (Math.abs(bytes) < thresh) {
|
|
return bytes + " B";
|
|
}
|
|
|
|
const units = si
|
|
? ["kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]
|
|
: ["KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"];
|
|
let u = -1;
|
|
const r = 10 ** dp;
|
|
|
|
do {
|
|
bytes /= thresh;
|
|
++u;
|
|
} while (
|
|
Math.round(Math.abs(bytes) * r) / r >= thresh &&
|
|
u < units.length - 1
|
|
);
|
|
|
|
return bytes.toFixed(dp) + " " + units[u];
|
|
}
|