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