UNPKG

@helldoc/core

Version:
36 lines (35 loc) 1.58 kB
"use strict"; 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;