Schema overview
Added in v1.0.0
Table of contents
- BigDecimal constructors
- BigDecimal filters
- BigDecimal transformations
- Cause transformations
- Cause utils
- Chunk transformations
- Data transformations
- Date constructors
- Date filters
- Date transformations
- Duration constructors
- Duration filters
- Duration transformations
- Either transformations
- Either utils
- Encoding transformations
- Exit transformations
- Exit utils
- FiberId
- FiberId constructors
- FiberId transformations
- HashMap transformations
- HashSet transformations
- List transformations
- Map
- Map transformations
- Option transformations
- Option utils
- PropertySignature
- ReadonlyArray filters
- ReadonlyArray transformations
- ReadonlyMap
- ReadonlyMap transformations
- ReadonlySet
- ReadonlySet transformations
- Secret constructors
- Secret transformations
- Set
- Set transformations
- SortedSet transformations
- Uint8Array constructors
- Uint8Array transformations
- annotations
- api interface
- $Array (interface)
- $BigInt (interface)
- $Boolean (interface)
- $Date (interface)
- $Map (interface)
- $Number (interface)
- $Object (interface)
- $ReadonlyMap (interface)
- $ReadonlySet (interface)
- $Record (interface)
- $Set (interface)
- $String (interface)
- $Symbol (interface)
- Any (interface)
- BigDecimal (interface)
- BigDecimalFromNumber (interface)
- BigDecimalFromSelf (interface)
- BigIntFromNumber (interface)
- BigIntFromSelf (interface)
- BooleanFromUnknown (interface)
- Cause (interface)
- CauseFromSelf (interface)
- Chunk (interface)
- ChunkFromSelf (interface)
- Class (interface)
- DateFromSelf (interface)
- DateFromString (interface)
- Duration (interface)
- DurationFromMillis (interface)
- DurationFromNanos (interface)
- DurationFromSelf (interface)
- Either (interface)
- EitherFromSelf (interface)
- EitherFromUnion (interface)
- Enums (interface)
- Exit (interface)
- ExitFromSelf (interface)
- FiberId (interface)
- FiberIdFromSelf (interface)
- HashMap (interface)
- HashMapFromSelf (interface)
- HashSet (interface)
- HashSetFromSelf (interface)
- List (interface)
- ListFromSelf (interface)
- Literal (interface)
- Lowercase (interface)
- MapFromSelf (interface)
- Never (interface)
- NonEmptyArray (interface)
- Not (interface)
- Null (interface)
- NullOr (interface)
- NullishOr (interface)
- NumberFromString (interface)
- Option (interface)
- OptionFromNullOr (interface)
- OptionFromNullishOr (interface)
- OptionFromSelf (interface)
- OptionFromUndefinedOr (interface)
- ReadonlyMapFromSelf (interface)
- ReadonlySetFromSelf (interface)
- Secret (interface)
- SecretFromSelf (interface)
- SetFromSelf (interface)
- SortedSet (interface)
- SortedSetFromSelf (interface)
- Struct (interface)
- SymbolFromSelf (interface)
- Trim (interface)
- Tuple (interface)
- TupleType (interface)
- TypeLiteral (interface)
- Undefined (interface)
- UndefinedOr (interface)
- Union (interface)
- Unknown (interface)
- Uppercase (interface)
- ValidDateFromSelf (interface)
- Void (interface)
- brand (interface)
- extend (interface)
- instanceOf (interface)
- mutable (interface)
- suspend (interface)
- transform (interface)
- transformLiteral (interface)
- transformOrFail (interface)
- bigint constructors
- bigint filters
- bigint transformations
- boolean constructors
- boolean transformations
- branding
- classes
- combinators
- constructors
- decoding
- encoding
- formatting
- guards
- hashing
- model
- number constructors
- number filters
- number transformations
- primitives
- renaming
- string constructors
- string filters
- string transformations
- struct transformations
- symbol
- symbol transformations
- type id
- BetweenBigDecimalTypeId
- BetweenBigIntTypeId
- BetweenBigIntTypeId (type alias)
- BetweenDurationTypeId
- BetweenTypeId
- BetweenTypeId (type alias)
- BrandTypeId
- EndsWithTypeId
- FiniteTypeId
- GreaterThanBigDecimalTypeId
- GreaterThanBigIntTypeId
- GreaterThanBigIntTypeId (type alias)
- GreaterThanDurationTypeId
- GreaterThanOrEqualToBigDecimalTypeId
- GreaterThanOrEqualToBigIntTypeId
- GreaterThanOrEqualToBigIntTypeId (type alias)
- GreaterThanOrEqualToDurationTypeId
- GreaterThanOrEqualToTypeId
- GreaterThanOrEqualToTypeId (type alias)
- GreaterThanTypeId
- GreaterThanTypeId (type alias)
- IncludesTypeId
- InstanceOfTypeId
- IntTypeId
- IntTypeId (type alias)
- ItemsCountTypeId
- ItemsCountTypeId (type alias)
- JsonNumberTypeId
- LengthTypeId
- LengthTypeId (type alias)
- LessThanBigDecimalTypeId
- LessThanBigIntTypeId
- LessThanBigIntTypeId (type alias)
- LessThanDurationTypeId
- LessThanOrEqualToBigDecimalTypeId
- LessThanOrEqualToBigIntTypeId
- LessThanOrEqualToBigIntTypeId (type alias)
- LessThanOrEqualToDurationTypeId
- LessThanOrEqualToTypeId
- LessThanOrEqualToTypeId (type alias)
- LessThanTypeId
- LessThanTypeId (type alias)
- LowercasedTypeId
- MaxItemsTypeId
- MaxItemsTypeId (type alias)
- MaxLengthTypeId
- MaxLengthTypeId (type alias)
- MinItemsTypeId
- MinItemsTypeId (type alias)
- MinLengthTypeId
- MinLengthTypeId (type alias)
- MultipleOfTypeId
- NegativeBigDecimalTypeId
- NonNaNTypeId
- NonNegativeBigDecimalTypeId
- NonPositiveBigDecimalTypeId
- PatternTypeId
- PositiveBigDecimalTypeId
- StartsWithTypeId
- TrimmedTypeId
- ULIDTypeId
- UUIDTypeId
- UppercasedTypeId
- ValidDateTypeId
- utils
- validation
BigDecimal constructors
BigDecimalFromSelf
Signature
export declare const BigDecimalFromSelf: BigDecimalFromSelf
Added in v1.0.0
NegativeBigDecimalFromSelf
Signature
export declare const NegativeBigDecimalFromSelf: any
Added in v1.0.0
NonNegativeBigDecimalFromSelf
Signature
export declare const NonNegativeBigDecimalFromSelf: any
Added in v1.0.0
NonPositiveBigDecimalFromSelf
Signature
export declare const NonPositiveBigDecimalFromSelf: any
Added in v1.0.0
PositiveBigDecimalFromSelf
Signature
export declare const PositiveBigDecimalFromSelf: any
Added in v1.0.0
BigDecimal filters
betweenBigDecimal
Signature
export declare const betweenBigDecimal: <A extends bigDecimal_.BigDecimal>(
minimum: bigDecimal_.BigDecimal,
maximum: bigDecimal_.BigDecimal,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
greaterThanBigDecimal
Signature
export declare const greaterThanBigDecimal: <A extends bigDecimal_.BigDecimal>(
min: bigDecimal_.BigDecimal,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
greaterThanOrEqualToBigDecimal
Signature
export declare const greaterThanOrEqualToBigDecimal: <A extends bigDecimal_.BigDecimal>(
min: bigDecimal_.BigDecimal,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
lessThanBigDecimal
Signature
export declare const lessThanBigDecimal: <A extends bigDecimal_.BigDecimal>(
max: bigDecimal_.BigDecimal,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
lessThanOrEqualToBigDecimal
Signature
export declare const lessThanOrEqualToBigDecimal: <A extends bigDecimal_.BigDecimal>(
max: bigDecimal_.BigDecimal,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
negativeBigDecimal
Signature
export declare const negativeBigDecimal: <A extends bigDecimal_.BigDecimal>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
nonNegativeBigDecimal
Signature
export declare const nonNegativeBigDecimal: <A extends bigDecimal_.BigDecimal>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
nonPositiveBigDecimal
Signature
export declare const nonPositiveBigDecimal: <A extends bigDecimal_.BigDecimal>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
positiveBigDecimal
Signature
export declare const positiveBigDecimal: <A extends bigDecimal_.BigDecimal>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
BigDecimal transformations
BigDecimal
Signature
export declare const BigDecimal: BigDecimal
Added in v1.0.0
BigDecimalFromNumber
A schema that transforms a number
into a BigDecimal
. When encoding, this Schema will produce incorrect results if the BigDecimal exceeds the 64-bit range of a number.
Signature
export declare const BigDecimalFromNumber: BigDecimalFromNumber
Added in v1.0.0
clampBigDecimal
Clamps a BigDecimal
between a minimum and a maximum value.
Signature
export declare const clampBigDecimal: (
minimum: bigDecimal_.BigDecimal,
maximum: bigDecimal_.BigDecimal
) => <R, I, A extends bigDecimal_.BigDecimal>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
Cause transformations
Cause
Signature
export declare const Cause: <E extends Schema.All, DR = never>({
defect,
error
}: {
readonly error: E
readonly defect?: Schema<unknown, unknown, DR> | undefined
}) => Cause<E, DR>
Added in v1.0.0
CauseDefectUnknown
Signature
export declare const CauseDefectUnknown: Unknown
Added in v1.0.0
CauseFromSelf
Signature
export declare const CauseFromSelf: <E extends Schema.Any, DR = never>({
defect,
error
}: {
readonly error: E
readonly defect?: Schema<unknown, unknown, DR> | undefined
}) => CauseFromSelf<E, DR>
Added in v1.0.0
Cause utils
CauseEncoded (type alias)
Signature
export type CauseEncoded<E> =
| {
readonly _tag: "Empty"
}
| {
readonly _tag: "Fail"
readonly error: E
}
| {
readonly _tag: "Die"
readonly defect: unknown
}
| {
readonly _tag: "Interrupt"
readonly fiberId: FiberIdEncoded
}
| {
readonly _tag: "Sequential"
readonly left: CauseEncoded<E>
readonly right: CauseEncoded<E>
}
| {
readonly _tag: "Parallel"
readonly left: CauseEncoded<E>
readonly right: CauseEncoded<E>
}
Added in v1.0.0
Chunk transformations
Chunk
Signature
export declare const Chunk: <Value extends Schema.Any>(value: Value) => Chunk<Value>
Added in v1.0.0
ChunkFromSelf
Signature
export declare const ChunkFromSelf: <Value extends Schema.Any>(value: Value) => ChunkFromSelf<Value>
Added in v1.0.0
Data transformations
Data
Signature
export declare const Data: <
R,
I extends readonly any[] | Readonly<Record<string, any>>,
A extends readonly any[] | Readonly<Record<string, any>>
>(
item: Schema<A, I, R>
) => Schema<A, I, R>
Added in v1.0.0
DataFromSelf
Signature
export declare const DataFromSelf: <
R,
I extends readonly any[] | Readonly<Record<string, any>>,
A extends readonly any[] | Readonly<Record<string, any>>
>(
item: Schema<A, I, R>
) => Schema<A, I, R>
Added in v1.0.0
Date constructors
DateFromSelf
Represents a schema for handling potentially invalid Date
instances (e.g., new Date("Invalid Date")
is not rejected).
Signature
export declare const DateFromSelf: DateFromSelf
Added in v1.0.0
ValidDateFromSelf
Represents a schema for handling only valid dates. For example, new Date("Invalid Date")
is rejected, even though it is an instance of Date
.
Signature
export declare const ValidDateFromSelf: ValidDateFromSelf
Added in v1.0.0
Date filters
validDate
A filter that excludes invalid dates (e.g., new Date("Invalid Date")
is rejected).
Signature
export declare const validDate: (
annotations?: Annotations.Filter<Date>
) => <I, R>(self: Schema<Date, I, R>) => Schema<Date, I, R>
Added in v1.0.0
Date transformations
Date
A schema that transforms a string
into a valid Date
, ensuring that invalid dates, such as new Date("Invalid Date")
, are rejected.
Signature
export declare const Date: $Date
Added in v1.0.0
DateFromString
Represents a schema that converts a string
into a (potentially invalid) Date
(e.g., new Date("Invalid Date")
is not rejected).
Signature
export declare const DateFromString: DateFromString
Added in v1.0.0
Duration constructors
DurationFromSelf
Signature
export declare const DurationFromSelf: DurationFromSelf
Added in v1.0.0
Duration filters
betweenDuration
Signature
export declare const betweenDuration: <A extends duration_.Duration>(
minimum: duration_.DurationInput,
maximum: duration_.DurationInput,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
greaterThanDuration
Signature
export declare const greaterThanDuration: <A extends duration_.Duration>(
min: duration_.DurationInput,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
greaterThanOrEqualToDuration
Signature
export declare const greaterThanOrEqualToDuration: <A extends duration_.Duration>(
min: duration_.DurationInput,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
lessThanDuration
Signature
export declare const lessThanDuration: <A extends duration_.Duration>(
max: duration_.DurationInput,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
lessThanOrEqualToDuration
Signature
export declare const lessThanOrEqualToDuration: <A extends duration_.Duration>(
max: duration_.DurationInput,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
Duration transformations
Duration
A schema that transforms a [number, number]
tuple into a Duration
.
Signature
export declare const Duration: Duration
Added in v1.0.0
DurationFromMillis
A schema that transforms a number
tuple into a Duration
. Treats the value as the number of milliseconds.
Signature
export declare const DurationFromMillis: DurationFromMillis
Added in v1.0.0
DurationFromNanos
A schema that transforms a bigint
tuple into a Duration
. Treats the value as the number of nanoseconds.
Signature
export declare const DurationFromNanos: DurationFromNanos
Added in v1.0.0
clampDuration
Clamps a Duration
between a minimum and a maximum value.
Signature
export declare const clampDuration: (
minimum: duration_.DurationInput,
maximum: duration_.DurationInput
) => <R, I, A extends duration_.Duration>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
Either transformations
Either
Signature
export declare const Either: <R extends Schema.Any, L extends Schema.Any>({
left,
right
}: {
readonly left: L
readonly right: R
}) => Either<R, L>
Added in v1.0.0
EitherFromSelf
Signature
export declare const EitherFromSelf: <R extends Schema.Any, L extends Schema.Any>({
left,
right
}: {
readonly left: L
readonly right: R
}) => EitherFromSelf<R, L>
Added in v1.0.0
EitherFromUnion
Signature
export declare const EitherFromUnion: <R extends Schema.Any, L extends Schema.Any>({
left,
right
}: {
readonly left: L
readonly right: R
}) => EitherFromUnion<R, L>
Example
import * as Schema from "@effect/schema/Schema"
// Schema<string | number, Either<string, number>>
Schema.EitherFromUnion({ left: Schema.String, right: Schema.Number })
Added in v1.0.0
Either utils
EitherEncoded (type alias)
Signature
export type EitherEncoded<IR, IL> = RightEncoded<IR> | LeftEncoded<IL>
Added in v1.0.0
LeftEncoded (type alias)
Signature
export type LeftEncoded<IE> = {
readonly _tag: "Left"
readonly left: IE
}
Added in v1.0.0
RightEncoded (type alias)
Signature
export type RightEncoded<IA> = {
readonly _tag: "Right"
readonly right: IA
}
Added in v1.0.0
Encoding transformations
Base64
Signature
export declare const Base64: Schema<Uint8Array, string, never>
Added in v1.0.0
Base64Url
Signature
export declare const Base64Url: Schema<Uint8Array, string, never>
Added in v1.0.0
Hex
Signature
export declare const Hex: Schema<Uint8Array, string, never>
Added in v1.0.0
Exit transformations
Exit
Signature
export declare const Exit: <A extends Schema.All, E extends Schema.All, DR = never>({
defect,
failure,
success
}: {
readonly failure: E
readonly success: A
readonly defect?: Schema<unknown, unknown, DR> | undefined
}) => Exit<A, E, DR>
Added in v1.0.0
ExitFromSelf
Signature
export declare const ExitFromSelf: <A extends Schema.Any, E extends Schema.Any, DR = never>({
defect,
failure,
success
}: {
readonly failure: E
readonly success: A
readonly defect?: Schema<unknown, unknown, DR> | undefined
}) => ExitFromSelf<A, E, DR>
Added in v1.0.0
Exit utils
ExitEncoded (type alias)
Signature
export type ExitEncoded<A, E> =
| {
readonly _tag: "Failure"
readonly cause: CauseEncoded<E>
}
| {
readonly _tag: "Success"
readonly value: A
}
Added in v1.0.0
FiberId
FiberIdEncoded (type alias)
Signature
export type FiberIdEncoded =
| {
readonly _tag: "Composite"
readonly left: FiberIdEncoded
readonly right: FiberIdEncoded
}
| {
readonly _tag: "None"
}
| {
readonly _tag: "Runtime"
readonly id: number
readonly startTimeMillis: number
}
Added in v1.0.0
FiberId constructors
FiberIdFromSelf
Signature
export declare const FiberIdFromSelf: FiberIdFromSelf
Added in v1.0.0
FiberId transformations
FiberId
Signature
export declare const FiberId: FiberId
Added in v1.0.0
HashMap transformations
HashMap
Signature
export declare const HashMap: <K extends Schema.Any, V extends Schema.Any>({
key,
value
}: {
readonly key: K
readonly value: V
}) => HashMap<K, V>
Added in v1.0.0
HashMapFromSelf
Signature
export declare const HashMapFromSelf: <K extends Schema.Any, V extends Schema.Any>({
key,
value
}: {
readonly key: K
readonly value: V
}) => HashMapFromSelf<K, V>
Added in v1.0.0
HashSet transformations
HashSet
Signature
export declare const HashSet: <Value extends Schema.Any>(value: Value) => HashSet<Value>
Added in v1.0.0
HashSetFromSelf
Signature
export declare const HashSetFromSelf: <Value extends Schema.Any>(value: Value) => HashSetFromSelf<Value>
Added in v1.0.0
List transformations
List
Signature
export declare const List: <Value extends Schema.Any>(value: Value) => List<Value>
Added in v1.0.0
ListFromSelf
Signature
export declare const ListFromSelf: <Value extends Schema.Any>(value: Value) => ListFromSelf<Value>
Added in v1.0.0
Map
MapFromSelf
Signature
export declare const MapFromSelf: <K extends Schema.Any, V extends Schema.Any>({
key,
value
}: {
readonly key: K
readonly value: V
}) => MapFromSelf<K, V>
Added in v1.0.0
Map transformations
Map
Signature
export declare const Map: <K extends Schema.Any, V extends Schema.Any>({
key,
value
}: {
readonly key: K
readonly value: V
}) => $Map<K, V>
Added in v1.0.0
Option transformations
Option
Signature
export declare const Option: <Value extends Schema.Any>(value: Value) => Option<Value>
Added in v1.0.0
OptionFromNullOr
Signature
export declare const OptionFromNullOr: <Value extends Schema.Any>(value: Value) => OptionFromNullOr<Value>
Added in v1.0.0
OptionFromNullishOr
Signature
export declare const OptionFromNullishOr: <Value extends Schema.Any>(
value: Value,
onNoneEncoding: null | undefined
) => OptionFromNullishOr<Value>
Added in v1.0.0
OptionFromSelf
Signature
export declare const OptionFromSelf: <Value extends Schema.Any>(value: Value) => OptionFromSelf<Value>
Added in v1.0.0
OptionFromUndefinedOr
Signature
export declare const OptionFromUndefinedOr: <Value extends Schema.Any>(value: Value) => OptionFromUndefinedOr<Value>
Added in v1.0.0
Option utils
OptionEncoded (type alias)
Signature
export type OptionEncoded<I> =
| {
readonly _tag: "None"
}
| {
readonly _tag: "Some"
readonly value: I
}
Added in v1.0.0
PropertySignature
FromPropertySignature (class)
Signature
export declare class FromPropertySignature { constructor(
readonly type: AST.AST,
readonly isOptional: boolean,
readonly isReadonly: boolean,
readonly annotations: AST.Annotations,
readonly fromKey?: PropertyKey | undefined
) }
Added in v1.0.0
PropertySignature (interface)
Signature
export interface PropertySignature<
TypeToken extends PropertySignature.Token,
Type,
Key extends PropertyKey,
EncodedToken extends PropertySignature.Token,
Encoded,
R = never
> extends Schema.Variance<Type, Encoded, R>,
Pipeable {
readonly [PropertySignatureTypeId]: null
readonly _EncodedToken: EncodedToken
readonly _TypeToken: TypeToken
readonly _Key: Key
readonly ast: PropertySignature.AST
annotations(
annotations: PropertySignature.Annotations<Type>
): PropertySignature<TypeToken, Type, Key, EncodedToken, Encoded, R>
}
Added in v1.0.0
PropertySignatureDeclaration (class)
Signature
export declare class PropertySignatureDeclaration { constructor(
readonly type: AST.AST,
readonly isOptional: boolean,
readonly isReadonly: boolean,
readonly annotations: AST.Annotations
) }
Added in v1.0.0
toString (method)
Signature
toString()
Added in v1.0.0
_tag (property)
Signature
readonly _tag: "PropertySignatureDeclaration"
Added in v1.0.0
PropertySignatureTransformation (class)
Signature
export declare class PropertySignatureTransformation { constructor(
readonly from: FromPropertySignature,
readonly to: ToPropertySignature,
readonly decode: AST.PropertySignatureTransformation["decode"],
readonly encode: AST.PropertySignatureTransformation["encode"]
) }
Added in v1.0.0
toString (method)
Signature
toString()
Added in v1.0.0
_tag (property)
Signature
readonly _tag: "PropertySignatureTransformation"
Added in v1.0.0
ToPropertySignature (class)
Signature
export declare class ToPropertySignature { constructor(
readonly type: AST.AST,
readonly isOptional: boolean,
readonly isReadonly: boolean,
readonly annotations: AST.Annotations
) }
Added in v1.0.0
fromKey
Signature
export declare const fromKey: {
<Key extends PropertyKey>(
key: Key
): <Type, TypeToken extends PropertySignature.Token, Encoded, EncodedToken extends PropertySignature.Token, R>(
self: PropertySignature<TypeToken, Type, PropertyKey, EncodedToken, Encoded, R>
) => PropertySignature<TypeToken, Type, Key, EncodedToken, Encoded, R>
<
Type,
TypeToken extends PropertySignature.Token,
Encoded,
EncodedToken extends PropertySignature.Token,
R,
Key extends PropertyKey
>(
self: PropertySignature<TypeToken, Type, PropertyKey, EncodedToken, Encoded, R>,
key: Key
): PropertySignature<TypeToken, Type, Key, EncodedToken, Encoded, R>
}
Added in v1.0.0
optional
Signature
export declare const optional: {
<
A,
const Options extends
| {
readonly default?: undefined
readonly as?: undefined
readonly exact?: true | undefined
readonly nullable?: true | undefined
}
| {
readonly default: () => A
readonly as?: undefined
readonly exact?: true | undefined
readonly nullable?: true | undefined
}
| {
readonly as: "Option"
readonly default?: undefined
readonly exact?: true | undefined
readonly nullable?: true | undefined
}
| undefined
>(
options?: Options | undefined
): <I, R>(
schema: Schema<A, I, R>
) => [undefined] extends [Options]
? PropertySignature<"?:", A | undefined, never, "?:", I | undefined, R>
: PropertySignature<":" | "?:", any, never, "?:", I | null | undefined, R>
<
A,
I,
R,
const Options extends
| {
readonly default?: undefined
readonly as?: undefined
readonly exact?: true | undefined
readonly nullable?: true | undefined
}
| {
readonly default: () => A
readonly as?: undefined
readonly exact?: true | undefined
readonly nullable?: true | undefined
}
| {
readonly as: "Option"
readonly default?: undefined
readonly exact?: true | undefined
readonly nullable?: true | undefined
}
| undefined
>(
schema: Schema<A, I, R>,
options?: Options | undefined
): [undefined] extends [Options]
? PropertySignature<"?:", A | undefined, never, "?:", I | undefined, R>
: PropertySignature<":" | "?:", any, never, "?:", I | null | undefined, R>
}
Added in v1.0.0
optionalToOptional
decode
:none
as argument means: the value is missing in the inputnone
as return value means: the value will be missing in the output
encode
:none
as argument means: the value is missing in the inputnone
as return value means: the value will be missing in the output
Signature
export declare const optionalToOptional: <FA, FI, FR, TA, TI, TR>(
from: Schema<FA, FI, FR>,
to: Schema<TA, TI, TR>,
options: {
readonly decode: (o: option_.Option<FA>) => option_.Option<TI>
readonly encode: (o: option_.Option<TI>) => option_.Option<FA>
}
) => PropertySignature<"?:", TA, never, "?:", FI, FR | TR>
Added in v1.0.0
optionalToRequired
decode
:none
as argument means: the value is missing in the inputencode
:none
as return value means: the value will be missing in the output
Signature
export declare const optionalToRequired: <FA, FI, FR, TA, TI, TR>(
from: Schema<FA, FI, FR>,
to: Schema<TA, TI, TR>,
options: { readonly decode: (o: option_.Option<FA>) => TI; readonly encode: (ti: TI) => option_.Option<FA> }
) => PropertySignature<":", TA, never, "?:", FI, FR | TR>
Added in v1.0.0
propertySignature
Signature
export declare const propertySignature: <A, I, R>(self: Schema<A, I, R>) => PropertySignature<":", A, never, ":", I, R>
Added in v1.0.0
ReadonlyArray filters
itemsCount
Signature
export declare const itemsCount: <A>(
n: number,
annotations?: Annotations.Filter<readonly A[]> | undefined
) => <I, R>(self: Schema<readonly A[], I, R>) => Schema<readonly A[], I, R>
Added in v1.0.0
maxItems
Signature
export declare const maxItems: <A>(
n: number,
annotations?: Annotations.Filter<readonly A[]> | undefined
) => <I, R>(self: Schema<readonly A[], I, R>) => Schema<readonly A[], I, R>
Added in v1.0.0
minItems
Signature
export declare const minItems: <A>(
n: number,
annotations?: Annotations.Filter<readonly A[]> | undefined
) => <I, R>(self: Schema<readonly A[], I, R>) => Schema<readonly A[], I, R>
Added in v1.0.0
ReadonlyArray transformations
getNumberIndexedAccess
Signature
export declare const getNumberIndexedAccess: <A extends readonly any[], I extends readonly any[], R>(
self: Schema<A, I, R>
) => Schema<A[number], I[number], R>
Added in v1.0.0
head
Get the first element of a ReadonlyArray
, or None
if the array is empty.
Signature
export declare const head: <A, I, R>(self: Schema<readonly A[], I, R>) => Schema<option_.Option<A>, I, R>
Added in v1.0.0
headOrElse
Retrieves the first element of a ReadonlyArray
.
If the array is empty, it returns the fallback
argument if provided; otherwise, it fails.
Signature
export declare const headOrElse: {
<A>(fallback?: any): <I, R>(self: Schema<readonly A[], I, R>) => Schema<A, I, R>
<A, I, R>(self: Schema<readonly A[], I, R>, fallback?: any): Schema<A, I, R>
}
Added in v1.0.0
ReadonlyMap
ReadonlyMapFromSelf
Signature
export declare const ReadonlyMapFromSelf: <K extends Schema.Any, V extends Schema.Any>({
key,
value
}: {
readonly key: K
readonly value: V
}) => ReadonlyMapFromSelf<K, V>
Added in v1.0.0
ReadonlyMap transformations
ReadonlyMap
Signature
export declare const ReadonlyMap: <K extends Schema.Any, V extends Schema.Any>({
key,
value
}: {
readonly key: K
readonly value: V
}) => $ReadonlyMap<K, V>
Added in v1.0.0
ReadonlySet
ReadonlySetFromSelf
Signature
export declare const ReadonlySetFromSelf: <Value extends Schema.Any>(value: Value) => ReadonlySetFromSelf<Value>
Added in v1.0.0
ReadonlySet transformations
ReadonlySet
Signature
export declare const ReadonlySet: <Value extends Schema.Any>(value: Value) => $ReadonlySet<Value>
Added in v1.0.0
Secret constructors
SecretFromSelf
Signature
export declare const SecretFromSelf: SecretFromSelf
Added in v1.0.0
Secret transformations
Secret
A schema that transforms a string
into a Secret
.
Signature
export declare const Secret: Secret
Added in v1.0.0
Set
SetFromSelf
Signature
export declare const SetFromSelf: <Value extends Schema.Any>(value: Value) => SetFromSelf<Value>
Added in v1.0.0
Set transformations
Set
Signature
export declare const Set: <Value extends Schema.Any>(value: Value) => $Set<Value>
Added in v1.0.0
SortedSet transformations
SortedSet
Signature
export declare const SortedSet: <Value extends Schema.Any>(
value: Value,
ordA: Order.Order<Schema.Type<Value>>
) => SortedSet<Value>
Added in v1.0.0
SortedSetFromSelf
Signature
export declare const SortedSetFromSelf: <Value extends Schema.Any>(
value: Value,
ordA: Order.Order<Schema.Type<Value>>,
ordI: Order.Order<Schema.Encoded<Value>>
) => SortedSetFromSelf<Value>
Added in v1.0.0
Uint8Array constructors
Uint8ArrayFromSelf
Signature
export declare const Uint8ArrayFromSelf: Schema<Uint8Array, Uint8Array, never>
Added in v1.0.0
Uint8Array transformations
Uint8Array
A schema that transforms a number
array into a Uint8Array
.
Signature
export declare const Uint8Array: Schema<Uint8Array, readonly number[], never>
Added in v1.0.0
annotations
Annotable (interface)
Signature
export interface Annotable<Self extends Schema<A, I, R>, A, I = A, R = never> extends Schema<A, I, R> {
annotations(annotations: Annotations.Schema<A>): Self
}
Added in v1.0.0
Annotable (namespace)
Added in v1.0.0
All (type alias)
Signature
export type All =
| Any
| Annotable<any, any, never, unknown>
| Annotable<any, never, any, unknown>
| Annotable<any, never, never, unknown>
Added in v1.0.0
Any (type alias)
Signature
export type Any = Annotable<any, any, any, unknown>
Added in v1.0.0
Self (type alias)
Signature
export type Self<S extends All> = ReturnType<S["annotations"]>
Added in v1.0.0
Annotations (namespace)
Added in v1.0.0
Doc (interface)
Signature
export interface Doc<A> extends AST.Annotations {
readonly title?: AST.TitleAnnotation
readonly description?: AST.DescriptionAnnotation
readonly documentation?: AST.DocumentationAnnotation
readonly examples?: AST.ExamplesAnnotation<A>
readonly default?: AST.DefaultAnnotation<A>
}
Added in v1.0.0
Filter (interface)
Signature
export interface Filter<A> extends Schema<A, readonly [A]> {}
Added in v1.0.0
Schema (interface)
Signature
export interface Schema<A, TypeParameters extends ReadonlyArray<any> = readonly []> extends Doc<A> {
readonly identifier?: AST.IdentifierAnnotation
readonly message?: AST.MessageAnnotation
readonly typeId?: AST.TypeAnnotation | { id: AST.TypeAnnotation; annotation: unknown }
readonly jsonSchema?: AST.JSONSchemaAnnotation
readonly arbitrary?: (
...arbitraries: { readonly [K in keyof TypeParameters]: LazyArbitrary<TypeParameters[K]> }
) => LazyArbitrary<A>
readonly pretty?: (
...pretties: { readonly [K in keyof TypeParameters]: pretty_.Pretty<TypeParameters[K]> }
) => pretty_.Pretty<A>
readonly equivalence?: (
...equivalences: { readonly [K in keyof TypeParameters]: Equivalence.Equivalence<TypeParameters[K]> }
) => Equivalence.Equivalence<A>
readonly concurrency?: AST.ConcurrencyAnnotation
readonly batching?: AST.BatchingAnnotation
readonly parseIssueTitle?: AST.ParseIssueTitleAnnotation
}
Added in v1.0.0
annotations
Signature
export declare const annotations: {
<S extends Annotable.All>(
annotations: Annotations.Schema<Schema.Type<S>, readonly []>
): (self: S) => ReturnType<S["annotations"]>
<S extends Annotable.All>(
self: S,
annotations: Annotations.Schema<Schema.Type<S>, readonly []>
): ReturnType<S["annotations"]>
}
Added in v1.0.0
batching
Signature
export declare const batching: (
batching: AST.BatchingAnnotation
) => <S extends Annotable.All>(self: S) => ReturnType<S["annotations"]>
Added in v1.0.0
concurrency
Signature
export declare const concurrency: (
concurrency: AST.ConcurrencyAnnotation
) => <S extends Annotable.All>(self: S) => ReturnType<S["annotations"]>
Added in v1.0.0
default
Signature
export declare const default: <S extends Annotable.All>(value: Schema.Type<S>) => (self: S) => ReturnType<S["annotations"]>
Added in v1.0.0
description
Signature
export declare const description: (
description: AST.DescriptionAnnotation
) => <S extends Annotable.All>(self: S) => ReturnType<S["annotations"]>
Added in v1.0.0
documentation
Signature
export declare const documentation: (
documentation: AST.DocumentationAnnotation
) => <S extends Annotable.All>(self: S) => ReturnType<S["annotations"]>
Added in v1.0.0
equivalence
Signature
export declare const equivalence: <S extends Annotable.All>(
equivalence: Equivalence.Equivalence<Schema.Type<S>>
) => (self: S) => ReturnType<S["annotations"]>
Added in v1.0.0
examples
Signature
export declare const examples: <S extends Annotable.All>(
examples: Arr.NonEmptyReadonlyArray<A>
) => (self: S) => ReturnType<S["annotations"]>
Added in v1.0.0
identifier
Signature
export declare const identifier: (
identifier: AST.IdentifierAnnotation
) => <S extends Annotable.All>(self: S) => ReturnType<S["annotations"]>
Added in v1.0.0
jsonSchema
Attaches a JSON Schema annotation to a schema that represents a refinement.
If the schema is composed of more than one refinement, the corresponding annotations will be merged.
Signature
export declare const jsonSchema: (
jsonSchema: AST.JSONSchemaAnnotation
) => <S extends Annotable.All>(self: S) => ReturnType<S["annotations"]>
Added in v1.0.0
message
Signature
export declare const message: (
message: AST.MessageAnnotation
) => <S extends Annotable.All>(self: S) => ReturnType<S["annotations"]>
Added in v1.0.0
parseIssueTitle
Signature
export declare const parseIssueTitle: (
f: AST.ParseIssueTitleAnnotation
) => <S extends Annotable.All>(self: S) => ReturnType<S["annotations"]>
Added in v1.0.0
title
Signature
export declare const title: (
title: AST.TitleAnnotation
) => <S extends Annotable.All>(self: S) => ReturnType<S["annotations"]>
Added in v1.0.0
api interface
$Array (interface)
Signature
export interface $Array<Value extends Schema.Any> extends TupleType<[], [Value]> {
readonly value: Value
annotations(annotations: Annotations.Schema<TupleType.Type<[], [Value]>>): $Array<Value>
}
Added in v1.0.0
$BigInt (interface)
Signature
export interface $BigInt extends Annotable<$BigInt, bigint, string> {}
Added in v1.0.0
$Boolean (interface)
Signature
export interface $Boolean extends Annotable<$Boolean, boolean> {}
Added in v1.0.0
$Date (interface)
Signature
export interface $Date extends Annotable<$Date, Date, string> {}
Added in v1.0.0
$Map (interface)
Signature
export interface $Map<K extends Schema.Any, V extends Schema.Any>
extends Annotable<
$Map<K, V>,
Map<Schema.Type<K>, Schema.Type<V>>,
ReadonlyArray<readonly [Schema.Encoded<K>, Schema.Encoded<V>]>,
Schema.Context<K> | Schema.Context<V>
> {}
Added in v1.0.0
$Number (interface)
Signature
export interface $Number extends Annotable<$Number, number> {}
Added in v1.0.0
$Object (interface)
Signature
export interface $Object extends Annotable<$Object, object> {}
Added in v1.0.0
$ReadonlyMap (interface)
Signature
export interface $ReadonlyMap<K extends Schema.Any, V extends Schema.Any>
extends Annotable<
$ReadonlyMap<K, V>,
ReadonlyMap<Schema.Type<K>, Schema.Type<V>>,
ReadonlyArray<readonly [Schema.Encoded<K>, Schema.Encoded<V>]>,
Schema.Context<K> | Schema.Context<V>
> {}
Added in v1.0.0
$ReadonlySet (interface)
Signature
export interface $ReadonlySet<Value extends Schema.Any>
extends Annotable<
$ReadonlySet<Value>,
ReadonlySet<Schema.Type<Value>>,
ReadonlyArray<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
$Record (interface)
Signature
export interface $Record<K extends Schema.All, V extends Schema.All> extends TypeLiteral<{}, [{ key: K; value: V }]> {
readonly key: K
readonly value: V
annotations(
annotations: Annotations.Schema<Types.Simplify<TypeLiteral.Type<{}, [{ key: K; value: V }]>>>
): $Record<K, V>
}
Added in v1.0.0
$Set (interface)
Signature
export interface $Set<Value extends Schema.Any>
extends Annotable<
$Set<Value>,
Set<Schema.Type<Value>>,
ReadonlyArray<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
$String (interface)
Signature
export interface $String extends Annotable<$String, string> {}
Added in v1.0.0
$Symbol (interface)
Signature
export interface $Symbol extends Annotable<$Symbol, symbol, string> {}
Added in v1.0.0
Any (interface)
Signature
export interface Any extends Annotable<Any, any> {}
Added in v1.0.0
BigDecimal (interface)
Signature
export interface BigDecimal extends Annotable<BigDecimal, bigDecimal_.BigDecimal, string> {}
Added in v1.0.0
BigDecimalFromNumber (interface)
Signature
export interface BigDecimalFromNumber extends Annotable<BigDecimalFromNumber, bigDecimal_.BigDecimal, number> {}
Added in v1.0.0
BigDecimalFromSelf (interface)
Signature
export interface BigDecimalFromSelf extends Annotable<BigDecimalFromSelf, bigDecimal_.BigDecimal> {}
Added in v1.0.0
BigIntFromNumber (interface)
Signature
export interface BigIntFromNumber extends Annotable<BigIntFromNumber, bigint, number> {}
Added in v1.0.0
BigIntFromSelf (interface)
Signature
export interface BigIntFromSelf extends Annotable<BigIntFromSelf, bigint> {}
Added in v1.0.0
BooleanFromUnknown (interface)
Signature
export interface BooleanFromUnknown extends Annotable<BooleanFromUnknown, boolean, unknown> {}
Added in v1.0.0
Cause (interface)
Signature
export interface Cause<E extends Schema.All, DR>
extends Annotable<
Cause<E, DR>,
cause_.Cause<Schema.Type<E>>,
CauseEncoded<Schema.Encoded<E>>,
Schema.Context<E> | DR
> {}
Added in v1.0.0
CauseFromSelf (interface)
Signature
export interface CauseFromSelf<E extends Schema.Any, DR>
extends Annotable<
CauseFromSelf<E, DR>,
cause_.Cause<Schema.Type<E>>,
cause_.Cause<Schema.Encoded<E>>,
Schema.Context<E> | DR
> {}
Added in v1.0.0
Chunk (interface)
Signature
export interface Chunk<Value extends Schema.Any>
extends Annotable<
Chunk<Value>,
chunk_.Chunk<Schema.Type<Value>>,
ReadonlyArray<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
ChunkFromSelf (interface)
Signature
export interface ChunkFromSelf<Value extends Schema.Any>
extends Annotable<
ChunkFromSelf<Value>,
chunk_.Chunk<Schema.Type<Value>>,
chunk_.Chunk<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
Class (interface)
Signature
export interface Class<Self, Fields extends Struct.Fields, A, I, R, C, Inherited, Proto> extends Schema<Self, I, R> {
new (
props: keyof C extends never ? void | {} : C,
disableValidation?: boolean | undefined
): A & Omit<Inherited, keyof A> & Proto
readonly fields: { readonly [K in keyof Fields]: Fields[K] }
readonly identifier: string
readonly extend: <Extended = never>(
identifier: string
) => <newFields extends Struct.Fields>(
fields: newFields,
annotations?: Annotations.Schema<Extended>
) => [Extended] extends [never]
? MissingSelfGeneric<"Base.extend">
: Class<
Extended,
Fields & newFields,
Types.Simplify<A & Struct.Type<newFields>>,
Types.Simplify<I & Struct.Encoded<newFields>>,
R | Struct.Context<newFields>,
Types.Simplify<C & Struct.Type<newFields>>,
Self,
Proto
>
readonly transformOrFail: <Transformed = never>(
identifier: string
) => <newFields extends Struct.Fields, R2, R3>(
fields: newFields,
options: {
readonly decode: (
input: A,
options: ParseOptions,
ast: AST.Transformation
) => Effect.Effect<Types.Simplify<A & Struct.Type<newFields>>, ParseResult.ParseIssue, R2>
readonly encode: (
input: Types.Simplify<A & Struct.Type<newFields>>,
options: ParseOptions,
ast: AST.Transformation
) => Effect.Effect<A, ParseResult.ParseIssue, R3>
},
annotations?: Annotations.Schema<Transformed>
) => [Transformed] extends [never]
? MissingSelfGeneric<"Base.transform">
: Class<
Transformed,
Fields & newFields,
Types.Simplify<A & Struct.Type<newFields>>,
I,
R | Struct.Context<newFields> | R2 | R3,
Types.Simplify<C & Struct.Type<newFields>>,
Self,
Proto
>
readonly transformOrFailFrom: <Transformed = never>(
identifier: string
) => <newFields extends Struct.Fields, R2, R3>(
fields: newFields,
options: {
readonly decode: (
input: I,
options: ParseOptions,
ast: AST.Transformation
) => Effect.Effect<Types.Simplify<I & Struct.Encoded<newFields>>, ParseResult.ParseIssue, R2>
readonly encode: (
input: Types.Simplify<I & Struct.Encoded<newFields>>,
options: ParseOptions,
ast: AST.Transformation
) => Effect.Effect<I, ParseResult.ParseIssue, R3>
},
annotations?: Annotations.Schema<Transformed>
) => [Transformed] extends [never]
? MissingSelfGeneric<"Base.transformFrom">
: Class<
Transformed,
Fields & newFields,
Types.Simplify<A & Struct.Type<newFields>>,
I,
R | Struct.Context<newFields> | R2 | R3,
Types.Simplify<C & Struct.Type<newFields>>,
Self,
Proto
>
}
Added in v1.0.0
DateFromSelf (interface)
Signature
export interface DateFromSelf extends Annotable<DateFromSelf, Date> {}
Added in v1.0.0
DateFromString (interface)
Signature
export interface DateFromString extends Annotable<DateFromString, Date, string> {}
Added in v1.0.0
Duration (interface)
Signature
export interface Duration extends Annotable<Duration, duration_.Duration, readonly [seconds: number, nanos: number]> {}
Added in v1.0.0
DurationFromMillis (interface)
Signature
export interface DurationFromMillis extends Annotable<DurationFromMillis, duration_.Duration, number> {}
Added in v1.0.0
DurationFromNanos (interface)
Signature
export interface DurationFromNanos extends Annotable<DurationFromNanos, duration_.Duration, bigint> {}
Added in v1.0.0
DurationFromSelf (interface)
Signature
export interface DurationFromSelf extends Annotable<DurationFromSelf, duration_.Duration> {}
Added in v1.0.0
Either (interface)
Signature
export interface Either<R extends Schema.Any, L extends Schema.Any>
extends Annotable<
Either<R, L>,
either_.Either<Schema.Type<R>, Schema.Type<L>>,
EitherEncoded<Schema.Encoded<R>, Schema.Encoded<L>>,
Schema.Context<R> | Schema.Context<L>
> {}
Added in v1.0.0
EitherFromSelf (interface)
Signature
export interface EitherFromSelf<R extends Schema.Any, L extends Schema.Any>
extends Annotable<
EitherFromSelf<R, L>,
either_.Either<Schema.Type<R>, Schema.Type<L>>,
either_.Either<Schema.Encoded<R>, Schema.Encoded<L>>,
Schema.Context<R> | Schema.Context<L>
> {}
Added in v1.0.0
EitherFromUnion (interface)
Signature
export interface EitherFromUnion<R extends Schema.Any, L extends Schema.Any>
extends Annotable<
EitherFromUnion<R, L>,
either_.Either<Schema.Type<R>, Schema.Type<L>>,
Schema.Encoded<R> | Schema.Encoded<L>,
Schema.Context<R> | Schema.Context<L>
> {}
Added in v1.0.0
Enums (interface)
Signature
export interface Enums<A extends { [x: string]: string | number }> extends Annotable<Enums<A>, A[keyof A]> {
readonly enums: A
}
Added in v1.0.0
Exit (interface)
Signature
export interface Exit<A extends Schema.All, E extends Schema.All, DR>
extends Annotable<
Exit<A, E, DR>,
exit_.Exit<Schema.Type<A>, Schema.Type<E>>,
ExitEncoded<Schema.Encoded<A>, Schema.Encoded<E>>,
Schema.Context<A> | Schema.Context<E> | DR
> {}
Added in v1.0.0
ExitFromSelf (interface)
Signature
export interface ExitFromSelf<A extends Schema.Any, E extends Schema.Any, DR>
extends Annotable<
ExitFromSelf<A, E, DR>,
exit_.Exit<Schema.Type<A>, Schema.Type<E>>,
exit_.Exit<Schema.Encoded<A>, Schema.Encoded<E>>,
Schema.Context<A> | Schema.Context<E> | DR
> {}
Added in v1.0.0
FiberId (interface)
Signature
export interface FiberId extends Annotable<FiberId, fiberId_.FiberId, FiberIdEncoded> {}
Added in v1.0.0
FiberIdFromSelf (interface)
Signature
export interface FiberIdFromSelf extends Annotable<FiberIdFromSelf, fiberId_.FiberId> {}
Added in v1.0.0
HashMap (interface)
Signature
export interface HashMap<K extends Schema.Any, V extends Schema.Any>
extends Annotable<
HashMap<K, V>,
hashMap_.HashMap<Schema.Type<K>, Schema.Type<V>>,
ReadonlyArray<readonly [Schema.Encoded<K>, Schema.Encoded<V>]>,
Schema.Context<K> | Schema.Context<V>
> {}
Added in v1.0.0
HashMapFromSelf (interface)
Signature
export interface HashMapFromSelf<K extends Schema.Any, V extends Schema.Any>
extends Annotable<
HashMapFromSelf<K, V>,
hashMap_.HashMap<Schema.Type<K>, Schema.Type<V>>,
hashMap_.HashMap<Schema.Encoded<K>, Schema.Encoded<V>>,
Schema.Context<K> | Schema.Context<V>
> {}
Added in v1.0.0
HashSet (interface)
Signature
export interface HashSet<Value extends Schema.Any>
extends Annotable<
HashSet<Value>,
hashSet_.HashSet<Schema.Type<Value>>,
ReadonlyArray<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
HashSetFromSelf (interface)
Signature
export interface HashSetFromSelf<Value extends Schema.Any>
extends Annotable<
HashSetFromSelf<Value>,
hashSet_.HashSet<Schema.Type<Value>>,
hashSet_.HashSet<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
List (interface)
Signature
export interface List<Value extends Schema.Any>
extends Annotable<
List<Value>,
list_.List<Schema.Type<Value>>,
ReadonlyArray<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
ListFromSelf (interface)
Signature
export interface ListFromSelf<Value extends Schema.Any>
extends Annotable<
ListFromSelf<Value>,
list_.List<Schema.Type<Value>>,
list_.List<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
Literal (interface)
Signature
export interface Literal<Literals extends array_.NonEmptyReadonlyArray<AST.LiteralValue>>
extends Annotable<Literal<Literals>, Literals[number]> {
readonly literals: Readonly<Literals>
}
Added in v1.0.0
Lowercase (interface)
Signature
export interface Lowercase extends Annotable<Lowercase, string> {}
Added in v1.0.0
MapFromSelf (interface)
Signature
export interface MapFromSelf<K extends Schema.Any, V extends Schema.Any>
extends Annotable<
MapFromSelf<K, V>,
Map<Schema.Type<K>, Schema.Type<V>>,
ReadonlyMap<Schema.Encoded<K>, Schema.Encoded<V>>,
Schema.Context<K> | Schema.Context<V>
> {}
Added in v1.0.0
Never (interface)
Signature
export interface Never extends Annotable<Never, never> {}
Added in v1.0.0
NonEmptyArray (interface)
Signature
export interface NonEmptyArray<Value extends Schema.Any> extends TupleType<[Value], [Value]> {
readonly value: Value
annotations(annotations: Annotations.Schema<TupleType.Type<[Value], [Value]>>): NonEmptyArray<Value>
}
Added in v1.0.0
Not (interface)
Signature
export interface Not extends Annotable<Not, boolean> {}
Added in v1.0.0
Null (interface)
Signature
export interface Null extends Annotable<Null, null> {}
Added in v1.0.0
NullOr (interface)
Signature
export interface NullOr<S extends Schema.Any> extends Union<[S, Null]> {
annotations(annotations: Annotations.Schema<Schema.Type<S> | null>): NullOr<S>
}
Added in v1.0.0
NullishOr (interface)
Signature
export interface NullishOr<S extends Schema.Any> extends Union<[S, Null, Undefined]> {
annotations(annotations: Annotations.Schema<Schema.Type<S> | null | undefined>): NullishOr<S>
}
Added in v1.0.0
NumberFromString (interface)
Signature
export interface NumberFromString extends Annotable<NumberFromString, number, string> {}
Added in v1.0.0
Option (interface)
Signature
export interface Option<Value extends Schema.Any>
extends Annotable<
Option<Value>,
option_.Option<Schema.Type<Value>>,
OptionEncoded<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
OptionFromNullOr (interface)
Signature
export interface OptionFromNullOr<Value extends Schema.Any>
extends Annotable<
OptionFromNullOr<Value>,
option_.Option<Schema.Type<Value>>,
Schema.Encoded<Value> | null,
Schema.Context<Value>
> {}
Added in v1.0.0
OptionFromNullishOr (interface)
Signature
export interface OptionFromNullishOr<Value extends Schema.Any>
extends Annotable<
OptionFromNullishOr<Value>,
option_.Option<Schema.Type<Value>>,
Schema.Encoded<Value> | null | undefined,
Schema.Context<Value>
> {}
Added in v1.0.0
OptionFromSelf (interface)
Signature
export interface OptionFromSelf<Value extends Schema.Any>
extends Annotable<
OptionFromSelf<Value>,
option_.Option<Schema.Type<Value>>,
option_.Option<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
OptionFromUndefinedOr (interface)
Signature
export interface OptionFromUndefinedOr<Value extends Schema.Any>
extends Annotable<
OptionFromUndefinedOr<Value>,
option_.Option<Schema.Type<Value>>,
Schema.Encoded<Value> | undefined,
Schema.Context<Value>
> {}
Added in v1.0.0
ReadonlyMapFromSelf (interface)
Signature
export interface ReadonlyMapFromSelf<K extends Schema.Any, V extends Schema.Any>
extends Annotable<
ReadonlyMapFromSelf<K, V>,
ReadonlyMap<Schema.Type<K>, Schema.Type<V>>,
ReadonlyMap<Schema.Encoded<K>, Schema.Encoded<V>>,
Schema.Context<K> | Schema.Context<V>
> {}
Added in v1.0.0
ReadonlySetFromSelf (interface)
Signature
export interface ReadonlySetFromSelf<Value extends Schema.Any>
extends Annotable<
ReadonlySetFromSelf<Value>,
ReadonlySet<Schema.Type<Value>>,
ReadonlySet<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
Secret (interface)
Signature
export interface Secret extends Annotable<Secret, secret_.Secret, string> {}
Added in v1.0.0
SecretFromSelf (interface)
Signature
export interface SecretFromSelf extends Annotable<SecretFromSelf, secret_.Secret> {}
Added in v1.0.0
SetFromSelf (interface)
Signature
export interface SetFromSelf<Value extends Schema.Any>
extends Annotable<
SetFromSelf<Value>,
Set<Schema.Type<Value>>,
ReadonlySet<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
SortedSet (interface)
Signature
export interface SortedSet<Value extends Schema.Any>
extends Annotable<
SortedSet<Value>,
sortedSet_.SortedSet<Schema.Type<Value>>,
ReadonlyArray<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
SortedSetFromSelf (interface)
Signature
export interface SortedSetFromSelf<Value extends Schema.Any>
extends Annotable<
SortedSetFromSelf<Value>,
sortedSet_.SortedSet<Schema.Type<Value>>,
sortedSet_.SortedSet<Schema.Encoded<Value>>,
Schema.Context<Value>
> {}
Added in v1.0.0
Struct (interface)
Signature
export interface Struct<Fields extends Struct.Fields> extends TypeLiteral<Fields, []> {
annotations(annotations: Annotations.Schema<Types.Simplify<Struct.Type<Fields>>>): Struct<Fields>
}
Added in v1.0.0
SymbolFromSelf (interface)
Signature
export interface SymbolFromSelf extends Annotable<SymbolFromSelf, symbol> {}
Added in v1.0.0
Trim (interface)
Signature
export interface Trim extends Annotable<Trim, string> {}
Added in v1.0.0
Tuple (interface)
Signature
export interface Tuple<Elements extends TupleType.Elements> extends TupleType<Elements, []> {
annotations(annotations: Annotations.Schema<TupleType.Type<Elements, []>>): Tuple<Elements>
}
Added in v1.0.0
TupleType (interface)
Signature
export interface TupleType<Elements extends TupleType.Elements, Rest extends ReadonlyArray<Schema.Any>>
extends Schema<
TupleType.Type<Elements, Rest>,
TupleType.Encoded<Elements, Rest>,
Schema.Context<Elements[number]> | Schema.Context<Rest[number]>
> {
readonly elements: Readonly<Elements>
readonly rest: Readonly<Rest>
annotations(annotations: Annotations.Schema<TupleType.Type<Elements, Rest>>): TupleType<Elements, Rest>
}
Added in v1.0.0
TypeLiteral (interface)
Signature
export interface TypeLiteral<Fields extends Struct.Fields, Records extends IndexSignature.Records>
extends Schema<
Types.Simplify<TypeLiteral.Type<Fields, Records>>,
Types.Simplify<TypeLiteral.Encoded<Fields, Records>>,
Struct.Context<Fields> | IndexSignature.Context<Records>
> {
readonly fields: { readonly [K in keyof Fields]: Fields[K] }
readonly records: Readonly<Records>
annotations(
annotations: Annotations.Schema<Types.Simplify<TypeLiteral.Type<Fields, Records>>>
): TypeLiteral<Fields, Records>
}
Added in v1.0.0
Undefined (interface)
Signature
export interface Undefined extends Annotable<Undefined, undefined> {}
Added in v1.0.0
UndefinedOr (interface)
Signature
export interface UndefinedOr<S extends Schema.Any> extends Union<[S, Undefined]> {
annotations(annotations: Annotations.Schema<Schema.Type<S> | undefined>): UndefinedOr<S>
}
Added in v1.0.0
Union (interface)
Signature
export interface Union<Members extends ReadonlyArray<Schema.Any>>
extends Schema<Schema.Type<Members[number]>, Schema.Encoded<Members[number]>, Schema.Context<Members[number]>> {
readonly members: Readonly<Members>
annotations(annotations: Annotations.Schema<Schema.Type<Members[number]>>): Union<Members>
}
Added in v1.0.0
Unknown (interface)
Signature
export interface Unknown extends Annotable<Unknown, unknown> {}
Added in v1.0.0
Uppercase (interface)
Signature
export interface Uppercase extends Annotable<Uppercase, string> {}
Added in v1.0.0
ValidDateFromSelf (interface)
Signature
export interface ValidDateFromSelf extends Annotable<ValidDateFromSelf, Date> {}
Added in v1.0.0
Void (interface)
Signature
export interface Void extends Annotable<Void, void> {}
Added in v1.0.0
brand (interface)
Signature
export interface brand<S extends Schema.AnyNoContext, B extends string | symbol>
extends BrandSchema<Schema.Type<S> & brand_.Brand<B>, Schema.Encoded<S>> {
annotations(annotations: Annotations.Schema<Schema.Type<S> & brand_.Brand<B>>): brand<S, B>
}
Added in v1.0.0
extend (interface)
Signature
export interface extend<Self extends Schema.Any, That extends Schema.Any>
extends Schema<
Types.Simplify<Schema.Type<Self> & Schema.Type<That>>,
Types.Simplify<Schema.Encoded<Self> & Schema.Encoded<That>>,
Schema.Context<Self> | Schema.Context<That>
> {}
Added in v1.0.0
instanceOf (interface)
Signature
export interface instanceOf<A> extends Annotable<instanceOf<A>, A> {}
Added in v1.0.0
mutable (interface)
Signature
export interface mutable<S extends Schema.Any>
extends Annotable<
mutable<S>,
SimplifyMutable<Schema.Type<S>>,
SimplifyMutable<Schema.Encoded<S>>,
Schema.Context<S>
> {}
Added in v1.0.0
suspend (interface)
Signature
export interface suspend<A, I, R> extends Schema<A, I, R> {
annotations(annotations: Annotations.Schema<A>): suspend<A, I, R>
}
Added in v1.0.0
transform (interface)
Signature
export interface transform<From extends Schema.Any, To extends Schema.Any> extends transformOrFail<From, To, never> {
annotations(annotations: Annotations.Schema<Schema.Type<To>>): transform<From, To>
}
Added in v1.0.0
transformLiteral (interface)
Signature
export interface transformLiteral<Type, Encoded> extends Annotable<transformLiteral<Type, Encoded>, Type, Encoded> {}
Added in v1.0.0
transformOrFail (interface)
Signature
export interface transformOrFail<From extends Schema.Any, To extends Schema.Any, R>
extends Annotable<
transformOrFail<From, To, R>,
Schema.Type<To>,
Schema.Encoded<From>,
Schema.Context<From> | Schema.Context<To> | R
> {
readonly from: From
readonly to: To
}
Added in v1.0.0
bigint constructors
NegativeBigInt
Signature
export declare const NegativeBigInt: Schema<bigint, string, never>
Added in v1.0.0
NegativeBigIntFromSelf
Signature
export declare const NegativeBigIntFromSelf: Schema<bigint, bigint, never>
Added in v1.0.0
NonNegativeBigInt
Signature
export declare const NonNegativeBigInt: Schema<bigint, string, never>
Added in v1.0.0
NonNegativeBigIntFromSelf
Signature
export declare const NonNegativeBigIntFromSelf: Schema<bigint, bigint, never>
Added in v1.0.0
NonPositiveBigInt
Signature
export declare const NonPositiveBigInt: Schema<bigint, string, never>
Added in v1.0.0
NonPositiveBigIntFromSelf
Signature
export declare const NonPositiveBigIntFromSelf: Schema<bigint, bigint, never>
Added in v1.0.0
PositiveBigInt
Signature
export declare const PositiveBigInt: Schema<bigint, string, never>
Added in v1.0.0
PositiveBigIntFromSelf
Signature
export declare const PositiveBigIntFromSelf: Schema<bigint, bigint, never>
Added in v1.0.0
bigint filters
betweenBigInt
Signature
export declare const betweenBigInt: <A extends bigint>(
min: bigint,
max: bigint,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
greaterThanBigInt
Signature
export declare const greaterThanBigInt: <A extends bigint>(
min: bigint,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
greaterThanOrEqualToBigInt
Signature
export declare const greaterThanOrEqualToBigInt: <A extends bigint>(
min: bigint,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
lessThanBigInt
Signature
export declare const lessThanBigInt: <A extends bigint>(
max: bigint,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
lessThanOrEqualToBigInt
Signature
export declare const lessThanOrEqualToBigInt: <A extends bigint>(
max: bigint,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
negativeBigInt
Signature
export declare const negativeBigInt: <A extends bigint>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
nonNegativeBigInt
Signature
export declare const nonNegativeBigInt: <A extends bigint>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
nonPositiveBigInt
Signature
export declare const nonPositiveBigInt: <A extends bigint>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
positiveBigInt
Signature
export declare const positiveBigInt: <A extends bigint>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
bigint transformations
BigInt
This schema transforms a string
into a bigint
by parsing the string using the BigInt
function.
It returns an error if the value can’t be converted (for example when non-numeric characters are provided).
Signature
export declare const BigInt: $BigInt
Added in v1.0.0
BigIntFromNumber
This schema transforms a number
into a bigint
by parsing the number using the BigInt
function.
It returns an error if the value can’t be safely encoded as a number
due to being out of range.
Signature
export declare const BigIntFromNumber: BigIntFromNumber
Added in v1.0.0
clampBigInt
Clamps a bigint between a minimum and a maximum value.
Signature
export declare const clampBigInt: (
minimum: bigint,
maximum: bigint
) => <R, I, A extends bigint>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
boolean constructors
BooleanFromUnknown
Converts an arbitrary value to a boolean
by testing whether it is truthy. Uses !!val
to coerce the value to a boolean
.
Signature
export declare const BooleanFromUnknown: BooleanFromUnknown
Added in v1.0.0
boolean transformations
Not
Signature
export declare const Not: Not
Added in v1.0.0
branding
BrandSchema (interface)
Signature
export interface BrandSchema<A extends brand_.Brand<any>, I>
extends Annotable<BrandSchema<A, I>, A, I>,
brand_.Brand.Constructor<A> {}
Added in v1.0.0
asBrandSchema
Signature
export declare const asBrandSchema: <A extends brand_.Brand<any>, I>(schema: BrandSchema<A, I>) => BrandSchema<A, I>
Added in v1.0.0
brand
Returns a nominal branded schema by applying a brand to a given schema.
Schema<A> + B -> Schema<A & Brand<B>>
Signature
export declare const brand: <S extends Schema.AnyNoContext, B extends string | symbol>(
brand: B,
annotations?: Annotations.Schema<any, readonly []> | undefined
) => (self: S) => brand<S, B>
Example
import * as Schema from "@effect/schema/Schema"
const Int = Schema.Number.pipe(Schema.int(), Schema.brand("Int"))
type Int = Schema.Schema.Type<typeof Int> // number & Brand<"Int">
Added in v1.0.0
classes
Class
Signature
export declare const Class: <Self = never>(
identifier: string
) => <Fields extends Struct.Fields>(
fields: Fields,
annotations?: Annotations.Schema<Self, readonly []> | undefined
) => [Self] extends [never]
? "Missing `Self` generic - use `class Self extends Class<Self>()({ ... })`"
: Class<
Self,
Fields,
Types.Simplify<
Types.UnionToIntersection<
{
[K in keyof F]: F[K] extends Struct.OptionalPropertySignature
? { readonly [H in K]?: Schema.Type<F[H]> | undefined }
: { readonly [h in K]: Schema.Type<F[h]> }
}[keyof F]
>
>,
Types.Simplify<Struct.Encoded<Fields>>,
Schema.Context<Fields[keyof Fields]>,
Types.Simplify<
Types.UnionToIntersection<
{
[K in keyof F]: F[K] extends Struct.OptionalPropertySignature
? { readonly [H in K]?: Schema.Type<F[H]> | undefined }
: { readonly [h in K]: Schema.Type<F[h]> }
}[keyof F]
>
>,
{},
{}
>
Added in v1.0.0
TaggedClass
Signature
export declare const TaggedClass: <Self = never>(
identifier?: string
) => <Tag extends string, Fields extends Struct.Fields>(
tag: Tag,
fields: Fields,
annotations?: Annotations.Schema<Self, readonly []> | undefined
) => [Self] extends [never]
? 'Missing `Self` generic - use `class Self extends TaggedClass<Self>()("Tag", { ... })`'
: Class<
Self,
{ readonly _tag: Literal<[Tag]> } & Fields,
Types.Simplify<any>,
Types.Simplify<
{ readonly _tag: Tag } & {
readonly [K in Exclude<keyof Fields, Struct.EncodedTokenKeys<Fields>> as Struct.Key<
Fields,
K
>]: Schema.Encoded<Fields[K]>
} & {
readonly [K in Struct.EncodedTokenKeys<Fields> as Struct.Key<Fields, K>]?:
| Schema.Encoded<Fields[K]>
| undefined
}
>,
Schema.Context<Fields[keyof Fields]>,
Types.Simplify<
Types.UnionToIntersection<
{
[K in keyof F]: F[K] extends Struct.OptionalPropertySignature
? { readonly [H in K]?: Schema.Type<F[H]> | undefined }
: { readonly [h in K]: Schema.Type<F[h]> }
}[keyof F]
>
>,
{},
{}
>
Added in v1.0.0
TaggedError
Signature
export declare const TaggedError: <Self = never>(
identifier?: string
) => <Tag extends string, Fields extends Struct.Fields>(
tag: Tag,
fields: Fields,
annotations?: Annotations.Schema<Self, readonly []> | undefined
) => [Self] extends [never]
? 'Missing `Self` generic - use `class Self extends TaggedError<Self>()("Tag", { ... })`'
: Class<
Self,
{ readonly _tag: Literal<[Tag]> } & Fields,
Types.Simplify<any>,
Types.Simplify<
{ readonly _tag: Tag } & {
readonly [K in Exclude<keyof Fields, Struct.EncodedTokenKeys<Fields>> as Struct.Key<
Fields,
K
>]: Schema.Encoded<Fields[K]>
} & {
readonly [K in Struct.EncodedTokenKeys<Fields> as Struct.Key<Fields, K>]?:
| Schema.Encoded<Fields[K]>
| undefined
}
>,
Schema.Context<Fields[keyof Fields]>,
Types.Simplify<
Types.UnionToIntersection<
{
[K in keyof F]: F[K] extends Struct.OptionalPropertySignature
? { readonly [H in K]?: Schema.Type<F[H]> | undefined }
: { readonly [h in K]: Schema.Type<F[h]> }
}[keyof F]
>
>,
{},
cause_.YieldableError
>
Added in v1.0.0
TaggedRequest
Signature
export declare const TaggedRequest: <Self = never>(
identifier?: string
) => <Tag extends string, Fields extends Struct.Fields, EA, EI, ER, AA, AI, AR>(
tag: Tag,
Failure: Schema<EA, EI, ER>,
Success: Schema<AA, AI, AR>,
fields: Fields,
annotations?: Annotations.Schema<Self, readonly []> | undefined
) => [Self] extends [never]
? 'Missing `Self` generic - use `class Self extends TaggedRequest<Self>()("Tag", SuccessSchema, FailureSchema, { ... })`'
: Class<
Self,
{ readonly _tag: Literal<[Tag]> } & Fields,
Types.Simplify<any>,
Types.Simplify<
{ readonly _tag: Tag } & {
readonly [K in Exclude<keyof Fields, Struct.EncodedTokenKeys<Fields>> as Struct.Key<
Fields,
K
>]: Schema.Encoded<Fields[K]>
} & {
readonly [K in Struct.EncodedTokenKeys<Fields> as Struct.Key<Fields, K>]?:
| Schema.Encoded<Fields[K]>
| undefined
}
>,
Schema.Context<Fields[keyof Fields]>,
Types.Simplify<
Types.UnionToIntersection<
{
[K in keyof F]: F[K] extends Struct.OptionalPropertySignature
? { readonly [H in K]?: Schema.Type<F[H]> | undefined }
: { readonly [h in K]: Schema.Type<F[h]> }
}[keyof F]
>
>,
TaggedRequest<
Tag,
Self,
{ readonly _tag: Tag } & {
readonly [K in Exclude<keyof Fields, Struct.EncodedTokenKeys<Fields>> as Struct.Key<
Fields,
K
>]: Schema.Encoded<Fields[K]>
} & {
readonly [K in Struct.EncodedTokenKeys<Fields> as Struct.Key<Fields, K>]?:
| Schema.Encoded<Fields[K]>
| undefined
},
Schema.Context<Fields[keyof Fields]>,
AA,
AI,
EA,
EI,
ER | AR
>,
{}
>
Added in v1.0.0
TaggedRequest (interface)
Signature
export interface TaggedRequest<Tag extends string, S, SI, SR, A, AI, E, EI, RR>
extends Request.Request<A, E>,
Serializable.SerializableWithResult<S, SI, SR, A, AI, E, EI, RR> {
readonly _tag: Tag
}
Added in v1.0.0
TaggedRequest (namespace)
Added in v1.0.0
Any (type alias)
Signature
export type Any =
| TaggedRequest<string, any, any, any, any, any, any, any, any>
| TaggedRequest<string, any, any, any, any, any, never, never, any>
Added in v1.0.0
combinators
NullOr
Signature
export declare const NullOr: <S extends Schema.Any>(self: S) => NullOr<S>
Added in v1.0.0
NullishOr
Signature
export declare const NullishOr: <S extends Schema.Any>(self: S) => NullishOr<S>
Added in v1.0.0
UndefinedOr
Signature
export declare const UndefinedOr: <S extends Schema.Any>(self: S) => UndefinedOr<S>
Added in v1.0.0
Union
Signature
export declare function Union<Members extends AST.Members<Schema.Any>>(...members: Members): Union<Members>
export declare function Union<Member extends Schema.Any>(member: Member): Member
export declare function Union(): Never
export declare function Union<Members extends ReadonlyArray<Schema.Any>>(
...members: Members
): Schema<Schema.Type<Members[number]>, Schema.Encoded<Members[number]>, Schema.Context<Members[number]>>
Added in v1.0.0
attachPropertySignature
Attaches a property signature with the specified key and value to the schema. This API is useful when you want to add a property to your schema which doesn’t describe the shape of the input, but rather maps to another schema, for example when you want to add a discriminant to a simple union.
Signature
export declare const attachPropertySignature: {
<K extends PropertyKey, V extends symbol | AST.LiteralValue, A>(
key: K,
value: V,
annotations?: Annotations.Schema<Types.Simplify<A & { readonly [k in K]: V }>, readonly []> | undefined
): <I, R>(schema: Schema<A, I, R>) => Schema<Types.Simplify<A & { readonly [k in K]: V }>, I, R>
<A, I, R, K extends PropertyKey, V extends symbol | AST.LiteralValue>(
schema: Schema<A, I, R>,
key: K,
value: V,
annotations?: Annotations.Schema<Types.Simplify<A & { readonly [k in K]: V }>, readonly []> | undefined
): Schema<Types.Simplify<A & { readonly [k in K]: V }>, I, R>
}
Example
import * as S from "@effect/schema/Schema"
import { pipe } from "effect/Function"
const Circle = S.Struct({ radius: S.Number })
const Square = S.Struct({ sideLength: S.Number })
const Shape = S.Union(
Circle.pipe(S.attachPropertySignature("kind", "circle")),
Square.pipe(S.attachPropertySignature("kind", "square"))
)
assert.deepStrictEqual(S.decodeSync(Shape)({ radius: 10 }), {
kind: "circle",
radius: 10
})
Added in v1.0.0
compose
Signature
export declare const compose: {
<D, C extends B, R2, B>(to: Schema<D, C, R2>): <A, R1>(from: Schema<B, A, R1>) => Schema<D, A, R2 | R1>
<D, C, R2>(to: Schema<D, C, R2>): <B extends C, A, R1>(from: Schema<B, A, R1>) => Schema<D, A, R2 | R1>
<C, B, R2>(
to: Schema<C, B, R2>,
options?: { readonly strict: true }
): <A, R1>(from: Schema<B, A, R1>) => Schema<C, A, R2 | R1>
<D, C, R2>(
to: Schema<D, C, R2>,
options: { readonly strict: false }
): <B, A, R1>(from: Schema<B, A, R1>) => Schema<D, A, R2 | R1>
<B, A, R1, D, C extends B, R2>(from: Schema<B, A, R1>, to: Schema<D, C, R2>): Schema<D, A, R1 | R2>
<B extends C, A, R1, D, C, R2>(from: Schema<B, A, R1>, to: Schema<D, C, R2>): Schema<D, A, R1 | R2>
<B, A, R1, C, R2>(
from: Schema<B, A, R1>,
to: Schema<C, B, R2>,
options?: { readonly strict: true }
): Schema<C, A, R1 | R2>
<B, A, R1, D, C, R2>(
from: Schema<B, A, R1>,
to: Schema<D, C, R2>,
options: { readonly strict: false }
): Schema<D, A, R1 | R2>
}
Added in v1.0.0
extend
Signature
export declare const extend: {
<That extends Schema.Any>(that: That): <Self extends Schema.Any>(self: Self) => extend<Self, That>
<Self extends Schema.Any, That extends Schema.Any>(self: Self, that: That): extend<Self, That>
}
Added in v1.0.0
filter
Signature
export declare function filter<A>(
f: (a: A, options: ParseOptions, self: AST.Refinement) => option_.Option<ParseResult.ParseIssue>,
annotations?: Annotations.Filter<A>
): <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
export declare function filter<C extends A, B extends A, A = C>(
refinement: Predicate.Refinement<A, B>,
annotations?: Annotations.Filter<A>
): <I, R>(self: Schema<C, I, R>) => Schema<C & B, I, R>
export declare function filter<A>(
predicate: Predicate.Predicate<Types.NoInfer<A>>,
annotations?: Annotations.Filter<Types.NoInfer<A>>
): <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
keyof
Signature
export declare const keyof: <A, I, R>(self: Schema<A, I, R>) => Schema<keyof A, keyof A, never>
Added in v1.0.0
mutable
Creates a new schema with shallow mutability applied to its properties.
Signature
export declare const mutable: <S extends Schema.Any>(schema: S) => mutable<S>
Added in v1.0.0
partial
Signature
export declare const partial: {
<const Options extends { readonly exact: true } | undefined>(
options?: Options | undefined
): <A, I, R>(
self: Schema<A, I, R>
) => Schema<
{ [K in keyof A]?: A[K] | ([undefined] extends [Options] ? undefined : never) | undefined },
{ [K in keyof I]?: I[K] | ([undefined] extends [Options] ? undefined : never) | undefined },
R
>
<A, I, R, const Options extends { readonly exact: true } | undefined>(
self: Schema<A, I, R>,
options?: Options | undefined
): Schema<
{ [K in keyof A]?: A[K] | ([undefined] extends [Options] ? undefined : never) | undefined },
{ [K in keyof I]?: I[K] | ([undefined] extends [Options] ? undefined : never) | undefined },
R
>
}
Added in v1.0.0
required
Signature
export declare const required: <A, I, R>(
self: Schema<A, I, R>
) => Schema<{ [K in keyof A]-?: A[K] }, { [K in keyof I]-?: I[K] }, R>
Added in v1.0.0
transform
Create a new Schema
by transforming the input and output of an existing Schema
using the provided mapping functions.
Signature
export declare const transform: {
<To extends Schema.Any, From extends Schema.Any>(
to: To,
options:
| {
readonly decode: (fromA: Schema.Type<From>) => Schema.Encoded<To>
readonly encode: (toI: Schema.Encoded<To>) => Schema.Type<From>
readonly strict?: true | undefined
}
| {
readonly decode: (fromA: Schema.Type<From>) => unknown
readonly encode: (toI: Schema.Encoded<To>) => unknown
readonly strict: false
}
): (from: From) => transform<From, To>
<To extends Schema.Any, From extends Schema.Any>(
from: From,
to: To,
options:
| {
readonly decode: (fromA: Schema.Type<From>) => Schema.Encoded<To>
readonly encode: (toI: Schema.Encoded<To>) => Schema.Type<From>
readonly strict?: true | undefined
}
| {
readonly decode: (fromA: Schema.Type<From>) => unknown
readonly encode: (toI: Schema.Encoded<To>) => unknown
readonly strict: false
}
): transform<From, To>
}
Added in v1.0.0
transformOrFail
Create a new Schema
by transforming the input and output of an existing Schema
using the provided decoding functions.
Signature
export declare const transformOrFail: {
<To extends Schema.Any, From extends Schema.Any, RD, RE>(
to: To,
options:
| {
readonly decode: (
fromA: Schema.Type<From>,
options: ParseOptions,
ast: AST.Transformation
) => Effect.Effect<Schema.Encoded<To>, ParseResult.ParseIssue, RD>
readonly encode: (
toI: Schema.Encoded<To>,
options: ParseOptions,
ast: AST.Transformation
) => Effect.Effect<Schema.Type<From>, ParseResult.ParseIssue, RE>
readonly strict?: true | undefined
}
| {
readonly decode: (
fromA: Schema.Type<From>,
options: ParseOptions,
ast: AST.Transformation
) => Effect.Effect<unknown, ParseResult.ParseIssue, RD>
readonly encode: (
toI: Schema.Encoded<To>,
options: ParseOptions,
ast: AST.Transformation
) => Effect.Effect<unknown, ParseResult.ParseIssue, RE>
readonly strict: false
}
): (from: From) => transformOrFail<From, To, RD | RE>
<To extends Schema.Any, From extends Schema.Any, RD, RE>(
from: From,
to: To,
options:
| {
readonly decode: (
fromA: Schema.Type<From>,
options: ParseOptions,
ast: AST.Transformation
) => Effect.Effect<Schema.Encoded<To>, ParseResult.ParseIssue, RD>
readonly encode: (
toI: Schema.Encoded<To>,
options: ParseOptions,
ast: AST.Transformation
) => Effect.Effect<Schema.Type<From>, ParseResult.ParseIssue, RE>
readonly strict?: true | undefined
}
| {
readonly decode: (
fromA: Schema.Type<From>,
options: ParseOptions,
ast: AST.Transformation
) => Effect.Effect<unknown, ParseResult.ParseIssue, RD>
readonly encode: (
toI: Schema.Encoded<To>,
options: ParseOptions,
ast: AST.Transformation
) => Effect.Effect<unknown, ParseResult.ParseIssue, RE>
readonly strict: false
}
): transformOrFail<From, To, RD | RE>
}
Added in v1.0.0
constructors
Array
Signature
export declare const Array: <Value extends Schema.Any>(value: Value) => $Array<Value>
Added in v1.0.0
Enums
Signature
export declare const Enums: <A extends { [x: string]: string | number }>(enums: A) => Enums<A>
Added in v1.0.0
Literal
Signature
export declare function Literal<Literals extends array_.NonEmptyReadonlyArray<AST.LiteralValue>>(
...literals: Literals
): Literal<Literals>
export declare function Literal(): Never
export declare function Literal<Literals extends ReadonlyArray<AST.LiteralValue>>(
...literals: Literals
): Schema<Literals[number]>
Added in v1.0.0
NonEmptyArray
Signature
export declare const NonEmptyArray: <Value extends Schema.Any>(value: Value) => NonEmptyArray<Value>
Added in v1.0.0
Record
Signature
export declare const Record: <K extends Schema.All, V extends Schema.All>(key: K, value: V) => $Record<K, V>
Added in v1.0.0
Struct
Signature
export declare function Struct<Fields extends Struct.Fields, const Records extends IndexSignature.NonEmptyRecords>(
fields: Fields,
...records: Records
): TypeLiteral<Fields, Records>
export declare function Struct<Fields extends Struct.Fields>(fields: Fields): Struct<Fields>
Added in v1.0.0
TemplateLiteral
Signature
export declare const TemplateLiteral: <T extends [Schema.AnyNoContext, ...Schema.AnyNoContext[]]>(
...[head, ...tail]: T
) => Schema<Join<{ [K in keyof T]: Schema.Type<T[K]> }>, Join<{ [K in keyof T]: Schema.Type<T[K]> }>, never>
Added in v1.0.0
Tuple
Signature
export declare function Tuple<
const Elements extends TupleType.Elements,
Rest extends array_.NonEmptyReadonlyArray<Schema.Any>
>(elements: Elements, ...rest: Rest): TupleType<Elements, Rest>
export declare function Tuple<Elements extends TupleType.Elements>(...elements: Elements): Tuple<Elements>
Added in v1.0.0
UniqueSymbolFromSelf
Signature
export declare const UniqueSymbolFromSelf: <S extends symbol>(symbol: S) => Schema<S, S, never>
Added in v1.0.0
declare
The constraint R extends Schema.Context<P[number]>
enforces dependencies solely from typeParameters
. This ensures that when you call Schema.to
or Schema.from
, you receive a schema with a never
context.
Signature
export declare const declare: {
<A>(
is: (input: unknown) => input is A,
annotations?: Annotations.Schema<A, readonly []> | undefined
): Schema<A, A, never>
<const P extends readonly Schema.Any[], I, A>(
typeParameters: P,
options: {
readonly decode: (
...typeParameters: { readonly [K in keyof P]: Schema<Schema.Type<P[K]>, Schema.Encoded<P[K]>, never> }
) => (
input: unknown,
options: ParseOptions,
ast: AST.Declaration
) => Effect.Effect<A, ParseResult.ParseIssue, never>
readonly encode: (
...typeParameters: { readonly [K in keyof P]: Schema<Schema.Type<P[K]>, Schema.Encoded<P[K]>, never> }
) => (
input: unknown,
options: ParseOptions,
ast: AST.Declaration
) => Effect.Effect<I, ParseResult.ParseIssue, never>
},
annotations?: Annotations.Schema<A, { readonly [K in keyof P]: Schema.Type<P[K]> }> | undefined
): Schema<A, I, Schema.Context<P[number]>>
}
Added in v1.0.0
fromBrand
Signature
export declare const fromBrand: <C extends brand_.Brand<string | symbol>>(
constructor: brand_.Brand.Constructor<C>,
annotations?: Annotations.Filter<brand_.Brand.Unbranded<C>> | undefined
) => <R, I, A extends brand_.Brand.Unbranded<C>>(self: Schema<A, I, R>) => Schema<A & C, I, R>
Added in v1.0.0
instanceOf
Signature
export declare const instanceOf: <A extends abstract new (...args: any) => any>(
constructor: A,
annotations?: Annotations.Schema<InstanceType<A>, readonly []> | undefined
) => instanceOf<InstanceType<A>>
Added in v1.0.0
make
Signature
export declare const make: <A, I = A, R = never>(ast: AST.AST) => Schema<A, I, R>
Added in v1.0.0
pickLiteral
Creates a new Schema
from a literal schema.
Signature
export declare const pickLiteral: <A extends AST.LiteralValue, L extends array_.NonEmptyReadonlyArray<A>>(
...literals: L
) => <I, R>(_schema: Schema<A, I, R>) => Literal<[...L]>
Example
import * as S from "@effect/schema/Schema"
import { Either } from "effect"
const schema = S.Literal("a", "b", "c").pipe(S.pickLiteral("a", "b"))
assert.deepStrictEqual(S.decodeSync(schema)("a"), "a")
assert.deepStrictEqual(S.decodeSync(schema)("b"), "b")
assert.strictEqual(Either.isLeft(S.decodeUnknownEither(schema)("c")), true)
Added in v1.0.0
suspend
Signature
export declare const suspend: <A, I, R>(f: () => Schema<A, I, R>) => suspend<A, I, R>
Added in v1.0.0
transformLiteral
Creates a new Schema
which transforms literal values.
Signature
export declare const transformLiteral: <Encoded extends AST.LiteralValue, Type extends AST.LiteralValue>(
from: Encoded,
to: Type
) => transformLiteral<Type, Encoded>
Example
import * as S from "@effect/schema/Schema"
const schema = S.transformLiteral(0, "a")
assert.deepStrictEqual(S.decodeSync(schema)(0), "a")
Added in v1.0.0
transformLiterals
Creates a new Schema
which maps between corresponding literal values.
Signature
export declare function transformLiterals<
const A extends AST.Members<readonly [from: AST.LiteralValue, to: AST.LiteralValue]>
>(...pairs: A): Union<{ -readonly [I in keyof A]: transformLiteral<A[I][1], A[I][0]> }>
export declare function transformLiterals<Encoded extends AST.LiteralValue, Type extends AST.LiteralValue>(
pairs: [Encoded, Type]
): transformLiteral<Type, Encoded>
export declare function transformLiterals<
const A extends ReadonlyArray<readonly [from: AST.LiteralValue, to: AST.LiteralValue]>
>(...pairs: A): Schema<A[number][1], A[number][0]>
Example
import * as S from "@effect/schema/Schema"
const Animal = S.transformLiterals([0, "cat"], [1, "dog"], [2, "cow"])
assert.deepStrictEqual(S.decodeSync(Animal)(1), "dog")
Added in v1.0.0
decoding
decode
Signature
export declare const decode: <A, I, R>(
schema: Schema<A, I, R>,
options?: ParseOptions
) => (i: I, overrideOptions?: ParseOptions) => Effect.Effect<A, ParseResult.ParseError, R>
Added in v1.0.0
decodeEither
Signature
export declare const decodeEither: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions
) => (i: I, overrideOptions?: ParseOptions) => either_.Either<A, ParseResult.ParseError>
Added in v1.0.0
decodeOption
Signature
export declare const decodeOption: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions | undefined
) => (i: I, overrideOptions?: ParseOptions | undefined) => Option.Option<A>
Added in v1.0.0
decodePromise
Signature
export declare const decodePromise: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions
) => (i: I, overrideOptions?: ParseOptions) => Promise<A>
Added in v1.0.0
decodeSync
Signature
export declare const decodeSync: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions | undefined
) => (i: I, overrideOptions?: ParseOptions | undefined) => A
Added in v1.0.0
decodeUnknown
Signature
export declare const decodeUnknown: <A, I, R>(
schema: Schema<A, I, R>,
options?: ParseOptions
) => (u: unknown, overrideOptions?: ParseOptions) => Effect.Effect<A, ParseResult.ParseError, R>
Added in v1.0.0
decodeUnknownEither
Signature
export declare const decodeUnknownEither: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions
) => (u: unknown, overrideOptions?: ParseOptions) => either_.Either<A, ParseResult.ParseError>
Added in v1.0.0
decodeUnknownOption
Signature
export declare const decodeUnknownOption: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions | undefined
) => (u: unknown, overrideOptions?: ParseOptions | undefined) => Option.Option<A>
Added in v1.0.0
decodeUnknownPromise
Signature
export declare const decodeUnknownPromise: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions
) => (u: unknown, overrideOptions?: ParseOptions) => Promise<A>
Added in v1.0.0
decodeUnknownSync
Signature
export declare const decodeUnknownSync: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions | undefined
) => (u: unknown, overrideOptions?: ParseOptions | undefined) => A
Added in v1.0.0
encoding
encode
Signature
export declare const encode: <A, I, R>(
schema: Schema<A, I, R>,
options?: ParseOptions
) => (a: A, overrideOptions?: ParseOptions) => Effect.Effect<I, ParseResult.ParseError, R>
Added in v1.0.0
encodeEither
Signature
export declare const encodeEither: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions
) => (a: A, overrideOptions?: ParseOptions) => either_.Either<I, ParseResult.ParseError>
Added in v1.0.0
encodeOption
Signature
export declare const encodeOption: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions | undefined
) => (input: A, overrideOptions?: ParseOptions | undefined) => Option.Option<I>
Added in v1.0.0
encodePromise
Signature
export declare const encodePromise: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions
) => (a: A, overrideOptions?: ParseOptions) => Promise<I>
Added in v1.0.0
encodeSync
Signature
export declare const encodeSync: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions | undefined
) => (a: A, overrideOptions?: ParseOptions | undefined) => I
Added in v1.0.0
encodeUnknown
Signature
export declare const encodeUnknown: <A, I, R>(
schema: Schema<A, I, R>,
options?: ParseOptions
) => (u: unknown, overrideOptions?: ParseOptions) => Effect.Effect<I, ParseResult.ParseError, R>
Added in v1.0.0
encodeUnknownEither
Signature
export declare const encodeUnknownEither: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions
) => (u: unknown, overrideOptions?: ParseOptions) => either_.Either<I, ParseResult.ParseError>
Added in v1.0.0
encodeUnknownOption
Signature
export declare const encodeUnknownOption: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions | undefined
) => (u: unknown, overrideOptions?: ParseOptions | undefined) => Option.Option<I>
Added in v1.0.0
encodeUnknownPromise
Signature
export declare const encodeUnknownPromise: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions
) => (u: unknown, overrideOptions?: ParseOptions) => Promise<I>
Added in v1.0.0
encodeUnknownSync
Signature
export declare const encodeUnknownSync: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions | undefined
) => (u: unknown, overrideOptions?: ParseOptions | undefined) => I
Added in v1.0.0
formatting
format
Signature
export declare const format: <A, I, R>(schema: Schema<A, I, R>) => string
Added in v1.0.0
guards
isSchema
Tests if a value is a Schema
.
Signature
export declare const isSchema: (u: unknown) => u is Schema.Any
Added in v1.0.0
hashing
hash
Signature
export declare const hash: <A, I, R>(schema: Schema<A, I, R>) => number
Added in v1.0.0
model
Schema (interface)
Signature
export interface Schema<in out A, in out I = A, out R = never> extends Schema.Variance<A, I, R>, Pipeable {
readonly ast: AST.AST
annotations(annotations: Annotations.Schema<A>): Schema<A, I, R>
}
Added in v1.0.0
number constructors
Finite
Signature
export declare const Finite: $Number
Added in v1.0.0
Int
Signature
export declare const Int: $Number
Added in v1.0.0
JsonNumber
The JsonNumber
is a schema for representing JSON numbers. It ensures that the provided value is a valid number by filtering out NaN
and (+/-) Infinity
. This is useful when you want to validate and represent numbers in JSON format.
Signature
export declare const JsonNumber: $Number
Example
import * as S from "@effect/schema/Schema"
const is = S.is(S.JsonNumber)
assert.deepStrictEqual(is(42), true)
assert.deepStrictEqual(is(Number.NaN), false)
assert.deepStrictEqual(is(Number.POSITIVE_INFINITY), false)
assert.deepStrictEqual(is(Number.NEGATIVE_INFINITY), false)
Added in v1.0.0
Negative
Signature
export declare const Negative: $Number
Added in v1.0.0
NonNaN
Signature
export declare const NonNaN: $Number
Added in v1.0.0
NonNegative
Signature
export declare const NonNegative: $Number
Added in v1.0.0
NonPositive
Signature
export declare const NonPositive: $Number
Added in v1.0.0
NumberFromString
This schema transforms a string
into a number
by parsing the string using the Number
function.
It returns an error if the value can’t be converted (for example when non-numeric characters are provided).
The following special string values are supported: “NaN”, “Infinity”, “-Infinity”.
Signature
export declare const NumberFromString: NumberFromString
Added in v1.0.0
Positive
Signature
export declare const Positive: $Number
Added in v1.0.0
number filters
between
This filter checks whether the provided number falls within the specified minimum and maximum values.
Signature
export declare const between: <A extends number>(
min: number,
max: number,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
finite
Ensures that the provided value is a finite number.
This schema filters out non-finite numeric values, allowing only finite numbers to pass through.
Signature
export declare const finite: <A extends number>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
greaterThan
This filter checks whether the provided number is greater than the specified minimum.
Signature
export declare const greaterThan: <A extends number>(
min: number,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
greaterThanOrEqualTo
This filter checks whether the provided number is greater than or equal to the specified minimum.
Signature
export declare const greaterThanOrEqualTo: <A extends number>(
min: number,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
int
Signature
export declare const int: <A extends number>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
lessThan
This filter checks whether the provided number is less than the specified maximum.
Signature
export declare const lessThan: <A extends number>(
max: number,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
lessThanOrEqualTo
This schema checks whether the provided number is less than or equal to the specified maximum.
Signature
export declare const lessThanOrEqualTo: <A extends number>(
max: number,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
multipleOf
Signature
export declare const multipleOf: <A extends number>(
divisor: number,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
negative
Signature
export declare const negative: <A extends number>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
nonNaN
Signature
export declare const nonNaN: <A extends number>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
nonNegative
Signature
export declare const nonNegative: <A extends number>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
nonPositive
Signature
export declare const nonPositive: <A extends number>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
positive
Signature
export declare const positive: <A extends number>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
number transformations
clamp
Clamps a number between a minimum and a maximum value.
Signature
export declare const clamp: (
minimum: number,
maximum: number
) => <R, I, A extends number>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
primitives
Any
Signature
export declare const Any: Any
Added in v1.0.0
BigIntFromSelf
Signature
export declare const BigIntFromSelf: BigIntFromSelf
Added in v1.0.0
Boolean
Signature
export declare const Boolean: $Boolean
Added in v1.0.0
Never
Signature
export declare const Never: Never
Added in v1.0.0
Null
Signature
export declare const Null: Null
Added in v1.0.0
Number
Signature
export declare const Number: $Number
Added in v1.0.0
Object
Signature
export declare const Object: $Object
Added in v1.0.0
String
Signature
export declare const String: $String
Added in v1.0.0
SymbolFromSelf
Signature
export declare const SymbolFromSelf: SymbolFromSelf
Added in v1.0.0
Undefined
Signature
export declare const Undefined: Undefined
Added in v1.0.0
Unknown
Signature
export declare const Unknown: Unknown
Added in v1.0.0
Void
Signature
export declare const Void: Void
Added in v1.0.0
renaming
rename
Signature
export declare const rename: {
<
A,
const M extends { readonly [K in keyof A]?: PropertyKey | undefined } & {
readonly [K in Exclude<keyof M, keyof A>]: never
}
>(
mapping: M
): <I, R>(self: Schema<A, I, R>) => Schema<Types.Simplify<Rename<A, M>>, I, R>
<
A,
I,
R,
const M extends { readonly [K in keyof A]?: PropertyKey | undefined } & {
readonly [K in Exclude<keyof M, keyof A>]: never
}
>(
self: Schema<A, I, R>,
mapping: M
): Schema<Types.Simplify<Rename<A, M>>, I, R>
}
Added in v1.0.0
string constructors
Char
A schema representing a single character.
Signature
export declare const Char: any
Added in v1.0.0
Lowercased
Signature
export declare const Lowercased: $String
Added in v1.0.0
NonEmpty
Signature
export declare const NonEmpty: $String
Added in v1.0.0
Trimmed
Signature
export declare const Trimmed: $String
Added in v1.0.0
ULID
Represents a Universally Unique Lexicographically Sortable Identifier (ULID).
ULIDs are designed to be compact, URL-safe, and ordered, making them suitable for use as identifiers. This schema ensures that the provided string adheres to the standard ULID format.
Signature
export declare const ULID: $String
Added in v1.0.0
UUID
Represents a Universally Unique Identifier (UUID).
This schema ensures that the provided string adheres to the standard UUID format.
Signature
export declare const UUID: $String
Added in v1.0.0
Uppercased
Signature
export declare const Uppercased: $String
Added in v1.0.0
string filters
endsWith
Signature
export declare const endsWith: <A extends string>(
endsWith: string,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
includes
Signature
export declare const includes: <A extends string>(
searchString: string,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
length
Signature
export declare const length: <A extends string>(
length: number | { readonly min: number; readonly max: number },
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
lowercased
Verifies that a string is lowercased.
Signature
export declare const lowercased: <A extends string>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
maxLength
Signature
export declare const maxLength: <A extends string>(
maxLength: number,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
minLength
Signature
export declare const minLength: <A extends string>(
minLength: number,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
nonEmpty
Signature
export declare const nonEmpty: <A extends string>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
pattern
Signature
export declare const pattern: <A extends string>(
regex: RegExp,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
startsWith
Signature
export declare const startsWith: <A extends string>(
startsWith: string,
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
trimmed
Verifies that a string contains no leading or trailing whitespaces.
Note. This combinator does not make any transformations, it only validates. If what you were looking for was a combinator to trim strings, then check out the trim
combinator.
Signature
export declare const trimmed: <A extends string>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
uppercased
Verifies that a string is uppercased.
Signature
export declare const uppercased: <A extends string>(
annotations?: Annotations.Filter<A> | undefined
) => <I, R>(self: Schema<A, I, R>) => Schema<A, I, R>
Added in v1.0.0
string transformations
Lowercase
This schema converts a string to lowercase.
Signature
export declare const Lowercase: Lowercase
Added in v1.0.0
Trim
This schema allows removing whitespaces from the beginning and end of a string.
Signature
export declare const Trim: Trim
Added in v1.0.0
Uppercase
This schema converts a string to uppercase.
Signature
export declare const Uppercase: Uppercase
Added in v1.0.0
parseJson
The ParseJson
combinator provides a method to convert JSON strings into the unknown
type using the underlying functionality of JSON.parse
. It also utilizes JSON.stringify
for encoding.
You can optionally provide a ParseJsonOptions
to configure both JSON.parse
and JSON.stringify
executions.
Optionally, you can pass a schema Schema<A, I, R>
to obtain an A
type instead of unknown
.
Signature
export declare const parseJson: {
<A, I, R>(schema: Schema<A, I, R>, options?: ParseJsonOptions): Schema<A, string, R>
(options?: ParseJsonOptions): Schema<unknown, string>
}
Example
import * as S from "@effect/schema/Schema"
assert.deepStrictEqual(S.decodeUnknownSync(S.parseJson())(`{"a":"1"}`), { a: "1" })
assert.deepStrictEqual(S.decodeUnknownSync(S.parseJson(S.Struct({ a: S.NumberFromString })))(`{"a":"1"}`), { a: 1 })
Added in v1.0.0
split
Returns a schema that allows splitting a string into an array of strings.
Signature
export declare const split: (separator: string) => Schema<ReadonlyArray<string>, string>
Added in v1.0.0
struct transformations
omit
Signature
export declare const omit: <A, I, Keys extends readonly (keyof A & keyof I)[]>(
...keys: Keys
) => <R>(
self: Schema<A, I, R>
) => Schema<Types.Simplify<Omit<A, Keys[number]>>, Types.Simplify<Omit<I, Keys[number]>>, R>
Added in v1.0.0
pick
Signature
export declare const pick: <A, I, Keys extends readonly (keyof A & keyof I)[]>(
...keys: Keys
) => <R>(
self: Schema<A, I, R>
) => Schema<Types.Simplify<Pick<A, Keys[number]>>, Types.Simplify<Pick<I, Keys[number]>>, R>
Added in v1.0.0
pluck
Given a schema Schema<A, I, R>
and a key key: K
, this function extracts a specific field from the A
type, producing a new schema that represents a transformation from the { readonly [key]: I[K] }
type to A[K]
.
Signature
export declare const pluck: {
<A, I, K extends keyof A & keyof I>(
key: K
): <R>(schema: Schema<A, I, R>) => Schema<A[K], { readonly [P in K]: I[P] }, R>
<A, I, R, K extends keyof A & keyof I>(schema: Schema<A, I, R>, key: K): Schema<A[K], { readonly [P in K]: I[P] }, R>
}
Example
import * as S from "@effect/schema/Schema"
// ---------------------------------------------
// use case: pull out a single field from a
// struct through a transformation
// ---------------------------------------------
const mytable = S.Struct({
column1: S.NumberFromString,
column2: S.Number
})
// const pullOutColumn: S.Schema<number, {
// readonly column1: string;
// }, never>
const pullOutColumn = mytable.pipe(S.pluck("column1"))
console.log(
S.decodeUnknownEither(S.Array(pullOutColumn))([
{ column1: "1", column2: 100 },
{ column1: "2", column2: 300 }
])
)
// Output: { _id: 'Either', _tag: 'Right', right: [ 1, 2 ] }
Added in v1.0.0
symbol
PropertySignatureTypeId
Signature
export declare const PropertySignatureTypeId: typeof PropertySignatureTypeId
Added in v1.0.0
PropertySignatureTypeId (type alias)
Signature
export type PropertySignatureTypeId = typeof PropertySignatureTypeId
Added in v1.0.0
TypeId
Signature
export declare const TypeId: typeof TypeId
Added in v1.0.0
TypeId (type alias)
Signature
export type TypeId = typeof TypeId
Added in v1.0.0
symbol transformations
Symbol
This schema transforms a string
into a symbol
.
Signature
export declare const Symbol: $Symbol
Added in v1.0.0
type id
BetweenBigDecimalTypeId
Signature
export declare const BetweenBigDecimalTypeId: typeof BetweenBigDecimalTypeId
Added in v1.0.0
BetweenBigIntTypeId
Signature
export declare const BetweenBigIntTypeId: typeof BetweenBigIntTypeId
Added in v1.0.0
BetweenBigIntTypeId (type alias)
Signature
export type BetweenBigIntTypeId = typeof BetweenBigIntTypeId
Added in v1.0.0
BetweenDurationTypeId
Signature
export declare const BetweenDurationTypeId: typeof BetweenDurationTypeId
Added in v1.0.0
BetweenTypeId
Signature
export declare const BetweenTypeId: typeof BetweenTypeId
Added in v1.0.0
BetweenTypeId (type alias)
Signature
export type BetweenTypeId = typeof BetweenTypeId
Added in v1.0.0
BrandTypeId
Signature
export declare const BrandTypeId: typeof BrandTypeId
Added in v1.0.0
EndsWithTypeId
Signature
export declare const EndsWithTypeId: typeof EndsWithTypeId
Added in v1.0.0
FiniteTypeId
Signature
export declare const FiniteTypeId: typeof FiniteTypeId
Added in v1.0.0
GreaterThanBigDecimalTypeId
Signature
export declare const GreaterThanBigDecimalTypeId: typeof GreaterThanBigDecimalTypeId
Added in v1.0.0
GreaterThanBigIntTypeId
Signature
export declare const GreaterThanBigIntTypeId: typeof GreaterThanBigIntTypeId
Added in v1.0.0
GreaterThanBigIntTypeId (type alias)
Signature
export type GreaterThanBigIntTypeId = typeof GreaterThanBigIntTypeId
Added in v1.0.0
GreaterThanDurationTypeId
Signature
export declare const GreaterThanDurationTypeId: typeof GreaterThanDurationTypeId
Added in v1.0.0
GreaterThanOrEqualToBigDecimalTypeId
Signature
export declare const GreaterThanOrEqualToBigDecimalTypeId: typeof GreaterThanOrEqualToBigDecimalTypeId
Added in v1.0.0
GreaterThanOrEqualToBigIntTypeId
Signature
export declare const GreaterThanOrEqualToBigIntTypeId: typeof GreaterThanOrEqualToBigIntTypeId
Added in v1.0.0
GreaterThanOrEqualToBigIntTypeId (type alias)
Signature
export type GreaterThanOrEqualToBigIntTypeId = typeof GreaterThanOrEqualToBigIntTypeId
Added in v1.0.0
GreaterThanOrEqualToDurationTypeId
Signature
export declare const GreaterThanOrEqualToDurationTypeId: typeof GreaterThanOrEqualToDurationTypeId
Added in v1.0.0
GreaterThanOrEqualToTypeId
Signature
export declare const GreaterThanOrEqualToTypeId: typeof GreaterThanOrEqualToTypeId
Added in v1.0.0
GreaterThanOrEqualToTypeId (type alias)
Signature
export type GreaterThanOrEqualToTypeId = typeof GreaterThanOrEqualToTypeId
Added in v1.0.0
GreaterThanTypeId
Signature
export declare const GreaterThanTypeId: typeof GreaterThanTypeId
Added in v1.0.0
GreaterThanTypeId (type alias)
Signature
export type GreaterThanTypeId = typeof GreaterThanTypeId
Added in v1.0.0
IncludesTypeId
Signature
export declare const IncludesTypeId: typeof IncludesTypeId
Added in v1.0.0
InstanceOfTypeId
Signature
export declare const InstanceOfTypeId: typeof InstanceOfTypeId
Added in v1.0.0
IntTypeId
Signature
export declare const IntTypeId: typeof IntTypeId
Added in v1.0.0
IntTypeId (type alias)
Signature
export type IntTypeId = typeof IntTypeId
Added in v1.0.0
ItemsCountTypeId
Signature
export declare const ItemsCountTypeId: typeof ItemsCountTypeId
Added in v1.0.0
ItemsCountTypeId (type alias)
Signature
export type ItemsCountTypeId = typeof ItemsCountTypeId
Added in v1.0.0
JsonNumberTypeId
Signature
export declare const JsonNumberTypeId: typeof JsonNumberTypeId
Added in v1.0.0
LengthTypeId
Signature
export declare const LengthTypeId: typeof LengthTypeId
Added in v1.0.0
LengthTypeId (type alias)
Signature
export type LengthTypeId = typeof LengthTypeId
Added in v1.0.0
LessThanBigDecimalTypeId
Signature
export declare const LessThanBigDecimalTypeId: typeof LessThanBigDecimalTypeId
Added in v1.0.0
LessThanBigIntTypeId
Signature
export declare const LessThanBigIntTypeId: typeof LessThanBigIntTypeId
Added in v1.0.0
LessThanBigIntTypeId (type alias)
Signature
export type LessThanBigIntTypeId = typeof LessThanBigIntTypeId
Added in v1.0.0
LessThanDurationTypeId
Signature
export declare const LessThanDurationTypeId: typeof LessThanDurationTypeId
Added in v1.0.0
LessThanOrEqualToBigDecimalTypeId
Signature
export declare const LessThanOrEqualToBigDecimalTypeId: typeof LessThanOrEqualToBigDecimalTypeId
Added in v1.0.0
LessThanOrEqualToBigIntTypeId
Signature
export declare const LessThanOrEqualToBigIntTypeId: typeof LessThanOrEqualToBigIntTypeId
Added in v1.0.0
LessThanOrEqualToBigIntTypeId (type alias)
Signature
export type LessThanOrEqualToBigIntTypeId = typeof LessThanOrEqualToBigIntTypeId
Added in v1.0.0
LessThanOrEqualToDurationTypeId
Signature
export declare const LessThanOrEqualToDurationTypeId: typeof LessThanOrEqualToDurationTypeId
Added in v1.0.0
LessThanOrEqualToTypeId
Signature
export declare const LessThanOrEqualToTypeId: typeof LessThanOrEqualToTypeId
Added in v1.0.0
LessThanOrEqualToTypeId (type alias)
Signature
export type LessThanOrEqualToTypeId = typeof LessThanOrEqualToTypeId
Added in v1.0.0
LessThanTypeId
Signature
export declare const LessThanTypeId: typeof LessThanTypeId
Added in v1.0.0
LessThanTypeId (type alias)
Signature
export type LessThanTypeId = typeof LessThanTypeId
Added in v1.0.0
LowercasedTypeId
Signature
export declare const LowercasedTypeId: typeof LowercasedTypeId
Added in v1.0.0
MaxItemsTypeId
Signature
export declare const MaxItemsTypeId: typeof MaxItemsTypeId
Added in v1.0.0
MaxItemsTypeId (type alias)
Signature
export type MaxItemsTypeId = typeof MaxItemsTypeId
Added in v1.0.0
MaxLengthTypeId
Signature
export declare const MaxLengthTypeId: typeof MaxLengthTypeId
Added in v1.0.0
MaxLengthTypeId (type alias)
Signature
export type MaxLengthTypeId = typeof MaxLengthTypeId
Added in v1.0.0
MinItemsTypeId
Signature
export declare const MinItemsTypeId: typeof MinItemsTypeId
Added in v1.0.0
MinItemsTypeId (type alias)
Signature
export type MinItemsTypeId = typeof MinItemsTypeId
Added in v1.0.0
MinLengthTypeId
Signature
export declare const MinLengthTypeId: typeof MinLengthTypeId
Added in v1.0.0
MinLengthTypeId (type alias)
Signature
export type MinLengthTypeId = typeof MinLengthTypeId
Added in v1.0.0
MultipleOfTypeId
Signature
export declare const MultipleOfTypeId: typeof MultipleOfTypeId
Added in v1.0.0
NegativeBigDecimalTypeId
Signature
export declare const NegativeBigDecimalTypeId: typeof NegativeBigDecimalTypeId
Added in v1.0.0
NonNaNTypeId
Signature
export declare const NonNaNTypeId: typeof NonNaNTypeId
Added in v1.0.0
NonNegativeBigDecimalTypeId
Signature
export declare const NonNegativeBigDecimalTypeId: typeof NonNegativeBigDecimalTypeId
Added in v1.0.0
NonPositiveBigDecimalTypeId
Signature
export declare const NonPositiveBigDecimalTypeId: typeof NonPositiveBigDecimalTypeId
Added in v1.0.0
PatternTypeId
Signature
export declare const PatternTypeId: typeof PatternTypeId
Added in v1.0.0
PositiveBigDecimalTypeId
Signature
export declare const PositiveBigDecimalTypeId: typeof PositiveBigDecimalTypeId
Added in v1.0.0
StartsWithTypeId
Signature
export declare const StartsWithTypeId: typeof StartsWithTypeId
Added in v1.0.0
TrimmedTypeId
Signature
export declare const TrimmedTypeId: typeof TrimmedTypeId
Added in v1.0.0
ULIDTypeId
Signature
export declare const ULIDTypeId: typeof ULIDTypeId
Added in v1.0.0
UUIDTypeId
Signature
export declare const UUIDTypeId: typeof UUIDTypeId
Added in v1.0.0
UppercasedTypeId
Signature
export declare const UppercasedTypeId: typeof UppercasedTypeId
Added in v1.0.0
ValidDateTypeId
Signature
export declare const ValidDateTypeId: typeof ValidDateTypeId
Added in v1.0.0
utils
IndexSignature (namespace)
Added in v1.0.0
Context (type alias)
Signature
export type Context<Records extends IndexSignature.Records> = {
[K in keyof Records]: Schema.Context<Records[K]["key"]> | Schema.Context<Records[K]["value"]>
}[number]
Added in v1.0.0
Encoded (type alias)
Signature
export type Encoded<Records extends IndexSignature.Records> = Types.UnionToIntersection<
{
[K in keyof Records]: {
readonly [P in Schema.Encoded<Records[K]["key"]>]: Schema.Encoded<Records[K]["value"]>
}
}[number]
>
Added in v1.0.0
NonEmptyRecords (type alias)
Signature
export type NonEmptyRecords = array_.NonEmptyReadonlyArray<Record>
Added in v1.0.0
Record (type alias)
Signature
export type Record = { readonly key: Schema.All; readonly value: Schema.All }
Added in v1.0.0
Records (type alias)
Signature
export type Records = ReadonlyArray<Record>
Added in v1.0.0
Type (type alias)
Signature
export type Type<Records extends IndexSignature.Records> = Types.UnionToIntersection<
{
[K in keyof Records]: {
readonly [P in Schema.Type<Records[K]["key"]>]: Schema.Type<Records[K]["value"]>
}
}[number]
>
Added in v1.0.0
OptionalElement (interface)
Signature
export interface OptionalElement<E extends Schema.Any>
extends Schema.Variance<Schema.Type<E>, Schema.Encoded<E>, Schema.Context<E>> {
readonly optionalElement: E
}
Added in v1.0.0
ParseJsonOptions (type alias)
Signature
export type ParseJsonOptions = {
readonly reviver?: Parameters<typeof JSON.parse>[1]
readonly replacer?: Parameters<typeof JSON.stringify>[1]
readonly space?: Parameters<typeof JSON.stringify>[2]
}
Added in v1.0.0
PropertySignature (namespace)
Added in v1.0.0
Annotations (interface)
Signature
export interface Annotations<A> extends Annotations.Doc<A> {}
Added in v1.0.0
AST (type alias)
Signature
export type AST = PropertySignatureDeclaration | PropertySignatureTransformation
Added in v1.0.0
All (type alias)
Signature
export type All<Key extends PropertyKey = PropertyKey> =
| Any<Key>
| PropertySignature<Token, never, Key, Token, any, unknown>
| PropertySignature<Token, any, Key, Token, never, unknown>
| PropertySignature<Token, never, Key, Token, never, unknown>
Added in v1.0.0
Any (type alias)
Signature
export type Any<Key extends PropertyKey = PropertyKey> = PropertySignature<Token, any, Key, Token, any, unknown>
Added in v1.0.0
GetToken (type alias)
Signature
export type GetToken<B extends boolean> = B extends true ? "?:" : ":"
Added in v1.0.0
Token (type alias)
Signature
export type Token = "?:" | ":"
Added in v1.0.0
Schema (namespace)
Added in v1.0.0
Variance (interface)
Signature
export interface Variance<A, I, R> {
readonly [TypeId]: {
readonly _A: Types.Invariant<A>
readonly _I: Types.Invariant<I>
readonly _R: Types.Covariant<R>
}
}
Added in v1.0.0
All (type alias)
Any schema, including never
.
Signature
export type All = Any | Schema<any, never, unknown> | Schema<never, any, unknown> | Schema<never, never, unknown>
Added in v1.0.0
Any (type alias)
Any schema, except for never
.
Signature
export type Any = Schema<any, any, unknown>
Added in v1.0.0
AnyNoContext (type alias)
Any schema with Context = never
, except for never
.
Signature
export type AnyNoContext = Schema<any, any, never>
Added in v1.0.0
Context (type alias)
Signature
export type Context<S> = S extends Schema.Variance<infer _A, infer _I, infer R> ? R : never
Added in v1.0.0
Encoded (type alias)
Signature
export type Encoded<S> = S extends Schema.Variance<infer _A, infer I, infer _R> ? I : never
Added in v1.0.0
ToAsserts (type alias)
Signature
export type ToAsserts<S extends AnyNoContext> = (
input: unknown,
options?: AST.ParseOptions
) => asserts input is Schema.Type<S>
Added in v1.0.0
Type (type alias)
Signature
export type Type<S> = S extends Schema.Variance<infer A, infer _I, infer _R> ? A : never
Added in v1.0.0
SimplifyMutable (type alias)
Signature
export type SimplifyMutable<A> = {
-readonly [K in keyof A]: A[K]
} extends infer B
? B
: never
Added in v1.0.0
Struct (namespace)
Added in v1.0.0
Context (type alias)
Signature
export type Context<F extends Fields> = Schema.Context<F[keyof F]>
Added in v1.0.0
Encoded (type alias)
Signature
export type Encoded<F extends Fields> = {
readonly [K in Exclude<keyof F, EncodedTokenKeys<F>> as Key<F, K>]: Schema.Encoded<F[K]>
} & { readonly [K in EncodedTokenKeys<F> as Key<F, K>]?: Schema.Encoded<F[K]> }
Added in v1.0.0
Fields (type alias)
Signature
export type Fields = {
readonly [x: PropertyKey]: Schema.All | PropertySignature.All
}
Added in v1.0.0
Type (type alias)
Signature
export type Type<F extends Fields> =
Types.UnionToIntersection<
{
[K in keyof F]: F[K] extends OptionalPropertySignature
? { readonly [H in K]?: Schema.Type<F[H]> }
: { readonly [h in K]: Schema.Type<F[h]> }
}[keyof F]
> extends infer Q
? Q
: never
Added in v1.0.0
TupleType (namespace)
Added in v1.0.0
Element (type alias)
Signature
export type Element = Schema.Any | OptionalElement<Schema.Any>
Added in v1.0.0
Elements (type alias)
Signature
export type Elements = ReadonlyArray<Element>
Added in v1.0.0
Encoded (type alias)
Signature
export type Encoded<Elements extends TupleType.Elements, Rest extends ReadonlyArray<Schema.Any>> = Rest extends [
infer Head,
...infer Tail
]
? Readonly<
[
...ElementsEncoded<Elements>,
...ReadonlyArray<Schema.Encoded<Head>>,
...{ readonly [K in keyof Tail]: Schema.Encoded<Tail[K]> }
]
>
: ElementsEncoded<Elements>
Added in v1.0.0
Type (type alias)
Signature
export type Type<Elements extends TupleType.Elements, Rest extends ReadonlyArray<Schema.Any>> = Rest extends [
infer Head,
...infer Tail
]
? Readonly<
[
...ElementsType<Elements>,
...ReadonlyArray<Schema.Type<Head>>,
...{ readonly [K in keyof Tail]: Schema.Type<Tail[K]> }
]
>
: ElementsType<Elements>
Added in v1.0.0
TypeLiteral (namespace)
Added in v1.0.0
Encoded (type alias)
Signature
export type Encoded<Fields extends Struct.Fields, Records extends IndexSignature.Records> = Struct.Encoded<Fields> &
IndexSignature.Encoded<Records>
Added in v1.0.0
Type (type alias)
Signature
export type Type<Fields extends Struct.Fields, Records extends IndexSignature.Records> = Struct.Type<Fields> &
IndexSignature.Type<Records>
Added in v1.0.0
asSchema
Signature
export declare const asSchema: <S extends Schema.All>(
schema: S
) => Schema<Schema.Type<S>, Schema.Encoded<S>, Schema.Context<S>>
Added in v1.0.0
encodedSchema
Signature
export declare const encodedSchema: <A, I, R>(schema: Schema<A, I, R>) => Schema<I, I, never>
Added in v1.0.0
optionalElement
Signature
export declare const optionalElement: <E extends Schema.Any>(self: E) => OptionalElement<E>
Added in v1.0.0
typeSchema
Signature
export declare const typeSchema: <A, I, R>(schema: Schema<A, I, R>) => Schema<A, A, never>
Added in v1.0.0
validation
asserts
Signature
export declare const asserts: <A, I, R>(
schema: Schema<A, I, R>,
options?: ParseOptions | undefined
) => (u: unknown, overrideOptions?: ParseOptions | undefined) => asserts u is A
Added in v1.0.0
is
Signature
export declare const is: <A, I, R>(
schema: Schema<A, I, R>,
options?: ParseOptions | undefined
) => (u: unknown, overrideOptions?: ParseOptions | undefined) => u is A
Added in v1.0.0
validate
Signature
export declare const validate: <A, I, R>(
schema: Schema<A, I, R>,
options?: ParseOptions
) => (u: unknown, overrideOptions?: ParseOptions) => Effect.Effect<A, ParseResult.ParseError, R>
Added in v1.0.0
validateEither
Signature
export declare const validateEither: <A, I, R>(
schema: Schema<A, I, R>,
options?: ParseOptions
) => (u: unknown, overrideOptions?: ParseOptions) => either_.Either<A, ParseResult.ParseError>
Added in v1.0.0
validateOption
Signature
export declare const validateOption: <A, I, R>(
schema: Schema<A, I, R>,
options?: ParseOptions | undefined
) => (u: unknown, overrideOptions?: ParseOptions | undefined) => Option.Option<A>
Added in v1.0.0
validatePromise
Signature
export declare const validatePromise: <A, I>(
schema: Schema<A, I, never>,
options?: ParseOptions
) => (u: unknown, overrideOptions?: ParseOptions) => Promise<A>
Added in v1.0.0
validateSync
Signature
export declare const validateSync: <A, I, R>(
schema: Schema<A, I, R>,
options?: ParseOptions | undefined
) => (u: unknown, overrideOptions?: ParseOptions | undefined) => A
Added in v1.0.0