module.exports = iterator const normalizePaginatedListResponse = require('./normalize-paginated-list-response') function iterator (octokit, options) { const headers = options.headers let url = octokit.request.endpoint(options).url return { [Symbol.asyncIterator]: () => ({ next () { if (!url) { return Promise.resolve({ done: true }) } return octokit.request({ url, headers }) .then((response) => { normalizePaginatedListResponse(octokit, url, response) // `response.headers.link` format: // '; rel="next", ; rel="last"' // sets `url` to undefined if "next" URL is not present or `link` header is not set url = ((response.headers.link || '').match(/<([^>]+)>;\s*rel="next"/) || [])[1] return { value: response } }) } }) } }