UNPKG

resolve-runtime

Version:
118 lines (97 loc) 3.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _server = _interopRequireDefault(require("react-dom/server")); var _createMemoryHistory = _interopRequireDefault(require("history/createMemoryHistory")); var _jsonwebtoken = _interopRequireDefault(require("jsonwebtoken")); var _resolveRedux = require("resolve-redux"); var _get_html_markup = _interopRequireDefault(require("./get_html_markup")); var _get_static_based_path = _interopRequireDefault(require("../utils/get_static_based_path")); var _get_root_based_url = _interopRequireDefault(require("../utils/get_root_based_url")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } let ServerStyleSheet, StyleSheetManager; try { const styledComponents = require('styled-components'); ServerStyleSheet = styledComponents.ServerStyleSheet; StyleSheetManager = styledComponents.StyleSheetManager; } catch (err) {} const serverSideRendering = async (req, res) => { const { seedClientEnvs, aggregateActions, subscribeAdapter, viewModels, readModels, aggregates, staticPath, jwtCookie, rootPath, routes, redux } = req.resolve; const baseQueryUrl = (0, _get_root_based_url.default)(req.resolve.rootPath, '/'); const url = req.path.substring(baseQueryUrl.length); const history = (0, _createMemoryHistory.default)(); history.push(url); const jwt = {}; try { Object.assign(jwt, _jsonwebtoken.default.decode(req.cookies[jwtCookie.name])); } catch (e) {} const origin = ''; const store = (0, _resolveRedux.createStore)({ redux, viewModels, readModels, aggregates, subscribeAdapter, initialState: { jwt }, history, origin, rootPath, isClient: false }); const appContainer = _react.default.createElement(_resolveRedux.AppContainer, { origin: origin, rootPath: rootPath, staticPath: staticPath, aggregateActions: aggregateActions, store: store, history: history, routes: routes, isSSR: true }); let markup, styleTags; if (StyleSheetManager) { const sheet = new ServerStyleSheet(); markup = _server.default.renderToStaticMarkup(_react.default.createElement(StyleSheetManager, { sheet: sheet.instance }, appContainer)); styleTags = sheet.getStyleTags(); } else { markup = _server.default.renderToStaticMarkup(appContainer); styleTags = ''; } const initialState = store.getState(); const bundleUrl = (0, _get_static_based_path.default)(rootPath, staticPath, 'bundle.js'); const faviconUrl = (0, _get_static_based_path.default)(rootPath, staticPath, 'favicon.ico'); const hmrUrl = (0, _get_static_based_path.default)(rootPath, staticPath, 'hmr.js'); await res.setHeader('Content-Type', 'text/html'); await res.end((0, _get_html_markup.default)({ reducers: redux.reducers, seedClientEnvs, markup, styleTags, initialState, bundleUrl, faviconUrl, hmrUrl })); }; var _default = serverSideRendering; exports.default = _default; //# sourceMappingURL=server_side_rendering.js.map