From 8c525f09684bffdf82084260208ed7ec2becb4aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 21 Mar 2024 14:58:51 +0100 Subject: [PATCH] Schema work --- src/schema/jsonified/index.ts | 3 ++- src/schema/lib.ts | 14 +++++++++++--- src/tests.ts | 27 ++++++++++++++------------- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/schema/jsonified/index.ts b/src/schema/jsonified/index.ts index 983b523..a70a3b9 100644 --- a/src/schema/jsonified/index.ts +++ b/src/schema/jsonified/index.ts @@ -1,7 +1,7 @@ import { dejsonifyBigIntSchema, jsonifyBigIntSchema } from "./bigint" import { dejsonifyDateSchema, jsonifyDateSchema } from "./date" import { dejsonifyDecimalSchema, jsonifyDecimalSchema } from "./decimal" -import { jsonifyOption } from "./option" +import { dejsonifyOption, jsonifyOption } from "./option" export const jsonify = { @@ -15,4 +15,5 @@ export const dejsonify = { bigint: dejsonifyBigIntSchema, date: dejsonifyDateSchema, decimal: dejsonifyDecimalSchema, + option: dejsonifyOption, } as const diff --git a/src/schema/lib.ts b/src/schema/lib.ts index 0ab38cb..868d177 100644 --- a/src/schema/lib.ts +++ b/src/schema/lib.ts @@ -1,3 +1,11 @@ -export * from "./decimal" -export * from "./effect" -export * from "./jsonified" +import { decimal } from "./decimal" +import { effect } from "./effect" +import { dejsonify, jsonify } from "./jsonified" + + +export const s = { + decimal, + effect, + jsonify, + dejsonify, +} as const diff --git a/src/tests.ts b/src/tests.ts index d3c3023..95bded1 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -2,16 +2,15 @@ import { Implements } from "@thilawyn/traitify-ts" import { Option } from "effect" import { z } from "zod" import { ZodSchemaClass } from "./ZodSchemaClass" -import { jsonify } from "./schema/jsonified" -import { jsonifyBigIntSchema } from "./schema/jsonified/bigint" -import { effect } from "./schema/lib" +import { dejsonify, jsonify } from "./schema/jsonified" +import { s } from "./schema/lib" import { MobXObservableZodSchemaObject } from "./traits/MobXObservableZodSchemaObject" const userExp = ZodSchemaClass( z.object({ /** User ID */ - id: effect.option.option(z.bigint()).default(Option.none()), + id: s.effect.option.option(z.bigint()).default(Option.none()), /** Username */ name: z.string(), @@ -31,22 +30,24 @@ const userInstEffect = User.createEffect({ id: Option.some(1n), name: "User" }) const jsonifiedBigIntOption = jsonify.option.option( - effect.option.option(z.bigint()), - jsonifyBigIntSchema, + s.effect.option.option(z.bigint()), + s.jsonify.bigint, ) -type T1 = z.output const jsonifiedBigIntOptionSome = jsonify.option.some( - effect.option.some(z.bigint()), - jsonifyBigIntSchema, + s.effect.option.some(z.bigint()), + s.jsonify.bigint, ) -type T2 = z.output +const dejsonifiedBigIntOptionSome = dejsonify.option.some( + s.effect.option.some(z.bigint()), + s.dejsonify.bigint, +) +type T2 = z.output const jsonifiedBigIntOptionNone = jsonify.option.none( - effect.option.none(z.bigint()), - jsonifyBigIntSchema, + s.effect.option.none(z.bigint()), + s.jsonify.bigint, ) -type T3 = z.output // const jsonifiedUserExp = JsonifiedZodSchemaClass(User, {