koffi 0.9.4 → 0.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CMakeLists.txt +60 -60
- package/README.md +163 -153
- package/package.json +19 -18
- package/src/call.hh +27 -27
- package/src/call_arm64.cc +482 -482
- package/src/call_arm64_fwd.S +115 -115
- package/src/call_x64_sysv.cc +477 -477
- package/src/call_x64_sysv_fwd.S +131 -131
- package/src/call_x64_win.cc +243 -243
- package/src/call_x64_win_fwd.asm +105 -105
- package/src/call_x86.cc +259 -259
- package/src/call_x86_fwd.S +48 -48
- package/src/call_x86_fwd.asm +50 -50
- package/src/ffi.cc +504 -504
- package/src/ffi.hh +135 -135
- package/src/util.cc +296 -296
- package/src/util.hh +80 -80
- package/vendor/dragonbox/CMakeLists.txt +122 -122
- package/vendor/dragonbox/LICENSE-Apache2-LLVM +218 -218
- package/vendor/dragonbox/LICENSE-Boost +23 -23
- package/vendor/dragonbox/README.md +277 -277
- package/vendor/dragonbox/cmake/dragonboxConfig.cmake +1 -1
- package/vendor/dragonbox/include/dragonbox/dragonbox.h +2670 -2670
- package/vendor/dragonbox/include/dragonbox/dragonbox_to_chars.h +108 -108
- package/vendor/dragonbox/other_files/unknown_win64_vc2019.html +539 -539
- package/vendor/dragonbox/source/dragonbox_to_chars.cpp +303 -303
- package/vendor/dragonbox/subproject/3rdparty/grisu_exact/CMakeLists.txt +23 -23
- package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.cpp +238 -238
- package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.h +95 -95
- package/vendor/dragonbox/subproject/3rdparty/grisu_exact/grisu_exact.h +2666 -2666
- package/vendor/dragonbox/subproject/3rdparty/ryu/CMakeLists.txt +16 -16
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/common.h +114 -114
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s.c +509 -509
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_full_table.h +367 -367
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_intrinsics.h +357 -357
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/digit_table.h +35 -35
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s.c +345 -345
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_full_table.h +55 -55
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_intrinsics.h +128 -128
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/ryu.h +46 -46
- package/vendor/dragonbox/subproject/3rdparty/schubfach/CMakeLists.txt +21 -21
- package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.cc +699 -699
- package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.h +31 -31
- package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.cc +1354 -1354
- package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.h +31 -31
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/example_shaded_plots.m +68 -68
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/license.txt +25 -25
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution.m +92 -92
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution_prctile.m +121 -121
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_histogram_shaded.m +99 -99
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_shaded.m +93 -93
- package/vendor/dragonbox/subproject/benchmark/CMakeLists.txt +64 -64
- package/vendor/dragonbox/subproject/benchmark/include/benchmark.h +40 -40
- package/vendor/dragonbox/subproject/benchmark/matlab/plot_benchmarks.m +21 -21
- package/vendor/dragonbox/subproject/benchmark/matlab/plot_digit_benchmark.m +78 -78
- package/vendor/dragonbox/subproject/benchmark/matlab/plot_uniform_benchmark.m +95 -95
- package/vendor/dragonbox/subproject/benchmark/source/benchmark.cpp +237 -237
- package/vendor/dragonbox/subproject/benchmark/source/dragonbox.cpp +30 -30
- package/vendor/dragonbox/subproject/benchmark/source/grisu_exact.cpp +36 -36
- package/vendor/dragonbox/subproject/benchmark/source/ryu.cpp +27 -27
- package/vendor/dragonbox/subproject/benchmark/source/schubfach.cpp +31 -31
- package/vendor/dragonbox/subproject/common/CMakeLists.txt +41 -41
- package/vendor/dragonbox/subproject/common/include/best_rational_approx.h +96 -96
- package/vendor/dragonbox/subproject/common/include/big_uint.h +217 -217
- package/vendor/dragonbox/subproject/common/include/continued_fractions.h +173 -173
- package/vendor/dragonbox/subproject/common/include/good_rational_approx.h +266 -266
- package/vendor/dragonbox/subproject/common/include/random_float.h +182 -182
- package/vendor/dragonbox/subproject/common/include/rational_continued_fractions.h +56 -56
- package/vendor/dragonbox/subproject/common/source/big_uint.cpp +601 -601
- package/vendor/dragonbox/subproject/meta/CMakeLists.txt +40 -40
- package/vendor/dragonbox/subproject/meta/results/binary32_generated_cache.txt +81 -81
- package/vendor/dragonbox/subproject/meta/results/binary64_compressed_cache_error_table.txt +9 -9
- package/vendor/dragonbox/subproject/meta/results/binary64_generated_cache.txt +622 -622
- package/vendor/dragonbox/subproject/meta/source/generate_cache.cpp +126 -126
- package/vendor/dragonbox/subproject/meta/source/live_test.cpp +81 -81
- package/vendor/dragonbox/subproject/meta/source/perf_test.cpp +104 -104
- package/vendor/dragonbox/subproject/meta/source/sandbox.cpp +20 -20
- package/vendor/dragonbox/subproject/test/CMakeLists.txt +69 -69
- package/vendor/dragonbox/subproject/test/results/binary32.csv +255 -255
- package/vendor/dragonbox/subproject/test/results/binary64.csv +2047 -2047
- package/vendor/dragonbox/subproject/test/results/plot_required_bits.m +17 -17
- package/vendor/dragonbox/subproject/test/source/test_all_shorter_interval_cases.cpp +88 -88
- package/vendor/dragonbox/subproject/test/source/uniform_random_test.cpp +95 -95
- package/vendor/dragonbox/subproject/test/source/verify_cache_precision.cpp +337 -337
- package/vendor/dragonbox/subproject/test/source/verify_compressed_cache.cpp +154 -154
- package/vendor/dragonbox/subproject/test/source/verify_fast_multiplication.cpp +168 -168
- package/vendor/dragonbox/subproject/test/source/verify_log_computation.cpp +251 -251
- package/vendor/dragonbox/subproject/test/source/verify_magic_division.cpp +113 -113
- package/vendor/libcc/libcc.cc +7651 -7651
- package/vendor/libcc/libcc.hh +4312 -4312
- package/vendor/node-addon-api/CHANGELOG.md +859 -859
- package/vendor/node-addon-api/CODE_OF_CONDUCT.md +4 -4
- package/vendor/node-addon-api/CONTRIBUTING.md +93 -93
- package/vendor/node-addon-api/LICENSE.md +12 -12
- package/vendor/node-addon-api/README.md +293 -293
- package/vendor/node-addon-api/appveyor.yml +37 -37
- package/vendor/node-addon-api/benchmark/README.md +47 -47
- package/vendor/node-addon-api/benchmark/binding.gyp +25 -25
- package/vendor/node-addon-api/benchmark/function_args.cc +217 -217
- package/vendor/node-addon-api/benchmark/function_args.js +60 -60
- package/vendor/node-addon-api/benchmark/index.js +34 -34
- package/vendor/node-addon-api/benchmark/property_descriptor.cc +91 -91
- package/vendor/node-addon-api/benchmark/property_descriptor.js +37 -37
- package/vendor/node-addon-api/common.gypi +21 -21
- package/vendor/node-addon-api/doc/addon.md +163 -163
- package/vendor/node-addon-api/doc/array.md +81 -81
- package/vendor/node-addon-api/doc/array_buffer.md +155 -155
- package/vendor/node-addon-api/doc/async_context.md +86 -86
- package/vendor/node-addon-api/doc/async_operations.md +31 -31
- package/vendor/node-addon-api/doc/async_worker.md +427 -427
- package/vendor/node-addon-api/doc/async_worker_variants.md +557 -557
- package/vendor/node-addon-api/doc/bigint.md +97 -97
- package/vendor/node-addon-api/doc/boolean.md +68 -68
- package/vendor/node-addon-api/doc/buffer.md +150 -150
- package/vendor/node-addon-api/doc/callback_scope.md +54 -54
- package/vendor/node-addon-api/doc/callbackinfo.md +97 -97
- package/vendor/node-addon-api/doc/checker-tool.md +32 -32
- package/vendor/node-addon-api/doc/class_property_descriptor.md +115 -115
- package/vendor/node-addon-api/doc/cmake-js.md +68 -68
- package/vendor/node-addon-api/doc/conversion-tool.md +27 -27
- package/vendor/node-addon-api/doc/creating_a_release.md +62 -62
- package/vendor/node-addon-api/doc/dataview.md +248 -248
- package/vendor/node-addon-api/doc/date.md +68 -68
- package/vendor/node-addon-api/doc/env.md +196 -196
- package/vendor/node-addon-api/doc/error.md +120 -120
- package/vendor/node-addon-api/doc/error_handling.md +254 -254
- package/vendor/node-addon-api/doc/escapable_handle_scope.md +80 -80
- package/vendor/node-addon-api/doc/external.md +63 -63
- package/vendor/node-addon-api/doc/function.md +402 -402
- package/vendor/node-addon-api/doc/function_reference.md +238 -238
- package/vendor/node-addon-api/doc/generator.md +13 -13
- package/vendor/node-addon-api/doc/handle_scope.md +63 -63
- package/vendor/node-addon-api/doc/hierarchy.md +91 -91
- package/vendor/node-addon-api/doc/instance_wrap.md +408 -408
- package/vendor/node-addon-api/doc/maybe.md +76 -76
- package/vendor/node-addon-api/doc/memory_management.md +27 -27
- package/vendor/node-addon-api/doc/name.md +29 -29
- package/vendor/node-addon-api/doc/node-gyp.md +82 -82
- package/vendor/node-addon-api/doc/number.md +163 -163
- package/vendor/node-addon-api/doc/object.md +432 -432
- package/vendor/node-addon-api/doc/object_lifetime_management.md +83 -83
- package/vendor/node-addon-api/doc/object_reference.md +117 -117
- package/vendor/node-addon-api/doc/object_wrap.md +561 -561
- package/vendor/node-addon-api/doc/prebuild_tools.md +16 -16
- package/vendor/node-addon-api/doc/promises.md +79 -79
- package/vendor/node-addon-api/doc/property_descriptor.md +286 -286
- package/vendor/node-addon-api/doc/propertylvalue.md +50 -50
- package/vendor/node-addon-api/doc/range_error.md +59 -59
- package/vendor/node-addon-api/doc/reference.md +113 -113
- package/vendor/node-addon-api/doc/setup.md +110 -110
- package/vendor/node-addon-api/doc/string.md +93 -93
- package/vendor/node-addon-api/doc/symbol.md +60 -60
- package/vendor/node-addon-api/doc/threadsafe.md +121 -121
- package/vendor/node-addon-api/doc/threadsafe_function.md +290 -290
- package/vendor/node-addon-api/doc/type_error.md +59 -59
- package/vendor/node-addon-api/doc/typed_array.md +78 -78
- package/vendor/node-addon-api/doc/typed_array_of.md +137 -137
- package/vendor/node-addon-api/doc/typed_threadsafe_function.md +306 -306
- package/vendor/node-addon-api/doc/value.md +340 -340
- package/vendor/node-addon-api/doc/version_management.md +43 -43
- package/vendor/node-addon-api/except.gypi +25 -25
- package/vendor/node-addon-api/index.js +11 -11
- package/vendor/node-addon-api/napi-inl.deprecated.h +192 -192
- package/vendor/node-addon-api/napi-inl.h +6209 -6209
- package/vendor/node-addon-api/napi.h +2983 -2983
- package/vendor/node-addon-api/node_api.gyp +9 -9
- package/vendor/node-addon-api/noexcept.gypi +26 -26
- package/vendor/node-addon-api/package-support.json +21 -21
- package/vendor/node-addon-api/package.json +399 -399
- package/vendor/node-addon-api/test/README.md +91 -91
- package/vendor/node-addon-api/test/addon.cc +36 -36
- package/vendor/node-addon-api/test/addon.js +11 -11
- package/vendor/node-addon-api/test/addon_build/index.js +49 -49
- package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +17 -17
- package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +62 -62
- package/vendor/node-addon-api/test/addon_build/tpl/index.js +9 -9
- package/vendor/node-addon-api/test/addon_build/tpl/package.json +11 -11
- package/vendor/node-addon-api/test/addon_data.cc +99 -99
- package/vendor/node-addon-api/test/addon_data.js +46 -46
- package/vendor/node-addon-api/test/array_buffer.cc +243 -243
- package/vendor/node-addon-api/test/array_buffer.js +69 -69
- package/vendor/node-addon-api/test/async_context.cc +21 -21
- package/vendor/node-addon-api/test/async_context.js +86 -86
- package/vendor/node-addon-api/test/async_progress_queue_worker.cc +83 -83
- package/vendor/node-addon-api/test/async_progress_queue_worker.js +46 -46
- package/vendor/node-addon-api/test/async_progress_worker.cc +134 -134
- package/vendor/node-addon-api/test/async_progress_worker.js +61 -61
- package/vendor/node-addon-api/test/async_worker.cc +106 -106
- package/vendor/node-addon-api/test/async_worker.js +179 -179
- package/vendor/node-addon-api/test/async_worker_nocallback.js +13 -13
- package/vendor/node-addon-api/test/async_worker_persistent.cc +63 -63
- package/vendor/node-addon-api/test/async_worker_persistent.js +24 -24
- package/vendor/node-addon-api/test/basic_types/array.cc +40 -40
- package/vendor/node-addon-api/test/basic_types/array.js +35 -35
- package/vendor/node-addon-api/test/basic_types/boolean.cc +38 -38
- package/vendor/node-addon-api/test/basic_types/boolean.js +35 -35
- package/vendor/node-addon-api/test/basic_types/number.cc +99 -99
- package/vendor/node-addon-api/test/basic_types/number.js +114 -114
- package/vendor/node-addon-api/test/basic_types/value.cc +120 -120
- package/vendor/node-addon-api/test/basic_types/value.js +133 -133
- package/vendor/node-addon-api/test/bigint.cc +91 -91
- package/vendor/node-addon-api/test/bigint.js +53 -53
- package/vendor/node-addon-api/test/binding-swallowexcept.cc +12 -12
- package/vendor/node-addon-api/test/binding.cc +171 -171
- package/vendor/node-addon-api/test/binding.gyp +117 -117
- package/vendor/node-addon-api/test/buffer.cc +183 -183
- package/vendor/node-addon-api/test/buffer.js +69 -69
- package/vendor/node-addon-api/test/callbackscope.cc +22 -22
- package/vendor/node-addon-api/test/callbackscope.js +49 -49
- package/vendor/node-addon-api/test/common/index.js +113 -113
- package/vendor/node-addon-api/test/common/test_helper.h +61 -61
- package/vendor/node-addon-api/test/dataview/dataview.cc +48 -48
- package/vendor/node-addon-api/test/dataview/dataview.js +35 -35
- package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +115 -115
- package/vendor/node-addon-api/test/dataview/dataview_read_write.js +90 -90
- package/vendor/node-addon-api/test/date.cc +44 -44
- package/vendor/node-addon-api/test/date.js +18 -18
- package/vendor/node-addon-api/test/env_cleanup.cc +88 -88
- package/vendor/node-addon-api/test/env_cleanup.js +56 -56
- package/vendor/node-addon-api/test/error.cc +287 -287
- package/vendor/node-addon-api/test/error.js +81 -81
- package/vendor/node-addon-api/test/error_handling_for_primitives.cc +13 -13
- package/vendor/node-addon-api/test/error_handling_for_primitives.js +29 -29
- package/vendor/node-addon-api/test/error_terminating_environment.js +94 -94
- package/vendor/node-addon-api/test/external.cc +81 -81
- package/vendor/node-addon-api/test/external.js +88 -88
- package/vendor/node-addon-api/test/function.cc +295 -295
- package/vendor/node-addon-api/test/function.js +121 -121
- package/vendor/node-addon-api/test/function_reference.cc +202 -202
- package/vendor/node-addon-api/test/function_reference.js +157 -157
- package/vendor/node-addon-api/test/globalObject/global_object.cc +61 -61
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +31 -31
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +61 -61
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +40 -40
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +57 -57
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +28 -28
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +48 -48
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +30 -30
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +58 -58
- package/vendor/node-addon-api/test/handlescope.cc +60 -60
- package/vendor/node-addon-api/test/handlescope.js +14 -14
- package/vendor/node-addon-api/test/index.js +136 -136
- package/vendor/node-addon-api/test/maybe/check.cc +23 -23
- package/vendor/node-addon-api/test/maybe/index.js +38 -38
- package/vendor/node-addon-api/test/memory_management.cc +17 -17
- package/vendor/node-addon-api/test/memory_management.js +9 -9
- package/vendor/node-addon-api/test/movable_callbacks.cc +23 -23
- package/vendor/node-addon-api/test/movable_callbacks.js +21 -21
- package/vendor/node-addon-api/test/name.cc +108 -108
- package/vendor/node-addon-api/test/name.js +59 -59
- package/vendor/node-addon-api/test/napi_child.js +14 -14
- package/vendor/node-addon-api/test/object/delete_property.cc +38 -38
- package/vendor/node-addon-api/test/object/delete_property.js +41 -41
- package/vendor/node-addon-api/test/object/finalizer.cc +29 -29
- package/vendor/node-addon-api/test/object/finalizer.js +28 -28
- package/vendor/node-addon-api/test/object/get_property.cc +34 -34
- package/vendor/node-addon-api/test/object/get_property.js +40 -40
- package/vendor/node-addon-api/test/object/has_own_property.cc +34 -34
- package/vendor/node-addon-api/test/object/has_own_property.js +34 -34
- package/vendor/node-addon-api/test/object/has_property.cc +38 -38
- package/vendor/node-addon-api/test/object/has_property.js +37 -37
- package/vendor/node-addon-api/test/object/object.cc +348 -348
- package/vendor/node-addon-api/test/object/object.js +217 -217
- package/vendor/node-addon-api/test/object/object_deprecated.cc +66 -66
- package/vendor/node-addon-api/test/object/object_deprecated.js +47 -47
- package/vendor/node-addon-api/test/object/object_freeze_seal.cc +25 -25
- package/vendor/node-addon-api/test/object/object_freeze_seal.js +61 -61
- package/vendor/node-addon-api/test/object/set_property.cc +37 -37
- package/vendor/node-addon-api/test/object/set_property.js +29 -29
- package/vendor/node-addon-api/test/object/subscript_operator.cc +42 -42
- package/vendor/node-addon-api/test/object/subscript_operator.js +17 -17
- package/vendor/node-addon-api/test/object_reference.cc +219 -219
- package/vendor/node-addon-api/test/object_reference.js +259 -259
- package/vendor/node-addon-api/test/objectwrap.cc +268 -268
- package/vendor/node-addon-api/test/objectwrap.js +284 -284
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +26 -26
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +18 -18
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +30 -30
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +13 -13
- package/vendor/node-addon-api/test/objectwrap_removewrap.cc +45 -45
- package/vendor/node-addon-api/test/objectwrap_removewrap.js +40 -40
- package/vendor/node-addon-api/test/objectwrap_worker_thread.js +19 -19
- package/vendor/node-addon-api/test/promise.cc +29 -29
- package/vendor/node-addon-api/test/promise.js +18 -18
- package/vendor/node-addon-api/test/reference.cc +24 -24
- package/vendor/node-addon-api/test/reference.js +14 -14
- package/vendor/node-addon-api/test/run_script.cc +56 -56
- package/vendor/node-addon-api/test/run_script.js +45 -45
- package/vendor/node-addon-api/test/symbol.cc +79 -79
- package/vendor/node-addon-api/test/symbol.js +73 -73
- package/vendor/node-addon-api/test/testUtil.js +54 -54
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +195 -195
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +188 -188
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +63 -63
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +12 -12
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +115 -115
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +14 -14
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +26 -26
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +7 -7
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +225 -225
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +59 -59
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +42 -42
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +53 -53
- package/vendor/node-addon-api/test/thunking_manual.cc +140 -140
- package/vendor/node-addon-api/test/thunking_manual.js +17 -17
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +215 -215
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +188 -188
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +68 -68
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +12 -12
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +127 -127
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +14 -14
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +28 -28
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +7 -7
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +237 -237
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +59 -59
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +53 -53
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +53 -53
- package/vendor/node-addon-api/test/typedarray-bigint.js +58 -58
- package/vendor/node-addon-api/test/typedarray.cc +216 -216
- package/vendor/node-addon-api/test/typedarray.js +69 -69
- package/vendor/node-addon-api/test/version_management.cc +27 -27
- package/vendor/node-addon-api/test/version_management.js +31 -31
- package/vendor/node-addon-api/tools/README.md +73 -73
- package/vendor/node-addon-api/tools/check-napi.js +100 -100
- package/vendor/node-addon-api/tools/clang-format.js +68 -68
- package/vendor/node-addon-api/tools/conversion.js +309 -309
- package/vendor/node-addon-api/tools/eslint-format.js +71 -71
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
|
|
5
|
-
const isMainProcess = process.argv[1] != __filename;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* In order to test that the event loop exits even with an active TSFN, we need
|
|
9
|
-
* to spawn a new process for the test.
|
|
10
|
-
* - Main process: spawns new node instance, executing this script
|
|
11
|
-
* - Child process: creates TSFN. Native module Unref's via setTimeout after some time but does NOT call Release.
|
|
12
|
-
*
|
|
13
|
-
* Main process should expect child process to exit.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
if (isMainProcess) {
|
|
17
|
-
module.exports = require('../common').runTestWithBindingPath(test);
|
|
18
|
-
} else {
|
|
19
|
-
test(process.argv[2]);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function test(bindingFile) {
|
|
23
|
-
if (isMainProcess) {
|
|
24
|
-
// Main process
|
|
25
|
-
return new Promise((resolve, reject) => {
|
|
26
|
-
const child = require('../napi_child').spawn(process.argv[0], [
|
|
27
|
-
'--expose-gc', __filename, bindingFile
|
|
28
|
-
], { stdio: 'inherit' });
|
|
29
|
-
|
|
30
|
-
let timeout = setTimeout( function() {
|
|
31
|
-
child.kill();
|
|
32
|
-
timeout = 0;
|
|
33
|
-
reject(new Error("Expected child to die"));
|
|
34
|
-
}, 5000);
|
|
35
|
-
|
|
36
|
-
child.on("error", (err) => {
|
|
37
|
-
clearTimeout(timeout);
|
|
38
|
-
timeout = 0;
|
|
39
|
-
reject(new Error(err));
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
child.on("close", (code) => {
|
|
43
|
-
if (timeout) clearTimeout(timeout);
|
|
44
|
-
assert.strictEqual(code, 0, "Expected return value 0");
|
|
45
|
-
resolve();
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
} else {
|
|
49
|
-
// Child process
|
|
50
|
-
const binding = require(bindingFile);
|
|
51
|
-
binding.threadsafe_function_unref.testUnref({}, () => { });
|
|
52
|
-
}
|
|
53
|
-
}
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const assert = require('assert');
|
|
4
|
+
|
|
5
|
+
const isMainProcess = process.argv[1] != __filename;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* In order to test that the event loop exits even with an active TSFN, we need
|
|
9
|
+
* to spawn a new process for the test.
|
|
10
|
+
* - Main process: spawns new node instance, executing this script
|
|
11
|
+
* - Child process: creates TSFN. Native module Unref's via setTimeout after some time but does NOT call Release.
|
|
12
|
+
*
|
|
13
|
+
* Main process should expect child process to exit.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
if (isMainProcess) {
|
|
17
|
+
module.exports = require('../common').runTestWithBindingPath(test);
|
|
18
|
+
} else {
|
|
19
|
+
test(process.argv[2]);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function test(bindingFile) {
|
|
23
|
+
if (isMainProcess) {
|
|
24
|
+
// Main process
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
const child = require('../napi_child').spawn(process.argv[0], [
|
|
27
|
+
'--expose-gc', __filename, bindingFile
|
|
28
|
+
], { stdio: 'inherit' });
|
|
29
|
+
|
|
30
|
+
let timeout = setTimeout( function() {
|
|
31
|
+
child.kill();
|
|
32
|
+
timeout = 0;
|
|
33
|
+
reject(new Error("Expected child to die"));
|
|
34
|
+
}, 5000);
|
|
35
|
+
|
|
36
|
+
child.on("error", (err) => {
|
|
37
|
+
clearTimeout(timeout);
|
|
38
|
+
timeout = 0;
|
|
39
|
+
reject(new Error(err));
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
child.on("close", (code) => {
|
|
43
|
+
if (timeout) clearTimeout(timeout);
|
|
44
|
+
assert.strictEqual(code, 0, "Expected return value 0");
|
|
45
|
+
resolve();
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
} else {
|
|
49
|
+
// Child process
|
|
50
|
+
const binding = require(bindingFile);
|
|
51
|
+
binding.threadsafe_function_unref.testUnref({}, () => { });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -1,140 +1,140 @@
|
|
|
1
|
-
#include <napi.h>
|
|
2
|
-
|
|
3
|
-
// The formulaic comment below should accompany any code that results in an
|
|
4
|
-
// internal piece of heap data getting created, because each such piece of heap
|
|
5
|
-
// data must be attached to an object by way of a deleter which gets called when
|
|
6
|
-
// the object gets garbage-collected.
|
|
7
|
-
//
|
|
8
|
-
// At the very least, you can add a fprintf(stderr, ...) to the deleter in
|
|
9
|
-
// napi-inl.h and then count the number of times the deleter prints by running
|
|
10
|
-
// node --expose-gc test/thunking_manual.js and counting the number of prints
|
|
11
|
-
// between the two rows of dashes. That number should coincide with the number
|
|
12
|
-
// of formulaic comments below.
|
|
13
|
-
//
|
|
14
|
-
// Note that currently this result can only be achieved with node-chakracore,
|
|
15
|
-
// because V8 does not garbage-collect classes.
|
|
16
|
-
|
|
17
|
-
static Napi::Value TestMethod(const Napi::CallbackInfo& /*info*/) {
|
|
18
|
-
return Napi::Value();
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
static Napi::Value TestGetter(const Napi::CallbackInfo& /*info*/) {
|
|
22
|
-
return Napi::Value();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
static void TestSetter(const Napi::CallbackInfo& /*info*/) {
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
class TestClass : public Napi::ObjectWrap<TestClass> {
|
|
29
|
-
public:
|
|
30
|
-
TestClass(const Napi::CallbackInfo& info):
|
|
31
|
-
ObjectWrap<TestClass>(info) {
|
|
32
|
-
}
|
|
33
|
-
static Napi::Value TestClassStaticMethod(const Napi::CallbackInfo& info) {
|
|
34
|
-
return Napi::Number::New(info.Env(), 42);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
static void TestClassStaticVoidMethod(const Napi::CallbackInfo& /*info*/) {
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
Napi::Value TestClassInstanceMethod(const Napi::CallbackInfo& info) {
|
|
41
|
-
return Napi::Number::New(info.Env(), 42);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
void TestClassInstanceVoidMethod(const Napi::CallbackInfo& /*info*/) {
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
Napi::Value TestClassInstanceGetter(const Napi::CallbackInfo& info) {
|
|
48
|
-
return Napi::Number::New(info.Env(), 42);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
void TestClassInstanceSetter(const Napi::CallbackInfo& /*info*/,
|
|
52
|
-
const Napi::Value& /*new_value*/) {
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
static Napi::Function NewClass(Napi::Env env) {
|
|
56
|
-
return DefineClass(env, "TestClass", {
|
|
57
|
-
// Make sure to check that the deleter gets called.
|
|
58
|
-
StaticMethod("staticMethod", TestClassStaticMethod),
|
|
59
|
-
// Make sure to check that the deleter gets called.
|
|
60
|
-
StaticMethod("staticVoidMethod", TestClassStaticVoidMethod),
|
|
61
|
-
// Make sure to check that the deleter gets called.
|
|
62
|
-
StaticMethod(Napi::Symbol::New(env, "staticMethod"),
|
|
63
|
-
TestClassStaticMethod),
|
|
64
|
-
// Make sure to check that the deleter gets called.
|
|
65
|
-
StaticMethod(Napi::Symbol::New(env, "staticVoidMethod"),
|
|
66
|
-
TestClassStaticVoidMethod),
|
|
67
|
-
// Make sure to check that the deleter gets called.
|
|
68
|
-
InstanceMethod("instanceMethod", &TestClass::TestClassInstanceMethod),
|
|
69
|
-
// Make sure to check that the deleter gets called.
|
|
70
|
-
InstanceMethod("instanceVoidMethod",
|
|
71
|
-
&TestClass::TestClassInstanceVoidMethod),
|
|
72
|
-
// Make sure to check that the deleter gets called.
|
|
73
|
-
InstanceMethod(Napi::Symbol::New(env, "instanceMethod"),
|
|
74
|
-
&TestClass::TestClassInstanceMethod),
|
|
75
|
-
// Make sure to check that the deleter gets called.
|
|
76
|
-
InstanceMethod(Napi::Symbol::New(env, "instanceVoidMethod"),
|
|
77
|
-
&TestClass::TestClassInstanceVoidMethod),
|
|
78
|
-
// Make sure to check that the deleter gets called.
|
|
79
|
-
InstanceAccessor("instanceAccessor",
|
|
80
|
-
&TestClass::TestClassInstanceGetter,
|
|
81
|
-
&TestClass::TestClassInstanceSetter)
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
static Napi::Value CreateTestObject(const Napi::CallbackInfo& info) {
|
|
87
|
-
Napi::Env env = info.Env();
|
|
88
|
-
Napi::Object item = Napi::Object::New(env);
|
|
89
|
-
|
|
90
|
-
// Make sure to check that the deleter gets called.
|
|
91
|
-
item["testMethod"] = Napi::Function::New(env, TestMethod, "testMethod");
|
|
92
|
-
|
|
93
|
-
item.DefineProperties({
|
|
94
|
-
// Make sure to check that the deleter gets called.
|
|
95
|
-
Napi::PropertyDescriptor::Accessor(env,
|
|
96
|
-
item,
|
|
97
|
-
"accessor_1",
|
|
98
|
-
TestGetter),
|
|
99
|
-
// Make sure to check that the deleter gets called.
|
|
100
|
-
Napi::PropertyDescriptor::Accessor(env,
|
|
101
|
-
item,
|
|
102
|
-
std::string("accessor_1_std_string"),
|
|
103
|
-
TestGetter),
|
|
104
|
-
// Make sure to check that the deleter gets called.
|
|
105
|
-
Napi::PropertyDescriptor::Accessor(env,
|
|
106
|
-
item,
|
|
107
|
-
Napi::String::New(info.Env(),
|
|
108
|
-
"accessor_1_js_string"),
|
|
109
|
-
TestGetter),
|
|
110
|
-
// Make sure to check that the deleter gets called.
|
|
111
|
-
Napi::PropertyDescriptor::Accessor(env,
|
|
112
|
-
item,
|
|
113
|
-
"accessor_2",
|
|
114
|
-
TestGetter,
|
|
115
|
-
TestSetter),
|
|
116
|
-
// Make sure to check that the deleter gets called.
|
|
117
|
-
Napi::PropertyDescriptor::Accessor(env,
|
|
118
|
-
item,
|
|
119
|
-
std::string("accessor_2_std_string"),
|
|
120
|
-
TestGetter,
|
|
121
|
-
TestSetter),
|
|
122
|
-
// Make sure to check that the deleter gets called.
|
|
123
|
-
Napi::PropertyDescriptor::Accessor(env,
|
|
124
|
-
item,
|
|
125
|
-
Napi::String::New(env,
|
|
126
|
-
"accessor_2_js_string"),
|
|
127
|
-
TestGetter,
|
|
128
|
-
TestSetter),
|
|
129
|
-
Napi::PropertyDescriptor::Value("TestClass", TestClass::NewClass(env)),
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
return item;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
Napi::Object InitThunkingManual(Napi::Env env) {
|
|
136
|
-
Napi::Object exports = Napi::Object::New(env);
|
|
137
|
-
exports["createTestObject"] =
|
|
138
|
-
Napi::Function::New(env, CreateTestObject, "createTestObject");
|
|
139
|
-
return exports;
|
|
140
|
-
}
|
|
1
|
+
#include <napi.h>
|
|
2
|
+
|
|
3
|
+
// The formulaic comment below should accompany any code that results in an
|
|
4
|
+
// internal piece of heap data getting created, because each such piece of heap
|
|
5
|
+
// data must be attached to an object by way of a deleter which gets called when
|
|
6
|
+
// the object gets garbage-collected.
|
|
7
|
+
//
|
|
8
|
+
// At the very least, you can add a fprintf(stderr, ...) to the deleter in
|
|
9
|
+
// napi-inl.h and then count the number of times the deleter prints by running
|
|
10
|
+
// node --expose-gc test/thunking_manual.js and counting the number of prints
|
|
11
|
+
// between the two rows of dashes. That number should coincide with the number
|
|
12
|
+
// of formulaic comments below.
|
|
13
|
+
//
|
|
14
|
+
// Note that currently this result can only be achieved with node-chakracore,
|
|
15
|
+
// because V8 does not garbage-collect classes.
|
|
16
|
+
|
|
17
|
+
static Napi::Value TestMethod(const Napi::CallbackInfo& /*info*/) {
|
|
18
|
+
return Napi::Value();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static Napi::Value TestGetter(const Napi::CallbackInfo& /*info*/) {
|
|
22
|
+
return Napi::Value();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static void TestSetter(const Napi::CallbackInfo& /*info*/) {
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
class TestClass : public Napi::ObjectWrap<TestClass> {
|
|
29
|
+
public:
|
|
30
|
+
TestClass(const Napi::CallbackInfo& info):
|
|
31
|
+
ObjectWrap<TestClass>(info) {
|
|
32
|
+
}
|
|
33
|
+
static Napi::Value TestClassStaticMethod(const Napi::CallbackInfo& info) {
|
|
34
|
+
return Napi::Number::New(info.Env(), 42);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static void TestClassStaticVoidMethod(const Napi::CallbackInfo& /*info*/) {
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
Napi::Value TestClassInstanceMethod(const Napi::CallbackInfo& info) {
|
|
41
|
+
return Napi::Number::New(info.Env(), 42);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
void TestClassInstanceVoidMethod(const Napi::CallbackInfo& /*info*/) {
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
Napi::Value TestClassInstanceGetter(const Napi::CallbackInfo& info) {
|
|
48
|
+
return Napi::Number::New(info.Env(), 42);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
void TestClassInstanceSetter(const Napi::CallbackInfo& /*info*/,
|
|
52
|
+
const Napi::Value& /*new_value*/) {
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
static Napi::Function NewClass(Napi::Env env) {
|
|
56
|
+
return DefineClass(env, "TestClass", {
|
|
57
|
+
// Make sure to check that the deleter gets called.
|
|
58
|
+
StaticMethod("staticMethod", TestClassStaticMethod),
|
|
59
|
+
// Make sure to check that the deleter gets called.
|
|
60
|
+
StaticMethod("staticVoidMethod", TestClassStaticVoidMethod),
|
|
61
|
+
// Make sure to check that the deleter gets called.
|
|
62
|
+
StaticMethod(Napi::Symbol::New(env, "staticMethod"),
|
|
63
|
+
TestClassStaticMethod),
|
|
64
|
+
// Make sure to check that the deleter gets called.
|
|
65
|
+
StaticMethod(Napi::Symbol::New(env, "staticVoidMethod"),
|
|
66
|
+
TestClassStaticVoidMethod),
|
|
67
|
+
// Make sure to check that the deleter gets called.
|
|
68
|
+
InstanceMethod("instanceMethod", &TestClass::TestClassInstanceMethod),
|
|
69
|
+
// Make sure to check that the deleter gets called.
|
|
70
|
+
InstanceMethod("instanceVoidMethod",
|
|
71
|
+
&TestClass::TestClassInstanceVoidMethod),
|
|
72
|
+
// Make sure to check that the deleter gets called.
|
|
73
|
+
InstanceMethod(Napi::Symbol::New(env, "instanceMethod"),
|
|
74
|
+
&TestClass::TestClassInstanceMethod),
|
|
75
|
+
// Make sure to check that the deleter gets called.
|
|
76
|
+
InstanceMethod(Napi::Symbol::New(env, "instanceVoidMethod"),
|
|
77
|
+
&TestClass::TestClassInstanceVoidMethod),
|
|
78
|
+
// Make sure to check that the deleter gets called.
|
|
79
|
+
InstanceAccessor("instanceAccessor",
|
|
80
|
+
&TestClass::TestClassInstanceGetter,
|
|
81
|
+
&TestClass::TestClassInstanceSetter)
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
static Napi::Value CreateTestObject(const Napi::CallbackInfo& info) {
|
|
87
|
+
Napi::Env env = info.Env();
|
|
88
|
+
Napi::Object item = Napi::Object::New(env);
|
|
89
|
+
|
|
90
|
+
// Make sure to check that the deleter gets called.
|
|
91
|
+
item["testMethod"] = Napi::Function::New(env, TestMethod, "testMethod");
|
|
92
|
+
|
|
93
|
+
item.DefineProperties({
|
|
94
|
+
// Make sure to check that the deleter gets called.
|
|
95
|
+
Napi::PropertyDescriptor::Accessor(env,
|
|
96
|
+
item,
|
|
97
|
+
"accessor_1",
|
|
98
|
+
TestGetter),
|
|
99
|
+
// Make sure to check that the deleter gets called.
|
|
100
|
+
Napi::PropertyDescriptor::Accessor(env,
|
|
101
|
+
item,
|
|
102
|
+
std::string("accessor_1_std_string"),
|
|
103
|
+
TestGetter),
|
|
104
|
+
// Make sure to check that the deleter gets called.
|
|
105
|
+
Napi::PropertyDescriptor::Accessor(env,
|
|
106
|
+
item,
|
|
107
|
+
Napi::String::New(info.Env(),
|
|
108
|
+
"accessor_1_js_string"),
|
|
109
|
+
TestGetter),
|
|
110
|
+
// Make sure to check that the deleter gets called.
|
|
111
|
+
Napi::PropertyDescriptor::Accessor(env,
|
|
112
|
+
item,
|
|
113
|
+
"accessor_2",
|
|
114
|
+
TestGetter,
|
|
115
|
+
TestSetter),
|
|
116
|
+
// Make sure to check that the deleter gets called.
|
|
117
|
+
Napi::PropertyDescriptor::Accessor(env,
|
|
118
|
+
item,
|
|
119
|
+
std::string("accessor_2_std_string"),
|
|
120
|
+
TestGetter,
|
|
121
|
+
TestSetter),
|
|
122
|
+
// Make sure to check that the deleter gets called.
|
|
123
|
+
Napi::PropertyDescriptor::Accessor(env,
|
|
124
|
+
item,
|
|
125
|
+
Napi::String::New(env,
|
|
126
|
+
"accessor_2_js_string"),
|
|
127
|
+
TestGetter,
|
|
128
|
+
TestSetter),
|
|
129
|
+
Napi::PropertyDescriptor::Value("TestClass", TestClass::NewClass(env)),
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
return item;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
Napi::Object InitThunkingManual(Napi::Env env) {
|
|
136
|
+
Napi::Object exports = Napi::Object::New(env);
|
|
137
|
+
exports["createTestObject"] =
|
|
138
|
+
Napi::Function::New(env, CreateTestObject, "createTestObject");
|
|
139
|
+
return exports;
|
|
140
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
// Flags: --expose-gc
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
const assert = require('assert');
|
|
5
|
-
|
|
6
|
-
module.exports = require('./common').runTest(test);
|
|
7
|
-
|
|
8
|
-
function test(binding) {
|
|
9
|
-
console.log("Thunking: Performing initial GC");
|
|
10
|
-
global.gc();
|
|
11
|
-
console.log("Thunking: Creating test object");
|
|
12
|
-
let object = binding.thunking_manual.createTestObject();
|
|
13
|
-
object = null;
|
|
14
|
-
console.log("Thunking: About to GC\n--------");
|
|
15
|
-
global.gc();
|
|
16
|
-
console.log("--------\nThunking: GC complete");
|
|
17
|
-
}
|
|
1
|
+
// Flags: --expose-gc
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const assert = require('assert');
|
|
5
|
+
|
|
6
|
+
module.exports = require('./common').runTest(test);
|
|
7
|
+
|
|
8
|
+
function test(binding) {
|
|
9
|
+
console.log("Thunking: Performing initial GC");
|
|
10
|
+
global.gc();
|
|
11
|
+
console.log("Thunking: Creating test object");
|
|
12
|
+
let object = binding.thunking_manual.createTestObject();
|
|
13
|
+
object = null;
|
|
14
|
+
console.log("Thunking: About to GC\n--------");
|
|
15
|
+
global.gc();
|
|
16
|
+
console.log("--------\nThunking: GC complete");
|
|
17
|
+
}
|