UNPKG

ckn.backend

Version:

CKN Framework for Backend

49 lines (44 loc) 1.66 kB
import {File} from 'ckn.stream'; import {Middleware} from "../core/Middleware.js"; import express from "express"; class StaticContentMiddleware extends Middleware { constructor(path = "/", publicFolder = "public") { super(); this.priority = 8; this.publicFolders = [{ path: path, publicFolder: publicFolder }]; } addPublicFolder(path = "/", publicFolder = "public") { this.publicFolders.push({ path: path, publicFolder: publicFolder }); return this; } changePublicFolder(value) { this.publicFolder = value; return this; } async onStartingServer(backend, next) { for (let folder of this.publicFolders) { backend.server.use(folder.path, express.static(folder.publicFolder)); this.log.info("[OK]", `Static folder '${folder.publicFolder}' as path '${folder.path}' has been set.`); } for (let application of backend.modules.values()) { let fullApplicationPublicPath = File.join(application.directory.path, "public"); if (fullApplicationPublicPath.toDirectory().isExist) { backend.server.use("/" + application.url, express.static(fullApplicationPublicPath)); } } for (let theme of backend.themes.values()) { let themPath = File.join(theme.path, "public"); if (themPath.toDirectory().isExist) { backend.server.use("/" + theme.path.replace("\\", "/"), express.static(themPath)); } } next(); } } export {StaticContentMiddleware}