1 | ## Maybe Types
|
2 |
|
3 | The `Nan::MaybeLocal` and `Nan::Maybe` types are monads that encapsulate `v8::Local` handles that _may be empty_.
|
4 |
|
5 | * **Maybe Types**
|
6 | - <a href="#api_nan_maybe_local"><b><code>Nan::MaybeLocal</code></b></a>
|
7 | - <a href="#api_nan_maybe"><b><code>Nan::Maybe</code></b></a>
|
8 | - <a href="#api_nan_nothing"><b><code>Nan::Nothing</code></b></a>
|
9 | - <a href="#api_nan_just"><b><code>Nan::Just</code></b></a>
|
10 | * **Maybe Helpers**
|
11 | - <a href="#api_nan_call"><b><code>Nan::Call()</code></b></a>
|
12 | - <a href="#api_nan_to_detail_string"><b><code>Nan::ToDetailString()</code></b></a>
|
13 | - <a href="#api_nan_to_array_index"><b><code>Nan::ToArrayIndex()</code></b></a>
|
14 | - <a href="#api_nan_equals"><b><code>Nan::Equals()</code></b></a>
|
15 | - <a href="#api_nan_new_instance"><b><code>Nan::NewInstance()</code></b></a>
|
16 | - <a href="#api_nan_get_function"><b><code>Nan::GetFunction()</code></b></a>
|
17 | - <a href="#api_nan_set"><b><code>Nan::Set()</code></b></a>
|
18 | - <a href="#api_nan_define_own_property"><b><code>Nan::DefineOwnProperty()</code></b></a>
|
19 | - <a href="#api_nan_force_set"><del><b><code>Nan::ForceSet()</code></b></del></a>
|
20 | - <a href="#api_nan_get"><b><code>Nan::Get()</code></b></a>
|
21 | - <a href="#api_nan_get_property_attribute"><b><code>Nan::GetPropertyAttributes()</code></b></a>
|
22 | - <a href="#api_nan_has"><b><code>Nan::Has()</code></b></a>
|
23 | - <a href="#api_nan_delete"><b><code>Nan::Delete()</code></b></a>
|
24 | - <a href="#api_nan_get_property_names"><b><code>Nan::GetPropertyNames()</code></b></a>
|
25 | - <a href="#api_nan_get_own_property_names"><b><code>Nan::GetOwnPropertyNames()</code></b></a>
|
26 | - <a href="#api_nan_set_prototype"><b><code>Nan::SetPrototype()</code></b></a>
|
27 | - <a href="#api_nan_object_proto_to_string"><b><code>Nan::ObjectProtoToString()</code></b></a>
|
28 | - <a href="#api_nan_has_own_property"><b><code>Nan::HasOwnProperty()</code></b></a>
|
29 | - <a href="#api_nan_has_real_named_property"><b><code>Nan::HasRealNamedProperty()</code></b></a>
|
30 | - <a href="#api_nan_has_real_indexed_property"><b><code>Nan::HasRealIndexedProperty()</code></b></a>
|
31 | - <a href="#api_nan_has_real_named_callback_property"><b><code>Nan::HasRealNamedCallbackProperty()</code></b></a>
|
32 | - <a href="#api_nan_get_real_named_property_in_prototype_chain"><b><code>Nan::GetRealNamedPropertyInPrototypeChain()</code></b></a>
|
33 | - <a href="#api_nan_get_real_named_property"><b><code>Nan::GetRealNamedProperty()</code></b></a>
|
34 | - <a href="#api_nan_call_as_function"><b><code>Nan::CallAsFunction()</code></b></a>
|
35 | - <a href="#api_nan_call_as_constructor"><b><code>Nan::CallAsConstructor()</code></b></a>
|
36 | - <a href="#api_nan_get_source_line"><b><code>Nan::GetSourceLine()</code></b></a>
|
37 | - <a href="#api_nan_get_line_number"><b><code>Nan::GetLineNumber()</code></b></a>
|
38 | - <a href="#api_nan_get_start_column"><b><code>Nan::GetStartColumn()</code></b></a>
|
39 | - <a href="#api_nan_get_end_column"><b><code>Nan::GetEndColumn()</code></b></a>
|
40 | - <a href="#api_nan_clone_element_at"><b><code>Nan::CloneElementAt()</code></b></a>
|
41 | - <a href="#api_nan_has_private"><b><code>Nan::HasPrivate()</code></b></a>
|
42 | - <a href="#api_nan_get_private"><b><code>Nan::GetPrivate()</code></b></a>
|
43 | - <a href="#api_nan_set_private"><b><code>Nan::SetPrivate()</code></b></a>
|
44 | - <a href="#api_nan_delete_private"><b><code>Nan::DeletePrivate()</code></b></a>
|
45 | - <a href="#api_nan_make_maybe"><b><code>Nan::MakeMaybe()</code></b></a>
|
46 |
|
47 | <a name="api_nan_maybe_local"></a>
|
48 | ### Nan::MaybeLocal
|
49 |
|
50 | A `Nan::MaybeLocal<T>` is a wrapper around [`v8::Local<T>`](https://v8docs.nodesource.com/node-8.11/de/deb/classv8_1_1_local.html) that enforces a check that determines whether the `v8::Local<T>` is empty before it can be used.
|
51 |
|
52 | If an API method returns a `Nan::MaybeLocal`, the API method can potentially fail either because an exception is thrown, or because an exception is pending, e.g. because a previous API call threw an exception that hasn't been caught yet, or because a `v8::TerminateExecution` exception was thrown. In that case, an empty `Nan::MaybeLocal` is returned.
|
53 |
|
54 | Definition:
|
55 |
|
56 | ```c++
|
57 | template<typename T> class Nan::MaybeLocal {
|
58 | public:
|
59 | MaybeLocal();
|
60 |
|
61 | template<typename S> MaybeLocal(v8::Local<S> that);
|
62 |
|
63 | bool IsEmpty() const;
|
64 |
|
65 | template<typename S> bool ToLocal(v8::Local<S> *out);
|
66 |
|
67 | // Will crash if the MaybeLocal<> is empty.
|
68 | v8::Local<T> ToLocalChecked();
|
69 |
|
70 | template<typename S> v8::Local<S> FromMaybe(v8::Local<S> default_value) const;
|
71 | };
|
72 | ```
|
73 |
|
74 | See the documentation for [`v8::MaybeLocal`](https://v8docs.nodesource.com/node-8.11/d8/d7d/classv8_1_1_maybe_local.html) for further details.
|
75 |
|
76 | <a name="api_nan_maybe"></a>
|
77 | ### Nan::Maybe
|
78 |
|
79 | A simple `Nan::Maybe` type, representing an object which may or may not have a value, see https://hackage.haskell.org/package/base/docs/Data-Maybe.html.
|
80 |
|
81 | If an API method returns a `Nan::Maybe<>`, the API method can potentially fail either because an exception is thrown, or because an exception is pending, e.g. because a previous API call threw an exception that hasn't been caught yet, or because a `v8::TerminateExecution` exception was thrown. In that case, a "Nothing" value is returned.
|
82 |
|
83 | Definition:
|
84 |
|
85 | ```c++
|
86 | template<typename T> class Nan::Maybe {
|
87 | public:
|
88 | bool IsNothing() const;
|
89 | bool IsJust() const;
|
90 |
|
91 | // Will crash if the Maybe<> is nothing.
|
92 | T FromJust();
|
93 |
|
94 | T FromMaybe(const T& default_value);
|
95 |
|
96 | bool operator==(const Maybe &other);
|
97 |
|
98 | bool operator!=(const Maybe &other);
|
99 | };
|
100 | ```
|
101 |
|
102 | See the documentation for [`v8::Maybe`](https://v8docs.nodesource.com/node-8.11/d9/d4b/classv8_1_1_maybe.html) for further details.
|
103 |
|
104 | <a name="api_nan_nothing"></a>
|
105 | ### Nan::Nothing
|
106 |
|
107 | Construct an empty `Nan::Maybe` type representing _nothing_.
|
108 |
|
109 | ```c++
|
110 | template<typename T> Nan::Maybe<T> Nan::Nothing();
|
111 | ```
|
112 |
|
113 | <a name="api_nan_just"></a>
|
114 | ### Nan::Just
|
115 |
|
116 | Construct a `Nan::Maybe` type representing _just_ a value.
|
117 |
|
118 | ```c++
|
119 | template<typename T> Nan::Maybe<T> Nan::Just(const T &t);
|
120 | ```
|
121 |
|
122 | <a name="api_nan_call"></a>
|
123 | ### Nan::Call()
|
124 |
|
125 | A helper method for calling a synchronous [`v8::Function#Call()`](https://v8docs.nodesource.com/node-8.11/d5/d54/classv8_1_1_function.html#a9c3d0e4e13ddd7721fce238aa5b94a11) in a way compatible across supported versions of V8.
|
126 |
|
127 | For asynchronous callbacks, use Nan::Callback::Call along with an AsyncResource.
|
128 |
|
129 | Signature:
|
130 |
|
131 | ```c++
|
132 | Nan::MaybeLocal<v8::Value> Nan::Call(v8::Local<v8::Function> fun, v8::Local<v8::Object> recv, int argc, v8::Local<v8::Value> argv[]);
|
133 | Nan::MaybeLocal<v8::Value> Nan::Call(const Nan::Callback& callback, v8::Local<v8::Object> recv,
|
134 | int argc, v8::Local<v8::Value> argv[]);
|
135 | Nan::MaybeLocal<v8::Value> Nan::Call(const Nan::Callback& callback, int argc, v8::Local<v8::Value> argv[]);
|
136 | ```
|
137 |
|
138 |
|
139 | <a name="api_nan_to_detail_string"></a>
|
140 | ### Nan::ToDetailString()
|
141 |
|
142 | A helper method for calling [`v8::Value#ToDetailString()`](https://v8docs.nodesource.com/node-8.11/dc/d0a/classv8_1_1_value.html#a2f9770296dc2c8d274bc8cc0dca243e5) in a way compatible across supported versions of V8.
|
143 |
|
144 | Signature:
|
145 |
|
146 | ```c++
|
147 | Nan::MaybeLocal<v8::String> Nan::ToDetailString(v8::Local<v8::Value> val);
|
148 | ```
|
149 |
|
150 |
|
151 | <a name="api_nan_to_array_index"></a>
|
152 | ### Nan::ToArrayIndex()
|
153 |
|
154 | A helper method for calling [`v8::Value#ToArrayIndex()`](https://v8docs.nodesource.com/node-8.11/dc/d0a/classv8_1_1_value.html#acc5bbef3c805ec458470c0fcd6f13493) in a way compatible across supported versions of V8.
|
155 |
|
156 | Signature:
|
157 |
|
158 | ```c++
|
159 | Nan::MaybeLocal<v8::Uint32> Nan::ToArrayIndex(v8::Local<v8::Value> val);
|
160 | ```
|
161 |
|
162 |
|
163 | <a name="api_nan_equals"></a>
|
164 | ### Nan::Equals()
|
165 |
|
166 | A helper method for calling [`v8::Value#Equals()`](https://v8docs.nodesource.com/node-8.11/dc/d0a/classv8_1_1_value.html#a08fba1d776a59bbf6864b25f9152c64b) in a way compatible across supported versions of V8.
|
167 |
|
168 | Signature:
|
169 |
|
170 | ```c++
|
171 | Nan::Maybe<bool> Nan::Equals(v8::Local<v8::Value> a, v8::Local<v8::Value>(b));
|
172 | ```
|
173 |
|
174 |
|
175 | <a name="api_nan_new_instance"></a>
|
176 | ### Nan::NewInstance()
|
177 |
|
178 | A helper method for calling [`v8::Function#NewInstance()`](https://v8docs.nodesource.com/node-8.11/d5/d54/classv8_1_1_function.html#ae477558b10c14b76ed00e8dbab44ce5b) and [`v8::ObjectTemplate#NewInstance()`](https://v8docs.nodesource.com/node-8.11/db/d5f/classv8_1_1_object_template.html#ad605a7543cfbc5dab54cdb0883d14ae4) in a way compatible across supported versions of V8.
|
179 |
|
180 | Signature:
|
181 |
|
182 | ```c++
|
183 | Nan::MaybeLocal<v8::Object> Nan::NewInstance(v8::Local<v8::Function> h);
|
184 | Nan::MaybeLocal<v8::Object> Nan::NewInstance(v8::Local<v8::Function> h, int argc, v8::Local<v8::Value> argv[]);
|
185 | Nan::MaybeLocal<v8::Object> Nan::NewInstance(v8::Local<v8::ObjectTemplate> h);
|
186 | ```
|
187 |
|
188 |
|
189 | <a name="api_nan_get_function"></a>
|
190 | ### Nan::GetFunction()
|
191 |
|
192 | A helper method for calling [`v8::FunctionTemplate#GetFunction()`](https://v8docs.nodesource.com/node-8.11/d8/d83/classv8_1_1_function_template.html#a56d904662a86eca78da37d9bb0ed3705) in a way compatible across supported versions of V8.
|
193 |
|
194 | Signature:
|
195 |
|
196 | ```c++
|
197 | Nan::MaybeLocal<v8::Function> Nan::GetFunction(v8::Local<v8::FunctionTemplate> t);
|
198 | ```
|
199 |
|
200 |
|
201 | <a name="api_nan_set"></a>
|
202 | ### Nan::Set()
|
203 |
|
204 | A helper method for calling [`v8::Object#Set()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a67604ea3734f170c66026064ea808f20) in a way compatible across supported versions of V8.
|
205 |
|
206 | Signature:
|
207 |
|
208 | ```c++
|
209 | Nan::Maybe<bool> Nan::Set(v8::Local<v8::Object> obj,
|
210 | v8::Local<v8::Value> key,
|
211 | v8::Local<v8::Value> value)
|
212 | Nan::Maybe<bool> Nan::Set(v8::Local<v8::Object> obj,
|
213 | uint32_t index,
|
214 | v8::Local<v8::Value> value);
|
215 | ```
|
216 |
|
217 |
|
218 | <a name="api_nan_define_own_property"></a>
|
219 | ### Nan::DefineOwnProperty()
|
220 |
|
221 | A helper method for calling [`v8::Object#DefineOwnProperty()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a6f76b2ed605cb8f9185b92de0033a820) in a way compatible across supported versions of V8.
|
222 |
|
223 | Signature:
|
224 |
|
225 | ```c++
|
226 | Nan::Maybe<bool> Nan::DefineOwnProperty(v8::Local<v8::Object> obj,
|
227 | v8::Local<v8::String> key,
|
228 | v8::Local<v8::Value> value,
|
229 | v8::PropertyAttribute attribs = v8::None);
|
230 | ```
|
231 |
|
232 |
|
233 | <a name="api_nan_force_set"></a>
|
234 | ### <del>Nan::ForceSet()</del>
|
235 |
|
236 | Deprecated, use <a href="#api_nan_define_own_property"><code>Nan::DefineOwnProperty()</code></a>.
|
237 |
|
238 | <del>A helper method for calling [`v8::Object#ForceSet()`](https://v8docs.nodesource.com/node-0.12/db/d85/classv8_1_1_object.html#acfbdfd7427b516ebdb5c47c4df5ed96c) in a way compatible across supported versions of V8.</del>
|
239 |
|
240 | Signature:
|
241 |
|
242 | ```c++
|
243 | NAN_DEPRECATED Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object> obj,
|
244 | v8::Local<v8::Value> key,
|
245 | v8::Local<v8::Value> value,
|
246 | v8::PropertyAttribute attribs = v8::None);
|
247 | ```
|
248 |
|
249 |
|
250 | <a name="api_nan_get"></a>
|
251 | ### Nan::Get()
|
252 |
|
253 | A helper method for calling [`v8::Object#Get()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a2565f03e736694f6b1e1cf22a0b4eac2) in a way compatible across supported versions of V8.
|
254 |
|
255 | Signature:
|
256 |
|
257 | ```c++
|
258 | Nan::MaybeLocal<v8::Value> Nan::Get(v8::Local<v8::Object> obj,
|
259 | v8::Local<v8::Value> key);
|
260 | Nan::MaybeLocal<v8::Value> Nan::Get(v8::Local<v8::Object> obj, uint32_t index);
|
261 | ```
|
262 |
|
263 |
|
264 | <a name="api_nan_get_property_attribute"></a>
|
265 | ### Nan::GetPropertyAttributes()
|
266 |
|
267 | A helper method for calling [`v8::Object#GetPropertyAttributes()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a9b898894da3d1db2714fd9325a54fe57) in a way compatible across supported versions of V8.
|
268 |
|
269 | Signature:
|
270 |
|
271 | ```c++
|
272 | Nan::Maybe<v8::PropertyAttribute> Nan::GetPropertyAttributes(
|
273 | v8::Local<v8::Object> obj,
|
274 | v8::Local<v8::Value> key);
|
275 | ```
|
276 |
|
277 |
|
278 | <a name="api_nan_has"></a>
|
279 | ### Nan::Has()
|
280 |
|
281 | A helper method for calling [`v8::Object#Has()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ab3c3d89ea7c2f9afd08965bd7299a41d) in a way compatible across supported versions of V8.
|
282 |
|
283 | Signature:
|
284 |
|
285 | ```c++
|
286 | Nan::Maybe<bool> Nan::Has(v8::Local<v8::Object> obj, v8::Local<v8::String> key);
|
287 | Nan::Maybe<bool> Nan::Has(v8::Local<v8::Object> obj, uint32_t index);
|
288 | ```
|
289 |
|
290 |
|
291 | <a name="api_nan_delete"></a>
|
292 | ### Nan::Delete()
|
293 |
|
294 | A helper method for calling [`v8::Object#Delete()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a48e4a19b2cedff867eecc73ddb7d377f) in a way compatible across supported versions of V8.
|
295 |
|
296 | Signature:
|
297 |
|
298 | ```c++
|
299 | Nan::Maybe<bool> Nan::Delete(v8::Local<v8::Object> obj,
|
300 | v8::Local<v8::String> key);
|
301 | Nan::Maybe<bool> Nan::Delete(v8::Local<v8::Object> obj, uint32_t index);
|
302 | ```
|
303 |
|
304 |
|
305 | <a name="api_nan_get_property_names"></a>
|
306 | ### Nan::GetPropertyNames()
|
307 |
|
308 | A helper method for calling [`v8::Object#GetPropertyNames()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#aced885270cfd2c956367b5eedc7fbfe8) in a way compatible across supported versions of V8.
|
309 |
|
310 | Signature:
|
311 |
|
312 | ```c++
|
313 | Nan::MaybeLocal<v8::Array> Nan::GetPropertyNames(v8::Local<v8::Object> obj);
|
314 | ```
|
315 |
|
316 |
|
317 | <a name="api_nan_get_own_property_names"></a>
|
318 | ### Nan::GetOwnPropertyNames()
|
319 |
|
320 | A helper method for calling [`v8::Object#GetOwnPropertyNames()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a79a6e4d66049b9aa648ed4dfdb23e6eb) in a way compatible across supported versions of V8.
|
321 |
|
322 | Signature:
|
323 |
|
324 | ```c++
|
325 | Nan::MaybeLocal<v8::Array> Nan::GetOwnPropertyNames(v8::Local<v8::Object> obj);
|
326 | ```
|
327 |
|
328 |
|
329 | <a name="api_nan_set_prototype"></a>
|
330 | ### Nan::SetPrototype()
|
331 |
|
332 | A helper method for calling [`v8::Object#SetPrototype()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a442706b22fceda6e6d1f632122a9a9f4) in a way compatible across supported versions of V8.
|
333 |
|
334 | Signature:
|
335 |
|
336 | ```c++
|
337 | Nan::Maybe<bool> Nan::SetPrototype(v8::Local<v8::Object> obj,
|
338 | v8::Local<v8::Value> prototype);
|
339 | ```
|
340 |
|
341 |
|
342 | <a name="api_nan_object_proto_to_string"></a>
|
343 | ### Nan::ObjectProtoToString()
|
344 |
|
345 | A helper method for calling [`v8::Object#ObjectProtoToString()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ab7a92b4dcf822bef72f6c0ac6fea1f0b) in a way compatible across supported versions of V8.
|
346 |
|
347 | Signature:
|
348 |
|
349 | ```c++
|
350 | Nan::MaybeLocal<v8::String> Nan::ObjectProtoToString(v8::Local<v8::Object> obj);
|
351 | ```
|
352 |
|
353 |
|
354 | <a name="api_nan_has_own_property"></a>
|
355 | ### Nan::HasOwnProperty()
|
356 |
|
357 | A helper method for calling [`v8::Object#HasOwnProperty()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ab7b7245442ca6de1e1c145ea3fd653ff) in a way compatible across supported versions of V8.
|
358 |
|
359 | Signature:
|
360 |
|
361 | ```c++
|
362 | Nan::Maybe<bool> Nan::HasOwnProperty(v8::Local<v8::Object> obj,
|
363 | v8::Local<v8::String> key);
|
364 | ```
|
365 |
|
366 |
|
367 | <a name="api_nan_has_real_named_property"></a>
|
368 | ### Nan::HasRealNamedProperty()
|
369 |
|
370 | A helper method for calling [`v8::Object#HasRealNamedProperty()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ad8b80a59c9eb3c1e6c3cd6c84571f767) in a way compatible across supported versions of V8.
|
371 |
|
372 | Signature:
|
373 |
|
374 | ```c++
|
375 | Nan::Maybe<bool> Nan::HasRealNamedProperty(v8::Local<v8::Object> obj,
|
376 | v8::Local<v8::String> key);
|
377 | ```
|
378 |
|
379 |
|
380 | <a name="api_nan_has_real_indexed_property"></a>
|
381 | ### Nan::HasRealIndexedProperty()
|
382 |
|
383 | A helper method for calling [`v8::Object#HasRealIndexedProperty()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#af94fc1135a5e74a2193fb72c3a1b9855) in a way compatible across supported versions of V8.
|
384 |
|
385 | Signature:
|
386 |
|
387 | ```c++
|
388 | Nan::Maybe<bool> Nan::HasRealIndexedProperty(v8::Local<v8::Object> obj,
|
389 | uint32_t index);
|
390 | ```
|
391 |
|
392 |
|
393 | <a name="api_nan_has_real_named_callback_property"></a>
|
394 | ### Nan::HasRealNamedCallbackProperty()
|
395 |
|
396 | A helper method for calling [`v8::Object#HasRealNamedCallbackProperty()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#af743b7ea132b89f84d34d164d0668811) in a way compatible across supported versions of V8.
|
397 |
|
398 | Signature:
|
399 |
|
400 | ```c++
|
401 | Nan::Maybe<bool> Nan::HasRealNamedCallbackProperty(
|
402 | v8::Local<v8::Object> obj,
|
403 | v8::Local<v8::String> key);
|
404 | ```
|
405 |
|
406 |
|
407 | <a name="api_nan_get_real_named_property_in_prototype_chain"></a>
|
408 | ### Nan::GetRealNamedPropertyInPrototypeChain()
|
409 |
|
410 | A helper method for calling [`v8::Object#GetRealNamedPropertyInPrototypeChain()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a8700b1862e6b4783716964ba4d5e6172) in a way compatible across supported versions of V8.
|
411 |
|
412 | Signature:
|
413 |
|
414 | ```c++
|
415 | Nan::MaybeLocal<v8::Value> Nan::GetRealNamedPropertyInPrototypeChain(
|
416 | v8::Local<v8::Object> obj,
|
417 | v8::Local<v8::String> key);
|
418 | ```
|
419 |
|
420 |
|
421 | <a name="api_nan_get_real_named_property"></a>
|
422 | ### Nan::GetRealNamedProperty()
|
423 |
|
424 | A helper method for calling [`v8::Object#GetRealNamedProperty()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a84471a824576a5994fdd0ffcbf99ccc0) in a way compatible across supported versions of V8.
|
425 |
|
426 | Signature:
|
427 |
|
428 | ```c++
|
429 | Nan::MaybeLocal<v8::Value> Nan::GetRealNamedProperty(v8::Local<v8::Object> obj,
|
430 | v8::Local<v8::String> key);
|
431 | ```
|
432 |
|
433 |
|
434 | <a name="api_nan_call_as_function"></a>
|
435 | ### Nan::CallAsFunction()
|
436 |
|
437 | A helper method for calling [`v8::Object#CallAsFunction()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ad3ffc36f3dfc3592ce2a96bc047ee2cd) in a way compatible across supported versions of V8.
|
438 |
|
439 | Signature:
|
440 |
|
441 | ```c++
|
442 | Nan::MaybeLocal<v8::Value> Nan::CallAsFunction(v8::Local<v8::Object> obj,
|
443 | v8::Local<v8::Object> recv,
|
444 | int argc,
|
445 | v8::Local<v8::Value> argv[]);
|
446 | ```
|
447 |
|
448 |
|
449 | <a name="api_nan_call_as_constructor"></a>
|
450 | ### Nan::CallAsConstructor()
|
451 |
|
452 | A helper method for calling [`v8::Object#CallAsConstructor()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a50d571de50d0b0dfb28795619d07a01b) in a way compatible across supported versions of V8.
|
453 |
|
454 | Signature:
|
455 |
|
456 | ```c++
|
457 | Nan::MaybeLocal<v8::Value> Nan::CallAsConstructor(v8::Local<v8::Object> obj,
|
458 | int argc,
|
459 | v8::Local<v8::Value> argv[]);
|
460 | ```
|
461 |
|
462 |
|
463 | <a name="api_nan_get_source_line"></a>
|
464 | ### Nan::GetSourceLine()
|
465 |
|
466 | A helper method for calling [`v8::Message#GetSourceLine()`](https://v8docs.nodesource.com/node-8.11/d9/d28/classv8_1_1_message.html#a849f7a6c41549d83d8159825efccd23a) in a way compatible across supported versions of V8.
|
467 |
|
468 | Signature:
|
469 |
|
470 | ```c++
|
471 | Nan::MaybeLocal<v8::String> Nan::GetSourceLine(v8::Local<v8::Message> msg);
|
472 | ```
|
473 |
|
474 |
|
475 | <a name="api_nan_get_line_number"></a>
|
476 | ### Nan::GetLineNumber()
|
477 |
|
478 | A helper method for calling [`v8::Message#GetLineNumber()`](https://v8docs.nodesource.com/node-8.11/d9/d28/classv8_1_1_message.html#adbe46c10a88a6565f2732a2d2adf99b9) in a way compatible across supported versions of V8.
|
479 |
|
480 | Signature:
|
481 |
|
482 | ```c++
|
483 | Nan::Maybe<int> Nan::GetLineNumber(v8::Local<v8::Message> msg);
|
484 | ```
|
485 |
|
486 |
|
487 | <a name="api_nan_get_start_column"></a>
|
488 | ### Nan::GetStartColumn()
|
489 |
|
490 | A helper method for calling [`v8::Message#GetStartColumn()`](https://v8docs.nodesource.com/node-8.11/d9/d28/classv8_1_1_message.html#a60ede616ba3822d712e44c7a74487ba6) in a way compatible across supported versions of V8.
|
491 |
|
492 | Signature:
|
493 |
|
494 | ```c++
|
495 | Nan::Maybe<int> Nan::GetStartColumn(v8::Local<v8::Message> msg);
|
496 | ```
|
497 |
|
498 |
|
499 | <a name="api_nan_get_end_column"></a>
|
500 | ### Nan::GetEndColumn()
|
501 |
|
502 | A helper method for calling [`v8::Message#GetEndColumn()`](https://v8docs.nodesource.com/node-8.11/d9/d28/classv8_1_1_message.html#aaa004cf19e529da980bc19fcb76d93be) in a way compatible across supported versions of V8.
|
503 |
|
504 | Signature:
|
505 |
|
506 | ```c++
|
507 | Nan::Maybe<int> Nan::GetEndColumn(v8::Local<v8::Message> msg);
|
508 | ```
|
509 |
|
510 |
|
511 | <a name="api_nan_clone_element_at"></a>
|
512 | ### Nan::CloneElementAt()
|
513 |
|
514 | A helper method for calling [`v8::Array#CloneElementAt()`](https://v8docs.nodesource.com/node-4.8/d3/d32/classv8_1_1_array.html#a1d3a878d4c1c7cae974dd50a1639245e) in a way compatible across supported versions of V8.
|
515 |
|
516 | Signature:
|
517 |
|
518 | ```c++
|
519 | Nan::MaybeLocal<v8::Object> Nan::CloneElementAt(v8::Local<v8::Array> array, uint32_t index);
|
520 | ```
|
521 |
|
522 | <a name="api_nan_has_private"></a>
|
523 | ### Nan::HasPrivate()
|
524 |
|
525 | A helper method for calling [`v8::Object#HasPrivate()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#af68a0b98066cfdeb8f943e98a40ba08d) in a way compatible across supported versions of V8.
|
526 |
|
527 | Signature:
|
528 |
|
529 | ```c++
|
530 | Nan::Maybe<bool> Nan::HasPrivate(v8::Local<v8::Object> object, v8::Local<v8::String> key);
|
531 | ```
|
532 |
|
533 | <a name="api_nan_get_private"></a>
|
534 | ### Nan::GetPrivate()
|
535 |
|
536 | A helper method for calling [`v8::Object#GetPrivate()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a169f2da506acbec34deadd9149a1925a) in a way compatible across supported versions of V8.
|
537 |
|
538 | Signature:
|
539 |
|
540 | ```c++
|
541 | Nan::MaybeLocal<v8::Value> Nan::GetPrivate(v8::Local<v8::Object> object, v8::Local<v8::String> key);
|
542 | ```
|
543 |
|
544 | <a name="api_nan_set_private"></a>
|
545 | ### Nan::SetPrivate()
|
546 |
|
547 | A helper method for calling [`v8::Object#SetPrivate()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#ace1769b0f3b86bfe9fda1010916360ee) in a way compatible across supported versions of V8.
|
548 |
|
549 | Signature:
|
550 |
|
551 | ```c++
|
552 | Nan::Maybe<bool> Nan::SetPrivate(v8::Local<v8::Object> object, v8::Local<v8::String> key, v8::Local<v8::Value> value);
|
553 | ```
|
554 |
|
555 | <a name="api_nan_delete_private"></a>
|
556 | ### Nan::DeletePrivate()
|
557 |
|
558 | A helper method for calling [`v8::Object#DeletePrivate()`](https://v8docs.nodesource.com/node-8.11/db/d85/classv8_1_1_object.html#a138bb32a304f3982be02ad499693b8fd) in a way compatible across supported versions of V8.
|
559 |
|
560 | Signature:
|
561 |
|
562 | ```c++
|
563 | Nan::Maybe<bool> Nan::DeletePrivate(v8::Local<v8::Object> object, v8::Local<v8::String> key);
|
564 | ```
|
565 |
|
566 | <a name="api_nan_make_maybe"></a>
|
567 | ### Nan::MakeMaybe()
|
568 |
|
569 | Wraps a `v8::Local<>` in a `Nan::MaybeLocal<>`. When called with a `Nan::MaybeLocal<>` it just returns its argument. This is useful in generic template code that builds on NAN.
|
570 |
|
571 | Synopsis:
|
572 |
|
573 | ```c++
|
574 | MaybeLocal<v8::Number> someNumber = MakeMaybe(New<v8::Number>(3.141592654));
|
575 | MaybeLocal<v8::String> someString = MakeMaybe(New<v8::String>("probably"));
|
576 | ```
|
577 |
|
578 | Signature:
|
579 |
|
580 | ```c++
|
581 | template <typename T, template <typename> class MaybeMaybe>
|
582 | Nan::MaybeLocal<T> Nan::MakeMaybe(MaybeMaybe<T> v);
|
583 | ```
|