import express from 'express'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { config, ensureRuntimeDirectories } from './src/config.js'; import { openDatabase } from './src/database.js'; import { createApiRouter } from './src/routes/api.js'; import { notFoundHandler, errorHandler } from './src/middleware/errors.js'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); ensureRuntimeDirectories(); const db = openDatabase(); const app = express(); app.disable('x-powered-by'); app.use(express.json({ limit: config.maxJsonBodyBytes, type: ['application/json', 'application/*+json', 'text/json'] })); app.use(express.urlencoded({ extended: true, limit: '2mb' })); app.use('/api', createApiRouter(db)); app.use(express.static(path.join(__dirname, 'public'), { extensions: ['html'] })); app.use(notFoundHandler); app.use(errorHandler); const server = app.listen(config.port, config.host, () => { console.log(`Wegwichtel läuft auf http://${config.host}:${config.port}`); }); function shutdown(signal) { console.log(`${signal}: Server wird beendet.`); server.close(() => { db.close(); process.exit(0); }); } process.on('SIGINT', () => shutdown('SIGINT')); process.on('SIGTERM', () => shutdown('SIGTERM'));