initial commit

This commit is contained in:
2026-10-16 22:08:45 +03:00
commit 19ee41411b
97 changed files with 15141 additions and 0 deletions

7
scripts/icons.js Normal file
View File

@@ -0,0 +1,7 @@
import sharp from "sharp";
for (const size of [192, 512])
await sharp("public/icon.svg")
.resize(size, size)
.png()
.toFile(`public/icon-${size}.png`);
console.log("Иконки PWA созданы.");

27
scripts/serviceworker.js Normal file
View File

@@ -0,0 +1,27 @@
import { readdir, readFile, writeFile } from "node:fs/promises";
import { createHash } from "node:crypto";
const assets = [
"/",
"/manifest.webmanifest",
"/icon.svg",
"/icon-192.png",
"/icon-512.png",
...(await readdir("dist/assets"))
.filter((f) => /\.(js|css)$/.test(f))
.map((f) => "/assets/" + f),
...(await readdir("dist/fonts"))
.filter((f) => f === "RobotoFlex-Variable.ttf")
.map((f) => "/fonts/" + f),
];
const rev = createHash("sha256")
.update(assets.join("|"))
.digest("hex")
.slice(0, 12);
const template = await readFile("public/sw.js", "utf8");
await writeFile(
"dist/sw.js",
template
.replace("__REVISION__", rev)
.replace("/* build assets */ []", JSON.stringify(assets)),
);
console.log(`Офлайн-кэш: ${assets.length} ресурсов (${rev}).`);

9
scripts/sync.js Normal file
View File

@@ -0,0 +1,9 @@
import { getCatalog } from "../server/source.js";
const catalog = await getCatalog(true);
if (catalog.stale) {
console.error(catalog.error);
process.exitCode = 1;
} else
console.log(
`Каталог обновлён: ${catalog.files.length} Word-документов, ${catalog.updatedAt}`,
);