#include #include #include static void addon_free(napi_env env, void* data, void* hint) { napi_ref* ref = data; napi_delete_reference(env, *ref); free(ref); fprintf(stderr, "addon_free"); } napi_value addon_new(napi_env env, napi_value exports, bool ref_first) { napi_ref* ref = malloc(sizeof(*ref)); if (ref_first) { napi_create_reference(env, exports, 1, ref); napi_set_instance_data(env, ref, addon_free, NULL); } else { napi_set_instance_data(env, ref, addon_free, NULL); napi_create_reference(env, exports, 1, ref); } return exports; }