mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-13 06:20:02 -04:00
merge
This commit is contained in:
commit
cbf932b817
7 changed files with 40 additions and 19 deletions
|
@ -10,6 +10,7 @@
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "rspack build",
|
"build": "rspack build",
|
||||||
|
"rewriter:build": "cd rewriter && sh build.sh && cd ..",
|
||||||
"dev": "node server.js",
|
"dev": "node server.js",
|
||||||
"prepublish": "pnpm build",
|
"prepublish": "pnpm build",
|
||||||
"pub": "pnpm publish --no-git-checks --access public",
|
"pub": "pnpm publish --no-git-checks --access public",
|
||||||
|
|
14
rewriter/build.ps1
Normal file
14
rewriter/build.ps1
Normal 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!"
|
|
@ -12,3 +12,4 @@ time wasm-opt -Oz --vacuum --dce --enable-threads --enable-bulk-memory --enable-
|
||||||
echo -n "self.WASM = '" > static/wasm.js
|
echo -n "self.WASM = '" > static/wasm.js
|
||||||
base64 -w0 < "rewriter/out/optimized.wasm" >> static/wasm.js
|
base64 -w0 < "rewriter/out/optimized.wasm" >> static/wasm.js
|
||||||
echo -n "';">> static/wasm.js
|
echo -n "';">> static/wasm.js
|
||||||
|
echo "Rewriter Build Complete!"
|
|
@ -8,9 +8,11 @@ export const windowProxy = new Proxy(window, {
|
||||||
return locationProxy;
|
return locationProxy;
|
||||||
} else if (
|
} else if (
|
||||||
propIsString &&
|
propIsString &&
|
||||||
["window", "top", "parent", "self", "globalThis"].includes(prop)
|
["window", "top", "self", "globalThis"].includes(prop)
|
||||||
) {
|
) {
|
||||||
return windowProxy;
|
return windowProxy;
|
||||||
|
} else if (propIsString && prop == "parent") {
|
||||||
|
return window.parent
|
||||||
} else if (propIsString && prop === "$scramjet") {
|
} else if (propIsString && prop === "$scramjet") {
|
||||||
return;
|
return;
|
||||||
} else if (propIsString && prop === "addEventListener") {
|
} else if (propIsString && prop === "addEventListener") {
|
||||||
|
|
|
@ -23,7 +23,8 @@ initSync(new WebAssembly.Module(
|
||||||
Uint8Array.from(atob(self.WASM), c => c.charCodeAt(0))
|
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 rewrites;
|
||||||
|
|
||||||
let before = performance.now();
|
let before = performance.now();
|
||||||
|
@ -36,22 +37,23 @@ export function rewriteJs(js: string | ArrayBuffer) {
|
||||||
let after = performance.now();
|
let after = performance.now();
|
||||||
|
|
||||||
console.log("Rewrite took", Math.floor((after - before) * 10) / 10, "ms");
|
console.log("Rewrite took", Math.floor((after - before) * 10) / 10, "ms");
|
||||||
|
//
|
||||||
let offset = 0;
|
// let offset = 0;
|
||||||
|
//
|
||||||
for (const rewrite of rewrites) {
|
// for (const rewrite of rewrites) {
|
||||||
if (rewrite.genericchange) {
|
// if (rewrite.genericchange) {
|
||||||
let change = rewrite.genericchange;
|
// let change = rewrite.genericchange;
|
||||||
let start = change.span.start + offset;
|
// let start = change.span.start + offset;
|
||||||
let end = change.span.end + offset;
|
// let end = change.span.end + offset;
|
||||||
let len = end - start;
|
// let len = end - start;
|
||||||
|
//
|
||||||
js = js.slice(0, start) + change.text + js.slice(end);
|
// js = js.slice(0, start) + change.text + js.slice(end);
|
||||||
|
//
|
||||||
offset += change.text.length - len;
|
// offset += change.text.length - len;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
// console.log(js)
|
||||||
|
//
|
||||||
return js;
|
return js;
|
||||||
|
|
||||||
// console.log(f)
|
// console.log(f)
|
||||||
|
|
|
@ -10,3 +10,4 @@ export function rewriteWorkers(js: string, origin?: URL) {
|
||||||
|
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ function App() {
|
||||||
}
|
}
|
||||||
iframe {
|
iframe {
|
||||||
border: 4px solid #313131;
|
border: 4px solid #313131;
|
||||||
background-color: #121212;
|
background-color: #fff;
|
||||||
border-radius: 1rem;
|
border-radius: 1rem;
|
||||||
margin: 2em;
|
margin: 2em;
|
||||||
margin-top: 0.5em;
|
margin-top: 0.5em;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue