resolve-runtime
Version:
This package create server with resolve.
118 lines (97 loc) • 3.23 kB
JavaScript
"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