/// declare module "types:assemblyscript/util/options" { /** * @fileoverview Command line options utility definitions. * @license Apache-2.0 */ /** A set of options. */ export interface OptionSet { [key: string]: number | string; } /** Command line option description. */ export interface OptionDescription { /** Textual description. */ description?: string | string[]; /** Data type. One of (b)oolean [default], (i)nteger, (f)loat or (s)tring. Uppercase means multiple values. */ type?: "b" | "i" | "f" | "s" | "I" | "F" | "S"; /** Substituted options, if any. */ value?: OptionSet; /** Short alias, if any. */ alias?: string; /** The default value, if any. */ default?: string | number | boolean | string[] | number[]; /** The category this option belongs in. */ category?: string; } /** Configuration object. */ export interface Config { [key: string]: OptionDescription; } /** Parsing result. */ export interface Result { /** Parsed options. */ options: OptionSet; /** Unknown options. */ unknown: string[]; /** Normal arguments. */ arguments: string[]; /** Trailing arguments. */ trailing: string[]; } /** Parses the specified command line arguments according to the given configuration. */ export function parse(argv: string[], config: Config, propagateDefaults?: boolean): Result; /** Help formatting options. */ export interface HelpOptions { /** Leading indent. Defaults to 2. */ indent?: number; /** Table padding. Defaults to 24. */ padding?: number; /** End of line character. Defaults to "\n". */ eol?: string; } /** Generates the help text for the specified configuration. */ export function help(config: Config, options?: HelpOptions): string; /** Merges two sets of options into one, preferring the current over the parent set. */ export function merge(config: Config, currentOptions: OptionSet, parentOptions: OptionSet, parentBaseDir: string): OptionSet; /** Normalizes a path. */ export function normalizePath(path: string): string; /** Resolves a single relative path. Keeps absolute paths, otherwise prepends baseDir. */ export function resolvePath(path: string, baseDir: string, useNodeResolution?: boolean): string; /** Populates default values on a parsed options result. */ export function addDefaults(config: Config, options: OptionSet): void; } declare module "types:assemblyscript/lib/binaryen" { export * from "binaryen"; export { default } from "binaryen"; } declare module "types:assemblyscript/cli/index" { /** * @fileoverview Definitions for asc. * @license Apache-2.0 */ import { OptionDescription } from "types:assemblyscript/util/options"; export { OptionDescription }; /** AssemblyScript version. */ export const version: string; /** Available CLI options. */ export const options: { [key: string]: OptionDescription; }; /** Prefix used for library files. */ export const libraryPrefix: string; /** Bundled library files. */ export const libraryFiles: { [key: string]: string; }; /** Bundled definition files. */ export const definitionFiles: { assembly: string; portable: string; }; /** Default Binaryen optimization level. */ export const defaultOptimizeLevel: number; /** Default Binaryen shrink level. */ export const defaultShrinkLevel: number; /** A compatible output stream. */ export interface OutputStream { /** Writes a chunk of data to the stream. */ write(chunk: Uint8Array | string): void; } /** An in-memory output stream. */ export interface MemoryStream extends OutputStream { /** Resets the stream to offset zero. */ reset(): void; /** Converts the output to a buffer. */ toBuffer(): Uint8Array; /** Converts the output to a string. */ toString(): string; } /** Relevant subset of the Source class for diagnostic reporting. */ export interface Source { /** Normalized path with file extension. */ normalizedPath: string; } /** Relevant subset of the Range class for diagnostic reporting. */ export interface Range { /** Start offset within the source file. */ start: number; /** End offset within the source file. */ end: number; /** Respective source file. */ source: Source; } /** Relevant subset of the DiagnosticMessage class for diagnostic reporting. */ export interface DiagnosticMessage { /** Message code. */ code: number; /** Message category. */ category: number; /** Message text. */ message: string; /** Respective source range, if any. */ range: Range | null; /** Related range, if any. */ relatedRange: Range | null; } /** A function handling diagnostic messages. */ type DiagnosticReporter = (diagnostic: DiagnosticMessage) => void; /** Compiler options. */ export interface CompilerOptions { /** Prints just the compiler's version and exits. */ version?: boolean; /** Prints the help message and exits. */ help?: boolean; /** Optimizes the module. */ optimize?: boolean; /** How much to focus on optimizing code. */ optimizeLevel?: number; /** How much to focus on shrinking code size. */ shrinkLevel?: number; /** Re-optimizes until no further improvements can be made. */ converge?: boolean; /** Specifies the base directory of input and output files. */ baseDir?: string; /** Specifies the WebAssembly output file (.wasm). */ outFile?: string; /** Specifies the WebAssembly text output file (.wat). */ textFile?: string; /** Specified the bindings to generate. */ bindings?: string[]; /** Enables source map generation. Optionally takes the URL. */ sourceMap?: boolean | string; /** Specifies the runtime variant to include in the program. */ runtime?: string; /** Disallows the use of unsafe features in user code. */ noUnsafe?: boolean; /** Enables debug information in emitted binaries. */ debug?: boolean; /** Replaces assertions with just their value without trapping. */ noAssert?: boolean; /** Performs compilation as usual but does not emit code. */ noEmit?: boolean; /** Imports the memory provided as 'env.memory'. */ importMemory?: boolean; /** Does not export the memory as 'memory'. */ noExportMemory?: boolean; /** Sets the initial memory size in pages. */ initialMemory?: number; /** Sets the maximum memory size in pages. */ maximumMemory?: number; /** Declare memory as shared. Requires maximumMemory. */ sharedMemory?: boolean; /** Assume that imported memory is zero filled. Requires importMemory. */ zeroFilledMemory?: boolean; /** Sets the start offset of compiler-generated static memory. */ memoryBase?: number; /** Imports the function table provided as 'env.table'. */ importTable?: boolean; /** Exports the function table as 'table'. */ exportTable?: boolean; /** Exports the start function instead of calling it implicitly. */ exportStart?: string; /** "Adds one or multiple paths to custom library components. */ lib?: string | string[]; /** Adds one or multiple paths to package resolution. */ path?: string | string[]; /** Aliases a global object under another name. */ use?: string | string[]; /** Sets the trap mode to use. */ trapMode?: "allow" | "clamp" | "js"; /** Specifies additional Binaryen passes to run. */ runPasses?: string | string[]; /** Skips validating the module using Binaryen. */ noValidate?: boolean; /** Enables WebAssembly features that are disabled by default. */ enable?: string | string[]; /** Disables WebAssembly features that are enabled by default. */ disable?: string | string[]; /** Specifies the path to a custom transform to 'require'. */ transform?: string | string[]; /** Make yourself sad for no good reason. */ pedantic?: boolean; /** Prints measuring information on I/O and compile times. */ stats?: boolean; /** Disables terminal colors. */ noColors?: boolean; } /** Compiler API options. */ export interface APIOptions { /** Standard output stream to use. */ stdout?: OutputStream; /** Standard error stream to use. */ stderr?: OutputStream; /** Reads a file from disk (or memory). */ readFile?: (filename: string, baseDir: string) => (string | null) | Promise; /** Writes a file to disk (or memory). */ writeFile?: (filename: string, contents: Uint8Array | string, baseDir: string) => void | Promise; /** Lists all files within a directory. */ listFiles?: (dirname: string, baseDir: string) => (string[] | null) | Promise; /** Handler for diagnostic messages. */ reportDiagnostic?: DiagnosticReporter; /** Additional transforms to apply. */ transforms?: Transform[]; } /** Compiler API result. */ export interface APIResult { /** Encountered error, if any. */ error: Error | null; /** Standard output stream. */ stdout: OutputStream; /** Standard error stream. */ stderr: OutputStream; /** Statistics. */ stats: Stats; } /** Runs the command line utility using the specified arguments array. */ export function main(argv: string[] | CompilerOptions, options?: APIOptions): Promise; /** Convenience function that parses and compiles source strings directly. */ export function compileString(sources: { [key: string]: string; } | string, options?: CompilerOptions): Promise; /** Checks diagnostics emitted so far for errors. */ export function checkDiagnostics(emitter: Record, stderr?: OutputStream, reportDiagnostic?: DiagnosticReporter, useColors?: boolean): boolean; /** Statistics for the current task. */ export class Stats { /** Number of files read. */ readCount: number; /** Number of files written. */ writeCount: number; /** Time taken to parse files. */ parseTime: number; /** Number of files parsed. */ parseCount: number; /** Time taken to compile programs. */ compileTime: number; /** Number of programs compiled. */ compileCount: number; /** Time taken to emit files. */ emitTime: number; /** Number of emitted files. */ emitCount: number; /** Time taken to validate modules. */ validateTime: number; /** Number of modules validated. */ validateCount: number; /** Time taken to optimize modules. */ optimizeTime: number; /** Number of modules optimized. */ optimizeCount: number; /** Begins measuring execution time. */ begin(): number; /** Ends measuring execution time since `begin`. */ end(begin: number): number; /** Returns a string representation. */ toString(): string; } /** Creates a memory stream that can be used in place of stdout/stderr. */ export function createMemoryStream(fn?: (chunk: Uint8Array | string) => void): MemoryStream; /** Compatible TypeScript compiler options for syntax highlighting etc. */ export const tscOptions: Record; import binaryen from "types:assemblyscript/lib/binaryen"; import { Program, Parser } from "types:assemblyscript/src/index"; /** Compiler transform base class. */ export abstract class Transform { /** Program reference. */ readonly program: Program; /** Binaryen reference. */ readonly binaryen: typeof binaryen; /** Base directory. */ readonly baseDir: string; /** Output stream used by the compiler. */ readonly stdout: OutputStream; /** Error stream used by the compiler. */ readonly stderr: OutputStream; /** Logs a message to console. */ readonly log: typeof console.log; /** Reads a file from disk. */ readFile(filename: string, baseDir: string): (string | null) | Promise; /** Writes a file to disk. */ writeFile(filename: string, contents: string | Uint8Array, baseDir: string): void | Promise; /** Lists all files in a directory. */ listFiles(dirname: string, baseDir: string): (string[] | null) | Promise; /** Called when parsing is complete, before a program is instantiated from the AST. */ afterParse?(parser: Parser): void | Promise; /** Called after the program is instantiated. */ afterInitialize?(program: Program): void | Promise; /** Called when compilation is complete, before the module is being validated. */ afterCompile?(module: binaryen.Module): void | Promise; } }