Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import {Equivalence as EQ} from 'effect'
import type {Kind, TypeLambda} from 'effect/HKT'
import fc from 'fast-check'
/**
* The type of a function that given any arbitrary of type `A`, returns an
* arbitrary for `F<A>`.
* @category lifting
*/
export interface LiftArbitrary<
F extends TypeLambda,
R = never,
O = unknown,
E = unknown,
> {
<A>(a: fc.Arbitrary<A>): fc.Arbitrary<Kind<F, R, O, E, A>>
}
/**
* Convert an equivalence of `A` to an arbitrary of `A`.
* @category lifting
*/
export type EquivalenceToArbitrary<Eq extends EQ.Equivalence<never>> = (
eq: Eq,
) => Eq extends EQ.Equivalence<infer A> ? fc.Arbitrary<A> : never
/**
* Convert an arbitrary of `A` to an equivalence of `A`.
* @category lifting
*/
export type ArbitraryToEquivalence<Arb extends fc.Arbitrary<never>> = (
arb: Arb,
) => Arb extends fc.Arbitrary<infer A> ? fc.Arbitrary<A> : never
/**
* Extract the underlying type of the given arbitrary.
* @category types
*/
export type UnderlyingArbitrary<Fa extends fc.Arbitrary<unknown>> =
Fa extends fc.Arbitrary<infer A> ? A : never
/**
* Extract the HKT type and its main underlying _covariant_ type from a type
* that was built from an HKT.
* @category types
*/
export type UnderlyingHkt<
Fa extends Kind<TypeLambda, never, unknown, unknown, any>,
> = {
Child: Fa extends Kind<TypeLambda, never, unknown, unknown, infer A>
? A
: never
Parent: Fa extends Kind<infer F, never, unknown, unknown, any> ? F : never
}
/**
* Extract the underlying type of the given equivalence.
* @category types
*/
export type UnderlyingEquivalence<Fa extends EQ.Equivalence<never>> =
Fa extends EQ.Equivalence<infer A> ? A : never
|