89 lines
2.8 KiB
JavaScript
89 lines
2.8 KiB
JavaScript
|
|
let wasm;
|
|
|
|
let cachegetInt32Memory = null;
|
|
function getInt32Memory() {
|
|
if (cachegetInt32Memory === null || cachegetInt32Memory.buffer !== wasm.memory.buffer) {
|
|
cachegetInt32Memory = new Int32Array(wasm.memory.buffer);
|
|
}
|
|
return cachegetInt32Memory;
|
|
}
|
|
|
|
let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
|
|
|
|
cachedTextDecoder.decode();
|
|
|
|
let cachegetUint8Memory = null;
|
|
function getUint8Memory() {
|
|
if (cachegetUint8Memory === null || cachegetUint8Memory.buffer !== wasm.memory.buffer) {
|
|
cachegetUint8Memory = new Uint8Array(wasm.memory.buffer);
|
|
}
|
|
return cachegetUint8Memory;
|
|
}
|
|
|
|
function getStringFromWasm(ptr, len) {
|
|
return cachedTextDecoder.decode(getUint8Memory().subarray(ptr, ptr + len));
|
|
}
|
|
/**
|
|
* @returns {string}
|
|
*/
|
|
export function flag() {
|
|
const retptr = 8;
|
|
const ret = wasm.flag(retptr);
|
|
const memi32 = getInt32Memory();
|
|
const v0 = getStringFromWasm(memi32[retptr / 4 + 0], memi32[retptr / 4 + 1]).slice();
|
|
wasm.__wbindgen_free(memi32[retptr / 4 + 0], memi32[retptr / 4 + 1] * 1);
|
|
return v0;
|
|
}
|
|
|
|
function init(module) {
|
|
if (typeof module === 'undefined') {
|
|
module = import.meta.url.replace(/\.js$/, '_bg.wasm');
|
|
}
|
|
let result;
|
|
const imports = {};
|
|
|
|
if ((typeof URL === 'function' && module instanceof URL) || typeof module === 'string' || (typeof Request === 'function' && module instanceof Request)) {
|
|
|
|
const response = fetch(module);
|
|
if (typeof WebAssembly.instantiateStreaming === 'function') {
|
|
result = WebAssembly.instantiateStreaming(response, imports)
|
|
.catch(e => {
|
|
return response
|
|
.then(r => {
|
|
if (r.headers.get('Content-Type') != 'application/wasm') {
|
|
console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
|
|
return r.arrayBuffer();
|
|
} else {
|
|
throw e;
|
|
}
|
|
})
|
|
.then(bytes => WebAssembly.instantiate(bytes, imports));
|
|
});
|
|
} else {
|
|
result = response
|
|
.then(r => r.arrayBuffer())
|
|
.then(bytes => WebAssembly.instantiate(bytes, imports));
|
|
}
|
|
} else {
|
|
|
|
result = WebAssembly.instantiate(module, imports)
|
|
.then(result => {
|
|
if (result instanceof WebAssembly.Instance) {
|
|
return { instance: result, module };
|
|
} else {
|
|
return result;
|
|
}
|
|
});
|
|
}
|
|
return result.then(({instance, module}) => {
|
|
wasm = instance.exports;
|
|
init.__wbindgen_wasm_module = module;
|
|
|
|
return wasm;
|
|
});
|
|
}
|
|
|
|
export default init;
|
|
|