import type { LoadPriority, WorkspaceCRUD, WorkspaceUISchema, } from '@affine/workspace/type'; import { WorkspaceFlavour } from '@affine/workspace/type'; import { AffinePlugin } from './affine'; import { LocalPlugin } from './local'; export interface WorkspacePlugin { flavour: Flavour; // Plugin will be loaded according to the priority loadPriority: LoadPriority; // fixme: this is a hack cleanup?: () => void; // Fetch necessary data for the first render CRUD: WorkspaceCRUD; UI: WorkspaceUISchema; } export const WorkspacePlugins = { [WorkspaceFlavour.AFFINE]: AffinePlugin, [WorkspaceFlavour.LOCAL]: LocalPlugin, } satisfies { [Key in WorkspaceFlavour]: WorkspacePlugin; };