feat: add demo data for emails, files, filters, identities, mailboxes, vacation responses, and JMAP client interface
- 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.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
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(),
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user