@@ -106,6 +106,119 @@ static napi_value GetSymbolNames(napi_env env, napi_callback_info info) {
106
106
return output ;
107
107
}
108
108
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
+
109
222
static napi_value Set (napi_env env , napi_callback_info info ) {
110
223
size_t argc = 3 ;
111
224
napi_value args [3 ];
@@ -536,6 +649,10 @@ napi_value Init(napi_env env, napi_value exports) {
536
649
DECLARE_NODE_API_PROPERTY ("GetNamed" , GetNamed ),
537
650
DECLARE_NODE_API_PROPERTY ("GetPropertyNames" , GetPropertyNames ),
538
651
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 ),
539
656
DECLARE_NODE_API_PROPERTY ("Set" , Set ),
540
657
DECLARE_NODE_API_PROPERTY ("SetNamed" , SetNamed ),
541
658
DECLARE_NODE_API_PROPERTY ("Has" , Has ),
0 commit comments