emnapi 0.33.1 → 0.35.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.
@@ -1,37 +1,33 @@
1
1
  {{{ ((DEFAULT_LIBRARY_FUNCS_TO_INCLUDE.indexOf("$emnapiInit") === -1 ? DEFAULT_LIBRARY_FUNCS_TO_INCLUDE.push("$emnapiInit") : undefined), "") }}}
2
2
  {{{ ((EXPORTED_RUNTIME_METHODS.indexOf("emnapiInit") === -1 ? EXPORTED_RUNTIME_METHODS.push("emnapiInit") : undefined), "") }}}
3
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
4
- function emnapiCreateIdGenerator() {
5
- var obj = {
6
- nextId: 1,
7
- list: [],
8
- generate: function () {
9
- var id;
10
- if (obj.list.length) {
11
- id = obj.list.shift();
12
- }
13
- else {
14
- id = obj.nextId;
15
- obj.nextId++;
16
- }
17
- return id;
18
- },
19
- reuse: function (id) {
20
- obj.list.push(id);
21
- }
22
- };
23
- return obj;
24
- }
25
- var emnapiAsyncWork = {
3
+ var emnapiAWST = {
26
4
  idGen: {},
27
5
  values: [undefined],
28
6
  queued: new Set(),
29
7
  pending: [],
30
8
  init: function () {
31
- emnapiAsyncWork.idGen = emnapiCreateIdGenerator();
32
- emnapiAsyncWork.values = [undefined];
33
- emnapiAsyncWork.queued = new Set();
34
- emnapiAsyncWork.pending = [];
9
+ var idGen = {
10
+ nextId: 1,
11
+ list: [],
12
+ generate: function () {
13
+ var id;
14
+ if (idGen.list.length) {
15
+ id = idGen.list.shift();
16
+ }
17
+ else {
18
+ id = idGen.nextId;
19
+ idGen.nextId++;
20
+ }
21
+ return id;
22
+ },
23
+ reuse: function (id) {
24
+ idGen.list.push(id);
25
+ }
26
+ };
27
+ emnapiAWST.idGen = idGen;
28
+ emnapiAWST.values = [undefined];
29
+ emnapiAWST.queued = new Set();
30
+ emnapiAWST.pending = [];
35
31
  },
36
32
  create: function (env, resource, resourceName, execute, complete, data) {
37
33
  var asyncId = 0;
@@ -41,12 +37,11 @@ var emnapiAsyncWork = {
41
37
  asyncId = asyncContext.asyncId;
42
38
  triggerAsyncId = asyncContext.triggerAsyncId;
43
39
  }
44
- var id = emnapiAsyncWork.idGen.generate();
45
- emnapiAsyncWork.values[id] = {
40
+ var id = emnapiAWST.idGen.generate();
41
+ emnapiAWST.values[id] = {
46
42
  env: env,
47
43
  id: id,
48
44
  resource: resource,
49
- resourceName: resourceName,
50
45
  asyncId: asyncId,
51
46
  triggerAsyncId: triggerAsyncId,
52
47
  status: 0,
@@ -62,6 +57,8 @@ var emnapiAsyncWork = {
62
57
  var env = work.env;
63
58
  var data = work.data;
64
59
  var callback = function () {
60
+ if (!complete)
61
+ return;
65
62
  var envObject = emnapiCtx.envStore.get(env);
66
63
  var scope = emnapiCtx.openScope(envObject);
67
64
  try {
@@ -84,16 +81,16 @@ var emnapiAsyncWork = {
84
81
  }
85
82
  },
86
83
  queue: function (id) {
87
- var work = emnapiAsyncWork.values[id];
84
+ var work = emnapiAWST.values[id];
88
85
  if (!work)
89
86
  return;
90
87
  if (work.status === 0) {
91
88
  work.status = 1;
92
- if (emnapiAsyncWork.queued.size >= 4) {
93
- emnapiAsyncWork.pending.push(id);
89
+ if (emnapiAWST.queued.size >= (Math.abs(emnapiAsyncWorkPoolSize) || 4)) {
90
+ emnapiAWST.pending.push(id);
94
91
  return;
95
92
  }
96
- emnapiAsyncWork.queued.add(id);
93
+ emnapiAWST.queued.add(id);
97
94
  var env_1 = work.env;
98
95
  var data_1 = work.data;
99
96
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -101,25 +98,29 @@ var emnapiAsyncWork = {
101
98
  work.status = 2;
102
99
  emnapiCtx.feature.setImmediate(function () {
103
100
  {{{ makeDynCall('vpp', 'execute') }}}(env_1, data_1);
104
- emnapiAsyncWork.queued.delete(id);
101
+ emnapiAWST.queued.delete(id);
105
102
  work.status = 3;
106
- emnapiAsyncWork.callComplete(work, 0 /* napi_status.napi_ok */);
107
- if (emnapiAsyncWork.pending.length > 0) {
108
- var nextWorkId = emnapiAsyncWork.pending.shift();
109
- emnapiAsyncWork.values[nextWorkId].status = 0;
110
- emnapiAsyncWork.queue(nextWorkId);
103
+ emnapiCtx.feature.setImmediate(function () {
104
+ emnapiAWST.callComplete(work, 0 /* napi_status.napi_ok */);
105
+ });
106
+ if (emnapiAWST.pending.length > 0) {
107
+ var nextWorkId = emnapiAWST.pending.shift();
108
+ emnapiAWST.values[nextWorkId].status = 0;
109
+ emnapiAWST.queue(nextWorkId);
111
110
  }
112
111
  });
113
112
  }
114
113
  },
115
114
  cancel: function (id) {
116
- var index = emnapiAsyncWork.pending.indexOf(id);
115
+ var index = emnapiAWST.pending.indexOf(id);
117
116
  if (index !== -1) {
118
- var work = emnapiAsyncWork.values[id];
119
- if (work && (work.status === 1)) {
120
- work.status = 4;
121
- emnapiAsyncWork.pending.splice(index, 1);
122
- emnapiAsyncWork.callComplete(work, 11 /* napi_status.napi_cancelled */);
117
+ var work_1 = emnapiAWST.values[id];
118
+ if (work_1 && (work_1.status === 1)) {
119
+ work_1.status = 4;
120
+ emnapiAWST.pending.splice(index, 1);
121
+ emnapiCtx.feature.setImmediate(function () {
122
+ emnapiAWST.callComplete(work_1, 11 /* napi_status.napi_cancelled */);
123
+ });
123
124
  return 0 /* napi_status.napi_ok */;
124
125
  }
125
126
  else {
@@ -129,7 +130,7 @@ var emnapiAsyncWork = {
129
130
  return 9 /* napi_status.napi_generic_failure */;
130
131
  },
131
132
  remove: function (id) {
132
- var work = emnapiAsyncWork.values[id];
133
+ var work = emnapiAWST.values[id];
133
134
  if (!work)
134
135
  return;
135
136
  if (emnapiNodeBinding) {
@@ -138,68 +139,11 @@ var emnapiAsyncWork = {
138
139
  triggerAsyncId: work.triggerAsyncId
139
140
  });
140
141
  }
141
- emnapiAsyncWork.values[id] = undefined;
142
- emnapiAsyncWork.idGen.reuse(id);
142
+ emnapiAWST.values[id] = undefined;
143
+ emnapiAWST.idGen.reuse(id);
143
144
  }
144
145
  };
145
- function _napi_create_async_work(env, resource, resource_name, execute, complete, data, result) {
146
- if (env == 0)
147
- return 1 /* napi_status.napi_invalid_arg */;
148
- var envObject = emnapiCtx.envStore.get(env);
149
- if (execute == 0)
150
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
151
- if (result == 0)
152
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
153
- var resourceObject;
154
- if (resource) {
155
- resourceObject = Object(emnapiCtx.handleStore.get(resource).value);
156
- }
157
- else {
158
- resourceObject = {};
159
- }
160
- if (resource_name == 0)
161
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
162
- var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
163
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
164
- var id = emnapiAsyncWork.create(env, resourceObject, resourceName, execute, complete, data);
165
- {{{ makeSetValue('result', 0, 'id', '*') }}};
166
- return envObject.clearLastError();
167
- }
168
- function _napi_delete_async_work(env, work) {
169
- if (env == 0)
170
- return 1 /* napi_status.napi_invalid_arg */;
171
- var envObject = emnapiCtx.envStore.get(env);
172
- if (work == 0)
173
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
174
- emnapiAsyncWork.remove(work);
175
- return envObject.clearLastError();
176
- }
177
- function _napi_queue_async_work(env, work) {
178
- if (env == 0)
179
- return 1 /* napi_status.napi_invalid_arg */;
180
- var envObject = emnapiCtx.envStore.get(env);
181
- if (work == 0)
182
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
183
- emnapiAsyncWork.queue(work);
184
- return envObject.clearLastError();
185
- }
186
- function _napi_cancel_async_work(env, work) {
187
- if (env == 0)
188
- return 1 /* napi_status.napi_invalid_arg */;
189
- var envObject = emnapiCtx.envStore.get(env);
190
- if (work == 0)
191
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
192
- var status = emnapiAsyncWork.cancel(work);
193
- if (status === 0 /* napi_status.napi_ok */)
194
- return envObject.clearLastError();
195
- return envObject.setLastError(status);
196
- }
197
- emnapiImplementHelper('$emnapiCreateIdGenerator', undefined, emnapiCreateIdGenerator, []);
198
- emnapiDefineVar('$emnapiAsyncWork', emnapiAsyncWork, ['$emnapiCreateIdGenerator'], 'emnapiAsyncWork.init();');
199
- emnapiImplement('napi_create_async_work', 'ippppppp', _napi_create_async_work, ['$emnapiAsyncWork']);
200
- emnapiImplement('napi_delete_async_work', 'ipp', _napi_delete_async_work, ['$emnapiAsyncWork']);
201
- emnapiImplement('napi_queue_async_work', 'ipp', _napi_queue_async_work, ['$emnapiAsyncWork']);
202
- emnapiImplement('napi_cancel_async_work', 'ipp', _napi_cancel_async_work, ['$emnapiAsyncWork']);
146
+ emnapiDefineVar('$emnapiAWST', emnapiAWST, ['$emnapiAsyncWorkPoolSize'], 'emnapiAWST.init();');
203
147
  function _emnapi_create_memory_view(env, typedarray_type, external_data, byte_length, finalize_cb, finalize_hint, result
204
148
  // @ts-expect-error
205
149
  ) {
@@ -800,14 +744,14 @@ emnapiImplement('node_api_create_syntax_error', 'ipppp', node_api_create_syntax_
800
744
  emnapiImplement('napi_is_exception_pending', 'ipp', napi_is_exception_pending);
801
745
  emnapiImplement('napi_fatal_error', 'vpppp', napi_fatal_error, ['$emnapiUtf8ToString']);
802
746
  emnapiImplement('napi_fatal_exception', 'ipp', napi_fatal_exception);
803
- /* eslint-disable @typescript-eslint/restrict-plus-operands */
804
747
  // @ts-expect-error
805
748
  function napi_create_function(env, utf8name, length, cb, data, result) {
806
749
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
807
750
  var value;
808
751
  if (env == 0)
809
752
  return 1 /* napi_status.napi_invalid_arg */;
810
- var envObject_10 = emnapiCtx.envStore.get(env);
753
+ var envObject_10 = emnapiCtx
754
+ .envStore.get(env);
811
755
  if (envObject_10.tryCatch.hasCaught())
812
756
  return envObject_10.setLastError(10 /* napi_status.napi_pending_exception */);
813
757
  envObject_10.clearLastError();
@@ -881,7 +825,8 @@ function napi_call_function(env, recv, func, argc, argv, result
881
825
  var v;
882
826
  if (env == 0)
883
827
  return 1 /* napi_status.napi_invalid_arg */;
884
- var envObject_11 = emnapiCtx.envStore.get(env);
828
+ var envObject_11 = emnapiCtx
829
+ .envStore.get(env);
885
830
  if (envObject_11.tryCatch.hasCaught())
886
831
  return envObject_11.setLastError(10 /* napi_status.napi_pending_exception */);
887
832
  envObject_11.clearLastError();
@@ -927,7 +872,8 @@ function napi_new_instance(env, constructor, argc, argv, result
927
872
  var v;
928
873
  if (env == 0)
929
874
  return 1 /* napi_status.napi_invalid_arg */;
930
- var envObject_12 = emnapiCtx.envStore.get(env);
875
+ var envObject_12 = emnapiCtx
876
+ .envStore.get(env);
931
877
  if (envObject_12.tryCatch.hasCaught())
932
878
  return envObject_12.setLastError(10 /* napi_status.napi_pending_exception */);
933
879
  envObject_12.clearLastError();
@@ -1545,7 +1491,6 @@ function __emnapi_node_make_callback(env, async_resource, cb, argv, size, async_
1545
1491
  size = size >>> 0;
1546
1492
  var arr = Array(size);
1547
1493
  for (; i < size; i++) {
1548
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/restrict-plus-operands
1549
1494
  var argVal = {{{ makeGetValue('argv', 'i * ' + POINTER_SIZE, '*') }}};
1550
1495
  arr[i] = emnapiCtx.handleStore.get(argVal).value;
1551
1496
  }
@@ -1641,7 +1586,6 @@ function napi_make_callback(env, async_context, recv, func, argc, argv, result)
1641
1586
  argc = argc >>> 0;
1642
1587
  var arr_1 = Array(argc);
1643
1588
  for (; i < argc; i++) {
1644
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/restrict-plus-operands
1645
1589
  var argVal_4 = {{{ makeGetValue("argv", "i * " + POINTER_SIZE, "*") }}};
1646
1590
  arr_1[i] = emnapiCtx.handleStore.get(argVal_4).value;
1647
1591
  }
@@ -2517,69 +2461,844 @@ function napi_run_script(env, script, result) {
2517
2461
  return status;
2518
2462
  }
2519
2463
  emnapiImplement('napi_run_script', 'ippp', napi_run_script, ['napi_set_last_error']);
2520
- function __emnapi_set_immediate(callback, data) {
2521
- emnapiCtx.feature.setImmediate(function () {
2522
- {{{ makeDynCall('vp', 'callback') }}}(data);
2523
- });
2524
- }
2525
- function __emnapi_next_tick(callback, data) {
2526
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
2527
- Promise.resolve().then(function () {
2528
- {{{ makeDynCall('vp', 'callback') }}}(data);
2529
- });
2530
- }
2531
- function __emnapi_call_into_module(env, callback, data, close_scope_if_throw) {
2532
- var envObject = emnapiCtx.envStore.get(env);
2533
- var scope = emnapiCtx.openScope(envObject);
2534
- try {
2535
- envObject.callIntoModule(function () {
2536
- {{{ makeDynCall('vpp', 'callback') }}}(env, data);
2464
+ /* eslint-disable @typescript-eslint/indent */
2465
+ var emnapiTSFN = {
2466
+ offset: {
2467
+ /* napi_ref */ resource: 0,
2468
+ /* double */ async_id: 8,
2469
+ /* double */ trigger_async_id: 16,
2470
+ /* size_t */ queue_size: 24,
2471
+ /* void* */ queue: 1 * {{{ POINTER_SIZE }}} + 24,
2472
+ /* size_t */ thread_count: 2 * {{{ POINTER_SIZE }}} + 24,
2473
+ /* bool */ is_closing: 3 * {{{ POINTER_SIZE }}} + 24,
2474
+ /* atomic_uchar */ dispatch_state: 3 * {{{ POINTER_SIZE }}} + 28,
2475
+ /* void* */ context: 3 * {{{ POINTER_SIZE }}} + 32,
2476
+ /* size_t */ max_queue_size: 4 * {{{ POINTER_SIZE }}} + 32,
2477
+ /* napi_ref */ ref: 5 * {{{ POINTER_SIZE }}} + 32,
2478
+ /* napi_env */ env: 6 * {{{ POINTER_SIZE }}} + 32,
2479
+ /* void* */ finalize_data: 7 * {{{ POINTER_SIZE }}} + 32,
2480
+ /* napi_finalize */ finalize_cb: 8 * {{{ POINTER_SIZE }}} + 32,
2481
+ /* napi_threadsafe_function_call_js */ call_js_cb: 9 * {{{ POINTER_SIZE }}} + 32,
2482
+ /* bool */ handles_closing: 10 * {{{ POINTER_SIZE }}} + 32,
2483
+ /* bool */ async_ref: 10 * {{{ POINTER_SIZE }}} + 36,
2484
+ /* int32_t */ mutex: 10 * {{{ POINTER_SIZE }}} + 40,
2485
+ /* int32_t */ cond: 10 * {{{ POINTER_SIZE }}} + 44,
2486
+ end: 10 * {{{ POINTER_SIZE }}} + 48
2487
+ },
2488
+ init: function () {
2489
+ if (typeof PThread !== 'undefined') {
2490
+ PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
2491
+ PThread.runningWorkers.forEach(emnapiTSFN.addListener);
2492
+ var __original_getNewWorker_1 = PThread.getNewWorker;
2493
+ PThread.getNewWorker = function () {
2494
+ var r = __original_getNewWorker_1.apply(this, arguments);
2495
+ emnapiTSFN.addListener(r);
2496
+ return r;
2497
+ };
2498
+ }
2499
+ },
2500
+ addListener: function (worker) {
2501
+ if (!worker)
2502
+ return false;
2503
+ if (worker._emnapiTSFNListener)
2504
+ return true;
2505
+ var handler = function (e) {
2506
+ var data = ENVIRONMENT_IS_NODE ? e : e.data;
2507
+ var __emnapi__ = data.__emnapi__;
2508
+ if (__emnapi__) {
2509
+ var type = __emnapi__.type;
2510
+ var payload = __emnapi__.payload;
2511
+ if (type === 'tsfn-send') {
2512
+ emnapiTSFN.dispatch(payload.tsfn);
2513
+ }
2514
+ }
2515
+ };
2516
+ var dispose = function () {
2517
+ if (ENVIRONMENT_IS_NODE) {
2518
+ worker.off('message', handler);
2519
+ }
2520
+ else {
2521
+ worker.removeEventListener('message', handler, false);
2522
+ }
2523
+ delete worker._emnapiTSFNListener;
2524
+ };
2525
+ worker._emnapiTSFNListener = { handler: handler, dispose: dispose };
2526
+ if (ENVIRONMENT_IS_NODE) {
2527
+ worker.on('message', handler);
2528
+ }
2529
+ else {
2530
+ worker.addEventListener('message', handler, false);
2531
+ }
2532
+ return true;
2533
+ },
2534
+ initQueue: function (func) {
2535
+ var size = 2 * {{{ POINTER_SIZE }}};
2536
+ var queue = {{{ makeMalloc('emnapiTSFN.initQueue', 'size') }}};
2537
+ if (!queue)
2538
+ return false;
2539
+ new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
2540
+ emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
2541
+ return true;
2542
+ },
2543
+ destroyQueue: function (func) {
2544
+ var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
2545
+ if (queue) {
2546
+ _free({{{ to64('queue') }}});
2547
+ }
2548
+ },
2549
+ pushQueue: function (func, data) {
2550
+ var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
2551
+ var head = emnapiTSFN.loadSizeTypeValue(queue, false);
2552
+ var tail = emnapiTSFN.loadSizeTypeValue(queue + {{{ POINTER_SIZE }}}, false);
2553
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2554
+ var size = 2 * {{{ POINTER_SIZE }}};
2555
+ var node = {{{ makeMalloc('emnapiTSFN.pushQueue', 'size') }}};
2556
+ if (!node)
2557
+ throw new Error('OOM');
2558
+ emnapiTSFN.storeSizeTypeValue(node, data, false);
2559
+ emnapiTSFN.storeSizeTypeValue(node + {{{ POINTER_SIZE }}}, 0, false);
2560
+ if (head === 0 && tail === 0) {
2561
+ emnapiTSFN.storeSizeTypeValue(queue, node, false);
2562
+ emnapiTSFN.storeSizeTypeValue(queue + {{{ POINTER_SIZE }}}, node, false);
2563
+ }
2564
+ else {
2565
+ emnapiTSFN.storeSizeTypeValue(tail + {{{ POINTER_SIZE }}}, node, false);
2566
+ emnapiTSFN.storeSizeTypeValue(queue + {{{ POINTER_SIZE }}}, node, false);
2567
+ }
2568
+ emnapiTSFN.addQueueSize(func);
2569
+ },
2570
+ shiftQueue: function (func) {
2571
+ var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
2572
+ var head = emnapiTSFN.loadSizeTypeValue(queue, false);
2573
+ if (head === 0)
2574
+ return 0;
2575
+ var node = head;
2576
+ var next = emnapiTSFN.loadSizeTypeValue(head + {{{ POINTER_SIZE }}}, false);
2577
+ emnapiTSFN.storeSizeTypeValue(queue, next, false);
2578
+ if (next === 0) {
2579
+ emnapiTSFN.storeSizeTypeValue(queue + {{{ POINTER_SIZE }}}, 0, false);
2580
+ }
2581
+ emnapiTSFN.storeSizeTypeValue(node + {{{ POINTER_SIZE }}}, 0, false);
2582
+ var value = emnapiTSFN.loadSizeTypeValue(node, false);
2583
+ _free({{{ to64('node') }}});
2584
+ emnapiTSFN.subQueueSize(func);
2585
+ return value;
2586
+ },
2587
+ push: function (func, data, mode) {
2588
+ var mutex = emnapiTSFN.getMutex(func);
2589
+ var cond = emnapiTSFN.getCond(func);
2590
+ var waitCondition = function () {
2591
+ var queueSize = emnapiTSFN.getQueueSize(func);
2592
+ var maxSize = emnapiTSFN.getMaxQueueSize(func);
2593
+ var isClosing = emnapiTSFN.getIsClosing(func);
2594
+ return queueSize >= maxSize && maxSize > 0 && !isClosing;
2595
+ };
2596
+ var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
2597
+ return mutex.execute(function () {
2598
+ while (waitCondition()) {
2599
+ if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) {
2600
+ return 15 /* napi_status.napi_queue_full */;
2601
+ }
2602
+ /**
2603
+ * Browser JS main thread can not use `Atomics.wait`
2604
+ *
2605
+ * Related:
2606
+ * https://github.com/nodejs/node/pull/32689
2607
+ * https://github.com/nodejs/node/pull/33453
2608
+ */
2609
+ if (isBrowserMain) {
2610
+ return 21 /* napi_status.napi_would_deadlock */;
2611
+ }
2612
+ cond.wait();
2613
+ }
2614
+ if (emnapiTSFN.getIsClosing(func)) {
2615
+ if (emnapiTSFN.getThreadCount(func) === 0) {
2616
+ return 1 /* napi_status.napi_invalid_arg */;
2617
+ }
2618
+ else {
2619
+ emnapiTSFN.subThreadCount(func);
2620
+ return 16 /* napi_status.napi_closing */;
2621
+ }
2622
+ }
2623
+ else {
2624
+ emnapiTSFN.pushQueue(func, data);
2625
+ emnapiTSFN.send(func);
2626
+ return 0 /* napi_status.napi_ok */;
2627
+ }
2537
2628
  });
2538
- }
2539
- catch (err) {
2540
- emnapiCtx.closeScope(envObject, scope);
2541
- if (close_scope_if_throw) {
2629
+ },
2630
+ getMutex: function (func) {
2631
+ var index = func + emnapiTSFN.offset.mutex;
2632
+ var mutex = {
2633
+ lock: function () {
2634
+ var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
2635
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
2636
+ if (isBrowserMain) {
2637
+ while (true) {
2638
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
2639
+ if (oldValue === 0) {
2640
+ return;
2641
+ }
2642
+ }
2643
+ }
2644
+ else {
2645
+ while (true) {
2646
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
2647
+ if (oldValue === 0) {
2648
+ return;
2649
+ }
2650
+ Atomics.wait(i32a, 0, 1);
2651
+ }
2652
+ }
2653
+ },
2654
+ /* lockAsync () {
2655
+ return new Promise<void>(resolve => {
2656
+ const again = (): void => { fn() }
2657
+ const fn = (): void => {
2658
+ const i32a = new Int32Array(wasmMemory.buffer, index, 1)
2659
+ const oldValue = Atomics.compareExchange(i32a, 0, 0, 1)
2660
+ if (oldValue === 0) {
2661
+ resolve()
2662
+ return
2663
+ }
2664
+ (Atomics as any).waitAsync(i32a, 0, 1).value.then(again)
2665
+ }
2666
+ fn()
2667
+ })
2668
+ }, */
2669
+ unlock: function () {
2670
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
2671
+ var oldValue = Atomics.compareExchange(i32a, 0, 1, 0);
2672
+ if (oldValue !== 1) {
2673
+ throw new Error('Tried to unlock while not holding the mutex');
2674
+ }
2675
+ Atomics.notify(i32a, 0, 1);
2676
+ },
2677
+ execute: function (fn) {
2678
+ mutex.lock();
2679
+ try {
2680
+ return fn();
2681
+ }
2682
+ finally {
2683
+ mutex.unlock();
2684
+ }
2685
+ } /* ,
2686
+ executeAsync<T> (fn: () => Promise<T>): Promise<T> {
2687
+ return mutex.lockAsync().then(() => {
2688
+ const r = fn()
2689
+ mutex.unlock()
2690
+ return r
2691
+ }, (err) => {
2692
+ mutex.unlock()
2693
+ throw err
2694
+ })
2695
+ } */
2696
+ };
2697
+ return mutex;
2698
+ },
2699
+ getCond: function (func) {
2700
+ var index = func + emnapiTSFN.offset.cond;
2701
+ var mutex = emnapiTSFN.getMutex(func);
2702
+ var cond = {
2703
+ wait: function () {
2704
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
2705
+ var value = Atomics.load(i32a, 0);
2706
+ mutex.unlock();
2707
+ Atomics.wait(i32a, 0, value);
2708
+ mutex.lock();
2709
+ },
2710
+ /* waitAsync () {
2711
+ const i32a = new Int32Array(wasmMemory.buffer, index, 1)
2712
+ const value = Atomics.load(i32a, 0)
2713
+ mutex.unlock()
2714
+ const lock = (): Promise<void> => mutex.lockAsync()
2715
+ try {
2716
+ return (Atomics as any).waitAsync(i32a, 0, value).value.then(lock, lock)
2717
+ } catch (err) {
2718
+ return lock()
2719
+ }
2720
+ }, */
2721
+ signal: function () {
2722
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
2723
+ Atomics.add(i32a, 0, 1);
2724
+ Atomics.notify(i32a, 0, 1);
2725
+ }
2726
+ };
2727
+ return cond;
2728
+ },
2729
+ getQueueSize: function (func) {
2730
+ return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue_size, true);
2731
+ },
2732
+ addQueueSize: function (func) {
2733
+ var offset = emnapiTSFN.offset.queue_size;
2734
+ var arr, index;
2735
+ #if MEMORY64
2736
+ arr = new BigUint64Array(wasmMemory.buffer);
2737
+ index = (func + offset) >> 3;
2738
+ #else
2739
+ arr = new Uint32Array(wasmMemory.buffer);
2740
+ index = (func + offset) >> 2;
2741
+ #endif
2742
+ Atomics.add(arr, index, {{{ to64('1') }}});
2743
+ },
2744
+ subQueueSize: function (func) {
2745
+ var offset = emnapiTSFN.offset.queue_size;
2746
+ var arr, index;
2747
+ #if MEMORY64
2748
+ arr = new BigUint64Array(wasmMemory.buffer);
2749
+ index = (func + offset) >> 3;
2750
+ #else
2751
+ arr = new Uint32Array(wasmMemory.buffer);
2752
+ index = (func + offset) >> 2;
2753
+ #endif
2754
+ Atomics.sub(arr, index, {{{ to64('1') }}});
2755
+ },
2756
+ getThreadCount: function (func) {
2757
+ return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.thread_count, true);
2758
+ },
2759
+ addThreadCount: function (func) {
2760
+ var offset = emnapiTSFN.offset.thread_count;
2761
+ var arr, index;
2762
+ #if MEMORY64
2763
+ arr = new BigUint64Array(wasmMemory.buffer);
2764
+ index = (func + offset) >> 3;
2765
+ #else
2766
+ arr = new Uint32Array(wasmMemory.buffer);
2767
+ index = (func + offset) >> 2;
2768
+ #endif
2769
+ Atomics.add(arr, index, {{{ to64('1') }}});
2770
+ },
2771
+ subThreadCount: function (func) {
2772
+ var offset = emnapiTSFN.offset.thread_count;
2773
+ var arr, index;
2774
+ #if MEMORY64
2775
+ arr = new BigUint64Array(wasmMemory.buffer);
2776
+ index = (func + offset) >> 3;
2777
+ #else
2778
+ arr = new Uint32Array(wasmMemory.buffer);
2779
+ index = (func + offset) >> 2;
2780
+ #endif
2781
+ Atomics.sub(arr, index, {{{ to64('1') }}});
2782
+ },
2783
+ getIsClosing: function (func) {
2784
+ return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2);
2785
+ },
2786
+ setIsClosing: function (func, value) {
2787
+ Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value);
2788
+ },
2789
+ getHandlesClosing: function (func) {
2790
+ return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2);
2791
+ },
2792
+ setHandlesClosing: function (func, value) {
2793
+ Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value);
2794
+ },
2795
+ getDispatchState: function (func) {
2796
+ return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2);
2797
+ },
2798
+ getContext: function (func) {
2799
+ return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
2800
+ },
2801
+ getMaxQueueSize: function (func) {
2802
+ return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.max_queue_size, true);
2803
+ },
2804
+ getEnv: function (func) {
2805
+ return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.env, false);
2806
+ },
2807
+ getCallJSCb: function (func) {
2808
+ return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.call_js_cb, false);
2809
+ },
2810
+ getRef: function (func) {
2811
+ return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.ref, false);
2812
+ },
2813
+ getResource: function (func) {
2814
+ return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.resource, false);
2815
+ },
2816
+ getFinalizeCb: function (func) {
2817
+ return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_cb, false);
2818
+ },
2819
+ getFinalizeData: function (func) {
2820
+ return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_data, false);
2821
+ },
2822
+ loadSizeTypeValue: function (offset, unsigned) {
2823
+ var ret;
2824
+ var arr;
2825
+ if (unsigned) {
2826
+ #if MEMORY64
2827
+ arr = new BigUint64Array(wasmMemory.buffer);
2828
+ ret = Number(Atomics.load(arr, offset >> 3));
2829
+ #else
2830
+ arr = new Uint32Array(wasmMemory.buffer);
2831
+ ret = Atomics.load(arr, offset >> 2);
2832
+ #endif
2833
+ return ret;
2834
+ }
2835
+ else {
2836
+ #if MEMORY64
2837
+ arr = new BigInt64Array(wasmMemory.buffer);
2838
+ ret = Number(Atomics.load(arr, offset >> 3));
2839
+ #else
2840
+ arr = new Int32Array(wasmMemory.buffer);
2841
+ ret = Atomics.load(arr, offset >> 2);
2842
+ #endif
2843
+ return ret;
2844
+ }
2845
+ },
2846
+ storeSizeTypeValue: function (offset, value, unsigned) {
2847
+ var arr;
2848
+ if (unsigned) {
2849
+ #if MEMORY64
2850
+ arr = new BigUint64Array(wasmMemory.buffer);
2851
+ Atomics.store(arr, offset >> 3, BigInt(value));
2852
+ #else
2853
+ arr = new Uint32Array(wasmMemory.buffer);
2854
+ Atomics.store(arr, offset >> 2, value);
2855
+ #endif
2856
+ return undefined;
2857
+ }
2858
+ else {
2859
+ #if MEMORY64
2860
+ arr = new BigInt64Array(wasmMemory.buffer);
2861
+ Atomics.store(arr, offset >> 3, BigInt(value >>> 0));
2862
+ #else
2863
+ arr = new Int32Array(wasmMemory.buffer);
2864
+ Atomics.store(arr, offset >> 2, value >>> 0);
2865
+ #endif
2866
+ return undefined;
2867
+ }
2868
+ },
2869
+ destroy: function (func) {
2870
+ emnapiTSFN.destroyQueue(func);
2871
+ var env = emnapiTSFN.getEnv(func);
2872
+ var envObject = emnapiCtx.envStore.get(env);
2873
+ var ref = emnapiTSFN.getRef(func);
2874
+ if (ref) {
2875
+ emnapiCtx.refStore.get(ref).dispose();
2876
+ }
2877
+ emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
2878
+ envObject.unref();
2879
+ var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
2880
+ var arr = new Int32Array(wasmMemory.buffer);
2881
+ if (Atomics.load(arr, asyncRefOffset)) {
2882
+ Atomics.store(arr, asyncRefOffset, 0);
2883
+ __emnapi_runtime_keepalive_pop();
2884
+ emnapiCtx.decreaseWaitingRequestCounter();
2885
+ }
2886
+ var resource = emnapiTSFN.getResource(func);
2887
+ emnapiCtx.refStore.get(resource).dispose();
2888
+ if (emnapiNodeBinding) {
2889
+ var view = new DataView(wasmMemory.buffer);
2890
+ var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
2891
+ var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
2892
+ __emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
2893
+ }
2894
+ _free({{{ to64('func') }}});
2895
+ },
2896
+ emptyQueueAndDelete: function (func) {
2897
+ var callJsCb = emnapiTSFN.getCallJSCb(func);
2898
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2899
+ var context = emnapiTSFN.getContext(func);
2900
+ var data;
2901
+ while (emnapiTSFN.getQueueSize(func) > 0) {
2902
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2903
+ data = emnapiTSFN.shiftQueue(func);
2904
+ if (callJsCb) {
2905
+ {{{ makeDynCall('vpppp', 'callJsCb') }}}({{{ to64('0') }}}, {{{ to64('0') }}}, {{{ to64('context') }}}, {{{ to64('data') }}});
2906
+ }
2907
+ }
2908
+ emnapiTSFN.destroy(func);
2909
+ },
2910
+ finalize: function (func) {
2911
+ var env = emnapiTSFN.getEnv(func);
2912
+ var envObject = emnapiCtx.envStore.get(env);
2913
+ emnapiCtx.openScope(envObject);
2914
+ var finalize = emnapiTSFN.getFinalizeCb(func);
2915
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2916
+ var data = emnapiTSFN.getFinalizeData(func);
2917
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2918
+ var context = emnapiTSFN.getContext(func);
2919
+ var f = function () {
2920
+ envObject.callFinalizer({{{ to64('finalize') }}}, {{{ to64('data') }}}, {{{ to64('context') }}});
2921
+ };
2922
+ try {
2923
+ if (finalize) {
2924
+ if (emnapiNodeBinding) {
2925
+ var resource = emnapiTSFN.getResource(func);
2926
+ var resource_value = emnapiCtx.refStore.get(resource).get();
2927
+ var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
2928
+ var view = new DataView(wasmMemory.buffer);
2929
+ var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
2930
+ var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
2931
+ emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
2932
+ asyncId: asyncId,
2933
+ triggerAsyncId: triggerAsyncId
2934
+ });
2935
+ }
2936
+ else {
2937
+ f();
2938
+ }
2939
+ }
2940
+ emnapiTSFN.emptyQueueAndDelete(func);
2941
+ }
2942
+ finally {
2542
2943
  emnapiCtx.closeScope(envObject);
2543
2944
  }
2544
- throw err;
2545
- }
2546
- emnapiCtx.closeScope(envObject, scope);
2547
- }
2548
- function __emnapi_ctx_increase_waiting_request_counter() {
2549
- emnapiCtx.increaseWaitingRequestCounter();
2550
- }
2551
- function __emnapi_ctx_decrease_waiting_request_counter() {
2552
- emnapiCtx.decreaseWaitingRequestCounter();
2553
- }
2554
- emnapiImplementInternal('_emnapi_set_immediate', 'vpp', __emnapi_set_immediate);
2555
- emnapiImplementInternal('_emnapi_next_tick', 'vpp', __emnapi_next_tick);
2556
- emnapiImplementInternal('_emnapi_call_into_module', 'vpppi', __emnapi_call_into_module);
2557
- emnapiImplementInternal('_emnapi_ctx_increase_waiting_request_counter', 'v', __emnapi_ctx_increase_waiting_request_counter);
2558
- emnapiImplementInternal('_emnapi_ctx_decrease_waiting_request_counter', 'v', __emnapi_ctx_decrease_waiting_request_counter);
2559
- function __emnapi_call_finalizer(env, callback, data, hint) {
2560
- var envObject = emnapiCtx.envStore.get(env);
2561
- {{{ from64('callback') }}};
2562
- envObject.callFinalizer(callback, data, hint);
2563
- }
2564
- emnapiImplementInternal('_emnapi_call_finalizer', 'vpppp', __emnapi_call_finalizer);
2565
- /* eslint-disable @typescript-eslint/indent */
2566
- function _napi_set_last_error(env, error_code, engine_error_code, engine_reserved) {
2567
- var envObject = emnapiCtx.envStore.get(env);
2568
- return envObject.setLastError(error_code, engine_error_code, engine_reserved);
2569
- }
2570
- function _napi_clear_last_error(env) {
2571
- var envObject = emnapiCtx.envStore.get(env);
2572
- return envObject.clearLastError();
2573
- }
2574
- function __emnapi_get_node_version(major, minor, patch) {
2575
- {{{ from64('major') }}};
2576
- {{{ from64('minor') }}};
2577
- {{{ from64('patch') }}};
2578
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2579
- var versions = (typeof process === 'object' && process !== null &&
2580
- typeof process.versions === 'object' && process.versions !== null &&
2581
- typeof process.versions.node === 'string')
2582
- ? process.versions.node.split('.').map(function (n) { return Number(n); })
2945
+ },
2946
+ cleanup: function (func) {
2947
+ emnapiTSFN.closeHandlesAndMaybeDelete(func, 1);
2948
+ },
2949
+ closeHandlesAndMaybeDelete: function (func, set_closing) {
2950
+ var env = emnapiTSFN.getEnv(func);
2951
+ var envObject = emnapiCtx.envStore.get(env);
2952
+ emnapiCtx.openScope(envObject);
2953
+ try {
2954
+ if (set_closing) {
2955
+ emnapiTSFN.getMutex(func).execute(function () {
2956
+ emnapiTSFN.setIsClosing(func, 1);
2957
+ if (emnapiTSFN.getMaxQueueSize(func) > 0) {
2958
+ emnapiTSFN.getCond(func).signal();
2959
+ }
2960
+ });
2961
+ }
2962
+ if (emnapiTSFN.getHandlesClosing(func)) {
2963
+ return;
2964
+ }
2965
+ emnapiTSFN.setHandlesClosing(func, 1);
2966
+ emnapiCtx.feature.setImmediate(function () {
2967
+ emnapiTSFN.finalize(func);
2968
+ });
2969
+ }
2970
+ finally {
2971
+ emnapiCtx.closeScope(envObject);
2972
+ }
2973
+ },
2974
+ dispatchOne: function (func) {
2975
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2976
+ var data = 0;
2977
+ var popped_value = false;
2978
+ var has_more = false;
2979
+ var mutex = emnapiTSFN.getMutex(func);
2980
+ var cond = emnapiTSFN.getCond(func);
2981
+ mutex.execute(function () {
2982
+ if (emnapiTSFN.getIsClosing(func)) {
2983
+ emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
2984
+ }
2985
+ else {
2986
+ var size = emnapiTSFN.getQueueSize(func);
2987
+ if (size > 0) {
2988
+ data = emnapiTSFN.shiftQueue(func);
2989
+ popped_value = true;
2990
+ var maxQueueSize = emnapiTSFN.getMaxQueueSize(func);
2991
+ if (size === maxQueueSize && maxQueueSize > 0) {
2992
+ cond.signal();
2993
+ }
2994
+ size--;
2995
+ }
2996
+ if (size === 0) {
2997
+ if (emnapiTSFN.getThreadCount(func) === 0) {
2998
+ emnapiTSFN.setIsClosing(func, 1);
2999
+ if (emnapiTSFN.getMaxQueueSize(func) > 0) {
3000
+ cond.signal();
3001
+ }
3002
+ emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
3003
+ }
3004
+ }
3005
+ else {
3006
+ has_more = true;
3007
+ }
3008
+ }
3009
+ });
3010
+ if (popped_value) {
3011
+ var env = emnapiTSFN.getEnv(func);
3012
+ var envObject_36 = emnapiCtx.envStore.get(env);
3013
+ emnapiCtx.openScope(envObject_36);
3014
+ var f = function () {
3015
+ envObject_36.callIntoModule(function () {
3016
+ var callJsCb = emnapiTSFN.getCallJSCb(func);
3017
+ var ref = emnapiTSFN.getRef(func);
3018
+ var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0;
3019
+ if (callJsCb) {
3020
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3021
+ var context = emnapiTSFN.getContext(func);
3022
+ {{{ makeDynCall('vpppp', 'callJsCb') }}}({{{ to64('env') }}}, {{{ to64('js_callback') }}}, {{{ to64('context') }}}, {{{ to64('data') }}});
3023
+ }
3024
+ else {
3025
+ var jsCallback = js_callback ? emnapiCtx.handleStore.get(js_callback).value : null;
3026
+ if (typeof jsCallback === 'function') {
3027
+ jsCallback();
3028
+ }
3029
+ }
3030
+ });
3031
+ };
3032
+ try {
3033
+ if (emnapiNodeBinding) {
3034
+ var resource = emnapiTSFN.getResource(func);
3035
+ var resource_value = emnapiCtx.refStore.get(resource).get();
3036
+ var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
3037
+ var view = new DataView(wasmMemory.buffer);
3038
+ emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
3039
+ asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
3040
+ triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
3041
+ });
3042
+ }
3043
+ else {
3044
+ f();
3045
+ }
3046
+ }
3047
+ finally {
3048
+ emnapiCtx.closeScope(envObject_36);
3049
+ }
3050
+ }
3051
+ return has_more;
3052
+ },
3053
+ dispatch: function (func) {
3054
+ var has_more = true;
3055
+ var iterations_left = 1000;
3056
+ var ui32a = new Uint32Array(wasmMemory.buffer);
3057
+ var index = (func + emnapiTSFN.offset.dispatch_state) >> 2;
3058
+ while (has_more && --iterations_left !== 0) {
3059
+ Atomics.store(ui32a, index, 1);
3060
+ has_more = emnapiTSFN.dispatchOne(func);
3061
+ if (Atomics.exchange(ui32a, index, 0) !== 1) {
3062
+ has_more = true;
3063
+ }
3064
+ }
3065
+ if (has_more) {
3066
+ emnapiTSFN.send(func);
3067
+ }
3068
+ },
3069
+ send: function (func) {
3070
+ var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1);
3071
+ if ((current_state & 1) === 1) {
3072
+ return;
3073
+ }
3074
+ if (ENVIRONMENT_IS_PTHREAD) {
3075
+ postMessage({
3076
+ __emnapi__: {
3077
+ type: 'tsfn-send',
3078
+ payload: {
3079
+ tsfn: func
3080
+ }
3081
+ }
3082
+ });
3083
+ }
3084
+ else {
3085
+ emnapiCtx.feature.setImmediate(function () {
3086
+ emnapiTSFN.dispatch(func);
3087
+ });
3088
+ }
3089
+ }
3090
+ };
3091
+ function _napi_create_threadsafe_function(env, func, async_resource, async_resource_name, max_queue_size, initial_thread_count, thread_finalize_data, thread_finalize_cb, context, call_js_cb, result) {
3092
+ if (env == 0)
3093
+ return 1 /* napi_status.napi_invalid_arg */;
3094
+ var envObject = emnapiCtx.envStore.get(env);
3095
+ if (async_resource_name == 0)
3096
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); /* napi_ref */
3097
+ {{{ from64('max_queue_size') }}};
3098
+ {{{ from64('initial_thread_count') }}};
3099
+ {{{ from64('env') }}};
3100
+ {{{ from64('thread_finalize_data') }}};
3101
+ {{{ from64('thread_finalize_cb') }}};
3102
+ {{{ from64('context') }}};
3103
+ {{{ from64('call_js_cb') }}};
3104
+ max_queue_size = max_queue_size >>> 0;
3105
+ initial_thread_count = initial_thread_count >>> 0;
3106
+ if (initial_thread_count === 0) {
3107
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3108
+ }
3109
+ if (result == 0)
3110
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); /* napi_ref */
3111
+ var ref = 0;
3112
+ {{{ from64('func') }}};
3113
+ if (!func) {
3114
+ if (call_js_cb == 0)
3115
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); /* napi_ref */
3116
+ }
3117
+ else {
3118
+ var funcValue = emnapiCtx.handleStore.get(func).value;
3119
+ if (typeof funcValue !== 'function') {
3120
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3121
+ }
3122
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3123
+ ref = emnapiCtx.createReference(envObject, func, 1, 1 /* Ownership.kUserland */).id;
3124
+ }
3125
+ var asyncResourceObject;
3126
+ if (async_resource) {
3127
+ asyncResourceObject = emnapiCtx.handleStore.get(async_resource).value;
3128
+ if (asyncResourceObject == null) {
3129
+ return envObject.setLastError(2 /* napi_status.napi_object_expected */);
3130
+ }
3131
+ asyncResourceObject = Object(asyncResourceObject);
3132
+ }
3133
+ else {
3134
+ asyncResourceObject = {};
3135
+ }
3136
+ var resource = envObject.ensureHandleId(asyncResourceObject);
3137
+ var asyncResourceName = emnapiCtx.handleStore.get(async_resource_name).value;
3138
+ if (typeof asyncResourceName === 'symbol') {
3139
+ return envObject.setLastError(3 /* napi_status.napi_string_expected */);
3140
+ }
3141
+ asyncResourceName = String(asyncResourceName);
3142
+ var resource_name = envObject.ensureHandleId(asyncResourceName);
3143
+ // tsfn create
3144
+ var sizeofTSFN = emnapiTSFN.offset.end;
3145
+ var tsfn = {{{ makeMalloc('napi_create_threadsafe_function', 'sizeofTSFN') }}};
3146
+ if (!tsfn)
3147
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
3148
+ new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
3149
+ var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* Ownership.kUserland */);
3150
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3151
+ var resource_ = resourceRef.id;
3152
+ {{{ makeSetValue('tsfn', 0, 'resource_', '*') }}};
3153
+ if (!emnapiTSFN.initQueue(tsfn)) {
3154
+ _free({{{ to64('tsfn') }}});
3155
+ resourceRef.dispose();
3156
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
3157
+ }
3158
+ __emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
3159
+ {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.thread_count', 'initial_thread_count', SIZE_TYPE) }}};
3160
+ {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.context', 'context', '*') }}};
3161
+ {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.max_queue_size', 'max_queue_size', SIZE_TYPE) }}};
3162
+ {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.ref', 'ref', '*') }}};
3163
+ {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.env', 'env', '*') }}};
3164
+ {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.finalize_data', 'thread_finalize_data', '*') }}};
3165
+ {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.finalize_cb', 'thread_finalize_cb', '*') }}};
3166
+ {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.call_js_cb', 'call_js_cb', '*') }}};
3167
+ emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
3168
+ envObject.ref();
3169
+ __emnapi_runtime_keepalive_push();
3170
+ emnapiCtx.increaseWaitingRequestCounter();
3171
+ {{{ makeSetValue('tsfn', 'emnapiTSFN.offset.async_ref', '1', 'i32') }}};
3172
+ {{{ from64('result') }}};
3173
+ {{{ makeSetValue('result', 0, 'tsfn', '*') }}};
3174
+ return envObject.clearLastError();
3175
+ }
3176
+ function _napi_get_threadsafe_function_context(func, result) {
3177
+ if (!func || !result) {
3178
+ abort();
3179
+ return 1 /* napi_status.napi_invalid_arg */;
3180
+ }
3181
+ {{{ from64('func') }}};
3182
+ {{{ from64('result') }}};
3183
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3184
+ var context = emnapiTSFN.getContext(func);
3185
+ {{{ makeSetValue('result', 0, 'context', '*') }}};
3186
+ return 0 /* napi_status.napi_ok */;
3187
+ }
3188
+ function _napi_call_threadsafe_function(func, data, mode) {
3189
+ if (!func) {
3190
+ abort();
3191
+ return 1 /* napi_status.napi_invalid_arg */;
3192
+ }
3193
+ {{{ from64('func') }}};
3194
+ {{{ from64('data') }}};
3195
+ return emnapiTSFN.push(func, data, mode);
3196
+ }
3197
+ function _napi_acquire_threadsafe_function(func) {
3198
+ if (!func) {
3199
+ abort();
3200
+ return 1 /* napi_status.napi_invalid_arg */;
3201
+ }
3202
+ {{{ from64('func') }}};
3203
+ var mutex = emnapiTSFN.getMutex(func);
3204
+ return mutex.execute(function () {
3205
+ if (emnapiTSFN.getIsClosing(func)) {
3206
+ return 16 /* napi_status.napi_closing */;
3207
+ }
3208
+ emnapiTSFN.addThreadCount(func);
3209
+ return 0 /* napi_status.napi_ok */;
3210
+ });
3211
+ }
3212
+ function _napi_release_threadsafe_function(func, mode) {
3213
+ if (!func) {
3214
+ abort();
3215
+ return 1 /* napi_status.napi_invalid_arg */;
3216
+ }
3217
+ {{{ from64('func') }}};
3218
+ var mutex = emnapiTSFN.getMutex(func);
3219
+ var cond = emnapiTSFN.getCond(func);
3220
+ return mutex.execute(function () {
3221
+ if (emnapiTSFN.getThreadCount(func) === 0) {
3222
+ return 1 /* napi_status.napi_invalid_arg */;
3223
+ }
3224
+ emnapiTSFN.subThreadCount(func);
3225
+ if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
3226
+ var isClosing = emnapiTSFN.getIsClosing(func);
3227
+ if (!isClosing) {
3228
+ var isClosingValue = (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) ? 1 : 0;
3229
+ emnapiTSFN.setIsClosing(func, isClosingValue);
3230
+ if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) {
3231
+ cond.signal();
3232
+ }
3233
+ emnapiTSFN.send(func);
3234
+ }
3235
+ }
3236
+ return 0 /* napi_status.napi_ok */;
3237
+ });
3238
+ }
3239
+ function _napi_unref_threadsafe_function(env, func) {
3240
+ if (!func) {
3241
+ abort();
3242
+ return 1 /* napi_status.napi_invalid_arg */;
3243
+ }
3244
+ {{{ from64('func') }}};
3245
+ var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
3246
+ var arr = new Int32Array(wasmMemory.buffer);
3247
+ if (Atomics.load(arr, asyncRefOffset)) {
3248
+ Atomics.store(arr, asyncRefOffset, 0);
3249
+ __emnapi_runtime_keepalive_pop();
3250
+ emnapiCtx.decreaseWaitingRequestCounter();
3251
+ }
3252
+ return 0 /* napi_status.napi_ok */;
3253
+ }
3254
+ function _napi_ref_threadsafe_function(env, func) {
3255
+ if (!func) {
3256
+ abort();
3257
+ return 1 /* napi_status.napi_invalid_arg */;
3258
+ }
3259
+ {{{ from64('func') }}};
3260
+ var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
3261
+ var arr = new Int32Array(wasmMemory.buffer);
3262
+ if (!Atomics.load(arr, asyncRefOffset)) {
3263
+ Atomics.store(arr, asyncRefOffset, 1);
3264
+ __emnapi_runtime_keepalive_push();
3265
+ emnapiCtx.increaseWaitingRequestCounter();
3266
+ }
3267
+ return 0 /* napi_status.napi_ok */;
3268
+ }
3269
+ emnapiDefineVar('$emnapiTSFN', emnapiTSFN, [
3270
+ '$emnapiInit',
3271
+ '$PThread',
3272
+ '_emnapi_node_emit_async_init',
3273
+ '_emnapi_node_emit_async_destroy',
3274
+ '_emnapi_runtime_keepalive_pop',
3275
+ '_emnapi_runtime_keepalive_push'
3276
+ ], 'emnapiTSFN.init();');
3277
+ emnapiImplement('napi_create_threadsafe_function', 'ippppppppppp', _napi_create_threadsafe_function, ['$emnapiTSFN']);
3278
+ emnapiImplement('napi_get_threadsafe_function_context', 'ipp', _napi_get_threadsafe_function_context, ['$emnapiTSFN']);
3279
+ emnapiImplement('napi_call_threadsafe_function', 'ippi', _napi_call_threadsafe_function, ['$emnapiTSFN']);
3280
+ emnapiImplement('napi_acquire_threadsafe_function', 'ip', _napi_acquire_threadsafe_function, ['$emnapiTSFN']);
3281
+ emnapiImplement('napi_release_threadsafe_function', 'ipi', _napi_release_threadsafe_function, ['$emnapiTSFN']);
3282
+ emnapiImplement('napi_unref_threadsafe_function', 'ipp', _napi_unref_threadsafe_function, ['$emnapiTSFN']);
3283
+ emnapiImplement('napi_ref_threadsafe_function', 'ipp', _napi_ref_threadsafe_function, ['$emnapiTSFN']);
3284
+ /* eslint-disable @typescript-eslint/indent */
3285
+ function _napi_set_last_error(env, error_code, engine_error_code, engine_reserved) {
3286
+ var envObject = emnapiCtx.envStore.get(env);
3287
+ return envObject.setLastError(error_code, engine_error_code, engine_reserved);
3288
+ }
3289
+ function _napi_clear_last_error(env) {
3290
+ var envObject = emnapiCtx.envStore.get(env);
3291
+ return envObject.clearLastError();
3292
+ }
3293
+ function __emnapi_get_node_version(major, minor, patch) {
3294
+ {{{ from64('major') }}};
3295
+ {{{ from64('minor') }}};
3296
+ {{{ from64('patch') }}};
3297
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3298
+ var versions = (typeof process === 'object' && process !== null &&
3299
+ typeof process.versions === 'object' && process.versions !== null &&
3300
+ typeof process.versions.node === 'string')
3301
+ ? process.versions.node.split('.').map(function (n) { return Number(n); })
2583
3302
  : [0, 0, 0];
2584
3303
  {{{ makeSetValue('major', 0, 'versions[0]', 'u32') }}};
2585
3304
  {{{ makeSetValue('minor', 0, 'versions[1]', 'u32') }}};
@@ -2598,6 +3317,51 @@ function __emnapi_runtime_keepalive_pop() {
2598
3317
  }
2599
3318
  emnapiImplementInternal('_emnapi_runtime_keepalive_push', 'v', __emnapi_runtime_keepalive_push, ['$runtimeKeepalivePush']);
2600
3319
  emnapiImplementInternal('_emnapi_runtime_keepalive_pop', 'v', __emnapi_runtime_keepalive_pop, ['$runtimeKeepalivePop']);
3320
+ function __emnapi_set_immediate(callback, data) {
3321
+ emnapiCtx.feature.setImmediate(function () {
3322
+ {{{ makeDynCall('vp', 'callback') }}}(data);
3323
+ });
3324
+ }
3325
+ function __emnapi_next_tick(callback, data) {
3326
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
3327
+ Promise.resolve().then(function () {
3328
+ {{{ makeDynCall('vp', 'callback') }}}(data);
3329
+ });
3330
+ }
3331
+ function __emnapi_call_into_module(env, callback, data, close_scope_if_throw) {
3332
+ var envObject = emnapiCtx.envStore.get(env);
3333
+ var scope = emnapiCtx.openScope(envObject);
3334
+ try {
3335
+ envObject.callIntoModule(function () {
3336
+ {{{ makeDynCall('vpp', 'callback') }}}(env, data);
3337
+ });
3338
+ }
3339
+ catch (err) {
3340
+ emnapiCtx.closeScope(envObject, scope);
3341
+ if (close_scope_if_throw) {
3342
+ emnapiCtx.closeScope(envObject);
3343
+ }
3344
+ throw err;
3345
+ }
3346
+ emnapiCtx.closeScope(envObject, scope);
3347
+ }
3348
+ function __emnapi_call_finalizer(env, callback, data, hint) {
3349
+ var envObject = emnapiCtx.envStore.get(env);
3350
+ {{{ from64('callback') }}};
3351
+ envObject.callFinalizer(callback, data, hint);
3352
+ }
3353
+ function __emnapi_ctx_increase_waiting_request_counter() {
3354
+ emnapiCtx.increaseWaitingRequestCounter();
3355
+ }
3356
+ function __emnapi_ctx_decrease_waiting_request_counter() {
3357
+ emnapiCtx.decreaseWaitingRequestCounter();
3358
+ }
3359
+ emnapiImplementInternal('_emnapi_set_immediate', 'vpp', __emnapi_set_immediate);
3360
+ emnapiImplementInternal('_emnapi_next_tick', 'vpp', __emnapi_next_tick);
3361
+ emnapiImplementInternal('_emnapi_call_into_module', 'vpppi', __emnapi_call_into_module);
3362
+ emnapiImplementInternal('_emnapi_call_finalizer', 'vpppp', __emnapi_call_finalizer);
3363
+ emnapiImplementInternal('_emnapi_ctx_increase_waiting_request_counter', 'v', __emnapi_ctx_increase_waiting_request_counter);
3364
+ emnapiImplementInternal('_emnapi_ctx_decrease_waiting_request_counter', 'v', __emnapi_ctx_decrease_waiting_request_counter);
2601
3365
  function napi_typeof(env, value, result) {
2602
3366
  if (env == 0)
2603
3367
  return 1 /* napi_status.napi_invalid_arg */;
@@ -2657,24 +3421,24 @@ function napi_coerce_to_bool(env, value, result) {
2657
3421
  var v;
2658
3422
  if (env == 0)
2659
3423
  return 1 /* napi_status.napi_invalid_arg */;
2660
- var envObject_36 = emnapiCtx.envStore.get(env);
2661
- if (envObject_36.tryCatch.hasCaught())
2662
- return envObject_36.setLastError(10 /* napi_status.napi_pending_exception */);
2663
- envObject_36.clearLastError();
3424
+ var envObject_37 = emnapiCtx.envStore.get(env);
3425
+ if (envObject_37.tryCatch.hasCaught())
3426
+ return envObject_37.setLastError(10 /* napi_status.napi_pending_exception */);
3427
+ envObject_37.clearLastError();
2664
3428
  try {
2665
3429
  if (value == 0)
2666
- return envObject_36.setLastError(1 /* napi_status.napi_invalid_arg */);
3430
+ return envObject_37.setLastError(1 /* napi_status.napi_invalid_arg */);
2667
3431
  if (result == 0)
2668
- return envObject_36.setLastError(1 /* napi_status.napi_invalid_arg */);
3432
+ return envObject_37.setLastError(1 /* napi_status.napi_invalid_arg */);
2669
3433
  var handle_5 = emnapiCtx.handleStore.get(value);
2670
3434
  {{{ from64("result") }}};
2671
3435
  v = handle_5.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */;
2672
3436
  {{{ makeSetValue("result", 0, "v", "*") }}};
2673
- return envObject_36.getReturnStatus();
3437
+ return envObject_37.getReturnStatus();
2674
3438
  }
2675
3439
  catch (err_37) {
2676
- envObject_36.tryCatch.setError(err_37);
2677
- return envObject_36.setLastError(10 /* napi_status.napi_pending_exception */);
3440
+ envObject_37.tryCatch.setError(err_37);
3441
+ return envObject_37.setLastError(10 /* napi_status.napi_pending_exception */);
2678
3442
  }
2679
3443
  }
2680
3444
  // @ts-expect-error
@@ -2683,15 +3447,15 @@ function napi_coerce_to_number(env, value, result) {
2683
3447
  var v;
2684
3448
  if (env == 0)
2685
3449
  return 1 /* napi_status.napi_invalid_arg */;
2686
- var envObject_37 = emnapiCtx.envStore.get(env);
2687
- if (envObject_37.tryCatch.hasCaught())
2688
- return envObject_37.setLastError(10 /* napi_status.napi_pending_exception */);
2689
- envObject_37.clearLastError();
3450
+ var envObject_38 = emnapiCtx.envStore.get(env);
3451
+ if (envObject_38.tryCatch.hasCaught())
3452
+ return envObject_38.setLastError(10 /* napi_status.napi_pending_exception */);
3453
+ envObject_38.clearLastError();
2690
3454
  try {
2691
3455
  if (value == 0)
2692
- return envObject_37.setLastError(1 /* napi_status.napi_invalid_arg */);
3456
+ return envObject_38.setLastError(1 /* napi_status.napi_invalid_arg */);
2693
3457
  if (result == 0)
2694
- return envObject_37.setLastError(1 /* napi_status.napi_invalid_arg */);
3458
+ return envObject_38.setLastError(1 /* napi_status.napi_invalid_arg */);
2695
3459
  var handle_6 = emnapiCtx.handleStore.get(value);
2696
3460
  if (handle_6.isBigInt()) {
2697
3461
  throw new TypeError("Cannot convert a BigInt value to a number");
@@ -2700,11 +3464,11 @@ function napi_coerce_to_number(env, value, result) {
2700
3464
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2701
3465
  v = emnapiCtx.addToCurrentScope(Number(handle_6.value)).id;
2702
3466
  {{{ makeSetValue("result", 0, "v", "*") }}};
2703
- return envObject_37.getReturnStatus();
3467
+ return envObject_38.getReturnStatus();
2704
3468
  }
2705
3469
  catch (err_38) {
2706
- envObject_37.tryCatch.setError(err_38);
2707
- return envObject_37.setLastError(10 /* napi_status.napi_pending_exception */);
3470
+ envObject_38.tryCatch.setError(err_38);
3471
+ return envObject_38.setLastError(10 /* napi_status.napi_pending_exception */);
2708
3472
  }
2709
3473
  }
2710
3474
  // @ts-expect-error
@@ -2713,28 +3477,28 @@ function napi_coerce_to_object(env, value, result) {
2713
3477
  var v;
2714
3478
  if (env == 0)
2715
3479
  return 1 /* napi_status.napi_invalid_arg */;
2716
- var envObject_38 = emnapiCtx.envStore.get(env);
2717
- if (envObject_38.tryCatch.hasCaught())
2718
- return envObject_38.setLastError(10 /* napi_status.napi_pending_exception */);
2719
- envObject_38.clearLastError();
3480
+ var envObject_39 = emnapiCtx.envStore.get(env);
3481
+ if (envObject_39.tryCatch.hasCaught())
3482
+ return envObject_39.setLastError(10 /* napi_status.napi_pending_exception */);
3483
+ envObject_39.clearLastError();
2720
3484
  try {
2721
3485
  if (value == 0)
2722
- return envObject_38.setLastError(1 /* napi_status.napi_invalid_arg */);
3486
+ return envObject_39.setLastError(1 /* napi_status.napi_invalid_arg */);
2723
3487
  if (result == 0)
2724
- return envObject_38.setLastError(1 /* napi_status.napi_invalid_arg */);
3488
+ return envObject_39.setLastError(1 /* napi_status.napi_invalid_arg */);
2725
3489
  var handle_7 = emnapiCtx.handleStore.get(value);
2726
3490
  if (handle_7.value == null) {
2727
3491
  throw new TypeError("Cannot convert undefined or null to object");
2728
3492
  }
2729
3493
  {{{ from64("result") }}};
2730
3494
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2731
- v = envObject_38.ensureHandleId(Object(handle_7.value));
3495
+ v = envObject_39.ensureHandleId(Object(handle_7.value));
2732
3496
  {{{ makeSetValue("result", 0, "v", "*") }}};
2733
- return envObject_38.getReturnStatus();
3497
+ return envObject_39.getReturnStatus();
2734
3498
  }
2735
3499
  catch (err_39) {
2736
- envObject_38.tryCatch.setError(err_39);
2737
- return envObject_38.setLastError(10 /* napi_status.napi_pending_exception */);
3500
+ envObject_39.tryCatch.setError(err_39);
3501
+ return envObject_39.setLastError(10 /* napi_status.napi_pending_exception */);
2738
3502
  }
2739
3503
  }
2740
3504
  // @ts-expect-error
@@ -2743,15 +3507,15 @@ function napi_coerce_to_string(env, value, result) {
2743
3507
  var v;
2744
3508
  if (env == 0)
2745
3509
  return 1 /* napi_status.napi_invalid_arg */;
2746
- var envObject_39 = emnapiCtx.envStore.get(env);
2747
- if (envObject_39.tryCatch.hasCaught())
2748
- return envObject_39.setLastError(10 /* napi_status.napi_pending_exception */);
2749
- envObject_39.clearLastError();
3510
+ var envObject_40 = emnapiCtx.envStore.get(env);
3511
+ if (envObject_40.tryCatch.hasCaught())
3512
+ return envObject_40.setLastError(10 /* napi_status.napi_pending_exception */);
3513
+ envObject_40.clearLastError();
2750
3514
  try {
2751
3515
  if (value == 0)
2752
- return envObject_39.setLastError(1 /* napi_status.napi_invalid_arg */);
3516
+ return envObject_40.setLastError(1 /* napi_status.napi_invalid_arg */);
2753
3517
  if (result == 0)
2754
- return envObject_39.setLastError(1 /* napi_status.napi_invalid_arg */);
3518
+ return envObject_40.setLastError(1 /* napi_status.napi_invalid_arg */);
2755
3519
  var handle_8 = emnapiCtx.handleStore.get(value);
2756
3520
  if (handle_8.isSymbol()) {
2757
3521
  throw new TypeError("Cannot convert a Symbol value to a string");
@@ -2760,11 +3524,11 @@ function napi_coerce_to_string(env, value, result) {
2760
3524
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2761
3525
  v = emnapiCtx.addToCurrentScope(String(handle_8.value)).id;
2762
3526
  {{{ makeSetValue("result", 0, "v", "*") }}};
2763
- return envObject_39.getReturnStatus();
3527
+ return envObject_40.getReturnStatus();
2764
3528
  }
2765
3529
  catch (err_40) {
2766
- envObject_39.tryCatch.setError(err_40);
2767
- return envObject_39.setLastError(10 /* napi_status.napi_pending_exception */);
3530
+ envObject_40.tryCatch.setError(err_40);
3531
+ return envObject_40.setLastError(10 /* napi_status.napi_pending_exception */);
2768
3532
  }
2769
3533
  }
2770
3534
  // @ts-expect-error
@@ -2773,32 +3537,32 @@ function napi_instanceof(env, object, constructor, result) {
2773
3537
  var r;
2774
3538
  if (env == 0)
2775
3539
  return 1 /* napi_status.napi_invalid_arg */;
2776
- var envObject_40 = emnapiCtx.envStore.get(env);
2777
- if (envObject_40.tryCatch.hasCaught())
2778
- return envObject_40.setLastError(10 /* napi_status.napi_pending_exception */);
2779
- envObject_40.clearLastError();
3540
+ var envObject_41 = emnapiCtx.envStore.get(env);
3541
+ if (envObject_41.tryCatch.hasCaught())
3542
+ return envObject_41.setLastError(10 /* napi_status.napi_pending_exception */);
3543
+ envObject_41.clearLastError();
2780
3544
  try {
2781
3545
  if (object == 0)
2782
- return envObject_40.setLastError(1 /* napi_status.napi_invalid_arg */);
3546
+ return envObject_41.setLastError(1 /* napi_status.napi_invalid_arg */);
2783
3547
  if (result == 0)
2784
- return envObject_40.setLastError(1 /* napi_status.napi_invalid_arg */);
3548
+ return envObject_41.setLastError(1 /* napi_status.napi_invalid_arg */);
2785
3549
  if (constructor == 0)
2786
- return envObject_40.setLastError(1 /* napi_status.napi_invalid_arg */);
3550
+ return envObject_41.setLastError(1 /* napi_status.napi_invalid_arg */);
2787
3551
  {{{ from64("result") }}};
2788
3552
  {{{ makeSetValue("result", 0, "0", "i8") }}};
2789
3553
  var ctor_1 = emnapiCtx.handleStore.get(constructor);
2790
3554
  if (!ctor_1.isFunction()) {
2791
- return envObject_40.setLastError(5 /* napi_status.napi_function_expected */);
3555
+ return envObject_41.setLastError(5 /* napi_status.napi_function_expected */);
2792
3556
  }
2793
3557
  var val_1 = emnapiCtx.handleStore.get(object).value;
2794
3558
  var ret_7 = val_1 instanceof ctor_1.value;
2795
3559
  r = ret_7 ? 1 : 0;
2796
3560
  {{{ makeSetValue("result", 0, "r", "i8") }}};
2797
- return envObject_40.getReturnStatus();
3561
+ return envObject_41.getReturnStatus();
2798
3562
  }
2799
3563
  catch (err_41) {
2800
- envObject_40.tryCatch.setError(err_41);
2801
- return envObject_40.setLastError(10 /* napi_status.napi_pending_exception */);
3564
+ envObject_41.tryCatch.setError(err_41);
3565
+ return envObject_41.setLastError(10 /* napi_status.napi_pending_exception */);
2802
3566
  }
2803
3567
  }
2804
3568
  function napi_is_array(env, value, result) {
@@ -2912,27 +3676,27 @@ function napi_strict_equals(env, lhs, rhs, result) {
2912
3676
  var r;
2913
3677
  if (env == 0)
2914
3678
  return 1 /* napi_status.napi_invalid_arg */;
2915
- var envObject_41 = emnapiCtx.envStore.get(env);
2916
- if (envObject_41.tryCatch.hasCaught())
2917
- return envObject_41.setLastError(10 /* napi_status.napi_pending_exception */);
2918
- envObject_41.clearLastError();
3679
+ var envObject_42 = emnapiCtx.envStore.get(env);
3680
+ if (envObject_42.tryCatch.hasCaught())
3681
+ return envObject_42.setLastError(10 /* napi_status.napi_pending_exception */);
3682
+ envObject_42.clearLastError();
2919
3683
  try {
2920
3684
  if (lhs == 0)
2921
- return envObject_41.setLastError(1 /* napi_status.napi_invalid_arg */);
3685
+ return envObject_42.setLastError(1 /* napi_status.napi_invalid_arg */);
2922
3686
  if (rhs == 0)
2923
- return envObject_41.setLastError(1 /* napi_status.napi_invalid_arg */);
3687
+ return envObject_42.setLastError(1 /* napi_status.napi_invalid_arg */);
2924
3688
  if (result == 0)
2925
- return envObject_41.setLastError(1 /* napi_status.napi_invalid_arg */);
3689
+ return envObject_42.setLastError(1 /* napi_status.napi_invalid_arg */);
2926
3690
  var lv_1 = emnapiCtx.handleStore.get(lhs).value;
2927
3691
  var rv_1 = emnapiCtx.handleStore.get(rhs).value;
2928
3692
  {{{ from64("result") }}};
2929
3693
  r = (lv_1 === rv_1) ? 1 : 0;
2930
3694
  {{{ makeSetValue("result", 0, "r", "i8") }}};
2931
- return envObject_41.getReturnStatus();
3695
+ return envObject_42.getReturnStatus();
2932
3696
  }
2933
3697
  catch (err_42) {
2934
- envObject_41.tryCatch.setError(err_42);
2935
- return envObject_41.setLastError(10 /* napi_status.napi_pending_exception */);
3698
+ envObject_42.tryCatch.setError(err_42);
3699
+ return envObject_42.setLastError(10 /* napi_status.napi_pending_exception */);
2936
3700
  }
2937
3701
  }
2938
3702
  function napi_detach_arraybuffer(env, arraybuffer) {
@@ -2962,15 +3726,15 @@ function napi_detach_arraybuffer(env, arraybuffer) {
2962
3726
  function napi_is_detached_arraybuffer(env, arraybuffer, result) {
2963
3727
  if (env == 0)
2964
3728
  return 1 /* napi_status.napi_invalid_arg */;
2965
- var envObject_42 = emnapiCtx.envStore.get(env);
2966
- if (envObject_42.tryCatch.hasCaught())
2967
- return envObject_42.setLastError(10 /* napi_status.napi_pending_exception */);
2968
- envObject_42.clearLastError();
3729
+ var envObject_43 = emnapiCtx.envStore.get(env);
3730
+ if (envObject_43.tryCatch.hasCaught())
3731
+ return envObject_43.setLastError(10 /* napi_status.napi_pending_exception */);
3732
+ envObject_43.clearLastError();
2969
3733
  try {
2970
3734
  if (arraybuffer == 0)
2971
- return envObject_42.setLastError(1 /* napi_status.napi_invalid_arg */);
3735
+ return envObject_43.setLastError(1 /* napi_status.napi_invalid_arg */);
2972
3736
  if (result == 0)
2973
- return envObject_42.setLastError(1 /* napi_status.napi_invalid_arg */);
3737
+ return envObject_43.setLastError(1 /* napi_status.napi_invalid_arg */);
2974
3738
  var h_17 = emnapiCtx.handleStore.get(arraybuffer);
2975
3739
  {{{ from64("result") }}};
2976
3740
  if (h_17.isArrayBuffer() && h_17.value.byteLength === 0) {
@@ -2980,15 +3744,15 @@ function napi_is_detached_arraybuffer(env, arraybuffer, result) {
2980
3744
  }
2981
3745
  catch (_11) {
2982
3746
  {{{ makeSetValue("result", 0, "1", "i8") }}};
2983
- return envObject_42.getReturnStatus();
3747
+ return envObject_43.getReturnStatus();
2984
3748
  }
2985
3749
  }
2986
3750
  {{{ makeSetValue("result", 0, "0", "i8") }}};
2987
- return envObject_42.getReturnStatus();
3751
+ return envObject_43.getReturnStatus();
2988
3752
  }
2989
3753
  catch (err_43) {
2990
- envObject_42.tryCatch.setError(err_43);
2991
- return envObject_42.setLastError(10 /* napi_status.napi_pending_exception */);
3754
+ envObject_43.tryCatch.setError(err_43);
3755
+ return envObject_43.setLastError(10 /* napi_status.napi_pending_exception */);
2992
3756
  }
2993
3757
  }
2994
3758
  emnapiImplement('napi_typeof', 'ippp', napi_typeof);
@@ -3014,29 +3778,29 @@ function napi_define_class(env, utf8name, length, constructor, callback_data, pr
3014
3778
  var propPtr, valueHandleId, attributes;
3015
3779
  if (env == 0)
3016
3780
  return 1 /* napi_status.napi_invalid_arg */;
3017
- var envObject_43 = emnapiCtx.envStore.get(env);
3018
- if (envObject_43.tryCatch.hasCaught())
3019
- return envObject_43.setLastError(10 /* napi_status.napi_pending_exception */);
3020
- envObject_43.clearLastError();
3781
+ var envObject_44 = emnapiCtx.envStore.get(env);
3782
+ if (envObject_44.tryCatch.hasCaught())
3783
+ return envObject_44.setLastError(10 /* napi_status.napi_pending_exception */);
3784
+ envObject_44.clearLastError();
3021
3785
  try {
3022
3786
  if (result == 0)
3023
- return envObject_43.setLastError(1 /* napi_status.napi_invalid_arg */);
3787
+ return envObject_44.setLastError(1 /* napi_status.napi_invalid_arg */);
3024
3788
  if (constructor == 0)
3025
- return envObject_43.setLastError(1 /* napi_status.napi_invalid_arg */);
3789
+ return envObject_44.setLastError(1 /* napi_status.napi_invalid_arg */);
3026
3790
  {{{ from64("length") }}};
3027
3791
  {{{ from64("properties") }}};
3028
3792
  {{{ from64("property_count") }}};
3029
3793
  property_count = property_count >>> 0;
3030
3794
  if (property_count > 0) {
3031
3795
  if (!properties)
3032
- return envObject_43.setLastError(1 /* napi_status.napi_invalid_arg */);
3796
+ return envObject_44.setLastError(1 /* napi_status.napi_invalid_arg */);
3033
3797
  }
3034
3798
  if ((length < -1) || (length > 2147483647) || (!utf8name)) {
3035
- return envObject_43.setLastError(1 /* napi_status.napi_invalid_arg */);
3799
+ return envObject_44.setLastError(1 /* napi_status.napi_invalid_arg */);
3036
3800
  }
3037
- var fresult_2 = emnapiCreateFunction(envObject_43, utf8name, length, constructor, callback_data);
3801
+ var fresult_2 = emnapiCreateFunction(envObject_44, utf8name, length, constructor, callback_data);
3038
3802
  if (fresult_2.status !== 0 /* napi_status.napi_ok */)
3039
- return envObject_43.setLastError(fresult_2.status);
3803
+ return envObject_44.setLastError(fresult_2.status);
3040
3804
  var F_1 = fresult_2.f;
3041
3805
  var propertyName_2 = void 0;
3042
3806
  for (var i_3 = 0; i_3 < property_count; i_3++) {
@@ -3056,29 +3820,29 @@ function napi_define_class(env, utf8name, length, constructor, callback_data, pr
3056
3820
  }
3057
3821
  else {
3058
3822
  if (!name_3) {
3059
- return envObject_43.setLastError(4 /* napi_status.napi_name_expected */);
3823
+ return envObject_44.setLastError(4 /* napi_status.napi_name_expected */);
3060
3824
  }
3061
3825
  propertyName_2 = emnapiCtx.handleStore.get(name_3).value;
3062
3826
  if (typeof propertyName_2 !== "string" && typeof propertyName_2 !== "symbol") {
3063
- return envObject_43.setLastError(4 /* napi_status.napi_name_expected */);
3827
+ return envObject_44.setLastError(4 /* napi_status.napi_name_expected */);
3064
3828
  }
3065
3829
  }
3066
3830
  if ((attributes & 1024 /* napi_property_attributes.napi_static */) !== 0) {
3067
- emnapiDefineProperty(envObject_43, F_1, propertyName_2, method_2, getter_2, setter_2, value_3, attributes, data_3);
3831
+ emnapiDefineProperty(envObject_44, F_1, propertyName_2, method_2, getter_2, setter_2, value_3, attributes, data_3);
3068
3832
  continue;
3069
3833
  }
3070
- emnapiDefineProperty(envObject_43, F_1.prototype, propertyName_2, method_2, getter_2, setter_2, value_3, attributes, data_3);
3834
+ emnapiDefineProperty(envObject_44, F_1.prototype, propertyName_2, method_2, getter_2, setter_2, value_3, attributes, data_3);
3071
3835
  }
3072
3836
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3073
3837
  var valueHandle_2 = emnapiCtx.addToCurrentScope(F_1);
3074
3838
  valueHandleId = valueHandle_2.id;
3075
3839
  {{{ from64("result") }}};
3076
3840
  {{{ makeSetValue("result", 0, "valueHandleId", "*") }}};
3077
- return envObject_43.getReturnStatus();
3841
+ return envObject_44.getReturnStatus();
3078
3842
  }
3079
3843
  catch (err_44) {
3080
- envObject_43.tryCatch.setError(err_44);
3081
- return envObject_43.setLastError(10 /* napi_status.napi_pending_exception */);
3844
+ envObject_44.tryCatch.setError(err_44);
3845
+ return envObject_44.setLastError(10 /* napi_status.napi_pending_exception */);
3082
3846
  }
3083
3847
  }
3084
3848
  function napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, result) {
@@ -3086,33 +3850,33 @@ function napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, re
3086
3850
  if (finalize_cb) {
3087
3851
  if (env == 0)
3088
3852
  return 1 /* napi_status.napi_invalid_arg */;
3089
- var envObject_44 = emnapiCtx.envStore.get(env);
3090
- if (envObject_44.tryCatch.hasCaught())
3091
- return envObject_44.setLastError(10 /* napi_status.napi_pending_exception */);
3092
- envObject_44.clearLastError();
3853
+ var envObject_45 = emnapiCtx.envStore.get(env);
3854
+ if (envObject_45.tryCatch.hasCaught())
3855
+ return envObject_45.setLastError(10 /* napi_status.napi_pending_exception */);
3856
+ envObject_45.clearLastError();
3093
3857
  try {
3094
3858
  throw emnapiCtx.createNotSupportWeakRefError("napi_wrap", "Parameter \"finalize_cb\" must be 0(NULL)");
3095
3859
  return null;
3096
3860
  }
3097
3861
  catch (err_45) {
3098
- envObject_44.tryCatch.setError(err_45);
3099
- return envObject_44.setLastError(10 /* napi_status.napi_pending_exception */);
3862
+ envObject_45.tryCatch.setError(err_45);
3863
+ return envObject_45.setLastError(10 /* napi_status.napi_pending_exception */);
3100
3864
  }
3101
3865
  }
3102
3866
  if (result) {
3103
3867
  if (env == 0)
3104
3868
  return 1 /* napi_status.napi_invalid_arg */;
3105
- var envObject_45 = emnapiCtx.envStore.get(env);
3106
- if (envObject_45.tryCatch.hasCaught())
3107
- return envObject_45.setLastError(10 /* napi_status.napi_pending_exception */);
3108
- envObject_45.clearLastError();
3869
+ var envObject_46 = emnapiCtx.envStore.get(env);
3870
+ if (envObject_46.tryCatch.hasCaught())
3871
+ return envObject_46.setLastError(10 /* napi_status.napi_pending_exception */);
3872
+ envObject_46.clearLastError();
3109
3873
  try {
3110
3874
  throw emnapiCtx.createNotSupportWeakRefError("napi_wrap", "Parameter \"result\" must be 0(NULL)");
3111
3875
  return null;
3112
3876
  }
3113
3877
  catch (err_46) {
3114
- envObject_45.tryCatch.setError(err_46);
3115
- return envObject_45.setLastError(10 /* napi_status.napi_pending_exception */);
3878
+ envObject_46.tryCatch.setError(err_46);
3879
+ return envObject_46.setLastError(10 /* napi_status.napi_pending_exception */);
3116
3880
  }
3117
3881
  }
3118
3882
  }
@@ -3128,25 +3892,25 @@ function napi_remove_wrap(env, js_object, result) {
3128
3892
  function napi_type_tag_object(env, object, type_tag) {
3129
3893
  if (env == 0)
3130
3894
  return 1 /* napi_status.napi_invalid_arg */;
3131
- var envObject_46 = emnapiCtx.envStore.get(env);
3132
- if (envObject_46.tryCatch.hasCaught())
3133
- return envObject_46.setLastError(10 /* napi_status.napi_pending_exception */);
3134
- envObject_46.clearLastError();
3895
+ var envObject_47 = emnapiCtx.envStore.get(env);
3896
+ if (envObject_47.tryCatch.hasCaught())
3897
+ return envObject_47.setLastError(10 /* napi_status.napi_pending_exception */);
3898
+ envObject_47.clearLastError();
3135
3899
  try {
3136
3900
  if (!object) {
3137
- return envObject_46.setLastError(envObject_46.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3901
+ return envObject_47.setLastError(envObject_47.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3138
3902
  }
3139
3903
  var value_4 = emnapiCtx.handleStore.get(object);
3140
3904
  if (!(value_4.isObject() || value_4.isFunction())) {
3141
- return envObject_46.setLastError(envObject_46.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */);
3905
+ return envObject_47.setLastError(envObject_47.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */);
3142
3906
  }
3143
3907
  {{{ from64("type_tag") }}};
3144
3908
  if (!type_tag) {
3145
- return envObject_46.setLastError(envObject_46.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3909
+ return envObject_47.setLastError(envObject_47.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3146
3910
  }
3147
- var binding_2 = envObject_46.getObjectBinding(value_4.value);
3911
+ var binding_2 = envObject_47.getObjectBinding(value_4.value);
3148
3912
  if (binding_2.tag !== null) {
3149
- return envObject_46.setLastError(envObject_46.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3913
+ return envObject_47.setLastError(envObject_47.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3150
3914
  }
3151
3915
  binding_2.tag = [
3152
3916
  {{{ makeGetValue("type_tag", "0", "u32") }}},
@@ -3154,11 +3918,11 @@ function napi_type_tag_object(env, object, type_tag) {
3154
3918
  {{{ makeGetValue("type_tag", "8", "u32") }}},
3155
3919
  {{{ makeGetValue("type_tag", "12", "u32") }}}
3156
3920
  ];
3157
- return envObject_46.getReturnStatus();
3921
+ return envObject_47.getReturnStatus();
3158
3922
  }
3159
3923
  catch (err_47) {
3160
- envObject_46.tryCatch.setError(err_47);
3161
- return envObject_46.setLastError(10 /* napi_status.napi_pending_exception */);
3924
+ envObject_47.tryCatch.setError(err_47);
3925
+ return envObject_47.setLastError(10 /* napi_status.napi_pending_exception */);
3162
3926
  }
3163
3927
  }
3164
3928
  // @ts-expect-error
@@ -3167,25 +3931,25 @@ function napi_check_object_type_tag(env, object, type_tag, result) {
3167
3931
  var ret = true, i;
3168
3932
  if (env == 0)
3169
3933
  return 1 /* napi_status.napi_invalid_arg */;
3170
- var envObject_47 = emnapiCtx.envStore.get(env);
3171
- if (envObject_47.tryCatch.hasCaught())
3172
- return envObject_47.setLastError(10 /* napi_status.napi_pending_exception */);
3173
- envObject_47.clearLastError();
3934
+ var envObject_48 = emnapiCtx.envStore.get(env);
3935
+ if (envObject_48.tryCatch.hasCaught())
3936
+ return envObject_48.setLastError(10 /* napi_status.napi_pending_exception */);
3937
+ envObject_48.clearLastError();
3174
3938
  try {
3175
3939
  if (!object) {
3176
- return envObject_47.setLastError(envObject_47.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3940
+ return envObject_48.setLastError(envObject_48.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3177
3941
  }
3178
3942
  var value_5 = emnapiCtx.handleStore.get(object);
3179
3943
  if (!(value_5.isObject() || value_5.isFunction())) {
3180
- return envObject_47.setLastError(envObject_47.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */);
3944
+ return envObject_48.setLastError(envObject_48.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */);
3181
3945
  }
3182
3946
  if (!type_tag) {
3183
- return envObject_47.setLastError(envObject_47.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3947
+ return envObject_48.setLastError(envObject_48.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3184
3948
  }
3185
3949
  if (!result) {
3186
- return envObject_47.setLastError(envObject_47.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3950
+ return envObject_48.setLastError(envObject_48.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3187
3951
  }
3188
- var binding_3 = envObject_47.getObjectBinding(value_5.value);
3952
+ var binding_3 = envObject_48.getObjectBinding(value_5.value);
3189
3953
  if (binding_3.tag !== null) {
3190
3954
  {{{ from64("type_tag") }}};
3191
3955
  for (i = 0; i < 4; i++) {
@@ -3201,11 +3965,11 @@ function napi_check_object_type_tag(env, object, type_tag, result) {
3201
3965
  }
3202
3966
  {{{ from64("result") }}};
3203
3967
  {{{ makeSetValue("result", 0, "ret ? 1 : 0", "i8") }}};
3204
- return envObject_47.getReturnStatus();
3968
+ return envObject_48.getReturnStatus();
3205
3969
  }
3206
3970
  catch (err_48) {
3207
- envObject_47.tryCatch.setError(err_48);
3208
- return envObject_47.setLastError(10 /* napi_status.napi_pending_exception */);
3971
+ envObject_48.tryCatch.setError(err_48);
3972
+ return envObject_48.setLastError(10 /* napi_status.napi_pending_exception */);
3209
3973
  }
3210
3974
  }
3211
3975
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -3445,28 +4209,28 @@ function napi_get_date_value(env, value, result) {
3445
4209
  var v;
3446
4210
  if (env == 0)
3447
4211
  return 1 /* napi_status.napi_invalid_arg */;
3448
- var envObject_48 = emnapiCtx.envStore.get(env);
3449
- if (envObject_48.tryCatch.hasCaught())
3450
- return envObject_48.setLastError(10 /* napi_status.napi_pending_exception */);
3451
- envObject_48.clearLastError();
4212
+ var envObject_49 = emnapiCtx.envStore.get(env);
4213
+ if (envObject_49.tryCatch.hasCaught())
4214
+ return envObject_49.setLastError(10 /* napi_status.napi_pending_exception */);
4215
+ envObject_49.clearLastError();
3452
4216
  try {
3453
4217
  if (value == 0)
3454
- return envObject_48.setLastError(1 /* napi_status.napi_invalid_arg */);
4218
+ return envObject_49.setLastError(1 /* napi_status.napi_invalid_arg */);
3455
4219
  if (result == 0)
3456
- return envObject_48.setLastError(1 /* napi_status.napi_invalid_arg */);
4220
+ return envObject_49.setLastError(1 /* napi_status.napi_invalid_arg */);
3457
4221
  var handle_9 = emnapiCtx.handleStore.get(value);
3458
4222
  if (!handle_9.isDate()) {
3459
- return envObject_48.setLastError(1 /* napi_status.napi_invalid_arg */);
4223
+ return envObject_49.setLastError(1 /* napi_status.napi_invalid_arg */);
3460
4224
  }
3461
4225
  {{{ from64("result") }}};
3462
4226
  v = (handle_9.value).valueOf();
3463
4227
  {{{ makeSetValue("result", 0, "v", "double") }}};
3464
- return envObject_48.getReturnStatus();
4228
+ return envObject_49.getReturnStatus();
3465
4229
  }
3466
4230
  catch (err_49) {
3467
- envObject_48.tryCatch
4231
+ envObject_49.tryCatch
3468
4232
  .setError(err_49);
3469
- return envObject_48.setLastError(10 /* napi_status.napi_pending_exception */);
4233
+ return envObject_49.setLastError(10 /* napi_status.napi_pending_exception */);
3470
4234
  }
3471
4235
  }
3472
4236
  function napi_get_value_bool(env, value, result) {
@@ -4047,21 +4811,21 @@ function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
4047
4811
  var v, i;
4048
4812
  if (env == 0)
4049
4813
  return 1 /* napi_status.napi_invalid_arg */;
4050
- var envObject_49 = emnapiCtx.envStore.get(env);
4051
- if (envObject_49.tryCatch.hasCaught())
4052
- return envObject_49.setLastError(10 /* napi_status.napi_pending_exception */);
4053
- envObject_49.clearLastError();
4814
+ var envObject_50 = emnapiCtx.envStore.get(env);
4815
+ if (envObject_50.tryCatch.hasCaught())
4816
+ return envObject_50.setLastError(10 /* napi_status.napi_pending_exception */);
4817
+ envObject_50.clearLastError();
4054
4818
  try {
4055
4819
  if (!emnapiCtx.feature.supportBigInt) {
4056
4820
  throw emnapiCtx.createNotSupportBigIntError("napi_create_bigint_words", "This API is unavailable");
4057
4821
  }
4058
4822
  if (result == 0)
4059
- return envObject_49.setLastError(1 /* napi_status.napi_invalid_arg */);
4823
+ return envObject_50.setLastError(1 /* napi_status.napi_invalid_arg */);
4060
4824
  {{{ from64("words") }}};
4061
4825
  {{{ from64("word_count") }}};
4062
4826
  word_count = word_count >>> 0;
4063
4827
  if (word_count > 2147483647) {
4064
- return envObject_49.setLastError(1 /* napi_status.napi_invalid_arg */);
4828
+ return envObject_50.setLastError(1 /* napi_status.napi_invalid_arg */);
4065
4829
  }
4066
4830
  if (word_count > (16384)) {
4067
4831
  throw new RangeError("Maximum BigInt size exceeded");
@@ -4077,11 +4841,11 @@ function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
4077
4841
  {{{ from64("result") }}};
4078
4842
  v = emnapiCtx.addToCurrentScope(value_6).id;
4079
4843
  {{{ makeSetValue("result", 0, "v", "*") }}};
4080
- return envObject_49.clearLastError();
4844
+ return envObject_50.clearLastError();
4081
4845
  }
4082
4846
  catch (err_50) {
4083
- envObject_49.tryCatch.setError(err_50);
4084
- return envObject_49.setLastError(10 /* napi_status.napi_pending_exception */);
4847
+ envObject_50.tryCatch.setError(err_50);
4848
+ return envObject_50.setLastError(10 /* napi_status.napi_pending_exception */);
4085
4849
  }
4086
4850
  }
4087
4851
  emnapiImplement('napi_create_int32', 'ipip', napi_create_int32);
@@ -4138,25 +4902,25 @@ function napi_create_arraybuffer(env, byte_length, data, result) {
4138
4902
  var value;
4139
4903
  if (env == 0)
4140
4904
  return 1 /* napi_status.napi_invalid_arg */;
4141
- var envObject_50 = emnapiCtx.envStore
4905
+ var envObject_51 = emnapiCtx.envStore
4142
4906
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4143
4907
  .
4144
4908
  get(env);
4145
- if (envObject_50.tryCatch.hasCaught())
4146
- return envObject_50.setLastError(10 /* napi_status.napi_pending_exception */);
4147
- envObject_50.clearLastError();
4909
+ if (envObject_51.tryCatch.hasCaught())
4910
+ return envObject_51.setLastError(10 /* napi_status.napi_pending_exception */);
4911
+ envObject_51.clearLastError();
4148
4912
  try {
4149
4913
  if (result == 0)
4150
- return envObject_50.setLastError(1 /* napi_status.napi_invalid_arg */);
4914
+ return envObject_51.setLastError(1 /* napi_status.napi_invalid_arg */);
4151
4915
  {{{ from64("result") }}};
4152
4916
  var arrayBuffer_1 = emnapiCreateArrayBuffer(byte_length, data);
4153
4917
  value = emnapiCtx.addToCurrentScope(arrayBuffer_1).id;
4154
4918
  {{{ makeSetValue("result", 0, "value", "*") }}};
4155
- return envObject_50.getReturnStatus();
4919
+ return envObject_51.getReturnStatus();
4156
4920
  }
4157
4921
  catch (err_51) {
4158
- envObject_50.tryCatch.setError(err_51);
4159
- return envObject_50.setLastError(10 /* napi_status.napi_pending_exception */);
4922
+ envObject_51.tryCatch.setError(err_51);
4923
+ return envObject_51.setLastError(10 /* napi_status.napi_pending_exception */);
4160
4924
  }
4161
4925
  }
4162
4926
  // @ts-expect-error
@@ -4165,25 +4929,25 @@ function napi_create_date(env, time, result) {
4165
4929
  var value;
4166
4930
  if (env == 0)
4167
4931
  return 1 /* napi_status.napi_invalid_arg */;
4168
- var envObject_51 = emnapiCtx.envStore
4932
+ var envObject_52 = emnapiCtx.envStore
4169
4933
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4170
4934
  .
4171
4935
  get(env);
4172
- if (envObject_51.tryCatch.hasCaught())
4173
- return envObject_51.setLastError(10 /* napi_status.napi_pending_exception */);
4174
- envObject_51.clearLastError();
4936
+ if (envObject_52.tryCatch.hasCaught())
4937
+ return envObject_52.setLastError(10 /* napi_status.napi_pending_exception */);
4938
+ envObject_52.clearLastError();
4175
4939
  try {
4176
4940
  if (result == 0)
4177
- return envObject_51.setLastError(1 /* napi_status.napi_invalid_arg */);
4941
+ return envObject_52.setLastError(1 /* napi_status.napi_invalid_arg */);
4178
4942
  {{{ from64("result") }}};
4179
4943
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4180
4944
  value = emnapiCtx.addToCurrentScope(new Date(time)).id;
4181
4945
  {{{ makeSetValue("result", 0, "value", "*") }}};
4182
- return envObject_51.getReturnStatus();
4946
+ return envObject_52.getReturnStatus();
4183
4947
  }
4184
4948
  catch (err_52) {
4185
- envObject_51.tryCatch.setError(err_52);
4186
- return envObject_51.setLastError(10 /* napi_status.napi_pending_exception */);
4949
+ envObject_52.tryCatch.setError(err_52);
4950
+ return envObject_52.setLastError(10 /* napi_status.napi_pending_exception */);
4187
4951
  }
4188
4952
  }
4189
4953
  // @ts-expect-error
@@ -4192,31 +4956,31 @@ function napi_create_external(env, data, finalize_cb, finalize_hint, result) {
4192
4956
  var value;
4193
4957
  if (env == 0)
4194
4958
  return 1 /* napi_status.napi_invalid_arg */;
4195
- var envObject_52 = emnapiCtx.envStore
4959
+ var envObject_53 = emnapiCtx.envStore
4196
4960
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4197
4961
  .
4198
4962
  get(env);
4199
- if (envObject_52.tryCatch.hasCaught())
4200
- return envObject_52.setLastError(10 /* napi_status.napi_pending_exception */);
4201
- envObject_52.clearLastError();
4963
+ if (envObject_53.tryCatch.hasCaught())
4964
+ return envObject_53.setLastError(10 /* napi_status.napi_pending_exception */);
4965
+ envObject_53.clearLastError();
4202
4966
  try {
4203
4967
  if (result == 0)
4204
- return envObject_52.setLastError(1 /* napi_status.napi_invalid_arg */);
4968
+ return envObject_53.setLastError(1 /* napi_status.napi_invalid_arg */);
4205
4969
  if (!emnapiCtx.feature.supportFinalizer && finalize_cb) {
4206
4970
  throw emnapiCtx.createNotSupportWeakRefError("napi_create_external", "Parameter \"finalize_cb\" must be 0(NULL)");
4207
4971
  }
4208
- var externalHandle_1 = emnapiCtx.getCurrentScope().addExternal(envObject_52, data);
4972
+ var externalHandle_1 = emnapiCtx.getCurrentScope().addExternal(envObject_53, data);
4209
4973
  if (finalize_cb) {
4210
- emnapiCtx.createReference(envObject_52, externalHandle_1.id, 0, 0 /* Ownership.kRuntime */, finalize_cb, data, finalize_hint);
4974
+ emnapiCtx.createReference(envObject_53, externalHandle_1.id, 0, 0 /* Ownership.kRuntime */, finalize_cb, data, finalize_hint);
4211
4975
  }
4212
4976
  {{{ from64("result") }}};
4213
4977
  value = externalHandle_1.id;
4214
4978
  {{{ makeSetValue("result", 0, "value", "*") }}};
4215
- return envObject_52.clearLastError();
4979
+ return envObject_53.clearLastError();
4216
4980
  }
4217
4981
  catch (err_53) {
4218
- envObject_52.tryCatch.setError(err_53);
4219
- return envObject_52.setLastError(10 /* napi_status.napi_pending_exception */);
4982
+ envObject_53.tryCatch.setError(err_53);
4983
+ return envObject_53.setLastError(10 /* napi_status.napi_pending_exception */);
4220
4984
  }
4221
4985
  }
4222
4986
  function napi_create_external_arraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result
@@ -4226,16 +4990,16 @@ function napi_create_external_arraybuffer(env, external_data, byte_length, final
4226
4990
  var value;
4227
4991
  if (env == 0)
4228
4992
  return 1 /* napi_status.napi_invalid_arg */;
4229
- var envObject_53 = emnapiCtx.envStore
4993
+ var envObject_54 = emnapiCtx.envStore
4230
4994
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4231
4995
  .
4232
4996
  get(env);
4233
- if (envObject_53.tryCatch.hasCaught())
4234
- return envObject_53.setLastError(10 /* napi_status.napi_pending_exception */);
4235
- envObject_53.clearLastError();
4997
+ if (envObject_54.tryCatch.hasCaught())
4998
+ return envObject_54.setLastError(10 /* napi_status.napi_pending_exception */);
4999
+ envObject_54.clearLastError();
4236
5000
  try {
4237
5001
  if (result == 0)
4238
- return envObject_53.setLastError(1 /* napi_status.napi_invalid_arg */);
5002
+ return envObject_54.setLastError(1 /* napi_status.napi_invalid_arg */);
4239
5003
  {{{ from64("byte_length") }}};
4240
5004
  {{{ from64("external_data") }}};
4241
5005
  {{{ from64("result") }}};
@@ -4267,21 +5031,21 @@ function napi_create_external_arraybuffer(env, external_data, byte_length, final
4267
5031
  if (finalize_cb) {
4268
5032
  var status_2 = _napi_add_finalizer(env, handle_10.id, external_data, finalize_cb, finalize_hint, 0);
4269
5033
  if (status_2 === 10 /* napi_status.napi_pending_exception */) {
4270
- var err_54 = envObject_53.tryCatch.extractException();
4271
- envObject_53.clearLastError();
5034
+ var err_54 = envObject_54.tryCatch.extractException();
5035
+ envObject_54.clearLastError();
4272
5036
  throw err_54;
4273
5037
  }
4274
5038
  else if (status_2 !== 0 /* napi_status.napi_ok */) {
4275
- return envObject_53.setLastError(status_2);
5039
+ return envObject_54.setLastError(status_2);
4276
5040
  }
4277
5041
  }
4278
5042
  value = handle_10.id;
4279
5043
  {{{ makeSetValue("result", 0, "value", "*") }}};
4280
- return envObject_53.getReturnStatus();
5044
+ return envObject_54.getReturnStatus();
4281
5045
  }
4282
5046
  catch (err_55) {
4283
- envObject_53.tryCatch.setError(err_55);
4284
- return envObject_53.setLastError(10 /* napi_status.napi_pending_exception */);
5047
+ envObject_54.tryCatch.setError(err_55);
5048
+ return envObject_54.setLastError(10 /* napi_status.napi_pending_exception */);
4285
5049
  }
4286
5050
  }
4287
5051
  function napi_create_object(env, result) {
@@ -4327,26 +5091,26 @@ function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, res
4327
5091
  var value;
4328
5092
  if (env == 0)
4329
5093
  return 1 /* napi_status.napi_invalid_arg */;
4330
- var envObject_54 = emnapiCtx.envStore
5094
+ var envObject_55 = emnapiCtx.envStore
4331
5095
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4332
5096
  .
4333
5097
  get(env);
4334
- if (envObject_54.tryCatch.hasCaught())
4335
- return envObject_54.setLastError(10 /* napi_status.napi_pending_exception */);
4336
- envObject_54.clearLastError();
5098
+ if (envObject_55.tryCatch.hasCaught())
5099
+ return envObject_55.setLastError(10 /* napi_status.napi_pending_exception */);
5100
+ envObject_55.clearLastError();
4337
5101
  try {
4338
5102
  if (arraybuffer == 0)
4339
- return envObject_54.setLastError(1 /* napi_status.napi_invalid_arg */);
5103
+ return envObject_55.setLastError(1 /* napi_status.napi_invalid_arg */);
4340
5104
  if (result == 0)
4341
- return envObject_54.setLastError(1 /* napi_status.napi_invalid_arg */);
5105
+ return envObject_55.setLastError(1 /* napi_status.napi_invalid_arg */);
4342
5106
  var handle_11 = emnapiCtx.handleStore.get(arraybuffer);
4343
5107
  var buffer_1 = handle_11.value;
4344
5108
  if (!(buffer_1 instanceof ArrayBuffer)) {
4345
- return envObject_54.setLastError(1 /* napi_status.napi_invalid_arg */);
5109
+ return envObject_55.setLastError(1 /* napi_status.napi_invalid_arg */);
4346
5110
  }
4347
5111
  {{{ from64("byte_offset") }}};
4348
5112
  {{{ from64("length") }}};
4349
- var createTypedArray_1 = function (envObject_54, Type, size_of_element, buffer_1, byte_offset, length) {
5113
+ var createTypedArray_1 = function (envObject_55, Type, size_of_element, buffer_1, byte_offset, length) {
4350
5114
  var _a;
4351
5115
  byte_offset = byte_offset >>> 0;
4352
5116
  length = length >>> 0;
@@ -4354,15 +5118,15 @@ function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, res
4354
5118
  if ((byte_offset) % (size_of_element) !== 0) {
4355
5119
  var err_57 = new RangeError("start offset of ".concat((_a = Type.name) !== null && _a !== void 0 ? _a : "", " should be a multiple of ").concat(size_of_element));
4356
5120
  err_57.code = "ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT";
4357
- envObject_54.tryCatch.setError(err_57);
4358
- return envObject_54.setLastError(9 /* napi_status.napi_generic_failure */);
5121
+ envObject_55.tryCatch.setError(err_57);
5122
+ return envObject_55.setLastError(9 /* napi_status.napi_generic_failure */);
4359
5123
  }
4360
5124
  }
4361
5125
  if (((length * size_of_element) + byte_offset) > buffer_1.byteLength) {
4362
5126
  var err_58 = new RangeError("Invalid typed array length");
4363
5127
  err_58.code = "ERR_NAPI_INVALID_TYPEDARRAY_LENGTH";
4364
- envObject_54.tryCatch.setError(err_58);
4365
- return envObject_54.setLastError(9 /* napi_status.napi_generic_failure */);
5128
+ envObject_55.tryCatch.setError(err_58);
5129
+ return envObject_55.setLastError(9 /* napi_status.napi_generic_failure */);
4366
5130
  }
4367
5131
  var out_1 = new Type(buffer_1, byte_offset, length);
4368
5132
  if (buffer_1 === wasmMemory.buffer) {
@@ -4380,39 +5144,39 @@ function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, res
4380
5144
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4381
5145
  value = emnapiCtx.addToCurrentScope(out_1).id;
4382
5146
  {{{ makeSetValue("result", 0, "value", "*") }}};
4383
- return envObject_54.getReturnStatus();
5147
+ return envObject_55.getReturnStatus();
4384
5148
  };
4385
5149
  switch (type) {
4386
5150
  case 0 /* napi_typedarray_type.napi_int8_array */:
4387
- return createTypedArray_1(envObject_54, Int8Array, 1, buffer_1, byte_offset, length);
5151
+ return createTypedArray_1(envObject_55, Int8Array, 1, buffer_1, byte_offset, length);
4388
5152
  case 1 /* napi_typedarray_type.napi_uint8_array */:
4389
- return createTypedArray_1(envObject_54, Uint8Array, 1, buffer_1, byte_offset, length);
5153
+ return createTypedArray_1(envObject_55, Uint8Array, 1, buffer_1, byte_offset, length);
4390
5154
  case 2 /* napi_typedarray_type.napi_uint8_clamped_array */:
4391
- return createTypedArray_1(envObject_54, Uint8ClampedArray, 1, buffer_1, byte_offset, length);
5155
+ return createTypedArray_1(envObject_55, Uint8ClampedArray, 1, buffer_1, byte_offset, length);
4392
5156
  case 3 /* napi_typedarray_type.napi_int16_array */:
4393
- return createTypedArray_1(envObject_54, Int16Array, 2, buffer_1, byte_offset, length);
5157
+ return createTypedArray_1(envObject_55, Int16Array, 2, buffer_1, byte_offset, length);
4394
5158
  case 4 /* napi_typedarray_type.napi_uint16_array */:
4395
- return createTypedArray_1(envObject_54, Uint16Array, 2, buffer_1, byte_offset, length);
5159
+ return createTypedArray_1(envObject_55, Uint16Array, 2, buffer_1, byte_offset, length);
4396
5160
  case 5 /* napi_typedarray_type.napi_int32_array */:
4397
- return createTypedArray_1(envObject_54, Int32Array, 4, buffer_1, byte_offset, length);
5161
+ return createTypedArray_1(envObject_55, Int32Array, 4, buffer_1, byte_offset, length);
4398
5162
  case 6 /* napi_typedarray_type.napi_uint32_array */:
4399
- return createTypedArray_1(envObject_54, Uint32Array, 4, buffer_1, byte_offset, length);
5163
+ return createTypedArray_1(envObject_55, Uint32Array, 4, buffer_1, byte_offset, length);
4400
5164
  case 7 /* napi_typedarray_type.napi_float32_array */:
4401
- return createTypedArray_1(envObject_54, Float32Array, 4, buffer_1, byte_offset, length);
5165
+ return createTypedArray_1(envObject_55, Float32Array, 4, buffer_1, byte_offset, length);
4402
5166
  case 8 /* napi_typedarray_type.napi_float64_array */:
4403
- return createTypedArray_1(envObject_54, Float64Array, 8, buffer_1, byte_offset, length);
5167
+ return createTypedArray_1(envObject_55, Float64Array, 8, buffer_1, byte_offset, length);
4404
5168
  case 9 /* napi_typedarray_type.napi_bigint64_array */:
4405
- return createTypedArray_1(envObject_54, BigInt64Array, 8, buffer_1, byte_offset, length);
5169
+ return createTypedArray_1(envObject_55, BigInt64Array, 8, buffer_1, byte_offset, length);
4406
5170
  case 10 /* napi_typedarray_type.napi_biguint64_array */:
4407
- return createTypedArray_1(envObject_54, BigUint64Array, 8, buffer_1, byte_offset, length);
5171
+ return createTypedArray_1(envObject_55, BigUint64Array, 8, buffer_1, byte_offset, length);
4408
5172
  default:
4409
- return envObject_54.setLastError(1 /* napi_status.napi_invalid_arg */);
5173
+ return envObject_55.setLastError(1 /* napi_status.napi_invalid_arg */);
4410
5174
  }
4411
5175
  return null;
4412
5176
  }
4413
5177
  catch (err_56) {
4414
- envObject_54.tryCatch.setError(err_56);
4415
- return envObject_54.setLastError(10 /* napi_status.napi_pending_exception */);
5178
+ envObject_55.tryCatch.setError(err_56);
5179
+ return envObject_55.setLastError(10 /* napi_status.napi_pending_exception */);
4416
5180
  }
4417
5181
  }
4418
5182
  function napi_create_buffer(env, size, data, result
@@ -4423,16 +5187,16 @@ function napi_create_buffer(env, size, data, result
4423
5187
  var value, pointer;
4424
5188
  if (env == 0)
4425
5189
  return 1 /* napi_status.napi_invalid_arg */;
4426
- var envObject_55 = emnapiCtx.envStore
5190
+ var envObject_56 = emnapiCtx.envStore
4427
5191
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4428
5192
  .
4429
5193
  get(env);
4430
- if (envObject_55.tryCatch.hasCaught())
4431
- return envObject_55.setLastError(10 /* napi_status.napi_pending_exception */);
4432
- envObject_55.clearLastError();
5194
+ if (envObject_56.tryCatch.hasCaught())
5195
+ return envObject_56.setLastError(10 /* napi_status.napi_pending_exception */);
5196
+ envObject_56.clearLastError();
4433
5197
  try {
4434
5198
  if (result == 0)
4435
- return envObject_55.setLastError(1 /* napi_status.napi_invalid_arg */);
5199
+ return envObject_56.setLastError(1 /* napi_status.napi_invalid_arg */);
4436
5200
  {{{ from64("result") }}};
4437
5201
  var Buffer_1 = emnapiCtx.feature.Buffer;
4438
5202
  var buffer_2 = void 0;
@@ -4463,11 +5227,11 @@ function napi_create_buffer(env, size, data, result
4463
5227
  {{{ from64("data") }}};
4464
5228
  {{{ makeSetValue("data", 0, "pointer", "*") }}};
4465
5229
  }
4466
- return envObject_55.getReturnStatus();
5230
+ return envObject_56.getReturnStatus();
4467
5231
  }
4468
5232
  catch (err_59) {
4469
- envObject_55.tryCatch.setError(err_59);
4470
- return envObject_55.setLastError(10 /* napi_status.napi_pending_exception */);
5233
+ envObject_56.tryCatch.setError(err_59);
5234
+ return envObject_56.setLastError(10 /* napi_status.napi_pending_exception */);
4471
5235
  }
4472
5236
  }
4473
5237
  function napi_create_buffer_copy(env, length, data, result_data, result
@@ -4477,16 +5241,16 @@ function napi_create_buffer_copy(env, length, data, result_data, result
4477
5241
  var value;
4478
5242
  if (env == 0)
4479
5243
  return 1 /* napi_status.napi_invalid_arg */;
4480
- var envObject_56 = emnapiCtx.envStore
5244
+ var envObject_57 = emnapiCtx.envStore
4481
5245
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4482
5246
  .
4483
5247
  get(env);
4484
- if (envObject_56.tryCatch.hasCaught())
4485
- return envObject_56.setLastError(10 /* napi_status.napi_pending_exception */);
4486
- envObject_56.clearLastError();
5248
+ if (envObject_57.tryCatch.hasCaught())
5249
+ return envObject_57.setLastError(10 /* napi_status.napi_pending_exception */);
5250
+ envObject_57.clearLastError();
4487
5251
  try {
4488
5252
  if (result == 0)
4489
- return envObject_56.setLastError(1 /* napi_status.napi_invalid_arg */);
5253
+ return envObject_57.setLastError(1 /* napi_status.napi_invalid_arg */);
4490
5254
  var arrayBuffer_3 = emnapiCreateArrayBuffer(length, result_data);
4491
5255
  var Buffer_2 = emnapiCtx.feature.Buffer;
4492
5256
  var buffer_4 = Buffer_2.from(arrayBuffer_3);
@@ -4496,11 +5260,11 @@ function napi_create_buffer_copy(env, length, data, result_data, result
4496
5260
  value = emnapiCtx.addToCurrentScope(buffer_4).id;
4497
5261
  {{{ from64("result") }}};
4498
5262
  {{{ makeSetValue("result", 0, "value", "*") }}};
4499
- return envObject_56.getReturnStatus();
5263
+ return envObject_57.getReturnStatus();
4500
5264
  }
4501
5265
  catch (err_60) {
4502
- envObject_56.tryCatch.setError(err_60);
4503
- return envObject_56.setLastError(10 /* napi_status.napi_pending_exception */);
5266
+ envObject_57.tryCatch.setError(err_60);
5267
+ return envObject_57.setLastError(10 /* napi_status.napi_pending_exception */);
4504
5268
  }
4505
5269
  }
4506
5270
  function napi_create_external_buffer(env, length, data, finalize_cb, finalize_hint, result) {
@@ -4513,18 +5277,18 @@ function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result
4513
5277
  var value;
4514
5278
  if (env == 0)
4515
5279
  return 1 /* napi_status.napi_invalid_arg */;
4516
- var envObject_57 = emnapiCtx.envStore
5280
+ var envObject_58 = emnapiCtx.envStore
4517
5281
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4518
5282
  .
4519
5283
  get(env);
4520
- if (envObject_57.tryCatch.hasCaught())
4521
- return envObject_57.setLastError(10 /* napi_status.napi_pending_exception */);
4522
- envObject_57.clearLastError();
5284
+ if (envObject_58.tryCatch.hasCaught())
5285
+ return envObject_58.setLastError(10 /* napi_status.napi_pending_exception */);
5286
+ envObject_58.clearLastError();
4523
5287
  try {
4524
5288
  if (arraybuffer == 0)
4525
- return envObject_57.setLastError(1 /* napi_status.napi_invalid_arg */);
5289
+ return envObject_58.setLastError(1 /* napi_status.napi_invalid_arg */);
4526
5290
  if (result == 0)
4527
- return envObject_57.setLastError(1 /* napi_status.napi_invalid_arg */);
5291
+ return envObject_58.setLastError(1 /* napi_status.napi_invalid_arg */);
4528
5292
  {{{ from64("byte_length") }}};
4529
5293
  {{{ from64("byte_offset") }}};
4530
5294
  byte_length = byte_length >>> 0;
@@ -4532,13 +5296,13 @@ function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result
4532
5296
  var handle_12 = emnapiCtx.handleStore.get(arraybuffer);
4533
5297
  var buffer_5 = handle_12.value;
4534
5298
  if (!(buffer_5 instanceof ArrayBuffer)) {
4535
- return envObject_57.setLastError(1 /* napi_status.napi_invalid_arg */);
5299
+ return envObject_58.setLastError(1 /* napi_status.napi_invalid_arg */);
4536
5300
  }
4537
5301
  if ((byte_length + byte_offset) > buffer_5.byteLength) {
4538
5302
  var err_61 = new RangeError("byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in");
4539
5303
  err_61.code = "ERR_NAPI_INVALID_DATAVIEW_ARGS";
4540
- envObject_57.tryCatch.setError(err_61);
4541
- return envObject_57.setLastError(10 /* napi_status.napi_pending_exception */);
5304
+ envObject_58.tryCatch.setError(err_61);
5305
+ return envObject_58.setLastError(10 /* napi_status.napi_pending_exception */);
4542
5306
  }
4543
5307
  var dataview_1 = new DataView(buffer_5, byte_offset, byte_length);
4544
5308
  if (buffer_5 === wasmMemory.buffer) {
@@ -4556,11 +5320,11 @@ function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result
4556
5320
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4557
5321
  value = emnapiCtx.addToCurrentScope(dataview_1).id;
4558
5322
  {{{ makeSetValue("result", 0, "value", "*") }}};
4559
- return envObject_57.getReturnStatus();
5323
+ return envObject_58.getReturnStatus();
4560
5324
  }
4561
5325
  catch (err_62) {
4562
- envObject_57.tryCatch.setError(err_62);
4563
- return envObject_57.setLastError(10 /* napi_status.napi_pending_exception */);
5326
+ envObject_58.tryCatch.setError(err_62);
5327
+ return envObject_58.setLastError(10 /* napi_status.napi_pending_exception */);
4564
5328
  }
4565
5329
  }
4566
5330
  function node_api_symbol_for(env, utf8description, length, result) {
@@ -4648,6 +5412,62 @@ emnapiImplement('napi_get_boolean', 'ipip', napi_get_boolean);
4648
5412
  emnapiImplement('napi_get_global', 'ipp', napi_get_global);
4649
5413
  emnapiImplement('napi_get_null', 'ipp', napi_get_null);
4650
5414
  emnapiImplement('napi_get_undefined', 'ipp', napi_get_undefined);
5415
+ function _napi_create_async_work(env, resource, resource_name, execute, complete, data, result) {
5416
+ if (env == 0)
5417
+ return 1 /* napi_status.napi_invalid_arg */;
5418
+ var envObject = emnapiCtx.envStore.get(env);
5419
+ if (execute == 0)
5420
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5421
+ if (result == 0)
5422
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5423
+ var resourceObject;
5424
+ if (resource) {
5425
+ resourceObject = Object(emnapiCtx.handleStore.get(resource).value);
5426
+ }
5427
+ else {
5428
+ resourceObject = {};
5429
+ }
5430
+ if (resource_name == 0)
5431
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5432
+ var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
5433
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5434
+ var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
5435
+ {{{ makeSetValue('result', 0, 'id', '*') }}};
5436
+ return envObject.clearLastError();
5437
+ }
5438
+ function _napi_delete_async_work(env, work) {
5439
+ if (env == 0)
5440
+ return 1 /* napi_status.napi_invalid_arg */;
5441
+ var envObject = emnapiCtx.envStore.get(env);
5442
+ if (work == 0)
5443
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5444
+ emnapiAWST.remove(work);
5445
+ return envObject.clearLastError();
5446
+ }
5447
+ function _napi_queue_async_work(env, work) {
5448
+ if (env == 0)
5449
+ return 1 /* napi_status.napi_invalid_arg */;
5450
+ var envObject = emnapiCtx.envStore.get(env);
5451
+ if (work == 0)
5452
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5453
+ emnapiAWST.queue(work);
5454
+ return envObject.clearLastError();
5455
+ }
5456
+ function _napi_cancel_async_work(env, work) {
5457
+ if (env == 0)
5458
+ return 1 /* napi_status.napi_invalid_arg */;
5459
+ var envObject = emnapiCtx.envStore.get(env);
5460
+ if (work == 0)
5461
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5462
+ var status = emnapiAWST.cancel(work);
5463
+ if (status === 0 /* napi_status.napi_ok */)
5464
+ return envObject.clearLastError();
5465
+ return envObject.setLastError(status);
5466
+ }
5467
+ emnapiImplement('napi_create_async_work', 'ippppppp', _napi_create_async_work, ['$emnapiAWST']);
5468
+ emnapiImplement('napi_delete_async_work', 'ipp', _napi_delete_async_work, ['$emnapiAWST']);
5469
+ emnapiImplement('napi_queue_async_work', 'ipp', _napi_queue_async_work, ['$emnapiAWST']);
5470
+ emnapiImplement('napi_cancel_async_work', 'ipp', _napi_cancel_async_work, ['$emnapiAWST']);
4651
5471
  mergeInto(LibraryManager.library, {
4652
5472
  _emnapi_worker_unref__sig: 'vp',
4653
5473
  _emnapi_worker_unref__deps: ['$PThread'],
@@ -4742,23 +5562,23 @@ function emnapi_get_module_object(env, result) {
4742
5562
  var value;
4743
5563
  if (env == 0)
4744
5564
  return 1 /* napi_status.napi_invalid_arg */;
4745
- var envObject_58 = emnapiCtx.envStore.get(env);
4746
- if (envObject_58.tryCatch
5565
+ var envObject_59 = emnapiCtx.envStore.get(env);
5566
+ if (envObject_59.tryCatch
4747
5567
  .hasCaught())
4748
- return envObject_58.setLastError(10 /* napi_status.napi_pending_exception */);
4749
- envObject_58.clearLastError();
5568
+ return envObject_59.setLastError(10 /* napi_status.napi_pending_exception */);
5569
+ envObject_59.clearLastError();
4750
5570
  try {
4751
5571
  if (result == 0)
4752
- return envObject_58.setLastError(1 /* napi_status.napi_invalid_arg */);
5572
+ return envObject_59.setLastError(1 /* napi_status.napi_invalid_arg */);
4753
5573
  {{{ from64("result") }}};
4754
5574
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4755
- value = envObject_58.ensureHandleId(Module);
5575
+ value = envObject_59.ensureHandleId(Module);
4756
5576
  {{{ makeSetValue("result", 0, "value", "*") }}};
4757
- return envObject_58.getReturnStatus();
5577
+ return envObject_59.getReturnStatus();
4758
5578
  }
4759
5579
  catch (err_63) {
4760
- envObject_58.tryCatch.setError(err_63);
4761
- return envObject_58.setLastError(10 /* napi_status.napi_pending_exception */);
5580
+ envObject_59.tryCatch.setError(err_63);
5581
+ return envObject_59.setLastError(10 /* napi_status.napi_pending_exception */);
4762
5582
  }
4763
5583
  }
4764
5584
  // @ts-expect-error
@@ -4767,26 +5587,26 @@ function emnapi_get_module_property(env, utf8name, result) {
4767
5587
  var value;
4768
5588
  if (env == 0)
4769
5589
  return 1 /* napi_status.napi_invalid_arg */;
4770
- var envObject_59 = emnapiCtx.envStore.get(env);
4771
- if (envObject_59.tryCatch
5590
+ var envObject_60 = emnapiCtx.envStore.get(env);
5591
+ if (envObject_60.tryCatch
4772
5592
  .hasCaught())
4773
- return envObject_59.setLastError(10 /* napi_status.napi_pending_exception */);
4774
- envObject_59.clearLastError();
5593
+ return envObject_60.setLastError(10 /* napi_status.napi_pending_exception */);
5594
+ envObject_60.clearLastError();
4775
5595
  try {
4776
5596
  if (utf8name == 0)
4777
- return envObject_59.setLastError(1 /* napi_status.napi_invalid_arg */);
5597
+ return envObject_60.setLastError(1 /* napi_status.napi_invalid_arg */);
4778
5598
  if (result == 0)
4779
- return envObject_59.setLastError(1 /* napi_status.napi_invalid_arg */);
5599
+ return envObject_60.setLastError(1 /* napi_status.napi_invalid_arg */);
4780
5600
  {{{ from64("utf8name") }}};
4781
5601
  {{{ from64("result") }}};
4782
5602
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4783
- value = envObject_59.ensureHandleId(Module[UTF8ToString(utf8name)]);
5603
+ value = envObject_60.ensureHandleId(Module[UTF8ToString(utf8name)]);
4784
5604
  {{{ makeSetValue("result", 0, "value", "*") }}};
4785
- return envObject_59.getReturnStatus();
5605
+ return envObject_60.getReturnStatus();
4786
5606
  }
4787
5607
  catch (err_64) {
4788
- envObject_59.tryCatch.setError(err_64);
4789
- return envObject_59.setLastError(10 /* napi_status.napi_pending_exception */);
5608
+ envObject_60.tryCatch.setError(err_64);
5609
+ return envObject_60.setLastError(10 /* napi_status.napi_pending_exception */);
4790
5610
  }
4791
5611
  }
4792
5612
  emnapiImplement2('emnapi_get_module_object', 'ipp', emnapi_get_module_object);
@@ -4798,6 +5618,7 @@ emnapiDefineVar('$emnapiModule', {
4798
5618
  loaded: false,
4799
5619
  filename: ''
4800
5620
  });
5621
+ emnapiDefineVar('$emnapiAsyncWorkPoolSize', 0);
4801
5622
  function emnapiInit(options) {
4802
5623
  if (emnapiModule.loaded)
4803
5624
  return emnapiModule.exports;
@@ -4819,6 +5640,18 @@ function emnapiInit(options) {
4819
5640
  }
4820
5641
  emnapiNodeBinding = nodeBinding;
4821
5642
  }
5643
+ if ('asyncWorkPoolSize' in options) {
5644
+ if (typeof options.asyncWorkPoolSize !== 'number') {
5645
+ throw new TypeError('options.asyncWorkPoolSize must be a integer');
5646
+ }
5647
+ emnapiAsyncWorkPoolSize = options.asyncWorkPoolSize >> 0;
5648
+ if (emnapiAsyncWorkPoolSize > 1024) {
5649
+ emnapiAsyncWorkPoolSize = 1024;
5650
+ }
5651
+ else if (emnapiAsyncWorkPoolSize < -1024) {
5652
+ emnapiAsyncWorkPoolSize = -1024;
5653
+ }
5654
+ }
4822
5655
  // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
4823
5656
  var envObject = emnapiModule.envObject || (emnapiModule.envObject = emnapiCtx.createEnv(function (cb) { return {{{ makeDynCall('vppp', 'cb') }}}; }, function (cb) { return {{{ makeDynCall('vp', 'cb') }}}; }));
4824
5657
  var scope = emnapiCtx.openScope(envObject);
@@ -4840,7 +5673,11 @@ function emnapiInit(options) {
4840
5673
  delete emnapiModule.envObject;
4841
5674
  return emnapiModule.exports;
4842
5675
  }
4843
- emnapiImplementHelper('$emnapiInit', undefined, emnapiInit, ['$emnapiModule', '$emnapiCtx', '$emnapiNodeBinding', 'napi_register_wasm_v1']);
5676
+ emnapiImplementHelper('$emnapiInit', undefined, emnapiInit, ['$emnapiModule', '$emnapiCtx', '$emnapiNodeBinding', '$emnapiAsyncWorkPoolSize', 'napi_register_wasm_v1']);
5677
+ function __emnapi_async_work_pool_size() {
5678
+ return Math.abs(emnapiAsyncWorkPoolSize);
5679
+ }
5680
+ emnapiImplementInternal('_emnapi_async_work_pool_size', 'i', __emnapi_async_work_pool_size, ['$emnapiAsyncWorkPoolSize']);
4844
5681
  function __emnapi_get_filename(buf, len) {
4845
5682
  if (!buf) {
4846
5683
  return lengthBytesUTF8(emnapiModule.filename);