npm package: @gaurav9576/ember-cookies
Description: Cookies abstraction for Ember.js that works both in the browser as well as with Fastboot on the server.
Latest version: 1.2.0

![CI](https://github.com/simplabs/ember-cookies/workflows/CI/badge.svg)

# ember-cookies

`ember-cookies` implements an abstract __cookie API that works both in the
browser (via `document.cookie`) as well as with Fastboot in the server
context__ (using the `request` and `response` accessible via the `fastBoot`
service).

__Having access to cookies both in the browser as well as in FastBoot is key to
being able to share a common session.__

> [!NOTE]
> ember-cookies was written and is maintained by [Mainmatter](https://mainmatter.com) and contributors.
> We offer consulting, training, and team augmentation for Ember.js – check out our [website](https://mainmatter.com/ember-consulting/) to learn more!

## Installation

Install `ember-cookies` with

`ember install ember-cookies`

## Example Usage

```js
// app/controllers/application.js
import Controller from '@ember/controller';
import { inject as service } from '@ember/service';
import { computed } from '@ember/object';
const { keys } = Object;

export default class ApplicationController extends Controller {
  @service cookies;

  @computed
  get allCookies () {
    let cookieService = this.cookies;
    cookieService.write('now', new Date().getTime());

    let cookies = cookieService.read();
    return keys(cookies).reduce((acc, key) => {
      let value = cookies[key];
      acc.push({ name: key, value });

      return acc;
    }, []);
  }
}
```

## API

The `cookies` service has methods for reading and writing cookies:

* `read(name, options = {})`: reads the cookie with the given name, returns its
  value as a `String`; options can be used to set `raw` (boolean, disables
  URL-decoding the value).
* `write(name, value, options = {})`: writes a cookie with the given name and
  value; options can be used to set `domain`, `expires` (Date), `maxAge` (time
  in seconds), `path`, `secure`, `raw` (boolean, disables URL-encoding the
  value) and `sameSite`.
* `clear(name, options = {})`: clears the cookie so that future reads do not
  return a value; options can be used to specify `domain`, `path` or `secure`.
* `exists(name)`: checks whether a cookie exists at all (even with a falsy
  value) and returns `true` if that is the case or `false` otherwise.

## Testing

`ember-cookies` exposes the `clearAllCookies` test helper that clears
all known cookies to reset state before and/or after tests:

```js
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
import { clearAllCookies } from 'ember-cookies/test-support';

module('Unit | Some Module', function (hooks) {
  setupTest(hooks);

  hooks.beforeEach(function () {
    clearAllCookies();
  });

  // or you may wat to clear cookies after the test run
  hooks.afterEach(function () {
    clearAllCookies();
  });
});
```

## License

`ember-cookies` is developed by and &copy;
[Mainmatter GmbH](http://mainmatter.com) and contributors. It is released under the
[MIT License](https://github.com/simplabs/ember-simple-auth/blob/master/LICENSE).

`ember-cookies` is not an official part of [Ember.js](http://emberjs.com) and
is not maintained by the Ember.js Core Team.