From 9ddda594ef4012decfbd6bafe6964854a70db079 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 19 Mar 2024 18:25:56 +0100 Subject: [PATCH] Schema work --- src/schema/decimal.ts | 5 +++++ src/schema/jsonified/bigint.ts | 4 ++-- src/schema/jsonified/date.ts | 4 ++-- src/schema/jsonified/decimal.ts | 8 ++------ src/schema/lib.ts | 1 + 5 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 src/schema/decimal.ts diff --git a/src/schema/decimal.ts b/src/schema/decimal.ts new file mode 100644 index 0000000..cb16e42 --- /dev/null +++ b/src/schema/decimal.ts @@ -0,0 +1,5 @@ +import Decimal from "decimal.js" +import { z } from "zod" + + +export const decimal = z.custom(v => Decimal.isDecimal(v)) diff --git a/src/schema/jsonified/bigint.ts b/src/schema/jsonified/bigint.ts index 4627b45..6266dd5 100644 --- a/src/schema/jsonified/bigint.ts +++ b/src/schema/jsonified/bigint.ts @@ -6,11 +6,11 @@ import { z } from "zod" export type JsonifiedBigInt = Opaque -export function jsonifyBigIntSchema(schema: S) { +export function jsonifyBigIntSchema>(schema: S) { return schema.transform(v => v.toString() as JsonifiedBigInt) } -export function dejsonifyBigIntSchema(schema: S) { +export function dejsonifyBigIntSchema>(schema: S) { return z .custom(identity) .pipe( diff --git a/src/schema/jsonified/date.ts b/src/schema/jsonified/date.ts index 1524456..ff4d0a1 100644 --- a/src/schema/jsonified/date.ts +++ b/src/schema/jsonified/date.ts @@ -6,11 +6,11 @@ import { z } from "zod" export type JsonifiedDate = Opaque -export function jsonifyDateSchema(schema: S) { +export function jsonifyDateSchema>(schema: S) { return schema.transform(v => v.toString() as JsonifiedDate) } -export function dejsonifyDateSchema(schema: S) { +export function dejsonifyDateSchema>(schema: S) { return z .custom(identity) .pipe( diff --git a/src/schema/jsonified/decimal.ts b/src/schema/jsonified/decimal.ts index 2aacd7a..eb500a6 100644 --- a/src/schema/jsonified/decimal.ts +++ b/src/schema/jsonified/decimal.ts @@ -7,15 +7,11 @@ import { z } from "zod" export type JsonifiedDecimal = Opaque -export function jsonifyDecimalSchema< - S extends z.ZodType ->(schema: S) { +export function jsonifyDecimalSchema>(schema: S) { return schema.transform(v => v.toJSON() as JsonifiedDecimal) } -export function dejsonifyDecimalSchema< - S extends z.ZodType ->(schema: S) { +export function dejsonifyDecimalSchema>(schema: S) { return z .custom(identity) .pipe( diff --git a/src/schema/lib.ts b/src/schema/lib.ts index b7c00ae..0ab38cb 100644 --- a/src/schema/lib.ts +++ b/src/schema/lib.ts @@ -1,2 +1,3 @@ +export * from "./decimal" export * from "./effect" export * from "./jsonified"