1#define NAPI_VERSION 9 2// we define NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED here to validate that it can 3// be used as a form of test itself. It is 4// not related to any of the other tests 5// defined in the file 6#define NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED 7#include <node_api.h> 8#include <stdlib.h> 9#include "../../js-native-api/common.h" 10 11static napi_value testGetNodeVersion(napi_env env, napi_callback_info info) { 12 const napi_node_version* node_version; 13 napi_value result, major, minor, patch, release; 14 NODE_API_CALL(env, napi_get_node_version(env, &node_version)); 15 NODE_API_CALL(env, napi_create_uint32(env, node_version->major, &major)); 16 NODE_API_CALL(env, napi_create_uint32(env, node_version->minor, &minor)); 17 NODE_API_CALL(env, napi_create_uint32(env, node_version->patch, &patch)); 18 NODE_API_CALL(env, 19 napi_create_string_utf8( 20 env, node_version->release, NAPI_AUTO_LENGTH, &release)); 21 NODE_API_CALL(env, napi_create_array_with_length(env, 4, &result)); 22 NODE_API_CALL(env, napi_set_element(env, result, 0, major)); 23 NODE_API_CALL(env, napi_set_element(env, result, 1, minor)); 24 NODE_API_CALL(env, napi_set_element(env, result, 2, patch)); 25 NODE_API_CALL(env, napi_set_element(env, result, 3, release)); 26 return result; 27} 28 29static napi_value GetFilename(napi_env env, napi_callback_info info) { 30 const char* filename; 31 napi_value result; 32 33 NODE_API_CALL(env, node_api_get_module_file_name(env, &filename)); 34 NODE_API_CALL(env, 35 napi_create_string_utf8(env, filename, NAPI_AUTO_LENGTH, &result)); 36 37 return result; 38} 39 40static napi_value Init(napi_env env, napi_value exports) { 41 napi_property_descriptor descriptors[] = { 42 DECLARE_NODE_API_PROPERTY("testGetNodeVersion", testGetNodeVersion), 43 DECLARE_NODE_API_GETTER("filename", GetFilename), 44 }; 45 46 NODE_API_CALL(env, napi_define_properties( 47 env, exports, sizeof(descriptors) / sizeof(*descriptors), descriptors)); 48 49 return exports; 50} 51 52NAPI_MODULE(NODE_GYP_MODULE_NAME, Init) 53