import { AddLiveObjectRequest, AddObjectRequest, DownloadDataRequest, DeleteLiveObjectRequest, EditLiveObjectRequest, ModifyObjectRequest, GetObjectRequest, GetObjectsRequest, GetObjectsResponse, GetRealmsResponse, GetSchemasRequest, GetSchemasResponse, PlainRealmObject, ReceivedCurrentQueryRequest, RemoveObjectRequest, SerializedRealmObject, RealmObjectReference} from "./SharedTypes"; /** * A helper interface which wraps Realm.Object with * information about its object type and key for reference. * @see SerializedRealmObject **/ export interface DeserializedRealmObject extends RealmObjectReference { // A plain representation of the Realm object realmObject: PlainRealmObject; } export interface DeserializedRealmData { length: number; info: [string, string, string]; } export interface DeserializedRealmDecimal128 { $numberDecimal: string } /** A Realm.CanonicalObjectSchema interface with a sorting order field. */ export interface SortedObjectSchema extends Realm.CanonicalObjectSchema { order: string[]; } export interface CanonicalObjectSchemaPropertyRow extends Realm.CanonicalObjectSchemaProperty { key: number; primaryKey: boolean; } export type DownloadDataFunction = (schema: string, objectKey: string, propertyName: string) => Promise; export type RealmPluginState = { deviceSerial: string; realms: string[]; selectedRealm: string; objects: DeserializedRealmObject[]; schemas: SortedObjectSchema[]; currentSchema: SortedObjectSchema | null; schemaHistory: SortedObjectSchema[]; schemaHistoryIndex: number; cursor: string | null; totalObjects: number; sortingColumn: string | null; sortingDirection: 'ascend' | 'descend' | null; hasMore: boolean; loading: boolean; query: string; errorMessage?: string; }; export type Events = { getObjects: GetObjectsResponse; getSchemas: GetSchemasResponse; liveObjectAdded: AddLiveObjectRequest; liveObjectDeleted: DeleteLiveObjectRequest; liveObjectEdited: EditLiveObjectRequest; getCurrentQuery: undefined; getRealms: GetRealmsResponse; executeQuery: QueryResult; }; export type Methods = { executeQuery: (query: QueryObject) => Promise; getObjects: (data: GetObjectsRequest) => Promise; getObject: (data: GetObjectRequest) => Promise; getSchemas: (data: GetSchemasRequest) => Promise; getRealms: () => Promise; addObject: (object: AddObjectRequest) => Promise; modifyObject: (newObject: ModifyObjectRequest) => Promise; removeObject: (object: RemoveObjectRequest) => Promise; receivedCurrentQuery: (request: ReceivedCurrentQueryRequest) => Promise; downloadData: (data: DownloadDataRequest) => Promise; }; type QueryObject = { schemaName: string; query: string; realm: string; }; export type QueryResult = { result: Array | string; }; export type MenuItem = { key: number; text: string; onClick: () => void; }; export type MenuItemGenerator = ( row: DeserializedRealmObject, schemaProperty: Realm.CanonicalObjectSchemaProperty, schema: Realm.ObjectSchema, ) => Array; export type DropdownPropertyType = { record: DeserializedRealmObject | null; schemaProperty: Realm.CanonicalObjectSchemaProperty | null; currentSchema: Realm.ObjectSchema; visible: boolean; pointerX: number; pointerY: number; scrollX: number; scrollY: number; generateMenuItems: MenuItemGenerator; }; export { AddLiveObjectRequest, AddObjectRequest, DownloadDataRequest, DeleteLiveObjectRequest, EditLiveObjectRequest, ModifyObjectRequest, GetObjectRequest, GetObjectsRequest, GetObjectsResponse, GetRealmsResponse, GetSchemasRequest, GetSchemasResponse, PlainRealmObject, ReceivedCurrentQueryRequest, RemoveObjectRequest, SerializedRealmObject, RealmObjectReference };