import { Context, Next } from "hono";
import { getCookie } from "hono/cookie";
import {
CollectingResponse,
PreParsedRequest,
middleware as customMiddleware,
} from "supertokens-node/framework/custom";
import Session from "supertokens-node/recipe/session";
import { HTTPMethod } from "supertokens-node/types";
import { serialize } from "cookie";
export const middleware = () => {
return async function (c: Context, next: Next) {
const request = new PreParsedRequest({
method: c.req.method as HTTPMethod,
url: c.req.url,
query: Object.fromEntries(new URL(c.req.url).searchParams.entries()),
cookies: getCookie(c),
headers: c.req.raw.headers as Headers,
getFormBody: () => c.req.formData(),
getJSONBody: () => c.req.json(),
});
const baseResponse = new CollectingResponse();
const stMiddleware = customMiddleware(() => request);
const { handled, error } = await stMiddleware(request, baseResponse);
if (error) {
throw error;
}
if (handled) {
setCookiesInHeaders(baseResponse.headers, baseResponse.cookies);
return new Response(baseResponse.body, {
status: baseResponse.statusCode,
headers: baseResponse.headers,
});
}
// [continue]
import { Context, Next } from "hono";
import { getCookie } from "hono/cookie";
import {
CollectingResponse,
PreParsedRequest,
middleware as customMiddleware,
} from "supertokens-node/framework/custom";
import Session from "supertokens-node/recipe/session";
import { HTTPMethod } from "supertokens-node/types";
import { serialize } from "cookie";
export const middleware = () => {
return async function (c: Context, next: Next) {
const request = new PreParsedRequest({
method: c.req.method as HTTPMethod,
url: c.req.url,
query: Object.fromEntries(new URL(c.req.url).searchParams.entries()),
cookies: getCookie(c),
headers: c.req.raw.headers as Headers,
getFormBody: () => c.req.formData(),
getJSONBody: () => c.req.json(),
});
const baseResponse = new CollectingResponse();
const stMiddleware = customMiddleware(() => request);
const { handled, error } = await stMiddleware(request, baseResponse);
if (error) {
throw error;
}
if (handled) {
setCookiesInHeaders(baseResponse.headers, baseResponse.cookies);
return new Response(baseResponse.body, {
status: baseResponse.statusCode,
headers: baseResponse.headers,
});
}
// [continue]