From cb5cdc483fce9c37e1e5b39c1756e268e473bf49 Mon Sep 17 00:00:00 2001 From: Janis Hutz Date: Mon, 7 Sep 2026 16:14:13 +0200 Subject: [PATCH] fix(backend): crashes due to logger and missing server-stubs files --- backend/data/server-stubs.json | 1 + backend/src/app.ts | 3 +++ backend/src/logger.ts | 23 ++++++++++++++++------- backend/src/manager/users/index.ts | 11 ++++++++++- 4 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 backend/data/server-stubs.json diff --git a/backend/data/server-stubs.json b/backend/data/server-stubs.json new file mode 100644 index 0000000..8d384c9 --- /dev/null +++ b/backend/data/server-stubs.json @@ -0,0 +1 @@ +{"playlists":[],"userid":"server-stubs","version":"1"} diff --git a/backend/src/app.ts b/backend/src/app.ts index 3cef0b1..270333e 100644 --- a/backend/src/app.ts +++ b/backend/src/app.ts @@ -8,6 +8,7 @@ import { import devtoken from './routes/devtoken'; import express from 'express'; import fs from 'fs'; +import logger from './logger'; import path from 'path'; import room from './routes/room'; import user from './routes/user'; @@ -26,6 +27,8 @@ const run = () => { const storeSdk = getStoreSdk( foss ); const app = express(); + app.use( logger.routeLogging() ); + // Load id.janishutz.com SDK and allow signing in sdk.setUp( { diff --git a/backend/src/logger.ts b/backend/src/logger.ts index 4cd9fe3..6af751e 100644 --- a/backend/src/logger.ts +++ b/backend/src/logger.ts @@ -1,29 +1,37 @@ +import express from 'express'; import { writeFile } from 'node:fs'; const log = ( ...msg: unknown[] ) => { - output( 'log', log.caller.toString(), ...msg ); + output( 'log', 'UNKNOWN', ...msg ); }; const info = ( ...msg: unknown[] ) => { - output( 'info', log.caller.toString(), ...msg ); + output( 'info', 'UNKNOWN', ...msg ); }; const debug = ( ...msg: unknown[] ) => { - output( 'debug', log.caller.toString(), ...msg ); + output( 'debug', 'UNKNOWN', ...msg ); }; const warn = ( ...msg: unknown[] ) => { - output( 'warn', log.caller.toString(), ...msg ); + output( 'warn', 'UNKNOWN', ...msg ); }; const error = ( ...msg: unknown[] ) => { - output( 'error', log.caller.toString(), ...msg ); + output( 'error', 'UNKNOWN', ...msg ); }; const fatal = ( ...msg: unknown[] ) => { - output( 'fatal', log.caller.toString(), ...msg ); + output( 'fatal', 'UNKNOWN', ...msg ); +}; + +const routeLogging = () => { + return ( request: express.Request, _response: express.Response, next: express.NextFunction ) => { + output( 'info', 'ROUTER', request.originalUrl, 'from', request.headers['user-agent'] ?? 'No UA' ); + next(); + }; }; @@ -100,5 +108,6 @@ export default { warn, error, fatal, - configure + configure, + routeLogging }; diff --git a/backend/src/manager/users/index.ts b/backend/src/manager/users/index.ts index 150239e..423445b 100644 --- a/backend/src/manager/users/index.ts +++ b/backend/src/manager/users/index.ts @@ -18,6 +18,14 @@ export const getUserFile = async ( uid: string ): Promise => { } ); }; +const createUserFile = async ( uid: string ): Promise => { + writeUserFile( uid, { + 'playlists': [], + 'userid': uid, + 'version': '1' + } ); +}; + export const getUserFilePath = ( uid: string ): string => { return path.join( __dirname, '/../../../data/', uid + '.json' ); }; @@ -43,5 +51,6 @@ export default { getUserFilePath, getUserFile, writeUserFile, - testUserFileExists + testUserFileExists, + createUserFile };