koffi 2.16.0-beta.2 → 2.16.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.
- package/CHANGELOG.md +59 -0
- package/build/koffi/darwin_arm64/koffi.node +0 -0
- package/build/koffi/darwin_x64/koffi.node +0 -0
- package/build/koffi/freebsd_arm64/koffi.node +0 -0
- package/build/koffi/freebsd_ia32/koffi.node +0 -0
- package/build/koffi/freebsd_x64/koffi.node +0 -0
- package/build/koffi/linux_arm64/koffi.node +0 -0
- package/build/koffi/linux_armhf/koffi.node +0 -0
- package/build/koffi/linux_ia32/koffi.node +0 -0
- package/build/koffi/linux_loong64/koffi.node +0 -0
- package/build/koffi/linux_riscv64d/koffi.node +0 -0
- package/build/koffi/linux_x64/koffi.node +0 -0
- package/build/koffi/musl_arm64/koffi.node +0 -0
- package/build/koffi/musl_x64/koffi.node +0 -0
- package/build/koffi/openbsd_ia32/koffi.node +0 -0
- package/build/koffi/openbsd_x64/koffi.node +0 -0
- package/build/koffi/win32_arm64/koffi.exp +0 -0
- package/build/koffi/win32_arm64/koffi.lib +0 -0
- package/build/koffi/win32_arm64/koffi.node +0 -0
- package/build/koffi/win32_ia32/koffi.exp +0 -0
- package/build/koffi/win32_ia32/koffi.lib +0 -0
- package/build/koffi/win32_ia32/koffi.node +0 -0
- package/build/koffi/win32_x64/koffi.exp +0 -0
- package/build/koffi/win32_x64/koffi.lib +0 -0
- package/build/koffi/win32_x64/koffi.node +0 -0
- package/index.d.ts +9 -11
- package/index.js +6 -9
- package/indirect.js +6 -9
- package/lib/native/base/base.cc +1 -6
- package/package.json +3 -3
- package/src/cnoke/assets/FindCNoke.cmake +27 -16
- package/src/cnoke/assets/toolchains.json +126 -0
- package/src/cnoke/cnoke.js +27 -33
- package/src/cnoke/src/builder.js +124 -63
- package/src/cnoke/src/tools.js +1 -5
- package/src/koffi/CMakeLists.txt +32 -21
- package/src/koffi/src/{abi/arm32.cc → abi_arm32.cc} +235 -238
- package/src/koffi/src/{abi/arm32_asm.S → abi_arm32_asm.S} +19 -15
- package/src/koffi/src/{abi/arm64.cc → abi_arm64.cc} +253 -274
- package/src/koffi/src/{abi/arm64_asm.S → abi_arm64_asm.S} +16 -10
- package/src/koffi/src/{abi/arm64_asm.asm → abi_arm64_asm.asm} +17 -10
- package/src/koffi/src/{abi/loong64_asm.S → abi_loong64_asm.S} +16 -10
- package/src/koffi/src/{abi/riscv64.cc → abi_riscv64.cc} +233 -236
- package/src/koffi/src/{abi/riscv64_asm.S → abi_riscv64_asm.S} +16 -10
- package/src/koffi/src/{abi/x64_sysv.cc → abi_x64_sysv.cc} +208 -212
- package/src/koffi/src/{abi/x64_sysv_asm.S → abi_x64_sysv_asm.S} +17 -10
- package/src/koffi/src/{abi/x64_win.cc → abi_x64_win.cc} +175 -206
- package/src/koffi/src/{abi/x64_win_asm.S → abi_x64_win_asm.S} +49 -27
- package/src/koffi/src/{abi/x64_win_asm.asm → abi_x64_win_asm.asm} +54 -27
- package/src/koffi/src/{abi/x86.cc → abi_x86.cc} +187 -226
- package/src/koffi/src/{abi/x86_asm.S → abi_x86_asm.S} +36 -21
- package/src/koffi/src/{abi/x86_asm.asm → abi_x86_asm.asm} +31 -16
- package/src/koffi/src/call.cc +473 -287
- package/src/koffi/src/call.hh +15 -18
- package/src/koffi/src/ffi.cc +167 -183
- package/src/koffi/src/ffi.hh +59 -13
- package/src/koffi/src/init.js +1 -0
- package/src/koffi/src/util.cc +113 -159
- package/src/koffi/src/util.hh +23 -74
- package/src/koffi/src/win32.cc +13 -0
- package/src/koffi/src/win32.hh +7 -0
- package/src/koffi/tools/write_trampolines.js +77 -0
- package/doc/README.md +0 -27
- package/doc/assets.ini +0 -24
- package/doc/build.sh +0 -9
- package/doc/develop.sh +0 -15
- package/doc/pages/404.md +0 -17
- package/doc/pages.ini +0 -86
- package/doc/static/highlight.js +0 -8
- package/doc/static/koffi.css +0 -11
- package/doc/static/koffi.png +0 -0
- package/doc/static/logo.webp +0 -0
- package/doc/static/perf_linux.png +0 -0
- package/doc/static/perf_windows.png +0 -0
- package/doc/static/print.css +0 -10
- package/doc/templates/code.html +0 -48
- package/doc/templates/page.html +0 -47
- package/src/koffi/cmake/raylib.cmake +0 -85
- package/src/koffi/cmake/sqlite3.cmake +0 -9
- package/src/koffi/examples/electron-builder/README.md +0 -11
- package/src/koffi/examples/electron-builder/package.json +0 -21
- package/src/koffi/examples/electron-builder/src/app.js +0 -20
- package/src/koffi/examples/electron-builder/src/index.html +0 -143
- package/src/koffi/examples/electron-builder/src/preload.js +0 -5
- package/src/koffi/examples/electron-forge/README.md +0 -25
- package/src/koffi/examples/electron-forge/forge.config.js +0 -63
- package/src/koffi/examples/electron-forge/package.json +0 -39
- package/src/koffi/examples/electron-forge/src/index.css +0 -7
- package/src/koffi/examples/electron-forge/src/index.html +0 -143
- package/src/koffi/examples/electron-forge/src/main.js +0 -52
- package/src/koffi/examples/electron-forge/src/preload.js +0 -5
- package/src/koffi/examples/electron-forge/src/renderer.js +0 -31
- package/src/koffi/examples/electron-forge/webpack.main.config.js +0 -11
- package/src/koffi/examples/electron-forge/webpack.renderer.config.js +0 -13
- package/src/koffi/examples/electron-forge/webpack.rules.js +0 -35
- package/src/koffi/examples/node-esbuild/README.md +0 -19
- package/src/koffi/examples/node-esbuild/index.js +0 -2
- package/src/koffi/examples/node-esbuild/package.json +0 -16
- package/src/koffi/examples/nwjs/README.md +0 -20
- package/src/koffi/examples/nwjs/package.json +0 -11
- package/src/koffi/examples/nwjs/src/index.html +0 -145
- package/src/koffi/examples/nwjs/src/package.json +0 -10
- package/src/koffi/examples/yao-pkg/README.md +0 -17
- package/src/koffi/examples/yao-pkg/index.js +0 -2
- package/src/koffi/examples/yao-pkg/package.json +0 -22
- package/src/koffi/src/primitives.inc +0 -39
- package/src/koffi/src/trampolines/armasm.inc +0 -32771
- package/src/koffi/src/trampolines/gnu.inc +0 -24577
- package/src/koffi/src/trampolines/masm32.inc +0 -32769
- package/src/koffi/src/trampolines/masm64.inc +0 -32769
- package/src/koffi/src/trampolines/prototypes.inc +0 -16388
- package/vendor/node-addon-api/CHANGELOG.md +0 -1272
- package/vendor/node-addon-api/CODE_OF_CONDUCT.md +0 -4
- package/vendor/node-addon-api/CONTRIBUTING.md +0 -203
- package/vendor/node-addon-api/appveyor.yml +0 -37
- package/vendor/node-addon-api/benchmark/README.md +0 -47
- package/vendor/node-addon-api/benchmark/binding.gyp +0 -25
- package/vendor/node-addon-api/benchmark/function_args.cc +0 -250
- package/vendor/node-addon-api/benchmark/function_args.js +0 -60
- package/vendor/node-addon-api/benchmark/index.js +0 -34
- package/vendor/node-addon-api/benchmark/property_descriptor.cc +0 -84
- package/vendor/node-addon-api/benchmark/property_descriptor.js +0 -38
- package/vendor/node-addon-api/common.gypi +0 -21
- package/vendor/node-addon-api/doc/README.md +0 -145
- package/vendor/node-addon-api/doc/addon.md +0 -163
- package/vendor/node-addon-api/doc/array.md +0 -81
- package/vendor/node-addon-api/doc/array_buffer.md +0 -165
- package/vendor/node-addon-api/doc/async_context.md +0 -86
- package/vendor/node-addon-api/doc/async_operations.md +0 -31
- package/vendor/node-addon-api/doc/async_worker.md +0 -428
- package/vendor/node-addon-api/doc/async_worker_variants.md +0 -578
- package/vendor/node-addon-api/doc/basic_env.md +0 -200
- package/vendor/node-addon-api/doc/bigint.md +0 -97
- package/vendor/node-addon-api/doc/boolean.md +0 -68
- package/vendor/node-addon-api/doc/buffer.md +0 -245
- package/vendor/node-addon-api/doc/callback_scope.md +0 -54
- package/vendor/node-addon-api/doc/callbackinfo.md +0 -97
- package/vendor/node-addon-api/doc/checker-tool.md +0 -32
- package/vendor/node-addon-api/doc/class_property_descriptor.md +0 -123
- package/vendor/node-addon-api/doc/cmake-js.md +0 -87
- package/vendor/node-addon-api/doc/contributing/creating_a_release.md +0 -95
- package/vendor/node-addon-api/doc/conversion-tool.md +0 -28
- package/vendor/node-addon-api/doc/dataview.md +0 -248
- package/vendor/node-addon-api/doc/date.md +0 -68
- package/vendor/node-addon-api/doc/env.md +0 -87
- package/vendor/node-addon-api/doc/error.md +0 -120
- package/vendor/node-addon-api/doc/error_handling.md +0 -266
- package/vendor/node-addon-api/doc/escapable_handle_scope.md +0 -80
- package/vendor/node-addon-api/doc/external.md +0 -79
- package/vendor/node-addon-api/doc/external_buffer.md +0 -18
- package/vendor/node-addon-api/doc/finalization.md +0 -153
- package/vendor/node-addon-api/doc/function.md +0 -402
- package/vendor/node-addon-api/doc/function_reference.md +0 -238
- package/vendor/node-addon-api/doc/generator.md +0 -13
- package/vendor/node-addon-api/doc/handle_scope.md +0 -77
- package/vendor/node-addon-api/doc/hierarchy.md +0 -95
- package/vendor/node-addon-api/doc/instance_wrap.md +0 -408
- package/vendor/node-addon-api/doc/maybe.md +0 -76
- package/vendor/node-addon-api/doc/memory_management.md +0 -27
- package/vendor/node-addon-api/doc/name.md +0 -29
- package/vendor/node-addon-api/doc/node-gyp.md +0 -82
- package/vendor/node-addon-api/doc/number.md +0 -163
- package/vendor/node-addon-api/doc/object.md +0 -411
- package/vendor/node-addon-api/doc/object_lifetime_management.md +0 -83
- package/vendor/node-addon-api/doc/object_reference.md +0 -117
- package/vendor/node-addon-api/doc/object_wrap.md +0 -604
- package/vendor/node-addon-api/doc/prebuild_tools.md +0 -16
- package/vendor/node-addon-api/doc/promises.md +0 -130
- package/vendor/node-addon-api/doc/property_descriptor.md +0 -286
- package/vendor/node-addon-api/doc/propertylvalue.md +0 -50
- package/vendor/node-addon-api/doc/range_error.md +0 -59
- package/vendor/node-addon-api/doc/reference.md +0 -113
- package/vendor/node-addon-api/doc/setup.md +0 -115
- package/vendor/node-addon-api/doc/string.md +0 -93
- package/vendor/node-addon-api/doc/symbol.md +0 -61
- package/vendor/node-addon-api/doc/syntax_error.md +0 -66
- package/vendor/node-addon-api/doc/threadsafe.md +0 -121
- package/vendor/node-addon-api/doc/threadsafe_function.md +0 -290
- package/vendor/node-addon-api/doc/type_error.md +0 -59
- package/vendor/node-addon-api/doc/type_taggable.md +0 -40
- package/vendor/node-addon-api/doc/typed_array.md +0 -78
- package/vendor/node-addon-api/doc/typed_array_of.md +0 -137
- package/vendor/node-addon-api/doc/typed_threadsafe_function.md +0 -306
- package/vendor/node-addon-api/doc/value.md +0 -368
- package/vendor/node-addon-api/doc/version_management.md +0 -43
- package/vendor/node-addon-api/eslint.config.js +0 -5
- package/vendor/node-addon-api/except.gypi +0 -25
- package/vendor/node-addon-api/index.js +0 -14
- package/vendor/node-addon-api/node_addon_api.gyp +0 -42
- package/vendor/node-addon-api/node_api.gyp +0 -9
- package/vendor/node-addon-api/noexcept.gypi +0 -26
- package/vendor/node-addon-api/nothing.c +0 -0
- package/vendor/node-addon-api/package-support.json +0 -21
- package/vendor/node-addon-api/package.json +0 -480
- package/vendor/node-addon-api/release-please-config.json +0 -15
- package/vendor/node-addon-api/test/README.md +0 -91
- package/vendor/node-addon-api/test/addon.cc +0 -44
- package/vendor/node-addon-api/test/addon.js +0 -7
- package/vendor/node-addon-api/test/addon_build/index.js +0 -49
- package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +0 -18
- package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +0 -63
- package/vendor/node-addon-api/test/addon_build/tpl/index.js +0 -9
- package/vendor/node-addon-api/test/addon_build/tpl/package.json +0 -11
- package/vendor/node-addon-api/test/addon_data.cc +0 -98
- package/vendor/node-addon-api/test/addon_data.js +0 -24
- package/vendor/node-addon-api/test/array_buffer.cc +0 -243
- package/vendor/node-addon-api/test/array_buffer.js +0 -70
- package/vendor/node-addon-api/test/async_context.cc +0 -36
- package/vendor/node-addon-api/test/async_context.js +0 -122
- package/vendor/node-addon-api/test/async_progress_queue_worker.cc +0 -248
- package/vendor/node-addon-api/test/async_progress_queue_worker.js +0 -180
- package/vendor/node-addon-api/test/async_progress_worker.cc +0 -357
- package/vendor/node-addon-api/test/async_progress_worker.js +0 -200
- package/vendor/node-addon-api/test/async_worker.cc +0 -341
- package/vendor/node-addon-api/test/async_worker.js +0 -264
- package/vendor/node-addon-api/test/async_worker_nocallback.js +0 -19
- package/vendor/node-addon-api/test/async_worker_persistent.cc +0 -63
- package/vendor/node-addon-api/test/async_worker_persistent.js +0 -24
- package/vendor/node-addon-api/test/basic_types/array.cc +0 -40
- package/vendor/node-addon-api/test/basic_types/array.js +0 -34
- package/vendor/node-addon-api/test/basic_types/boolean.cc +0 -40
- package/vendor/node-addon-api/test/basic_types/boolean.js +0 -34
- package/vendor/node-addon-api/test/basic_types/number.cc +0 -105
- package/vendor/node-addon-api/test/basic_types/number.js +0 -115
- package/vendor/node-addon-api/test/basic_types/value.cc +0 -177
- package/vendor/node-addon-api/test/basic_types/value.js +0 -173
- package/vendor/node-addon-api/test/bigint.cc +0 -91
- package/vendor/node-addon-api/test/bigint.js +0 -53
- package/vendor/node-addon-api/test/binding-swallowexcept.cc +0 -12
- package/vendor/node-addon-api/test/binding.cc +0 -200
- package/vendor/node-addon-api/test/binding.gyp +0 -160
- package/vendor/node-addon-api/test/buffer.cc +0 -185
- package/vendor/node-addon-api/test/buffer.h +0 -26
- package/vendor/node-addon-api/test/buffer.js +0 -150
- package/vendor/node-addon-api/test/buffer_new_or_copy-inl.h +0 -68
- package/vendor/node-addon-api/test/buffer_no_external.cc +0 -24
- package/vendor/node-addon-api/test/callbackInfo.cc +0 -27
- package/vendor/node-addon-api/test/callbackInfo.js +0 -9
- package/vendor/node-addon-api/test/callbackscope.cc +0 -39
- package/vendor/node-addon-api/test/callbackscope.js +0 -49
- package/vendor/node-addon-api/test/child_processes/addon.js +0 -11
- package/vendor/node-addon-api/test/child_processes/addon_data.js +0 -24
- package/vendor/node-addon-api/test/child_processes/objectwrap_function.js +0 -22
- package/vendor/node-addon-api/test/child_processes/threadsafe_function_exception.js +0 -33
- package/vendor/node-addon-api/test/child_processes/typed_threadsafe_function_exception.js +0 -19
- package/vendor/node-addon-api/test/common/index.js +0 -246
- package/vendor/node-addon-api/test/common/test_helper.h +0 -71
- package/vendor/node-addon-api/test/dataview/dataview.cc +0 -48
- package/vendor/node-addon-api/test/dataview/dataview.js +0 -35
- package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +0 -115
- package/vendor/node-addon-api/test/dataview/dataview_read_write.js +0 -92
- package/vendor/node-addon-api/test/date.cc +0 -45
- package/vendor/node-addon-api/test/date.js +0 -18
- package/vendor/node-addon-api/test/env_cleanup.cc +0 -100
- package/vendor/node-addon-api/test/env_cleanup.js +0 -55
- package/vendor/node-addon-api/test/env_misc.cc +0 -25
- package/vendor/node-addon-api/test/env_misc.js +0 -12
- package/vendor/node-addon-api/test/error.cc +0 -436
- package/vendor/node-addon-api/test/error.js +0 -111
- package/vendor/node-addon-api/test/error_handling_for_primitives.cc +0 -13
- package/vendor/node-addon-api/test/error_handling_for_primitives.js +0 -29
- package/vendor/node-addon-api/test/error_terminating_environment.js +0 -99
- package/vendor/node-addon-api/test/except_all.cc +0 -22
- package/vendor/node-addon-api/test/except_all.js +0 -14
- package/vendor/node-addon-api/test/exports.js +0 -19
- package/vendor/node-addon-api/test/external.cc +0 -85
- package/vendor/node-addon-api/test/external.js +0 -85
- package/vendor/node-addon-api/test/finalizer_order.cc +0 -152
- package/vendor/node-addon-api/test/finalizer_order.js +0 -98
- package/vendor/node-addon-api/test/function.cc +0 -338
- package/vendor/node-addon-api/test/function.js +0 -137
- package/vendor/node-addon-api/test/function_reference.cc +0 -204
- package/vendor/node-addon-api/test/function_reference.js +0 -157
- package/vendor/node-addon-api/test/globalObject/global_object.cc +0 -61
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +0 -31
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +0 -58
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +0 -40
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +0 -56
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +0 -28
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +0 -46
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +0 -31
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +0 -56
- package/vendor/node-addon-api/test/handlescope.cc +0 -86
- package/vendor/node-addon-api/test/handlescope.js +0 -16
- package/vendor/node-addon-api/test/index.js +0 -160
- package/vendor/node-addon-api/test/maybe/check.cc +0 -69
- package/vendor/node-addon-api/test/maybe/index.js +0 -50
- package/vendor/node-addon-api/test/memory_management.cc +0 -18
- package/vendor/node-addon-api/test/memory_management.js +0 -9
- package/vendor/node-addon-api/test/movable_callbacks.cc +0 -23
- package/vendor/node-addon-api/test/movable_callbacks.js +0 -21
- package/vendor/node-addon-api/test/name.cc +0 -110
- package/vendor/node-addon-api/test/name.js +0 -59
- package/vendor/node-addon-api/test/napi_child.js +0 -14
- package/vendor/node-addon-api/test/object/delete_property.cc +0 -38
- package/vendor/node-addon-api/test/object/delete_property.js +0 -41
- package/vendor/node-addon-api/test/object/finalizer.cc +0 -30
- package/vendor/node-addon-api/test/object/finalizer.js +0 -28
- package/vendor/node-addon-api/test/object/get_property.cc +0 -34
- package/vendor/node-addon-api/test/object/get_property.js +0 -40
- package/vendor/node-addon-api/test/object/has_own_property.cc +0 -34
- package/vendor/node-addon-api/test/object/has_own_property.js +0 -34
- package/vendor/node-addon-api/test/object/has_property.cc +0 -38
- package/vendor/node-addon-api/test/object/has_property.js +0 -37
- package/vendor/node-addon-api/test/object/object.cc +0 -430
- package/vendor/node-addon-api/test/object/object.js +0 -218
- package/vendor/node-addon-api/test/object/object_deprecated.cc +0 -70
- package/vendor/node-addon-api/test/object/object_deprecated.js +0 -42
- package/vendor/node-addon-api/test/object/object_freeze_seal.cc +0 -25
- package/vendor/node-addon-api/test/object/object_freeze_seal.js +0 -61
- package/vendor/node-addon-api/test/object/set_property.cc +0 -45
- package/vendor/node-addon-api/test/object/set_property.js +0 -30
- package/vendor/node-addon-api/test/object/subscript_operator.cc +0 -58
- package/vendor/node-addon-api/test/object/subscript_operator.js +0 -17
- package/vendor/node-addon-api/test/object_reference.cc +0 -417
- package/vendor/node-addon-api/test/object_reference.js +0 -262
- package/vendor/node-addon-api/test/objectwrap.cc +0 -295
- package/vendor/node-addon-api/test/objectwrap.js +0 -309
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +0 -26
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +0 -18
- package/vendor/node-addon-api/test/objectwrap_function.cc +0 -43
- package/vendor/node-addon-api/test/objectwrap_function.js +0 -6
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +0 -30
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +0 -13
- package/vendor/node-addon-api/test/objectwrap_removewrap.cc +0 -45
- package/vendor/node-addon-api/test/objectwrap_removewrap.js +0 -32
- package/vendor/node-addon-api/test/objectwrap_worker_thread.js +0 -20
- package/vendor/node-addon-api/test/promise.cc +0 -111
- package/vendor/node-addon-api/test/promise.js +0 -43
- package/vendor/node-addon-api/test/reference.cc +0 -78
- package/vendor/node-addon-api/test/reference.js +0 -20
- package/vendor/node-addon-api/test/require_basic_finalizers/index.js +0 -38
- package/vendor/node-addon-api/test/require_basic_finalizers/tpl/addon.cc +0 -12
- package/vendor/node-addon-api/test/require_basic_finalizers/tpl/binding.gyp +0 -48
- package/vendor/node-addon-api/test/require_basic_finalizers/tpl/index.js +0 -3
- package/vendor/node-addon-api/test/require_basic_finalizers/tpl/package.json +0 -11
- package/vendor/node-addon-api/test/run_script.cc +0 -56
- package/vendor/node-addon-api/test/run_script.js +0 -45
- package/vendor/node-addon-api/test/symbol.cc +0 -79
- package/vendor/node-addon-api/test/symbol.js +0 -66
- package/vendor/node-addon-api/test/testUtil.js +0 -54
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +0 -230
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +0 -225
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +0 -155
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +0 -13
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_exception.cc +0 -50
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_exception.js +0 -20
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +0 -125
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +0 -14
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +0 -27
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +0 -7
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +0 -240
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +0 -59
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +0 -55
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +0 -98
- package/vendor/node-addon-api/test/thunking_manual.cc +0 -127
- package/vendor/node-addon-api/test/thunking_manual.js +0 -16
- package/vendor/node-addon-api/test/type_taggable.cc +0 -66
- package/vendor/node-addon-api/test/type_taggable.js +0 -59
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +0 -215
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +0 -188
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +0 -120
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +0 -14
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_exception.cc +0 -39
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_exception.js +0 -13
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +0 -127
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +0 -14
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +0 -32
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +0 -8
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +0 -237
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +0 -59
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +0 -67
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +0 -98
- package/vendor/node-addon-api/test/typedarray-bigint.js +0 -58
- package/vendor/node-addon-api/test/typedarray.cc +0 -413
- package/vendor/node-addon-api/test/typedarray.js +0 -103
- package/vendor/node-addon-api/test/value_type_cast.cc +0 -60
- package/vendor/node-addon-api/test/value_type_cast.js +0 -106
- package/vendor/node-addon-api/test/version_management.cc +0 -28
- package/vendor/node-addon-api/test/version_management.js +0 -29
- package/vendor/node-addon-api/tools/README.md +0 -73
- package/vendor/node-addon-api/tools/check-napi.js +0 -99
- package/vendor/node-addon-api/tools/clang-format.js +0 -71
- package/vendor/node-addon-api/tools/conversion.js +0 -301
- package/vendor/node-addon-api/unit-test/README.md +0 -28
- package/vendor/node-addon-api/unit-test/binding-file-template.js +0 -39
- package/vendor/node-addon-api/unit-test/binding.gyp +0 -72
- package/vendor/node-addon-api/unit-test/exceptions.js +0 -32
- package/vendor/node-addon-api/unit-test/generate-binding-cc.js +0 -61
- package/vendor/node-addon-api/unit-test/injectTestParams.js +0 -101
- package/vendor/node-addon-api/unit-test/listOfTestModules.js +0 -88
- package/vendor/node-addon-api/unit-test/matchModules.js +0 -65
- package/vendor/node-addon-api/unit-test/setup.js +0 -13
- package/vendor/node-addon-api/unit-test/spawnTask.js +0 -26
- package/vendor/node-addon-api/unit-test/test.js +0 -30
- package/vendor/node-api-headers/CHANGELOG.md +0 -130
- package/vendor/node-api-headers/CODE_OF_CONDUCT.md +0 -4
- package/vendor/node-api-headers/CONTRIBUTING.md +0 -32
- package/vendor/node-api-headers/CREATING_A_RELEASE.md +0 -68
- package/vendor/node-api-headers/index.js +0 -17
- package/vendor/node-api-headers/lib/clang-utils.js +0 -50
- package/vendor/node-api-headers/lib/parse-utils.js +0 -92
- package/vendor/node-api-headers/package.json +0 -59
- package/vendor/node-api-headers/release-please-config.json +0 -12
- package/vendor/node-api-headers/scripts/update-headers.js +0 -246
- package/vendor/node-api-headers/scripts/write-symbols.js +0 -154
- package/vendor/node-api-headers/scripts/write-win32-def.js +0 -52
- package/vendor/node-api-headers/symbols.js +0 -257
- package/vendor/node-api-headers/test/parse-utils.js +0 -21
- /package/doc/{pages/benchmarks.md → benchmarks.md} +0 -0
- /package/doc/{pages/callbacks.md → callbacks.md} +0 -0
- /package/doc/{pages/contribute.md → contribute.md} +0 -0
- /package/doc/{pages/functions.md → functions.md} +0 -0
- /package/doc/{pages/index.md → index.md} +0 -0
- /package/doc/{pages/input.md → input.md} +0 -0
- /package/doc/{pages/migration.md → migration.md} +0 -0
- /package/doc/{pages/misc.md → misc.md} +0 -0
- /package/doc/{pages/output.md → output.md} +0 -0
- /package/doc/{pages/packaging.md → packaging.md} +0 -0
- /package/doc/{pages/platforms.md → platforms.md} +0 -0
- /package/doc/{pages/pointers.md → pointers.md} +0 -0
- /package/doc/{pages/start.md → start.md} +0 -0
- /package/doc/{pages/unions.md → unions.md} +0 -0
- /package/doc/{pages/variables.md → variables.md} +0 -0
- /package/src/koffi/src/{abi/loong64.cc → abi_loong64.cc} +0 -0
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
|
|
5
|
-
if (process.argv[2] === 'fatal') {
|
|
6
|
-
const binding = require(process.argv[3]);
|
|
7
|
-
binding.error.throwFatalError();
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
module.exports = require('./common').runTestWithBindingPath(test);
|
|
11
|
-
|
|
12
|
-
const napiVersion = Number(process.env.NAPI_VERSION ?? process.versions.napi);
|
|
13
|
-
|
|
14
|
-
function test (bindingPath) {
|
|
15
|
-
const binding = require(bindingPath);
|
|
16
|
-
binding.error.testErrorCopySemantics();
|
|
17
|
-
binding.error.testErrorMoveSemantics();
|
|
18
|
-
|
|
19
|
-
assert.throws(() => binding.error.throwApiError('test'), function (err) {
|
|
20
|
-
return err instanceof Error && err.message.includes('Invalid');
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
assert.throws(() => binding.error.lastExceptionErrorCode(), function (err) {
|
|
24
|
-
return err instanceof TypeError && err.message === 'A boolean was expected';
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
assert.throws(() => binding.error.throwJSError('test'), function (err) {
|
|
28
|
-
return err instanceof Error && err.message === 'test';
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
assert.throws(() => binding.error.throwTypeErrorCStr('test'), function (err) {
|
|
32
|
-
return err instanceof TypeError && err.message === 'test';
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
assert.throws(() => binding.error.throwRangeErrorCStr('test'), function (err) {
|
|
36
|
-
return err instanceof RangeError && err.message === 'test';
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
assert.throws(() => binding.error.throwRangeError('test'), function (err) {
|
|
40
|
-
return err instanceof RangeError && err.message === 'test';
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
assert.throws(() => binding.error.throwTypeErrorCtor(new TypeError('jsTypeError')), function (err) {
|
|
44
|
-
return err instanceof TypeError && err.message === 'jsTypeError';
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
assert.throws(() => binding.error.throwRangeErrorCtor(new RangeError('rangeTypeError')), function (err) {
|
|
48
|
-
return err instanceof RangeError && err.message === 'rangeTypeError';
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
if (napiVersion > 8) {
|
|
52
|
-
assert.throws(() => binding.error.throwSyntaxErrorCStr('test'), function (err) {
|
|
53
|
-
return err instanceof SyntaxError && err.message === 'test';
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
assert.throws(() => binding.error.throwSyntaxError('test'), function (err) {
|
|
57
|
-
return err instanceof SyntaxError && err.message === 'test';
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
assert.throws(() => binding.error.throwSyntaxErrorCtor(new SyntaxError('syntaxTypeError')), function (err) {
|
|
61
|
-
return err instanceof SyntaxError && err.message === 'syntaxTypeError';
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
assert.throws(
|
|
66
|
-
() => binding.error.doNotCatch(
|
|
67
|
-
() => {
|
|
68
|
-
throw new TypeError('test');
|
|
69
|
-
}),
|
|
70
|
-
function (err) {
|
|
71
|
-
return err instanceof TypeError && err.message === 'test' && !err.caught;
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
assert.throws(
|
|
75
|
-
() => binding.error.catchAndRethrowError(
|
|
76
|
-
() => {
|
|
77
|
-
throw new TypeError('test');
|
|
78
|
-
}),
|
|
79
|
-
function (err) {
|
|
80
|
-
return err instanceof TypeError && err.message === 'test' && err.caught;
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
const err = binding.error.catchError(
|
|
84
|
-
() => { throw new TypeError('test'); });
|
|
85
|
-
assert(err instanceof TypeError);
|
|
86
|
-
assert.strictEqual(err.message, 'test');
|
|
87
|
-
|
|
88
|
-
const msg = binding.error.catchErrorMessage(
|
|
89
|
-
() => { throw new TypeError('test'); });
|
|
90
|
-
assert.strictEqual(msg, 'test');
|
|
91
|
-
|
|
92
|
-
assert.throws(() => binding.error.throwErrorThatEscapesScope('test'), function (err) {
|
|
93
|
-
return err instanceof Error && err.message === 'test';
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
assert.throws(() => binding.error.catchAndRethrowErrorThatEscapesScope('test'), function (err) {
|
|
97
|
-
return err instanceof Error && err.message === 'test' && err.caught;
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
const p = require('./napi_child').spawnSync(
|
|
101
|
-
process.execPath, [__filename, 'fatal', bindingPath]);
|
|
102
|
-
assert.ifError(p.error);
|
|
103
|
-
assert.ok(p.stderr.toString().includes(
|
|
104
|
-
'FATAL ERROR: Error::ThrowFatalError This is a fatal error'));
|
|
105
|
-
|
|
106
|
-
assert.throws(() => binding.error.throwDefaultError(false),
|
|
107
|
-
/Cannot convert undefined or null to object/);
|
|
108
|
-
|
|
109
|
-
assert.throws(() => binding.error.throwDefaultError(true),
|
|
110
|
-
/A number was expected/);
|
|
111
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
#include <napi.h>
|
|
2
|
-
|
|
3
|
-
namespace {
|
|
4
|
-
void Test(const Napi::CallbackInfo& info) {
|
|
5
|
-
info[0].As<Napi::Function>().Call({});
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
} // namespace
|
|
9
|
-
Napi::Object InitErrorHandlingPrim(Napi::Env env) {
|
|
10
|
-
Napi::Object exports = Napi::Object::New(env);
|
|
11
|
-
exports.Set("errorHandlingPrim", Napi::Function::New<Test>(env));
|
|
12
|
-
return exports;
|
|
13
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
|
|
5
|
-
module.exports = require('./common').runTest((binding) => {
|
|
6
|
-
test(binding.errorHandlingPrim);
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
function canThrow (binding, errorMessage, errorType) {
|
|
10
|
-
try {
|
|
11
|
-
binding.errorHandlingPrim(() => {
|
|
12
|
-
throw errorMessage;
|
|
13
|
-
});
|
|
14
|
-
} catch (e) {
|
|
15
|
-
// eslint-disable-next-line valid-typeof
|
|
16
|
-
assert(typeof e === errorType);
|
|
17
|
-
assert(e === errorMessage);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function test (binding) {
|
|
22
|
-
canThrow(binding, '404 server not found!', 'string');
|
|
23
|
-
canThrow(binding, 42, 'number');
|
|
24
|
-
canThrow(binding, Symbol.for('newSym'), 'symbol');
|
|
25
|
-
canThrow(binding, false, 'boolean');
|
|
26
|
-
canThrow(binding, BigInt(123), 'bigint');
|
|
27
|
-
canThrow(binding, () => { console.log('Logger shutdown incorrectly'); }, 'function');
|
|
28
|
-
canThrow(binding, { status: 403, errorMsg: 'Not authenticated' }, 'object');
|
|
29
|
-
}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
const { whichBuildType } = require('./common');
|
|
5
|
-
|
|
6
|
-
// These tests ensure that Error types can be used in a terminating
|
|
7
|
-
// environment without triggering any fatal errors.
|
|
8
|
-
|
|
9
|
-
if (process.argv[2] === 'runInChildProcess') {
|
|
10
|
-
const bindingPath = process.argv[3];
|
|
11
|
-
const indexForTestCase = Number(process.argv[4]);
|
|
12
|
-
|
|
13
|
-
const binding = require(bindingPath);
|
|
14
|
-
|
|
15
|
-
// Use C++ promises to ensure the worker thread is terminated right
|
|
16
|
-
// before running the testable code in the binding.
|
|
17
|
-
|
|
18
|
-
binding.error.resetPromises();
|
|
19
|
-
|
|
20
|
-
const { Worker } = require('worker_threads');
|
|
21
|
-
|
|
22
|
-
const worker = new Worker(
|
|
23
|
-
__filename,
|
|
24
|
-
{
|
|
25
|
-
argv: [
|
|
26
|
-
'runInWorkerThread',
|
|
27
|
-
bindingPath,
|
|
28
|
-
indexForTestCase
|
|
29
|
-
]
|
|
30
|
-
}
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
binding.error.waitForWorkerThread();
|
|
34
|
-
|
|
35
|
-
worker.terminate();
|
|
36
|
-
|
|
37
|
-
binding.error.releaseWorkerThread();
|
|
38
|
-
} else {
|
|
39
|
-
if (process.argv[2] === 'runInWorkerThread') {
|
|
40
|
-
const bindingPath = process.argv[3];
|
|
41
|
-
const indexForTestCase = Number(process.argv[4]);
|
|
42
|
-
|
|
43
|
-
const binding = require(bindingPath);
|
|
44
|
-
|
|
45
|
-
switch (indexForTestCase) {
|
|
46
|
-
case 0:
|
|
47
|
-
binding.error.throwJSError('test', true);
|
|
48
|
-
break;
|
|
49
|
-
case 1:
|
|
50
|
-
binding.error.throwTypeError('test', true);
|
|
51
|
-
break;
|
|
52
|
-
case 2:
|
|
53
|
-
binding.error.throwRangeError('test', true);
|
|
54
|
-
break;
|
|
55
|
-
case 3:
|
|
56
|
-
binding.error.throwDefaultError(false, true);
|
|
57
|
-
break;
|
|
58
|
-
case 4:
|
|
59
|
-
binding.error.throwDefaultError(true, true);
|
|
60
|
-
break;
|
|
61
|
-
default: assert.fail('Invalid index');
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
assert.fail('This should not be reachable');
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
wrapTest();
|
|
68
|
-
|
|
69
|
-
async function wrapTest () {
|
|
70
|
-
const buildType = await whichBuildType();
|
|
71
|
-
test(`./build/${buildType}/binding.node`, true);
|
|
72
|
-
test(`./build/${buildType}/binding_noexcept.node`, true);
|
|
73
|
-
test(`./build/${buildType}/binding_swallowexcept.node`, false);
|
|
74
|
-
test(`./build/${buildType}/binding_swallowexcept_noexcept.node`, false);
|
|
75
|
-
test(`./build/${buildType}/binding_custom_namespace.node`, true);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
function test (bindingPath, processShouldAbort) {
|
|
79
|
-
const numberOfTestCases = 5;
|
|
80
|
-
|
|
81
|
-
for (let i = 0; i < numberOfTestCases; ++i) {
|
|
82
|
-
const childProcess = require('./napi_child').spawnSync(
|
|
83
|
-
process.execPath,
|
|
84
|
-
[
|
|
85
|
-
__filename,
|
|
86
|
-
'runInChildProcess',
|
|
87
|
-
bindingPath,
|
|
88
|
-
i
|
|
89
|
-
]
|
|
90
|
-
);
|
|
91
|
-
|
|
92
|
-
if (processShouldAbort) {
|
|
93
|
-
assert(childProcess.status !== 0, `Test case ${bindingPath} ${i} failed: Process exited with status code 0.`);
|
|
94
|
-
} else {
|
|
95
|
-
assert(childProcess.status === 0, `Test case ${bindingPath} ${i} failed: Process status ${childProcess.status} is non-zero`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
#include <stdexcept>
|
|
2
|
-
#include "napi.h"
|
|
3
|
-
|
|
4
|
-
using namespace Napi;
|
|
5
|
-
|
|
6
|
-
void ThrowStdException(const CallbackInfo& info) {
|
|
7
|
-
std::string message = info[0].As<String>().Utf8Value();
|
|
8
|
-
throw std::runtime_error(message);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
void ThrowPrimitiveException(const CallbackInfo&) {
|
|
12
|
-
throw 0;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
Object Init(Env env, Object exports) {
|
|
16
|
-
exports.Set("throwStdException", Napi::Function::New(env, ThrowStdException));
|
|
17
|
-
exports.Set("throwPrimitiveException",
|
|
18
|
-
Napi::Function::New(env, ThrowPrimitiveException));
|
|
19
|
-
return exports;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
NODE_API_MODULE(addon, Init)
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
|
|
5
|
-
module.exports = require('./common').runTestWithBuildType(test);
|
|
6
|
-
|
|
7
|
-
function test (buildType) {
|
|
8
|
-
const binding = require(`./build/${buildType}/binding_except_all.node`);
|
|
9
|
-
|
|
10
|
-
const message = 'error message';
|
|
11
|
-
assert.throws(binding.throwStdException.bind(undefined, message), { message });
|
|
12
|
-
|
|
13
|
-
assert.throws(binding.throwPrimitiveException.bind(undefined), { message: 'A native exception was thrown' });
|
|
14
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { strictEqual } = require('assert');
|
|
4
|
-
const { valid } = require('semver');
|
|
5
|
-
|
|
6
|
-
const nodeAddonApi = require('../');
|
|
7
|
-
|
|
8
|
-
module.exports = function test () {
|
|
9
|
-
strictEqual(nodeAddonApi.include.startsWith('"'), true);
|
|
10
|
-
strictEqual(nodeAddonApi.include.endsWith('"'), true);
|
|
11
|
-
strictEqual(nodeAddonApi.include.includes('node-addon-api'), true);
|
|
12
|
-
strictEqual(nodeAddonApi.include_dir, '');
|
|
13
|
-
strictEqual(nodeAddonApi.gyp, 'node_api.gyp:nothing');
|
|
14
|
-
strictEqual(nodeAddonApi.targets, 'node_addon_api.gyp');
|
|
15
|
-
strictEqual(valid(nodeAddonApi.version), true);
|
|
16
|
-
strictEqual(nodeAddonApi.version, require('../package.json').version);
|
|
17
|
-
strictEqual(nodeAddonApi.isNodeApiBuiltin, true);
|
|
18
|
-
strictEqual(nodeAddonApi.needsFlag, false);
|
|
19
|
-
};
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
|
|
3
|
-
using namespace Napi;
|
|
4
|
-
|
|
5
|
-
namespace {
|
|
6
|
-
|
|
7
|
-
int testData = 1;
|
|
8
|
-
int finalizeCount = 0;
|
|
9
|
-
|
|
10
|
-
Value CreateExternal(const CallbackInfo& info) {
|
|
11
|
-
finalizeCount = 0;
|
|
12
|
-
return External<int>::New(info.Env(), &testData);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
Value CreateExternalWithFinalize(const CallbackInfo& info) {
|
|
16
|
-
finalizeCount = 0;
|
|
17
|
-
return External<int>::New(info.Env(), new int(1), [](Env /*env*/, int* data) {
|
|
18
|
-
delete data;
|
|
19
|
-
finalizeCount++;
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
Value CreateExternalWithFinalizeHint(const CallbackInfo& info) {
|
|
24
|
-
finalizeCount = 0;
|
|
25
|
-
char* hint = nullptr;
|
|
26
|
-
return External<int>::New(
|
|
27
|
-
info.Env(),
|
|
28
|
-
new int(1),
|
|
29
|
-
[](Env /*env*/, int* data, char* /*hint*/) {
|
|
30
|
-
delete data;
|
|
31
|
-
finalizeCount++;
|
|
32
|
-
},
|
|
33
|
-
hint);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
void CheckExternal(const CallbackInfo& info) {
|
|
37
|
-
Value arg = info[0];
|
|
38
|
-
if (arg.Type() != napi_external) {
|
|
39
|
-
Error::New(info.Env(), "An external argument was expected.")
|
|
40
|
-
.ThrowAsJavaScriptException();
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
External<int> external = arg.As<External<int>>();
|
|
45
|
-
int* externalData = external.Data();
|
|
46
|
-
if (externalData == nullptr || *externalData != 1) {
|
|
47
|
-
Error::New(info.Env(), "An external value of 1 was expected.")
|
|
48
|
-
.ThrowAsJavaScriptException();
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
Value GetFinalizeCount(const CallbackInfo& info) {
|
|
54
|
-
return Number::New(info.Env(), finalizeCount);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
Value CreateExternalWithFinalizeException(const CallbackInfo& info) {
|
|
58
|
-
return External<int>::New(info.Env(), new int(1), [](Env env, int* data) {
|
|
59
|
-
Error error = Error::New(env, "Finalizer exception");
|
|
60
|
-
delete data;
|
|
61
|
-
#ifdef NAPI_CPP_EXCEPTIONS
|
|
62
|
-
throw error;
|
|
63
|
-
#else
|
|
64
|
-
error.ThrowAsJavaScriptException();
|
|
65
|
-
#endif
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
} // end anonymous namespace
|
|
70
|
-
|
|
71
|
-
Object InitExternal(Env env) {
|
|
72
|
-
Object exports = Object::New(env);
|
|
73
|
-
|
|
74
|
-
exports["createExternal"] = Function::New(env, CreateExternal);
|
|
75
|
-
exports["createExternalWithFinalize"] =
|
|
76
|
-
Function::New(env, CreateExternalWithFinalize);
|
|
77
|
-
exports["createExternalWithFinalizeException"] =
|
|
78
|
-
Function::New(env, CreateExternalWithFinalizeException);
|
|
79
|
-
exports["createExternalWithFinalizeHint"] =
|
|
80
|
-
Function::New(env, CreateExternalWithFinalizeHint);
|
|
81
|
-
exports["checkExternal"] = Function::New(env, CheckExternal);
|
|
82
|
-
exports["getFinalizeCount"] = Function::New(env, GetFinalizeCount);
|
|
83
|
-
|
|
84
|
-
return exports;
|
|
85
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
const { spawnSync } = require('child_process');
|
|
5
|
-
const testUtil = require('./testUtil');
|
|
6
|
-
|
|
7
|
-
if (process.argv.length === 3) {
|
|
8
|
-
let interval;
|
|
9
|
-
|
|
10
|
-
// Running as the child process, hook up an `uncaughtException` handler to
|
|
11
|
-
// examine the error thrown by the finalizer.
|
|
12
|
-
process.on('uncaughtException', (error) => {
|
|
13
|
-
// TODO (gabrielschulhof): Use assert.matches() when we drop support for
|
|
14
|
-
// Node.js v10.x.
|
|
15
|
-
assert(!!error.message.match(/Finalizer exception/));
|
|
16
|
-
if (interval) {
|
|
17
|
-
clearInterval(interval);
|
|
18
|
-
}
|
|
19
|
-
process.exit(0);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
// Create an external whose finalizer throws.
|
|
23
|
-
(() =>
|
|
24
|
-
require(process.argv[2]).external.createExternalWithFinalizeException())();
|
|
25
|
-
|
|
26
|
-
// gc until the external's finalizer throws or until we give up. Since the
|
|
27
|
-
// exception is thrown from a native `SetImmediate()` we cannot catch it
|
|
28
|
-
// anywhere except in the process' `uncaughtException` handler.
|
|
29
|
-
let maxGCTries = 10;
|
|
30
|
-
(function gcInterval () {
|
|
31
|
-
global.gc();
|
|
32
|
-
if (!interval) {
|
|
33
|
-
interval = setInterval(gcInterval, 100);
|
|
34
|
-
} else if (--maxGCTries === 0) {
|
|
35
|
-
throw new Error('Timed out waiting for the gc to throw');
|
|
36
|
-
}
|
|
37
|
-
})();
|
|
38
|
-
} else {
|
|
39
|
-
module.exports = require('./common').runTestWithBindingPath(test);
|
|
40
|
-
|
|
41
|
-
function test (bindingPath) {
|
|
42
|
-
const binding = require(bindingPath);
|
|
43
|
-
|
|
44
|
-
const child = spawnSync(process.execPath, [
|
|
45
|
-
'--expose-gc', __filename, bindingPath
|
|
46
|
-
], { stdio: 'inherit' });
|
|
47
|
-
assert.strictEqual(child.status, 0);
|
|
48
|
-
assert.strictEqual(child.signal, null);
|
|
49
|
-
|
|
50
|
-
return testUtil.runGCTests([
|
|
51
|
-
'External without finalizer',
|
|
52
|
-
() => {
|
|
53
|
-
const test = binding.external.createExternal();
|
|
54
|
-
assert.strictEqual(typeof test, 'object');
|
|
55
|
-
binding.external.checkExternal(test);
|
|
56
|
-
assert.strictEqual(0, binding.external.getFinalizeCount());
|
|
57
|
-
},
|
|
58
|
-
() => {
|
|
59
|
-
assert.strictEqual(0, binding.external.getFinalizeCount());
|
|
60
|
-
},
|
|
61
|
-
|
|
62
|
-
'External with finalizer',
|
|
63
|
-
() => {
|
|
64
|
-
const test = binding.external.createExternalWithFinalize();
|
|
65
|
-
assert.strictEqual(typeof test, 'object');
|
|
66
|
-
binding.external.checkExternal(test);
|
|
67
|
-
assert.strictEqual(0, binding.external.getFinalizeCount());
|
|
68
|
-
},
|
|
69
|
-
() => {
|
|
70
|
-
assert.strictEqual(1, binding.external.getFinalizeCount());
|
|
71
|
-
},
|
|
72
|
-
|
|
73
|
-
'External with finalizer hint',
|
|
74
|
-
() => {
|
|
75
|
-
const test = binding.external.createExternalWithFinalizeHint();
|
|
76
|
-
assert.strictEqual(typeof test, 'object');
|
|
77
|
-
binding.external.checkExternal(test);
|
|
78
|
-
assert.strictEqual(0, binding.external.getFinalizeCount());
|
|
79
|
-
},
|
|
80
|
-
() => {
|
|
81
|
-
assert.strictEqual(1, binding.external.getFinalizeCount());
|
|
82
|
-
}
|
|
83
|
-
]);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
#include <napi.h>
|
|
2
|
-
|
|
3
|
-
namespace {
|
|
4
|
-
class Test : public Napi::ObjectWrap<Test> {
|
|
5
|
-
public:
|
|
6
|
-
Test(const Napi::CallbackInfo& info) : Napi::ObjectWrap<Test>(info) {
|
|
7
|
-
basicFinalizerCalled = false;
|
|
8
|
-
finalizerCalled = false;
|
|
9
|
-
|
|
10
|
-
if (info.Length() > 0) {
|
|
11
|
-
finalizeCb_ = Napi::Persistent(info[0].As<Napi::Function>());
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
static void Initialize(Napi::Env env, Napi::Object exports) {
|
|
16
|
-
exports.Set("Test",
|
|
17
|
-
DefineClass(env,
|
|
18
|
-
"Test",
|
|
19
|
-
{
|
|
20
|
-
StaticAccessor("isBasicFinalizerCalled",
|
|
21
|
-
&IsBasicFinalizerCalled,
|
|
22
|
-
nullptr,
|
|
23
|
-
napi_default),
|
|
24
|
-
StaticAccessor("isFinalizerCalled",
|
|
25
|
-
&IsFinalizerCalled,
|
|
26
|
-
nullptr,
|
|
27
|
-
napi_default),
|
|
28
|
-
}));
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
void Finalize(Napi::BasicEnv /*env*/) { basicFinalizerCalled = true; }
|
|
32
|
-
|
|
33
|
-
void Finalize(Napi::Env /*env*/) {
|
|
34
|
-
finalizerCalled = true;
|
|
35
|
-
if (!finalizeCb_.IsEmpty()) {
|
|
36
|
-
finalizeCb_.Call({});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
static Napi::Value IsBasicFinalizerCalled(const Napi::CallbackInfo& info) {
|
|
41
|
-
return Napi::Boolean::New(info.Env(), basicFinalizerCalled);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
static Napi::Value IsFinalizerCalled(const Napi::CallbackInfo& info) {
|
|
45
|
-
return Napi::Boolean::New(info.Env(), finalizerCalled);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
private:
|
|
49
|
-
Napi::FunctionReference finalizeCb_;
|
|
50
|
-
|
|
51
|
-
static bool basicFinalizerCalled;
|
|
52
|
-
static bool finalizerCalled;
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
bool Test::basicFinalizerCalled = false;
|
|
56
|
-
bool Test::finalizerCalled = false;
|
|
57
|
-
|
|
58
|
-
bool externalBasicFinalizerCalled = false;
|
|
59
|
-
bool externalFinalizerCalled = false;
|
|
60
|
-
|
|
61
|
-
Napi::Value CreateExternalBasicFinalizer(const Napi::CallbackInfo& info) {
|
|
62
|
-
externalBasicFinalizerCalled = false;
|
|
63
|
-
return Napi::External<int>::New(
|
|
64
|
-
info.Env(), new int(1), [](Napi::BasicEnv /*env*/, int* data) {
|
|
65
|
-
externalBasicFinalizerCalled = true;
|
|
66
|
-
delete data;
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
Napi::Value CreateExternalFinalizer(const Napi::CallbackInfo& info) {
|
|
71
|
-
externalFinalizerCalled = false;
|
|
72
|
-
return Napi::External<int>::New(
|
|
73
|
-
info.Env(), new int(1), [](Napi::Env /*env*/, int* data) {
|
|
74
|
-
externalFinalizerCalled = true;
|
|
75
|
-
delete data;
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
Napi::Value isExternalBasicFinalizerCalled(const Napi::CallbackInfo& info) {
|
|
80
|
-
return Napi::Boolean::New(info.Env(), externalBasicFinalizerCalled);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
Napi::Value IsExternalFinalizerCalled(const Napi::CallbackInfo& info) {
|
|
84
|
-
return Napi::Boolean::New(info.Env(), externalFinalizerCalled);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
#ifdef NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER
|
|
88
|
-
Napi::Value PostFinalizer(const Napi::CallbackInfo& info) {
|
|
89
|
-
auto env = info.Env();
|
|
90
|
-
|
|
91
|
-
env.PostFinalizer([callback = Napi::Persistent(info[0].As<Napi::Function>())](
|
|
92
|
-
Napi::Env /*env*/) { callback.Call({}); });
|
|
93
|
-
|
|
94
|
-
return env.Undefined();
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
Napi::Value PostFinalizerWithData(const Napi::CallbackInfo& info) {
|
|
98
|
-
auto env = info.Env();
|
|
99
|
-
|
|
100
|
-
env.PostFinalizer(
|
|
101
|
-
[callback = Napi::Persistent(info[0].As<Napi::Function>())](
|
|
102
|
-
Napi::Env /*env*/, Napi::Reference<Napi::Value>* data) {
|
|
103
|
-
callback.Call({data->Value()});
|
|
104
|
-
delete data;
|
|
105
|
-
},
|
|
106
|
-
new Napi::Reference<Napi::Value>(Napi::Persistent(info[1])));
|
|
107
|
-
|
|
108
|
-
return env.Undefined();
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
Napi::Value PostFinalizerWithDataAndHint(const Napi::CallbackInfo& info) {
|
|
112
|
-
auto env = info.Env();
|
|
113
|
-
|
|
114
|
-
env.PostFinalizer(
|
|
115
|
-
[callback = Napi::Persistent(info[0].As<Napi::Function>())](
|
|
116
|
-
Napi::Env /*env*/,
|
|
117
|
-
Napi::Reference<Napi::Value>* data,
|
|
118
|
-
Napi::Reference<Napi::Value>* hint) {
|
|
119
|
-
callback.Call({data->Value(), hint->Value()});
|
|
120
|
-
delete data;
|
|
121
|
-
delete hint;
|
|
122
|
-
},
|
|
123
|
-
new Napi::Reference<Napi::Value>(Napi::Persistent(info[1])),
|
|
124
|
-
new Napi::Reference<Napi::Value>(Napi::Persistent(info[2])));
|
|
125
|
-
|
|
126
|
-
return env.Undefined();
|
|
127
|
-
}
|
|
128
|
-
#endif
|
|
129
|
-
|
|
130
|
-
} // namespace
|
|
131
|
-
|
|
132
|
-
Napi::Object InitFinalizerOrder(Napi::Env env) {
|
|
133
|
-
Napi::Object exports = Napi::Object::New(env);
|
|
134
|
-
Test::Initialize(env, exports);
|
|
135
|
-
exports["createExternalBasicFinalizer"] =
|
|
136
|
-
Napi::Function::New(env, CreateExternalBasicFinalizer);
|
|
137
|
-
exports["createExternalFinalizer"] =
|
|
138
|
-
Napi::Function::New(env, CreateExternalFinalizer);
|
|
139
|
-
exports["isExternalBasicFinalizerCalled"] =
|
|
140
|
-
Napi::Function::New(env, isExternalBasicFinalizerCalled);
|
|
141
|
-
exports["isExternalFinalizerCalled"] =
|
|
142
|
-
Napi::Function::New(env, IsExternalFinalizerCalled);
|
|
143
|
-
|
|
144
|
-
#ifdef NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER
|
|
145
|
-
exports["PostFinalizer"] = Napi::Function::New(env, PostFinalizer);
|
|
146
|
-
exports["PostFinalizerWithData"] =
|
|
147
|
-
Napi::Function::New(env, PostFinalizerWithData);
|
|
148
|
-
exports["PostFinalizerWithDataAndHint"] =
|
|
149
|
-
Napi::Function::New(env, PostFinalizerWithDataAndHint);
|
|
150
|
-
#endif
|
|
151
|
-
return exports;
|
|
152
|
-
}
|