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 { 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 { 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 { 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 } }