@helldoc/core
Version:
helldoc core
36 lines (35 loc) • 1.58 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
var AppRouter_1 = __importDefault(require("./components/AppRouter"));
var runtime_1 = require("./runtime");
var react_router_dom_1 = require("react-router-dom");
var react_1 = __importDefault(require("react"));
var server_1 = require("react-dom/server");
// @ts-ignore
var server_2 = require("@loadable/server");
var path_1 = require("path");
function App(props) {
var base = runtime_1.siteData.base;
var basename = base;
if (base.startsWith("/"))
basename = base.slice(1);
if (basename.endsWith("/"))
basename = base.slice(0, -1);
return (react_1["default"].createElement(react_router_dom_1.StaticRouter, { basename: basename, location: props.location },
react_1["default"].createElement(AppRouter_1["default"], null)));
}
function render(location) {
if (location === void 0) { location = "/"; }
var statsFile = path_1.resolve(__dirname, "../web-stats.json");
var extractor = new server_2.ChunkExtractor({ statsFile: statsFile, entrypoints: ["client"] });
var jsx = extractor.collectChunks(react_1["default"].createElement(App, { location: location }));
var content = server_1.renderToString(jsx);
var scripts = extractor.getScriptTags();
var links = extractor.getLinkTags();
var styles = extractor.getStyleTags();
return { content: content, scripts: scripts, links: links, styles: styles };
}
exports.render = render;