native-fetch-cookies v3.2.2
node-fetch-cookies
A node-fetch wrapper with support for cookies.
It supports reading/writing from/to a JSON cookie jar and keeps cookies in memory until you call CookieJar.save() to reduce disk I/O.
Usage Examples
with file...
import {fetch, CookieJar} from "node-fetch-cookies";
(async () => {
// creates a CookieJar instance
const cookieJar = new CookieJar("jar.json");
// usual fetch usage, except with one or multiple cookie jars as first parameter
const response = await fetch(cookieJar, "https://example.com");
// save the received cookies to disk
await cookieJar.save();
})();On the next start cookieJar.load() can be used to load the cookies from the saved file.
...or without
import {fetch, CookieJar} from "node-fetch-cookies";
(async () => {
const cookieJar = new CookieJar();
// log in to some api
let response = await fetch(cookieJar, "https://example.com/api/login", {
method: "POST",
body: "credentials"
});
// do some requests you require login for
response = await fetch(
cookieJar,
"https://example.com/api/admin/drop-all-databases"
);
// and optionally log out again
response = await fetch(cookieJar, "https://example.com/api/logout");
})();Exports
This module exports the following classes/functions:
fetch(default)CookieJarCookieCookieParseErrornodeFetchHeadersRequestResponseFetchErrorAbortErrorisRedirect: A function that accepts a number, more precisely an http status code as input, and returns, whether the status code is a redirect status code as a boolean.
It is implemented innode-fetchand used bynode-fetch-cookies. It is also exported here, becausenode-fetchexports it.
Documentation
async fetch(cookieJars, url, options)
cookieJarsA CookieJar instance, an array of CookieJar instances or null, if you don't want to send or store cookies.urlandoptionsas in https://github.com/node-fetch/node-fetch#fetchurl-options
Returns a Promise resolving to a Response instance on success.
Class: CookieJar
A class that stores cookies.
Properties
flagsThe read/write flags as specified below.fileThe path of the cookie jar on the disk.cookiesA Map mapping hostnames to maps, which map cookie names to the respective Cookie instance.cookieIgnoreCallbackThe callback function passed tonew CookieJar(), that is called whenever a cookie couldn't be parsed.
new CookieJar(file, flags = rw, cookies, cookieIgnoreCallback)
fileAn optional string containing a relative or absolute path to the file on the disk to use.flagsAn optional string specifying whether cookies should be read and/or written from/to the jar when passing it as parameter to fetch. Default:rwr: only read from this jarw: only write to this jarrworwr: read/write from/to this jar
cookiesAn optional initializer for the cookie jar - either an array of Cookie instances or a single Cookie instance.cookieIgnoreCallback(cookie, reason)An optional callback function which will be called when a cookie is ignored instead of added to the cookie jar.cookieThe cookie stringreasonA string containing the reason why the cookie has been ignored
addCookie(cookie, fromURL)
Adds a cookie to the jar.
cookieA Cookie instance to add to the cookie jar. Alternatively this can also be a string, for example a serialized cookie received from a website. In this casefromURLmust be specified.fromURLThe url a cookie has been received from.
Returns true if the cookie has been added successfully. Returns false otherwise.
If the parser throws a CookieParseError, it will be caught and cookieIgnoreCallback will be called with the respective cookie string and error message.
domains()
Returns an iterator over all domains currently stored cookies for.
*cookiesDomain(domain)
Returns an iterator over all cookies currently stored for domain.
*cookiesValid(withSession)
Returns an iterator over all valid (non-expired) cookies.
withSession: A boolean. Iterator will include session cookies if set totrue.
*cookiesAll()
Returns an iterator over all cookies currently stored.
*cookiesValidForRequest(requestURL)
Returns an iterator over all cookies valid for a request to url.
deleteExpired(sessionEnded)
Removes all expired cookies from the jar.
sessionEnded: A boolean. Also removes session cookies if set totrue.
async load(file = this.file)
Reads cookies from file on the disk and adds the contained cookies.
file: Path to the file where the cookies should be saved. Default:this.file, the file that has been passed to the constructor.
async save(file = this.file)
Saves the cookie jar to file on the disk. Only non-expired non-session cookies are saved.
file: Path to the file where the cookies should be saved. Default:this.file, the file that has been passed to the constructor.
Class: Cookie
An abstract representation of a cookie.
Properties
nameThe identifier of the cookie.valueThe value of the cookie.expiryA Date object of the cookies expiry date ornull, if the cookie expires with the session.domainThe domain the cookie is valid for.pathThe path the cookie is valid for.secureA boolean value representing the cookie's secure attribute. If set the cookie will only be used forhttpsrequests.subdomainsA boolean value specifying whether the cookie should be used for requests to subdomains ofdomainor not.
new Cookie(str, requestURL)
Creates a cookie instance from the string representation of a cookie as send by a webserver.
strThe string representation of a cookie.urlThe url the cookie has been received from.
Will throw a CookieParseError if str couldn't be parsed.
static fromObject(obj)
Creates a cookie instance from an already existing object with the same properties.
serialize()
Serializes the cookie, transforming it to name=value so it can be used in requests.
hasExpired(sessionEnded)
Returns whether the cookie has expired or not.
sessionEnded: A boolean that specifies whether the current session has ended, meaning if set totrue, the function will returntruefor session cookies.
isValidForRequest(requestURL)
Returns whether the cookie is valid for a request to url.
Class: CookieParseError
The Error that is thrown when the cookie parser located in the constructor of the Cookie class is unable to parse the input.
License
This project is licensed under the MIT license, see LICENSE.