or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.mdrequest-cookies.mdresponse-cookies.mdserialization.md
tile.json

request-cookies.mddocs/

Request Cookies

The RequestCookies class provides a comprehensive API for reading and manipulating cookies from incoming HTTP requests. It parses the Cookie header and offers methods for accessing, modifying, and managing client-sent cookies.

Capabilities

Constructor

Creates a RequestCookies instance from request headers, automatically parsing any existing Cookie header.

/**
 * Creates a RequestCookies instance from request headers
 * @param requestHeaders - Headers object from an HTTP request
 */
constructor(requestHeaders: Headers);

Usage Example:

import { RequestCookies } from "@edge-runtime/cookies";

const request = new Request("https://example.com", {
  headers: { "Cookie": "session=abc123; theme=dark; lang=en" }
});

const cookies = new RequestCookies(request.headers);

Size Property

Gets the number of cookies received from the client.

/**
 * The amount of cookies received from the client
 */
get size(): number;

Usage Example:

const cookies = new RequestCookies(request.headers);
console.log(`Received ${cookies.size} cookies`); // "Received 3 cookies"

Get Cookie

Retrieves a specific cookie by name.

/**
 * Get a cookie by name
 * @param name - Cookie name as string, or RequestCookie object
 * @returns RequestCookie object or undefined if not found
 */
get(...args: [name: string] | [RequestCookie]): RequestCookie | undefined;

Usage Examples:

// Get by name
const sessionCookie = cookies.get("session");
console.log(sessionCookie?.value); // "abc123"

// Get by RequestCookie object
const cookie = cookies.get({ name: "theme", value: "" });
console.log(cookie?.value); // "dark"

Get All Cookies

Retrieves all cookies or filters by name.

/**
 * Get all cookies or filter by name
 * @param args - Optional name filter as string or RequestCookie object
 * @returns Array of RequestCookie objects
 */
getAll(...args: [name: string] | [RequestCookie] | []): RequestCookie[];

Usage Examples:

// Get all cookies
const allCookies = cookies.getAll();
console.log(allCookies); // [{ name: "session", value: "abc123" }, ...]

// Filter by name
const sessionCookies = cookies.getAll("session");
console.log(sessionCookies); // [{ name: "session", value: "abc123" }]

Has Cookie

Checks if a cookie exists by name.

/**
 * Check if a cookie exists by name
 * @param name - Cookie name to check
 * @returns Boolean indicating existence
 */
has(name: string): boolean;

Usage Example:

if (cookies.has("session")) {
  console.log("User is logged in");
}

Set Cookie

Sets or updates a cookie value in the request.

/**
 * Set or update a cookie in the request
 * @param args - Either key-value pair or RequestCookie object
 * @returns this for method chaining
 */
set(...args: [key: string, value: string] | [options: RequestCookie]): this;

Usage Examples:

// Set by key-value
cookies.set("newCookie", "newValue");

// Set by RequestCookie object
cookies.set({ name: "preference", value: "compact" });

// Method chaining
cookies
  .set("user", "john")
  .set("role", "admin");

Delete Cookies

Removes cookies by name from the request.

/**
 * Delete cookies by name from the request
 * @param names - Single name or array of names to delete
 * @returns Boolean or array of booleans indicating success
 */
delete(names: string | string[]): boolean | boolean[];

Usage Examples:

// Delete single cookie
const deleted = cookies.delete("session");
console.log(deleted); // true if existed, false otherwise

// Delete multiple cookies
const results = cookies.delete(["theme", "lang", "nonexistent"]);
console.log(results); // [true, true, false]

Clear All Cookies

Removes all cookies from the request.

/**
 * Delete all cookies from the request
 * @returns this for method chaining
 */
clear(): this;

Usage Example:

cookies.clear();
console.log(cookies.size); // 0

To String

Formats cookies as a string suitable for logging or debugging.

/**
 * Format cookies as a string for logging/debugging
 * @returns URL-encoded cookie string
 */
toString(): string;

Usage Example:

console.log(cookies.toString());
// "session=abc123; theme=dark; lang=en"

Iterator Support

RequestCookies implements the iterator protocol, making it usable with for...of loops and other iterable operations.

/**
 * Makes the class iterable over cookie entries
 * @returns Iterator yielding [name, RequestCookie] pairs
 */
[Symbol.iterator](): Iterator<[string, RequestCookie]>;

Usage Example:

for (const [name, cookie] of cookies) {
  console.log(`${name}: ${cookie.value}`);
}
// Output:
// session: abc123
// theme: dark
// lang: en

Inspection Method

RequestCookies provides a custom inspection method for debugging and logging purposes.

/**
 * Custom inspection method for debugging and logging
 * @returns Formatted string representation of cookies
 */
[Symbol.for('edge-runtime.inspect.custom')](): string;

Usage Example:

const cookies = new RequestCookies(request.headers);
console.log(cookies[Symbol.for('edge-runtime.inspect.custom')]());
// "RequestCookies {"session":"abc123","theme":"dark","lang":"en"}"

// Also works with Node.js util.inspect
import { inspect } from 'util';
console.log(inspect(cookies));
// Uses the custom inspection method automatically

RequestCookie Type

interface RequestCookie {
  /** Cookie name */
  name: string;
  /** Cookie value */
  value: string;
}

The RequestCookie type is a simplified version of the full cookie specification, containing only name and value since request cookies don't include attributes like expires, domain, etc.