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.
Files changed (77) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/README.md +67 -47
  3. package/napi-inl.deprecated.h +8 -8
  4. package/napi-inl.h +118 -80
  5. package/napi.h +513 -424
  6. package/package.json +25 -5
  7. package/tools/clang-format.js +30 -10
  8. package/.clang-format +0 -111
  9. package/.editorconfig +0 -8
  10. package/.github/workflows/ci.yml +0 -55
  11. package/.github/workflows/linter.yml +0 -24
  12. package/.github/workflows/stale.yml +0 -18
  13. package/.travis.yml +0 -58
  14. package/CODE_OF_CONDUCT.md +0 -4
  15. package/CONTRIBUTING.md +0 -66
  16. package/appveyor.yml +0 -37
  17. package/benchmark/README.md +0 -47
  18. package/benchmark/binding.gyp +0 -25
  19. package/benchmark/function_args.cc +0 -217
  20. package/benchmark/function_args.js +0 -60
  21. package/benchmark/index.js +0 -34
  22. package/benchmark/property_descriptor.cc +0 -91
  23. package/benchmark/property_descriptor.js +0 -37
  24. package/doc/addon.md +0 -157
  25. package/doc/array.md +0 -81
  26. package/doc/array_buffer.md +0 -149
  27. package/doc/async_context.md +0 -86
  28. package/doc/async_operations.md +0 -31
  29. package/doc/async_worker.md +0 -427
  30. package/doc/async_worker_variants.md +0 -557
  31. package/doc/bigint.md +0 -97
  32. package/doc/boolean.md +0 -68
  33. package/doc/buffer.md +0 -144
  34. package/doc/callback_scope.md +0 -54
  35. package/doc/callbackinfo.md +0 -97
  36. package/doc/checker-tool.md +0 -32
  37. package/doc/class_property_descriptor.md +0 -117
  38. package/doc/cmake-js.md +0 -68
  39. package/doc/conversion-tool.md +0 -28
  40. package/doc/creating_a_release.md +0 -62
  41. package/doc/dataview.md +0 -248
  42. package/doc/date.md +0 -68
  43. package/doc/env.md +0 -132
  44. package/doc/error.md +0 -120
  45. package/doc/error_handling.md +0 -186
  46. package/doc/escapable_handle_scope.md +0 -82
  47. package/doc/external.md +0 -63
  48. package/doc/function.md +0 -402
  49. package/doc/function_reference.md +0 -238
  50. package/doc/generator.md +0 -13
  51. package/doc/handle_scope.md +0 -65
  52. package/doc/hierarchy.md +0 -91
  53. package/doc/instance_wrap.md +0 -408
  54. package/doc/memory_management.md +0 -27
  55. package/doc/name.md +0 -29
  56. package/doc/node-gyp.md +0 -82
  57. package/doc/number.md +0 -163
  58. package/doc/object.md +0 -279
  59. package/doc/object_lifetime_management.md +0 -83
  60. package/doc/object_reference.md +0 -117
  61. package/doc/object_wrap.md +0 -561
  62. package/doc/prebuild_tools.md +0 -16
  63. package/doc/promises.md +0 -79
  64. package/doc/property_descriptor.md +0 -286
  65. package/doc/range_error.md +0 -59
  66. package/doc/reference.md +0 -111
  67. package/doc/setup.md +0 -81
  68. package/doc/string.md +0 -93
  69. package/doc/symbol.md +0 -48
  70. package/doc/threadsafe.md +0 -121
  71. package/doc/threadsafe_function.md +0 -290
  72. package/doc/type_error.md +0 -59
  73. package/doc/typed_array.md +0 -78
  74. package/doc/typed_array_of.md +0 -137
  75. package/doc/typed_threadsafe_function.md +0 -307
  76. package/doc/value.md +0 -340
  77. package/doc/version_management.md +0 -43
