@@ -68,7 +68,7 @@ function registerFromBufferSource(
6868) : void {
6969 const url = getWasmSourceUrl ( source ) ;
7070 if ( url ) {
71- registerModule ( module , url ) ;
71+ registerSafely ( registerModule , module , url ) ;
7272 }
7373}
7474
@@ -82,34 +82,26 @@ function patchNonStreamingWebAssembly(registerModule: RegisterModuleCallback): v
8282
8383 nonStreamingPatched = true ;
8484
85- const origInstantiate = WebAssembly . instantiate ;
86- WebAssembly . instantiate = function instantiate (
87- source : BufferSource | WebAssembly . Module ,
88- importObject ?: WebAssembly . Imports ,
89- ) {
85+ // Double-cast, because the overloaded native signature (buffer vs. module
86+ // first argument) cannot be widened to a pass-through shape in one step.
87+ const origInstantiate = WebAssembly . instantiate as unknown as (
88+ source : unknown ,
89+ ...rest : unknown [ ]
90+ ) => Promise < WebAssembly . WebAssemblyInstantiatedSource > ;
91+ WebAssembly . instantiate = function instantiate ( source : BufferSource | WebAssembly . Module , ...rest : unknown [ ] ) {
9092 if ( source instanceof WebAssembly . Module ) {
91- return (
92- origInstantiate as (
93- moduleObject : WebAssembly . Module ,
94- importObject ?: WebAssembly . Imports ,
95- ) => Promise < WebAssembly . Instance >
96- ) ( source , importObject ) ;
93+ return origInstantiate ( source , ...rest ) ;
9794 }
9895
99- return (
100- origInstantiate as (
101- bytes : BufferSource ,
102- importObject ?: WebAssembly . Imports ,
103- ) => Promise < WebAssembly . WebAssemblyInstantiatedSource >
104- ) ( source , importObject ) . then ( result => {
96+ return origInstantiate ( source , ...rest ) . then ( result => {
10597 registerFromBufferSource ( registerModule , result . module , source ) ;
10698 return result ;
10799 } ) ;
108100 } as typeof WebAssembly . instantiate ;
109101
110- const origCompile = WebAssembly . compile ;
111- WebAssembly . compile = function compile ( source : BufferSource ) : Promise < WebAssembly . Module > {
112- return origCompile ( source ) . then ( module => {
102+ const origCompile = WebAssembly . compile as ( source : unknown , ... rest : unknown [ ] ) => Promise < WebAssembly . Module > ;
103+ WebAssembly . compile = function compile ( source : BufferSource , ... rest : unknown [ ] ) : Promise < WebAssembly . Module > {
104+ return origCompile ( source , ... rest ) . then ( module => {
113105 registerFromBufferSource ( registerModule , module , source ) ;
114106 return module ;
115107 } ) ;
0 commit comments