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.
npm install @sammarks/workflow
yarn add @sammarks/workflowimport{execute}from'@sammarks/workflow'interfaceWorkflowContext{firstStepRun: booleansecondStepRun: booleantest: string}constworkflow=[{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}}]constresult=awaitexecute<WorkflowContext>('test-workflow',workflow,{test: 'foo'})console.log(result)// {// firstStepRun: true,// secondStepRun: true,// test: 'foo'// }- 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.
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.
