diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:26:46 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:43:56 -0700 |
| commit | e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch) | |
| tree | 06284a538a6008eca75051399e47db4e5d50301c /node_modules/rxjs/src/internal/util/pipe.ts | |
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/src/internal/util/pipe.ts')
| -rw-r--r-- | node_modules/rxjs/src/internal/util/pipe.ts | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/util/pipe.ts b/node_modules/rxjs/src/internal/util/pipe.ts new file mode 100644 index 0000000..ff69acc --- /dev/null +++ b/node_modules/rxjs/src/internal/util/pipe.ts @@ -0,0 +1,95 @@ +import { identity } from './identity'; +import { UnaryFunction } from '../types'; + +export function pipe(): typeof identity; +export function pipe<T, A>(fn1: UnaryFunction<T, A>): UnaryFunction<T, A>; +export function pipe<T, A, B>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>): UnaryFunction<T, B>; +export function pipe<T, A, B, C>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>): UnaryFunction<T, C>; +export function pipe<T, A, B, C, D>( + fn1: UnaryFunction<T, A>, + fn2: UnaryFunction<A, B>, + fn3: UnaryFunction<B, C>, + fn4: UnaryFunction<C, D> +): UnaryFunction<T, D>; +export function pipe<T, A, B, C, D, E>( + fn1: UnaryFunction<T, A>, + fn2: UnaryFunction<A, B>, + fn3: UnaryFunction<B, C>, + fn4: UnaryFunction<C, D>, + fn5: UnaryFunction<D, E> +): UnaryFunction<T, E>; +export function pipe<T, A, B, C, D, E, F>( + fn1: UnaryFunction<T, A>, + fn2: UnaryFunction<A, B>, + fn3: UnaryFunction<B, C>, + fn4: UnaryFunction<C, D>, + fn5: UnaryFunction<D, E>, + fn6: UnaryFunction<E, F> +): UnaryFunction<T, F>; +export function pipe<T, A, B, C, D, E, F, G>( + fn1: UnaryFunction<T, A>, + fn2: UnaryFunction<A, B>, + fn3: UnaryFunction<B, C>, + fn4: UnaryFunction<C, D>, + fn5: UnaryFunction<D, E>, + fn6: UnaryFunction<E, F>, + fn7: UnaryFunction<F, G> +): UnaryFunction<T, G>; +export function pipe<T, A, B, C, D, E, F, G, H>( + fn1: UnaryFunction<T, A>, + fn2: UnaryFunction<A, B>, + fn3: UnaryFunction<B, C>, + fn4: UnaryFunction<C, D>, + fn5: UnaryFunction<D, E>, + fn6: UnaryFunction<E, F>, + fn7: UnaryFunction<F, G>, + fn8: UnaryFunction<G, H> +): UnaryFunction<T, H>; +export function pipe<T, A, B, C, D, E, F, G, H, I>( + fn1: UnaryFunction<T, A>, + fn2: UnaryFunction<A, B>, + fn3: UnaryFunction<B, C>, + fn4: UnaryFunction<C, D>, + fn5: UnaryFunction<D, E>, + fn6: UnaryFunction<E, F>, + fn7: UnaryFunction<F, G>, + fn8: UnaryFunction<G, H>, + fn9: UnaryFunction<H, I> +): UnaryFunction<T, I>; +export function pipe<T, A, B, C, D, E, F, G, H, I>( + fn1: UnaryFunction<T, A>, + fn2: UnaryFunction<A, B>, + fn3: UnaryFunction<B, C>, + fn4: UnaryFunction<C, D>, + fn5: UnaryFunction<D, E>, + fn6: UnaryFunction<E, F>, + fn7: UnaryFunction<F, G>, + fn8: UnaryFunction<G, H>, + fn9: UnaryFunction<H, I>, + ...fns: UnaryFunction<any, any>[] +): UnaryFunction<T, unknown>; + +/** + * pipe() can be called on one or more functions, each of which can take one argument ("UnaryFunction") + * and uses it to return a value. + * It returns a function that takes one argument, passes it to the first UnaryFunction, and then + * passes the result to the next one, passes that result to the next one, and so on. + */ +export function pipe(...fns: Array<UnaryFunction<any, any>>): UnaryFunction<any, any> { + return pipeFromArray(fns); +} + +/** @internal */ +export function pipeFromArray<T, R>(fns: Array<UnaryFunction<T, R>>): UnaryFunction<T, R> { + if (fns.length === 0) { + return identity as UnaryFunction<any, any>; + } + + if (fns.length === 1) { + return fns[0]; + } + + return function piped(input: T): R { + return fns.reduce((prev: any, fn: UnaryFunction<T, R>) => fn(prev), input as any); + }; +} |
