/** * Represents an HTTP Cookie. * * @see {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-4.2.1} */ export interface Cookie { /** Name of the cookie. */ name: string; /** Value of the cookie. */ value: string; /** * The cookie's `Expires` attribute, either as an explicit date or UTC * milliseconds. If `undefined`, the cookie will expire when the client's * session ends. * * @example Explicit date: * * ```ts * import { Cookie } from "@std/http/cookie"; * const cookie: Cookie = { * name: 'name', * value: 'value', * // expires on Fri Dec 30 2022 * expires: new Date('2022-12-31') * } * ``` * * @example UTC milliseconds * * ```ts * import { Cookie } from "@std/http/cookie"; * const cookie: Cookie = { * name: 'name', * value: 'value', * // expires 10 seconds from now * expires: Date.now() + 10000 * } * ``` */ expires?: Date | number; /** * The cookie's `Max-Age` attribute, in seconds. Must be a non-negative * integer. A cookie with a `maxAge` of `0` expires immediately. */ maxAge?: number; /** * The cookie's `Domain` attribute. Specifies those hosts to which the cookie * will be sent. */ domain?: string; /** * The cookie's `Path` attribute. A cookie with a path will only be included * in the `Cookie` request header if the requested URL matches that path. */ path?: string; /** * The cookie's `Secure` attribute. If `true`, the cookie will only be * included in the `Cookie` request header if the connection uses SSL and * HTTPS. * * @default {false} */ secure?: boolean; /** * The cookie's `HTTPOnly` attribute. If `true`, the cookie cannot be accessed via JavaScript. * * @default {false} */ httpOnly?: boolean; /** * The cookie's `Partitioned` attribute. * If `true`, the cookie will be only be included in the `Cookie` request header if * the domain it is embedded by matches the domain the cookie was originally set from. * * Warning: This is an attribute that has not been fully standardized yet. * It may change in the future without following the semver semantics of the package. * Clients may ignore the attribute until they understand it. * * @default {false} */ partitioned?: boolean; /** * Allows servers to assert that a cookie ought not to * be sent along with cross-site requests. */ sameSite?: "Strict" | "Lax" | "None"; /** * Additional key value pairs with the form "key=value". * * @default {[]} */ unparsed?: string[]; } /** * Parse cookies of a header * * @example Usage * ```ts * import { getCookies } from "@std/http/cookie"; * import { assertEquals } from "@std/assert"; * * const headers = new Headers(); * headers.set("Cookie", "full=of; tasty=chocolate"); * * const cookies = getCookies(headers); * assertEquals(cookies, { full: "of", tasty: "chocolate" }); * ``` * * @param headers The headers instance to get cookies from * @return Object with cookie names as keys */ export declare function getCookies(headers: Headers): Record; /** * Set the cookie header properly in the headers * * @example Usage * ```ts * import { Cookie, setCookie } from "@std/http/cookie"; * import { assertEquals } from "@std/assert"; * * const headers = new Headers(); * const cookie: Cookie = { name: "Space", value: "Cat" }; * setCookie(headers, cookie); * * const cookieHeader = headers.get("set-cookie"); * * assertEquals(cookieHeader, "Space=Cat"); * ``` * * @param headers The headers instance to set the cookie to * @param cookie Cookie to set */ export declare function setCookie(headers: Headers, cookie: Cookie): void; /** * Set the cookie header with empty value in the headers to delete it. * * The attributes (`path`, `domain`, `secure`, `httpOnly`, `partitioned`) need * to match the values when the cookie was set. * * > Note: Deleting a `Cookie` will set its expiration date before now. Forcing * > the browser to delete it. * * @example Usage * ```ts * import { deleteCookie } from "@std/http/cookie"; * import { assertEquals } from "@std/assert"; * * const headers = new Headers(); * deleteCookie(headers, "deno"); * * const cookieHeader = headers.get("set-cookie"); * * assertEquals(cookieHeader, "deno=; Expires=Thu, 01 Jan 1970 00:00:00 GMT"); * ``` * * @param headers The headers instance to delete the cookie from * @param name Name of cookie * @param attributes Additional cookie attributes */ export declare function deleteCookie(headers: Headers, name: string, attributes?: Pick): void; /** * Parse set-cookies of a header * * @example Usage * ```ts * import { getSetCookies } from "@std/http/cookie"; * import { assertEquals } from "@std/assert"; * * const headers = new Headers([ * ["Set-Cookie", "lulu=meow; Secure; Max-Age=3600"], * ["Set-Cookie", "booya=kasha; HttpOnly; Path=/"], * ]); * * const cookies = getSetCookies(headers); * * assertEquals(cookies[0], { * name: "lulu", * value: "meow", * secure: true, * maxAge: 3600 * }); * ``` * * @param headers The headers instance to get set-cookies from * @return List of cookies */ export declare function getSetCookies(headers: Headers): Cookie[]; //# sourceMappingURL=cookie.d.ts.map