add hw2
This commit is contained in:
68
node_modules/@tootallnate/quickjs-emscripten/dist/vm-interface.d.ts
generated
vendored
Normal file
68
node_modules/@tootallnate/quickjs-emscripten/dist/vm-interface.d.ts
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* Used as an optional.
|
||||
* `{ value: S } | { error: E }`.
|
||||
*/
|
||||
export type SuccessOrFail<S, F> = {
|
||||
value: S;
|
||||
error?: undefined;
|
||||
} | {
|
||||
error: F;
|
||||
};
|
||||
export declare function isSuccess<S, F>(successOrFail: SuccessOrFail<S, F>): successOrFail is {
|
||||
value: S;
|
||||
};
|
||||
export declare function isFail<S, F>(successOrFail: SuccessOrFail<S, F>): successOrFail is {
|
||||
error: F;
|
||||
};
|
||||
/**
|
||||
* Used as an optional for results of a Vm call.
|
||||
* `{ value: VmHandle } | { error: VmHandle }`.
|
||||
*/
|
||||
export type VmCallResult<VmHandle> = SuccessOrFail<VmHandle, VmHandle>;
|
||||
/**
|
||||
* A VmFunctionImplementation takes handles as arguments.
|
||||
* It should return a handle, or be void.
|
||||
*
|
||||
* To indicate an exception, a VMs can throw either a handle (transferred
|
||||
* directly) or any other Javascript value (only the poperties `name` and
|
||||
* `message` will be transferred). Or, the VmFunctionImplementation may return
|
||||
* a VmCallResult's `{ error: handle }` error variant.
|
||||
*
|
||||
* VmFunctionImplementation should not free its arguments or its return value.
|
||||
* It should not retain a reference to its return value or thrown error.
|
||||
*/
|
||||
export type VmFunctionImplementation<VmHandle> = (this: VmHandle, ...args: VmHandle[]) => VmHandle | VmCallResult<VmHandle> | void;
|
||||
/**
|
||||
* A minimal interface to a Javascript execution environment.
|
||||
*
|
||||
* Higher-level tools should build over the LowLevelJavascriptVm interface to
|
||||
* share as much as possible between executors.
|
||||
*
|
||||
* From https://www.figma.com/blog/how-we-built-the-figma-plugin-system/
|
||||
*/
|
||||
export interface LowLevelJavascriptVm<VmHandle> {
|
||||
global: VmHandle;
|
||||
undefined: VmHandle;
|
||||
typeof(handle: VmHandle): string;
|
||||
getNumber(handle: VmHandle): number;
|
||||
getString(handle: VmHandle): string;
|
||||
newNumber(value: number): VmHandle;
|
||||
newString(value: string): VmHandle;
|
||||
newObject(prototype?: VmHandle): VmHandle;
|
||||
newFunction(name: string, value: VmFunctionImplementation<VmHandle>): VmHandle;
|
||||
getProp(handle: VmHandle, key: string | VmHandle): VmHandle;
|
||||
setProp(handle: VmHandle, key: string | VmHandle, value: VmHandle): void;
|
||||
defineProp(handle: VmHandle, key: string | VmHandle, descriptor: VmPropertyDescriptor<VmHandle>): void;
|
||||
callFunction(func: VmHandle, thisVal: VmHandle, ...args: VmHandle[]): VmCallResult<VmHandle>;
|
||||
evalCode(code: string, filename?: string): VmCallResult<VmHandle>;
|
||||
}
|
||||
/**
|
||||
* From https://www.figma.com/blog/how-we-built-the-figma-plugin-system/
|
||||
*/
|
||||
export interface VmPropertyDescriptor<VmHandle> {
|
||||
value?: VmHandle;
|
||||
configurable?: boolean;
|
||||
enumerable?: boolean;
|
||||
get?: (this: VmHandle) => VmHandle;
|
||||
set?: (this: VmHandle, value: VmHandle) => void;
|
||||
}
|
||||
Reference in New Issue
Block a user