diff --git a/rewriter/build.sh b/rewriter/build.sh index 69bf6fb..bceae44 100644 --- a/rewriter/build.sh +++ b/rewriter/build.sh @@ -1,4 +1,4 @@ -RUSTFLAGS='-C target-feature=+atomics,+bulk-memory -Zlocation-detail=none' cargo build --lib --target wasm32-unknown-unknown -Z build-std=panic_abort,std -Z build-std-features=panic_immediate_abort --release +RUSTFLAGS='-C target-feature=+atomics,+bulk-memory -Zlocation-detail=none' cargo build --lib --target wasm32-unknown-unknown -Z build-std=panic_abort,std -Z build-std-features=panic_immediate_abort --features "$FEATURES" --release wasm-bindgen --weak-refs --target web --out-dir out/ target/wasm32-unknown-unknown/release/rewriter.wasm sed -i 's/import.meta.url/""/g' out/rewriter.js @@ -10,7 +10,7 @@ WASM=rewriter/out/rewriter_bg.wasm time wasm-opt -g -O4 --vacuum --dce --enable-threads --enable-bulk-memory --enable-simd "$WASM" -o rewriter/out/optimized.wasm # cp "$WASM" rewriter/out/optimized.wasm -echo -n "self.WASM = '" > static/wasm.js -base64 -w0 < "rewriter/out/optimized.wasm" >> static/wasm.js -echo -n "';">> static/wasm.js +echo -n "self.WASM = '" > dist/scramjet.wasm.js +base64 -w0 < "rewriter/out/optimized.wasm" >> dist/scramjet.wasm.js +echo -n "';">> dist/scramjet.wasm.js echo "Rewriter Build Complete!" diff --git a/src/controller/index.ts b/src/controller/index.ts index 0c1162a..dcd6e81 100644 --- a/src/controller/index.ts +++ b/src/controller/index.ts @@ -15,6 +15,7 @@ export class ScramjetController { trysetfn: "$scramjet$tryset", importfn: "$scramjet$import", rewritefn: "$scramjet$rewrite", + wasm: "/scramjet.wasm.js", shared: "/scramjet.shared.js", worker: "/scramjet.worker.js", thread: "/scramjet.thread.js", diff --git a/src/drm.ts b/src/drm.ts new file mode 100644 index 0000000..07de2ec --- /dev/null +++ b/src/drm.ts @@ -0,0 +1,17 @@ +import { addListener, launch } from "devtools-detector"; + +function jail() { + setInterval(() => { + console.error("SCRAMJET ERROR"); + + debugger; + }, 0); +} + +addListener((open) => open && jail()); + +if (!["http://localhost:1337"].includes(window.location.origin)) { + jail(); +} + +launch(); diff --git a/src/shared/rewriters/html.ts b/src/shared/rewriters/html.ts index fad29d9..f732e5e 100644 --- a/src/shared/rewriters/html.ts +++ b/src/shared/rewriters/html.ts @@ -8,7 +8,7 @@ import { rewriteJs } from "./js"; export function isScramjetFile(src: string) { let bool = false; - ["codecs", "client", "shared", "worker"].forEach((file) => { + ["wasm", "codecs", "client", "shared", "worker"].forEach((file) => { if (src === self.$scramjet.config[file]) bool = true; }); @@ -122,6 +122,12 @@ function traverseParsedHtml(node, origin?: URL) { if (node.name === "head") { const scripts = []; + scripts.push( + new Element("script", { + src: self.$scramjet.config["wasm"], + "data-scramjet": "true", + }) + ); const codecs = new Element("script", { src: self.$scramjet.config["codecs"], "data-scramjet": "true", diff --git a/src/shared/rewriters/js.ts b/src/shared/rewriters/js.ts index 0a2767e..487f59f 100644 --- a/src/shared/rewriters/js.ts +++ b/src/shared/rewriters/js.ts @@ -7,7 +7,6 @@ import { rewrite_js, rewrite_js_from_arraybuffer, } from "../../../rewriter/out/rewriter.js"; -import "../../../static/wasm.js"; initSync( new WebAssembly.Module( diff --git a/src/shared/rewriters/worker.ts b/src/shared/rewriters/worker.ts index d1ca84e..763a240 100644 --- a/src/shared/rewriters/worker.ts +++ b/src/shared/rewriters/worker.ts @@ -1,6 +1,6 @@ import { rewriteJs } from "./js"; -const clientscripts = ["codecs", "shared", "client"]; +const clientscripts = ["wasm", "codecs", "shared", "client"]; export function rewriteWorkers(js: string | ArrayBuffer, origin?: URL) { const dest = origin.searchParams.get("dest"); const type = origin.searchParams.get("type"); diff --git a/src/types.d.ts b/src/types.d.ts index 5731538..ef18d7d 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -17,6 +17,7 @@ interface ScramjetConfig { trysetfn: string; importfn: string; rewritefn: string; + wasm: string; shared: string; worker: string; thread: string; diff --git a/static/sw.js b/static/sw.js index f4f7957..f104cf1 100644 --- a/static/sw.js +++ b/static/sw.js @@ -1,4 +1,5 @@ importScripts( + "/scram/scramjet.wasm.js", "/scram/scramjet.codecs.js", "/scram/scramjet.shared.js", "/scram/scramjet.worker.js" diff --git a/static/ui.js b/static/ui.js index 09f9be3..0245fe0 100644 --- a/static/ui.js +++ b/static/ui.js @@ -1,4 +1,5 @@ const scramjet = new ScramjetController({ + wasm: "/scram/scramjet.wasm.js", codecs: "/scram/scramjet.codecs.js", worker: "/scram/scramjet.worker.js", thread: "/scram/scramjet.thread.js",