koffi 2.16.0-beta.2 → 2.16.1
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 +66 -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 -246
- 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 -300
- 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 -244
- 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 -220
- 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 -230
- 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 -252
- package/src/koffi/src/{abi/x86_asm.S → abi_x86_asm.S} +38 -21
- package/src/koffi/src/{abi/x86_asm.asm → abi_x86_asm.asm} +33 -16
- package/src/koffi/src/call.cc +475 -290
- package/src/koffi/src/call.hh +15 -18
- package/src/koffi/src/ffi.cc +195 -184
- package/src/koffi/src/ffi.hh +60 -16
- 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,91 +0,0 @@
|
|
|
1
|
-
# Writing Tests
|
|
2
|
-
|
|
3
|
-
There are multiple flavors of node-addon-api test builds that cover different
|
|
4
|
-
build flags defined in `napi.h`:
|
|
5
|
-
|
|
6
|
-
1. c++ exceptions enabled,
|
|
7
|
-
2. c++ exceptions disabled,
|
|
8
|
-
3. c++ exceptions disabled, and `NODE_ADDON_API_ENABLE_MAYBE` defined.
|
|
9
|
-
|
|
10
|
-
Functions in node-addon-api that call into JavaScript can have different
|
|
11
|
-
declared return types to reflect build flavor settings. For example,
|
|
12
|
-
`Napi::Object::Set` returns `bool` when `NODE_ADDON_API_ENABLE_MAYBE`
|
|
13
|
-
is not defined, and `Napi::Maybe<bool>` when `NODE_ADDON_API_ENABLE_MAYBE`
|
|
14
|
-
is defined. In source code, return type variants are defined as
|
|
15
|
-
`Napi::MaybeOrValue<>` to prevent the duplication of most of the code base.
|
|
16
|
-
|
|
17
|
-
To properly test these build flavors, all values returned by a function defined
|
|
18
|
-
to return `Napi::MaybeOrValue<>` should be tested by using one of the following
|
|
19
|
-
test helpers to handle possible JavaScript exceptions.
|
|
20
|
-
|
|
21
|
-
There are three test helper functions to conveniently convert
|
|
22
|
-
`Napi::MaybeOrValue<>` values to raw values.
|
|
23
|
-
|
|
24
|
-
## MaybeUnwrap
|
|
25
|
-
|
|
26
|
-
```cpp
|
|
27
|
-
template <typename T>
|
|
28
|
-
T MaybeUnwrap(MaybeOrValue<T> maybe);
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Converts `MaybeOrValue<T>` to `T` by checking that `MaybeOrValue` is NOT an
|
|
32
|
-
empty `Maybe`.
|
|
33
|
-
|
|
34
|
-
Returns the original value if `NODE_ADDON_API_ENABLE_MAYBE` is not defined.
|
|
35
|
-
|
|
36
|
-
Example:
|
|
37
|
-
|
|
38
|
-
```cpp
|
|
39
|
-
Object obj = info[0].As<Object>();
|
|
40
|
-
// we are sure the parameters should not throw
|
|
41
|
-
Value value = MaybeUnwrap(obj->Get("foobar"));
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## MaybeUnwrapOr
|
|
45
|
-
|
|
46
|
-
```cpp
|
|
47
|
-
template <typename T>
|
|
48
|
-
T MaybeUnwrapOr(MaybeOrValue<T> maybe, const T& default_value = T());
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
Converts `MaybeOrValue<T>` to `T` by getting the value that wrapped by the
|
|
52
|
-
`Maybe` or return the `default_value` if the `Maybe` is empty.
|
|
53
|
-
|
|
54
|
-
Returns the original value if `NODE_ADDON_API_ENABLE_MAYBE` is not defined.
|
|
55
|
-
|
|
56
|
-
Example:
|
|
57
|
-
|
|
58
|
-
```cpp
|
|
59
|
-
Value CallWithArgs(const CallbackInfo& info) {
|
|
60
|
-
Function func = info[0].As<Function>();
|
|
61
|
-
// We don't care if the operation is throwing or not, just return it back to node-addon-api
|
|
62
|
-
return MaybeUnwrapOr(
|
|
63
|
-
func.Call(std::initializer_list<napi_value>{info[1], info[2], info[3]}));
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## MaybeUnwrapTo
|
|
68
|
-
|
|
69
|
-
```cpp
|
|
70
|
-
template <typename T>
|
|
71
|
-
bool MaybeUnwrapTo(MaybeOrValue<T> maybe, T* out);
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Converts `MaybeOrValue<T>` to `T` by getting the value that wrapped by the
|
|
75
|
-
e`Maybe` or return `false` if the Maybe is empty
|
|
76
|
-
|
|
77
|
-
Copies the `value` to `out` when `NODE_ADDON_API_ENABLE_MAYBE` is not defined
|
|
78
|
-
|
|
79
|
-
Example:
|
|
80
|
-
|
|
81
|
-
```cpp
|
|
82
|
-
Object opts = info[0].As<Object>();
|
|
83
|
-
bool hasProperty = false;
|
|
84
|
-
// The check may throw, but we are going to suppress that.
|
|
85
|
-
if (MaybeUnwrapTo(opts.Has("blocking"), &hasProperty)) {
|
|
86
|
-
isBlocking = hasProperty &&
|
|
87
|
-
MaybeUnwrap(MaybeUnwrap(opts.Get("blocking")).ToBoolean());
|
|
88
|
-
} else {
|
|
89
|
-
env.GetAndClearPendingException();
|
|
90
|
-
}
|
|
91
|
-
```
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
#if (NAPI_VERSION > 5)
|
|
2
|
-
#include <stdio.h>
|
|
3
|
-
#include "napi.h"
|
|
4
|
-
|
|
5
|
-
namespace {
|
|
6
|
-
|
|
7
|
-
class TestAddon : public Napi::Addon<TestAddon> {
|
|
8
|
-
public:
|
|
9
|
-
inline TestAddon(Napi::Env env, Napi::Object exports) {
|
|
10
|
-
DefineAddon(
|
|
11
|
-
exports,
|
|
12
|
-
{InstanceMethod("increment", &TestAddon::Increment),
|
|
13
|
-
InstanceValue(
|
|
14
|
-
"subObject",
|
|
15
|
-
DefineProperties(
|
|
16
|
-
Napi::Object::New(env),
|
|
17
|
-
{InstanceMethod("decrement", &TestAddon::Decrement)}))});
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
~TestAddon() { fprintf(stderr, "TestAddon::~TestAddon\n"); }
|
|
21
|
-
|
|
22
|
-
private:
|
|
23
|
-
Napi::Value Increment(const Napi::CallbackInfo& info) {
|
|
24
|
-
return Napi::Number::New(info.Env(), ++value);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
Napi::Value Decrement(const Napi::CallbackInfo& info) {
|
|
28
|
-
return Napi::Number::New(info.Env(), --value);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
uint32_t value = 42;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
Napi::Value CreateAddon(const Napi::CallbackInfo& info) {
|
|
35
|
-
return TestAddon::Init(info.Env(), Napi::Object::New(info.Env()));
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
} // end of anonymous namespace
|
|
39
|
-
|
|
40
|
-
Napi::Object InitAddon(Napi::Env env) {
|
|
41
|
-
return Napi::Function::New<CreateAddon>(env, "CreateAddon");
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
#endif // (NAPI_VERSION > 5)
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { promisify } = require('util');
|
|
4
|
-
const exec = promisify(require('child_process').exec);
|
|
5
|
-
const { copy, remove } = require('fs-extra');
|
|
6
|
-
const path = require('path');
|
|
7
|
-
const assert = require('assert');
|
|
8
|
-
|
|
9
|
-
const ADDONS_FOLDER = path.join(__dirname, 'addons');
|
|
10
|
-
|
|
11
|
-
const addons = [
|
|
12
|
-
'echo addon',
|
|
13
|
-
'echo-addon'
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
async function beforeAll (addons) {
|
|
17
|
-
console.log(' >Preparing native addons to build');
|
|
18
|
-
for (const addon of addons) {
|
|
19
|
-
await remove(path.join(ADDONS_FOLDER, addon));
|
|
20
|
-
await copy(path.join(__dirname, 'tpl'), path.join(ADDONS_FOLDER, addon));
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
async function test (addon) {
|
|
25
|
-
console.log(` >Building addon: '${addon}'`);
|
|
26
|
-
await exec('npm install', {
|
|
27
|
-
cwd: path.join(ADDONS_FOLDER, addon)
|
|
28
|
-
});
|
|
29
|
-
console.log(` >Running test for: '${addon}'`);
|
|
30
|
-
// Disabled the checks on stderr and stdout because of this issue on npm:
|
|
31
|
-
// Stop using process.umask(): https://github.com/npm/cli/issues/1103
|
|
32
|
-
// We should enable the following checks again after the resolution of
|
|
33
|
-
// the reported issue.
|
|
34
|
-
// assert.strictEqual(stderr, '');
|
|
35
|
-
// assert.ok(stderr.length === 0);
|
|
36
|
-
// assert.ok(stdout.length > 0);
|
|
37
|
-
const binding = require(`${ADDONS_FOLDER}/${addon}`);
|
|
38
|
-
assert.strictEqual(binding.except.echo('except'), 'except');
|
|
39
|
-
assert.strictEqual(binding.except.echo(101), 101);
|
|
40
|
-
assert.strictEqual(binding.noexcept.echo('noexcept'), 'noexcept');
|
|
41
|
-
assert.strictEqual(binding.noexcept.echo(103), 103);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
module.exports = (async function () {
|
|
45
|
-
await beforeAll(addons);
|
|
46
|
-
for (const addon of addons) {
|
|
47
|
-
await test(addon);
|
|
48
|
-
}
|
|
49
|
-
})();
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
#include <napi.h>
|
|
2
|
-
|
|
3
|
-
Napi::Value Echo(const Napi::CallbackInfo& info) {
|
|
4
|
-
Napi::Env env = info.Env();
|
|
5
|
-
if (info.Length() != 1) {
|
|
6
|
-
Napi::TypeError::New(env,
|
|
7
|
-
"Wrong number of arguments. One argument expected.")
|
|
8
|
-
.ThrowAsJavaScriptException();
|
|
9
|
-
}
|
|
10
|
-
return info[0].As<Napi::Value>();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
Napi::Object Init(Napi::Env env, Napi::Object exports) {
|
|
14
|
-
exports.Set(Napi::String::New(env, "echo"), Napi::Function::New(env, Echo));
|
|
15
|
-
return exports;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
NODE_API_MODULE(NODE_GYP_MODULE_NAME, Init)
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
'target_defaults': {
|
|
3
|
-
'include_dirs': [
|
|
4
|
-
"<!(node -p \"require('node-addon-api').include_dir\")"
|
|
5
|
-
],
|
|
6
|
-
'variables': {
|
|
7
|
-
'NAPI_VERSION%': "<!(node -p \"process.env.NAPI_VERSION || process.versions.napi\")",
|
|
8
|
-
'disable_deprecated': "<!(node -p \"process.env['npm_config_disable_deprecated']\")"
|
|
9
|
-
},
|
|
10
|
-
'conditions': [
|
|
11
|
-
['NAPI_VERSION!=""', { 'defines': ['NAPI_VERSION=<@(NAPI_VERSION)'] } ],
|
|
12
|
-
['NAPI_VERSION==2147483647', { 'defines': ['NAPI_EXPERIMENTAL'] } ],
|
|
13
|
-
['disable_deprecated=="true"', {
|
|
14
|
-
'defines': ['NODE_ADDON_API_DISABLE_DEPRECATED']
|
|
15
|
-
}],
|
|
16
|
-
['OS=="mac"', {
|
|
17
|
-
'cflags+': ['-fvisibility=hidden'],
|
|
18
|
-
'xcode_settings': {
|
|
19
|
-
'OTHER_CFLAGS': ['-fvisibility=hidden']
|
|
20
|
-
}
|
|
21
|
-
}]
|
|
22
|
-
],
|
|
23
|
-
'sources': [
|
|
24
|
-
'addon.cc',
|
|
25
|
-
],
|
|
26
|
-
},
|
|
27
|
-
'targets': [
|
|
28
|
-
{
|
|
29
|
-
'target_name': 'addon',
|
|
30
|
-
'defines': [ 'NAPI_CPP_EXCEPTIONS' ],
|
|
31
|
-
'cflags!': [ '-fno-exceptions' ],
|
|
32
|
-
'cflags_cc!': [ '-fno-exceptions' ],
|
|
33
|
-
'msvs_settings': {
|
|
34
|
-
'VCCLCompilerTool': {
|
|
35
|
-
'ExceptionHandling': 1,
|
|
36
|
-
'EnablePREfast': 'true',
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
'xcode_settings': {
|
|
40
|
-
'CLANG_CXX_LIBRARY': 'libc++',
|
|
41
|
-
'MACOSX_DEPLOYMENT_TARGET': '10.7',
|
|
42
|
-
'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
'target_name': 'addon_noexcept',
|
|
47
|
-
'defines': [ 'NAPI_DISABLE_CPP_EXCEPTIONS' ],
|
|
48
|
-
'cflags': [ '-fno-exceptions' ],
|
|
49
|
-
'cflags_cc': [ '-fno-exceptions' ],
|
|
50
|
-
'msvs_settings': {
|
|
51
|
-
'VCCLCompilerTool': {
|
|
52
|
-
'ExceptionHandling': 0,
|
|
53
|
-
'EnablePREfast': 'true',
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
'xcode_settings': {
|
|
57
|
-
'CLANG_CXX_LIBRARY': 'libc++',
|
|
58
|
-
'MACOSX_DEPLOYMENT_TARGET': '10.7',
|
|
59
|
-
'GCC_ENABLE_CPP_EXCEPTIONS': 'NO',
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
],
|
|
63
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
#if (NAPI_VERSION > 5)
|
|
2
|
-
#include <stdio.h>
|
|
3
|
-
#include "napi.h"
|
|
4
|
-
#include "test_helper.h"
|
|
5
|
-
|
|
6
|
-
// An overly elaborate way to get/set a boolean stored in the instance data:
|
|
7
|
-
// 0. The constructor for JS `VerboseIndicator` instances, which have a private
|
|
8
|
-
// member named "verbose", is stored in the instance data.
|
|
9
|
-
// 1. Add a property named "verbose" onto exports served by a getter/setter.
|
|
10
|
-
// 2. The getter returns an object of type VerboseIndicator, which itself has a
|
|
11
|
-
// property named "verbose", also served by a getter/setter:
|
|
12
|
-
// * The getter returns a boolean, indicating whether "verbose" is set.
|
|
13
|
-
// * The setter sets "verbose" on the instance data.
|
|
14
|
-
// 3. The setter sets "verbose" on the instance data.
|
|
15
|
-
|
|
16
|
-
class Addon {
|
|
17
|
-
public:
|
|
18
|
-
class VerboseIndicator : public Napi::ObjectWrap<VerboseIndicator> {
|
|
19
|
-
public:
|
|
20
|
-
VerboseIndicator(const Napi::CallbackInfo& info)
|
|
21
|
-
: Napi::ObjectWrap<VerboseIndicator>(info) {
|
|
22
|
-
info.This().As<Napi::Object>()["verbose"] = Napi::Boolean::New(
|
|
23
|
-
info.Env(), info.Env().GetInstanceData<Addon>()->verbose);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
Napi::Value Getter(const Napi::CallbackInfo& info) {
|
|
27
|
-
return Napi::Boolean::New(info.Env(),
|
|
28
|
-
info.Env().GetInstanceData<Addon>()->verbose);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
void Setter(const Napi::CallbackInfo& info, const Napi::Value& val) {
|
|
32
|
-
info.Env().GetInstanceData<Addon>()->verbose = val.As<Napi::Boolean>();
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
static Napi::FunctionReference Init(Napi::Env env) {
|
|
36
|
-
return Napi::Persistent(DefineClass(
|
|
37
|
-
env,
|
|
38
|
-
"VerboseIndicator",
|
|
39
|
-
{InstanceAccessor<&VerboseIndicator::Getter,
|
|
40
|
-
&VerboseIndicator::Setter>("verbose")}));
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
static Napi::Value Getter(const Napi::CallbackInfo& info) {
|
|
45
|
-
return MaybeUnwrap(
|
|
46
|
-
info.Env().GetInstanceData<Addon>()->VerboseIndicator.New({}));
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
static void Setter(const Napi::CallbackInfo& info) {
|
|
50
|
-
info.Env().GetInstanceData<Addon>()->verbose = info[0].As<Napi::Boolean>();
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
Addon(Napi::Env env) : VerboseIndicator(VerboseIndicator::Init(env)) {}
|
|
54
|
-
~Addon() {
|
|
55
|
-
if (verbose) {
|
|
56
|
-
fprintf(stderr, "addon_data: Addon::~Addon\n");
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
static void DeleteAddon(Napi::Env, Addon* addon, uint32_t* hint) {
|
|
61
|
-
delete addon;
|
|
62
|
-
fprintf(stderr, "hint: %u\n", *hint);
|
|
63
|
-
delete hint;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
static Napi::Object Init(Napi::Env env, Napi::Value jshint) {
|
|
67
|
-
if (!jshint.IsNumber()) {
|
|
68
|
-
NAPI_THROW(Napi::Error::New(env, "Expected number"), Napi::Object());
|
|
69
|
-
}
|
|
70
|
-
uint32_t hint = jshint.As<Napi::Number>();
|
|
71
|
-
if (hint == 0)
|
|
72
|
-
env.SetInstanceData(new Addon(env));
|
|
73
|
-
else
|
|
74
|
-
env.SetInstanceData<Addon, uint32_t, DeleteAddon>(new Addon(env),
|
|
75
|
-
new uint32_t(hint));
|
|
76
|
-
Napi::Object result = Napi::Object::New(env);
|
|
77
|
-
result.DefineProperties({
|
|
78
|
-
Napi::PropertyDescriptor::Accessor<Getter, Setter>("verbose"),
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
return result;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
private:
|
|
85
|
-
bool verbose = false;
|
|
86
|
-
Napi::FunctionReference VerboseIndicator;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
// We use an addon factory so we can cover both the case where there is an
|
|
90
|
-
// instance data hint and the case where there isn't.
|
|
91
|
-
static Napi::Value AddonFactory(const Napi::CallbackInfo& info) {
|
|
92
|
-
return Addon::Init(info.Env(), info[0]);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
Napi::Object InitAddonData(Napi::Env env) {
|
|
96
|
-
return Napi::Function::New(env, AddonFactory);
|
|
97
|
-
}
|
|
98
|
-
#endif // (NAPI_VERSION > 5)
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const common = require('./common');
|
|
4
|
-
|
|
5
|
-
module.exports = common.runTest(test);
|
|
6
|
-
|
|
7
|
-
async function test () {
|
|
8
|
-
await common.runTestInChildProcess({
|
|
9
|
-
suite: 'addon_data',
|
|
10
|
-
testName: 'workingCode'
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
await common.runTestInChildProcess({
|
|
14
|
-
suite: 'addon_data',
|
|
15
|
-
testName: 'cleanupWithoutHint',
|
|
16
|
-
expectedStderr: ['addon_data: Addon::~Addon']
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
await common.runTestInChildProcess({
|
|
20
|
-
suite: 'addon_data',
|
|
21
|
-
testName: 'cleanupWithHint',
|
|
22
|
-
expectedStderr: ['addon_data: Addon::~Addon', 'hint: 42']
|
|
23
|
-
});
|
|
24
|
-
}
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
|
|
3
|
-
using namespace Napi;
|
|
4
|
-
|
|
5
|
-
namespace {
|
|
6
|
-
|
|
7
|
-
const size_t testLength = 4;
|
|
8
|
-
uint8_t testData[testLength];
|
|
9
|
-
int finalizeCount = 0;
|
|
10
|
-
|
|
11
|
-
void InitData(uint8_t* data, size_t length) {
|
|
12
|
-
for (size_t i = 0; i < length; i++) {
|
|
13
|
-
data[i] = static_cast<uint8_t>(i);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
bool VerifyData(uint8_t* data, size_t length) {
|
|
18
|
-
for (size_t i = 0; i < length; i++) {
|
|
19
|
-
if (data[i] != static_cast<uint8_t>(i)) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
Value CreateBuffer(const CallbackInfo& info) {
|
|
27
|
-
ArrayBuffer buffer = ArrayBuffer::New(info.Env(), testLength);
|
|
28
|
-
|
|
29
|
-
if (buffer.ByteLength() != testLength) {
|
|
30
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
31
|
-
.ThrowAsJavaScriptException();
|
|
32
|
-
return Value();
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
InitData(static_cast<uint8_t*>(buffer.Data()), testLength);
|
|
36
|
-
return buffer;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
Value CreateExternalBuffer(const CallbackInfo& info) {
|
|
40
|
-
finalizeCount = 0;
|
|
41
|
-
|
|
42
|
-
ArrayBuffer buffer = ArrayBuffer::New(info.Env(), testData, testLength);
|
|
43
|
-
|
|
44
|
-
if (buffer.ByteLength() != testLength) {
|
|
45
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
46
|
-
.ThrowAsJavaScriptException();
|
|
47
|
-
return Value();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (buffer.Data() != testData) {
|
|
51
|
-
Error::New(info.Env(), "Incorrect buffer data.")
|
|
52
|
-
.ThrowAsJavaScriptException();
|
|
53
|
-
return Value();
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
InitData(testData, testLength);
|
|
57
|
-
return buffer;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
Value CreateExternalBufferWithFinalize(const CallbackInfo& info) {
|
|
61
|
-
finalizeCount = 0;
|
|
62
|
-
|
|
63
|
-
uint8_t* data = new uint8_t[testLength];
|
|
64
|
-
|
|
65
|
-
ArrayBuffer buffer = ArrayBuffer::New(
|
|
66
|
-
info.Env(), data, testLength, [](Env /*env*/, void* finalizeData) {
|
|
67
|
-
delete[] static_cast<uint8_t*>(finalizeData);
|
|
68
|
-
finalizeCount++;
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
if (buffer.ByteLength() != testLength) {
|
|
72
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
73
|
-
.ThrowAsJavaScriptException();
|
|
74
|
-
return Value();
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (buffer.Data() != data) {
|
|
78
|
-
Error::New(info.Env(), "Incorrect buffer data.")
|
|
79
|
-
.ThrowAsJavaScriptException();
|
|
80
|
-
return Value();
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
InitData(data, testLength);
|
|
84
|
-
return buffer;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
Value CreateExternalBufferWithFinalizeHint(const CallbackInfo& info) {
|
|
88
|
-
finalizeCount = 0;
|
|
89
|
-
|
|
90
|
-
uint8_t* data = new uint8_t[testLength];
|
|
91
|
-
|
|
92
|
-
char* hint = nullptr;
|
|
93
|
-
ArrayBuffer buffer = ArrayBuffer::New(
|
|
94
|
-
info.Env(),
|
|
95
|
-
data,
|
|
96
|
-
testLength,
|
|
97
|
-
[](Env /*env*/, void* finalizeData, char* /*finalizeHint*/) {
|
|
98
|
-
delete[] static_cast<uint8_t*>(finalizeData);
|
|
99
|
-
finalizeCount++;
|
|
100
|
-
},
|
|
101
|
-
hint);
|
|
102
|
-
|
|
103
|
-
if (buffer.ByteLength() != testLength) {
|
|
104
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
105
|
-
.ThrowAsJavaScriptException();
|
|
106
|
-
return Value();
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if (buffer.Data() != data) {
|
|
110
|
-
Error::New(info.Env(), "Incorrect buffer data.")
|
|
111
|
-
.ThrowAsJavaScriptException();
|
|
112
|
-
return Value();
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
InitData(data, testLength);
|
|
116
|
-
return buffer;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
void CheckBuffer(const CallbackInfo& info) {
|
|
120
|
-
if (!info[0].IsArrayBuffer()) {
|
|
121
|
-
Error::New(info.Env(), "A buffer was expected.")
|
|
122
|
-
.ThrowAsJavaScriptException();
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
ArrayBuffer buffer = info[0].As<ArrayBuffer>();
|
|
127
|
-
|
|
128
|
-
if (buffer.ByteLength() != testLength) {
|
|
129
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
130
|
-
.ThrowAsJavaScriptException();
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (!VerifyData(static_cast<uint8_t*>(buffer.Data()), testLength)) {
|
|
135
|
-
Error::New(info.Env(), "Incorrect buffer data.")
|
|
136
|
-
.ThrowAsJavaScriptException();
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
Value GetFinalizeCount(const CallbackInfo& info) {
|
|
142
|
-
return Number::New(info.Env(), finalizeCount);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
Value CreateBufferWithConstructor(const CallbackInfo& info) {
|
|
146
|
-
ArrayBuffer buffer = ArrayBuffer::New(info.Env(), testLength);
|
|
147
|
-
if (buffer.ByteLength() != testLength) {
|
|
148
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
149
|
-
.ThrowAsJavaScriptException();
|
|
150
|
-
return Value();
|
|
151
|
-
}
|
|
152
|
-
InitData(static_cast<uint8_t*>(buffer.Data()), testLength);
|
|
153
|
-
ArrayBuffer buffer2(info.Env(), buffer);
|
|
154
|
-
return buffer2;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
Value CheckEmptyBuffer(const CallbackInfo& info) {
|
|
158
|
-
ArrayBuffer buffer;
|
|
159
|
-
return Boolean::New(info.Env(), buffer.IsEmpty());
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
void CheckDetachUpdatesData(const CallbackInfo& info) {
|
|
163
|
-
if (!info[0].IsArrayBuffer()) {
|
|
164
|
-
Error::New(info.Env(), "A buffer was expected.")
|
|
165
|
-
.ThrowAsJavaScriptException();
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
ArrayBuffer buffer = info[0].As<ArrayBuffer>();
|
|
170
|
-
|
|
171
|
-
// This potentially causes the buffer to cache its data pointer and length.
|
|
172
|
-
buffer.Data();
|
|
173
|
-
buffer.ByteLength();
|
|
174
|
-
|
|
175
|
-
#if NAPI_VERSION >= 7
|
|
176
|
-
if (buffer.IsDetached()) {
|
|
177
|
-
Error::New(info.Env(), "Buffer should not be detached.")
|
|
178
|
-
.ThrowAsJavaScriptException();
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
#endif
|
|
182
|
-
|
|
183
|
-
if (info.Length() == 2) {
|
|
184
|
-
// Detach externally (in JavaScript).
|
|
185
|
-
if (!info[1].IsFunction()) {
|
|
186
|
-
Error::New(info.Env(), "A function was expected.")
|
|
187
|
-
.ThrowAsJavaScriptException();
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
Function detach = info[1].As<Function>();
|
|
192
|
-
detach.Call({});
|
|
193
|
-
} else {
|
|
194
|
-
#if NAPI_VERSION >= 7
|
|
195
|
-
// Detach directly.
|
|
196
|
-
buffer.Detach();
|
|
197
|
-
#else
|
|
198
|
-
return;
|
|
199
|
-
#endif
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
#if NAPI_VERSION >= 7
|
|
203
|
-
if (!buffer.IsDetached()) {
|
|
204
|
-
Error::New(info.Env(), "Buffer should be detached.")
|
|
205
|
-
.ThrowAsJavaScriptException();
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
#endif
|
|
209
|
-
|
|
210
|
-
if (buffer.Data() != nullptr) {
|
|
211
|
-
Error::New(info.Env(), "Incorrect data pointer.")
|
|
212
|
-
.ThrowAsJavaScriptException();
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
if (buffer.ByteLength() != 0) {
|
|
217
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
218
|
-
.ThrowAsJavaScriptException();
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
} // end anonymous namespace
|
|
224
|
-
|
|
225
|
-
Object InitArrayBuffer(Env env) {
|
|
226
|
-
Object exports = Object::New(env);
|
|
227
|
-
|
|
228
|
-
exports["createBuffer"] = Function::New(env, CreateBuffer);
|
|
229
|
-
exports["createExternalBuffer"] = Function::New(env, CreateExternalBuffer);
|
|
230
|
-
exports["createExternalBufferWithFinalize"] =
|
|
231
|
-
Function::New(env, CreateExternalBufferWithFinalize);
|
|
232
|
-
exports["createExternalBufferWithFinalizeHint"] =
|
|
233
|
-
Function::New(env, CreateExternalBufferWithFinalizeHint);
|
|
234
|
-
exports["checkBuffer"] = Function::New(env, CheckBuffer);
|
|
235
|
-
exports["getFinalizeCount"] = Function::New(env, GetFinalizeCount);
|
|
236
|
-
exports["createBufferWithConstructor"] =
|
|
237
|
-
Function::New(env, CreateBufferWithConstructor);
|
|
238
|
-
exports["checkEmptyBuffer"] = Function::New(env, CheckEmptyBuffer);
|
|
239
|
-
exports["checkDetachUpdatesData"] =
|
|
240
|
-
Function::New(env, CheckDetachUpdatesData);
|
|
241
|
-
|
|
242
|
-
return exports;
|
|
243
|
-
}
|