Hi there! Are you looking for the official Deno documentation? Try docs.deno.com for all your Deno learning needs.

flow

import { flow } from "https://github.gh-proxy.cn/raw.githubusercontent.com/baetheus/fun/main/fn.ts";

The flow function is like the pipe function without the initial value. It composes up to 9 functions from left to right (top to bottom). The first function can take multiple arguments but every subsequent function must be unary (only take one argument).

@example
import { flow } from "./fn.ts";

const add = (m: number) => (n: number) => m + n;
const multiply = (m: number) => (n: number) => m * n;

const flowed = flow(
  add(1),
  multiply(2),
  add(1),
  multiply(2),
);

const result1 = flowed(1); // 10
const result2 = flowed(2); // 14
const result3 = flowed(3); // 18
function flow<A extends unknown[], B>(ab: (...a: A) => B): (...a: A) => B;
function flow<A extends unknown[], B, C>(ab: (...a: A) => B, bc: (b: B) => C): (...a: A) => C;
function flow<A extends unknown[], B, C, D>(
ab: (...a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
): (...a: A) => D;
function flow<A extends unknown[], B, C, D, E>(
ab: (...a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
): (...a: A) => E;
function flow<A extends unknown[], B, C, D, E, F>(
ab: (...a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
): (...a: A) => F;
function flow<A extends unknown[], B, C, D, E, F, G>(
ab: (...a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
): (...a: A) => G;
function flow<A extends unknown[], B, C, D, E, F, G, H>(
ab: (...a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
gh: (g: G) => H,
): (...a: A) => H;
function flow<A extends unknown[], B, C, D, E, F, G, H, I>(
ab: (...a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
gh: (g: G) => H,
hi: (h: H) => I,
): (...a: A) => I;
function flow<A extends unknown[], B, C, D, E, F, G, H, I, J>(
ab: (...a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
gh: (g: G) => H,
hi: (h: H) => I,
ij: (i: I) => J,
): (...a: A) => J;
function flow<A extends unknown[], B, C, D, E, F, G, H, I, J, K>(
ab: (...a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
gh: (g: G) => H,
hi: (h: H) => I,
ij: (i: I) => J,
jk: (j: J) => K,
): (...a: A) => K;
function flow<A extends unknown[], B, C, D, E, F, G, H, I, J, K, L>(
ab: (...a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
gh: (g: G) => H,
hi: (h: H) => I,
ij: (i: I) => J,
jk: (j: J) => K,
kl: (k: K) => L,
): (...a: A) => L;
function flow(...[abbccddeeffgghhiijjkkl...rest]: AnyFn[]): AnyFn;
§
flow<A extends unknown[], B>(ab: (...a: A) => B): (...a: A) => B
[src]

The flow function is like the pipe function without the initial value. It composes up to 9 functions from left to right (top to bottom). The first function can take multiple arguments but every subsequent function must be unary (only take one argument).

@example
import { flow } from "./fn.ts";

const add = (m: number) => (n: number) => m + n;
const multiply = (m: number) => (n: number) => m * n;

const flowed = flow(
  add(1),
  multiply(2),
  add(1),
  multiply(2),
);

const result1 = flowed(1); // 10
const result2 = flowed(2); // 14
const result3 = flowed(3); // 18

§Type Parameters

§
A extends unknown[]
[src]

§Parameters

§
ab: (...a: A) => B
[src]

§Return Type

§
(...a: A) => B
[src]
§
flow<A extends unknown[], B, C>(ab: (...a: A) => B, bc: (b: B) => C): (...a: A) => C
[src]

§Type Parameters

§
A extends unknown[]
[src]

§Parameters

§
ab: (...a: A) => B
[src]
§
bc: (b: B) => C
[src]

§Return Type

§
(...a: A) => C
[src]
§
flow<A extends unknown[], B, C, D>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...a: A) => D
[src]

§Type Parameters

§
A extends unknown[]
[src]

§Parameters

§
ab: (...a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]

§Return Type

§
(...a: A) => D
[src]
§
flow<A extends unknown[], B, C, D, E>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E): (...a: A) => E
[src]

§Type Parameters

§
A extends unknown[]
[src]

§Parameters

§
ab: (...a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]

§Return Type

§
(...a: A) => E
[src]
§
flow<A extends unknown[], B, C, D, E, F>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F): (...a: A) => F
[src]

§Type Parameters

§
A extends unknown[]
[src]

§Parameters

§
ab: (...a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]

§Return Type

§
(...a: A) => F
[src]
§
flow<A extends unknown[], B, C, D, E, F, G>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G): (...a: A) => G
[src]

§Type Parameters

§
A extends unknown[]
[src]

§Parameters

§
ab: (...a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]

§Return Type

§
(...a: A) => G
[src]
§
flow<A extends unknown[], B, C, D, E, F, G, H>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H): (...a: A) => H
[src]

§Type Parameters

§
A extends unknown[]
[src]

§Parameters

§
ab: (...a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]
§
gh: (g: G) => H
[src]

§Return Type

§
(...a: A) => H
[src]
§
flow<A extends unknown[], B, C, D, E, F, G, H, I>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I): (...a: A) => I
[src]

§Parameters

§
ab: (...a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]
§
gh: (g: G) => H
[src]
§
hi: (h: H) => I
[src]

§Return Type

§
(...a: A) => I
[src]
§
flow<A extends unknown[], B, C, D, E, F, G, H, I, J>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I, ij: (i: I) => J): (...a: A) => J
[src]

§Parameters

§
ab: (...a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]
§
gh: (g: G) => H
[src]
§
hi: (h: H) => I
[src]
§
ij: (i: I) => J
[src]

§Return Type

§
(...a: A) => J
[src]
§
flow<A extends unknown[], B, C, D, E, F, G, H, I, J, K>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I, ij: (i: I) => J, jk: (j: J) => K): (...a: A) => K
[src]

§Parameters

§
ab: (...a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]
§
gh: (g: G) => H
[src]
§
hi: (h: H) => I
[src]
§
ij: (i: I) => J
[src]
§
jk: (j: J) => K
[src]

§Return Type

§
(...a: A) => K
[src]
§
flow<A extends unknown[], B, C, D, E, F, G, H, I, J, K, L>(ab: (...a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I, ij: (i: I) => J, jk: (j: J) => K, kl: (k: K) => L): (...a: A) => L
[src]

§Parameters

§
ab: (...a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]
§
gh: (g: G) => H
[src]
§
hi: (h: H) => I
[src]
§
ij: (i: I) => J
[src]
§
jk: (j: J) => K
[src]
§
kl: (k: K) => L
[src]

§Return Type

§
(...a: A) => L
[src]
§
flow(...[abbccddeeffgghhiijjkkl...rest]: AnyFn[]): AnyFn
[src]

§Parameters

§
...[abbccddeeffgghhiijjkkl...rest]: AnyFn[] optional
[src]

§Return Type