SkillAgentSearch skills...

Monoflow

A monadic interface for handling errors in JS

Install / Use

/learn @minamorl/Monoflow
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Monoflow

A monadic interface for handling errors in JS

What is it?

Monoflow provides one Workflow class that makes you easier to deal with combine functions, error handlings, and provides lazy evaluation.

Examples

Example 1: Create Workflow instance

import { Workflow } from "monoflow"

const workflow = Workflow.create((x: number) => x + 1);

console.log(workflow.run(2)); // Output: 3

That's it. Note that you need to explicit type of input type.

Example 2: Chain functions with .then()

const workflow = Workflow.create((x: number) => x + 1)
  .then((x) => x * 2)
  .then((x) => x + 1);

console.log(workflow.run(1)); // Output: 5

Example 3: Deal with errors

const workflow = Workflow.create((x: number) => x + 1)
  .then((x) => x * 2)
  .then((x) => x + 1)
  .then((_) => throw new Error("error!"))
  .else((err) => err.message);

console.log(workflow.run(1)); // Output: "error!"

Note that you can put .else() anyware. So as you can see below, you can get back to the function mapped by .then()

const workflow = Workflow.create((x: number) => x + 1)
  .then((x) => x * 2)
  .then((x) => x + 1)
  .then((_) => throw new Error("error!"))
  .else((err) => err.message);
  .then((x: string) => x + "!")

console.log(workflow.run(1)); // Output: "error!!"

Example 4: Combine workflows

You can combine multiple workflows like this:

const workflow1 = Workflow.create((_) => {
  throw new Error("error")
});
const workflow2 = Workflow.create((_) => undefined)
  .else((err) => err.message);
const workflow3 = workflow1.combine(workflow2);
console.log(workflow3.run(undefined)); // Output: "error"

Authors

Maintainer

@minamorl

Core Contributors

@wavebeem

View on GitHub
GitHub Stars6
CategoryDevelopment
Updated2y ago
Forks1

Languages

TypeScript

Security Score

55/100

Audited on Jul 20, 2023

No findings