123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 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;
- }
|