@jamsch/hacker-news-client
A simple API wrapper for Hacker News with Typescript typings that supports browsers & Node.js.
Installation
npm install @jamsch/hacker-news-client
Usage
import Client from '@jamsch/hacker-news-client';
const topStories = await Client.getTopStories();
const newStories = await Client.getNewStories();
const askStories = await Client.getAskStories();
const showStories = await Client.getShowStories();
const jobStories = await Client.getJobStories();
const story = await Client.getItem(topStories[0]));
const user = await Client.getUser(story.by);
const topFiveStories = await Client.getItems(topStories.slice(0,5));
Typescript Usage
import Client, { Story, Ask, Comment, Job, Poll, PollOpt } from '@jamsch/hacker-news-client';
const item = await Client.getItem(1);
console.log(item);
if (Client.is(item, 'story')) {
console.log(item);
} else if (Client.is(item, 'ask')) {
console.log(item);
}
const storyId = 123;
const storyItem = await Client.getItem<Story>(storyId);
console.log(storyItem);
const storyIds = [1,2,3,4];
const topFiveStories = await Client.getItems<Story>(storyIds);
console.log(topFiveStories);
switch (item.type) {
case 'story': {
console.log('Ask | Story:', item);
if ('text' in item) {
console.log('Ask:', item);
}
if ('url' in item) {
console.log('Story:', item);
}
break;
}
case 'comment':
console.log('Comment:', item);
break;
case 'job':
console.log('Job:', item);
break;
case 'poll':
console.log('Poll:', item);
break;
case 'pollopt':
console.log('Polopt', item);
break;
}
Usage in UMD builds
<script src="{path_to_package}/umd/hacker-news-client.production.min.js"></script>
<script>
HackerNewsClient.getTopStories().then(topStories => {
console.log(topStories);
});
</script>