import { parseAuthInput } from './auth.ts'
import { listPosts } from './domain.ts'
import {
optionalBoolean,
optionalNumber,
optionalPostsOrder,
optionalString,
requireRecord,
} from './types.ts'
/**
* List Product Hunt posts with featured, date, topic, and order filters.
* @example
* import listPosts from 'kody:@kody/producthunt/list-posts'
* const page = await listPosts({ featured: true, first: 5 })
*/
export default async function listPostsEntrypoint(
params: Record<string, unknown> = {},
) {
const input = requireRecord(params, 'list-posts')
return listPosts({
...parseAuthInput(input),
featured: optionalBoolean(input.featured, 'featured'),
postedAfter: optionalString(input.postedAfter, 'postedAfter'),
postedBefore: optionalString(input.postedBefore, 'postedBefore'),
topic: optionalString(input.topic, 'topic'),
order: optionalPostsOrder(input.order),
first: optionalNumber(input.first, 'first'),
after: optionalString(input.after, 'after'),
})
}