@gear-js/api
Version:
A JavaScript library that provides functionality to connect GEAR Component APIs.
28 lines (24 loc) • 1.1 kB
JavaScript
;
var util = require('@polkadot/util');
var importObj = require('./importObj.js');
function getGrReply(wasm, fn) {
const buffer = util.isHex(wasm) ? util.hexToU8a(wasm).buffer : util.isU8a(wasm) ? wasm.buffer : wasm;
const memory = new WebAssembly.Memory({ initial: 256 });
return new Promise((resolve, reject) => {
WebAssembly.instantiate(buffer, importObj.default(memory, false, undefined, undefined, undefined, (payload, len) => resolve(new Uint8Array(memory.buffer.slice(payload, payload + len)))))
// @ts-expect-error: Invalid typings here. instance is actually a prop of WebAssembly.Instance
.then(({ instance: { exports } }) => {
if (!(fn in exports)) {
reject(`${fn} function not found in exports`);
}
else if (typeof exports[fn] !== 'function') {
reject(`${fn} is not a function`);
}
else {
exports[fn]();
}
})
.catch((error) => reject(error));
});
}
exports.getGrReply = getGrReply;