Coder Social home page Coder Social logo

pipeline's Introduction



Pipeline

Run a pipeline of async tasks


Installation · Docs · Usage



Latest Version Monthly downloads

Follow @marcuspoehls and @superchargejs for updates!


Introduction

The @supercharge/pipeline package allows you to run a pipeline of async tasks. You’ll pipe an input serially through a list of (async) functions or classes. When using classes, you may define the called method on each class instance.

Installation

npm i @supercharge/pipeline

Docs

Find all the details for @supercharge/pipeline in the extensive Supercharge docs.

Usage

Using @supercharge/pipeline is pretty straightforward. Pass an array of classes or functions to a list and the pipeline sends the input through each stop.

For example, you may bootstrap an application by running a series of tasks:

const App = require('./your-application')
const Pipeline = require('@supercharge/pipeline')

const app = await Pipeline
  .send(new App())
  .through([
    LoadEnvironment,
    InitializeAppConfig,
    RegisterRoutes,
    RegisterMiddleware,
    function logAppVersion (app) {
      console.log(app.version())

      return app
    }
  ])
  .then(async app => {
    await app.startServer()

    return app
  })

When using classes in a pipeline, the constructor receives the item you’re sending through the pipeline. In the example above, each class (e.g., LoadEnvironment) receives the app instance in the constructor.

A class instance for the pipeline may look like this:

class LoadEnvironment {
  constructor (app) {
    this.app = app
  }

  async handle () {
    // do the heavy lifting
  }
}

Using custom class methods

By default, the pipeline calls the .handle() method on class instances. You may change the method using the Pipeline.via method:

const App = require('./your-application')
const Pipeline = require('@supercharge/pipeline')

const app = await Pipeline
  .send(new App())
  .through([
    
  ])
  .via('methodName')
  .then()

And then return…

A pipeline starts when calling the .then method. The then method requires a callback as a parameter. You can skip the last stop (the callback of then) by directly returning the result of the pipeline using the .thenReturn method:

const app = await Pipeline
  .send(new App())
  .through([  ])
  .via('methodName')
  .thenReturn()

Credits and Love to Laravel

The idea for this package comes from the Laravel PHP framework. Laravel contains a pipeline package providing the idea for this package. This package provides the same API as the Laravel pipeline package. A huge thank you goes to Laravel, being a great inspiration ❤️

Contributing

Do you miss a function? We very much appreciate your contribution! Please send in a pull request 😊

  1. Create a fork
  2. Create your feature branch: git checkout -b my-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request 🚀

License

MIT © Supercharge


superchargejs.com  ·  GitHub @supercharge  ·  Twitter @superchargejs

pipeline's People

Contributors

dependabot-preview[bot] avatar marcuspoehls avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.