Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mainmatter/ember-cookies
Cookies abstraction for Ember.js that works both in the browser as well as with Fastboot on the server
https://github.com/mainmatter/ember-cookies
cookies ember fastboot
Last synced: 1 day ago
JSON representation
Cookies abstraction for Ember.js that works both in the browser as well as with Fastboot on the server
- Host: GitHub
- URL: https://github.com/mainmatter/ember-cookies
- Owner: mainmatter
- License: mit
- Created: 2016-03-12T08:34:56.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-12-30T22:18:30.000Z (12 days ago)
- Last Synced: 2025-01-04T01:17:36.049Z (8 days ago)
- Topics: cookies, ember, fastboot
- Language: JavaScript
- Size: 3.82 MB
- Stars: 115
- Watchers: 8
- Forks: 46
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
![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
### Typescript
```ts
// app/controllers/index.ts
import { inject as service } from '@ember/service';
import Controller from '@ember/controller';
import CookiesService from 'ember-cookies/services/cookies';type Cookie = { name: string; value?: string };
export default class IndexController extends Controller {
@service cookies!: CookiesService;get allCookies(): Cookie[] {
this.cookies.write('now', new Date().getTime());const cookies = this.cookies.read();
return Object.keys(cookies).reduce((acc, key) => {
let value = cookies[key];
acc.push({ name: key, value });return acc;
}, [] as Cookie[]);
}get singleCookie(): Cookie {
const cookie = this.cookies.read('now');
return { name: 'now', value: cookie };
}
}
```### Javascript
```js
// app/controllers/index.js
import Controller from '@ember/controller';
import { inject as service } from '@ember/service';
import { computed } from '@ember/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 Object.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 ©
[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.