UNPKG

lin3s-sylius-shop-api-client

Version:

JavaScript client on top of SyliusShopApiPlugin to build integrations with ease.

136 lines (106 loc) 3.56 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.CartDoesNotExist = undefined; var _uuid = require('uuid'); var _uuid2 = _interopRequireDefault(_uuid); var _reactCookies = require('react-cookies'); var _reactCookies2 = _interopRequireDefault(_reactCookies); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var CART_TOKEN_COOKIE = 'cart-session-id'; var USER_TOKEN_COOKIE = 'user-token'; var setCookie = function setCookie() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, name = _ref.name, _ref$value = _ref.value, value = _ref$value === undefined ? '' : _ref$value, expiration = _ref.expiration, domain = _ref.domain, _ref$path = _ref.path, path = _ref$path === undefined ? '/' : _ref$path; var expires = void 0; if (expiration) { var cookieDate = new Date(); cookieDate.setTime(cookieDate.getTime() + expiration); expires = cookieDate; } _reactCookies2.default.save(name, value, { path: path, expires: expires, domain: domain }); }; var getCookie = function getCookie(name) { return _reactCookies2.default.load(name); }; var removeCookie = function removeCookie(name) { var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, domain = _ref2.domain, _ref2$path = _ref2.path, path = _ref2$path === undefined ? '/' : _ref2$path; return _reactCookies2.default.remove(name, { domain: domain, path: path }); }; var CartDoesNotExist = exports.CartDoesNotExist = function CartDoesNotExist() { _classCallCheck(this, CartDoesNotExist); this.message = 'Cart has not been initialized'; }; var session = function session(config) { var cartTokenCookie = config.cartTokenCookie || CART_TOKEN_COOKIE; return { Cart: { id: function id() { var id = getCookie(cartTokenCookie); if (typeof id === 'undefined') { throw new CartDoesNotExist(); } return id; }, generateId: function generateId() { var newSessionId = (0, _uuid2.default)(); var params = { name: cartTokenCookie, value: newSessionId, expiration: config.cartCookieExpiration || 604800000 // 7 days }; if (config.cookieDomain) { params.domain = config.cookieDomain; } setCookie(params); return newSessionId; }, remove: function remove() { var params = {}; if (config.cookieDomain) { params.domain = config.cookieDomain; } return removeCookie(cartTokenCookie, params); } }, User: { token: function token() { return getCookie(USER_TOKEN_COOKIE); }, set: function set(token) { var params = { name: USER_TOKEN_COOKIE, value: token, expiration: config.userCookieExpiration || 2592000000 // 1 month }; if (config.cookieDomain) { params.domain = config.cookieDomain; } setCookie(params); }, remove: function remove() { var params = {}; if (config.cookieDomain) { params.domain = config.cookieDomain; } return removeCookie(USER_TOKEN_COOKIE, params); } } }; }; exports.default = session;