UNPKG

gcal-commander

Version:

A command-line interface for Google Calendar operations

76 lines (75 loc) 2.32 kB
import { calendar_v3 as calendarV3 } from 'googleapis'; import { SupportedLanguage } from '../constants/languages'; export interface ListEventsParams { calendarId: string; maxResults: number; timeMax: string; timeMin: string; } export interface CreateEventParams { attendees?: string[]; calendarId: string; description?: string; end: CalendarDateTime; location?: string; sendUpdates?: 'all' | 'externalOnly' | 'none'; start: CalendarDateTime; summary: string; } export interface CalendarDateTime { date?: string; dateTime?: string; timeZone?: string; } export interface ICalendarService { createEvent(params: CreateEventParams): Promise<calendarV3.Schema$Event>; getEvent(eventId: string, calendarId: string): Promise<calendarV3.Schema$Event>; listCalendars(): Promise<calendarV3.Schema$CalendarListEntry[]>; listEvents(params: ListEventsParams): Promise<calendarV3.Schema$Event[]>; } export interface AuthResult { client: any; } export interface IAuthService { getCalendarAuth(): Promise<AuthResult>; } export interface SelectChoice { name: string; value: string; } export interface IPromptService { confirm(message: string, defaultValue?: boolean): Promise<boolean>; select(message: string, choices: SelectChoice[]): Promise<string>; } export interface II18nService { changeLanguage(language: string): Promise<void>; init(language?: string): Promise<void>; t(key: string, options?: any): string; } export interface Config extends Record<string, unknown> { defaultCalendar?: string; events?: { days?: number; format?: 'json' | 'pretty-json' | 'table'; maxResults?: number; }; language?: SupportedLanguage; } export interface IConfigService { get<T>(key: string): Promise<T | undefined>; getConfigPath(): string; getValidKeys(): readonly string[]; list(): Promise<Config>; load(): Promise<void>; reset(): Promise<void>; save(): Promise<void>; set(key: string, value: unknown): Promise<void>; unset(key: string): Promise<void>; validateKey(key: string): boolean; validateValue(key: string, value: unknown): { error?: string; errorKey?: string; errorOptions?: unknown; valid: boolean; }; }