@datorama/akita
Version:
State Management Tailored-Made for JS Applications
115 lines • 8.86 kB
JavaScript
/**
* @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