UNPKG

@datorama/akita

Version:

State Management Tailored-Made for JS Applications

194 lines 11.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { filterNil } from '../filterNil'; import { toBoolean } from '../toBoolean'; import { getAkitaConfig } from '../config'; /** * @abstract * @template State */ var /** * @abstract * @template State */ AkitaPlugin = /** @class */ (function () { function AkitaPlugin(query, config) { this.query = query; if (config && config.resetFn) { if (getAkitaConfig().resettable) { this.onReset(config.resetFn); } } } /** This method is responsible for getting access to the query. */ /** * This method is responsible for getting access to the query. * @protected * @return {?} */ AkitaPlugin.prototype.getQuery = /** * This method is responsible for getting access to the query. * @protected * @return {?} */ function () { return this.query; }; /** This method is responsible for getting access to the store. */ /** * This method is responsible for getting access to the store. * @protected * @return {?} */ AkitaPlugin.prototype.getStore = /** * This method is responsible for getting access to the store. * @protected * @return {?} */ function () { return this.getQuery().__store__; }; /** This method is responsible tells whether the plugin is entityBased or not. */ /** * This method is responsible tells whether the plugin is entityBased or not. * @protected * @param {?} entityId * @return {?} */ AkitaPlugin.prototype.isEntityBased = /** * This method is responsible tells whether the plugin is entityBased or not. * @protected * @param {?} entityId * @return {?} */ function (entityId) { return toBoolean(entityId); }; /** This method is responsible for selecting the source; it can be the whole store or one entity. */ /** * This method is responsible for selecting the source; it can be the whole store or one entity. * @protected * @param {?} entityId * @return {?} */ AkitaPlugin.prototype.selectSource = /** * This method is responsible for selecting the source; it can be the whole store or one entity. * @protected * @param {?} entityId * @return {?} */ function (entityId) { if (this.isEntityBased(entityId)) { return ((/** @type {?} */ (this.getQuery()))).selectEntity(entityId).pipe(filterNil); } return ((/** @type {?} */ (this.getQuery()))).select((/** * @param {?} state * @return {?} */ function (state) { return state; })); }; /** * @protected * @param {?} entityId * @return {?} */ AkitaPlugin.prototype.getSource = /** * @protected * @param {?} entityId * @return {?} */ function (entityId) { if (this.isEntityBased(entityId)) { return ((/** @type {?} */ (this.getQuery()))).getEntity(entityId); } return this.getQuery().getValue(); }; /** This method is responsible for updating the store or one entity; it can be the whole store or one entity. */ /** * This method is responsible for updating the store or one entity; it can be the whole store or one entity. * @protected * @param {?} newState * @param {?=} entityId * @return {?} */ AkitaPlugin.prototype.updateStore = /** * This method is responsible for updating the store or one entity; it can be the whole store or one entity. * @protected * @param {?} newState * @param {?=} entityId * @return {?} */ function (newState, entityId) { if (this.isEntityBased(entityId)) { this.getStore().update(entityId, newState); } else { this.getStore()._setState((/** * @param {?} state * @return {?} */ function (state) { return (tslib_1.__assign({}, state, newState)); })); } }; /** * Function to invoke upon reset */ /** * Function to invoke upon reset * @private * @param {?} fn * @return {?} */ AkitaPlugin.prototype.onReset = /** * Function to invoke upon reset * @private * @param {?} fn * @return {?} */ function (fn) { var _this = this; /** @type {?} */ var original = this.getStore().reset; this.getStore().reset = (/** * @param {...?} params * @return {?} */ function () { var params = []; for (var _i = 0; _i < arguments.length; _i++) { params[_i] = arguments[_i]; } /** It should run after the plugin destroy method */ setTimeout((/** * @return {?} */ function () { original.apply(_this.getStore(), params); fn(); })); }); }; return AkitaPlugin; }()); /** * @abstract * @template State */ export { AkitaPlugin }; if (false) { /** * @type {?} * @protected */ AkitaPlugin.prototype.query; /** * This method is responsible for cleaning. * @abstract * @return {?} */ AkitaPlugin.prototype.destroy = function () { }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2FraXRhLyIsInNvdXJjZXMiOlsic3JjL3BsdWdpbnMvcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBSTNDOzs7OztJQUNFLHFCQUFnQyxLQUFxQixFQUFFLE1BQStCO1FBQXRELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ25ELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDNUIsSUFBSSxjQUFjLEVBQUUsQ0FBQyxVQUFVLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzlCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsa0VBQWtFOzs7Ozs7SUFDeEQsOEJBQVE7Ozs7O0lBQWxCO1FBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxrRUFBa0U7Ozs7OztJQUN4RCw4QkFBUTs7Ozs7SUFBbEI7UUFDRSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUtELGtGQUFrRjs7Ozs7OztJQUN4RSxtQ0FBYTs7Ozs7O0lBQXZCLFVBQXdCLFFBQWE7UUFDbkMsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELG9HQUFvRzs7Ozs7OztJQUMxRixrQ0FBWTs7Ozs7O0lBQXRCLFVBQXVCLFFBQWE7UUFDbEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sQ0FBQyxtQkFBQSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQXNCLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3ZGO1FBRUQsT0FBTyxDQUFDLG1CQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBZ0IsQ0FBQyxDQUFDLE1BQU07Ozs7UUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssRUFBTCxDQUFLLEVBQUMsQ0FBQztJQUNsRSxDQUFDOzs7Ozs7SUFFUywrQkFBUzs7Ozs7SUFBbkIsVUFBb0IsUUFBYTtRQUMvQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDaEMsT0FBTyxDQUFDLG1CQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBc0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwRTtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxnSEFBZ0g7Ozs7Ozs7O0lBQ3RHLGlDQUFXOzs7Ozs7O0lBQXJCLFVBQXNCLFFBQVEsRUFBRSxRQUFTO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUM1QzthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVM7Ozs7WUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLHNCQUFNLEtBQUssRUFBSyxRQUFRLEVBQUcsRUFBM0IsQ0FBMkIsRUFBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztJQUVEOztPQUVHOzs7Ozs7O0lBQ0ssNkJBQU87Ozs7OztJQUFmLFVBQWdCLEVBQVk7UUFBNUIsaUJBU0M7O1lBUk8sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLOzs7O1FBQUc7WUFBQyxnQkFBUztpQkFBVCxVQUFTLEVBQVQscUJBQVMsRUFBVCxJQUFTO2dCQUFULDJCQUFTOztZQUNoQyxvREFBb0Q7WUFDcEQsVUFBVTs7O1lBQUM7Z0JBQ1QsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3hDLEVBQUUsRUFBRSxDQUFDO1lBQ1AsQ0FBQyxFQUFDLENBQUM7UUFDTCxDQUFDLENBQUEsQ0FBQztJQUNKLENBQUM7SUFDSCxrQkFBQztBQUFELENBQUMsQUFsRUQsSUFrRUM7Ozs7Ozs7Ozs7O0lBakV1Qiw0QkFBK0I7Ozs7OztJQW1CckQsZ0RBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlFbnRpdHkgfSBmcm9tICcuLi9xdWVyeUVudGl0eSc7XG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IGZpbHRlck5pbCB9IGZyb20gJy4uL2ZpbHRlck5pbCc7XG5pbXBvcnQgeyB0b0Jvb2xlYW4gfSBmcm9tICcuLi90b0Jvb2xlYW4nO1xuaW1wb3J0IHsgZ2V0QWtpdGFDb25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuXG5leHBvcnQgdHlwZSBRdWVyaWVzPFN0YXRlPiA9IFF1ZXJ5PFN0YXRlPiB8IFF1ZXJ5RW50aXR5PFN0YXRlPjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFraXRhUGx1Z2luPFN0YXRlID0gYW55PiB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcXVlcnk6IFF1ZXJpZXM8U3RhdGU+LCBjb25maWc/OiB7IHJlc2V0Rm4/OiBGdW5jdGlvbiB9KSB7XG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcucmVzZXRGbikge1xuICAgICAgaWYgKGdldEFraXRhQ29uZmlnKCkucmVzZXR0YWJsZSkge1xuICAgICAgICB0aGlzLm9uUmVzZXQoY29uZmlnLnJlc2V0Rm4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGlzIG1ldGhvZCBpcyByZXNwb25zaWJsZSBmb3IgZ2V0dGluZyBhY2Nlc3MgdG8gdGhlIHF1ZXJ5LiAqL1xuICBwcm90ZWN0ZWQgZ2V0UXVlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnk7XG4gIH1cblxuICAvKiogVGhpcyBtZXRob2QgaXMgcmVzcG9uc2libGUgZm9yIGdldHRpbmcgYWNjZXNzIHRvIHRoZSBzdG9yZS4gKi9cbiAgcHJvdGVjdGVkIGdldFN0b3JlKCkge1xuICAgIHJldHVybiB0aGlzLmdldFF1ZXJ5KCkuX19zdG9yZV9fO1xuICB9XG5cbiAgLyoqIFRoaXMgbWV0aG9kIGlzIHJlc3BvbnNpYmxlIGZvciBjbGVhbmluZy4gKi9cbiAgcHVibGljIGFic3RyYWN0IGRlc3Ryb3koKTtcblxuICAvKiogVGhpcyBtZXRob2QgaXMgcmVzcG9uc2libGUgdGVsbHMgd2hldGhlciB0aGUgcGx1Z2luIGlzIGVudGl0eUJhc2VkIG9yIG5vdC4gICovXG4gIHByb3RlY3RlZCBpc0VudGl0eUJhc2VkKGVudGl0eUlkOiBhbnkpIHtcbiAgICByZXR1cm4gdG9Cb29sZWFuKGVudGl0eUlkKTtcbiAgfVxuXG4gIC8qKiBUaGlzIG1ldGhvZCBpcyByZXNwb25zaWJsZSBmb3Igc2VsZWN0aW5nIHRoZSBzb3VyY2U7IGl0IGNhbiBiZSB0aGUgd2hvbGUgc3RvcmUgb3Igb25lIGVudGl0eS4gKi9cbiAgcHJvdGVjdGVkIHNlbGVjdFNvdXJjZShlbnRpdHlJZDogYW55KSB7XG4gICAgaWYgKHRoaXMuaXNFbnRpdHlCYXNlZChlbnRpdHlJZCkpIHtcbiAgICAgIHJldHVybiAodGhpcy5nZXRRdWVyeSgpIGFzIFF1ZXJ5RW50aXR5PFN0YXRlPikuc2VsZWN0RW50aXR5KGVudGl0eUlkKS5waXBlKGZpbHRlck5pbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICh0aGlzLmdldFF1ZXJ5KCkgYXMgUXVlcnk8U3RhdGU+KS5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFNvdXJjZShlbnRpdHlJZDogYW55KTogYW55IHtcbiAgICBpZiAodGhpcy5pc0VudGl0eUJhc2VkKGVudGl0eUlkKSkge1xuICAgICAgcmV0dXJuICh0aGlzLmdldFF1ZXJ5KCkgYXMgUXVlcnlFbnRpdHk8U3RhdGU+KS5nZXRFbnRpdHkoZW50aXR5SWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFF1ZXJ5KCkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKiBUaGlzIG1ldGhvZCBpcyByZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgdGhlIHN0b3JlIG9yIG9uZSBlbnRpdHk7IGl0IGNhbiBiZSB0aGUgd2hvbGUgc3RvcmUgb3Igb25lIGVudGl0eS4gKi9cbiAgcHJvdGVjdGVkIHVwZGF0ZVN0b3JlKG5ld1N0YXRlLCBlbnRpdHlJZD8pIHtcbiAgICBpZiAodGhpcy5pc0VudGl0eUJhc2VkKGVudGl0eUlkKSkge1xuICAgICAgdGhpcy5nZXRTdG9yZSgpLnVwZGF0ZShlbnRpdHlJZCwgbmV3U3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldFN0b3JlKCkuX3NldFN0YXRlKHN0YXRlID0+ICh7IC4uLnN0YXRlLCAuLi5uZXdTdGF0ZSB9KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIGludm9rZSB1cG9uIHJlc2V0XG4gICAqL1xuICBwcml2YXRlIG9uUmVzZXQoZm46IEZ1bmN0aW9uKSB7XG4gICAgY29uc3Qgb3JpZ2luYWwgPSB0aGlzLmdldFN0b3JlKCkucmVzZXQ7XG4gICAgdGhpcy5nZXRTdG9yZSgpLnJlc2V0ID0gKC4uLnBhcmFtcykgPT4ge1xuICAgICAgLyoqIEl0IHNob3VsZCBydW4gYWZ0ZXIgdGhlIHBsdWdpbiBkZXN0cm95IG1ldGhvZCAqL1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIG9yaWdpbmFsLmFwcGx5KHRoaXMuZ2V0U3RvcmUoKSwgcGFyYW1zKTtcbiAgICAgICAgZm4oKTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==