0.6.1 • Published 2 years ago

@kiwicom/cookies v0.6.1

Weekly downloads
600
License
MIT
Repository
gitlab
Last release
2 years ago

Cookies

Finally a proper cookie management system. :cookie:

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

0.5.3

2 years ago

0.6.1

2 years ago

0.5.2

2 years ago

0.6.0

2 years ago

0.5.1

2 years ago

0.4.8

2 years ago

0.4.7

2 years ago

0.4.6

2 years ago

0.5.0

2 years ago

0.4.5

2 years ago

0.4.4

2 years ago

0.4.1

2 years ago

0.4.0

2 years ago

0.4.3

2 years ago

0.4.2

2 years ago

0.3.0

2 years ago

0.2.15

2 years ago

0.2.14

2 years ago

0.2.13

3 years ago

0.2.12

3 years ago

0.2.11

3 years ago

0.2.10

3 years ago

0.2.9

3 years ago

0.2.8

3 years ago

0.2.7

3 years ago

0.2.6

3 years ago

0.2.5

3 years ago

0.2.4

3 years ago

0.2.3

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago

0.1.4

3 years ago

0.2.2

3 years ago

0.1.3

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.5

3 years ago

0.0.6

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago