UNPKG

@gear-js/api

Version:

A JavaScript library that provides functionality to connect GEAR Component APIs.

37 lines (34 loc) 1.41 kB
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 };