Cookies
Models HTTP cookies and cookie collections for requests and responses.
A Cookie stores a name, value, encoded value, and standard cookie attributes. A Cookies value is an immutable collection keyed by cookie name. This module parses request Cookie headers, builds response Set-Cookie headers, and provides helpers for adding, removing, merging, and expiring cookies.
Combinators
expireCookie
Signature
declare const expireCookie: { ( name: string, options?: Omit< { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Duration.Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "lax" | "strict" | "none"; readonly secure?: boolean; }, "expires" | "maxAge" >, ): (self: Cookies) => Result<Cookies, CookiesError>; ( self: Cookies, name: string, options?: Omit< { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Duration.Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "lax" | "strict" | "none"; readonly secure?: boolean; }, "expires" | "maxAge" >, ): Result<Cookies, CookiesError>;};expireCookieUnsafe
Adds an expired cookie to a Cookies object, throwing an error if invalid
Signature
declare const expireCookieUnsafe: { ( name: string, options?: Omit< { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Duration.Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "lax" | "strict" | "none"; readonly secure?: boolean; }, "expires" | "maxAge" >, ): (self: Cookies) => Cookies; ( self: Cookies, name: string, options?: Omit< { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Duration.Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "lax" | "strict" | "none"; readonly secure?: boolean; }, "expires" | "maxAge" >, ): Cookies;};Gets a cookie from a Cookies object safely.
Signature
declare const get: { (name: string): (self: Cookies) => Option<Cookie>; (self: Cookies, name: string): Option<Cookie>;};Gets the decoded value of a cookie by name safely.
Details
Returns Option.none() when the cookie is not present.
Signature
declare const getValue: { (name: string): (self: Cookies) => Option<string>; (self: Cookies, name: string): Option<string>;};Combines two Cookies objects, removing duplicates from the first
Signature
declare const merge: { (that: Cookies): (self: Cookies) => Cookies; (self: Cookies, that: Cookies): Cookies;};Removes a cookie by name
Signature
declare const remove: { (name: string): (self: Cookies) => Cookies; (self: Cookies, name: string): Cookies;};Creates and adds a cookie safely by name and value.
Details
The cookie fields are validated first; invalid input returns a CookiesError in the Result failure channel.
Signature
declare const set: { ( name: string, value: string, options?: { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Duration.Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "lax" | "strict" | "none"; readonly secure?: boolean; }, ): (self: Cookies) => Result<Cookies, CookiesError>; ( self: Cookies, name: string, value: string, options?: { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Duration.Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "lax" | "strict" | "none"; readonly secure?: boolean; }, ): Result<Cookies, CookiesError>;};Creates and adds multiple cookies safely from name/value/options tuples.
Details
If any tuple is invalid, returns the first CookiesError and leaves the original collection unchanged.
Signature
declare const setAll: { ( cookies: Iterable< readonly [ string, string, ( | { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Duration.Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "lax" | "strict" | "none"; readonly secure?: boolean; } | undefined ), ] >, ): (self: Cookies) => Result<Cookies, CookiesError>; ( self: Cookies, cookies: Iterable< readonly [ string, string, ( | { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Duration.Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "lax" | "strict" | "none"; readonly secure?: boolean; } | undefined ), ] >, ): Result<Cookies, CookiesError>;};setAllCookie
Adds multiple cookies to a Cookies object
Signature
declare const setAllCookie: { (cookies: Iterable<Cookie>): (self: Cookies) => Cookies; (self: Cookies, cookies: Iterable<Cookie>): Cookies;};setAllUnsafe
Adds multiple cookies to a Cookies object, throwing an error if invalid
Signature
declare const setAllUnsafe: { ( cookies: Iterable< readonly [ string, string, ( | { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Duration.Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "lax" | "strict" | "none"; readonly secure?: boolean; } | undefined ), ] >, ): (self: Cookies) => Cookies; ( self: Cookies, cookies: Iterable< readonly [ string, string, ( | { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Duration.Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "lax" | "strict" | "none"; readonly secure?: boolean; } | undefined ), ] >, ): Cookies;};Adds a cookie to a Cookies object
Signature
declare const setCookie: { (cookie: Cookie): (self: Cookies) => Cookies; (self: Cookies, cookie: Cookie): Cookies;};Creates and adds a cookie by name and value, throwing if the cookie fields are invalid.
Signature
declare const setUnsafe: { ( name: string, value: string, options?: { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Duration.Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "lax" | "strict" | "none"; readonly secure?: boolean; }, ): (self: Cookies) => Cookies; ( self: Cookies, name: string, value: string, options?: { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Duration.Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "lax" | "strict" | "none"; readonly secure?: boolean; }, ): Cookies;};Constructors
An empty Cookies object
Signature
declare const empty: Cookies;fromIterable
Create a Cookies object from an Iterable
Signature
declare function fromIterable(cookies: Iterable<Cookie>): Cookies;fromReadonlyRecord
Creates a Cookies collection from an existing readonly record of cookies keyed by cookie name.
Signature
declare function fromReadonlyRecord(cookies: Record.ReadonlyRecord<string, Cookie>): Cookies;fromSetCookie
Create a Cookies object from a set of Set-Cookie headers
Signature
declare function fromSetCookie(headers: string | Iterable<string, any, any>): Cookies;makeCookie
Creates a cookie, validating the name, encoded value, domain, path, and finite maxAge.
Details
Returns a CookiesError in the Result failure channel when validation fails.
Signature
declare function makeCookie( name: string, value: string, options?: { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "none" | "lax" | "strict"; readonly secure?: boolean; },): Result<Cookie, CookiesError>;makeCookieUnsafe
Create a new cookie, throwing an error if invalid
Signature
declare function makeCookieUnsafe( name: string, value: string, options?: { readonly domain?: string; readonly expires?: Date; readonly httpOnly?: boolean; readonly maxAge?: Input; readonly partitioned?: boolean; readonly path?: string; readonly priority?: "low" | "medium" | "high"; readonly sameSite?: "none" | "lax" | "strict"; readonly secure?: boolean; },): Cookie;Decoding
parseHeader
Parses a cookie header into a record of key-value pairs
Details
Adapted from https://github.com/fastify/fastify-cookie under MIT License
Signature
declare function parseHeader(header: string): Record<string, string>;Encoding
serializeCookie
Serializes a cookie into a string.
Details
Adapted from https://github.com/fastify/fastify-cookie under MIT License
Signature
declare function serializeCookie(self: Cookie): string;toCookieHeader
Serializes a Cookies object into a Cookie header.
Signature
declare function toCookieHeader(self: Cookies): string;Converts a Cookies collection to a record of decoded cookie values keyed by cookie name.
Signature
declare function toRecord(self: Cookies): Record<string, string>;toSetCookieHeaders
Serializes a Cookies collection into an array of Set-Cookie header values.
Signature
declare function toSetCookieHeaders(self: Cookies): Array<string>;Errors
CookiesError
Error returned when a cookie name, value, domain, path, or max-age option is invalid.
Details
Inspect reason to determine the specific validation failure.
Signature
declare class CookiesError extends YieldableError<this> & { readonly _tag: "CookieError";} & Readonly<{ readonly reason: CookiesErrorReason;}> { constructor(args: { readonly reason: CookiesErrorReason; }); readonly "~effect/http/Cookies/CookieError": "~effect/http/Cookies/CookieError"; message: "InvalidCookieName" | "InvalidCookieValue" | "InvalidCookieDomain" | "InvalidCookiePath" | "CookieInfinityMaxAge"; static fromReason(reason: "InvalidCookieName" | "InvalidCookieValue" | "InvalidCookieDomain" | "InvalidCookiePath" | "CookieInfinityMaxAge", cause?: unknown): CookiesError;}CookiesErrorReason
Error reason describing why cookie construction failed, such as invalid name, value, domain, path, or infinite max-age.
Signature
declare class CookiesErrorReason extends Error<{ readonly _tag: | "InvalidCookieName" | "InvalidCookieValue" | "InvalidCookieDomain" | "InvalidCookiePath" | "CookieInfinityMaxAge"; readonly cause?: unknown;}> { constructor(args: { readonly _tag: | "InvalidCookieName" | "InvalidCookieValue" | "InvalidCookieDomain" | "InvalidCookiePath" | "CookieInfinityMaxAge"; readonly cause?: unknown; });}Guards
Models
Predicates
Schemas
CookieSchema
Schema for Cookie values.
Signature
declare const CookieSchema: CookieSchema;CookieSchema interface
Schema interface for validating Cookie values.
Signature
interface CookieSchema extends declare<Cookie> { constructor(_: never);}CookiesSchema
Schema for Cookies collections.
Details
JSON encoding uses Set-Cookie header strings, while isomorphic encoding uses a readonly record of cookie values.
Signature
declare const CookiesSchema: CookiesSchema;CookiesSchema interface
Schema interface for validating and encoding Cookies collections.
Signature
interface CookiesSchema extends declare<Cookies, Record.ReadonlyRecord<string, Cookie>> { constructor(_: never);}schemaRecord
Schema for transforming Cookies into records of decoded string values keyed by cookie name.
Signature
declare const schemaRecord: decodeTo<$Record<String, String>, CookiesSchema, never, never>;
Adds an expired cookie safely with an empty value,
Max-Age=0, and an epochExpiresvalue.Details
Returns a
CookiesErrorin theResultfailure channel when the name or options are invalid.