diff --git a/apps/server/src/routes/electron.ts b/apps/server/src/routes/electron.ts index feb9dceae..ea4577e14 100644 --- a/apps/server/src/routes/electron.ts +++ b/apps/server/src/routes/electron.ts @@ -1,42 +1,63 @@ import electron from "electron"; +import type { Application } from "express"; +import type { ParamsDictionary, Request, Response } from "express-serve-static-core"; +import type QueryString from "qs"; +import { Session, SessionData } from "express-session"; -interface Response { - statusCode: number; - getHeader: (name: string) => string; - setHeader: (name: string, value: string) => Response; - header: (name: string, value: string) => Response; - status: (statusCode: number) => Response; - send: (obj: {}) => void; // eslint-disable-line @typescript-eslint/no-empty-object-type -} +type MockedResponse = Response, number>; + +function init(app: Application) { + const fakeSession: Session & Partial = { + id: "session-id", // Placeholder for session ID + cookie: { + originalMaxAge: 3600000, // 1 hour + }, + loggedIn: true, + regenerate(callback) { + callback?.(null); + return fakeSession; + }, + destroy(callback) { + callback?.(null); + return fakeSession; + }, + reload(callback) { + callback?.(null); + return fakeSession; + }, + save(callback) { + callback?.(null); + return fakeSession; + }, + resetMaxAge: () => fakeSession, + touch: () => fakeSession + }; -function init(app: Express.Application) { electron.ipcMain.on("server-request", (event, arg) => { - const req = { + const req: Pick>, "url" | "method" | "body" | "headers" | "session"> = { url: arg.url, method: arg.method, body: arg.data, headers: arg.headers, - session: { - loggedIn: true - } + session: fakeSession }; - const respHeaders: Record = {}; + const respHeaders: Record = {}; - const res: Response = { + const res: Pick, number>, "statusCode" | "getHeader" | "setHeader" | "header" | "status" | "send" | "locals" | "json"> = { statusCode: 200, getHeader: (name) => respHeaders[name], setHeader: (name, value) => { respHeaders[name] = value.toString(); - return res; + return res as MockedResponse; }, - header: (name, value) => { - respHeaders[name] = value.toString(); - return res; + header(name: string, value?: string | string[]) { + respHeaders[name] = value ?? ""; + return res as MockedResponse; }, status: (statusCode) => { res.statusCode = statusCode; - return res; + return res as MockedResponse; }, send: (obj) => { event.sender.send("server-response", { @@ -47,10 +68,16 @@ function init(app: Express.Application) { headers: respHeaders, body: obj }); + return res as MockedResponse; + }, + locals: {}, + json: (obj) => { + res.send(JSON.stringify(obj)); + return res as MockedResponse; } }; - return (app as any)._router.handle(req, res, () => {}); + return app.router(req as any, res as any, () => {}); }); }