delta-store
Version:
An API for a store with change records
45 lines (33 loc) • 1.01 kB
text/typescript
import {ChangeListShareInfo} from './SharingAdaptor';
import {ChangeError, ChangeRecord, ChangeRecordIterator} from './ChangeModel';
import {Subject} from 'rxjs/Subject';
/**
* Created by Papa on 1/1/2016.
*/
export interface SharedChangeList {
shareInfo: ChangeListShareInfo;
loadFromRecord( changeRecord: ChangeRecord ): Promise<ChangeRecordIterator>;
addChanges( changeRecords: ChangeRecord[] ): Promise<void>;
errorSubject(): Subject<ChangeError>;
changesAddedRemotelySubject(): Subject<ChangeRecordIterator>;
}
export class ArrayChangeRecordIterator implements ChangeRecordIterator {
length: number;
constructor(
private changeRecords: ChangeRecord[],
private nextIndex = 0
) {
this.length = changeRecords.length;
}
next(): ChangeRecord {
if (!this.hasNext()) {
throw 'No more change records found';
}
let nextValue = this.changeRecords[this.nextIndex];
this.nextIndex++;
return nextValue;
}
hasNext(): boolean {
return this.nextIndex < this.length;
}
}