@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.
Files changed (69) hide show
  1. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +1469 -511
  2. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +61 -5
  3. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
  4. package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +61 -5
  5. package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +61 -5
  6. package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1628 -523
  7. package/node_modules/@emnapi/core/dist/emnapi-core.js +1705 -585
  8. package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +61 -5
  9. package/node_modules/@emnapi/core/dist/emnapi-core.min.js +1 -1
  10. package/node_modules/@emnapi/core/dist/emnapi-core.min.mjs +1 -1
  11. package/node_modules/@emnapi/core/dist/emnapi-core.mjs +1469 -511
  12. package/node_modules/@emnapi/core/package.json +2 -2
  13. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +44 -14
  14. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +15 -7
  15. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
  16. package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +15 -7
  17. package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +15 -7
  18. package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +45 -14
  19. package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +12 -6
  20. package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +45 -14
  21. package/node_modules/@emnapi/runtime/dist/emnapi.js +45 -14
  22. package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +15 -7
  23. package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
  24. package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
  25. package/node_modules/@emnapi/runtime/dist/emnapi.mjs +44 -14
  26. package/node_modules/@emnapi/runtime/package.json +1 -1
  27. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +67 -63
  28. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +59 -2
  29. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
  30. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +59 -2
  31. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +59 -2
  32. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +67 -63
  33. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +67 -63
  34. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +59 -2
  35. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -1
  36. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -1
  37. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +67 -63
  38. package/node_modules/@emnapi/wasi-threads/package.json +1 -1
  39. package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +299 -0
  40. package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +22125 -20726
  41. package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +294 -0
  42. package/node_modules/@napi-rs/wasm-runtime/package.json +25 -16
  43. package/node_modules/@napi-rs/wasm-runtime/runtime.cjs +1 -1
  44. package/node_modules/@napi-rs/wasm-runtime/runtime.js +8 -0
  45. package/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts +6 -0
  46. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +215 -33
  47. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +215 -33
  48. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
  49. package/node_modules/@tybys/wasm-util/dist/wasm-util.js +215 -33
  50. package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
  51. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js +12 -14
  52. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
  53. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +61 -19
  54. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs +12 -14
  55. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
  56. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +61 -19
  57. package/node_modules/@tybys/wasm-util/package.json +1 -1
  58. package/node_modules/tslib/package.json +1 -1
  59. package/node_modules/tslib/tslib.es6.js +10 -1
  60. package/node_modules/tslib/tslib.es6.mjs +10 -1
  61. package/node_modules/tslib/tslib.js +42 -33
  62. package/package.json +7 -7
  63. package/tailwindcss-oxide.wasi-browser.js +7 -3
  64. package/tailwindcss-oxide.wasi.cjs +27 -4
  65. package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
  66. package/wasi-worker-browser.mjs +2 -0
  67. package/node_modules/@napi-rs/wasm-runtime/LICENSE +0 -43
  68. package/node_modules/@napi-rs/wasm-runtime/dist/runtime.js +0 -12285
  69. 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
- err(message + ' ' + e.message);
257
- if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) {
258
- try {
259
- _this.terminateAllThreads();
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
- catch (_) { }
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
- for (var i = 0; i < this.runningWorkers.length; ++i) {
384
- this.terminateWorker(this.runningWorkers[i]);
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 -6;
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.ref();
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 -6;
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
- var start = wasi.start;
773
- if (typeof start === 'function') {
774
- wasi.start = function (instance) {
775
- try {
776
- return start.call(this, instance);
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
- throw err;
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
- if (type === 'load') {
835
- this._load(payload_1);
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
- else if (type === 'start') {
838
- this.handleAfterLoad(e, function () {
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
- if (typeof this.instance.exports.wasi_thread_start !== 'function') {
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
- this.instance.exports.wasi_thread_start(tid, startArg);
878
+ wasi_thread_start(tid, startArg);
877
879
  }
878
880
  catch (err) {
879
- if (isTrapError(err)) {
880
- postMessage(createMessage('terminate-all-threads', {}));
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
  };