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 }; }); } }) }; }