- Created demo emails with various states (inbox, sent, drafts, trash, etc.) in `emails.ts`. - Added demo file nodes representing directories and files in `files.ts`. - Implemented demo Sieve capabilities and scripts in `filters.ts`. - Defined demo identities for users in `identities.ts`. - Established demo mailboxes with permissions and counts in `mailboxes.ts`. - Created a demo vacation response in `vacation.ts`. - Introduced a comprehensive JMAP client interface in `client-interface.ts` to standardize interactions with the JMAP API.
46 lines
1.8 KiB
TypeScript
46 lines
1.8 KiB
TypeScript
import { cloneFixtures } from './demo-utils';
|
|
import { createDemoMailboxes } from './fixtures/mailboxes';
|
|
import { createDemoEmails } from './fixtures/emails';
|
|
import { createDemoContacts, createDemoAddressBooks } from './fixtures/contacts';
|
|
import { createDemoCalendars, createDemoCalendarEvents } from './fixtures/calendars';
|
|
import { createDemoIdentities } from './fixtures/identities';
|
|
import { createDemoSieveScripts, createDemoSieveCapabilities, createDemoSieveContent } from './fixtures/filters';
|
|
import { createDemoFileNodes } from './fixtures/files';
|
|
import { createDemoVacationResponse } from './fixtures/vacation';
|
|
|
|
import type { Email, Mailbox, ContactCard, AddressBook, Calendar, CalendarEvent, Identity, VacationResponse, FileNode } from '@/lib/jmap/types';
|
|
import type { SieveScript, SieveCapabilities } from '@/lib/jmap/sieve-types';
|
|
|
|
export interface DemoData {
|
|
mailboxes: Mailbox[];
|
|
emails: Email[];
|
|
contacts: ContactCard[];
|
|
addressBooks: AddressBook[];
|
|
calendars: Calendar[];
|
|
calendarEvents: CalendarEvent[];
|
|
identities: Identity[];
|
|
sieveScripts: SieveScript[];
|
|
sieveCapabilities: SieveCapabilities;
|
|
sieveContent: Record<string, string>;
|
|
fileNodes: FileNode[];
|
|
vacationResponse: VacationResponse;
|
|
}
|
|
|
|
/** Return a fresh deep-cloned copy of all demo data. */
|
|
export function getDemoData(): DemoData {
|
|
return cloneFixtures({
|
|
mailboxes: createDemoMailboxes(),
|
|
emails: createDemoEmails(),
|
|
contacts: createDemoContacts(),
|
|
addressBooks: createDemoAddressBooks(),
|
|
calendars: createDemoCalendars(),
|
|
calendarEvents: createDemoCalendarEvents(),
|
|
identities: createDemoIdentities(),
|
|
sieveScripts: createDemoSieveScripts(),
|
|
sieveCapabilities: createDemoSieveCapabilities(),
|
|
sieveContent: createDemoSieveContent(),
|
|
fileNodes: createDemoFileNodes(),
|
|
vacationResponse: createDemoVacationResponse(),
|
|
});
|
|
}
|