47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
"use strict";
|
|
|
|
const fs = require("node:fs");
|
|
const path = require("node:path");
|
|
const { createHttpError } = require("./dashboardUtils");
|
|
|
|
const ASSET_MAP = {
|
|
"/": { file: "index.html", contentType: "text/html; charset=utf-8" },
|
|
"/login": { file: "login.html", contentType: "text/html; charset=utf-8" },
|
|
"/setup": { file: "setup.html", contentType: "text/html; charset=utf-8" },
|
|
"/dashboard.css": { file: "dashboard.css", contentType: "text/css; charset=utf-8" },
|
|
"/login.css": { file: "login.css", contentType: "text/css; charset=utf-8" },
|
|
"/setup.css": { file: "setup.css", contentType: "text/css; charset=utf-8" },
|
|
"/dashboard.js": {
|
|
file: "dashboard.js",
|
|
contentType: "application/javascript; charset=utf-8",
|
|
},
|
|
"/login.js": {
|
|
file: "login.js",
|
|
contentType: "application/javascript; charset=utf-8",
|
|
},
|
|
"/setup.js": {
|
|
file: "setup.js",
|
|
contentType: "application/javascript; charset=utf-8",
|
|
},
|
|
};
|
|
|
|
function loadDashboardAsset(assetsDir, requestPath) {
|
|
const asset = ASSET_MAP[requestPath];
|
|
if (!asset) return null;
|
|
|
|
const filePath = path.join(assetsDir, asset.file);
|
|
if (!fs.existsSync(filePath)) {
|
|
throw createHttpError(500, `대시보드 파일이 없습니다: ${asset.file}`);
|
|
}
|
|
|
|
return {
|
|
content: fs.readFileSync(filePath),
|
|
contentType: asset.contentType,
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
ASSET_MAP,
|
|
loadDashboardAsset,
|
|
};
|