UNPKG

@bytecodealliance/jco

Version:

JavaScript tooling for working with WebAssembly Components

80 lines (79 loc) 2.27 kB
/** @module Interface local:wasm-tools/tools **/ export function parse(wat: string): Uint8Array; export function print(binary: Uint8Array): string; export function componentNew(binary: Uint8Array, adapters: Array<[string, Uint8Array]> | undefined): Uint8Array; export function componentWit(binary: Uint8Array): string; export function componentWitMetadataForWorld(wit: WitSpecifier, worldName: string | undefined): WitMetadata; export function componentEmbed(embedOpts: EmbedOpts): Uint8Array; export function metadataShow(binary: Uint8Array): Array<ModuleMetadata>; export function metadataAdd(binary: Uint8Array, metadata: ProducersFields): Uint8Array; /** * # Variants * * ## `"utf8"` * * ## `"utf16"` * * ## `"compact-utf16"` */ export type StringEncoding = 'utf8' | 'utf16' | 'compact-utf16'; export interface SemverVersion { major: bigint, minor: bigint, patch: bigint, pre?: string, build?: string, } export interface InterfaceMetadata { namespace: string, 'package': string, 'interface': string, version?: SemverVersion, } export interface WitMetadata { imports: Array<InterfaceMetadata>, exports: Array<InterfaceMetadata>, } export type WitSpecifier = WitSpecifierSource | WitSpecifierPath; export interface WitSpecifierSource { tag: 'source', val: string, } export interface WitSpecifierPath { tag: 'path', val: string, } export type ProducersFields = Array<[string, Array<[string, string]>]>; export type EnabledFeatureSet = EnabledFeatureSetList | EnabledFeatureSetAll; export interface EnabledFeatureSetList { tag: 'list', val: Array<string>, } export interface EnabledFeatureSetAll { tag: 'all', } export interface EmbedOpts { binary?: Uint8Array, witSource?: string, witPath?: string, stringEncoding?: StringEncoding, dummy?: boolean, world?: string, metadata?: ProducersFields, features?: EnabledFeatureSet, } export type ModuleMetaType = ModuleMetaTypeModule | ModuleMetaTypeComponent; export interface ModuleMetaTypeModule { tag: 'module', } export interface ModuleMetaTypeComponent { tag: 'component', val: number, } export interface ModuleMetadata { parentIndex?: number, name?: string, metaType: ModuleMetaType, range: [number, number], producers: ProducersFields, }