lin3s-sylius-shop-api-client
Version:
JavaScript client on top of SyliusShopApiPlugin to build integrations with ease.
136 lines (106 loc) • 3.56 kB
JavaScript
;
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;