import ApplicationComponent from "../ApplicationComponent"; import express, {Router} from "express"; import {PathParams} from "express-serve-static-core"; import * as path from "path"; import {logger} from "../Logger"; export default class ServeStaticDirectoryComponent extends ApplicationComponent { private readonly root: string; private readonly path?: PathParams; public constructor(root: string, routePath?: PathParams) { super(); this.root = root; this.path = routePath; } public async init(router: Router): Promise { const resolvedRoot = path.join(__dirname, this.getApp().isInNodeModules() ? '../../../' : '../../', this.root); if (this.path) { router.use(this.path, express.static(resolvedRoot, {maxAge: 1000 * 3600 * 72})); } else { router.use(express.static(resolvedRoot, {maxAge: 1000 * 3600 * 72})); } logger.info('Serving static files in', resolvedRoot, ' on ', this.path || '/'); } }