import { ParseResult, Schema as S } from '@effect/schema'
const A = S.Struct({
a: S.String,
})
const B = S.Struct({
b: S.String,
})
const MySchema = S.transformOrFail(
A,
B,
{
decode: ({ a }) => ParseResult.succeed({ b: a }),
encode: ({ b }) => ParseResult.succeed({ a: b }),
},
)
const FullSchema = S
.Struct({
c: S.String,
})
.pipe(S.extend(MySchema))
// try it
console.log(S.decodeSync(FullSchema)({ c: 'c', a: 'a' }))
console.log(S.encodeSync(FullSchema)({ c: 'c', b: 'b' }))
import { ParseResult, Schema as S } from '@effect/schema'
const A = S.Struct({
a: S.String,
})
const B = S.Struct({
b: S.String,
})
const MySchema = S.transformOrFail(
A,
B,
{
decode: ({ a }) => ParseResult.succeed({ b: a }),
encode: ({ b }) => ParseResult.succeed({ a: b }),
},
)
const FullSchema = S
.Struct({
c: S.String,
})
.pipe(S.extend(MySchema))
// try it
console.log(S.decodeSync(FullSchema)({ c: 'c', a: 'a' }))
console.log(S.encodeSync(FullSchema)({ c: 'c', b: 'b' }))