import { searchObjects, type SearchObjectsInput } from './objects.ts' import { optionalString, optionalStringArray, requireRecord, requireString } from './types.ts' import { requireAuthMode } from './auth.ts' import type { HubSpotFilterGroup } from './types.ts' /** * Search HubSpot CRM records for any object type, including custom objects. * @example * import searchObjects from 'kody:@kody/hubspot/search-objects' * const { items } = await searchObjects({ objectType: 'contacts', query: 'acme' }) */ export { searchObjects } /** * Search HubSpot CRM records for any object type, including custom objects. * @example * import searchObjects from 'kody:@kody/hubspot/search-objects' * const result = await searchObjects({ objectType: 'deals', query: 'renewal', limit: 10 }) */ export default async function searchObjectsEntrypoint( params: Partial & Record = {}, ) { const input = requireRecord(params, 'search-objects') return searchObjects({ objectType: requireString(input.objectType, 'objectType'), query: optionalString(input.query, 'query'), filterGroups: input.filterGroups as Array | undefined, sorts: optionalStringArray(input.sorts, 'sorts'), properties: optionalStringArray(input.properties, 'properties'), limit: input.limit as number | undefined, after: optionalString(input.after, 'after'), integrationName: optionalString(input.integrationName, 'integrationName'), integration: optionalString(input.integration, 'integration'), account: optionalString(input.account, 'account'), secretName: optionalString(input.secretName, 'secretName'), auth: requireAuthMode(input.auth), }) }