diff options
author | polwex <polwex@sortug.com> | 2025-05-15 10:13:00 +0700 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-05-15 10:13:00 +0700 |
commit | d56594d3289002566f4653d607f0837befd65109 (patch) | |
tree | f69685b458419566a78727ce6a8cecd0cdc269a5 /src/lib/server/setcookie.ts | |
parent | 04509d9207603d9055cf022051763ec05c9214d6 (diff) |
wtf man
Diffstat (limited to 'src/lib/server/setcookie.ts')
-rw-r--r-- | src/lib/server/setcookie.ts | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/lib/server/setcookie.ts b/src/lib/server/setcookie.ts new file mode 100644 index 0000000..f64b380 --- /dev/null +++ b/src/lib/server/setcookie.ts @@ -0,0 +1,25 @@ +import type { Middleware } from "waku/config"; +import { type ResponseCookie, stringifyCookie } from "@edge-runtime/cookies"; + +export const mergeSetCookies = ( + resSetCookies: string | string[], + cookiesInContext: ResponseCookie[], +) => { + if (typeof resSetCookies === "string") { + resSetCookies = [resSetCookies]; + } + return [...resSetCookies, ...cookiesInContext.map(stringifyCookie)]; +}; + +const setCookieMiddleware: Middleware = () => { + return async (ctx, next) => { + await next(); + ctx.res.headers ||= {}; + ctx.res.headers["set-cookie"] = mergeSetCookies( + ctx.res.headers["set-cookie"] || [], + (ctx.data.cookies || []) as ResponseCookie[], + ); + }; +}; + +export default setCookieMiddleware; |