microvium
Version:
A compact, embeddable scripting engine for microcontrollers for executing small scripts written in a subset of JavaScript.
47 lines (46 loc) • 1.8 kB
TypeScript
/// <reference types="node" />
import { mvm_TeError, mvm_TeType, vm_VMExportID, vm_HostFunctionID } from "./runtime-types";
import { MemoryStats } from "../lib";
export declare enum CoverageCaseMode {
NORMAL = 1,
UNTESTED = 2,
UNIMPLEMENTED = 3,
TABLE = 4
}
export declare type HostFunction = (args: Value[]) => Value;
export declare type ResolveImport = (hostFunctionID: vm_HostFunctionID) => HostFunction;
export declare type CoverageCallback = (id: number, mode: CoverageCaseMode, indexInTable: number, tableSize: number, line: number) => void;
export declare const NativeVM: NativeVMClass;
export interface NativeVMClass {
new (snapshotBytecode: Buffer, resolveImport: ResolveImport): NativeVM;
setCoverageCallback(callback: CoverageCallback | undefined): void;
readonly MVM_PORT_INT32_OVERFLOW_CHECKS: boolean;
}
export interface NativeVM {
resolveExport(exportID: vm_VMExportID): Value;
call(func: Value, args: Value[]): Value;
uint8ArrayFromBytes(data: Buffer): Value;
typeOf(value: Value): mvm_TeType;
newBoolean(value: boolean): Value;
newNumber(value: number): Value;
newString(value: string): Value;
runGC(squeeze: boolean): void;
createSnapshot(): Buffer;
getMemoryStats(): MemoryStats;
asyncStart(): Value;
stopAfterNInstructions(n: number): void;
getInstructionCountRemaining(): number;
readonly undefined: Value;
}
export declare class VMError extends Error {
errorCode: mvm_TeError;
constructor(errorCode: mvm_TeError, message?: string | undefined);
}
export interface Value {
readonly raw: number;
readonly type: mvm_TeType;
toString(): string;
toNumber(): number;
toBoolean(): boolean;
uint8ArrayToBytes(): Buffer;
}