// For the purpose of this test we use libuv's threading library. When deciding // on a threading library for a new project it bears remembering that in the // future libuv may introduce API changes which may render it non-ABI-stable, // which, in turn, may affect the ABI stability of the project despite its use // of N-API. #include #include #include "../../js-native-api/common.h" static uv_thread_t uv_thread; static void work_thread(void* data) { napi_fatal_error("work_thread", NAPI_AUTO_LENGTH, "foobar", NAPI_AUTO_LENGTH); } static napi_value Test(napi_env env, napi_callback_info info) { napi_fatal_error("test_fatal::Test", NAPI_AUTO_LENGTH, "fatal message", NAPI_AUTO_LENGTH); return NULL; } static napi_value TestThread(napi_env env, napi_callback_info info) { NODE_API_ASSERT(env, (uv_thread_create(&uv_thread, work_thread, NULL) == 0), "Thread creation"); return NULL; } static napi_value TestStringLength(napi_env env, napi_callback_info info) { napi_fatal_error("test_fatal::TestStringLength", 16, "fatal message", 13); return NULL; } static napi_value Init(napi_env env, napi_value exports) { napi_property_descriptor properties[] = { DECLARE_NODE_API_PROPERTY("Test", Test), DECLARE_NODE_API_PROPERTY("TestStringLength", TestStringLength), DECLARE_NODE_API_PROPERTY("TestThread", TestThread), }; NODE_API_CALL(env, napi_define_properties( env, exports, sizeof(properties) / sizeof(*properties), properties)); return exports; } NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)