Giter Site home page Giter Site logo

mainmatter / ember-cookies Goto Github PK

View Code? Open in Web Editor NEW
116.0 8.0 45.0 3.85 MB

Cookies abstraction for Ember.js that works both in the browser as well as with Fastboot on the server

License: MIT License

JavaScript 96.52% HTML 3.23% Handlebars 0.25%
ember cookies fastboot

ember-cookies's Introduction

CI

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 and contributors. We offer consulting, training, and team augmentation for Ember.js โ€“ check out our website to learn more!

Installation

Install ember-cookies with

ember install ember-cookies

Example Usage

// 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:

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 and contributors. It is released under the MIT License.

ember-cookies is not an official part of Ember.js and is not maintained by the Ember.js Core Team.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.