UNPKG

@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
'use strict'; 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;