{"_id":"chainify","_rev":"168300","name":"chainify","description":"The chainify module of FuturesJS (Ender.JS and Node.JS)","dist-tags":{"latest":"2.1.2"},"maintainers":[{"name":"coolaj86","email":""}],"time":{"modified":"2021-06-03T11:48:52.000Z","created":"2011-07-13T20:33:23.083Z","2.1.2":"2014-01-13T18:16:51.185Z","2.1.1":"2011-07-13T20:33:23.083Z"},"users":{},"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"repository":{"type":"git","url":"git://github.com/coolaj86/futures.git"},"versions":{"2.1.2":{"name":"chainify","version":"2.1.2","description":"The chainify module of FuturesJS (Ender.JS and Node.JS)","homepage":"https://github.com/coolaj86/futures","keywords":["flow-control","async","asynchronous","futures","chainify","chain","step","util","browser"],"repository":{"type":"git","url":"git://github.com/coolaj86/futures.git"},"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"main":"chainify.js","directories":{"lib":"."},"dependencies":{"future":"2.x","sequence":"2.x"},"engines":{"node":"*","ender":">= 0.5.0"},"readmeFilename":"README.md","bugs":{"url":"https://github.com/coolaj86/futures/issues"},"_id":"chainify@2.1.2","dist":{"shasum":"4d0fe621c122c83feecba6c8f7d99d11e87bc981","size":2089,"noattachment":false,"key":"/chainify/-/chainify-2.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/chainify/download/chainify-2.1.2.tgz"},"_from":"./","_npmVersion":"1.3.11","_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"maintainers":[{"name":"coolaj86","email":""}],"publish_time":1389637011185,"_cnpm_publish_time":1389637011185,"_hasShrinkwrap":false},"2.1.1":{"name":"chainify","version":"2.1.1","description":"The chainify module of FuturesJS (Ender.JS and Node.JS)","homepage":"https://github.com/coolaj86/futures","keywords":["flow-control","async","asynchronous","futures","chainify","chain","step","util","browser"],"repository":{"type":"git","url":"git://github.com/coolaj86/futures.git"},"author":{"name":"AJ ONeal","email":"coolaj86@gmail.com","url":"http://coolaj86.info"},"main":"chainify.js","directories":{"lib":"."},"dependencies":{"future":">= 2.1.1","sequence":">= 2.1.1"},"engines":{"node":"*","ender":">= 0.5.0"},"_npmJsonOpts":{"file":"/Users/coolaj86/.npm/chainify/2.1.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"chainify@2.1.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"253cd2a95499c5cb6bb59ca0f253d39240b1a38e","size":1499,"noattachment":false,"key":"/chainify/-/chainify-2.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/chainify/download/chainify-2.1.1.tgz"},"scripts":{},"publish_time":1310589203083,"maintainers":[{"name":"coolaj86","email":""}],"_cnpm_publish_time":1310589203083,"_hasShrinkwrap":false}},"readme":"chainify()\n----\n\nCreates an asynchronous model using asynchronous method queueing.\n\n**Core**\n\n  * `Futures.chainify(providers, modifiers, consumers, context)` - creates an asynchronous model\n    * `providers` - methods which provide data - must return Futures or Joins or undefined\n      * `function (next, params)` must call `next`\n\n    * `modifiers` - methods which use provided data and modify it - act as Sequences\n      * `function (next, err, data [, ...])` must call `next`\n\n    * `consumers` - methods which use data without modifying it - act as simple callbacks\n      * `function (err, data [, ...])`\n\nNote: `next` is an instance of `Futures.deliver`\n\n**Example:**\n\nLet's say we want to produce a model which acts like this:\n\n    Contacts.all({httpAuth: base64(\"coolaj86:secret\")}).limit(30).render();\n\nThe code to produce such a model might look like this:\n\n    var Contacts,\n      providers,\n      modifiers,\n      consumers;\n\n    // Get resources from various sites\n    providers = {\n      facebook: function (next, params) {\n        var future = Futures.future();\n        // make async calls to get data\n\n        // probably best to handle errors\n        // and not pass them on\n        next(data);\n      },\n      twitter: function (next, params) {\n        // same as above\n      },\n      all: function (next, params) {\n        var join = Futures.join();\n        join.add([\n          providers.FacebookContacts(params),\n          providers.TwitterContacts(params)\n        ]);\n        join.when(next);\n      }\n    };\n\n    modifiers = {\n      limit: function(next, data, params) {\n        data = data.first(params);\n        next(data);\n      }\n    };\n\n    consumers = {\n      render: function (data, params) {\n        Template.render(data, params);\n      }\n    };\n\n    Contacts = Futures.chainify(providers, modifiers, consumers);\n","_attachments":{},"readmeFilename":"README.md","homepage":"https://github.com/coolaj86/futures","bugs":{"url":"https://github.com/coolaj86/futures/issues"}}