UNPKG

10.7 kBTypeScriptView Raw
1export const version: string;
2
3export const PrefixSecurityEnum: Readonly<{
4 DISABLED: string;
5 SILENT: string;
6 STRICT: string;
7}>;
8
9/**
10 * Parse a cookie date string into a Date.
11 * Parses according to RFC6265 Section 5.1.1, not Date.parse().
12 */
13export function parseDate(string: string): Date;
14
15/**
16 * Format a Date into a RFC1123 string (the RFC6265-recommended format).
17 */
18export function formatDate(date: Date): string;
19
20/**
21 * Transforms a domain-name into a canonical domain-name.
22 * The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot
23 * and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265).
24 * For the most part, this function is idempotent (can be run again on its output without ill effects).
25 */
26export function canonicalDomain(str: string): string;
27
28/**
29 * Answers "does this real domain match the domain in a cookie?".
30 * The str is the "current" domain-name and the domStr is the "cookie" domain-name.
31 * Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a "suffix match".
32 *
33 * The canonicalize parameter will run the other two parameters through canonicalDomain or not.
34 */
35export function domainMatch(str: string, domStr: string, canonicalize?: boolean): boolean;
36
37/**
38 * Given a current request/response path, gives the Path apropriate for storing in a cookie.
39 * This is basically the "directory" of a "file" in the path, but is specified by Section 5.1.4 of the RFC.
40 *
41 * The path parameter MUST be only the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.).
42 * This is the .pathname property of node's uri.parse() output.
43 */
44export function defaultPath(path: string): string;
45
46/**
47 * Answers "does the request-path path-match a given cookie-path?" as per RFC6265 Section 5.1.4.
48 * Returns a boolean.
49 *
50 * This is essentially a prefix-match where cookiePath is a prefix of reqPath.
51 */
52export function pathMatch(reqPath: string, cookiePath: string): boolean;
53
54/**
55 * alias for Cookie.parse(cookieString[, options])
56 */
57export function parse(cookieString: string, options?: Cookie.ParseOptions): Cookie | undefined;
58
59/**
60 * alias for Cookie.fromJSON(string)
61 */
62export function fromJSON(string: string): Cookie;
63
64export function getPublicSuffix(hostname: string): string | null;
65
66export function cookieCompare(a: Cookie, b: Cookie): number;
67
68export function permuteDomain(domain: string, allowSpecialUseDomain?: boolean): string[];
69
70export function permutePath(path: string): string[];
71
72export class Cookie {
73 static parse(cookieString: string, options?: Cookie.ParseOptions): Cookie | undefined;
74
75 static fromJSON(strOrObj: string | object): Cookie | null;
76
77 constructor(properties?: Cookie.Properties);
78
79 key: string;
80 value: string;
81 expires: Date | "Infinity";
82 maxAge: number | "Infinity" | "-Infinity";
83 domain: string | null;
84 path: string | null;
85 secure: boolean;
86 httpOnly: boolean;
87 extensions: string[] | null;
88 creation: Date | null;
89 creationIndex: number;
90
91 hostOnly: boolean | null;
92 pathIsDefault: boolean | null;
93 lastAccessed: Date | null;
94 sameSite: string;
95
96 toString(): string;
97
98 cookieString(): string;
99
100 setExpires(exp: Date | string): void;
101
102 setMaxAge(number: number): void;
103
104 expiryTime(now?: number): number;
105
106 expiryDate(now?: number): Date;
107
108 TTL(now?: Date): number | typeof Infinity;
109
110 isPersistent(): boolean;
111
112 canonicalizedDomain(): string | null;
113
114 cdomain(): string | null;
115
116 inspect(): string;
117
118 toJSON(): { [key: string]: any };
119
120 clone(): Cookie;
121
122 validate(): boolean | string;
123}
124
125export namespace Cookie {
126 interface ParseOptions {
127 loose?: boolean | undefined;
128 }
129
130 interface Properties {
131 key?: string | undefined;
132 value?: string | undefined;
133 expires?: Date | "Infinity" | undefined;
134 maxAge?: number | "Infinity" | "-Infinity" | undefined;
135 domain?: string | undefined;
136 path?: string | undefined;
137 secure?: boolean | undefined;
138 httpOnly?: boolean | undefined;
139 extensions?: string[] | undefined;
140 creation?: Date | undefined;
141 creationIndex?: number | undefined;
142
143 hostOnly?: boolean | undefined;
144 pathIsDefault?: boolean | undefined;
145 lastAccessed?: Date | undefined;
146 sameSite?: string | undefined;
147 }
148
149 interface Serialized {
150 [key: string]: any;
151 }
152}
153
154export class CookieJar {
155 static deserialize(serialized: CookieJar.Serialized | string, store?: Store): Promise<CookieJar>;
156 static deserialize(
157 serialized: CookieJar.Serialized | string,
158 store: Store,
159 cb: (err: Error | null, object: CookieJar) => void,
160 ): void;
161 static deserialize(
162 serialized: CookieJar.Serialized | string,
163 cb: (err: Error | null, object: CookieJar) => void,
164 ): void;
165
166 static deserializeSync(serialized: CookieJar.Serialized | string, store?: Store): CookieJar;
167
168 static fromJSON(string: string): CookieJar;
169
170 constructor(store?: Store, options?: CookieJar.Options);
171
172 setCookie(
173 cookieOrString: Cookie | string,
174 currentUrl: string,
175 options?: CookieJar.SetCookieOptions,
176 ): Promise<Cookie>;
177 setCookie(
178 cookieOrString: Cookie | string,
179 currentUrl: string,
180 options: CookieJar.SetCookieOptions,
181 cb: (err: Error | null, cookie: Cookie) => void,
182 ): void;
183 setCookie(
184 cookieOrString: Cookie | string,
185 currentUrl: string,
186 cb: (err: Error | null, cookie: Cookie) => void,
187 ): void;
188
189 setCookieSync(cookieOrString: Cookie | string, currentUrl: string, options?: CookieJar.SetCookieOptions): Cookie;
190
191 getCookies(currentUrl: string, options?: CookieJar.GetCookiesOptions): Promise<Cookie[]>;
192 getCookies(
193 currentUrl: string,
194 options: CookieJar.GetCookiesOptions,
195 cb: (err: Error | null, cookies: Cookie[]) => void,
196 ): void;
197 getCookies(currentUrl: string, cb: (err: Error | null, cookies: Cookie[]) => void): void;
198
199 getCookiesSync(currentUrl: string, options?: CookieJar.GetCookiesOptions): Cookie[];
200
201 getCookieString(currentUrl: string, options?: CookieJar.GetCookiesOptions): Promise<string>;
202 getCookieString(
203 currentUrl: string,
204 options: CookieJar.GetCookiesOptions,
205 cb: (err: Error | null, cookies: string) => void,
206 ): void;
207 getCookieString(currentUrl: string, cb: (err: Error | null, cookies: string) => void): void;
208
209 getCookieStringSync(currentUrl: string, options?: CookieJar.GetCookiesOptions): string;
210
211 getSetCookieStrings(currentUrl: string, options?: CookieJar.GetCookiesOptions): Promise<string[]>;
212 getSetCookieStrings(
213 currentUrl: string,
214 options: CookieJar.GetCookiesOptions,
215 cb: (err: Error | null, cookies: string[]) => void,
216 ): void;
217 getSetCookieStrings(currentUrl: string, cb: (err: Error | null, cookies: string[]) => void): void;
218
219 getSetCookieStringsSync(currentUrl: string, options?: CookieJar.GetCookiesOptions): string[];
220
221 serialize(): Promise<CookieJar.Serialized>;
222 serialize(cb: (err: Error | null, serializedObject: CookieJar.Serialized) => void): void;
223
224 serializeSync(): CookieJar.Serialized;
225
226 toJSON(): CookieJar.Serialized;
227
228 clone(store?: Store): Promise<CookieJar>;
229 clone(store: Store, cb: (err: Error | null, newJar: CookieJar) => void): void;
230 clone(cb: (err: Error | null, newJar: CookieJar) => void): void;
231
232 cloneSync(store?: Store): CookieJar;
233
234 removeAllCookies(): Promise<void>;
235 removeAllCookies(cb: (err: Error | null) => void): void;
236
237 removeAllCookiesSync(): void;
238}
239
240export namespace CookieJar {
241 interface Options {
242 allowSpecialUseDomain?: boolean | undefined;
243 looseMode?: boolean | undefined;
244 rejectPublicSuffixes?: boolean | undefined;
245 prefixSecurity?: string | undefined;
246 }
247
248 interface SetCookieOptions {
249 http?: boolean | undefined;
250 secure?: boolean | undefined;
251 now?: Date | undefined;
252 ignoreError?: boolean | undefined;
253 }
254
255 interface GetCookiesOptions {
256 http?: boolean | undefined;
257 secure?: boolean | undefined;
258 now?: Date | undefined;
259 expire?: boolean | undefined;
260 allPaths?: boolean | undefined;
261 }
262
263 interface Serialized {
264 version: string;
265 storeType: string;
266 rejectPublicSuffixes: boolean;
267 cookies: Cookie.Serialized[];
268 }
269}
270
271export abstract class Store {
272 synchronous: boolean;
273
274 findCookie(domain: string, path: string, key: string, cb: (err: Error | null, cookie: Cookie | null) => void): void;
275
276 findCookies(
277 domain: string,
278 path: string,
279 allowSpecialUseDomain: boolean,
280 cb: (err: Error | null, cookie: Cookie[]) => void,
281 ): void;
282
283 putCookie(cookie: Cookie, cb: (err: Error | null) => void): void;
284
285 updateCookie(oldCookie: Cookie, newCookie: Cookie, cb: (err: Error | null) => void): void;
286
287 removeCookie(domain: string, path: string, key: string, cb: (err: Error | null) => void): void;
288
289 removeCookies(domain: string, path: string, cb: (err: Error | null) => void): void;
290
291 getAllCookies(cb: (err: Error | null, cookie: Cookie[]) => void): void;
292}
293
294export class MemoryCookieStore extends Store {
295 findCookie(domain: string, path: string, key: string, cb: (err: Error | null, cookie: Cookie | null) => void): void;
296 findCookie(domain: string, path: string, key: string): Promise<Cookie | null>;
297
298 findCookies(
299 domain: string,
300 path: string,
301 allowSpecialUseDomain: boolean,
302 cb: (err: Error | null, cookie: Cookie[]) => void,
303 ): void;
304 findCookies(domain: string, path: string, cb: (err: Error | null, cookie: Cookie[]) => void): void;
305 findCookies(domain: string, path: string, allowSpecialUseDomain?: boolean): Promise<Cookie[]>;
306
307 putCookie(cookie: Cookie, cb: (err: Error | null) => void): void;
308 putCookie(cookie: Cookie): Promise<void>;
309
310 updateCookie(oldCookie: Cookie, newCookie: Cookie, cb: (err: Error | null) => void): void;
311 updateCookie(oldCookie: Cookie, newCookie: Cookie): Promise<void>;
312
313 removeCookie(domain: string, path: string, key: string, cb: (err: Error | null) => void): void;
314 removeCookie(domain: string, path: string, key: string): Promise<void>;
315
316 removeCookies(domain: string, path: string, cb: (err: Error | null) => void): void;
317 removeCookies(domain: string, path: string): Promise<void>;
318
319 getAllCookies(cb: (err: Error | null, cookie: Cookie[]) => void): void;
320 getAllCookies(): Promise<Cookie[]>;
321}