@@ -294,6 +294,28 @@ void BindingData::Update(const FunctionCallbackInfo<Value>& args) {
294294 .ToLocalChecked ());
295295}
296296
297+ void BindingData::ToASCII (const v8::FunctionCallbackInfo<v8::Value>& args) {
298+ Environment* env = Environment::GetCurrent (args);
299+ CHECK_GE (args.Length (), 1 );
300+ CHECK (args[0 ]->IsString ());
301+
302+ Utf8Value input (env->isolate (), args[0 ]);
303+ auto out = ada::idna::to_ascii (input.ToStringView ());
304+ args.GetReturnValue ().Set (
305+ String::NewFromUtf8 (env->isolate (), out.c_str ()).ToLocalChecked ());
306+ }
307+
308+ void BindingData::ToUnicode (const v8::FunctionCallbackInfo<v8::Value>& args) {
309+ Environment* env = Environment::GetCurrent (args);
310+ CHECK_GE (args.Length (), 1 );
311+ CHECK (args[0 ]->IsString ());
312+
313+ Utf8Value input (env->isolate (), args[0 ]);
314+ auto out = ada::idna::to_unicode (input.ToStringView ());
315+ args.GetReturnValue ().Set (
316+ String::NewFromUtf8 (env->isolate (), out.c_str ()).ToLocalChecked ());
317+ }
318+
297319void BindingData::UpdateComponents (const ada::url_components& components,
298320 const ada::scheme::type type) {
299321 url_components_buffer_[0 ] = components.protocol_end ;
@@ -318,6 +340,8 @@ void BindingData::Initialize(Local<Object> target,
318340 realm->AddBindingData <BindingData>(context, target);
319341 if (binding_data == nullptr ) return ;
320342
343+ SetMethodNoSideEffect (context, target, " toASCII" , ToASCII);
344+ SetMethodNoSideEffect (context, target, " toUnicode" , ToUnicode);
321345 SetMethodNoSideEffect (context, target, " domainToASCII" , DomainToASCII);
322346 SetMethodNoSideEffect (context, target, " domainToUnicode" , DomainToUnicode);
323347 SetMethodNoSideEffect (context, target, " canParse" , CanParse);
@@ -328,6 +352,8 @@ void BindingData::Initialize(Local<Object> target,
328352
329353void BindingData::RegisterExternalReferences (
330354 ExternalReferenceRegistry* registry) {
355+ registry->Register (ToASCII);
356+ registry->Register (ToUnicode);
331357 registry->Register (DomainToASCII);
332358 registry->Register (DomainToUnicode);
333359 registry->Register (CanParse);
0 commit comments