Skip to content

Commit 010ed9d

Browse files
committed
PR feedback
Took updated node_api.cc from node
1 parent fb85578 commit 010ed9d

File tree

2 files changed

+55
-6
lines changed

2 files changed

+55
-6
lines changed

src/node_api.cc

+47-6
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include <algorithm>
1515
#include <cassert>
1616
#include <cmath>
17-
#include <cstdarg>
1817
#include <vector>
1918
#include "uv.h"
2019
#include "node_api.h"
@@ -1008,6 +1007,28 @@ napi_status napi_get_property(napi_env env,
10081007
return GET_RETURN_STATUS(env);
10091008
}
10101009

1010+
napi_status napi_delete_property(napi_env env,
1011+
napi_value object,
1012+
napi_value key,
1013+
bool* result) {
1014+
NAPI_PREAMBLE(env);
1015+
CHECK_ARG(env, key);
1016+
1017+
v8::Isolate* isolate = env->isolate;
1018+
v8::Local<v8::Context> context = isolate->GetCurrentContext();
1019+
v8::Local<v8::Value> k = v8impl::V8LocalValueFromJsValue(key);
1020+
v8::Local<v8::Object> obj;
1021+
1022+
CHECK_TO_OBJECT(env, context, obj, object);
1023+
v8::Maybe<bool> delete_maybe = obj->Delete(context, k);
1024+
CHECK_MAYBE_NOTHING(env, delete_maybe, napi_generic_failure);
1025+
1026+
if (result != NULL)
1027+
*result = delete_maybe.FromMaybe(false);
1028+
1029+
return GET_RETURN_STATUS(env);
1030+
}
1031+
10111032
napi_status napi_set_named_property(napi_env env,
10121033
napi_value object,
10131034
const char* utf8name,
@@ -1145,6 +1166,26 @@ napi_status napi_get_element(napi_env env,
11451166
return GET_RETURN_STATUS(env);
11461167
}
11471168

1169+
napi_status napi_delete_element(napi_env env,
1170+
napi_value object,
1171+
uint32_t index,
1172+
bool* result) {
1173+
NAPI_PREAMBLE(env);
1174+
1175+
v8::Isolate* isolate = env->isolate;
1176+
v8::Local<v8::Context> context = isolate->GetCurrentContext();
1177+
v8::Local<v8::Object> obj;
1178+
1179+
CHECK_TO_OBJECT(env, context, obj, object);
1180+
v8::Maybe<bool> delete_maybe = obj->Delete(context, index);
1181+
CHECK_MAYBE_NOTHING(env, delete_maybe, napi_generic_failure);
1182+
1183+
if (result != NULL)
1184+
*result = delete_maybe.FromMaybe(false);
1185+
1186+
return GET_RETURN_STATUS(env);
1187+
}
1188+
11481189
napi_status napi_define_properties(napi_env env,
11491190
napi_value object,
11501191
size_t property_count,
@@ -1973,16 +2014,16 @@ napi_status napi_wrap(napi_env env,
19732014

19742015
// Create a wrapper object with an internal field to hold the wrapped pointer.
19752016
v8::Local<v8::ObjectTemplate> wrapperTemplate =
1976-
v8::ObjectTemplate::New(isolate);
2017+
v8::ObjectTemplate::New(isolate);
19772018
wrapperTemplate->SetInternalFieldCount(1);
19782019
v8::Local<v8::Object> wrapper =
1979-
wrapperTemplate->NewInstance(context).ToLocalChecked();
2020+
wrapperTemplate->NewInstance(context).ToLocalChecked();
19802021
wrapper->SetInternalField(0, v8::External::New(isolate, native_object));
19812022

19822023
// Insert the wrapper into the object's prototype chain.
19832024
v8::Local<v8::Value> proto = obj->GetPrototype();
1984-
wrapper->SetPrototype(proto);
1985-
obj->SetPrototype(wrapper);
2025+
CHECK(wrapper->SetPrototype(context, proto).FromJust());
2026+
CHECK(obj->SetPrototype(context, wrapper).FromJust());
19862027

19872028
if (result != nullptr) {
19882029
// The returned reference should be deleted via napi_delete_reference()
@@ -2287,7 +2328,7 @@ napi_status napi_instanceof(napi_env env,
22872328
}
22882329

22892330
if (env->has_instance_available) {
2290-
napi_value value, js_result, has_instance = nullptr;
2331+
napi_value value, js_result = nullptr, has_instance = nullptr;
22912332
napi_status status = napi_generic_failure;
22922333
napi_valuetype value_type;
22932334

src/node_api.h

+8
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,10 @@ NAPI_EXTERN napi_status napi_get_property(napi_env env,
235235
napi_value object,
236236
napi_value key,
237237
napi_value* result);
238+
NAPI_EXTERN napi_status napi_delete_property(napi_env env,
239+
napi_value object,
240+
napi_value key,
241+
bool* result);
238242
NAPI_EXTERN napi_status napi_set_named_property(napi_env env,
239243
napi_value object,
240244
const char* utf8name,
@@ -259,6 +263,10 @@ NAPI_EXTERN napi_status napi_get_element(napi_env env,
259263
napi_value object,
260264
uint32_t index,
261265
napi_value* result);
266+
NAPI_EXTERN napi_status napi_delete_element(napi_env env,
267+
napi_value object,
268+
uint32_t index,
269+
bool* result);
262270
NAPI_EXTERN napi_status
263271
napi_define_properties(napi_env env,
264272
napi_value object,

0 commit comments

Comments
 (0)