Table of Contents
=================

* [Cookie](#cookie)
  * [Install](#install)
  * [Cookie](#cookie-1)
    * [Options](#options)
    * [Methods](#methods)
      * [cookie.set(key, value, [options])](#cookiesetkey-value-options)
      * [cookie.get(key, [value])](#cookiegetkey-value)
      * [cookie.del(key)](#cookiedelkey)
      * [cookie.clear(except, [options])](#cookieclearexcept-options)
  * [Developer](#developer)
    * [Test](#test)
    * [Start](#start)
    * [Cover](#cover)
    * [Lint](#lint)
    * [Clean](#clean)
    * [Spec](#spec)
    * [Instrument](#instrument)
    * [Readme](#readme)
  * [License](#license)

Cookie
======

> `Stability: stable`.

Standalone cookie implementation for the browser designed to work with [browserify](http://browserify.org).

Derived from the [jquery cookie plugin](https://github.com/carhartl/jquery-cookie).

## Install

```
npm i browser-cookie --save
```

## Cookie

The `Cookie` class exposes the ability to get, set and delete cookie values.

### Options

* `raw` - Do not URI encode the cookie value.
* `json` - Store the cookie value as JSON.
* `expires` - Define lifetime of the cookie in days, default is 30.
* `path` - Define the path where the cookie is valid, default is /.
* `domain` - Define the domain whether the cookie is valid.
* `secure` - If true, the cookie transmission requires a secure protocol (https).

### Methods

#### cookie.set(key, value, [options])

Sets a cookie value.

#### cookie.get(key, [value])

Gets a cookie value. If the `value` parameter is specified it should be a conversion function, if no key is specified an object containing all key value pairs is returned.

#### cookie.del(key)

Deletes a cookie value.

#### cookie.clear(except, [options])

Clear all cookies except the keys listed in the `except` array.

## Developer

Developer workflow is via [gulp](http://gulpjs.com) but should be executed as `npm` scripts to enable shell execution where necessary.

### Test

Run the headless test suite using [phantomjs](http://phantomjs.org):

```
npm test
```

To run the tests in a browser context open [test/index.html](https://github.com/socialally/browser-cookie/blob/master/test/index.html) or use the server `npm start`.

### Start

Serve the test files from a web server with:

```
npm start
```

### Cover

Run the test suite and generate code coverage:

```
npm run cover
```

### Lint

Run the source tree through [eslint](http://eslint.org):

```
npm run lint
```

### Clean

Remove generated files:

```
npm run clean
```

### Spec

Compile the test specifications:

```
npm run spec
```

### Instrument

Generate instrumented code from `lib` in `instrument`:

```
npm run instrument
```

### Readme

Generate the project readme file (requires [mdp](https://github.com/freeformsystems/mdp)):

```
npm run readme
```

## License

Everything is [MIT](http://en.wikipedia.org/wiki/MIT_License). Read the [license](https://github.com/socialally/browser-cookie/blob/master/LICENSE) if you feel inclined.

Generated by [mdp(1)](https://github.com/freeformsystems/mdp).

[node]: http://nodejs.org
[npm]: http://www.npmjs.org
[gulp]: http://gulpjs.com
[jquery-cookie]: https://github.com/carhartl/jquery-cookie
[phantomjs]: http://phantomjs.org
[browserify]: http://browserify.org
[eslint]: http://eslint.org
[mdp]: https://github.com/freeformsystems/mdp
