UNPKG

veffect

Version:

powerful TypeScript validation library built on the robust foundation of Effect combining exceptional type safety, high performance, and developer experience. Taking inspiration from Effect's functional principles, VEffect delivers a balanced approach tha

46 lines (39 loc) 756 B
/** * @since 2.0.0 */ import { pipeArguments } from "./Pipeable.js" import * as Stream from "./Stream.js" const streamVariance = { /* c8 ignore next */ _R: (_: never) => _, /* c8 ignore next */ _E: (_: never) => _, /* c8 ignore next */ _A: (_: never) => _ } /** * @since 2.0.0 * @category constructors */ export abstract class Class<A, E = never, R = never> implements Stream.Stream<A, E, R> { /** * @since 2.0.0 */ readonly [Stream.StreamTypeId] = streamVariance /** * @since 2.0.0 */ pipe() { return pipeArguments(this, arguments) } /** * @since 2.0.0 */ abstract toStream(): Stream.Stream<A, E, R> /** * @internal */ get channel() { return Stream.toChannel(this.toStream()) } }