@shopify/react-network
Version:
A collection of components that allow you to set common HTTP headers from within your React application.
41 lines (40 loc) • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var network_1 = require("@shopify/network");
var manager_1 = require("./manager");
exports.NetworkManager = manager_1.NetworkManager;
exports.EFFECT_ID = manager_1.EFFECT_ID;
var context_1 = require("./context");
exports.NetworkContext = context_1.NetworkContext;
function applyToContext(ctx, manager) {
var _a = manager.extract(), status = _a.status, csp = _a.csp, redirectUrl = _a.redirectUrl;
var cspEntries = Object.entries(csp);
if (cspEntries.length > 0) {
var cspHeader = cspEntries
.map(function (_a) {
var _b = tslib_1.__read(_a, 2), key = _b[0], value = _b[1];
var printedValue;
if (typeof value === 'boolean') {
printedValue = '';
}
else if (typeof value === 'string') {
printedValue = value;
}
else {
printedValue = value.join(' ');
}
return "" + key + (printedValue ? ' ' : '') + printedValue;
})
.join('; ');
ctx.set(network_1.Header.ContentSecurityPolicy, cspHeader);
}
if (redirectUrl) {
ctx.redirect(redirectUrl);
}
if (status) {
ctx.status = status;
}
return ctx;
}
exports.applyToContext = applyToContext;