@gear-js/api
Version:
A JavaScript library that provides functionality to connect GEAR Component APIs.
37 lines (34 loc) • 1.41 kB
JavaScript
import { CreateType } from './create-type.js';
import { GearMetadata } from './metadata.js';
import importObj from '../wasm/importObj.js';
class StateMetadata extends GearMetadata {
functions;
constructor({ reg, functions }) {
super(reg);
this.functions = functions;
}
}
/**
* @deprecated - This functionality is deprecated and will be removed from both the API and the runtime. Use `api.message.calculateReply` instead.
*/
async function getStateMetadata(wasmBytes) {
const memory = new WebAssembly.Memory({ initial: 17 });
let resolveMetadataPromise;
const metadata = new Promise((resolve) => {
resolveMetadataPromise = resolve;
});
const { instance } = (await WebAssembly.instantiate(wasmBytes, importObj(memory, undefined, undefined, undefined, undefined, (payload, len) => {
resolveMetadataPromise(new Uint8Array(memory.buffer.slice(payload, payload + len)));
})));
const { exports } = instance;
if (!exports?.metadata) {
throw new Error('Unable to find metadata function in exports of applied wasm');
}
if (typeof exports.metadata !== 'function') {
throw new Error('exports.metadata is not a function');
}
exports.metadata();
const meta = CreateType.create('StateMetadataRepr', await metadata);
return new StateMetadata(meta.toJSON());
}
export { StateMetadata, getStateMetadata };