0.1.3 #4

Merged
Thilawyn merged 74 commits from next into master 2024-03-24 22:24:25 +01:00
7 changed files with 23 additions and 2 deletions
Showing only changes of commit 1fd74bb851 - Show all commits

View File

@@ -0,0 +1,21 @@
import { Option } from "effect"
import { identity } from "lodash-es"
import { z } from "zod"
export const jsonifyOption = {
option: <S extends z.ZodSchema>(schema: S) =>
z.union([option.some(schema), option.none(schema)]),
some: <S extends z.ZodSchema>(schema: S) => z
.custom<Option.Some<z.output<S>>>(v => Option.isOption(v) && Option.isSome(v), "Not an Option")
.pipe(z.object({ value: schema }).passthrough())
.transform<Option.Some<z.output<S>>>(identity),
none: <S extends z.ZodSchema | unknown = unknown>(_schema?: S) =>
z.custom<Option.None<
S extends z.ZodSchema
? z.output<S>
: unknown
>>(v => Option.isOption(v) && Option.isNone(v), "Not an Option"),
} as const

View File

@@ -1,2 +1,2 @@
export * from "./effect" export * from "./effect"
export * from "./jsonifiable" export * from "./jsonified"

View File

@@ -3,7 +3,7 @@ import { Option } from "effect"
import { z } from "zod" import { z } from "zod"
import { JsonifiedZodSchemaClass } from "./JsonifiedZodSchemaClass" import { JsonifiedZodSchemaClass } from "./JsonifiedZodSchemaClass"
import { ZodSchemaClass } from "./ZodSchemaClass" import { ZodSchemaClass } from "./ZodSchemaClass"
import { dejsonify, jsonify } from "./schema/jsonifiable" import { dejsonify, jsonify } from "./schema/jsonified"
import { effect } from "./schema/lib" import { effect } from "./schema/lib"
import { MobXObservableZodSchemaObject } from "./traits/MobXObservableZodSchemaObject" import { MobXObservableZodSchemaObject } from "./traits/MobXObservableZodSchemaObject"