@@ -96,26 +96,29 @@ export type JSON =
9696 | JSON [ ] ;
9797
9898export type Schema < Output , Input = unknown > = {
99- with < Transformed > (
100- transform : (
99+ with < TargetOutput = unknown , TargetInput = unknown > (
100+ to : (
101101 schema : Schema < unknown , unknown > ,
102- parser :
103- | ( ( value : unknown , s : EffectCtx < unknown , unknown > ) => unknown )
104- | undefined ,
105- serializer ?: ( value : unknown , s : EffectCtx < unknown , unknown > ) => Input
102+ target : Schema < unknown , unknown > ,
103+ decode ?: ( ( value : unknown ) => unknown ) | undefined ,
104+ encode ?: ( value : unknown ) => Output
106105 ) => Schema < unknown , unknown > ,
107- parser :
108- | ( ( value : Output , s : EffectCtx < unknown , unknown > ) => Transformed )
109- | undefined ,
110- serializer ?: ( value : Transformed , s : EffectCtx < unknown , unknown > ) => Input
111- ) : Schema < Transformed , Input > ;
112- with (
106+ target : Schema < TargetOutput , TargetInput > ,
107+ decode ?: ( ( value : Output ) => TargetInput ) | undefined ,
108+ encode ?: ( value : TargetInput ) => Output
109+ ) : Schema < TargetOutput , Input > ;
110+ // I don't know how, but it makes both S.refine and S.shape work
111+ with < Shape > (
113112 refine : (
114113 schema : Schema < unknown , unknown > ,
115- refiner : ( value : unknown , s : EffectCtx < unknown , unknown > ) => Promise < void >
114+ refiner :
115+ | ( ( value : unknown , s : EffectCtx < unknown , unknown > ) => unknown )
116+ | undefined
116117 ) => Schema < unknown , unknown > ,
117- refiner : ( value : Output , s : EffectCtx < Output , Input > ) => Promise < void >
118- ) : Schema < Output , Input > ;
118+ refiner :
119+ | ( ( value : Output , s : EffectCtx < unknown , unknown > ) => Shape )
120+ | undefined
121+ ) : Schema < Shape , Input > ;
119122 // with(message: string): t<Output, Input>; TODO: implement
120123 with < O , I > ( fn : ( schema : Schema < Output , Input > ) => Schema < O , I > ) : Schema < O , I > ;
121124 with < O , I , A1 extends string > (
@@ -619,14 +622,6 @@ export function refine<Output, Input>(
619622 refiner : ( value : Output , s : EffectCtx < Output , Input > ) => void
620623) : Schema < Output , Input > ;
621624
622- export function transform < Transformed , Output = unknown , Input = unknown > (
623- schema : Schema < Output , Input > ,
624- parser :
625- | ( ( value : Output , s : EffectCtx < unknown , unknown > ) => Transformed )
626- | undefined ,
627- serializer ?: ( value : Transformed , s : EffectCtx < unknown , unknown > ) => Output
628- ) : Schema < Transformed , Input > ;
629-
630625export const min : < Output extends string | number | unknown [ ] , Input > (
631626 schema : Schema < Output , Input > ,
632627 length : number ,
@@ -726,20 +721,22 @@ export function compile<
726721 ? Promise < CompileOutputMappings < Input , Output > [ OutputOption ] >
727722 : never ;
728723
729- export function shape < Output , Input , Shape > (
724+ export function shape < Shape = unknown , Output = unknown , Input = unknown > (
730725 schema : Schema < Output , Input > ,
731726 shaper : ( value : Output ) => Shape
732727) : Schema < Shape , Input > ;
733728
734729export function to <
735- FromInput ,
736- ToOutput ,
737- FromOutput = FromInput ,
738- ToInput = ToOutput
730+ Output = unknown ,
731+ Input = unknown ,
732+ TargetInput = unknown ,
733+ TargetOutput = unknown
739734> (
740- from : Schema < FromOutput , FromInput > ,
741- to : Schema < ToOutput , ToInput >
742- ) : Schema < ToOutput , FromInput > ;
735+ schema : Schema < Output , Input > ,
736+ target : Schema < TargetOutput , TargetInput > ,
737+ decode ?: ( ( value : Output ) => TargetInput ) | undefined ,
738+ encode ?: ( value : TargetOutput ) => Output
739+ ) : Schema < TargetOutput , Input > ;
743740
744741export function toJSONSchema < Output , Input > (
745742 schema : Schema < Output , Input >
0 commit comments