@@ -2,6 +2,18 @@ import { flagEnabled, ScramjetContext } from "@/shared";
22import { rewriteJs } from "@rewriters/js" ;
33import { URLMeta } from "@rewriters/url" ;
44
5+ function base64Encode ( text : string ) {
6+ return btoa (
7+ new TextEncoder ( )
8+ . encode ( text )
9+ . reduce (
10+ ( data , byte ) => ( data . push ( String . fromCharCode ( byte ) ) , data ) ,
11+ [ ] as any
12+ )
13+ . join ( "" )
14+ ) ;
15+ }
16+
517export function rewriteWorkers (
618 context : ScramjetContext ,
719 js : string | Uint8Array ,
@@ -16,7 +28,10 @@ export function rewriteWorkers(
1628 }
1729 return `importScripts("${ script } ");\n` ;
1830 } ;
31+ const b64 = ( script : string ) =>
32+ `data:text/javascript;charset=utf-8;base64,${ base64Encode ( script ) } ` ;
1933 let str = context . interface . getWorkerInjectScripts ( meta , type , script ) ;
34+
2035 let rewritten = rewriteJs ( js , url , context , meta , module ) ;
2136 if ( rewritten instanceof Uint8Array ) {
2237 rewritten = new TextDecoder ( ) . decode ( rewritten ) ;
@@ -25,10 +40,9 @@ export function rewriteWorkers(
2540 if ( flagEnabled ( "encapsulateWorkers" , context , meta . origin ) ) {
2641 // TODO: check if there's already a sourceURL/sourcemap before appending another?
2742 rewritten += `//# sourceURL=${ url } ` ;
28- str += script ( `data:text/javascript;base64, ${ btoa ( rewritten ) } ` ) ;
43+ str += script ( b64 ( rewritten ) ) ;
2944 } else {
3045 str += rewritten ;
3146 }
32-
3347 return str ;
3448}
0 commit comments