diff --git a/plugins/pagination/paginate.js b/plugins/pagination/paginate.js index 2e872db2..77970983 100644 --- a/plugins/pagination/paginate.js +++ b/plugins/pagination/paginate.js @@ -2,19 +2,23 @@ module.exports = paginate const iterator = require('./iterator') -function paginate (octokit, route, options) { +function paginate (octokit, route, options, mapFn) { + if (typeof options === 'function') { + mapFn = options + options = undefined + } options = octokit.request.endpoint.merge(route, options) - return gather([], iterator(octokit, options)[Symbol.asyncIterator]()) + return gather([], iterator(octokit, options)[Symbol.asyncIterator](), mapFn) } -function gather (results, iterator) { +function gather (results, iterator, mapFn) { return iterator.next() .then(result => { if (result.done) { return results } - results.push.apply(results, result.value.data) - return gather(results, iterator) + results.push.apply(results, mapFn ? mapFn(result.value) : result.value.data) + return gather(results, iterator, mapFn) }) }