@bytecodealliance/jco
Version:
JavaScript tooling for working with WebAssembly Components
80 lines (79 loc) • 2.27 kB
TypeScript
/** @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,
}