0.1.3 #4
@@ -1,8 +1,14 @@
|
||||
import { dejsonifyOption, jsonifyOption } from "./jsonifiedOption"
|
||||
import { option } from "./option"
|
||||
|
||||
|
||||
export const effect = {
|
||||
option,
|
||||
} as const
|
||||
|
||||
export { effectOptionNoneSchema, effectOptionSomeInnerSchema, effectOptionSomeSchema, type ZodEffectOption, type ZodEffectOptionNone, type ZodEffectOptionSome } from "./option"
|
||||
jsonify: {
|
||||
option: jsonifyOption
|
||||
} as const,
|
||||
dejsonify: {
|
||||
option: dejsonifyOption
|
||||
} as const,
|
||||
} as const
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Option } from "effect"
|
||||
import { identity } from "lodash-es"
|
||||
import { z } from "zod"
|
||||
import { ZodEffectOption, ZodEffectOptionNone, ZodEffectOptionSome, effectOptionNoneSchema, effectOptionSomeInnerSchema, effectOptionSomeSchema } from "../effect"
|
||||
import { ZodEffectOption, ZodEffectOptionNone, ZodEffectOptionSome, effectOptionNoneSchema, effectOptionSomeInnerSchema, effectOptionSomeSchema } from "./option"
|
||||
|
||||
|
||||
export type JsonifiedEffectOptionSomeBrand = "@thilawyn/zod-schema-class/JsonifiedEffectOptionSome"
|
||||
@@ -1,19 +1,16 @@
|
||||
import { dejsonifyBigIntSchema, jsonifyBigIntSchema } from "./bigint"
|
||||
import { dejsonifyDateSchema, jsonifyDateSchema } from "./date"
|
||||
import { dejsonifyDecimalSchema, jsonifyDecimalSchema } from "./decimal"
|
||||
import { dejsonifyOption, jsonifyOption } from "./option"
|
||||
|
||||
|
||||
export const jsonify = {
|
||||
bigint: jsonifyBigIntSchema,
|
||||
date: jsonifyDateSchema,
|
||||
decimal: jsonifyDecimalSchema,
|
||||
option: jsonifyOption,
|
||||
} as const
|
||||
|
||||
export const dejsonify = {
|
||||
bigint: dejsonifyBigIntSchema,
|
||||
date: dejsonifyDateSchema,
|
||||
decimal: dejsonifyDecimalSchema,
|
||||
option: dejsonifyOption,
|
||||
} as const
|
||||
|
||||
47
src/tests.ts
47
src/tests.ts
@@ -1,8 +1,8 @@
|
||||
import { Implements } from "@thilawyn/traitify-ts"
|
||||
import { Option } from "effect"
|
||||
import { z } from "zod"
|
||||
import { JsonifiedZodSchemaClass } from "./JsonifiedZodSchemaClass"
|
||||
import { ZodSchemaClass } from "./ZodSchemaClass"
|
||||
import { dejsonify, jsonify } from "./schema/jsonified"
|
||||
import { s } from "./schema/lib"
|
||||
import { MobXObservableZodSchemaObject } from "./traits/MobXObservableZodSchemaObject"
|
||||
|
||||
@@ -29,42 +29,21 @@ const userInst = User.create({ id: Option.some(1n), name: "User" })
|
||||
const userInstEffect = User.createEffect({ id: Option.some(1n), name: "User" })
|
||||
|
||||
|
||||
const jsonifiedBigIntOption = jsonify.option.option(
|
||||
s.effect.option.option(z.bigint()),
|
||||
s.jsonify.bigint,
|
||||
)
|
||||
const jsonifiedUserExp = JsonifiedZodSchemaClass(User, {
|
||||
jsonifySchema: schema => schema.extend({
|
||||
id: s.effect.jsonify.option.option(schema.shape.id, s.jsonify.bigint)
|
||||
}),
|
||||
|
||||
const jsonifiedBigIntOptionSome = jsonify.option.some(
|
||||
s.effect.option.some(z.bigint()),
|
||||
s.jsonify.bigint,
|
||||
)
|
||||
const dejsonifiedBigIntOptionSome = dejsonify.option.some(
|
||||
s.effect.option.some(z.bigint()),
|
||||
s.dejsonify.bigint,
|
||||
)
|
||||
type T2 = z.output<typeof dejsonifiedBigIntOptionSome>
|
||||
dejsonifySchema: schema => schema.extend({
|
||||
id: s.effect.dejsonify.option.option(schema.shape.id, s.dejsonify.bigint)
|
||||
}),
|
||||
}).build()
|
||||
|
||||
const jsonifiedBigIntOptionNone = jsonify.option.none(
|
||||
s.effect.option.none(z.bigint()),
|
||||
s.jsonify.bigint,
|
||||
)
|
||||
@jsonifiedUserExp.staticImplements
|
||||
class JsonifiedUser extends jsonifiedUserExp.extends implements Implements<typeof jsonifiedUserExp> {}
|
||||
|
||||
|
||||
// const jsonifiedUserExp = JsonifiedZodSchemaClass(User, {
|
||||
// jsonifySchema: s => s.extend({
|
||||
// id: jsonify.bigint(s.shape.id)
|
||||
// }),
|
||||
|
||||
// dejsonifySchema: s => s.extend({
|
||||
// id: dejsonify.bigint(s.shape.id)
|
||||
// }),
|
||||
// }).build()
|
||||
|
||||
// @jsonifiedUserExp.staticImplements
|
||||
// class JsonifiedUser extends jsonifiedUserExp.extends implements Implements<typeof jsonifiedUserExp> {}
|
||||
|
||||
// const jsonifiedUserInst = JsonifiedUser.jsonify(userInst)
|
||||
// console.log(JSON.stringify(jsonifiedUserInst))
|
||||
const jsonifiedUserInst = JsonifiedUser.jsonify(userInst)
|
||||
console.log(JSON.stringify(jsonifiedUserInst))
|
||||
// jsonifiedUserInst.dejsonify()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user