mirror of
https://github.com/zadam/trilium.git
synced 2025-06-06 18:08:33 +02:00
76 lines
2.2 KiB
TypeScript
76 lines
2.2 KiB
TypeScript
import express from "express";
|
|
import path from "path";
|
|
import favicon from "serve-favicon";
|
|
import cookieParser from "cookie-parser";
|
|
import helmet from "helmet";
|
|
import compression from "compression";
|
|
import { fileURLToPath } from "url";
|
|
import { dirname } from "path";
|
|
import sessionParser from "./routes/session_parser.js";
|
|
import utils from "./services/utils.js";
|
|
import assets from "./routes/assets.js";
|
|
import routes from "./routes/routes.js";
|
|
import custom from "./routes/custom.js";
|
|
import error_handlers from "./routes/error_handlers.js";
|
|
import { startScheduledCleanup } from "./services/erase.js";
|
|
import sql_init from "./services/sql_init.js";
|
|
|
|
await import('./services/handlers.js');
|
|
await import('./becca/becca_loader.js');
|
|
|
|
const app = express();
|
|
|
|
const scriptDir = dirname(fileURLToPath(import.meta.url));
|
|
|
|
// Initialize DB
|
|
sql_init.initializeDb();
|
|
|
|
// view engine setup
|
|
app.set('views', path.join(scriptDir, 'views'));
|
|
app.set('view engine', 'ejs');
|
|
|
|
if (!utils.isElectron()) {
|
|
app.use(compression()); // HTTP compression
|
|
}
|
|
|
|
app.use(helmet({
|
|
hidePoweredBy: false, // errors out in electron
|
|
contentSecurityPolicy: false,
|
|
crossOriginEmbedderPolicy: false
|
|
}));
|
|
|
|
app.use(express.text({ limit: '500mb' }));
|
|
app.use(express.json({ limit: '500mb' }));
|
|
app.use(express.raw({ limit: '500mb' }));
|
|
app.use(express.urlencoded({ extended: false }));
|
|
app.use(cookieParser());
|
|
app.use(express.static(path.join(scriptDir, 'public/root')));
|
|
app.use(`/manifest.webmanifest`, express.static(path.join(scriptDir, 'public/manifest.webmanifest')));
|
|
app.use(`/robots.txt`, express.static(path.join(scriptDir, 'public/robots.txt')));
|
|
app.use(sessionParser);
|
|
app.use(favicon(`${scriptDir}/../images/app-icons/icon.ico`));
|
|
|
|
assets.register(app);
|
|
routes.register(app);
|
|
custom.register(app);
|
|
error_handlers.register(app);
|
|
|
|
// triggers sync timer
|
|
await import("./services/sync.js");
|
|
|
|
// triggers backup timer
|
|
await import('./services/backup.js');
|
|
|
|
// trigger consistency checks timer
|
|
await import('./services/consistency_checks.js');
|
|
|
|
await import('./services/scheduler.js');
|
|
|
|
startScheduledCleanup();
|
|
|
|
if (utils.isElectron()) {
|
|
(await import('@electron/remote/main/index.js')).initialize();
|
|
}
|
|
|
|
export default app;
|