Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kody/producthunt

src/list-posts.ts

31 lines · 991 B · TypeScript
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'),
	})
}