@mherod/get-cookie 4.0.4 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/.env.example +5 -0
  2. package/.husky/commit-msg +6 -2
  3. package/.husky/pre-commit +6 -4
  4. package/.husky/pre-push +6 -4
  5. package/dist/chunk-GVQTX3C5.js +2 -0
  6. package/dist/chunk-GVQTX3C5.js.map +1 -0
  7. package/dist/cli.cjs +1 -3
  8. package/dist/cli.cjs.map +1 -1
  9. package/dist/getChromePassword-6XZINNNO.js +2 -0
  10. package/dist/{getChromePassword-GTIXL733.js.map → getChromePassword-6XZINNNO.js.map} +1 -1
  11. package/dist/index.cjs +1 -3
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.d.cts +228 -49
  14. package/dist/index.d.ts +228 -49
  15. package/dist/index.js +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/tsconfig.tsbuildinfo +1 -0
  18. package/eslint.config.js +2 -17
  19. package/examples/README.md +37 -0
  20. package/examples/advanced-usage.ts +56 -0
  21. package/examples/basic-usage.ts +44 -0
  22. package/examples/cli-examples.sh +51 -0
  23. package/package.json +22 -26
  24. package/tsconfig.build.json +2 -2
  25. package/tsconfig.cli.json +12 -0
  26. package/tsconfig.tsup.json +12 -0
  27. package/tsup.cli.ts +1 -0
  28. package/tsup.lib.ts +1 -0
  29. package/dist/chunk-56Z35D5R.js +0 -2
  30. package/dist/chunk-56Z35D5R.js.map +0 -1
  31. package/dist/chunk-5FUMK7M3.js +0 -4
  32. package/dist/chunk-5FUMK7M3.js.map +0 -1
  33. package/dist/chunk-A6MIB6FP.js +0 -2
  34. package/dist/chunk-A6MIB6FP.js.map +0 -1
  35. package/dist/chunk-CFMK2YSL.js +0 -2
  36. package/dist/chunk-CFMK2YSL.js.map +0 -1
  37. package/dist/chunk-IRERRCUF.js +0 -2
  38. package/dist/chunk-IRERRCUF.js.map +0 -1
  39. package/dist/chunk-UPNW543B.js +0 -2
  40. package/dist/chunk-UPNW543B.js.map +0 -1
  41. package/dist/chunk-VMBA4NVU.js +0 -2
  42. package/dist/chunk-VMBA4NVU.js.map +0 -1
  43. package/dist/getChromeCookie-CL3SRRWX.js +0 -2
  44. package/dist/getChromeCookie-CL3SRRWX.js.map +0 -1
  45. package/dist/getChromePassword-GTIXL733.js +0 -2
  46. package/dist/getCookie-WV5KDZN7.js +0 -2
  47. package/dist/getCookie-WV5KDZN7.js.map +0 -1
  48. package/dist/getFirefoxCookie-BXQ2GXAW.js +0 -2
  49. package/dist/getFirefoxCookie-BXQ2GXAW.js.map +0 -1
  50. package/dist/getGroupedRenderedCookies-FNJ6FQVQ.js +0 -2
  51. package/dist/getGroupedRenderedCookies-FNJ6FQVQ.js.map +0 -1
  52. package/dist/getMergedRenderedCookies-PNC2LHSD.js +0 -2
  53. package/dist/getMergedRenderedCookies-PNC2LHSD.js.map +0 -1
package/dist/index.d.cts CHANGED
@@ -27,8 +27,8 @@ import { z } from 'zod';
27
27
  * ```
28
28
  */
29
29
  declare const CookieSpecSchema: z.ZodObject<{
30
- name: z.ZodString;
31
- domain: z.ZodString;
30
+ name: z.ZodEffects<z.ZodString, string, string>;
31
+ domain: z.ZodEffects<z.ZodString, string, string>;
32
32
  }, "strict", z.ZodTypeAny, {
33
33
  name: string;
34
34
  domain: string;
@@ -91,9 +91,9 @@ type CookieSpec = z.infer<typeof CookieSpecSchema>;
91
91
  * ```
