import type { CookieOptions } from "./types.ts"; export function parseCookie(cookieString: string): Record { const cookies: Record = {}; if (!cookieString) return cookies; const pairs = cookieString.split(";"); for (const pair of pairs) { const [key, ...valueParts] = pair.split("="); const trimmedKey = key?.trim(); const value = valueParts.join("=")?.trim(); if (trimmedKey) { cookies[trimmedKey] = decodeURIComponent(value || ""); } } return cookies; } export function serializeCookie( name: string, value: string, options: CookieOptions = {} ): string { const parts = [`${encodeURIComponent(name)}=${encodeURIComponent(value)}`]; if (options.maxAge !== undefined) { parts.push(`Max-Age=${options.maxAge}`); } if (options.domain) { parts.push(`Domain=${options.domain}`); } if (options.path) { parts.push(`Path=${options.path}`); } if (options.httpOnly) { parts.push("HttpOnly"); } if (options.secure) { parts.push("Secure"); } if (options.sameSite) { parts.push(`SameSite=${options.sameSite}`); } return parts.join("; "); }