@donverduyn/react-runtime
Version:
effect-ts react integration
6 lines (5 loc) • 609 B
TypeScript
import type { Effect, Stream } from 'effect';
import type { Tag, TagClass } from 'effect/Context';
export type InferSuccess<T> = T extends Effect.Effect<infer A, infer E, infer R> ? A : T extends Stream.Stream<infer A, infer E, infer R> ? A : T;
export type InferContext<T extends Stream.Stream<any, any, any> | Effect.Effect<any, any, any>> = T extends Effect.Effect<infer A, infer E, infer R> ? R : T extends Stream.Stream<infer A, infer E, infer R> ? R : never;
export type IsTag<T> = T extends Tag<infer I, infer V> ? Tag<I, V> : T extends TagClass<infer S, infer I, infer V> ? TagClass<S, I, V> : never;