node-addon-api 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +84 -0
- package/README.md +67 -47
- package/napi-inl.deprecated.h +8 -8
- package/napi-inl.h +118 -80
- package/napi.h +513 -424
- package/package.json +25 -5
- package/tools/clang-format.js +30 -10
- package/.clang-format +0 -111
- package/.editorconfig +0 -8
- package/.github/workflows/ci.yml +0 -55
- package/.github/workflows/linter.yml +0 -24
- package/.github/workflows/stale.yml +0 -18
- package/.travis.yml +0 -58
- package/CODE_OF_CONDUCT.md +0 -4
- package/CONTRIBUTING.md +0 -66
- package/appveyor.yml +0 -37
- package/benchmark/README.md +0 -47
- package/benchmark/binding.gyp +0 -25
- package/benchmark/function_args.cc +0 -217
- package/benchmark/function_args.js +0 -60
- package/benchmark/index.js +0 -34
- package/benchmark/property_descriptor.cc +0 -91
- package/benchmark/property_descriptor.js +0 -37
- package/doc/addon.md +0 -157
- package/doc/array.md +0 -81
- package/doc/array_buffer.md +0 -149
- package/doc/async_context.md +0 -86
- package/doc/async_operations.md +0 -31
- package/doc/async_worker.md +0 -427
- package/doc/async_worker_variants.md +0 -557
- package/doc/bigint.md +0 -97
- package/doc/boolean.md +0 -68
- package/doc/buffer.md +0 -144
- package/doc/callback_scope.md +0 -54
- package/doc/callbackinfo.md +0 -97
- package/doc/checker-tool.md +0 -32
- package/doc/class_property_descriptor.md +0 -117
- package/doc/cmake-js.md +0 -68
- package/doc/conversion-tool.md +0 -28
- package/doc/creating_a_release.md +0 -62
- package/doc/dataview.md +0 -248
- package/doc/date.md +0 -68
- package/doc/env.md +0 -132
- package/doc/error.md +0 -120
- package/doc/error_handling.md +0 -186
- package/doc/escapable_handle_scope.md +0 -82
- package/doc/external.md +0 -63
- package/doc/function.md +0 -402
- package/doc/function_reference.md +0 -238
- package/doc/generator.md +0 -13
- package/doc/handle_scope.md +0 -65
- package/doc/hierarchy.md +0 -91
- package/doc/instance_wrap.md +0 -408
- package/doc/memory_management.md +0 -27
- package/doc/name.md +0 -29
- package/doc/node-gyp.md +0 -82
- package/doc/number.md +0 -163
- package/doc/object.md +0 -279
- package/doc/object_lifetime_management.md +0 -83
- package/doc/object_reference.md +0 -117
- package/doc/object_wrap.md +0 -561
- package/doc/prebuild_tools.md +0 -16
- package/doc/promises.md +0 -79
- package/doc/property_descriptor.md +0 -286
- package/doc/range_error.md +0 -59
- package/doc/reference.md +0 -111
- package/doc/setup.md +0 -81
- package/doc/string.md +0 -93
- package/doc/symbol.md +0 -48
- package/doc/threadsafe.md +0 -121
- package/doc/threadsafe_function.md +0 -290
- package/doc/type_error.md +0 -59
- package/doc/typed_array.md +0 -78
- package/doc/typed_array_of.md +0 -137
- package/doc/typed_threadsafe_function.md +0 -307
- package/doc/value.md +0 -340
- package/doc/version_management.md +0 -43
package/doc/object_reference.md
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
# Object Reference
|
|
2
|
-
|
|
3
|
-
`Napi::ObjectReference` is a subclass of [`Napi::Reference`](reference.md), and is equivalent to an instance of `Napi::Reference<Object>`. This means that a `Napi::ObjectReference` holds a [`Napi::Object`](object.md), and a count of the number of references to that Object. When the count is greater than 0, an ObjectReference is not eligible for garbage collection. This ensures that the Object being held as a value of the ObjectReference will remain accessible, even if the original Object no longer is. However, ObjectReference is unique from a Reference since properties can be set and get to the Object itself that can be accessed through the ObjectReference.
|
|
4
|
-
|
|
5
|
-
For more general information on references, please consult [`Napi::Reference`](reference.md).
|
|
6
|
-
|
|
7
|
-
## Example
|
|
8
|
-
```cpp
|
|
9
|
-
#include <napi.h>
|
|
10
|
-
|
|
11
|
-
using namespace Napi;
|
|
12
|
-
|
|
13
|
-
void Init(Env env) {
|
|
14
|
-
|
|
15
|
-
// Create an empty ObjectReference that has an initial reference count of 2.
|
|
16
|
-
ObjectReference obj_ref = Reference<Object>::New(Object::New(env), 2);
|
|
17
|
-
|
|
18
|
-
// Set a couple of different properties on the reference.
|
|
19
|
-
obj_ref.Set("hello", String::New(env, "world"));
|
|
20
|
-
obj_ref.Set(42, "The Answer to Life, the Universe, and Everything");
|
|
21
|
-
|
|
22
|
-
// Get the properties using the keys.
|
|
23
|
-
Value val1 = obj_ref.Get("hello");
|
|
24
|
-
Value val2 = obj_ref.Get(42);
|
|
25
|
-
}
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Methods
|
|
29
|
-
|
|
30
|
-
### Initialization
|
|
31
|
-
|
|
32
|
-
```cpp
|
|
33
|
-
static Napi::ObjectReference Napi::ObjectReference::New(const Napi::Object& value, uint32_t initialRefcount = 0);
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
* `[in] value`: The `Napi::Object` which is to be referenced.
|
|
37
|
-
|
|
38
|
-
* `[in] initialRefcount`: The initial reference count.
|
|
39
|
-
|
|
40
|
-
Returns the newly created reference.
|
|
41
|
-
|
|
42
|
-
```cpp
|
|
43
|
-
static Napi::ObjectReference Napi::Weak(const Napi::Object& value);
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Creates a "weak" reference to the value, in that the initial count of number of references is set to 0.
|
|
47
|
-
|
|
48
|
-
* `[in] value`: The value which is to be referenced.
|
|
49
|
-
|
|
50
|
-
Returns the newly created reference.
|
|
51
|
-
|
|
52
|
-
```cpp
|
|
53
|
-
static Napi::ObjectReference Napi::Persistent(const Napi::Object& value);
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
Creates a "persistent" reference to the value, in that the initial count of number of references is set to 1.
|
|
57
|
-
|
|
58
|
-
* `[in] value`: The value which is to be referenced.
|
|
59
|
-
|
|
60
|
-
Returns the newly created reference.
|
|
61
|
-
|
|
62
|
-
### Empty Constructor
|
|
63
|
-
|
|
64
|
-
```cpp
|
|
65
|
-
Napi::ObjectReference::ObjectReference();
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Returns a new _empty_ `Napi::ObjectReference` instance.
|
|
69
|
-
|
|
70
|
-
### Constructor
|
|
71
|
-
|
|
72
|
-
```cpp
|
|
73
|
-
Napi::ObjectReference::ObjectReference(napi_env env, napi_value value);
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
* `[in] env`: The `napi_env` environment in which to construct the `Napi::ObjectReference` object.
|
|
77
|
-
|
|
78
|
-
* `[in] value`: The N-API primitive value to be held by the `Napi::ObjectReference`.
|
|
79
|
-
|
|
80
|
-
Returns the newly created reference.
|
|
81
|
-
|
|
82
|
-
### Set
|
|
83
|
-
```cpp
|
|
84
|
-
void Napi::ObjectReference::Set(___ key, ___ value);
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
* `[in] key`: The name for the property being assigned.
|
|
88
|
-
|
|
89
|
-
* `[in] value`: The value being assigned to the property.
|
|
90
|
-
|
|
91
|
-
The `key` can be any of the following types:
|
|
92
|
-
- `const char*`
|
|
93
|
-
- `const std::string`
|
|
94
|
-
- `uint32_t`
|
|
95
|
-
|
|
96
|
-
The `value` can be any of the following types:
|
|
97
|
-
- `napi_value`
|
|
98
|
-
- `Napi::Value`
|
|
99
|
-
- `const char*`
|
|
100
|
-
- `bool`
|
|
101
|
-
- `double`
|
|
102
|
-
|
|
103
|
-
### Get
|
|
104
|
-
|
|
105
|
-
```cpp
|
|
106
|
-
Napi::Value Napi::ObjectReference::Get(___ key);
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
* `[in] key`: The name of the property to return the value for.
|
|
110
|
-
|
|
111
|
-
Returns the [`Napi::Value`](value.md) associated with the key property. Returns NULL if no such key exists.
|
|
112
|
-
|
|
113
|
-
The `key` can be any of the following types:
|
|
114
|
-
- `const char*`
|
|
115
|
-
- `const std::string`
|
|
116
|
-
- `uint32_t`
|
|
117
|
-
|
package/doc/object_wrap.md
DELETED
|
@@ -1,561 +0,0 @@
|
|
|
1
|
-
# Object Wrap
|
|
2
|
-
|
|
3
|
-
Class `Napi::ObjectWrap<T>` inherits from class [`Napi::InstanceWrap<T>`][].
|
|
4
|
-
|
|
5
|
-
The `Napi::ObjectWrap<T>` class is used to bind the lifetime of C++ code to a
|
|
6
|
-
JavaScript object. Once bound, each time an instance of the JavaScript object
|
|
7
|
-
is created, an instance of the C++ class will also be created. When a method
|
|
8
|
-
is called on the JavaScript object which is defined as an InstanceMethod, the
|
|
9
|
-
corresponding C++ method on the wrapped C++ class will be invoked.
|
|
10
|
-
|
|
11
|
-
In order to create a wrapper it's necessary to extend the
|
|
12
|
-
`Napi::ObjectWrap<T>` class which contains all the plumbing to connect
|
|
13
|
-
JavaScript code with a C++ object. Classes extending `Napi::ObjectWrap` can be
|
|
14
|
-
instantiated from JavaScript using the **new** operator, and their methods can
|
|
15
|
-
be directly invoked from JavaScript. The **wrap** word refers to a way of
|
|
16
|
-
grouping methods and state of the class because it will be necessary write
|
|
17
|
-
custom code to bridge each of your C++ class methods.
|
|
18
|
-
|
|
19
|
-
## Example
|
|
20
|
-
|
|
21
|
-
```cpp
|
|
22
|
-
#include <napi.h>
|
|
23
|
-
|
|
24
|
-
class Example : public Napi::ObjectWrap<Example> {
|
|
25
|
-
public:
|
|
26
|
-
static Napi::Object Init(Napi::Env env, Napi::Object exports);
|
|
27
|
-
Example(const Napi::CallbackInfo& info);
|
|
28
|
-
static Napi::Value CreateNewItem(const Napi::CallbackInfo& info);
|
|
29
|
-
|
|
30
|
-
private:
|
|
31
|
-
double _value;
|
|
32
|
-
Napi::Value GetValue(const Napi::CallbackInfo& info);
|
|
33
|
-
Napi::Value SetValue(const Napi::CallbackInfo& info);
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
Napi::Object Example::Init(Napi::Env env, Napi::Object exports) {
|
|
37
|
-
// This method is used to hook the accessor and method callbacks
|
|
38
|
-
Napi::Function func = DefineClass(env, "Example", {
|
|
39
|
-
InstanceMethod<&Example::GetValue>("GetValue"),
|
|
40
|
-
InstanceMethod<&Example::SetValue>("SetValue"),
|
|
41
|
-
StaticMethod<&Example::CreateNewItem>("CreateNewItem"),
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
Napi::FunctionReference* constructor = new Napi::FunctionReference();
|
|
45
|
-
|
|
46
|
-
// Create a persistent reference to the class constructor. This will allow
|
|
47
|
-
// a function called on a class prototype and a function
|
|
48
|
-
// called on instance of a class to be distinguished from each other.
|
|
49
|
-
*constructor = Napi::Persistent(func);
|
|
50
|
-
exports.Set("Example", func);
|
|
51
|
-
|
|
52
|
-
// Store the constructor as the add-on instance data. This will allow this
|
|
53
|
-
// add-on to support multiple instances of itself running on multiple worker
|
|
54
|
-
// threads, as well as multiple instances of itself running in different
|
|
55
|
-
// contexts on the same thread.
|
|
56
|
-
//
|
|
57
|
-
// By default, the value set on the environment here will be destroyed when
|
|
58
|
-
// the add-on is unloaded using the `delete` operator, but it is also
|
|
59
|
-
// possible to supply a custom deleter.
|
|
60
|
-
env.SetInstanceData<Napi::FunctionReference>(constructor);
|
|
61
|
-
|
|
62
|
-
return exports;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
Example::Example(const Napi::CallbackInfo& info) :
|
|
66
|
-
Napi::ObjectWrap<Example>(info) {
|
|
67
|
-
Napi::Env env = info.Env();
|
|
68
|
-
// ...
|
|
69
|
-
Napi::Number value = info[0].As<Napi::Number>();
|
|
70
|
-
this->_value = value.DoubleValue();
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
Napi::Value Example::GetValue(const Napi::CallbackInfo& info){
|
|
74
|
-
Napi::Env env = info.Env();
|
|
75
|
-
return Napi::Number::New(env, this->_value);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
Napi::Value Example::SetValue(const Napi::CallbackInfo& info){
|
|
79
|
-
Napi::Env env = info.Env();
|
|
80
|
-
// ...
|
|
81
|
-
Napi::Number value = info[0].As<Napi::Number>();
|
|
82
|
-
this->_value = value.DoubleValue();
|
|
83
|
-
return this->GetValue(info);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Initialize native add-on
|
|
87
|
-
Napi::Object Init (Napi::Env env, Napi::Object exports) {
|
|
88
|
-
Example::Init(env, exports);
|
|
89
|
-
return exports;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// Create a new item using the constructor stored during Init.
|
|
93
|
-
Napi::Value Example::CreateNewItem(const Napi::CallbackInfo& info) {
|
|
94
|
-
// Retrieve the instance data we stored during `Init()`. We only stored the
|
|
95
|
-
// constructor there, so we retrieve it here to create a new instance of the
|
|
96
|
-
// JS class the constructor represents.
|
|
97
|
-
Napi::FunctionReference* constructor =
|
|
98
|
-
info.Env().GetInstanceData<Napi::FunctionReference>();
|
|
99
|
-
return constructor->New({ Napi::Number::New(info.Env(), 42) });
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// Register and initialize native add-on
|
|
103
|
-
NODE_API_MODULE(NODE_GYP_MODULE_NAME, Init)
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
The above code can be used from JavaScript as follows:
|
|
107
|
-
|
|
108
|
-
```js
|
|
109
|
-
'use strict'
|
|
110
|
-
|
|
111
|
-
const { Example } = require('bindings')('addon')
|
|
112
|
-
|
|
113
|
-
const example = new Example(11)
|
|
114
|
-
console.log(example.GetValue())
|
|
115
|
-
// It prints 11
|
|
116
|
-
example.SetValue(19)
|
|
117
|
-
console.log(example.GetValue());
|
|
118
|
-
// It prints 19
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
At initialization time, the `Napi::ObjectWrap::DefineClass()` method must be
|
|
122
|
-
used to hook up the accessor and method callbacks. It takes a list of property
|
|
123
|
-
descriptors, which can be constructed via the various static methods on the base
|
|
124
|
-
class.
|
|
125
|
-
|
|
126
|
-
When JavaScript code invokes the constructor, the constructor callback will
|
|
127
|
-
create a new C++ instance and "wrap" it into the newly created JavaScript
|
|
128
|
-
object.
|
|
129
|
-
|
|
130
|
-
When JavaScript code invokes a method or a property accessor on the class the
|
|
131
|
-
corresponding C++ callback function will be executed.
|
|
132
|
-
|
|
133
|
-
For a wrapped object it could be difficult to distinguish between a function
|
|
134
|
-
called on a class prototype and a function called on instance of a class.
|
|
135
|
-
Therefore it is good practice to save a persistent reference to the class
|
|
136
|
-
constructor. This allows the two cases to be distinguished from each other by
|
|
137
|
-
checking the this object against the class constructor.
|
|
138
|
-
|
|
139
|
-
## Methods
|
|
140
|
-
|
|
141
|
-
### Constructor
|
|
142
|
-
|
|
143
|
-
Creates a new instance of a JavaScript object that wraps native instance.
|
|
144
|
-
|
|
145
|
-
```cpp
|
|
146
|
-
Napi::ObjectWrap(const Napi::CallbackInfo& callbackInfo);
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
- `[in] callbackInfo`: The object representing the components of the JavaScript
|
|
150
|
-
request being made.
|
|
151
|
-
|
|
152
|
-
### Unwrap
|
|
153
|
-
|
|
154
|
-
Retrieves a native instance wrapped in a JavaScript object.
|
|
155
|
-
|
|
156
|
-
```cpp
|
|
157
|
-
static T* Napi::ObjectWrap::Unwrap(Napi::Object wrapper);
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
* `[in] wrapper`: The JavaScript object that wraps the native instance.
|
|
161
|
-
|
|
162
|
-
Returns a native instance wrapped in a JavaScript object. Given the
|
|
163
|
-
Napi:Object, this allows a method to get a pointer to the wrapped
|
|
164
|
-
C++ object and then reference fields, call methods, etc. within that class.
|
|
165
|
-
In many cases calling Unwrap is not required, as methods can
|
|
166
|
-
use the `this` field for ObjectWrap when running in a method on a
|
|
167
|
-
class that extends ObjectWrap.
|
|
168
|
-
|
|
169
|
-
### DefineClass
|
|
170
|
-
|
|
171
|
-
Defnines a JavaScript class with constructor, static and instance properties and
|
|
172
|
-
methods.
|
|
173
|
-
|
|
174
|
-
```cpp
|
|
175
|
-
static Napi::Function Napi::ObjectWrap::DefineClass(Napi::Env env,
|
|
176
|
-
const char* utf8name,
|
|
177
|
-
const std::initializer_list<PropertyDescriptor>& properties,
|
|
178
|
-
void* data = nullptr);
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
* `[in] env`: The environment in which to construct a JavaScript class.
|
|
182
|
-
* `[in] utf8name`: Null-terminated string that represents the name of the
|
|
183
|
-
JavaScript constructor function.
|
|
184
|
-
* `[in] properties`: Initializer list of class property descriptor describing
|
|
185
|
-
static and instance properties and methods of the class.
|
|
186
|
-
See: [`Class property and descriptor`](class_property_descriptor.md).
|
|
187
|
-
* `[in] data`: User-provided data passed to the constructor callback as `data`
|
|
188
|
-
property of the `Napi::CallbackInfo`.
|
|
189
|
-
|
|
190
|
-
Returns a `Napi::Function` representing the constructor function for the class.
|
|
191
|
-
|
|
192
|
-
### DefineClass
|
|
193
|
-
|
|
194
|
-
Defnines a JavaScript class with constructor, static and instance properties and
|
|
195
|
-
methods.
|
|
196
|
-
|
|
197
|
-
```cpp
|
|
198
|
-
static Napi::Function Napi::ObjectWrap::DefineClass(Napi::Env env,
|
|
199
|
-
const char* utf8name,
|
|
200
|
-
const std::vector<PropertyDescriptor>& properties,
|
|
201
|
-
void* data = nullptr);
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
* `[in] env`: The environment in which to construct a JavaScript class.
|
|
205
|
-
* `[in] utf8name`: Null-terminated string that represents the name of the
|
|
206
|
-
JavaScript constructor function.
|
|
207
|
-
* `[in] properties`: Vector of class property descriptor describing static and
|
|
208
|
-
instance properties and methods of the class.
|
|
209
|
-
See: [`Class property and descriptor`](class_property_descriptor.md).
|
|
210
|
-
* `[in] data`: User-provided data passed to the constructor callback as `data`
|
|
211
|
-
property of the `Napi::CallbackInfo`.
|
|
212
|
-
|
|
213
|
-
Returns a `Napi::Function` representing the constructor function for the class.
|
|
214
|
-
|
|
215
|
-
### Finalize
|
|
216
|
-
|
|
217
|
-
Provides an opportunity to run cleanup code that requires access to the
|
|
218
|
-
`Napi::Env` before the wrapped native object instance is freed. Override to
|
|
219
|
-
implement.
|
|
220
|
-
|
|
221
|
-
```cpp
|
|
222
|
-
virtual void Finalize(Napi::Env env);
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
- `[in] env`: `Napi::Env`.
|
|
226
|
-
|
|
227
|
-
### StaticMethod
|
|
228
|
-
|
|
229
|
-
Creates property descriptor that represents a static method of a JavaScript
|
|
230
|
-
class.
|
|
231
|
-
|
|
232
|
-
```cpp
|
|
233
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(
|
|
234
|
-
const char* utf8name,
|
|
235
|
-
StaticVoidMethodCallback method,
|
|
236
|
-
napi_property_attributes attributes = napi_default,
|
|
237
|
-
void* data = nullptr);
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
- `[in] utf8name`: Null-terminated string that represents the name of a static
|
|
241
|
-
method for the class.
|
|
242
|
-
- `[in] method`: The native function that represents a static method of a
|
|
243
|
-
JavaScript class.
|
|
244
|
-
- `[in] attributes`: The attributes associated with a particular property.
|
|
245
|
-
One or more of `napi_property_attributes`.
|
|
246
|
-
- `[in] data`: User-provided data passed into method when it is invoked.
|
|
247
|
-
|
|
248
|
-
Returns `Napi::PropertyDescriptor` object that represents the static method of a
|
|
249
|
-
JavaScript class.
|
|
250
|
-
|
|
251
|
-
### StaticMethod
|
|
252
|
-
|
|
253
|
-
Creates property descriptor that represents a static method of a JavaScript
|
|
254
|
-
class.
|
|
255
|
-
|
|
256
|
-
```cpp
|
|
257
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(
|
|
258
|
-
const char* utf8name,
|
|
259
|
-
StaticMethodCallback method,
|
|
260
|
-
napi_property_attributes attributes = napi_default,
|
|
261
|
-
void* data = nullptr);
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
- `[in] utf8name`: Null-terminated string that represents the name of a static
|
|
265
|
-
method for the class.
|
|
266
|
-
- `[in] method`: The native function that represents a static method of a
|
|
267
|
-
JavaScript class.
|
|
268
|
-
- `[in] attributes`: The attributes associated with a particular property.
|
|
269
|
-
One or more of `napi_property_attributes`.
|
|
270
|
-
- `[in] data`: User-provided data passed into method when it is invoked.
|
|
271
|
-
|
|
272
|
-
Returns `Napi::PropertyDescriptor` object that represents a static method of a
|
|
273
|
-
JavaScript class.
|
|
274
|
-
|
|
275
|
-
### StaticMethod
|
|
276
|
-
|
|
277
|
-
Creates property descriptor that represents a static method of a JavaScript
|
|
278
|
-
class.
|
|
279
|
-
|
|
280
|
-
```cpp
|
|
281
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(Symbol name,
|
|
282
|
-
StaticVoidMethodCallback method,
|
|
283
|
-
napi_property_attributes attributes = napi_default,
|
|
284
|
-
void* data = nullptr);
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
- `[in] name`: Napi:Symbol that represents the name of a static
|
|
288
|
-
method for the class.
|
|
289
|
-
- `[in] method`: The native function that represents a static method of a
|
|
290
|
-
JavaScript class.
|
|
291
|
-
- `[in] attributes`: The attributes associated with a particular property.
|
|
292
|
-
One or more of `napi_property_attributes`.
|
|
293
|
-
- `[in] data`: User-provided data passed into method when it is invoked.
|
|
294
|
-
|
|
295
|
-
Returns `Napi::PropertyDescriptor` object that represents the static method of a
|
|
296
|
-
JavaScript class.
|
|
297
|
-
|
|
298
|
-
### StaticMethod
|
|
299
|
-
|
|
300
|
-
Creates property descriptor that represents a static method of a JavaScript
|
|
301
|
-
class.
|
|
302
|
-
|
|
303
|
-
```cpp
|
|
304
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(Symbol name,
|
|
305
|
-
StaticMethodCallback method,
|
|
306
|
-
napi_property_attributes attributes = napi_default,
|
|
307
|
-
void* data = nullptr);
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
method for the class.
|
|
311
|
-
- `[in] name`: Napi:Symbol that represents the name of a static.
|
|
312
|
-
- `[in] method`: The native function that represents a static method of a
|
|
313
|
-
JavaScript class.
|
|
314
|
-
- `[in] attributes`: The attributes associated with a particular property.
|
|
315
|
-
One or more of `napi_property_attributes`.
|
|
316
|
-
- `[in] data`: User-provided data passed into method when it is invoked.
|
|
317
|
-
|
|
318
|
-
Returns `Napi::PropertyDescriptor` object that represents a static method of a
|
|
319
|
-
JavaScript class.
|
|
320
|
-
|
|
321
|
-
### StaticMethod
|
|
322
|
-
|
|
323
|
-
Creates property descriptor that represents a static method of a JavaScript
|
|
324
|
-
class.
|
|
325
|
-
|
|
326
|
-
```cpp
|
|
327
|
-
template <StaticVoidMethodCallback method>
|
|
328
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(
|
|
329
|
-
const char* utf8name,
|
|
330
|
-
napi_property_attributes attributes = napi_default,
|
|
331
|
-
void* data = nullptr);
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
- `[in] method`: The native function that represents a static method of a
|
|
335
|
-
JavaScript class. This function returns nothing.
|
|
336
|
-
- `[in] utf8name`: Null-terminated string that represents the name of a static
|
|
337
|
-
method for the class.
|
|
338
|
-
- `[in] attributes`: The attributes associated with a particular property.
|
|
339
|
-
One or more of `napi_property_attributes`.
|
|
340
|
-
- `[in] data`: User-provided data passed into method when it is invoked.
|
|
341
|
-
|
|
342
|
-
Returns `Napi::PropertyDescriptor` object that represents the static method of a
|
|
343
|
-
JavaScript class.
|
|
344
|
-
|
|
345
|
-
### StaticMethod
|
|
346
|
-
|
|
347
|
-
Creates property descriptor that represents a static method of a JavaScript
|
|
348
|
-
class.
|
|
349
|
-
|
|
350
|
-
```cpp
|
|
351
|
-
template <StaticMethodCallback method>
|
|
352
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(
|
|
353
|
-
const char* utf8name,
|
|
354
|
-
napi_property_attributes attributes = napi_default,
|
|
355
|
-
void* data = nullptr);
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
- `[in] method`: The native function that represents a static method of a
|
|
359
|
-
JavaScript class.
|
|
360
|
-
- `[in] utf8name`: Null-terminated string that represents the name of a static
|
|
361
|
-
method for the class.
|
|
362
|
-
- `[in] attributes`: The attributes associated with a particular property.
|
|
363
|
-
One or more of `napi_property_attributes`.
|
|
364
|
-
- `[in] data`: User-provided data passed into method when it is invoked.
|
|
365
|
-
|
|
366
|
-
Returns `Napi::PropertyDescriptor` object that represents a static method of a
|
|
367
|
-
JavaScript class.
|
|
368
|
-
|
|
369
|
-
### StaticMethod
|
|
370
|
-
|
|
371
|
-
Creates property descriptor that represents a static method of a JavaScript
|
|
372
|
-
class.
|
|
373
|
-
|
|
374
|
-
```cpp
|
|
375
|
-
template <StaticVoidMethodCallback method>
|
|
376
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(Symbol name,
|
|
377
|
-
napi_property_attributes attributes = napi_default,
|
|
378
|
-
void* data = nullptr);
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
- `[in] method`: The native function that represents a static method of a
|
|
382
|
-
JavaScript class.
|
|
383
|
-
- `[in] name`: Napi:Symbol that represents the name of a static
|
|
384
|
-
method for the class.
|
|
385
|
-
- `[in] attributes`: The attributes associated with a particular property.
|
|
386
|
-
One or more of `napi_property_attributes`.
|
|
387
|
-
- `[in] data`: User-provided data passed into method when it is invoked.
|
|
388
|
-
|
|
389
|
-
Returns `Napi::PropertyDescriptor` object that represents the static method of a
|
|
390
|
-
JavaScript class.
|
|
391
|
-
|
|
392
|
-
### StaticMethod
|
|
393
|
-
|
|
394
|
-
Creates property descriptor that represents a static method of a JavaScript
|
|
395
|
-
class.
|
|
396
|
-
|
|
397
|
-
```cpp
|
|
398
|
-
template <StaticMethodCallback method>
|
|
399
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(Symbol name,
|
|
400
|
-
napi_property_attributes attributes = napi_default,
|
|
401
|
-
void* data = nullptr);
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
- `[in] method`: The native function that represents a static method of a
|
|
405
|
-
JavaScript class.
|
|
406
|
-
- `[in] name`: Napi:Symbol that represents the name of a static.
|
|
407
|
-
- `[in] attributes`: The attributes associated with a particular property.
|
|
408
|
-
One or more of `napi_property_attributes`.
|
|
409
|
-
- `[in] data`: User-provided data passed into method when it is invoked.
|
|
410
|
-
|
|
411
|
-
Returns `Napi::PropertyDescriptor` object that represents a static method of a
|
|
412
|
-
JavaScript class.
|
|
413
|
-
|
|
414
|
-
### StaticAccessor
|
|
415
|
-
|
|
416
|
-
Creates property descriptor that represents a static accessor property of a
|
|
417
|
-
JavaScript class.
|
|
418
|
-
|
|
419
|
-
```cpp
|
|
420
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticAccessor(
|
|
421
|
-
const char* utf8name,
|
|
422
|
-
StaticGetterCallback getter,
|
|
423
|
-
StaticSetterCallback setter,
|
|
424
|
-
napi_property_attributes attributes = napi_default,
|
|
425
|
-
void* data = nullptr);
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
- `[in] utf8name`: Null-terminated string that represents the name of a static
|
|
429
|
-
accessor property for the class.
|
|
430
|
-
- `[in] getter`: The native function to call when a get access to the property
|
|
431
|
-
of a JavaScript class is performed.
|
|
432
|
-
- `[in] setter`: The native function to call when a set access to the property
|
|
433
|
-
of a JavaScript class is performed.
|
|
434
|
-
- `[in] attributes`: The attributes associated with a particular property.
|
|
435
|
-
One or more of `napi_property_attributes`.
|
|
436
|
-
- `[in] data`: User-provided data passed into getter or setter when
|
|
437
|
-
is invoked.
|
|
438
|
-
|
|
439
|
-
Returns `Napi::PropertyDescriptor` object that represents a static accessor
|
|
440
|
-
property of a JavaScript class.
|
|
441
|
-
|
|
442
|
-
### StaticAccessor
|
|
443
|
-
|
|
444
|
-
Creates property descriptor that represents a static accessor property of a
|
|
445
|
-
JavaScript class.
|
|
446
|
-
|
|
447
|
-
```cpp
|
|
448
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticAccessor(Symbol name,
|
|
449
|
-
StaticGetterCallback getter,
|
|
450
|
-
StaticSetterCallback setter,
|
|
451
|
-
napi_property_attributes attributes = napi_default,
|
|
452
|
-
void* data = nullptr);
|
|
453
|
-
```
|
|
454
|
-
|
|
455
|
-
- `[in] name`: Napi:Symbol that represents the name of a static accessor.
|
|
456
|
-
- `[in] getter`: The native function to call when a get access to the property
|
|
457
|
-
of a JavaScript class is performed.
|
|
458
|
-
- `[in] setter`: The native function to call when a set access to the property
|
|
459
|
-
of a JavaScript class is performed.
|
|
460
|
-
- `[in] attributes`: The attributes associated with a particular property.
|
|
461
|
-
One or more of `napi_property_attributes`.
|
|
462
|
-
- `[in] data`: User-provided data passed into getter or setter when
|
|
463
|
-
is invoked.
|
|
464
|
-
|
|
465
|
-
Returns `Napi::PropertyDescriptor` object that represents a static accessor
|
|
466
|
-
property of a JavaScript class.
|
|
467
|
-
|
|
468
|
-
### StaticAccessor
|
|
469
|
-
|
|
470
|
-
Creates property descriptor that represents a static accessor property of a
|
|
471
|
-
JavaScript class.
|
|
472
|
-
|
|
473
|
-
```cpp
|
|
474
|
-
template <StaticGetterCallback getter, StaticSetterCallback setter=nullptr>
|
|
475
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticAccessor(
|
|
476
|
-
const char* utf8name,
|
|
477
|
-
napi_property_attributes attributes = napi_default,
|
|
478
|
-
void* data = nullptr);
|
|
479
|
-
```
|
|
480
|
-
|
|
481
|
-
- `[in] getter`: The native function to call when a get access to the property
|
|
482
|
-
of a JavaScript class is performed.
|
|
483
|
-
- `[in] setter`: The native function to call when a set access to the property
|
|
484
|
-
of a JavaScript class is performed.
|
|
485
|
-
- `[in] utf8name`: Null-terminated string that represents the name of a static
|
|
486
|
-
accessor property for the class.
|
|
487
|
-
- `[in] attributes`: The attributes associated with a particular property.
|
|
488
|
-
One or more of `napi_property_attributes`.
|
|
489
|
-
- `[in] data`: User-provided data passed into getter or setter when
|
|
490
|
-
is invoked.
|
|
491
|
-
|
|
492
|
-
Returns `Napi::PropertyDescriptor` object that represents a static accessor
|
|
493
|
-
property of a JavaScript class.
|
|
494
|
-
|
|
495
|
-
### StaticAccessor
|
|
496
|
-
|
|
497
|
-
Creates property descriptor that represents a static accessor property of a
|
|
498
|
-
JavaScript class.
|
|
499
|
-
|
|
500
|
-
```cpp
|
|
501
|
-
template <StaticGetterCallback getter, StaticSetterCallback setter=nullptr>
|
|
502
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticAccessor(Symbol name,
|
|
503
|
-
napi_property_attributes attributes = napi_default,
|
|
504
|
-
void* data = nullptr);
|
|
505
|
-
```
|
|
506
|
-
|
|
507
|
-
- `[in] getter`: The native function to call when a get access to the property
|
|
508
|
-
of a JavaScript class is performed.
|
|
509
|
-
- `[in] setter`: The native function to call when a set access to the property
|
|
510
|
-
of a JavaScript class is performed.
|
|
511
|
-
- `[in] name`: Napi:Symbol that represents the name of a static accessor.
|
|
512
|
-
- `[in] attributes`: The attributes associated with a particular property.
|
|
513
|
-
One or more of `napi_property_attributes`.
|
|
514
|
-
- `[in] data`: User-provided data passed into getter or setter when
|
|
515
|
-
is invoked.
|
|
516
|
-
|
|
517
|
-
Returns `Napi::PropertyDescriptor` object that represents a static accessor
|
|
518
|
-
property of a JavaScript class.
|
|
519
|
-
|
|
520
|
-
### StaticValue
|
|
521
|
-
|
|
522
|
-
Creates property descriptor that represents an static value property of a
|
|
523
|
-
JavaScript class.
|
|
524
|
-
```cpp
|
|
525
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticValue(
|
|
526
|
-
const char* utf8name,
|
|
527
|
-
Napi::Value value,
|
|
528
|
-
napi_property_attributes attributes = napi_default);
|
|
529
|
-
```
|
|
530
|
-
|
|
531
|
-
- `[in] utf8name`: Null-terminated string that represents the name of the static
|
|
532
|
-
property.
|
|
533
|
-
- `[in] value`: The value that's retrieved by a get access of the property.
|
|
534
|
-
- `[in] attributes`: The attributes to be associated with the property in
|
|
535
|
-
addition to the napi_static attribute. One or more of
|
|
536
|
-
`napi_property_attributes`.
|
|
537
|
-
|
|
538
|
-
Returns `Napi::PropertyDescriptor` object that represents an static value
|
|
539
|
-
property of a JavaScript class
|
|
540
|
-
|
|
541
|
-
### StaticValue
|
|
542
|
-
|
|
543
|
-
Creates property descriptor that represents an static value property of a
|
|
544
|
-
JavaScript class.
|
|
545
|
-
```cpp
|
|
546
|
-
static Napi::PropertyDescriptor Napi::ObjectWrap::StaticValue(Symbol name,
|
|
547
|
-
Napi::Value value,
|
|
548
|
-
napi_property_attributes attributes = napi_default);
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
- `[in] name`: The `Napi::Symbol` object whose value is used to identify the
|
|
552
|
-
name of the static property.
|
|
553
|
-
- `[in] value`: The value that's retrieved by a get access of the property.
|
|
554
|
-
- `[in] attributes`: The attributes to be associated with the property in
|
|
555
|
-
addition to the napi_static attribute. One or more of
|
|
556
|
-
`napi_property_attributes`.
|
|
557
|
-
|
|
558
|
-
Returns `Napi::PropertyDescriptor` object that represents an static value
|
|
559
|
-
property of a JavaScript class
|
|
560
|
-
|
|
561
|
-
[`Napi::InstanceWrap<T>`]: ./instance_wrap.md
|
package/doc/prebuild_tools.md
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Prebuild tools
|
|
2
|
-
|
|
3
|
-
The distribution of a native add-on is just as important as its implementation.
|
|
4
|
-
In order to install a native add-on it's important to have all the necessary
|
|
5
|
-
dependencies installed and well configured (see the [setup](setup.md) section).
|
|
6
|
-
The end-user will need to compile the add-on when they will do an `npm install`
|
|
7
|
-
and in some cases this could create problems. To avoid the compilation process it's
|
|
8
|
-
possible to distribute the native add-on in pre-built form for different platform
|
|
9
|
-
and architectures. The prebuild tools help to create and distribute the pre-built
|
|
10
|
-
form of a native add-on.
|
|
11
|
-
|
|
12
|
-
The following list report known tools that are compatible with **N-API**:
|
|
13
|
-
|
|
14
|
-
- **[node-pre-gyp](https://www.npmjs.com/package/node-pre-gyp)**
|
|
15
|
-
- **[prebuild](https://www.npmjs.com/package/prebuild)**
|
|
16
|
-
- **[prebuildify](https://www.npmjs.com/package/prebuildify)**
|