diff options
author | Minteck <contact@minteck.org> | 2022-02-25 18:08:27 +0100 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2022-02-25 18:08:27 +0100 |
commit | a5c417748112e9d88d9ca522561e338eb9ba9007 (patch) | |
tree | ddab6e854fe8b50942a397a0d9fd8330ad662a97 /node_modules/nan/nan_private.h | |
download | argon-cdn-a5c417748112e9d88d9ca522561e338eb9ba9007.tar.gz argon-cdn-a5c417748112e9d88d9ca522561e338eb9ba9007.tar.bz2 argon-cdn-a5c417748112e9d88d9ca522561e338eb9ba9007.zip |
Initial commit
Diffstat (limited to 'node_modules/nan/nan_private.h')
-rw-r--r-- | node_modules/nan/nan_private.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/node_modules/nan/nan_private.h b/node_modules/nan/nan_private.h new file mode 100644 index 0000000..15f44cc --- /dev/null +++ b/node_modules/nan/nan_private.h @@ -0,0 +1,73 @@ +/********************************************************************* + * NAN - Native Abstractions for Node.js + * + * Copyright (c) 2018 NAN contributors + * + * MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md> + ********************************************************************/ + +#ifndef NAN_PRIVATE_H_ +#define NAN_PRIVATE_H_ + +inline Maybe<bool> +HasPrivate(v8::Local<v8::Object> object, v8::Local<v8::String> key) { + HandleScope scope; +#if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::Local<v8::Context> context = isolate->GetCurrentContext(); + v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key); + return object->HasPrivate(context, private_key); +#else + return Just(!object->GetHiddenValue(key).IsEmpty()); +#endif +} + +inline MaybeLocal<v8::Value> +GetPrivate(v8::Local<v8::Object> object, v8::Local<v8::String> key) { +#if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::EscapableHandleScope scope(isolate); + v8::Local<v8::Context> context = isolate->GetCurrentContext(); + v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key); + v8::MaybeLocal<v8::Value> v = object->GetPrivate(context, private_key); + return scope.Escape(v.ToLocalChecked()); +#else + EscapableHandleScope scope; + v8::Local<v8::Value> v = object->GetHiddenValue(key); + if (v.IsEmpty()) { + v = Undefined(); + } + return scope.Escape(v); +#endif +} + +inline Maybe<bool> SetPrivate( + v8::Local<v8::Object> object, + v8::Local<v8::String> key, + v8::Local<v8::Value> value) { +#if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION + HandleScope scope; + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::Local<v8::Context> context = isolate->GetCurrentContext(); + v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key); + return object->SetPrivate(context, private_key, value); +#else + return Just(object->SetHiddenValue(key, value)); +#endif +} + +inline Maybe<bool> DeletePrivate( + v8::Local<v8::Object> object, + v8::Local<v8::String> key) { +#if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION + HandleScope scope; + v8::Isolate *isolate = v8::Isolate::GetCurrent(); + v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key); + return object->DeletePrivate(isolate->GetCurrentContext(), private_key); +#else + return Just(object->DeleteHiddenValue(key)); +#endif +} + +#endif // NAN_PRIVATE_H_ + |