///
import { ServerContext, useServerRouter } from "./server-route";
import {
newSessionStore,
SessionData,
SessionStore,
SingleSession,
} from "./session/session-store";
export type ServerSession> = SessionStore & {
current?: SingleSession;
};
type SessionServerHandler = {
cleanup: () => Promise;
handle: (arg: ServerContext) => Promise;
};
export const createSessionServer = >(arg: {
encrypt?: boolean;
router?: ReturnType;
}): SessionServerHandler => {
const server_session = newSessionStore();
const server_handler: SessionServerHandler = {
async cleanup() {},
async handle(server_arg) {
const { req, handle } = server_arg;
if (arg.router) {
return await arg.router.handle({
...server_arg,
session: {
...server_session,
current: undefined,
},
});
}
return handle(req);
},
};
return server_handler;
};