UNPKG

@datorama/akita

Version:

State Management Tailored-Made for JS Applications

159 lines 9.43 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { StateHistoryPlugin } from './stateHistoryPlugin'; import { toBoolean } from '../../toBoolean'; import { skip } from 'rxjs/operators'; import { EntityCollectionPlugin } from '../entityCollectionPlugin'; /** * @record * @template IDType */ export function StateHistoryEntityParams() { } if (false) { /** @type {?|undefined} */ StateHistoryEntityParams.prototype.entityIds; } /** * @template State, P */ export class EntityStateHistoryPlugin extends EntityCollectionPlugin { /** * @param {?} query * @param {?=} params */ constructor(query, params = {}) { super(query, params.entityIds); this.query = query; this.params = params; params.maxAge = toBoolean(params.maxAge) ? params.maxAge : 10; this.activate(); this.selectIds() .pipe(skip(1)) .subscribe((/** * @param {?} ids * @return {?} */ ids => this.activate(ids))); } /** * @param {?=} ids * @return {?} */ redo(ids) { this.forEachId(ids, (/** * @param {?} e * @return {?} */ e => e.redo())); } /** * @param {?=} ids * @return {?} */ undo(ids) { this.forEachId(ids, (/** * @param {?} e * @return {?} */ e => e.undo())); } /** * @param {?} id * @return {?} */ hasPast(id) { if (this.hasEntity(id)) { return this.getEntity(id).hasPast; } } /** * @param {?} id * @return {?} */ hasFuture(id) { if (this.hasEntity(id)) { return this.getEntity(id).hasFuture; } } /** * @param {?} ids * @param {?} index * @return {?} */ jumpToFuture(ids, index) { this.forEachId(ids, (/** * @param {?} e * @return {?} */ e => e.jumpToFuture(index))); } /** * @param {?} ids * @param {?} index * @return {?} */ jumpToPast(ids, index) { this.forEachId(ids, (/** * @param {?} e * @return {?} */ e => e.jumpToPast(index))); } /** * @param {?=} ids * @return {?} */ clear(ids) { this.forEachId(ids, (/** * @param {?} e * @return {?} */ e => e.clear())); } /** * @param {?=} ids * @param {?=} clearHistory * @return {?} */ destroy(ids, clearHistory = false) { this.forEachId(ids, (/** * @param {?} e * @return {?} */ e => e.destroy(clearHistory))); } /** * @param {?=} ids * @return {?} */ ignoreNext(ids) { this.forEachId(ids, (/** * @param {?} e * @return {?} */ e => e.ignoreNext())); } /** * @protected * @param {?} id * @return {?} */ instantiatePlugin(id) { return (/** @type {?} */ (new StateHistoryPlugin(this.query, this.params, id))); } } if (false) { /** * @type {?} * @protected */ EntityStateHistoryPlugin.prototype.query; /** * @type {?} * @protected */ EntityStateHistoryPlugin.prototype.params; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5U3RhdGVIaXN0b3J5UGx1Z2luLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2FraXRhLyIsInNvdXJjZXMiOlsic3JjL3BsdWdpbnMvc3RhdGVIaXN0b3J5L2VudGl0eVN0YXRlSGlzdG9yeVBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBRW5FLDhDQUVDOzs7SUFEQyw2Q0FBNEI7Ozs7O0FBRzlCLE1BQU0sT0FBTyx3QkFBMkgsU0FBUSxzQkFBZ0M7Ozs7O0lBQzlLLFlBQXNCLEtBQXlCLEVBQXFCLFNBQXFELEVBQUU7UUFDekgsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFEWCxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUFxQixXQUFNLEdBQU4sTUFBTSxDQUFpRDtRQUV6SCxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRTthQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTOzs7O1FBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUM7SUFDMUMsQ0FBQzs7Ozs7SUFFRCxJQUFJLENBQUMsR0FBK0I7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHOzs7O1FBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUMsQ0FBQztJQUNyQyxDQUFDOzs7OztJQUVELElBQUksQ0FBQyxHQUErQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUc7Ozs7UUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBQyxDQUFDO0lBQ3JDLENBQUM7Ozs7O0lBRUQsT0FBTyxDQUFDLEVBQW9CO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQzs7Ozs7SUFFRCxTQUFTLENBQUMsRUFBb0I7UUFDNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDckM7SUFDSCxDQUFDOzs7Ozs7SUFFRCxZQUFZLENBQUMsR0FBOEIsRUFBRSxLQUFhO1FBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRzs7OztRQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDO0lBQ2xELENBQUM7Ozs7OztJQUVELFVBQVUsQ0FBQyxHQUE4QixFQUFFLEtBQWE7UUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHOzs7O1FBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUM7SUFDaEQsQ0FBQzs7Ozs7SUFFRCxLQUFLLENBQUMsR0FBK0I7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHOzs7O1FBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUMsQ0FBQztJQUN0QyxDQUFDOzs7Ozs7SUFFRCxPQUFPLENBQUMsR0FBK0IsRUFBRSxZQUFZLEdBQUcsS0FBSztRQUMzRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUc7Ozs7UUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQztJQUNwRCxDQUFDOzs7OztJQUVELFVBQVUsQ0FBQyxHQUErQjtRQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUc7Ozs7UUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBQyxDQUFDO0lBQzNDLENBQUM7Ozs7OztJQUVTLGlCQUFpQixDQUFDLEVBQW9CO1FBQzlDLE9BQU8sbUJBQUEsSUFBSSxrQkFBa0IsQ0FBUSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUssQ0FBQztJQUN6RSxDQUFDO0NBQ0Y7Ozs7OztJQXBEYSx5Q0FBbUM7Ozs7O0lBQUUsMENBQTBFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U3RhdGUsIE9yQXJyYXksIGdldElEVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFF1ZXJ5RW50aXR5IH0gZnJvbSAnLi4vLi4vcXVlcnlFbnRpdHknO1xuaW1wb3J0IHsgU3RhdGVIaXN0b3J5UGFyYW1zLCBTdGF0ZUhpc3RvcnlQbHVnaW4gfSBmcm9tICcuL3N0YXRlSGlzdG9yeVBsdWdpbic7XG5pbXBvcnQgeyB0b0Jvb2xlYW4gfSBmcm9tICcuLi8uLi90b0Jvb2xlYW4nO1xuaW1wb3J0IHsgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudGl0eUNvbGxlY3Rpb25QbHVnaW4gfSBmcm9tICcuLi9lbnRpdHlDb2xsZWN0aW9uUGx1Z2luJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZUhpc3RvcnlFbnRpdHlQYXJhbXM8SURUeXBlPiBleHRlbmRzIFN0YXRlSGlzdG9yeVBhcmFtcyB7XG4gIGVudGl0eUlkcz86IE9yQXJyYXk8SURUeXBlPjtcbn1cblxuZXhwb3J0IGNsYXNzIEVudGl0eVN0YXRlSGlzdG9yeVBsdWdpbjxTdGF0ZSBleHRlbmRzIEVudGl0eVN0YXRlID0gYW55LCBQIGV4dGVuZHMgU3RhdGVIaXN0b3J5UGx1Z2luPFN0YXRlPiA9IFN0YXRlSGlzdG9yeVBsdWdpbjxTdGF0ZT4+IGV4dGVuZHMgRW50aXR5Q29sbGVjdGlvblBsdWdpbjxTdGF0ZSwgUD4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcXVlcnk6IFF1ZXJ5RW50aXR5PFN0YXRlPiwgcHJvdGVjdGVkIHJlYWRvbmx5IHBhcmFtczogU3RhdGVIaXN0b3J5RW50aXR5UGFyYW1zPGdldElEVHlwZTxTdGF0ZT4+ID0ge30pIHtcbiAgICBzdXBlcihxdWVyeSwgcGFyYW1zLmVudGl0eUlkcyk7XG4gICAgcGFyYW1zLm1heEFnZSA9IHRvQm9vbGVhbihwYXJhbXMubWF4QWdlKSA/IHBhcmFtcy5tYXhBZ2UgOiAxMDtcbiAgICB0aGlzLmFjdGl2YXRlKCk7XG4gICAgdGhpcy5zZWxlY3RJZHMoKVxuICAgICAgLnBpcGUoc2tpcCgxKSlcbiAgICAgIC5zdWJzY3JpYmUoaWRzID0+IHRoaXMuYWN0aXZhdGUoaWRzKSk7XG4gIH1cblxuICByZWRvKGlkcz86IE9yQXJyYXk8Z2V0SURUeXBlPFN0YXRlPj4pIHtcbiAgICB0aGlzLmZvckVhY2hJZChpZHMsIGUgPT4gZS5yZWRvKCkpO1xuICB9XG5cbiAgdW5kbyhpZHM/OiBPckFycmF5PGdldElEVHlwZTxTdGF0ZT4+KSB7XG4gICAgdGhpcy5mb3JFYWNoSWQoaWRzLCBlID0+IGUudW5kbygpKTtcbiAgfVxuXG4gIGhhc1Bhc3QoaWQ6IGdldElEVHlwZTxTdGF0ZT4pIHtcbiAgICBpZiAodGhpcy5oYXNFbnRpdHkoaWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRFbnRpdHkoaWQpLmhhc1Bhc3Q7XG4gICAgfVxuICB9XG5cbiAgaGFzRnV0dXJlKGlkOiBnZXRJRFR5cGU8U3RhdGU+KSB7XG4gICAgaWYgKHRoaXMuaGFzRW50aXR5KGlkKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RW50aXR5KGlkKS5oYXNGdXR1cmU7XG4gICAgfVxuICB9XG5cbiAganVtcFRvRnV0dXJlKGlkczogT3JBcnJheTxnZXRJRFR5cGU8U3RhdGU+PiwgaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZm9yRWFjaElkKGlkcywgZSA9PiBlLmp1bXBUb0Z1dHVyZShpbmRleCkpO1xuICB9XG5cbiAganVtcFRvUGFzdChpZHM6IE9yQXJyYXk8Z2V0SURUeXBlPFN0YXRlPj4sIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmZvckVhY2hJZChpZHMsIGUgPT4gZS5qdW1wVG9QYXN0KGluZGV4KSk7XG4gIH1cblxuICBjbGVhcihpZHM/OiBPckFycmF5PGdldElEVHlwZTxTdGF0ZT4+KSB7XG4gICAgdGhpcy5mb3JFYWNoSWQoaWRzLCBlID0+IGUuY2xlYXIoKSk7XG4gIH1cblxuICBkZXN0cm95KGlkcz86IE9yQXJyYXk8Z2V0SURUeXBlPFN0YXRlPj4sIGNsZWFySGlzdG9yeSA9IGZhbHNlKSB7XG4gICAgdGhpcy5mb3JFYWNoSWQoaWRzLCBlID0+IGUuZGVzdHJveShjbGVhckhpc3RvcnkpKTtcbiAgfVxuXG4gIGlnbm9yZU5leHQoaWRzPzogT3JBcnJheTxnZXRJRFR5cGU8U3RhdGU+Pikge1xuICAgIHRoaXMuZm9yRWFjaElkKGlkcywgZSA9PiBlLmlnbm9yZU5leHQoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zdGFudGlhdGVQbHVnaW4oaWQ6IGdldElEVHlwZTxTdGF0ZT4pIHtcbiAgICByZXR1cm4gbmV3IFN0YXRlSGlzdG9yeVBsdWdpbjxTdGF0ZT4odGhpcy5xdWVyeSwgdGhpcy5wYXJhbXMsIGlkKSBhcyBQO1xuICB9XG59XG4iXX0=