UNPKG

ngx-base-state

Version:

Base classes for creation state service via Rxjs observable

42 lines 4.82 kB
import { __decorate } from "tslib"; import { ɵAction as Action } from '../decorators'; import { isObject } from '../helpers'; import { BaseState } from './base.state'; /** * @class * @classdes Object state class. Used for save state with Object type. */ export class ObjectState extends BaseState { /** * Updates state by merging new partial object with the existing one. * @public * @param {T | null} value - the value that should be set to update `BehaviorSubject`. */ updateWithPartial(value) { this.set({ ...this.data, ...value }); } setNewValue(value) { if (value) { super.setNewValue({ ...value }); } else { super.setNewValue(null); } } catchError(error, actionName) { if (error instanceof TypeError) { throw new Error(`\n${this.constructor.name} [${actionName}]:` + `Firstly set Object.\n\n${error.message}`); } super.catchError(error, actionName); } validateDataType(data) { if (!isObject(data)) { throw new Error(`${this.constructor.name}: Expected data in Object format!`); } } } __decorate([ Action ], ObjectState.prototype, "updateWithPartial", null); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGlicmFyeS9zcmMvbGliL3N0YXRlcy9vYmplY3Quc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLElBQUksTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLFdBQThCLFNBQVEsU0FBWTtJQUNwRTs7OztPQUlHO0lBRUksaUJBQWlCLENBQUMsS0FBaUI7UUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUssRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVrQixXQUFXLENBQUMsS0FBZTtRQUMxQyxJQUFJLEtBQUssRUFBRTtZQUNQLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRWtCLFVBQVUsQ0FBQyxLQUF3QixFQUFFLFVBQWtCO1FBQ3RFLElBQUksS0FBSyxZQUFZLFNBQVMsRUFBRTtZQUM1QixNQUFNLElBQUksS0FBSyxDQUNYLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJO2dCQUM3QywwQkFBMEIsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUM1QyxDQUFDO1NBQ0w7UUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRWtCLGdCQUFnQixDQUFDLElBQWE7UUFDN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG1DQUFtQyxDQUFDLENBQUM7U0FDaEY7SUFDTCxDQUFDO0NBQ0o7QUE1Qkc7SUFEQyxNQUFNO29EQUdOIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgybVBY3Rpb24gYXMgQWN0aW9uIH0gZnJvbSAnLi4vZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi4vaGVscGVycyc7XHJcbmltcG9ydCB7IEJhc2VTdGF0ZSB9IGZyb20gJy4vYmFzZS5zdGF0ZSc7XHJcblxyXG4vKipcclxuICpcdEBjbGFzc1xyXG4gKlx0QGNsYXNzZGVzIE9iamVjdCBzdGF0ZSBjbGFzcy4gVXNlZCBmb3Igc2F2ZSBzdGF0ZSB3aXRoIE9iamVjdCB0eXBlLlxyXG4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9iamVjdFN0YXRlPFQgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgQmFzZVN0YXRlPFQ+IHtcclxuICAgIC8qKlxyXG4gICAgICogIFVwZGF0ZXMgc3RhdGUgYnkgbWVyZ2luZyBuZXcgcGFydGlhbCBvYmplY3Qgd2l0aCB0aGUgZXhpc3Rpbmcgb25lLlxyXG4gICAgICogIEBwdWJsaWNcclxuICAgICAqICBAcGFyYW0ge1QgfCBudWxsfSB2YWx1ZSAtIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZSBzZXQgdG8gdXBkYXRlIGBCZWhhdmlvclN1YmplY3RgLlxyXG4gICAgICovXHJcbiAgICBAQWN0aW9uXHJcbiAgICBwdWJsaWMgdXBkYXRlV2l0aFBhcnRpYWwodmFsdWU6IFBhcnRpYWw8VD4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldCh7IC4uLnRoaXMuZGF0YSEsIC4uLnZhbHVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzZXROZXdWYWx1ZSh2YWx1ZTogVCB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgc3VwZXIuc2V0TmV3VmFsdWUoeyAuLi52YWx1ZSB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdXBlci5zZXROZXdWYWx1ZShudWxsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhdGNoRXJyb3IoZXJyb3I6IEVycm9yIHwgVHlwZUVycm9yLCBhY3Rpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBUeXBlRXJyb3IpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgYFxcbiR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBbJHthY3Rpb25OYW1lfV06YCArXHJcbiAgICAgICAgICAgICAgICBgRmlyc3RseSBzZXQgT2JqZWN0LlxcblxcbiR7ZXJyb3IubWVzc2FnZX1gXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdXBlci5jYXRjaEVycm9yKGVycm9yLCBhY3Rpb25OYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdmFsaWRhdGVEYXRhVHlwZShkYXRhOiB1bmtub3duKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFpc09iamVjdChkYXRhKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogRXhwZWN0ZWQgZGF0YSBpbiBPYmplY3QgZm9ybWF0IWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=