CAR FOR YOU cookies
Usage
npm install @carforyou/cookies
This package exports multiple functions needed for handling both server-side and client-side cookies in Next.js projects.
Setting server-side cookies
Server-side cookies can be created by passing { req, res } context to the withCookies
function:
import { withCookies } from "@carforyou/cookies"
const { setCookie } = withCookies({ req, res }) // pass the ctx object
setCookie(name, value, options)
By passing the context to withCookies, internally, in the setCookie
function,
an api call to api/cookies
is made where our setServerSideCookie
function
is defined. setServerSideCookies
sets the cookie and returns a status code
of 201 if the cookie pattern matches to the one specified. Otherwise,
it returns a 400 status code.
Configuring the api:
pages/api/cookies.ts
import { setServerSideCookie } from "@carforyou/cookies"
const cookieHandler = (req, res) => {
try {
setServerSideCookie(req, res)
} catch (err) {
import("~/lib/sentry").then((module) => {
const Sentry = module.default
Sentry.captureException("Failed persisting client-side cookie", {
extra: { err },
})
})
}
}
export default cookieHandler
Setting client-side cookies
Client-side cookies can be set by not passing a { req, res } context
to the withCookies
function.
import { withCookies } from "@carforyou/cookies"
const { getCookie, setCookie } = withCookies() // no arguments passed
setCookie(name, value, options)
Getting cookies
import { withCookies } from "@carforyou/cookies"
const { getCookie, setCookie } = withCookies() // pass req, res for serverside cookies
const myCookie = getCookie("cookieName")
Development
npm run build
You can link your local npm package to integrate it with any local project:
cd carforyou-cookies-pkg
npm run build
cd carforyou-listings-web
npm link ../carforyou-cookies-pkg
Release a new version
New versions are released on the ci using semantic-release as soon as you merge into master. Please make sure your merge commit message adheres to the corresponding conventions.