sharedthread 1.0.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 +21 -0
- package/README.md +3 -0
- package/dist/index.cjs +1026 -0
- package/dist/index.d.cts +272 -0
- package/dist/index.d.ts +272 -0
- package/dist/index.js +976 -0
- package/package.json +41 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { Transferable, Worker, MessagePort, WorkerOptions } from 'node:worker_threads';
|
|
2
|
+
export { isMainThread } from 'node:worker_threads';
|
|
3
|
+
import { EventEmitter } from 'node:events';
|
|
4
|
+
|
|
5
|
+
declare class SharedHeap {
|
|
6
|
+
private static heaps;
|
|
7
|
+
static getHeapByID(i: number): SharedHeap;
|
|
8
|
+
private readonly _heapID;
|
|
9
|
+
private readonly _heapSize;
|
|
10
|
+
private readonly _buffer;
|
|
11
|
+
private readonly _view;
|
|
12
|
+
private static readonly SHIFT_TYPEID;
|
|
13
|
+
private static readonly SHIFT_ARRAY;
|
|
14
|
+
private static readonly SHIFT_PTR;
|
|
15
|
+
private static readonly SHIFT_ALLOC;
|
|
16
|
+
private static readonly MASK_TYPEID;
|
|
17
|
+
private static readonly MASK_ARRAY;
|
|
18
|
+
private static readonly MASK_PTR;
|
|
19
|
+
private static readonly MASK_ALLOC;
|
|
20
|
+
constructor(b: number | SharedArrayBuffer, heapID?: number);
|
|
21
|
+
get heapID(): number;
|
|
22
|
+
get view(): DataView;
|
|
23
|
+
get heapSize(): number;
|
|
24
|
+
get buffer(): SharedArrayBuffer;
|
|
25
|
+
get listHead(): number;
|
|
26
|
+
set listHead(offset: number);
|
|
27
|
+
private getHeaderSize;
|
|
28
|
+
getHeaderAllocated(offset: number): number;
|
|
29
|
+
private writeHeader;
|
|
30
|
+
syncFreeList(): void;
|
|
31
|
+
allocate(requestedSize: number, typeID: number, isPtr?: boolean, isArray?: boolean): number;
|
|
32
|
+
free(ptr: number): void;
|
|
33
|
+
private addFreeNodeToFront;
|
|
34
|
+
getTypeIDAt(ptr: number): number;
|
|
35
|
+
getAllocAt(ptr: number): number;
|
|
36
|
+
getPtrAt(ptr: number): number;
|
|
37
|
+
getArrayAt(ptr: number): number;
|
|
38
|
+
private removeFreeNode;
|
|
39
|
+
private replaceFreeNode;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
interface SharedPrimitiveStatic<T> {
|
|
43
|
+
typeID: number;
|
|
44
|
+
byteSize: number;
|
|
45
|
+
isPtr: boolean;
|
|
46
|
+
isArr: boolean;
|
|
47
|
+
fromData(heap: SharedHeap, v: any): SharedPrimitive<T>;
|
|
48
|
+
new (heap: SharedHeap, addr: number): SharedPrimitive<T>;
|
|
49
|
+
}
|
|
50
|
+
declare abstract class SharedPrimitive<T> extends SharedType {
|
|
51
|
+
static typeID: number;
|
|
52
|
+
static readonly byteSize: number;
|
|
53
|
+
static readonly isPtr: boolean;
|
|
54
|
+
static readonly isArr: boolean;
|
|
55
|
+
abstract set value(v: T);
|
|
56
|
+
abstract get value(): T;
|
|
57
|
+
}
|
|
58
|
+
type SharedPrimitiveClass<T> = SharedPrimitiveStatic<T>;
|
|
59
|
+
|
|
60
|
+
interface SharedReferenceStatic {
|
|
61
|
+
typeID: number;
|
|
62
|
+
isPtr: boolean;
|
|
63
|
+
isArr: boolean;
|
|
64
|
+
readonly byteSize: number;
|
|
65
|
+
fromData<T extends SharedReference>(heap: SharedHeap, v: any): T;
|
|
66
|
+
new (heap: SharedHeap, addr: number): SharedReference;
|
|
67
|
+
}
|
|
68
|
+
declare abstract class SharedReference extends SharedType {
|
|
69
|
+
static typeID: number;
|
|
70
|
+
static readonly isPtr: boolean;
|
|
71
|
+
static readonly isArr: boolean;
|
|
72
|
+
abstract get byteSize(): number;
|
|
73
|
+
}
|
|
74
|
+
type SharedReferenceClass = SharedReferenceStatic;
|
|
75
|
+
|
|
76
|
+
interface SharedType {
|
|
77
|
+
typeID: number;
|
|
78
|
+
}
|
|
79
|
+
declare abstract class SharedType {
|
|
80
|
+
protected _addr: number;
|
|
81
|
+
protected _heap: SharedHeap;
|
|
82
|
+
constructor(heap: SharedHeap, addr: number);
|
|
83
|
+
get addr(): number;
|
|
84
|
+
get heap(): SharedHeap;
|
|
85
|
+
}
|
|
86
|
+
type SharedTypeClass = SharedReferenceClass | SharedPrimitiveClass<any>;
|
|
87
|
+
|
|
88
|
+
declare class TypeRegistry {
|
|
89
|
+
private static indexToType;
|
|
90
|
+
private static typeToIndex;
|
|
91
|
+
private static hashToType;
|
|
92
|
+
private static typeToHash;
|
|
93
|
+
private static indexToHash;
|
|
94
|
+
static fnv1(str: string): number;
|
|
95
|
+
static registerType(dataType: SharedTypeClass): number;
|
|
96
|
+
static getTypeBuffer(): ArrayBuffer;
|
|
97
|
+
static verifyTypeBuffer(typeBuffer: ArrayBuffer): void;
|
|
98
|
+
static getTypeByIndex(index: number): SharedTypeClass;
|
|
99
|
+
static getTypeByHash(hash: number): SharedTypeClass;
|
|
100
|
+
static getIndexByType(type: SharedTypeClass): number;
|
|
101
|
+
static getHashByType(type: SharedTypeClass): number;
|
|
102
|
+
private constructor();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
type VariableDeclaration = {
|
|
106
|
+
type: SharedPrimitiveClass<any>;
|
|
107
|
+
param?: any;
|
|
108
|
+
} | {
|
|
109
|
+
type: SharedReferenceClass;
|
|
110
|
+
param: any;
|
|
111
|
+
};
|
|
112
|
+
declare class SharedStruct extends SharedReference {
|
|
113
|
+
static fromData<T extends SharedStruct>(this: (new (heap: SharedHeap, addr: number) => T) & SharedReferenceStatic, heap: SharedHeap, param: any): T;
|
|
114
|
+
static readonly properties: Record<string, VariableDeclaration>;
|
|
115
|
+
protected _byteSize: number;
|
|
116
|
+
protected properties: Record<string, SharedType>;
|
|
117
|
+
constructor(heap: SharedHeap, addr: number);
|
|
118
|
+
imprint(obj?: Record<string, any>): void;
|
|
119
|
+
static get byteSize(): number;
|
|
120
|
+
get byteSize(): number;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
declare class SharedArray<T extends SharedType> extends SharedReference {
|
|
124
|
+
static readonly isArr: boolean;
|
|
125
|
+
static readonly properties: Record<string, VariableDeclaration>;
|
|
126
|
+
static fromData<U extends SharedReference>(heap: SharedHeap, v: any): U;
|
|
127
|
+
protected readonly _heldType: SharedTypeClass;
|
|
128
|
+
protected readonly _elementType: SharedTypeClass;
|
|
129
|
+
protected readonly _elementSize: number;
|
|
130
|
+
protected readonly _byteSize: number;
|
|
131
|
+
protected readonly _length: number;
|
|
132
|
+
protected readonly elements: T[];
|
|
133
|
+
constructor(heap: SharedHeap, addr: number);
|
|
134
|
+
get addr(): number;
|
|
135
|
+
get heap(): SharedHeap;
|
|
136
|
+
get heldType(): SharedTypeClass;
|
|
137
|
+
get elementType(): SharedTypeClass;
|
|
138
|
+
get elementSize(): number;
|
|
139
|
+
static get byteSize(): number;
|
|
140
|
+
get byteSize(): number;
|
|
141
|
+
get length(): number;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
interface PointerDefinition {
|
|
145
|
+
type: SharedTypeClass;
|
|
146
|
+
addr?: number;
|
|
147
|
+
}
|
|
148
|
+
declare class SharedPointer<T extends SharedType> extends SharedPrimitive<any> {
|
|
149
|
+
static readonly byteSize: number;
|
|
150
|
+
static readonly isPtr: boolean;
|
|
151
|
+
static fromData(heap: SharedHeap, v: PointerDefinition): SharedPointer<SharedType>;
|
|
152
|
+
protected readonly _heldType: SharedTypeClass;
|
|
153
|
+
protected _deref: SharedType | null;
|
|
154
|
+
constructor(heap: SharedHeap, addr: number, dataType?: SharedTypeClass);
|
|
155
|
+
get heldType(): SharedTypeClass;
|
|
156
|
+
get addr(): number;
|
|
157
|
+
get heap(): SharedHeap;
|
|
158
|
+
set value(p: number);
|
|
159
|
+
get value(): number;
|
|
160
|
+
set deref(v: T);
|
|
161
|
+
get deref(): T;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
type int32 = number & {
|
|
165
|
+
__brand: "int32";
|
|
166
|
+
};
|
|
167
|
+
declare function Int32(value: number): int32;
|
|
168
|
+
declare class SharedInt32 extends SharedPrimitive<int32> {
|
|
169
|
+
static readonly byteSize: number;
|
|
170
|
+
static fromData(heap: SharedHeap, v: int32): SharedInt32;
|
|
171
|
+
set value(v: int32);
|
|
172
|
+
get value(): int32;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
type uint32 = number & {
|
|
176
|
+
__brand: "uint32";
|
|
177
|
+
};
|
|
178
|
+
declare function Uint32(value: number): uint32;
|
|
179
|
+
declare class SharedUint32 extends SharedPrimitive<uint32> {
|
|
180
|
+
static readonly byteSize: number;
|
|
181
|
+
static fromData(heap: SharedHeap, v: uint32): SharedUint32;
|
|
182
|
+
set value(v: uint32);
|
|
183
|
+
get value(): uint32;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
interface WorkerMessageData {
|
|
187
|
+
tag: "message";
|
|
188
|
+
label: string;
|
|
189
|
+
data: any;
|
|
190
|
+
}
|
|
191
|
+
interface WorkerMessageSync {
|
|
192
|
+
tag: "sync";
|
|
193
|
+
name: string;
|
|
194
|
+
buffer: SharedArrayBuffer | null;
|
|
195
|
+
heapID: number;
|
|
196
|
+
rebound: boolean;
|
|
197
|
+
}
|
|
198
|
+
interface WorkerMessageAllocate {
|
|
199
|
+
tag: "assign";
|
|
200
|
+
name: string;
|
|
201
|
+
heapID: number;
|
|
202
|
+
addr: number;
|
|
203
|
+
rebound: boolean;
|
|
204
|
+
}
|
|
205
|
+
type WorkerMessage = WorkerMessageData | WorkerMessageSync | WorkerMessageAllocate;
|
|
206
|
+
type ThreadEvent = {
|
|
207
|
+
internalmessage: [WorkerMessage];
|
|
208
|
+
message: [data: any, label: string];
|
|
209
|
+
sync: [name: string, buffer: SharedArrayBuffer | null, heapID: number, rebound: boolean];
|
|
210
|
+
assign: [name: string, heapID: number, addr: number, rebound: boolean];
|
|
211
|
+
error: [err: Error];
|
|
212
|
+
messageerror: [err: Error];
|
|
213
|
+
online: [];
|
|
214
|
+
exit: [exitCode: number];
|
|
215
|
+
};
|
|
216
|
+
interface ThreadStatic {
|
|
217
|
+
sendToThread(threadId: number, data: any, label: string | null): void;
|
|
218
|
+
transferToThread(threadId: number, data: any, transferList: Transferable[], label: string | null): void;
|
|
219
|
+
}
|
|
220
|
+
interface UnifiedPort {
|
|
221
|
+
postMessage(value: any, transferList?: ReadonlyArray<any>): void;
|
|
222
|
+
}
|
|
223
|
+
type PortHandle = (Worker | MessagePort) & EventEmitter & UnifiedPort;
|
|
224
|
+
interface ThreadConfig {
|
|
225
|
+
transient?: boolean;
|
|
226
|
+
logLevel?: 0 | 1 | 2;
|
|
227
|
+
timeout?: number | undefined;
|
|
228
|
+
useTypescript?: boolean;
|
|
229
|
+
workerOptions?: WorkerOptions;
|
|
230
|
+
}
|
|
231
|
+
declare abstract class Thread extends EventEmitter<ThreadEvent> {
|
|
232
|
+
static sendToThread(threadId: number, data: any, label?: string | null): Promise<void>;
|
|
233
|
+
static transferToThread(threadId: number, data: any, transferList: Transferable[], label?: string | null): Promise<void>;
|
|
234
|
+
protected port: PortHandle;
|
|
235
|
+
protected config: ThreadConfig;
|
|
236
|
+
constructor(port: PortHandle, config?: ThreadConfig);
|
|
237
|
+
send(data: any, label?: string | null): void;
|
|
238
|
+
sendWithTransfer(data: any, transferList: Transferable[], label?: string | null): void;
|
|
239
|
+
request(data: any, label?: string | null): Promise<any>;
|
|
240
|
+
listenOnce(cb: Function, label?: string | null): void;
|
|
241
|
+
listenAll(cb: Function, label?: string | null): void;
|
|
242
|
+
respondOnce(cb: Function, label?: string | null): void;
|
|
243
|
+
respondAll(cb: Function, label?: string | null): void;
|
|
244
|
+
addHeap(heap: SharedHeap | SharedArrayBuffer, name: string): Promise<void>;
|
|
245
|
+
syncHeap(name: string): Promise<SharedHeap>;
|
|
246
|
+
addVar(data: SharedType, name: string): Promise<void>;
|
|
247
|
+
syncVar(name: string): Promise<SharedType>;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
declare class MainThread extends Thread {
|
|
251
|
+
static get optimalTypeRegistrys(): number;
|
|
252
|
+
private worker;
|
|
253
|
+
private active;
|
|
254
|
+
constructor(path: string | Function, config?: ThreadConfig);
|
|
255
|
+
ready(): Promise<void>;
|
|
256
|
+
terminate(): Promise<number>;
|
|
257
|
+
private err;
|
|
258
|
+
get isActive(): boolean;
|
|
259
|
+
ref(): void;
|
|
260
|
+
unref(): void;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
declare class WorkerThread extends Thread {
|
|
264
|
+
private _workerData;
|
|
265
|
+
constructor();
|
|
266
|
+
get workerData(): any;
|
|
267
|
+
private err;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
declare const WorkerThreadExport: WorkerThread;
|
|
271
|
+
|
|
272
|
+
export { Int32, MainThread, type PortHandle, SharedArray, SharedHeap, SharedInt32, SharedPointer, SharedPrimitive, type SharedPrimitiveClass, type SharedPrimitiveStatic, SharedReference, type SharedReferenceClass, type SharedReferenceStatic, SharedStruct, SharedType, type SharedTypeClass, SharedUint32, Thread, type ThreadConfig, type ThreadEvent, type ThreadStatic, TypeRegistry, Uint32, type VariableDeclaration, type WorkerMessage, WorkerThreadExport as WorkerThread, type int32, type uint32 };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { Transferable, Worker, MessagePort, WorkerOptions } from 'node:worker_threads';
|
|
2
|
+
export { isMainThread } from 'node:worker_threads';
|
|
3
|
+
import { EventEmitter } from 'node:events';
|
|
4
|
+
|
|
5
|
+
declare class SharedHeap {
|
|
6
|
+
private static heaps;
|
|
7
|
+
static getHeapByID(i: number): SharedHeap;
|
|
8
|
+
private readonly _heapID;
|
|
9
|
+
private readonly _heapSize;
|
|
10
|
+
private readonly _buffer;
|
|
11
|
+
private readonly _view;
|
|
12
|
+
private static readonly SHIFT_TYPEID;
|
|
13
|
+
private static readonly SHIFT_ARRAY;
|
|
14
|
+
private static readonly SHIFT_PTR;
|
|
15
|
+
private static readonly SHIFT_ALLOC;
|
|
16
|
+
private static readonly MASK_TYPEID;
|
|
17
|
+
private static readonly MASK_ARRAY;
|
|
18
|
+
private static readonly MASK_PTR;
|
|
19
|
+
private static readonly MASK_ALLOC;
|
|
20
|
+
constructor(b: number | SharedArrayBuffer, heapID?: number);
|
|
21
|
+
get heapID(): number;
|
|
22
|
+
get view(): DataView;
|
|
23
|
+
get heapSize(): number;
|
|
24
|
+
get buffer(): SharedArrayBuffer;
|
|
25
|
+
get listHead(): number;
|
|
26
|
+
set listHead(offset: number);
|
|
27
|
+
private getHeaderSize;
|
|
28
|
+
getHeaderAllocated(offset: number): number;
|
|
29
|
+
private writeHeader;
|
|
30
|
+
syncFreeList(): void;
|
|
31
|
+
allocate(requestedSize: number, typeID: number, isPtr?: boolean, isArray?: boolean): number;
|
|
32
|
+
free(ptr: number): void;
|
|
33
|
+
private addFreeNodeToFront;
|
|
34
|
+
getTypeIDAt(ptr: number): number;
|
|
35
|
+
getAllocAt(ptr: number): number;
|
|
36
|
+
getPtrAt(ptr: number): number;
|
|
37
|
+
getArrayAt(ptr: number): number;
|
|
38
|
+
private removeFreeNode;
|
|
39
|
+
private replaceFreeNode;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
interface SharedPrimitiveStatic<T> {
|
|
43
|
+
typeID: number;
|
|
44
|
+
byteSize: number;
|
|
45
|
+
isPtr: boolean;
|
|
46
|
+
isArr: boolean;
|
|
47
|
+
fromData(heap: SharedHeap, v: any): SharedPrimitive<T>;
|
|
48
|
+
new (heap: SharedHeap, addr: number): SharedPrimitive<T>;
|
|
49
|
+
}
|
|
50
|
+
declare abstract class SharedPrimitive<T> extends SharedType {
|
|
51
|
+
static typeID: number;
|
|
52
|
+
static readonly byteSize: number;
|
|
53
|
+
static readonly isPtr: boolean;
|
|
54
|
+
static readonly isArr: boolean;
|
|
55
|
+
abstract set value(v: T);
|
|
56
|
+
abstract get value(): T;
|
|
57
|
+
}
|
|
58
|
+
type SharedPrimitiveClass<T> = SharedPrimitiveStatic<T>;
|
|
59
|
+
|
|
60
|
+
interface SharedReferenceStatic {
|
|
61
|
+
typeID: number;
|
|
62
|
+
isPtr: boolean;
|
|
63
|
+
isArr: boolean;
|
|
64
|
+
readonly byteSize: number;
|
|
65
|
+
fromData<T extends SharedReference>(heap: SharedHeap, v: any): T;
|
|
66
|
+
new (heap: SharedHeap, addr: number): SharedReference;
|
|
67
|
+
}
|
|
68
|
+
declare abstract class SharedReference extends SharedType {
|
|
69
|
+
static typeID: number;
|
|
70
|
+
static readonly isPtr: boolean;
|
|
71
|
+
static readonly isArr: boolean;
|
|
72
|
+
abstract get byteSize(): number;
|
|
73
|
+
}
|
|
74
|
+
type SharedReferenceClass = SharedReferenceStatic;
|
|
75
|
+
|
|
76
|
+
interface SharedType {
|
|
77
|
+
typeID: number;
|
|
78
|
+
}
|
|
79
|
+
declare abstract class SharedType {
|
|
80
|
+
protected _addr: number;
|
|
81
|
+
protected _heap: SharedHeap;
|
|
82
|
+
constructor(heap: SharedHeap, addr: number);
|
|
83
|
+
get addr(): number;
|
|
84
|
+
get heap(): SharedHeap;
|
|
85
|
+
}
|
|
86
|
+
type SharedTypeClass = SharedReferenceClass | SharedPrimitiveClass<any>;
|
|
87
|
+
|
|
88
|
+
declare class TypeRegistry {
|
|
89
|
+
private static indexToType;
|
|
90
|
+
private static typeToIndex;
|
|
91
|
+
private static hashToType;
|
|
92
|
+
private static typeToHash;
|
|
93
|
+
private static indexToHash;
|
|
94
|
+
static fnv1(str: string): number;
|
|
95
|
+
static registerType(dataType: SharedTypeClass): number;
|
|
96
|
+
static getTypeBuffer(): ArrayBuffer;
|
|
97
|
+
static verifyTypeBuffer(typeBuffer: ArrayBuffer): void;
|
|
98
|
+
static getTypeByIndex(index: number): SharedTypeClass;
|
|
99
|
+
static getTypeByHash(hash: number): SharedTypeClass;
|
|
100
|
+
static getIndexByType(type: SharedTypeClass): number;
|
|
101
|
+
static getHashByType(type: SharedTypeClass): number;
|
|
102
|
+
private constructor();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
type VariableDeclaration = {
|
|
106
|
+
type: SharedPrimitiveClass<any>;
|
|
107
|
+
param?: any;
|
|
108
|
+
} | {
|
|
109
|
+
type: SharedReferenceClass;
|
|
110
|
+
param: any;
|
|
111
|
+
};
|
|
112
|
+
declare class SharedStruct extends SharedReference {
|
|
113
|
+
static fromData<T extends SharedStruct>(this: (new (heap: SharedHeap, addr: number) => T) & SharedReferenceStatic, heap: SharedHeap, param: any): T;
|
|
114
|
+
static readonly properties: Record<string, VariableDeclaration>;
|
|
115
|
+
protected _byteSize: number;
|
|
116
|
+
protected properties: Record<string, SharedType>;
|
|
117
|
+
constructor(heap: SharedHeap, addr: number);
|
|
118
|
+
imprint(obj?: Record<string, any>): void;
|
|
119
|
+
static get byteSize(): number;
|
|
120
|
+
get byteSize(): number;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
declare class SharedArray<T extends SharedType> extends SharedReference {
|
|
124
|
+
static readonly isArr: boolean;
|
|
125
|
+
static readonly properties: Record<string, VariableDeclaration>;
|
|
126
|
+
static fromData<U extends SharedReference>(heap: SharedHeap, v: any): U;
|
|
127
|
+
protected readonly _heldType: SharedTypeClass;
|
|
128
|
+
protected readonly _elementType: SharedTypeClass;
|
|
129
|
+
protected readonly _elementSize: number;
|
|
130
|
+
protected readonly _byteSize: number;
|
|
131
|
+
protected readonly _length: number;
|
|
132
|
+
protected readonly elements: T[];
|
|
133
|
+
constructor(heap: SharedHeap, addr: number);
|
|
134
|
+
get addr(): number;
|
|
135
|
+
get heap(): SharedHeap;
|
|
136
|
+
get heldType(): SharedTypeClass;
|
|
137
|
+
get elementType(): SharedTypeClass;
|
|
138
|
+
get elementSize(): number;
|
|
139
|
+
static get byteSize(): number;
|
|
140
|
+
get byteSize(): number;
|
|
141
|
+
get length(): number;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
interface PointerDefinition {
|
|
145
|
+
type: SharedTypeClass;
|
|
146
|
+
addr?: number;
|
|
147
|
+
}
|
|
148
|
+
declare class SharedPointer<T extends SharedType> extends SharedPrimitive<any> {
|
|
149
|
+
static readonly byteSize: number;
|
|
150
|
+
static readonly isPtr: boolean;
|
|
151
|
+
static fromData(heap: SharedHeap, v: PointerDefinition): SharedPointer<SharedType>;
|
|
152
|
+
protected readonly _heldType: SharedTypeClass;
|
|
153
|
+
protected _deref: SharedType | null;
|
|
154
|
+
constructor(heap: SharedHeap, addr: number, dataType?: SharedTypeClass);
|
|
155
|
+
get heldType(): SharedTypeClass;
|
|
156
|
+
get addr(): number;
|
|
157
|
+
get heap(): SharedHeap;
|
|
158
|
+
set value(p: number);
|
|
159
|
+
get value(): number;
|
|
160
|
+
set deref(v: T);
|
|
161
|
+
get deref(): T;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
type int32 = number & {
|
|
165
|
+
__brand: "int32";
|
|
166
|
+
};
|
|
167
|
+
declare function Int32(value: number): int32;
|
|
168
|
+
declare class SharedInt32 extends SharedPrimitive<int32> {
|
|
169
|
+
static readonly byteSize: number;
|
|
170
|
+
static fromData(heap: SharedHeap, v: int32): SharedInt32;
|
|
171
|
+
set value(v: int32);
|
|
172
|
+
get value(): int32;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
type uint32 = number & {
|
|
176
|
+
__brand: "uint32";
|
|
177
|
+
};
|
|
178
|
+
declare function Uint32(value: number): uint32;
|
|
179
|
+
declare class SharedUint32 extends SharedPrimitive<uint32> {
|
|
180
|
+
static readonly byteSize: number;
|
|
181
|
+
static fromData(heap: SharedHeap, v: uint32): SharedUint32;
|
|
182
|
+
set value(v: uint32);
|
|
183
|
+
get value(): uint32;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
interface WorkerMessageData {
|
|
187
|
+
tag: "message";
|
|
188
|
+
label: string;
|
|
189
|
+
data: any;
|
|
190
|
+
}
|
|
191
|
+
interface WorkerMessageSync {
|
|
192
|
+
tag: "sync";
|
|
193
|
+
name: string;
|
|
194
|
+
buffer: SharedArrayBuffer | null;
|
|
195
|
+
heapID: number;
|
|
196
|
+
rebound: boolean;
|
|
197
|
+
}
|
|
198
|
+
interface WorkerMessageAllocate {
|
|
199
|
+
tag: "assign";
|
|
200
|
+
name: string;
|
|
201
|
+
heapID: number;
|
|
202
|
+
addr: number;
|
|
203
|
+
rebound: boolean;
|
|
204
|
+
}
|
|
205
|
+
type WorkerMessage = WorkerMessageData | WorkerMessageSync | WorkerMessageAllocate;
|
|
206
|
+
type ThreadEvent = {
|
|
207
|
+
internalmessage: [WorkerMessage];
|
|
208
|
+
message: [data: any, label: string];
|
|
209
|
+
sync: [name: string, buffer: SharedArrayBuffer | null, heapID: number, rebound: boolean];
|
|
210
|
+
assign: [name: string, heapID: number, addr: number, rebound: boolean];
|
|
211
|
+
error: [err: Error];
|
|
212
|
+
messageerror: [err: Error];
|
|
213
|
+
online: [];
|
|
214
|
+
exit: [exitCode: number];
|
|
215
|
+
};
|
|
216
|
+
interface ThreadStatic {
|
|
217
|
+
sendToThread(threadId: number, data: any, label: string | null): void;
|
|
218
|
+
transferToThread(threadId: number, data: any, transferList: Transferable[], label: string | null): void;
|
|
219
|
+
}
|
|
220
|
+
interface UnifiedPort {
|
|
221
|
+
postMessage(value: any, transferList?: ReadonlyArray<any>): void;
|
|
222
|
+
}
|
|
223
|
+
type PortHandle = (Worker | MessagePort) & EventEmitter & UnifiedPort;
|
|
224
|
+
interface ThreadConfig {
|
|
225
|
+
transient?: boolean;
|
|
226
|
+
logLevel?: 0 | 1 | 2;
|
|
227
|
+
timeout?: number | undefined;
|
|
228
|
+
useTypescript?: boolean;
|
|
229
|
+
workerOptions?: WorkerOptions;
|
|
230
|
+
}
|
|
231
|
+
declare abstract class Thread extends EventEmitter<ThreadEvent> {
|
|
232
|
+
static sendToThread(threadId: number, data: any, label?: string | null): Promise<void>;
|
|
233
|
+
static transferToThread(threadId: number, data: any, transferList: Transferable[], label?: string | null): Promise<void>;
|
|
234
|
+
protected port: PortHandle;
|
|
235
|
+
protected config: ThreadConfig;
|
|
236
|
+
constructor(port: PortHandle, config?: ThreadConfig);
|
|
237
|
+
send(data: any, label?: string | null): void;
|
|
238
|
+
sendWithTransfer(data: any, transferList: Transferable[], label?: string | null): void;
|
|
239
|
+
request(data: any, label?: string | null): Promise<any>;
|
|
240
|
+
listenOnce(cb: Function, label?: string | null): void;
|
|
241
|
+
listenAll(cb: Function, label?: string | null): void;
|
|
242
|
+
respondOnce(cb: Function, label?: string | null): void;
|
|
243
|
+
respondAll(cb: Function, label?: string | null): void;
|
|
244
|
+
addHeap(heap: SharedHeap | SharedArrayBuffer, name: string): Promise<void>;
|
|
245
|
+
syncHeap(name: string): Promise<SharedHeap>;
|
|
246
|
+
addVar(data: SharedType, name: string): Promise<void>;
|
|
247
|
+
syncVar(name: string): Promise<SharedType>;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
declare class MainThread extends Thread {
|
|
251
|
+
static get optimalTypeRegistrys(): number;
|
|
252
|
+
private worker;
|
|
253
|
+
private active;
|
|
254
|
+
constructor(path: string | Function, config?: ThreadConfig);
|
|
255
|
+
ready(): Promise<void>;
|
|
256
|
+
terminate(): Promise<number>;
|
|
257
|
+
private err;
|
|
258
|
+
get isActive(): boolean;
|
|
259
|
+
ref(): void;
|
|
260
|
+
unref(): void;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
declare class WorkerThread extends Thread {
|
|
264
|
+
private _workerData;
|
|
265
|
+
constructor();
|
|
266
|
+
get workerData(): any;
|
|
267
|
+
private err;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
declare const WorkerThreadExport: WorkerThread;
|
|
271
|
+
|
|
272
|
+
export { Int32, MainThread, type PortHandle, SharedArray, SharedHeap, SharedInt32, SharedPointer, SharedPrimitive, type SharedPrimitiveClass, type SharedPrimitiveStatic, SharedReference, type SharedReferenceClass, type SharedReferenceStatic, SharedStruct, SharedType, type SharedTypeClass, SharedUint32, Thread, type ThreadConfig, type ThreadEvent, type ThreadStatic, TypeRegistry, Uint32, type VariableDeclaration, type WorkerMessage, WorkerThreadExport as WorkerThread, type int32, type uint32 };
|