From 19f14517c7637b0e277b4fc3fdfe4473e5cc1262 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Fri, 25 Sep 2020 22:11:13 -0700 Subject: n-api: support for object freeze/seal PR-URL: https://github.com/nodejs/node/pull/35359 Reviewed-By: Gabriel Schulhof Reviewed-By: Michael Dawson Reviewed-By: Gireesh Punathil --- src/js_native_api_v8.cc | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/js_native_api_v8.cc') diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc index 0a069b3ae4..1feabfd879 100644 --- a/src/js_native_api_v8.cc +++ b/src/js_native_api_v8.cc @@ -1362,6 +1362,42 @@ napi_status napi_define_properties(napi_env env, return GET_RETURN_STATUS(env); } +napi_status napi_object_freeze(napi_env env, + napi_value object) { + NAPI_PREAMBLE(env); + + v8::Local context = env->context(); + v8::Local obj; + + CHECK_TO_OBJECT(env, context, obj, object); + + v8::Maybe set_frozen = + obj->SetIntegrityLevel(context, v8::IntegrityLevel::kFrozen); + + RETURN_STATUS_IF_FALSE_WITH_PREAMBLE(env, + set_frozen.FromMaybe(false), napi_generic_failure); + + return GET_RETURN_STATUS(env); +} + +napi_status napi_object_seal(napi_env env, + napi_value object) { + NAPI_PREAMBLE(env); + + v8::Local context = env->context(); + v8::Local obj; + + CHECK_TO_OBJECT(env, context, obj, object); + + v8::Maybe set_sealed = + obj->SetIntegrityLevel(context, v8::IntegrityLevel::kSealed); + + RETURN_STATUS_IF_FALSE_WITH_PREAMBLE(env, + set_sealed.FromMaybe(false), napi_generic_failure); + + return GET_RETURN_STATUS(env); +} + napi_status napi_is_array(napi_env env, napi_value value, bool* result) { CHECK_ENV(env); CHECK_ARG(env, value); -- cgit v1.2.1