@@ -1891,13 +1891,12 @@ let rec parse = (prevB: b, ~schema, ~input as inputArg: val, ~path) => {
18911891 }
18921892 }
18931893
1894- if isUnsupported .contents {
1895- b -> B .unsupportedTransform (~from = input .contents -> Obj .magic , ~target = schema , ~path )
1896- }
1897-
18981894 switch schema .compiler {
18991895 | Some (compiler ) => input := compiler (b , ~input = input .contents , ~selfSchema = schema , ~path )
1900- | None => ()
1896+ | None =>
1897+ if isUnsupported .contents {
1898+ b -> B .unsupportedTransform (~from = input .contents -> Obj .magic , ~target = schema , ~path )
1899+ }
19011900 }
19021901
19031902 if input .contents .skipTo !== Some (true ) {
@@ -3720,6 +3719,45 @@ let jsonStringWithSpace = (space: int) => {
37203719 mut -> castToPublic
37213720}
37223721
3722+ let uint8Array = shaken ("uint8Array" )
3723+
3724+ let enableUint8Array = () => {
3725+ if uint8Array -> Obj .magic -> Js .Dict .unsafeGet (shakenRef )-> Obj .magic {
3726+ let _ = %raw (` delete uint8Array .as ` )
3727+ uint8Array .tag = Instance
3728+ uint8Array .class = %raw (` Uint8Array ` )
3729+ uint8Array .compiler = Some (
3730+ Builder .make ((b , ~input as inputArg , ~selfSchema , ~path as _ ) => {
3731+ let inputTagFlag = inputArg .tag -> TagFlag .get
3732+ let input = ref (inputArg )
3733+
3734+ if inputTagFlag -> Flag .unsafeHas (TagFlag .string ) {
3735+ input :=
3736+ b -> B .val (
3737+ ` ${b-> B.embed(%raw(` new TextEncoder()` ))}.encode(${input.contents.inline})` ,
3738+ ~schema = uint8Array ,
3739+ )
3740+ }
3741+
3742+ switch selfSchema {
3743+ | {to , parser : ?None } => {
3744+ let toTagFlag = to .tag -> TagFlag .get
3745+ if toTagFlag -> Flag .unsafeHas (TagFlag .string ) {
3746+ input :=
3747+ b -> B .val (
3748+ ` ${b-> B.embed(%raw(` new TextDecoder()` ))}.decode(${input.contents.inline})` ,
3749+ ~schema = string ,
3750+ )
3751+ }
3752+ input .contents
3753+ }
3754+ | _ => input .contents
3755+ }
3756+ }),
3757+ )
3758+ }
3759+ }
3760+
37233761module Int = {
37243762 module Refinement = {
37253763 type kind =
@@ -6297,6 +6335,7 @@ let length = (schema, length, ~message as maybeMessage=?) => {
62976335let unknown : t <unknown > = unknown -> castToPublic
62986336let json : t <Js .Json .t > = json -> castToPublic
62996337let jsonString : t <string > = jsonString -> castToPublic
6338+ let uint8Array : t <Uint8Array .t > = uint8Array -> castToPublic
63006339let bool : t <bool > = bool -> castToPublic
63016340let symbol : t <Js .Types .symbol > = symbol -> castToPublic
63026341let string : t <string > = string -> castToPublic
0 commit comments