package/doc/promises.md DELETED
@@ -1,79 +0,0 @@
1
- # Promise
2
-
3
- Class `Napi::Promise` inherits from class [`Napi::Object`][].
4
-
5
- The `Napi::Promise` class, along with its `Napi::Promise::Deferred` class, implement the ability to create, resolve, and reject Promise objects.
6
-
7
- The basic approach is to create a `Napi::Promise::Deferred` object and return to your caller the value returned by the `Napi::Promise::Deferred::Promise` method. For example:
8
-
9
- ```cpp
10
- Napi::Value YourFunction(const Napi::CallbackInfo& info) {
11
- // your code goes here...
12
- Napi::Promise::Deferred deferred = Napi::Promise::Deferred::New(info.Env());
13
- // deferred needs to survive this call...
14
- return deferred.Promise();
15
- }
16
- ```
17
-
18
- Later, when the asynchronous process completes, call either the `Resolve` or `Reject` method on the `Napi::Promise::Deferred` object created earlier:
19
-
20
- ```cpp
21
- deferred.Resolve(String::New(info.Env(), "OK"));
22
- ```
23
-
24
- ## Promise::Deferred Methods
25
-
26
- ### Factory Method
27
-
28
- ```cpp
29
- static Napi::Promise::Deferred Napi::Promise::Deferred::New(napi_env env);
30
- ```
31
-
32
- * `[in] env`: The `napi_env` environment in which to create the `Napi::Promise::Deferred` object.
33
-
34
- ### Constructor
35
-
36
- ```cpp
37
- Napi::Promise::Deferred(napi_env env);
38
- ```
39
-
40
- * `[in] env`: The `napi_env` environment in which to construct the `Napi::Promise::Deferred` object.
41
-
42
- ### Env
43
-
44
- ```cpp
45
- Napi::Env Napi::Promise::Deferred::Env() const;
46
- ```
47
-
48
- Returns the Env environment this `Napi::Promise::Deferred` object is associated with.
49
-
50
- ### Promise
51
-
52
- ```cpp
53
- Napi::Promise Napi::Promise::Deferred::Promise() const;
54
- ```
55
-
56
- Returns the `Napi::Promise` object held by the `Napi::Promise::Deferred` object.
57
-
58
- ### Resolve
59
-
60
- ```cpp
61
- void Napi::Promise::Deferred::Resolve(napi_value value) const;
62
- ```
63
-
64
- Resolves the `Napi::Promise` object held by the `Napi::Promise::Deferred` object.
65
-
66
- * `[in] value`: The N-API primitive value with which to resolve the `Napi::Promise`.
67
-
68
- ### Reject
69
-
70
- ```cpp
71
- void Napi::Promise::Deferred::Reject(napi_value value) const;
72
- ```
73
-
74
- Rejects the Promise object held by the `Napi::Promise::Deferred` object.
75
-
76
- * `[in] value`: The N-API primitive value with which to reject the `Napi::Promise`.
77
-
78
-
79
- [`Napi::Object`]: ./object.md
@@ -1,286 +0,0 @@
1
- # Property Descriptor
2
-
3
- A [`Napi::Object`](object.md) can be assigned properties via its [`DefineProperty`](object.md#defineproperty) and [`DefineProperties`](object.md#defineproperties) functions, which take PropertyDescriptor(s) as their parameters. The `Napi::PropertyDescriptor` can contain either values or functions, which are then assigned to the `Napi::Object`. Note that a single instance of a `Napi::PropertyDescriptor` class can only contain either one value, or at most two functions. PropertyDescriptors can only be created through the class methods [`Accessor`](#accessor), [`Function`](#function), or [`Value`](#value), each of which return a new static instance of a `Napi::PropertyDescriptor`.
4
-
5
- ## Example
6
-
7
- ```cpp
8
- #include <napi.h>
9
-
10
- using namespace Napi;
11
-
12
- Value TestGetter(const CallbackInfo& info) {
13
- return Boolean::New(info.Env(), testValue);
14
- }
15
-
16
- void TestSetter(const CallbackInfo& info) {
17
- testValue = info[0].As<Boolean>();
18
- }
19
-
20
- Value TestFunction(const CallbackInfo& info) {
21
- return Boolean::New(info.Env(), true);
22
- }
23
-
24
- Void Init(Env env) {
25
- // Create an object.
26
- Object obj = Object::New(env);
27
-
28
- // Accessor
29
- PropertyDescriptor pd1 = PropertyDescriptor::Accessor<TestGetter>("pd1");
30
- PropertyDescriptor pd2 =
31
- PropertyDescriptor::Accessor<TestGetter, TestSetter>("pd2");
32
- // Function
33
- PropertyDescriptor pd3 = PropertyDescriptor::Function(env,
34
- "function",
35
- TestFunction);
36
- // Value
37
- Boolean true_bool = Boolean::New(env, true);
38
- PropertyDescriptor pd4 =
39
- PropertyDescriptor::Value("boolean value",
40
- Napi::Boolean::New(env, true),
41
- napi_writable);
42
-
43
- // Assign properties to the object.
44
- obj.DefineProperties({pd1, pd2, pd3, pd4});
45
- }
46
- ```
47
-
48
- ## Types
49
-
50
- ### PropertyDescriptor::GetterCallback
51
-
52
- ```cpp
53
- typedef Napi::Value (*GetterCallback)(const Napi::CallbackInfo& info);
54
- ```
55
-
56
- This is the signature of a getter function to be passed as a template parameter
57
- to `PropertyDescriptor::Accessor`.
58
-
59
- ### PropertyDescriptor::SetterCallback
60
-
61
- ```cpp
62
- typedef void (*SetterCallback)(const Napi::CallbackInfo& info);
63
- ```
64
-
65
- This is the signature of a setter function to be passed as a template parameter
66
- to `PropertyDescriptor::Accessor`.
67
-
68
- ## Methods
69
-
70
- ### Constructor
71
-
72
- ```cpp
73
- Napi::PropertyDescriptor::PropertyDescriptor (napi_property_descriptor desc);
74
- ```
75
-
76
- * `[in] desc`: A PropertyDescriptor that is needed in order to create another PropertyDescriptor.
77
-
78
- ### Accessor
79
-
80
- ```cpp
81
- template <Napi::PropertyDescriptor::GetterCallback Getter>
82
- static Napi::PropertyDescriptor Napi::PropertyDescriptor::Accessor (___ name,
83
- napi_property_attributes attributes = napi_default,
84
- void* data = nullptr);
85
- ```
86
-
87
- * `[template] Getter`: A getter function.
88
- * `[in] attributes`: Potential attributes for the getter function.
89
- * `[in] data`: A pointer to data of any type, default is a null pointer.
90
-
91
- Returns a PropertyDescriptor that contains a read-only property.
92
-
93
- The name of the property can be any of the following types:
94
- - `const char*`
95
- - `const std::string &`
96
- - `napi_value value`
97
- - `Napi::Name`
98
-
99
- ```cpp
100
- template <
101
- Napi::PropertyDescriptor::GetterCallback Getter,
102
- Napi::PropertyDescriptor::SetterCallback Setter>
103
- static Napi::PropertyDescriptor Napi::PropertyDescriptor::Accessor (___ name,
104
- napi_property_attributes attributes = napi_default,
105
- void* data = nullptr);
106
- ```
107
-
108
- * `[template] Getter`: A getter function.
109
- * `[template] Setter`: A setter function.
110
- * `[in] attributes`: Potential attributes for the getter function.
111
- * `[in] data`: A pointer to data of any type, default is a null pointer.
112
-
113
- Returns a PropertyDescriptor that contains a read-write property.
114
-
115
- The name of the property can be any of the following types:
116
- - `const char*`
117
- - `const std::string &`
118
- - `napi_value value`
119
- - `Napi::Name`
120
-
121
- ```cpp
122
- static Napi::PropertyDescriptor Napi::PropertyDescriptor::Accessor (___ name,
123
- Getter getter,
124
- napi_property_attributes attributes = napi_default,
125
- void *data = nullptr);
126
- ```
127
-
128
- * `[in] name`: The name used for the getter function.
129
- * `[in] getter`: A getter function.
130
- * `[in] attributes`: Potential attributes for the getter function.
131
- * `[in] data`: A pointer to data of any type, default is a null pointer.
132
-
133
- Returns a PropertyDescriptor that contains a function.
134
-
135
- The name of the property can be any of the following types:
136
- - `const char*`
137
- - `const std::string &`
138
- - `napi_value value`
139
- - `Napi::Name`
140
-
141
- **This signature is deprecated. It will result in a memory leak if used.**
142
-
143
- ```cpp
144
- static Napi::PropertyDescriptor Napi::PropertyDescriptor::Accessor (
145
- Napi::Env env,
146
- Napi::Object object,
147
- ___ name,
148
- Getter getter,
149
- napi_property_attributes attributes = napi_default,
150
- void *data = nullptr);
151
- ```
152
-
153
- * `[in] env`: The environment in which to create this accessor.
154
- * `[in] object`: The object on which the accessor will be defined.
155
- * `[in] name`: The name used for the getter function.
156
- * `[in] getter`: A getter function.
157
- * `[in] attributes`: Potential attributes for the getter function.
158
- * `[in] data`: A pointer to data of any type, default is a null pointer.
159
-
160
- Returns a `Napi::PropertyDescriptor` that contains a `Getter` accessor.
161
-
162
- The name of the property can be any of the following types:
163
- - `const char*`
164
- - `const std::string &`
165
- - `Napi::Name`
166
-
167
- ```cpp
168
- static Napi::PropertyDescriptor Napi::PropertyDescriptor::Accessor (___ name,
169
- Getter getter,
170
- Setter setter,
171
- napi_property_attributes attributes = napi_default,
172
- void *data = nullptr);
173
- ```
174
-
175
- * `[in] name`: The name of the getter and setter function.
176
- * `[in] getter`: The getter function.
177
- * `[in] setter`: The setter function.
178
- * `[in] attributes`: Potential attributes for the getter function.
179
- * `[in] data`: A pointer to data of any type, default is a null pointer.
180
-
181
- Returns a `Napi::PropertyDescriptor` that contains a `Getter` and `Setter` function.
182
-
183
- The name of the property can be any of the following types:
184
- - `const char*`
185
- - `const std::string &`
186
- - `napi_value value`
187
- - `Napi::Name`
188
-
189
- **This signature is deprecated. It will result in a memory leak if used.**
190
-
191
- ```cpp
192
- static Napi::PropertyDescriptor Napi::PropertyDescriptor::Accessor (
193
- Napi::Env env,
194
- Napi::Object object,
195
- ___ name,
196
- Getter getter,
197
- Setter setter,
198
- napi_property_attributes attributes = napi_default,
199
- void *data = nullptr);
200
- ```
201
-
202
- * `[in] env`: The environment in which to create this accessor.
203
- * `[in] object`: The object on which the accessor will be defined.
204
- * `[in] name`: The name of the getter and setter function.
205
- * `[in] getter`: The getter function.
206
- * `[in] setter`: The setter function.
207
- * `[in] attributes`: Potential attributes for the getter function.
208
- * `[in] data`: A pointer to data of any type, default is a null pointer.
209
-
210
- Returns a `Napi::PropertyDescriptor` that contains a `Getter` and `Setter` function.
211
-
212
- The name of the property can be any of the following types:
213
- - `const char*`
214
- - `const std::string &`
215
- - `Napi::Name`
216
-
217
- ### Function
218
-
219
- ```cpp
220
- static Napi::PropertyDescriptor Napi::PropertyDescriptor::Function (___ name,
221
- Callable cb,
222
- napi_property_attributes attributes = napi_default,
223
- void *data = nullptr);
224
- ```
225
-
226
- * `[in] name`: The name of the Callable function.
227
- * `[in] cb`: The function
228
- * `[in] attributes`: Potential attributes for the getter function.
229
- * `[in] data`: A pointer to data of any type, default is a null pointer.
230
-
231
- Returns a `Napi::PropertyDescriptor` that contains a callable `Napi::Function`.
232
-
233
- The name of the property can be any of the following types:
234
- - `const char*`
235
- - `const std::string &`
236
- - `napi_value value`
237
- - `Napi::Name`
238
-
239
- **This signature is deprecated. It will result in a memory leak if used.**
240
-
241
- ```cpp
242
- static Napi::PropertyDescriptor Napi::PropertyDescriptor::Function (
243
- Napi::Env env,
244
- ___ name,
245
- Callable cb,
246
- napi_property_attributes attributes = napi_default,
247
- void *data = nullptr);
248
- ```
249
-
250
- * `[in] env`: The environment in which to create this accessor.
251
- * `[in] name`: The name of the Callable function.
252
- * `[in] cb`: The function
253
- * `[in] attributes`: Potential attributes for the getter function.
254
- * `[in] data`: A pointer to data of any type, default is a null pointer.
255
-
256
- Returns a `Napi::PropertyDescriptor` that contains a callable `Napi::Function`.
257
-
258
- The name of the property can be any of the following types:
259
- - `const char*`
260
- - `const std::string &`
261
- - `Napi::Name`
262
-
263
- ### Value
264
-
265
- ```cpp
266
- static Napi::PropertyDescriptor Napi::PropertyDescriptor::Value (___ name,
267
- napi_value value,
268
- napi_property_attributes attributes = napi_default);
269
- ```
270
-
271
- The name of the property can be any of the following types:
272
- - `const char*`
273
- - `const std::string &`
274
- - `napi_value value`
275
- - `Napi::Name`
276
-
277
- ## Related Information
278
-
279
- ### napi\_property\_attributes
280
- `napi_property_attributes` are flags used to indicate to JavaScript certain permissions that the property is meant to have. The following are the flag options:
281
- - napi\_default,
282
- - napi\_writable,
283
- - napi\_enumerable,
284
- - napi\_configurable
285
- For more information on the flags and on napi\_property\_attributes, please read the documentation [here](https://github.com/nodejs/node/blob/master/doc/api/n-api.md#napi_property_attributes).
286
-
@@ -1,59 +0,0 @@
1
- # RangeError
2
-
3
- The `Napi::RangeError` class is a representation of the JavaScript `RangeError` that is
4
- thrown when trying to pass a value as an argument to a function that does not allow
5
- a range that includes the value.
6
-
7
- The `Napi::RangeError` class inherits its behaviors from the `Napi::Error` class (for
8
- more info see: [`Napi::Error`](error.md)).
9
-
10
- For more details about error handling refer to the section titled [Error handling](error_handling.md).
11
-
12
- ## Methods
13
-
14
- ### New
15
-
16
- Creates a new instance of a `Napi::RangeError` object.
17
-
18
- ```cpp
19
- Napi::RangeError::New(Napi::Env env, const char* message);
20
- ```
21
-
22
- - `[in] Env`: The environment in which to construct the `Napi::RangeError` object.
23
- - `[in] message`: Null-terminated string to be used as the message for the `Napi::RangeError`.
24
-
25
- Returns an instance of a `Napi::RangeError` object.
26
-
27
- ### New
28
-
29
- Creates a new instance of a `Napi::RangeError` object.
30
-
31
- ```cpp
32
- Napi::RangeError::New(Napi::Env env, const std::string& message);
33
- ```
34
-
35
- - `[in] Env`: The environment in which to construct the `Napi::RangeError` object.
36
- - `[in] message`: Reference string to be used as the message for the `Napi::RangeError`.
37
-
38
- Returns an instance of a `Napi::RangeError` object.
39
-
40
- ### Constructor
41
-
42
- Creates a new empty instance of a `Napi::RangeError`.
43
-
44
- ```cpp
45
- Napi::RangeError::RangeError();
46
- ```
47
-
48
- ### Constructor
49
-
50
- Initializes a `Napi::RangeError` instance from an existing Javascript error object.
51
-
52
- ```cpp
53
- Napi::RangeError::RangeError(napi_env env, napi_value value);
54
- ```
55
-
56
- - `[in] Env`: The environment in which to construct the `Napi::RangeError` object.
57
- - `[in] value`: The `Napi::Error` reference to wrap.
58
-
59
- Returns an instance of a `Napi::RangeError` object.
package/doc/reference.md DELETED
@@ -1,111 +0,0 @@
1
- # Reference (template)
2
-
3
- Holds a counted reference to a [`Napi::Value`](value.md) object; initially a weak reference unless otherwise specified, may be changed to/from a strong reference by adjusting the refcount.
4
-
5
- The referenced `Napi::Value` is not immediately destroyed when the reference count is zero; it is merely then eligible for garbage-collection if there are no other references to the `Napi::Value`.
6
-
7
- `Napi::Reference` objects allocated in static space, such as a global static instance, must call the `SuppressDestruct` method to prevent its destructor, running at program shutdown time, from attempting to reset the reference when the environment is no longer valid.
8
-
9
- The following classes inherit, either directly or indirectly, from `Napi::Reference`:
10
-
11
- * [`Napi::ObjectWrap`](object_wrap.md)
12
- * [`Napi::ObjectReference`](object_reference.md)
13
- * [`Napi::FunctionReference`](function_reference.md)
14
-
15
- ## Methods
16
-
17
- ### Factory Method
18
-
19
- ```cpp
20
- static Napi::Reference<T> Napi::Reference::New(const T& value, uint32_t initialRefcount = 0);
21
- ```
22
-
23
- * `[in] value`: The value which is to be referenced.
24
-
25
- * `[in] initialRefcount`: The initial reference count.
26
-
27
- ### Empty Constructor
28
-
29
- ```cpp
30
- Napi::Reference::Reference();
31
- ```
32
-
33
- Creates a new _empty_ `Napi::Reference` instance.
34
-
35
- ### Constructor
36
-
37
- ```cpp
38
- Napi::Reference::Reference(napi_env env, napi_value value);
39
- ```
40
-
41
- * `[in] env`: The `napi_env` environment in which to construct the `Napi::Reference` object.
42
-
43
- * `[in] value`: The N-API primitive value to be held by the `Napi::Reference`.
44
-
45
- ### Env
46
-
47
- ```cpp
48
- Napi::Env Napi::Reference::Env() const;
49
- ```
50
-
51
- Returns the `Napi::Env` value in which the `Napi::Reference` was instantiated.
52
-
53
- ### IsEmpty
54
-
55
- ```cpp
56
- bool Napi::Reference::IsEmpty() const;
57
- ```
58
-
59
- Determines whether the value held by the `Napi::Reference` is empty.
60
-
61
- ### Value
62
-
63
- ```cpp
64
- T Napi::Reference::Value() const;
65
- ```
66
-
67
- Returns the value held by the `Napi::Reference`.
68
-
69
- ### Ref
70
-
71
- ```cpp
72
- uint32_t Napi::Reference::Ref();
73
- ```
74
-
75
- Increments the reference count for the `Napi::Reference` and returns the resulting reference count. Throws an error if the increment fails.
76
-
77
- ### Unref
78
-
79
- ```cpp
80
- uint32_t Napi::Reference::Unref();
81
- ```
82
-
83
- Decrements the reference count for the `Napi::Reference` and returns the resulting reference count. Throws an error if the decrement fails.
84
-
85
- ### Reset (Empty)
86
-
87
- ```cpp
88
- void Napi::Reference::Reset();
89
- ```
90
-
91
- Sets the value held by the `Napi::Reference` to be empty.
92
-
93
- ### Reset
94
-
95
- ```cpp
96
- void Napi::Reference::Reset(const T& value, uint32_t refcount = 0);
97
- ```
98
-
99
- * `[in] value`: The value which is to be referenced.
100
-
101
- * `[in] initialRefcount`: The initial reference count.
102
-
103
- Sets the value held by the `Napi::Reference`.
104
-
105
- ### SuppressDestruct
106
-
107
- ```cpp
108
- void Napi::Reference::SuppressDestruct();
109
- ```
110
-
111
- Call this method on a `Napi::Reference` that is declared as static data to prevent its destructor, running at program shutdown time, from attempting to reset the reference when the environment is no longer valid.
package/doc/setup.md DELETED
@@ -1,81 +0,0 @@
1
- # Setup
2
-
3
- ## Prerequisites
4
-
5
- Before starting to use **N-API** you need to assure you have the following
6
- prerequisites:
7
-
8
- * **Node.JS** see: [Installing Node.js](https://nodejs.org/)
9
-
10
- * **Node.js native addon build tool**
11
-
12
- - **[node-gyp](node-gyp.md)**
13
-
14
- ## Installation and usage
15
-
16
- To use **N-API** in a native module:
17
-
18
- 1. Add a dependency on this package to `package.json`:
19
-
20
- ```json
21
- "dependencies": {
22
- "node-addon-api": "*",
23
- }
24
- ```
25
-
26
- 2. Reference this package's include directory and gyp file in `binding.gyp`:
27
-
28
- ```gyp
29
- 'include_dirs': ["<!(node -p \"require('node-addon-api').include_dir\")"],
30
- ```
31
-
32
- 3. Decide whether the package will enable C++ exceptions in the N-API wrapper.
33
- The base ABI-stable C APIs do not throw or handle C++ exceptions, but the
34
- N-API C++ wrapper classes may _optionally_
35
- [integrate C++ and JavaScript exception-handling
36
- ](https://nodejs.github.io/node-addon-api/class_napi_1_1_error.html).
37
- To enable that capability, C++ exceptions must be enabled in `binding.gyp`:
38
-
39
- ```gyp
40
- 'cflags!': [ '-fno-exceptions' ],
41
- 'cflags_cc!': [ '-fno-exceptions' ],
42
- 'xcode_settings': {
43
- 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
44
- 'CLANG_CXX_LIBRARY': 'libc++',
45
- 'MACOSX_DEPLOYMENT_TARGET': '10.7',
46
- },
47
- 'msvs_settings': {
48
- 'VCCLCompilerTool': { 'ExceptionHandling': 1 },
49
- },
50
- ```
51
-
52
- Alternatively, disable use of C++ exceptions in N-API:
53
-
54
- ```gyp
55
- 'defines': [ 'NAPI_DISABLE_CPP_EXCEPTIONS' ],
56
- ```
57
- 4. If you would like your native addon to support OSX, please also add the
58
- following settings in the `binding.gyp` file:
59
-
60
- ```gyp
61
- ['OS=="mac"', {
62
- 'cflags+': ['-fvisibility=hidden'],
63
- 'xcode_settings': {
64
- 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden
65
- }
66
- }]
67
- ```
68
-
69
- 5. Include `napi.h` in the native module code.
70
- To ensure only ABI-stable APIs are used, DO NOT include
71
- `node.h`, `nan.h`, or `v8.h`.
72
-
73
- ```C++
74
- #include "napi.h"
75
- ```
76
-
77
- At build time, the N-API back-compat library code will be used only when the
78
- targeted node version *does not* have N-API built-in.
79
-
80
- The preprocessor directive `NODE_ADDON_API_DISABLE_DEPRECATED` can be defined at
81
- compile time before including `napi.h` to skip the definition of deprecated APIs.
package/doc/string.md DELETED
@@ -1,93 +0,0 @@
1
- # String
2
-
3
- Class `Napi::String` inherits from class [`Napi::Name`][].
4
-
5
- ## Constructor
6
-
7
- ```cpp
8
- Napi::String::String();
9
- ```
10
-
11
- Returns a new **empty** `Napi::String` instance.
12
-
13
- If an error occurs, a `Napi::Error` will get thrown. If C++ exceptions are not
14
- being used, callers should check the result of `Env::IsExceptionPending` before
15
- attempting to use the returned value.
16
-
17
- ```cpp
18
- Napi::String::String(napi_env env, napi_value value); ///< Wraps a N-API value primitive.
19
- ```
20
- - `[in] env` - The environment in which to create the string.
21
- - `[in] value` - The primitive to wrap.
22
-
23
- Returns a `Napi::String` wrapping a `napi_value`.
24
-
25
- If an error occurs, a `Napi::Error` will get thrown. If C++ exceptions are not
26
- being used, callers should check the result of `Env::IsExceptionPending` before
27
- attempting to use the returned value.
28
-
29
- ## Operators
30
-
31
- ### operator std::string
32
-
33
- ```cpp
34
- Napi::String::operator std::string() const;
35
- ```
36
-
37
- Returns a UTF-8 encoded C++ string.
38
-
39
- ### operator std::u16string
40
- ```cpp
41
- Napi::String::operator std::u16string() const;
42
- ```
43
-
44
- Returns a UTF-16 encoded C++ string.
45
-
46
- ## Methods
47
-
48
- ### New
49
- ```cpp
50
- Napi::String::New();
51
- ```
52
-
53
- Returns a new empty `Napi::String`.
54
-
55
- ### New
56
- ```cpp
57
- Napi::String::New(napi_env env, const std::string& value);
58
- Napi::String::New(napi_env env, const std::u16::string& value);
59
- Napi::String::New(napi_env env, const char* value);
60
- Napi::String::New(napi_env env, const char16_t* value);
61
- Napi::String::New(napi_env env, const char* value, size_t length);
62
- Napi::String::New(napi_env env, const char16_t* value, size_t length);
63
- ```
64
-
65
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Value` object.
66
- - `[in] value`: The C++ primitive from which to instantiate the `Napi::Value`. `value` may be any of:
67
- - `std::string&` - represents a UTF8 string.
68
- - `std::u16string&` - represents a UTF16-LE string.
69
- - `const char*` - represents a UTF8 string.
70
- - `const char16_t*` - represents a UTF16-LE string.
71
- - `[in] length`: The length of the string (not necessarily null-terminated) in code units.
72
-
73
- Returns a new `Napi::String` that represents the passed in C++ string.
74
-
75
- If an error occurs, a `Napi::Error` will get thrown. If C++ exceptions are not
76
- being used, callers should check the result of `Env::IsExceptionPending` before
77
- attempting to use the returned value.
78
-
79
- ### Utf8Value
80
- ```cpp
81
- std::string Napi::String::Utf8Value() const;
82
- ```
83
-
84
- Returns a UTF-8 encoded C++ string.
85
-
86
- ### Utf16Value
87
- ```cpp
88
- std::u16string Napi::String::Utf16Value() const;
89
- ```
90
-
91
- Returns a UTF-16 encoded C++ string.
92
-
93
- [`Napi::Name`]: ./name.md