Cookies

The Cookies class provides a unified interface for managing HTTP cookies with support for parsing request cookies and generating Set-Cookie headers. It wraps the underlying platform cookie implementation (Bun's CookieMap) with a consistent API.

Contents
  1. Usage
  2. Constructor Parameters
  3. Properties
  4. Methods

Usage

Reading request cookies

import { C } from "@ozanarslan/corpus";

new C.Route("/profile", (c) => {
	// Get single cookie
	const sessionId = c.cookies.get("sessionId");

	// Check existence
	if (c.cookies.has("preferences")) {
		// ...
	}

	// Iterate all cookies
	for (const [name, value] of c.cookies.entries()) {
		console.log(`${name}: ${value}`);
	}

	return { sessionId };
});

Setting response cookies

new C.Route("/login", (c) => {
	// Set single cookie
	c.res.cookies.set({
		name: "sessionId",
		value: "abc123",
		httpOnly: true,
		secure: true,
		maxAge: 3600,
		path: "/",
	});

	// Set multiple cookies
	c.res.cookies.setMany([
		{ name: "user", value: "john", path: "/" },
		{ name: "prefs", value: "dark", maxAge: 86400 },
	]);

	return { loggedIn: true };
});

Deleting cookies

new C.Route("/logout", (c) => {
	c.res.cookies.delete("sessionId");

	return { loggedOut: true };
});

Constructor Parameters

init (optional)

CookieOptions | CookieOptions[] | CookiesInterface

Initial cookie data. Accepts a single cookie options object, an array of cookie options, or another CookiesInterface instance.

// Single cookie
new C.Cookies({ name: "session", value: "abc", path: "/" });

// Multiple cookies
new C.Cookies([
	{ name: "a", value: "1" },
	{ name: "b", value: "2" },
]);

// From existing interface
new C.Cookies(existingCookies);

Properties

Property Type Description
count number Number of cookies in the store (getter)

Methods

get

get(name: string): string | null

Retrieves a cookie value by name.

has

has(name: string): boolean

Checks if a cookie exists.

set

set(opts: CookieOptions): void

Sets a cookie with options.

type CookieOptions = {
	name: string;
	value: string;
	domain?: string;
	/** Defaults to '/'. */
	path?: string;
	expires?: number | Date;
	secure?: boolean;
	/** Defaults to `lax`. */
	sameSite?: "strict" | "lax" | "none";
	httpOnly?: boolean;
	partitioned?: boolean;
	maxAge?: number;
};

setMany

setMany(optsArr: Array<CookieOptions>): void

Sets multiple cookies at once.

delete

delete(name: string): void

Removes a cookie by name.

entries

entries(): IterableIterator<[string, string]>

Returns an iterator of all cookie name/value pairs.

keys

keys(): Array<string>

Returns all cookie names.

values

values(): Array<string>

Returns all cookie values.

toSetCookieHeaders

toSetCookieHeaders(): Array<string>

Generates Set-Cookie header strings for all set cookies. Called automatically when building the response.