dnode-promise
Advanced tools
Comparing version 2.0.0 to 3.0.0
44
index.js
@@ -1,16 +0,34 @@ | ||
module.exports = function (promiseMethods) { | ||
var dnodeMethods = {}; | ||
Object.keys(promiseMethods).forEach(function (methodName) { | ||
dnodeMethods[methodName] = function () { | ||
var args = Array.prototype.slice.apply(arguments, [0, -1]); | ||
var cb = arguments[arguments.length - 1]; | ||
var res = promiseMethods[methodName].apply(promiseMethods, args); | ||
if (res.then) { | ||
res.then(function (result) { | ||
cb(result); | ||
module.exports = { | ||
toDnode: function (promiseMethods) { | ||
var dnodeMethods = {}; | ||
Object.keys(promiseMethods).forEach(function (methodName) { | ||
dnodeMethods[methodName] = function () { | ||
var args = Array.prototype.slice.call(arguments, 0, -1); | ||
var cb = arguments[arguments.length - 1]; | ||
var res = promiseMethods[methodName].apply(promiseMethods, args); | ||
if (res.then) { | ||
res.then(function (result) { | ||
cb(result); | ||
}); | ||
} | ||
} | ||
}); | ||
return dnodeMethods; | ||
}, | ||
toPromise: function (dnodeMethods, PromiseImplementation) { | ||
if ( ! PromiseImplementation) { | ||
var PromiseImplementation = Promise; | ||
} | ||
var promiseMethods = {}; | ||
Object.keys(dnodeMethods).forEach(function (methodName) { | ||
promiseMethods[methodName] = function () { | ||
var args = Array.prototype.slice.call(arguments, 0, arguments.length); | ||
return new PromiseImplementation(function (resolve) { | ||
args.push(resolve); | ||
dnodeMethods[methodName].apply(dnodeMethods, args); | ||
}); | ||
} | ||
} | ||
}); | ||
return dnodeMethods; | ||
}); | ||
return promiseMethods; | ||
} | ||
}; |
{ | ||
"name": "dnode-promise", | ||
"version": "2.0.0", | ||
"version": "3.0.0", | ||
"description": "Helper for using promises on a dnode server", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -17,15 +17,44 @@ # dnode-promise | ||
server: | ||
```js | ||
var dnode = require('dnode'); | ||
var dnodep = require('dnode-promise'); | ||
var methods = dnodep({ | ||
var server = dnode(dnodep.toDnode({ | ||
transform: function (s) { | ||
// sorry, lame example =) | ||
return Promise.resolve(s.replace(/[aeiou]{2,}/, 'oo').toUpperCase()); | ||
} | ||
}); | ||
var server = dnode(methods); | ||
})); | ||
server.listen(5004); | ||
``` | ||
client: | ||
```js | ||
var dnode = require('dnode'); | ||
var dnodep = require('dnode-promise'); | ||
var d = dnode.connect(5004); | ||
d.on('remote', function (methods) { | ||
var remote = dnodep.toPromise(methods); | ||
remote.transform('beep') | ||
.then(function (s) { | ||
console.log('beep => ' + s); | ||
d.end(); | ||
}); | ||
}); | ||
``` | ||
If you want a specific promise to be returned from the remote calls, | ||
supply it to the second argument of the `toPromise` method, example: | ||
```js | ||
var BBPromise = require('bluebird'); | ||
// ... | ||
var remote = dnodep.toPromise(methods, BBPromise); | ||
remote.transform('beep') | ||
.then(function (s) { | ||
console.log('beep => ' + s); | ||
d.end(); | ||
}); | ||
// ... | ||
``` | ||
## license | ||
@@ -32,0 +61,0 @@ |
3101
34
65