Spaces:
Sleeping
Sleeping
| 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; | |
| } | |