Groups
Batch operations on related cookies
Cookie Groups
Use createCookieGroup to combine related cookies and perform batch operations.
Creating a Group
import { createCookie, createCookieGroup } from "@jlnstack/cookies/next"
const sessionCookie = createCookie<string>("session")
const userCookie = createCookie<{ id: number; name: string }>("user")
const authCookies = createCookieGroup({
session: sessionCookie,
user: userCookie,
})Group Options
The second argument accepts options for the group:
Prefix
Add a prefix to all cookie names in the group:
const authCookies = createCookieGroup(
{
session: sessionCookie,
user: userCookie,
},
{ prefix: "auth_" }
)
// Cookie names become "auth_session" and "auth_user"
authCookies.session.name // "auth_session"
authCookies.user.name // "auth_user"Default Cookie Options
Apply default cookie options to all cookies in the group:
const authCookies = createCookieGroup(
{
session: sessionCookie,
user: userCookie,
},
{
defaults: {
secure: true,
httpOnly: true,
sameSite: "strict",
},
}
)
// All set operations use these defaults
await authCookies.session.set("token123")
await authCookies.set({ user: { id: 1, name: "John" } })You can override defaults per set call:
await authCookies.set(
{ session: "token123" },
{ maxAge: 60 * 60 } // Overrides defaults.maxAge, keeps other defaults
)Combining Options
Use both prefix and defaults together:
const authCookies = createCookieGroup(
{ session: sessionCookie, user: userCookie },
{
prefix: "myapp_",
defaults: { secure: true, httpOnly: true },
}
)Reading All Cookies
Get all cookie values in a single call:
const { session, user } = await authCookies.get()
// session: string | undefined
// user: { id: number; name: string } | undefinedWriting Cookies
Set one or more cookies at once. Only the cookies you specify will be updated:
// Set only the session cookie
await authCookies.set({ session: "token123" })
// Set both cookies
await authCookies.set({
session: "token123",
user: { id: 1, name: "John" },
})
// With options
await authCookies.set(
{ session: "token123" },
{ maxAge: 60 * 60 * 24 * 7 }
)Deleting All Cookies
Delete all cookies in the group:
await authCookies.deleteAll()Individual Cookie Access
Access individual cookies as properties for fine-grained control:
await authCookies.session.set("token123")
const session = await authCookies.session.get()
await authCookies.session.delete()