@datorama/akita-ng-entity-service
Version:
Akita entity service
38 lines • 7.4 kB
JavaScript
import { Injectable } from '@angular/core';
import { isFunction } from '@datorama/akita';
import { filter, map, ReplaySubject } from 'rxjs';
import { HttpMethod } from './ng-entity-service-notifier';
import * as i0 from "@angular/core";
export class NgEntityServiceLoader {
constructor() {
this.dispatcher = new ReplaySubject(1);
this.loading$ = this.dispatcher.asObservable();
}
dispatch(event) {
this.dispatcher.next(event);
}
loadersFor(name) {
const filterStore = filter(({ storeName }) => (name ? storeName === name : true));
const filterMethod = (mthd) => filter(({ method }) => {
return isFunction(mthd) ? mthd(method) : method === mthd;
});
const actionBased = (current) => this.loading$.pipe(filterStore, filterMethod(current), map((action) => action.loading));
const idBased = (id, mthd) => this.loading$.pipe(filterStore, filterMethod(mthd), filter((action) => action.entityId === id), map((action) => action.loading));
return {
get$: actionBased(HttpMethod.GET),
add$: actionBased(HttpMethod.POST),
update$: actionBased((method) => method === HttpMethod.PUT || method === HttpMethod.PATCH),
delete$: actionBased(HttpMethod.DELETE),
getEntity: (id) => idBased(id, HttpMethod.GET),
updateEntity: (id) => idBased(id, (method) => method === HttpMethod.PUT || method === HttpMethod.PATCH),
deleteEntity: (id) => idBased(id, HttpMethod.DELETE),
};
}
}
NgEntityServiceLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgEntityServiceLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
NgEntityServiceLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgEntityServiceLoader, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgEntityServiceLoader, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZW50aXR5LXNlcnZpY2UubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctZW50aXR5LXNlcnZpY2Uvc3JjL2xpYi9uZy1lbnRpdHktc2VydmljZS5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFLMUQsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVVLGVBQVUsR0FBRyxJQUFJLGFBQWEsQ0FBUSxDQUFDLENBQUMsQ0FBQztRQUNqRCxhQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQXNDM0M7SUFwQ0MsUUFBUSxDQUFDLEtBQVk7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFhO1FBQ3RCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDNUIsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQVMsRUFBRSxFQUFFO1lBQzNCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7UUFFTCxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQTJDLEVBQUUsRUFBRSxDQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsV0FBVyxFQUNYLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFDckIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQ2hDLENBQUM7UUFFSixNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQU8sRUFBRSxJQUF3QyxFQUFFLEVBQUUsQ0FDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLFdBQVcsRUFDWCxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQ2xCLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsRUFDMUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQ2hDLENBQUM7UUFFSixPQUFPO1lBQ0wsSUFBSSxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQ2pDLElBQUksRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNsQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLEdBQUcsSUFBSSxNQUFNLEtBQUssVUFBVSxDQUFDLEtBQUssQ0FBQztZQUMxRixPQUFPLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDdkMsU0FBUyxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7WUFDbkQsWUFBWSxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLEdBQUcsSUFBSSxNQUFNLEtBQUssVUFBVSxDQUFDLEtBQUssQ0FBQztZQUM1RyxZQUFZLEVBQUUsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQztTQUMxRCxDQUFDO0lBQ0osQ0FBQzs7a0hBdkNVLHFCQUFxQjtzSEFBckIscUJBQXFCLGNBRFIsTUFBTTsyRkFDbkIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICdAZGF0b3JhbWEvYWtpdGEnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBNZXRob2QgfSBmcm9tICcuL25nLWVudGl0eS1zZXJ2aWNlLW5vdGlmaWVyJztcblxuZXhwb3J0IHR5cGUgRXZlbnQgPSB7IG1ldGhvZDogSHR0cE1ldGhvZDsgbG9hZGluZzogYm9vbGVhbjsgc3RvcmVOYW1lOiBzdHJpbmc7IGVudGl0eUlkPzogYW55IH07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTmdFbnRpdHlTZXJ2aWNlTG9hZGVyIHtcbiAgcHJpdmF0ZSBkaXNwYXRjaGVyID0gbmV3IFJlcGxheVN1YmplY3Q8RXZlbnQ+KDEpO1xuICBsb2FkaW5nJCA9IHRoaXMuZGlzcGF0Y2hlci5hc09ic2VydmFibGUoKTtcblxuICBkaXNwYXRjaChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmRpc3BhdGNoZXIubmV4dChldmVudCk7XG4gIH1cblxuICBsb2FkZXJzRm9yKG5hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWx0ZXJTdG9yZSA9IGZpbHRlcigoeyBzdG9yZU5hbWUgfTogRXZlbnQpID0+IChuYW1lID8gc3RvcmVOYW1lID09PSBuYW1lIDogdHJ1ZSkpO1xuICAgIGNvbnN0IGZpbHRlck1ldGhvZCA9IChtdGhkKSA9PlxuICAgICAgZmlsdGVyKCh7IG1ldGhvZCB9OiBFdmVudCkgPT4ge1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihtdGhkKSA/IG10aGQobWV0aG9kKSA6IG1ldGhvZCA9PT0gbXRoZDtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgYWN0aW9uQmFzZWQgPSAoY3VycmVudDogKChtZXRob2QpID0+IGJvb2xlYW4pIHwgSHR0cE1ldGhvZCkgPT5cbiAgICAgIHRoaXMubG9hZGluZyQucGlwZShcbiAgICAgICAgZmlsdGVyU3RvcmUsXG4gICAgICAgIGZpbHRlck1ldGhvZChjdXJyZW50KSxcbiAgICAgICAgbWFwKChhY3Rpb24pID0+IGFjdGlvbi5sb2FkaW5nKVxuICAgICAgKTtcblxuICAgIGNvbnN0IGlkQmFzZWQgPSAoaWQ6IGFueSwgbXRoZDogKChtZXRob2QpID0+IGJvb2xlYW4pIHwgSHR0cE1ldGhvZCkgPT5cbiAgICAgIHRoaXMubG9hZGluZyQucGlwZShcbiAgICAgICAgZmlsdGVyU3RvcmUsXG4gICAgICAgIGZpbHRlck1ldGhvZChtdGhkKSxcbiAgICAgICAgZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5lbnRpdHlJZCA9PT0gaWQpLFxuICAgICAgICBtYXAoKGFjdGlvbikgPT4gYWN0aW9uLmxvYWRpbmcpXG4gICAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCQ6IGFjdGlvbkJhc2VkKEh0dHBNZXRob2QuR0VUKSxcbiAgICAgIGFkZCQ6IGFjdGlvbkJhc2VkKEh0dHBNZXRob2QuUE9TVCksXG4gICAgICB1cGRhdGUkOiBhY3Rpb25CYXNlZCgobWV0aG9kKSA9PiBtZXRob2QgPT09IEh0dHBNZXRob2QuUFVUIHx8IG1ldGhvZCA9PT0gSHR0cE1ldGhvZC5QQVRDSCksXG4gICAgICBkZWxldGUkOiBhY3Rpb25CYXNlZChIdHRwTWV0aG9kLkRFTEVURSksXG4gICAgICBnZXRFbnRpdHk6IChpZDogYW55KSA9PiBpZEJhc2VkKGlkLCBIdHRwTWV0aG9kLkdFVCksXG4gICAgICB1cGRhdGVFbnRpdHk6IChpZDogYW55KSA9PiBpZEJhc2VkKGlkLCAobWV0aG9kKSA9PiBtZXRob2QgPT09IEh0dHBNZXRob2QuUFVUIHx8IG1ldGhvZCA9PT0gSHR0cE1ldGhvZC5QQVRDSCksXG4gICAgICBkZWxldGVFbnRpdHk6IChpZDogYW55KSA9PiBpZEJhc2VkKGlkLCBIdHRwTWV0aG9kLkRFTEVURSksXG4gICAgfTtcbiAgfVxufVxuIl19