ngx-base-state
Version:
Base classes for creation state service via Rxjs observable
42 lines • 4.82 kB
JavaScript
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=