koffi 0.9.34 → 0.9.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CMakeLists.txt +2 -1
- package/README.md +16 -13
- package/package.json +5 -4
- package/src/call_arm32.cc +6 -2
- package/src/call_arm64.cc +6 -2
- package/src/call_x64_sysv.cc +6 -2
- package/src/call_x64_win.cc +6 -2
- package/src/call_x86.cc +7 -3
- package/src/ffi.cc +77 -59
- package/src/ffi.hh +2 -2
- package/src/parser.cc +246 -0
- package/src/parser.hh +63 -0
- package/src/util.cc +23 -0
- package/src/util.hh +3 -0
- package/test/registry/machines.json +70 -0
- package/test/test.js +116 -7
- package/test/tests/misc.js +16 -16
- package/test/tests/raylib.js +8 -8
- package/test/tests/sqlite.js +9 -9
- package/vendor/node-addon-api/CODE_OF_CONDUCT.md +4 -0
- package/vendor/node-addon-api/CONTRIBUTING.md +93 -0
- package/vendor/node-addon-api/appveyor.yml +37 -0
- package/vendor/node-addon-api/benchmark/README.md +47 -0
- package/vendor/node-addon-api/benchmark/binding.gyp +25 -0
- package/vendor/node-addon-api/benchmark/function_args.cc +217 -0
- package/vendor/node-addon-api/benchmark/function_args.js +60 -0
- package/vendor/node-addon-api/benchmark/index.js +34 -0
- package/vendor/node-addon-api/benchmark/property_descriptor.cc +91 -0
- package/vendor/node-addon-api/benchmark/property_descriptor.js +37 -0
- package/vendor/node-addon-api/doc/addon.md +163 -0
- package/vendor/node-addon-api/doc/array.md +81 -0
- package/vendor/node-addon-api/doc/array_buffer.md +155 -0
- package/vendor/node-addon-api/doc/async_context.md +86 -0
- package/vendor/node-addon-api/doc/async_operations.md +31 -0
- package/vendor/node-addon-api/doc/async_worker.md +427 -0
- package/vendor/node-addon-api/doc/async_worker_variants.md +557 -0
- package/vendor/node-addon-api/doc/bigint.md +97 -0
- package/vendor/node-addon-api/doc/boolean.md +68 -0
- package/vendor/node-addon-api/doc/buffer.md +150 -0
- package/vendor/node-addon-api/doc/callback_scope.md +54 -0
- package/vendor/node-addon-api/doc/callbackinfo.md +97 -0
- package/vendor/node-addon-api/doc/checker-tool.md +32 -0
- package/vendor/node-addon-api/doc/class_property_descriptor.md +123 -0
- package/vendor/node-addon-api/doc/cmake-js.md +68 -0
- package/vendor/node-addon-api/doc/conversion-tool.md +28 -0
- package/vendor/node-addon-api/doc/creating_a_release.md +62 -0
- package/vendor/node-addon-api/doc/dataview.md +248 -0
- package/vendor/node-addon-api/doc/date.md +68 -0
- package/vendor/node-addon-api/doc/env.md +196 -0
- package/vendor/node-addon-api/doc/error.md +120 -0
- package/vendor/node-addon-api/doc/error_handling.md +254 -0
- package/vendor/node-addon-api/doc/escapable_handle_scope.md +80 -0
- package/vendor/node-addon-api/doc/external.md +63 -0
- package/vendor/node-addon-api/doc/function.md +402 -0
- package/vendor/node-addon-api/doc/function_reference.md +238 -0
- package/vendor/node-addon-api/doc/generator.md +13 -0
- package/vendor/node-addon-api/doc/handle_scope.md +63 -0
- package/vendor/node-addon-api/doc/hierarchy.md +91 -0
- package/vendor/node-addon-api/doc/instance_wrap.md +408 -0
- package/vendor/node-addon-api/doc/maybe.md +76 -0
- package/vendor/node-addon-api/doc/memory_management.md +27 -0
- package/vendor/node-addon-api/doc/name.md +29 -0
- package/vendor/node-addon-api/doc/node-gyp.md +82 -0
- package/vendor/node-addon-api/doc/number.md +163 -0
- package/vendor/node-addon-api/doc/object.md +411 -0
- package/vendor/node-addon-api/doc/object_lifetime_management.md +83 -0
- package/vendor/node-addon-api/doc/object_reference.md +117 -0
- package/vendor/node-addon-api/doc/object_wrap.md +588 -0
- package/vendor/node-addon-api/doc/prebuild_tools.md +16 -0
- package/vendor/node-addon-api/doc/promises.md +79 -0
- package/vendor/node-addon-api/doc/property_descriptor.md +286 -0
- package/vendor/node-addon-api/doc/propertylvalue.md +50 -0
- package/vendor/node-addon-api/doc/range_error.md +59 -0
- package/vendor/node-addon-api/doc/reference.md +113 -0
- package/vendor/node-addon-api/doc/setup.md +110 -0
- package/vendor/node-addon-api/doc/string.md +93 -0
- package/vendor/node-addon-api/doc/symbol.md +61 -0
- package/vendor/node-addon-api/doc/threadsafe.md +121 -0
- package/vendor/node-addon-api/doc/threadsafe_function.md +290 -0
- package/vendor/node-addon-api/doc/type_error.md +59 -0
- package/vendor/node-addon-api/doc/typed_array.md +78 -0
- package/vendor/node-addon-api/doc/typed_array_of.md +137 -0
- package/vendor/node-addon-api/doc/typed_threadsafe_function.md +306 -0
- package/vendor/node-addon-api/doc/value.md +340 -0
- package/vendor/node-addon-api/doc/version_management.md +43 -0
- package/vendor/node-addon-api/package.json +415 -0
- package/vendor/node-addon-api/test/README.md +91 -0
- package/vendor/node-addon-api/test/addon.cc +36 -0
- package/vendor/node-addon-api/test/addon.js +11 -0
- package/vendor/node-addon-api/test/addon_build/index.js +49 -0
- package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +17 -0
- package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +62 -0
- package/vendor/node-addon-api/test/addon_build/tpl/index.js +9 -0
- package/vendor/node-addon-api/test/addon_build/tpl/package.json +11 -0
- package/vendor/node-addon-api/test/addon_data.cc +99 -0
- package/vendor/node-addon-api/test/addon_data.js +46 -0
- package/vendor/node-addon-api/test/array_buffer.cc +243 -0
- package/vendor/node-addon-api/test/array_buffer.js +69 -0
- package/vendor/node-addon-api/test/async_context.cc +36 -0
- package/vendor/node-addon-api/test/async_context.js +122 -0
- package/vendor/node-addon-api/test/async_progress_queue_worker.cc +83 -0
- package/vendor/node-addon-api/test/async_progress_queue_worker.js +46 -0
- package/vendor/node-addon-api/test/async_progress_worker.cc +134 -0
- package/vendor/node-addon-api/test/async_progress_worker.js +61 -0
- package/vendor/node-addon-api/test/async_worker.cc +106 -0
- package/vendor/node-addon-api/test/async_worker.js +179 -0
- package/vendor/node-addon-api/test/async_worker_nocallback.js +13 -0
- package/vendor/node-addon-api/test/async_worker_persistent.cc +63 -0
- package/vendor/node-addon-api/test/async_worker_persistent.js +24 -0
- package/vendor/node-addon-api/test/basic_types/array.cc +40 -0
- package/vendor/node-addon-api/test/basic_types/array.js +35 -0
- package/vendor/node-addon-api/test/basic_types/boolean.cc +38 -0
- package/vendor/node-addon-api/test/basic_types/boolean.js +35 -0
- package/vendor/node-addon-api/test/basic_types/number.cc +99 -0
- package/vendor/node-addon-api/test/basic_types/number.js +114 -0
- package/vendor/node-addon-api/test/basic_types/value.cc +120 -0
- package/vendor/node-addon-api/test/basic_types/value.js +133 -0
- package/vendor/node-addon-api/test/bigint.cc +91 -0
- package/vendor/node-addon-api/test/bigint.js +53 -0
- package/vendor/node-addon-api/test/binding-swallowexcept.cc +12 -0
- package/vendor/node-addon-api/test/binding.cc +173 -0
- package/vendor/node-addon-api/test/binding.gyp +124 -0
- package/vendor/node-addon-api/test/buffer.cc +183 -0
- package/vendor/node-addon-api/test/buffer.js +69 -0
- package/vendor/node-addon-api/test/callbackscope.cc +22 -0
- package/vendor/node-addon-api/test/callbackscope.js +49 -0
- package/vendor/node-addon-api/test/common/index.js +114 -0
- package/vendor/node-addon-api/test/common/test_helper.h +71 -0
- package/vendor/node-addon-api/test/dataview/dataview.cc +48 -0
- package/vendor/node-addon-api/test/dataview/dataview.js +35 -0
- package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +115 -0
- package/vendor/node-addon-api/test/dataview/dataview_read_write.js +90 -0
- package/vendor/node-addon-api/test/date.cc +44 -0
- package/vendor/node-addon-api/test/date.js +18 -0
- package/vendor/node-addon-api/test/env_cleanup.cc +88 -0
- package/vendor/node-addon-api/test/env_cleanup.js +56 -0
- package/vendor/node-addon-api/test/error.cc +287 -0
- package/vendor/node-addon-api/test/error.js +81 -0
- package/vendor/node-addon-api/test/error_handling_for_primitives.cc +13 -0
- package/vendor/node-addon-api/test/error_handling_for_primitives.js +29 -0
- package/vendor/node-addon-api/test/error_terminating_environment.js +95 -0
- package/vendor/node-addon-api/test/external.cc +81 -0
- package/vendor/node-addon-api/test/external.js +88 -0
- package/vendor/node-addon-api/test/function.cc +324 -0
- package/vendor/node-addon-api/test/function.js +133 -0
- package/vendor/node-addon-api/test/function_reference.cc +202 -0
- package/vendor/node-addon-api/test/function_reference.js +157 -0
- package/vendor/node-addon-api/test/globalObject/global_object.cc +61 -0
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +31 -0
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +61 -0
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +40 -0
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +57 -0
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +28 -0
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +48 -0
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +31 -0
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +58 -0
- package/vendor/node-addon-api/test/handlescope.cc +60 -0
- package/vendor/node-addon-api/test/handlescope.js +14 -0
- package/vendor/node-addon-api/test/index.js +159 -0
- package/vendor/node-addon-api/test/maybe/check.cc +23 -0
- package/vendor/node-addon-api/test/maybe/index.js +38 -0
- package/vendor/node-addon-api/test/memory_management.cc +17 -0
- package/vendor/node-addon-api/test/memory_management.js +9 -0
- package/vendor/node-addon-api/test/movable_callbacks.cc +23 -0
- package/vendor/node-addon-api/test/movable_callbacks.js +21 -0
- package/vendor/node-addon-api/test/name.cc +108 -0
- package/vendor/node-addon-api/test/name.js +59 -0
- package/vendor/node-addon-api/test/napi_child.js +14 -0
- package/vendor/node-addon-api/test/object/delete_property.cc +38 -0
- package/vendor/node-addon-api/test/object/delete_property.js +41 -0
- package/vendor/node-addon-api/test/object/finalizer.cc +29 -0
- package/vendor/node-addon-api/test/object/finalizer.js +28 -0
- package/vendor/node-addon-api/test/object/get_property.cc +34 -0
- package/vendor/node-addon-api/test/object/get_property.js +40 -0
- package/vendor/node-addon-api/test/object/has_own_property.cc +34 -0
- package/vendor/node-addon-api/test/object/has_own_property.js +34 -0
- package/vendor/node-addon-api/test/object/has_property.cc +38 -0
- package/vendor/node-addon-api/test/object/has_property.js +37 -0
- package/vendor/node-addon-api/test/object/object.cc +350 -0
- package/vendor/node-addon-api/test/object/object.js +217 -0
- package/vendor/node-addon-api/test/object/object_deprecated.cc +66 -0
- package/vendor/node-addon-api/test/object/object_deprecated.js +47 -0
- package/vendor/node-addon-api/test/object/object_freeze_seal.cc +25 -0
- package/vendor/node-addon-api/test/object/object_freeze_seal.js +61 -0
- package/vendor/node-addon-api/test/object/set_property.cc +45 -0
- package/vendor/node-addon-api/test/object/set_property.js +30 -0
- package/vendor/node-addon-api/test/object/subscript_operator.cc +58 -0
- package/vendor/node-addon-api/test/object/subscript_operator.js +17 -0
- package/vendor/node-addon-api/test/object_reference.cc +219 -0
- package/vendor/node-addon-api/test/object_reference.js +259 -0
- package/vendor/node-addon-api/test/objectwrap.cc +268 -0
- package/vendor/node-addon-api/test/objectwrap.js +284 -0
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +26 -0
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +18 -0
- package/vendor/node-addon-api/test/objectwrap_function.cc +45 -0
- package/vendor/node-addon-api/test/objectwrap_function.js +22 -0
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +30 -0
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +13 -0
- package/vendor/node-addon-api/test/objectwrap_removewrap.cc +45 -0
- package/vendor/node-addon-api/test/objectwrap_removewrap.js +40 -0
- package/vendor/node-addon-api/test/objectwrap_worker_thread.js +19 -0
- package/vendor/node-addon-api/test/promise.cc +29 -0
- package/vendor/node-addon-api/test/promise.js +18 -0
- package/vendor/node-addon-api/test/reference.cc +24 -0
- package/vendor/node-addon-api/test/reference.js +14 -0
- package/vendor/node-addon-api/test/run_script.cc +56 -0
- package/vendor/node-addon-api/test/run_script.js +45 -0
- package/vendor/node-addon-api/test/symbol.cc +79 -0
- package/vendor/node-addon-api/test/symbol.js +73 -0
- package/vendor/node-addon-api/test/testUtil.js +54 -0
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +195 -0
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +188 -0
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +63 -0
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +12 -0
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +115 -0
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +14 -0
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +26 -0
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +7 -0
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +225 -0
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +59 -0
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +42 -0
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +53 -0
- package/vendor/node-addon-api/test/thunking_manual.cc +140 -0
- package/vendor/node-addon-api/test/thunking_manual.js +17 -0
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +215 -0
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +188 -0
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +68 -0
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +12 -0
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +127 -0
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +14 -0
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +28 -0
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +7 -0
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +237 -0
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +59 -0
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +53 -0
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +53 -0
- package/vendor/node-addon-api/test/typedarray-bigint.js +58 -0
- package/vendor/node-addon-api/test/typedarray.cc +216 -0
- package/vendor/node-addon-api/test/typedarray.js +69 -0
- package/vendor/node-addon-api/test/version_management.cc +27 -0
- package/vendor/node-addon-api/test/version_management.js +31 -0
- package/vendor/node-addon-api/unit-test/README.md +28 -0
- package/vendor/node-addon-api/unit-test/binding-file-template.js +39 -0
- package/vendor/node-addon-api/unit-test/binding.gyp +72 -0
- package/vendor/node-addon-api/unit-test/exceptions.js +32 -0
- package/vendor/node-addon-api/unit-test/generate-binding-cc.js +61 -0
- package/vendor/node-addon-api/unit-test/injectTestParams.js +101 -0
- package/vendor/node-addon-api/unit-test/listOfTestModules.js +88 -0
- package/vendor/node-addon-api/unit-test/matchModules.js +65 -0
- package/vendor/node-addon-api/unit-test/setup.js +13 -0
- package/vendor/node-addon-api/unit-test/spawnTask.js +26 -0
- package/vendor/node-addon-api/unit-test/test.js +30 -0
- package/vendor/raylib/projects/VS2019/examples/audio_module_playing.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/audio_multichannel_sound.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/audio_music_stream.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/audio_raw_stream.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/audio_sound_loading.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_2d_camera.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_2d_camera_platformer.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_3d_camera_first_person.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_3d_camera_free.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_3d_camera_mode.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_3d_picking.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_basic_window.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_custom_logging.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_drop_files.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_input_gamepad.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_input_gestures.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_input_keys.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_input_mouse.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_input_mouse_wheel.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_input_multitouch.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_loading_thread.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_quat_conversion.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_random_values.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_scissor_test.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_split_screen.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_storage_values.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_vr_simulator.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_window_flags.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_window_letterbox.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/core_world_screen.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/easings_testbed.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/embedded_files_loading.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_animation.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_billboard.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_box_collisions.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_cubicmap.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_first_person_maze.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_geometric_shapes.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_heightmap.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_loading.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_loading_gltf.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_loading_vox.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_mesh_generation.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_mesh_picking.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_orthographic_projection.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_rlgl_solar_system.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_skybox.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_waving_cubes.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/models_yaw_pitch_roll.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/physics_demo.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/physics_friction.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/physics_movement.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/physics_restitution.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/physics_shatter.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/raudio_standalone.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/rlgl_standalone.vcxproj +391 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_basic_lighting.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_custom_uniform.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_eratosthenes.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_fog.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_hot_reloading.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_julia_set.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_mesh_instancing.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_model_shader.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_multi_sample2d.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_palette_switch.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_postprocessing.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_raymarching.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_shapes_textures.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_simple_mask.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_spotlight.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_texture_drawing.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shaders_texture_waves.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_basic_shapes.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_bouncing_ball.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_collision_area.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_colors_palette.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_draw_circle_sector.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_draw_rectangle_rounded.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_draw_ring.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_easings_ball_anim.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_easings_box_anim.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_easings_rectangle_array.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_following_eyes.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_lines_bezier.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_logo_raylib.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_logo_raylib_anim.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/shapes_rectangle_scaling.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/text_font_filters.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/text_font_loading.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/text_font_sdf.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/text_font_spritefont.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/text_format_text.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/text_input_box.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/text_raylib_fonts.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/text_rectangle_bounds.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/text_unicode.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/text_writing_anim.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_background_scrolling.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_blend_modes.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_bunnymark.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_draw_tiled.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_image_drawing.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_image_generation.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_image_loading.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_image_processing.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_image_text.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_logo_raylib.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_mouse_painting.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_npatch_drawing.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_particles_blending.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_raw_data.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_rectangle.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_sprite_button.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_sprite_explosion.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_srcrec_dstrec.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/examples/textures_to_image.vcxproj +387 -0
- package/vendor/raylib/projects/VS2019/raylib/raylib.vcxproj +341 -0
- package/vendor/raylib/projects/VS2019/raylib.sln +2274 -0
- package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj +226 -0
- package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.filters +10 -0
- package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.user +4 -0
- package/vendor/raylib/projects/VS2019-Android/raylib_android.sln +75 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Array
|
|
2
|
+
|
|
3
|
+
Class [`Napi::Array`][] inherits from class [`Napi::Object`][].
|
|
4
|
+
|
|
5
|
+
Arrays are native representations of JavaScript Arrays. `Napi::Array` is a wrapper
|
|
6
|
+
around `napi_value` representing a JavaScript Array.
|
|
7
|
+
|
|
8
|
+
[`Napi::TypedArray`][] and [`Napi::ArrayBuffer`][] correspond to JavaScript data
|
|
9
|
+
types such as [`Napi::Int32Array`][] and [`Napi::ArrayBuffer`][], respectively,
|
|
10
|
+
that can be used for transferring large amounts of data from JavaScript to the
|
|
11
|
+
native side. An example illustrating the use of a JavaScript-provided
|
|
12
|
+
`ArrayBuffer` in native code is available [here](https://github.com/nodejs/node-addon-examples/tree/HEAD/array_buffer_to_native/node-addon-api).
|
|
13
|
+
|
|
14
|
+
## Constructor
|
|
15
|
+
```cpp
|
|
16
|
+
Napi::Array::Array();
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Returns an empty array.
|
|
20
|
+
|
|
21
|
+
If an error occurs, a `Napi::Error` will be thrown. If C++ exceptions are not
|
|
22
|
+
being used, callers should check the result of `Env::IsExceptionPending` before
|
|
23
|
+
attempting to use the returned value.
|
|
24
|
+
|
|
25
|
+
```cpp
|
|
26
|
+
Napi::Array::Array(napi_env env, napi_value value);
|
|
27
|
+
```
|
|
28
|
+
- `[in] env` - The environment in which to create the array.
|
|
29
|
+
- `[in] value` - The primitive to wrap.
|
|
30
|
+
|
|
31
|
+
Returns a `Napi::Array` wrapping a `napi_value`.
|
|
32
|
+
|
|
33
|
+
If an error occurs, a `Napi::Error` will get thrown. If C++ exceptions are not
|
|
34
|
+
being used, callers should check the result of `Env::IsExceptionPending` before
|
|
35
|
+
attempting to use the returned value.
|
|
36
|
+
|
|
37
|
+
## Methods
|
|
38
|
+
|
|
39
|
+
### New
|
|
40
|
+
```cpp
|
|
41
|
+
static Napi::Array Napi::Array::New(napi_env env);
|
|
42
|
+
```
|
|
43
|
+
- `[in] env` - The environment in which to create the array.
|
|
44
|
+
|
|
45
|
+
Returns a new `Napi::Array`.
|
|
46
|
+
|
|
47
|
+
If an error occurs, a `Napi::Error` will get thrown. If C++ exceptions are not
|
|
48
|
+
being used, callers should check the result of `Env::IsExceptionPending` before
|
|
49
|
+
attempting to use the returned value.
|
|
50
|
+
|
|
51
|
+
### New
|
|
52
|
+
|
|
53
|
+
```cpp
|
|
54
|
+
static Napi::Array Napi::Array::New(napi_env env, size_t length);
|
|
55
|
+
```
|
|
56
|
+
- `[in] env` - The environment in which to create the array.
|
|
57
|
+
- `[in] length` - The length of the array.
|
|
58
|
+
|
|
59
|
+
Returns a new `Napi::Array` with the given length.
|
|
60
|
+
|
|
61
|
+
If an error occurs, a `Napi::Error` will get thrown. If C++ exceptions are not
|
|
62
|
+
being used, callers should check the result of `Env::IsExceptionPending` before
|
|
63
|
+
attempting to use the returned value.
|
|
64
|
+
|
|
65
|
+
### Length
|
|
66
|
+
```cpp
|
|
67
|
+
uint32_t Napi::Array::Length() const;
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Returns the length of the array.
|
|
71
|
+
|
|
72
|
+
Note:
|
|
73
|
+
This can execute JavaScript code implicitly according to JavaScript semantics.
|
|
74
|
+
If an error occurs, a `Napi::Error` will get thrown. If C++ exceptions are not
|
|
75
|
+
being used, callers should check the result of `Env::IsExceptionPending` before
|
|
76
|
+
attempting to use the returned value.
|
|
77
|
+
|
|
78
|
+
[`Napi::ArrayBuffer`]: ./array_buffer.md
|
|
79
|
+
[`Napi::Int32Array`]: ./typed_array_of.md
|
|
80
|
+
[`Napi::Object`]: ./object.md
|
|
81
|
+
[`Napi::TypedArray`]: ./typed_array.md
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# ArrayBuffer
|
|
2
|
+
|
|
3
|
+
Class `Napi::ArrayBuffer` inherits from class [`Napi::Object`][].
|
|
4
|
+
|
|
5
|
+
The `Napi::ArrayBuffer` class corresponds to the
|
|
6
|
+
[JavaScript `ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
|
|
7
|
+
class.
|
|
8
|
+
|
|
9
|
+
## Methods
|
|
10
|
+
|
|
11
|
+
### New
|
|
12
|
+
|
|
13
|
+
Allocates a new `Napi::ArrayBuffer` instance with a given length.
|
|
14
|
+
|
|
15
|
+
```cpp
|
|
16
|
+
static Napi::ArrayBuffer Napi::ArrayBuffer::New(napi_env env, size_t byteLength);
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
- `[in] env`: The environment in which to create the `Napi::ArrayBuffer` instance.
|
|
20
|
+
- `[in] byteLength`: The length to be allocated, in bytes.
|
|
21
|
+
|
|
22
|
+
Returns a new `Napi::ArrayBuffer` instance.
|
|
23
|
+
|
|
24
|
+
### New
|
|
25
|
+
|
|
26
|
+
Wraps the provided external data into a new `Napi::ArrayBuffer` instance.
|
|
27
|
+
|
|
28
|
+
The `Napi::ArrayBuffer` instance does not assume ownership for the data and
|
|
29
|
+
expects it to be valid for the lifetime of the instance. Since the
|
|
30
|
+
`Napi::ArrayBuffer` is subject to garbage collection this overload is only
|
|
31
|
+
suitable for data which is static and never needs to be freed.
|
|
32
|
+
This factory method will not provide the caller with an opportunity to free the
|
|
33
|
+
data when the `Napi::ArrayBuffer` gets garbage-collected. If you need to free
|
|
34
|
+
the data retained by the `Napi::ArrayBuffer` object please use other
|
|
35
|
+
variants of the `Napi::ArrayBuffer::New` factory method that accept
|
|
36
|
+
`Napi::Finalizer`, which is a function that will be invoked when the
|
|
37
|
+
`Napi::ArrayBuffer` object has been destroyed.
|
|
38
|
+
|
|
39
|
+
```cpp
|
|
40
|
+
static Napi::ArrayBuffer Napi::ArrayBuffer::New(napi_env env, void* externalData, size_t byteLength);
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
- `[in] env`: The environment in which to create the `Napi::ArrayBuffer` instance.
|
|
44
|
+
- `[in] externalData`: The pointer to the external data to wrap.
|
|
45
|
+
- `[in] byteLength`: The length of the `externalData`, in bytes.
|
|
46
|
+
|
|
47
|
+
Returns a new `Napi::ArrayBuffer` instance.
|
|
48
|
+
|
|
49
|
+
### New
|
|
50
|
+
|
|
51
|
+
Wraps the provided external data into a new `Napi::ArrayBuffer` instance.
|
|
52
|
+
|
|
53
|
+
The `Napi::ArrayBuffer` instance does not assume ownership for the data and
|
|
54
|
+
expects it to be valid for the lifetime of the instance. The data can only be
|
|
55
|
+
freed once the `finalizeCallback` is invoked to indicate that the
|
|
56
|
+
`Napi::ArrayBuffer` has been released.
|
|
57
|
+
|
|
58
|
+
```cpp
|
|
59
|
+
template <typename Finalizer>
|
|
60
|
+
static Napi::ArrayBuffer Napi::ArrayBuffer::New(napi_env env,
|
|
61
|
+
void* externalData,
|
|
62
|
+
size_t byteLength,
|
|
63
|
+
Finalizer finalizeCallback);
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
- `[in] env`: The environment in which to create the `Napi::ArrayBuffer` instance.
|
|
67
|
+
- `[in] externalData`: The pointer to the external data to wrap.
|
|
68
|
+
- `[in] byteLength`: The length of the `externalData`, in bytes.
|
|
69
|
+
- `[in] finalizeCallback`: A function to be called when the `Napi::ArrayBuffer` is
|
|
70
|
+
destroyed. It must implement `operator()`, accept an Napi::Env, a `void*` (which is the
|
|
71
|
+
`externalData` pointer), and return `void`.
|
|
72
|
+
|
|
73
|
+
Returns a new `Napi::ArrayBuffer` instance.
|
|
74
|
+
|
|
75
|
+
### New
|
|
76
|
+
|
|
77
|
+
Wraps the provided external data into a new `Napi::ArrayBuffer` instance.
|
|
78
|
+
|
|
79
|
+
The `Napi::ArrayBuffer` instance does not assume ownership for the data and expects it
|
|
80
|
+
to be valid for the lifetime of the instance. The data can only be freed once
|
|
81
|
+
the `finalizeCallback` is invoked to indicate that the `Napi::ArrayBuffer` has been
|
|
82
|
+
released.
|
|
83
|
+
|
|
84
|
+
```cpp
|
|
85
|
+
template <typename Finalizer, typename Hint>
|
|
86
|
+
static Napi::ArrayBuffer Napi::ArrayBuffer::New(napi_env env,
|
|
87
|
+
void* externalData,
|
|
88
|
+
size_t byteLength,
|
|
89
|
+
Finalizer finalizeCallback,
|
|
90
|
+
Hint* finalizeHint);
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
- `[in] env`: The environment in which to create the `Napi::ArrayBuffer` instance.
|
|
94
|
+
- `[in] externalData`: The pointer to the external data to wrap.
|
|
95
|
+
- `[in] byteLength`: The length of the `externalData`, in bytes.
|
|
96
|
+
- `[in] finalizeCallback`: The function to be called when the `Napi::ArrayBuffer` is
|
|
97
|
+
destroyed. It must implement `operator()`, accept an Napi::Env, a `void*` (which is the
|
|
98
|
+
`externalData` pointer) and `Hint*`, and return `void`.
|
|
99
|
+
- `[in] finalizeHint`: The hint to be passed as the second parameter of the
|
|
100
|
+
finalize callback.
|
|
101
|
+
|
|
102
|
+
Returns a new `Napi::ArrayBuffer` instance.
|
|
103
|
+
|
|
104
|
+
### Constructor
|
|
105
|
+
|
|
106
|
+
Initializes an empty instance of the `Napi::ArrayBuffer` class.
|
|
107
|
+
|
|
108
|
+
```cpp
|
|
109
|
+
Napi::ArrayBuffer::ArrayBuffer();
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Constructor
|
|
113
|
+
|
|
114
|
+
Initializes a wrapper instance of an existing `Napi::ArrayBuffer` object.
|
|
115
|
+
|
|
116
|
+
```cpp
|
|
117
|
+
Napi::ArrayBuffer::ArrayBuffer(napi_env env, napi_value value);
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
- `[in] env`: The environment in which to create the `Napi::ArrayBuffer` instance.
|
|
121
|
+
- `[in] value`: The `Napi::ArrayBuffer` reference to wrap.
|
|
122
|
+
|
|
123
|
+
### ByteLength
|
|
124
|
+
|
|
125
|
+
```cpp
|
|
126
|
+
size_t Napi::ArrayBuffer::ByteLength() const;
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Returns the length of the wrapped data, in bytes.
|
|
130
|
+
|
|
131
|
+
### Data
|
|
132
|
+
|
|
133
|
+
```cpp
|
|
134
|
+
void* Napi::ArrayBuffer::Data() const;
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Returns a pointer the wrapped data.
|
|
138
|
+
|
|
139
|
+
### Detach
|
|
140
|
+
|
|
141
|
+
```cpp
|
|
142
|
+
void Napi::ArrayBuffer::Detach();
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Invokes the `ArrayBuffer` detach operation on a detachable `ArrayBuffer`.
|
|
146
|
+
|
|
147
|
+
### IsDetached
|
|
148
|
+
|
|
149
|
+
```cpp
|
|
150
|
+
bool Napi::ArrayBuffer::IsDetached() const;
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Returns `true` if this `ArrayBuffer` has been detached.
|
|
154
|
+
|
|
155
|
+
[`Napi::Object`]: ./object.md
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# AsyncContext
|
|
2
|
+
|
|
3
|
+
The [Napi::AsyncWorker](async_worker.md) class may not be appropriate for every
|
|
4
|
+
scenario. When using any other async mechanism, introducing a new class
|
|
5
|
+
`Napi::AsyncContext` is necessary to ensure an async operation is properly
|
|
6
|
+
tracked by the runtime. The `Napi::AsyncContext` class can be passed to
|
|
7
|
+
[Napi::Function::MakeCallback()](function.md) method to properly restore the
|
|
8
|
+
correct async execution context.
|
|
9
|
+
|
|
10
|
+
## Methods
|
|
11
|
+
|
|
12
|
+
### Constructor
|
|
13
|
+
|
|
14
|
+
Creates a new `Napi::AsyncContext`.
|
|
15
|
+
|
|
16
|
+
```cpp
|
|
17
|
+
explicit Napi::AsyncContext::AsyncContext(napi_env env, const char* resource_name);
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
- `[in] env`: The environment in which to create the `Napi::AsyncContext`.
|
|
21
|
+
- `[in] resource_name`: Null-terminated strings that represents the
|
|
22
|
+
identifier for the kind of resource that is being provided for diagnostic
|
|
23
|
+
information exposed by the `async_hooks` API.
|
|
24
|
+
|
|
25
|
+
### Constructor
|
|
26
|
+
|
|
27
|
+
Creates a new `Napi::AsyncContext`.
|
|
28
|
+
|
|
29
|
+
```cpp
|
|
30
|
+
explicit Napi::AsyncContext::AsyncContext(napi_env env, const char* resource_name, const Napi::Object& resource);
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
- `[in] env`: The environment in which to create the `Napi::AsyncContext`.
|
|
34
|
+
- `[in] resource_name`: Null-terminated strings that represents the
|
|
35
|
+
identifier for the kind of resource that is being provided for diagnostic
|
|
36
|
+
information exposed by the `async_hooks` API.
|
|
37
|
+
- `[in] resource`: Object associated with the asynchronous operation that
|
|
38
|
+
will be passed to possible `async_hooks`.
|
|
39
|
+
|
|
40
|
+
### Destructor
|
|
41
|
+
|
|
42
|
+
The `Napi::AsyncContext` to be destroyed.
|
|
43
|
+
|
|
44
|
+
```cpp
|
|
45
|
+
virtual Napi::AsyncContext::~AsyncContext();
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Env
|
|
49
|
+
|
|
50
|
+
Requests the environment in which the async context has been initially created.
|
|
51
|
+
|
|
52
|
+
```cpp
|
|
53
|
+
Napi::Env Env() const;
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Returns the `Napi::Env` environment in which the async context has been created.
|
|
57
|
+
|
|
58
|
+
## Operator
|
|
59
|
+
|
|
60
|
+
```cpp
|
|
61
|
+
Napi::AsyncContext::operator napi_async_context() const;
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Returns the Node-API `napi_async_context` wrapped by the `Napi::AsyncContext`
|
|
65
|
+
object. This can be used to mix usage of the C Node-API and node-addon-api.
|
|
66
|
+
|
|
67
|
+
## Example
|
|
68
|
+
|
|
69
|
+
```cpp
|
|
70
|
+
#include "napi.h"
|
|
71
|
+
|
|
72
|
+
void MakeCallbackWithAsyncContext(const Napi::CallbackInfo& info) {
|
|
73
|
+
Napi::Function callback = info[0].As<Napi::Function>();
|
|
74
|
+
Napi::Object resource = info[1].As<Napi::Object>();
|
|
75
|
+
|
|
76
|
+
// Create a new async context instance.
|
|
77
|
+
Napi::AsyncContext context(info.Env(), "async_context_test", resource);
|
|
78
|
+
|
|
79
|
+
// Invoke the callback with the async context instance.
|
|
80
|
+
callback.MakeCallback(Napi::Object::New(info.Env()),
|
|
81
|
+
std::initializer_list<napi_value>{}, context);
|
|
82
|
+
|
|
83
|
+
// The async context instance is automatically destroyed here because it's
|
|
84
|
+
// block-scope like `Napi::HandleScope`.
|
|
85
|
+
}
|
|
86
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Asynchronous operations
|
|
2
|
+
|
|
3
|
+
Node.js native add-ons often need to execute long running tasks and to avoid
|
|
4
|
+
blocking the **event loop** they have to run them asynchronously from the
|
|
5
|
+
**event loop**.
|
|
6
|
+
In the Node.js model of execution the event loop thread represents the thread
|
|
7
|
+
where JavaScript code is executing. The Node.js guidance is to avoid blocking
|
|
8
|
+
other work queued on the event loop thread. Therefore, we need to do this work on
|
|
9
|
+
another thread.
|
|
10
|
+
|
|
11
|
+
All this means that native add-ons need to leverage async helpers from libuv as
|
|
12
|
+
part of their implementation. This allows them to schedule work to be executed
|
|
13
|
+
asynchronously so that their methods can return in advance of the work being
|
|
14
|
+
completed.
|
|
15
|
+
|
|
16
|
+
Node Addon API provides an interface to support functions that cover
|
|
17
|
+
the most common asynchronous use cases. There is an abstract classes to implement
|
|
18
|
+
asynchronous operations:
|
|
19
|
+
|
|
20
|
+
- **[`Napi::AsyncWorker`](async_worker.md)**
|
|
21
|
+
|
|
22
|
+
These class helps manage asynchronous operations through an abstraction
|
|
23
|
+
of the concept of moving data between the **event loop** and **worker threads**.
|
|
24
|
+
|
|
25
|
+
Also, the above class may not be appropriate for every scenario. When using any
|
|
26
|
+
other asynchronous mechanism, the following API is necessary to ensure an
|
|
27
|
+
asynchronous operation is properly tracked by the runtime:
|
|
28
|
+
|
|
29
|
+
- **[AsyncContext](async_context.md)**
|
|
30
|
+
|
|
31
|
+
- **[CallbackScope](callback_scope.md)**
|