diff --git a/package.json b/package.json index 5dd8aee..5cb5b8c 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/rewriter/build.ps1 b/rewriter/build.ps1 new file mode 100644 index 0000000..7a55402 --- /dev/null +++ b/rewriter/build.ps1 @@ -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!" \ No newline at end of file diff --git a/rewriter/build.sh b/rewriter/build.sh index fa73136..d10d6b5 100644 --- a/rewriter/build.sh +++ b/rewriter/build.sh @@ -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!" \ No newline at end of file diff --git a/src/client/window.ts b/src/client/window.ts index 6c35e3a..e29dd68 100644 --- a/src/client/window.ts +++ b/src/client/window.ts @@ -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") { diff --git a/src/shared/rewriters/js.ts b/src/shared/rewriters/js.ts index dcd58fa..2414470 100644 --- a/src/shared/rewriters/js.ts +++ b/src/shared/rewriters/js.ts @@ -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) diff --git a/src/shared/rewriters/worker.ts b/src/shared/rewriters/worker.ts index 5408763..5e1d8dc 100644 --- a/src/shared/rewriters/worker.ts +++ b/src/shared/rewriters/worker.ts @@ -10,3 +10,4 @@ export function rewriteWorkers(js: string, origin?: URL) { return str; } + diff --git a/static/ui.js b/static/ui.js index c5ff001..3db5da0 100644 --- a/static/ui.js +++ b/static/ui.js @@ -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;