Skip to content

rosahaj/deno-another-cookiejar

This branch is 16 commits behind jd1378/deno-another-cookiejar:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

640b5f6 · Feb 27, 2023
Dec 11, 2022
May 17, 2022
Jan 31, 2021
Jan 2, 2023
Jan 31, 2021
Feb 27, 2023
Dec 11, 2022
Nov 18, 2022
Nov 18, 2022
May 17, 2022
Jan 31, 2021
Feb 27, 2023
Feb 27, 2023
Feb 10, 2021

Repository files navigation

deno-another-cookiejar

This library offers a fetch wrapper that retain cookies. This library also provides a simple cookiejar;

Why the name ? because I didn't want to reserve the cookiejar name, since this library may not be good at it. (But I hope you like it)

Did you like this ? Take a look at our other library, you may like that as well: https://github.com/jd1378/deno-fetch-goody

usage

you can import Cookie, CookieJar, wrapFetch from mod.ts file.

import {
  Cookie,
  CookieJar,
  wrapFetch,
} from "https://deno.land/x/another_cookiejar@v5.0.3/mod.ts";

wrapFetch

// this simple
const fetch = wrapFetch();

Or

// you can also pass your own cookiejar to wrapFetch to save/load your cookies
const cookieJar = new CookieJar();
// Now use this fetch and any cookie that is set will be sent with your next requests automatically
const fetch = wrapFetch({ cookieJar });
//...
fetch("http://example.com");
// and you can read your cookies from the jar
cookieJar.getCookie({
  name: "cookieName",
})?.value; // your cookie value

You can play around with it too see what it has to offer!

cookies should only be sent to their corresponding domains automatically.

Secure cookies will not be sent over unsecure connections.

Cookie

you can create cookies in two ways:

// first: using Cookie constructor with CookieOptions
const cookie = new Cookie({
  name: "foo",
  value: "bar",
});
// second:
const cookie = Cookie.from("foo=bar;"); // any string from Set-Cookie header value is also valid.

CookieJar

const cookieJar = new CookieJar();

also if you have cookies from before:

const cookieJar = new CookieJar(cookiesArray); // cookiesArray: Array<Cookie> | Array<CookieOptions>

Note on retrieving cookies (+v2.0.0)

You can get cookies using either CookieOptions or a Cookie itself. The difference is if you use CookieOptions, it will strictly check any prop that is passed against the cookie. But if you use a Cookie object, it will only check name, path and domain.

JSON serializing Cookie

Each cookie object is easily serialized and deserialized. Example:

const exampleOption = { name: "foo", value: "bar" };

const myCookie = new Cookie(exampleOption);

new Cookie(
  JSON.parse(
    JSON.stringify(myCookie),
  ),
).toString() === myCookie.toString(); // true

JSON serializing CookieJar

You can even easily serialize your CookierJar. Example:

const exampleOption = { name: "foo", value: "bar" };

const myCookie = new Cookie(exampleOption);

const cookieJar = new CookieJar([myCookie]);

new CookieJar(
  JSON.parse(
    JSON.stringify(cookieJar),
  ),
).cookies[0].toString() === myCookie.toString(); // true

test

fetch wrapper tests require network access to emulate server.

run with deno test --allow-net

notes

This library is only tested lightly. you can contribute to this if you want to make it better, but I probably won't add much feature/test anymore.

This library does not strictly follow the specs, but does try to follow it loosely. just keep it in mind when using so you don't get surprises.

does not support handling of __Secure- and __Host- cookies.

Packages

No packages published

Languages

  • TypeScript 100.0%