react-static
Version:
A progressive static site generator for React
155 lines (129 loc) • 16.9 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = makeHeadWithMeta;
exports.InlineStyle = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _react = _interopRequireDefault(require("react"));
var _utils = require("../../utils");
var _plugins = _interopRequireDefault(require("../plugins"));
//
// import packagejson from '../../../package.json'
// const { version } = packagejson
var REGEX_FOR_STYLE_TAG = /<style>|<\/style>/gi;
var InlineStyle = function InlineStyle(_ref) {
var clientCss = _ref.clientCss;
return /*#__PURE__*/_react["default"].createElement("style", {
key: "clientCss",
type: "text/css",
dangerouslySetInnerHTML: {
__html: clientCss.toString().replace(REGEX_FOR_STYLE_TAG, '')
}
});
};
exports.InlineStyle = InlineStyle;
function makeHeadWithMeta(_x) {
return _makeHeadWithMeta.apply(this, arguments);
}
function _makeHeadWithMeta() {
_makeHeadWithMeta = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(state) {
var head, route, clientScripts, config, clientStyleSheets, clientCss, pluginHeads;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
head = state.head, route = state.route, clientScripts = state.clientScripts, config = state.config, clientStyleSheets = state.clientStyleSheets, clientCss = state.clientCss;
_context.next = 3;
return _plugins["default"].headElements([], state);
case 3:
pluginHeads = _context.sent;
return _context.abrupt("return", function (_ref2) {
var children = _ref2.children,
rest = (0, _objectWithoutProperties2["default"])(_ref2, ["children"]);
var renderLinkCSS = !route.redirect && !config.inlineCss;
var useHelmetTitle = head.title && head.title[0] && head.title[0].props.children !== '';
var childrenArray = _react["default"].Children.toArray(children);
if (useHelmetTitle) {
head.title[0] = /*#__PURE__*/_react["default"].cloneElement(head.title[0], {
key: 'title'
});
childrenArray = childrenArray.filter(function (child) {
if (child.type === 'title') {
// Filter out the title of the Document in static.config.js
// if there is a helmet title on this route
return false;
}
return true;
});
}
var childrenCSS = childrenArray.filter(function (child) {
if (child.type === 'link' && child.props && child.props.rel === 'stylesheet') {
return true;
}
if (child.type === 'style') {
return true;
}
return false;
});
var childrenMeta = childrenArray.filter(function (child) {
return child.type === 'meta';
});
var childrenJS = childrenArray.filter(function (child) {
return child.type === 'script';
});
childrenArray = childrenArray.filter(function (child) {
if (child.type === 'link' && child.props && child.props.rel === 'stylesheet') {
return false;
}
if (child.type === 'style') {
return false;
}
if (child.type === 'script') {
return false;
}
if (child.type === 'meta') {
return false;
}
return true;
});
return /*#__PURE__*/_react["default"].createElement("head", rest, /*#__PURE__*/_react["default"].createElement("meta", {
name: "generator",
content: "React Static"
}), head.base, useHelmetTitle && head.title, childrenMeta, head.meta, childrenJS, !route.redirect && clientScripts.map(function (script) {
return /*#__PURE__*/_react["default"].createElement("link", {
key: "clientScript_".concat(script),
rel: "preload",
as: "script",
href: (0, _utils.makePathAbsolute)((0, _utils.pathJoin)(process.env.REACT_STATIC_ASSETS_PATH, script))
});
}), childrenCSS, renderLinkCSS && clientStyleSheets.reduce(function (memo, styleSheet) {
var href = (0, _utils.makePathAbsolute)((0, _utils.pathJoin)(process.env.REACT_STATIC_ASSETS_PATH, styleSheet));
return [].concat((0, _toConsumableArray2["default"])(memo), [/*#__PURE__*/_react["default"].createElement("link", {
key: "clientStyleSheetPreload_".concat(styleSheet),
rel: "preload",
as: "style",
href: href
}), /*#__PURE__*/_react["default"].createElement("link", {
key: "clientStyleSheet_".concat(styleSheet),
rel: "stylesheet",
href: href
})]);
}, []), head.link, head.noscript, head.script, config.inlineCss && /*#__PURE__*/_react["default"].createElement(InlineStyle, {
clientCss: clientCss
}), head.style, pluginHeads, childrenArray);
});
case 5:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return _makeHeadWithMeta.apply(this, arguments);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0aWMvY29tcG9uZW50cy9IZWFkV2l0aE1ldGEuanMiXSwibmFtZXMiOlsiUkVHRVhfRk9SX1NUWUxFX1RBRyIsIklubGluZVN0eWxlIiwiY2xpZW50Q3NzIiwiX19odG1sIiwidG9TdHJpbmciLCJyZXBsYWNlIiwibWFrZUhlYWRXaXRoTWV0YSIsInN0YXRlIiwiaGVhZCIsInJvdXRlIiwiY2xpZW50U2NyaXB0cyIsImNvbmZpZyIsImNsaWVudFN0eWxlU2hlZXRzIiwicGx1Z2lucyIsImhlYWRFbGVtZW50cyIsInBsdWdpbkhlYWRzIiwiY2hpbGRyZW4iLCJyZXN0IiwicmVuZGVyTGlua0NTUyIsInJlZGlyZWN0IiwiaW5saW5lQ3NzIiwidXNlSGVsbWV0VGl0bGUiLCJ0aXRsZSIsInByb3BzIiwiY2hpbGRyZW5BcnJheSIsIlJlYWN0IiwiQ2hpbGRyZW4iLCJ0b0FycmF5IiwiY2xvbmVFbGVtZW50Iiwia2V5IiwiZmlsdGVyIiwiY2hpbGQiLCJ0eXBlIiwiY2hpbGRyZW5DU1MiLCJyZWwiLCJjaGlsZHJlbk1ldGEiLCJjaGlsZHJlbkpTIiwiYmFzZSIsIm1ldGEiLCJtYXAiLCJzY3JpcHQiLCJwcm9jZXNzIiwiZW52IiwiUkVBQ1RfU1RBVElDX0FTU0VUU19QQVRIIiwicmVkdWNlIiwibWVtbyIsInN0eWxlU2hlZXQiLCJocmVmIiwibGluayIsIm5vc2NyaXB0Iiwic3R5bGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUZBO0FBR0E7QUFFQTtBQUVBLElBQU1BLG1CQUFtQixHQUFHLHFCQUE1Qjs7QUFFTyxJQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBYztBQUFBLE1BQUdDLFNBQUgsUUFBR0EsU0FBSDtBQUFBLHNCQUN6QjtBQUNFLElBQUEsR0FBRyxFQUFDLFdBRE47QUFFRSxJQUFBLElBQUksRUFBQyxVQUZQO0FBR0UsSUFBQSx1QkFBdUIsRUFBRTtBQUN2QkMsTUFBQUEs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QUFSLENBQVlDLHdCQUFyQixFQUErQ0csVUFBL0MsQ0FEVyxDQUFiO0FBSUEscUVBQ0tELElBREwsaUJBRUU7QUFDRSxrQkFBQSxHQUFHLG9DQUE2QkMsVUFBN0IsQ0FETDtBQUVFLGtCQUFBLEdBQUcsRUFBQyxTQUZOO0FBR0Usa0JBQUEsRUFBRSxFQUFDLE9BSEw7QUFJRSxrQkFBQSxJQUFJLEVBQUVDO0FBSlIsa0JBRkYsZUFRRTtBQUNFLGtCQUFBLEdBQUcsNkJBQXNCRCxVQUF0QixDQURMO0FBRUUsa0JBQUEsR0FBRyxFQUFDLFlBRk47QUFHRSxrQkFBQSxJQUFJLEVBQUVDO0FBSFIsa0JBUkY7QUFjRCxlQW5CRCxFQW1CRyxFQW5CSCxDQXBCSixFQXdDR3ZDLElBQUksQ0FBQ3dDLElBeENSLEVBeUNHeEMsSUFBSSxDQUFDeUMsUUF6Q1IsRUEwQ0d6QyxJQUFJLENBQUNnQyxNQTFDUixFQTJDRzdCLE1BQU0sQ0FBQ1MsU0FBUCxpQkFBb0IsZ0NBQUMsV0FBRDtBQUFhLGdCQUFBLFNBQVMsRUFBRWxCO0FBQXhCLGdCQTNDdkIsRUE0Q0dNLElBQUksQ0FBQzBDLEtBNUNSLEVBNkNHbkMsV0E3Q0gsRUE4Q0dTLGFBOUNILENBREY7QUFrREQsYUF0SFk7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbi8vXG5pbXBvcnQgeyBwYXRoSm9pbiwgbWFrZVBhdGhBYnNvbHV0ZSB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHBsdWdpbnMgZnJvbSAnLi4vcGx1Z2lucydcbi8vIGltcG9ydCBwYWNrYWdlanNvbiBmcm9tICcuLi8uLi8uLi9wYWNrYWdlLmpzb24nXG5cbi8vIGNvbnN0IHsgdmVyc2lvbiB9ID0gcGFja2FnZWpzb25cblxuY29uc3QgUkVHRVhfRk9SX1NUWUxFX1RBRyA9IC88c3R5bGU+fDxcXC9zdHlsZT4vZ2lcblxuZXhwb3J0IGNvbnN0IElubGluZVN0eWxlID0gKHsgY2xpZW50Q3NzIH0pID0+IChcbiAgPHN0eWxlXG4gICAga2V5PVwiY2xpZW50Q3NzXCJcbiAgICB0eXBlPVwidGV4dC9jc3NcIlxuICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICBfX2h0bWw6IGNsaWVudENzcy50b1N0cmluZygpLnJlcGxhY2UoUkVHRVhfRk9SX1NUWUxFX1RBRywgJycpLFxuICAgIH19XG4gIC8+XG4pXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIG1ha2VIZWFkV2l0aE1ldGEoc3RhdGUpIHtcbiAgY29uc3Qge1xuICAgIGhlYWQsXG4gICAgcm91dGUsXG4gICAgY2xpZW50U2NyaXB0cyxcbiAgICBjb25maWcsXG4gICAgY2xpZW50U3R5bGVTaGVldHMsXG4gICAgY2xpZW50Q3NzLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBwbHVnaW5IZWFkcyA9IGF3YWl0IHBsdWdpbnMuaGVhZEVsZW1lbnRzKFtdLCBzdGF0ZSlcblxuICByZXR1cm4gKHsgY2hpbGRyZW4sIC4uLnJlc3QgfSkgPT4ge1xuICAgIGNvbnN0IHJlbmRlckxpbmtDU1MgPSAhcm91dGUucmVkaXJlY3QgJiYgIWNvbmZpZy5pbmxpbmVDc3NcblxuICAgIGNvbnN0IHVzZUhlbG1ldFRpdGxlID1cbiAgICAgIGhlYWQudGl0bGUgJiYgaGVhZC50aXRsZVswXSAmJiBoZWFkLnRpdGxlWzBdLnByb3BzLmNoaWxkcmVuICE9PSAnJ1xuXG4gICAgbGV0IGNoaWxkcmVuQXJyYXkgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKVxuXG4gICAgaWYgKHVzZUhlbG1ldFRpdGxlKSB7XG4gICAgICBoZWFkLnRpdGxlWzBdID0gUmVhY3QuY2xvbmVFbGVtZW50KGhlYWQudGl0bGVbMF0sIHsga2V5OiAndGl0bGUnIH0pXG4gICAgICBjaGlsZHJlbkFycmF5ID0gY2hpbGRyZW5BcnJheS5maWx0ZXIoY2hpbGQgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ3RpdGxlJykge1xuICAgICAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHRpdGxlIG9mIHRoZSBEb2N1bWVudCBpbiBzdGF0aWMuY29uZmlnLmpzXG4gICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSBoZWxtZXQgdGl0bGUgb24gdGhpcyByb3V0ZVxuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkcmVuQ1NTID0gY2hpbGRyZW5BcnJheS5maWx0ZXIoY2hpbGQgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBjaGlsZC50eXBlID09PSAnbGluaycgJiZcbiAgICAgICAgY2hpbGQucHJvcHMgJiZcbiAgICAgICAgY2hpbGQucHJvcHMucmVsID09PSAnc3R5bGVzaGVldCdcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdzdHlsZScpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG5cbiAgICBjb25zdCBjaGlsZHJlbk1ldGEgPSBjaGlsZHJlbkFycmF5LmZpbHRlcihjaGlsZCA9PiBjaGlsZC50eXBlID09PSAnbWV0YScpXG4gICAgY29uc3QgY2hpbGRyZW5KUyA9IGNoaWxkcmVuQXJyYXkuZmlsdGVyKGNoaWxkID0+IGNoaWxkLnR5cGUgPT09ICdzY3JpcHQnKVxuICAgIGNoaWxkcmVuQXJyYXkgPSBjaGlsZHJlbkFycmF5LmZpbHRlcihjaGlsZCA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGNoaWxkLnR5cGUgPT09ICdsaW5rJyAmJlxuICAgICAgICBjaGlsZC5wcm9wcyAmJlxuICAgICAgICBjaGlsZC5wcm9wcy5yZWwgPT09ICdzdHlsZXNoZWV0J1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdzdHlsZScpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ3NjcmlwdCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ21ldGEnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxoZWFkIHsuLi5yZXN0fT5cbiAgICAgICAgPG1ldGEgbmFtZT1cImdlbmVyYXRvclwiIGNvbnRlbnQ9XCJSZWFjdCBTdGF0aWNcIiAvPlxuICAgICAgICB7aGVhZC5iYXNlfVxuICAgICAgICB7dXNlSGVsbWV0VGl0bGUgJiYgaGVhZC50aXRsZX1cbiAgICAgICAge2NoaWxkcmVuTWV0YX1cbiAgICAgICAge2hlYWQubWV0YX1cbiAgICAgICAge2NoaWxkcmVuSlN9XG4gICAgICAgIHshcm91dGUucmVkaXJlY3QgJiZcbiAgICAgICAgICBjbGllbnRTY3JpcHRzLm1hcChzY3JpcHQgPT4gKFxuICAgICAgICAgICAgPGxpbmtcbiAgICAgICAgICAgICAga2V5PXtgY2xpZW50U2NyaXB0XyR7c2NyaXB0fWB9XG4gICAgICAgICAgICAgIHJlbD1cInByZWxvYWRcIlxuICAgICAgICAgICAgICBhcz1cInNjcmlwdFwiXG4gICAgICAgICAgICAgIGhyZWY9e21ha2VQYXRoQWJzb2x1dGUoXG4gICAgICAgICAgICAgICAgcGF0aEpvaW4ocHJvY2Vzcy5lbnYuUkVBQ1RfU1RBVElDX0FTU0VUU19QQVRILCBzY3JpcHQpXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICB7Y2hpbGRyZW5DU1N9XG4gICAgICAgIHtyZW5kZXJMaW5rQ1NTICYmXG4gICAgICAgICAgY2xpZW50U3R5bGVTaGVldHMucmVkdWNlKChtZW1vLCBzdHlsZVNoZWV0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBocmVmID0gbWFrZVBhdGhBYnNvbHV0ZShcbiAgICAgICAgICAgICAgcGF0aEpvaW4ocHJvY2Vzcy5lbnYuUkVBQ1RfU1RBVElDX0FTU0VUU19QQVRILCBzdHlsZVNoZWV0KVxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAuLi5tZW1vLFxuICAgICAgICAgICAgICA8bGlua1xuICAgICAgICAgICAgICAgIGtleT17YGNsaWVudFN0eWxlU2hlZXRQcmVsb2FkXyR7c3R5bGVTaGVldH1gfVxuICAgICAgICAgICAgICAgIHJlbD1cInByZWxvYWRcIlxuICAgICAgICAgICAgICAgIGFzPVwic3R5bGVcIlxuICAgICAgICAgICAgICAgIGhyZWY9e2hyZWZ9XG4gICAgICAgICAgICAgIC8+LFxuICAgICAgICAgICAgICA8bGlua1xuICAgICAgICAgICAgICAgIGtleT17YGNsaWVudFN0eWxlU2hlZXRfJHtzdHlsZVNoZWV0fWB9XG4gICAgICAgICAgICAgICAgcmVsPVwic3R5bGVzaGVldFwiXG4gICAgICAgICAgICAgICAgaHJlZj17aHJlZn1cbiAgICAgICAgICAgICAgLz4sXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSwgW10pfVxuICAgICAgICB7aGVhZC5saW5rfVxuICAgICAgICB7aGVhZC5ub3NjcmlwdH1cbiAgICAgICAge2hlYWQuc2NyaXB0fVxuICAgICAgICB7Y29uZmlnLmlubGluZUNzcyAmJiA8SW5saW5lU3R5bGUgY2xpZW50Q3NzPXtjbGllbnRDc3N9IC8+fVxuICAgICAgICB7aGVhZC5zdHlsZX1cbiAgICAgICAge3BsdWdpbkhlYWRzfVxuICAgICAgICB7Y2hpbGRyZW5BcnJheX1cbiAgICAgIDwvaGVhZD5cbiAgICApXG4gIH1cbn1cbiJdfQ==