const fetch = require('node-fetch') // implemented from: https://github.com/HackerNews/API const HN_PREFIX = 'https://hacker-news.firebaseio.com/v0/' const TOP_STORIES = 'topstories' const ITEM = 'item' function hnFetch(type, id = '') { const url = id ? `${HN_PREFIX}${type}/${id}.json` : `${HN_PREFIX}${type}.json` return fetch(url, { method: 'GET', headers: { 'Content-Type': 'application/json', }, }) .then(res => { if (!isStatusOk(res.status)) { throw res } return res.json() }) .then(res => res) .catch(error => console.error(error)) } function isStatusOk(statusCode) { return statusCode === 200 || statusCode === 304 } async function main() { const storyIds = await hnFetch(TOP_STORIES) const stories = await Promise.all( storyIds.slice(0, 20).map(storyId => hnFetch(ITEM, storyId)) ) console.log( stories.map(story => { delete story.kids return story }) ) } main()