@shopify/react-network
Version:
A collection of components that allow you to set common HTTP headers from within your React application
42 lines (39 loc) • 946 B
JavaScript
import cookie from 'cookie';
class ServerCookieManager {
constructor(cookies = {}) {
this.cookies = new Map();
const parsedCookies = typeof cookies === 'string' ? cookie.parse(cookies) : cookies;
Object.entries(parsedCookies).forEach(([key, value]) => {
this.setCookie(key, value);
});
}
getCookie(name) {
const cookie = this.cookies.get(name);
return cookie && cookie.value;
}
getCookies() {
const cookies = {};
for (const [key, value] of this.cookies) {
cookies[key] = value;
}
return {
...cookies
};
}
setCookie(name, value) {
const fullCookie = typeof value === 'string' ? {
value
} : value;
this.cookies.set(name, fullCookie);
}
removeCookie(name) {
this.cookies.set(name, {
value: '',
expires: new Date('Thu, 01 Jan 1970 00:00:01 GMT')
});
}
clear() {
this.cookies.clear();
}
}
export { ServerCookieManager };