@@ -106,6 +106,119 @@ static napi_value GetSymbolNames(napi_env env, napi_callback_info info) {
106106 return output ;
107107}
108108
109+ static napi_value GetEnumerableWritableNames (napi_env env ,
110+ napi_callback_info info ) {
111+ size_t argc = 1 ;
112+ napi_value args [1 ];
113+ NODE_API_CALL (env , napi_get_cb_info (env , info , & argc , args , NULL , NULL ));
114+
115+ NODE_API_ASSERT (env , argc >= 1 , "Wrong number of arguments" );
116+
117+ napi_valuetype value_type0 ;
118+ NODE_API_CALL (env , napi_typeof (env , args [0 ], & value_type0 ));
119+
120+ NODE_API_ASSERT (
121+ env ,
122+ value_type0 == napi_object ,
123+ "Wrong type of arguments. Expects an object as first argument." );
124+
125+ napi_value output ;
126+ NODE_API_CALL (
127+ env ,
128+ napi_get_all_property_names (env ,
129+ args [0 ],
130+ napi_key_include_prototypes ,
131+ napi_key_enumerable | napi_key_writable ,
132+ napi_key_numbers_to_strings ,
133+ & output ));
134+
135+ return output ;
136+ }
137+
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 ) {
167+ size_t argc = 1 ;
168+ napi_value args [1 ];
169+ NODE_API_CALL (env , napi_get_cb_info (env , info , & argc , args , NULL , NULL ));
170+
171+ NODE_API_ASSERT (env , argc >= 1 , "Wrong number of arguments" );
172+
173+ napi_valuetype value_type0 ;
174+ NODE_API_CALL (env , napi_typeof (env , args [0 ], & value_type0 ));
175+
176+ NODE_API_ASSERT (
177+ env ,
178+ value_type0 == napi_object ,
179+ "Wrong type of arguments. Expects an object as first argument." );
180+
181+ napi_value output ;
182+ NODE_API_CALL (
183+ env ,
184+ napi_get_all_property_names (env ,
185+ args [0 ],
186+ napi_key_include_prototypes ,
187+ napi_key_enumerable | napi_key_configurable ,
188+ napi_key_numbers_to_strings ,
189+ & output ));
190+
191+ return output ;
192+ }
193+
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+
109222static napi_value Set (napi_env env , napi_callback_info info ) {
110223 size_t argc = 3 ;
111224 napi_value args [3 ];
@@ -536,6 +649,10 @@ napi_value Init(napi_env env, napi_value exports) {
536649 DECLARE_NODE_API_PROPERTY ("GetNamed" , GetNamed ),
537650 DECLARE_NODE_API_PROPERTY ("GetPropertyNames" , GetPropertyNames ),
538651 DECLARE_NODE_API_PROPERTY ("GetSymbolNames" , GetSymbolNames ),
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 ),
539656 DECLARE_NODE_API_PROPERTY ("Set" , Set ),
540657 DECLARE_NODE_API_PROPERTY ("SetNamed" , SetNamed ),
541658 DECLARE_NODE_API_PROPERTY ("Has" , Has ),
0 commit comments