UNPKG

23 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/render.js"],"names":["extRegex","createConfig","clientConfig","serverConfig","require","default","e","message","includes","console","log","Object","assign","config","polyfills_io","polyfillsURL","polyfills","replace","initEventCollector","req","packageJson","__dirname","eventcollector","addMeta","renderer","version","profile","name","global","window","localStorage","clear","sessionStorage","checkAuth","res","credentials","auth","username","pass","password","statusCode","setHeader","hostinfo","siteName","end","redirect","redirectLocation","pathname","search","notfound","write","sendIncludes","url","type","result","match","ext","include","send","inits","promises","map","fn","Promise","all","sendInitialHeaders","assets","append","getHTTPHeaders","headers","forEach","header","value","sendHeadAssets","sendSettings","settings","keys","length","key","JSON","stringify","headTags","dynamicHeadToString","head","strArray","tag","toString","reduce","previous","current","sendDynamicHead","sendConfigStaticHead","getStaticHead","sendConfigDynamicHead","state","getDynamicHead","sendState","json","userInfo","sendTrailer","trailer","html","scripts","script","src","trailerToString","join","afterRender","results","afterRenders","ret","renderHTML","getRenderComponent","routeComponent","preRenders","renderComponent","retval","renderToString","render","renderToStream","sendConfigTrailer","getTrailer","sendDeferredScript","renderGet","getJob","startJob","lastIndexOf","endJob","strategy","routeJob","routeResult","router","route","stateJob","getStatePromise","lang","getHtmlLang","flush","renderJob","renderMethod","canStream","addError","isReusable","doGeoLookup","requestExtendedUserInfo"],"mappings":"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","file":"render.js","sourcesContent":["import EventCollector from 'event-collector'\nimport auth from 'basic-auth'\nimport configFile from 'linc-config-js'\nimport assets from 'asset-manifest'\nimport strategy from 'server-strategy'\nimport includes from 'includes'\n\nconst extRegex = /.*?\\.(\\w*)$/\n\nconst createConfig = () => {\n const clientConfig =\n typeof configFile === 'function' ? configFile('server') : configFile\n let serverConfig = {}\n try {\n serverConfig = require('linc-server-config-js')\n serverConfig = serverConfig.default ? serverConfig.default : serverConfig\n } catch (e) {\n if (e.message.includes('Cannot find module \"linc-server-config-js')) {\n console.log(\n \"Couldn't find any server-only configuration: 'linc.server.config.js', using defaults\"\n )\n } else {\n console.log('Error loading linc.server.config.js', e)\n }\n }\n\n return Object.assign({}, clientConfig, serverConfig)\n}\n\nconst config = createConfig()\n\nconst polyfills_io = 'https://cdn.polyfill.io/v2/polyfill.min.js?features='\nconst polyfillsURL = config.polyfills\n ? `${polyfills_io}${config.polyfills.replace(' ', '')}`\n : null\n\nconst initEventCollector = req => {\n const packageJson = require(__dirname + '/../package.json')\n req.eventcollector = req.eventcollector || new EventCollector({})\n req.eventcollector.addMeta({\n renderer: {\n version: packageJson.version,\n profile: packageJson.name\n }\n })\n if (global.window && window.localStorage) window.localStorage.clear()\n if (global.window && window.sessionStorage) window.sessionStorage.clear()\n return req.eventcollector\n}\n\nconst checkAuth = (req, res) => {\n const credentials = auth(req)\n if (\n !credentials ||\n credentials.name !== config.auth.username ||\n credentials.pass !== config.auth.password\n ) {\n res.statusCode = 401\n res.setHeader('WWW-Authenticate', `Basic realm=\"${req.hostinfo.siteName}\"`)\n res.end('<!DOCTYPE html><html><body><h1>Auth Required</h1></body></html>')\n return false\n } else {\n return true\n }\n}\n\nconst redirect = (res, redirectLocation) => {\n res.statusCode = 302\n res.setHeader('Location', redirectLocation.pathname + redirectLocation.search)\n res.end()\n}\n\nconst notfound = res => {\n res.statusCode = 404\n res.write('<!DOCTYPE html><html><body><h1>Not Found</h1></body></html>')\n res.end()\n}\n\nconst sendIncludes = (res, url) => {\n let type\n const result = url.match(extRegex)\n const ext = result ? result[1] : null\n switch (ext) {\n case 'js':\n type = 'application/javascript'\n break\n case 'txt':\n type = 'text/plain'\n break\n }\n\n if (type) {\n res.setHeader('Content-Type', type)\n }\n const include = includes(url)\n res.send(include)\n}\n\nconst inits = req => {\n const promises = strategy.inits.map(fn => fn(req))\n return Promise.all(promises)\n}\n\nconst sendInitialHeaders = (req, res, assets) => {\n res.setHeader('Content-Type', 'text/html')\n if (assets['manifest.js']) {\n res.append('Link', `</${assets['manifest.js']}>;rel=preload;as=script`)\n }\n if (assets['vendor.js']) {\n res.append('Link', `</${assets['vendor.js']}>;rel=preload;as=script`)\n }\n if (assets['main.js']) {\n res.append('Link', `</${assets['main.js']}>;rel=preload;as=script`)\n }\n if (assets['defer.js']) {\n res.append('Link', `</${assets['defer.js']}>;rel=preload;as=script`)\n }\n if (polyfillsURL) {\n res.append('Link', '<https://cdn.polyfill.io>;rel=dns-prefetch')\n res.append('Link', `<${polyfillsURL}>;rel=preload;as=script`)\n }\n if (typeof config.getHTTPHeaders === 'function') {\n const headers = config.getHTTPHeaders(req, assets)\n headers.forEach(header => {\n res.append(header.name, header.value)\n })\n }\n}\n\nconst sendHeadAssets = (res, assets) => {\n res.write(\n '<meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">'\n )\n if (assets['bootstrap.css']) {\n res.write(`<link rel=\"stylesheet\" href=\"/${assets['bootstrap.css']}\">`)\n }\n if (assets['vendor.css']) {\n res.write(`<link rel=\"stylesheet\" href=\"/${assets['vendor.css']}\">`)\n }\n if (assets['main.css']) {\n res.write(`<link rel=\"stylesheet\" href=\"/${assets['main.css']}\">`)\n }\n}\n\nconst sendSettings = (res, settings) => {\n // Prevent an empty <script> tag in the rendered HTML\n if (!Object.keys(settings).length) return\n\n res.write(`<script>`)\n Object.keys(settings).forEach(key => {\n res.write(`window.${key} = ${JSON.stringify(settings[key])};\\n`)\n })\n res.write(`</script>`)\n}\n\nconst headTags = ['title', 'link', 'meta', 'style', 'script']\nconst dynamicHeadToString = head => {\n if (head) {\n const strArray = headTags.map(tag => head[tag] && head[tag].toString())\n return strArray.reduce(\n (previous, current) => (current ? previous + current : previous),\n ''\n )\n } else {\n return ''\n }\n}\n\nconst sendDynamicHead = (res, head) => {\n res.write(dynamicHeadToString(head))\n}\n\nconst sendConfigStaticHead = (req, res) => {\n if (config.getStaticHead) {\n res.write(config.getStaticHead(req))\n }\n}\n\nconst sendConfigDynamicHead = (req, state, res) => {\n if (config.getDynamicHead) {\n res.write(config.getDynamicHead(req, state))\n }\n}\n\nconst sendState = (req, state, res) => {\n if (state.json) {\n res.write(\n `<script>window.__INITIALSTATE__ = ${JSON.stringify(\n state.json\n )};</script>`\n )\n }\n if (req.userInfo) {\n res.write(\n `<script>window.__USER_INFO__ = ${JSON.stringify(req.userInfo)};</script>`\n )\n }\n}\n\nconst sendTrailer = (res, trailer) => {\n if (trailer.html) {\n res.write(html)\n }\n if (trailer.scripts) {\n trailer.scripts.forEach(script => {\n res.write(`<script src=\"${script.src}></script>`)\n })\n }\n}\n\nconst trailerToString = trailer => {\n if (!trailer) return ''\n let scripts = ''\n if (trailer.scripts) {\n scripts = trailer.scripts\n .map(script => `<script src=\"${script.src}\"></script>\\n`)\n .join()\n }\n return (trailer.html || '') + '\\n' + scripts\n}\n\nconst afterRender = (req, assets) => {\n const results = strategy.afterRenders.map(fn => fn(req, config, assets))\n const ret = results.reduce(\n (previous, current) => {\n return {\n head: previous.head + dynamicHeadToString(current.head),\n trailer: previous.trailer + trailerToString(current.trailer)\n }\n },\n { head: '', trailer: '' }\n )\n return ret\n}\n\nconst renderHTML = (html, req, res) => {\n const { head, trailer } = afterRender(req, assets)\n if (head) {\n res.write(head)\n }\n res.write(`</head>\\n<body><div id=\"root\">${html}</div>\\n`)\n return trailer\n}\n\nconst getRenderComponent = (req, routeComponent, state) => {\n return strategy.preRenders.reduce((renderComponent, fn) => {\n const retval = fn(req, renderComponent, state)\n return retval\n }, routeComponent)\n}\n\nconst renderToString = async (req, routeComponent, state, res) => {\n const renderComponent = getRenderComponent(req, routeComponent, state.json)\n const html = await strategy.render(renderComponent)\n return renderHTML(html, req, res)\n}\n\nconst renderToStream = async (routeComponent, res) => {\n console.log('Not Yet Implemented')\n}\n\nconst sendConfigTrailer = (req, state, res) => {\n if (config.getTrailer) {\n res.write(config.getTrailer(req))\n }\n}\n\nconst sendDeferredScript = (res, assets) => {\n if (assets['defer.js']) {\n res.write(`\n<script type=\"text/javascript\">\nfunction runDeferScript() {\n var element = document.createElement(\"script\");\n element.src = \"/${assets['defer.js']}\";\n document.body.appendChild(element);\n}\nif (window.addEventListener) {\n window.addEventListener(\"load\", runDeferScript, false);\n} else if (window.attachEvent) {\nwindow.attachEvent(\"onload\", runDeferScript);\n} else {\n window.onload = runDeferScript;\n}\n</script>\n `)\n }\n}\n\nconst renderGet = async (req, res, settings) => {\n try {\n const eventcollector = initEventCollector(req)\n if (config.auth && !checkAuth(req, res)) {\n return\n }\n const getJob = eventcollector.startJob('renderGet')\n const url = req.url\n if (url.length > 1 && !(url.lastIndexOf('/') > 1) && includes(url)) {\n eventcollector.endJob(getJob)\n return sendIncludes(res, url)\n }\n\n eventcollector.addMeta({ strategy: strategy.strategy })\n await inits(req)\n\n const routeJob = eventcollector.startJob('routing')\n const routeResult = await strategy.router(req, config)\n const { redirectLocation, route, routeComponent } = routeResult\n if (redirectLocation) {\n return redirect(res, redirectLocation)\n } else if (!routeComponent) {\n return notfound(res)\n }\n eventcollector.endJob(routeJob)\n const stateJob = req.eventcollector.startJob('getState')\n const getStatePromise = strategy.getStatePromise(\n req,\n config,\n route,\n routeComponent\n )\n res.statusCode = 200\n sendInitialHeaders(req, res, assets)\n const lang = config.getHtmlLang ? config.getHtmlLang(req) : 'en'\n res.write(\n `<!DOCTYPE html><html lang=\"${lang}\" prefix=\"og: http://ogp.me/ns#><head>`\n )\n sendHeadAssets(res, assets)\n sendConfigStaticHead(req, res)\n sendSettings(res, settings)\n if (res.flush) {\n res.flush()\n }\n const state = (await getStatePromise) || {}\n eventcollector.endJob(stateJob)\n sendConfigDynamicHead(req, state, res)\n sendState(req, state, res)\n const renderJob = eventcollector.startJob('render')\n let renderMethod\n let trailer\n if (state.html) {\n renderMethod = 'static'\n trailer = renderHTML(state.html, req, res)\n } else if (strategy.render.canStream && strategy.render.canStream()) {\n renderMethod = 'renderToStream'\n trailer = await renderToStream(req, routeComponent, state, res)\n } else {\n renderMethod = 'renderToString'\n trailer = await renderToString(req, routeComponent, state, res)\n }\n eventcollector.endJob(renderJob, { renderMethod })\n\n if (polyfillsURL) {\n res.write(`<script src=\"${polyfillsURL}\"></script>`)\n }\n res.write(`<script src=\"/${assets['manifest.js']}\"></script>`)\n res.write(`<script src=\"/${assets['vendor.js']}\"></script>`)\n res.write(`<script src=\"/${assets['main.js']}\"></script>`)\n if (trailer) res.write(trailer)\n sendConfigTrailer(req, state, res)\n sendDeferredScript(res, assets)\n res.write('</body></html>')\n res.end()\n eventcollector.endJob(getJob)\n } catch (e) {\n console.log('Uhoh!', e)\n req.eventcollector.addError(e)\n res.end()\n }\n}\n\nconst isReusable = true\n\nconst doGeoLookup = () => config.requestExtendedUserInfo\n\nexport { renderGet, isReusable, doGeoLookup }\n"]}
\No newline at end of file