1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | #ifndef NAN_PRIVATE_H_
|
10 | #define NAN_PRIVATE_H_
|
11 |
|
12 | inline Maybe<bool>
|
13 | HasPrivate(v8::Local<v8::Object> object, v8::Local<v8::String> key) {
|
14 | HandleScope scope;
|
15 | #if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION
|
16 | v8::Isolate *isolate = v8::Isolate::GetCurrent();
|
17 | v8::Local<v8::Context> context = isolate->GetCurrentContext();
|
18 | v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key);
|
19 | return object->HasPrivate(context, private_key);
|
20 | #else
|
21 | return Just(!object->GetHiddenValue(key).IsEmpty());
|
22 | #endif
|
23 | }
|
24 |
|
25 | inline MaybeLocal<v8::Value>
|
26 | GetPrivate(v8::Local<v8::Object> object, v8::Local<v8::String> key) {
|
27 | #if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION
|
28 | v8::Isolate *isolate = v8::Isolate::GetCurrent();
|
29 | v8::EscapableHandleScope scope(isolate);
|
30 | v8::Local<v8::Context> context = isolate->GetCurrentContext();
|
31 | v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key);
|
32 | v8::MaybeLocal<v8::Value> v = object->GetPrivate(context, private_key);
|
33 | return scope.Escape(v.ToLocalChecked());
|
34 | #else
|
35 | EscapableHandleScope scope;
|
36 | v8::Local<v8::Value> v = object->GetHiddenValue(key);
|
37 | if (v.IsEmpty()) {
|
38 | v = Undefined();
|
39 | }
|
40 | return scope.Escape(v);
|
41 | #endif
|
42 | }
|
43 |
|
44 | inline Maybe<bool> SetPrivate(
|
45 | v8::Local<v8::Object> object,
|
46 | v8::Local<v8::String> key,
|
47 | v8::Local<v8::Value> value) {
|
48 | #if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION
|
49 | HandleScope scope;
|
50 | v8::Isolate *isolate = v8::Isolate::GetCurrent();
|
51 | v8::Local<v8::Context> context = isolate->GetCurrentContext();
|
52 | v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key);
|
53 | return object->SetPrivate(context, private_key, value);
|
54 | #else
|
55 | return Just(object->SetHiddenValue(key, value));
|
56 | #endif
|
57 | }
|
58 |
|
59 | inline Maybe<bool> DeletePrivate(
|
60 | v8::Local<v8::Object> object,
|
61 | v8::Local<v8::String> key) {
|
62 | #if NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION
|
63 | HandleScope scope;
|
64 | v8::Isolate *isolate = v8::Isolate::GetCurrent();
|
65 | v8::Local<v8::Private> private_key = v8::Private::ForApi(isolate, key);
|
66 | return object->DeletePrivate(isolate->GetCurrentContext(), private_key);
|
67 | #else
|
68 | return Just(object->DeleteHiddenValue(key));
|
69 | #endif
|
70 | }
|
71 |
|
72 | #endif
|
73 |
|