14d6c458bSopenharmony_ci/* 24d6c458bSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 34d6c458bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44d6c458bSopenharmony_ci * you may not use this file except in compliance with the License. 54d6c458bSopenharmony_ci * You may obtain a copy of the License at 64d6c458bSopenharmony_ci * 74d6c458bSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84d6c458bSopenharmony_ci * 94d6c458bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104d6c458bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114d6c458bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124d6c458bSopenharmony_ci * See the License for the specific language governing permissions and 134d6c458bSopenharmony_ci * limitations under the License. 144d6c458bSopenharmony_ci */ 154d6c458bSopenharmony_ci 164d6c458bSopenharmony_ci#include "napi_helper.h" 174d6c458bSopenharmony_ci 184d6c458bSopenharmony_ci#include "native_engine/native_value.h" 194d6c458bSopenharmony_ci#include "object_helper.h" 204d6c458bSopenharmony_ci 214d6c458bSopenharmony_cinamespace Commonlibrary::Concurrent::Common::Helper { 224d6c458bSopenharmony_cistatic constexpr uint32_t MAX_CHAR_LENGTH = 1024; 234d6c458bSopenharmony_ci 244d6c458bSopenharmony_cibool NapiHelper::IsTypeForNapiValue(napi_env env, napi_value param, napi_valuetype expectType) 254d6c458bSopenharmony_ci{ 264d6c458bSopenharmony_ci napi_valuetype valueType = napi_undefined; 274d6c458bSopenharmony_ci if (param == nullptr) { 284d6c458bSopenharmony_ci return false; 294d6c458bSopenharmony_ci } 304d6c458bSopenharmony_ci if (napi_typeof(env, param, &valueType) != napi_ok) { 314d6c458bSopenharmony_ci return false; 324d6c458bSopenharmony_ci } 334d6c458bSopenharmony_ci 344d6c458bSopenharmony_ci return valueType == expectType; 354d6c458bSopenharmony_ci} 364d6c458bSopenharmony_ci 374d6c458bSopenharmony_cibool NapiHelper::IsString(napi_env env, napi_value value) 384d6c458bSopenharmony_ci{ 394d6c458bSopenharmony_ci return IsTypeForNapiValue(env, value, napi_string); 404d6c458bSopenharmony_ci} 414d6c458bSopenharmony_ci 424d6c458bSopenharmony_cibool NapiHelper::IsNotUndefined(napi_env env, napi_value value) 434d6c458bSopenharmony_ci{ 444d6c458bSopenharmony_ci if (value == nullptr) { 454d6c458bSopenharmony_ci return false; 464d6c458bSopenharmony_ci } 474d6c458bSopenharmony_ci napi_valuetype valueType = napi_undefined; 484d6c458bSopenharmony_ci if (napi_typeof(env, value, &valueType) != napi_ok) { 494d6c458bSopenharmony_ci return false; 504d6c458bSopenharmony_ci } 514d6c458bSopenharmony_ci 524d6c458bSopenharmony_ci return valueType != napi_undefined; 534d6c458bSopenharmony_ci} 544d6c458bSopenharmony_ci 554d6c458bSopenharmony_cibool NapiHelper::IsArray(napi_env env, napi_value value) 564d6c458bSopenharmony_ci{ 574d6c458bSopenharmony_ci bool isArray = false; 584d6c458bSopenharmony_ci if (value == nullptr) { 594d6c458bSopenharmony_ci return false; 604d6c458bSopenharmony_ci } 614d6c458bSopenharmony_ci if (napi_is_array(env, value, &isArray) != napi_ok) { 624d6c458bSopenharmony_ci return false; 634d6c458bSopenharmony_ci } 644d6c458bSopenharmony_ci 654d6c458bSopenharmony_ci return isArray; 664d6c458bSopenharmony_ci} 674d6c458bSopenharmony_ci 684d6c458bSopenharmony_cibool NapiHelper::IsFunction(napi_env env, napi_value object) 694d6c458bSopenharmony_ci{ 704d6c458bSopenharmony_ci return IsTypeForNapiValue(env, object, napi_function); 714d6c458bSopenharmony_ci} 724d6c458bSopenharmony_ci 734d6c458bSopenharmony_cibool NapiHelper::IsArrayBuffer(napi_env env, napi_value value) 744d6c458bSopenharmony_ci{ 754d6c458bSopenharmony_ci bool result = false; 764d6c458bSopenharmony_ci if (value == nullptr) { 774d6c458bSopenharmony_ci return false; 784d6c458bSopenharmony_ci } 794d6c458bSopenharmony_ci if (napi_is_arraybuffer(env, value, &result) != napi_ok) { 804d6c458bSopenharmony_ci return false; 814d6c458bSopenharmony_ci } 824d6c458bSopenharmony_ci 834d6c458bSopenharmony_ci return result; 844d6c458bSopenharmony_ci} 854d6c458bSopenharmony_ci 864d6c458bSopenharmony_cibool NapiHelper::IsNumber(napi_env env, napi_value value) 874d6c458bSopenharmony_ci{ 884d6c458bSopenharmony_ci return IsTypeForNapiValue(env, value, napi_number); 894d6c458bSopenharmony_ci} 904d6c458bSopenharmony_ci 914d6c458bSopenharmony_cisize_t NapiHelper::GetCallbackInfoArgc(napi_env env, napi_callback_info cbInfo) 924d6c458bSopenharmony_ci{ 934d6c458bSopenharmony_ci size_t argc = 0; 944d6c458bSopenharmony_ci napi_get_cb_info(env, cbInfo, &argc, nullptr, nullptr, nullptr); 954d6c458bSopenharmony_ci return argc; 964d6c458bSopenharmony_ci} 974d6c458bSopenharmony_ci 984d6c458bSopenharmony_cinapi_value NapiHelper::GetNamePropertyInParentPort(napi_env env, napi_ref parentPort, const char* name) 994d6c458bSopenharmony_ci{ 1004d6c458bSopenharmony_ci napi_value obj = nullptr; 1014d6c458bSopenharmony_ci napi_get_reference_value(env, parentPort, &obj); 1024d6c458bSopenharmony_ci 1034d6c458bSopenharmony_ci napi_value value = nullptr; 1044d6c458bSopenharmony_ci napi_get_named_property(env, obj, name, &value); 1054d6c458bSopenharmony_ci 1064d6c458bSopenharmony_ci return value; 1074d6c458bSopenharmony_ci} 1084d6c458bSopenharmony_ci 1094d6c458bSopenharmony_cinapi_value NapiHelper::GetUndefinedValue(napi_env env) 1104d6c458bSopenharmony_ci{ 1114d6c458bSopenharmony_ci napi_value result = nullptr; 1124d6c458bSopenharmony_ci napi_get_undefined(env, &result); 1134d6c458bSopenharmony_ci return result; 1144d6c458bSopenharmony_ci} 1154d6c458bSopenharmony_ci 1164d6c458bSopenharmony_cibool NapiHelper::IsCallable(napi_env env, napi_value value) 1174d6c458bSopenharmony_ci{ 1184d6c458bSopenharmony_ci bool result = false; 1194d6c458bSopenharmony_ci napi_is_callable(env, value, &result); 1204d6c458bSopenharmony_ci return result; 1214d6c458bSopenharmony_ci} 1224d6c458bSopenharmony_ci 1234d6c458bSopenharmony_cibool NapiHelper::IsCallable(napi_env env, napi_ref value) 1244d6c458bSopenharmony_ci{ 1254d6c458bSopenharmony_ci napi_value obj = nullptr; 1264d6c458bSopenharmony_ci napi_get_reference_value(env, value, &obj); 1274d6c458bSopenharmony_ci if (obj == nullptr) { 1284d6c458bSopenharmony_ci return false; 1294d6c458bSopenharmony_ci } 1304d6c458bSopenharmony_ci return IsCallable(env, obj); 1314d6c458bSopenharmony_ci} 1324d6c458bSopenharmony_ci 1334d6c458bSopenharmony_cibool NapiHelper::IsAsyncFunction(napi_env env, napi_value value) 1344d6c458bSopenharmony_ci{ 1354d6c458bSopenharmony_ci bool res = false; 1364d6c458bSopenharmony_ci napi_is_async_function(env, value, &res); 1374d6c458bSopenharmony_ci return res; 1384d6c458bSopenharmony_ci} 1394d6c458bSopenharmony_ci 1404d6c458bSopenharmony_cibool NapiHelper::IsConcurrentFunction(napi_env env, napi_value value) 1414d6c458bSopenharmony_ci{ 1424d6c458bSopenharmony_ci bool res = false; 1434d6c458bSopenharmony_ci napi_is_concurrent_function(env, value, &res); 1444d6c458bSopenharmony_ci return res; 1454d6c458bSopenharmony_ci} 1464d6c458bSopenharmony_ci 1474d6c458bSopenharmony_cibool NapiHelper::IsGeneratorFunction(napi_env env, napi_value value) 1484d6c458bSopenharmony_ci{ 1494d6c458bSopenharmony_ci bool res = false; 1504d6c458bSopenharmony_ci napi_is_generator_function(env, value, &res); 1514d6c458bSopenharmony_ci return res; 1524d6c458bSopenharmony_ci} 1534d6c458bSopenharmony_ci 1544d6c458bSopenharmony_cibool NapiHelper::IsStrictEqual(napi_env env, napi_value lhs, napi_value rhs) 1554d6c458bSopenharmony_ci{ 1564d6c458bSopenharmony_ci bool res = false; 1574d6c458bSopenharmony_ci napi_strict_equals(env, lhs, rhs, &res); 1584d6c458bSopenharmony_ci return res; 1594d6c458bSopenharmony_ci} 1604d6c458bSopenharmony_ci 1614d6c458bSopenharmony_cibool NapiHelper::IsSendable(napi_env env, napi_value value) 1624d6c458bSopenharmony_ci{ 1634d6c458bSopenharmony_ci bool res = false; 1644d6c458bSopenharmony_ci napi_is_sendable(env, value, &res); 1654d6c458bSopenharmony_ci return res; 1664d6c458bSopenharmony_ci} 1674d6c458bSopenharmony_ci 1684d6c458bSopenharmony_civoid NapiHelper::SetNamePropertyInGlobal(napi_env env, const char* name, napi_value value) 1694d6c458bSopenharmony_ci{ 1704d6c458bSopenharmony_ci napi_value object = nullptr; 1714d6c458bSopenharmony_ci napi_get_global(env, &object); 1724d6c458bSopenharmony_ci napi_set_named_property(env, object, name, value); 1734d6c458bSopenharmony_ci} 1744d6c458bSopenharmony_ci 1754d6c458bSopenharmony_cibool NapiHelper::IsObject(napi_env env, napi_value value) 1764d6c458bSopenharmony_ci{ 1774d6c458bSopenharmony_ci return IsTypeForNapiValue(env, value, napi_object); 1784d6c458bSopenharmony_ci} 1794d6c458bSopenharmony_ci 1804d6c458bSopenharmony_cichar* NapiHelper::GetChars(napi_env env, napi_value value) 1814d6c458bSopenharmony_ci{ 1824d6c458bSopenharmony_ci size_t bufferSize = 0; 1834d6c458bSopenharmony_ci size_t strLength = 0; 1844d6c458bSopenharmony_ci napi_get_value_string_utf8(env, value, nullptr, 0, &bufferSize); 1854d6c458bSopenharmony_ci if (bufferSize > MAX_CHAR_LENGTH) { 1864d6c458bSopenharmony_ci bufferSize = MAX_CHAR_LENGTH; 1874d6c458bSopenharmony_ci } 1884d6c458bSopenharmony_ci char* buffer = new char[bufferSize + 1] { 0 }; 1894d6c458bSopenharmony_ci napi_get_value_string_utf8(env, value, buffer, bufferSize + 1, &strLength); 1904d6c458bSopenharmony_ci return buffer; 1914d6c458bSopenharmony_ci} 1924d6c458bSopenharmony_ci 1934d6c458bSopenharmony_cistd::string NapiHelper::GetString(napi_env env, napi_value value) 1944d6c458bSopenharmony_ci{ 1954d6c458bSopenharmony_ci std::string str = ""; 1964d6c458bSopenharmony_ci char* buffer = GetChars(env, value); 1974d6c458bSopenharmony_ci if (buffer == nullptr) { 1984d6c458bSopenharmony_ci return str; 1994d6c458bSopenharmony_ci } 2004d6c458bSopenharmony_ci str = std::string(buffer); 2014d6c458bSopenharmony_ci CloseHelp::DeletePointer(buffer, true); 2024d6c458bSopenharmony_ci return str; 2034d6c458bSopenharmony_ci} 2044d6c458bSopenharmony_ci 2054d6c458bSopenharmony_cinapi_value NapiHelper::CreateBooleanValue(napi_env env, bool value) 2064d6c458bSopenharmony_ci{ 2074d6c458bSopenharmony_ci napi_value result = nullptr; 2084d6c458bSopenharmony_ci napi_get_boolean(env, value, &result); 2094d6c458bSopenharmony_ci return result; 2104d6c458bSopenharmony_ci} 2114d6c458bSopenharmony_ci 2124d6c458bSopenharmony_cinapi_value NapiHelper::GetGlobalObject(napi_env env) 2134d6c458bSopenharmony_ci{ 2144d6c458bSopenharmony_ci napi_value object = nullptr; 2154d6c458bSopenharmony_ci napi_get_global(env, &object); 2164d6c458bSopenharmony_ci return object; 2174d6c458bSopenharmony_ci} 2184d6c458bSopenharmony_ci 2194d6c458bSopenharmony_cinapi_ref NapiHelper::CreateReference(napi_env env, napi_value value, uint32_t refcount) 2204d6c458bSopenharmony_ci{ 2214d6c458bSopenharmony_ci napi_ref callback = nullptr; 2224d6c458bSopenharmony_ci napi_create_reference(env, value, refcount, &callback); 2234d6c458bSopenharmony_ci return callback; 2244d6c458bSopenharmony_ci} 2254d6c458bSopenharmony_ci 2264d6c458bSopenharmony_cinapi_value NapiHelper::CreateUint32(napi_env env, uint32_t value) 2274d6c458bSopenharmony_ci{ 2284d6c458bSopenharmony_ci napi_value result = nullptr; 2294d6c458bSopenharmony_ci napi_create_uint32(env, value, &result); 2304d6c458bSopenharmony_ci return result; 2314d6c458bSopenharmony_ci} 2324d6c458bSopenharmony_ci 2334d6c458bSopenharmony_ciuv_loop_t* NapiHelper::GetLibUV(napi_env env) 2344d6c458bSopenharmony_ci{ 2354d6c458bSopenharmony_ci uv_loop_t* loop; 2364d6c458bSopenharmony_ci napi_get_uv_event_loop(env, &loop); 2374d6c458bSopenharmony_ci return loop; 2384d6c458bSopenharmony_ci} 2394d6c458bSopenharmony_ci 2404d6c458bSopenharmony_cinapi_value NapiHelper::GetReferenceValue(napi_env env, napi_ref ref) 2414d6c458bSopenharmony_ci{ 2424d6c458bSopenharmony_ci napi_value result = nullptr; 2434d6c458bSopenharmony_ci napi_get_reference_value(env, ref, &result); 2444d6c458bSopenharmony_ci return result; 2454d6c458bSopenharmony_ci} 2464d6c458bSopenharmony_ci 2474d6c458bSopenharmony_civoid NapiHelper::DeleteReference(napi_env env, napi_ref ref) 2484d6c458bSopenharmony_ci{ 2494d6c458bSopenharmony_ci napi_delete_reference(env, ref); 2504d6c458bSopenharmony_ci} 2514d6c458bSopenharmony_ci 2524d6c458bSopenharmony_cinapi_value NapiHelper::GetNameProperty(napi_env env, napi_value obj, const char* name) 2534d6c458bSopenharmony_ci{ 2544d6c458bSopenharmony_ci napi_value result = nullptr; 2554d6c458bSopenharmony_ci napi_get_named_property(env, obj, name, &result); 2564d6c458bSopenharmony_ci return result; 2574d6c458bSopenharmony_ci} 2584d6c458bSopenharmony_ci 2594d6c458bSopenharmony_cibool NapiHelper::HasNameProperty(napi_env env, napi_value obj, const char* name) 2604d6c458bSopenharmony_ci{ 2614d6c458bSopenharmony_ci bool result = false; 2624d6c458bSopenharmony_ci napi_has_named_property(env, obj, name, &result); 2634d6c458bSopenharmony_ci return result; 2644d6c458bSopenharmony_ci} 2654d6c458bSopenharmony_ci 2664d6c458bSopenharmony_cibool NapiHelper::GetBooleanValue(napi_env env, napi_value value) 2674d6c458bSopenharmony_ci{ 2684d6c458bSopenharmony_ci bool result = false; 2694d6c458bSopenharmony_ci napi_get_value_bool(env, value, &result); 2704d6c458bSopenharmony_ci return result; 2714d6c458bSopenharmony_ci} 2724d6c458bSopenharmony_ci 2734d6c458bSopenharmony_cibool NapiHelper::StrictEqual(napi_env env, napi_value value, napi_value cmpValue) 2744d6c458bSopenharmony_ci{ 2754d6c458bSopenharmony_ci bool isEqual = false; 2764d6c458bSopenharmony_ci napi_strict_equals(env, value, cmpValue, &isEqual); 2774d6c458bSopenharmony_ci return isEqual; 2784d6c458bSopenharmony_ci} 2794d6c458bSopenharmony_ci 2804d6c458bSopenharmony_cistd::string NapiHelper::GetConstructorName(napi_env env, napi_value object) 2814d6c458bSopenharmony_ci{ 2824d6c458bSopenharmony_ci while (IsNotUndefined(env, object)) { 2834d6c458bSopenharmony_ci napi_value func = nullptr; 2844d6c458bSopenharmony_ci napi_get_own_property_descriptor(env, object, "constructor", &func); 2854d6c458bSopenharmony_ci bool isInstanceof = false; 2864d6c458bSopenharmony_ci napi_instanceof(env, object, func, &isInstanceof); 2874d6c458bSopenharmony_ci if (IsNotUndefined(env, func) && isInstanceof) { 2884d6c458bSopenharmony_ci napi_value ctorName = nullptr; 2894d6c458bSopenharmony_ci napi_get_own_property_descriptor(env, func, "name", &ctorName); 2904d6c458bSopenharmony_ci std::string name = GetPrintString(env, ctorName); 2914d6c458bSopenharmony_ci if (name.size() > 0) { 2924d6c458bSopenharmony_ci return name; 2934d6c458bSopenharmony_ci } 2944d6c458bSopenharmony_ci } 2954d6c458bSopenharmony_ci napi_value result = nullptr; 2964d6c458bSopenharmony_ci napi_get_prototype(env, object, &result); 2974d6c458bSopenharmony_ci object = result; 2984d6c458bSopenharmony_ci } 2994d6c458bSopenharmony_ci return ""; 3004d6c458bSopenharmony_ci} 3014d6c458bSopenharmony_ci 3024d6c458bSopenharmony_cinapi_value NapiHelper::CreateObject(napi_env env) 3034d6c458bSopenharmony_ci{ 3044d6c458bSopenharmony_ci napi_value obj = nullptr; 3054d6c458bSopenharmony_ci napi_create_object(env, &obj); 3064d6c458bSopenharmony_ci return obj; 3074d6c458bSopenharmony_ci} 3084d6c458bSopenharmony_ci 3094d6c458bSopenharmony_cinapi_value NapiHelper::CreatePromise(napi_env env, napi_deferred* deferred) 3104d6c458bSopenharmony_ci{ 3114d6c458bSopenharmony_ci napi_value promise = nullptr; 3124d6c458bSopenharmony_ci napi_create_promise(env, deferred, &promise); 3134d6c458bSopenharmony_ci return promise; 3144d6c458bSopenharmony_ci} 3154d6c458bSopenharmony_ci 3164d6c458bSopenharmony_cinapi_value NapiHelper::CreateEmptyString(napi_env env) 3174d6c458bSopenharmony_ci{ 3184d6c458bSopenharmony_ci napi_value str = nullptr; 3194d6c458bSopenharmony_ci const char* name = ""; 3204d6c458bSopenharmony_ci napi_create_string_utf8(env, name, 0, &str); 3214d6c458bSopenharmony_ci return str; 3224d6c458bSopenharmony_ci} 3234d6c458bSopenharmony_ci 3244d6c458bSopenharmony_ciuint32_t NapiHelper::GetArrayLength(napi_env env, napi_value array) 3254d6c458bSopenharmony_ci{ 3264d6c458bSopenharmony_ci uint32_t arrayLength = 0; 3274d6c458bSopenharmony_ci napi_get_array_length(env, array, &arrayLength); 3284d6c458bSopenharmony_ci return arrayLength; 3294d6c458bSopenharmony_ci} 3304d6c458bSopenharmony_ci 3314d6c458bSopenharmony_ciuint32_t NapiHelper::GetUint32Value(napi_env env, napi_value value) 3324d6c458bSopenharmony_ci{ 3334d6c458bSopenharmony_ci uint32_t result = 0; 3344d6c458bSopenharmony_ci napi_get_value_uint32(env, value, &result); 3354d6c458bSopenharmony_ci return result; 3364d6c458bSopenharmony_ci} 3374d6c458bSopenharmony_ci 3384d6c458bSopenharmony_ciint32_t NapiHelper::GetInt32Value(napi_env env, napi_value value) 3394d6c458bSopenharmony_ci{ 3404d6c458bSopenharmony_ci int32_t result = 0; 3414d6c458bSopenharmony_ci napi_get_value_int32(env, value, &result); 3424d6c458bSopenharmony_ci return result; 3434d6c458bSopenharmony_ci} 3444d6c458bSopenharmony_ci 3454d6c458bSopenharmony_cibool NapiHelper::IsExceptionPending(napi_env env) 3464d6c458bSopenharmony_ci{ 3474d6c458bSopenharmony_ci bool isExceptionPending = false; 3484d6c458bSopenharmony_ci napi_is_exception_pending(env, &isExceptionPending); 3494d6c458bSopenharmony_ci return isExceptionPending; 3504d6c458bSopenharmony_ci} 3514d6c458bSopenharmony_ci 3524d6c458bSopenharmony_cistd::string NapiHelper::GetPrintString(napi_env env, napi_value value) 3534d6c458bSopenharmony_ci{ 3544d6c458bSopenharmony_ci std::string str; 3554d6c458bSopenharmony_ci if (!IsTypeForNapiValue(env, value, napi_string)) { 3564d6c458bSopenharmony_ci napi_value strValue = nullptr; 3574d6c458bSopenharmony_ci if (napi_coerce_to_string(env, value, &strValue) != napi_ok) { 3584d6c458bSopenharmony_ci return str; 3594d6c458bSopenharmony_ci } 3604d6c458bSopenharmony_ci value = strValue; 3614d6c458bSopenharmony_ci } 3624d6c458bSopenharmony_ci napi_get_print_string(env, value, str); 3634d6c458bSopenharmony_ci return str; 3644d6c458bSopenharmony_ci} 3654d6c458bSopenharmony_ci 3664d6c458bSopenharmony_cinapi_value NapiHelper::CreateUint64(napi_env env, uint64_t value) 3674d6c458bSopenharmony_ci{ 3684d6c458bSopenharmony_ci napi_value result; 3694d6c458bSopenharmony_ci napi_create_bigint_uint64(env, value, &result); 3704d6c458bSopenharmony_ci return result; 3714d6c458bSopenharmony_ci} 3724d6c458bSopenharmony_ci 3734d6c458bSopenharmony_ciuint64_t NapiHelper::GetUint64Value(napi_env env, napi_value value, bool lossless) 3744d6c458bSopenharmony_ci{ 3754d6c458bSopenharmony_ci uint64_t result = 0; 3764d6c458bSopenharmony_ci napi_get_value_bigint_uint64(env, value, &result, &lossless); 3774d6c458bSopenharmony_ci return result; 3784d6c458bSopenharmony_ci} 3794d6c458bSopenharmony_ci 3804d6c458bSopenharmony_cinapi_value NapiHelper::GetElement(napi_env env, napi_value value, uint32_t index) 3814d6c458bSopenharmony_ci{ 3824d6c458bSopenharmony_ci napi_value result; 3834d6c458bSopenharmony_ci napi_get_element(env, value, index, &result); 3844d6c458bSopenharmony_ci return result; 3854d6c458bSopenharmony_ci} 3864d6c458bSopenharmony_ci 3874d6c458bSopenharmony_cinapi_value NapiHelper::CreateArrayWithLength(napi_env env, size_t length) 3884d6c458bSopenharmony_ci{ 3894d6c458bSopenharmony_ci napi_value argsArray; 3904d6c458bSopenharmony_ci napi_create_array_with_length(env, length, &argsArray); 3914d6c458bSopenharmony_ci return argsArray; 3924d6c458bSopenharmony_ci} 3934d6c458bSopenharmony_ci} // namespace Commonlibrary::Concurrent::Common::Helper