{"version":3,"sources":["../../src/utils/http.ts"],"sourcesContent":["import { type SerializeOptions, parseCookie, stringifySetCookie } from 'cookie';\nimport { match } from 'path-to-regexp';\n\nexport type CookieOptions = Omit<SerializeOptions, 'encode'>;\n\nexport function getCookie(request: Request, name: string): string | undefined {\n  const cookie = request.headers.get('Cookie');\n  if (!cookie) return undefined;\n  const parsed = parseCookie(cookie);\n  return parsed[name];\n}\n\nexport function setCookie(\n  response: Response,\n  name: string,\n  value: string,\n  options?: SerializeOptions\n) {\n  response.headers.append('Set-Cookie', stringifySetCookie(name, value, options));\n}\n\nexport function deleteCookie(response: Response, name: string, options?: SerializeOptions) {\n  response.headers.append('Set-Cookie', stringifySetCookie(name, '', { ...options, maxAge: 0 }));\n}\n\ntype PathParam<T extends string> = T extends `${string}:${infer Param}/${infer Rest}`\n  ? { [K in Param]: string } & PathParam<Rest>\n  : T extends `${string}:${infer Param}`\n    ? { [K in Param]: string }\n    : // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n      {};\n\nexport function param<P extends string>(request: Request, path: P): PathParam<P> {\n  const url = new URL(request.url);\n  const fn = match(path);\n  const result = fn(url.pathname);\n  if (!result) throw new Error(`Path not matched: ${url.pathname}, path: ${path}`);\n  return result.params as PathParam<P>;\n}\n\nexport function query(request: Request) {\n  const url = new URL(request.url);\n  return Object.fromEntries(url.searchParams.entries());\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuE;AACvE,4BAAsB;AAIf,SAAS,UAAU,SAAkB,MAAkC;AAC5E,QAAM,SAAS,QAAQ,QAAQ,IAAI,QAAQ;AAC3C,MAAI,CAAC,OAAQ,QAAO;AACpB,QAAM,aAAS,2BAAY,MAAM;AACjC,SAAO,OAAO,IAAI;AACpB;AAEO,SAAS,UACd,UACA,MACA,OACA,SACA;AACA,WAAS,QAAQ,OAAO,kBAAc,kCAAmB,MAAM,OAAO,OAAO,CAAC;AAChF;AAEO,SAAS,aAAa,UAAoB,MAAc,SAA4B;AACzF,WAAS,QAAQ,OAAO,kBAAc,kCAAmB,MAAM,IAAI,EAAE,GAAG,SAAS,QAAQ,EAAE,CAAC,CAAC;AAC/F;AASO,SAAS,MAAwB,SAAkB,MAAuB;AAC/E,QAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,QAAM,SAAK,6BAAM,IAAI;AACrB,QAAM,SAAS,GAAG,IAAI,QAAQ;AAC9B,MAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,qBAAqB,IAAI,QAAQ,WAAW,IAAI,EAAE;AAC/E,SAAO,OAAO;AAChB;AAEO,SAAS,MAAM,SAAkB;AACtC,QAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,SAAO,OAAO,YAAY,IAAI,aAAa,QAAQ,CAAC;AACtD;","names":[]}