Skip to content

Function: flow()

flow<InitArg, InitReturn>(fn): object

Defined in: builder.ts:40

Creates function that applies given series of functions in order.

Uses a fluent builder for constructing function compositions using method chaining.

It's an alternative syntax for creating complex compositions with the flow function. Instead of nesting function calls, you can chain .andThen() calls to build your pipeline step by step, then call .create() to get the final composed function.

Unlike the typical flow function, it doesn't have a limit on the number of functions that can be chained.

Type Parameters

InitArg

InitArg

The input type of the initial function

InitReturn

InitReturn

The return type of the initial function

Parameters

fn

Fn<InitArg, InitReturn>

The initial function to start the composition with

Returns

object

A builder object with andThen() method for chaining more functions and create() method to build the final composed function

andThen()

andThen: <NextReturn>(nextFn) => object

Type Parameters

NextReturn

NextReturn

Parameters

nextFn

Fn<InitReturn, NextReturn>

Returns

object

andThen()

andThen: <NextReturn>(nextFn) => object

Type Parameters
NextReturn

NextReturn

Parameters
nextFn

Fn<NextReturn, NextReturn>

Returns

object

andThen()

andThen: <NextReturn>(nextFn) => object

Type Parameters
NextReturn

NextReturn

Parameters
nextFn

Fn<NextReturn, NextReturn>

Returns

object

andThen()

andThen: <NextReturn>(nextFn) => object

Type Parameters
NextReturn

NextReturn

Parameters
nextFn

Fn<NextReturn, NextReturn>

Returns

object

andThen()

andThen: <NextReturn>(nextFn) => object

Type Parameters
NextReturn

NextReturn

Parameters
nextFn

Fn<..., ...>

Returns

object

andThen

andThen: ...

create

create: ...

create()

create: () => (arg) => ...

Returns

(arg): ...

Parameters
arg

...

Returns

...

create()

create: () => (arg) => IsAsync<..., ...> extends true ? Promise<...> : Awaited<...>

Returns

(arg): IsAsync<..., ...> extends true ? Promise<...> : Awaited<...>

Parameters
arg

Awaited<InitArg>

Returns

IsAsync<..., ...> extends true ? Promise<...> : Awaited<...>

create()

create: () => (arg) => IsAsync<IsAsync<IsAsync<..., ...>, InitReturn>, NextReturn> extends true ? Promise<Awaited<NextReturn>> : Awaited<NextReturn>

Returns

(arg): IsAsync<IsAsync<IsAsync<..., ...>, InitReturn>, NextReturn> extends true ? Promise<Awaited<NextReturn>> : Awaited<NextReturn>

Parameters
arg

Awaited<InitArg>

Returns

IsAsync<IsAsync<IsAsync<..., ...>, InitReturn>, NextReturn> extends true ? Promise<Awaited<NextReturn>> : Awaited<NextReturn>

create()

create: () => (arg) => IsAsync<IsAsync<false, InitReturn>, InitReturn> extends true ? Promise<Awaited<NextReturn>> : Awaited<NextReturn>

Returns

(arg): IsAsync<IsAsync<false, InitReturn>, InitReturn> extends true ? Promise<Awaited<NextReturn>> : Awaited<NextReturn>

Parameters
arg

Awaited<InitArg>

Returns

IsAsync<IsAsync<false, InitReturn>, InitReturn> extends true ? Promise<Awaited<NextReturn>> : Awaited<NextReturn>

create()

create: () => (arg) => IsAsync<false, InitReturn> extends true ? Promise<Awaited<InitReturn>> : Awaited<InitReturn>

Returns

(arg): IsAsync<false, InitReturn> extends true ? Promise<Awaited<InitReturn>> : Awaited<InitReturn>

Parameters
arg

Awaited<InitArg>

Returns

IsAsync<false, InitReturn> extends true ? Promise<Awaited<InitReturn>> : Awaited<InitReturn>

Examples

typescript
const transform = flow((x: number) => x * 2)
  .andThen((x) => x + 1)
  .andThen((x) => x.toString())
  .create(); // (x: number) => string

const result = transform(5); // "11"
typescript
const asyncTransform = flow((x: number) => x * 2)
  .andThen(async (x) => Promise.resolve(x + 1))
  .andThen((x) => x.toString())
  .create(); // (x: number) => Promise<string>

const result = await asyncTransform(5); // "11"