@kiwicom/cookies
TypeScript icon, indicating that this package has built-in type declarations

0.6.1 • Public • Published

Cookies

Finally a proper cookie management system. 🍪

yarn add @kiwicom/cookies

API

The API handles:

  • managing cookies
  • managing local storage
  • managing React context
  • managing 3rd party scripts
  • generating documentation

Cookies

import { Cookie, Settings, save, load, remove } from "@kiwicom/cookies";

Cookie

A TypeScript enum that contains all cookie keys. Use it when manipulating cookies.

Settings

A TypeScript / Flow type with the following keys:

  • analytics: boolean;
  • marketing: boolean;

save(key: Cookie, value: string, opts?: Options) => void

The Options object is passed to js-cookie and has these attributes:

  • domain: string
  • path: string
  • secure: boolean

Saves a cookie. Expiration is set automatically.

load(key: Cookie) => string | null

Loads a cookie.

remove(key: Cookie, opts?: Options) => void

The Options object is passed to js-cookie and has these attributes:

  • domain: string
  • path: string
  • secure: boolean

Removes a cookie.

Local storage

TODO

React context

import { Agreed, CookiesProvider, useCookies } from "@kiwicom/cookies";

Agreed

A TypeScript enum with values TRUE or FALSE that signify if consent was agreed to.

CookiesProvider

A React context provider. Props:

  • agreedInitial?: Agreed | null used for initial server-side rendering consistency

The context has the following attributes:

  • agreed: Agreed | null
  • settings: Settings
  • handleAgree(agreed: true | false) => void
  • handleChange(settings: Settings) => void

Call handleAgree when the user consents / revokes consent. Does not change settings on agreeing, so call in conjunction with handleChange.

Call handleChange when user changes his cookie preferences.

useCookies

A utility hook that retrieves the context value.

3rd party scripts

Make scripts loadable via HTTP requests, then create <script /> tags with attributes:

  • src pointing to the script's URL
  • type of "text/plain"
  • data-cookiescript with value of "necessary" | "analytics" | "marketing"

The scripts will be loaded and executed on demand, based on the user's cookie settings.

Documentation

Load the @kiwicom/cookies/cookies.json file for a list of objects with the following signature:

type Cookie = {
  name: string;
  category: string;
  type: "cookie"; // for now
  description: string;
};

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i @kiwicom/cookies

Weekly Downloads

1

Version

0.6.1

License

MIT

Unpacked Size

112 kB

Total Files

32

Last publish

Collaborators

  • mvidalgarcia
  • dsil
  • jakubzaba
  • robincsl_kiwi
  • kiwicom.platform
  • dinodsaurus