/// import { ServerContext, useServerRouter } from "./server-route"; export type SessionData | undefined> = T & { uid: string; role: string; sid: string; expired_at?: number; created_at: number; }; export type SingleSession> = { data: T; track: (arg: { path: string }) => Promise; destroy: () => Promise; }; type FilterSessionArg = { uid: string; sid: string; role: string; created_at: { gt?: number; lt?: number }; expired_at: { gt?: number; lt?: number }; }; export type ServerSession> = { create: ( data: Record & { uid: string; role: string; expired_at?: number; } ) => Promise>; findMany: (arg: Partial) => Promise[]>; findFirst: ( arg: Partial ) => Promise>; current?: SingleSession; }; type SessionServerHandler = { cleanup: () => Promise; handle: (arg: ServerContext) => Promise; }; export const createSessionServer = >(arg: { encrypt?: boolean; router?: ReturnType; }): SessionServerHandler => { const internal = { has_router: false, router: null as null | ReturnType, }; const server_session: Omit, "current"> = { async create(data) { const new_session: SingleSession = { data: { ...data, created_at: Date.now() } as T, async destroy() {}, async track(arg) {}, }; return new_session; }, async findFirst(arg) { return null; }, async findMany(arg) { return []; }, }; if (typeof arg.router === "object" && arg.router instanceof Promise) { internal.has_router = true; arg.router.then((e) => { internal.router = e; }); } const server_handler: SessionServerHandler = { async cleanup() {}, async handle(server_arg) { const { req, handle } = server_arg; console.log("makaru", internal.has_router, internal.router); return new Response("fas"); // if (internal.has_router && internal.router) { // return await internal.router.handle({ // ...server_arg, // session: { // ...server_session, // current: undefined, // }, // }); // } // return handle(req); }, }; return server_handler; };