koffi 0.9.2 → 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
- package/build/ALL_BUILD.vcxproj +0 -186
- package/build/ALL_BUILD.vcxproj.filters +0 -8
- package/build/CMakeCache.txt +0 -417
- package/build/CMakeFiles/3.23.0-rc1/CMakeASMCompiler.cmake +0 -20
- package/build/CMakeFiles/3.23.0-rc1/CMakeASM_MASMCompiler.cmake +0 -20
- package/build/CMakeFiles/3.23.0-rc1/CMakeCCompiler.cmake +0 -72
- package/build/CMakeFiles/3.23.0-rc1/CMakeCXXCompiler.cmake +0 -83
- package/build/CMakeFiles/3.23.0-rc1/CMakeDetermineCompilerABI_C.bin +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CMakeRCCompiler.cmake +0 -6
- package/build/CMakeFiles/3.23.0-rc1/CMakeSystem.cmake +0 -15
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/CMakeCCompilerId.c +0 -828
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/CompilerIdC.exe +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/CompilerIdC.vcxproj +0 -71
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CMakeCCompilerId.obj +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.exe.recipe +0 -11
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/CL.command.1.tlog +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/CL.read.1.tlog +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/CL.write.1.tlog +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/CompilerIdC.lastbuildstate +0 -2
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/link.command.1.tlog +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/link.read.1.tlog +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/link.write.1.tlog +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/CMakeCXXCompilerId.cpp +0 -816
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/CompilerIdCXX.exe +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/CompilerIdCXX.vcxproj +0 -71
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CMakeCXXCompilerId.obj +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.exe.recipe +0 -11
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.command.1.tlog +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.read.1.tlog +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.write.1.tlog +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CompilerIdCXX.lastbuildstate +0 -2
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.command.1.tlog +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.read.1.tlog +0 -0
- package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.write.1.tlog +0 -0
- package/build/CMakeFiles/3.23.0-rc1/VCTargetsPath.txt +0 -1
- package/build/CMakeFiles/3.23.0-rc1/VCTargetsPath.vcxproj +0 -31
- package/build/CMakeFiles/3.23.0-rc1/x64/Debug/VCTargetsPath.recipe +0 -11
- package/build/CMakeFiles/3.23.0-rc1/x64/Debug/VCTargetsPath.tlog/VCTargetsPath.lastbuildstate +0 -2
- package/build/CMakeFiles/41bcd16856091d4a38fd1f71fbe2f202/generate.stamp.rule +0 -1
- package/build/CMakeFiles/CMakeError.log +0 -108
- package/build/CMakeFiles/CMakeOutput.log +0 -413
- package/build/CMakeFiles/TargetDirectories.txt +0 -3
- package/build/CMakeFiles/cmake.check_cache +0 -1
- package/build/CMakeFiles/generate.stamp +0 -1
- package/build/CMakeFiles/generate.stamp.depend +0 -109
- package/build/CMakeFiles/generate.stamp.list +0 -1
- package/build/Release/koffi.exp +0 -0
- package/build/Release/koffi.lib +0 -0
- package/build/Release/koffi.node +0 -0
- package/build/ZERO_CHECK.vcxproj +0 -176
- package/build/ZERO_CHECK.vcxproj.filters +0 -13
- package/build/cmake_install.cmake +0 -44
- package/build/koffi.dir/Release/call_arm64.obj +0 -0
- package/build/koffi.dir/Release/call_x64_sysv.obj +0 -0
- package/build/koffi.dir/Release/call_x64_win.obj +0 -0
- package/build/koffi.dir/Release/call_x64_win_fwd.obj +0 -0
- package/build/koffi.dir/Release/call_x86.obj +0 -0
- package/build/koffi.dir/Release/ffi.obj +0 -0
- package/build/koffi.dir/Release/koffi.node.recipe +0 -14
- package/build/koffi.dir/Release/koffi.tlog/CL.command.1.tlog +0 -0
- package/build/koffi.dir/Release/koffi.tlog/CL.read.1.tlog +0 -0
- package/build/koffi.dir/Release/koffi.tlog/CL.write.1.tlog +0 -0
- package/build/koffi.dir/Release/koffi.tlog/CustomBuild.command.1.tlog +0 -10
- package/build/koffi.dir/Release/koffi.tlog/CustomBuild.read.1.tlog +0 -108
- package/build/koffi.dir/Release/koffi.tlog/CustomBuild.write.1.tlog +0 -2
- package/build/koffi.dir/Release/koffi.tlog/Masm.read.1u.tlog +0 -0
- package/build/koffi.dir/Release/koffi.tlog/Masm.write.1u.tlog +0 -0
- package/build/koffi.dir/Release/koffi.tlog/koffi.lastbuildstate +0 -2
- package/build/koffi.dir/Release/koffi.tlog/koffi.write.1u.tlog +0 -0
- package/build/koffi.dir/Release/koffi.tlog/link.command.1.tlog +0 -0
- package/build/koffi.dir/Release/koffi.tlog/link.read.1.tlog +0 -0
- package/build/koffi.dir/Release/koffi.tlog/link.write.1.tlog +0 -0
- package/build/koffi.dir/Release/libcc.obj +0 -0
- package/build/koffi.dir/Release/util.obj +0 -0
- package/build/koffi.dir/Release/win_delay_load_hook.obj +0 -0
- package/build/koffi.sln +0 -53
- package/build/koffi.vcxproj +0 -363
- package/build/koffi.vcxproj.filters +0 -40
- package/build/x64/Release/ALL_BUILD/ALL_BUILD.recipe +0 -17
- package/build/x64/Release/ALL_BUILD/ALL_BUILD.tlog/ALL_BUILD.lastbuildstate +0 -2
- package/build/x64/Release/ALL_BUILD/ALL_BUILD.tlog/CustomBuild.command.1.tlog +0 -10
- package/build/x64/Release/ALL_BUILD/ALL_BUILD.tlog/CustomBuild.read.1.tlog +0 -108
- package/build/x64/Release/ALL_BUILD/ALL_BUILD.tlog/CustomBuild.write.1.tlog +0 -2
- package/build/x64/Release/ZERO_CHECK/ZERO_CHECK.recipe +0 -11
- package/build/x64/Release/ZERO_CHECK/ZERO_CHECK.tlog/CustomBuild.command.1.tlog +0 -10
- package/build/x64/Release/ZERO_CHECK/ZERO_CHECK.tlog/CustomBuild.read.1.tlog +0 -109
- package/build/x64/Release/ZERO_CHECK/ZERO_CHECK.tlog/CustomBuild.write.1.tlog +0 -2
- package/build/x64/Release/ZERO_CHECK/ZERO_CHECK.tlog/ZERO_CHECK.lastbuildstate +0 -2
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
|
|
5
|
-
module.exports = require('./common').runTest(test);
|
|
6
|
-
|
|
7
|
-
function parseVersion() {
|
|
8
|
-
const expected = {};
|
|
9
|
-
expected.napi = parseInt(process.versions.napi);
|
|
10
|
-
expected.release = process.release.name;
|
|
11
|
-
const nodeVersion = process.versions.node.split('.');
|
|
12
|
-
expected.major = parseInt(nodeVersion[0]);
|
|
13
|
-
expected.minor = parseInt(nodeVersion[1]);
|
|
14
|
-
expected.patch = parseInt(nodeVersion[2]);
|
|
15
|
-
return expected;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function test(binding) {
|
|
19
|
-
|
|
20
|
-
const expected = parseVersion();
|
|
21
|
-
|
|
22
|
-
const napiVersion = binding.version_management.getNapiVersion();
|
|
23
|
-
assert.strictEqual(napiVersion, expected.napi);
|
|
24
|
-
|
|
25
|
-
const nodeVersion = binding.version_management.getNodeVersion();
|
|
26
|
-
assert.strictEqual(nodeVersion.major, expected.major);
|
|
27
|
-
assert.strictEqual(nodeVersion.minor, expected.minor);
|
|
28
|
-
assert.strictEqual(nodeVersion.patch, expected.patch);
|
|
29
|
-
assert.strictEqual(nodeVersion.release, expected.release);
|
|
30
|
-
|
|
31
|
-
}
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const assert = require('assert');
|
|
4
|
+
|
|
5
|
+
module.exports = require('./common').runTest(test);
|
|
6
|
+
|
|
7
|
+
function parseVersion() {
|
|
8
|
+
const expected = {};
|
|
9
|
+
expected.napi = parseInt(process.versions.napi);
|
|
10
|
+
expected.release = process.release.name;
|
|
11
|
+
const nodeVersion = process.versions.node.split('.');
|
|
12
|
+
expected.major = parseInt(nodeVersion[0]);
|
|
13
|
+
expected.minor = parseInt(nodeVersion[1]);
|
|
14
|
+
expected.patch = parseInt(nodeVersion[2]);
|
|
15
|
+
return expected;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function test(binding) {
|
|
19
|
+
|
|
20
|
+
const expected = parseVersion();
|
|
21
|
+
|
|
22
|
+
const napiVersion = binding.version_management.getNapiVersion();
|
|
23
|
+
assert.strictEqual(napiVersion, expected.napi);
|
|
24
|
+
|
|
25
|
+
const nodeVersion = binding.version_management.getNodeVersion();
|
|
26
|
+
assert.strictEqual(nodeVersion.major, expected.major);
|
|
27
|
+
assert.strictEqual(nodeVersion.minor, expected.minor);
|
|
28
|
+
assert.strictEqual(nodeVersion.patch, expected.patch);
|
|
29
|
+
assert.strictEqual(nodeVersion.release, expected.release);
|
|
30
|
+
|
|
31
|
+
}
|
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
# Tools
|
|
2
|
-
|
|
3
|
-
## clang-format
|
|
4
|
-
|
|
5
|
-
The clang-format checking tools is designed to check changed lines of code compared to given git-refs.
|
|
6
|
-
|
|
7
|
-
## Migration Script
|
|
8
|
-
|
|
9
|
-
The migration tool is designed to reduce repetitive work in the migration process. However, the script is not aiming to convert every thing for you. There are usually some small fixes and major reconstruction required.
|
|
10
|
-
|
|
11
|
-
### How To Use
|
|
12
|
-
|
|
13
|
-
To run the conversion script, first make sure you have the latest `node-addon-api` in your `node_modules` directory.
|
|
14
|
-
```
|
|
15
|
-
npm install node-addon-api
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Then run the script passing your project directory
|
|
19
|
-
```
|
|
20
|
-
node ./node_modules/node-addon-api/tools/conversion.js ./
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
After finish, recompile and debug things that are missed by the script.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
### Quick Fixes
|
|
27
|
-
Here is the list of things that can be fixed easily.
|
|
28
|
-
1. Change your methods' return value to void if it doesn't return value to JavaScript.
|
|
29
|
-
2. Use `.` to access attribute or to invoke member function in Napi::Object instead of `->`.
|
|
30
|
-
3. `Napi::New(env, value);` to `Napi::[Type]::New(env, value);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
### Major Reconstructions
|
|
34
|
-
The implementation of `Napi::ObjectWrap` is significantly different from NAN's. `Napi::ObjectWrap` takes a pointer to the wrapped object and creates a reference to the wrapped object inside ObjectWrap constructor. `Napi::ObjectWrap` also associates wrapped object's instance methods to Javascript module instead of static methods like NAN.
|
|
35
|
-
|
|
36
|
-
So if you use Nan::ObjectWrap in your module, you will need to execute the following steps.
|
|
37
|
-
|
|
38
|
-
1. Convert your [ClassName]::New function to a constructor function that takes a `Napi::CallbackInfo`. Declare it as
|
|
39
|
-
```
|
|
40
|
-
[ClassName](const Napi::CallbackInfo& info);
|
|
41
|
-
```
|
|
42
|
-
and define it as
|
|
43
|
-
```
|
|
44
|
-
[ClassName]::[ClassName](const Napi::CallbackInfo& info) : Napi::ObjectWrap<[ClassName]>(info){
|
|
45
|
-
...
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
This way, the `Napi::ObjectWrap` constructor will be invoked after the object has been instantiated and `Napi::ObjectWrap` can use the `this` pointer to create a reference to the wrapped object.
|
|
49
|
-
|
|
50
|
-
2. Move your original constructor code into the new constructor. Delete your original constructor.
|
|
51
|
-
3. In your class initialization function, associate native methods in the following way.
|
|
52
|
-
```
|
|
53
|
-
Napi::FunctionReference constructor;
|
|
54
|
-
|
|
55
|
-
void [ClassName]::Init(Napi::Env env, Napi::Object exports, Napi::Object module) {
|
|
56
|
-
Napi::HandleScope scope(env);
|
|
57
|
-
Napi::Function ctor = DefineClass(env, "Canvas", {
|
|
58
|
-
InstanceMethod<&[ClassName]::Func1>("Func1"),
|
|
59
|
-
InstanceMethod<&[ClassName]::Func2>("Func2"),
|
|
60
|
-
InstanceAccessor<&[ClassName]::ValueGetter>("Value"),
|
|
61
|
-
StaticMethod<&[ClassName]::StaticMethod>("MethodName"),
|
|
62
|
-
InstanceValue("Value", Napi::[Type]::New(env, value)),
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
constructor = Napi::Persistent(ctor);
|
|
66
|
-
constructor .SuppressDestruct();
|
|
67
|
-
exports.Set("[ClassName]", ctor);
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
4. In function where you need to Unwrap the ObjectWrap in NAN like `[ClassName]* native = Nan::ObjectWrap::Unwrap<[ClassName]>(info.This());`, use `this` pointer directly as the unwrapped object as each ObjectWrap instance is associated with a unique object instance.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
If you still find issues after following this guide, please leave us an issue describing your problem and we will try to resolve it.
|
|
1
|
+
# Tools
|
|
2
|
+
|
|
3
|
+
## clang-format
|
|
4
|
+
|
|
5
|
+
The clang-format checking tools is designed to check changed lines of code compared to given git-refs.
|
|
6
|
+
|
|
7
|
+
## Migration Script
|
|
8
|
+
|
|
9
|
+
The migration tool is designed to reduce repetitive work in the migration process. However, the script is not aiming to convert every thing for you. There are usually some small fixes and major reconstruction required.
|
|
10
|
+
|
|
11
|
+
### How To Use
|
|
12
|
+
|
|
13
|
+
To run the conversion script, first make sure you have the latest `node-addon-api` in your `node_modules` directory.
|
|
14
|
+
```
|
|
15
|
+
npm install node-addon-api
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Then run the script passing your project directory
|
|
19
|
+
```
|
|
20
|
+
node ./node_modules/node-addon-api/tools/conversion.js ./
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
After finish, recompile and debug things that are missed by the script.
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Quick Fixes
|
|
27
|
+
Here is the list of things that can be fixed easily.
|
|
28
|
+
1. Change your methods' return value to void if it doesn't return value to JavaScript.
|
|
29
|
+
2. Use `.` to access attribute or to invoke member function in Napi::Object instead of `->`.
|
|
30
|
+
3. `Napi::New(env, value);` to `Napi::[Type]::New(env, value);
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Major Reconstructions
|
|
34
|
+
The implementation of `Napi::ObjectWrap` is significantly different from NAN's. `Napi::ObjectWrap` takes a pointer to the wrapped object and creates a reference to the wrapped object inside ObjectWrap constructor. `Napi::ObjectWrap` also associates wrapped object's instance methods to Javascript module instead of static methods like NAN.
|
|
35
|
+
|
|
36
|
+
So if you use Nan::ObjectWrap in your module, you will need to execute the following steps.
|
|
37
|
+
|
|
38
|
+
1. Convert your [ClassName]::New function to a constructor function that takes a `Napi::CallbackInfo`. Declare it as
|
|
39
|
+
```
|
|
40
|
+
[ClassName](const Napi::CallbackInfo& info);
|
|
41
|
+
```
|
|
42
|
+
and define it as
|
|
43
|
+
```
|
|
44
|
+
[ClassName]::[ClassName](const Napi::CallbackInfo& info) : Napi::ObjectWrap<[ClassName]>(info){
|
|
45
|
+
...
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
This way, the `Napi::ObjectWrap` constructor will be invoked after the object has been instantiated and `Napi::ObjectWrap` can use the `this` pointer to create a reference to the wrapped object.
|
|
49
|
+
|
|
50
|
+
2. Move your original constructor code into the new constructor. Delete your original constructor.
|
|
51
|
+
3. In your class initialization function, associate native methods in the following way.
|
|
52
|
+
```
|
|
53
|
+
Napi::FunctionReference constructor;
|
|
54
|
+
|
|
55
|
+
void [ClassName]::Init(Napi::Env env, Napi::Object exports, Napi::Object module) {
|
|
56
|
+
Napi::HandleScope scope(env);
|
|
57
|
+
Napi::Function ctor = DefineClass(env, "Canvas", {
|
|
58
|
+
InstanceMethod<&[ClassName]::Func1>("Func1"),
|
|
59
|
+
InstanceMethod<&[ClassName]::Func2>("Func2"),
|
|
60
|
+
InstanceAccessor<&[ClassName]::ValueGetter>("Value"),
|
|
61
|
+
StaticMethod<&[ClassName]::StaticMethod>("MethodName"),
|
|
62
|
+
InstanceValue("Value", Napi::[Type]::New(env, value)),
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
constructor = Napi::Persistent(ctor);
|
|
66
|
+
constructor .SuppressDestruct();
|
|
67
|
+
exports.Set("[ClassName]", ctor);
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
4. In function where you need to Unwrap the ObjectWrap in NAN like `[ClassName]* native = Nan::ObjectWrap::Unwrap<[ClassName]>(info.This());`, use `this` pointer directly as the unwrapped object as each ObjectWrap instance is associated with a unique object instance.
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
If you still find issues after following this guide, please leave us an issue describing your problem and we will try to resolve it.
|
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
// Descend into a directory structure and, for each file matching *.node, output
|
|
3
|
-
// based on the imports found in the file whether it's an N-API module or not.
|
|
4
|
-
|
|
5
|
-
const fs = require('fs');
|
|
6
|
-
const path = require('path');
|
|
7
|
-
const child_process = require('child_process');
|
|
8
|
-
|
|
9
|
-
// Read the output of the command, break it into lines, and use the reducer to
|
|
10
|
-
// decide whether the file is an N-API module or not.
|
|
11
|
-
function checkFile(file, command, argv, reducer) {
|
|
12
|
-
const child = child_process.spawn(command, argv, {
|
|
13
|
-
stdio: ['inherit', 'pipe', 'inherit']
|
|
14
|
-
});
|
|
15
|
-
let leftover = '';
|
|
16
|
-
let isNapi = undefined;
|
|
17
|
-
child.stdout.on('data', (chunk) => {
|
|
18
|
-
if (isNapi === undefined) {
|
|
19
|
-
chunk = (leftover + chunk.toString()).split(/[\r\n]+/);
|
|
20
|
-
leftover = chunk.pop();
|
|
21
|
-
isNapi = chunk.reduce(reducer, isNapi);
|
|
22
|
-
if (isNapi !== undefined) {
|
|
23
|
-
child.kill();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
child.on('close', (code, signal) => {
|
|
28
|
-
if ((code === null && signal !== null) || (code !== 0)) {
|
|
29
|
-
console.log(
|
|
30
|
-
command + ' exited with code: ' + code + ' and signal: ' + signal);
|
|
31
|
-
} else {
|
|
32
|
-
// Green if it's a N-API module, red otherwise.
|
|
33
|
-
console.log(
|
|
34
|
-
'\x1b[' + (isNapi ? '42' : '41') + 'm' +
|
|
35
|
-
(isNapi ? ' N-API' : 'Not N-API') +
|
|
36
|
-
'\x1b[0m: ' + file);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Use nm -a to list symbols.
|
|
42
|
-
function checkFileUNIX(file) {
|
|
43
|
-
checkFile(file, 'nm', ['-a', file], (soFar, line) => {
|
|
44
|
-
if (soFar === undefined) {
|
|
45
|
-
line = line.match(/([0-9a-f]*)? ([a-zA-Z]) (.*$)/);
|
|
46
|
-
if (line[2] === 'U') {
|
|
47
|
-
if (/^napi/.test(line[3])) {
|
|
48
|
-
soFar = true;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return soFar;
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Use dumpbin /imports to list symbols.
|
|
57
|
-
function checkFileWin32(file) {
|
|
58
|
-
checkFile(file, 'dumpbin', ['/imports', file], (soFar, line) => {
|
|
59
|
-
if (soFar === undefined) {
|
|
60
|
-
line = line.match(/([0-9a-f]*)? +([a-zA-Z0-9]) (.*$)/);
|
|
61
|
-
if (line && /^napi/.test(line[line.length - 1])) {
|
|
62
|
-
soFar = true;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return soFar;
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// Descend into a directory structure and pass each file ending in '.node' to
|
|
70
|
-
// one of the above checks, depending on the OS.
|
|
71
|
-
function recurse(top) {
|
|
72
|
-
fs.readdir(top, (error, items) => {
|
|
73
|
-
if (error) {
|
|
74
|
-
throw ("error reading directory " + top + ": " + error);
|
|
75
|
-
}
|
|
76
|
-
items.forEach((item) => {
|
|
77
|
-
item = path.join(top, item);
|
|
78
|
-
fs.stat(item, ((item) => (error, stats) => {
|
|
79
|
-
if (error) {
|
|
80
|
-
throw ("error about " + item + ": " + error);
|
|
81
|
-
}
|
|
82
|
-
if (stats.isDirectory()) {
|
|
83
|
-
recurse(item);
|
|
84
|
-
} else if (/[.]node$/.test(item) &&
|
|
85
|
-
// Explicitly ignore files called 'nothing.node' because they are
|
|
86
|
-
// artefacts of node-addon-api having identified a version of
|
|
87
|
-
// Node.js that ships with a correct implementation of N-API.
|
|
88
|
-
path.basename(item) !== 'nothing.node') {
|
|
89
|
-
process.platform === 'win32' ?
|
|
90
|
-
checkFileWin32(item) :
|
|
91
|
-
checkFileUNIX(item);
|
|
92
|
-
}
|
|
93
|
-
})(item));
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
// Start with the directory given on the command line or the current directory
|
|
99
|
-
// if nothing was given.
|
|
100
|
-
recurse(process.argv.length > 3 ? process.argv[2] : '.');
|
|
1
|
+
'use strict';
|
|
2
|
+
// Descend into a directory structure and, for each file matching *.node, output
|
|
3
|
+
// based on the imports found in the file whether it's an N-API module or not.
|
|
4
|
+
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
const child_process = require('child_process');
|
|
8
|
+
|
|
9
|
+
// Read the output of the command, break it into lines, and use the reducer to
|
|
10
|
+
// decide whether the file is an N-API module or not.
|
|
11
|
+
function checkFile(file, command, argv, reducer) {
|
|
12
|
+
const child = child_process.spawn(command, argv, {
|
|
13
|
+
stdio: ['inherit', 'pipe', 'inherit']
|
|
14
|
+
});
|
|
15
|
+
let leftover = '';
|
|
16
|
+
let isNapi = undefined;
|
|
17
|
+
child.stdout.on('data', (chunk) => {
|
|
18
|
+
if (isNapi === undefined) {
|
|
19
|
+
chunk = (leftover + chunk.toString()).split(/[\r\n]+/);
|
|
20
|
+
leftover = chunk.pop();
|
|
21
|
+
isNapi = chunk.reduce(reducer, isNapi);
|
|
22
|
+
if (isNapi !== undefined) {
|
|
23
|
+
child.kill();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
child.on('close', (code, signal) => {
|
|
28
|
+
if ((code === null && signal !== null) || (code !== 0)) {
|
|
29
|
+
console.log(
|
|
30
|
+
command + ' exited with code: ' + code + ' and signal: ' + signal);
|
|
31
|
+
} else {
|
|
32
|
+
// Green if it's a N-API module, red otherwise.
|
|
33
|
+
console.log(
|
|
34
|
+
'\x1b[' + (isNapi ? '42' : '41') + 'm' +
|
|
35
|
+
(isNapi ? ' N-API' : 'Not N-API') +
|
|
36
|
+
'\x1b[0m: ' + file);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Use nm -a to list symbols.
|
|
42
|
+
function checkFileUNIX(file) {
|
|
43
|
+
checkFile(file, 'nm', ['-a', file], (soFar, line) => {
|
|
44
|
+
if (soFar === undefined) {
|
|
45
|
+
line = line.match(/([0-9a-f]*)? ([a-zA-Z]) (.*$)/);
|
|
46
|
+
if (line[2] === 'U') {
|
|
47
|
+
if (/^napi/.test(line[3])) {
|
|
48
|
+
soFar = true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return soFar;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Use dumpbin /imports to list symbols.
|
|
57
|
+
function checkFileWin32(file) {
|
|
58
|
+
checkFile(file, 'dumpbin', ['/imports', file], (soFar, line) => {
|
|
59
|
+
if (soFar === undefined) {
|
|
60
|
+
line = line.match(/([0-9a-f]*)? +([a-zA-Z0-9]) (.*$)/);
|
|
61
|
+
if (line && /^napi/.test(line[line.length - 1])) {
|
|
62
|
+
soFar = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return soFar;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Descend into a directory structure and pass each file ending in '.node' to
|
|
70
|
+
// one of the above checks, depending on the OS.
|
|
71
|
+
function recurse(top) {
|
|
72
|
+
fs.readdir(top, (error, items) => {
|
|
73
|
+
if (error) {
|
|
74
|
+
throw ("error reading directory " + top + ": " + error);
|
|
75
|
+
}
|
|
76
|
+
items.forEach((item) => {
|
|
77
|
+
item = path.join(top, item);
|
|
78
|
+
fs.stat(item, ((item) => (error, stats) => {
|
|
79
|
+
if (error) {
|
|
80
|
+
throw ("error about " + item + ": " + error);
|
|
81
|
+
}
|
|
82
|
+
if (stats.isDirectory()) {
|
|
83
|
+
recurse(item);
|
|
84
|
+
} else if (/[.]node$/.test(item) &&
|
|
85
|
+
// Explicitly ignore files called 'nothing.node' because they are
|
|
86
|
+
// artefacts of node-addon-api having identified a version of
|
|
87
|
+
// Node.js that ships with a correct implementation of N-API.
|
|
88
|
+
path.basename(item) !== 'nothing.node') {
|
|
89
|
+
process.platform === 'win32' ?
|
|
90
|
+
checkFileWin32(item) :
|
|
91
|
+
checkFileUNIX(item);
|
|
92
|
+
}
|
|
93
|
+
})(item));
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Start with the directory given on the command line or the current directory
|
|
99
|
+
// if nothing was given.
|
|
100
|
+
recurse(process.argv.length > 3 ? process.argv[2] : '.');
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const spawn = require('child_process').spawnSync;
|
|
4
|
-
const path = require('path');
|
|
5
|
-
|
|
6
|
-
const filesToCheck = ['*.h', '*.cc'];
|
|
7
|
-
const FORMAT_START = process.env.FORMAT_START || 'main';
|
|
8
|
-
|
|
9
|
-
function main (args) {
|
|
10
|
-
let fix = false;
|
|
11
|
-
while (args.length > 0) {
|
|
12
|
-
switch (args[0]) {
|
|
13
|
-
case '-f':
|
|
14
|
-
case '--fix':
|
|
15
|
-
fix = true;
|
|
16
|
-
break;
|
|
17
|
-
default:
|
|
18
|
-
}
|
|
19
|
-
args.shift();
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const clangFormatPath = path.dirname(require.resolve('clang-format'));
|
|
23
|
-
const options = ['--binary=node_modules/.bin/clang-format', '--style=file'];
|
|
24
|
-
if (fix) {
|
|
25
|
-
options.push(FORMAT_START);
|
|
26
|
-
} else {
|
|
27
|
-
options.push('--diff', FORMAT_START);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const gitClangFormatPath = path.join(clangFormatPath, 'bin/git-clang-format');
|
|
31
|
-
const result = spawn(
|
|
32
|
-
'python',
|
|
33
|
-
[gitClangFormatPath, ...options, '--', ...filesToCheck],
|
|
34
|
-
{ encoding: 'utf-8' }
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
if (result.stderr) {
|
|
38
|
-
console.error('Error running git-clang-format:', result.stderr);
|
|
39
|
-
return 2;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const clangFormatOutput = result.stdout.trim();
|
|
43
|
-
// Bail fast if in fix mode.
|
|
44
|
-
if (fix) {
|
|
45
|
-
console.log(clangFormatOutput);
|
|
46
|
-
return 0;
|
|
47
|
-
}
|
|
48
|
-
// Detect if there is any complains from clang-format
|
|
49
|
-
if (
|
|
50
|
-
clangFormatOutput !== '' &&
|
|
51
|
-
clangFormatOutput !== 'no modified files to format' &&
|
|
52
|
-
clangFormatOutput !== 'clang-format did not modify any files'
|
|
53
|
-
) {
|
|
54
|
-
console.error(clangFormatOutput);
|
|
55
|
-
const fixCmd = 'npm run lint:fix';
|
|
56
|
-
console.error(`
|
|
57
|
-
ERROR: please run "${fixCmd}" to format changes in your commit
|
|
58
|
-
Note that when running the command locally, please keep your local
|
|
59
|
-
main branch and working branch up to date with nodejs/node-addon-api
|
|
60
|
-
to exclude un-related complains.
|
|
61
|
-
Or you can run "env FORMAT_START=upstream/main ${fixCmd}".`);
|
|
62
|
-
return 1;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (require.main === module) {
|
|
67
|
-
process.exitCode = main(process.argv.slice(2));
|
|
68
|
-
}
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const spawn = require('child_process').spawnSync;
|
|
4
|
+
const path = require('path');
|
|
5
|
+
|
|
6
|
+
const filesToCheck = ['*.h', '*.cc'];
|
|
7
|
+
const FORMAT_START = process.env.FORMAT_START || 'main';
|
|
8
|
+
|
|
9
|
+
function main (args) {
|
|
10
|
+
let fix = false;
|
|
11
|
+
while (args.length > 0) {
|
|
12
|
+
switch (args[0]) {
|
|
13
|
+
case '-f':
|
|
14
|
+
case '--fix':
|
|
15
|
+
fix = true;
|
|
16
|
+
break;
|
|
17
|
+
default:
|
|
18
|
+
}
|
|
19
|
+
args.shift();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const clangFormatPath = path.dirname(require.resolve('clang-format'));
|
|
23
|
+
const options = ['--binary=node_modules/.bin/clang-format', '--style=file'];
|
|
24
|
+
if (fix) {
|
|
25
|
+
options.push(FORMAT_START);
|
|
26
|
+
} else {
|
|
27
|
+
options.push('--diff', FORMAT_START);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const gitClangFormatPath = path.join(clangFormatPath, 'bin/git-clang-format');
|
|
31
|
+
const result = spawn(
|
|
32
|
+
'python',
|
|
33
|
+
[gitClangFormatPath, ...options, '--', ...filesToCheck],
|
|
34
|
+
{ encoding: 'utf-8' }
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
if (result.stderr) {
|
|
38
|
+
console.error('Error running git-clang-format:', result.stderr);
|
|
39
|
+
return 2;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const clangFormatOutput = result.stdout.trim();
|
|
43
|
+
// Bail fast if in fix mode.
|
|
44
|
+
if (fix) {
|
|
45
|
+
console.log(clangFormatOutput);
|
|
46
|
+
return 0;
|
|
47
|
+
}
|
|
48
|
+
// Detect if there is any complains from clang-format
|
|
49
|
+
if (
|
|
50
|
+
clangFormatOutput !== '' &&
|
|
51
|
+
clangFormatOutput !== 'no modified files to format' &&
|
|
52
|
+
clangFormatOutput !== 'clang-format did not modify any files'
|
|
53
|
+
) {
|
|
54
|
+
console.error(clangFormatOutput);
|
|
55
|
+
const fixCmd = 'npm run lint:fix';
|
|
56
|
+
console.error(`
|
|
57
|
+
ERROR: please run "${fixCmd}" to format changes in your commit
|
|
58
|
+
Note that when running the command locally, please keep your local
|
|
59
|
+
main branch and working branch up to date with nodejs/node-addon-api
|
|
60
|
+
to exclude un-related complains.
|
|
61
|
+
Or you can run "env FORMAT_START=upstream/main ${fixCmd}".`);
|
|
62
|
+
return 1;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (require.main === module) {
|
|
67
|
+
process.exitCode = main(process.argv.slice(2));
|
|
68
|
+
}
|