Skip to content

sammarks/workflow

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

styled with prettier GitHub Workflow Status Coveralls Dev Dependencies Donate

workflow is a Node JS library designed to facilitate the execution of simple workflows with rollback support. This allows you to take small units of code and combine them together into a larger workflow to accomplish a single large task.

See the documentation for more details.

Get Started

npm install @sammarks/workflow
yarn add @sammarks/workflow
import { execute } from '@sammarks/workflow'

interface WorkflowContext {
  firstStepRun: boolean
  secondStepRun: boolean
  test: string
}

const workflow = [
  {
    name: 'first',
    run: async (context: WorkflowContext): Promise<void> => {
      context.firstStepRun = true
    },
    revert: async (context: WorkflowContext): Promise<void> => {
      context.firstStepRun = false
    }
  },
  {
    name: 'second',
    run: async (context: WorkflowContext): Promise<void> => {
      context.secondStepRun = true
    },
    revert: async (context: WorkflowContext): Promise<void> => {
      context.secondStepRun = false
    }
  }
]

const result = await execute<WorkflowContext>('test-workflow', workflow, { test: 'foo' })
console.log(result)

// {
//   firstStepRun: true,
//   secondStepRun: true,
//   test: 'foo'
// }

Features

  • Define steps in a simple, typed, array-object format.
  • Steps and workflows are given names for debugging support.
  • Rollback support in case a step fails.
  • Predictable and documented error handling in case something goes wrong.

Why use this?

Breaking the large task into smaller units of code allows a less complicated end result, and greater unit testing abilities since each step in the workflow is broken into its own function.

Rollback support allows a transactional nature for executing workflows. If one step in the process fails to execute, all previously-executed steps with a configured rollback are executed.

workflow provides TypeScript hinting and a predictable error interface to handle issues when they arise.