@shopify/react-network
Version:
A collection of components that allow you to set common HTTP headers from within your React application
48 lines (41 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var manager = require('./manager.js');
var context = require('./context.js');
function applyToContext(ctx, manager) {
const {
status,
redirectUrl,
headers,
cookies
} = manager.extract();
if (redirectUrl) {
ctx.redirect(redirectUrl);
}
if (status) {
ctx.status = status;
}
for (const [header, value] of headers) {
ctx.set(header, value);
}
Object.entries(cookies).forEach(([cookie, options]) => {
const {
value,
...cookieOptions
} = options;
// only set cookies that have been changed
// decode URI as the manager's cookie value is also decoded
const rawCookieValue = ctx.cookies.get(cookie);
if (rawCookieValue != null && decodeURIComponent(rawCookieValue) === value) {
return;
}
// missing 'none` in `sameSite`
// https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/cookies/index.d.ts#L91
ctx.cookies.set(cookie, value, cookieOptions);
});
return ctx;
}
exports.EFFECT_ID = manager.EFFECT_ID;
exports.NetworkManager = manager.NetworkManager;
exports.NetworkContext = context.NetworkContext;
exports.applyToContext = applyToContext;