static napi_value New(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value args[1]; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); napi_value description = NULL; if (argc >= 1) { napi_valuetype valuetype; NAPI_CALL(env, napi_typeof(env, args[0], &valuetype)); NAPI_ASSERT(env, valuetype == napi_string, "Wrong type of arguments. Expects a string."); description = args[0]; } napi_value symbol; NAPI_CALL(env, napi_create_symbol(env, description, &symbol)); return symbol; }
napi_value Init(napi_env env, napi_value exports) { napi_value number; NAPI_CALL(env, napi_create_double(env, value_, &number)); napi_value name_value; NAPI_CALL(env, napi_create_string_utf8(env, "NameKeyValue", NAPI_AUTO_LENGTH, &name_value)); napi_value symbol_description; napi_value name_symbol; NAPI_CALL(env, napi_create_string_utf8(env, "NameKeySymbol", NAPI_AUTO_LENGTH, &symbol_description)); NAPI_CALL(env, napi_create_symbol(env, symbol_description, &name_symbol)); napi_property_descriptor properties[] = { { "echo", 0, Echo, 0, 0, 0, napi_enumerable, 0 }, { "readwriteValue", 0, 0, 0, 0, number, napi_enumerable | napi_writable, 0 }, { "readonlyValue", 0, 0, 0, 0, number, napi_enumerable, 0}, { "hiddenValue", 0, 0, 0, 0, number, napi_default, 0}, { NULL, name_value, 0, 0, 0, number, napi_enumerable, 0}, { NULL, name_symbol, 0, 0, 0, number, napi_enumerable, 0}, { "readwriteAccessor1", 0, 0, GetValue, SetValue, 0, napi_default, 0}, { "readwriteAccessor2", 0, 0, GetValue, SetValue, 0, napi_writable, 0}, { "readonlyAccessor1", 0, 0, GetValue, NULL, 0, napi_default, 0}, { "readonlyAccessor2", 0, 0, GetValue, NULL, 0, napi_writable, 0}, { "hasNamedProperty", 0, HasNamedProperty, 0, 0, 0, napi_default, 0 }, }; NAPI_CALL(env, napi_define_properties( env, exports, sizeof(properties) / sizeof(*properties), properties)); return exports; }