{"version":3,"sources":["../src/cookie.ts"],"sourcesContent":["import type { CookieOptions, CookieStore } from '@tern-secure/types';\nimport Cookies from 'js-cookie';\n\ntype removeCookieParams = {\n  path?: string;\n  domain?: string;\n};\n\nexport function cookieHandler(cookieNanme: string) {\n  return {\n    set(value: string, options: Cookies.CookieAttributes = {}): void {\n      Cookies.set(cookieNanme, value, options);\n    },\n    get() {\n      return Cookies.get(cookieNanme);\n    },\n    remove(removeCookieParams?: removeCookieParams) {\n      Cookies.remove(cookieNanme, removeCookieParams);\n    },\n  };\n}\n\nexport type CookieAttributes = Cookies.CookieAttributes;\n\nexport function serverCookieHandler(response: Response): CookieStore {\n  const getCookie = async (name: string): Promise<{ value: string | undefined }> => {\n    const cookies = response.headers.get('cookie');\n    if (!cookies) return { value: undefined };\n\n    const match = cookies.match(new RegExp(`${name}=([^;]+)`));\n    return { value: match ? decodeURIComponent(match[1]) : undefined };\n  };\n\n  const setCookie = async (\n    name: string,\n    value: string,\n    options: CookieOptions = {},\n  ): Promise<void> => {\n    const { maxAge, httpOnly = true, secure = true, sameSite = 'strict', path = '/' } = options;\n\n    let cookieString = `${name}=${encodeURIComponent(value)}`;\n\n    if (maxAge) cookieString += `; Max-Age=${maxAge}`;\n    if (httpOnly) cookieString += '; HttpOnly';\n    if (secure) cookieString += '; Secure';\n    if (sameSite) cookieString += `; SameSite=${sameSite}`;\n    if (path) cookieString += `; Path=${path}`;\n\n    response.headers.append('Set-Cookie', cookieString);\n  };\n\n  const deleteCookie = async (name: string): Promise<void> => {\n    await setCookie(name, '', {\n      maxAge: 0,\n      httpOnly: true,\n      secure: true,\n      path: '/',\n    });\n  };\n\n  return {\n    get: getCookie,\n    set: setCookie,\n    delete: deleteCookie,\n  };\n}\n"],"mappings":";AACA,OAAO,aAAa;AAOb,SAAS,cAAc,aAAqB;AACjD,SAAO;AAAA,IACL,IAAI,OAAe,UAAoC,CAAC,GAAS;AAC/D,cAAQ,IAAI,aAAa,OAAO,OAAO;AAAA,IACzC;AAAA,IACA,MAAM;AACJ,aAAO,QAAQ,IAAI,WAAW;AAAA,IAChC;AAAA,IACA,OAAO,oBAAyC;AAC9C,cAAQ,OAAO,aAAa,kBAAkB;AAAA,IAChD;AAAA,EACF;AACF;AAIO,SAAS,oBAAoB,UAAiC;AACnE,QAAM,YAAY,OAAO,SAAyD;AAChF,UAAM,UAAU,SAAS,QAAQ,IAAI,QAAQ;AAC7C,QAAI,CAAC,QAAS,QAAO,EAAE,OAAO,OAAU;AAExC,UAAM,QAAQ,QAAQ,MAAM,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC;AACzD,WAAO,EAAE,OAAO,QAAQ,mBAAmB,MAAM,CAAC,CAAC,IAAI,OAAU;AAAA,EACnE;AAEA,QAAM,YAAY,OAChB,MACA,OACA,UAAyB,CAAC,MACR;AAClB,UAAM,EAAE,QAAQ,WAAW,MAAM,SAAS,MAAM,WAAW,UAAU,OAAO,IAAI,IAAI;AAEpF,QAAI,eAAe,GAAG,IAAI,IAAI,mBAAmB,KAAK,CAAC;AAEvD,QAAI,OAAQ,iBAAgB,aAAa,MAAM;AAC/C,QAAI,SAAU,iBAAgB;AAC9B,QAAI,OAAQ,iBAAgB;AAC5B,QAAI,SAAU,iBAAgB,cAAc,QAAQ;AACpD,QAAI,KAAM,iBAAgB,UAAU,IAAI;AAExC,aAAS,QAAQ,OAAO,cAAc,YAAY;AAAA,EACpD;AAEA,QAAM,eAAe,OAAO,SAAgC;AAC1D,UAAM,UAAU,MAAM,IAAI;AAAA,MACxB,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AACF;","names":[]}