Skip to content

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

Package listing

@kody/producthunt

src/list-topics.ts

28 lines · 868 B · TypeScript
import { parseAuthInput } from './auth.ts'
import { listTopics } from './domain.ts'
import {
	optionalNumber,
	optionalString,
	optionalTopicsOrder,
	requireRecord,
} from './types.ts'

/**
 * List Product Hunt topics, optionally filtered by search query.
 * @example
 * import listTopics from 'kody:@kody/producthunt/list-topics'
 * const page = await listTopics({ query: 'developer', first: 5 })
 */
export default async function listTopicsEntrypoint(
	params: Record<string, unknown> = {},
) {
	const input = requireRecord(params, 'list-topics')
	return listTopics({
		...parseAuthInput(input),
		query: optionalString(input.query, 'query'),
		followedByUserid: optionalString(input.followedByUserid, 'followedByUserid'),
		order: optionalTopicsOrder(input.order),
		first: optionalNumber(input.first, 'first'),
		after: optionalString(input.after, 'after'),
	})
}