emnapi 0.41.0 → 0.43.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.
@@ -150,6 +150,7 @@ function _emnapi_create_memory_view(env, typedarray_type, external_data, byte_le
150
150
  if (!env)
151
151
  return 1 /* napi_status.napi_invalid_arg */;
152
152
  var envObject = emnapiCtx.envStore.get(env);
153
+ envObject.checkGCAccess();
153
154
  if (envObject.tryCatch.hasCaught())
154
155
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
155
156
  if (!envObject.canCallIntoJs()) {
@@ -311,6 +312,7 @@ function emnapi_sync_memory(env, js_to_wasm, arraybuffer_or_view, offset, len) {
311
312
  if (!env)
312
313
  return 1 /* napi_status.napi_invalid_arg */;
313
314
  var envObject = emnapiCtx.envStore.get(env);
315
+ envObject.checkGCAccess();
314
316
  if (envObject.tryCatch.hasCaught())
315
317
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
316
318
  if (!envObject.canCallIntoJs()) {
@@ -368,6 +370,7 @@ function emnapi_get_memory_address(env, arraybuffer_or_view, address, ownership,
368
370
  if (!env)
369
371
  return 1 /* napi_status.napi_invalid_arg */;
370
372
  var envObject = emnapiCtx.envStore.get(env);
373
+ envObject.checkGCAccess();
371
374
  if (envObject.tryCatch.hasCaught())
372
375
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
373
376
  if (!envObject.canCallIntoJs()) {
@@ -457,6 +460,7 @@ function napi_throw(env, error) {
457
460
  if (!env)
458
461
  return 1 /* napi_status.napi_invalid_arg */;
459
462
  var envObject = emnapiCtx.envStore.get(env);
463
+ envObject.checkGCAccess();
460
464
  if (envObject.tryCatch.hasCaught())
461
465
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
462
466
  if (!envObject.canCallIntoJs()) {
@@ -478,6 +482,7 @@ function napi_throw_error(env, code, msg) {
478
482
  if (!env)
479
483
  return 1 /* napi_status.napi_invalid_arg */;
480
484
  var envObject = emnapiCtx.envStore.get(env);
485
+ envObject.checkGCAccess();
481
486
  if (envObject.tryCatch.hasCaught())
482
487
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
483
488
  if (!envObject.canCallIntoJs()) {
@@ -504,6 +509,7 @@ function napi_throw_type_error(env, code, msg) {
504
509
  if (!env)
505
510
  return 1 /* napi_status.napi_invalid_arg */;
506
511
  var envObject = emnapiCtx.envStore.get(env);
512
+ envObject.checkGCAccess();
507
513
  if (envObject.tryCatch.hasCaught())
508
514
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
509
515
  if (!envObject.canCallIntoJs()) {
@@ -530,6 +536,7 @@ function napi_throw_range_error(env, code, msg) {
530
536
  if (!env)
531
537
  return 1 /* napi_status.napi_invalid_arg */;
532
538
  var envObject = emnapiCtx.envStore.get(env);
539
+ envObject.checkGCAccess();
533
540
  if (envObject.tryCatch.hasCaught())
534
541
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
535
542
  if (!envObject.canCallIntoJs()) {
@@ -556,6 +563,7 @@ function node_api_throw_syntax_error(env, code, msg) {
556
563
  if (!env)
557
564
  return 1 /* napi_status.napi_invalid_arg */;
558
565
  var envObject = emnapiCtx.envStore.get(env);
566
+ envObject.checkGCAccess();
559
567
  if (envObject.tryCatch.hasCaught())
560
568
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
561
569
  if (!envObject.canCallIntoJs()) {
@@ -582,6 +590,7 @@ function napi_is_exception_pending(env, result) {
582
590
  if (!env)
583
591
  return 1 /* napi_status.napi_invalid_arg */;
584
592
  var envObject = emnapiCtx.envStore.get(env);
593
+ envObject.checkGCAccess();
585
594
  if (!result)
586
595
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
587
596
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -594,6 +603,7 @@ function napi_create_error(env, code, msg, result) {
594
603
  if (!env)
595
604
  return 1 /* napi_status.napi_invalid_arg */;
596
605
  var envObject = emnapiCtx.envStore.get(env);
606
+ envObject.checkGCAccess();
597
607
  if (!msg)
598
608
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
599
609
  if (!result)
@@ -620,6 +630,7 @@ function napi_create_type_error(env, code, msg, result) {
620
630
  if (!env)
621
631
  return 1 /* napi_status.napi_invalid_arg */;
622
632
  var envObject = emnapiCtx.envStore.get(env);
633
+ envObject.checkGCAccess();
623
634
  if (!msg)
624
635
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
625
636
  if (!result)
@@ -646,6 +657,7 @@ function napi_create_range_error(env, code, msg, result) {
646
657
  if (!env)
647
658
  return 1 /* napi_status.napi_invalid_arg */;
648
659
  var envObject = emnapiCtx.envStore.get(env);
660
+ envObject.checkGCAccess();
649
661
  if (!msg)
650
662
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
651
663
  if (!result)
@@ -672,6 +684,7 @@ function node_api_create_syntax_error(env, code, msg, result) {
672
684
  if (!env)
673
685
  return 1 /* napi_status.napi_invalid_arg */;
674
686
  var envObject = emnapiCtx.envStore.get(env);
687
+ envObject.checkGCAccess();
675
688
  if (!msg)
676
689
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
677
690
  if (!result)
@@ -698,6 +711,7 @@ function napi_get_and_clear_last_exception(env, result) {
698
711
  if (!env)
699
712
  return 1 /* napi_status.napi_invalid_arg */;
700
713
  var envObject = emnapiCtx.envStore.get(env);
714
+ envObject.checkGCAccess();
701
715
  if (!result)
702
716
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
703
717
  {{{ from64('result') }}};
@@ -732,6 +746,7 @@ function napi_fatal_exception(env, err) {
732
746
  if (!env)
733
747
  return 1 /* napi_status.napi_invalid_arg */;
734
748
  var envObject = emnapiCtx.envStore.get(env);
749
+ envObject.checkGCAccess();
735
750
  if (envObject.tryCatch.hasCaught())
736
751
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
737
752
  if (!envObject.canCallIntoJs()) {
@@ -775,6 +790,7 @@ function napi_create_function(env, utf8name, length, cb, data, result) {
775
790
  if (!env)
776
791
  return 1 /* napi_status.napi_invalid_arg */;
777
792
  var envObject = emnapiCtx.envStore.get(env);
793
+ envObject.checkGCAccess();
778
794
  if (envObject.tryCatch.hasCaught())
779
795
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
780
796
  if (!envObject.canCallIntoJs()) {
@@ -802,11 +818,13 @@ function napi_create_function(env, utf8name, length, cb, data, result) {
802
818
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
803
819
  }
804
820
  }
805
- function napi_get_cb_info(env, _cbinfo, argc, argv, this_arg, data) {
821
+ function napi_get_cb_info(env, cbinfo, argc, argv, this_arg, data) {
806
822
  if (!env)
807
823
  return 1 /* napi_status.napi_invalid_arg */;
808
824
  var envObject = emnapiCtx.envStore.get(env);
809
- var cbinfoValue = emnapiCtx.cbinfoStack.current;
825
+ if (!cbinfo)
826
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
827
+ var cbinfoValue = emnapiCtx.cbinfoStack.get(cbinfo);
810
828
  {{{ from64('argc') }}};
811
829
  {{{ from64('argv') }}};
812
830
  if (argv) {
@@ -850,6 +868,7 @@ function napi_call_function(env, recv, func, argc, argv, result) {
850
868
  if (!env)
851
869
  return 1 /* napi_status.napi_invalid_arg */;
852
870
  var envObject = emnapiCtx.envStore.get(env);
871
+ envObject.checkGCAccess();
853
872
  if (envObject.tryCatch.hasCaught())
854
873
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
855
874
  if (!envObject.canCallIntoJs()) {
@@ -897,6 +916,7 @@ function napi_new_instance(env, constructor, argc, argv, result) {
897
916
  if (!env)
898
917
  return 1 /* napi_status.napi_invalid_arg */;
899
918
  var envObject = emnapiCtx.envStore.get(env);
919
+ envObject.checkGCAccess();
900
920
  if (envObject.tryCatch.hasCaught())
901
921
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
902
922
  if (!envObject.canCallIntoJs()) {
@@ -949,14 +969,17 @@ function napi_new_instance(env, constructor, argc, argv, result) {
949
969
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
950
970
  }
951
971
  }
952
- function napi_get_new_target(env, _cbinfo, result) {
972
+ function napi_get_new_target(env, cbinfo, result) {
953
973
  if (!env)
954
974
  return 1 /* napi_status.napi_invalid_arg */;
955
975
  var envObject = emnapiCtx.envStore.get(env);
976
+ if (!cbinfo)
977
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
956
978
  if (!result)
957
979
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
980
+ envObject.checkGCAccess();
958
981
  {{{ from64('result') }}};
959
- var cbinfoValue = emnapiCtx.cbinfoStack.current;
982
+ var cbinfoValue = emnapiCtx.cbinfoStack.get(cbinfo);
960
983
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
961
984
  var value = cbinfoValue.getNewTarget(envObject);
962
985
  {{{ makeSetValue('result', 0, 'value', '*') }}};
@@ -976,11 +999,11 @@ function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
976
999
  var f;
977
1000
  var makeFunction = function () { return function () {
978
1001
  'use strict';
979
- emnapiCtx.cbinfoStack.push(this, data, arguments, f);
1002
+ var cbinfo = emnapiCtx.cbinfoStack.push(this, data, arguments, f);
980
1003
  var scope = emnapiCtx.openScope(envObject);
981
1004
  try {
982
1005
  return envObject.callIntoModule(function (envObject) {
983
- var napiValue = {{{ makeDynCall('ppp', 'cb') }}}(envObject.id, 0);
1006
+ var napiValue = {{{ makeDynCall('ppp', 'cb') }}}(envObject.id, cbinfo);
984
1007
  return (!napiValue) ? undefined : emnapiCtx.handleStore.get(napiValue).value;
985
1008
  });
986
1009
  }
@@ -1079,6 +1102,7 @@ function emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, r
1079
1102
  if (!env)
1080
1103
  return 1 /* napi_status.napi_invalid_arg */;
1081
1104
  var envObject = emnapiCtx.envStore.get(env);
1105
+ envObject.checkGCAccess();
1082
1106
  if (envObject.tryCatch.hasCaught())
1083
1107
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
1084
1108
  if (!envObject.canCallIntoJs()) {
@@ -1130,6 +1154,7 @@ function emnapiUnwrap(env, js_object, result, action) {
1130
1154
  if (!env)
1131
1155
  return 1 /* napi_status.napi_invalid_arg */;
1132
1156
  var envObject = emnapiCtx.envStore.get(env);
1157
+ envObject.checkGCAccess();
1133
1158
  if (envObject.tryCatch.hasCaught())
1134
1159
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
1135
1160
  if (!envObject.canCallIntoJs()) {
@@ -1184,6 +1209,7 @@ function napi_open_handle_scope(env, result) {
1184
1209
  if (!env)
1185
1210
  return 1 /* napi_status.napi_invalid_arg */;
1186
1211
  var envObject = emnapiCtx.envStore.get(env);
1212
+ envObject.checkGCAccess();
1187
1213
  if (!result)
1188
1214
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1189
1215
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -1196,6 +1222,7 @@ function napi_close_handle_scope(env, scope) {
1196
1222
  if (!env)
1197
1223
  return 1 /* napi_status.napi_invalid_arg */;
1198
1224
  var envObject = emnapiCtx.envStore.get(env);
1225
+ envObject.checkGCAccess();
1199
1226
  if (!scope)
1200
1227
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1201
1228
  if ((envObject.openHandleScopes === 0)) {
@@ -1208,6 +1235,7 @@ function napi_open_escapable_handle_scope(env, result) {
1208
1235
  if (!env)
1209
1236
  return 1 /* napi_status.napi_invalid_arg */;
1210
1237
  var envObject = emnapiCtx.envStore.get(env);
1238
+ envObject.checkGCAccess();
1211
1239
  if (!result)
1212
1240
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1213
1241
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -1220,6 +1248,7 @@ function napi_close_escapable_handle_scope(env, scope) {
1220
1248
  if (!env)
1221
1249
  return 1 /* napi_status.napi_invalid_arg */;
1222
1250
  var envObject = emnapiCtx.envStore.get(env);
1251
+ envObject.checkGCAccess();
1223
1252
  if (!scope)
1224
1253
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1225
1254
  if ((envObject.openHandleScopes === 0)) {
@@ -1232,6 +1261,7 @@ function napi_escape_handle(env, scope, escapee, result) {
1232
1261
  if (!env)
1233
1262
  return 1 /* napi_status.napi_invalid_arg */;
1234
1263
  var envObject = emnapiCtx.envStore.get(env);
1264
+ envObject.checkGCAccess();
1235
1265
  if (!scope)
1236
1266
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1237
1267
  if (!escapee)
@@ -1254,6 +1284,7 @@ function napi_create_reference(env, value, initial_refcount, result) {
1254
1284
  if (!env)
1255
1285
  return 1 /* napi_status.napi_invalid_arg */;
1256
1286
  var envObject = emnapiCtx.envStore.get(env);
1287
+ envObject.checkGCAccess();
1257
1288
  if (!value)
1258
1289
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1259
1290
  if (!result)
@@ -1274,6 +1305,7 @@ function napi_delete_reference(env, ref) {
1274
1305
  if (!env)
1275
1306
  return 1 /* napi_status.napi_invalid_arg */;
1276
1307
  var envObject = emnapiCtx.envStore.get(env);
1308
+ envObject.checkGCAccess();
1277
1309
  if (!ref)
1278
1310
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1279
1311
  emnapiCtx.refStore.get(ref).dispose();
@@ -1283,6 +1315,7 @@ function napi_reference_ref(env, ref, result) {
1283
1315
  if (!env)
1284
1316
  return 1 /* napi_status.napi_invalid_arg */;
1285
1317
  var envObject = emnapiCtx.envStore.get(env);
1318
+ envObject.checkGCAccess();
1286
1319
  if (!ref)
1287
1320
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1288
1321
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -1297,6 +1330,7 @@ function napi_reference_unref(env, ref, result) {
1297
1330
  if (!env)
1298
1331
  return 1 /* napi_status.napi_invalid_arg */;
1299
1332
  var envObject = emnapiCtx.envStore.get(env);
1333
+ envObject.checkGCAccess();
1300
1334
  if (!ref)
1301
1335
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1302
1336
  var reference = emnapiCtx.refStore.get(ref);
@@ -1316,6 +1350,7 @@ function napi_get_reference_value(env, ref, result) {
1316
1350
  if (!env)
1317
1351
  return 1 /* napi_status.napi_invalid_arg */;
1318
1352
  var envObject = emnapiCtx.envStore.get(env);
1353
+ envObject.checkGCAccess();
1319
1354
  if (!ref)
1320
1355
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1321
1356
  if (!result)
@@ -1548,13 +1583,13 @@ function __emnapi_node_emit_async_destroy(async_id, trigger_async_id) {
1548
1583
  })
1549
1584
 
1550
1585
  {{{ from64('result') }}}
1551
- {{{ makeSetValue('result', 0, 'nativeCallbackScopePointer', 'i64') }}}
1586
+ $_TODO_makeSetValue('result', 0, 'nativeCallbackScopePointer', 'i64')
1552
1587
  }
1553
1588
 
1554
1589
  function __emnapi_node_close_callback_scope (scope: Pointer<int64_t>): void {
1555
1590
  if (!emnapiNodeBinding || !scope) return
1556
1591
  {{{ from64('scope') }}}
1557
- const nativeCallbackScopePointer = {{{ makeGetValue('scope', 0, 'i64') }}}
1592
+ const nativeCallbackScopePointer = $_TODO_makeGetValue('scope', 0, 'i64')
1558
1593
  emnapiNodeBinding.node.closeCallbackScope(BigInt(nativeCallbackScopePointer))
1559
1594
  } */
1560
1595
  function __emnapi_node_make_callback(env, async_resource, cb, argv, size, async_id, trigger_async_id, result) {
@@ -1640,6 +1675,7 @@ function napi_make_callback(env, async_context, recv, func, argc, argv, result)
1640
1675
  if (!env)
1641
1676
  return 1 /* napi_status.napi_invalid_arg */;
1642
1677
  var envObject = emnapiCtx.envStore.get(env);
1678
+ envObject.checkGCAccess();
1643
1679
  if (envObject.tryCatch.hasCaught())
1644
1680
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
1645
1681
  if (!envObject.canCallIntoJs()) {
@@ -1685,13 +1721,17 @@ function napi_make_callback(env, async_context, recv, func, argc, argv, result)
1685
1721
  v = envObject.ensureHandleId(ret.value);
1686
1722
  {{{ makeSetValue('result', 0, 'v', '*') }}};
1687
1723
  }
1688
- return envObject.clearLastError();
1724
+ return envObject.getReturnStatus();
1689
1725
  }
1690
1726
  catch (err) {
1691
1727
  envObject.tryCatch.setError(err);
1692
1728
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
1693
1729
  }
1694
1730
  }
1731
+ function __emnapi_env_check_gc_access(env) {
1732
+ var envObject = emnapiCtx.envStore.get(env);
1733
+ envObject.checkGCAccess();
1734
+ }
1695
1735
  emnapiImplementInternal('_emnapi_node_emit_async_init', 'vppdp', __emnapi_node_emit_async_init);
1696
1736
  emnapiImplementInternal('_emnapi_node_emit_async_destroy', 'vdd', __emnapi_node_emit_async_destroy);
1697
1737
  // emnapiImplementInternal('_emnapi_node_open_callback_scope', 'vpddp', __emnapi_node_open_callback_scope)
@@ -1699,6 +1739,7 @@ emnapiImplementInternal('_emnapi_node_emit_async_destroy', 'vdd', __emnapi_node_
1699
1739
  emnapiImplementInternal('_emnapi_node_make_callback', 'ipppppddp', __emnapi_node_make_callback);
1700
1740
  emnapiImplementInternal('_emnapi_async_init_js', 'ippp', __emnapi_async_init_js);
1701
1741
  emnapiImplementInternal('_emnapi_async_destroy_js', 'ip', __emnapi_async_destroy_js);
1742
+ emnapiImplementInternal('_emnapi_env_check_gc_access', 'vp', __emnapi_env_check_gc_access);
1702
1743
  emnapiImplement('napi_open_callback_scope', 'ipppp', napi_open_callback_scope);
1703
1744
  emnapiImplement('napi_close_callback_scope', 'ipp', napi_close_callback_scope);
1704
1745
  emnapiImplement('napi_make_callback', 'ippppppp', napi_make_callback);
@@ -1708,6 +1749,7 @@ function napi_create_promise(env, deferred, promise) {
1708
1749
  if (!env)
1709
1750
  return 1 /* napi_status.napi_invalid_arg */;
1710
1751
  var envObject = emnapiCtx.envStore.get(env);
1752
+ envObject.checkGCAccess();
1711
1753
  if (envObject.tryCatch.hasCaught())
1712
1754
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
1713
1755
  if (!envObject.canCallIntoJs()) {
@@ -1740,6 +1782,7 @@ function napi_resolve_deferred(env, deferred, resolution) {
1740
1782
  if (!env)
1741
1783
  return 1 /* napi_status.napi_invalid_arg */;
1742
1784
  var envObject = emnapiCtx.envStore.get(env);
1785
+ envObject.checkGCAccess();
1743
1786
  if (envObject.tryCatch.hasCaught())
1744
1787
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
1745
1788
  if (!envObject.canCallIntoJs()) {
@@ -1764,6 +1807,7 @@ function napi_reject_deferred(env, deferred, resolution) {
1764
1807
  if (!env)
1765
1808
  return 1 /* napi_status.napi_invalid_arg */;
1766
1809
  var envObject = emnapiCtx.envStore.get(env);
1810
+ envObject.checkGCAccess();
1767
1811
  if (envObject.tryCatch.hasCaught())
1768
1812
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
1769
1813
  if (!envObject.canCallIntoJs()) {
@@ -1788,6 +1832,7 @@ function napi_is_promise(env, value, is_promise) {
1788
1832
  if (!env)
1789
1833
  return 1 /* napi_status.napi_invalid_arg */;
1790
1834
  var envObject = emnapiCtx.envStore.get(env);
1835
+ envObject.checkGCAccess();
1791
1836
  if (!value)
1792
1837
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1793
1838
  if (!is_promise)
@@ -1809,6 +1854,7 @@ function _napi_get_all_property_names(env, object, key_mode, key_filter, key_con
1809
1854
  if (!env)
1810
1855
  return 1 /* napi_status.napi_invalid_arg */;
1811
1856
  var envObject = emnapiCtx.envStore.get(env);
1857
+ envObject.checkGCAccess();
1812
1858
  if (envObject.tryCatch.hasCaught())
1813
1859
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
1814
1860
  if (!envObject.canCallIntoJs()) {
@@ -1953,6 +1999,7 @@ function napi_set_property(env, object, key, value) {
1953
1999
  if (!env)
1954
2000
  return 1 /* napi_status.napi_invalid_arg */;
1955
2001
  var envObject = emnapiCtx.envStore.get(env);
2002
+ envObject.checkGCAccess();
1956
2003
  if (envObject.tryCatch.hasCaught())
1957
2004
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
1958
2005
  if (!envObject.canCallIntoJs()) {
@@ -1984,6 +2031,7 @@ function napi_has_property(env, object, key, result) {
1984
2031
  if (!env)
1985
2032
  return 1 /* napi_status.napi_invalid_arg */;
1986
2033
  var envObject = emnapiCtx.envStore.get(env);
2034
+ envObject.checkGCAccess();
1987
2035
  if (envObject.tryCatch.hasCaught())
1988
2036
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
1989
2037
  if (!envObject.canCallIntoJs()) {
@@ -2024,6 +2072,7 @@ function napi_get_property(env, object, key, result) {
2024
2072
  if (!env)
2025
2073
  return 1 /* napi_status.napi_invalid_arg */;
2026
2074
  var envObject = emnapiCtx.envStore.get(env);
2075
+ envObject.checkGCAccess();
2027
2076
  if (envObject.tryCatch.hasCaught())
2028
2077
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2029
2078
  if (!envObject.canCallIntoJs()) {
@@ -2065,6 +2114,7 @@ function napi_delete_property(env, object, key, result) {
2065
2114
  if (!env)
2066
2115
  return 1 /* napi_status.napi_invalid_arg */;
2067
2116
  var envObject = emnapiCtx.envStore.get(env);
2117
+ envObject.checkGCAccess();
2068
2118
  if (envObject.tryCatch.hasCaught())
2069
2119
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2070
2120
  if (!envObject.canCallIntoJs()) {
@@ -2109,6 +2159,7 @@ function napi_has_own_property(env, object, key, result) {
2109
2159
  if (!env)
2110
2160
  return 1 /* napi_status.napi_invalid_arg */;
2111
2161
  var envObject = emnapiCtx.envStore.get(env);
2162
+ envObject.checkGCAccess();
2112
2163
  if (envObject.tryCatch.hasCaught())
2113
2164
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2114
2165
  if (!envObject.canCallIntoJs()) {
@@ -2151,6 +2202,7 @@ function napi_set_named_property(env, object, cname, value) {
2151
2202
  if (!env)
2152
2203
  return 1 /* napi_status.napi_invalid_arg */;
2153
2204
  var envObject = emnapiCtx.envStore.get(env);
2205
+ envObject.checkGCAccess();
2154
2206
  if (envObject.tryCatch.hasCaught())
2155
2207
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2156
2208
  if (!envObject.canCallIntoJs()) {
@@ -2171,7 +2223,7 @@ function napi_set_named_property(env, object, cname, value) {
2171
2223
  }
2172
2224
  {{{ from64('cname') }}};
2173
2225
  emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
2174
- return 0 /* napi_status.napi_ok */;
2226
+ return envObject.getReturnStatus();
2175
2227
  }
2176
2228
  catch (err) {
2177
2229
  envObject.tryCatch.setError(err);
@@ -2184,6 +2236,7 @@ function napi_has_named_property(env, object, utf8name, result) {
2184
2236
  if (!env)
2185
2237
  return 1 /* napi_status.napi_invalid_arg */;
2186
2238
  var envObject = emnapiCtx.envStore.get(env);
2239
+ envObject.checkGCAccess();
2187
2240
  if (envObject.tryCatch.hasCaught())
2188
2241
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2189
2242
  if (!envObject.canCallIntoJs()) {
@@ -2226,6 +2279,7 @@ function napi_get_named_property(env, object, utf8name, result) {
2226
2279
  if (!env)
2227
2280
  return 1 /* napi_status.napi_invalid_arg */;
2228
2281
  var envObject = emnapiCtx.envStore.get(env);
2282
+ envObject.checkGCAccess();
2229
2283
  if (envObject.tryCatch.hasCaught())
2230
2284
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2231
2285
  if (!envObject.canCallIntoJs()) {
@@ -2267,6 +2321,7 @@ function napi_set_element(env, object, index, value) {
2267
2321
  if (!env)
2268
2322
  return 1 /* napi_status.napi_invalid_arg */;
2269
2323
  var envObject = emnapiCtx.envStore.get(env);
2324
+ envObject.checkGCAccess();
2270
2325
  if (envObject.tryCatch.hasCaught())
2271
2326
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2272
2327
  if (!envObject.canCallIntoJs()) {
@@ -2296,6 +2351,7 @@ function napi_has_element(env, object, index, result) {
2296
2351
  if (!env)
2297
2352
  return 1 /* napi_status.napi_invalid_arg */;
2298
2353
  var envObject = emnapiCtx.envStore.get(env);
2354
+ envObject.checkGCAccess();
2299
2355
  if (envObject.tryCatch.hasCaught())
2300
2356
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2301
2357
  if (!envObject.canCallIntoJs()) {
@@ -2334,6 +2390,7 @@ function napi_get_element(env, object, index, result) {
2334
2390
  if (!env)
2335
2391
  return 1 /* napi_status.napi_invalid_arg */;
2336
2392
  var envObject = emnapiCtx.envStore.get(env);
2393
+ envObject.checkGCAccess();
2337
2394
  if (envObject.tryCatch.hasCaught())
2338
2395
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2339
2396
  if (!envObject.canCallIntoJs()) {
@@ -2373,6 +2430,7 @@ function napi_delete_element(env, object, index, result) {
2373
2430
  if (!env)
2374
2431
  return 1 /* napi_status.napi_invalid_arg */;
2375
2432
  var envObject = emnapiCtx.envStore.get(env);
2433
+ envObject.checkGCAccess();
2376
2434
  if (envObject.tryCatch.hasCaught())
2377
2435
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2378
2436
  if (!envObject.canCallIntoJs()) {
@@ -2414,6 +2472,7 @@ function napi_define_properties(env, object, property_count, properties) {
2414
2472
  if (!env)
2415
2473
  return 1 /* napi_status.napi_invalid_arg */;
2416
2474
  var envObject = emnapiCtx.envStore.get(env);
2475
+ envObject.checkGCAccess();
2417
2476
  if (envObject.tryCatch.hasCaught())
2418
2477
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2419
2478
  if (!envObject.canCallIntoJs()) {
@@ -2462,7 +2521,7 @@ function napi_define_properties(env, object, property_count, properties) {
2462
2521
  }
2463
2522
  emnapiDefineProperty(envObject, maybeObject, propertyName, method, getter, setter, value, attributes, data);
2464
2523
  }
2465
- return 0 /* napi_status.napi_ok */;
2524
+ return envObject.getReturnStatus();
2466
2525
  }
2467
2526
  catch (err) {
2468
2527
  envObject.tryCatch.setError(err);
@@ -2473,6 +2532,7 @@ function napi_object_freeze(env, object) {
2473
2532
  if (!env)
2474
2533
  return 1 /* napi_status.napi_invalid_arg */;
2475
2534
  var envObject = emnapiCtx.envStore.get(env);
2535
+ envObject.checkGCAccess();
2476
2536
  if (envObject.tryCatch.hasCaught())
2477
2537
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2478
2538
  if (!envObject.canCallIntoJs()) {
@@ -2499,6 +2559,7 @@ function napi_object_seal(env, object) {
2499
2559
  if (!env)
2500
2560
  return 1 /* napi_status.napi_invalid_arg */;
2501
2561
  var envObject = emnapiCtx.envStore.get(env);
2562
+ envObject.checkGCAccess();
2502
2563
  if (envObject.tryCatch.hasCaught())
2503
2564
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2504
2565
  if (!envObject.canCallIntoJs()) {
@@ -2540,12 +2601,14 @@ emnapiImplement('napi_object_freeze', 'ipp', napi_object_freeze);
2540
2601
  emnapiImplement('napi_object_seal', 'ipp', napi_object_seal);
2541
2602
  /* eslint-disable @typescript-eslint/indent */
2542
2603
  function napi_run_script(env, script, result) {
2604
+ var status;
2543
2605
  #if DYNAMIC_EXECUTION
2544
2606
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2545
2607
  var value;
2546
2608
  if (!env)
2547
2609
  return 1 /* napi_status.napi_invalid_arg */;
2548
2610
  var envObject = emnapiCtx.envStore.get(env);
2611
+ envObject.checkGCAccess();
2549
2612
  if (envObject.tryCatch.hasCaught())
2550
2613
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2551
2614
  if (!envObject.canCallIntoJs()) {
@@ -2567,14 +2630,14 @@ function napi_run_script(env, script, result) {
2567
2630
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2568
2631
  value = envObject.ensureHandleId(ret);
2569
2632
  {{{ makeSetValue('result', 0, 'value', '*') }}};
2570
- return envObject.getReturnStatus();
2633
+ status = envObject.getReturnStatus();
2571
2634
  }
2572
2635
  catch (err) {
2573
2636
  envObject.tryCatch.setError(err);
2574
2637
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2575
2638
  }
2576
2639
  #else
2577
- var status = _napi_set_last_error(env, 9 /* napi_status.napi_generic_failure */, 0, 0);
2640
+ status = _napi_set_last_error(env, 9 /* napi_status.napi_generic_failure */, 0, 0);
2578
2641
  #endif
2579
2642
  return status;
2580
2643
  }
@@ -2836,6 +2899,7 @@ var emnapiString = {
2836
2899
  if (!env)
2837
2900
  return 1 /* napi_status.napi_invalid_arg */;
2838
2901
  var envObject = emnapiCtx.envStore.get(env);
2902
+ envObject.checkGCAccess();
2839
2903
  {{{ from64('length') }}};
2840
2904
  var autoLength = length === -1;
2841
2905
  var sizelength = length >>> 0;
@@ -2857,14 +2921,16 @@ var emnapiString = {
2857
2921
  return envObject.clearLastError();
2858
2922
  },
2859
2923
  newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
2924
+ var envObject = emnapiCtx.envStore.get(env);
2925
+ envObject.checkGCAccess();
2860
2926
  var status = createApi(env, str, length, result);
2861
2927
  if (status === 0 /* napi_status.napi_ok */) {
2862
2928
  if (copied) {
2863
2929
  {{{ makeSetValue('copied', 0, '1', 'i8') }}};
2864
2930
  }
2865
2931
  if (finalize_callback) {
2866
- var envObject = emnapiCtx.envStore.get(env);
2867
- envObject.callFinalizer(finalize_callback, str, finalize_hint);
2932
+ var envObject_1 = emnapiCtx.envStore.get(env);
2933
+ envObject_1.callFinalizer(finalize_callback, str, finalize_hint);
2868
2934
  }
2869
2935
  }
2870
2936
  return status;
@@ -3419,10 +3485,10 @@ var emnapiTSFN = {
3419
3485
  });
3420
3486
  if (popped_value) {
3421
3487
  var env = emnapiTSFN.getEnv(func);
3422
- var envObject_1 = emnapiCtx.envStore.get(env);
3423
- emnapiCtx.openScope(envObject_1);
3488
+ var envObject_2 = emnapiCtx.envStore.get(env);
3489
+ emnapiCtx.openScope(envObject_2);
3424
3490
  var f = function () {
3425
- envObject_1.callbackIntoModule(false, function () {
3491
+ envObject_2.callbackIntoModule(false, function () {
3426
3492
  var callJsCb = emnapiTSFN.getCallJSCb(func);
3427
3493
  var ref = emnapiTSFN.getRef(func);
3428
3494
  var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0;
@@ -3455,7 +3521,7 @@ var emnapiTSFN = {
3455
3521
  }
3456
3522
  }
3457
3523
  finally {
3458
- emnapiCtx.closeScope(envObject_1);
3524
+ emnapiCtx.closeScope(envObject_2);
3459
3525
  }
3460
3526
  }
3461
3527
  return has_more;
@@ -3502,6 +3568,7 @@ function _napi_create_threadsafe_function(env, func, async_resource, async_resou
3502
3568
  if (!env)
3503
3569
  return 1 /* napi_status.napi_invalid_arg */;
3504
3570
  var envObject = emnapiCtx.envStore.get(env);
3571
+ envObject.checkGCAccess();
3505
3572
  if (!async_resource_name)
3506
3573
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3507
3574
  {{{ from64('max_queue_size') }}};
@@ -3778,6 +3845,7 @@ function napi_typeof(env, value, result) {
3778
3845
  if (!env)
3779
3846
  return 1 /* napi_status.napi_invalid_arg */;
3780
3847
  var envObject = emnapiCtx.envStore.get(env);
3848
+ envObject.checkGCAccess();
3781
3849
  if (!value)
3782
3850
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3783
3851
  if (!result)
@@ -3833,6 +3901,7 @@ function napi_coerce_to_bool(env, value, result) {
3833
3901
  if (!env)
3834
3902
  return 1 /* napi_status.napi_invalid_arg */;
3835
3903
  var envObject = emnapiCtx.envStore.get(env);
3904
+ envObject.checkGCAccess();
3836
3905
  if (envObject.tryCatch.hasCaught())
3837
3906
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
3838
3907
  if (!envObject.canCallIntoJs()) {
@@ -3861,6 +3930,7 @@ function napi_coerce_to_number(env, value, result) {
3861
3930
  if (!env)
3862
3931
  return 1 /* napi_status.napi_invalid_arg */;
3863
3932
  var envObject = emnapiCtx.envStore.get(env);
3933
+ envObject.checkGCAccess();
3864
3934
  if (envObject.tryCatch.hasCaught())
3865
3935
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
3866
3936
  if (!envObject.canCallIntoJs()) {
@@ -3893,6 +3963,7 @@ function napi_coerce_to_object(env, value, result) {
3893
3963
  if (!env)
3894
3964
  return 1 /* napi_status.napi_invalid_arg */;
3895
3965
  var envObject = emnapiCtx.envStore.get(env);
3966
+ envObject.checkGCAccess();
3896
3967
  if (envObject.tryCatch.hasCaught())
3897
3968
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
3898
3969
  if (!envObject.canCallIntoJs()) {
@@ -3925,6 +3996,7 @@ function napi_coerce_to_string(env, value, result) {
3925
3996
  if (!env)
3926
3997
  return 1 /* napi_status.napi_invalid_arg */;
3927
3998
  var envObject = emnapiCtx.envStore.get(env);
3999
+ envObject.checkGCAccess();
3928
4000
  if (envObject.tryCatch.hasCaught())
3929
4001
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
3930
4002
  if (!envObject.canCallIntoJs()) {
@@ -3957,6 +4029,7 @@ function napi_instanceof(env, object, constructor, result) {
3957
4029
  if (!env)
3958
4030
  return 1 /* napi_status.napi_invalid_arg */;
3959
4031
  var envObject = emnapiCtx.envStore.get(env);
4032
+ envObject.checkGCAccess();
3960
4033
  if (envObject.tryCatch.hasCaught())
3961
4034
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
3962
4035
  if (!envObject.canCallIntoJs()) {
@@ -3991,6 +4064,7 @@ function napi_is_array(env, value, result) {
3991
4064
  if (!env)
3992
4065
  return 1 /* napi_status.napi_invalid_arg */;
3993
4066
  var envObject = emnapiCtx.envStore.get(env);
4067
+ envObject.checkGCAccess();
3994
4068
  if (!value)
3995
4069
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3996
4070
  if (!result)
@@ -4006,6 +4080,7 @@ function napi_is_arraybuffer(env, value, result) {
4006
4080
  if (!env)
4007
4081
  return 1 /* napi_status.napi_invalid_arg */;
4008
4082
  var envObject = emnapiCtx.envStore.get(env);
4083
+ envObject.checkGCAccess();
4009
4084
  if (!value)
4010
4085
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4011
4086
  if (!result)
@@ -4021,6 +4096,7 @@ function napi_is_date(env, value, result) {
4021
4096
  if (!env)
4022
4097
  return 1 /* napi_status.napi_invalid_arg */;
4023
4098
  var envObject = emnapiCtx.envStore.get(env);
4099
+ envObject.checkGCAccess();
4024
4100
  if (!value)
4025
4101
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4026
4102
  if (!result)
@@ -4036,6 +4112,7 @@ function napi_is_error(env, value, result) {
4036
4112
  if (!env)
4037
4113
  return 1 /* napi_status.napi_invalid_arg */;
4038
4114
  var envObject = emnapiCtx.envStore.get(env);
4115
+ envObject.checkGCAccess();
4039
4116
  if (!value)
4040
4117
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4041
4118
  if (!result)
@@ -4051,6 +4128,7 @@ function napi_is_typedarray(env, value, result) {
4051
4128
  if (!env)
4052
4129
  return 1 /* napi_status.napi_invalid_arg */;
4053
4130
  var envObject = emnapiCtx.envStore.get(env);
4131
+ envObject.checkGCAccess();
4054
4132
  if (!value)
4055
4133
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4056
4134
  if (!result)
@@ -4066,6 +4144,7 @@ function napi_is_buffer(env, value, result) {
4066
4144
  if (!env)
4067
4145
  return 1 /* napi_status.napi_invalid_arg */;
4068
4146
  var envObject = emnapiCtx.envStore.get(env);
4147
+ envObject.checkGCAccess();
4069
4148
  if (!value)
4070
4149
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4071
4150
  if (!result)
@@ -4081,6 +4160,7 @@ function napi_is_dataview(env, value, result) {
4081
4160
  if (!env)
4082
4161
  return 1 /* napi_status.napi_invalid_arg */;
4083
4162
  var envObject = emnapiCtx.envStore.get(env);
4163
+ envObject.checkGCAccess();
4084
4164
  if (!value)
4085
4165
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4086
4166
  if (!result)
@@ -4098,6 +4178,7 @@ function napi_strict_equals(env, lhs, rhs, result) {
4098
4178
  if (!env)
4099
4179
  return 1 /* napi_status.napi_invalid_arg */;
4100
4180
  var envObject = emnapiCtx.envStore.get(env);
4181
+ envObject.checkGCAccess();
4101
4182
  if (envObject.tryCatch.hasCaught())
4102
4183
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4103
4184
  if (!envObject.canCallIntoJs()) {
@@ -4127,6 +4208,7 @@ function napi_detach_arraybuffer(env, arraybuffer) {
4127
4208
  if (!env)
4128
4209
  return 1 /* napi_status.napi_invalid_arg */;
4129
4210
  var envObject = emnapiCtx.envStore.get(env);
4211
+ envObject.checkGCAccess();
4130
4212
  if (!arraybuffer)
4131
4213
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4132
4214
  var value = emnapiCtx.handleStore.get(arraybuffer).value;
@@ -4141,9 +4223,8 @@ function napi_detach_arraybuffer(env, arraybuffer) {
4141
4223
  var messageChannel = new MessageChannel_1();
4142
4224
  messageChannel.port1.postMessage(value, [value]);
4143
4225
  }
4144
- catch (err) {
4145
- envObject.tryCatch.setError(err);
4146
- return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4226
+ catch (_) {
4227
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
4147
4228
  }
4148
4229
  return envObject.clearLastError();
4149
4230
  }
@@ -4151,6 +4232,7 @@ function napi_is_detached_arraybuffer(env, arraybuffer, result) {
4151
4232
  if (!env)
4152
4233
  return 1 /* napi_status.napi_invalid_arg */;
4153
4234
  var envObject = emnapiCtx.envStore.get(env);
4235
+ envObject.checkGCAccess();
4154
4236
  if (envObject.tryCatch.hasCaught())
4155
4237
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4156
4238
  if (!envObject.canCallIntoJs()) {
@@ -4158,6 +4240,7 @@ function napi_is_detached_arraybuffer(env, arraybuffer, result) {
4158
4240
  }
4159
4241
  envObject.clearLastError();
4160
4242
  try {
4243
+ envObject.checkGCAccess();
4161
4244
  if (!arraybuffer)
4162
4245
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4163
4246
  if (!result)
@@ -4205,8 +4288,8 @@ function _napi_get_version(env, result) {
4205
4288
  if (!result)
4206
4289
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4207
4290
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4208
- var NAPI_VERSION = 9 /* Version.NAPI_VERSION */;
4209
- {{{ makeSetValue('result', 0, 'NAPI_VERSION', 'u32') }}};
4291
+ var NODE_API_SUPPORTED_VERSION_MAX = 9 /* Version.NODE_API_SUPPORTED_VERSION_MAX */;
4292
+ {{{ makeSetValue('result', 0, 'NODE_API_SUPPORTED_VERSION_MAX', 'u32') }}};
4210
4293
  return envObject.clearLastError();
4211
4294
  }
4212
4295
  emnapiImplement('napi_get_version', 'ipp', _napi_get_version, []);
@@ -4216,6 +4299,7 @@ function napi_define_class(env, utf8name, length, constructor, callback_data, pr
4216
4299
  if (!env)
4217
4300
  return 1 /* napi_status.napi_invalid_arg */;
4218
4301
  var envObject = emnapiCtx.envStore.get(env);
4302
+ envObject.checkGCAccess();
4219
4303
  if (envObject.tryCatch.hasCaught())
4220
4304
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4221
4305
  if (!envObject.canCallIntoJs()) {
@@ -4298,6 +4382,7 @@ function napi_type_tag_object(env, object, type_tag) {
4298
4382
  if (!env)
4299
4383
  return 1 /* napi_status.napi_invalid_arg */;
4300
4384
  var envObject = emnapiCtx.envStore.get(env);
4385
+ envObject.checkGCAccess();
4301
4386
  if (envObject.tryCatch.hasCaught())
4302
4387
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4303
4388
  if (!envObject.canCallIntoJs()) {
@@ -4339,6 +4424,7 @@ function napi_check_object_type_tag(env, object, type_tag, result) {
4339
4424
  if (!env)
4340
4425
  return 1 /* napi_status.napi_invalid_arg */;
4341
4426
  var envObject = emnapiCtx.envStore.get(env);
4427
+ envObject.checkGCAccess();
4342
4428
  if (envObject.tryCatch.hasCaught())
4343
4429
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4344
4430
  if (!envObject.canCallIntoJs()) {
@@ -4387,6 +4473,7 @@ function _napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finaliz
4387
4473
  if (!env)
4388
4474
  return 1 /* napi_status.napi_invalid_arg */;
4389
4475
  var envObject = emnapiCtx.envStore.get(env);
4476
+ envObject.checkGCAccess();
4390
4477
  if (!emnapiCtx.feature.supportFinalizer) {
4391
4478
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
4392
4479
  }
@@ -4412,6 +4499,13 @@ function _napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finaliz
4412
4499
  }
4413
4500
  return envObject.clearLastError();
4414
4501
  }
4502
+ function _node_api_post_finalizer(env, finalize_cb, finalize_data, finalize_hint) {
4503
+ if (!env)
4504
+ return 1 /* napi_status.napi_invalid_arg */;
4505
+ var envObject = emnapiCtx.envStore.get(env);
4506
+ envObject.enqueueFinalizer(emnapiCtx.createTrackedFinalizer(envObject, finalize_cb, finalize_data, finalize_hint));
4507
+ return envObject.clearLastError();
4508
+ }
4415
4509
  emnapiImplement('napi_define_class', 'ipppppppp', napi_define_class, ['$emnapiCreateFunction', '$emnapiDefineProperty', '$emnapiString']);
4416
4510
  emnapiImplement('napi_wrap', 'ipppppp', napi_wrap, ['$emnapiWrap']);
4417
4511
  emnapiImplement('napi_unwrap', 'ippp', napi_unwrap, ['$emnapiUnwrap']);
@@ -4419,28 +4513,43 @@ emnapiImplement('napi_remove_wrap', 'ippp', napi_remove_wrap, ['$emnapiUnwrap'])
4419
4513
  emnapiImplement('napi_type_tag_object', 'ippp', napi_type_tag_object);
4420
4514
  emnapiImplement('napi_check_object_type_tag', 'ipppp', napi_check_object_type_tag);
4421
4515
  emnapiImplement('napi_add_finalizer', 'ipppppp', _napi_add_finalizer, ['$emnapiGetHandle']);
4516
+ emnapiImplement('node_api_post_finalizer', 'ipppp', _node_api_post_finalizer);
4422
4517
  function napi_get_array_length(env, value, result) {
4423
4518
  if (!env)
4424
4519
  return 1 /* napi_status.napi_invalid_arg */;
4425
4520
  var envObject = emnapiCtx.envStore.get(env);
4426
- if (!value)
4427
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4428
- if (!result)
4429
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4430
- var handle = emnapiCtx.handleStore.get(value);
4431
- if (!handle.isArray()) {
4432
- return envObject.setLastError(8 /* napi_status.napi_array_expected */);
4521
+ envObject.checkGCAccess();
4522
+ if (envObject.tryCatch.hasCaught())
4523
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4524
+ if (!envObject.canCallIntoJs()) {
4525
+ return envObject.setLastError(envObject.moduleApiVersion === 2147483647 /* Version.NAPI_VERSION_EXPERIMENTAL */ ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
4526
+ }
4527
+ envObject.clearLastError();
4528
+ try {
4529
+ if (!value)
4530
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4531
+ if (!result)
4532
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4533
+ var handle = emnapiCtx.handleStore.get(value);
4534
+ if (!handle.isArray()) {
4535
+ return envObject.setLastError(8 /* napi_status.napi_array_expected */);
4536
+ }
4537
+ {{{ from64('result') }}};
4538
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4539
+ var v = handle.value.length >>> 0;
4540
+ {{{ makeSetValue('result', 0, 'v', 'u32') }}};
4541
+ return envObject.getReturnStatus();
4542
+ }
4543
+ catch (err) {
4544
+ envObject.tryCatch.setError(err);
4545
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4433
4546
  }
4434
- {{{ from64('result') }}};
4435
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
4436
- var v = handle.value.length >>> 0;
4437
- {{{ makeSetValue('result', 0, 'v', 'u32') }}};
4438
- return envObject.clearLastError();
4439
4547
  }
4440
4548
  function napi_get_arraybuffer_info(env, arraybuffer, data, byte_length) {
4441
4549
  if (!env)
4442
4550
  return 1 /* napi_status.napi_invalid_arg */;
4443
4551
  var envObject = emnapiCtx.envStore.get(env);
4552
+ envObject.checkGCAccess();
4444
4553
  if (!arraybuffer)
4445
4554
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4446
4555
  var handle = emnapiCtx.handleStore.get(arraybuffer);
@@ -4463,32 +4572,45 @@ function napi_get_prototype(env, value, result) {
4463
4572
  if (!env)
4464
4573
  return 1 /* napi_status.napi_invalid_arg */;
4465
4574
  var envObject = emnapiCtx.envStore.get(env);
4466
- if (!value)
4467
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4468
- if (!result)
4469
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4470
- var handle = emnapiCtx.handleStore.get(value);
4471
- if (handle.value == null) {
4472
- envObject.tryCatch.setError(new TypeError('Cannot convert undefined or null to object'));
4575
+ envObject.checkGCAccess();
4576
+ if (envObject.tryCatch.hasCaught())
4473
4577
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4578
+ if (!envObject.canCallIntoJs()) {
4579
+ return envObject.setLastError(envObject.moduleApiVersion === 2147483647 /* Version.NAPI_VERSION_EXPERIMENTAL */ ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
4474
4580
  }
4475
- var v;
4581
+ envObject.clearLastError();
4476
4582
  try {
4477
- v = handle.isObject() || handle.isFunction() ? handle.value : Object(handle.value);
4583
+ if (!value)
4584
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4585
+ if (!result)
4586
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4587
+ var handle = emnapiCtx.handleStore.get(value);
4588
+ if (handle.value == null) {
4589
+ throw new TypeError('Cannot convert undefined or null to object');
4590
+ }
4591
+ var v = void 0;
4592
+ try {
4593
+ v = handle.isObject() || handle.isFunction() ? handle.value : Object(handle.value);
4594
+ }
4595
+ catch (_) {
4596
+ return envObject.setLastError(2 /* napi_status.napi_object_expected */);
4597
+ }
4598
+ {{{ from64('result') }}};
4599
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4600
+ var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
4601
+ {{{ makeSetValue('result', 0, 'p', '*') }}};
4602
+ return envObject.getReturnStatus();
4478
4603
  }
4479
- catch (_) {
4480
- return envObject.setLastError(2 /* napi_status.napi_object_expected */);
4604
+ catch (err) {
4605
+ envObject.tryCatch.setError(err);
4606
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4481
4607
  }
4482
- {{{ from64('result') }}};
4483
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
4484
- var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
4485
- {{{ makeSetValue('result', 0, 'p', '*') }}};
4486
- return envObject.clearLastError();
4487
4608
  }
4488
4609
  function _napi_get_typedarray_info(env, typedarray, type, length, data, arraybuffer, byte_offset) {
4489
4610
  if (!env)
4490
4611
  return 1 /* napi_status.napi_invalid_arg */;
4491
4612
  var envObject = emnapiCtx.envStore.get(env);
4613
+ envObject.checkGCAccess();
4492
4614
  if (!typedarray)
4493
4615
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4494
4616
  var handle = emnapiCtx.handleStore.get(typedarray);
@@ -4568,6 +4690,7 @@ function napi_get_buffer_info(env, buffer, data, length) {
4568
4690
  if (!env)
4569
4691
  return 1 /* napi_status.napi_invalid_arg */;
4570
4692
  var envObject = emnapiCtx.envStore.get(env);
4693
+ envObject.checkGCAccess();
4571
4694
  if (!buffer)
4572
4695
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4573
4696
  var handle = emnapiCtx.handleStore.get(buffer);
@@ -4580,6 +4703,7 @@ function napi_get_dataview_info(env, dataview, byte_length, data, arraybuffer, b
4580
4703
  if (!env)
4581
4704
  return 1 /* napi_status.napi_invalid_arg */;
4582
4705
  var envObject = emnapiCtx.envStore.get(env);
4706
+ envObject.checkGCAccess();
4583
4707
  if (!dataview)
4584
4708
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4585
4709
  var handle = emnapiCtx.handleStore.get(dataview);
@@ -4619,6 +4743,7 @@ function napi_get_date_value(env, value, result) {
4619
4743
  if (!env)
4620
4744
  return 1 /* napi_status.napi_invalid_arg */;
4621
4745
  var envObject = emnapiCtx.envStore.get(env);
4746
+ envObject.checkGCAccess();
4622
4747
  if (envObject.tryCatch.hasCaught())
4623
4748
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4624
4749
  if (!envObject.canCallIntoJs()) {
@@ -4626,6 +4751,7 @@ function napi_get_date_value(env, value, result) {
4626
4751
  }
4627
4752
  envObject.clearLastError();
4628
4753
  try {
4754
+ envObject.checkGCAccess();
4629
4755
  if (!value)
4630
4756
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4631
4757
  if (!result)
@@ -4648,6 +4774,7 @@ function napi_get_value_bool(env, value, result) {
4648
4774
  if (!env)
4649
4775
  return 1 /* napi_status.napi_invalid_arg */;
4650
4776
  var envObject = emnapiCtx.envStore.get(env);
4777
+ envObject.checkGCAccess();
4651
4778
  if (!value)
4652
4779
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4653
4780
  if (!result)
@@ -4666,6 +4793,7 @@ function napi_get_value_double(env, value, result) {
4666
4793
  if (!env)
4667
4794
  return 1 /* napi_status.napi_invalid_arg */;
4668
4795
  var envObject = emnapiCtx.envStore.get(env);
4796
+ envObject.checkGCAccess();
4669
4797
  if (!value)
4670
4798
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4671
4799
  if (!result)
@@ -4684,9 +4812,9 @@ function napi_get_value_bigint_int64(env, value, result, lossless) {
4684
4812
  if (!env)
4685
4813
  return 1 /* napi_status.napi_invalid_arg */;
4686
4814
  var envObject = emnapiCtx.envStore.get(env);
4815
+ envObject.checkGCAccess();
4687
4816
  if (!emnapiCtx.feature.supportBigInt) {
4688
- envObject.tryCatch.setError(emnapiCtx.createNotSupportBigIntError('napi_get_value_bigint_int64', 'This API is unavailable'));
4689
- return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4817
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
4690
4818
  }
4691
4819
  if (!value)
4692
4820
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
@@ -4723,9 +4851,9 @@ function napi_get_value_bigint_uint64(env, value, result, lossless) {
4723
4851
  if (!env)
4724
4852
  return 1 /* napi_status.napi_invalid_arg */;
4725
4853
  var envObject = emnapiCtx.envStore.get(env);
4854
+ envObject.checkGCAccess();
4726
4855
  if (!emnapiCtx.feature.supportBigInt) {
4727
- envObject.tryCatch.setError(emnapiCtx.createNotSupportBigIntError('napi_get_value_bigint_uint64', 'This API is unavailable'));
4728
- return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4856
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
4729
4857
  }
4730
4858
  if (!value)
4731
4859
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
@@ -4759,9 +4887,9 @@ function napi_get_value_bigint_words(env, value, sign_bit, word_count, words) {
4759
4887
  if (!env)
4760
4888
  return 1 /* napi_status.napi_invalid_arg */;
4761
4889
  var envObject = emnapiCtx.envStore.get(env);
4890
+ envObject.checkGCAccess();
4762
4891
  if (!emnapiCtx.feature.supportBigInt) {
4763
- envObject.tryCatch.setError(emnapiCtx.createNotSupportBigIntError('napi_get_value_bigint_words', 'This API is unavailable'));
4764
- return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4892
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
4765
4893
  }
4766
4894
  if (!value)
4767
4895
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
@@ -4817,6 +4945,7 @@ function napi_get_value_external(env, value, result) {
4817
4945
  if (!env)
4818
4946
  return 1 /* napi_status.napi_invalid_arg */;
4819
4947
  var envObject = emnapiCtx.envStore.get(env);
4948
+ envObject.checkGCAccess();
4820
4949
  if (!value)
4821
4950
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4822
4951
  if (!result)
@@ -4835,6 +4964,7 @@ function napi_get_value_int32(env, value, result) {
4835
4964
  if (!env)
4836
4965
  return 1 /* napi_status.napi_invalid_arg */;
4837
4966
  var envObject = emnapiCtx.envStore.get(env);
4967
+ envObject.checkGCAccess();
4838
4968
  if (!value)
4839
4969
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4840
4970
  if (!result)
@@ -4851,6 +4981,7 @@ function napi_get_value_int64(env, value, result) {
4851
4981
  if (!env)
4852
4982
  return 1 /* napi_status.napi_invalid_arg */;
4853
4983
  var envObject = emnapiCtx.envStore.get(env);
4984
+ envObject.checkGCAccess();
4854
4985
  if (!value)
4855
4986
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4856
4987
  if (!result)
@@ -4889,6 +5020,7 @@ function napi_get_value_string_latin1(env, value, buf, buf_size, result) {
4889
5020
  if (!env)
4890
5021
  return 1 /* napi_status.napi_invalid_arg */;
4891
5022
  var envObject = emnapiCtx.envStore.get(env);
5023
+ envObject.checkGCAccess();
4892
5024
  if (!value)
4893
5025
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4894
5026
  {{{ from64('result') }}};
@@ -4928,6 +5060,7 @@ function napi_get_value_string_utf8(env, value, buf, buf_size, result) {
4928
5060
  if (!env)
4929
5061
  return 1 /* napi_status.napi_invalid_arg */;
4930
5062
  var envObject = emnapiCtx.envStore.get(env);
5063
+ envObject.checkGCAccess();
4931
5064
  if (!value)
4932
5065
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4933
5066
  {{{ from64('result') }}};
@@ -4961,6 +5094,7 @@ function napi_get_value_string_utf16(env, value, buf, buf_size, result) {
4961
5094
  if (!env)
4962
5095
  return 1 /* napi_status.napi_invalid_arg */;
4963
5096
  var envObject = emnapiCtx.envStore.get(env);
5097
+ envObject.checkGCAccess();
4964
5098
  if (!value)
4965
5099
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4966
5100
  {{{ from64('result') }}};
@@ -4992,6 +5126,7 @@ function napi_get_value_uint32(env, value, result) {
4992
5126
  if (!env)
4993
5127
  return 1 /* napi_status.napi_invalid_arg */;
4994
5128
  var envObject = emnapiCtx.envStore.get(env);
5129
+ envObject.checkGCAccess();
4995
5130
  if (!value)
4996
5131
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4997
5132
  if (!result)
@@ -5028,6 +5163,7 @@ function napi_create_int32(env, value, result) {
5028
5163
  if (!env)
5029
5164
  return 1 /* napi_status.napi_invalid_arg */;
5030
5165
  var envObject = emnapiCtx.envStore.get(env);
5166
+ envObject.checkGCAccess();
5031
5167
  if (!result)
5032
5168
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5033
5169
  {{{ from64('result') }}};
@@ -5040,6 +5176,7 @@ function napi_create_uint32(env, value, result) {
5040
5176
  if (!env)
5041
5177
  return 1 /* napi_status.napi_invalid_arg */;
5042
5178
  var envObject = emnapiCtx.envStore.get(env);
5179
+ envObject.checkGCAccess();
5043
5180
  if (!result)
5044
5181
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5045
5182
  {{{ from64('result') }}};
@@ -5052,6 +5189,7 @@ function napi_create_int64(env, low, high, result) {
5052
5189
  if (!env)
5053
5190
  return 1 /* napi_status.napi_invalid_arg */;
5054
5191
  var envObject = emnapiCtx.envStore.get(env);
5192
+ envObject.checkGCAccess();
5055
5193
  var value;
5056
5194
  #if WASM_BIGINT
5057
5195
  if (!high)
@@ -5075,6 +5213,7 @@ function napi_create_double(env, value, result) {
5075
5213
  if (!env)
5076
5214
  return 1 /* napi_status.napi_invalid_arg */;
5077
5215
  var envObject = emnapiCtx.envStore.get(env);
5216
+ envObject.checkGCAccess();
5078
5217
  if (!result)
5079
5218
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5080
5219
  {{{ from64('result') }}};
@@ -5129,9 +5268,9 @@ function napi_create_bigint_int64(env, low, high, result) {
5129
5268
  if (!env)
5130
5269
  return 1 /* napi_status.napi_invalid_arg */;
5131
5270
  var envObject = emnapiCtx.envStore.get(env);
5271
+ envObject.checkGCAccess();
5132
5272
  if (!emnapiCtx.feature.supportBigInt) {
5133
- envObject.tryCatch.setError(emnapiCtx.createNotSupportBigIntError('napi_create_bigint_int64', 'This API is unavailable'));
5134
- return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5273
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
5135
5274
  }
5136
5275
  var value;
5137
5276
  #if WASM_BIGINT
@@ -5156,9 +5295,9 @@ function napi_create_bigint_uint64(env, low, high, result) {
5156
5295
  if (!env)
5157
5296
  return 1 /* napi_status.napi_invalid_arg */;
5158
5297
  var envObject = emnapiCtx.envStore.get(env);
5298
+ envObject.checkGCAccess();
5159
5299
  if (!emnapiCtx.feature.supportBigInt) {
5160
- envObject.tryCatch.setError(emnapiCtx.createNotSupportBigIntError('napi_create_bigint_uint64', 'This API is unavailable'));
5161
- return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5300
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
5162
5301
  }
5163
5302
  var value;
5164
5303
  #if WASM_BIGINT
@@ -5185,6 +5324,7 @@ function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
5185
5324
  if (!env)
5186
5325
  return 1 /* napi_status.napi_invalid_arg */;
5187
5326
  var envObject = emnapiCtx.envStore.get(env);
5327
+ envObject.checkGCAccess();
5188
5328
  if (envObject.tryCatch.hasCaught())
5189
5329
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5190
5330
  if (!envObject.canCallIntoJs()) {
@@ -5193,8 +5333,9 @@ function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
5193
5333
  envObject.clearLastError();
5194
5334
  try {
5195
5335
  if (!emnapiCtx.feature.supportBigInt) {
5196
- throw emnapiCtx.createNotSupportBigIntError('napi_create_bigint_words', 'This API is unavailable');
5336
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
5197
5337
  }
5338
+ envObject.checkGCAccess();
5198
5339
  if (!result)
5199
5340
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5200
5341
  {{{ from64('words') }}};
@@ -5217,7 +5358,7 @@ function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
5217
5358
  {{{ from64('result') }}};
5218
5359
  v = emnapiCtx.addToCurrentScope(value).id;
5219
5360
  {{{ makeSetValue('result', 0, 'v', '*') }}};
5220
- return envObject.clearLastError();
5361
+ return envObject.getReturnStatus();
5221
5362
  }
5222
5363
  catch (err) {
5223
5364
  envObject.tryCatch.setError(err);
@@ -5240,6 +5381,7 @@ function napi_create_array(env, result) {
5240
5381
  if (!env)
5241
5382
  return 1 /* napi_status.napi_invalid_arg */;
5242
5383
  var envObject = emnapiCtx.envStore.get(env);
5384
+ envObject.checkGCAccess();
5243
5385
  if (!result)
5244
5386
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5245
5387
  {{{ from64('result') }}};
@@ -5252,6 +5394,7 @@ function napi_create_array_with_length(env, length, result) {
5252
5394
  if (!env)
5253
5395
  return 1 /* napi_status.napi_invalid_arg */;
5254
5396
  var envObject = emnapiCtx.envStore.get(env);
5397
+ envObject.checkGCAccess();
5255
5398
  if (!result)
5256
5399
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5257
5400
  {{{ from64('length') }}};
@@ -5280,6 +5423,7 @@ function napi_create_arraybuffer(env, byte_length, data, result) {
5280
5423
  if (!env)
5281
5424
  return 1 /* napi_status.napi_invalid_arg */;
5282
5425
  var envObject = emnapiCtx.envStore.get(env);
5426
+ envObject.checkGCAccess();
5283
5427
  if (envObject.tryCatch.hasCaught())
5284
5428
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5285
5429
  if (!envObject.canCallIntoJs()) {
@@ -5306,6 +5450,7 @@ function napi_create_date(env, time, result) {
5306
5450
  if (!env)
5307
5451
  return 1 /* napi_status.napi_invalid_arg */;
5308
5452
  var envObject = emnapiCtx.envStore.get(env);
5453
+ envObject.checkGCAccess();
5309
5454
  if (envObject.tryCatch.hasCaught())
5310
5455
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5311
5456
  if (!envObject.canCallIntoJs()) {
@@ -5332,6 +5477,7 @@ function napi_create_external(env, data, finalize_cb, finalize_hint, result) {
5332
5477
  if (!env)
5333
5478
  return 1 /* napi_status.napi_invalid_arg */;
5334
5479
  var envObject = emnapiCtx.envStore.get(env);
5480
+ envObject.checkGCAccess();
5335
5481
  if (envObject.tryCatch.hasCaught())
5336
5482
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5337
5483
  if (!envObject.canCallIntoJs()) {
@@ -5364,6 +5510,7 @@ function napi_create_external_arraybuffer(env, external_data, byte_length, final
5364
5510
  if (!env)
5365
5511
  return 1 /* napi_status.napi_invalid_arg */;
5366
5512
  var envObject = emnapiCtx.envStore.get(env);
5513
+ envObject.checkGCAccess();
5367
5514
  if (envObject.tryCatch.hasCaught())
5368
5515
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5369
5516
  if (!envObject.canCallIntoJs()) {
@@ -5429,6 +5576,7 @@ function napi_create_object(env, result) {
5429
5576
  if (!env)
5430
5577
  return 1 /* napi_status.napi_invalid_arg */;
5431
5578
  var envObject = emnapiCtx.envStore.get(env);
5579
+ envObject.checkGCAccess();
5432
5580
  if (!result)
5433
5581
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5434
5582
  {{{ from64('result') }}};
@@ -5441,6 +5589,7 @@ function napi_create_symbol(env, description, result) {
5441
5589
  if (!env)
5442
5590
  return 1 /* napi_status.napi_invalid_arg */;
5443
5591
  var envObject = emnapiCtx.envStore.get(env);
5592
+ envObject.checkGCAccess();
5444
5593
  if (!result)
5445
5594
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5446
5595
  {{{ from64('result') }}};
@@ -5467,6 +5616,7 @@ function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, res
5467
5616
  if (!env)
5468
5617
  return 1 /* napi_status.napi_invalid_arg */;
5469
5618
  var envObject = emnapiCtx.envStore.get(env);
5619
+ envObject.checkGCAccess();
5470
5620
  if (envObject.tryCatch.hasCaught())
5471
5621
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5472
5622
  if (!envObject.canCallIntoJs()) {
@@ -5560,6 +5710,7 @@ function napi_create_buffer(env, size, data, result) {
5560
5710
  if (!env)
5561
5711
  return 1 /* napi_status.napi_invalid_arg */;
5562
5712
  var envObject = emnapiCtx.envStore.get(env);
5713
+ envObject.checkGCAccess();
5563
5714
  if (envObject.tryCatch.hasCaught())
5564
5715
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5565
5716
  if (!envObject.canCallIntoJs()) {
@@ -5615,6 +5766,7 @@ function napi_create_buffer_copy(env, length, data, result_data, result) {
5615
5766
  if (!env)
5616
5767
  return 1 /* napi_status.napi_invalid_arg */;
5617
5768
  var envObject = emnapiCtx.envStore.get(env);
5769
+ envObject.checkGCAccess();
5618
5770
  if (envObject.tryCatch.hasCaught())
5619
5771
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5620
5772
  if (!envObject.canCallIntoJs()) {
@@ -5652,6 +5804,7 @@ function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result
5652
5804
  if (!env)
5653
5805
  return 1 /* napi_status.napi_invalid_arg */;
5654
5806
  var envObject = emnapiCtx.envStore.get(env);
5807
+ envObject.checkGCAccess();
5655
5808
  if (envObject.tryCatch.hasCaught())
5656
5809
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5657
5810
  if (!envObject.canCallIntoJs()) {
@@ -5675,8 +5828,7 @@ function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result
5675
5828
  if ((byte_length + byte_offset) > buffer.byteLength) {
5676
5829
  var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
5677
5830
  err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
5678
- envObject.tryCatch.setError(err);
5679
- return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5831
+ throw err;
5680
5832
  }
5681
5833
  var dataview = new DataView(buffer, byte_offset, byte_length);
5682
5834
  if (buffer === wasmMemory.buffer) {
@@ -5705,6 +5857,7 @@ function node_api_symbol_for(env, utf8description, length, result) {
5705
5857
  if (!env)
5706
5858
  return 1 /* napi_status.napi_invalid_arg */;
5707
5859
  var envObject = emnapiCtx.envStore.get(env);
5860
+ envObject.checkGCAccess();
5708
5861
  if (!result)
5709
5862
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5710
5863
  {{{ from64('length') }}};
@@ -5744,6 +5897,7 @@ function napi_get_boolean(env, value, result) {
5744
5897
  if (!env)
5745
5898
  return 1 /* napi_status.napi_invalid_arg */;
5746
5899
  var envObject = emnapiCtx.envStore.get(env);
5900
+ envObject.checkGCAccess();
5747
5901
  if (!result)
5748
5902
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5749
5903
  {{{ from64('result') }}};
@@ -5756,6 +5910,7 @@ function napi_get_global(env, result) {
5756
5910
  if (!env)
5757
5911
  return 1 /* napi_status.napi_invalid_arg */;
5758
5912
  var envObject = emnapiCtx.envStore.get(env);
5913
+ envObject.checkGCAccess();
5759
5914
  if (!result)
5760
5915
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5761
5916
  {{{ from64('result') }}};
@@ -5768,6 +5923,7 @@ function napi_get_null(env, result) {
5768
5923
  if (!env)
5769
5924
  return 1 /* napi_status.napi_invalid_arg */;
5770
5925
  var envObject = emnapiCtx.envStore.get(env);
5926
+ envObject.checkGCAccess();
5771
5927
  if (!result)
5772
5928
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5773
5929
  {{{ from64('result') }}};
@@ -5780,6 +5936,7 @@ function napi_get_undefined(env, result) {
5780
5936
  if (!env)
5781
5937
  return 1 /* napi_status.napi_invalid_arg */;
5782
5938
  var envObject = emnapiCtx.envStore.get(env);
5939
+ envObject.checkGCAccess();
5783
5940
  if (!result)
5784
5941
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5785
5942
  {{{ from64('result') }}};
@@ -5796,6 +5953,7 @@ function _napi_create_async_work(env, resource, resource_name, execute, complete
5796
5953
  if (!env)
5797
5954
  return 1 /* napi_status.napi_invalid_arg */;
5798
5955
  var envObject = emnapiCtx.envStore.get(env);
5956
+ envObject.checkGCAccess();
5799
5957
  if (!execute)
5800
5958
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5801
5959
  if (!result)
@@ -5819,6 +5977,7 @@ function _napi_delete_async_work(env, work) {
5819
5977
  if (!env)
5820
5978
  return 1 /* napi_status.napi_invalid_arg */;
5821
5979
  var envObject = emnapiCtx.envStore.get(env);
5980
+ envObject.checkGCAccess();
5822
5981
  if (!work)
5823
5982
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5824
5983
  emnapiAWST.remove(work);
@@ -5942,6 +6101,7 @@ function emnapi_get_module_object(env, result) {
5942
6101
  if (!env)
5943
6102
  return 1 /* napi_status.napi_invalid_arg */;
5944
6103
  var envObject = emnapiCtx.envStore.get(env);
6104
+ envObject.checkGCAccess();
5945
6105
  if (envObject.tryCatch.hasCaught())
5946
6106
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5947
6107
  if (!envObject.canCallIntoJs()) {
@@ -5968,6 +6128,7 @@ function emnapi_get_module_property(env, utf8name, result) {
5968
6128
  if (!env)
5969
6129
  return 1 /* napi_status.napi_invalid_arg */;
5970
6130
  var envObject = emnapiCtx.envStore.get(env);
6131
+ envObject.checkGCAccess();
5971
6132
  if (envObject.tryCatch.hasCaught())
5972
6133
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5973
6134
  if (!envObject.canCallIntoJs()) {