@@ -1238,6 +1238,21 @@ static void IsUtf8(const FunctionCallbackInfo<Value>& args) {
12381238 args.GetReturnValue ().Set (simdutf::validate_utf8 (abv.data (), abv.length ()));
12391239}
12401240
1241+ static void IsAscii (const FunctionCallbackInfo<Value>& args) {
1242+ Environment* env = Environment::GetCurrent (args);
1243+ CHECK_EQ (args.Length (), 1 );
1244+ CHECK (args[0 ]->IsTypedArray () || args[0 ]->IsArrayBuffer () ||
1245+ args[0 ]->IsSharedArrayBuffer ());
1246+ ArrayBufferViewContents<char > abv (args[0 ]);
1247+
1248+ if (abv.WasDetached ()) {
1249+ return node::THROW_ERR_INVALID_STATE (
1250+ env, " Cannot validate on a detached buffer" );
1251+ }
1252+
1253+ args.GetReturnValue ().Set (simdutf::validate_ascii (abv.data (), abv.length ()));
1254+ }
1255+
12411256void SetBufferPrototype (const FunctionCallbackInfo<Value>& args) {
12421257 Environment* env = Environment::GetCurrent (args);
12431258
@@ -1373,6 +1388,7 @@ void Initialize(Local<Object> target,
13731388 SetMethodNoSideEffect (context, target, " encodeUtf8String" , EncodeUtf8String);
13741389
13751390 SetMethodNoSideEffect (context, target, " isUtf8" , IsUtf8);
1391+ SetMethodNoSideEffect (context, target, " isAscii" , IsAscii);
13761392
13771393 target
13781394 ->Set (context,
@@ -1430,6 +1446,7 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
14301446 registry->Register (EncodeUtf8String);
14311447
14321448 registry->Register (IsUtf8);
1449+ registry->Register (IsAscii);
14331450
14341451 registry->Register (StringSlice<ASCII>);
14351452 registry->Register (StringSlice<BASE64>);
0 commit comments