UNPKG

react-router-server

Version:

Server Side Rendering library for React Router v4

116 lines (101 loc) 3.47 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.exists = exports.fetch = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _info = require('./info'); var pool = {}; var signature = function signature(module, systemImport) { return (0, _info.getWebpackId)(systemImport.toString()); }; var fetch = exports.fetch = function fetch(module, systemImport) { var key = signature(module, systemImport); if (key !== null && typeof pool[key] !== 'undefined') return pool[key]; return null; }; var exists = exports.exists = function exists(module, systemImport) { var key = signature(module, systemImport); return key !== null && typeof pool[key] !== 'undefined'; }; var loadScript = function loadScript(url) { return new Promise(function (resolve) { if (!url.match(/\.map$/)) { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = '/' + url.replace(/^\//, ''); script.onreadystatechange = resolve(script); script.onload = resolve(script); head.appendChild(script); } else { resolve(null); } }); }; var fetchModuleInformation = function fetchModuleInformation(modules) { return new Promise(function (resolve) { var prevWebpackJsonp = webpackJsonp; var finalModules = {}; var fileLoading = 0; var scripts = []; var finish = function finish() { scripts.forEach(function (script) { return script.parentElement.removeChild(script); }); webpackJsonp = prevWebpackJsonp; resolve(finalModules); }; webpackJsonp = function webpackJsonp(ids, modules) { var index = -1; for (var prop in modules) { if (modules.hasOwnProperty(prop)) { index++; if (typeof ids[index] !== 'undefined') { finalModules[ids[index]] = prop; } } } if (fileLoading === 0) { finish(); } }; modules.forEach(function (module) { module.files.forEach(function (file) { fileLoading++; loadScript(file).then(function (script) { fileLoading--; if (script) scripts.push(script); }); }); }); }); }; var loadWebpackModules = function loadWebpackModules(modules) { return new Promise(function (resolve) { var moduleLoading = 0; var _loop = function _loop(prop) { if (modules.hasOwnProperty(prop)) { moduleLoading++; __webpack_require__.e(prop).then(__webpack_require__.bind(null, modules[prop])).then(function (m) { moduleLoading--; pool[prop] = m; if (moduleLoading === 0) { resolve(pool); } }); } }; for (var prop in modules) { _loop(prop); } }); }; exports.default = function (modules) { return new Promise(function (resolve) { if ((typeof modules === 'undefined' ? 'undefined' : _typeof(modules)) !== 'object' || Object.prototype.toString.call(modules) !== '[object Array]' || modules.length < 1) { return resolve([]); } fetchModuleInformation(modules).then(loadWebpackModules).then(resolve); }); };