@@ -106,7 +106,8 @@ static napi_value GetSymbolNames(napi_env env, napi_callback_info info) {
106106 return output ;
107107}
108108
109- static napi_value GetWritableNames (napi_env env , napi_callback_info info ) {
109+ static napi_value GetEnumerableWritableNames (napi_env env ,
110+ napi_callback_info info ) {
110111 size_t argc = 1 ;
111112 napi_value args [1 ];
112113 NODE_API_CALL (env , napi_get_cb_info (env , info , & argc , args , NULL , NULL ));
@@ -134,7 +135,35 @@ static napi_value GetWritableNames(napi_env env, napi_callback_info info) {
134135 return output ;
135136}
136137
137- static napi_value GetConfigurableNames (napi_env env , napi_callback_info info ) {
138+ static napi_value GetOwnWritableNames (napi_env env , napi_callback_info info ) {
139+ size_t argc = 1 ;
140+ napi_value args [1 ];
141+ NODE_API_CALL (env , napi_get_cb_info (env , info , & argc , args , NULL , NULL ));
142+
143+ NODE_API_ASSERT (env , argc >= 1 , "Wrong number of arguments" );
144+
145+ napi_valuetype value_type0 ;
146+ NODE_API_CALL (env , napi_typeof (env , args [0 ], & value_type0 ));
147+
148+ NODE_API_ASSERT (
149+ env ,
150+ value_type0 == napi_object ,
151+ "Wrong type of arguments. Expects an object as first argument." );
152+
153+ napi_value output ;
154+ NODE_API_CALL (env ,
155+ napi_get_all_property_names (env ,
156+ args [0 ],
157+ napi_key_own_only ,
158+ napi_key_writable ,
159+ napi_key_numbers_to_strings ,
160+ & output ));
161+
162+ return output ;
163+ }
164+
165+ static napi_value GetEnumerableConfigurableNames (napi_env env ,
166+ napi_callback_info info ) {
138167 size_t argc = 1 ;
139168 napi_value args [1 ];
140169 NODE_API_CALL (env , napi_get_cb_info (env , info , & argc , args , NULL , NULL ));
@@ -162,6 +191,34 @@ static napi_value GetConfigurableNames(napi_env env, napi_callback_info info) {
162191 return output ;
163192}
164193
194+ static napi_value GetOwnConfigurableNames (napi_env env ,
195+ napi_callback_info info ) {
196+ size_t argc = 1 ;
197+ napi_value args [1 ];
198+ NODE_API_CALL (env , napi_get_cb_info (env , info , & argc , args , NULL , NULL ));
199+
200+ NODE_API_ASSERT (env , argc >= 1 , "Wrong number of arguments" );
201+
202+ napi_valuetype value_type0 ;
203+ NODE_API_CALL (env , napi_typeof (env , args [0 ], & value_type0 ));
204+
205+ NODE_API_ASSERT (
206+ env ,
207+ value_type0 == napi_object ,
208+ "Wrong type of arguments. Expects an object as first argument." );
209+
210+ napi_value output ;
211+ NODE_API_CALL (env ,
212+ napi_get_all_property_names (env ,
213+ args [0 ],
214+ napi_key_own_only ,
215+ napi_key_configurable ,
216+ napi_key_numbers_to_strings ,
217+ & output ));
218+
219+ return output ;
220+ }
221+
165222static napi_value Set (napi_env env , napi_callback_info info ) {
166223 size_t argc = 3 ;
167224 napi_value args [3 ];
@@ -592,8 +649,10 @@ napi_value Init(napi_env env, napi_value exports) {
592649 DECLARE_NODE_API_PROPERTY ("GetNamed" , GetNamed ),
593650 DECLARE_NODE_API_PROPERTY ("GetPropertyNames" , GetPropertyNames ),
594651 DECLARE_NODE_API_PROPERTY ("GetSymbolNames" , GetSymbolNames ),
595- DECLARE_NODE_API_PROPERTY ("GetWritableNames" , GetWritableNames ),
596- DECLARE_NODE_API_PROPERTY ("GetConfigurableNames" , GetConfigurableNames ),
652+ DECLARE_NODE_API_PROPERTY ("GetEnumerableWritableNames" , GetEnumerableWritableNames ),
653+ DECLARE_NODE_API_PROPERTY ("GetOwnWritableNames" , GetOwnWritableNames ),
654+ DECLARE_NODE_API_PROPERTY ("GetEnumerableConfigurableNames" , GetEnumerableConfigurableNames ),
655+ DECLARE_NODE_API_PROPERTY ("GetOwnConfigurableNames" , GetOwnConfigurableNames ),
597656 DECLARE_NODE_API_PROPERTY ("Set" , Set ),
598657 DECLARE_NODE_API_PROPERTY ("SetNamed" , SetNamed ),
599658 DECLARE_NODE_API_PROPERTY ("Has" , Has ),
0 commit comments