import sanitizeHtml from 'sanitize-html'
import fetchData from './fetch-data'
// hydrate comments based on an array of item ids
export default function fetch(ids) {
return Promise.all(
ids.map(async (id) => {
const val = await fetchData(`item/${id}`)
return {
id: val.id,
user: val.by,
// HN API returns comment text as HTML. Sanitize at the data boundary
// so both the SSR'd initial response and client re-renders are safe.
// sanitize-html is pure-JS and works in both Node.js and Workers.
text: sanitizeHtml(val.text ?? ''),
date: new Date(val.time * 1000).getTime() || 0,
comments: await fetch(val.kids || []),
commentsCount: val.descendants || 0,
}
})
)
}