UNPKG

mongo-express

Version:
49 lines (39 loc) 1.67 kB
import fs from 'node:fs'; import { fileURLToPath } from 'node:url'; import express from 'express'; import swig from 'free-swig'; import fileUpload from 'express-fileupload'; import * as swigFilters from './filters.js'; import router from './router.js'; const middleware = async function (config) { const app = express(); app.locals.assets = JSON.parse(fs.readFileSync(fileURLToPath(new URL('../build-assets.json', import.meta.url)))); // Set up swig const swigOptions = { cache: process.env.NODE_ENV === 'production' ? 'memory' : false, }; const swigEngine = new swig.Swig(swigOptions); app.engine('html', swigEngine.renderFile); for (const name of Object.keys(swigFilters)) { swig.setFilter(name, swigFilters[name]); } // App configuration app.set('views', fileURLToPath(new URL('views', import.meta.url))); app.set('view engine', 'html'); app.set('view options', { layout: false }); // Handle file upload app.use(fileUpload({ limits: { fileSize: 50 * 1024 * 1024 }, })); app.use('/', await router(config)); app.set('read_only', config.options.readOnly || false); app.set('fullwidth_layout', config.options.fullwidthLayout || false); app.set('me_confirm_delete', config.options.confirmDelete || false); app.set('me_collapsible_json', config.options.collapsibleJSON || false); app.set('me_collapsible_json_default_unfold', config.options.collapsibleJSONDefaultUnfold || false); app.set('me_no_export', config.options.noExport || false); app.set('gridFSEnabled', config.options.gridFSEnabled || false); app.set('no_delete', config.options.noDelete || false); return app; }; export default middleware;