1#include <js_native_api.h> 2#include "../common.h" 3#include "../entry_point.h" 4 5static napi_value createDate(napi_env env, napi_callback_info info) { 6 size_t argc = 1; 7 napi_value args[1]; 8 NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); 9 10 NODE_API_ASSERT(env, argc >= 1, "Wrong number of arguments"); 11 12 napi_valuetype valuetype0; 13 NODE_API_CALL(env, napi_typeof(env, args[0], &valuetype0)); 14 15 NODE_API_ASSERT(env, valuetype0 == napi_number, 16 "Wrong type of arguments. Expects a number as first argument."); 17 18 double time; 19 NODE_API_CALL(env, napi_get_value_double(env, args[0], &time)); 20 21 napi_value date; 22 NODE_API_CALL(env, napi_create_date(env, time, &date)); 23 24 return date; 25} 26 27static napi_value isDate(napi_env env, napi_callback_info info) { 28 napi_value date, result; 29 size_t argc = 1; 30 bool is_date; 31 32 NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, &date, NULL, NULL)); 33 NODE_API_CALL(env, napi_is_date(env, date, &is_date)); 34 NODE_API_CALL(env, napi_get_boolean(env, is_date, &result)); 35 36 return result; 37} 38 39static napi_value getDateValue(napi_env env, napi_callback_info info) { 40 napi_value date, result; 41 size_t argc = 1; 42 double value; 43 44 NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, &date, NULL, NULL)); 45 NODE_API_CALL(env, napi_get_date_value(env, date, &value)); 46 NODE_API_CALL(env, napi_create_double(env, value, &result)); 47 48 return result; 49} 50 51EXTERN_C_START 52napi_value Init(napi_env env, napi_value exports) { 53 napi_property_descriptor descriptors[] = { 54 DECLARE_NODE_API_PROPERTY("createDate", createDate), 55 DECLARE_NODE_API_PROPERTY("isDate", isDate), 56 DECLARE_NODE_API_PROPERTY("getDateValue", getDateValue), 57 }; 58 59 NODE_API_CALL(env, napi_define_properties( 60 env, exports, sizeof(descriptors) / sizeof(*descriptors), descriptors)); 61 62 return exports; 63} 64EXTERN_C_END 65