diff --git a/src/schema/effect/option.ts b/src/schema/effect/option.ts index 5b8c7f1..b86e4d8 100644 --- a/src/schema/effect/option.ts +++ b/src/schema/effect/option.ts @@ -22,8 +22,18 @@ export const option = { export type ZodEffectOption = ReturnType> -export type ZodEffectOptionSome = ReturnType> -export type ZodEffectOptionNone = ReturnType> -export const effectOptionSomeInnerType = (schema: ZodEffectOptionSome): S => +export const effectOptionSomeSchema = (schema: ZodEffectOption): ZodEffectOptionSome => + schema.options[0] + +export const effectOptionNoneSchema = (schema: ZodEffectOption): ZodEffectOptionNone => + schema.options[1] + + +export type ZodEffectOptionSome = ReturnType> + +export const effectOptionSomeInnerSchema = (schema: ZodEffectOptionSome): S => schema._def.schema._def.out.shape.value + + +export type ZodEffectOptionNone = ReturnType> diff --git a/src/schema/jsonified/option.ts b/src/schema/jsonified/option.ts index c26a375..bddc561 100644 --- a/src/schema/jsonified/option.ts +++ b/src/schema/jsonified/option.ts @@ -3,7 +3,7 @@ import { identity } from "lodash-es" import { Jsonifiable, Opaque } from "type-fest" import { z } from "zod" import { effect } from "../effect" -import { ZodEffectOption, ZodEffectOptionNone, ZodEffectOptionSome, effectOptionSomeInnerType } from "../effect/option" +import { ZodEffectOption, ZodEffectOptionNone, ZodEffectOptionSome, effectOptionNoneSchema, effectOptionSomeInnerSchema, effectOptionSomeSchema } from "../effect/option" export type JsonifiedEffectOption = Opaque @@ -17,8 +17,8 @@ export const jsonifyOption = { schema: ZodEffectOption, jsonifySchema: (schema: InnerS) => JsonifiedInnerS = identity, ) => z.union([ - jsonifyOption.some(schema._def.options[0], jsonifySchema), - jsonifyOption.none(schema._def.options[1], jsonifySchema), + jsonifyOption.some(effectOptionSomeSchema(schema), jsonifySchema), + jsonifyOption.none(effectOptionNoneSchema(schema), jsonifySchema), ]), some: < @@ -29,7 +29,7 @@ export const jsonifyOption = { jsonifySchema: (schema: InnerS) => JsonifiedInnerS = identity, ) => schema .transform(v => Option.getOrThrow(v)) - .pipe(jsonifySchema(effectOptionSomeInnerType(schema))), + .pipe(jsonifySchema(effectOptionSomeInnerSchema(schema))), none: < InnerS extends z.ZodTypeAny,