Expose webpack modules to userscripts
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/473902/1240854/Webpack.js
function isNonEmptyObj(obj) {
if (obj === null || (typeof obj !== 'function') && (typeof obj !== 'object')) {
return false;
}
for (const prop in obj) {
return true;
}
return false;
}
// Based on `Webpack-module-crack` and `moduleRaid`
class webpack {
constructor(options) {
const { moduleId, chunkId, entryPoint } = options || {};
this.moduleId = moduleId || Math.random().toString(36).substring(2,6);
this.chunkId = chunkId || Math.floor(101 + Math.random() * 899);
this.modules = {};
this.data = [
[this.chunkId], {
[this.moduleId]: (module, exports, require) => {
const modules = require.m;
const deferredModule = require.s;
const installedModules = require.c;
for (const id in installedModules) {
const exports = installedModules[id].exports;
if (isNonEmptyObj(exports)) {
this.modules[id] = exports;
}
}
}
}, [[this.moduleId]]
];
if (entryPoint) {
this.inject(entryPoint);
} else {
this.inject("webpackJsonp");
}
}
inject(entryPoint) {
try {
if (unsafeWindow) {
unsafeWindow[entryPoint].push(this.data);
} else {
window[entryPoint].push(this.data);
}
} catch(err) {
console.log(`Injection failed: ${err}`);
}
}
}