@datorama/akita
Version:
State Management Tailored-Made for JS Applications
136 lines • 9.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";
var NgEntityServiceLoader = /** @class */ (function () {
function NgEntityServiceLoader() {
this.dispatcher = new Subject();
this.loading$ = this.dispatcher.asObservable();
}
/**
* @param {?} event
* @return {?}
*/
NgEntityServiceLoader.prototype.dispatch = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.dispatcher.next(event);
};
/**
* @param {?=} name
* @return {?}
*/
NgEntityServiceLoader.prototype.loadersFor = /**
* @param {?=} name
* @return {?}
*/
function (name) {
var _this = this;
/** @type {?} */
var filterStore = filter((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var storeName = _a.storeName;
return (name ? storeName === name : true);
}));
/** @type {?} */
var filterMethod = (/**
* @param {?} mthd
* @return {?}
*/
function (mthd) {
return filter((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var method = _a.method;
return isFunction(mthd) ? mthd(method) : method === mthd;
}));
});
/** @type {?} */
var actionBased = (/**
* @param {?} current
* @return {?}
*/
function (current) {
return _this.loading$.pipe(filterStore, filterMethod(current), map((/**
* @param {?} action
* @return {?}
*/
function (action) { return action.loading; })));
});
/** @type {?} */
var idBased = (/**
* @param {?} id
* @param {?} mthd
* @return {?}
*/
function (id, mthd) {
return _this.loading$.pipe(filterStore, filterMethod(mthd), filter((/**
* @param {?} action
* @return {?}
*/
function (action) { return action.entityId === id; })), map((/**
* @param {?} action
* @return {?}
*/
function (action) { return action.loading; })));
});
return {
get$: actionBased(HttpMethod.GET),
add$: actionBased(HttpMethod.POST),
update$: actionBased((/**
* @param {?} method
* @return {?}
*/
function (method) { return method === HttpMethod.PUT || method === HttpMethod.PATCH; })),
delete$: actionBased(HttpMethod.DELETE),
getEntity: (/**
* @param {?} id
* @return {?}
*/
function (id) { return idBased(id, HttpMethod.GET); }),
updateEntity: (/**
* @param {?} id
* @return {?}
*/
function (id) { return idBased(id, (/**
* @param {?} method
* @return {?}
*/
function (method) { return method === HttpMethod.PUT || method === HttpMethod.PATCH; })); }),
deleteEntity: (/**
* @param {?} id
* @return {?}
*/
function (id) { return 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" });
return NgEntityServiceLoader;
}());
export { NgEntityServiceLoader };
if (false) {
/**
* @type {?}
* @private
*/
NgEntityServiceLoader.prototype.dispatcher;
/** @type {?} */
NgEntityServiceLoader.prototype.loading$;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZW50aXR5LXNlcnZpY2UubG9hZGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2FraXRhL2FuZ3VsYXIvcGxheWdyb3VuZC9wcm9qZWN0cy9uZy1lbnRpdHktc2VydmljZS8iLCJzb3VyY2VzIjpbImxpYi9uZy1lbnRpdHktc2VydmljZS5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBSTFEO0lBQUE7UUFFVSxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVMsQ0FBQztRQUMxQyxhQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQXNDM0M7Ozs7O0lBcENDLHdDQUFROzs7O0lBQVIsVUFBUyxLQUFZO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7Ozs7O0lBRUQsMENBQVU7Ozs7SUFBVixVQUFXLElBQWE7UUFBeEIsaUJBK0JDOztZQTlCTyxXQUFXLEdBQUcsTUFBTTs7OztRQUFDLFVBQUMsRUFBb0I7Z0JBQWxCLHdCQUFTO1lBQWMsT0FBQSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQWxDLENBQWtDLEVBQUM7O1lBQ2xGLFlBQVk7Ozs7UUFBRyxVQUFBLElBQUk7WUFDdkIsT0FBQSxNQUFNOzs7O1lBQUMsVUFBQyxFQUFpQjtvQkFBZixrQkFBTTtnQkFDZCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDO1lBQzNELENBQUMsRUFBQztRQUZGLENBRUUsQ0FBQTs7WUFFRSxXQUFXOzs7O1FBQUcsVUFBQyxPQUEyQztZQUM5RCxPQUFBLEtBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixXQUFXLEVBQ1gsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUNyQixHQUFHOzs7O1lBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxNQUFNLENBQUMsT0FBTyxFQUFkLENBQWMsRUFBQyxDQUM5QjtRQUpELENBSUMsQ0FBQTs7WUFFRyxPQUFPOzs7OztRQUFHLFVBQUMsRUFBTyxFQUFFLElBQXdDO1lBQ2hFLE9BQUEsS0FBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLFdBQVcsRUFDWCxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQ2xCLE1BQU07Ozs7WUFBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLE1BQU0sQ0FBQyxRQUFRLEtBQUssRUFBRSxFQUF0QixDQUFzQixFQUFDLEVBQ3hDLEdBQUc7Ozs7WUFBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLE1BQU0sQ0FBQyxPQUFPLEVBQWQsQ0FBYyxFQUFDLENBQzlCO1FBTEQsQ0FLQyxDQUFBO1FBRUgsT0FBTztZQUNMLElBQUksRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUNqQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDbEMsT0FBTyxFQUFFLFdBQVc7Ozs7WUFBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLE1BQU0sS0FBSyxVQUFVLENBQUMsR0FBRyxJQUFJLE1BQU0sS0FBSyxVQUFVLENBQUMsS0FBSyxFQUF4RCxDQUF3RCxFQUFDO1lBQ3hGLE9BQU8sRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUN2QyxTQUFTOzs7O1lBQUUsVUFBQyxFQUFPLElBQUssT0FBQSxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBM0IsQ0FBMkIsQ0FBQTtZQUNuRCxZQUFZOzs7O1lBQUUsVUFBQyxFQUFPLElBQUssT0FBQSxPQUFPLENBQUMsRUFBRTs7OztZQUFFLFVBQUEsTUFBTSxJQUFJLE9BQUEsTUFBTSxLQUFLLFVBQVUsQ0FBQyxHQUFHLElBQUksTUFBTSxLQUFLLFVBQVUsQ0FBQyxLQUFLLEVBQXhELENBQXdELEVBQUMsRUFBL0UsQ0FBK0UsQ0FBQTtZQUMxRyxZQUFZOzs7O1lBQUUsVUFBQyxFQUFPLElBQUssT0FBQSxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBOUIsQ0FBOEIsQ0FBQTtTQUMxRCxDQUFDO0lBQ0osQ0FBQzs7Z0JBeENGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OztnQ0FSbEM7Q0FpREMsQUF6Q0QsSUF5Q0M7U0F4Q1kscUJBQXFCOzs7Ozs7SUFDaEMsMkNBQTBDOztJQUMxQyx5Q0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICdAZGF0b3JhbWEvYWtpdGEnO1xuaW1wb3J0IHsgSHR0cE1ldGhvZCB9IGZyb20gJy4vbmctZW50aXR5LXNlcnZpY2Utbm90aWZpZXInO1xuXG50eXBlIEV2ZW50ID0geyBtZXRob2Q6IEh0dHBNZXRob2Q7IGxvYWRpbmc6IGJvb2xlYW47IHN0b3JlTmFtZTogc3RyaW5nOyBlbnRpdHlJZD86IGFueSB9O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5nRW50aXR5U2VydmljZUxvYWRlciB7XG4gIHByaXZhdGUgZGlzcGF0Y2hlciA9IG5ldyBTdWJqZWN0PEV2ZW50PigpO1xuICBsb2FkaW5nJCA9IHRoaXMuZGlzcGF0Y2hlci5hc09ic2VydmFibGUoKTtcblxuICBkaXNwYXRjaChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmRpc3BhdGNoZXIubmV4dChldmVudCk7XG4gIH1cblxuICBsb2FkZXJzRm9yKG5hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWx0ZXJTdG9yZSA9IGZpbHRlcigoeyBzdG9yZU5hbWUgfTogRXZlbnQpID0+IChuYW1lID8gc3RvcmVOYW1lID09PSBuYW1lIDogdHJ1ZSkpO1xuICAgIGNvbnN0IGZpbHRlck1ldGhvZCA9IG10aGQgPT5cbiAgICAgIGZpbHRlcigoeyBtZXRob2QgfTogRXZlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24obXRoZCkgPyBtdGhkKG1ldGhvZCkgOiBtZXRob2QgPT09IG10aGQ7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IGFjdGlvbkJhc2VkID0gKGN1cnJlbnQ6ICgobWV0aG9kKSA9PiBib29sZWFuKSB8IEh0dHBNZXRob2QpID0+XG4gICAgICB0aGlzLmxvYWRpbmckLnBpcGUoXG4gICAgICAgIGZpbHRlclN0b3JlLFxuICAgICAgICBmaWx0ZXJNZXRob2QoY3VycmVudCksXG4gICAgICAgIG1hcChhY3Rpb24gPT4gYWN0aW9uLmxvYWRpbmcpXG4gICAgICApO1xuXG4gICAgY29uc3QgaWRCYXNlZCA9IChpZDogYW55LCBtdGhkOiAoKG1ldGhvZCkgPT4gYm9vbGVhbikgfCBIdHRwTWV0aG9kKSA9PlxuICAgICAgdGhpcy5sb2FkaW5nJC5waXBlKFxuICAgICAgICBmaWx0ZXJTdG9yZSxcbiAgICAgICAgZmlsdGVyTWV0aG9kKG10aGQpLFxuICAgICAgICBmaWx0ZXIoYWN0aW9uID0+IGFjdGlvbi5lbnRpdHlJZCA9PT0gaWQpLFxuICAgICAgICBtYXAoYWN0aW9uID0+IGFjdGlvbi5sb2FkaW5nKVxuICAgICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBnZXQkOiBhY3Rpb25CYXNlZChIdHRwTWV0aG9kLkdFVCksXG4gICAgICBhZGQkOiBhY3Rpb25CYXNlZChIdHRwTWV0aG9kLlBPU1QpLFxuICAgICAgdXBkYXRlJDogYWN0aW9uQmFzZWQobWV0aG9kID0+IG1ldGhvZCA9PT0gSHR0cE1ldGhvZC5QVVQgfHwgbWV0aG9kID09PSBIdHRwTWV0aG9kLlBBVENIKSxcbiAgICAgIGRlbGV0ZSQ6IGFjdGlvbkJhc2VkKEh0dHBNZXRob2QuREVMRVRFKSxcbiAgICAgIGdldEVudGl0eTogKGlkOiBhbnkpID0+IGlkQmFzZWQoaWQsIEh0dHBNZXRob2QuR0VUKSxcbiAgICAgIHVwZGF0ZUVudGl0eTogKGlkOiBhbnkpID0+IGlkQmFzZWQoaWQsIG1ldGhvZCA9PiBtZXRob2QgPT09IEh0dHBNZXRob2QuUFVUIHx8IG1ldGhvZCA9PT0gSHR0cE1ldGhvZC5QQVRDSCksXG4gICAgICBkZWxldGVFbnRpdHk6IChpZDogYW55KSA9PiBpZEJhc2VkKGlkLCBIdHRwTWV0aG9kLkRFTEVURSlcbiAgICB9O1xuICB9XG59XG4iXX0=