This commit is contained in:
velzie 2024-07-16 13:20:57 -04:00
commit cbf932b817
No known key found for this signature in database
GPG key ID: 048413F95F0DDE1F
7 changed files with 40 additions and 19 deletions

View file

@ -10,6 +10,7 @@
},
"scripts": {
"build": "rspack build",
"rewriter:build": "cd rewriter && sh build.sh && cd ..",
"dev": "node server.js",
"prepublish": "pnpm build",
"pub": "pnpm publish --no-git-checks --access public",

14
rewriter/build.ps1 Normal file
View file

@ -0,0 +1,14 @@
set RUSTFLAGS="-C target-feature=+atomics,+bulk-memory,+simd128"
cargo build --lib --target wasm32-unknown-unknown -Z build-std=panic_abort,std --release
wasm-bindgen --weak-refs --target web --out-dir out/ target/wasm32-unknown-unknown/release/rewriter.wasm
cd ..
$WASM = "rewriter/out/rewriter_bg.wasm"
Measure-Command -Expression { wasm-opt -Oz --vacuum --dce --enable-threads --enable-bulk-memory --enable-simd "$WASM" -o rewriter/out/optimized.wasm }
Write-Output -n "self.WASM = '" > static/wasm.js
[System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes("rewriter/out/optimized.wasm")) >> static/wasm.js
Write-Output -n "';" >> static/wasm.js
Write-Output "Rewriter Build Complete!"

View file

@ -12,3 +12,4 @@ time wasm-opt -Oz --vacuum --dce --enable-threads --enable-bulk-memory --enable-
echo -n "self.WASM = '" > static/wasm.js
base64 -w0 < "rewriter/out/optimized.wasm" >> static/wasm.js
echo -n "';">> static/wasm.js
echo "Rewriter Build Complete!"

View file

@ -8,9 +8,11 @@ export const windowProxy = new Proxy(window, {
return locationProxy;
} else if (
propIsString &&
["window", "top", "parent", "self", "globalThis"].includes(prop)
["window", "top", "self", "globalThis"].includes(prop)
) {
return windowProxy;
} else if (propIsString && prop == "parent") {
return window.parent
} else if (propIsString && prop === "$scramjet") {
return;
} else if (propIsString && prop === "addEventListener") {

View file

@ -23,7 +23,8 @@ initSync(new WebAssembly.Module(
Uint8Array.from(atob(self.WASM), c => c.charCodeAt(0))
))
export function rewriteJs(js: string | ArrayBuffer) {
global.rws = rewriteJs;
export function rewriteJs(js: string | ArrayBuffer, origin?: URL) {
let rewrites;
let before = performance.now();
@ -36,22 +37,23 @@ export function rewriteJs(js: string | ArrayBuffer) {
let after = performance.now();
console.log("Rewrite took", Math.floor((after - before) * 10) / 10, "ms");
let offset = 0;
for (const rewrite of rewrites) {
if (rewrite.genericchange) {
let change = rewrite.genericchange;
let start = change.span.start + offset;
let end = change.span.end + offset;
let len = end - start;
js = js.slice(0, start) + change.text + js.slice(end);
offset += change.text.length - len;
}
}
//
// let offset = 0;
//
// for (const rewrite of rewrites) {
// if (rewrite.genericchange) {
// let change = rewrite.genericchange;
// let start = change.span.start + offset;
// let end = change.span.end + offset;
// let len = end - start;
//
// js = js.slice(0, start) + change.text + js.slice(end);
//
// offset += change.text.length - len;
// }
// }
// console.log(js)
//
return js;
// console.log(f)

View file

@ -10,3 +10,4 @@ export function rewriteWorkers(js: string, origin?: URL) {
return str;
}

View file

@ -47,7 +47,7 @@ function App() {
}
iframe {
border: 4px solid #313131;
background-color: #121212;
background-color: #fff;
border-radius: 1rem;
margin: 2em;
margin-top: 0.5em;