UNPKG

@datorama/akita

Version:

State Management Tailored-Made for JS Applications

85 lines 6.87 kB
/** * @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=