@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.bd9cf92 → 0.0.0-insiders.bdcd708
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/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +1469 -511
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +61 -5
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +61 -5
- package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +61 -5
- package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1628 -523
- package/node_modules/@emnapi/core/dist/emnapi-core.js +1705 -585
- package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +61 -5
- package/node_modules/@emnapi/core/dist/emnapi-core.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.min.mjs +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.mjs +1469 -511
- package/node_modules/@emnapi/core/package.json +2 -2
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +44 -14
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +15 -7
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +15 -7
- package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +15 -7
- package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +45 -14
- package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +12 -6
- package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +45 -14
- package/node_modules/@emnapi/runtime/dist/emnapi.js +45 -14
- package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +15 -7
- package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.mjs +44 -14
- package/node_modules/@emnapi/runtime/package.json +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +67 -63
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +59 -2
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +59 -2
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +59 -2
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +67 -63
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +67 -63
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +59 -2
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +67 -63
- package/node_modules/@emnapi/wasi-threads/package.json +1 -1
- package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +299 -0
- package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +22125 -20726
- package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +294 -0
- package/node_modules/@napi-rs/wasm-runtime/package.json +25 -16
- package/node_modules/@napi-rs/wasm-runtime/runtime.cjs +1 -1
- package/node_modules/@napi-rs/wasm-runtime/runtime.js +8 -0
- package/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts +6 -0
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +215 -33
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +215 -33
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
- package/node_modules/@tybys/wasm-util/dist/wasm-util.js +215 -33
- package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js +12 -14
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +61 -19
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs +12 -14
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +61 -19
- package/node_modules/@tybys/wasm-util/package.json +1 -1
- package/node_modules/tslib/package.json +1 -1
- package/node_modules/tslib/tslib.es6.js +10 -1
- package/node_modules/tslib/tslib.es6.mjs +10 -1
- package/node_modules/tslib/tslib.js +42 -33
- package/package.json +7 -7
- package/tailwindcss-oxide.wasi-browser.js +7 -3
- package/tailwindcss-oxide.wasi.cjs +27 -4
- package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
- package/wasi-worker-browser.mjs +2 -0
- package/node_modules/@napi-rs/wasm-runtime/LICENSE +0 -43
- package/node_modules/@napi-rs/wasm-runtime/dist/runtime.js +0 -12285
- package/node_modules/@napi-rs/wasm-runtime/fs-proxy.cjs +0 -209
|
@@ -15,6 +15,30 @@ export declare interface ChildThreadOptions extends BaseOptions {
|
|
|
15
15
|
postMessage?: (data: any) => void;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/** @public */
|
|
19
|
+
export declare interface CleanupThreadPayload {
|
|
20
|
+
tid: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** @public */
|
|
24
|
+
export declare interface CommandInfo<T extends CommandType> {
|
|
25
|
+
type: T;
|
|
26
|
+
payload: CommandPayloadMap[T];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** @public */
|
|
30
|
+
export declare interface CommandPayloadMap {
|
|
31
|
+
load: LoadPayload;
|
|
32
|
+
loaded: LoadedPayload;
|
|
33
|
+
start: StartPayload;
|
|
34
|
+
'cleanup-thread': CleanupThreadPayload;
|
|
35
|
+
'terminate-all-threads': TerminateAllThreadsPayload;
|
|
36
|
+
'spawn-thread': SpawnThreadPayload;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** @public */
|
|
40
|
+
export declare type CommandType = keyof CommandPayloadMap;
|
|
41
|
+
|
|
18
42
|
/** @public */
|
|
19
43
|
export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance;
|
|
20
44
|
|
|
@@ -24,6 +48,11 @@ export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuf
|
|
|
24
48
|
/** @public */
|
|
25
49
|
export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError;
|
|
26
50
|
|
|
51
|
+
/** @public */
|
|
52
|
+
export declare interface LoadedPayload {
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** @public */
|
|
27
56
|
export declare interface LoadPayload {
|
|
28
57
|
wasmModule: WebAssembly.Module;
|
|
29
58
|
wasmMemory: WebAssembly.Memory;
|
|
@@ -47,6 +76,11 @@ export declare interface MainThreadOptionsWithThreadManager extends MainThreadBa
|
|
|
47
76
|
threadManager?: ThreadManager | (() => ThreadManager);
|
|
48
77
|
}
|
|
49
78
|
|
|
79
|
+
/** @public */
|
|
80
|
+
export declare interface MessageEventData<T extends CommandType> {
|
|
81
|
+
__emnapi__: CommandInfo<T>;
|
|
82
|
+
}
|
|
83
|
+
|
|
50
84
|
/** @public */
|
|
51
85
|
export declare interface ReuseWorkerOptions {
|
|
52
86
|
/**
|
|
@@ -59,16 +93,32 @@ export declare interface ReuseWorkerOptions {
|
|
|
59
93
|
strict?: boolean;
|
|
60
94
|
}
|
|
61
95
|
|
|
96
|
+
/** @public */
|
|
97
|
+
export declare interface SpawnThreadPayload {
|
|
98
|
+
startArg: number;
|
|
99
|
+
errorOrTid: number;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** @public */
|
|
103
|
+
export declare interface StartPayload {
|
|
104
|
+
tid: number;
|
|
105
|
+
arg: number;
|
|
106
|
+
sab?: Int32Array;
|
|
107
|
+
}
|
|
108
|
+
|
|
62
109
|
/** @public */
|
|
63
110
|
export declare interface StartResult {
|
|
64
111
|
exitCode: number;
|
|
65
112
|
instance: WebAssembly.Instance;
|
|
66
113
|
}
|
|
67
114
|
|
|
115
|
+
/** @public */
|
|
116
|
+
export declare interface TerminateAllThreadsPayload {
|
|
117
|
+
}
|
|
118
|
+
|
|
68
119
|
/** @public */
|
|
69
120
|
export declare class ThreadManager {
|
|
70
121
|
unusedWorkers: WorkerLike[];
|
|
71
|
-
runningWorkers: WorkerLike[];
|
|
72
122
|
pthreads: Record<number, WorkerLike>;
|
|
73
123
|
get nextWorkerID(): number;
|
|
74
124
|
wasmModule: WebAssembly.Module | null;
|
|
@@ -79,6 +129,7 @@ export declare class ThreadManager {
|
|
|
79
129
|
private readonly _reuseWorker;
|
|
80
130
|
private readonly _beforeLoad?;
|
|
81
131
|
/* Excluded from this release type: printErr */
|
|
132
|
+
threadSpawn?: ((startArg: number, errorOrTid?: number) => number);
|
|
82
133
|
constructor(options: ThreadManagerOptions);
|
|
83
134
|
init(): void;
|
|
84
135
|
initMainThread(): void;
|
|
@@ -105,6 +156,7 @@ export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadMana
|
|
|
105
156
|
/** @public */
|
|
106
157
|
export declare interface ThreadManagerOptionsBase {
|
|
107
158
|
printErr?: (message: string) => void;
|
|
159
|
+
threadSpawn?: (startArg: number, errorOrTid?: number) => number;
|
|
108
160
|
}
|
|
109
161
|
|
|
110
162
|
/** @public */
|
|
@@ -126,11 +178,12 @@ export declare class ThreadMessageHandler {
|
|
|
126
178
|
private messagesBeforeLoad;
|
|
127
179
|
protected postMessage: (message: any) => void;
|
|
128
180
|
protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike<WebAssembly.WebAssemblyInstantiatedSource>;
|
|
181
|
+
protected onError: (error: Error, type: WorkerMessageType) => void;
|
|
129
182
|
constructor(options?: ThreadMessageHandlerOptions);
|
|
130
183
|
/** @virtual */
|
|
131
184
|
instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike<WebAssembly.WebAssemblyInstantiatedSource>;
|
|
132
185
|
/** @virtual */
|
|
133
|
-
handle(e: WorkerMessageEvent): void;
|
|
186
|
+
handle(e: WorkerMessageEvent<MessageEventData<WorkerMessageType>>): void;
|
|
134
187
|
private _load;
|
|
135
188
|
private _start;
|
|
136
189
|
protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void;
|
|
@@ -140,6 +193,7 @@ export declare class ThreadMessageHandler {
|
|
|
140
193
|
/** @public */
|
|
141
194
|
export declare interface ThreadMessageHandlerOptions {
|
|
142
195
|
onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike<WebAssembly.WebAssemblyInstantiatedSource>;
|
|
196
|
+
onError?: (error: Error, type: WorkerMessageType) => void;
|
|
143
197
|
postMessage?: (message: any) => void;
|
|
144
198
|
}
|
|
145
199
|
|
|
@@ -211,4 +265,7 @@ export declare interface WorkerMessageEvent<T = any> {
|
|
|
211
265
|
data: T;
|
|
212
266
|
}
|
|
213
267
|
|
|
268
|
+
/** @public */
|
|
269
|
+
export declare type WorkerMessageType = 'load' | 'start';
|
|
270
|
+
|
|
214
271
|
export { }
|
|
@@ -15,6 +15,30 @@ export declare interface ChildThreadOptions extends BaseOptions {
|
|
|
15
15
|
postMessage?: (data: any) => void;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/** @public */
|
|
19
|
+
export declare interface CleanupThreadPayload {
|
|
20
|
+
tid: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** @public */
|
|
24
|
+
export declare interface CommandInfo<T extends CommandType> {
|
|
25
|
+
type: T;
|
|
26
|
+
payload: CommandPayloadMap[T];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** @public */
|
|
30
|
+
export declare interface CommandPayloadMap {
|
|
31
|
+
load: LoadPayload;
|
|
32
|
+
loaded: LoadedPayload;
|
|
33
|
+
start: StartPayload;
|
|
34
|
+
'cleanup-thread': CleanupThreadPayload;
|
|
35
|
+
'terminate-all-threads': TerminateAllThreadsPayload;
|
|
36
|
+
'spawn-thread': SpawnThreadPayload;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** @public */
|
|
40
|
+
export declare type CommandType = keyof CommandPayloadMap;
|
|
41
|
+
|
|
18
42
|
/** @public */
|
|
19
43
|
export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance;
|
|
20
44
|
|
|
@@ -24,6 +48,11 @@ export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuf
|
|
|
24
48
|
/** @public */
|
|
25
49
|
export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError;
|
|
26
50
|
|
|
51
|
+
/** @public */
|
|
52
|
+
export declare interface LoadedPayload {
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** @public */
|
|
27
56
|
export declare interface LoadPayload {
|
|
28
57
|
wasmModule: WebAssembly.Module;
|
|
29
58
|
wasmMemory: WebAssembly.Memory;
|
|
@@ -47,6 +76,11 @@ export declare interface MainThreadOptionsWithThreadManager extends MainThreadBa
|
|
|
47
76
|
threadManager?: ThreadManager | (() => ThreadManager);
|
|
48
77
|
}
|
|
49
78
|
|
|
79
|
+
/** @public */
|
|
80
|
+
export declare interface MessageEventData<T extends CommandType> {
|
|
81
|
+
__emnapi__: CommandInfo<T>;
|
|
82
|
+
}
|
|
83
|
+
|
|
50
84
|
/** @public */
|
|
51
85
|
export declare interface ReuseWorkerOptions {
|
|
52
86
|
/**
|
|
@@ -59,16 +93,32 @@ export declare interface ReuseWorkerOptions {
|
|
|
59
93
|
strict?: boolean;
|
|
60
94
|
}
|
|
61
95
|
|
|
96
|
+
/** @public */
|
|
97
|
+
export declare interface SpawnThreadPayload {
|
|
98
|
+
startArg: number;
|
|
99
|
+
errorOrTid: number;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** @public */
|
|
103
|
+
export declare interface StartPayload {
|
|
104
|
+
tid: number;
|
|
105
|
+
arg: number;
|
|
106
|
+
sab?: Int32Array;
|
|
107
|
+
}
|
|
108
|
+
|
|
62
109
|
/** @public */
|
|
63
110
|
export declare interface StartResult {
|
|
64
111
|
exitCode: number;
|
|
65
112
|
instance: WebAssembly.Instance;
|
|
66
113
|
}
|
|
67
114
|
|
|
115
|
+
/** @public */
|
|
116
|
+
export declare interface TerminateAllThreadsPayload {
|
|
117
|
+
}
|
|
118
|
+
|
|
68
119
|
/** @public */
|
|
69
120
|
export declare class ThreadManager {
|
|
70
121
|
unusedWorkers: WorkerLike[];
|
|
71
|
-
runningWorkers: WorkerLike[];
|
|
72
122
|
pthreads: Record<number, WorkerLike>;
|
|
73
123
|
get nextWorkerID(): number;
|
|
74
124
|
wasmModule: WebAssembly.Module | null;
|
|
@@ -79,6 +129,7 @@ export declare class ThreadManager {
|
|
|
79
129
|
private readonly _reuseWorker;
|
|
80
130
|
private readonly _beforeLoad?;
|
|
81
131
|
/* Excluded from this release type: printErr */
|
|
132
|
+
threadSpawn?: ((startArg: number, errorOrTid?: number) => number);
|
|
82
133
|
constructor(options: ThreadManagerOptions);
|
|
83
134
|
init(): void;
|
|
84
135
|
initMainThread(): void;
|
|
@@ -105,6 +156,7 @@ export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadMana
|
|
|
105
156
|
/** @public */
|
|
106
157
|
export declare interface ThreadManagerOptionsBase {
|
|
107
158
|
printErr?: (message: string) => void;
|
|
159
|
+
threadSpawn?: (startArg: number, errorOrTid?: number) => number;
|
|
108
160
|
}
|
|
109
161
|
|
|
110
162
|
/** @public */
|
|
@@ -126,11 +178,12 @@ export declare class ThreadMessageHandler {
|
|
|
126
178
|
private messagesBeforeLoad;
|
|
127
179
|
protected postMessage: (message: any) => void;
|
|
128
180
|
protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike<WebAssembly.WebAssemblyInstantiatedSource>;
|
|
181
|
+
protected onError: (error: Error, type: WorkerMessageType) => void;
|
|
129
182
|
constructor(options?: ThreadMessageHandlerOptions);
|
|
130
183
|
/** @virtual */
|
|
131
184
|
instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike<WebAssembly.WebAssemblyInstantiatedSource>;
|
|
132
185
|
/** @virtual */
|
|
133
|
-
handle(e: WorkerMessageEvent): void;
|
|
186
|
+
handle(e: WorkerMessageEvent<MessageEventData<WorkerMessageType>>): void;
|
|
134
187
|
private _load;
|
|
135
188
|
private _start;
|
|
136
189
|
protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void;
|
|
@@ -140,6 +193,7 @@ export declare class ThreadMessageHandler {
|
|
|
140
193
|
/** @public */
|
|
141
194
|
export declare interface ThreadMessageHandlerOptions {
|
|
142
195
|
onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike<WebAssembly.WebAssemblyInstantiatedSource>;
|
|
196
|
+
onError?: (error: Error, type: WorkerMessageType) => void;
|
|
143
197
|
postMessage?: (message: any) => void;
|
|
144
198
|
}
|
|
145
199
|
|
|
@@ -211,6 +265,9 @@ export declare interface WorkerMessageEvent<T = any> {
|
|
|
211
265
|
data: T;
|
|
212
266
|
}
|
|
213
267
|
|
|
268
|
+
/** @public */
|
|
269
|
+
export declare type WorkerMessageType = 'load' | 'start';
|
|
270
|
+
|
|
214
271
|
export { }
|
|
215
272
|
|
|
216
273
|
export as namespace wasiThreads;
|
|
@@ -125,7 +125,6 @@ var ThreadManager = /*#__PURE__*/ (function () {
|
|
|
125
125
|
function ThreadManager(options) {
|
|
126
126
|
var _a;
|
|
127
127
|
this.unusedWorkers = [];
|
|
128
|
-
this.runningWorkers = [];
|
|
129
128
|
this.pthreads = Object.create(null);
|
|
130
129
|
this.wasmModule = null;
|
|
131
130
|
this.wasmMemory = null;
|
|
@@ -150,6 +149,7 @@ var ThreadManager = /*#__PURE__*/ (function () {
|
|
|
150
149
|
this._beforeLoad = options.beforeLoad;
|
|
151
150
|
}
|
|
152
151
|
this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console);
|
|
152
|
+
this.threadSpawn = options.threadSpawn;
|
|
153
153
|
}
|
|
154
154
|
Object.defineProperty(ThreadManager.prototype, "nextWorkerID", {
|
|
155
155
|
get: function () { return nextWorkerID; },
|
|
@@ -233,7 +233,6 @@ var ThreadManager = /*#__PURE__*/ (function () {
|
|
|
233
233
|
delete this.pthreads[tid];
|
|
234
234
|
}
|
|
235
235
|
this.unusedWorkers.push(worker);
|
|
236
|
-
this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1);
|
|
237
236
|
delete worker.__emnapi_tid;
|
|
238
237
|
if (ENVIRONMENT_IS_NODE) {
|
|
239
238
|
worker.unref();
|
|
@@ -253,12 +252,17 @@ var ThreadManager = /*#__PURE__*/ (function () {
|
|
|
253
252
|
if (worker.__emnapi_tid !== undefined) {
|
|
254
253
|
message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!';
|
|
255
254
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
255
|
+
if ('message' in e) {
|
|
256
|
+
err(message + ' ' + e.message);
|
|
257
|
+
if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) {
|
|
258
|
+
try {
|
|
259
|
+
_this.terminateAllThreads();
|
|
260
|
+
}
|
|
261
|
+
catch (_) { }
|
|
260
262
|
}
|
|
261
|
-
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
err(message);
|
|
262
266
|
}
|
|
263
267
|
reject(e);
|
|
264
268
|
throw e;
|
|
@@ -282,6 +286,12 @@ var ThreadManager = /*#__PURE__*/ (function () {
|
|
|
282
286
|
_this_1.cleanThread(worker, payload.tid);
|
|
283
287
|
}
|
|
284
288
|
}
|
|
289
|
+
else if (type === 'spawn-thread') {
|
|
290
|
+
_this_1.threadSpawn(payload.startArg, payload.errorOrTid);
|
|
291
|
+
}
|
|
292
|
+
else if (type === 'terminate-all-threads') {
|
|
293
|
+
_this_1.terminateAllThreads();
|
|
294
|
+
}
|
|
285
295
|
}
|
|
286
296
|
};
|
|
287
297
|
worker.onmessage = function (e) {
|
|
@@ -356,10 +366,6 @@ var ThreadManager = /*#__PURE__*/ (function () {
|
|
|
356
366
|
}
|
|
357
367
|
else {
|
|
358
368
|
delete this.pthreads[tid];
|
|
359
|
-
var index = this.runningWorkers.indexOf(worker);
|
|
360
|
-
if (index !== -1) {
|
|
361
|
-
this.runningWorkers.splice(index, 1);
|
|
362
|
-
}
|
|
363
369
|
this.terminateWorker(worker);
|
|
364
370
|
delete worker.__emnapi_tid;
|
|
365
371
|
}
|
|
@@ -380,14 +386,14 @@ var ThreadManager = /*#__PURE__*/ (function () {
|
|
|
380
386
|
};
|
|
381
387
|
};
|
|
382
388
|
ThreadManager.prototype.terminateAllThreads = function () {
|
|
383
|
-
|
|
384
|
-
|
|
389
|
+
var runningWorkers = Object.values(this.pthreads);
|
|
390
|
+
for (var i = 0; i < runningWorkers.length; ++i) {
|
|
391
|
+
this.terminateWorker(runningWorkers[i]);
|
|
385
392
|
}
|
|
386
393
|
for (var i = 0; i < this.unusedWorkers.length; ++i) {
|
|
387
394
|
this.terminateWorker(this.unusedWorkers[i]);
|
|
388
395
|
}
|
|
389
396
|
this.unusedWorkers = [];
|
|
390
|
-
this.runningWorkers = [];
|
|
391
397
|
this.pthreads = Object.create(null);
|
|
392
398
|
this.preparePool();
|
|
393
399
|
};
|
|
@@ -537,18 +543,6 @@ var WASIThreads = /*#__PURE__*/ (function () {
|
|
|
537
543
|
}
|
|
538
544
|
this.postMessage = postMessage;
|
|
539
545
|
var wasm64 = Boolean(options.wasm64);
|
|
540
|
-
var onMessage = function (e) {
|
|
541
|
-
if (e.data.__emnapi__) {
|
|
542
|
-
var type = e.data.__emnapi__.type;
|
|
543
|
-
var payload = e.data.__emnapi__.payload;
|
|
544
|
-
if (type === 'spawn-thread') {
|
|
545
|
-
threadSpawn(payload.startArg, payload.errorOrTid);
|
|
546
|
-
}
|
|
547
|
-
else if (type === 'terminate-all-threads') {
|
|
548
|
-
_this_1.terminateAllThreads();
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
};
|
|
552
546
|
var threadSpawn = function (startArg, errorOrTid) {
|
|
553
547
|
var _a;
|
|
554
548
|
var EAGAIN = 6;
|
|
@@ -566,12 +560,12 @@ var WASIThreads = /*#__PURE__*/ (function () {
|
|
|
566
560
|
return 1;
|
|
567
561
|
}
|
|
568
562
|
else {
|
|
569
|
-
return -
|
|
563
|
+
return -EAGAIN;
|
|
570
564
|
}
|
|
571
565
|
}
|
|
572
566
|
if (!isNewABI) {
|
|
573
567
|
var malloc = _this_1.wasmInstance.exports.malloc;
|
|
574
|
-
errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : malloc(8);
|
|
568
|
+
errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : (malloc(8) >>> 0);
|
|
575
569
|
if (!errorOrTid) {
|
|
576
570
|
return -48; /* ENOMEM */
|
|
577
571
|
}
|
|
@@ -609,10 +603,9 @@ var WASIThreads = /*#__PURE__*/ (function () {
|
|
|
609
603
|
if (!worker) {
|
|
610
604
|
throw new Error('failed to get new worker');
|
|
611
605
|
}
|
|
612
|
-
PThread.addMessageEventListener(worker, onMessage);
|
|
613
606
|
tid = PThread.markId(worker);
|
|
614
607
|
if (ENVIRONMENT_IS_NODE) {
|
|
615
|
-
worker.
|
|
608
|
+
worker.unref();
|
|
616
609
|
}
|
|
617
610
|
worker.postMessage(createMessage('start', {
|
|
618
611
|
tid: tid,
|
|
@@ -623,10 +616,6 @@ var WASIThreads = /*#__PURE__*/ (function () {
|
|
|
623
616
|
if (typeof waitThreadStart === 'number') {
|
|
624
617
|
var waitResult = Atomics.wait(sab, 0, 0, waitThreadStart);
|
|
625
618
|
if (waitResult === 'timed-out') {
|
|
626
|
-
try {
|
|
627
|
-
PThread.cleanThread(worker, tid, true);
|
|
628
|
-
}
|
|
629
|
-
catch (_) { }
|
|
630
619
|
throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.');
|
|
631
620
|
}
|
|
632
621
|
}
|
|
@@ -635,15 +624,17 @@ var WASIThreads = /*#__PURE__*/ (function () {
|
|
|
635
624
|
}
|
|
636
625
|
var r = Atomics.load(sab, 0);
|
|
637
626
|
if (r > 1) {
|
|
638
|
-
try {
|
|
639
|
-
PThread.cleanThread(worker, tid, true);
|
|
640
|
-
}
|
|
641
|
-
catch (_) { }
|
|
642
627
|
throw deserizeErrorFromBuffer(sab.buffer);
|
|
643
628
|
}
|
|
644
629
|
}
|
|
645
630
|
}
|
|
646
631
|
catch (e) {
|
|
632
|
+
if (worker !== undefined && tid !== undefined) {
|
|
633
|
+
try {
|
|
634
|
+
PThread.cleanThread(worker, tid, true);
|
|
635
|
+
}
|
|
636
|
+
catch (_) { }
|
|
637
|
+
}
|
|
647
638
|
Atomics.store(struct, 0, 1);
|
|
648
639
|
Atomics.store(struct, 1, EAGAIN);
|
|
649
640
|
Atomics.notify(struct, 1);
|
|
@@ -652,12 +643,11 @@ var WASIThreads = /*#__PURE__*/ (function () {
|
|
|
652
643
|
return 1;
|
|
653
644
|
}
|
|
654
645
|
free(errorOrTid);
|
|
655
|
-
return -
|
|
646
|
+
return -EAGAIN;
|
|
656
647
|
}
|
|
657
648
|
Atomics.store(struct, 0, 0);
|
|
658
649
|
Atomics.store(struct, 1, tid);
|
|
659
650
|
Atomics.notify(struct, 1);
|
|
660
|
-
PThread.runningWorkers.push(worker);
|
|
661
651
|
if (!shouldWait) {
|
|
662
652
|
worker.whenLoaded.catch(function (err) {
|
|
663
653
|
delete worker.whenLoaded;
|
|
@@ -672,6 +662,9 @@ var WASIThreads = /*#__PURE__*/ (function () {
|
|
|
672
662
|
return tid;
|
|
673
663
|
};
|
|
674
664
|
this.threadSpawn = threadSpawn;
|
|
665
|
+
if (this.PThread) {
|
|
666
|
+
this.PThread.threadSpawn = threadSpawn;
|
|
667
|
+
}
|
|
675
668
|
}
|
|
676
669
|
WASIThreads.prototype.getImportObject = function () {
|
|
677
670
|
return {
|
|
@@ -769,19 +762,21 @@ function patchWasiInstance(wasiThreads, wasi) {
|
|
|
769
762
|
return proc_exit_1.call(this, code);
|
|
770
763
|
};
|
|
771
764
|
}
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
catch (err) {
|
|
779
|
-
if (isTrapError(err)) {
|
|
780
|
-
_this.terminateAllThreads();
|
|
765
|
+
if (!_this.childThread) {
|
|
766
|
+
var start_1 = wasi.start;
|
|
767
|
+
if (typeof start_1 === 'function') {
|
|
768
|
+
wasi.start = function (instance) {
|
|
769
|
+
try {
|
|
770
|
+
return start_1.call(this, instance);
|
|
781
771
|
}
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
772
|
+
catch (err) {
|
|
773
|
+
if (isTrapError(err)) {
|
|
774
|
+
_this.terminateAllThreads();
|
|
775
|
+
}
|
|
776
|
+
throw err;
|
|
777
|
+
}
|
|
778
|
+
};
|
|
779
|
+
}
|
|
785
780
|
}
|
|
786
781
|
patched.add(wasi);
|
|
787
782
|
}
|
|
@@ -813,6 +808,7 @@ var ThreadMessageHandler = /*#__PURE__*/ (function () {
|
|
|
813
808
|
}
|
|
814
809
|
this.postMessage = postMsg;
|
|
815
810
|
this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad;
|
|
811
|
+
this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : function (_type, err) { throw err; };
|
|
816
812
|
this.instance = undefined;
|
|
817
813
|
// this.module = undefined
|
|
818
814
|
this.messagesBeforeLoad = [];
|
|
@@ -831,13 +827,18 @@ var ThreadMessageHandler = /*#__PURE__*/ (function () {
|
|
|
831
827
|
if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) {
|
|
832
828
|
var type = e.data.__emnapi__.type;
|
|
833
829
|
var payload_1 = e.data.__emnapi__.payload;
|
|
834
|
-
|
|
835
|
-
|
|
830
|
+
try {
|
|
831
|
+
if (type === 'load') {
|
|
832
|
+
this._load(payload_1);
|
|
833
|
+
}
|
|
834
|
+
else if (type === 'start') {
|
|
835
|
+
this.handleAfterLoad(e, function () {
|
|
836
|
+
_this._start(payload_1);
|
|
837
|
+
});
|
|
838
|
+
}
|
|
836
839
|
}
|
|
837
|
-
|
|
838
|
-
this.
|
|
839
|
-
_this._start(payload_1);
|
|
840
|
-
});
|
|
840
|
+
catch (err) {
|
|
841
|
+
this.onError(err, type);
|
|
841
842
|
}
|
|
842
843
|
}
|
|
843
844
|
};
|
|
@@ -863,7 +864,8 @@ var ThreadMessageHandler = /*#__PURE__*/ (function () {
|
|
|
863
864
|
}
|
|
864
865
|
};
|
|
865
866
|
ThreadMessageHandler.prototype._start = function (payload) {
|
|
866
|
-
|
|
867
|
+
var wasi_thread_start = this.instance.exports.wasi_thread_start;
|
|
868
|
+
if (typeof wasi_thread_start !== 'function') {
|
|
867
869
|
var err = new TypeError('wasi_thread_start is not exported');
|
|
868
870
|
notifyPthreadCreateResult(payload.sab, 2, err);
|
|
869
871
|
throw err;
|
|
@@ -873,13 +875,15 @@ var ThreadMessageHandler = /*#__PURE__*/ (function () {
|
|
|
873
875
|
var startArg = payload.arg;
|
|
874
876
|
notifyPthreadCreateResult(payload.sab, 1);
|
|
875
877
|
try {
|
|
876
|
-
|
|
878
|
+
wasi_thread_start(tid, startArg);
|
|
877
879
|
}
|
|
878
880
|
catch (err) {
|
|
879
|
-
if (
|
|
880
|
-
|
|
881
|
+
if (err !== 'unwind') {
|
|
882
|
+
throw err;
|
|
883
|
+
}
|
|
884
|
+
else {
|
|
885
|
+
return;
|
|
881
886
|
}
|
|
882
|
-
throw err;
|
|
883
887
|
}
|
|
884
888
|
postMessage(createMessage('cleanup-thread', { tid: tid }));
|
|
885
889
|
};
|