Co-authored-by: Julien Valverdé <julien.valverde@mailo.com> Reviewed-on: https://git.jvalver.de/Thilawyn/thilalib/pulls/5
40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
import { Schema as S } from "@effect/schema"
|
|
import type * as TF from "type-fest"
|
|
|
|
|
|
// export function Jsonifiable<
|
|
// A, I, R,
|
|
// JsonifiableA extends I, JsonifiableI extends TF.Jsonifiable, JsonifiableR,
|
|
// >(
|
|
// schema: S.Schema<A, I, R>,
|
|
// jsonifiable: S.Schema<JsonifiableA, JsonifiableI, JsonifiableR>,
|
|
// ) {
|
|
// return jsonifiable.pipe(S.compose(schema))
|
|
// }
|
|
|
|
// export function Jsonifiable<A, I, R>(
|
|
// schema: S.Schema<A, I, R>
|
|
// ) {
|
|
// return <
|
|
// JsonifiableA extends I,
|
|
// JsonifiableI extends TF.Jsonifiable,
|
|
// JsonifiableR,
|
|
// >(
|
|
// jsonifiable: S.Schema<JsonifiableA, JsonifiableI, JsonifiableR>
|
|
// ) =>
|
|
// jsonifiable.pipe(S.compose(schema))
|
|
// }
|
|
|
|
export function Jsonifiable<
|
|
JsonifiableA,
|
|
JsonifiableI extends TF.Jsonifiable,
|
|
JsonifiableR,
|
|
>(
|
|
jsonifiable: S.Schema<JsonifiableA, JsonifiableI, JsonifiableR>
|
|
) {
|
|
return <A, R>(
|
|
schema: S.Schema<A, JsonifiableA, R>
|
|
) =>
|
|
jsonifiable.pipe(S.compose(schema))
|
|
}
|