UNPKG

@datorama/akita

Version:

State Management Tailored-Made for JS Applications

115 lines 8.86 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Subject } from 'rxjs'; import { Injectable } from '@angular/core'; import { filter, map } from 'rxjs/operators'; import { isFunction } from '@datorama/akita'; import { HttpMethod } from './ng-entity-service-notifier'; import * as i0 from "@angular/core"; export class NgEntityServiceLoader { constructor() { this.dispatcher = new Subject(); this.loading$ = this.dispatcher.asObservable(); } /** * @param {?} event * @return {?} */ dispatch(event) { this.dispatcher.next(event); } /** * @param {?=} name * @return {?} */ loadersFor(name) { /** @type {?} */ const filterStore = filter((/** * @param {?} __0 * @return {?} */ ({ storeName }) => (name ? storeName === name : true))); /** @type {?} */ const filterMethod = (/** * @param {?} mthd * @return {?} */ mthd => filter((/** * @param {?} __0 * @return {?} */ ({ method }) => { return isFunction(mthd) ? mthd(method) : method === mthd; }))); /** @type {?} */ const actionBased = (/** * @param {?} current * @return {?} */ (current) => this.loading$.pipe(filterStore, filterMethod(current), map((/** * @param {?} action * @return {?} */ action => action.loading)))); /** @type {?} */ const idBased = (/** * @param {?} id * @param {?} mthd * @return {?} */ (id, mthd) => this.loading$.pipe(filterStore, filterMethod(mthd), filter((/** * @param {?} action * @return {?} */ action => action.entityId === id)), map((/** * @param {?} action * @return {?} */ action => action.loading)))); return { get$: actionBased(HttpMethod.GET), add$: actionBased(HttpMethod.POST), update$: actionBased((/** * @param {?} method * @return {?} */ method => method === HttpMethod.PUT || method === HttpMethod.PATCH)), delete$: actionBased(HttpMethod.DELETE), getEntity: (/** * @param {?} id * @return {?} */ (id) => idBased(id, HttpMethod.GET)), updateEntity: (/** * @param {?} id * @return {?} */ (id) => idBased(id, (/** * @param {?} method * @return {?} */ method => method === HttpMethod.PUT || method === HttpMethod.PATCH))), deleteEntity: (/** * @param {?} id * @return {?} */ (id) => idBased(id, HttpMethod.DELETE)) }; } } NgEntityServiceLoader.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ NgEntityServiceLoader.ngInjectableDef = i0.defineInjectable({ factory: function NgEntityServiceLoader_Factory() { return new NgEntityServiceLoader(); }, token: NgEntityServiceLoader, providedIn: "root" }); if (false) { /** * @type {?} * @private */ NgEntityServiceLoader.prototype.dispatcher; /** @type {?} */ NgEntityServiceLoader.prototype.loading$; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZW50aXR5LXNlcnZpY2UubG9hZGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2FraXRhL2FuZ3VsYXIvcGxheWdyb3VuZC9wcm9qZWN0cy9uZy1lbnRpdHktc2VydmljZS8iLCJzb3VyY2VzIjpbImxpYi9uZy1lbnRpdHktc2VydmljZS5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBSzFELE1BQU0sT0FBTyxxQkFBcUI7SUFEbEM7UUFFVSxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVMsQ0FBQztRQUMxQyxhQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQXNDM0M7Ozs7O0lBcENDLFFBQVEsQ0FBQyxLQUFZO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7Ozs7O0lBRUQsVUFBVSxDQUFDLElBQWE7O2NBQ2hCLFdBQVcsR0FBRyxNQUFNOzs7O1FBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUM7O2NBQ2xGLFlBQVk7Ozs7UUFBRyxJQUFJLENBQUMsRUFBRSxDQUMxQixNQUFNOzs7O1FBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBUyxFQUFFLEVBQUU7WUFDM0IsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQztRQUMzRCxDQUFDLEVBQUMsQ0FBQTs7Y0FFRSxXQUFXOzs7O1FBQUcsQ0FBQyxPQUEyQyxFQUFFLEVBQUUsQ0FDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLFdBQVcsRUFDWCxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQ3JCLEdBQUc7Ozs7UUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUMsQ0FDOUIsQ0FBQTs7Y0FFRyxPQUFPOzs7OztRQUFHLENBQUMsRUFBTyxFQUFFLElBQXdDLEVBQUUsRUFBRSxDQUNwRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsV0FBVyxFQUNYLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsTUFBTTs7OztRQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxFQUFFLEVBQUMsRUFDeEMsR0FBRzs7OztRQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBQyxDQUM5QixDQUFBO1FBRUgsT0FBTztZQUNMLElBQUksRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUNqQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDbEMsT0FBTyxFQUFFLFdBQVc7Ozs7WUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsR0FBRyxJQUFJLE1BQU0sS0FBSyxVQUFVLENBQUMsS0FBSyxFQUFDO1lBQ3hGLE9BQU8sRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUN2QyxTQUFTOzs7O1lBQUUsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ25ELFlBQVk7Ozs7WUFBRSxDQUFDLEVBQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUU7Ozs7WUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsR0FBRyxJQUFJLE1BQU0sS0FBSyxVQUFVLENBQUMsS0FBSyxFQUFDLENBQUE7WUFDMUcsWUFBWTs7OztZQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUMxRCxDQUFDO0lBQ0osQ0FBQzs7O1lBeENGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7Ozs7Ozs7O0lBRWhDLDJDQUEwQzs7SUFDMUMseUNBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnQGRhdG9yYW1hL2FraXRhJztcbmltcG9ydCB7IEh0dHBNZXRob2QgfSBmcm9tICcuL25nLWVudGl0eS1zZXJ2aWNlLW5vdGlmaWVyJztcblxudHlwZSBFdmVudCA9IHsgbWV0aG9kOiBIdHRwTWV0aG9kOyBsb2FkaW5nOiBib29sZWFuOyBzdG9yZU5hbWU6IHN0cmluZzsgZW50aXR5SWQ/OiBhbnkgfTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOZ0VudGl0eVNlcnZpY2VMb2FkZXIge1xuICBwcml2YXRlIGRpc3BhdGNoZXIgPSBuZXcgU3ViamVjdDxFdmVudD4oKTtcbiAgbG9hZGluZyQgPSB0aGlzLmRpc3BhdGNoZXIuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZGlzcGF0Y2goZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5kaXNwYXRjaGVyLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgbG9hZGVyc0ZvcihuYW1lPzogc3RyaW5nKSB7XG4gICAgY29uc3QgZmlsdGVyU3RvcmUgPSBmaWx0ZXIoKHsgc3RvcmVOYW1lIH06IEV2ZW50KSA9PiAobmFtZSA/IHN0b3JlTmFtZSA9PT0gbmFtZSA6IHRydWUpKTtcbiAgICBjb25zdCBmaWx0ZXJNZXRob2QgPSBtdGhkID0+XG4gICAgICBmaWx0ZXIoKHsgbWV0aG9kIH06IEV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG10aGQpID8gbXRoZChtZXRob2QpIDogbWV0aG9kID09PSBtdGhkO1xuICAgICAgfSk7XG5cbiAgICBjb25zdCBhY3Rpb25CYXNlZCA9IChjdXJyZW50OiAoKG1ldGhvZCkgPT4gYm9vbGVhbikgfCBIdHRwTWV0aG9kKSA9PlxuICAgICAgdGhpcy5sb2FkaW5nJC5waXBlKFxuICAgICAgICBmaWx0ZXJTdG9yZSxcbiAgICAgICAgZmlsdGVyTWV0aG9kKGN1cnJlbnQpLFxuICAgICAgICBtYXAoYWN0aW9uID0+IGFjdGlvbi5sb2FkaW5nKVxuICAgICAgKTtcblxuICAgIGNvbnN0IGlkQmFzZWQgPSAoaWQ6IGFueSwgbXRoZDogKChtZXRob2QpID0+IGJvb2xlYW4pIHwgSHR0cE1ldGhvZCkgPT5cbiAgICAgIHRoaXMubG9hZGluZyQucGlwZShcbiAgICAgICAgZmlsdGVyU3RvcmUsXG4gICAgICAgIGZpbHRlck1ldGhvZChtdGhkKSxcbiAgICAgICAgZmlsdGVyKGFjdGlvbiA9PiBhY3Rpb24uZW50aXR5SWQgPT09IGlkKSxcbiAgICAgICAgbWFwKGFjdGlvbiA9PiBhY3Rpb24ubG9hZGluZylcbiAgICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0JDogYWN0aW9uQmFzZWQoSHR0cE1ldGhvZC5HRVQpLFxuICAgICAgYWRkJDogYWN0aW9uQmFzZWQoSHR0cE1ldGhvZC5QT1NUKSxcbiAgICAgIHVwZGF0ZSQ6IGFjdGlvbkJhc2VkKG1ldGhvZCA9PiBtZXRob2QgPT09IEh0dHBNZXRob2QuUFVUIHx8IG1ldGhvZCA9PT0gSHR0cE1ldGhvZC5QQVRDSCksXG4gICAgICBkZWxldGUkOiBhY3Rpb25CYXNlZChIdHRwTWV0aG9kLkRFTEVURSksXG4gICAgICBnZXRFbnRpdHk6IChpZDogYW55KSA9PiBpZEJhc2VkKGlkLCBIdHRwTWV0aG9kLkdFVCksXG4gICAgICB1cGRhdGVFbnRpdHk6IChpZDogYW55KSA9PiBpZEJhc2VkKGlkLCBtZXRob2QgPT4gbWV0aG9kID09PSBIdHRwTWV0aG9kLlBVVCB8fCBtZXRob2QgPT09IEh0dHBNZXRob2QuUEFUQ0gpLFxuICAgICAgZGVsZXRlRW50aXR5OiAoaWQ6IGFueSkgPT4gaWRCYXNlZChpZCwgSHR0cE1ldGhvZC5ERUxFVEUpXG4gICAgfTtcbiAgfVxufVxuIl19