next-client-cookies
Version:
SSR and client support for Next.js v13 cookies (app directory)
1 lines • 2.95 kB
Source Map (JSON)
{"version":3,"sources":["../src/server.tsx"],"sourcesContent":["import { cookies } from 'next/headers';\nimport { CookieAttributes, Cookies } from './types';\nimport type { ResponseCookie } from 'next/dist/compiled/@edge-runtime/cookies';\nimport React, { ReactElement, ReactNode } from 'react';\nimport { SecureCookiesProvider } from './provider';\nimport { storeSecureCookies } from './secure';\n\nexport const CookiesProvider = async ({\n children,\n}: {\n children: ReactNode;\n}): Promise<ReactElement> => {\n const cookiesSync = await cookies();\n const secretValue = cookiesSync.getAll();\n\n return (\n <SecureCookiesProvider value={storeSecureCookies(secretValue)}>\n {children}\n </SecureCookiesProvider>\n );\n};\n\nexport const getCookies = async (): Promise<Cookies> => {\n const org = await cookies();\n\n return {\n get: (name?: string) =>\n (name == null\n ? Object.fromEntries(org.getAll().map((c) => [c.name, c.value]))\n : org.get(name)?.value) as never,\n\n set: (name, value, options) => {\n const pre = org.get(name)?.value;\n org.set(name, value, options && convertCookieAttributes(options));\n return pre;\n },\n\n remove: (name) => org.delete(name),\n\n toString: () => org.toString(),\n };\n};\n\nconst convertCookieAttributes = (\n options: CookieAttributes,\n): Partial<ResponseCookie> => ({\n expires:\n typeof options.expires === 'number'\n ? options.expires * 864e5\n : options.expires,\n path: options.path,\n domain: options.domain,\n secure: options.secure,\n sameSite: options.sameSite?.toLowerCase() as\n | 'strict'\n | 'lax'\n | 'none'\n | undefined,\n});\n"],"mappings":";;AAAA,SAASA,eAAe;AAGxB,OAAOC,WAAwC;AAC/C,SAASC,6BAA6B;AACtC,SAASC,0BAA0B;AAE5B,MAAMC,kBAAkB,8BAAO,EACpCC,SAAQ,MAGT;AACC,QAAMC,cAAc,MAAMN,QAAAA;AAC1B,QAAMO,cAAcD,YAAYE,OAAM;AAEtC,SACE,sBAAA,cAACN,uBAAAA;IAAsBO,OAAON,mBAAmBI,WAAAA;KAC9CF,QAAAA;AAGP,GAb+B;AAexB,MAAMK,aAAa,mCAAA;AACxB,QAAMC,MAAM,MAAMX,QAAAA;AAElB,SAAO;IACLY,KAAK,CAACC,SACHA,QAAQ,OACLC,OAAOC,YAAYJ,IAAIH,OAAM,EAAGQ,IAAI,CAACC,MAAM;MAACA,EAAEJ;MAAMI,EAAER;KAAM,CAAA,IAC5DE,IAAIC,IAAIC,IAAAA,GAAOJ;IAErBS,KAAK,CAACL,MAAMJ,OAAOU,YAAAA;AACjB,YAAMC,MAAMT,IAAIC,IAAIC,IAAAA,GAAOJ;AAC3BE,UAAIO,IAAIL,MAAMJ,OAAOU,WAAWE,wBAAwBF,OAAAA,CAAAA;AACxD,aAAOC;IACT;IAEAE,QAAQ,CAACT,SAASF,IAAIY,OAAOV,IAAAA;IAE7BW,UAAU,MAAMb,IAAIa,SAAQ;EAC9B;AACF,GAnB0B;AAqB1B,MAAMH,0BAA0B,wBAC9BF,aAC6B;EAC7BM,SACE,OAAON,QAAQM,YAAY,WACvBN,QAAQM,UAAU,QAClBN,QAAQM;EACdC,MAAMP,QAAQO;EACdC,QAAQR,QAAQQ;EAChBC,QAAQT,QAAQS;EAChBC,UAAUV,QAAQU,UAAUC,YAAAA;AAK9B,IAfgC;","names":["cookies","React","SecureCookiesProvider","storeSecureCookies","CookiesProvider","children","cookiesSync","secretValue","getAll","value","getCookies","org","get","name","Object","fromEntries","map","c","set","options","pre","convertCookieAttributes","remove","delete","toString","expires","path","domain","secure","sameSite","toLowerCase"]}