npm

@trytrench/flow
TypeScript icon, indicating that this package has built-in type declarations

0.0.9 • Public • Published

Flow: TypeScript Promise DAG Execution

Flow enables you to define type-safe Promise Directed Acyclic Graphs (DAGs) and execute them in the most efficient order.

Installation

npm i @trytrench/flow

Using Flow

Here is how you can utilize Flow in your code:

Step 1: Initialize Node Builder

First, initialize a Node Builder with a specific NodeInput type:

import { initNodeBuilder } from "@trytrench/flow";

type NodeInput = {
  timestamp: Date;
};

const nodeBuilder = initNodeBuilder.input<NodeInput>().create();

Step 2: Create Nodes

Next, create the nodes. Here we create temperatureNode and windSpeedNode that fetch data asynchronously from APIs. We then create windChillNode that depends on temperatureNode and windSpeedNode, and calculates the wind chill factor:

const temperatureNode = nodeBuilder
  .resolver(async ({ input }) => {
    const temperature = await fetchTemperatureFromApi(input.timestamp);
    return temperature;
  });

const windSpeedNode = nodeBuilder
  .resolver(async ({ input }) => {
    const windSpeed = await fetchWindSpeedFromApi(input.timestamp);
    return windSpeed;
  });

const windChillNode = nodeBuilder
  .depend({
    temperature: temperatureNode,
    windSpeed: windSpeedNode,
  })
  .resolver(({ deps }) => {
    const { temperature, windSpeed } = deps;
    const windChillFactor = calculateWindChill(temperature, windSpeed);
    return windChillFactor;
  });

Step 3: Run Node

Finally, run the nodes. In this case, we're executing windChillNode and logging the returned wind chill factor:

windChillNode
  .run({
    timestamp: new Date(),
  })
  .then((windChillFactor) => {
    console.log(`The wind chill factor is: ${windChillFactor}`);
  })
  .catch((err) => {
    console.error(err);
  });

Readme

Keywords

none

Package Sidebar

Install

npm i @trytrench/flow

Weekly Downloads

0

Version

0.0.9

License

ISC

Unpacked Size

108 kB

Total Files

13

Last publish

Collaborators

  • bowen-trench
  • max-trench