promise-resolve-deep
Advanced tools
Comparing version 1.0.1 to 1.0.2
24
index.js
@@ -9,2 +9,12 @@ 'use strict'; | ||
}; | ||
let promiseProps = Promise.props || function propsImpl(obj) { | ||
let promisesToResolve = []; | ||
Object.keys(obj).map(key => { | ||
let promise = Promise.resolve(obj[key]).then(val => { | ||
obj[key] = val; | ||
}); | ||
promisesToResolve.push(promise) | ||
}); | ||
return Promise.all(promisesToResolve).then(() => obj); | ||
}; | ||
@@ -16,13 +26,7 @@ return Promise.resolveDeep = function resolveNestedPromises(obj) { | ||
} | ||
else if(obj && typeof obj === 'object' ) { | ||
let promisesToResolve = []; | ||
Object.keys(obj).map(key => { | ||
let promise = resolveNestedPromises(obj[key]).then(val => { | ||
obj[key] = val; | ||
}); | ||
promisesToResolve.push(promise) | ||
}); | ||
if(promisesToResolve.length) { | ||
return Promise.all(promisesToResolve).then(() => obj); | ||
else if(obj && typeof obj === 'object' && obj.constructor === Object) { | ||
for(var key in obj) { | ||
obj[key] = resolveNestedPromises(obj[key]); | ||
} | ||
return promiseProps(obj); | ||
} | ||
@@ -29,0 +33,0 @@ return obj; |
{ | ||
"name": "promise-resolve-deep", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "Resolve a promise or value and all of its embedded promises (key values, elements of array, including nested)", | ||
@@ -19,10 +19,12 @@ "main": "index.js", | ||
"devDependencies": { | ||
"benchmark": "^2.1.0", | ||
"bluebird": "^3.3.3", | ||
"chai": "^3.5.0", | ||
"mocha": "^2.4.5", | ||
"bluebird": "^3.3.3" | ||
"microtime": "^2.1.0", | ||
"mocha": "^2.4.5" | ||
}, | ||
"repository" : { | ||
"type" : "git" | ||
, "url" : "https://github.com/virtkick/promise-resolve-deep.git" | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/virtkick/promise-resolve-deep.git" | ||
} | ||
} |
@@ -12,3 +12,3 @@ ## promise-resolve-deep | ||
It can more or less be used like `Proimse.resolve` but will recursively/deep travel and resolve all nested promises. | ||
Use it like `Proimse.resolve` and it will recursively/deep travel and resolve all nested promises in arrays and objects. Also any object or an array that any promise resolves to, will be deeply resolved too. | ||
@@ -34,4 +34,34 @@ ```js | ||
# License | ||
## Fun with APIs | ||
```js | ||
// app is express application | ||
// User and Book are bookshelf.js models | ||
// needs: require('promise-resolve-deep')(Promise); to install the .resolveDeep method | ||
app.get('/resources', wrap(() => { | ||
return { | ||
users: User.fetchAll().then(users => users.map(user => user.attributes)), | ||
books: Book.fetchAll().then(books => books.map(book => book.attributes)) | ||
}; | ||
})); | ||
// utilizing Promise.resolveDeep | ||
function wrap(func) { | ||
return (req, res) => { | ||
Promise.resolve().then(() => func()) | ||
.then(Promise.resolveDeep).then(data => { | ||
res.json(data); | ||
}).catch(err => res.status(500)); | ||
} | ||
} | ||
``` | ||
If you want to write such declarative Promise-based APIs then you may also like this: https://github.com/virtkick/express-router-api | ||
## Author | ||
Damian Kaczmarek <rush@virtkick.com> | ||
## License | ||
MIT |
'use strict'; | ||
require('chai'); | ||
let setupResolveDeep = require('./'); | ||
let setupResolveDeep = require('./index'); | ||
let assert = require('chai').assert; | ||
@@ -6,0 +6,0 @@ let PromiseBluebird = require('bluebird'); |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
9558
10
186
66
5
1