0.1.3 #4
@@ -22,8 +22,18 @@ export const option = {
|
|||||||
|
|
||||||
|
|
||||||
export type ZodEffectOption<S extends z.ZodTypeAny> = ReturnType<typeof option.option<S>>
|
export type ZodEffectOption<S extends z.ZodTypeAny> = ReturnType<typeof option.option<S>>
|
||||||
export type ZodEffectOptionSome<S extends z.ZodTypeAny> = ReturnType<typeof option.some<S>>
|
|
||||||
export type ZodEffectOptionNone<S extends z.ZodTypeAny> = ReturnType<typeof option.none<S>>
|
|
||||||
|
|
||||||
export const effectOptionSomeInnerType = <S extends z.ZodTypeAny>(schema: ZodEffectOptionSome<S>): S =>
|
export const effectOptionSomeSchema = <S extends z.ZodTypeAny>(schema: ZodEffectOption<S>): ZodEffectOptionSome<S> =>
|
||||||
|
schema.options[0]
|
||||||
|
|
||||||
|
export const effectOptionNoneSchema = <S extends z.ZodTypeAny>(schema: ZodEffectOption<S>): ZodEffectOptionNone<S> =>
|
||||||
|
schema.options[1]
|
||||||
|
|
||||||
|
|
||||||
|
export type ZodEffectOptionSome<S extends z.ZodTypeAny> = ReturnType<typeof option.some<S>>
|
||||||
|
|
||||||
|
export const effectOptionSomeInnerSchema = <S extends z.ZodTypeAny>(schema: ZodEffectOptionSome<S>): S =>
|
||||||
schema._def.schema._def.out.shape.value
|
schema._def.schema._def.out.shape.value
|
||||||
|
|
||||||
|
|
||||||
|
export type ZodEffectOptionNone<S extends z.ZodTypeAny> = ReturnType<typeof option.none<S>>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { identity } from "lodash-es"
|
|||||||
import { Jsonifiable, Opaque } from "type-fest"
|
import { Jsonifiable, Opaque } from "type-fest"
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
import { effect } from "../effect"
|
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<T extends Jsonifiable> = Opaque<T | null, "@thilawyn/zod-schema-class/JsonifiedEffectOption">
|
export type JsonifiedEffectOption<T extends Jsonifiable> = Opaque<T | null, "@thilawyn/zod-schema-class/JsonifiedEffectOption">
|
||||||
@@ -17,8 +17,8 @@ export const jsonifyOption = {
|
|||||||
schema: ZodEffectOption<InnerS>,
|
schema: ZodEffectOption<InnerS>,
|
||||||
jsonifySchema: (schema: InnerS) => JsonifiedInnerS = identity,
|
jsonifySchema: (schema: InnerS) => JsonifiedInnerS = identity,
|
||||||
) => z.union([
|
) => z.union([
|
||||||
jsonifyOption.some(schema._def.options[0], jsonifySchema),
|
jsonifyOption.some(effectOptionSomeSchema(schema), jsonifySchema),
|
||||||
jsonifyOption.none(schema._def.options[1], jsonifySchema),
|
jsonifyOption.none(effectOptionNoneSchema(schema), jsonifySchema),
|
||||||
]),
|
]),
|
||||||
|
|
||||||
some: <
|
some: <
|
||||||
@@ -29,7 +29,7 @@ export const jsonifyOption = {
|
|||||||
jsonifySchema: (schema: InnerS) => JsonifiedInnerS = identity,
|
jsonifySchema: (schema: InnerS) => JsonifiedInnerS = identity,
|
||||||
) => schema
|
) => schema
|
||||||
.transform(v => Option.getOrThrow(v))
|
.transform(v => Option.getOrThrow(v))
|
||||||
.pipe(jsonifySchema(effectOptionSomeInnerType(schema))),
|
.pipe(jsonifySchema(effectOptionSomeInnerSchema(schema))),
|
||||||
|
|
||||||
none: <
|
none: <
|
||||||
InnerS extends z.ZodTypeAny,
|
InnerS extends z.ZodTypeAny,
|
||||||
|
|||||||
Reference in New Issue
Block a user