46 lines
756 B
TypeScript
Executable File
46 lines
756 B
TypeScript
Executable File
/**
|
|
* @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())
|
|
}
|
|
}
|