import SyncItem from "../SyncItem"; import SynchronizableCollection from "../SynchronizableCollection"; import BasicSyncMetadata from "./BasicSyncMetadata"; import DocId from "../types/DocId"; import CollectionSyncMetadata from "../CollectionSyncMetadata"; import * as R from "ramda"; class SynchronizableArray extends SynchronizableCollection{ private array: SyncItem[]; constructor(syncMetadata: CollectionSyncMetadata = new BasicSyncMetadata()){ super(syncMetadata); this.array = []; } async initialize(){ } countAll(): number{ return this.array.length; } itemsNewerThan(date: Date | undefined, limit: number): SyncItem[]{ if(!date){ return this.array; } let filteredArray = this.array.sort((a: SyncItem, b: SyncItem) => (a.updatedAt as any) - (b.updatedAt as any)) .filter(item => date < item.updatedAt); return R.take(limit, filteredArray); } private findById(id: DocId): SyncItem | undefined{ return this.array.find((x: SyncItem) => x.id == id); } findByIds(ids: DocId[]): SyncItem[]{ const idSet = new Set(ids); const result: SyncItem[] = []; for(let i=0; i