fix
This commit is contained in:
parent
3cbc04fae4
commit
9b14e4a776
|
|
@ -89,10 +89,10 @@ export const useServerRouter = <T extends ReturnType<typeof newServerRouter>>(
|
|||
|
||||
let result = null;
|
||||
if (!route.opt || route.opt?.request_as === "raw") {
|
||||
result = await route.handler.default();
|
||||
result = await route.handler.default.bind(arg)();
|
||||
} else {
|
||||
const params = await req.json();
|
||||
result = await route.handler.default(...params);
|
||||
result = await route.handler.default.bind(arg)(...params);
|
||||
}
|
||||
|
||||
if (typeof result === "object" && result instanceof Response) {
|
||||
|
|
|
|||
|
|
@ -1,40 +1,14 @@
|
|||
/// <reference types="bun-types" />
|
||||
|
||||
import { ServerContext, useServerRouter } from "./server-route";
|
||||
import {
|
||||
newSessionStore,
|
||||
SessionData,
|
||||
SessionStore,
|
||||
SingleSession,
|
||||
} from "./session/session-store";
|
||||
|
||||
export type SessionData<T extends Record<string, any> | undefined> = T & {
|
||||
uid: string;
|
||||
role: string;
|
||||
sid: string;
|
||||
expired_at?: number;
|
||||
created_at: number;
|
||||
};
|
||||
|
||||
export type SingleSession<T extends SessionData<any>> = {
|
||||
data: T;
|
||||
track: (arg: { path: string }) => Promise<void>;
|
||||
destroy: () => Promise<void>;
|
||||
};
|
||||
|
||||
type FilterSessionArg = {
|
||||
uid: string;
|
||||
sid: string;
|
||||
role: string;
|
||||
created_at: { gt?: number; lt?: number };
|
||||
expired_at: { gt?: number; lt?: number };
|
||||
};
|
||||
export type ServerSession<T extends SessionData<any>> = {
|
||||
create: (
|
||||
data: Record<string, any> & {
|
||||
uid: string;
|
||||
role: string;
|
||||
expired_at?: number;
|
||||
}
|
||||
) => Promise<SingleSession<T>>;
|
||||
findMany: (arg: Partial<FilterSessionArg>) => Promise<SingleSession<T>[]>;
|
||||
findFirst: (
|
||||
arg: Partial<FilterSessionArg>
|
||||
) => Promise<null | SingleSession<T>>;
|
||||
export type ServerSession<T extends SessionData<any>> = SessionStore<T> & {
|
||||
current?: SingleSession<T>;
|
||||
};
|
||||
|
||||
|
|
@ -47,52 +21,24 @@ export const createSessionServer = <T extends SessionData<any>>(arg: {
|
|||
encrypt?: boolean;
|
||||
router?: ReturnType<typeof useServerRouter>;
|
||||
}): SessionServerHandler => {
|
||||
const internal = {
|
||||
has_router: false,
|
||||
router: null as null | ReturnType<typeof useServerRouter>,
|
||||
};
|
||||
const server_session: Omit<ServerSession<T>, "current"> = {
|
||||
async create(data) {
|
||||
const new_session: SingleSession<T> = {
|
||||
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_session = newSessionStore<T>();
|
||||
|
||||
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,
|
||||
// },
|
||||
// });
|
||||
// }
|
||||
if (arg.router) {
|
||||
return await arg.router.handle({
|
||||
...server_arg,
|
||||
session: {
|
||||
...server_session,
|
||||
current: undefined,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
// return handle(req);
|
||||
return handle(req);
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,57 @@
|
|||
export type NewSessionData<T extends Record<string, any>> = T & {
|
||||
uid: string;
|
||||
role: string;
|
||||
expired_at?: number;
|
||||
};
|
||||
|
||||
export type SessionData<T extends Record<string, any>> = NewSessionData<T> & {
|
||||
sid: string;
|
||||
created_at: number;
|
||||
};
|
||||
|
||||
export type SingleSession<T extends SessionData<any>> = {
|
||||
data: T;
|
||||
track: (arg: { path: string }) => Promise<void>;
|
||||
destroy: () => Promise<void>;
|
||||
};
|
||||
|
||||
type FilterSessionArg = {
|
||||
uid: string;
|
||||
sid: string;
|
||||
role: string;
|
||||
created_at: { gt?: number; lt?: number };
|
||||
expired_at: { gt?: number; lt?: number };
|
||||
};
|
||||
|
||||
export type SessionStore<T extends SessionData<any>> = {
|
||||
create: (
|
||||
data: Record<string, any> & {
|
||||
uid: string;
|
||||
role: string;
|
||||
expired_at?: number;
|
||||
}
|
||||
) => Promise<SingleSession<T>>;
|
||||
findMany: (arg: Partial<FilterSessionArg>) => Promise<SingleSession<T>[]>;
|
||||
findFirst: (
|
||||
arg: Partial<FilterSessionArg>
|
||||
) => Promise<null | SingleSession<T>>;
|
||||
};
|
||||
|
||||
export const newSessionStore = <T>() => {
|
||||
return {
|
||||
async create(data) {
|
||||
const new_session: SingleSession<T> = {
|
||||
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 [];
|
||||
},
|
||||
} as SessionStore<T>;
|
||||
};
|
||||
Loading…
Reference in New Issue