You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
202 lines
7.3 KiB
202 lines
7.3 KiB
function webpackBootstrapFunc (modules) { |
|
/******/ // The module cache |
|
/******/ var installedModules = {}; |
|
|
|
/******/ // The require function |
|
/******/ function __webpack_require__(moduleId) { |
|
|
|
/******/ // Check if module is in cache |
|
/******/ if(installedModules[moduleId]) |
|
/******/ return installedModules[moduleId].exports; |
|
|
|
/******/ // Create a new module (and put it into the cache) |
|
/******/ var module = installedModules[moduleId] = { |
|
/******/ i: moduleId, |
|
/******/ l: false, |
|
/******/ exports: {} |
|
/******/ }; |
|
|
|
/******/ // Execute the module function |
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); |
|
|
|
/******/ // Flag the module as loaded |
|
/******/ module.l = true; |
|
|
|
/******/ // Return the exports of the module |
|
/******/ return module.exports; |
|
/******/ } |
|
|
|
/******/ // expose the modules object (__webpack_modules__) |
|
/******/ __webpack_require__.m = modules; |
|
|
|
/******/ // expose the module cache |
|
/******/ __webpack_require__.c = installedModules; |
|
|
|
/******/ // identity function for calling harmony imports with the correct context |
|
/******/ __webpack_require__.i = function(value) { return value; }; |
|
|
|
/******/ // define getter function for harmony exports |
|
/******/ __webpack_require__.d = function(exports, name, getter) { |
|
/******/ if(!__webpack_require__.o(exports, name)) { |
|
/******/ Object.defineProperty(exports, name, { |
|
/******/ configurable: false, |
|
/******/ enumerable: true, |
|
/******/ get: getter |
|
/******/ }); |
|
/******/ } |
|
/******/ }; |
|
|
|
/******/ // define __esModule on exports |
|
/******/ __webpack_require__.r = function(exports) { |
|
/******/ Object.defineProperty(exports, '__esModule', { value: true }); |
|
/******/ }; |
|
|
|
/******/ // getDefaultExport function for compatibility with non-harmony modules |
|
/******/ __webpack_require__.n = function(module) { |
|
/******/ var getter = module && module.__esModule ? |
|
/******/ function getDefault() { return module['default']; } : |
|
/******/ function getModuleExports() { return module; }; |
|
/******/ __webpack_require__.d(getter, 'a', getter); |
|
/******/ return getter; |
|
/******/ }; |
|
|
|
/******/ // Object.prototype.hasOwnProperty.call |
|
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; |
|
|
|
/******/ // __webpack_public_path__ |
|
/******/ __webpack_require__.p = "/"; |
|
|
|
/******/ // on error function for async loading |
|
/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; |
|
|
|
var f = __webpack_require__(__webpack_require__.s = ENTRY_MODULE) |
|
return f.default || f // try to call default if defined to also support babel esmodule exports |
|
} |
|
|
|
var moduleNameReqExp = '[\\.|\\-|\\+|\\w|\/|@]+' |
|
var dependencyRegExp = '\\(\\s*(\/\\*.*?\\*\/)?\\s*.*?(' + moduleNameReqExp + ').*?\\)' // additional chars when output.pathinfo is true |
|
|
|
// http://stackoverflow.com/a/2593661/130442 |
|
function quoteRegExp (str) { |
|
return (str + '').replace(/[.?*+^$[\]\\(){}|-]/g, '\\$&') |
|
} |
|
|
|
function isNumeric(n) { |
|
return !isNaN(1 * n); // 1 * n converts integers, integers as string ("123"), 1e3 and "1e3" to integers and strings to NaN |
|
} |
|
|
|
function getModuleDependencies (sources, module, queueName) { |
|
var retval = {} |
|
retval[queueName] = [] |
|
|
|
var fnString = module.toString() |
|
var wrapperSignature = fnString.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/) |
|
if (!wrapperSignature) return retval |
|
var webpackRequireName = wrapperSignature[1] |
|
|
|
// main bundle deps |
|
var re = new RegExp('(\\\\n|\\W)' + quoteRegExp(webpackRequireName) + dependencyRegExp, 'g') |
|
var match |
|
while ((match = re.exec(fnString))) { |
|
if (match[3] === 'dll-reference') continue |
|
retval[queueName].push(match[3]) |
|
} |
|
|
|
// dll deps |
|
re = new RegExp('\\(' + quoteRegExp(webpackRequireName) + '\\("(dll-reference\\s(' + moduleNameReqExp + '))"\\)\\)' + dependencyRegExp, 'g') |
|
while ((match = re.exec(fnString))) { |
|
if (!sources[match[2]]) { |
|
retval[queueName].push(match[1]) |
|
sources[match[2]] = __webpack_require__(match[1]).m |
|
} |
|
retval[match[2]] = retval[match[2]] || [] |
|
retval[match[2]].push(match[4]) |
|
} |
|
|
|
// convert 1e3 back to 1000 - this can be important after uglify-js converted 1000 to 1e3 |
|
var keys = Object.keys(retval); |
|
for (var i = 0; i < keys.length; i++) { |
|
for (var j = 0; j < retval[keys[i]].length; j++) { |
|
if (isNumeric(retval[keys[i]][j])) { |
|
retval[keys[i]][j] = 1 * retval[keys[i]][j]; |
|
} |
|
} |
|
} |
|
|
|
return retval |
|
} |
|
|
|
function hasValuesInQueues (queues) { |
|
var keys = Object.keys(queues) |
|
return keys.reduce(function (hasValues, key) { |
|
return hasValues || queues[key].length > 0 |
|
}, false) |
|
} |
|
|
|
function getRequiredModules (sources, moduleId) { |
|
var modulesQueue = { |
|
main: [moduleId] |
|
} |
|
var requiredModules = { |
|
main: [] |
|
} |
|
var seenModules = { |
|
main: {} |
|
} |
|
|
|
while (hasValuesInQueues(modulesQueue)) { |
|
var queues = Object.keys(modulesQueue) |
|
for (var i = 0; i < queues.length; i++) { |
|
var queueName = queues[i] |
|
var queue = modulesQueue[queueName] |
|
var moduleToCheck = queue.pop() |
|
seenModules[queueName] = seenModules[queueName] || {} |
|
if (seenModules[queueName][moduleToCheck] || !sources[queueName][moduleToCheck]) continue |
|
seenModules[queueName][moduleToCheck] = true |
|
requiredModules[queueName] = requiredModules[queueName] || [] |
|
requiredModules[queueName].push(moduleToCheck) |
|
var newModules = getModuleDependencies(sources, sources[queueName][moduleToCheck], queueName) |
|
var newModulesKeys = Object.keys(newModules) |
|
for (var j = 0; j < newModulesKeys.length; j++) { |
|
modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]] || [] |
|
modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]].concat(newModules[newModulesKeys[j]]) |
|
} |
|
} |
|
} |
|
|
|
return requiredModules |
|
} |
|
|
|
module.exports = function (moduleId, options) { |
|
options = options || {} |
|
var sources = { |
|
main: __webpack_modules__ |
|
} |
|
|
|
var requiredModules = options.all ? { main: Object.keys(sources.main) } : getRequiredModules(sources, moduleId) |
|
|
|
var src = '' |
|
|
|
Object.keys(requiredModules).filter(function (m) { return m !== 'main' }).forEach(function (module) { |
|
var entryModule = 0 |
|
while (requiredModules[module][entryModule]) { |
|
entryModule++ |
|
} |
|
requiredModules[module].push(entryModule) |
|
sources[module][entryModule] = '(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })' |
|
src = src + 'var ' + module + ' = (' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(entryModule)) + ')({' + requiredModules[module].map(function (id) { return '' + JSON.stringify(id) + ': ' + sources[module][id].toString() }).join(',') + '});\n' |
|
}) |
|
|
|
src = src + 'new ((' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(moduleId)) + ')({' + requiredModules.main.map(function (id) { return '' + JSON.stringify(id) + ': ' + sources.main[id].toString() }).join(',') + '}))(self);' |
|
|
|
var blob = new window.Blob([src], { type: 'text/javascript' }) |
|
if (options.bare) { return blob } |
|
|
|
var URL = window.URL || window.webkitURL || window.mozURL || window.msURL |
|
|
|
var workerUrl = URL.createObjectURL(blob) |
|
var worker = new window.Worker(workerUrl) |
|
worker.objectURL = workerUrl |
|
|
|
return worker |
|
}
|
|
|