@@ -249,9 +249,6 @@ type rec t<'value> = {
249249 mutable definerCtx ?: char ,
250250 @as ("m" )
251251 metadataMap : dict <unknown >,
252- @as ("a" )
253- mutable // FIXME: Remove
254- parseAsyncOrRaise : unknown => promise <unknown >,
255252 @as ("parseOrThrow" )
256253 mutable parseOrRaise : unknown => unknown ,
257254 @as ("parse" )
@@ -1292,59 +1289,67 @@ let useSyncOperation = (schema, operation, input) => {
12921289 }
12931290}
12941291
1295- @inline
1296- let parseAnyOrRaiseWith = (any , schema ) => {
1297- schema .parseOrRaise (any -> castAnyToUnknown )-> castUnknownToAny
1298- }
1292+ let asyncPrepareOk = value => Ok (value -> castUnknownToAny )
12991293
1300- let assertOrRaiseWith = ( any , schema ) => {
1301- schema . assertOrRaise ( any -> castAnyToUnknown )
1294+ let asyncPrepareError = jsExn => {
1295+ jsExn -> ( Obj . magic : Js . Exn . t => exn ) -> InternalError . getOrRethrow -> Error
13021296}
13031297
1304- let parseAnyWith = (any , schema ) => {
1298+ @inline
1299+ let useAsyncOperation = (schema , operation , input ) => {
13051300 try {
1306- parseAnyOrRaiseWith (any -> castAnyToUnknown , schema )-> castUnknownToAny -> Ok
1301+ schema
1302+ -> callMemoizedOperation (operation -> Operation .addFlag (Operation .Flag .async ), input )
1303+ -> Stdlib .Promise .thenResolveWithCatch (asyncPrepareOk , asyncPrepareError )
13071304 } catch {
1308- | exn => exn -> InternalError .getOrRethrow -> Error
1305+ | exn => exn -> InternalError .getOrRethrow -> Error -> Stdlib . Promise . resolve
13091306 }
13101307}
13111308
1312- let parseWith : (Js .Json .t , t <'value >) => result <'value , error > = parseAnyWith
1313-
1314- let parseOrRaiseWith : (Js .Json .t , t <'value >) => 'value = parseAnyOrRaiseWith
1315-
1316- let convertWith = (any , schema ) => {
1309+ let convertAnyWith = (any , schema ) => {
13171310 schema -> useSyncOperation (Operation .make (), any )
13181311}
13191312
1320- let convertToJsonWith = (any , schema ) => {
1313+ let convertAnyToJsonWith = (any , schema ) => {
13211314 schema -> useSyncOperation (Operation .make ()-> Operation .addFlag (Operation .Flag .jsonableOutput ), any )
13221315}
13231316
1324- let convertToJsonStringWith = (any , schema ) => {
1317+ let convertAnyToJsonStringWith = (any , schema ) => {
13251318 schema -> useSyncOperation (
13261319 Operation .make ()-> Operation .addFlag (Operation .Flag .jsonStringOutput ),
13271320 any ,
13281321 )
13291322}
13301323
1331- let asyncPrepareOk = value => Ok (value -> castUnknownToAny )
1324+ let convertAnyAsyncWith = (any , schema ) => {
1325+ schema -> useAsyncOperation (Operation .make (), any )
1326+ }
13321327
1333- let asyncPrepareError = jsExn => {
1334- jsExn -> (Obj .magic : Js .Exn .t => exn )-> InternalError .getOrRethrow -> Error
1328+ @inline
1329+ let parseAnyOrRaiseWith = (any , schema ) => {
1330+ schema .parseOrRaise (any -> castAnyToUnknown )-> castUnknownToAny
13351331}
13361332
1337- let parseAnyAsyncWith = (any , schema ) => {
1333+ let assertOrRaiseWith = (any , schema ) => {
1334+ schema .assertOrRaise (any -> castAnyToUnknown )
1335+ }
1336+
1337+ let parseAnyWith = (any , schema ) => {
13381338 try {
1339- schema .parseAsyncOrRaise (any -> castAnyToUnknown )-> Stdlib .Promise .thenResolveWithCatch (
1340- asyncPrepareOk ,
1341- asyncPrepareError ,
1342- )
1339+ parseAnyOrRaiseWith (any -> castAnyToUnknown , schema )-> castUnknownToAny -> Ok
13431340 } catch {
1344- | exn => exn -> InternalError .getOrRethrow -> Error -> Stdlib . Promise . resolve
1341+ | exn => exn -> InternalError .getOrRethrow -> Error
13451342 }
13461343}
13471344
1345+ let parseWith : (Js .Json .t , t <'value >) => result <'value , error > = parseAnyWith
1346+
1347+ let parseOrRaiseWith : (Js .Json .t , t <'value >) => 'value = parseAnyOrRaiseWith
1348+
1349+ let parseAnyAsyncWith = (any , schema ) => {
1350+ schema -> useAsyncOperation (Operation .make ()-> Operation .addFlag (Operation .Flag .typeValidation ), any )
1351+ }
1352+
13481353let parseAsyncWith = parseAnyAsyncWith
13491354
13501355let serializeOrRaiseWith = (value , schema ) => {
@@ -1416,18 +1421,6 @@ let initialParseOrRaise = unknown => {
14161421 operation (unknown )
14171422}
14181423
1419- let initialParseAsyncOrRaise = unknown => {
1420- let schema = %raw (` this ` )
1421- let operation = schema .builder -> Builder .compile (
1422- ~schema ,
1423- ~operation = Operation .make ()
1424- -> Operation .addFlag (Operation .Flag .typeValidation )
1425- -> Operation .addFlag (Operation .Flag .async ),
1426- )
1427- schema .parseAsyncOrRaise = operation
1428- operation (unknown )
1429- }
1430-
14311424let initialAssertOrRaise = unknown => {
14321425 let schema = %raw (` this ` )
14331426 let operation = schema .builder -> Builder .compile (
@@ -1501,7 +1494,6 @@ let makeReverseSchema = (~name, ~tagged, ~metadataMap, ~builder, ~maybeTypeFilte
15011494 name ,
15021495 metadataMap ,
15031496 parseOrRaise : initialParseOrRaise ,
1504- parseAsyncOrRaise : initialParseAsyncOrRaise ,
15051497 serializeToUnknownOrRaise : initialSerializeToUnknownOrRaise ,
15061498 serializeOrRaise : initialSerializeOrRaise ,
15071499 assertOrRaise : initialAssertOrRaise ,
@@ -1519,7 +1511,6 @@ let makeSchema = (~name, ~tagged, ~metadataMap, ~builder, ~maybeTypeFilter, ~rev
15191511 name ,
15201512 metadataMap ,
15211513 parseOrRaise : initialParseOrRaise ,
1522- parseAsyncOrRaise : initialParseAsyncOrRaise ,
15231514 serializeToUnknownOrRaise : initialSerializeToUnknownOrRaise ,
15241515 serializeOrRaise : initialSerializeOrRaise ,
15251516 assertOrRaise : initialAssertOrRaise ,
@@ -2757,7 +2748,6 @@ module Object = {
27572748 definer : definer -> Obj .magic ,
27582749 definerCtx : ctx -> Obj .magic ,
27592750 parseOrRaise : initialParseOrRaise ,
2760- parseAsyncOrRaise : initialParseAsyncOrRaise ,
27612751 serializeToUnknownOrRaise : initialSerializeToUnknownOrRaise ,
27622752 serializeOrRaise : initialSerializeOrRaise ,
27632753 assertOrRaise : initialAssertOrRaise ,
@@ -2786,7 +2776,6 @@ module Object = {
27862776 definer : ?schema .definer ,
27872777 definerCtx : ?schema .definerCtx ,
27882778 parseOrRaise : initialParseOrRaise ,
2789- parseAsyncOrRaise : initialParseAsyncOrRaise ,
27902779 serializeToUnknownOrRaise : initialSerializeToUnknownOrRaise ,
27912780 serializeOrRaise : initialSerializeOrRaise ,
27922781 assertOrRaise : initialAssertOrRaise ,
@@ -4253,8 +4242,7 @@ let setGlobalConfig = override => {
42534242 }
42544243 if prevDisableNanNumberCheck != globalConfig .disableNanNumberCheck {
42554244 float .assertOrRaise = initialAssertOrRaise
4256- float .parseOrRaise = initialParseOrRaise
4257- float .parseAsyncOrRaise = initialParseAsyncOrRaise
4245+ float .parseOrRaise = initialParseOrRaise // FIXME: Reset all memoid operations by flag
42584246 }
42594247}
42604248
0 commit comments