#12: Return a method for app.ts

This commit is contained in:
Elian Doran 2024-05-12 10:37:46 +03:00
parent 981fe3a939
commit 168977a52b
No known key found for this signature in database
2 changed files with 58 additions and 52 deletions

View File

@ -7,54 +7,58 @@ import compression = require('compression');
import sessionParser = require('./routes/session_parser');
import utils = require('./services/utils');
require('./services/handlers');
require('./becca/becca_loader');
function buildApp() {
require('./services/handlers');
require('./becca/becca_loader');
const app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
if (!utils.isElectron()) {
app.use(compression()); // HTTP compression
}
app.use(helmet.default({
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(__dirname, 'public/root')));
app.use(`/manifest.webmanifest`, express.static(path.join(__dirname, 'public/manifest.webmanifest')));
app.use(`/robots.txt`, express.static(path.join(__dirname, 'public/robots.txt')));
app.use(sessionParser);
app.use(favicon(`${__dirname}/../../common/images/app-icons/win/icon.ico`));
require('./routes/assets').register(app);
require('./routes/routes').register(app);
require('./routes/custom').register(app);
require('./routes/error_handlers').register(app);
// triggers sync timer
require('./services/sync');
// triggers backup timer
require('./services/backup');
// trigger consistency checks timer
require('./services/consistency_checks');
require('./services/scheduler');
if (utils.isElectron()) {
require('@electron/remote/main').initialize();
}
const app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
if (!utils.isElectron()) {
app.use(compression()); // HTTP compression
return app;
}
app.use(helmet.default({
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(__dirname, 'public/root')));
app.use(`/manifest.webmanifest`, express.static(path.join(__dirname, 'public/manifest.webmanifest')));
app.use(`/robots.txt`, express.static(path.join(__dirname, 'public/robots.txt')));
app.use(sessionParser);
app.use(favicon(`${__dirname}/../../common/images/app-icons/win/icon.ico`));
require('./routes/assets').register(app);
require('./routes/routes').register(app);
require('./routes/custom').register(app);
require('./routes/error_handlers').register(app);
// triggers sync timer
require('./services/sync');
// triggers backup timer
require('./services/backup');
// trigger consistency checks timer
require('./services/consistency_checks');
require('./services/scheduler');
if (utils.isElectron()) {
require('@electron/remote/main').initialize();
}
export = app;
export = buildApp;

View File

@ -18,7 +18,7 @@ function exit() {
process.on('SIGINT', exit);
process.on('SIGTERM', exit);
import app = require('./app');
import buildApp = require('./app');
import sessionParser = require('./routes/session_parser');
import fs = require('fs');
import http = require('http');
@ -27,10 +27,10 @@ import config = require('./services/config');
import log = require('./services/log');
import appInfo = require('./services/app_info');
import ws = require('./services/ws');
import utils = require('./services/utils');
import port = require('./services/port');
import host = require('./services/host');
import semver = require('semver');
import type { Express } from "express";
function startTrilium() {
if (!semver.satisfies(process.version, ">=10.5.0")) {
@ -40,19 +40,21 @@ function startTrilium() {
log.info(JSON.stringify(appInfo, null, 2));
const app = buildApp();
const cpuInfos = require('os').cpus();
if (cpuInfos && cpuInfos[0] !== undefined) { // https://github.com/zadam/trilium/pull/3957
log.info(`CPU model: ${cpuInfos[0].model}, logical cores: ${cpuInfos.length} freq: ${cpuInfos[0].speed} Mhz`); // for perf. issues it's good to know the rough configuration
}
const httpServer = startHttpServer();
const httpServer = startHttpServer(app);
ws.init(httpServer, sessionParser as any); // TODO: Not sure why session parser is incompatible.
return app;
}
function startHttpServer() {
function startHttpServer(app: Express) {
app.set('port', port);
app.set('host', host);