92
92
  */
93
93
  declare const ExportedCookieSchema: z.ZodObject<{
94
- domain: z.ZodString;
95
- name: z.ZodString;
96
- value: z.ZodString;
94
+ domain: z.ZodEffects<z.ZodString, string, string>;
95
+ name: z.ZodEffects<z.ZodString, string, string>;
96
+ value: z.ZodPipeline<z.ZodEffects<z.ZodString, unknown, string>, z.ZodAny>;
97
97
  expiry: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"Infinity">, z.ZodDate, z.ZodNumber]>>;
98
98
  meta: z.ZodOptional<z.ZodObject<{
99
99
  file: z.ZodOptional<z.ZodString>;
@@ -101,26 +101,26 @@ declare const ExportedCookieSchema: z.ZodObject<{
101
101
  decrypted: z.ZodOptional<z.ZodBoolean>;
102
102
  secure: z.ZodOptional<z.ZodBoolean>;
103
103
  httpOnly: z.ZodOptional<z.ZodBoolean>;
104
- path: z.ZodOptional<z.ZodString>;
104
+ path: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>>;
105
105
  }, "strict", z.ZodUnknown, z.objectOutputType<{
106
106
  file: z.ZodOptional<z.ZodString>;
107
107
  browser: z.ZodOptional<z.ZodString>;
108
108
  decrypted: z.ZodOptional<z.ZodBoolean>;
109
109
  secure: z.ZodOptional<z.ZodBoolean>;
110
110
  httpOnly: z.ZodOptional<z.ZodBoolean>;
111
- path: z.ZodOptional<z.ZodString>;
111
+ path: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>>;
112
112
  }, z.ZodUnknown, "strict">, z.objectInputType<{
113
113
  file: z.ZodOptional<z.ZodString>;
114
114
  browser: z.ZodOptional<z.ZodString>;
115
115
  decrypted: z.ZodOptional<z.ZodBoolean>;
116
116
  secure: z.ZodOptional<z.ZodBoolean>;
117
117
  httpOnly: z.ZodOptional<z.ZodBoolean>;
118
- path: z.ZodOptional<z.ZodString>;
118
+ path: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>>;
119
119
  }, z.ZodUnknown, "strict">>>;
120
120
  }, "strict", z.ZodTypeAny, {
121
121
  name: string;
122
122
  domain: string;
123
- value: string;
123
+ value?: any;
124
124
  expiry?: number | Date | "Infinity" | undefined;
125
125
  meta?: z.objectOutputType<{
126
126
  file: z.ZodOptional<z.ZodString>;
@@ -128,12 +128,12 @@ declare const ExportedCookieSchema: z.ZodObject<{
128
128
  decrypted: z.ZodOptional<z.ZodBoolean>;
129
129
  secure: z.ZodOptional<z.ZodBoolean>;
130
130
  httpOnly: z.ZodOptional<z.ZodBoolean>;
131
- path: z.ZodOptional<z.ZodString>;
131
+ path: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>>;
132
132
  }, z.ZodUnknown, "strict"> | undefined;
133
133
  }, {
134
134
  name: string;
135
- domain: string;
136
135
  value: string;
136
+ domain: string;
137
137
  expiry?: number | Date | "Infinity" | undefined;
138
138
  meta?: z.objectInputType<{
139
139
  file: z.ZodOptional<z.ZodString>;
@@ -141,7 +141,7 @@ declare const ExportedCookieSchema: z.ZodObject<{
141
141
  decrypted: z.ZodOptional<z.ZodBoolean>;
142
142
  secure: z.ZodOptional<z.ZodBoolean>;
143
143
  httpOnly: z.ZodOptional<z.ZodBoolean>;
144
- path: z.ZodOptional<z.ZodString>;
144
+ path: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>>;
145
145
  }, z.ZodUnknown, "strict"> | undefined;
146
146
  }>;
147
147
  /**
@@ -196,69 +196,248 @@ declare const RenderOptionsSchema: z.ZodObject<{
196
196
  * Type definition for render options
197
197
  */
198
198
  type RenderOptions = z.infer<typeof RenderOptionsSchema>;
199
+ /**
200
+ * Schema for browser names
201
+ */
202
+ declare const BrowserNameSchema: z.ZodEnum<["Chrome", "Firefox", "Safari", "internal", "unknown"]>;
203
+ /**
204
+ * Type definition for browser names
205
+ */
206
+ type BrowserName = z.infer<typeof BrowserNameSchema>;
207
+ /**
208
+ * Schema for cookie query strategy
209
+ */
210
+ declare const CookieQueryStrategySchema: z.ZodObject<{
211
+ browserName: z.ZodEnum<["Chrome", "Firefox", "Safari", "internal", "unknown"]>;
212
+ queryCookies: z.ZodFunction<z.ZodTuple<[z.ZodString, z.ZodString], z.ZodUnknown>, z.ZodPromise<z.ZodArray<z.ZodObject<{
213
+ domain: z.ZodEffects<z.ZodString, string, string>;
214
+ name: z.ZodEffects<z.ZodString, string, string>;
215
+ value: z.ZodPipeline<z.ZodEffects<z.ZodString, unknown, string>, z.ZodAny>;
216
+ expiry: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"Infinity">, z.ZodDate, z.ZodNumber]>>;
217
+ meta: z.ZodOptional<z.ZodObject<{
218
+ file: z.ZodOptional<z.ZodString>;
219
+ browser: z.ZodOptional<z.ZodString>;
220
+ decrypted: z.ZodOptional<z.ZodBoolean>;
221
+ secure: z.ZodOptional<z.ZodBoolean>;
222
+ httpOnly: z.ZodOptional<z.ZodBoolean>;
223
+ path: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>>;
224
+ }, "strict", z.ZodUnknown, z.objectOutputType<{
225
+ file: z.ZodOptional<z.ZodString>;
226
+ browser: z.ZodOptional<z.ZodString>;
227
+ decrypted: z.ZodOptional<z.ZodBoolean>;
228
+ secure: z.ZodOptional<z.ZodBoolean>;
229
+ httpOnly: z.ZodOptional<z.ZodBoolean>;
230
+ path: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>>;
231
+ }, z.ZodUnknown, "strict">, z.objectInputType<{
232
+ file: z.ZodOptional<z.ZodString>;
233
+ browser: z.ZodOptional<z.ZodString>;
234
+ decrypted: z.ZodOptional<z.ZodBoolean>;
235
+ secure: z.ZodOptional<z.ZodBoolean>;
236
+ httpOnly: z.ZodOptional<z.ZodBoolean>;
237
+ path: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>>;
238
+ }, z.ZodUnknown, "strict">>>;
239
+ }, "strict", z.ZodTypeAny, {
240
+ name: string;
241
+ domain: string;
242
+ value?: any;
243
+ expiry?: number | Date | "Infinity" | undefined;
244
+ meta?: z.objectOutputType<{
245
+ file: z.ZodOptional<z.ZodString>;
246
+ browser: z.ZodOptional<z.ZodString>;
247
+ decrypted: z.ZodOptional<z.ZodBoolean>;
248
+ secure: z.ZodOptional<z.ZodBoolean>;
249
+ httpOnly: z.ZodOptional<z.ZodBoolean>;
250
+ path: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>>;
251
+ }, z.ZodUnknown, "strict"> | undefined;
252
+ }, {
253
+ name: string;
254
+ value: string;
255
+ domain: string;
256
+ expiry?: number | Date | "Infinity" | undefined;
257
+ meta?: z.objectInputType<{
258
+ file: z.ZodOptional<z.ZodString>;
259
+ browser: z.ZodOptional<z.ZodString>;
260
+ decrypted: z.ZodOptional<z.ZodBoolean>;
261
+ secure: z.ZodOptional<z.ZodBoolean>;
262
+ httpOnly: z.ZodOptional<z.ZodBoolean>;
263
+ path: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>>;
264
+ }, z.ZodUnknown, "strict"> | undefined;
265
+ }>, "many">>>;
266
+ }, "strict", z.ZodTypeAny, {
267
+ browserName: "unknown" | "Chrome" | "Firefox" | "Safari" | "internal";
268
+ queryCookies: (args_0: string, args_1: string, ...args: unknown[]) => Promise<{
269
+ name: string;
270
+ domain: string;
271
+ value?: any;
272
+ expiry?: number | Date | "Infinity" | undefined;
273
+ meta?: z.objectOutputType<{
274
+ file: z.ZodOptional<z.ZodString>;
275
+ browser: z.ZodOptional<z.ZodString>;
276
+ decrypted: z.ZodOptional<z.ZodBoolean>;
277
+ secure: z.ZodOptional<z.ZodBoolean>;
278
+ httpOnly: z.ZodOptional<z.ZodBoolean>;
279
+ path: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>>;
280
+ }, z.ZodUnknown, "strict"> | undefined;
281
+ }[]>;
282
+ }, {
283
+ browserName: "unknown" | "Chrome" | "Firefox" | "Safari" | "internal";
284
+ queryCookies: (args_0: string, args_1: string, ...args: unknown[]) => Promise<{
285
+ name: string;
286
+ value: string;
287
+ domain: string;
288
+ expiry?: number | Date | "Infinity" | undefined;
289
+ meta?: z.objectInputType<{
290
+ file: z.ZodOptional<z.ZodString>;
291
+ browser: z.ZodOptional<z.ZodString>;
292
+ decrypted: z.ZodOptional<z.ZodBoolean>;
293
+ secure: z.ZodOptional<z.ZodBoolean>;
294
+ httpOnly: z.ZodOptional<z.ZodBoolean>;
295
+ path: z.ZodOptional<z.ZodDefault<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>>;
296
+ }, z.ZodUnknown, "strict"> | undefined;
297
+ }[]>;
298
+ }>;
299
+ /**
300
+ * Type definition for cookie query strategy
301
+ */
302
+ type CookieQueryStrategy = z.infer<typeof CookieQueryStrategySchema>;
303
+ /**
304
+ * Type representing either a single cookie specification or an array of specifications.
305
+ * Useful when you need to query multiple cookies in a single operation.
306
+ * @example
307
+ * ```typescript
308
+ * // Single cookie spec
309
+ * const single: MultiCookieSpec = {
310
+ * domain: "example.com",
311
+ * name: "sessionId"
312
+ * };
313
+ *
314
+ * // Multiple cookie specs
315
+ * const multiple: MultiCookieSpec = [
316
+ * { domain: "example.com", name: "sessionId" },
317
+ * { domain: "api.example.com", name: "authToken" }
318
+ * ];
319
+ * ```
320
+ */
321
+ type MultiCookieSpec = CookieSpec | CookieSpec[];
199
322
 
200
323
  /**
201
- * Dynamic import for the getCookie function.
202
- * @internal
203
- * @returns Promise resolving to the getCookie function
324
+ * Retrieves browser cookies that match the specified cookie name and domain criteria.
325
+ * This function provides a way to search and filter cookies based on given specifications.
326
+ * @param cookieSpec - The cookie specification containing search criteria
327
+ * @param cookieSpec.name - The name of the cookie to search for
328
+ * @param cookieSpec.domain - (optional) The domain to filter cookies by
329
+ * @returns An array of ExportedCookie objects that match the specification
330
+ * @throws Will catch and handle any errors during cookie querying, logging a warning
331
+ * to the console without throwing to the caller
204
332
  * @example
205
333
  * ```typescript
206
- * const getCookieFn = await getCookie();
207
- * const cookies = await getCookieFn({ domain: 'example.com' });
208
- * // Returns: [{ name: 'sessionId', value: 'abc123', domain: 'example.com' }, ...]
334
+ * import { getCookie } from "@mherod/get-cookie";
335
+ *
336
+ * // Get all cookies named "sessionId"
337
+ * const cookies = await getCookie({ name: "sessionId" });
338
+ * // Returns: [{ name: "sessionId", value: "abc123", domain: ".example.com", ... }]
339
+ *
340
+ * // Get cookies named "userPref" from specific domain
341
+ * const domainCookies = await getCookie({
342
+ * name: "userPref",
343
+ * domain: "example.com"
344
+ * });
345
+ * // Returns: [{ name: "userPref", value: "darkMode", domain: "example.com", ... }]
209
346
  * ```
210
347
  */
211
- declare const getCookie: () => Promise<(cookieSpec: CookieSpec) => Promise<ExportedCookie[]>>;
348
+ declare function getCookie(cookieSpec: CookieSpec): Promise<ExportedCookie[]>;
349
+
212
350
  /**
213
- * Dynamic import for Chrome-specific cookie retrieval.
214
- * @internal
215
- * @returns Promise resolving to the getChromeCookie function
351
+ * Retrieves cookies from Chrome browser storage that match the specified criteria.
352
+ * @param cookieSpec - The cookie specification containing search criteria
353
+ * @param cookieSpec.name - The name of the cookie to search for
354
+ * @param cookieSpec.domain - (optional) The domain to filter cookies by
355
+ * @returns An array of ExportedCookie objects that match the specification
356
+ * @throws Will catch and handle any errors during cookie querying, logging a warning
357
+ * to the console without throwing to the caller
216
358
  * @example
217
359
  * ```typescript
218
- * const chromeCookieFn = await getChromeCookie();
219
- * const cookies = await chromeCookieFn({ domain: 'example.com', secure: true });
220
- * // Returns Chrome-format cookies: [{ name: 'auth', value: 'xyz789', secure: true }, ...]
360
+ * import { getChromeCookie } from "@mherod/get-cookie";
361
+ *
362
+ * // Get all cookies named "sessionId" from Chrome
363
+ * const cookies = await getChromeCookie({ name: "sessionId" });
364
+ *
365
+ * // Get cookies named "userPref" from specific domain in Chrome
366
+ * const domainCookies = await getChromeCookie({
367
+ * name: "userPref",
368
+ * domain: "example.com"
369
+ * });
221
370
  * ```
222
371
  */
223
- declare const getChromeCookie: () => Promise<(cookieSpec: CookieSpec) => Promise<ExportedCookie[]>>;
372
+ declare function getChromeCookie(cookieSpec: CookieSpec): Promise<ExportedCookie[]>;
373
+
224
374
  /**
225
- * Dynamic import for Firefox-specific cookie retrieval.
226
- * @internal
227
- * @returns Promise resolving to the getFirefoxCookie function
375
+ * Retrieves cookies from Firefox browser storage that match the specified criteria.
376
+ * @param cookieSpec - The cookie specification containing search criteria
377
+ * @param cookieSpec.name - The name of the cookie to search for
378
+ * @param cookieSpec.domain - (optional) The domain to filter cookies by
379
+ * @returns An array of ExportedCookie objects that match the specification
380
+ * @throws Will catch and handle any errors during cookie querying, logging a warning
381
+ * to the console without throwing to the caller
228
382
  * @example
229
383
  * ```typescript
230
- * const firefoxCookieFn = await getFirefoxCookie();
231
- * const cookies = await firefoxCookieFn({ path: '/api' });
232
- * // Returns Firefox-format cookies: [{ name: 'token', value: 'def456', path: '/api' }, ...]
384
+ * import { getFirefoxCookie } from "@mherod/get-cookie";
385
+ *
386
+ * // Get all cookies named "sessionId" from Firefox
387
+ * const cookies = await getFirefoxCookie({ name: "sessionId" });
388
+ *
389
+ * // Get cookies named "userPref" from specific domain in Firefox
390
+ * const domainCookies = await getFirefoxCookie({
391
+ * name: "userPref",
392
+ * domain: "example.com"
393
+ * });
233
394
  * ```
234
395
  */
235
- declare const getFirefoxCookie: () => Promise<(cookieSpec: CookieSpec) => Promise<ExportedCookie[]>>;
396
+ declare function getFirefoxCookie(cookieSpec: CookieSpec): Promise<ExportedCookie[]>;
397
+
236
398
  /**
237
- * Dynamic import for retrieving grouped and rendered cookies.
238
- * @internal
239
- * @returns Promise resolving to the getGroupedRenderedCookies function
399
+ * Retrieves and renders cookies in a grouped format based on their source files.
400
+ * @param cookieSpec - The cookie specification containing search criteria
401
+ * @param cookieSpec.name - The name of the cookie to search for
402
+ * @param cookieSpec.domain - (optional) The domain to filter cookies by
403
+ * @param options - Options for rendering the cookies
404
+ * @param options.showFilePaths - Whether to include file paths in the output
405
+ * @param options.separator - Custom separator for cookie values
406
+ * @returns An array of strings, each representing a group of cookies from a source file
240
407
  * @example
241
408
  * ```typescript
242
- * const groupedCookiesFn = await getGroupedRenderedCookies();
243
- * const cookieStrings = await groupedCookiesFn({ domain: 'example.com' });
244
- * // Returns: ['sessionId=abc123; Domain=example.com', 'auth=xyz789; Domain=example.com']
409
+ * // Basic usage - get all cookies named "sessionId" grouped by source file
410
+ * const cookies = await getGroupedRenderedCookies({ name: "sessionId" });
411
+ *
412
+ * // Get cookies with domain filter and custom rendering options
413
+ * const domainCookies = await getGroupedRenderedCookies(
414
+ * {
415
+ * name: "userPref",
416
+ * domain: "example.com"
417
+ * },
418
+ * {
419
+ * showFilePaths: true,
420
+ * separator: " | "
421
+ * }
422
+ * );
245
423
  * ```
246
424
  */
247
- declare const getGroupedRenderedCookies: () => Promise<(cookieSpec: CookieSpec) => Promise<string[]>>;
425
+ declare function getGroupedRenderedCookies(cookieSpec: CookieSpec, options?: Omit<RenderOptions, "format">): Promise<string[]>;
426
+
248
427
  /**
249
- * Dynamic import for retrieving merged and rendered cookies.
250
- * @internal
251
- * @returns Promise resolving to the getMergedRenderedCookies function
428
+ * Retrieves and renders cookies in a merged format
429
+ * @param cookieSpec - The cookie specification to query
430
+ * @param options - Optional rendering options
431
+ * @returns Promise resolving to rendered cookie string
252
432
  * @example
253
433
  * ```typescript
254
- * const mergedCookiesFn = await getMergedRenderedCookies();
255
- * const cookieString = await mergedCookiesFn(
256
- * { domain: 'example.com' },
434
+ * const cookieString = await getMergedRenderedCookies(
435
+ * { name: 'session', domain: 'example.com' },
257
436
  * { separator: '; ' }
258
437
  * );
259
- * // Returns: "sessionId=abc123; auth=xyz789"
438
+ * console.log(cookieString); // "session=abc123; auth=xyz789"
260
439
  * ```
261
440
  */
262
- declare const getMergedRenderedCookies: () => Promise<(cookieSpec: CookieSpec, options?: Omit<RenderOptions, "format">) => Promise<string>>;
441
+ declare function getMergedRenderedCookies(cookieSpec: CookieSpec, options?: Omit<RenderOptions, "format">): Promise<string>;
263
442
 
264
- export { getChromeCookie, getCookie, getFirefoxCookie, getGroupedRenderedCookies, getMergedRenderedCookies };
443
+ export { type BrowserName, type CookieQueryStrategy, type CookieSpec, type ExportedCookie, type MultiCookieSpec, type RenderOptions, getChromeCookie, getCookie, getFirefoxCookie, getGroupedRenderedCookies, getMergedRenderedCookies };