UNPKG

ckn.backend

Version:

CKN Framework for Backend

53 lines (49 loc) 1.8 kB
import {ckn} from "ckn.core"; import {Middleware} from "../core/Middleware.js"; import {File} from "ckn.stream"; import path from "path"; class ThemeMiddleware extends Middleware { constructor() { super(); this.priority = 5; this.themeFolder = "themes"; } async onStartingServer(backend, next) { backend.themes = []; let themePath = File.join(this.themeFolder); let themeDirectory = themePath.toDirectory(); if (themeDirectory.isExist) { for (let directory of themeDirectory.directories) { let name = directory.name; backend.themes[name] = { name: name, path: directory.path, subthemes: [] }; for (let themFile of directory.path.toDirectory().files) { let subThemeName = themFile.name.replace(".js", ""); if (themFile.isExist) { let themeClass = Object.values(await import("file://"+path.resolve(themFile.fullPath)))[0]; backend.themes[name].subthemes[subThemeName] = { name: subThemeName, themeClass: themeClass } } } } } next(); } async onInitialSession(backend, session, next) { session.loadTheme = (themeName, subThemeName) => { if (backend.themes[themeName] != null) { let theme = new backend.themes[themeName].subthemes[subThemeName].themeClass(); theme.self = theme; return theme; } return null; }; next(); } } export {ThemeMiddleware}