@types/cookies
Version:
TypeScript definitions for cookies
172 lines (155 loc) • 6.1 kB
TypeScript
/// <reference types="node" />
import connect = require("connect");
import express = require("express");
import { IncomingMessage, ServerResponse } from "http";
import Keygrip = require("keygrip");
interface Cookies {
secure: boolean;
request: IncomingMessage;
response: ServerResponse;
/**
* This extracts the cookie with the given name from the
* Cookie header in the request. If such a cookie exists,
* its value is returned. Otherwise, nothing is returned.
*/
get(name: string, opts?: Cookies.GetOption): string | undefined;
/**
* This sets the given cookie in the response and returns
* the current context to allow chaining.If the value is omitted,
* an outbound header with an expired date is used to delete the cookie.
*/
set(name: string, value?: string | null, opts?: Cookies.SetOption): this;
}
declare namespace Cookies {
/**
* for backward-compatibility
*/
type ICookies = Cookies;
/**
* for backward-compatibility
*/
type IOptions = SetOption;
interface Option {
keys?: string[] | Keygrip | undefined;
secure?: boolean | undefined;
}
interface GetOption {
signed: boolean;
}
interface SetOption {
/**
* a number representing the milliseconds from Date.now() for expiry
*/
maxAge?: number | undefined;
/**
* a Date object indicating the cookie's expiration
* date (expires at the end of session by default).
*/
expires?: Date | undefined;
/**
* a string indicating the path of the cookie (/ by default).
*/
path?: string | undefined;
/**
* a string indicating the domain of the cookie (no default).
*/
domain?: string | undefined;
/**
* a boolean indicating whether the cookie is only to be sent
* over HTTPS (false by default for HTTP, true by default for HTTPS).
*/
secure?: boolean | undefined;
/**
* "secureProxy" option is deprecated; use "secure" option, provide "secure" to constructor if needed
*/
secureProxy?: boolean | undefined;
/**
* a boolean indicating whether the cookie is only to be sent over HTTP(S),
* and not made available to client JavaScript (true by default).
*/
httpOnly?: boolean | undefined;
/**
* a boolean or string indicating whether the cookie is a "same site" cookie (false by default).
* This can be set to 'strict', 'lax', or true (which maps to 'strict').
*/
sameSite?: "strict" | "lax" | "none" | boolean | undefined;
/**
* a boolean indicating whether the cookie is to be signed (false by default).
* If this is true, another cookie of the same name with the .sig suffix
* appended will also be sent, with a 27-byte url-safe base64 SHA1 value
* representing the hash of cookie-name=cookie-value against the first Keygrip key.
* This signature key is used to detect tampering the next time a cookie is received.
*/
signed?: boolean | undefined;
/**
* a boolean indicating whether to overwrite previously set
* cookies of the same name (false by default). If this is true,
* all cookies set during the same request with the same
* name (regardless of path or domain) are filtered out of
* the Set-Cookie header when setting this cookie.
*/
overwrite?: boolean | undefined;
/**
* a string indicating the cookie priority.
* This can be set to 'low', 'medium', or 'high'.
*/
priority?: "low" | "medium" | "high" | undefined;
/**
* a boolean indicating whether to partition the cookie in Chrome
* for the CHIPS Update (false by default). If this is true,
* Cookies from embedded sites will be partitioned
* and only readable from the same top level site from which it was created.
*/
partitioned?: boolean | undefined;
}
type CookieAttr = SetOption;
interface Cookie {
name: string;
value: string;
/**
* "maxage" is deprecated, use "maxAge" instead
*/
maxage: number;
maxAge: number;
expires: Date;
path: string;
domain: string;
secure: boolean;
httpOnly: boolean;
sameSite: boolean;
overwrite: boolean;
priority: boolean;
partitioned: boolean;
toString(): string;
toHeader(): string;
}
}
interface CookiesFunction {
(request: IncomingMessage, response: ServerResponse, options?: Cookies.Option): Cookies;
/**
* "options" array of key strings is deprecated, provide using options {"keys": keygrip}
*/
(request: IncomingMessage, response: ServerResponse, options: string[]): Cookies;
/**
* "options" instance of Keygrip is deprecated, provide using options {"keys": keygrip}
*/
// tslint:disable-next-line:unified-signatures
(request: IncomingMessage, response: ServerResponse, options: Keygrip): Cookies;
new(request: IncomingMessage, response: ServerResponse, options?: Cookies.Option): Cookies;
/**
* "options" array of key strings is deprecated, provide using options {"keys": keygrip}
*/
new(request: IncomingMessage, response: ServerResponse, options: string[]): Cookies;
/**
* "options" instance of Keygrip is deprecated, provide using options {"keys": keygrip}
*/
// tslint:disable-next-line:unified-signatures
new(request: IncomingMessage, response: ServerResponse, options: Keygrip): Cookies;
Cookie: {
new(name: string, value?: string, attrs?: Cookies.CookieAttr): Cookies.Cookie;
};
express(keys: string[] | Keygrip): express.Handler;
connect(keys: string[] | Keygrip): connect.NextHandleFunction;
}
declare const Cookies: CookiesFunction;
export = Cookies;