feat(server): add safeguard if public is missing

This commit is contained in:
Elian Doran 2025-05-21 23:31:40 +03:00
parent 8cf4040ca0
commit 9a18fea073
No known key found for this signature in database

View File

@ -5,6 +5,7 @@ import express from "express";
import { getResourceDir, isDev } from "../services/utils.js"; import { getResourceDir, isDev } from "../services/utils.js";
import type serveStatic from "serve-static"; import type serveStatic from "serve-static";
import proxy from "express-http-proxy"; import proxy from "express-http-proxy";
import { existsSync } from "fs";
const persistentCacheStatic = (root: string, options?: serveStatic.ServeStaticOptions<express.Response<unknown, Record<string, unknown>>>) => { const persistentCacheStatic = (root: string, options?: serveStatic.ServeStaticOptions<express.Response<unknown, Record<string, unknown>>>) => {
if (!isDev) { if (!isDev) {
@ -29,13 +30,18 @@ async function register(app: express.Application) {
proxyReqPathResolver: (req) => "/" + assetUrlFragment + `/@fs` + req.url proxyReqPathResolver: (req) => "/" + assetUrlFragment + `/@fs` + req.url
})); }));
} else { } else {
app.use(`/${assetUrlFragment}/src`, persistentCacheStatic(path.join(resourceDir, "public", "src"))); const publicDir = path.join(resourceDir, "public");
app.use(`/${assetUrlFragment}/stylesheets`, persistentCacheStatic(path.join(resourceDir, "public", "stylesheets"))); if (!existsSync(publicDir)) {
app.use(`/${assetUrlFragment}/libraries`, persistentCacheStatic(path.join(resourceDir, "public", "libraries"))); throw new Error("Public directory is missing at: " + path.resolve(publicDir));
app.use(`/${assetUrlFragment}/fonts`, persistentCacheStatic(path.join(resourceDir, "public", "fonts"))); }
app.use(`/${assetUrlFragment}/translations/`, persistentCacheStatic(path.join(resourceDir, "public", "translations")));
app.use(`/${assetUrlFragment}/src`, persistentCacheStatic(path.join(publicDir, "src")));
app.use(`/${assetUrlFragment}/stylesheets`, persistentCacheStatic(path.join(publicDir, "stylesheets")));
app.use(`/${assetUrlFragment}/libraries`, persistentCacheStatic(path.join(publicDir, "libraries")));
app.use(`/${assetUrlFragment}/fonts`, persistentCacheStatic(path.join(publicDir, "fonts")));
app.use(`/${assetUrlFragment}/translations/`, persistentCacheStatic(path.join(publicDir, "translations")));
app.use(`/${assetUrlFragment}/images`, persistentCacheStatic(path.join(resourceDir, "assets", "images"))); app.use(`/${assetUrlFragment}/images`, persistentCacheStatic(path.join(resourceDir, "assets", "images")));
app.use(`/node_modules/`, persistentCacheStatic(path.join(resourceDir, "public/node_modules"))); app.use(`/node_modules/`, persistentCacheStatic(path.join(publicDir, "node_modules")));
} }
app.use(`/${assetUrlFragment}/doc_notes`, persistentCacheStatic(path.join(resourceDir, "assets", "doc_notes"))); app.use(`/${assetUrlFragment}/doc_notes`, persistentCacheStatic(path.join(resourceDir, "assets", "doc_notes")));
app.use(`/assets/vX/fonts`, express.static(path.join(srcRoot, "public/fonts"))); app.use(`/assets/vX/fonts`, express.static(path.join(srcRoot, "public/fonts")));