const express = require('express'); const path = require('path'); const fs = require('fs'); const templatesPath = path.resolve(__dirname, './templates'); const componentsPath = path.resolve(__dirname, './core/components'); module.exports = { async boot(app) { // Extended locale intl polyfill const IntlPolyfill = require('intl'); Intl.NumberFormat = IntlPolyfill.NumberFormat; Intl.DateTimeFormat = IntlPolyfill.DateTimeFormat; // Init database instance require('./core/database').init(app.dataSources); require('./core/smtp').init(); require('./core/cluster').init(); require('./core/mixins'); require('./core/filters'); const componentsDir = fs.readdirSync(componentsPath); componentsDir.forEach(componentName => { const componentDir = path.join(componentsPath, '/', componentName); const assetsDir = `${componentDir}/assets`; app.use(`/api/${componentName}/assets`, express.static(assetsDir)); }); /** * Serve static files */ const templatesDir = fs.readdirSync(templatesPath); templatesDir.forEach(directory => { const templateTypeDir = path.join(templatesPath, '/', directory); const templates = fs.readdirSync(templateTypeDir); templates.forEach(templateName => { const templateDir = path.join(templatesPath, '/', directory, '/', templateName); const assetsDir = `${templateDir}/assets`; app.use(`/api/${templateName}/assets`, express.static(assetsDir)); }); }); return true; }, Email: require('./core/email'), Report: require('./core/report'), storage: require('./core/storage'), smtp: require('./core/smtp'), db: require('./core/database') };