Skip to content

Commit a1eb8eb

Browse files
committed
Update napi examples based on latest changes
PR-URL: nodejs/abi-stable-node-addon-examples#7 Reviewed-By: Sampson Gao <sampsong@ca.ibm.com>
1 parent 2428363 commit a1eb8eb

File tree

13 files changed

+48
-54
lines changed

13 files changed

+48
-54
lines changed

1_hello_world/napi/hello.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@ napi_value Method(napi_env env, napi_callback_info info) {
1212
#define DECLARE_NAPI_METHOD(name, func) \
1313
{ name, 0, func, 0, 0, 0, napi_default, 0 }
1414

15-
void Init(napi_env env, napi_value exports, napi_value module, void* priv) {
15+
napi_value Init(napi_env env, napi_value exports) {
1616
napi_status status;
1717
napi_property_descriptor desc = DECLARE_NAPI_METHOD("hello", Method);
1818
status = napi_define_properties(env, exports, 1, &desc);
1919
assert(status == napi_ok);
20+
return exports;
2021
}
2122

2223
NAPI_MODULE(hello, Init)

1_hello_world/napi/hello.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
var addon = require('bindings')('hello');
22

3-
console.log(JSON.stringify(addon)); // 'world'
4-
console.log(addon.hello()); // 'world'
3+
console.log(addon.hello()); // 'world'

2_function_arguments/napi/addon.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ napi_value Add(napi_env env, napi_callback_info info) {
3636
assert(status == napi_ok);
3737

3838
napi_value sum;
39-
status = napi_create_number(env, value0 + value1, &sum);
39+
status = napi_create_double(env, value0 + value1, &sum);
4040
assert(status == napi_ok);
4141

4242
return sum;
@@ -45,11 +45,12 @@ napi_value Add(napi_env env, napi_callback_info info) {
4545
#define DECLARE_NAPI_METHOD(name, func) \
4646
{ name, 0, func, 0, 0, 0, napi_default, 0 }
4747

48-
void Init(napi_env env, napi_value exports, napi_value module, void* priv) {
48+
napi_value Init(napi_env env, napi_value exports) {
4949
napi_status status;
5050
napi_property_descriptor addDescriptor = DECLARE_NAPI_METHOD("add", Add);
5151
status = napi_define_properties(env, exports, 1, &addDescriptor);
5252
assert(status == napi_ok);
53+
return exports;
5354
}
5455

5556
NAPI_MODULE(addon, Init)

3_callbacks/napi/addon.cc

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ napi_value RunCallback(napi_env env, const napi_callback_info info) {
1212
napi_value cb = args[0];
1313

1414
napi_value argv[1];
15-
status = napi_create_string_utf8(env, "hello world", -1, argv);
15+
status = napi_create_string_utf8(env, "hello world", NAPI_AUTO_LENGTH, argv);
1616
assert(status == napi_ok);
1717

1818
napi_value global;
@@ -26,14 +26,12 @@ napi_value RunCallback(napi_env env, const napi_callback_info info) {
2626
return nullptr;
2727
}
2828

29-
#define DECLARE_NAPI_METHOD(name, func) \
30-
{ name, 0, func, 0, 0, 0, napi_default, 0 }
31-
32-
void Init(napi_env env, napi_value exports, napi_value module, void* priv) {
33-
napi_status status;
34-
napi_property_descriptor desc = DECLARE_NAPI_METHOD("exports", RunCallback);
35-
status = napi_define_properties(env, module, 1, &desc);
29+
napi_value Init(napi_env env, napi_value exports) {
30+
napi_value new_exports;
31+
napi_status status =
32+
napi_create_function(env, "", NAPI_AUTO_LENGTH, RunCallback, nullptr, &new_exports);
3633
assert(status == napi_ok);
34+
return new_exports;
3735
}
3836

3937
NAPI_MODULE(addon, Init)

4_object_factory/napi/addon.cc

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,12 @@ napi_value CreateObject(napi_env env, const napi_callback_info info) {
1919
return obj;
2020
}
2121

22-
#define DECLARE_NAPI_METHOD(name, func) \
23-
{ name, 0, func, 0, 0, 0, napi_default, 0 }
24-
25-
void Init(napi_env env, napi_value exports, napi_value module, void* priv) {
26-
napi_status status;
27-
napi_property_descriptor desc = DECLARE_NAPI_METHOD("exports", CreateObject);
28-
status = napi_define_properties(env, module, 1, &desc);
22+
napi_value Init(napi_env env, napi_value exports) {
23+
napi_value new_exports;
24+
napi_status status =
25+
napi_create_function(env, "", NAPI_AUTO_LENGTH, CreateObject, nullptr, &new_exports);
2926
assert(status == napi_ok);
27+
return new_exports;
3028
}
3129

3230
NAPI_MODULE(addon, Init)

5_function_factory/napi/addon.cc

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ napi_value MyFunction(napi_env env, napi_callback_info info) {
55
napi_status status;
66

77
napi_value str;
8-
status = napi_create_string_utf8(env, "hello world", -1, &str);
8+
status = napi_create_string_utf8(env, "hello world", NAPI_AUTO_LENGTH, &str);
99
assert(status == napi_ok);
1010

1111
return str;
@@ -15,21 +15,18 @@ napi_value CreateFunction(napi_env env, napi_callback_info info) {
1515
napi_status status;
1616

1717
napi_value fn;
18-
status = napi_create_function(env, "theFunction", MyFunction, nullptr, &fn);
18+
status = napi_create_function(env, "theFunction", NAPI_AUTO_LENGTH, MyFunction, nullptr, &fn);
1919
assert(status == napi_ok);
2020

2121
return fn;
2222
}
2323

24-
#define DECLARE_NAPI_METHOD(name, func) \
25-
{ name, 0, func, 0, 0, 0, napi_default, 0 }
26-
27-
void Init(napi_env env, napi_value exports, napi_value module, void* priv) {
28-
napi_status status;
29-
napi_property_descriptor desc =
30-
DECLARE_NAPI_METHOD("exports", CreateFunction);
31-
status = napi_define_properties(env, module, 1, &desc);
24+
napi_value Init(napi_env env, napi_value exports) {
25+
napi_value new_exports;
26+
napi_status status =
27+
napi_create_function(env, "", NAPI_AUTO_LENGTH, CreateFunction, nullptr, &new_exports);
3228
assert(status == napi_ok);
29+
return new_exports;
3330
}
3431

3532
NAPI_MODULE(addon, Init)

6_object_wrap/napi/addon.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "myobject.h"
22

3-
void Init(napi_env env, napi_value exports, napi_value module, void* priv) {
4-
MyObject::Init(env, exports);
3+
napi_value Init(napi_env env, napi_value exports) {
4+
return MyObject::Init(env, exports);
55
}
66

77
NAPI_MODULE(addon, Init)

6_object_wrap/napi/myobject.cc

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ void MyObject::Destructor(napi_env env, void* nativeObject, void* /*finalize_hin
1515
#define DECLARE_NAPI_METHOD(name, func) \
1616
{ name, 0, func, 0, 0, 0, napi_default, 0 }
1717

18-
void MyObject::Init(napi_env env, napi_value exports) {
18+
napi_value MyObject::Init(napi_env env, napi_value exports) {
1919
napi_status status;
2020
napi_property_descriptor properties[] = {
2121
{ "value", 0, 0, GetValue, SetValue, 0, napi_default, 0 },
@@ -25,22 +25,24 @@ void MyObject::Init(napi_env env, napi_value exports) {
2525

2626
napi_value cons;
2727
status =
28-
napi_define_class(env, "MyObject", New, nullptr, 3, properties, &cons);
28+
napi_define_class(env, "MyObject", NAPI_AUTO_LENGTH, New, nullptr, 3, properties, &cons);
2929
assert(status == napi_ok);
3030

3131
status = napi_create_reference(env, cons, 1, &constructor);
3232
assert(status == napi_ok);
3333

3434
status = napi_set_named_property(env, exports, "MyObject", cons);
3535
assert(status == napi_ok);
36+
return exports;
3637
}
3738

3839
napi_value MyObject::New(napi_env env, napi_callback_info info) {
3940
napi_status status;
4041

41-
bool is_constructor;
42-
status = napi_is_construct_call(env, info, &is_constructor);
42+
napi_value target;
43+
status = napi_get_new_target(env, info, &target);
4344
assert(status == napi_ok);
45+
bool is_constructor = target != nullptr;
4446

4547
if (is_constructor) {
4648
// Invoked as constructor: `new MyObject(...)`
@@ -107,7 +109,7 @@ napi_value MyObject::GetValue(napi_env env, napi_callback_info info) {
107109
assert(status == napi_ok);
108110

109111
napi_value num;
110-
status = napi_create_number(env, obj->value_, &num);
112+
status = napi_create_double(env, obj->value_, &num);
111113
assert(status == napi_ok);
112114

113115
return num;
@@ -147,7 +149,7 @@ napi_value MyObject::PlusOne(napi_env env, napi_callback_info info) {
147149
obj->value_ += 1;
148150

149151
napi_value num;
150-
status = napi_create_number(env, obj->value_, &num);
152+
status = napi_create_double(env, obj->value_, &num);
151153
assert(status == napi_ok);
152154

153155
return num;
@@ -182,7 +184,7 @@ napi_value MyObject::Multiply(napi_env env, napi_callback_info info) {
182184

183185
const int kArgCount = 1;
184186
napi_value argv[kArgCount];
185-
status = napi_create_number(env, obj->value_ * multiple, argv);
187+
status = napi_create_double(env, obj->value_ * multiple, argv);
186188
assert(status == napi_ok);
187189

188190
napi_value instance;

6_object_wrap/napi/myobject.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
class MyObject {
77
public:
8-
static void Init(napi_env env, napi_value exports);
8+
static napi_value Init(napi_env env, napi_value exports);
99
static void Destructor(napi_env env, void* nativeObject, void* finalize_hint);
1010

1111
private:

7_factory_wrap/napi/addon.cc

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,15 @@ napi_value CreateObject(napi_env env, napi_callback_info info) {
1616
return instance;
1717
}
1818

19-
#define DECLARE_NAPI_METHOD(name, func) \
20-
{ name, 0, func, 0, 0, 0, napi_default, 0 }
21-
22-
void Init(napi_env env, napi_value exports, napi_value module, void* priv) {
23-
napi_status status;
24-
25-
status = MyObject::Init(env);
19+
napi_value Init(napi_env env, napi_value exports) {
20+
napi_status status = MyObject::Init(env);
2621
assert(status == napi_ok);
2722

28-
napi_property_descriptor desc = DECLARE_NAPI_METHOD("exports", CreateObject);
29-
status = napi_define_properties(env, module, 1, &desc);
23+
napi_value new_exports;
24+
status =
25+
napi_create_function(env, "", NAPI_AUTO_LENGTH, CreateObject, nullptr, &new_exports);
3026
assert(status == napi_ok);
27+
return new_exports;
3128
}
3229

3330
NAPI_MODULE(addon, Init)

0 commit comments

Comments
 (0)