import { requestGoogle } from './core.ts'
import type { JsonObject } from './types.ts'
export type PeopleMeParams = { account: string; personFields?: string }
export type PeopleSearchParams = { account: string; query: string; pageSize?: number; readMask?: string }
export type PeopleConnectionsParams = { account: string; resourceName?: string; pageSize?: number; pageToken?: string; personFields?: string }
export async function getMe(params: PeopleMeParams): Promise<JsonObject> { const { personFields = 'names,emailAddresses,phoneNumbers,photos,organizations,urls' } = params; return await requestGoogle({ ...params, api: 'people', path: '/v1/people/me', query: { personFields } }) as JsonObject }
export async function searchContacts(params: PeopleSearchParams): Promise<JsonObject> { const { query, pageSize = 10, readMask = 'names,emailAddresses,phoneNumbers,organizations' } = params; if (!query) throw new Error('searchContacts requires query.'); return await requestGoogle({ ...params, api: 'people', method: 'POST', path: '/v1/people:searchContacts', query: { readMask }, body: { query, pageSize } }) as JsonObject }
export async function listConnections(params: PeopleConnectionsParams): Promise<JsonObject> { const { resourceName = 'people/me', pageSize = 10, pageToken, personFields = 'names,emailAddresses,phoneNumbers,organizations' } = params; return await requestGoogle({ ...params, api: 'people', path: '/v1/' + resourceName + '/connections', query: { pageSize, pageToken, personFields } }) as JsonObject }
/**
* Return the Google People helper namespace for profile, contact search, and connections.
* @example
* import people from 'kody:@kentcdodds/google/people'
* const me = await people().getMe({ account: 'personal' })
* // => { resourceName: 'people/...', names: [...], ... }
*/
export default function people() { return { getMe, searchContacts, listConnections } }