lib/webassembly.js (73 lines of code) (raw):

/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow */ // https://github.com/WebAssembly/design/blob/master/JS.md // https://developer.mozilla.org/en-US/docs/WebAssembly // https://github.com/WebAssembly/design/blob/master/Web.md type BufferSource = $TypedArray | ArrayBuffer; type ImportExportKind = 'function' | 'table' | 'memory' | 'global'; type ImportObject = Object; type ResultObject = { module: WebAssembly$Module, instance: WebAssembly$Instance, ... }; // https://github.com/WebAssembly/design/blob/master/JS.md#exported-function-exotic-objects declare class ExportedFunctionExoticObject extends Function { (): mixed; } declare class WebAssembly$Module { constructor(bufferSource: BufferSource): void; static exports(moduleObject: WebAssembly$Module): Array<{ name: string, kind: ImportExportKind, ... }>; static imports(moduleObject: WebAssembly$Module): Array<{ name: string, name: string, kind: ImportExportKind, ... }>; static customSections(moduleObject: WebAssembly$Module, sectionName: string): Array<ArrayBuffer>; } declare class WebAssembly$Instance { constructor(moduleObject: WebAssembly$Module, importObject?: ImportObject): void; +exports: { [exportedFunction: string]: ExportedFunctionExoticObject, ... }; } type MemoryDescriptor = { initial: number, maximum?: number, ... }; declare class WebAssembly$Memory { constructor(memoryDescriptor: MemoryDescriptor): void; +buffer: ArrayBuffer; grow(delta: number): number; } type TableDescriptor = { element: 'anyfunc', initial: number, maximum?: number, ... }; declare class WebAssembly$Table { constructor(tableDescriptor: TableDescriptor): void; +length: number; grow(delta: number): number; get(index: number): ExportedFunctionExoticObject; set(index: number, value: ExportedFunctionExoticObject): void; } declare class WebAssembly$CompileError extends Error {} declare class WebAssembly$LinkError extends Error {} declare class WebAssembly$RuntimeError extends Error {} declare function WebAssembly$instantiate(bufferSource: BufferSource, importObject?: ImportObject): Promise<ResultObject>; declare function WebAssembly$instantiate(moduleObject: WebAssembly$Module, importObject?: ImportObject): Promise<WebAssembly$Instance>; declare var WebAssembly: { Module: typeof WebAssembly$Module, Instance: typeof WebAssembly$Instance, Memory: typeof WebAssembly$Memory, Table: typeof WebAssembly$Table, CompileError: typeof WebAssembly$CompileError, LinkError: typeof WebAssembly$LinkError, RuntimeError: typeof WebAssembly$RuntimeError, validate(bufferSource: BufferSource): boolean, compile(bufferSource: BufferSource): Promise<WebAssembly$Module>, instantiate: typeof WebAssembly$instantiate, // web embedding API compileStreaming(source: Response | Promise<Response>): Promise<WebAssembly$Module>, instantiateStreaming(source: Response | Promise<Response>, importObject?: ImportObject): Promise<ResultObject>, ... }