add hw2
This commit is contained in:
174
node_modules/@tootallnate/quickjs-emscripten/dist/runtime.d.ts
generated
vendored
Normal file
174
node_modules/@tootallnate/quickjs-emscripten/dist/runtime.d.ts
generated
vendored
Normal file
@@ -0,0 +1,174 @@
|
||||
import { QuickJSContext } from "./context";
|
||||
import { EitherModule } from "./emscripten-types";
|
||||
import { JSContextPointer, JSRuntimePointer } from "./types-ffi";
|
||||
import { Disposable, Lifetime, Scope } from "./lifetime";
|
||||
import { ModuleMemory } from "./memory";
|
||||
import { QuickJSModuleCallbacks } from "./module";
|
||||
import { ContextOptions, EitherFFI, JSModuleLoader, JSModuleNormalizer, QuickJSHandle } from "./types";
|
||||
import { SuccessOrFail } from "./vm-interface";
|
||||
/**
|
||||
* Callback called regularly while the VM executes code.
|
||||
* Determines if a VM's execution should be interrupted.
|
||||
*
|
||||
* @returns `true` to interrupt JS execution inside the VM.
|
||||
* @returns `false` or `undefined` to continue JS execution inside the VM.
|
||||
*/
|
||||
export type InterruptHandler = (runtime: QuickJSRuntime) => boolean | undefined;
|
||||
/**
|
||||
* Used as an optional for the results of executing pendingJobs.
|
||||
* On success, `value` contains the number of async jobs executed
|
||||
* by the runtime.
|
||||
* @source
|
||||
*/
|
||||
export type ExecutePendingJobsResult = SuccessOrFail<
|
||||
/** Number of jobs successfully executed. */
|
||||
number,
|
||||
/** The error that occurred. */
|
||||
QuickJSHandle & {
|
||||
/** The context where the error occurred. */
|
||||
context: QuickJSContext;
|
||||
}>;
|
||||
/**
|
||||
* A runtime represents a Javascript runtime corresponding to an object heap.
|
||||
* Several runtimes can exist at the same time but they cannot exchange objects.
|
||||
* Inside a given runtime, no multi-threading is supported.
|
||||
*
|
||||
* You can think of separate runtimes like different domains in a browser, and
|
||||
* the contexts within a runtime like the different windows open to the same
|
||||
* domain.
|
||||
*
|
||||
* Create a runtime via {@link QuickJSWASMModule.newRuntime}.
|
||||
*
|
||||
* You should create separate runtime instances for untrusted code from
|
||||
* different sources for isolation. However, stronger isolation is also
|
||||
* available (at the cost of memory usage), by creating separate WebAssembly
|
||||
* modules to further isolate untrusted code.
|
||||
* See {@link newQuickJSWASMModule}.
|
||||
*
|
||||
* Implement memory and CPU constraints with [[setInterruptHandler]]
|
||||
* (called regularly while the interpreter runs), [[setMemoryLimit]], and
|
||||
* [[setMaxStackSize]].
|
||||
* Use [[computeMemoryUsage]] or [[dumpMemoryUsage]] to guide memory limit
|
||||
* tuning.
|
||||
*
|
||||
* Configure ES module loading with [[setModuleLoader]].
|
||||
*/
|
||||
export declare class QuickJSRuntime implements Disposable {
|
||||
/**
|
||||
* If this runtime was created as as part of a context, points to the context
|
||||
* associated with the runtime.
|
||||
*
|
||||
* If this runtime was created stand-alone, this may or may not contain a context.
|
||||
* A context here may be allocated if one is needed by the runtime, eg for [[computeMemoryUsage]].
|
||||
*/
|
||||
context: QuickJSContext | undefined;
|
||||
/** @private */
|
||||
protected module: EitherModule;
|
||||
/** @private */
|
||||
protected memory: ModuleMemory;
|
||||
/** @private */
|
||||
protected ffi: EitherFFI;
|
||||
/** @private */
|
||||
protected rt: Lifetime<JSRuntimePointer>;
|
||||
/** @private */
|
||||
protected callbacks: QuickJSModuleCallbacks;
|
||||
/** @private */
|
||||
protected scope: Scope;
|
||||
/** @private */
|
||||
protected contextMap: Map<JSContextPointer, QuickJSContext>;
|
||||
/** @private */
|
||||
protected moduleLoader: JSModuleLoader | undefined;
|
||||
/** @private */
|
||||
protected moduleNormalizer: JSModuleNormalizer | undefined;
|
||||
/** @private */
|
||||
constructor(args: {
|
||||
module: EitherModule;
|
||||
ffi: EitherFFI;
|
||||
rt: Lifetime<JSRuntimePointer>;
|
||||
callbacks: QuickJSModuleCallbacks;
|
||||
ownedLifetimes?: Disposable[];
|
||||
});
|
||||
get alive(): boolean;
|
||||
dispose(): void;
|
||||
newContext(options?: ContextOptions): QuickJSContext;
|
||||
/**
|
||||
* Set the loader for EcmaScript modules requested by any context in this
|
||||
* runtime.
|
||||
*
|
||||
* The loader can be removed with [[removeModuleLoader]].
|
||||
*/
|
||||
setModuleLoader(moduleLoader: JSModuleLoader, moduleNormalizer?: JSModuleNormalizer): void;
|
||||
/**
|
||||
* Remove the the loader set by [[setModuleLoader]]. This disables module loading.
|
||||
*/
|
||||
removeModuleLoader(): void;
|
||||
/**
|
||||
* In QuickJS, promises and async functions create pendingJobs. These do not execute
|
||||
* immediately and need to be run by calling [[executePendingJobs]].
|
||||
*
|
||||
* @return true if there is at least one pendingJob queued up.
|
||||
*/
|
||||
hasPendingJob(): boolean;
|
||||
private interruptHandler;
|
||||
/**
|
||||
* Set a callback which is regularly called by the QuickJS engine when it is
|
||||
* executing code. This callback can be used to implement an execution
|
||||
* timeout.
|
||||
*
|
||||
* The interrupt handler can be removed with [[removeInterruptHandler]].
|
||||
*/
|
||||
setInterruptHandler(cb: InterruptHandler): void;
|
||||
/**
|
||||
* Remove the interrupt handler, if any.
|
||||
* See [[setInterruptHandler]].
|
||||
*/
|
||||
removeInterruptHandler(): void;
|
||||
/**
|
||||
* Execute pendingJobs on the runtime until `maxJobsToExecute` jobs are
|
||||
* executed (default all pendingJobs), the queue is exhausted, or the runtime
|
||||
* encounters an exception.
|
||||
*
|
||||
* In QuickJS, promises and async functions *inside the runtime* create
|
||||
* pendingJobs. These do not execute immediately and need to triggered to run.
|
||||
*
|
||||
* @param maxJobsToExecute - When negative, run all pending jobs. Otherwise execute
|
||||
* at most `maxJobsToExecute` before returning.
|
||||
*
|
||||
* @return On success, the number of executed jobs. On error, the exception
|
||||
* that stopped execution, and the context it occurred in. Note that
|
||||
* executePendingJobs will not normally return errors thrown inside async
|
||||
* functions or rejected promises. Those errors are available by calling
|
||||
* [[resolvePromise]] on the promise handle returned by the async function.
|
||||
*/
|
||||
executePendingJobs(maxJobsToExecute?: number | void): ExecutePendingJobsResult;
|
||||
/**
|
||||
* Set the max memory this runtime can allocate.
|
||||
* To remove the limit, set to `-1`.
|
||||
*/
|
||||
setMemoryLimit(limitBytes: number): void;
|
||||
/**
|
||||
* Compute memory usage for this runtime. Returns the result as a handle to a
|
||||
* JSValue object. Use [[QuickJSContext.dump]] to convert to a native object.
|
||||
* Calling this method will allocate more memory inside the runtime. The information
|
||||
* is accurate as of just before the call to `computeMemoryUsage`.
|
||||
* For a human-digestible representation, see [[dumpMemoryUsage]].
|
||||
*/
|
||||
computeMemoryUsage(): QuickJSHandle;
|
||||
/**
|
||||
* @returns a human-readable description of memory usage in this runtime.
|
||||
* For programmatic access to this information, see [[computeMemoryUsage]].
|
||||
*/
|
||||
dumpMemoryUsage(): string;
|
||||
/**
|
||||
* Set the max stack size for this runtime, in bytes.
|
||||
* To remove the limit, set to `0`.
|
||||
*/
|
||||
setMaxStackSize(stackSize: number): void;
|
||||
/**
|
||||
* Assert that `handle` is owned by this runtime.
|
||||
* @throws QuickJSWrongOwner if owned by a different runtime.
|
||||
*/
|
||||
assertOwned(handle: QuickJSHandle): void;
|
||||
private getSystemContext;
|
||||
private cToHostCallbacks;
|
||||
}
|
||||
Reference in New Issue
Block a user