/** * Codec -- Effect Schema codec builder. * * Wraps Effect Schema into a typed codec with encode/decode methods. * * @module */ import type { Effect } from 'effect'; import { Schema } from 'effect'; interface CodecShape { readonly schema: Schema.Codec; encode(value: A): Effect.Effect; decode(input: I): Effect.Effect; } function _make(schema: Schema.Codec): CodecShape { return { schema, encode: (value: A) => Schema.encodeEffect(schema)(value), decode: (input: I) => Schema.decodeEffect(schema)(input), }; } /** * Codec — typed encode/decode wrapper over `effect`'s `Schema.Codec`. * Gives a single call site for schema-driven validation so consumers don't * import `Schema.encodeEffect`/`decodeEffect` directly. */ export const Codec = { /** Wrap a `Schema.Codec` in the {@link Codec.Shape} facade. */ make: _make, }; export declare namespace Codec { /** Structural shape of a codec: underlying schema plus `encode` / `decode` Effects. */ export type Shape = CodecShape; }