@emnapi/node-binding 0.38.3 → 0.39.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 (3) hide show
  1. package/index.d.ts +2 -0
  2. package/package.json +1 -1
  3. package/src/napi.c +39 -0
package/index.d.ts CHANGED
@@ -26,4 +26,6 @@ export declare namespace napi {
26
26
  func: (...args: P) => T,
27
27
  argv: P
28
28
  ): NapiResult<T>
29
+ export function fatalError (location: string, message: string): void
30
+ export function fatalException (err: any): void
29
31
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emnapi/node-binding",
3
- "version": "0.38.3",
3
+ "version": "0.39.0",
4
4
  "description": "Bridge connecting emnapi and Node.js native implementation",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
package/src/napi.c CHANGED
@@ -109,6 +109,37 @@ static napi_value napi_make_callback_js(napi_env env, napi_callback_info info) {
109
109
  return ret;
110
110
  } */
111
111
 
112
+ static napi_value napi_fatal_error_js(napi_env env, napi_callback_info info) {
113
+ napi_value argv[2];
114
+ size_t argc = 2;
115
+ NAPI_ASSERT(napi_get_cb_info(env, info, &argc, argv, NULL, NULL));
116
+
117
+ char *location;
118
+ size_t location_len;
119
+ char *message;
120
+ size_t message_len;
121
+
122
+ NAPI_ASSERT(napi_get_value_string_utf8(env, argv[0], NULL, 0, &location_len));
123
+ NAPI_ASSERT(napi_get_value_string_utf8(env, argv[1], NULL, 0, &message_len));
124
+ location = (char*)malloc(location_len + 1);
125
+ assert(location != NULL);
126
+ NAPI_ASSERT(napi_get_value_string_utf8(env, argv[0], location, location_len + 1, &location_len));
127
+ message = (char*)malloc(message_len + 1);
128
+ assert(location != NULL);
129
+ NAPI_ASSERT(napi_get_value_string_utf8(env, argv[1], message, message_len + 1, &message_len));
130
+
131
+ napi_fatal_error(location, location_len, message, message_len);
132
+ return NULL;
133
+ }
134
+
135
+ static napi_value napi_fatal_exception_js(napi_env env, napi_callback_info info) {
136
+ napi_value argv;
137
+ size_t argc = 1;
138
+ NAPI_ASSERT(napi_get_cb_info(env, info, &argc, &argv, NULL, NULL));
139
+ NAPI_ASSERT(napi_fatal_exception(env, argv));
140
+ return NULL;
141
+ }
142
+
112
143
  NAPI_MODULE_INIT() {
113
144
  napi_value ai;
114
145
  NAPI_ASSERT(napi_create_function(env, "asyncInit", NAPI_AUTO_LENGTH, napi_async_init_js, NULL, &ai));
@@ -126,5 +157,13 @@ NAPI_MODULE_INIT() {
126
157
  napi_create_function(env, "napiOpenCallbackScope", NAPI_AUTO_LENGTH, napi_open_callback_scope_js, NULL, &ocs);
127
158
  napi_set_named_property(env, exports, "napiOpenCallbackScope", ocs); */
128
159
 
160
+ napi_value fatal_error;
161
+ NAPI_ASSERT(napi_create_function(env, "fatalError", NAPI_AUTO_LENGTH, napi_fatal_error_js, NULL, &fatal_error));
162
+ NAPI_ASSERT(napi_set_named_property(env, exports, "fatalError", fatal_error));
163
+
164
+ napi_value fatal_exception;
165
+ NAPI_ASSERT(napi_create_function(env, "fatalException", NAPI_AUTO_LENGTH, napi_fatal_exception_js, NULL, &fatal_exception));
166
+ NAPI_ASSERT(napi_set_named_property(env, exports, "fatalException", fatal_exception));
167
+
129
168
  return exports;
130
169
  }