| import { QuickJSContext } from "./context"; |
| import { QuickJSAsyncEmscriptenModule } from "./emscripten-types"; |
| import { QuickJSAsyncFFI } from "./variants"; |
| import { JSRuntimePointer } from "./types-ffi"; |
| import { Lifetime } from "./lifetime"; |
| import { QuickJSModuleCallbacks } from "./module"; |
| import { QuickJSAsyncRuntime } from "./runtime-asyncify"; |
| import { ContextEvalOptions, QuickJSHandle } from "./types"; |
| import { VmCallResult } from "./vm-interface"; |
| export type AsyncFunctionImplementation = (this: QuickJSHandle, ...args: QuickJSHandle[]) => Promise<QuickJSHandle | VmCallResult<QuickJSHandle> | void>; |
| /** |
| * Asyncified version of [[QuickJSContext]]. |
| * |
| * *Asyncify* allows normally synchronous code to wait for asynchronous Promises |
| * or callbacks. The asyncified version of QuickJSContext can wait for async |
| * host functions as though they were synchronous. |
| */ |
| export declare class QuickJSAsyncContext extends QuickJSContext { |
| runtime: QuickJSAsyncRuntime; |
| /** @private */ |
| protected module: QuickJSAsyncEmscriptenModule; |
| /** @private */ |
| protected ffi: QuickJSAsyncFFI; |
| /** @private */ |
| protected rt: Lifetime<JSRuntimePointer>; |
| /** @private */ |
| protected callbacks: QuickJSModuleCallbacks; |
| /** |
| * Asyncified version of [[evalCode]]. |
| */ |
| evalCodeAsync(code: string, filename?: string, |
| /** See [[EvalFlags]] for number semantics */ |
| options?: number | ContextEvalOptions): Promise<VmCallResult<QuickJSHandle>>; |
| /** |
| * Similar to [[newFunction]]. |
| * Convert an async host Javascript function into a synchronous QuickJS function value. |
| * |
| * Whenever QuickJS calls this function, the VM's stack will be unwound while |
| * waiting the async function to complete, and then restored when the returned |
| * promise resolves. |
| * |
| * Asyncified functions must never call other asyncified functions or |
| * `import`, even indirectly, because the stack cannot be unwound twice. |
| * |
| * See [Emscripten's docs on Asyncify](https://emscripten.org/docs/porting/asyncify.html). |
| */ |
| newAsyncifiedFunction(name: string, fn: AsyncFunctionImplementation): QuickJSHandle; |
| } |