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
package/src/parser.hh
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// This program is free software: you can redistribute it and/or modify
|
|
2
|
+
// it under the terms of the GNU Affero General Public License as published by
|
|
3
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
4
|
+
// (at your option) any later version.
|
|
5
|
+
//
|
|
6
|
+
// This program is distributed in the hope that it will be useful,
|
|
7
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
8
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
9
|
+
// GNU Affero General Public License for more details.
|
|
10
|
+
//
|
|
11
|
+
// You should have received a copy of the GNU Affero General Public License
|
|
12
|
+
// along with this program. If not, see https://www.gnu.org/licenses/.
|
|
13
|
+
|
|
14
|
+
#pragma once
|
|
15
|
+
|
|
16
|
+
#include "vendor/libcc/libcc.hh"
|
|
17
|
+
#include "util.hh"
|
|
18
|
+
|
|
19
|
+
#include <napi.h>
|
|
20
|
+
|
|
21
|
+
namespace RG {
|
|
22
|
+
|
|
23
|
+
struct InstanceData;
|
|
24
|
+
struct TypeInfo;
|
|
25
|
+
struct FunctionInfo;
|
|
26
|
+
|
|
27
|
+
class PrototypeParser {
|
|
28
|
+
Napi::Env env;
|
|
29
|
+
InstanceData *instance;
|
|
30
|
+
|
|
31
|
+
// All these members are relevant to the current parse only, and get resetted each time
|
|
32
|
+
HeapArray<Span<const char>> tokens;
|
|
33
|
+
Size offset;
|
|
34
|
+
bool valid;
|
|
35
|
+
|
|
36
|
+
public:
|
|
37
|
+
PrototypeParser(Napi::Env env) : env(env), instance(env.GetInstanceData<InstanceData>()) {}
|
|
38
|
+
|
|
39
|
+
bool Parse(Napi::String proto, FunctionInfo *func);
|
|
40
|
+
|
|
41
|
+
private:
|
|
42
|
+
void Tokenize(const char *str);
|
|
43
|
+
|
|
44
|
+
const TypeInfo *ParseType();
|
|
45
|
+
const char *ParseIdentifier();
|
|
46
|
+
|
|
47
|
+
bool Consume(const char *expect);
|
|
48
|
+
bool Match(const char *expect);
|
|
49
|
+
|
|
50
|
+
bool IsIdentifier(Span<const char> tok) const;
|
|
51
|
+
|
|
52
|
+
template <typename... Args>
|
|
53
|
+
void MarkError(const char *fmt, Args... args)
|
|
54
|
+
{
|
|
55
|
+
if (valid) {
|
|
56
|
+
ThrowError<Napi::Error>(env, fmt, args...);
|
|
57
|
+
valid = false;
|
|
58
|
+
}
|
|
59
|
+
valid = false;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
}
|
package/src/util.cc
CHANGED
|
@@ -54,6 +54,29 @@ const TypeInfo *ResolveType(const InstanceData *instance, Napi::Value value, int
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
const TypeInfo *GetPointerType(InstanceData *instance, const TypeInfo *ref)
|
|
58
|
+
{
|
|
59
|
+
char name_buf[256];
|
|
60
|
+
Fmt(name_buf, "%1%2*", ref->name, ref->primitive == PrimitiveKind::Pointer ? "" : " ");
|
|
61
|
+
|
|
62
|
+
TypeInfo *type = instance->types_map.FindValue(name_buf, nullptr);
|
|
63
|
+
|
|
64
|
+
if (!type) {
|
|
65
|
+
type = instance->types.AppendDefault();
|
|
66
|
+
|
|
67
|
+
type->name = DuplicateString(name_buf, &instance->str_alloc).ptr;
|
|
68
|
+
|
|
69
|
+
type->primitive = PrimitiveKind::Pointer;
|
|
70
|
+
type->size = RG_SIZE(void *);
|
|
71
|
+
type->align = RG_SIZE(void *);
|
|
72
|
+
type->ref = ref;
|
|
73
|
+
|
|
74
|
+
instance->types_map.Set(type);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return type;
|
|
78
|
+
}
|
|
79
|
+
|
|
57
80
|
const char *GetValueType(const InstanceData *instance, Napi::Value value)
|
|
58
81
|
{
|
|
59
82
|
for (const TypeInfo &type: instance->types) {
|
package/src/util.hh
CHANGED
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
namespace RG {
|
|
21
21
|
|
|
22
22
|
struct InstanceData;
|
|
23
|
+
struct TypeInfo;
|
|
24
|
+
struct FunctionInfo;
|
|
23
25
|
|
|
24
26
|
template <typename T, typename... Args>
|
|
25
27
|
void ThrowError(Napi::Env env, const char *msg, Args... args)
|
|
@@ -52,6 +54,7 @@ static inline T *AlignDown(T *ptr, Size align)
|
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
const TypeInfo *ResolveType(const InstanceData *instance, Napi::Value value, int *out_directions = nullptr);
|
|
57
|
+
const TypeInfo *GetPointerType(InstanceData *instance, const TypeInfo *type);
|
|
55
58
|
|
|
56
59
|
// Can be slow, only use for error messages
|
|
57
60
|
const char *GetValueType(const InstanceData *instance, Napi::Value value);
|
|
@@ -21,6 +21,13 @@
|
|
|
21
21
|
"shutdown": "sudo poweroff"
|
|
22
22
|
},
|
|
23
23
|
|
|
24
|
+
"builds": {
|
|
25
|
+
"Linux ARM32": {
|
|
26
|
+
"directory": "/home/debian/luigi",
|
|
27
|
+
"build": "node ../cnoke/cnoke.js"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
|
|
24
31
|
"tests": {
|
|
25
32
|
"Linux ARM32": {
|
|
26
33
|
"directory": "/home/debian/luigi",
|
|
@@ -58,6 +65,13 @@
|
|
|
58
65
|
"shutdown": "sudo poweroff"
|
|
59
66
|
},
|
|
60
67
|
|
|
68
|
+
"builds": {
|
|
69
|
+
"Linux ARM64": {
|
|
70
|
+
"directory": "/home/debian/luigi",
|
|
71
|
+
"build": "node ../cnoke/cnoke.js"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
|
|
61
75
|
"tests": {
|
|
62
76
|
"Linux ARM64": {
|
|
63
77
|
"directory": "/home/debian/luigi",
|
|
@@ -95,6 +109,13 @@
|
|
|
95
109
|
"shutdown": "sudo poweroff"
|
|
96
110
|
},
|
|
97
111
|
|
|
112
|
+
"builds": {
|
|
113
|
+
"Linux i386": {
|
|
114
|
+
"directory": "/home/debian/luigi",
|
|
115
|
+
"build": "node ../cnoke/cnoke.js"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
|
|
98
119
|
"tests": {
|
|
99
120
|
"Linux i386": {
|
|
100
121
|
"directory": "/home/debian/luigi",
|
|
@@ -132,6 +153,13 @@
|
|
|
132
153
|
"shutdown": "sudo poweroff"
|
|
133
154
|
},
|
|
134
155
|
|
|
156
|
+
"builds": {
|
|
157
|
+
"Linux x64": {
|
|
158
|
+
"directory": "/home/debian/luigi",
|
|
159
|
+
"build": "node ../cnoke/cnoke.js"
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
|
|
135
163
|
"tests": {
|
|
136
164
|
"Linux x64": {
|
|
137
165
|
"directory": "/home/debian/luigi",
|
|
@@ -169,6 +197,20 @@
|
|
|
169
197
|
"shutdown": "shutdown -s -t 0"
|
|
170
198
|
},
|
|
171
199
|
|
|
200
|
+
"builds": {
|
|
201
|
+
"Windows i386": {
|
|
202
|
+
"arch": "ia32",
|
|
203
|
+
"directory": "C:/Users/windows/Desktop/luigi32",
|
|
204
|
+
"build": "C:\\Node32\\node32.cmd node ../cnoke/cnoke.js"
|
|
205
|
+
},
|
|
206
|
+
|
|
207
|
+
"Windows x64": {
|
|
208
|
+
"arch": "x64",
|
|
209
|
+
"directory": "C:/Users/windows/Desktop/luigi64",
|
|
210
|
+
"build": "C:\\Node64\\node64.cmd node ../cnoke/cnoke.js"
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
|
|
172
214
|
"tests": {
|
|
173
215
|
"Windows i386": {
|
|
174
216
|
"directory": "C:/Users/windows/Desktop/luigi32",
|
|
@@ -218,6 +260,13 @@
|
|
|
218
260
|
"shutdown": "sudo poweroff"
|
|
219
261
|
},
|
|
220
262
|
|
|
263
|
+
"builds": {
|
|
264
|
+
"FreeBSD x64": {
|
|
265
|
+
"directory": "/home/freebsd/luigi",
|
|
266
|
+
"build": "node ../cnoke/cnoke.js"
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
|
|
221
270
|
"tests": {
|
|
222
271
|
"FreeBSD x64": {
|
|
223
272
|
"directory": "/home/freebsd/luigi",
|
|
@@ -255,6 +304,13 @@
|
|
|
255
304
|
"shutdown": "sudo poweroff"
|
|
256
305
|
},
|
|
257
306
|
|
|
307
|
+
"builds": {
|
|
308
|
+
"FreeBSD i386": {
|
|
309
|
+
"directory": "/home/freebsd/luigi",
|
|
310
|
+
"build": "node ../cnoke/cnoke.js"
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
|
|
258
314
|
"tests": {
|
|
259
315
|
"FreeBSD i386": {
|
|
260
316
|
"directory": "/home/freebsd/luigi",
|
|
@@ -292,6 +348,13 @@
|
|
|
292
348
|
"shutdown": "sudo poweroff"
|
|
293
349
|
},
|
|
294
350
|
|
|
351
|
+
"builds": {
|
|
352
|
+
"FreeBSD ARM64": {
|
|
353
|
+
"directory": "/home/freebsd/luigi",
|
|
354
|
+
"build": "node ../cnoke/cnoke.js"
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
|
|
295
358
|
"tests": {
|
|
296
359
|
"FreeBSD ARM64": {
|
|
297
360
|
"directory": "/home/freebsd/luigi",
|
|
@@ -329,6 +392,13 @@
|
|
|
329
392
|
"shutdown": "sudo shutdown -h now"
|
|
330
393
|
},
|
|
331
394
|
|
|
395
|
+
"builds": {
|
|
396
|
+
"macOS x64": {
|
|
397
|
+
"directory": "/Users/macos/luigi",
|
|
398
|
+
"build": "PATH=/usr/local/bin:/usr/bin:/bin SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk node ../cnoke/cnoke.js"
|
|
399
|
+
}
|
|
400
|
+
},
|
|
401
|
+
|
|
332
402
|
"tests": {
|
|
333
403
|
"macOS x64": {
|
|
334
404
|
"directory": "/Users/macos/luigi",
|
package/test/test.js
CHANGED
|
@@ -24,6 +24,7 @@ const { spawn, spawnSync } = require('child_process');
|
|
|
24
24
|
const { NodeSSH } = require('node-ssh');
|
|
25
25
|
const chalk = require('chalk');
|
|
26
26
|
const minimatch = require('minimatch');
|
|
27
|
+
const tar = require('tar');
|
|
27
28
|
|
|
28
29
|
// Globals
|
|
29
30
|
|
|
@@ -56,6 +57,7 @@ async function main() {
|
|
|
56
57
|
|
|
57
58
|
if (process.argv.length >= 3 && process.argv[2][0] != '-') {
|
|
58
59
|
switch (process.argv[2]) {
|
|
60
|
+
case 'pack': { command = pack; i++ } break;
|
|
59
61
|
case 'test': { command = test; i++; } break;
|
|
60
62
|
case 'start': { command = start; i++; } break;
|
|
61
63
|
case 'stop': { command = stop; i++; } break;
|
|
@@ -189,6 +191,7 @@ function print_usage() {
|
|
|
189
191
|
|
|
190
192
|
Commands:
|
|
191
193
|
test Run the machines and perform the tests (default)
|
|
194
|
+
pack Use machines to package prebuilt Koffi binaries
|
|
192
195
|
start Start the machines but don't run anythingh
|
|
193
196
|
stop Stop running machines
|
|
194
197
|
info Print basic information about machine
|
|
@@ -261,10 +264,109 @@ async function start(detach = true) {
|
|
|
261
264
|
return success;
|
|
262
265
|
}
|
|
263
266
|
|
|
264
|
-
async function
|
|
267
|
+
async function pack() {
|
|
268
|
+
let success = true;
|
|
269
|
+
|
|
270
|
+
success &= await start(false);
|
|
271
|
+
success &= await copy(machine => Object.values(machine.builds).map(build => build.directory));
|
|
272
|
+
|
|
273
|
+
console.log('>> Run build commands...');
|
|
274
|
+
await Promise.all(machines.map(async machine => {
|
|
275
|
+
if (ignore.has(machine))
|
|
276
|
+
return;
|
|
277
|
+
|
|
278
|
+
await Promise.all(Object.keys(machine.builds).map(async suite => {
|
|
279
|
+
let build = machine.builds[suite];
|
|
280
|
+
|
|
281
|
+
let cmd = build.build;
|
|
282
|
+
let cwd = build.directory + '/koffi';
|
|
283
|
+
|
|
284
|
+
let start = process.hrtime.bigint();
|
|
285
|
+
let ret = await exec_remote(machine, cmd, cwd);
|
|
286
|
+
let time = Number((process.hrtime.bigint() - start) / 1000000n);
|
|
287
|
+
|
|
288
|
+
if (ret.code == 0) {
|
|
289
|
+
log(machine, `${suite} > Build`, chalk.bold.green(`[${(time / 1000).toFixed(2)}s]`));
|
|
290
|
+
} else {
|
|
291
|
+
log(machine, `${suite} > Build`, chalk.bold.red('[error]'));
|
|
292
|
+
|
|
293
|
+
if (ret.stdout || ret.stderr)
|
|
294
|
+
console.error('');
|
|
295
|
+
|
|
296
|
+
let align = log.align + 9;
|
|
297
|
+
if (ret.stdout) {
|
|
298
|
+
let str = ' '.repeat(align) + 'Standard output:\n' +
|
|
299
|
+
chalk.yellow(ret.stdout.replace(/^/gm, ' '.repeat(align + 4))) + '\n';
|
|
300
|
+
console.error(str);
|
|
301
|
+
}
|
|
302
|
+
if (ret.stderr) {
|
|
303
|
+
let str = ' '.repeat(align) + 'Standard error:\n' +
|
|
304
|
+
chalk.yellow(ret.stderr.replace(/^/gm, ' '.repeat(align + 4))) + '\n';
|
|
305
|
+
console.error(str);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
success = false;
|
|
309
|
+
}
|
|
310
|
+
}));
|
|
311
|
+
}));
|
|
312
|
+
|
|
313
|
+
console.log('>> Get build artifacts');
|
|
314
|
+
{
|
|
315
|
+
let json = fs.readFileSync(root_dir + '/koffi/package.json', { encoding: 'utf-8' });
|
|
316
|
+
let version = JSON.parse(json).version;
|
|
317
|
+
|
|
318
|
+
await Promise.all(machines.map(async machine => {
|
|
319
|
+
if (ignore.has(machine))
|
|
320
|
+
return;
|
|
321
|
+
|
|
322
|
+
let copied = true;
|
|
323
|
+
|
|
324
|
+
await Promise.all(Object.keys(machine.builds).map(async suite => {
|
|
325
|
+
let build = machine.builds[suite];
|
|
326
|
+
|
|
327
|
+
let platform = build.platform || machine.info.platform;
|
|
328
|
+
let arch = build.arch || machine.info.arch;
|
|
329
|
+
|
|
330
|
+
let src_dir = build.directory + '/koffi/build';
|
|
331
|
+
let dest_dir = root_dir + `/koffi/build/qemu/${version}/koffi_${platform}_${arch}`;
|
|
332
|
+
|
|
333
|
+
fs.mkdirSync(dest_dir + '/build', { mode: 0o755, recursive: true });
|
|
334
|
+
|
|
335
|
+
try {
|
|
336
|
+
await machine.ssh.getDirectory(dest_dir + '/build', src_dir, {
|
|
337
|
+
recursive: false,
|
|
338
|
+
concurrency: 4
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
tar.c({
|
|
342
|
+
gzip: true,
|
|
343
|
+
file: dest_dir + '.tar.gz',
|
|
344
|
+
sync: true,
|
|
345
|
+
cwd: dest_dir + '/..'
|
|
346
|
+
}, [path.basename(dest_dir)]);
|
|
347
|
+
} catch (err) {
|
|
348
|
+
console.log(err);
|
|
349
|
+
ignore.add(machine);
|
|
350
|
+
success = false;
|
|
351
|
+
copied = false;
|
|
352
|
+
}
|
|
353
|
+
}));
|
|
354
|
+
|
|
355
|
+
let status = copied ? chalk.bold.green('[ok]') : chalk.bold.red('[error]');
|
|
356
|
+
log(machine, 'Download', status);
|
|
357
|
+
}));
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
if (machines.some(machine => machine.started))
|
|
361
|
+
success &= await stop(false);
|
|
362
|
+
|
|
363
|
+
return success;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
async function copy(func) {
|
|
265
367
|
let success = true;
|
|
266
368
|
|
|
267
|
-
let snapshot_dir = fs.mkdtempSync(path.join(os.tmpdir(), '
|
|
369
|
+
let snapshot_dir = fs.mkdtempSync(path.join(os.tmpdir(), 'luigi_'));
|
|
268
370
|
process.on('exit', () => unlink_recursive(snapshot_dir));
|
|
269
371
|
|
|
270
372
|
console.log('>> Snapshot code...');
|
|
@@ -279,8 +381,6 @@ async function test() {
|
|
|
279
381
|
basename !== 'luiggi';
|
|
280
382
|
});
|
|
281
383
|
|
|
282
|
-
success &= await start(false);
|
|
283
|
-
|
|
284
384
|
console.log('>> Copy source code...');
|
|
285
385
|
await Promise.all(machines.map(async machine => {
|
|
286
386
|
if (ignore.has(machine))
|
|
@@ -288,15 +388,15 @@ async function test() {
|
|
|
288
388
|
|
|
289
389
|
let copied = true;
|
|
290
390
|
|
|
291
|
-
for (let
|
|
391
|
+
for (let directory of func(machine)) {
|
|
292
392
|
try {
|
|
293
|
-
await machine.ssh.exec('rm', ['-rf',
|
|
393
|
+
await machine.ssh.exec('rm', ['-rf', directory]);
|
|
294
394
|
} catch (err) {
|
|
295
395
|
// Fails often on Windows (busy directory or whatever), but rarely a problem
|
|
296
396
|
}
|
|
297
397
|
|
|
298
398
|
try {
|
|
299
|
-
await machine.ssh.putDirectory(snapshot_dir,
|
|
399
|
+
await machine.ssh.putDirectory(snapshot_dir, directory, {
|
|
300
400
|
recursive: true,
|
|
301
401
|
concurrency: 4
|
|
302
402
|
});
|
|
@@ -311,6 +411,15 @@ async function test() {
|
|
|
311
411
|
log(machine, 'Copy', status);
|
|
312
412
|
}));
|
|
313
413
|
|
|
414
|
+
return success;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
async function test() {
|
|
418
|
+
let success = true;
|
|
419
|
+
|
|
420
|
+
success &= await start(false);
|
|
421
|
+
success &= await copy(machine => Object.values(machine.tests).map(test => test.directory));
|
|
422
|
+
|
|
314
423
|
console.log('>> Run test commands...');
|
|
315
424
|
await Promise.all(machines.map(async machine => {
|
|
316
425
|
if (ignore.has(machine))
|
package/test/tests/misc.js
CHANGED
|
@@ -69,25 +69,25 @@ async function test() {
|
|
|
69
69
|
let lib_filename = path.dirname(__filename) + '/../build/misc' + koffi.extension;
|
|
70
70
|
let lib = koffi.load(lib_filename);
|
|
71
71
|
|
|
72
|
-
const FillPack1 = lib.
|
|
73
|
-
const RetPack1 = lib.
|
|
72
|
+
const FillPack1 = lib.func('FillPack1', 'void', ['int', koffi.out(koffi.pointer(Pack1))]);
|
|
73
|
+
const RetPack1 = lib.func('RetPack1', Pack1, ['int']);
|
|
74
74
|
const AddPack1 = lib.fastcall('AddPack1', 'void', ['int', koffi.inout(koffi.pointer(Pack1))]);
|
|
75
|
-
const FillPack2 = lib.
|
|
76
|
-
const RetPack2 = lib.
|
|
75
|
+
const FillPack2 = lib.func('FillPack2', 'void', ['int', 'int', koffi.out(koffi.pointer(Pack2))]);
|
|
76
|
+
const RetPack2 = lib.func('RetPack2', Pack2, ['int', 'int']);
|
|
77
77
|
const AddPack2 = lib.fastcall('AddPack2', 'void', ['int', 'int', koffi.inout(koffi.pointer(Pack2))]);
|
|
78
|
-
const FillPack3 = lib.
|
|
79
|
-
const RetPack3 = lib.
|
|
78
|
+
const FillPack3 = lib.func('FillPack3', 'void', ['int', 'int', 'int', koffi.out(koffi.pointer(Pack3))]);
|
|
79
|
+
const RetPack3 = lib.func('RetPack3', Pack3, ['int', 'int', 'int']);
|
|
80
80
|
const AddPack3 = lib.fastcall('AddPack3', 'void', ['int', 'int', 'int', koffi.inout(koffi.pointer(Pack3))]);
|
|
81
|
-
const ConcatenateToInt1 = lib.
|
|
82
|
-
const ConcatenateToInt4 = lib.
|
|
83
|
-
const ConcatenateToInt8 = lib.
|
|
84
|
-
const ConcatenateToStr1 = lib.
|
|
85
|
-
const ConcatenateToStr4 = lib.
|
|
86
|
-
const ConcatenateToStr8 = lib.
|
|
87
|
-
const MakeBFG = lib.
|
|
88
|
-
const MakePackedBFG = lib.
|
|
89
|
-
const ReturnBigString = lib.
|
|
90
|
-
const PrintFmt = lib.
|
|
81
|
+
const ConcatenateToInt1 = lib.func('ConcatenateToInt1', 'int64_t', Array(12).fill('int8_t'));
|
|
82
|
+
const ConcatenateToInt4 = lib.func('ConcatenateToInt4', 'int64_t', Array(12).fill('int32_t'));
|
|
83
|
+
const ConcatenateToInt8 = lib.func('ConcatenateToInt8', 'int64_t', Array(12).fill('int64_t'));
|
|
84
|
+
const ConcatenateToStr1 = lib.func('ConcatenateToStr1', 'string', [...Array(8).fill('int8_t'), koffi.struct('IJK1', {i: 'int8_t', j: 'int8_t', k: 'int8_t'}), 'int8_t']);
|
|
85
|
+
const ConcatenateToStr4 = lib.func('ConcatenateToStr4', 'string', [...Array(8).fill('int32_t'), koffi.pointer(koffi.struct('IJK4', {i: 'int32_t', j: 'int32_t', k: 'int32_t'})), 'int32_t']);
|
|
86
|
+
const ConcatenateToStr8 = lib.func('ConcatenateToStr8', 'string', [...Array(8).fill('int64_t'), koffi.struct('IJK8', {i: 'int64_t', j: 'int64_t', k: 'int64_t'}), 'int64_t']);
|
|
87
|
+
const MakeBFG = lib.func('BFG __stdcall MakeBFG(_Out_ BFG *p, int x, double y, const char *str)');
|
|
88
|
+
const MakePackedBFG = lib.func('PackedBFG __fastcall MakePackedBFG(int x, double y, _Out_ PackedBFG *p, const char *str)');
|
|
89
|
+
const ReturnBigString = lib.func('const char * __stdcall ReturnBigString(const char *str)');
|
|
90
|
+
const PrintFmt = lib.func('const char *PrintFmt(const char *fmt, ...)');
|
|
91
91
|
|
|
92
92
|
// Simple tests with Pack1
|
|
93
93
|
{
|
package/test/tests/raylib.js
CHANGED
|
@@ -86,14 +86,14 @@ async function test() {
|
|
|
86
86
|
let lib_filename = path.dirname(__filename) + '/../build/raylib' + koffi.extension;
|
|
87
87
|
let lib = koffi.load(lib_filename);
|
|
88
88
|
|
|
89
|
-
const InitWindow = lib.
|
|
90
|
-
const SetTraceLogLevel = lib.
|
|
91
|
-
const SetWindowState = lib.
|
|
92
|
-
const GenImageColor = lib.
|
|
93
|
-
const GetFontDefault = lib.
|
|
94
|
-
const MeasureTextEx = lib.
|
|
95
|
-
const ImageDrawTextEx = lib.
|
|
96
|
-
const ExportImage = lib.
|
|
89
|
+
const InitWindow = lib.func('InitWindow', 'void', ['int', 'int', 'string']);
|
|
90
|
+
const SetTraceLogLevel = lib.func('SetTraceLogLevel', 'void', ['int']);
|
|
91
|
+
const SetWindowState = lib.func('SetWindowState', 'void', ['uint']);
|
|
92
|
+
const GenImageColor = lib.func('GenImageColor', Image, ['int', 'int', Color]);
|
|
93
|
+
const GetFontDefault = lib.func('GetFontDefault', Font, []);
|
|
94
|
+
const MeasureTextEx = lib.func('MeasureTextEx', Vector2, [Font, 'string', 'float', 'float']);
|
|
95
|
+
const ImageDrawTextEx = lib.func('ImageDrawTextEx', 'void', [koffi.pointer(Image), Font, 'string', Vector2, 'float', 'float', Color]);
|
|
96
|
+
const ExportImage = lib.func('ExportImage', 'bool', [Image, 'string']);
|
|
97
97
|
|
|
98
98
|
// We need to call InitWindow before using anything else (such as fonts)
|
|
99
99
|
SetTraceLogLevel(4); // Warnings
|
package/test/tests/sqlite.js
CHANGED
|
@@ -39,15 +39,15 @@ async function test() {
|
|
|
39
39
|
let lib_filename = path.dirname(__filename) + '/../build/sqlite3' + koffi.extension;
|
|
40
40
|
let lib = koffi.load(lib_filename);
|
|
41
41
|
|
|
42
|
-
const sqlite3_open_v2 = lib.
|
|
43
|
-
const sqlite3_exec = lib.
|
|
44
|
-
const sqlite3_prepare_v2 = lib.
|
|
45
|
-
const sqlite3_reset = lib.
|
|
46
|
-
const sqlite3_bind_text = lib.
|
|
47
|
-
const sqlite3_bind_int = lib.
|
|
48
|
-
const sqlite3_step = lib.
|
|
49
|
-
const sqlite3_finalize = lib.
|
|
50
|
-
const sqlite3_close_v2 = lib.
|
|
42
|
+
const sqlite3_open_v2 = lib.func('sqlite3_open_v2', 'int', ['string', koffi.out(koffi.pointer(sqlite3_db)), 'int', 'string']);
|
|
43
|
+
const sqlite3_exec = lib.func('sqlite3_exec', 'int', [sqlite3_db, 'string', 'void *', 'void *', 'void *']);
|
|
44
|
+
const sqlite3_prepare_v2 = lib.func('sqlite3_prepare_v2', 'int', [sqlite3_db, 'string', 'int', koffi.out(koffi.pointer(sqlite3_stmt)), 'string']);
|
|
45
|
+
const sqlite3_reset = lib.func('sqlite3_reset', 'int', [sqlite3_stmt]);
|
|
46
|
+
const sqlite3_bind_text = lib.func('sqlite3_bind_text', 'int', [sqlite3_stmt, 'int', 'string', 'int', 'void *']);
|
|
47
|
+
const sqlite3_bind_int = lib.func('sqlite3_bind_int', 'int', [sqlite3_stmt, 'int', 'int']);
|
|
48
|
+
const sqlite3_step = lib.func('sqlite3_step', 'int', [sqlite3_stmt]);
|
|
49
|
+
const sqlite3_finalize = lib.func('sqlite3_finalize', 'int', [sqlite3_stmt]);
|
|
50
|
+
const sqlite3_close_v2 = lib.func('sqlite3_close_v2', 'int', [sqlite3_db]);
|
|
51
51
|
|
|
52
52
|
let filename = await create_temporary_file(path.join(os.tmpdir(), 'test_sqlite'));
|
|
53
53
|
let db = {};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
|
|
2
|
+
# Developer's Certificate of Origin 1.1
|
|
3
|
+
|
|
4
|
+
By making a contribution to this project, I certify that:
|
|
5
|
+
|
|
6
|
+
(a) The contribution was created in whole or in part by me and I
|
|
7
|
+
have the right to submit it under the open source license
|
|
8
|
+
indicated in the file; or
|
|
9
|
+
|
|
10
|
+
(b) The contribution is based upon previous work that, to the best
|
|
11
|
+
of my knowledge, is covered under an appropriate open source
|
|
12
|
+
license and I have the right under that license to submit that
|
|
13
|
+
work with modifications, whether created in whole or in part
|
|
14
|
+
by me, under the same open source license (unless I am
|
|
15
|
+
permitted to submit under a different license), as indicated
|
|
16
|
+
in the file; or
|
|
17
|
+
|
|
18
|
+
(c) The contribution was provided directly to me by some other
|
|
19
|
+
person who certified (a), (b) or (c) and I have not modified
|
|
20
|
+
it.
|
|
21
|
+
|
|
22
|
+
(d) I understand and agree that this project and the contribution
|
|
23
|
+
are public and that a record of the contribution (including all
|
|
24
|
+
personal information I submit with it, including my sign-off) is
|
|
25
|
+
maintained indefinitely and may be redistributed consistent with
|
|
26
|
+
this project or the open source license(s) involved.
|
|
27
|
+
|
|
28
|
+
# **node-addon-api** Contribution Philosophy
|
|
29
|
+
|
|
30
|
+
The **node-addon-api** team loves contributions. There are many ways in which you can
|
|
31
|
+
contribute to **node-addon-api**:
|
|
32
|
+
- Source code fixes
|
|
33
|
+
- Additional tests
|
|
34
|
+
- Documentation improvements
|
|
35
|
+
- Joining the Node-API working group and participating in meetings
|
|
36
|
+
|
|
37
|
+
## Source changes
|
|
38
|
+
|
|
39
|
+
**node-addon-api** is meant to be a thin convenience wrapper around Node-API. With this
|
|
40
|
+
in mind, contributions of any new APIs that wrap around a core Node-API API will
|
|
41
|
+
be considered for merge. However, changes that wrap existing **node-addon-api**
|
|
42
|
+
APIs are encouraged to instead be provided as an ecosystem module. The
|
|
43
|
+
**node-addon-api** team is happy to link to a curated set of modules that build on
|
|
44
|
+
top of **node-addon-api** if they have broad usefulness to the community and promote
|
|
45
|
+
a recommended idiom or pattern.
|
|
46
|
+
|
|
47
|
+
### Rationale
|
|
48
|
+
|
|
49
|
+
The Node-API team considered a couple different approaches with regards to changes
|
|
50
|
+
extending **node-addon-api**
|
|
51
|
+
- Larger core module - Incorporate these helpers and patterns into **node-addon-api**
|
|
52
|
+
- Extras package - Create a new package (strawman name '**node-addon-api**-extras')
|
|
53
|
+
that contain utility classes and methods that help promote good patterns and
|
|
54
|
+
idioms while writing native addons with **node-addon-api**.
|
|
55
|
+
- Ecosystem - Encourage creation of a module ecosystem around **node-addon-api**
|
|
56
|
+
where folks can build on top of it.
|
|
57
|
+
|
|
58
|
+
#### Larger Core
|
|
59
|
+
This is probably our simplest option in terms of immediate action needed. It
|
|
60
|
+
would involve landing any open PRs against **node-addon-api**, and continuing to
|
|
61
|
+
encourage folks to make PRs for utility helpers against the same repository.
|
|
62
|
+
|
|
63
|
+
The downside of the approach is the following:
|
|
64
|
+
- Less coherency for our API set
|
|
65
|
+
- More maintenance burden on the Node-API WG core team.
|
|
66
|
+
|
|
67
|
+
#### Extras Package
|
|
68
|
+
This involves us spinning up a new package which contains the utility classes
|
|
69
|
+
and methods. This has the benefit of having a separate module where helpers
|
|
70
|
+
which make it easier to implement certain patterns and idioms for native addons
|
|
71
|
+
easier.
|
|
72
|
+
|
|
73
|
+
The downside of this approach is the following:
|
|
74
|
+
- Potential for confusion - we'll need to provide clear documentation to help the
|
|
75
|
+
community understand where a particular contribution should be directed to (what
|
|
76
|
+
belongs in **node-addon-api** vs **node-addon-api-extras**)
|
|
77
|
+
- Need to define the level of support/API guarantees
|
|
78
|
+
- Unclear if the maintenance burden on the Node-API WG is reduced or not
|
|
79
|
+
|
|
80
|
+
#### Ecosystem
|
|
81
|
+
This doesn't require a ton of up-front work from the Node-API WG. Instead of
|
|
82
|
+
accepting utility PRs into **node-addon-api** or creating and maintaining a new
|
|
83
|
+
module, the WG will encourage the creation of an ecosystem of modules that
|
|
84
|
+
build on top of **node-addon-api**, and provide some level of advertising for these
|
|
85
|
+
modules (listing them out on the repository/wiki, using them in workshops/tutorials
|
|
86
|
+
etc).
|
|
87
|
+
|
|
88
|
+
The downside of this approach is the following:
|
|
89
|
+
- Potential for lack of visibility - evangelism and education is hard, and module
|
|
90
|
+
authors might not find right patterns and instead implement things themselves
|
|
91
|
+
- There might be greater friction for the Node-API WG in evolving APIs since the
|
|
92
|
+
ecosystem would have taken dependencies on the API shape of **node-addon-api**
|
|
93
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
environment:
|
|
2
|
+
# https://github.com/jasongin/nvs/blob/HEAD/doc/CI.md
|
|
3
|
+
NVS_VERSION: 1.4.2
|
|
4
|
+
matrix:
|
|
5
|
+
- NODEJS_VERSION: node/10
|
|
6
|
+
- NODEJS_VERSION: node/12
|
|
7
|
+
- NODEJS_VERSION: node/14
|
|
8
|
+
- NODEJS_VERSION: nightly
|
|
9
|
+
|
|
10
|
+
os: Visual Studio 2017
|
|
11
|
+
platform:
|
|
12
|
+
- x86
|
|
13
|
+
- x64
|
|
14
|
+
|
|
15
|
+
install:
|
|
16
|
+
# nvs
|
|
17
|
+
- git clone --branch v%NVS_VERSION% --depth 1 https://github.com/jasongin/nvs %LOCALAPPDATA%\nvs
|
|
18
|
+
- set PATH=%LOCALAPPDATA%\nvs;%PATH%
|
|
19
|
+
- nvs --version
|
|
20
|
+
# node.js
|
|
21
|
+
- nvs add %NODEJS_VERSION%/%PLATFORM%
|
|
22
|
+
- nvs use %NODEJS_VERSION%/%PLATFORM%
|
|
23
|
+
- node --version
|
|
24
|
+
- node -p process.arch
|
|
25
|
+
- npm --version
|
|
26
|
+
# app
|
|
27
|
+
- npm install
|
|
28
|
+
|
|
29
|
+
test_script:
|
|
30
|
+
- npm test
|
|
31
|
+
|
|
32
|
+
build: off
|
|
33
|
+
|
|
34
|
+
version: "{build}"
|
|
35
|
+
|
|
36
|
+
cache:
|
|
37
|
+
- node_modules
|