diff --git a/src/shared/rewriters/js.ts b/src/shared/rewriters/js.ts index aa1eeb3..dcd58fa 100644 --- a/src/shared/rewriters/js.ts +++ b/src/shared/rewriters/js.ts @@ -23,10 +23,36 @@ initSync(new WebAssembly.Module( Uint8Array.from(atob(self.WASM), c => c.charCodeAt(0)) )) -export function rewriteJs(js: string) { - const f = rewrite_js(js); +export function rewriteJs(js: string | ArrayBuffer) { + 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) //