@datorama/akita
Version:
State Management Tailored-Made for JS Applications
85 lines • 6.87 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { __stores__ } from './stores';
import { isString } from './isString';
import { setSkipStorageUpdate } from './persistState';
var SnapshotManager = /** @class */ (function () {
function SnapshotManager() {
}
/**
* Get a snapshot of the whole state or a specific stores
* Use it ONLY for things like saving the state in the server
*/
/**
* Get a snapshot of the whole state or a specific stores
* Use it ONLY for things like saving the state in the server
* @param {?=} stores
* @return {?}
*/
SnapshotManager.prototype.getStoresSnapshot = /**
* Get a snapshot of the whole state or a specific stores
* Use it ONLY for things like saving the state in the server
* @param {?=} stores
* @return {?}
*/
function (stores) {
if (stores === void 0) { stores = []; }
/** @type {?} */
var acc = {};
/** @type {?} */
var hasInclude = stores.length > 0;
/** @type {?} */
var keys = hasInclude ? stores : Object.keys(__stores__);
for (var i = 0; i < keys.length; i++) {
/** @type {?} */
var storeName = keys[i];
acc[storeName] = __stores__[storeName]._value();
}
return acc;
};
/**
* Set snapshot we get from the server
*/
/**
* Set snapshot we get from the server
* @param {?} stores
* @param {?=} options
* @return {?}
*/
SnapshotManager.prototype.setStoresSnapshot = /**
* Set snapshot we get from the server
* @param {?} stores
* @param {?=} options
* @return {?}
*/
function (stores, options) {
if (options === void 0) { options = { skipStorageUpdate: false }; }
options.skipStorageUpdate && setSkipStorageUpdate(true);
/** @type {?} */
var normalizedStores = stores;
if (isString(stores)) {
normalizedStores = JSON.parse((/** @type {?} */ (normalizedStores)));
}
var _loop_1 = function (i, keys) {
/** @type {?} */
var storeName = keys[i];
if (__stores__[storeName]) {
__stores__[storeName]._setState((/**
* @return {?}
*/
function () { return normalizedStores[storeName]; }));
}
};
for (var i = 0, keys = Object.keys(normalizedStores); i < keys.length; i++) {
_loop_1(i, keys);
}
options.skipStorageUpdate && setSkipStorageUpdate(false);
};
return SnapshotManager;
}());
export { SnapshotManager };
/** @type {?} */
export var snapshotManager = new SnapshotManager();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3RNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2FraXRhLyIsInNvdXJjZXMiOlsic3JjL3NuYXBzaG90TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXREO0lBQUE7SUFxQ0EsQ0FBQztJQXBDQzs7O09BR0c7Ozs7Ozs7SUFDSCwyQ0FBaUI7Ozs7OztJQUFqQixVQUFrQixNQUFxQjtRQUFyQix1QkFBQSxFQUFBLFdBQXFCOztZQUNqQyxHQUFHLEdBQUcsRUFBRTs7WUFDTixVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDOztZQUM5QixJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzFELEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOztnQkFDL0IsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdkIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqRDtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOztPQUVHOzs7Ozs7O0lBQ0gsMkNBQWlCOzs7Ozs7SUFBakIsVUFBa0IsTUFBNkMsRUFBRSxPQUFzRTtRQUF0RSx3QkFBQSxFQUFBLFlBQTRDLGlCQUFpQixFQUFFLEtBQUssRUFBRTtRQUNySSxPQUFPLENBQUMsaUJBQWlCLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7O1lBRXBELGdCQUFnQixHQUFHLE1BQU07UUFDN0IsSUFBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBQSxnQkFBZ0IsRUFBVSxDQUFDLENBQUM7U0FDM0Q7Z0NBRU8sQ0FBQyxFQUFNLElBQUk7O2dCQUNYLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUN4QixVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUzs7O2dCQUFDLGNBQU0sT0FBQSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBM0IsQ0FBMkIsRUFBQyxDQUFDO2FBQ3BFOztRQUpILEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO29CQUFqRSxDQUFDLEVBQU0sSUFBSTtTQUtsQjtRQUVELE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBckNELElBcUNDOzs7QUFFRCxNQUFNLEtBQU8sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19zdG9yZXNfXyB9IGZyb20gJy4vc3RvcmVzJztcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnLi9pc1N0cmluZyc7XG5pbXBvcnQgeyBzZXRTa2lwU3RvcmFnZVVwZGF0ZSB9IGZyb20gJy4vcGVyc2lzdFN0YXRlJztcblxuZXhwb3J0IGNsYXNzIFNuYXBzaG90TWFuYWdlciB7XG4gIC8qKlxuICAgKiBHZXQgYSBzbmFwc2hvdCBvZiB0aGUgd2hvbGUgc3RhdGUgb3IgYSBzcGVjaWZpYyBzdG9yZXNcbiAgICogVXNlIGl0IE9OTFkgZm9yIHRoaW5ncyBsaWtlIHNhdmluZyB0aGUgc3RhdGUgaW4gdGhlIHNlcnZlclxuICAgKi9cbiAgZ2V0U3RvcmVzU25hcHNob3Qoc3RvcmVzOiBzdHJpbmdbXSA9IFtdKSB7XG4gICAgbGV0IGFjYyA9IHt9O1xuICAgIGNvbnN0IGhhc0luY2x1ZGUgPSBzdG9yZXMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBrZXlzID0gaGFzSW5jbHVkZSA/IHN0b3JlcyA6IE9iamVjdC5rZXlzKF9fc3RvcmVzX18pO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgc3RvcmVOYW1lID0ga2V5c1tpXTtcbiAgICAgIGFjY1tzdG9yZU5hbWVdID0gX19zdG9yZXNfX1tzdG9yZU5hbWVdLl92YWx1ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHNuYXBzaG90IHdlIGdldCBmcm9tIHRoZSBzZXJ2ZXJcbiAgICovXG4gIHNldFN0b3Jlc1NuYXBzaG90KHN0b3JlczogeyBbc3RvcmVOYW1lOiBzdHJpbmddOiBhbnkgfSB8IHN0cmluZywgb3B0aW9uczogeyBza2lwU3RvcmFnZVVwZGF0ZTogYm9vbGVhbiB9ID0geyBza2lwU3RvcmFnZVVwZGF0ZTogZmFsc2UgfSApIHtcbiAgICBvcHRpb25zLnNraXBTdG9yYWdlVXBkYXRlICYmIHNldFNraXBTdG9yYWdlVXBkYXRlKHRydWUpO1xuXG4gICAgbGV0IG5vcm1hbGl6ZWRTdG9yZXMgPSBzdG9yZXM7XG4gICAgaWYoaXNTdHJpbmcoc3RvcmVzKSkge1xuICAgICAgbm9ybWFsaXplZFN0b3JlcyA9IEpTT04ucGFyc2Uobm9ybWFsaXplZFN0b3JlcyBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIGZvcihsZXQgaSA9IDAsIGtleXMgPSBPYmplY3Qua2V5cyhub3JtYWxpemVkU3RvcmVzKTsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHN0b3JlTmFtZSA9IGtleXNbaV07XG4gICAgICBpZihfX3N0b3Jlc19fW3N0b3JlTmFtZV0pIHtcbiAgICAgICAgX19zdG9yZXNfX1tzdG9yZU5hbWVdLl9zZXRTdGF0ZSgoKSA9PiBub3JtYWxpemVkU3RvcmVzW3N0b3JlTmFtZV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIG9wdGlvbnMuc2tpcFN0b3JhZ2VVcGRhdGUgJiYgc2V0U2tpcFN0b3JhZ2VVcGRhdGUoZmFsc2UpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzbmFwc2hvdE1hbmFnZXIgPSBuZXcgU25hcHNob3RNYW5hZ2VyKCk7XG4iXX0=