This commit is contained in:
rizky 2024-08-22 00:38:52 -07:00
parent b440f92c5e
commit d17ca3caf4
2 changed files with 10 additions and 4 deletions

View File

@ -31,7 +31,9 @@ export const newServerRouter = <
return arg; return arg;
}; };
export const createClientForServer = <T extends ReturnType<typeof newServerRouter>>( export const createClientForServer = <
T extends ReturnType<typeof newServerRouter>
>(
router: T router: T
) => { ) => {
return new Proxy( return new Proxy(
@ -52,7 +54,7 @@ export const createClientForServer = <T extends ReturnType<typeof newServerRoute
}; };
}; };
export const useServerRouter = async <T extends ReturnType<typeof newServerRouter>>( export const useServerRouter = <T extends ReturnType<typeof newServerRouter>>(
router: T router: T
) => { ) => {
const rou = createRouter<{ const rou = createRouter<{
@ -63,7 +65,7 @@ export const useServerRouter = async <T extends ReturnType<typeof newServerRoute
for (const item of Object.values(router)) { for (const item of Object.values(router)) {
try { try {
addRoute(rou, undefined, item[0], { addRoute(rou, undefined, item[0], {
handler: await (item as any)[1](), handler: (item as any)[1](),
opt: item[2], opt: item[2],
}); });
} catch (e) {} } catch (e) {}
@ -77,6 +79,10 @@ export const useServerRouter = async <T extends ReturnType<typeof newServerRoute
if (found) { if (found) {
const route = found.data; const route = found.data;
if (route.handler instanceof Promise) {
route.handler = await route.handler;
}
let result = null; let result = null;
if (!route.opt || route.opt?.request_as === "raw") { if (!route.opt || route.opt?.request_as === "raw") {
result = await route.handler.default(); result = await route.handler.default();

View File

@ -19,7 +19,7 @@ export const sessionServer = <T>(arg: {
}): ServerSession => { }): ServerSession => {
const internal = { const internal = {
has_router: false, has_router: false,
router: null as null | Awaited<ReturnType<typeof useServerRouter>>, router: null as null | ReturnType<typeof useServerRouter>,
}; };
if (typeof arg.router === "object" && arg.router instanceof Promise) { if (typeof arg.router === "object" && arg.router instanceof Promise) {
internal.has_router = true; internal.has_router = true;