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.
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);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"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"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" }]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");
}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");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]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); // 0Formats 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"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: enRequestCookies 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 automaticallyinterface 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.