mirror of
https://github.com/eaglerforge/EaglerForgeInjector
synced 2025-07-23 06:01:38 -09:00
61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
// Babel plugin to transform functions and calls
|
|
const ASYNC_PLUGIN_1 = function ({ types: t }) {
|
|
return {
|
|
visitor: {
|
|
FunctionDeclaration(path) {
|
|
console.log(path);
|
|
path.node.async = true;
|
|
},
|
|
ArrowFunctionExpression(path) {
|
|
console.log(path);
|
|
path.node.async = true;
|
|
},
|
|
CallExpression(path) {
|
|
console.log(path);
|
|
if (path.parent.type !== 'AwaitExpression') {
|
|
path.replaceWith(
|
|
t.awaitExpression(path.node)
|
|
);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
};
|
|
async function shronk(input) {
|
|
let isHtml = true;
|
|
let inputHtml = input;
|
|
|
|
// Check if the input is raw JavaScript
|
|
if (!input.trim().startsWith('<')) {
|
|
isHtml = false;
|
|
inputHtml = `<script>${input}</script>`;
|
|
}
|
|
|
|
_status("[ASYNC_PLUGIN_1] Parsing html...");
|
|
await wait(50);
|
|
const parser = new DOMParser();
|
|
const doc = parser.parseFromString(inputHtml, 'text/html');
|
|
const scriptTags = doc.querySelectorAll('script');
|
|
|
|
for (let i = 0; i < scriptTags.length; i++) {
|
|
const scriptTag = scriptTags[i];
|
|
const code = scriptTag.textContent;
|
|
_status("[ASYNC_PLUGIN_1] Transpiling script #" + (i + 1) + " of length " + Math.round(code.length / 1000) + "k...");
|
|
await wait(50);
|
|
|
|
|
|
const output = Babel.transform(code, {
|
|
plugins: []
|
|
});
|
|
scriptTag.textContent = output.code;
|
|
}
|
|
|
|
_status("[ASYNC_PLUGIN_1] Job complete!");
|
|
await wait(50);
|
|
|
|
if (isHtml) {
|
|
return doc.documentElement.outerHTML;
|
|
} else {
|
|
return doc.querySelector('script').textContent;
|
|
}
|
|
} |