mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-13 06:20:02 -04:00
new js rewriter
This commit is contained in:
parent
d4abce1457
commit
3e54301a30
1 changed files with 29 additions and 3 deletions
|
@ -23,10 +23,36 @@ 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) {
|
export function rewriteJs(js: string | ArrayBuffer) {
|
||||||
const f = rewrite_js(js);
|
let rewrites;
|
||||||
|
|
||||||
return f
|
let before = performance.now();
|
||||||
|
if (typeof js === "string") {
|
||||||
|
rewrites = rewrite_js(js);
|
||||||
|
} else {
|
||||||
|
js = new TextDecoder().decode(js);
|
||||||
|
rewrites = rewrite_js(js);
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return js;
|
||||||
|
|
||||||
// console.log(f)
|
// console.log(f)
|
||||||
//
|
//
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue