aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/src/internal/util/pipe.ts
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/rxjs/src/internal/util/pipe.ts')
-rw-r--r--node_modules/rxjs/src/internal/util/pipe.ts95
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);
+ };
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage