From 94bb18721946846c9bfa17143ed920c48db1c623 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Fri, 22 Mar 2024 14:45:54 +0100 Subject: [PATCH] Finished schema refactoring --- src/schema/{jsonified => }/bigint.ts | 6 +++--- src/schema/{jsonified => }/date.ts | 6 +++--- src/schema/jsonified/index.ts | 13 ------------- src/schema/lib.ts | 7 ++++--- src/tests.ts | 4 ++-- 5 files changed, 12 insertions(+), 24 deletions(-) rename src/schema/{jsonified => }/bigint.ts (54%) rename src/schema/{jsonified => }/date.ts (54%) delete mode 100644 src/schema/jsonified/index.ts diff --git a/src/schema/jsonified/bigint.ts b/src/schema/bigint.ts similarity index 54% rename from src/schema/jsonified/bigint.ts rename to src/schema/bigint.ts index 635e234..079f598 100644 --- a/src/schema/jsonified/bigint.ts +++ b/src/schema/bigint.ts @@ -1,16 +1,16 @@ import { z } from "zod" -export type JsonifiedBigIntBrand = "@thilawyn/zod-schema-class/JsonifiedBigInt" +type JsonifiedBigIntBrand = "@thilawyn/zod-schema-class/JsonifiedBigInt" -export function jsonifyBigIntSchema>(schema: S) { +export function jsonify>(schema: S) { return schema .transform(v => v.toString()) .brand() } -export function dejsonifyBigIntSchema>(schema: S) { +export function dejsonify>(schema: S) { return z .custom>() .pipe(z.string()) diff --git a/src/schema/jsonified/date.ts b/src/schema/date.ts similarity index 54% rename from src/schema/jsonified/date.ts rename to src/schema/date.ts index 8af03cd..287121e 100644 --- a/src/schema/jsonified/date.ts +++ b/src/schema/date.ts @@ -1,16 +1,16 @@ import { z } from "zod" -export type JsonifiedDateBrand = "@thilawyn/zod-schema-class/JsonifiedDate" +type JsonifiedDateBrand = "@thilawyn/zod-schema-class/JsonifiedDate" -export function jsonifyDateSchema>(schema: S) { +export function jsonify>(schema: S) { return schema .transform(v => v.toString()) .brand() } -export function dejsonifyDateSchema>(schema: S) { +export function dejsonify>(schema: S) { return z .custom>() .pipe(z.string()) diff --git a/src/schema/jsonified/index.ts b/src/schema/jsonified/index.ts deleted file mode 100644 index d307697..0000000 --- a/src/schema/jsonified/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { dejsonifyBigIntSchema, jsonifyBigIntSchema } from "./bigint" -import { dejsonifyDateSchema, jsonifyDateSchema } from "./date" - - -export const jsonify = { - bigint: jsonifyBigIntSchema, - date: jsonifyDateSchema, -} as const - -export const dejsonify = { - bigint: dejsonifyBigIntSchema, - date: dejsonifyDateSchema, -} as const diff --git a/src/schema/lib.ts b/src/schema/lib.ts index 1323289..1208dd9 100644 --- a/src/schema/lib.ts +++ b/src/schema/lib.ts @@ -1,11 +1,12 @@ +import * as bigint from "./bigint" +import * as date from "./date" import { decimal } from "./decimal" import * as effect from "./effect" -import { dejsonify, jsonify } from "./jsonified" export const s = { + bigint, + date, decimal, effect, - jsonify, - dejsonify, } as const diff --git a/src/tests.ts b/src/tests.ts index 8feea0f..57a5ddc 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -31,11 +31,11 @@ const userInstEffect = User.createEffect({ id: Option.some(1n), name: "User" }) const jsonifiedUserExp = JsonifiedZodSchemaClass(User, { jsonifySchema: schema => schema.extend({ - id: s.effect.option.jsonify(schema.shape.id, s.jsonify.bigint) + id: s.effect.option.jsonify(schema.shape.id, s.bigint.jsonify) }), dejsonifySchema: schema => schema.extend({ - id: s.effect.option.dejsonify(schema.shape.id, s.dejsonify.bigint) + id: s.effect.option.dejsonify(schema.shape.id, s.bigint.dejsonify) }), }).build()