{"_id":"de","_rev":"24-e2913529d8f76e8c15cc5043883c2086","name":"de","description":"Simple asynchronous promise-based controller","dist-tags":{"latest":"4.0.0"},"versions":{"0.0.1":{"author":{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"},"bugs":{"url":"https://github.com/golyshevd/Model/issues"},"contributors":[{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"}],"dependencies":{"jspromise":"~0.1.10","node-ns":"~1.0.0"},"description":"Simple asynchronous promise-based controller","devDependencies":{"jshint":"","nodeunit":"","istanbul":""},"license":"MIT","main":"DataEngine","name":"de","repository":{"type":"git","url":"git://github.com/golyshevd/Model.git"},"scripts":{"test":"./node_modules/.bin/istanbul test ./test/utils/runner.js"},"version":"0.0.1","readme":"de [![Build Status](https://travis-ci.org/golyshevd/Model.png?branch=master)](https://travis-ci.org/golyshevd/Model)\n==========\n\nSimple asynchronous promise based data engine\n","_id":"de@0.0.1","dist":{"shasum":"3f58df407032a6798effc7c0852b8bbcc8add2a3","tarball":"https://registry.npmjs.org/de/-/de-0.0.1.tgz","integrity":"sha512-MRubZ3U9t777lbJTQrqps9MQ//7zWGH0z5+vSAPkWQqQjVUPL3wZsGYYmgMUukqsW/H7ZToDy32YDeaUqNUTOA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfbDpWDfbBiOJmBM/OZV10l2sYHC0fK1Xtm0BuTzvZyQIhALykRNR+FGQM3T/+fLuDqHGVVsLSVy2dT1j4C3N+ugWS"}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"},"maintainers":[{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"}],"directories":{}},"0.1.0":{"author":{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"},"bugs":{"url":"https://github.com/golyshevd/Model/issues"},"contributors":[{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"}],"dependencies":{"jspromise":"~0.1.10","node-ns":"~1.0.0"},"description":"Simple asynchronous promise-based controller","devDependencies":{"jshint":"","nodeunit":"","istanbul":""},"license":"MIT","main":"DataEngine","name":"de","repository":{"type":"git","url":"git://github.com/golyshevd/Model.git"},"scripts":{"test":"./node_modules/.bin/istanbul test ./test/utils/runner.js"},"version":"0.1.0","readme":"de [![Build Status](https://travis-ci.org/golyshevd/Model.png?branch=master)](https://travis-ci.org/golyshevd/Model)\n==========\n\nSimple asynchronous promise based data engine\n","_id":"de@0.1.0","dist":{"shasum":"18ab24aa7ae453c371b1b39f7f2cff55133871df","tarball":"https://registry.npmjs.org/de/-/de-0.1.0.tgz","integrity":"sha512-eQtoHvwATYCt41sGngDH/OUieY56et8zRbgY8U64SZJItZsPyQ0R/QmhiHF1hoAY2oZIz1m81eZqYe76QRhERA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKK77q6wdStH12AgwfsXK0cY87z+EtNiSZUophdgQ72wIgP2gcPov0ESGBABNR5qVBmTWb8vHFMdIsRZ1+bl/ceqk="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"},"maintainers":[{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"}],"directories":{}},"0.1.1":{"author":{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"},"bugs":{"url":"https://github.com/golyshevd/Model/issues"},"contributors":[{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"}],"dependencies":{"jspromise":"~0.2.2","node-ns":"~1.0.0"},"description":"Simple asynchronous promise-based controller","devDependencies":{"jshint":"","nodeunit":"","istanbul":""},"license":"MIT","main":"DataEngine","name":"de","repository":{"type":"git","url":"git://github.com/golyshevd/Model.git"},"scripts":{"test":"./node_modules/.bin/istanbul test ./test/utils/runner.js"},"version":"0.1.1","readme":"de [![Build Status](https://travis-ci.org/golyshevd/Model.png?branch=master)](https://travis-ci.org/golyshevd/Model)\n==========\n\nSimple asynchronous promise based data engine\n","_id":"de@0.1.1","dist":{"shasum":"7b081a6afd03cc6b64cc6e5f96b9412c17aeb492","tarball":"https://registry.npmjs.org/de/-/de-0.1.1.tgz","integrity":"sha512-Ic+DIkMQTmu6IVYCHn535n+f7MB8lPXtuAE1y1MCWkFgXsbqJPbR/BKecnfkPEbmHDByhhozsMlUkSlFy4rUeg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDdttY4i97F3Kij9YIaS39XIu6H53B2qi/glHUYjBAbSAiEArtKg/wl72Pgb+2555iVnxD9t6MZaY+mArKyCRQ3ZEzQ="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"},"maintainers":[{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"}],"directories":{}},"0.1.2":{"author":{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"},"bugs":{"url":"https://github.com/golyshevd/Model/issues"},"contributors":[{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"}],"dependencies":{"jspromise":"~0.2.4","node-ns":"~1.0.0"},"description":"Simple asynchronous promise-based controller","devDependencies":{"jshint":"","nodeunit":"","istanbul":""},"license":"MIT","main":"DataEngine","name":"de","repository":{"type":"git","url":"git://github.com/golyshevd/Model.git"},"scripts":{"test":"./node_modules/.bin/istanbul test ./test/utils/runner.js"},"version":"0.1.2","readme":"de [![Build Status](https://travis-ci.org/golyshevd/Model.png?branch=master)](https://travis-ci.org/golyshevd/Model)\n==========\n\nSimple asynchronous promise based data engine\n","_id":"de@0.1.2","dist":{"shasum":"b727b73db46f1627212b800c8769ade98a498516","tarball":"https://registry.npmjs.org/de/-/de-0.1.2.tgz","integrity":"sha512-b9Q5lEvzEJBSkQsi2n7dUvLKs3yQq68oKL/dc4fYfDSkQ+w1QbWBm3+FlcrQHgKsRH6KfmyJI7rnnO3AaY2fWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfCUkdVcoLujQop71+77012npJJZ+A4svxw7ax5q3jWgIgQTCUydjQGxko1634VVYIJJqhvcwXUjbIBf4BZQH37sw="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"},"maintainers":[{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"}],"directories":{}},"0.1.3":{"author":{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"},"bugs":{"url":"https://github.com/golyshevd/Model/issues"},"contributors":[{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"}],"dependencies":{"jspromise":"~0.2.4","node-ns":"~1.0.0"},"description":"Simple asynchronous promise-based controller","devDependencies":{"jshint":"","nodeunit":"","istanbul":""},"license":"MIT","main":"DataEngine","name":"de","repository":{"type":"git","url":"git://github.com/golyshevd/Model.git"},"scripts":{"test":"./node_modules/.bin/istanbul test ./test/utils/runner.js"},"version":"0.1.3","readme":"de [![Build Status](https://travis-ci.org/golyshevd/Model.png?branch=master)](https://travis-ci.org/golyshevd/Model)\n==========\n\nSimple asynchronous promise based data engine\n","_id":"de@0.1.3","dist":{"shasum":"c58bb719c9f542f2a5cdd0115ba3274fe9ac4aa0","tarball":"https://registry.npmjs.org/de/-/de-0.1.3.tgz","integrity":"sha512-tAXb1lhMrV4OApHIZv4bt0MzaEj5givrCKQBrLOHtryhhcG+dO3oUPOvZxgIPH2dgbCffATdBd7ifBZxYazgKA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGqQaLPNtwc5+wLQ5DgHtlF3NTMEZB2tU+mCLYw69rHAAiAcjqauhcBW+72dQz1AxP9p1W7QKCr28dhf2FWUgxKs0w=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"},"maintainers":[{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"}],"directories":{}},"0.1.4":{"author":{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"},"bugs":{"url":"https://github.com/golyshevd/Model/issues"},"contributors":[{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"}],"dependencies":{"jspromise":"~0.2.7","node-ns":"~1.0.0"},"description":"Simple asynchronous promise-based controller","devDependencies":{"jshint":"","nodeunit":"","istanbul":""},"license":"MIT","main":"DataEngine","name":"de","repository":{"type":"git","url":"git://github.com/golyshevd/Model.git"},"scripts":{"test":"./tools/test"},"version":"0.1.4","readme":"de [![Build Status](https://travis-ci.org/golyshevd/Model.png?branch=master)](https://travis-ci.org/golyshevd/Model)\n==========\n\nSimple asynchronous promise based data engine\n","_id":"de@0.1.4","dist":{"shasum":"67692dcf52dfb8401e7a5d3c901f43f6c7199bc9","tarball":"https://registry.npmjs.org/de/-/de-0.1.4.tgz","integrity":"sha512-lP6bDVB7uFkOzX4qIBF4Cf5UjNQgP2eXebmKLOiY7P2H6cyvQ4Jj6h0qBtEdZWdSPhRgcKtG4+Z/AXKx3nbb2A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3tEHgEk6DmX/1CE4qevEWMO2lgMdD6XpEURE8x6S+DAIgE56cuqex51+I3GlMbHWn9kU/NGb0hacLJlFuiH1dJlY="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"},"maintainers":[{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"}],"directories":{}},"0.1.5":{"author":{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"},"bugs":{"url":"https://github.com/golyshevd/Model/issues"},"contributors":[{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"}],"dependencies":{"jspromise":"~0.2.8","node-ns":"~1.0.0"},"description":"Simple asynchronous promise-based controller","devDependencies":{"jshint":"","nodeunit":"","istanbul":""},"license":"MIT","main":"DataEngine","name":"de","repository":{"type":"git","url":"git://github.com/golyshevd/Model.git"},"scripts":{"test":"./tools/test"},"version":"0.1.5","readme":"de [![Build Status](https://travis-ci.org/golyshevd/Model.png?branch=master)](https://travis-ci.org/golyshevd/Model)\n==========\n\nSimple asynchronous promise based data engine\n","_id":"de@0.1.5","dist":{"shasum":"5abb986e7d2a76f119cb5068878f2b455f91ca2c","tarball":"https://registry.npmjs.org/de/-/de-0.1.5.tgz","integrity":"sha512-gjX3VEWBjzG2Px14vZNui5reiQfVTA+FHnQiqmfTHXw7qrFTJSXC5U4L+G3HqctXmdmWv6KVBo8R7IDY4SSDxQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGRqAYYJS3ZRfUsOCIUG+5RGoORibWtF8MfJ6l6+VWmEAiEA+WH1QjJa/h9UXhxk/yqCeTkmOroHv3S4rVR34P2dzN4="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"},"maintainers":[{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"}],"directories":{}},"1.0.0":{"author":{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"},"bugs":{"url":"https://github.com/golyshevd/Model/issues"},"contributors":[{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"}],"dependencies":{"jspromise":"~0.2.8","node-ns":"~1.0.0"},"description":"Simple asynchronous promise-based controller","devDependencies":{"jshint":"","nodeunit":"","istanbul":""},"license":"MIT","main":"DataEngine","name":"de","repository":{"type":"git","url":"git://github.com/golyshevd/Model.git"},"scripts":{"test":"./tools/test"},"version":"1.0.0","readme":"de [![Build Status](https://travis-ci.org/golyshevd/Model.png?branch=v1.0.0)](https://travis-ci.org/golyshevd/Model)\n==========\n\nSimple asynchronous promise based data engine\n","_id":"de@1.0.0","dist":{"shasum":"80cb02071475af6670e71708919f6ca5d1c971d5","tarball":"https://registry.npmjs.org/de/-/de-1.0.0.tgz","integrity":"sha512-bwH3zo9PT3PzPyfblKv1/ZSG60jjiQSbxzf70Q39NWaYhxHdOCPXv6fRrku8p73XALkmodBWfQ/AMQwQNb/R2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDts0RvTJG8NVc6KvZcg8rPklqx/4pFuz0K3nkKw49HzAiAqa7oXdYFF2SsoX28BA2jhQj1oWg7pNt7nPIjgBu/+2g=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"},"maintainers":[{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"}],"directories":{}},"1.1.0":{"author":{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"},"bugs":{"url":"https://github.com/golyshevd/Model/issues"},"contributors":[{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"}],"dependencies":{"jspromise":"~0.2.8","node-ns":"~1.0.0"},"description":"Simple asynchronous promise-based controller","devDependencies":{"jshint":"","nodeunit":"","istanbul":""},"license":"MIT","main":"DataEngine","name":"de","repository":{"type":"git","url":"git://github.com/golyshevd/Model.git"},"scripts":{"test":"./tools/test"},"version":"1.1.0","readme":"de [![Build Status](https://travis-ci.org/golyshevd/Model.png?branch=v1.0.0)](https://travis-ci.org/golyshevd/Model)\n==========\n\nSimple asynchronous promise based data engine\n","_id":"de@1.1.0","dist":{"shasum":"2570a2c5968c6860ca77204dd05abb2166023f6d","tarball":"https://registry.npmjs.org/de/-/de-1.1.0.tgz","integrity":"sha512-Yi6/cjbOYsbNwVqJedgx1nTMF++sVYsqwDqDcOEmbMtROjZlkAfWa3w1nURYB8bHCnyoTIFamW7j4kn3ED3vZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIByAOZ/tFYp2oWQD24r+Ais6zXzEr+cfKTqE/H1BhskdAiBp8pUilS/UnFohTNMtEtFmWVVt3avqaQYrE+lUiZIzbQ=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"},"maintainers":[{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"}],"directories":{}},"3.0.0":{"author":{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"},"bugs":{"url":"https://github.com/golyshevd/Model/issues"},"contributors":[{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"}],"dependencies":{"jspromise":"git://github.com/golyshevd/JSPromise.git#v1.0.x","node-ns":"git://github.com/golyshevd/Namespace.git#v1.0.x"},"description":"Simple asynchronous promise-based controller","devDependencies":{"jshint":"","nodeunit":"","istanbul":""},"license":"MIT","main":"Provider","name":"de","repository":{"type":"git","url":"git://github.com/golyshevd/Model.git"},"scripts":{"test":"tools/test"},"version":"3.0.0","readme":"de [![Build Status](https://travis-ci.org/golyshevd/Model.png?branch=v3.0.x)](https://travis-ci.org/golyshevd/Model)\n==========\n\nSimple asynchronous promise based data engine\n","homepage":"https://github.com/golyshevd/Model","_id":"de@3.0.0","dist":{"shasum":"39e8bb6a35da028d4b65963df18067d7d1d4091d","tarball":"https://registry.npmjs.org/de/-/de-3.0.0.tgz","integrity":"sha512-UZsazKDetd3KKkRxJsIDCLkkTgesI6Q79l27d4uCS8wcxlv4V81dydbqsGvDFW5SBQ1BA9rn8QEk1ksd/k4OXg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDs6MAKVX40CzTe5H1uGxzKW6u7KGCZy3rZl1Jc/llVVQIhAO8Nsr/t1q3ECUeTKuf557JlSC38Iqb7UjvyEZ8fmN61"}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"},"maintainers":[{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"}],"directories":{}},"4.0.0":{"author":{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"},"bugs":{"url":"https://github.com/golyshevd/Model/issues"},"contributors":[{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"}],"dependencies":{"jspromise":"git://github.com/golyshevd/JSPromise.git#v1.0.x","node-ns":"git://github.com/golyshevd/Namespace.git#v1.0.x"},"description":"Simple asynchronous promise-based controller","devDependencies":{"jshint":"","nodeunit":"","istanbul":""},"license":"MIT","main":"Provider","name":"de","repository":{"type":"git","url":"git://github.com/golyshevd/Model.git"},"scripts":{"test":"tools/test"},"version":"4.0.0","readme":"de [![Build Status](https://travis-ci.org/golyshevd/Model.png?branch=v4.0.x)](https://travis-ci.org/golyshevd/Model)\n==========\n\nSimple asynchronous promise based data agent\n\nLazy example\n---------\n```js\n\nvar Exception;\nvar Promise;\nvar StdProvider;\nvar StdRuntime;\n\nvar agent;\n\nException = require('de/util/Exception');\nPromise = require('jspromise');\nStdProvider = require('de/Provider');\nStdRuntime = require('de/util/Runtime');\n\nfunction Runtime () {\n  StdRuntime.apply(this, arguments);\n}\n\nRuntime.prototype = Object.create(StdRuntime.prototype);\n\n//  my Runtime turbo extension\nRuntime.prototype.getRequest = function () {\n  return this.params.request;\n};\n\nfunction Provider () {\n  StdProvider.apply(this, arguments);\n}\n\nProvider.prototype = Object.create(StdProvider.prototype);\n\n//  @overrides default method\nProvider.prototype._createRuntime = function (params) {\n  \n  return new Runtime(this, params);\n};\n\nagent = new Provider();\n\n//  data declaration (polymorphic)\nagent.decl('my-data-3', {\n  deps: ['my-data-1', 'my-async-data', 'url', 'some-bad'],\n  data: function (result, errors) {\n    \n    console.log(errors['some-bad']); // 9000\n    \n    return result['my-data-1'] + result.myAsyncData + url.query.some;\n  },\n  alias: 'myData3'\n});\n\nagent.decl('my-data-1', 42);\n\nagent.decl('my-async-data', {\n  alias: 'myAsyncData',\n  deps: 'url',\n  data: function (result, errors) {\n  \n  //  the only way to return data asynchronously (U can use ANY compilant promises/A+ implementation)\n    var promise;\n    \n    promise = new JSPromise();\n    \n    setTimeout(function () {\n      promise.fulfill(result.url.query.data));\n    }, 5000);\n    \n    return promise;\n  }\n});\n\nagent.decl('url', function () {\n  \n  var req;\n  \n  req = this.getRequest();\n  \n  console.log(this instanceof Runtime); //  true\n  \n  return Url.parse(req.url, true);\n});\n\nagent.decl('some-bad', function () {\n  throw 9000;\n});\n\n//  data providing\nagent.provide({request: {\n  url: '/a/b/c/?data=5&some=6'\n} }, ['my-data-3']).then(function (data) {\n  \n  console.log(data.result.myData3); // 5 + 6 + 42\n});\n\n```\n\nTo reject provide() promise u can throw an ```{de/util/Exception}``` instance inside data function.\ndata can be any value or promise object, not only function\n","homepage":"https://github.com/golyshevd/Model","_id":"de@4.0.0","dist":{"shasum":"64b4cf22defe43319790011d6698b45d656390ca","tarball":"https://registry.npmjs.org/de/-/de-4.0.0.tgz","integrity":"sha512-A/D3ysPyyVLyU/saBjnZU9nwvqxcprPMx0F7WbZuOBWVyWsI7kZeZygP6KS87gpWokn2V0bY4yVBHewf0dFcFA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqo91laU8+NGOVSbN7HGL6ao4c0WpvRq/JQIXxxMCS4gIgdRVgYy/OXcg9MooqqOEFO3Hk7nFv78OvTXib9U21CP8="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"},"maintainers":[{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"}]}},"readme":"de [![Build Status](https://travis-ci.org/golyshevd/Model.png?branch=v4.0.x)](https://travis-ci.org/golyshevd/Model)\n==========\n\nSimple asynchronous promise based data agent\n\nLazy example\n---------\n```js\n\nvar Exception;\nvar Promise;\nvar StdProvider;\nvar StdRuntime;\n\nvar agent;\n\nException = require('de/util/Exception');\nPromise = require('jspromise');\nStdProvider = require('de/Provider');\nStdRuntime = require('de/util/Runtime');\n\nfunction Runtime () {\n  StdRuntime.apply(this, arguments);\n}\n\nRuntime.prototype = Object.create(StdRuntime.prototype);\n\n//  my Runtime turbo extension\nRuntime.prototype.getRequest = function () {\n  return this.params.request;\n};\n\nfunction Provider () {\n  StdProvider.apply(this, arguments);\n}\n\nProvider.prototype = Object.create(StdProvider.prototype);\n\n//  @overrides default method\nProvider.prototype._createRuntime = function (params) {\n  \n  return new Runtime(this, params);\n};\n\nagent = new Provider();\n\n//  data declaration (polymorphic)\nagent.decl('my-data-3', {\n  deps: ['my-data-1', 'my-async-data', 'url', 'some-bad'],\n  data: function (result, errors) {\n    \n    console.log(errors['some-bad']); // 9000\n    \n    return result['my-data-1'] + result.myAsyncData + url.query.some;\n  },\n  alias: 'myData3'\n});\n\nagent.decl('my-data-1', 42);\n\nagent.decl('my-async-data', {\n  alias: 'myAsyncData',\n  deps: 'url',\n  data: function (result, errors) {\n  \n  //  the only way to return data asynchronously (U can use ANY compilant promises/A+ implementation)\n    var promise;\n    \n    promise = new JSPromise();\n    \n    setTimeout(function () {\n      promise.fulfill(result.url.query.data));\n    }, 5000);\n    \n    return promise;\n  }\n});\n\nagent.decl('url', function () {\n  \n  var req;\n  \n  req = this.getRequest();\n  \n  console.log(this instanceof Runtime); //  true\n  \n  return Url.parse(req.url, true);\n});\n\nagent.decl('some-bad', function () {\n  throw 9000;\n});\n\n//  data providing\nagent.provide({request: {\n  url: '/a/b/c/?data=5&some=6'\n} }, ['my-data-3']).then(function (data) {\n  \n  console.log(data.result.myData3); // 5 + 6 + 42\n});\n\n```\n\nTo reject provide() promise u can throw an ```{de/util/Exception}``` instance inside data function.\ndata can be any value or promise object, not only function\n","maintainers":[{"name":"golyshevd","email":"golyshev.dmitry@yandex.ru"}],"time":{"modified":"2022-06-14T21:51:34.598Z","created":"2013-09-29T23:43:23.313Z","0.0.1":"2013-09-29T23:43:26.646Z","0.1.0":"2013-09-30T02:10:17.254Z","0.1.1":"2013-10-07T00:15:18.945Z","0.1.2":"2013-10-08T22:04:27.123Z","0.1.3":"2013-10-11T13:34:16.086Z","0.1.4":"2013-10-12T20:27:47.831Z","0.1.5":"2013-10-14T23:47:16.204Z","1.0.0":"2013-10-17T12:10:12.202Z","1.1.0":"2013-10-17T23:20:03.604Z","3.0.0":"2013-12-16T10:34:15.841Z","4.0.0":"2013-12-25T13:35:32.335Z"},"author":{"name":"Golyshev Dmitrii","email":"golyshev.dmitry@yandex.ru"},"repository":{"type":"git","url":"git://github.com/golyshevd/Model.git"}}