Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

webpack-dynamic-require

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

webpack-dynamic-require - npm Package Compare versions

Comparing version 2.0.0 to 2.0.1

4

lib/Dynamic.d.ts

@@ -23,4 +23,5 @@ export * from './Main';

cssPrefix?: string;
mainFile: string;
uninstall: () => void;
constructor({ baseUrl, hashed, jsPrefix, cssPrefix }: {
constructor({ baseUrl, hashed, jsPrefix, cssPrefix, mainFile }: {
baseUrl: string;

@@ -30,2 +31,3 @@ hashed?: boolean;

cssPrefix?: string;
mainFile?: string;
});

@@ -32,0 +34,0 @@ genHash(value: string): string;

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _exportNames = {};
exports["default"] = void 0;
var _scriptjs = _interopRequireDefault(require("scriptjs"));
var _camelcase = _interopRequireDefault(require("camelcase"));
var _imurmurhash = _interopRequireDefault(require("imurmurhash"));
var _Main = require("./Main");
Object.keys(_Main).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _Main[key];
}
});
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const scriptjs_1 = __importDefault(require("scriptjs"));
const camelcase_1 = __importDefault(require("camelcase"));
const imurmurhash_1 = __importDefault(require("imurmurhash"));
__export(require("./Main"));
var g = typeof window != "undefined" ? window : global;
function loadCSS(url) {
var cssRoot = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = url;
cssRoot.appendChild(link);
return new Promise(function (resolve, reject) {
link.addEventListener('error', function () {
reject("load css error: ".concat(url));
const cssRoot = document.getElementsByTagName('head')[0];
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = url;
cssRoot.appendChild(link);
return new Promise((resolve, reject) => {
link.addEventListener('error', () => {
reject(`load css error: ${url}`);
});
link.addEventListener('load', () => resolve(link));
});
link.addEventListener('load', function () {
return resolve(link);
});
});
}
var jsonp = function jsonp(url) {
var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var fn = arguments.length > 2 ? arguments[2] : undefined;
if (typeof opt === 'function') {
fn = opt;
opt = {};
}
var _opt = opt,
_opt$timeout = _opt.timeout,
timeout = _opt$timeout === void 0 ? null : _opt$timeout,
_opt$cbKey = _opt.cbKey,
cbKey = _opt$cbKey === void 0 ? 'callback' : _opt$cbKey,
_opt$cbVal = _opt.cbVal,
cbVal = _opt$cbVal === void 0 ? 'fengyu' : _opt$cbVal;
var timer;
if (cbVal === 'fengyu') {
cbVal += Date.now();
}
var s = '';
s += "&".concat(cbKey, "=").concat(cbVal);
s = s.slice(1);
url += (~url.indexOf('?') ? '&' : '?') + s;
var script = document.createElement('script');
var remove = function remove() {
timer && clearTimeout(timer);
document.head.removeChild(script);
g[cbVal] = undefined;
};
script.src = url;
if (fn !== undefined && typeof fn === 'function') {
g[cbVal] = function (data) {
fn(data);
remove();
const jsonp = (url, opt = {}, fn) => {
if (typeof opt === 'function') {
fn = opt;
opt = {};
}
let { timeout = null, cbKey = 'callback', cbVal = 'fengyu' } = opt;
let timer;
if (cbVal === 'fengyu') {
cbVal += Date.now();
}
let s = '';
s += `&${cbKey}=${cbVal}`;
s = s.slice(1);
url += (~url.indexOf('?') ? '&' : '?') + s;
var script = document.createElement('script');
var remove = () => {
timer && clearTimeout(timer);
document.head.removeChild(script);
g[cbVal] = undefined;
};
document.head.appendChild(script);
return;
}
return new Promise(function (resolve, reject) {
// 请求超时
if (timeout) {
timer = setTimeout(function () {
reject(new Error('jsonp request timeout'));
remove();
}, timeout);
} // 正常
g[cbVal] = function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
resolve(args);
remove();
};
document.head.appendChild(script);
});
script.src = url;
if (fn !== undefined && typeof fn === 'function') {
g[cbVal] = (data) => {
fn(data);
remove();
};
document.head.appendChild(script);
return;
}
return new Promise((resolve, reject) => {
// 请求超时
if (timeout) {
timer = setTimeout(() => {
reject(new Error('jsonp request timeout'));
remove();
}, timeout);
}
// 正常
g[cbVal] = (...args) => {
resolve(args);
remove();
};
document.head.appendChild(script);
});
};
function getBlurVersion(version) {
return version.split('.').map(function (v, i) {
return i > 0 ? 'x' : v;
}).join('.');
} // const _require_ = g.webpackData;
return version.split('.').map((v, i) => i > 0 ? 'x' : v).join('.');
}
// const _require_ = g.webpackData;
// g.webpackData = function(moduleId: any) {

@@ -147,179 +85,110 @@ // const module = _require_.m[moduleId] as Function;

// Object.assign(g.webpackData, _require_);
function loadComponentCss(baseUrl, styleId, needComboCssChunk, cssPrefix) {
var componentCss = "".concat(cssPrefix, "index.css");
var comboCssChunks = needComboCssChunk.map(function (chunkName) {
return "".concat(cssPrefix, "deps/").concat(chunkName, ".css");
});
comboCssChunks.unshift(componentCss);
var comboCssUrl = "".concat(baseUrl, "/??").concat(comboCssChunks.join());
return loadCSS(comboCssUrl).then(function (link) {
link && link.setAttribute('id', styleId);
});
function loadComponentCss(baseUrl, mainFile, styleId, needComboCssChunk, cssPrefix) {
const componentCss = `${cssPrefix}${mainFile}.css`;
const comboCssChunks = needComboCssChunk.map(chunkName => `${cssPrefix}deps/${chunkName}.css`);
comboCssChunks.unshift(componentCss);
const comboCssUrl = `${baseUrl}/??${comboCssChunks.join()}`;
return loadCSS(comboCssUrl).then(link => {
link && link.setAttribute('id', styleId);
});
}
var DynamicRequire =
/*#__PURE__*/
function () {
function DynamicRequire(_ref) {
var _this = this;
var baseUrl = _ref.baseUrl,
hashed = _ref.hashed,
jsPrefix = _ref.jsPrefix,
cssPrefix = _ref.cssPrefix;
_classCallCheck(this, DynamicRequire);
_defineProperty(this, "baseUrl", void 0);
_defineProperty(this, "jsonpUrl", void 0);
_defineProperty(this, "hashed", void 0);
_defineProperty(this, "scriptId", void 0);
_defineProperty(this, "styleId", void 0);
_defineProperty(this, "jsPrefix", void 0);
_defineProperty(this, "cssPrefix", void 0);
_defineProperty(this, "uninstall", void 0);
if (!baseUrl) {
throw new Error('DynamicRequire baseUrl paramters must setted');
class DynamicRequire {
constructor({ baseUrl, hashed, jsPrefix, cssPrefix, mainFile }) {
if (!baseUrl) {
throw new Error('DynamicRequire baseUrl paramters must setted');
}
const jsonpUrl = `${baseUrl}/jsonpmodules.js`;
const hashId = this.genHash(baseUrl);
this.scriptId = `${hashId}_js`;
this.styleId = `${hashId}_css`;
const unInstallFn = () => {
const jse = document.getElementById(this.scriptId);
const csse = document.getElementById(this.styleId);
jse && jse.remove();
csse && csse.remove();
};
this.baseUrl = baseUrl;
this.jsonpUrl = jsonpUrl;
this.hashed = hashed;
this.jsPrefix = jsPrefix;
this.cssPrefix = cssPrefix;
this.mainFile = mainFile || 'index';
this.uninstall = unInstallFn;
}
var jsonpUrl = "".concat(baseUrl, "/jsonpmodules.js");
var hashId = this.genHash(baseUrl);
this.scriptId = "".concat(hashId, "_js");
this.styleId = "".concat(hashId, "_css");
var unInstallFn = function unInstallFn() {
var jse = document.getElementById(_this.scriptId);
var csse = document.getElementById(_this.styleId);
jse && jse.remove();
csse && csse.remove();
};
this.baseUrl = baseUrl;
this.jsonpUrl = jsonpUrl;
this.hashed = hashed;
this.jsPrefix = jsPrefix;
this.cssPrefix = cssPrefix;
this.uninstall = unInstallFn;
}
_createClass(DynamicRequire, [{
key: "genHash",
value: function genHash(value) {
var hashState = new _imurmurhash["default"]();
hashState.hash(value);
return hashState.result().toString(16).substr(0, 6);
genHash(value) {
const hashState = new imurmurhash_1.default();
hashState.hash(value);
return hashState.result().toString(16).substr(0, 6);
}
}, {
key: "require",
value: function require(name) {
var _this2 = this;
var baseUrl = this.baseUrl,
jsonpUrl = this.jsonpUrl,
hashed = this.hashed,
_this$jsPrefix = this.jsPrefix,
jsPrefix = _this$jsPrefix === void 0 ? '' : _this$jsPrefix,
_this$cssPrefix = this.cssPrefix,
cssPrefix = _this$cssPrefix === void 0 ? '' : _this$cssPrefix,
styleId = this.styleId;
var jsonpCallback = (0, _camelcase["default"])(name.replace(/@/g, '$')).replace(/\//g, '_');
return jsonp(jsonpUrl, {
cbVal: jsonpCallback
}).then(function (args) {
var modules = args[0];
var entry = args[1];
var entryModuleName = "".concat(name, "/").concat(entry);
var componentChunks = "".concat(jsPrefix, "vendor.js,").concat(jsPrefix, "index.js");
var needComboCssChunk = [];
var needComboChunk = [];
if (hashed) {
entryModuleName = _this2.genHash(entryModuleName);
}
modules.forEach(function (_ref2) {
var _ref3 = _slicedToArray(_ref2, 3),
moduleName = _ref3[0],
chunkName = _ref3[1],
isCss = _ref3[2];
var module = g.webpackData.c[moduleName]; // 如果module不存在,放到module对应的chunk到combo信息里
if (!module && needComboChunk.indexOf(chunkName) === -1) {
needComboChunk.push(chunkName);
}
if (isCss && needComboCssChunk.indexOf(chunkName) === -1) {
needComboCssChunk.push(chunkName);
}
}); // 已经加载过了的逻辑
if (g.webpackData.c[entryModuleName]) {
// if webpack enable hmr above return { children, exports, hot ...}
var module = g.webpackData(entryModuleName);
var csse = document.getElementById(styleId); // 样式已经卸载,重新加载出来
if (!csse) {
return loadComponentCss(baseUrl, styleId, needComboCssChunk, cssPrefix).then(function () {
return module.a || module;
require(name) {
const { baseUrl, jsonpUrl, hashed, jsPrefix = '', cssPrefix = '', mainFile, styleId } = this;
const jsonpCallback = camelcase_1.default(name.replace(/@/g, '$')).replace(/\//g, '_');
return jsonp(jsonpUrl, {
cbVal: jsonpCallback
}).then((args) => {
const modules = args[0];
const entry = args[1];
let entryModuleName = `${name}/${entry}`;
const componentChunks = `${jsPrefix}vendor.js,${jsPrefix}${mainFile}.js`;
const needComboCssChunk = [];
const needComboChunk = [];
if (hashed) {
entryModuleName = this.genHash(entryModuleName);
}
modules.forEach(([moduleName, chunkName, isCss]) => {
const module = g.webpackData.c[moduleName];
// 如果module不存在,放到module对应的chunk到combo信息里
if (!module && needComboChunk.indexOf(chunkName) === -1) {
needComboChunk.push(chunkName);
}
if (isCss && needComboCssChunk.indexOf(chunkName) === -1) {
needComboCssChunk.push(chunkName);
}
});
} else {
return Promise.resolve(module.a || module);
}
} // 新加载逻辑
// 加载css
var ssPromise = loadComponentCss(baseUrl, styleId, needComboCssChunk, cssPrefix); // 并行加载js
var jsPromise;
var comboChunks = needComboChunk.map(function (chunkName) {
return "".concat(jsPrefix, "deps/").concat(chunkName, ".js");
});
comboChunks.unshift(componentChunks); // 补上必须的组件资源
var comboUrl = "".concat(baseUrl, "/??").concat(comboChunks.join());
jsPromise = new Promise(function (resolve, reject) {
(0, _scriptjs["default"])(comboUrl, function () {
try {
console.log('load combo js done', name);
var _module = g.webpackData(entryModuleName);
resolve(_module.a || _module);
} catch (e) {
reject(e);
// 已经加载过了的逻辑
if (g.webpackData.c[entryModuleName]) {
// if webpack enable hmr above return { children, exports, hot ...}
const module = g.webpackData(entryModuleName);
const csse = document.getElementById(styleId);
// 样式已经卸载,重新加载出来
if (!csse) {
return loadComponentCss(baseUrl, mainFile, styleId, needComboCssChunk, cssPrefix).then(() => {
return module.a || module;
});
}
else {
return Promise.resolve(module.a || module);
}
}
});
// 新加载逻辑
// 加载css
const ssPromise = loadComponentCss(baseUrl, mainFile, styleId, needComboCssChunk, cssPrefix);
// 并行加载js
let jsPromise;
const comboChunks = needComboChunk.map(chunkName => `${jsPrefix}deps/${chunkName}.js`);
comboChunks.unshift(componentChunks); // 补上必须的组件资源
const comboUrl = `${baseUrl}/??${comboChunks.join()}`;
jsPromise = new Promise((resolve, reject) => {
scriptjs_1.default(comboUrl, () => {
try {
console.log('load combo js done', name);
const module = g.webpackData(entryModuleName);
resolve(module.a || module);
}
catch (e) {
reject(e);
}
});
});
return Promise.all([ssPromise, jsPromise]).then(([ss, module]) => {
return module;
}).catch(e => {
console.warn('bootload module error', e);
});
}).catch(function (error) {
console.warn('load remote error');
throw error;
});
return Promise.all([ssPromise, jsPromise]).then(function (_ref4) {
var _ref5 = _slicedToArray(_ref4, 2),
ss = _ref5[0],
module = _ref5[1];
return module;
})["catch"](function (e) {
console.warn('bootload module error', e);
});
})["catch"](function (error) {
console.warn('load remote error');
throw error;
});
}
}]);
return DynamicRequire;
}();
exports["default"] = DynamicRequire;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9EeW5hbWljLnRzIl0sIm5hbWVzIjpbImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJsb2FkQ1NTIiwidXJsIiwiY3NzUm9vdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJsaW5rIiwiY3JlYXRlRWxlbWVudCIsInJlbCIsImhyZWYiLCJhcHBlbmRDaGlsZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYWRkRXZlbnRMaXN0ZW5lciIsImpzb25wIiwib3B0IiwiZm4iLCJ0aW1lb3V0IiwiY2JLZXkiLCJjYlZhbCIsInRpbWVyIiwiRGF0ZSIsIm5vdyIsInMiLCJzbGljZSIsImluZGV4T2YiLCJzY3JpcHQiLCJyZW1vdmUiLCJjbGVhclRpbWVvdXQiLCJoZWFkIiwicmVtb3ZlQ2hpbGQiLCJ1bmRlZmluZWQiLCJzcmMiLCJkYXRhIiwic2V0VGltZW91dCIsIkVycm9yIiwiYXJncyIsImdldEJsdXJWZXJzaW9uIiwidmVyc2lvbiIsInNwbGl0IiwibWFwIiwidiIsImkiLCJqb2luIiwibG9hZENvbXBvbmVudENzcyIsImJhc2VVcmwiLCJzdHlsZUlkIiwibmVlZENvbWJvQ3NzQ2h1bmsiLCJjc3NQcmVmaXgiLCJjb21wb25lbnRDc3MiLCJjb21ib0Nzc0NodW5rcyIsImNodW5rTmFtZSIsInVuc2hpZnQiLCJjb21ib0Nzc1VybCIsInRoZW4iLCJzZXRBdHRyaWJ1dGUiLCJEeW5hbWljUmVxdWlyZSIsImhhc2hlZCIsImpzUHJlZml4IiwianNvbnBVcmwiLCJoYXNoSWQiLCJnZW5IYXNoIiwic2NyaXB0SWQiLCJ1bkluc3RhbGxGbiIsImpzZSIsImdldEVsZW1lbnRCeUlkIiwiY3NzZSIsInVuaW5zdGFsbCIsInZhbHVlIiwiaGFzaFN0YXRlIiwiTXVybXVySGFzaDMiLCJoYXNoIiwicmVzdWx0IiwidG9TdHJpbmciLCJzdWJzdHIiLCJuYW1lIiwianNvbnBDYWxsYmFjayIsInJlcGxhY2UiLCJtb2R1bGVzIiwiZW50cnkiLCJlbnRyeU1vZHVsZU5hbWUiLCJjb21wb25lbnRDaHVua3MiLCJuZWVkQ29tYm9DaHVuayIsImZvckVhY2giLCJtb2R1bGVOYW1lIiwiaXNDc3MiLCJtb2R1bGUiLCJ3ZWJwYWNrRGF0YSIsImMiLCJwdXNoIiwiYSIsInNzUHJvbWlzZSIsImpzUHJvbWlzZSIsImNvbWJvQ2h1bmtzIiwiY29tYm9VcmwiLCJjb25zb2xlIiwibG9nIiwiZSIsImFsbCIsInNzIiwid2FybiIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUlBLENBQUMsR0FBRyxPQUFPQyxNQUFQLElBQWlCLFdBQWpCLEdBQStCQSxNQUEvQixHQUF3Q0MsTUFBaEQ7O0FBa0JBLFNBQVNDLE9BQVQsQ0FBaUJDLEdBQWpCLEVBQThCO0FBQzVCLE1BQU1DLE9BQU8sR0FBR0MsUUFBUSxDQUFDQyxvQkFBVCxDQUE4QixNQUE5QixFQUFzQyxDQUF0QyxDQUFoQjtBQUNBLE1BQU1DLElBQUksR0FBR0YsUUFBUSxDQUFDRyxhQUFULENBQXVCLE1BQXZCLENBQWI7QUFDQUQsRUFBQUEsSUFBSSxDQUFDRSxHQUFMLEdBQVcsWUFBWDtBQUNBRixFQUFBQSxJQUFJLENBQUNHLElBQUwsR0FBWVAsR0FBWjtBQUVBQyxFQUFBQSxPQUFPLENBQUNPLFdBQVIsQ0FBb0JKLElBQXBCO0FBRUEsU0FBTyxJQUFJSyxPQUFKLENBQTZCLFVBQUNDLE9BQUQsRUFBVUMsTUFBVixFQUFxQjtBQUN2RFAsSUFBQUEsSUFBSSxDQUFDUSxnQkFBTCxDQUFzQixPQUF0QixFQUErQixZQUFNO0FBQ25DRCxNQUFBQSxNQUFNLDJCQUFvQlgsR0FBcEIsRUFBTjtBQUNELEtBRkQ7QUFHQUksSUFBQUEsSUFBSSxDQUFDUSxnQkFBTCxDQUFzQixNQUF0QixFQUE4QjtBQUFBLGFBQU1GLE9BQU8s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RUFBSTtBQUNaRixVQUFBQSxPQUFPLENBQUNLLElBQVIsQ0FBYSx1QkFBYixFQUFzQ0gsQ0FBdEM7QUFDRCxTQUpNLENBQVA7QUFLRCxPQWhFTSxXQWdFRSxVQUFVSSxLQUFWLEVBQXNCO0FBQzdCTixRQUFBQSxPQUFPLENBQUNLLElBQVIsQ0FBYSxtQkFBYjtBQUNBLGNBQU1DLEtBQU47QUFDRCxPQW5FTSxDQUFQO0FBb0VEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNjcmlwdGpzIGZyb20gJ3NjcmlwdGpzJztcbmltcG9ydCBjYW1lbENhc2UgZnJvbSAnY2FtZWxjYXNlJztcbmltcG9ydCBNdXJtdXJIYXNoMyBmcm9tICdpbXVybXVyaGFzaCc7XG5leHBvcnQgKiBmcm9tICcuL01haW4nO1xuXG5kZWNsYXJlIHZhciB3aW5kb3c6IFdpbmRvdywgZ2xvYmFsOiBhbnk7XG52YXIgZyA9IHR5cGVvZiB3aW5kb3cgIT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IGdsb2JhbDtcblxuZXhwb3J0IHR5cGUgRGVwVHlwZSA9IHtcbiAgdHlwZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGVuZm9yY2U6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEZXBzID0ge1xuICBbbmFtZTogc3RyaW5nXTogRGVwVHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgSlNPTk9wdCA9IHtcbiAgdGltZW91dD86IG51bWJlcjtcbiAgY2JLZXk/OiBzdHJpbmc7XG4gIGNiVmFsPzogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBsb2FkQ1NTKHVybDogc3RyaW5nKSB7XG4gIGNvbnN0IGNzc1Jvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICBsaW5rLnJlbCA9ICdzdHlsZXNoZWV0JztcbiAgbGluay5ocmVmID0gdXJsO1xuXG4gIGNzc1Jvb3QuYXBwZW5kQ2hpbGQobGluayk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlPEhUTUxMaW5rRWxlbWVudD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoKSA9PiB7XG4gICAgICByZWplY3QoYGxvYWQgY3NzIGVycm9yOiAke3VybH1gKTtcbiAgICB9KTtcbiAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiByZXNvbHZlKGxpbmspKTtcbiAgfSk7XG5cbn1cblxuXG5jb25zdCBqc29ucCA9ICh1cmw6IHN0cmluZywgb3B0OiBKU09OT3B0ID0ge30sIGZuPzogRnVuY3Rpb24pID0+IHtcblxuICBpZiAodHlwZW9mIG9wdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZuID0gb3B0XG4gICAgb3B0ID0ge31cbiAgfVxuXG4gIGxldCB7IHRpbWVvdXQgPSBudWxsLCBjYktleSA9ICdjYWxsYmFjaycsIGNiVmFsID0gJ2Zlbmd5dScgfSA9IG9wdFxuICBsZXQgdGltZXI6IG51bWJlcjtcblxuICBpZiAoY2JWYWwgPT09ICdmZW5neXUnKSB7XG4gICAgY2JWYWwgKz0gRGF0ZS5ub3coKVxuICB9XG5cbiAgbGV0IHMgPSAnJ1xuICBzICs9IGAmJHtjYktleX09JHtjYlZhbH1gXG5cbiAgcyA9IHMuc2xpY2UoMSlcblxuICB1cmwgKz0gKH51cmwuaW5kZXhPZignPycpID8gJyYnIDogJz8nKSArIHNcblxuICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JylcblxuICB2YXIgcmVtb3ZlID0gKCkgPT4ge1xuICAgIHRpbWVyICYmIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICBkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKHNjcmlwdClcbiAgICBnW2NiVmFsXSA9IHVuZGVmaW5lZFxuICB9XG5cbiAgc2NyaXB0LnNyYyA9IHVybFxuXG5cbiAgaWYgKGZuICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZ1tjYlZhbF0gPSAoZGF0YTogYW55KSA9PiB7XG4gICAgICBmbihkYXRhKVxuICAgICAgcmVtb3ZlKClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdClcbiAgICByZXR1cm5cbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogKGFyZzA6IGFueSkgPT4gdm9pZCwgcmVqZWN0OiAoYXJnMDogRXJyb3IpID0+IHZvaWQpID0+IHtcbiAgICAvLyDor7fmsYLotoXml7ZcbiAgICBpZiAodGltZW91dCkge1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignanNvbnAgcmVxdWVzdCB0aW1lb3V0JykpXG4gICAgICAgIHJlbW92ZSgpXG4gICAgICB9LCB0aW1lb3V0KVxuICAgIH1cbiAgICAvLyDmraPluLhcbiAgICBnW2NiVmFsXSA9ICguLi5hcmdzOiBhbnkpID0+IHtcbiAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICByZW1vdmUoKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KVxuICB9KVxufVxuXG5mdW5jdGlvbiBnZXRCbHVyVmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHZlcnNpb24uc3BsaXQoJy4nKS5tYXAoKHYsIGkpID0+IGkgPiAwID8gJ3gnIDogdikuam9pbignLicpO1xufVxuLy8gY29uc3QgX3JlcXVpcmVfID0gZy53ZWJwYWNrRGF0YTtcbi8vIGcud2VicGFja0RhdGEgPSBmdW5jdGlvbihtb2R1bGVJZDogYW55KSB7XG4vLyAgIGNvbnN0IG1vZHVsZSA9IF9yZXF1aXJlXy5tW21vZHVsZUlkXSBhcyBGdW5jdGlvbjtcbi8vICAgaWYgKCFtb2R1bGUpIHtcbi8vICAgICBjb25zb2xlLndhcm4obW9kdWxlSWQsICdjYW4gbm90IGJlIGZvdW5kZWQsIGNoZWNrIGNodW5rIGlzIGNvbXBsZXRpb24nKTtcbi8vICAgICByZXR1cm47XG4vLyAgIH1cbi8vICAgcmV0dXJuIF9yZXF1aXJlXy5jYWxsKHRoaXMsIG1vZHVsZUlkKTtcbi8vIH1cbi8vIE9iamVjdC5hc3NpZ24oZy53ZWJwYWNrRGF0YSwgX3JlcXVpcmVfKTtcblxuXG5mdW5jdGlvbiBsb2FkQ29tcG9uZW50Q3NzKGJhc2VVcmw6IHN0cmluZywgc3R5bGVJZDogc3RyaW5nLCBuZWVkQ29tYm9Dc3NDaHVuazogc3RyaW5nW10sIGNzc1ByZWZpeDogc3RyaW5nKSB7XG4gIGNvbnN0IGNvbXBvbmVudENzcyA9IGAke2Nzc1ByZWZpeH1pbmRleC5jc3NgO1xuICBjb25zdCBjb21ib0Nzc0NodW5rcyA9IG5lZWRDb21ib0Nzc0NodW5rLm1hcChjaHVua05hbWUgPT4gYCR7Y3NzUHJlZml4fWRlcHMvJHtjaHVua05hbWV9LmNzc2ApO1xuICBjb21ib0Nzc0NodW5rcy51bnNoaWZ0KGNvbXBvbmVudENzcyk7XG4gIGNvbnN0IGNvbWJvQ3NzVXJsID0gYCR7YmFzZVVybH0vPz8ke2NvbWJvQ3NzQ2h1bmtzLmpvaW4oKX1gO1xuXG5cbiAgcmV0dXJuIGxvYWRDU1MoY29tYm9Dc3NVcmwpLnRoZW4obGluayA9PiB7XG4gICAgbGluayAmJiBsaW5rLnNldEF0dHJpYnV0ZSgnaWQnLCBzdHlsZUlkKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER5bmFtaWNSZXF1aXJlIHtcblxuICBiYXNlVXJsOiBzdHJpbmc7XG4gIGpzb25wVXJsOiBzdHJpbmc7XG4gIGhhc2hlZDogYm9vbGVhbjtcbiAgc2NyaXB0SWQ6IHN0cmluZztcbiAgc3R5bGVJZDogc3RyaW5nO1xuICBqc1ByZWZpeD86IHN0cmluZztcbiAgY3NzUHJlZml4Pzogc3RyaW5nO1xuICB1bmluc3RhbGw6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoeyBiYXNlVXJsLCBoYXNoZWQsIGpzUHJlZml4LCBjc3NQcmVmaXggfTogeyBiYXNlVXJsOiBzdHJpbmcsIGhhc2hlZD86IGJvb2xlYW4sIGpzUHJlZml4Pzogc3RyaW5nLCBjc3NQcmVmaXg/OiBzdHJpbmcgfSkge1xuICAgIGlmICghYmFzZVVybCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEeW5hbWljUmVxdWlyZSBiYXNlVXJsIHBhcmFtdGVycyBtdXN0IHNldHRlZCcpO1xuICAgIH1cbiAgICBjb25zdCBqc29ucFVybCA9IGAke2Jhc2VVcmx9L2pzb25wbW9kdWxlcy5qc2A7XG4gICAgY29uc3QgaGFzaElkID0gdGhpcy5nZW5IYXNoKGJhc2VVcmwpO1xuICAgIHRoaXMuc2NyaXB0SWQgPSBgJHtoYXNoSWR9X2pzYDtcbiAgICB0aGlzLnN0eWxlSWQgPSBgJHtoYXNoSWR9X2Nzc2A7XG4gICAgY29uc3QgdW5JbnN0YWxsRm4gPSAoKSA9PiB7XG4gICAgICBjb25zdCBqc2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnNjcmlwdElkKTtcbiAgICAgIGNvbnN0IGNzc2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnN0eWxlSWQpO1xuICAgICAganNlICYmIGpzZS5yZW1vdmUoKTtcbiAgICAgIGNzc2UgJiYgY3NzZS5yZW1vdmUoKTtcbiAgICB9O1xuXG4gICAgdGhpcy5iYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLmpzb25wVXJsID0ganNvbnBVcmw7XG4gICAgdGhpcy5oYXNoZWQgPSBoYXNoZWQ7XG4gICAgdGhpcy5qc1ByZWZpeCA9IGpzUHJlZml4O1xuICAgIHRoaXMuY3NzUHJlZml4ID0gY3NzUHJlZml4O1xuICAgIHRoaXMudW5pbnN0YWxsID0gdW5JbnN0YWxsRm47XG4gIH1cblxuICBnZW5IYXNoKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoYXNoU3RhdGUgPSBuZXcgTXVybXVySGFzaDMoKTtcbiAgICBoYXNoU3RhdGUuaGFzaCh2YWx1ZSk7XG4gICAgcmV0dXJuIGhhc2hTdGF0ZS5yZXN1bHQoKS50b1N0cmluZygxNikuc3Vic3RyKDAsIDYpO1xuICB9XG5cbiAgcmVxdWlyZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGJhc2VVcmwsIGpzb25wVXJsLCBoYXNoZWQsIGpzUHJlZml4ID0gJycsIGNzc1ByZWZpeCA9ICcnLCBzdHlsZUlkIH0gPSB0aGlzO1xuICAgIGNvbnN0IGpzb25wQ2FsbGJhY2sgPSBjYW1lbENhc2UobmFtZS5yZXBsYWNlKC9AL2csICckJykpLnJlcGxhY2UoL1xcLy9nLCAnXycpO1xuXG4gICAgcmV0dXJuIGpzb25wKGpzb25wVXJsLCB7XG4gICAgICBjYlZhbDoganNvbnBDYWxsYmFja1xuICAgIH0pLnRoZW4oKGFyZ3MpID0+IHtcbiAgICAgIGNvbnN0IG1vZHVsZXM6IHN0cmluZ1tdID0gYXJnc1swXTtcbiAgICAgIGNvbnN0IGVudHJ5OiBzdHJpbmcgPSBhcmdzWzFdO1xuICAgICAgbGV0IGVudHJ5TW9kdWxlTmFtZSA9IGAke25hbWV9LyR7ZW50cnl9YDtcbiAgICAgIGNvbnN0IGNvbXBvbmVudENodW5rcyA9IGAke2pzUHJlZml4fXZlbmRvci5qcywke2pzUHJlZml4fWluZGV4LmpzYDtcbiAgICAgIGNvbnN0IG5lZWRDb21ib0Nzc0NodW5rOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgY29uc3QgbmVlZENvbWJvQ2h1bms6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGlmIChoYXNoZWQpIHtcbiAgICAgICAgZW50cnlNb2R1bGVOYW1lID0gdGhpcy5nZW5IYXNoKGVudHJ5TW9kdWxlTmFtZSk7XG4gICAgICB9XG4gIFxuICAgICAgbW9kdWxlcy5mb3JFYWNoKChbbW9kdWxlTmFtZSwgY2h1bmtOYW1lLCBpc0Nzc10pID0+IHtcbiAgICAgICAgY29uc3QgbW9kdWxlID0gZy53ZWJwYWNrRGF0YS5jW21vZHVsZU5hbWVdO1xuICAgICAgICAvLyDlpoLmnpxtb2R1bGXkuI3lrZjlnKjvvIzmlL7liLBtb2R1bGXlr7nlupTnmoRjaHVua+WIsGNvbWJv5L+h5oGv6YeMXG4gICAgICAgIGlmICghbW9kdWxlICYmIG5lZWRDb21ib0NodW5rLmluZGV4T2YoY2h1bmtOYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICBuZWVkQ29tYm9DaHVuay5wdXNoKGNodW5rTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ3NzICYmIG5lZWRDb21ib0Nzc0NodW5rLmluZGV4T2YoY2h1bmtOYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICBuZWVkQ29tYm9Dc3NDaHVuay5wdXNoKGNodW5rTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICBcbiAgICAgIC8vIOW3sue7j+WKoOi9vei/h+S6hueahOmAu+i+kVxuICAgICAgaWYgKGcud2VicGFja0RhdGEuY1tlbnRyeU1vZHVsZU5hbWVdKSB7XG4gICAgICAgIC8vIGlmIHdlYnBhY2sgZW5hYmxlIGhtciBhYm92ZSByZXR1cm4geyBjaGlsZHJlbiwgZXhwb3J0cywgaG90IC4uLn1cbiAgICAgICAgY29uc3QgbW9kdWxlID0gZy53ZWJwYWNrRGF0YShlbnRyeU1vZHVsZU5hbWUpO1xuICAgICAgICBjb25zdCBjc3NlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3R5bGVJZCk7XG4gICAgICAgIC8vIOagt+W8j+W3sue7j+WNuOi9ve+8jOmHjeaWsOWKoOi9veWHuuadpVxuICAgICAgICBpZiAoIWNzc2UpIHtcbiAgICAgICAgICByZXR1cm4gbG9hZENvbXBvbmVudENzcyhiYXNlVXJsLCBzdHlsZUlkLCBuZWVkQ29tYm9Dc3NDaHVuaywgY3NzUHJlZml4KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtb2R1bGUuYSB8fCBtb2R1bGU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtb2R1bGUuYSB8fCBtb2R1bGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gIFxuICAgICAgLy8g5paw5Yqg6L296YC76L6RXG4gICAgICAvLyDliqDovb1jc3NcbiAgICAgIGNvbnN0IHNzUHJvbWlzZSA9IGxvYWRDb21wb25lbnRDc3MoYmFzZVVybCwgc3R5bGVJZCwgbmVlZENvbWJvQ3NzQ2h1bmssIGNzc1ByZWZpeCk7XG4gICAgICAvLyDlubbooYzliqDovb1qc1xuICAgICAgbGV0IGpzUHJvbWlzZTtcbiAgICAgIGNvbnN0IGNvbWJvQ2h1bmtzID0gbmVlZENvbWJvQ2h1bmsubWFwKGNodW5rTmFtZSA9PiBgJHtqc1ByZWZpeH1kZXBzLyR7Y2h1bmtOYW1lfS5qc2ApXG4gICAgICBjb21ib0NodW5rcy51bnNoaWZ0KGNvbXBvbmVudENodW5rcyk7IC8vIOihpeS4iuW/hemhu+eahOe7hOS7tui1hOa6kFxuICAgICAgY29uc3QgY29tYm9VcmwgPSBgJHtiYXNlVXJsfS8/PyR7Y29tYm9DaHVua3Muam9pbigpfWA7XG4gICAgICBqc1Byb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIFNjcmlwdGpzKGNvbWJvVXJsLCAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2FkIGNvbWJvIGpzIGRvbmUnLCBuYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZSA9IGcud2VicGFja0RhdGEoZW50cnlNb2R1bGVOYW1lKTtcbiAgICAgICAgICAgIHJlc29sdmUobW9kdWxlLmEgfHwgbW9kdWxlKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtzc1Byb21pc2UsIGpzUHJvbWlzZV0pLnRoZW4oKFtzcywgbW9kdWxlXSkgPT4ge1xuICAgICAgICByZXR1cm4gbW9kdWxlO1xuICAgICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICAgIGNvbnNvbGUud2FybignYm9vdGxvYWQgbW9kdWxlIGVycm9yJywgZSk7XG4gICAgICB9KVxuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2xvYWQgcmVtb3RlIGVycm9yJyk7XG4gICAgICB0aHJvdyBlcnJvclxuICAgIH0pO1xuICB9XG59XG5cbiJdfQ==
}
exports.default = DynamicRequire;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ParseModuleData = ParseModuleData;
exports.GetIDForModule = GetIDForModule;
exports.Require = Require;
Object.defineProperty(exports, "GetModuleNameFromPath", {
enumerable: true,
get: function get() {
return _Utils.GetModuleNameFromPath;
}
});
Object.defineProperty(exports, "GetModuleNameFromVarName", {
enumerable: true,
get: function get() {
return _Utils.GetModuleNameFromVarName;
}
});
exports.moduleNames = exports.moduleIDs = exports.allModulesText = void 0;
var _Utils = require("./Utils");
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
Object.defineProperty(exports, "__esModule", { value: true });
const Utils_1 = require("./Utils");
exports.GetModuleNameFromPath = Utils_1.GetModuleNameFromPath;
exports.GetModuleNameFromVarName = Utils_1.GetModuleNameFromVarName;
var g = typeof window != "undefined" ? window : global;
function MakeGlobal(props) {
for (var _key in props) {
g[_key] = props[_key];
}
for (let key in props)
g[key] = props[key];
}
// if webpack-data was not explicitly specified prior to library import, try to find the data
if (g.webpackData == null) {
// if included using `module: "src/Main.ts"`, we can access webpack-data directly
if (typeof __webpack_require__ != "undefined" && (__webpack_require__.m.length > 2 || Object.keys(__webpack_require__.m).length > 2)) {
g.webpackData = __webpack_require__;
} // else, try to access it using webpackJsonp (the function only seems to be available if CommonsChunkPlugin is used)
else if (g.webpackJsonp) {
var webpackVersion = g.webpackJsonp.length == 2 ? 1 : 2;
if (webpackVersion == 1) {
g.webpackJsonp([], {
0: function _(module, exports, __webpack_require__) {
g.webpackData = __webpack_require__;
}
});
} else {
g.webpackJsonp([], {
123456: function _(module, exports, __webpack_require__) {
g.webpackData = __webpack_require__;
}
}, [123456]);
}
} // else, give up and throw error
// if included using `module: "src/Main.ts"`, we can access webpack-data directly
if (typeof __webpack_require__ != "undefined" && (__webpack_require__.m.length > 2 || Object.keys(__webpack_require__.m).length > 2)) {
g.webpackData = __webpack_require__;
}
// else, try to access it using webpackJsonp (the function only seems to be available if CommonsChunkPlugin is used)
else if (g.webpackJsonp) {
let webpackVersion = g.webpackJsonp.length == 2 ? 1 : 2;
if (webpackVersion == 1) {
g.webpackJsonp([], { 0: function (module, exports, __webpack_require__) {
g.webpackData = __webpack_require__;
} });
}
else {
g.webpackJsonp([], { 123456: function (module, exports, __webpack_require__) {
g.webpackData = __webpack_require__;
} }, [123456]);
}
}
// else, give up and throw error
else {
throw new Error("window.webpackData must be set for webpack-runtime-require to function.".concat("\n", "You can do so either by setting it directly (to __webpack_require__), or by making window.webpackJsonp available. (eg. using CommonsChunkPlugin)"));
}
throw new Error(`window.webpackData must be set for webpack-runtime-require to function.${"\n"}You can do so either by setting it directly (to __webpack_require__), or by making window.webpackJsonp available. (eg. using CommonsChunkPlugin)`);
}
}
var allModulesText;
exports.allModulesText = allModulesText;
var moduleIDs = {};
exports.moduleIDs = moduleIDs;
var moduleNames = {};
exports.moduleNames = moduleNames;
function ParseModuleData() {
var forceRefresh = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (allModulesText != null && !forceRefresh) return;
var moduleWrapperFuncs = Object.keys(g.webpackData.m).map(function (moduleID) {
return g.webpackData.m[moduleID];
});
exports.allModulesText = allModulesText = moduleWrapperFuncs.map(function (a) {
return a.toString();
}).join("\n\n\n").replace(/\\"/g, "\""); // these are examples of before and after webpack's transformation: (based on which the 1st regex below finds path-comments)
// require("react-redux-firebase") => var _reactReduxFirebase = __webpack_require__(/*! react-redux-firebase */ 100);
// require("./Source/MyComponent") => var _MyComponent = __webpack_require__(/*! ./Source/MyComponent */ 200);
//let requiresWithPathCommentsRegex = /__webpack_require__\(\/\*! ((?:.(?!\*))+) \*\/ (["'0-9a-zA-Z\/.-]+)\)/g;
//let requiresWithPathCommentsRegex = /__webpack_require__\(\/\*! ((?:.(?!\*))+) \*\/ ["']?([^"'\)]+)["']?\)/g;
var requiresWithPathCommentsRegex = /__webpack_require__\(\/\*! (.+?) \*\/ ["']?([^"'\)]+?)["']?\)/g; // these are examples of before and after webpack's transformation: (based on which the 2nd regex below finds paths)
// require("jquery") => __webpack_require__("jquery")
//let requiresWithPathsRegex = /__webpack_require__\([^")]*"(.+?)"\)/g;
var requiresWithPathsRegex = /__webpack_require__\("(.+?)"\)/g; // only process plain requires-with-paths (ie. ignore ones that also have path-comments)
// if requires have path-info embedded, use that (set using [webpackConfig.output.pathinfo: true])
if (allModulesText.match(requiresWithPathCommentsRegex)) {
for (var match; match = requiresWithPathCommentsRegex.exec(allModulesText);) {
var _match = match,
_match2 = _slicedToArray(_match, 3),
_ = _match2[0],
path = _match2[1],
idStr = _match2[2];
AddModuleEntry(idStr, (0, _Utils.GetModuleNameFromPath)(path));
exports.moduleIDs = {};
exports.moduleNames = {};
function ParseModuleData(forceRefresh = false) {
if (exports.allModulesText != null && !forceRefresh)
return;
let moduleWrapperFuncs = Object.keys(g.webpackData.m).map(moduleID => g.webpackData.m[moduleID]);
exports.allModulesText = moduleWrapperFuncs.map(a => a.toString()).join("\n\n\n").replace(/\\"/g, `"`);
// these are examples of before and after webpack's transformation: (based on which the 1st regex below finds path-comments)
// require("react-redux-firebase") => var _reactReduxFirebase = __webpack_require__(/*! react-redux-firebase */ 100);
// require("./Source/MyComponent") => var _MyComponent = __webpack_require__(/*! ./Source/MyComponent */ 200);
//let requiresWithPathCommentsRegex = /__webpack_require__\(\/\*! ((?:.(?!\*))+) \*\/ (["'0-9a-zA-Z\/.-]+)\)/g;
//let requiresWithPathCommentsRegex = /__webpack_require__\(\/\*! ((?:.(?!\*))+) \*\/ ["']?([^"'\)]+)["']?\)/g;
let requiresWithPathCommentsRegex = /__webpack_require__\(\/\*! (.+?) \*\/ ["']?([^"'\)]+?)["']?\)/g;
// these are examples of before and after webpack's transformation: (based on which the 2nd regex below finds paths)
// require("jquery") => __webpack_require__("jquery")
//let requiresWithPathsRegex = /__webpack_require__\([^")]*"(.+?)"\)/g;
let requiresWithPathsRegex = /__webpack_require__\("(.+?)"\)/g; // only process plain requires-with-paths (ie. ignore ones that also have path-comments)
// if requires have path-info embedded, use that (set using [webpackConfig.output.pathinfo: true])
if (exports.allModulesText.match(requiresWithPathCommentsRegex)) {
for (let match; match = requiresWithPathCommentsRegex.exec(exports.allModulesText);) {
let [_, path, idStr] = match;
AddModuleEntry(idStr, Utils_1.GetModuleNameFromPath(path));
}
}
} // if requires themselves are by-path, use that (set using [config.mode: "development"] or [config.optimization.namedModules: true])
if (allModulesText.match(requiresWithPathsRegex)) {
for (var _match3; _match3 = requiresWithPathsRegex.exec(allModulesText);) {
var _match4 = _match3,
_match5 = _slicedToArray(_match4, 2),
_ = _match5[0],
path = _match5[1];
AddModuleEntry(path, (0, _Utils.GetModuleNameFromPath)(path));
// if requires themselves are by-path, use that (set using [config.mode: "development"] or [config.optimization.namedModules: true])
if (exports.allModulesText.match(requiresWithPathsRegex)) {
for (let match; match = requiresWithPathsRegex.exec(exports.allModulesText);) {
let [_, path] = match;
AddModuleEntry(path, Utils_1.GetModuleNameFromPath(path));
}
}
} // else, infer it from the var-names of the imports
if (!allModulesText.match(requiresWithPathsRegex) && !allModulesText.match(requiresWithPathCommentsRegex)) {
// these are examples of before and after webpack's transformation: (which the regex below finds the var-name of)
// require("react-redux-firebase") => var _reactReduxFirebase = __webpack_require__(100);
// require("./Source/MyComponent") => var _MyComponent = __webpack_require__(200);
var regex = /var ([a-zA-Z_]+) = __webpack_require__\(([0-9]+)\)/g;
for (var _match6; _match6 = regex.exec(allModulesText);) {
var _match7 = _match6,
_match8 = _slicedToArray(_match7, 3),
_ = _match8[0],
varName = _match8[1],
idStr = _match8[2];
AddModuleEntry(parseInt(idStr), (0, _Utils.GetModuleNameFromVarName)(varName));
// else, infer it from the var-names of the imports
if (!exports.allModulesText.match(requiresWithPathsRegex) && !exports.allModulesText.match(requiresWithPathCommentsRegex)) {
// these are examples of before and after webpack's transformation: (which the regex below finds the var-name of)
// require("react-redux-firebase") => var _reactReduxFirebase = __webpack_require__(100);
// require("./Source/MyComponent") => var _MyComponent = __webpack_require__(200);
let regex = /var ([a-zA-Z_]+) = __webpack_require__\(([0-9]+)\)/g;
for (let match; match = regex.exec(exports.allModulesText);) {
let [_, varName, idStr] = match;
AddModuleEntry(parseInt(idStr), Utils_1.GetModuleNameFromVarName(varName));
}
}
}
MakeGlobal({
allModulesText: allModulesText,
moduleIDs: moduleIDs,
moduleNames: moduleNames
});
MakeGlobal({ allModulesText: exports.allModulesText, moduleIDs: exports.moduleIDs, moduleNames: exports.moduleNames });
}
var moduleCache = {};
exports.ParseModuleData = ParseModuleData;
const moduleCache = {};
function AddModuleEntry(moduleID, moduleName) {
moduleIDs[moduleName] = moduleID;
moduleNames[moduleID] = moduleName; // replace certain characters with underscores, so the module-entries can show in console auto-complete
var moduleName_simple = moduleName.replace(/-/g, "_"); // make sure we add the module under a unique name
while (moduleName_simple in moduleCache) {
moduleName_simple += "_";
} // add the module onto the Require function
moduleCache[moduleName_simple] = GetModuleExports(moduleID);
exports.moduleIDs[moduleName] = moduleID;
exports.moduleNames[moduleID] = moduleName;
// replace certain characters with underscores, so the module-entries can show in console auto-complete
let moduleName_simple = moduleName.replace(/-/g, "_");
// make sure we add the module under a unique name
while (moduleName_simple in moduleCache)
moduleName_simple += `_`;
// add the module onto the Require function
moduleCache[moduleName_simple] = GetModuleExports(moduleID);
}
function GetModuleExports(moduleID) {
return g.webpackData.c[moduleID] ? g.webpackData.c[moduleID].exports : "[failed to retrieve module exports]";
return g.webpackData.c[moduleID] ? g.webpackData.c[moduleID].exports : "[failed to retrieve module exports]";
}
MakeGlobal({
GetIDForModule: GetIDForModule
});
MakeGlobal({ GetIDForModule });
function GetIDForModule(name) {
ParseModuleData();
return moduleIDs[name];
ParseModuleData();
return exports.moduleIDs[name];
}
MakeGlobal({
Require: Require
});
exports.GetIDForModule = GetIDForModule;
MakeGlobal({ Require });
function Require(name) {
if (name === undefined) return void ParseModuleData();
var id = GetIDForModule(name);
if (id == null) return "[could not find the given module]";
return GetModuleExports(id);
if (name === undefined)
return void ParseModuleData();
let id = GetIDForModule(name);
if (id == null)
return "[could not find the given module]";
return GetModuleExports(id);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9NYWluLnRzIl0sIm5hbWVzIjpbImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJNYWtlR2xvYmFsIiwicHJvcHMiLCJrZXkiLCJ3ZWJwYWNrRGF0YSIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtIiwibGVuZ3RoIiwiT2JqZWN0Iiwia2V5cyIsIndlYnBhY2tKc29ucCIsIndlYnBhY2tWZXJzaW9uIiwibW9kdWxlIiwiZXhwb3J0cyIsIkVycm9yIiwiYWxsTW9kdWxlc1RleHQiLCJtb2R1bGVJRHMiLCJtb2R1bGVOYW1lcyIsIlBhcnNlTW9kdWxlRGF0YSIsImZvcmNlUmVmcmVzaCIsIm1vZHVsZVdyYXBwZXJGdW5jcyIsIm1hcCIsIm1vZHVsZUlEIiwiYSIsInRvU3RyaW5nIiwiam9pbiIsInJlcGxhY2UiLCJyZXF1aXJlc1dpdGhQYXRoQ29tbWVudHNSZWdleCIsInJlcXVpcmVzV2l0aFBhdGhzUmVnZXgiLCJtYXRjaCIsImV4ZWMiLCJfIiwicGF0aCIsImlkU3RyIiwiQWRkTW9kdWxlRW50cnkiLCJyZWdleCIsInZhck5hbWUiLCJwYXJzZUludCIsIm1vZHVsZUNhY2hlIiwibW9kdWxlTmFtZSIsIm1vZHVsZU5hbWVfc2ltcGxlIiwiR2V0TW9kdWxlRXhwb3J0cyIsImMiLCJHZXRJREZvck1vZHVsZSIsIm5hbWUiLCJSZXF1aXJlIiwidW5kZWZpbmVkIiwiaWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7OztBQUlBLElBQUlBLENBQUMsR0FBRyxPQUFPQyxNQUFQLElBQWlCLFdBQWpCLEdBQStCQSxNQUEvQixHQUF3Q0MsTUFBaEQ7O0FBQ0EsU0FBU0MsVUFBVCxDQUFvQkMsS0FBcEIsRUFBZ0M7QUFDL0IsT0FBSyxJQUFJQyxJQUFULElBQWdCRCxLQUFoQjtBQUNDSixJQUFBQSxDQUFDLENBQUNLLElBQUQsQ0FBRCxHQUFTRCxLQUFLLENBQUNDLElBQUQsQ0FBZDtBQUREO0FBRUE7O0FBR0Q7QUFDQSxJ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U0FBT04sZ0JBQWdCLENBQUNNLEVBQUQsQ0FBdkI7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7R2V0TW9kdWxlTmFtZUZyb21QYXRoLCBHZXRNb2R1bGVOYW1lRnJvbVZhck5hbWV9IGZyb20gXCIuL1V0aWxzXCI7XG5leHBvcnQge0dldE1vZHVsZU5hbWVGcm9tUGF0aCwgR2V0TW9kdWxlTmFtZUZyb21WYXJOYW1lfTtcblxuZGVjbGFyZSB2YXIgd2luZG93OiBXaW5kb3csIGdsb2JhbDogYW55O1xudmFyIGcgPSB0eXBlb2Ygd2luZG93ICE9IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiBnbG9iYWw7XG5mdW5jdGlvbiBNYWtlR2xvYmFsKHByb3BzOiBhbnkpIHtcblx0Zm9yIChsZXQga2V5IGluIHByb3BzKVxuXHRcdGdba2V5XSA9IHByb3BzW2tleV07XG59XG5cbmRlY2xhcmUgdmFyIF9fd2VicGFja19yZXF1aXJlX18gOiBhbnk7XG4vLyBpZiB3ZWJwYWNrLWRhdGEgd2FzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBwcmlvciB0byBsaWJyYXJ5IGltcG9ydCwgdHJ5IHRvIGZpbmQgdGhlIGRhdGFcbmlmIChnLndlYnBhY2tEYXRhID09IG51bGwpIHtcblx0Ly8gaWYgaW5jbHVkZWQgdXNpbmcgYG1vZHVsZTogXCJzcmMvTWFpbi50c1wiYCwgd2UgY2FuIGFjY2VzcyB3ZWJwYWNrLWRhdGEgZGlyZWN0bHlcblx0aWYgKHR5cGVvZiBfX3dlYnBhY2tfcmVxdWlyZV9fICE9IFwidW5kZWZpbmVkXCIgJiYgKF9fd2VicGFja19yZXF1aXJlX18ubS5sZW5ndGggPiAyIHx8IE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18ubSkubGVuZ3RoID4gMikpIHtcblx0XHRnLndlYnBhY2tEYXRhID0gX193ZWJwYWNrX3JlcXVpcmVfXztcblx0fVxuXHQvLyBlbHNlLCB0cnkgdG8gYWNjZXNzIGl0IHVzaW5nIHdlYnBhY2tKc29ucCAodGhlIGZ1bmN0aW9uIG9ubHkgc2VlbXMgdG8gYmUgYXZhaWxhYmxlIGlmIENvbW1vbnNDaHVua1BsdWdpbiBpcyB1c2VkKVxuXHRlbHNlIGlmIChnLndlYnBhY2tKc29ucCkge1xuXHRcdGxldCB3ZWJwYWNrVmVyc2lvbiA9IGcud2VicGFja0pzb25wLmxlbmd0aCA9PSAyID8gMSA6IDI7XG5cdFx0aWYgKHdlYnBhY2tWZXJzaW9uID09IDEpIHtcblx0XHRcdGcud2VicGFja0pzb25wKFtdLFxuXHRcdFx0XHR7MDogZnVuY3Rpb24obW9kdWxlOiBhbnksIGV4cG9ydHM6IGFueSwgX193ZWJwYWNrX3JlcXVpcmVfXzogYW55KSB7XG5cdFx0XHRcdFx0Zy53ZWJwYWNrRGF0YSA9IF9fd2VicGFja19yZXF1aXJlX187XG5cdFx0XHRcdH19XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRnLndlYnBhY2tKc29ucChbXSxcblx0XHRcdFx0ezEyMzQ1NjogZnVuY3Rpb24obW9kdWxlOiBhbnksIGV4cG9ydHM6IGFueSwgX193ZWJwYWNrX3JlcXVpcmVfXzogYW55KSB7XG5cdFx0XHRcdFx0Zy53ZWJwYWNrRGF0YSA9IF9fd2VicGFja19yZXF1aXJlX187XG5cdFx0XHRcdH19LFxuXHRcdFx0XHRbMTIzNDU2XVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblx0Ly8gZWxzZSwgZ2l2ZSB1cCBhbmQgdGhyb3cgZXJyb3Jcblx0ZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGB3aW5kb3cud2VicGFja0RhdGEgbXVzdCBiZSBzZXQgZm9yIHdlYnBhY2stcnVudGltZS1yZXF1aXJlIHRvIGZ1bmN0aW9uLiR7XCJcXG5cIlxuXHRcdFx0fVlvdSBjYW4gZG8gc28gZWl0aGVyIGJ5IHNldHRpbmcgaXQgZGlyZWN0bHkgKHRvIF9fd2VicGFja19yZXF1aXJlX18pLCBvciBieSBtYWtpbmcgd2luZG93LndlYnBhY2tKc29ucCBhdmFpbGFibGUuIChlZy4gdXNpbmcgQ29tbW9uc0NodW5rUGx1Z2luKWApO1xuXHR9XG59XG5cbmV4cG9ydCB2YXIgYWxsTW9kdWxlc1RleHQ6IHN0cmluZztcbmV4cG9ydCB2YXIgbW9kdWxlSURzID0ge30gYXMge1trZXk6IHN0cmluZ106IG51bWJlciB8IHN0cmluZ307XG5leHBvcnQgdmFyIG1vZHVsZU5hbWVzID0ge30gYXMge1trZXk6IG51bWJlcl06IHN0cmluZzsgW2tleTogc3RyaW5nXTogc3RyaW5nO307XG5leHBvcnQgZnVuY3Rpb24gUGFyc2VNb2R1bGVEYXRhKGZvcmNlUmVmcmVzaCA9IGZhbHNlKSB7XG5cdGlmIChhbGxNb2R1bGVzVGV4dCAhPSBudWxsICYmICFmb3JjZVJlZnJlc2gpIHJldHVybjtcblxuXHRsZXQgbW9kdWxlV3JhcHBlckZ1bmNzID0gT2JqZWN0LmtleXMoZy53ZWJwYWNrRGF0YS5tKS5tYXAobW9kdWxlSUQ9Pmcud2VicGFja0RhdGEubVttb2R1bGVJRF0pO1xuXHRhbGxNb2R1bGVzVGV4dCA9IG1vZHVsZVdyYXBwZXJGdW5jcy5tYXAoYT0+YS50b1N0cmluZygpKS5qb2luKFwiXFxuXFxuXFxuXCIpLnJlcGxhY2UoL1xcXFxcIi9nLCBgXCJgKTtcblxuXHQvLyB0aGVzZSBhcmUgZXhhbXBsZXMgb2YgYmVmb3JlIGFuZCBhZnRlciB3ZWJwYWNrJ3MgdHJhbnNmb3JtYXRpb246IChiYXNlZCBvbiB3aGljaCB0aGUgMXN0IHJlZ2V4IGJlbG93IGZpbmRzIHBhdGgtY29tbWVudHMpXG5cdC8vIFx0XHRyZXF1aXJlKFwicmVhY3QtcmVkdXgtZmlyZWJhc2VcIikgPT4gdmFyIF9yZWFjdFJlZHV4RmlyZWJhc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISByZWFjdC1yZWR1eC1maXJlYmFzZSAqLyAxMDApO1xuXHQvLyBcdFx0cmVxdWlyZShcIi4vU291cmNlL015Q29tcG9uZW50XCIpID0+IHZhciBfTXlDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL1NvdXJjZS9NeUNvbXBvbmVudCAqLyAyMDApO1xuXHQvL2xldCByZXF1aXJlc1dpdGhQYXRoQ29tbWVudHNSZWdleCA9IC9fX3dlYnBhY2tfcmVxdWlyZV9fXFwoXFwvXFwqISAoKD86Lig/IVxcKikpKykgXFwqXFwvIChbXCInMC05YS16QS1aXFwvLi1dKylcXCkvZztcblx0Ly9sZXQgcmVxdWlyZXNXaXRoUGF0aENvbW1lbnRzUmVnZXggPSAvX193ZWJwYWNrX3JlcXVpcmVfX1xcKFxcL1xcKiEgKCg/Oi4oPyFcXCopKSspIFxcKlxcLyBbXCInXT8oW15cIidcXCldKylbXCInXT9cXCkvZztcblx0bGV0IHJlcXVpcmVzV2l0aFBhdGhDb21tZW50c1JlZ2V4ID0gL19fd2VicGFja19yZXF1aXJlX19cXChcXC9cXCohICguKz8pIFxcKlxcLyBbXCInXT8oW15cIidcXCldKz8pW1wiJ10/XFwpL2c7XG5cdC8vIHRoZXNlIGFyZSBleGFtcGxlcyBvZiBiZWZvcmUgYW5kIGFmdGVyIHdlYnBhY2sncyB0cmFuc2Zvcm1hdGlvbjogKGJhc2VkIG9uIHdoaWNoIHRoZSAybmQgcmVnZXggYmVsb3cgZmluZHMgcGF0aHMpXG5cdC8vIFx0XHRyZXF1aXJlKFwianF1ZXJ5XCIpID0+IF9fd2VicGFja19yZXF1aXJlX18oXCJqcXVlcnlcIilcblx0Ly9sZXQgcmVxdWlyZXNXaXRoUGF0aHNSZWdleCA9IC9fX3dlYnBhY2tfcmVxdWlyZV9fXFwoW15cIildKlwiKC4rPylcIlxcKS9nO1xuXHRsZXQgcmVxdWlyZXNXaXRoUGF0aHNSZWdleCA9IC9fX3dlYnBhY2tfcmVxdWlyZV9fXFwoXCIoLis/KVwiXFwpL2c7IC8vIG9ubHkgcHJvY2VzcyBwbGFpbiByZXF1aXJlcy13aXRoLXBhdGhzIChpZS4gaWdub3JlIG9uZXMgdGhhdCBhbHNvIGhhdmUgcGF0aC1jb21tZW50cylcblxuXHQvLyBpZiByZXF1aXJlcyBoYXZlIHBhdGgtaW5mbyBlbWJlZGRlZCwgdXNlIHRoYXQgKHNldCB1c2luZyBbd2VicGFja0NvbmZpZy5vdXRwdXQucGF0aGluZm86IHRydWVdKVxuXHRpZiAoYWxsTW9kdWxlc1RleHQubWF0Y2gocmVxdWlyZXNXaXRoUGF0aENvbW1lbnRzUmVnZXgpKSB7XG5cdFx0Zm9yIChsZXQgbWF0Y2g7IG1hdGNoID0gcmVxdWlyZXNXaXRoUGF0aENvbW1lbnRzUmVnZXguZXhlYyhhbGxNb2R1bGVzVGV4dCk7KSB7XG5cdFx0XHRsZXQgW18sIHBhdGgsIGlkU3RyXSA9IG1hdGNoO1xuXHRcdFx0QWRkTW9kdWxlRW50cnkoaWRTdHIsIEdldE1vZHVsZU5hbWVGcm9tUGF0aChwYXRoKSk7XG5cdFx0fVxuXHR9XG5cdC8vIGlmIHJlcXVpcmVzIHRoZW1zZWx2ZXMgYXJlIGJ5LXBhdGgsIHVzZSB0aGF0IChzZXQgdXNpbmcgW2NvbmZpZy5tb2RlOiBcImRldmVsb3BtZW50XCJdIG9yIFtjb25maWcub3B0aW1pemF0aW9uLm5hbWVkTW9kdWxlczogdHJ1ZV0pXG5cdGlmIChhbGxNb2R1bGVzVGV4dC5tYXRjaChyZXF1aXJlc1dpdGhQYXRoc1JlZ2V4KSkge1xuXHRcdGZvciAobGV0IG1hdGNoOyBtYXRjaCA9IHJlcXVpcmVzV2l0aFBhdGhzUmVnZXguZXhlYyhhbGxNb2R1bGVzVGV4dCk7KSB7XG5cdFx0XHRsZXQgW18sIHBhdGhdID0gbWF0Y2g7XG5cdFx0XHRBZGRNb2R1bGVFbnRyeShwYXRoLCBHZXRNb2R1bGVOYW1lRnJvbVBhdGgocGF0aCkpO1xuXHRcdH1cblx0fVxuXHQvLyBlbHNlLCBpbmZlciBpdCBmcm9tIHRoZSB2YXItbmFtZXMgb2YgdGhlIGltcG9ydHNcblx0aWYgKCFhbGxNb2R1bGVzVGV4dC5tYXRjaChyZXF1aXJlc1dpdGhQYXRoc1JlZ2V4KSAmJiAhYWxsTW9kdWxlc1RleHQubWF0Y2gocmVxdWlyZXNXaXRoUGF0aENvbW1lbnRzUmVnZXgpKSB7XG5cdFx0Ly8gdGhlc2UgYXJlIGV4YW1wbGVzIG9mIGJlZm9yZSBhbmQgYWZ0ZXIgd2VicGFjaydzIHRyYW5zZm9ybWF0aW9uOiAod2hpY2ggdGhlIHJlZ2V4IGJlbG93IGZpbmRzIHRoZSB2YXItbmFtZSBvZilcblx0XHQvLyBcdFx0cmVxdWlyZShcInJlYWN0LXJlZHV4LWZpcmViYXNlXCIpID0+IHZhciBfcmVhY3RSZWR1eEZpcmViYXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDApO1xuXHRcdC8vIFx0XHRyZXF1aXJlKFwiLi9Tb3VyY2UvTXlDb21wb25lbnRcIikgPT4gdmFyIF9NeUNvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjAwKTtcblx0XHRsZXQgcmVnZXggPSAvdmFyIChbYS16QS1aX10rKSA9IF9fd2VicGFja19yZXF1aXJlX19cXCgoWzAtOV0rKVxcKS9nO1xuXHRcdGZvciAobGV0IG1hdGNoOyBtYXRjaCA9IHJlZ2V4LmV4ZWMoYWxsTW9kdWxlc1RleHQpOykge1xuXHRcdFx0bGV0IFtfLCB2YXJOYW1lLCBpZFN0cl0gPSBtYXRjaDtcblx0XHRcdEFkZE1vZHVsZUVudHJ5KHBhcnNlSW50KGlkU3RyKSwgR2V0TW9kdWxlTmFtZUZyb21WYXJOYW1lKHZhck5hbWUpKTtcblx0XHR9XG5cdH1cblxuXHRNYWtlR2xvYmFsKHthbGxNb2R1bGVzVGV4dCwgbW9kdWxlSURzLCBtb2R1bGVOYW1lc30pO1xufVxuXG5jb25zdCBtb2R1bGVDYWNoZSA6IHtba2V5OiBzdHJpbmddOiBhbnl9ID0ge1xufTtcblxuZnVuY3Rpb24gQWRkTW9kdWxlRW50cnkobW9kdWxlSUQ6IHN0cmluZyB8IG51bWJlciwgbW9kdWxlTmFtZTogc3RyaW5nKSB7XG5cdG1vZHVsZUlEc1ttb2R1bGVOYW1lXSA9IG1vZHVsZUlEO1xuXHRtb2R1bGVOYW1lc1ttb2R1bGVJRF0gPSBtb2R1bGVOYW1lO1xuXG5cdC8vIHJlcGxhY2UgY2VydGFpbiBjaGFyYWN0ZXJzIHdpdGggdW5kZXJzY29yZXMsIHNvIHRoZSBtb2R1bGUtZW50cmllcyBjYW4gc2hvdyBpbiBjb25zb2xlIGF1dG8tY29tcGxldGVcblx0bGV0IG1vZHVsZU5hbWVfc2ltcGxlID0gbW9kdWxlTmFtZS5yZXBsYWNlKC8tL2csIFwiX1wiKTtcblx0Ly8gbWFrZSBzdXJlIHdlIGFkZCB0aGUgbW9kdWxlIHVuZGVyIGEgdW5pcXVlIG5hbWVcblx0d2hpbGUgKG1vZHVsZU5hbWVfc2ltcGxlIGluIG1vZHVsZUNhY2hlKSBtb2R1bGVOYW1lX3NpbXBsZSArPSBgX2A7XG5cdC8vIGFkZCB0aGUgbW9kdWxlIG9udG8gdGhlIFJlcXVpcmUgZnVuY3Rpb25cblx0bW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV9zaW1wbGVdID0gR2V0TW9kdWxlRXhwb3J0cyhtb2R1bGVJRCk7XG59XG5mdW5jdGlvbiBHZXRNb2R1bGVFeHBvcnRzKG1vZHVsZUlEOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0cmV0dXJuIGcud2VicGFja0RhdGEuY1ttb2R1bGVJRF0gPyBnLndlYnBhY2tEYXRhLmNbbW9kdWxlSURdLmV4cG9ydHMgOiBcIltmYWlsZWQgdG8gcmV0cmlldmUgbW9kdWxlIGV4cG9ydHNdXCI7XG59XG5cbk1ha2VHbG9iYWwoe0dldElERm9yTW9kdWxlfSk7XG5leHBvcnQgZnVuY3Rpb24gR2V0SURGb3JNb2R1bGUobmFtZTogc3RyaW5nKSB7XG5cdFBhcnNlTW9kdWxlRGF0YSgpO1xuXHRyZXR1cm4gbW9kdWxlSURzW25hbWVdO1xufVxuXG5NYWtlR2xvYmFsKHtSZXF1aXJlfSk7XG5leHBvcnQgZnVuY3Rpb24gUmVxdWlyZShuYW1lOiBzdHJpbmcpIHtcblx0aWYgKG5hbWUgPT09IHVuZGVmaW5lZClcblx0XHRyZXR1cm4gdm9pZCBQYXJzZU1vZHVsZURhdGEoKTtcblxuXHRsZXQgaWQgPSBHZXRJREZvck1vZHVsZShuYW1lKTtcblx0aWYgKGlkID09IG51bGwpIHJldHVybiBcIltjb3VsZCBub3QgZmluZCB0aGUgZ2l2ZW4gbW9kdWxlXVwiO1xuXHRyZXR1cm4gR2V0TW9kdWxlRXhwb3J0cyhpZCk7XG59Il19
exports.Require = Require;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.GetModuleNameFromPath = GetModuleNameFromPath;
exports.GetModuleNameFromVarName = GetModuleNameFromVarName;
Object.defineProperty(exports, "__esModule", { value: true });
function GetModuleNameFromPath(path) {
var parts = path.split("/"); // last part might be empty, so find last part with content (path might end with /, if it's a folder-require -- which resolves to folder/index)
var lastPartWithContent = parts[parts.length - 1] || parts[parts.length - 2];
return lastPartWithContent.replace(/\.[^.]+/, ""); // remove extension
let parts = path.split("/");
// last part might be empty, so find last part with content (path might end with /, if it's a folder-require -- which resolves to folder/index)
let lastPartWithContent = parts[parts.length - 1] || parts[parts.length - 2];
return lastPartWithContent.replace(/\.[^.]+/, ""); // remove extension
}
exports.GetModuleNameFromPath = GetModuleNameFromPath;
function GetModuleNameFromVarName(varName) {
// these are examples of before and after the below transformation code:
// _reactReduxFirebase => react-redux-firebase
// _MyComponent => my-component
// _MyComponent_New => my-component-new
// _JSONHelper => json-helper
var moduleName = varName.replace(/^_/g, "") // remove starting "_"
.replace(new RegExp( // convert chars where:
"([^_])" // is preceded by a non-underscore char
+ "[A-Z]" // is a capital-letter
+ "([^A-Z_])", // is followed by a non-capital-letter, non-underscore char
"g"), function (str) {
return str[0] + "-" + str[1] + str[2];
} // to: "-" + char
).replace(/_/g, "-") // convert all "_" to "-"
.toLowerCase(); // convert all letters to lowercase
return moduleName;
// these are examples of before and after the below transformation code:
// _reactReduxFirebase => react-redux-firebase
// _MyComponent => my-component
// _MyComponent_New => my-component-new
// _JSONHelper => json-helper
let moduleName = varName
.replace(/^_/g, "") // remove starting "_"
.replace(new RegExp(// convert chars where:
"([^_])" // is preceded by a non-underscore char
+ "[A-Z]" // is a capital-letter
+ "([^A-Z_])", // is followed by a non-capital-letter, non-underscore char
"g"), str => str[0] + "-" + str[1] + str[2] // to: "-" + char
)
.replace(/_/g, "-") // convert all "_" to "-"
.toLowerCase(); // convert all letters to lowercase
return moduleName;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9VdGlscy50cyJdLCJuYW1lcyI6WyJHZXRNb2R1bGVOYW1lRnJvbVBhdGgiLCJwYXRoIiwicGFydHMiLCJzcGxpdCIsImxhc3RQYXJ0V2l0aENvbnRlbnQiLCJsZW5ndGgiLCJyZXBsYWNlIiwiR2V0TW9kdWxlTmFtZUZyb21WYXJOYW1lIiwidmFyTmFtZSIsIm1vZHVsZU5hbWUiLCJSZWdFeHAiLCJzdHIiLCJ0b0xvd2VyQ2FzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBTyxTQUFTQSxxQkFBVCxDQUErQkMsSUFBL0IsRUFBNkM7QUFDbkQsTUFBSUMsS0FBSyxHQUFHRCxJQUFJLENBQUNFLEtBQUwsQ0FBVyxHQUFYLENBQVosQ0FEbUQsQ0FFbkQ7O0FBQ0EsTUFBSUMsbUJBQW1CLEdBQUdGLEtBQUssQ0FBQ0EsS0FBSyxDQUFDRyxNQUFOLEdBQWUsQ0FBaEIsQ0FBTCxJQUEyQkgsS0FBSyxDQUFDQSxLQUFLLENBQUNHLE1BQU4sR0FBZSxDQUFoQixDQUExRDtBQUNBLFNBQU9ELG1CQUFtQixDQUFDRSxPQUFwQixDQUE0QixTQUE1QixFQUF1QyxFQUF2QyxDQUFQLENBSm1ELENBSUE7QUFDbkQ7O0FBQ00sU0FBU0Msd0JBQVQsQ0FBa0NDLE9BQWxDLEVBQW1EO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFJQyxVQUFVLEdBQUdELE9BQU8sQ0FDdEJGLE9BRGUsQ0FDUCxLQURPLEVBQ0EsRUFEQSxFQUNJO0FBREosR0FFZkEsT0FGZSxDQUVQLElBQUlJLE1BQUosRUFBWTtBQUNsQixXQUFVO0FBQVYsSUFDQyxPQURELENBQ1U7QUFEVixJQUVDLFdBSEssRUFHUTtBQUNoQixLQUpRLENBRk8sRUFPZixVQUFBQyxHQUFHO0FBQUEsV0FBRUEsR0FBRyxDQUFDLENBQUQsQ0FBSCxHQUFTLEdBQVQsR0FBZUEsR0FBRyxDQUFDLENBQUQsQ0FBbEIsR0FBd0JBLEdBQUcsQ0FBQyxDQUFELENBQTdCO0FBQUEsR0FQWSxDQU9xQjtBQVByQixJQVNmTCxPQVRlLENBU1AsSUFUTyxFQVNELEdBVEMsRUFTSTtBQVRKLEdBVWZNLFdBVmUsRUFBakIsQ0FOeUQsQ0FnQnhDOztBQUNqQixTQUFPSCxVQUFQO0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gR2V0TW9kdWxlTmFtZUZyb21QYXRoKHBhdGg6IHN0cmluZykge1xuXHRsZXQgcGFydHMgPSBwYXRoLnNwbGl0KFwiL1wiKTtcblx0Ly8gbGFzdCBwYXJ0IG1pZ2h0IGJlIGVtcHR5LCBzbyBmaW5kIGxhc3QgcGFydCB3aXRoIGNvbnRlbnQgKHBhdGggbWlnaHQgZW5kIHdpdGggLywgaWYgaXQncyBhIGZvbGRlci1yZXF1aXJlIC0tIHdoaWNoIHJlc29sdmVzIHRvIGZvbGRlci9pbmRleClcblx0bGV0IGxhc3RQYXJ0V2l0aENvbnRlbnQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSB8fCBwYXJ0c1twYXJ0cy5sZW5ndGggLSAyXTtcblx0cmV0dXJuIGxhc3RQYXJ0V2l0aENvbnRlbnQucmVwbGFjZSgvXFwuW14uXSsvLCBcIlwiKTsgLy8gcmVtb3ZlIGV4dGVuc2lvblxufVxuZXhwb3J0IGZ1bmN0aW9uIEdldE1vZHVsZU5hbWVGcm9tVmFyTmFtZSh2YXJOYW1lOiBzdHJpbmcpIHtcblx0Ly8gdGhlc2UgYXJlIGV4YW1wbGVzIG9mIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGJlbG93IHRyYW5zZm9ybWF0aW9uIGNvZGU6XG5cdC8vIFx0XHRfcmVhY3RSZWR1eEZpcmViYXNlID0+IHJlYWN0LXJlZHV4LWZpcmViYXNlXG5cdC8vIFx0XHRfTXlDb21wb25lbnQgPT4gbXktY29tcG9uZW50XG5cdC8vIFx0XHRfTXlDb21wb25lbnRfTmV3ID0+IG15LWNvbXBvbmVudC1uZXdcblx0Ly8gXHRcdF9KU09OSGVscGVyID0+IGpzb24taGVscGVyXG5cdGxldCBtb2R1bGVOYW1lID0gdmFyTmFtZVxuXHRcdC5yZXBsYWNlKC9eXy9nLCBcIlwiKSAvLyByZW1vdmUgc3RhcnRpbmcgXCJfXCJcblx0XHQucmVwbGFjZShuZXcgUmVnRXhwKCAvLyBjb252ZXJ0IGNoYXJzIHdoZXJlOlxuXHRcdFx0XHRcdFwiKFteX10pXCJcdFx0Ly8gaXMgcHJlY2VkZWQgYnkgYSBub24tdW5kZXJzY29yZSBjaGFyXG5cdFx0XHRcdCsgXCJbQS1aXVwiXHRcdC8vIGlzIGEgY2FwaXRhbC1sZXR0ZXJcblx0XHRcdFx0KyBcIihbXkEtWl9dKVwiLFx0Ly8gaXMgZm9sbG93ZWQgYnkgYSBub24tY2FwaXRhbC1sZXR0ZXIsIG5vbi11bmRlcnNjb3JlIGNoYXJcblx0XHRcdFwiZ1wiKSxcblx0XHRcdHN0cj0+c3RyWzBdICsgXCItXCIgKyBzdHJbMV0gKyBzdHJbMl0gLy8gdG86IFwiLVwiICsgY2hhclxuXHRcdClcblx0XHQucmVwbGFjZSgvXy9nLCBcIi1cIikgLy8gY29udmVydCBhbGwgXCJfXCIgdG8gXCItXCJcblx0XHQudG9Mb3dlckNhc2UoKTsgLy8gY29udmVydCBhbGwgbGV0dGVycyB0byBsb3dlcmNhc2Vcblx0cmV0dXJuIG1vZHVsZU5hbWU7XG59Il19
exports.GetModuleNameFromVarName = GetModuleNameFromVarName;
{
"name": "webpack-dynamic-require",
"version": "2.0.0",
"version": "2.0.1",
"description": "you can require cdn bundle dynamic",

@@ -5,0 +5,0 @@ "main": "lib/Dynamic.js",

@@ -118,4 +118,4 @@ import Scriptjs from 'scriptjs';

function loadComponentCss(baseUrl: string, styleId: string, needComboCssChunk: string[], cssPrefix: string) {
const componentCss = `${cssPrefix}index.css`;
function loadComponentCss(baseUrl: string, mainFile: string, styleId: string, needComboCssChunk: string[], cssPrefix: string) {
const componentCss = `${cssPrefix}${mainFile}.css`;
const comboCssChunks = needComboCssChunk.map(chunkName => `${cssPrefix}deps/${chunkName}.css`);

@@ -140,5 +140,6 @@ comboCssChunks.unshift(componentCss);

cssPrefix?: string;
mainFile: string;
uninstall: () => void;
constructor({ baseUrl, hashed, jsPrefix, cssPrefix }: { baseUrl: string, hashed?: boolean, jsPrefix?: string, cssPrefix?: string }) {
constructor({ baseUrl, hashed, jsPrefix, cssPrefix, mainFile }: { baseUrl: string, hashed?: boolean, jsPrefix?: string, cssPrefix?: string, mainFile?: string }) {
if (!baseUrl) {

@@ -163,2 +164,3 @@ throw new Error('DynamicRequire baseUrl paramters must setted');

this.cssPrefix = cssPrefix;
this.mainFile = mainFile || 'index';
this.uninstall = unInstallFn;

@@ -174,3 +176,3 @@ }

require(name: string) {
const { baseUrl, jsonpUrl, hashed, jsPrefix = '', cssPrefix = '', styleId } = this;
const { baseUrl, jsonpUrl, hashed, jsPrefix = '', cssPrefix = '', mainFile, styleId } = this;
const jsonpCallback = camelCase(name.replace(/@/g, '$')).replace(/\//g, '_');

@@ -184,3 +186,3 @@

let entryModuleName = `${name}/${entry}`;
const componentChunks = `${jsPrefix}vendor.js,${jsPrefix}index.js`;
const componentChunks = `${jsPrefix}vendor.js,${jsPrefix}${mainFile}.js`;
const needComboCssChunk: string[] = [];

@@ -211,3 +213,3 @@ const needComboChunk: string[] = [];

if (!csse) {
return loadComponentCss(baseUrl, styleId, needComboCssChunk, cssPrefix).then(() => {
return loadComponentCss(baseUrl, mainFile, styleId, needComboCssChunk, cssPrefix).then(() => {
return module.a || module;

@@ -222,3 +224,3 @@ });

// 加载css
const ssPromise = loadComponentCss(baseUrl, styleId, needComboCssChunk, cssPrefix);
const ssPromise = loadComponentCss(baseUrl, mainFile, styleId, needComboCssChunk, cssPrefix);
// 并行加载js

@@ -225,0 +227,0 @@ let jsPromise;

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc