quickjs-emscripten-sync 1.2.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -2
- package/README.md +71 -44
- package/dist/index.d.ts +116 -23
- package/dist/quickjs-emscripten-sync.mjs +842 -0
- package/dist/quickjs-emscripten-sync.umd.js +64 -2
- package/package.json +22 -53
- package/src/default.ts +2 -2
- package/src/index.test.ts +223 -59
- package/src/index.ts +72 -66
- package/src/marshal/custom.test.ts +50 -0
- package/src/marshal/custom.ts +36 -0
- package/src/marshal/function.test.ts +64 -75
- package/src/marshal/function.ts +15 -18
- package/src/marshal/index.test.ts +122 -77
- package/src/marshal/index.ts +19 -15
- package/src/marshal/json.test.ts +37 -41
- package/src/marshal/json.ts +5 -7
- package/src/marshal/object.test.ts +59 -84
- package/src/marshal/object.ts +8 -15
- package/src/marshal/primitive.test.ts +18 -21
- package/src/marshal/primitive.ts +11 -10
- package/src/marshal/promise.test.ts +85 -0
- package/src/marshal/promise.ts +19 -0
- package/src/marshal/properties.test.ts +24 -27
- package/src/marshal/properties.ts +15 -17
- package/src/unmarshal/custom.test.ts +50 -0
- package/src/unmarshal/custom.ts +31 -0
- package/src/unmarshal/function.test.ts +63 -86
- package/src/unmarshal/function.ts +13 -22
- package/src/unmarshal/index.test.ts +114 -109
- package/src/unmarshal/index.ts +15 -14
- package/src/unmarshal/object.test.ts +42 -46
- package/src/unmarshal/object.ts +16 -20
- package/src/unmarshal/primitive.test.ts +17 -15
- package/src/unmarshal/primitive.ts +11 -18
- package/src/unmarshal/promise.test.ts +44 -0
- package/src/unmarshal/promise.ts +31 -0
- package/src/unmarshal/properties.test.ts +11 -9
- package/src/unmarshal/properties.ts +44 -45
- package/src/util.test.ts +14 -2
- package/src/util.ts +18 -8
- package/src/vmmap.test.ts +88 -82
- package/src/vmmap.ts +30 -44
- package/src/vmutil.test.ts +100 -75
- package/src/vmutil.ts +51 -34
- package/src/wrapper.test.ts +129 -167
- package/src/wrapper.ts +59 -62
- package/dist/default.d.ts +0 -4
- package/dist/marshal/function.d.ts +0 -2
- package/dist/marshal/index.d.ts +0 -11
- package/dist/marshal/json.d.ts +0 -2
- package/dist/marshal/object.d.ts +0 -2
- package/dist/marshal/primitive.d.ts +0 -2
- package/dist/marshal/properties.d.ts +0 -2
- package/dist/marshal/symbol.d.ts +0 -2
- package/dist/quickjs-emscripten-sync.cjs +0 -2
- package/dist/quickjs-emscripten-sync.cjs.map +0 -1
- package/dist/quickjs-emscripten-sync.modern.js +0 -2
- package/dist/quickjs-emscripten-sync.modern.js.map +0 -1
- package/dist/quickjs-emscripten-sync.module.js +0 -2
- package/dist/quickjs-emscripten-sync.module.js.map +0 -1
- package/dist/quickjs-emscripten-sync.umd.js.map +0 -1
- package/dist/unmarshal/function.d.ts +0 -2
- package/dist/unmarshal/index.d.ts +0 -9
- package/dist/unmarshal/object.d.ts +0 -2
- package/dist/unmarshal/primitive.d.ts +0 -2
- package/dist/unmarshal/properties.d.ts +0 -2
- package/dist/unmarshal/symbol.d.ts +0 -2
- package/dist/util.d.ts +0 -7
- package/dist/vmmap.d.ts +0 -35
- package/dist/vmutil.d.ts +0 -11
- package/dist/wrapper.d.ts +0 -11
- package/src/marshal/symbol.test.ts +0 -22
- package/src/marshal/symbol.ts +0 -20
- package/src/unmarshal/symbol.test.ts +0 -23
- package/src/unmarshal/symbol.ts +0 -12
package/dist/util.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export declare function isES2015Class(cls: any): cls is new (...args: any[]) => any;
|
|
2
|
-
export declare function isObject(value: any): value is object | Function;
|
|
3
|
-
export declare function walkObject(value: any, callback?: (target: any, set: Set<any>) => boolean | void): Set<any>;
|
|
4
|
-
/**
|
|
5
|
-
* Measure the complexity of an object as you traverse the field and prototype chain. If max is specified, when the complexity reaches max, the traversal is terminated and it returns the max. In this function, one object and function are counted as a complexity of 1, and primitives are not counted as a complexity.
|
|
6
|
-
*/
|
|
7
|
-
export declare function complexity(value: any, max?: number): number;
|
package/dist/vmmap.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { QuickJSVm, QuickJSHandle } from "quickjs-emscripten";
|
|
2
|
-
export default class VMMap {
|
|
3
|
-
vm: QuickJSVm;
|
|
4
|
-
_map1: Map<any, number>;
|
|
5
|
-
_map2: Map<any, number>;
|
|
6
|
-
_map3: Map<number, QuickJSHandle>;
|
|
7
|
-
_map4: Map<number, QuickJSHandle>;
|
|
8
|
-
_counterMap: Map<number, any>;
|
|
9
|
-
_disposables: Set<QuickJSHandle>;
|
|
10
|
-
_mapGet: QuickJSHandle;
|
|
11
|
-
_mapSet: QuickJSHandle;
|
|
12
|
-
_mapDelete: QuickJSHandle;
|
|
13
|
-
_mapClear: QuickJSHandle;
|
|
14
|
-
_counter: number;
|
|
15
|
-
constructor(vm: QuickJSVm);
|
|
16
|
-
set(key: any, handle: QuickJSHandle, key2?: any, handle2?: QuickJSHandle): boolean;
|
|
17
|
-
merge(iteratable: Iterable<[any, QuickJSHandle | undefined] | [any, QuickJSHandle | undefined, any, QuickJSHandle | undefined]> | undefined): void;
|
|
18
|
-
get(key: any): QuickJSHandle | undefined;
|
|
19
|
-
getByHandle(handle: QuickJSHandle): any;
|
|
20
|
-
has(key: any): boolean;
|
|
21
|
-
hasHandle(handle: QuickJSHandle): boolean;
|
|
22
|
-
delete(key: any, dispose?: boolean): void;
|
|
23
|
-
deleteByHandle(handle: QuickJSHandle, dispose?: boolean): void;
|
|
24
|
-
clear(): void;
|
|
25
|
-
dispose(): void;
|
|
26
|
-
get size(): number;
|
|
27
|
-
[Symbol.iterator](): Iterator<[
|
|
28
|
-
any,
|
|
29
|
-
QuickJSHandle,
|
|
30
|
-
any,
|
|
31
|
-
QuickJSHandle | undefined
|
|
32
|
-
]>;
|
|
33
|
-
_get2(num: number): any;
|
|
34
|
-
_call(fn: QuickJSHandle, thisArg: QuickJSHandle | undefined, ...args: QuickJSHandle[]): QuickJSHandle;
|
|
35
|
-
}
|
package/dist/vmutil.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { QuickJSVm, QuickJSHandle } from "quickjs-emscripten";
|
|
2
|
-
export declare function call(vm: QuickJSVm, code: string, thisArg?: QuickJSHandle, ...args: QuickJSHandle[]): QuickJSHandle;
|
|
3
|
-
export declare function eq(vm: QuickJSVm, a: QuickJSHandle, b: QuickJSHandle): boolean;
|
|
4
|
-
export declare function instanceOf(vm: QuickJSVm, a: QuickJSHandle, b: QuickJSHandle): boolean;
|
|
5
|
-
export declare function isHandleObject(vm: QuickJSVm, a: QuickJSHandle): boolean;
|
|
6
|
-
export declare function json(vm: QuickJSVm, target: any): QuickJSHandle;
|
|
7
|
-
export declare function consumeAll<T extends QuickJSHandle[], K>(handles: T, cb: (handles: T) => K): K;
|
|
8
|
-
export declare function mayConsume<T>([handle, shouldBeDisposed]: [QuickJSHandle, boolean], fn: (h: QuickJSHandle) => T): T;
|
|
9
|
-
export declare function mayConsumeAll<T, H extends QuickJSHandle[]>(handles: {
|
|
10
|
-
[P in keyof H]: [QuickJSHandle, boolean];
|
|
11
|
-
}, fn: (...args: H) => T): T;
|
package/dist/wrapper.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { QuickJSVm, QuickJSHandle } from "quickjs-emscripten";
|
|
2
|
-
export declare type SyncMode = "both" | "vm" | "host";
|
|
3
|
-
export declare type Wrapped<T> = T & {
|
|
4
|
-
__qes_wrapped: never;
|
|
5
|
-
};
|
|
6
|
-
export declare function wrap<T = any>(vm: QuickJSVm, target: T, proxyKeySymbol: symbol, proxyKeySymbolHandle: QuickJSHandle, marshal: (target: any) => [QuickJSHandle, boolean], syncMode?: (target: T) => SyncMode | undefined): Wrapped<T> | undefined;
|
|
7
|
-
export declare function wrapHandle(vm: QuickJSVm, handle: QuickJSHandle, proxyKeySymbol: symbol, proxyKeySymbolHandle: QuickJSHandle, unmarshal: (handle: QuickJSHandle) => any, syncMode?: (target: QuickJSHandle) => SyncMode | undefined): [Wrapped<QuickJSHandle> | undefined, boolean];
|
|
8
|
-
export declare function unwrap<T>(obj: T, key: string | symbol): T;
|
|
9
|
-
export declare function unwrapHandle(vm: QuickJSVm, handle: QuickJSHandle, key: QuickJSHandle): [QuickJSHandle, boolean];
|
|
10
|
-
export declare function isWrapped<T>(obj: T, key: string | symbol): obj is Wrapped<T>;
|
|
11
|
-
export declare function isHandleWrapped(vm: QuickJSVm, handle: QuickJSHandle, key: QuickJSHandle): handle is Wrapped<QuickJSHandle>;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { getQuickJS } from "quickjs-emscripten";
|
|
2
|
-
import marshalSymbol from "./symbol";
|
|
3
|
-
|
|
4
|
-
test("works", async () => {
|
|
5
|
-
const vm = (await getQuickJS()).createVm();
|
|
6
|
-
const pre = jest.fn();
|
|
7
|
-
const sym = Symbol("foobar");
|
|
8
|
-
|
|
9
|
-
expect(marshalSymbol(vm, {}, pre)).toBe(undefined);
|
|
10
|
-
expect(pre).toBeCalledTimes(0);
|
|
11
|
-
|
|
12
|
-
const handle = marshalSymbol(vm, sym, pre);
|
|
13
|
-
if (!handle) throw new Error("handle is undefined");
|
|
14
|
-
expect(vm.typeof(handle)).toBe("symbol");
|
|
15
|
-
expect(vm.getString(vm.getProp(handle, "description"))).toBe("foobar");
|
|
16
|
-
expect(pre).toReturnTimes(1);
|
|
17
|
-
expect(pre.mock.calls[0][0]).toBe(sym);
|
|
18
|
-
expect(pre.mock.calls[0][1] === handle).toBe(true);
|
|
19
|
-
|
|
20
|
-
handle.dispose();
|
|
21
|
-
vm.dispose();
|
|
22
|
-
});
|
package/src/marshal/symbol.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { QuickJSVm, QuickJSHandle } from "quickjs-emscripten";
|
|
2
|
-
import { call } from "../vmutil";
|
|
3
|
-
|
|
4
|
-
export default function marshalSymbol(
|
|
5
|
-
vm: QuickJSVm,
|
|
6
|
-
target: unknown,
|
|
7
|
-
preMarshal: (
|
|
8
|
-
target: unknown,
|
|
9
|
-
handle: QuickJSHandle
|
|
10
|
-
) => QuickJSHandle | undefined
|
|
11
|
-
): QuickJSHandle | undefined {
|
|
12
|
-
if (typeof target !== "symbol") return;
|
|
13
|
-
const handle = call(
|
|
14
|
-
vm,
|
|
15
|
-
"d => Symbol(d)",
|
|
16
|
-
undefined,
|
|
17
|
-
target.description ? vm.newString(target.description) : vm.undefined
|
|
18
|
-
);
|
|
19
|
-
return preMarshal(target, handle) ?? handle;
|
|
20
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { getQuickJS } from "quickjs-emscripten";
|
|
2
|
-
import unmarshalSymbol from "./symbol";
|
|
3
|
-
|
|
4
|
-
test("works", async () => {
|
|
5
|
-
const vm = (await getQuickJS()).createVm();
|
|
6
|
-
const pre = jest.fn();
|
|
7
|
-
const obj = vm.newObject();
|
|
8
|
-
const handle = vm.unwrapResult(vm.evalCode(`Symbol("foobar")`));
|
|
9
|
-
|
|
10
|
-
expect(unmarshalSymbol(vm, obj, pre)).toBe(undefined);
|
|
11
|
-
expect(pre).toBeCalledTimes(0);
|
|
12
|
-
|
|
13
|
-
const sym = unmarshalSymbol(vm, handle, pre);
|
|
14
|
-
expect(typeof sym).toBe("symbol");
|
|
15
|
-
expect((sym as any).description).toBe("foobar");
|
|
16
|
-
expect(pre).toReturnTimes(1);
|
|
17
|
-
expect(pre.mock.calls[0][0]).toBe(sym);
|
|
18
|
-
expect(pre.mock.calls[0][1] === handle).toBe(true);
|
|
19
|
-
|
|
20
|
-
handle.dispose();
|
|
21
|
-
obj.dispose();
|
|
22
|
-
vm.dispose();
|
|
23
|
-
});
|
package/src/unmarshal/symbol.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { QuickJSVm, QuickJSHandle } from "quickjs-emscripten";
|
|
2
|
-
|
|
3
|
-
export default function unmarshalSymbol(
|
|
4
|
-
vm: QuickJSVm,
|
|
5
|
-
handle: QuickJSHandle,
|
|
6
|
-
preUnmarshal: <T>(target: T, handle: QuickJSHandle) => T | undefined
|
|
7
|
-
): symbol | undefined {
|
|
8
|
-
if (vm.typeof(handle) !== "symbol") return;
|
|
9
|
-
const desc = vm.getString(vm.getProp(handle, "description"));
|
|
10
|
-
const sym = Symbol(desc);
|
|
11
|
-
return preUnmarshal(sym, handle) ?? sym;
|
|
12
|
-
}
|