mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-27 18:12:29 +08:00
fix(desktop): adapt request mocking to express 5
This commit is contained in:
parent
0bc91349f6
commit
ebeabe2b54
@ -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<any, Record<string, any>, number>;
|
||||
|
||||
function init(app: Application) {
|
||||
const fakeSession: Session & Partial<SessionData> = {
|
||||
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<Request<ParamsDictionary, any, any, QueryString.ParsedQs, Record<string, any>>, "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<string, string> = {};
|
||||
const respHeaders: Record<string, string | string[]> = {};
|
||||
|
||||
const res: Response = {
|
||||
const res: Pick<Response<any, Record<string, any>, 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, () => {});
|
||||
});
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user