You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							74 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							74 lines
						
					
					
						
							2.4 KiB
						
					
					
				| /*********************************************************************
 | |
|  * 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_
 | |
| 
 |