Have opinions about JavaScript? We want to hear them. Take the 2018 JavaScript Ecosystem Survey »

doto

0.0.1 • Public • Published

doto

A flow-control/threading HoF. The name was stolen from Clojure.

API

module.exports = function doto (target, steps, [callback])

Apply each function in steps to target in order. For example:

var assert = require('assert')
var doto   = require('doto')
 
var result = doto({}, [
  function (o) { o.someKey = 1 },
  function (o) { o.otherKey = o.someKey * 10 }
])
 
assert.deepEqual(result, {someKey: 1, otherKey: 10})

You may pass additional arguments to a step (other than target, which is always the first argument) by using an array instead of a function:

var set = function (o, k, v) { o[k] = v }
var result = doto({}, [
  [set, 'someKey', 1]
  function (o) { o.otherKey = o.someKey * 10 }
])

If a callback is provided, all steps are assumed to be asynchronous, and will receive a next function as their last argument:

doto({}, [loadUser, req.userId], [checkAuthorization, req], function (err, res) {
  // etc. etc.
})

License

BSD-2-Clause

Keywords

none

install

npm i doto

Downloadsweekly downloads

7

version

0.0.1

license

none

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability