UNPKG

thenavisapp

Version:

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).

58 lines (50 loc) 1.7 kB
import got from '../../dist/source/index.js'; import Bourne from '@hapi/bourne'; const max = Date.now() - 1000 * 86400 * 7; const iterator = got.paginate('https://api.github.com/repos/sindresorhus/got/commits', { pagination: { paginate: ({response, currentItems}) => { // If there are no more data, finish. if (currentItems.length === 0) { return false; } // Get the current page number. const {searchParams} = response.request.options; const previousPage = Number(searchParams.get('page') ?? 1); // Update the page number by one. return { searchParams: { page: previousPage + 1 } }; }, // Using `Bourne` to prevent prototype pollution. transform: response => Bourne.parse(response.body), filter: ({item}) => { // Check if the commit time exceeds our range. const date = new Date(item.commit.committer.date); const end = date.getTime() - max >= 0; return end; }, shouldContinue: ({item}) => { // Check if the commit time exceeds our range. const date = new Date(item.commit.committer.date); const end = date.getTime() - max >= 0; return end; }, // We want only 50 results. countLimit: 50, // Wait 1s before making another request to prevent API rate limiting. backoff: 1000, // It is a good practice to set an upper limit of how many requests can be made. // This way we can avoid infinite loops. requestLimit: 10, // In this case, we don't need to store all the items we receive. // They are processed immediately. stackAllItems: false } }); console.log('Last 50 commits from now to week ago:'); for await (const item of iterator) { console.log(item.commit.message.split('\n')[0]); }