PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const RuntimeGlobals = require("../RuntimeGlobals"); const RuntimeModule = require("../RuntimeModule"); const Template = require("../Template"); class AsyncWasmLoadingRuntimeModule extends RuntimeModule { constructor({ generateLoadBinaryCode, supportsStreaming }) { super("wasm loading", RuntimeModule.STAGE_NORMAL); this.generateLoadBinaryCode = generateLoadBinaryCode; this.supportsStreaming = supportsStreaming; } /** * @returns {string} runtime code */ generate() { const { compilation, chunk } = this; const { outputOptions, runtimeTemplate } = compilation; const fn = RuntimeGlobals.instantiateWasm; const wasmModuleSrcPath = compilation.getPath( JSON.stringify(outputOptions.webassemblyModuleFilename), { hash: `" + ${RuntimeGlobals.getFullHash}() + "`, hashWithLength: length => `" + ${RuntimeGlobals.getFullHash}}().slice(0, ${length}) + "`, module: { id: '" + wasmModuleId + "', hash: `" + wasmModuleHash + "`, hashWithLength(length) { return `" + wasmModuleHash.slice(0, ${length}) + "`; } }, runtime: chunk.runtime } ); return `${fn} = ${runtimeTemplate.basicFunction( "exports, wasmModuleId, wasmModuleHash, importsObj", [ `var req = ${this.generateLoadBinaryCode(wasmModuleSrcPath)};`, this.supportsStreaming ? Template.asString([ "if (typeof WebAssembly.instantiateStreaming === 'function') {", Template.indent([ "return WebAssembly.instantiateStreaming(req, importsObj)", Template.indent([ `.then(${runtimeTemplate.returningFunction( "Object.assign(exports, res.instance.exports)", "res" )});` ]) ]), "}" ]) : "// no support for streaming compilation", "return req", Template.indent([ `.then(${runtimeTemplate.returningFunction("x.arrayBuffer()", "x")})`, `.then(${runtimeTemplate.returningFunction( "WebAssembly.instantiate(bytes, importsObj)", "bytes" )})`, `.then(${runtimeTemplate.returningFunction( "Object.assign(exports, res.instance.exports)", "res" )});` ]) ] )};`; } } module.exports = AsyncWasmLoadingRuntimeModule;