static napi_value testGetPrototype(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value args[1]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); napi_value result; NAPI_CALL(env, napi_get_prototype(env, args[0], &result)); return result; }
napi_value New(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value args[1]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); NAPI_ASSERT(env, argc >= 1, "Wrong number of arguments"); napi_valuetype valuetype0; NAPI_CALL(env, napi_typeof(env, args[0], &valuetype0)); NAPI_ASSERT(env, valuetype0 == napi_object, "Wrong type of arguments. Expects an array as first argument."); napi_value ret; NAPI_CALL(env, napi_create_array(env, &ret)); uint32_t i, length; NAPI_CALL(env, napi_get_array_length(env, args[0], &length)); for (i = 0; i < length; i++) { napi_value e; NAPI_CALL(env, napi_get_element(env, args[0], i, &e)); NAPI_CALL(env, napi_set_element(env, ret, i, e)); } return ret; }
napi_value TestLatin1Insufficient(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value args[1]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); NAPI_ASSERT(env, argc >= 1, "Wrong number of arguments"); napi_valuetype valuetype; NAPI_CALL(env, napi_typeof(env, args[0], &valuetype)); NAPI_ASSERT(env, valuetype == napi_string, "Wrong type of argment. Expects a string."); char buffer[4]; size_t buffer_size = 4; size_t copied; NAPI_CALL(env, napi_get_value_string_latin1(env, args[0], buffer, buffer_size, &copied)); napi_value output; NAPI_CALL(env, napi_create_string_latin1(env, buffer, copied, &output)); return output; }
napi_value Inflate(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value args[1]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); NAPI_ASSERT(env, argc >= 1, "Wrong number of arguments"); napi_valuetype valuetype0; NAPI_CALL(env, napi_typeof(env, args[0], &valuetype0)); NAPI_ASSERT(env, valuetype0 == napi_object, "Wrong type of arguments. Expects an object as first argument."); napi_value obj = args[0]; napi_value propertynames; NAPI_CALL(env, napi_get_property_names(env, obj, &propertynames)); uint32_t i, length; NAPI_CALL(env, napi_get_array_length(env, propertynames, &length)); for (i = 0; i < length; i++) { napi_value property_str; NAPI_CALL(env, napi_get_element(env, propertynames, i, &property_str)); napi_value value; NAPI_CALL(env, napi_get_property(env, obj, property_str, &value)); double double_val; NAPI_CALL(env, napi_get_value_double(env, value, &double_val)); NAPI_CALL(env, napi_create_double(env, double_val + 1, &value)); NAPI_CALL(env, napi_set_property(env, obj, property_str, value)); } return obj; }
napi_value Set(napi_env env, napi_callback_info info) { size_t argc = 3; napi_value args[3]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); NAPI_ASSERT(env, argc >= 3, "Wrong number of arguments"); napi_valuetype valuetype0; NAPI_CALL(env, napi_typeof(env, args[0], &valuetype0)); NAPI_ASSERT(env, valuetype0 == napi_object, "Wrong type of arguments. Expects an object as first argument."); napi_valuetype valuetype1; NAPI_CALL(env, napi_typeof(env, args[1], &valuetype1)); NAPI_ASSERT(env, valuetype1 == napi_string || valuetype1 == napi_symbol, "Wrong type of arguments. Expects a string or symbol as second."); NAPI_CALL(env, napi_set_property(env, args[0], args[1], args[2])); napi_value valuetrue; NAPI_CALL(env, napi_get_boolean(env, true, &valuetrue)); return valuetrue; }
napi_value Get(napi_env env, napi_callback_info info) { size_t argc = 2; napi_value args[2]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); NAPI_ASSERT(env, argc >= 2, "Wrong number of arguments"); napi_valuetype valuetype0; NAPI_CALL(env, napi_typeof(env, args[0], &valuetype0)); NAPI_ASSERT(env, valuetype0 == napi_object, "Wrong type of arguments. Expects an object as first argument."); napi_valuetype valuetype1; NAPI_CALL(env, napi_typeof(env, args[1], &valuetype1)); NAPI_ASSERT(env, valuetype1 == napi_string || valuetype1 == napi_symbol, "Wrong type of arguments. Expects a string or symbol as second."); napi_value object = args[0]; napi_value output; NAPI_CALL(env, napi_get_property(env, object, args[1], &output)); return output; }
napi_value TestDeleteElement(napi_env env, napi_callback_info info) { size_t argc = 2; napi_value args[2]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); NAPI_ASSERT(env, argc == 2, "Wrong number of arguments"); napi_valuetype valuetype0; NAPI_CALL(env, napi_typeof(env, args[0], &valuetype0)); NAPI_ASSERT(env, valuetype0 == napi_object, "Wrong type of arguments. Expects an array as first argument."); napi_valuetype valuetype1; NAPI_CALL(env, napi_typeof(env, args[1], &valuetype1)); NAPI_ASSERT(env, valuetype1 == napi_number, "Wrong type of arguments. Expects an integer as second argument."); napi_value array = args[0]; int32_t index; bool result; napi_value ret; NAPI_CALL(env, napi_get_value_int32(env, args[1], &index)); NAPI_CALL(env, napi_is_array(env, array, &result)); if (!result) { return NULL; } NAPI_CALL(env, napi_delete_element(env, array, index, &result)); NAPI_CALL(env, napi_get_boolean(env, result, &ret)); return ret; }
napi_value HasOwn(napi_env env, napi_callback_info info) { size_t argc = 2; napi_value args[2]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); NAPI_ASSERT(env, argc == 2, "Wrong number of arguments"); napi_valuetype valuetype0; NAPI_CALL(env, napi_typeof(env, args[0], &valuetype0)); NAPI_ASSERT(env, valuetype0 == napi_object, "Wrong type of arguments. Expects an object as first argument."); // napi_valuetype valuetype1; // NAPI_CALL(env, napi_typeof(env, args[1], &valuetype1)); // // NAPI_ASSERT(env, valuetype1 == napi_string || valuetype1 == napi_symbol, // "Wrong type of arguments. Expects a string or symbol as second."); bool has_property; NAPI_CALL(env, napi_has_own_property(env, args[0], args[1], &has_property)); napi_value ret; NAPI_CALL(env, napi_get_boolean(env, has_property, &ret)); return ret; }
napi_value RunCallback(napi_env env, napi_callback_info info) { size_t argc = 2; napi_value args[2]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); NAPI_ASSERT(env, argc == 1, "Wrong number of arguments. Expects a single argument."); napi_valuetype valuetype0; NAPI_CALL(env, napi_typeof(env, args[0], &valuetype0)); NAPI_ASSERT(env, valuetype0 == napi_function, "Wrong type of arguments. Expects a function as first argument."); napi_valuetype valuetype1; NAPI_CALL(env, napi_typeof(env, args[1], &valuetype1)); NAPI_ASSERT(env, valuetype1 == napi_undefined, "Additional arguments should be undefined."); napi_value argv[1]; const char* str = "hello world"; size_t str_len = strlen(str); NAPI_CALL(env, napi_create_string_utf8(env, str, str_len, argv)); napi_value global; NAPI_CALL(env, napi_get_global(env, &global)); napi_value cb = args[0]; NAPI_CALL(env, napi_call_function(env, global, cb, 1, argv, NULL)); return NULL; }
napi_value testNapiTypeof(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value args[1]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); napi_valuetype argument_type; NAPI_CALL(env, napi_typeof(env, args[0], &argument_type)); napi_value result = NULL; if (argument_type == napi_number) { NAPI_CALL(env, napi_create_string_utf8(env, "number", -1, &result)); } else if (argument_type == napi_string) { NAPI_CALL(env, napi_create_string_utf8(env, "string", -1, &result)); } else if (argument_type == napi_function) { NAPI_CALL(env, napi_create_string_utf8(env, "function", -1, &result)); } else if (argument_type == napi_object) { NAPI_CALL(env, napi_create_string_utf8(env, "object", -1, &result)); } else if (argument_type == napi_boolean) { NAPI_CALL(env, napi_create_string_utf8(env, "boolean", -1, &result)); } else if (argument_type == napi_undefined) { NAPI_CALL(env, napi_create_string_utf8(env, "undefined", -1, &result)); } else if (argument_type == napi_symbol) { NAPI_CALL(env, napi_create_string_utf8(env, "symbol", -1, &result)); } else if (argument_type == napi_null) { NAPI_CALL(env, napi_create_string_utf8(env, "null", -1, &result)); } return result; }
static napi_value CreateDataViewFromJSDataView(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value args [1]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); NAPI_ASSERT(env, argc == 1, "Wrong number of arguments"); napi_valuetype valuetype; napi_value input_dataview = args[0]; NAPI_CALL(env, napi_typeof(env, input_dataview, &valuetype)); NAPI_ASSERT(env, valuetype == napi_object, "Wrong type of arguments. Expects a DataView as the first " "argument."); bool is_dataview; NAPI_CALL(env, napi_is_dataview(env, input_dataview, &is_dataview)); NAPI_ASSERT(env, is_dataview, "Wrong type of arguments. Expects a DataView as the first " "argument."); size_t byte_offset = 0; size_t length = 0; napi_value buffer; NAPI_CALL(env, napi_get_dataview_info(env, input_dataview, &length, NULL, &buffer, &byte_offset)); napi_value output_dataview; NAPI_CALL(env, napi_create_dataview(env, length, buffer, byte_offset, &output_dataview)); return output_dataview; }
napi_value bufferInfo(napi_env env, napi_callback_info info){ size_t argc=1; napi_value args[1]; napi_status status; //napi_valuetype valuetype; //bool valuetype; status=napi_get_cb_info(env, info, &argc, args,NULL,NULL); if(status !=napi_ok){return NULL;} //assert(status==napi_ok); //if(argc > 1){napi_throw_type_error(env,nullptr,"Wrong number of arguments!"); // return NULL; //} //status=napi_is_buffer(env,args[0], &valuetype); //if(status !=napi_ok){return status;} //assert(status==napi_ok); //if(valuetype == false){ //napi_throw_type_error(env,nullptr,"Wrong type of argument. Expects a buffer!"); //return NULL; //} napi_value theBuffer=args[0], ua_family; const char* bufferData; napi_value obj; //size_t bufferLength; status=napi_get_buffer_info(env,theBuffer,(void**)(&bufferData),/*&bufferLength*/NULL); if(status !=napi_ok){return NULL;} //assert(status==napi_ok); //printf("here: %s\n",bufferData); //printf("here len: %zu\n",bufferLength); //printf("sizeof(theText): %zu\n",sizeof(theText)); //status=napi_get_boolean(env,!strcmp(bufferData,theText) && bufferLength==sizeof(theText),&returnValue); //assert(status==napi_ok); //struct user_agent_parser *ua_parser = user_agent_parser_create(); //struct user_agent_info *ua_info = user_agent_info_create(); //user_agent_parser_read_buffer(ua_parser, ___uap_core_regexes_yaml, ___uap_core_regexes_yaml_len); status=napi_create_object(env,&obj); if(status !=napi_ok){return NULL;} if (user_agent_parser_parse_string(ua_parser, ua_info,bufferData)) { //status= napi_create_string_utf8(env,ua_info->user_agent.family,NAPI_AUTO_LENGTH,&ua_family); //if(status !=napi_ok){return NULL;} //assert(status==napi_ok); //assert(status==napi_ok); //status=napi_set_named_property(env,obj,"ua_family",ua_family);//major,minor,patch //if(status !=napi_ok){return NULL;} //assert(status==napi_ok); } napi_property_descriptor descriptors[]={ {"ua_family",NULL,0,0,0,ua_family,napi_default,0} }; status=napi_define_properties(env,obj,sizeof(descriptors)/sizeof(descriptors[0]),descriptors); //assert(status==napi_ok); //user_agent_parser_destroy(ua_parser); //user_agent_info_destroy(ua_info); return obj; }
napi_value Echo(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value args[1]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); NAPI_ASSERT(env, argc == 1, "Wrong number of arguments"); return args[0]; }
static napi_value test_finalize_wrap(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value js_object; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &js_object, NULL, NULL)); NAPI_CALL(env, napi_wrap(env, js_object, NULL, test_finalize, NULL, NULL)); return NULL; }
static napi_value Test(napi_env env, napi_callback_info info) { napi_value err; size_t argc = 1; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &err, NULL, NULL)); NAPI_CALL(env, napi_fatal_exception(env, err)); return NULL; }
static napi_value remove_wrap(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value wrapped; void* data; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &wrapped, NULL, NULL)); NAPI_CALL(env, napi_remove_wrap(env, wrapped, &data)); return NULL; }
napi_value RunCallbackWithRecv(napi_env env, napi_callback_info info) { size_t argc = 2; napi_value args[2]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); napi_value cb = args[0]; napi_value recv = args[1]; NAPI_CALL(env, napi_call_function(env, recv, cb, 0, NULL, NULL)); return NULL; }
static napi_value testNapiRun(napi_env env, napi_callback_info info) { napi_value script, result; size_t argc = 1; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &script, NULL, NULL)); NAPI_CALL(env, napi_run_script(env, script, &result)); return result; }
napi_value SayHello(napi_env env, napi_callback_info info) { size_t argc = 0; // test if `napi_get_cb_info` tolerants NULL pointers. NAPI_CALL(env, napi_get_cb_info(env, info, &argc, NULL, NULL, NULL)); napi_value str; NAPI_CALL(env, napi_create_string_utf8(env, "Hello", 5, &str)); return str; }
napi_value Wrap(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value arg; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &arg, NULL, NULL)); int32_t* data = malloc(sizeof(int32_t)); *data = test_value; NAPI_CALL(env, napi_wrap(env, arg, data, NULL, NULL, NULL)); return NULL; }
napi_value SetValue(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value args[1]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); NAPI_ASSERT(env, argc == 1, "Wrong number of arguments"); NAPI_CALL(env, napi_get_value_double(env, args[0], &value_)); return NULL; }
static napi_value wrap(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value to_wrap; deref_item_called = false; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &to_wrap, NULL, NULL)); NAPI_CALL(env, napi_wrap(env, to_wrap, &deref_item_called, deref_item, NULL, NULL)); return NULL; }
napi_value GetValue(napi_env env, napi_callback_info info) { size_t argc = 0; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, NULL, NULL, NULL)); NAPI_ASSERT(env, argc == 0, "Wrong number of arguments"); napi_value number; NAPI_CALL(env, napi_create_double(env, value_, &number)); return number; }
napi_value wrap(napi_env env, napi_callback_info info) { size_t argc = 2; napi_value argv[2]; napi_ref payload; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, NULL, NULL)); NAPI_CALL(env, napi_create_reference(env, argv[1], 1, &payload)); NAPI_CALL(env, napi_wrap(env, argv[0], payload, deref_item, NULL, NULL)); return NULL; }
napi_value wrap(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value argv[1]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, NULL, NULL)); NAPI_CALL(env, napi_wrap(env, argv[0], &native_counter, finalize, &native_hint, &weak_ref)); /** * `weak_ref` is a weak reference, so leave as it be. */ return argv[0]; }
static napi_value CreateObject(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value args[1]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); napi_value obj; NAPI_CALL(env, napi_create_object(env, &obj)); NAPI_CALL(env, napi_set_named_property(env, obj, "msg", args[0])); return obj; }
static napi_value testStrictEquals(napi_env env, napi_callback_info info) { size_t argc = 2; napi_value args[2]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); bool bool_result; napi_value result; NAPI_CALL(env, napi_strict_equals(env, args[0], args[1], &bool_result)); NAPI_CALL(env, napi_get_boolean(env, bool_result, &result)); return result; }
static napi_value doInstanceOf(napi_env env, napi_callback_info info) { size_t argc = 2; napi_value args[2]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); bool instanceof; NAPI_CALL(env, napi_instanceof(env, args[0], args[1], &instanceof)); napi_value result; NAPI_CALL(env, napi_get_boolean(env, instanceof, &result)); return result; }
napi_value Unwrap(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value arg; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &arg, NULL, NULL)); void* data; NAPI_CALL(env, napi_unwrap(env, arg, &data)); bool is_expected = (data != NULL && *(int*)data == 3); napi_value result; NAPI_CALL(env, napi_get_boolean(env, is_expected, &result)); return result; }
napi_value Test(napi_env env, napi_callback_info info) { size_t argc = 2; napi_value args[2]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); NAPI_ASSERT(env, argc >= 2, "Wrong number of arguments"); napi_valuetype valuetype0; NAPI_CALL(env, napi_typeof(env, args[0], &valuetype0)); NAPI_ASSERT(env, valuetype0 == napi_object, "Wrong type of arguments. Expects an array as first argument."); napi_valuetype valuetype1; NAPI_CALL(env, napi_typeof(env, args[1], &valuetype1)); NAPI_ASSERT(env, valuetype1 == napi_number, "Wrong type of arguments. Expects an integer as second argument."); napi_value array = args[0]; int32_t index; NAPI_CALL(env, napi_get_value_int32(env, args[1], &index)); NAPI_ASSERT(env, index >= 0, "Invalid index. Expects a positive integer."); bool isarray; NAPI_CALL(env, napi_is_array(env, array, &isarray)); if (!isarray) { return NULL; } uint32_t length; NAPI_CALL(env, napi_get_array_length(env, array, &length)); if ((uint32_t)index >= length) { napi_value str; const char* str_val = "Index out of bound!"; size_t str_len = strlen(str_val); NAPI_CALL(env, napi_create_string_utf8(env, str_val, str_len, &str)); return str; } napi_value ret; NAPI_CALL(env, napi_get_element(env, array, index, &ret)); return ret; }