1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import { BuildOptions, build } from "esbuild";
import { existsSync } from "node:fs";
import { constants, copyFile, mkdir, readdir, rm } from "node:fs/promises";
import { join } from "node:path";
const distDir = "dist";
const contentDir = join(distDir, "static");
const teawieArchiveDir = "Teawie-Archive/teawie-media/Original Teawies";
const checkAndCreate = async (dir: string) => {
if (!existsSync(dir)) {
await mkdir(dir, { recursive: true });
} else {
for (const f of await readdir(dir)) {
await rm(join(dir, f), { recursive: true, force: true });
}
}
};
await checkAndCreate(distDir);
await checkAndCreate(contentDir);
await checkAndCreate(join(contentDir, "teawie"));
const wies = (await readdir(teawieArchiveDir)).filter((wie) => {
const fileExt = wie.split(".").pop();
return !["ini", "txt"].includes(fileExt ?? "");
});
for (const f of wies) {
await copyFile(join(teawieArchiveDir, f), join(contentDir, "teawie", f), constants.COPYFILE_FICLONE);
}
const define = {
WIES: JSON.stringify(wies.map((wie) => wie.replace(" ", "%20"))),
WIE_DIR: JSON.stringify("static/teawie"),
};
const options = {
entryPoints: ["src/index.ts"],
outfile: join(distDir, "_worker.js"),
define,
format: "esm",
bundle: true,
minify: true,
} satisfies BuildOptions;
await build(options);
|