/** * RxChangeEvents a emitted when something in the database changes * they can be grabbed by the observables of database, collection and document */ import { WriteOperation, ChangeEvent as EventReduceChangeEvent } from 'event-reduce-js'; import type { RxCollection, RxDocument, RxDocumentTypeWithRev } from './types'; export declare type RxChangeEventJson = { operation: WriteOperation; documentId: string; documentData: RxDocumentTypeWithRev; previousData?: DocType; databaseToken: string; collectionName: string; isLocal: boolean; startTime?: number; endTime?: number; }; export declare type RxChangeEventBroadcastChannelData = { cE: RxChangeEventJson; storageToken: string; }; export declare class RxChangeEvent { readonly operation: WriteOperation; readonly documentId: string; readonly documentData: RxDocumentTypeWithRev; readonly databaseToken: string; readonly collectionName: string; readonly isLocal: boolean; /** * timestam on when the operation was triggered * and when it was finished * This is optional because we do not have this time * for events that come from pouchdbs changestream. */ startTime?: number | undefined; endTime?: number | undefined; readonly previousData?: DocType | null | undefined; readonly rxDocument?: RxDocument | undefined; constructor(operation: WriteOperation, documentId: string, documentData: RxDocumentTypeWithRev, databaseToken: string, collectionName: string, isLocal: boolean, /** * timestam on when the operation was triggered * and when it was finished * This is optional because we do not have this time * for events that come from pouchdbs changestream. */ startTime?: number | undefined, endTime?: number | undefined, previousData?: DocType | null | undefined, rxDocument?: RxDocument | undefined); isIntern(): boolean; toJSON(): RxChangeEventJson; toEventReduceChangeEvent(): EventReduceChangeEvent; } export interface RxChangeEventInsert extends RxChangeEvent { operation: 'INSERT'; previousData: null; } export interface RxChangeEventUpdate extends RxChangeEvent { operation: 'UPDATE'; } export interface RxChangeEventDelete extends RxChangeEvent { operation: 'DELETE'; } export declare function changeEventfromPouchChange(changeDoc: any, collection: RxCollection, startTime: number, // time when the event was streamed out of pouchdb endTime: number): RxChangeEvent; export declare function createInsertEvent(collection: RxCollection, docData: RxDocumentTypeWithRev, startTime: number, endTime: number, doc?: RxDocument): RxChangeEvent; export declare function createUpdateEvent(collection: RxCollection, docData: RxDocumentTypeWithRev, previous: RxDocumentType, startTime: number, endTime: number, rxDocument: RxDocument): RxChangeEvent; export declare function createDeleteEvent(collection: RxCollection, docData: RxDocumentTypeWithRev, previous: RxDocumentType, startTime: number, endTime: number, rxDocument: RxDocument): RxChangeEvent; export declare function isInstanceOf(obj: RxChangeEvent | any): boolean;