ngx-crud
Version:
CRUD services in Angular with effortless aborting, caching and observing
1 lines • 56.9 kB
Source Map (JSON)
{"version":3,"file":"ngx-crud.mjs","sources":["../../src/cache/cache.service.ts","../../src/cache/cache.interceptor.ts","../../src/cache/cache.module.ts","../../src/observe/observe.token.ts","../../src/observe/observe.service.ts","../../src/observe/observe.interceptor.ts","../../src/observe/observe.module.ts","../../src/common/common.helper.ts","../../src/common/common.service.ts","../../src/common/common.decorator.ts","../../src/abort/abort.service.ts","../../src/abort/abort.interceptor.ts","../../src/abort/abort.module.ts","../../src/core/delete.service.ts","../../src/core/find.service.ts","../../src/core/read.service.ts","../../src/core/patch.service.ts","../../src/core/create.service.ts","../../src/core/update.service.ts","../../src/core/custom.service.ts","../../src/core/crud.module.ts","../../src/core/crud.service.ts","../../src/ngx-crud.ts"],"sourcesContent":["import { HttpContextToken, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subscription, filter, from, timer, mergeMap } from 'rxjs';\nimport { ReactiveMap } from 'rxjs-collection';\n\nimport { stripUrlParams } from '../common';\n\nimport { Context, Store } from './cache.interface';\n\n@Injectable()\nexport class CacheService\n{\n\tprotected defaultContext : Context =\n\t{\n\t\tmethod: null,\n\t\tlifetime: null\n\t};\n\n\tprotected token : HttpContextToken<Context> = new HttpContextToken<Context>(() => this.defaultContext);\n\tprotected store : ReactiveMap<string, Store> = new ReactiveMap<string, Store>();\n\n\tgetToken() : HttpContextToken<Context>\n\t{\n\t\treturn this.token;\n\t}\n\n\tget<T>(request : HttpRequest<T>) : Observable<HttpResponse<T>>\n\t{\n\t\tif (!this.has(request))\n\t\t{\n\t\t\treturn new Observable(observer => observer.error());\n\t\t}\n\t\treturn this.store.get(request.urlWithParams).response;\n\t}\n\n\tset<T>(request : HttpRequest<T>, response : Observable<HttpResponse<T>>) : this\n\t{\n\t\tconst context : Context = request.context.get(this.getToken());\n\n\t\tif (this.has(request))\n\t\t{\n\t\t\tthis.store.get(request.urlWithParams).timer.unsubscribe();\n\t\t}\n\t\tthis.store.set(request.urlWithParams,\n\t\t{\n\t\t\tresponse,\n\t\t\ttimer: context.lifetime > 0 ? timer(context.lifetime).subscribe(() => this.flush(request.urlWithParams)) : new Subscription()\n\t\t});\n\t\treturn this;\n\t}\n\n\thas<T>(request : HttpRequest<T>) : boolean\n\t{\n\t\treturn this.store.has(request.urlWithParams);\n\t}\n\n\tflush(urlWithParams : string) : this\n\t{\n\t\tif (this.store.has(urlWithParams))\n\t\t{\n\t\t\tthis.store.get(urlWithParams).timer.unsubscribe();\n\t\t\tthis.store.delete(urlWithParams);\n\t\t}\n\t\treturn this;\n\t}\n\n\tflushMany(url : string) : this\n\t{\n\t\tthis.store.forEach((store, urlWithParams) => stripUrlParams(urlWithParams) === url ? this.flush(urlWithParams) : null);\n\t\treturn this;\n\t}\n\n\tflushAll() : this\n\t{\n\t\tthis.store.forEach((store, urlWithParams) => this.flush(urlWithParams));\n\t\treturn this;\n\t}\n\n\tobserve(urlWithParams : string) : Observable<[string, Store]>\n\t{\n\t\treturn this.observeAll().pipe(filter(([ value ] : [ string, Store ]) => value === urlWithParams));\n\t}\n\n\tobserveMany(url : string) : Observable<[string, Store]>\n\t{\n\t\treturn this.observeAll().pipe(filter(([ value ] : [ string, Store ]) => stripUrlParams(value) === url));\n\t}\n\n\tobserveAll() : Observable<[string, Store]>\n\t{\n\t\treturn this.store.asObservable().pipe(mergeMap(value => from(value)));\n\t}\n}\n","import\n{\n\tHttpEvent,\n\tHttpHandler,\n\tHttpInterceptor,\n\tHttpRequest,\n\tHttpResponse\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject, of } from 'rxjs';\nimport { filter, share, tap } from 'rxjs/operators';\n\nimport { Context } from './cache.interface';\nimport { CacheService } from './cache.service';\n\n@Injectable()\nexport class CacheInterceptor implements HttpInterceptor\n{\n\tconstructor(protected cacheService : CacheService)\n\t{\n\t}\n\n\tintercept<T>(request : HttpRequest<T>, next : HttpHandler) : Observable<HttpEvent<T>>\n\t{\n\t\tconst context : Context = request.context.get(this.cacheService.getToken());\n\t\tconst enableCache : boolean = (context.method === 'ANY' || context.method === request.method) && context.lifetime > 0;\n\n\t\treturn enableCache ? this.handle(request, next) : next.handle(request);\n\t}\n\n\tprotected handle<T>(request : HttpRequest<T>, next : HttpHandler) : Observable<HttpEvent<T>>\n\t{\n\t\treturn this.cacheService.has(request) ? this.cacheService.get(request) : this.store(request, next);\n\t}\n\n\tprotected store<T>(request : HttpRequest<T>, next : HttpHandler) : Observable<HttpResponse<T>>\n\t{\n\t\tconst nextHandler : Observable<HttpResponse<T>> = next\n\t\t\t.handle(request)\n\t\t\t.pipe(\n\t\t\t\tfilter(event => event instanceof HttpResponse),\n\t\t\t\ttap((response : HttpResponse<T>) => this.cacheService.set(request, of(response))),\n\t\t\t\tshare(\n\t\t\t\t{\n\t\t\t\t\tconnector: () => new ReplaySubject()\n\t\t\t\t})\n\t\t\t);\n\n\t\tthis.cacheService.set(request, nextHandler);\n\t\treturn nextHandler;\n\t}\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\n\nimport { CacheInterceptor } from './cache.interceptor';\nimport { CacheService } from './cache.service';\n\n@NgModule(\n{\n\tproviders:\n\t[\n\t\tCacheService,\n\t\t{\n\t\t\tmulti: true,\n\t\t\tprovide: HTTP_INTERCEPTORS,\n\t\t\tuseClass: CacheInterceptor\n\t\t}\n\t]\n})\nexport class CacheModule\n{\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { ObserveAfterEffect, ObserveBeforeEffect } from './observe.interface';\n\nexport const OBSERVE_EFFECT : InjectionToken<ObserveBeforeEffect & ObserveAfterEffect> = new InjectionToken<ObserveBeforeEffect | ObserveAfterEffect>('NGX_CRUD__OBSERVE_EFFECT');\n","import { HttpContextToken, HttpErrorResponse, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Optional, Inject, Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject, Subscription, filter, from, timer, mergeMap } from 'rxjs';\nimport { ReactiveMap } from 'rxjs-collection';\n\nimport { stripUrlParams } from '../common';\n\nimport { ObserveAfterEffect, ObserveBeforeEffect, Context, Store } from './observe.interface';\nimport { OBSERVE_EFFECT } from './observe.token';\nimport { ObserveStatus } from './observe.type';\n\n@Injectable()\nexport class ObserveService\n{\n\tprotected defaultContext : Context =\n\t{\n\t\tmethod: null,\n\t\tlifetime: null\n\t};\n\n\tprotected token : HttpContextToken<Context> = new HttpContextToken<Context>(() => this.defaultContext);\n\tprotected store : ReactiveMap<string, Store> = new ReactiveMap<string, Store>();\n\n\tconstructor(@Optional() @Inject(OBSERVE_EFFECT) protected observeEffect : ObserveBeforeEffect | ObserveAfterEffect)\n\t{\n\t}\n\n\tgetToken() : HttpContextToken<Context>\n\t{\n\t\treturn this.token;\n\t}\n\n\tstart<T>(request : HttpRequest<T>) : this\n\t{\n\t\tconst context : Context = request.context.get(this.getToken());\n\n\t\tif (this.has(request))\n\t\t{\n\t\t\tthis.store.get(request.urlWithParams).timer.unsubscribe();\n\t\t}\n\t\tthis.store.set(request.urlWithParams,\n\t\t{\n\t\t\tstatus: new BehaviorSubject<ObserveStatus>('STARTED'),\n\t\t\ttimer: context.lifetime > 0 ? timer(context.lifetime).subscribe(() => this.complete(request.urlWithParams)) : new Subscription()\n\t\t});\n\t\treturn this;\n\t}\n\n\tbefore<T>(request : HttpRequest<T>) : HttpRequest<T>\n\t{\n\t\tif (this.observeEffect && 'before' in this.observeEffect)\n\t\t{\n\t\t\treturn this.observeEffect.before(request);\n\t\t}\n\t\treturn request;\n\t}\n\n\tafter<T>(request : HttpRequest<T>, response : HttpResponse<T> | HttpErrorResponse) : this\n\t{\n\t\tif (this.observeEffect && 'after' in this.observeEffect)\n\t\t{\n\t\t\tthis.observeEffect.after(request, response);\n\t\t}\n\t\treturn this;\n\t}\n\n\thas<T>(request : HttpRequest<T>) : boolean\n\t{\n\t\treturn this.store.has(request.urlWithParams);\n\t}\n\n\terror(urlWithParams : string) : this\n\t{\n\t\tif (this.store.has(urlWithParams))\n\t\t{\n\t\t\tthis.store.get(urlWithParams).status.next('ERRORED');\n\t\t\tthis.store.get(urlWithParams).timer.unsubscribe();\n\t\t}\n\t\treturn this;\n\t}\n\n\tcomplete(urlWithParams : string) : this\n\t{\n\t\tif (this.store.has(urlWithParams))\n\t\t{\n\t\t\tthis.store.get(urlWithParams).status.next('COMPLETED');\n\t\t\tthis.store.get(urlWithParams).timer.unsubscribe();\n\t\t}\n\t\treturn this;\n\t}\n\n\tcompleteMany(url : string) : this\n\t{\n\t\tthis.store.forEach((store, urlWithParams) => stripUrlParams(urlWithParams) === url ? this.complete(urlWithParams) : null);\n\t\treturn this;\n\t}\n\n\tcompleteAll() : this\n\t{\n\t\tthis.store.forEach((store, urlWithParams) => this.complete(urlWithParams));\n\t\treturn this;\n\t}\n\n\tobserve(urlWithParams : string) : Observable<[string, Store]>\n\t{\n\t\treturn this.observeAll().pipe(filter(([ value ] : [ string, Store ]) => value === urlWithParams));\n\t}\n\n\tobserveMany(url : string) : Observable<[string, Store]>\n\t{\n\t\treturn this.observeAll().pipe(filter(([ value ] : [ string, Store ]) => stripUrlParams(value) === url));\n\t}\n\n\tobserveAll() : Observable<[string, Store]>\n\t{\n\t\treturn this.store.asObservable().pipe(mergeMap(value => from(value)));\n\t}\n}\n","import\n{\n\tHttpErrorResponse,\n\tHttpEvent,\n\tHttpHandler,\n\tHttpInterceptor,\n\tHttpRequest,\n\tHttpResponse\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, filter, tap } from 'rxjs/operators';\n\nimport { Context } from './observe.interface';\nimport { ObserveService } from './observe.service';\n\n@Injectable()\nexport class ObserveInterceptor implements HttpInterceptor\n{\n\tconstructor(protected observeService : ObserveService)\n\t{\n\t}\n\n\tintercept<T>(request : HttpRequest<T>, next : HttpHandler) : Observable<HttpEvent<T>>\n\t{\n\t\tconst context : Context = request.context.get(this.observeService.getToken());\n\t\tconst enableObserve : boolean = (context.method === 'ANY' || context.method === request.method) && context.lifetime > 0;\n\n\t\treturn enableObserve ? this.handle(request, next) : next.handle(request);\n\t}\n\n\thandle<T>(request : HttpRequest<T>, next : HttpHandler) : Observable<HttpEvent<T>>\n\t{\n\t\tthis.observeService.start(request);\n\t\treturn next\n\t\t\t.handle(this.observeService.before(request))\n\t\t\t.pipe(\n\t\t\t\tfilter(event => event instanceof HttpResponse),\n\t\t\t\ttap((response : HttpResponse<T>) =>\n\t\t\t\t{\n\t\t\t\t\tthis.observeService.after(request, response);\n\t\t\t\t\tthis.observeService.complete(request.urlWithParams);\n\t\t\t\t}),\n\t\t\t\tcatchError((response : HttpErrorResponse) =>\n\t\t\t\t{\n\t\t\t\t\tthis.observeService.after(request, response);\n\t\t\t\t\tthis.observeService.error(request.urlWithParams);\n\t\t\t\t\treturn throwError(() => response);\n\t\t\t\t})\n\t\t\t);\n\t}\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\n\nimport { ObserveInterceptor } from './observe.interceptor';\nimport { ObserveService } from './observe.service';\n\n@NgModule(\n{\n\tproviders:\n\t[\n\t\tObserveService,\n\t\t{\n\t\t\tmulti: true,\n\t\t\tprovide: HTTP_INTERCEPTORS,\n\t\t\tuseClass: ObserveInterceptor\n\t\t}\n\t]\n})\nexport class ObserveModule\n{\n}\n","import { Id } from './common.type';\n\nexport function createUrl(apiUrl : string, apiRoute : string) : string\n{\n\tconst route : string =\n\t[\n\t\tapiRoute\n\t]\n\t.filter(value => value)\n\t.join('/');\n\n\treturn apiUrl + route;\n}\n\nexport function createUrlWithId(apiUrl : string, apiRoute : string, id : Id) : string\n{\n\tconst route : string =\n\t[\n\t\tapiRoute,\n\t\tid\n\t]\n\t.filter(value => value)\n\t.join('/');\n\n\treturn apiUrl + route;\n}\n\nexport function stripUrlParams(urlWithParams : string) : string\n{\n\treturn urlWithParams?.split('?').at(0);\n}\n","import { HttpClient, HttpContext, HttpContextToken, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\n\nimport { AbortService } from '../abort';\nimport { CacheService } from '../cache';\nimport { ObserveService } from '../observe';\n\nimport { Context, Options } from './common.interface';\nimport { UniversalMethod } from './common.type';\nimport { createUrl } from './common.helper';\n\n@Injectable()\nexport class CommonService\n{\n\tprotected httpClient : HttpClient = this.injector.get(HttpClient);\n\tprotected abortService : AbortService = this.injector.get(AbortService);\n\tprotected cacheService : CacheService = this.injector.get(CacheService);\n\tprotected observeService : ObserveService = this.injector.get(ObserveService);\n\tprotected apiUrl : string;\n\tprotected apiRoute : string;\n\tprotected options : Options;\n\n\tconstructor(protected injector : Injector)\n\t{\n\t\tthis.init();\n\t}\n\n\tbind(that : CommonService) : this\n\t{\n\t\treturn this\n\t\t\t.setApiUrl(that.getApiUrl())\n\t\t\t.setApiRoute(that.getApiRoute())\n\t\t\t.setOptions(that.getOptions());\n\t}\n\n\tclone() : this\n\t{\n\t\treturn new (this.constructor as new (injector) => this)(this.injector);\n\t}\n\n\tclear() : this\n\t{\n\t\treturn this\n\t\t\t.clearOptions()\n\t\t\t.clearContext()\n\t\t\t.clearHeaders()\n\t\t\t.clearParams();\n\t}\n\n\tdestroy() : this\n\t{\n\t\treturn this\n\t\t\t.abort()\n\t\t\t.flush()\n\t\t\t.clear();\n\t}\n\n\tgetApiUrl() : string\n\t{\n\t\treturn this.apiUrl;\n\t}\n\n\tsetApiUrl(apiUrl : string) : this\n\t{\n\t\tthis.apiUrl = apiUrl;\n\t\treturn this;\n\t}\n\n\tgetApiRoute() : string\n\t{\n\t\treturn this.apiRoute;\n\t}\n\n\tsetApiRoute(apiRoute : string) : this\n\t{\n\t\tthis.apiRoute = apiRoute;\n\t\treturn this;\n\t}\n\n\tgetOption(name : keyof Options) : Options[keyof Options]\n\t{\n\t\treturn this.options[name];\n\t}\n\n\tgetOptions() : Options\n\t{\n\t\treturn this.options;\n\t}\n\n\tsetOption(name : keyof Options, value : Options[keyof Options]) : this\n\t{\n\t\tthis.options[name] = value;\n\t\treturn this;\n\t}\n\n\tsetOptions(options : Options) : this\n\t{\n\t\tthis.options = options;\n\t\treturn this;\n\t}\n\n\tclearOption(name : keyof Options) : this\n\t{\n\t\treturn this.setOption(name, null);\n\t}\n\n\tclearOptions() : this\n\t{\n\t\treturn this.setOptions(\n\t\t{\n\t\t\treportProgress: true\n\t\t});\n\t}\n\n\tgetContextByToken(token : HttpContextToken<Context>) : HttpContext\n\t{\n\t\treturn this.getContext().get(token) as HttpContext;\n\t}\n\n\tgetContext() : HttpContext\n\t{\n\t\treturn this.getOption('context');\n\t}\n\n\tsetContextByToken(token : HttpContextToken<Context>, context : Context) : this\n\t{\n\t\treturn this.setContext(this.getContext().set(token, context));\n\t}\n\n\tsetContext(context : HttpContext) : this\n\t{\n\t\tthis.setOption('context', context);\n\t\treturn this;\n\t}\n\n\tclearContextByToken(token : HttpContextToken<Context>) : this\n\t{\n\t\treturn this.setContext(this.getContext().delete(token));\n\t}\n\n\tclearContext() : this\n\t{\n\t\treturn this.setContext(new HttpContext());\n\t}\n\n\tgetHeader(name : string) : string\n\t{\n\t\treturn this.getHeaders().get(name);\n\t}\n\n\tgetHeaders() : HttpHeaders\n\t{\n\t\treturn this.getOption('headers');\n\t}\n\n\tgetHeaderArray(name : string) : string[]\n\t{\n\t\treturn this.getHeaders().getAll(name);\n\t}\n\n\tsetHeader(name : string, value : string) : this\n\t{\n\t\treturn this.setHeaders(this.getHeaders().set(name, value));\n\t}\n\n\tsetHeaders(headers : HttpHeaders) : this\n\t{\n\t\treturn this.setOption('headers', headers);\n\t}\n\n\tsetHeaderArray(name : string, valueArray : string[]) : this\n\t{\n\t\treturn this.setHeaders(this.getHeaders().set(name, valueArray));\n\t}\n\n\tappendHeader(name : string, value : string) : this\n\t{\n\t\treturn this.setHeaders(this.getHeaders().append(name, value));\n\t}\n\n\tappendHeaderArray(name : string, valueArray : string[]) : this\n\t{\n\t\treturn this.setHeaders(this.getHeaders().append(name, valueArray));\n\t}\n\n\tclearHeader(name : string) : this\n\t{\n\t\treturn this.setHeaders(this.getHeaders().delete(name));\n\t}\n\n\tclearHeaders() : this\n\t{\n\t\treturn this.setHeaders(new HttpHeaders());\n\t}\n\n\tgetParam(name : string) : string\n\t{\n\t\treturn this.getParams().get(name);\n\t}\n\n\tgetParams() : HttpParams\n\t{\n\t\treturn this.getOption('params');\n\t}\n\n\tgetParamArray(name : string) : string[]\n\t{\n\t\treturn this.getParams().getAll(name);\n\t}\n\n\tsetParam(name : string, value : string) : this\n\t{\n\t\treturn this.setParams(this.getParams().set(name, value));\n\t}\n\n\tsetParams(params : HttpParams) : this\n\t{\n\t\treturn this.setOption('params', params);\n\t}\n\n\tsetParamArray(name : string, valueArray : string[]) : this\n\t{\n\t\tthis.clearParam(name);\n\t\tvalueArray.forEach(value => this.appendParam(name, value));\n\t\treturn this;\n\t}\n\n\tappendParam(name : string, value : string) : this\n\t{\n\t\treturn this.setParams(this.getParams().append(name, value));\n\t}\n\n\tappendParamArray(name : string, valueArray : string[]) : this\n\t{\n\t\tvalueArray.forEach(value => this.appendParam(name, value));\n\t\treturn this;\n\t}\n\n\tclearParam(name : string) : this\n\t{\n\t\treturn this.setParams(this.getParams().delete(name));\n\t}\n\n\tclearParams() : this\n\t{\n\t\treturn this.setParams(new HttpParams());\n\t}\n\n\tenableAbort(method : UniversalMethod = 'GET', lifetime : number = 2000) : this\n\t{\n\t\treturn this.setContextByToken(this.abortService.getToken(),\n\t\t{\n\t\t\tmethod,\n\t\t\tlifetime\n\t\t});\n\t}\n\n\tdisableAbort() : this\n\t{\n\t\treturn this.clearContextByToken(this.abortService.getToken());\n\t}\n\n\tabort() : this\n\t{\n\t\tconst url : string = createUrl(this.getApiUrl(), this.getApiRoute());\n\n\t\tthis.abortService.abortMany(url);\n\t\treturn this;\n\t}\n\n\tenableCache(method : UniversalMethod = 'GET', lifetime : number = 2000) : this\n\t{\n\t\treturn this.setContextByToken(this.cacheService.getToken(),\n\t\t{\n\t\t\tmethod,\n\t\t\tlifetime\n\t\t});\n\t}\n\n\tdisableCache() : this\n\t{\n\t\treturn this.clearContextByToken(this.cacheService.getToken());\n\t}\n\n\tflush() : this\n\t{\n\t\tconst url : string = createUrl(this.getApiUrl(), this.getApiRoute());\n\n\t\tthis.cacheService.flushMany(url);\n\t\treturn this;\n\t}\n\n\tenableObserve(method : UniversalMethod = 'ANY', lifetime : number = 1000) : this\n\t{\n\t\treturn this.setContextByToken(this.observeService.getToken(),\n\t\t{\n\t\t\tmethod,\n\t\t\tlifetime\n\t\t});\n\t}\n\n\tdisableObserve() : this\n\t{\n\t\treturn this.clearContextByToken(this.observeService.getToken());\n\t}\n\n\tgetHttpClient() : HttpClient\n\t{\n\t\treturn this.httpClient;\n\t}\n\n\tprotected init() : this\n\t{\n\t\treturn this.clear();\n\t}\n}\n","import { Constructor } from './common.interface';\n\nexport function ApiUrl(apiUrl : string) : Function\n{\n\treturn (constructor : Constructor) =>\n\t{\n\t\tconstructor.prototype.setApiUrl(apiUrl);\n\t};\n}\n\nexport function ApiRoute(apiRoute : string) : Function\n{\n\treturn (constructor : Constructor) =>\n\t{\n\t\tconstructor.prototype.setApiRoute(apiRoute);\n\t};\n}\n","import { HttpContextToken, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject, Subscription, filter, from, timer, mergeMap } from 'rxjs';\nimport { ReactiveMap } from 'rxjs-collection';\n\nimport { stripUrlParams } from '../common';\n\nimport { Context, Store } from './abort.interface';\nimport { AbortSignal } from './abort.type';\n\n@Injectable()\nexport class AbortService\n{\n\tprotected defaultContext : Context =\n\t{\n\t\tmethod: null,\n\t\tlifetime: null\n\t};\n\n\tprotected token : HttpContextToken<Context> = new HttpContextToken<Context>(() => this.defaultContext);\n\tprotected store : ReactiveMap<string, Store> = new ReactiveMap<string, Store>();\n\n\tgetToken() : HttpContextToken<Context>\n\t{\n\t\treturn this.token;\n\t}\n\n\tget<T>(request : HttpRequest<T>) : Observable<AbortSignal>\n\t{\n\t\tif (!this.has(request))\n\t\t{\n\t\t\tthis.set(request);\n\t\t}\n\t\treturn this.store.get(request.urlWithParams).signal;\n\t}\n\n\tset<T>(request : HttpRequest<T>) : this\n\t{\n\t\tconst context : Context = request.context.get(this.getToken());\n\n\t\tif (this.has(request))\n\t\t{\n\t\t\tthis.store.get(request.urlWithParams).timer.unsubscribe();\n\t\t}\n\t\tthis.store.set(request.urlWithParams,\n\t\t{\n\t\t\tsignal: new BehaviorSubject<AbortSignal>('STARTED'),\n\t\t\ttimer: context.lifetime > 0 ? timer(context.lifetime).subscribe(() => this.abort(request.urlWithParams)) : new Subscription()\n\t\t});\n\t\treturn this;\n\t}\n\n\thas<T>(request : HttpRequest<T>) : boolean\n\t{\n\t\treturn this.store.has(request.urlWithParams);\n\t}\n\n\tabort(urlWithParams : string) : this\n\t{\n\t\tif (this.store.has(urlWithParams))\n\t\t{\n\t\t\tthis.store.get(urlWithParams).signal.next('ABORTED');\n\t\t\tthis.store.get(urlWithParams).timer.unsubscribe();\n\t\t\tthis.store.delete(urlWithParams);\n\t\t}\n\t\treturn this;\n\t}\n\n\tabortMany(url : string) : this\n\t{\n\t\tthis.store.forEach((store, urlWithParams) => stripUrlParams(urlWithParams) === url ? this.abort(urlWithParams) : null);\n\t\treturn this;\n\t}\n\n\tabortAll() : this\n\t{\n\t\tthis.store.forEach((store, urlWithParams) => this.abort(urlWithParams));\n\t\treturn this;\n\t}\n\n\tobserve(urlWithParams : string) : Observable<[string, Store]>\n\t{\n\t\treturn this.observeAll().pipe(filter(([ value ] : [ string, Store ]) => value === urlWithParams));\n\t}\n\n\tobserveMany(url : string) : Observable<[string, Store]>\n\t{\n\t\treturn this.observeAll().pipe(filter(([ value ] : [ string, Store ]) => stripUrlParams(value) === url));\n\t}\n\n\tobserveAll() : Observable<[string, Store]>\n\t{\n\t\treturn this.store.asObservable().pipe(mergeMap(value => from(value)));\n\t}\n}\n","import\n{\n\tHttpEvent,\n\tHttpHandler,\n\tHttpInterceptor,\n\tHttpRequest\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { Context } from './abort.interface';\nimport { AbortService } from './abort.service';\n\n@Injectable()\nexport class AbortInterceptor implements HttpInterceptor\n{\n\tconstructor(protected abortService : AbortService)\n\t{\n\t}\n\n\tintercept<T>(request : HttpRequest<T>, next : HttpHandler) : Observable<HttpEvent<T>>\n\t{\n\t\tconst context : Context = request.context.get(this.abortService.getToken());\n\t\tconst enableAbort : boolean = (context.method === 'ANY' || context.method === request.method) && context.lifetime > 0;\n\n\t\treturn enableAbort ? this.handle(request, next) : next.handle(request);\n\t}\n\n\thandle<T>(request : HttpRequest<T>, next : HttpHandler) : Observable<HttpEvent<T>>\n\t{\n\t\treturn next\n\t\t\t.handle(request)\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.abortService.get(request).pipe(filter(signal => signal === 'ABORTED')))\n\t\t\t);\n\t}\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\n\nimport { AbortInterceptor } from './abort.interceptor';\nimport { AbortService } from './abort.service';\n\n@NgModule(\n{\n\tproviders:\n\t[\n\t\tAbortService,\n\t\t{\n\t\t\tmulti: true,\n\t\t\tprovide: HTTP_INTERCEPTORS,\n\t\t\tuseClass: AbortInterceptor\n\t\t}\n\t]\n})\nexport class AbortModule\n{\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { CommonService, Options, Id, createUrlWithId } from '../common';\n\n@Injectable()\nexport class DeleteService<DeleteResponseBody> extends CommonService\n{\n\tdelete<\n\t\tResponseBody = DeleteResponseBody\n\t>(id : Id, options ?: Options) : Observable<ResponseBody>\n\t{\n\t\treturn this.httpClient.delete<ResponseBody>(createUrlWithId(this.getApiUrl(), this.getApiRoute(), id),\n\t\t{\n\t\t\t...this.getOptions(),\n\t\t\t...options\n\t\t});\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { CommonService, Options, createUrl } from '../common';\n\n@Injectable()\nexport class FindService<FindResponseBody> extends CommonService\n{\n\tfind<\n\t\tResponseBody = FindResponseBody\n\t>(options ?: Options) : Observable<ResponseBody>\n\t{\n\t\treturn this.httpClient.get<ResponseBody>(createUrl(this.getApiUrl(), this.getApiRoute()),\n\t\t{\n\t\t\t...this.getOptions(),\n\t\t\t...options\n\t\t});\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { CommonService, Options, Id, createUrlWithId } from '../common';\n\n@Injectable()\nexport class ReadService<ReadResponseBody> extends CommonService\n{\n\tread<\n\t\tResponseBody = ReadResponseBody\n\t>(id : Id, options ?: Options) : Observable<ResponseBody>\n\t{\n\t\treturn this.httpClient.get<ResponseBody>(createUrlWithId(this.getApiUrl(), this.getApiRoute(), id),\n\t\t{\n\t\t\t...this.getOptions(),\n\t\t\t...options\n\t\t});\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { CommonService, Options, Id, createUrlWithId } from '../common';\n\nimport { NoInfer } from './crud.type';\n\n@Injectable()\nexport class PatchService<PatchRequestBody, PatchResponseBody> extends CommonService\n{\n\tpatch<\n\t\tRequestBody = PatchRequestBody,\n\t\tResponseBody = PatchResponseBody\n\t>(id : Id, body : NoInfer<RequestBody>, options ?: Options) : Observable<ResponseBody>\n\t{\n\t\treturn this.httpClient.patch<ResponseBody>(createUrlWithId(this.getApiUrl(), this.getApiRoute(), id), body,\n\t\t{\n\t\t\t...this.getOptions(),\n\t\t\t...options\n\t\t});\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { CommonService, Options, createUrl } from '../common';\n\nimport { NoInfer } from './crud.type';\n\n@Injectable()\nexport class CreateService<CreateRequestBody, CreateResponseBody> extends CommonService\n{\n\tcreate<\n\t\tRequestBody = CreateRequestBody,\n\t\tResponseBody = CreateResponseBody\n\t>(body : NoInfer<RequestBody>, options ?: Options) : Observable<ResponseBody>\n\t{\n\t\treturn this.httpClient.post<ResponseBody>(createUrl(this.getApiUrl(), this.getApiRoute()), body,\n\t\t{\n\t\t\t...this.getOptions(),\n\t\t\t...options\n\t\t});\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { CommonService, Options, Id, createUrlWithId } from '../common';\n\nimport { NoInfer } from './crud.type';\n\n@Injectable()\nexport class UpdateService<UpdateRequestBody, UpdateResponseBody> extends CommonService\n{\n\tupdate<\n\t\tRequestBody = UpdateRequestBody,\n\t\tResponseBody = UpdateResponseBody\n\t>(id : Id, body : NoInfer<RequestBody>, options ?: Options) : Observable<ResponseBody>\n\t{\n\t\treturn this.httpClient.put<ResponseBody>(createUrlWithId(this.getApiUrl(), this.getApiRoute(), id), body,\n\t\t{\n\t\t\t...this.getOptions(),\n\t\t\t...options\n\t\t});\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { CommonService, OptionsWithBody, Method, createUrl } from '../common';\n\nimport { NoInfer } from './crud.type';\n\n@Injectable()\nexport class CustomService<CustomRequestBody, CustomResponseBody> extends CommonService\n{\n\tcustom<\n\t\tRequestBody = CustomRequestBody,\n\t\tResponseBody = CustomResponseBody\n\t>(method : Method, options ?: OptionsWithBody<NoInfer<RequestBody>>) : Observable<ResponseBody>\n\t{\n\t\treturn this.httpClient.request<ResponseBody>(method, createUrl(this.getApiUrl(), this.getApiRoute()),\n\t\t{\n\t\t\t...this.getOptions(),\n\t\t\t...options\n\t\t});\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { AbortModule } from '../abort';\nimport { CacheModule } from '../cache';\nimport { ObserveModule } from '../observe';\n\nimport { DeleteService } from './delete.service';\nimport { FindService } from './find.service';\nimport { ReadService } from './read.service';\nimport { PatchService } from './patch.service';\nimport { CreateService } from './create.service';\nimport { UpdateService } from './update.service';\nimport { CustomService } from './custom.service';\n\n@NgModule(\n{\n\timports:\n\t[\n\t\tAbortModule,\n\t\tCacheModule,\n\t\tObserveModule\n\t],\n\tproviders:\n\t[\n\t\tCreateService,\n\t\tReadService,\n\t\tFindService,\n\t\tUpdateService,\n\t\tPatchService,\n\t\tDeleteService,\n\t\tCustomService\n\t]\n})\nexport class CrudModule\n{\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { CommonService, Options, OptionsWithBody, Id, Method } from '../common';\n\nimport { CreateService } from './create.service';\nimport { ReadService } from './read.service';\nimport { FindService } from './find.service';\nimport { UpdateService } from './update.service';\nimport { PatchService } from './patch.service';\nimport { DeleteService } from './delete.service';\nimport { CustomService } from './custom.service';\nimport { Crud } from './crud.interface';\nimport { NoInfer } from './crud.type';\n\n@Injectable()\nexport class CrudService<\n\tRequestBody,\n\tResponseBody,\n\tCreateRequestBody = RequestBody,\n\tCreateResponseBody = ResponseBody,\n\tReadResponseBody = ResponseBody,\n\tFindResponseBody = ResponseBody[],\n\tUpdateRequestBody = RequestBody,\n\tUpdateResponseBody = ResponseBody,\n\tPatchRequestBody = Partial<RequestBody>,\n\tPatchResponseBody = ResponseBody,\n\tDeleteResponseBody = ResponseBody,\n\tCustomRequestBody = RequestBody,\n\tCustomResponseBody = ResponseBody | ResponseBody[]\n> extends CommonService implements Crud<\n\tCreateRequestBody,\n\tCreateResponseBody,\n\tReadResponseBody,\n\tFindResponseBody,\n\tUpdateRequestBody,\n\tUpdateResponseBody,\n\tPatchRequestBody,\n\tPatchResponseBody,\n\tDeleteResponseBody,\n\tCustomRequestBody,\n\tCustomResponseBody\n>\n{\n\tprotected createService : CreateService<CreateRequestBody, CreateResponseBody> = this.injector.get(CreateService);\n\tprotected readService : ReadService<ReadResponseBody> = this.injector.get(ReadService);\n\tprotected findService : FindService<FindResponseBody> = this.injector.get(FindService);\n\tprotected updateService : UpdateService<UpdateRequestBody, UpdateResponseBody> = this.injector.get(UpdateService);\n\tprotected patchService : PatchService<PatchRequestBody, PatchResponseBody> = this.injector.get(PatchService);\n\tprotected deleteService : DeleteService<DeleteResponseBody> = this.injector.get(DeleteService);\n\tprotected customService : CustomService<CustomRequestBody, CustomResponseBody> = this.injector.get(CustomService);\n\n\tcreate<\n\t\tRequestBody = CreateRequestBody,\n\t\tResponseBody = CreateResponseBody\n\t>(body : NoInfer<RequestBody>, options ?: Options) : Observable<ResponseBody>\n\t{\n\t\treturn this.createService.bind(this).create(body, options);\n\t}\n\n\tread<\n\t\tResponseBody = ReadResponseBody\n\t>(id : Id, options ?: Options) : Observable<ResponseBody>\n\t{\n\t\treturn this.readService.bind(this).read(id, options);\n\t}\n\n\tfind<\n\t\tResponseBody = FindResponseBody\n\t>(options ?: Options) : Observable<ResponseBody>\n\t{\n\t\treturn this.findService.bind(this).find(options);\n\t}\n\n\tupdate<\n\t\tRequestBody = UpdateRequestBody,\n\t\tResponseBody = UpdateResponseBody\n\t>(id : Id, body : NoInfer<RequestBody>, options ?: Options) : Observable<ResponseBody>\n\t{\n\t\treturn this.updateService.bind(this).update(id, body, options);\n\t}\n\n\tpatch<\n\t\tRequestBody = PatchRequestBody,\n\t\tResponseBody = PatchResponseBody\n\t>(id : Id, body : NoInfer<RequestBody>, options ?: Options) : Observable<ResponseBody>\n\t{\n\t\treturn this.patchService.bind(this).patch(id, body, options);\n\t}\n\n\tdelete<\n\t\tResponseBody = DeleteResponseBody\n\t>(id : Id, options ?: Options) : Observable<ResponseBody>\n\t{\n\t\treturn this.deleteService.bind(this).delete(id, options);\n\t}\n\n\tcustom<\n\t\tRequestBody = CustomRequestBody,\n\t\tResponseBody = CustomResponseBody\n\t>(method : Method, options ?: OptionsWithBody<NoInfer<RequestBody>>) : Observable<ResponseBody>\n\t{\n\t\treturn this.customService.bind(this).custom(method, options);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["filter","i1.CacheService","i1.ObserveService","i1.AbortService"],"mappings":"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