import { IterableActivity , Source , isSource , ScalarActivity } from "../activities/activity" ; const GeneratorFunction = ( function * ( ) { } ) . constructor ; function chainGen < T , U > ( ... items ) { if ( items [ items . length - 1 ] instanceof GeneratorFunction ) { return function * ( source ) { let tail = source ; for ( const activity of items ) { tail = activity ( tail ) ; } yield * tail ; } ; } else { return function ( source ) { let tail = source ; for ( const activity of items ) { tail = activity ( tail ) ; } return tail ; } ; } } export function pipe < T , U > ( head ) ; export function pipe < T , U > ( head ) ; export function pipe < T , U > ( source ) ; export function pipe < T , I1 , U > ( head , tail ) ; export function pipe < T , I1 , U > ( head , tail ) ; export function pipe < T , U > ( source , head ) ; export function pipe < T , U > ( source , head ) ; export function pipe < T , I1 , I2 , U > ( head , i1 , tail ) ; export function pipe < T , I1 , I2 , U > ( head , i1 , tail ) ; export function pipe < T , I1 , U > ( source , head , tail ) ; export function pipe < T , I1 , U > ( source , head , tail ) ; export function pipe < T , I1 , I2 , I3 , U > ( head , i1 , i2 , tail ) ; export function pipe < T , I1 , I2 , I3 , U > ( head , i1 , i2 , tail ) ; export function pipe < T , I1 , I2 , U > ( source , head , i1 , tail ) ; export function pipe < T , I1 , I2 , U > ( source , head , i1 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , U > ( head , i1 , i2 , i3 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , U > ( head , i1 , i2 , i3 , tail ) ; export function pipe < T , I1 , I2 , I3 , U > ( source , head , i1 , i2 , tail ) ; export function pipe < T , I1 , I2 , I3 , U > ( source , head , i1 , i2 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , U > ( head , i1 , i2 , i3 , i4 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , U > ( head , i1 , i2 , i3 , i4 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , U > ( source , head , i1 , i2 , i3 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , U > ( source , head , i1 , i2 , i3 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , U > ( head , i1 , i2 , i3 , i4 , i5 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , U > ( head , i1 , i2 , i3 , i4 , i5 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , U > ( source , head , i1 , i2 , i3 , i4 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , U > ( source , head , i1 , i2 , i3 , i4 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , I7 , U > ( head , i1 , i2 , i3 , i4 , i5 , i6 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , I7 , U > ( head , i1 , i2 , i3 , i4 , i5 , i6 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , U > ( source , head , i1 , i2 , i3 , i4 , i5 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , U > ( source , head , i1 , i2 , i3 , i4 , i5 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , I7 , I8 , U > ( head , i1 , i2 , i3 , i4 , i5 , i6 , i7 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , I7 , I8 , U > ( head , i1 , i2 , i3 , i4 , i5 , i6 , i7 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , I7 , U > ( source , head , i1 , i2 , i3 , i4 , i5 , i6 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , I7 , U > ( source , head , i1 , i2 , i3 , i4 , i5 , i6 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , I7 , I8 , I9 , U > ( head , i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , I7 , I8 , I9 , U > ( head , i1 , i2 , i3 , i4 , i5 , i6 , i7 , i8 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , I7 , I8 , U > ( source , head , i1 , i2 , i3 , i4 , i5 , i6 , i7 , tail ) ; export function pipe < T , I1 , I2 , I3 , I4 , I5 , I6 , I7 , I8 , U > ( source , head , i1 , i2 , i3 , i4 , i5 , i6 , i7 , tail ) ; export function pipe < T , U = any > ( s_or_ia , ... items ) { return isSource ( s_or_ia ) ? chainGen < T , U > ( ... items ) ( s_or_ia ) : chainGen ( s_or_ia , ... items ) ; } export const chain = pipe ;