@von-development-studio/angular-rest-service 18.2.0 → 19.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,9 +7,6 @@ class VonRestInterceptorService {
7
7
  consoleDebug = false;
8
8
  errorResponseUnknown = 'Unknown Error';
9
9
  errorResponseForbidden = 'Forbidden Error';
10
- urlWhoAmI = 'api/who-am-i';
11
- redirectOn403 = true;
12
- redirect403Url = ['403'];
13
10
  constructor(router) {
14
11
  this.router = router;
15
12
  }
@@ -18,10 +15,11 @@ class VonRestInterceptorService {
18
15
  .handle(request)
19
16
  .pipe(map(this.mapEvent), catchError(this.catchError));
20
17
  }
21
- postHttpRequest = () => { };
22
18
  mapEvent = (event) => {
23
19
  if (event instanceof HttpResponse) {
24
20
  if (event.status === 200 || event.status === 204) {
21
+ this.executeBeforePipesOnSuccess();
22
+ // TODO: Remove this call
25
23
  this.postHttpRequest();
26
24
  return event;
27
25
  }
@@ -56,15 +54,56 @@ class VonRestInterceptorService {
56
54
  ? errorResponse.error
57
55
  : this.errorResponseForbidden;
58
56
  }
57
+ this.execute403Redirect();
58
+ // TODO: Remove all this section.
59
59
  if (this.redirectOn403) {
60
60
  if (errorResponse.status === 403 ||
61
61
  (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)) {
62
62
  this.router.navigate(this.redirect403Url);
63
63
  }
64
64
  }
65
+ this.execute403Redirect();
66
+ this.executeBeforePipesOnError();
67
+ // TODO: Remove this call
65
68
  this.postHttpRequest();
66
69
  return throwError(error);
67
70
  };
71
+ /**
72
+ * Execute custom implementation before any other pipe from the subscription.
73
+ */
74
+ executeBeforePipesOnSuccess = () => { };
75
+ /**
76
+ * Execute custom implementation before any other pipe from the subscription.
77
+ */
78
+ executeBeforePipesOnError = () => { };
79
+ /**
80
+ * Execute custom implementation to redirect to 403 page based on a specific condition.
81
+ */
82
+ execute403Redirect = () => { };
83
+ // ****
84
+ // ****
85
+ // ****
86
+ // TODO: Remove all below this line
87
+ // ****
88
+ /**
89
+ * @deprecated Use the new custom method execute403Redirect() to trigger redirect to 403. This property is marked to be removed.
90
+ * TODO: Remove this property
91
+ */
92
+ urlWhoAmI = 'api/who-am-i';
93
+ /**
94
+ * @deprecated Use the new custom method execute403Redirect() to trigger redirect to 403. This property is marked to be removed.
95
+ * TODO: Remove this property
96
+ */
97
+ redirectOn403 = true;
98
+ /**
99
+ * @deprecated Use the new custom method execute403Redirect() to trigger redirect to 403. This property is marked to be removed.
100
+ * TODO: Remove this property
101
+ */
102
+ redirect403Url = ['403'];
103
+ /**
104
+ * @deprecated Use either executeBeforePipesOnSuccess() or executeBeforePipesOnError() base on your case. This method is marked to be removed.
105
+ */
106
+ postHttpRequest = () => { };
68
107
  }
69
108
 
70
109
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"von-development-studio-angular-rest-service.mjs","sources":["../../../projects/ng-rest-service/src/lib/von-rest-interceptor.service.ts","../../../projects/ng-rest-service/src/lib/von-rest.service.ts","../../../projects/ng-rest-service/src/von-development-studio-angular-rest-service.ts"],"sourcesContent":["import {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n HttpResponse,\n} from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { VonErrorRestInterceptorModel } from './models/von-error-rest-interceptor.model';\n\nexport abstract class VonRestInterceptorService implements HttpInterceptor {\n protected consoleDebug = false;\n protected errorResponseUnknown = 'Unknown Error';\n protected errorResponseForbidden = 'Forbidden Error';\n protected urlWhoAmI = 'api/who-am-i';\n protected redirectOn403 = true;\n protected redirect403Url = ['403'];\n\n constructor(protected router: Router) {}\n\n intercept(\n request: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n return next\n .handle(request)\n .pipe(map(this.mapEvent), catchError(this.catchError));\n }\n\n protected postHttpRequest = () => {};\n\n protected mapEvent = (event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n if (event.status === 200 || event.status === 204) {\n this.postHttpRequest();\n return event;\n }\n if (event.status !== 200) {\n const error: VonErrorRestInterceptorModel = {\n status: event.status,\n message: event.statusText,\n body: event.body,\n };\n if (this.consoleDebug) {\n console.error('[ErrorWS]: ', error);\n }\n throw error;\n }\n }\n return event;\n };\n\n protected catchError = (errorResponse: HttpErrorResponse) => {\n if (this.consoleDebug) {\n console.error('[Fatal]: ', errorResponse);\n }\n const error: VonErrorRestInterceptorModel = {\n status: errorResponse.status,\n message: '',\n body: errorResponse.error || {},\n };\n if (errorResponse.status === 0) {\n error.message = this.errorResponseUnknown;\n }\n if (errorResponse.status === 401) {\n error.message = errorResponse.error\n ? errorResponse.error\n : this.errorResponseForbidden;\n }\n if (this.redirectOn403) {\n if (\n errorResponse.status === 403 ||\n (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)\n ) {\n this.router.navigate(this.redirect403Url);\n }\n }\n this.postHttpRequest();\n return throwError(error);\n };\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable } from 'rxjs';\nimport { map, share, take } from 'rxjs/operators';\nimport { HeaderParams } from './models/von-header-params.model';\nimport { VonHttpOptionsModel } from './models/von-http-options.model';\nimport {\n BaseParams,\n BodyParams,\n GenericParams,\n} from './models/von-rest-definition.model';\n\n/**\n * Rest service wrapper for API calls. This class needs to be extended in a `@Injectable({ providedIn: 'root' })` service.\n * Parameters needed:\n * @HttpClient\n * @DomSanitizer\n */\nexport abstract class VonRestService {\n constructor(protected http: HttpClient, protected sanitizer: DomSanitizer) {}\n\n /**\n * Allows to set the default headers\n * @param headerParams Check HeaderParams interface to verify allowed overrides\n * @returns\n * ```json\n * {\n * \"Content-Type\": \"application/json\",\n * \"Accept\": \"application/json\",\n * \"Access-Control-Allow-Origin\": \"*\"\n * }\n * ```\n */\n protected setHeaders = (headerParams?: HeaderParams): HttpHeaders => {\n return new HttpHeaders({\n 'Content-Type': headerParams?.contentType ?? 'application/json',\n Accept: headerParams?.accept ?? 'application/json',\n 'Access-Control-Allow-Origin': '*',\n });\n };\n\n protected setOptions = ({\n headerParams,\n queryParams: params,\n }: {\n headerParams?: HeaderParams;\n queryParams?: GenericParams;\n } = {}): VonHttpOptionsModel => {\n const options: VonHttpOptionsModel = {\n headers: this.setHeaders(headerParams),\n params,\n withCredentials: true,\n };\n if (headerParams?.responseType) {\n options.responseType = headerParams.responseType;\n }\n return options;\n };\n\n protected setOptionsForFile = ({\n headerParams,\n queryParams,\n }: {\n headerParams?: HeaderParams;\n queryParams?: GenericParams;\n } = {}): VonHttpOptionsModel => {\n const options: VonHttpOptionsModel = {\n ...this.setOptions({\n headerParams,\n queryParams,\n }),\n headers: new HttpHeaders({\n Accept: headerParams?.accept ?? 'application/json',\n 'Access-Control-Allow-Origin': '*',\n }),\n };\n if (headerParams?.responseType) {\n options.responseType = headerParams.responseType;\n }\n return options;\n };\n\n protected setUrlParams = (url: string, params?: GenericParams) => {\n if (params != null) {\n for (const p in params) {\n if (p != null) {\n url = url.replace(`{${p}}`, params[p]);\n }\n }\n }\n return url;\n };\n\n authenticate = (\n url: string,\n username: string,\n password: string\n ): Observable<any> => {\n const authorization = btoa(`${username}:${password}`);\n const headers = new HttpHeaders({\n authorization: `Basic ${authorization}`,\n });\n return this.http\n .get(url, {\n headers,\n withCredentials: true,\n })\n .pipe(take(1), share());\n };\n\n get = <R = any>({\n url,\n urlParams,\n queryParams: params,\n headerParams,\n header: oldHeaderParams,\n params: oldParams,\n }: BaseParams): Observable<R> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get<R>(\n url,\n this.setOptions({\n headerParams: {\n ...headerParams,\n ...oldHeaderParams,\n },\n queryParams: {\n ...params,\n ...oldParams,\n },\n })\n );\n };\n\n delete = <R = any>({\n url,\n urlParams,\n queryParams: params,\n headerParams,\n header: oldHeaderParams,\n params: oldParams,\n }: BaseParams): Observable<R> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.delete<R>(\n url,\n this.setOptions({\n headerParams: {\n ...headerParams,\n ...oldHeaderParams,\n },\n queryParams: {\n ...params,\n ...oldParams,\n },\n })\n );\n };\n\n post = <R = any, B = GenericParams | FormData>({\n url,\n body,\n urlParams,\n queryParams: params,\n headerParams,\n header: oldHeaderParams,\n params: oldParams,\n }: BodyParams<B>): Observable<R> => {\n url = this.setUrlParams(url, urlParams);\n const optionsParams = {\n headerParams: {\n ...headerParams,\n ...oldHeaderParams,\n },\n queryParams: {\n ...params,\n ...oldParams,\n },\n };\n let options =\n body && body instanceof FormData\n ? this.setOptionsForFile(optionsParams)\n : this.setOptions(optionsParams);\n return this.http.post<R>(url, body, options);\n };\n\n put = <R = any, B = GenericParams | FormData>({\n url,\n body,\n urlParams,\n queryParams: params,\n headerParams,\n header: oldHeaderParams,\n params: oldParams,\n }: BodyParams<B>): Observable<R> => {\n url = this.setUrlParams(url, urlParams);\n const optionsParams = {\n headerParams: {\n ...headerParams,\n ...oldHeaderParams,\n },\n queryParams: {\n ...params,\n ...oldParams,\n },\n };\n let options =\n body && body instanceof FormData\n ? this.setOptionsForFile(optionsParams)\n : this.setOptions(optionsParams);\n return this.http.put<R>(url, body, options);\n };\n\n patch = <R = any, B = GenericParams | FormData>({\n url,\n body,\n urlParams,\n queryParams: params,\n headerParams,\n header: oldHeaderParams,\n params: oldParams,\n }: BodyParams<B>): Observable<R> => {\n url = this.setUrlParams(url, urlParams);\n const optionsParams = {\n headerParams: {\n ...headerParams,\n ...oldHeaderParams,\n },\n queryParams: {\n ...params,\n ...oldParams,\n },\n };\n let options =\n body && body instanceof FormData\n ? this.setOptionsForFile(optionsParams)\n : this.setOptions(optionsParams);\n return this.http.patch<R>(url, body, options);\n };\n\n file = ({\n url,\n urlParams,\n queryParams: params,\n headerParams,\n header: oldHeaderParams,\n params: oldParams,\n }: BaseParams): Observable<SafeResourceUrl> => {\n url = this.setUrlParams(url, urlParams);\n return this.http\n .get(url, {\n ...this.setOptionsForFile({\n headerParams: {\n ...headerParams,\n ...oldHeaderParams,\n },\n queryParams: {\n ...params,\n ...oldParams,\n },\n }),\n responseType: 'blob' as 'json',\n })\n .pipe(\n map((res: any) => {\n const fileBlob = new Blob([res], { type: params?.['contentType'] });\n const objUrl = URL.createObjectURL(fileBlob);\n const sanitized =\n this.sanitizer.bypassSecurityTrustResourceUrl(objUrl);\n return sanitized;\n })\n );\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"von-development-studio-angular-rest-service.mjs","sources":["../../../projects/ng-rest-service/src/lib/von-rest-interceptor.service.ts","../../../projects/ng-rest-service/src/lib/von-rest.service.ts","../../../projects/ng-rest-service/src/von-development-studio-angular-rest-service.ts"],"sourcesContent":["import {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n HttpResponse,\n} from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { VonErrorRestInterceptorModel } from './models/von-error-rest-interceptor.model';\n\nexport abstract class VonRestInterceptorService implements HttpInterceptor {\n protected consoleDebug = false;\n protected errorResponseUnknown = 'Unknown Error';\n protected errorResponseForbidden = 'Forbidden Error';\n\n constructor(protected router: Router) {}\n\n intercept(\n request: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n return next\n .handle(request)\n .pipe(map(this.mapEvent), catchError(this.catchError));\n }\n\n protected mapEvent = (event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n if (event.status === 200 || event.status === 204) {\n this.executeBeforePipesOnSuccess();\n // TODO: Remove this call\n this.postHttpRequest();\n return event;\n }\n if (event.status !== 200) {\n const error: VonErrorRestInterceptorModel = {\n status: event.status,\n message: event.statusText,\n body: event.body,\n };\n if (this.consoleDebug) {\n console.error('[ErrorWS]: ', error);\n }\n throw error;\n }\n }\n return event;\n };\n\n protected catchError = (errorResponse: HttpErrorResponse) => {\n if (this.consoleDebug) {\n console.error('[Fatal]: ', errorResponse);\n }\n const error: VonErrorRestInterceptorModel = {\n status: errorResponse.status,\n message: '',\n body: errorResponse.error || {},\n };\n if (errorResponse.status === 0) {\n error.message = this.errorResponseUnknown;\n }\n if (errorResponse.status === 401) {\n error.message = errorResponse.error\n ? errorResponse.error\n : this.errorResponseForbidden;\n }\n\n this.execute403Redirect();\n // TODO: Remove all this section.\n if (this.redirectOn403) {\n if (\n errorResponse.status === 403 ||\n (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)\n ) {\n this.router.navigate(this.redirect403Url);\n }\n }\n this.execute403Redirect();\n\n this.executeBeforePipesOnError();\n // TODO: Remove this call\n this.postHttpRequest();\n return throwError(error);\n };\n\n /**\n * Execute custom implementation before any other pipe from the subscription.\n */\n protected executeBeforePipesOnSuccess = () => {};\n\n /**\n * Execute custom implementation before any other pipe from the subscription.\n */\n protected executeBeforePipesOnError = () => {};\n\n /**\n * Execute custom implementation to redirect to 403 page based on a specific condition.\n */\n protected execute403Redirect = () => {};\n\n // ****\n // ****\n // ****\n // TODO: Remove all below this line\n // ****\n\n /**\n * @deprecated Use the new custom method execute403Redirect() to trigger redirect to 403. This property is marked to be removed.\n * TODO: Remove this property\n */\n protected urlWhoAmI = 'api/who-am-i';\n /**\n * @deprecated Use the new custom method execute403Redirect() to trigger redirect to 403. This property is marked to be removed.\n * TODO: Remove this property\n */\n protected redirectOn403 = true;\n /**\n * @deprecated Use the new custom method execute403Redirect() to trigger redirect to 403. This property is marked to be removed.\n * TODO: Remove this property\n */\n protected redirect403Url = ['403'];\n /**\n * @deprecated Use either executeBeforePipesOnSuccess() or executeBeforePipesOnError() base on your case. This method is marked to be removed.\n */\n protected postHttpRequest = () => {};\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable } from 'rxjs';\nimport { map, share, take } from 'rxjs/operators';\nimport { HeaderParams } from './models/von-header-params.model';\nimport { VonHttpOptionsModel } from './models/von-http-options.model';\nimport {\n BaseParams,\n BodyParams,\n GenericParams,\n} from './models/von-rest-definition.model';\n\n/**\n * Rest service wrapper for API calls. This class needs to be extended in a `@Injectable({ providedIn: 'root' })` service.\n * Parameters needed:\n * @HttpClient\n * @DomSanitizer\n */\nexport abstract class VonRestService {\n constructor(protected http: HttpClient, protected sanitizer: DomSanitizer) {}\n\n /**\n * Allows to set the default headers\n * @param headerParams Check HeaderParams interface to verify allowed overrides\n * @returns\n * ```json\n * {\n * \"Content-Type\": \"application/json\",\n * \"Accept\": \"application/json\",\n * \"Access-Control-Allow-Origin\": \"*\"\n * }\n * ```\n */\n protected setHeaders = (headerParams?: HeaderParams): HttpHeaders => {\n return new HttpHeaders({\n 'Content-Type': headerParams?.contentType ?? 'application/json',\n Accept: headerParams?.accept ?? 'application/json',\n 'Access-Control-Allow-Origin': '*',\n });\n };\n\n protected setOptions = ({\n headerParams,\n queryParams: params,\n }: {\n headerParams?: HeaderParams;\n queryParams?: GenericParams;\n } = {}): VonHttpOptionsModel => {\n const options: VonHttpOptionsModel = {\n headers: this.setHeaders(headerParams),\n params,\n withCredentials: true,\n };\n if (headerParams?.responseType) {\n options.responseType = headerParams.responseType;\n }\n return options;\n };\n\n protected setOptionsForFile = ({\n headerParams,\n queryParams,\n }: {\n headerParams?: HeaderParams;\n queryParams?: GenericParams;\n } = {}): VonHttpOptionsModel => {\n const options: VonHttpOptionsModel = {\n ...this.setOptions({\n headerParams,\n queryParams,\n }),\n headers: new HttpHeaders({\n Accept: headerParams?.accept ?? 'application/json',\n 'Access-Control-Allow-Origin': '*',\n }),\n };\n if (headerParams?.responseType) {\n options.responseType = headerParams.responseType;\n }\n return options;\n };\n\n protected setUrlParams = (url: string, params?: GenericParams) => {\n if (params != null) {\n for (const p in params) {\n if (p != null) {\n url = url.replace(`{${p}}`, params[p]);\n }\n }\n }\n return url;\n };\n\n protected authenticate = (\n url: string,\n username: string,\n password: string\n ): Observable<any> => {\n const authorization = btoa(`${username}:${password}`);\n const headers = new HttpHeaders({\n authorization: `Basic ${authorization}`,\n });\n return this.http\n .get(url, {\n headers,\n withCredentials: true,\n })\n .pipe(take(1), share());\n };\n\n protected get = <R = any>({\n url,\n urlParams,\n queryParams: params,\n headerParams,\n header: oldHeaderParams,\n params: oldParams,\n }: BaseParams): Observable<R> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get<R>(\n url,\n this.setOptions({\n headerParams: {\n ...headerParams,\n ...oldHeaderParams,\n },\n queryParams: {\n ...params,\n ...oldParams,\n },\n })\n );\n };\n\n protected delete = <R = any>({\n url,\n urlParams,\n queryParams: params,\n headerParams,\n header: oldHeaderParams,\n params: oldParams,\n }: BaseParams): Observable<R> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.delete<R>(\n url,\n this.setOptions({\n headerParams: {\n ...headerParams,\n ...oldHeaderParams,\n },\n queryParams: {\n ...params,\n ...oldParams,\n },\n })\n );\n };\n\n protected post = <R = any, B = GenericParams | FormData>({\n url,\n body,\n urlParams,\n queryParams: params,\n headerParams,\n header: oldHeaderParams,\n params: oldParams,\n }: BodyParams<B>): Observable<R> => {\n url = this.setUrlParams(url, urlParams);\n const optionsParams = {\n headerParams: {\n ...headerParams,\n ...oldHeaderParams,\n },\n queryParams: {\n ...params,\n ...oldParams,\n },\n };\n let options =\n body && body instanceof FormData\n ? this.setOptionsForFile(optionsParams)\n : this.setOptions(optionsParams);\n return this.http.post<R>(url, body, options);\n };\n\n protected put = <R = any, B = GenericParams | FormData>({\n url,\n body,\n urlParams,\n queryParams: params,\n headerParams,\n header: oldHeaderParams,\n params: oldParams,\n }: BodyParams<B>): Observable<R> => {\n url = this.setUrlParams(url, urlParams);\n const optionsParams = {\n headerParams: {\n ...headerParams,\n ...oldHeaderParams,\n },\n queryParams: {\n ...params,\n ...oldParams,\n },\n };\n let options =\n body && body instanceof FormData\n ? this.setOptionsForFile(optionsParams)\n : this.setOptions(optionsParams);\n return this.http.put<R>(url, body, options);\n };\n\n protected patch = <R = any, B = GenericParams | FormData>({\n url,\n body,\n urlParams,\n queryParams: params,\n headerParams,\n header: oldHeaderParams,\n params: oldParams,\n }: BodyParams<B>): Observable<R> => {\n url = this.setUrlParams(url, urlParams);\n const optionsParams = {\n headerParams: {\n ...headerParams,\n ...oldHeaderParams,\n },\n queryParams: {\n ...params,\n ...oldParams,\n },\n };\n let options =\n body && body instanceof FormData\n ? this.setOptionsForFile(optionsParams)\n : this.setOptions(optionsParams);\n return this.http.patch<R>(url, body, options);\n };\n\n protected file = ({\n url,\n urlParams,\n queryParams: params,\n headerParams,\n header: oldHeaderParams,\n params: oldParams,\n }: BaseParams): Observable<SafeResourceUrl> => {\n url = this.setUrlParams(url, urlParams);\n return this.http\n .get(url, {\n ...this.setOptionsForFile({\n headerParams: {\n ...headerParams,\n ...oldHeaderParams,\n },\n queryParams: {\n ...params,\n ...oldParams,\n },\n }),\n responseType: 'blob' as 'json',\n })\n .pipe(\n map((res: any) => {\n const fileBlob = new Blob([res], { type: params?.['contentType'] });\n const objUrl = URL.createObjectURL(fileBlob);\n const sanitized =\n this.sanitizer.bypassSecurityTrustResourceUrl(objUrl);\n return sanitized;\n })\n );\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -6,12 +6,39 @@ export declare abstract class VonRestInterceptorService implements HttpIntercept
6
6
  protected consoleDebug: boolean;
7
7
  protected errorResponseUnknown: string;
8
8
  protected errorResponseForbidden: string;
9
- protected urlWhoAmI: string;
10
- protected redirectOn403: boolean;
11
- protected redirect403Url: string[];
12
9
  constructor(router: Router);
13
10
  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
14
- protected postHttpRequest: () => void;
15
11
  protected mapEvent: (event: HttpEvent<any>) => HttpEvent<any>;
16
12
  protected catchError: (errorResponse: HttpErrorResponse) => Observable<never>;
13
+ /**
14
+ * Execute custom implementation before any other pipe from the subscription.
15
+ */
16
+ protected executeBeforePipesOnSuccess: () => void;
17
+ /**
18
+ * Execute custom implementation before any other pipe from the subscription.
19
+ */
20
+ protected executeBeforePipesOnError: () => void;
21
+ /**
22
+ * Execute custom implementation to redirect to 403 page based on a specific condition.
23
+ */
24
+ protected execute403Redirect: () => void;
25
+ /**
26
+ * @deprecated Use the new custom method execute403Redirect() to trigger redirect to 403. This property is marked to be removed.
27
+ * TODO: Remove this property
28
+ */
29
+ protected urlWhoAmI: string;
30
+ /**
31
+ * @deprecated Use the new custom method execute403Redirect() to trigger redirect to 403. This property is marked to be removed.
32
+ * TODO: Remove this property
33
+ */
34
+ protected redirectOn403: boolean;
35
+ /**
36
+ * @deprecated Use the new custom method execute403Redirect() to trigger redirect to 403. This property is marked to be removed.
37
+ * TODO: Remove this property
38
+ */
39
+ protected redirect403Url: string[];
40
+ /**
41
+ * @deprecated Use either executeBeforePipesOnSuccess() or executeBeforePipesOnError() base on your case. This method is marked to be removed.
42
+ */
43
+ protected postHttpRequest: () => void;
17
44
  }
@@ -36,11 +36,11 @@ export declare abstract class VonRestService {
36
36
  queryParams?: GenericParams;
37
37
  }) => VonHttpOptionsModel;
38
38
  protected setUrlParams: (url: string, params?: GenericParams) => string;
39
- authenticate: (url: string, username: string, password: string) => Observable<any>;
40
- get: <R = any>({ url, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }: BaseParams) => Observable<R>;
41
- delete: <R = any>({ url, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }: BaseParams) => Observable<R>;
42
- post: <R = any, B = GenericParams | FormData>({ url, body, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }: BodyParams<B>) => Observable<R>;
43
- put: <R = any, B = GenericParams | FormData>({ url, body, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }: BodyParams<B>) => Observable<R>;
44
- patch: <R = any, B = GenericParams | FormData>({ url, body, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }: BodyParams<B>) => Observable<R>;
45
- file: ({ url, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }: BaseParams) => Observable<SafeResourceUrl>;
39
+ protected authenticate: (url: string, username: string, password: string) => Observable<any>;
40
+ protected get: <R = any>({ url, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }: BaseParams) => Observable<R>;
41
+ protected delete: <R = any>({ url, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }: BaseParams) => Observable<R>;
42
+ protected post: <R = any, B = GenericParams | FormData>({ url, body, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }: BodyParams<B>) => Observable<R>;
43
+ protected put: <R = any, B = GenericParams | FormData>({ url, body, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }: BodyParams<B>) => Observable<R>;
44
+ protected patch: <R = any, B = GenericParams | FormData>({ url, body, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }: BodyParams<B>) => Observable<R>;
45
+ protected file: ({ url, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }: BaseParams) => Observable<SafeResourceUrl>;
46
46
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@von-development-studio/angular-rest-service",
3
- "version": "18.2.0",
3
+ "version": "19.2.0",
4
4
  "description": "Angular Rest Service wrapper.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,17 +8,17 @@
8
8
  },
9
9
  "keywords": [
10
10
  "angular",
11
- "angular 18",
11
+ "angular 19",
12
12
  "rest client"
13
13
  ],
14
14
  "author": "Luis García Castro",
15
15
  "license": "MIT",
16
16
  "peerDependencies": {
17
- "@angular/common": "^18.2.0",
18
- "@angular/core": "^18.2.0"
17
+ "@angular/common": "^19.2.0",
18
+ "@angular/core": "^19.2.0"
19
19
  },
20
20
  "dependencies": {
21
- "tslib": "^2.3.0"
21
+ "tslib": "^2.4.0"
22
22
  },
23
23
  "sideEffects": false,
24
24
  "module": "fesm2022/von-development-studio-angular-rest-service.mjs",
@@ -29,8 +29,6 @@
29
29
  },
30
30
  ".": {
31
31
  "types": "./index.d.ts",
32
- "esm2022": "./esm2022/von-development-studio-angular-rest-service.mjs",
33
- "esm": "./esm2022/von-development-studio-angular-rest-service.mjs",
34
32
  "default": "./fesm2022/von-development-studio-angular-rest-service.mjs"
35
33
  }
36
34
  }
package/public-api.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './lib/models/von-error-rest-interceptor.model';
2
2
  export * from './lib/models/von-header-params.model';
3
+ export * from './lib/models/von-http-options.model';
3
4
  export * from './lib/models/von-page-response.model';
4
5
  export * from './lib/models/von-rest-definition.model';
5
6
  export * from './lib/von-rest-interceptor.service';
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLWVycm9yLXJlc3QtaW50ZXJjZXB0b3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1yZXN0LXNlcnZpY2Uvc3JjL2xpYi9tb2RlbHMvdm9uLWVycm9yLXJlc3QtaW50ZXJjZXB0b3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVm9uRXJyb3JSZXN0SW50ZXJjZXB0b3JNb2RlbCB7XG4gIHN0YXR1czogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGJvZHk/OiBhbnk7XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLWhlYWRlci1wYXJhbXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1yZXN0LXNlcnZpY2Uvc3JjL2xpYi9tb2RlbHMvdm9uLWhlYWRlci1wYXJhbXMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEhlYWRlclBhcmFtcyA9IHtcclxuICBjb250ZW50VHlwZT86IHN0cmluZztcclxuICBhY2NlcHQ/OiBzdHJpbmc7XHJcbiAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xyXG59O1xyXG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLWh0dHAtb3B0aW9ucy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlc3Qtc2VydmljZS9zcmMvbGliL21vZGVscy92b24taHR0cC1vcHRpb25zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuZXhwb3J0IGludGVyZmFjZSBWb25IdHRwT3B0aW9uc01vZGVsIHtcbiAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICB9O1xuICBvYnNlcnZlPzogJ2JvZHknO1xuICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwge1xuICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gIH07XG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLXBhZ2UtcmVzcG9uc2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1yZXN0LXNlcnZpY2Uvc3JjL2xpYi9tb2RlbHMvdm9uLXBhZ2UtcmVzcG9uc2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlcHJlY2F0ZWQgRGVmaW5lIHRoaXMgbW9kZWwgaW4gdGhlIHNvbHV0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVm9uUGFnZVJlc3BvbnNlTW9kZWw8VD4ge1xuICBjb250ZW50OiBUW107XG4gIGxhc3Q6IGJvb2xlYW47XG4gIHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgdG90YWxFbGVtZW50czogbnVtYmVyO1xuICBzaXplOiBudW1iZXI7XG4gIG51bWJlck9mRWxlbWVudHM6IG51bWJlcjtcbiAgbnVtYmVyOiBudW1iZXI7XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLXJlc3QtZGVmaW5pdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlc3Qtc2VydmljZS9zcmMvbGliL21vZGVscy92b24tcmVzdC1kZWZpbml0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIZWFkZXJQYXJhbXMgfSBmcm9tICcuL3Zvbi1oZWFkZXItcGFyYW1zLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmljUGFyYW1zIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VQYXJhbXMge1xuICB1cmw6IHN0cmluZztcbiAgdXJsUGFyYW1zPzogR2VuZXJpY1BhcmFtcztcbiAgcXVlcnlQYXJhbXM/OiBHZW5lcmljUGFyYW1zO1xuICBoZWFkZXJQYXJhbXM/OiBIZWFkZXJQYXJhbXM7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBoZWFkZXJQYXJhbXMgaW5zdGVhZFxuICAgKi9cbiAgaGVhZGVyPzogSGVhZGVyUGFyYW1zO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHF1ZXJ5UGFyYW1zIGluc3RlYWRcbiAgICovXG4gIHBhcmFtcz86IEdlbmVyaWNQYXJhbXM7XG59XG5cbmV4cG9ydCB0eXBlIEJvZHlQYXJhbXM8QiA9IEdlbmVyaWNQYXJhbXMgfCBGb3JtRGF0YT4gPSBCYXNlUGFyYW1zICYge1xuICBib2R5PzogQjtcbn07XG4iXX0=
@@ -1,68 +0,0 @@
1
- import { HttpResponse, } from '@angular/common/http';
2
- import { throwError } from 'rxjs';
3
- import { catchError, map } from 'rxjs/operators';
4
- export class VonRestInterceptorService {
5
- router;
6
- consoleDebug = false;
7
- errorResponseUnknown = 'Unknown Error';
8
- errorResponseForbidden = 'Forbidden Error';
9
- urlWhoAmI = 'api/who-am-i';
10
- redirectOn403 = true;
11
- redirect403Url = ['403'];
12
- constructor(router) {
13
- this.router = router;
14
- }
15
- intercept(request, next) {
16
- return next
17
- .handle(request)
18
- .pipe(map(this.mapEvent), catchError(this.catchError));
19
- }
20
- postHttpRequest = () => { };
21
- mapEvent = (event) => {
22
- if (event instanceof HttpResponse) {
23
- if (event.status === 200 || event.status === 204) {
24
- this.postHttpRequest();
25
- return event;
26
- }
27
- if (event.status !== 200) {
28
- const error = {
29
- status: event.status,
30
- message: event.statusText,
31
- body: event.body,
32
- };
33
- if (this.consoleDebug) {
34
- console.error('[ErrorWS]: ', error);
35
- }
36
- throw error;
37
- }
38
- }
39
- return event;
40
- };
41
- catchError = (errorResponse) => {
42
- if (this.consoleDebug) {
43
- console.error('[Fatal]: ', errorResponse);
44
- }
45
- const error = {
46
- status: errorResponse.status,
47
- message: '',
48
- body: errorResponse.error || {},
49
- };
50
- if (errorResponse.status === 0) {
51
- error.message = this.errorResponseUnknown;
52
- }
53
- if (errorResponse.status === 401) {
54
- error.message = errorResponse.error
55
- ? errorResponse.error
56
- : this.errorResponseForbidden;
57
- }
58
- if (this.redirectOn403) {
59
- if (errorResponse.status === 403 ||
60
- (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)) {
61
- this.router.navigate(this.redirect403Url);
62
- }
63
- }
64
- this.postHttpRequest();
65
- return throwError(error);
66
- };
67
- }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLXJlc3QtaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlc3Qtc2VydmljZS9zcmMvbGliL3Zvbi1yZXN0LWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQU1MLFlBQVksR0FDYixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRCxNQUFNLE9BQWdCLHlCQUF5QjtJQVF2QjtJQVBaLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsb0JBQW9CLEdBQUcsZUFBZSxDQUFDO0lBQ3ZDLHNCQUFzQixHQUFHLGlCQUFpQixDQUFDO0lBQzNDLFNBQVMsR0FBRyxjQUFjLENBQUM7SUFDM0IsYUFBYSxHQUFHLElBQUksQ0FBQztJQUNyQixjQUFjLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVuQyxZQUFzQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFFeEMsU0FBUyxDQUNQLE9BQXlCLEVBQ3pCLElBQWlCO1FBRWpCLE9BQU8sSUFBSTthQUNSLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVTLGVBQWUsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFM0IsUUFBUSxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFO1FBQzdDLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRSxDQUFDO1lBQ2xDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN2QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sS0FBSyxHQUFpQztvQkFDMUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO29CQUNwQixPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVU7b0JBQ3pCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtpQkFDakIsQ0FBQztnQkFDRixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7Z0JBQ0QsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRVEsVUFBVSxHQUFHLENBQUMsYUFBZ0MsRUFBRSxFQUFFO1FBQzFELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBaUM7WUFDMUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1lBQzVCLE9BQU8sRUFBRSxFQUFFO1lBQ1gsSUFBSSxFQUFFLGFBQWEsQ0FBQyxLQUFLLElBQUksRUFBRTtTQUNoQyxDQUFDO1FBQ0YsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQzVDLENBQUM7UUFDRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDakMsS0FBSyxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsS0FBSztnQkFDakMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLO2dCQUNyQixDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUNFLGFBQWEsQ0FBQyxNQUFNLEtBQUssR0FBRztnQkFDNUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUNyRSxDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM1QyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEh0dHBFcnJvclJlc3BvbnNlLFxuICBIdHRwRXZlbnQsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwSW50ZXJjZXB0b3IsXG4gIEh0dHBSZXF1ZXN0LFxuICBIdHRwUmVzcG9uc2UsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBWb25FcnJvclJlc3RJbnRlcmNlcHRvck1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvdm9uLWVycm9yLXJlc3QtaW50ZXJjZXB0b3IubW9kZWwnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVm9uUmVzdEludGVyY2VwdG9yU2VydmljZSBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIHByb3RlY3RlZCBjb25zb2xlRGVidWcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGVycm9yUmVzcG9uc2VVbmtub3duID0gJ1Vua25vd24gRXJyb3InO1xuICBwcm90ZWN0ZWQgZXJyb3JSZXNwb25zZUZvcmJpZGRlbiA9ICdGb3JiaWRkZW4gRXJyb3InO1xuICBwcm90ZWN0ZWQgdXJsV2hvQW1JID0gJ2FwaS93aG8tYW0taSc7XG4gIHByb3RlY3RlZCByZWRpcmVjdE9uNDAzID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIHJlZGlyZWN0NDAzVXJsID0gWyc0MDMnXTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgaW50ZXJjZXB0KFxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIHJldHVybiBuZXh0XG4gICAgICAuaGFuZGxlKHJlcXVlc3QpXG4gICAgICAucGlwZShtYXAodGhpcy5tYXBFdmVudCksIGNhdGNoRXJyb3IodGhpcy5jYXRjaEVycm9yKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcG9zdEh0dHBSZXF1ZXN0ID0gKCkgPT4ge307XG5cbiAgcHJvdGVjdGVkIG1hcEV2ZW50ID0gKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4ge1xuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgaWYgKGV2ZW50LnN0YXR1cyA9PT0gMjAwIHx8IGV2ZW50LnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgIHRoaXMucG9zdEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICBjb25zdCBlcnJvcjogVm9uRXJyb3JSZXN0SW50ZXJjZXB0b3JNb2RlbCA9IHtcbiAgICAgICAgICBzdGF0dXM6IGV2ZW50LnN0YXR1cyxcbiAgICAgICAgICBtZXNzYWdlOiBldmVudC5zdGF0dXNUZXh0LFxuICAgICAgICAgIGJvZHk6IGV2ZW50LmJvZHksXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLmNvbnNvbGVEZWJ1Zykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tFcnJvcldTXTogJywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXZlbnQ7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGNhdGNoRXJyb3IgPSAoZXJyb3JSZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICBpZiAodGhpcy5jb25zb2xlRGVidWcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tGYXRhbF06ICcsIGVycm9yUmVzcG9uc2UpO1xuICAgIH1cbiAgICBjb25zdCBlcnJvcjogVm9uRXJyb3JSZXN0SW50ZXJjZXB0b3JNb2RlbCA9IHtcbiAgICAgIHN0YXR1czogZXJyb3JSZXNwb25zZS5zdGF0dXMsXG4gICAgICBtZXNzYWdlOiAnJyxcbiAgICAgIGJvZHk6IGVycm9yUmVzcG9uc2UuZXJyb3IgfHwge30sXG4gICAgfTtcbiAgICBpZiAoZXJyb3JSZXNwb25zZS5zdGF0dXMgPT09IDApIHtcbiAgICAgIGVycm9yLm1lc3NhZ2UgPSB0aGlzLmVycm9yUmVzcG9uc2VVbmtub3duO1xuICAgIH1cbiAgICBpZiAoZXJyb3JSZXNwb25zZS5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgZXJyb3IubWVzc2FnZSA9IGVycm9yUmVzcG9uc2UuZXJyb3JcbiAgICAgICAgPyBlcnJvclJlc3BvbnNlLmVycm9yXG4gICAgICAgIDogdGhpcy5lcnJvclJlc3BvbnNlRm9yYmlkZGVuO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZWRpcmVjdE9uNDAzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGVycm9yUmVzcG9uc2Uuc3RhdHVzID09PSA0MDMgfHxcbiAgICAgICAgKGVycm9yUmVzcG9uc2UudXJsICYmIGVycm9yUmVzcG9uc2UudXJsLmluZGV4T2YodGhpcy51cmxXaG9BbUkpID4gLTEpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUodGhpcy5yZWRpcmVjdDQwM1VybCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucG9zdEh0dHBSZXF1ZXN0KCk7XG4gICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICB9O1xufVxuIl19
@@ -1,185 +0,0 @@
1
- import { HttpHeaders } from '@angular/common/http';
2
- import { map, share, take } from 'rxjs/operators';
3
- /**
4
- * Rest service wrapper for API calls. This class needs to be extended in a `@Injectable({ providedIn: 'root' })` service.
5
- * Parameters needed:
6
- * @HttpClient
7
- * @DomSanitizer
8
- */
9
- export class VonRestService {
10
- http;
11
- sanitizer;
12
- constructor(http, sanitizer) {
13
- this.http = http;
14
- this.sanitizer = sanitizer;
15
- }
16
- /**
17
- * Allows to set the default headers
18
- * @param headerParams Check HeaderParams interface to verify allowed overrides
19
- * @returns
20
- * ```json
21
- * {
22
- * "Content-Type": "application/json",
23
- * "Accept": "application/json",
24
- * "Access-Control-Allow-Origin": "*"
25
- * }
26
- * ```
27
- */
28
- setHeaders = (headerParams) => {
29
- return new HttpHeaders({
30
- 'Content-Type': headerParams?.contentType ?? 'application/json',
31
- Accept: headerParams?.accept ?? 'application/json',
32
- 'Access-Control-Allow-Origin': '*',
33
- });
34
- };
35
- setOptions = ({ headerParams, queryParams: params, } = {}) => {
36
- const options = {
37
- headers: this.setHeaders(headerParams),
38
- params,
39
- withCredentials: true,
40
- };
41
- if (headerParams?.responseType) {
42
- options.responseType = headerParams.responseType;
43
- }
44
- return options;
45
- };
46
- setOptionsForFile = ({ headerParams, queryParams, } = {}) => {
47
- const options = {
48
- ...this.setOptions({
49
- headerParams,
50
- queryParams,
51
- }),
52
- headers: new HttpHeaders({
53
- Accept: headerParams?.accept ?? 'application/json',
54
- 'Access-Control-Allow-Origin': '*',
55
- }),
56
- };
57
- if (headerParams?.responseType) {
58
- options.responseType = headerParams.responseType;
59
- }
60
- return options;
61
- };
62
- setUrlParams = (url, params) => {
63
- if (params != null) {
64
- for (const p in params) {
65
- if (p != null) {
66
- url = url.replace(`{${p}}`, params[p]);
67
- }
68
- }
69
- }
70
- return url;
71
- };
72
- authenticate = (url, username, password) => {
73
- const authorization = btoa(`${username}:${password}`);
74
- const headers = new HttpHeaders({
75
- authorization: `Basic ${authorization}`,
76
- });
77
- return this.http
78
- .get(url, {
79
- headers,
80
- withCredentials: true,
81
- })
82
- .pipe(take(1), share());
83
- };
84
- get = ({ url, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }) => {
85
- url = this.setUrlParams(url, urlParams);
86
- return this.http.get(url, this.setOptions({
87
- headerParams: {
88
- ...headerParams,
89
- ...oldHeaderParams,
90
- },
91
- queryParams: {
92
- ...params,
93
- ...oldParams,
94
- },
95
- }));
96
- };
97
- delete = ({ url, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }) => {
98
- url = this.setUrlParams(url, urlParams);
99
- return this.http.delete(url, this.setOptions({
100
- headerParams: {
101
- ...headerParams,
102
- ...oldHeaderParams,
103
- },
104
- queryParams: {
105
- ...params,
106
- ...oldParams,
107
- },
108
- }));
109
- };
110
- post = ({ url, body, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }) => {
111
- url = this.setUrlParams(url, urlParams);
112
- const optionsParams = {
113
- headerParams: {
114
- ...headerParams,
115
- ...oldHeaderParams,
116
- },
117
- queryParams: {
118
- ...params,
119
- ...oldParams,
120
- },
121
- };
122
- let options = body && body instanceof FormData
123
- ? this.setOptionsForFile(optionsParams)
124
- : this.setOptions(optionsParams);
125
- return this.http.post(url, body, options);
126
- };
127
- put = ({ url, body, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }) => {
128
- url = this.setUrlParams(url, urlParams);
129
- const optionsParams = {
130
- headerParams: {
131
- ...headerParams,
132
- ...oldHeaderParams,
133
- },
134
- queryParams: {
135
- ...params,
136
- ...oldParams,
137
- },
138
- };
139
- let options = body && body instanceof FormData
140
- ? this.setOptionsForFile(optionsParams)
141
- : this.setOptions(optionsParams);
142
- return this.http.put(url, body, options);
143
- };
144
- patch = ({ url, body, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }) => {
145
- url = this.setUrlParams(url, urlParams);
146
- const optionsParams = {
147
- headerParams: {
148
- ...headerParams,
149
- ...oldHeaderParams,
150
- },
151
- queryParams: {
152
- ...params,
153
- ...oldParams,
154
- },
155
- };
156
- let options = body && body instanceof FormData
157
- ? this.setOptionsForFile(optionsParams)
158
- : this.setOptions(optionsParams);
159
- return this.http.patch(url, body, options);
160
- };
161
- file = ({ url, urlParams, queryParams: params, headerParams, header: oldHeaderParams, params: oldParams, }) => {
162
- url = this.setUrlParams(url, urlParams);
163
- return this.http
164
- .get(url, {
165
- ...this.setOptionsForFile({
166
- headerParams: {
167
- ...headerParams,
168
- ...oldHeaderParams,
169
- },
170
- queryParams: {
171
- ...params,
172
- ...oldParams,
173
- },
174
- }),
175
- responseType: 'blob',
176
- })
177
- .pipe(map((res) => {
178
- const fileBlob = new Blob([res], { type: params?.['contentType'] });
179
- const objUrl = URL.createObjectURL(fileBlob);
180
- const sanitized = this.sanitizer.bypassSecurityTrustResourceUrl(objUrl);
181
- return sanitized;
182
- }));
183
- };
184
- }
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLXJlc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlc3Qtc2VydmljZS9zcmMvbGliL3Zvbi1yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBU2xEOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFnQixjQUFjO0lBQ1o7SUFBNEI7SUFBbEQsWUFBc0IsSUFBZ0IsRUFBWSxTQUF1QjtRQUFuRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVksY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFHLENBQUM7SUFFN0U7Ozs7Ozs7Ozs7O09BV0c7SUFDTyxVQUFVLEdBQUcsQ0FBQyxZQUEyQixFQUFlLEVBQUU7UUFDbEUsT0FBTyxJQUFJLFdBQVcsQ0FBQztZQUNyQixjQUFjLEVBQUUsWUFBWSxFQUFFLFdBQVcsSUFBSSxrQkFBa0I7WUFDL0QsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLElBQUksa0JBQWtCO1lBQ2xELDZCQUE2QixFQUFFLEdBQUc7U0FDbkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRVEsVUFBVSxHQUFHLENBQUMsRUFDdEIsWUFBWSxFQUNaLFdBQVcsRUFBRSxNQUFNLE1BSWpCLEVBQUUsRUFBdUIsRUFBRTtRQUM3QixNQUFNLE9BQU8sR0FBd0I7WUFDbkMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1lBQ3RDLE1BQU07WUFDTixlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO1FBQ0YsSUFBSSxZQUFZLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDL0IsT0FBTyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQ25ELENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFUSxpQkFBaUIsR0FBRyxDQUFDLEVBQzdCLFlBQVksRUFDWixXQUFXLE1BSVQsRUFBRSxFQUF1QixFQUFFO1FBQzdCLE1BQU0sT0FBTyxHQUF3QjtZQUNuQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ2pCLFlBQVk7Z0JBQ1osV0FBVzthQUNaLENBQUM7WUFDRixPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUM7Z0JBQ3ZCLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxJQUFJLGtCQUFrQjtnQkFDbEQsNkJBQTZCLEVBQUUsR0FBRzthQUNuQyxDQUFDO1NBQ0gsQ0FBQztRQUNGLElBQUksWUFBWSxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQztRQUNuRCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxDQUFDO0lBRVEsWUFBWSxHQUFHLENBQUMsR0FBVyxFQUFFLE1BQXNCLEVBQUUsRUFBRTtRQUMvRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuQixLQUFLLE1BQU0sQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDZCxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQztJQUVGLFlBQVksR0FBRyxDQUNiLEdBQVcsRUFDWCxRQUFnQixFQUNoQixRQUFnQixFQUNDLEVBQUU7UUFDbkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsUUFBUSxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDOUIsYUFBYSxFQUFFLFNBQVMsYUFBYSxFQUFFO1NBQ3hDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1IsT0FBTztZQUNQLGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUM7YUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDO0lBRUYsR0FBRyxHQUFHLENBQVUsRUFDZCxHQUFHLEVBQ0gsU0FBUyxFQUNULFdBQVcsRUFBRSxNQUFNLEVBQ25CLFlBQVksRUFDWixNQUFNLEVBQUUsZUFBZSxFQUN2QixNQUFNLEVBQUUsU0FBUyxHQUNOLEVBQWlCLEVBQUU7UUFDOUIsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsRUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2QsWUFBWSxFQUFFO2dCQUNaLEdBQUcsWUFBWTtnQkFDZixHQUFHLGVBQWU7YUFDbkI7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsR0FBRyxNQUFNO2dCQUNULEdBQUcsU0FBUzthQUNiO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixNQUFNLEdBQUcsQ0FBVSxFQUNqQixHQUFHLEVBQ0gsU0FBUyxFQUNULFdBQVcsRUFBRSxNQUFNLEVBQ25CLFlBQVksRUFDWixNQUFNLEVBQUUsZUFBZSxFQUN2QixNQUFNLEVBQUUsU0FBUyxHQUNOLEVBQWlCLEVBQUU7UUFDOUIsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQ3JCLEdBQUcsRUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2QsWUFBWSxFQUFFO2dCQUNaLEdBQUcsWUFBWTtnQkFDZixHQUFHLGVBQWU7YUFDbkI7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsR0FBRyxNQUFNO2dCQUNULEdBQUcsU0FBUzthQUNiO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixJQUFJLEdBQUcsQ0FBd0MsRUFDN0MsR0FBRyxFQUNILElBQUksRUFDSixTQUFTLEVBQ1QsV0FBVyxFQUFFLE1BQU0sRUFDbkIsWUFBWSxFQUNaLE1BQU0sRUFBRSxlQUFlLEVBQ3ZCLE1BQU0sRUFBRSxTQUFTLEdBQ0gsRUFBaUIsRUFBRTtRQUNqQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEMsTUFBTSxhQUFhLEdBQUc7WUFDcEIsWUFBWSxFQUFFO2dCQUNaLEdBQUcsWUFBWTtnQkFDZixHQUFHLGVBQWU7YUFDbkI7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsR0FBRyxNQUFNO2dCQUNULEdBQUcsU0FBUzthQUNiO1NBQ0YsQ0FBQztRQUNGLElBQUksT0FBTyxHQUNULElBQUksSUFBSSxJQUFJLFlBQVksUUFBUTtZQUM5QixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztZQUN2QyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDO0lBRUYsR0FBRyxHQUFHLENBQXdDLEVBQzVDLEdBQUcsRUFDSCxJQUFJLEVBQ0osU0FBUyxFQUNULFdBQVcsRUFBRSxNQUFNLEVBQ25CLFlBQVksRUFDWixNQUFNLEVBQUUsZUFBZSxFQUN2QixNQUFNLEVBQUUsU0FBUyxHQUNILEVBQWlCLEVBQUU7UUFDakMsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sYUFBYSxHQUFHO1lBQ3BCLFlBQVksRUFBRTtnQkFDWixHQUFHLFlBQVk7Z0JBQ2YsR0FBRyxlQUFlO2FBQ25CO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLEdBQUcsTUFBTTtnQkFDVCxHQUFHLFNBQVM7YUFDYjtTQUNGLENBQUM7UUFDRixJQUFJLE9BQU8sR0FDVCxJQUFJLElBQUksSUFBSSxZQUFZLFFBQVE7WUFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7WUFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQztJQUVGLEtBQUssR0FBRyxDQUF3QyxFQUM5QyxHQUFHLEVBQ0gsSUFBSSxFQUNKLFNBQVMsRUFDVCxXQUFXLEVBQUUsTUFBTSxFQUNuQixZQUFZLEVBQ1osTUFBTSxFQUFFLGVBQWUsRUFDdkIsTUFBTSxFQUFFLFNBQVMsR0FDSCxFQUFpQixFQUFFO1FBQ2pDLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4QyxNQUFNLGFBQWEsR0FBRztZQUNwQixZQUFZLEVBQUU7Z0JBQ1osR0FBRyxZQUFZO2dCQUNmLEdBQUcsZUFBZTthQUNuQjtZQUNELFdBQVcsRUFBRTtnQkFDWCxHQUFHLE1BQU07Z0JBQ1QsR0FBRyxTQUFTO2FBQ2I7U0FDRixDQUFDO1FBQ0YsSUFBSSxPQUFPLEdBQ1QsSUFBSSxJQUFJLElBQUksWUFBWSxRQUFRO1lBQzlCLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUksR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDLENBQUM7SUFFRixJQUFJLEdBQUcsQ0FBQyxFQUNOLEdBQUcsRUFDSCxTQUFTLEVBQ1QsV0FBVyxFQUFFLE1BQU0sRUFDbkIsWUFBWSxFQUNaLE1BQU0sRUFBRSxlQUFlLEVBQ3ZCLE1BQU0sRUFBRSxTQUFTLEdBQ04sRUFBK0IsRUFBRTtRQUM1QyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDeEIsWUFBWSxFQUFFO29CQUNaLEdBQUcsWUFBWTtvQkFDZixHQUFHLGVBQWU7aUJBQ25CO2dCQUNELFdBQVcsRUFBRTtvQkFDWCxHQUFHLE1BQU07b0JBQ1QsR0FBRyxTQUFTO2lCQUNiO2FBQ0YsQ0FBQztZQUNGLFlBQVksRUFBRSxNQUFnQjtTQUMvQixDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2YsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxNQUFNLFNBQVMsR0FDYixJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmUsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIZWFkZXJQYXJhbXMgfSBmcm9tICcuL21vZGVscy92b24taGVhZGVyLXBhcmFtcy5tb2RlbCc7XG5pbXBvcnQgeyBWb25IdHRwT3B0aW9uc01vZGVsIH0gZnJvbSAnLi9tb2RlbHMvdm9uLWh0dHAtb3B0aW9ucy5tb2RlbCc7XG5pbXBvcnQge1xuICBCYXNlUGFyYW1zLFxuICBCb2R5UGFyYW1zLFxuICBHZW5lcmljUGFyYW1zLFxufSBmcm9tICcuL21vZGVscy92b24tcmVzdC1kZWZpbml0aW9uLm1vZGVsJztcblxuLyoqXG4gKiBSZXN0IHNlcnZpY2Ugd3JhcHBlciBmb3IgQVBJIGNhbGxzLiBUaGlzIGNsYXNzIG5lZWRzIHRvIGJlIGV4dGVuZGVkIGluIGEgYEBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pYCBzZXJ2aWNlLlxuICogUGFyYW1ldGVycyBuZWVkZWQ6XG4gKiBASHR0cENsaWVudFxuICogQERvbVNhbml0aXplclxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVm9uUmVzdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCwgcHJvdGVjdGVkIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gc2V0IHRoZSBkZWZhdWx0IGhlYWRlcnNcbiAgICogQHBhcmFtIGhlYWRlclBhcmFtcyBDaGVjayBIZWFkZXJQYXJhbXMgaW50ZXJmYWNlIHRvIHZlcmlmeSBhbGxvd2VkIG92ZXJyaWRlc1xuICAgKiBAcmV0dXJuc1xuICAgKiBgYGBqc29uXG4gICAqIHtcbiAgICogICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICogICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICogICBcIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpblwiOiBcIipcIlxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgcHJvdGVjdGVkIHNldEhlYWRlcnMgPSAoaGVhZGVyUGFyYW1zPzogSGVhZGVyUGFyYW1zKTogSHR0cEhlYWRlcnMgPT4ge1xuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6IGhlYWRlclBhcmFtcz8uY29udGVudFR5cGUgPz8gJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgQWNjZXB0OiBoZWFkZXJQYXJhbXM/LmFjY2VwdCA/PyAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogJyonLFxuICAgIH0pO1xuICB9O1xuXG4gIHByb3RlY3RlZCBzZXRPcHRpb25zID0gKHtcbiAgICBoZWFkZXJQYXJhbXMsXG4gICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcbiAgfToge1xuICAgIGhlYWRlclBhcmFtcz86IEhlYWRlclBhcmFtcztcbiAgICBxdWVyeVBhcmFtcz86IEdlbmVyaWNQYXJhbXM7XG4gIH0gPSB7fSk6IFZvbkh0dHBPcHRpb25zTW9kZWwgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnM6IFZvbkh0dHBPcHRpb25zTW9kZWwgPSB7XG4gICAgICBoZWFkZXJzOiB0aGlzLnNldEhlYWRlcnMoaGVhZGVyUGFyYW1zKSxcbiAgICAgIHBhcmFtcyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9O1xuICAgIGlmIChoZWFkZXJQYXJhbXM/LnJlc3BvbnNlVHlwZSkge1xuICAgICAgb3B0aW9ucy5yZXNwb25zZVR5cGUgPSBoZWFkZXJQYXJhbXMucmVzcG9uc2VUeXBlO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfTtcblxuICBwcm90ZWN0ZWQgc2V0T3B0aW9uc0ZvckZpbGUgPSAoe1xuICAgIGhlYWRlclBhcmFtcyxcbiAgICBxdWVyeVBhcmFtcyxcbiAgfToge1xuICAgIGhlYWRlclBhcmFtcz86IEhlYWRlclBhcmFtcztcbiAgICBxdWVyeVBhcmFtcz86IEdlbmVyaWNQYXJhbXM7XG4gIH0gPSB7fSk6IFZvbkh0dHBPcHRpb25zTW9kZWwgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnM6IFZvbkh0dHBPcHRpb25zTW9kZWwgPSB7XG4gICAgICAuLi50aGlzLnNldE9wdGlvbnMoe1xuICAgICAgICBoZWFkZXJQYXJhbXMsXG4gICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgfSksXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICBBY2NlcHQ6IGhlYWRlclBhcmFtcz8uYWNjZXB0ID8/ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbic6ICcqJyxcbiAgICAgIH0pLFxuICAgIH07XG4gICAgaWYgKGhlYWRlclBhcmFtcz8ucmVzcG9uc2VUeXBlKSB7XG4gICAgICBvcHRpb25zLnJlc3BvbnNlVHlwZSA9IGhlYWRlclBhcmFtcy5yZXNwb25zZVR5cGU7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xuICB9O1xuXG4gIHByb3RlY3RlZCBzZXRVcmxQYXJhbXMgPSAodXJsOiBzdHJpbmcsIHBhcmFtcz86IEdlbmVyaWNQYXJhbXMpID0+IHtcbiAgICBpZiAocGFyYW1zICE9IG51bGwpIHtcbiAgICAgIGZvciAoY29uc3QgcCBpbiBwYXJhbXMpIHtcbiAgICAgICAgaWYgKHAgIT0gbnVsbCkge1xuICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKGB7JHtwfX1gLCBwYXJhbXNbcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1cmw7XG4gIH07XG5cbiAgYXV0aGVudGljYXRlID0gKFxuICAgIHVybDogc3RyaW5nLFxuICAgIHVzZXJuYW1lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xuICAgIGNvbnN0IGF1dGhvcml6YXRpb24gPSBidG9hKGAke3VzZXJuYW1lfToke3Bhc3N3b3JkfWApO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgYXV0aG9yaXphdGlvbjogYEJhc2ljICR7YXV0aG9yaXphdGlvbn1gLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodXJsLCB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YWtlKDEpLCBzaGFyZSgpKTtcbiAgfTtcblxuICBnZXQgPSA8UiA9IGFueT4oe1xuICAgIHVybCxcbiAgICB1cmxQYXJhbXMsXG4gICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcbiAgICBoZWFkZXJQYXJhbXMsXG4gICAgaGVhZGVyOiBvbGRIZWFkZXJQYXJhbXMsXG4gICAgcGFyYW1zOiBvbGRQYXJhbXMsXG4gIH06IEJhc2VQYXJhbXMpOiBPYnNlcnZhYmxlPFI+ID0+IHtcbiAgICB1cmwgPSB0aGlzLnNldFVybFBhcmFtcyh1cmwsIHVybFBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Uj4oXG4gICAgICB1cmwsXG4gICAgICB0aGlzLnNldE9wdGlvbnMoe1xuICAgICAgICBoZWFkZXJQYXJhbXM6IHtcbiAgICAgICAgICAuLi5oZWFkZXJQYXJhbXMsXG4gICAgICAgICAgLi4ub2xkSGVhZGVyUGFyYW1zLFxuICAgICAgICB9LFxuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAuLi5vbGRQYXJhbXMsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gIH07XG5cbiAgZGVsZXRlID0gPFIgPSBhbnk+KHtcbiAgICB1cmwsXG4gICAgdXJsUGFyYW1zLFxuICAgIHF1ZXJ5UGFyYW1zOiBwYXJhbXMsXG4gICAgaGVhZGVyUGFyYW1zLFxuICAgIGhlYWRlcjogb2xkSGVhZGVyUGFyYW1zLFxuICAgIHBhcmFtczogb2xkUGFyYW1zLFxuICB9OiBCYXNlUGFyYW1zKTogT2JzZXJ2YWJsZTxSPiA9PiB7XG4gICAgdXJsID0gdGhpcy5zZXRVcmxQYXJhbXModXJsLCB1cmxQYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFI+KFxuICAgICAgdXJsLFxuICAgICAgdGhpcy5zZXRPcHRpb25zKHtcbiAgICAgICAgaGVhZGVyUGFyYW1zOiB7XG4gICAgICAgICAgLi4uaGVhZGVyUGFyYW1zLFxuICAgICAgICAgIC4uLm9sZEhlYWRlclBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgLi4ub2xkUGFyYW1zLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICB9O1xuXG4gIHBvc3QgPSA8UiA9IGFueSwgQiA9IEdlbmVyaWNQYXJhbXMgfCBGb3JtRGF0YT4oe1xuICAgIHVybCxcbiAgICBib2R5LFxuICAgIHVybFBhcmFtcyxcbiAgICBxdWVyeVBhcmFtczogcGFyYW1zLFxuICAgIGhlYWRlclBhcmFtcyxcbiAgICBoZWFkZXI6IG9sZEhlYWRlclBhcmFtcyxcbiAgICBwYXJhbXM6IG9sZFBhcmFtcyxcbiAgfTogQm9keVBhcmFtczxCPik6IE9ic2VydmFibGU8Uj4gPT4ge1xuICAgIHVybCA9IHRoaXMuc2V0VXJsUGFyYW1zKHVybCwgdXJsUGFyYW1zKTtcbiAgICBjb25zdCBvcHRpb25zUGFyYW1zID0ge1xuICAgICAgaGVhZGVyUGFyYW1zOiB7XG4gICAgICAgIC4uLmhlYWRlclBhcmFtcyxcbiAgICAgICAgLi4ub2xkSGVhZGVyUGFyYW1zLFxuICAgICAgfSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgLi4ub2xkUGFyYW1zLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGxldCBvcHRpb25zID1cbiAgICAgIGJvZHkgJiYgYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhXG4gICAgICAgID8gdGhpcy5zZXRPcHRpb25zRm9yRmlsZShvcHRpb25zUGFyYW1zKVxuICAgICAgICA6IHRoaXMuc2V0T3B0aW9ucyhvcHRpb25zUGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Uj4odXJsLCBib2R5LCBvcHRpb25zKTtcbiAgfTtcblxuICBwdXQgPSA8UiA9IGFueSwgQiA9IEdlbmVyaWNQYXJhbXMgfCBGb3JtRGF0YT4oe1xuICAgIHVybCxcbiAgICBib2R5LFxuICAgIHVybFBhcmFtcyxcbiAgICBxdWVyeVBhcmFtczogcGFyYW1zLFxuICAgIGhlYWRlclBhcmFtcyxcbiAgICBoZWFkZXI6IG9sZEhlYWRlclBhcmFtcyxcbiAgICBwYXJhbXM6IG9sZFBhcmFtcyxcbiAgfTogQm9keVBhcmFtczxCPik6IE9ic2VydmFibGU8Uj4gPT4ge1xuICAgIHVybCA9IHRoaXMuc2V0VXJsUGFyYW1zKHVybCwgdXJsUGFyYW1zKTtcbiAgICBjb25zdCBvcHRpb25zUGFyYW1zID0ge1xuICAgICAgaGVhZGVyUGFyYW1zOiB7XG4gICAgICAgIC4uLmhlYWRlclBhcmFtcyxcbiAgICAgICAgLi4ub2xkSGVhZGVyUGFyYW1zLFxuICAgICAgfSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgLi4ub2xkUGFyYW1zLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGxldCBvcHRpb25zID1cbiAgICAgIGJvZHkgJiYgYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhXG4gICAgICAgID8gdGhpcy5zZXRPcHRpb25zRm9yRmlsZShvcHRpb25zUGFyYW1zKVxuICAgICAgICA6IHRoaXMuc2V0T3B0aW9ucyhvcHRpb25zUGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxSPih1cmwsIGJvZHksIG9wdGlvbnMpO1xuICB9O1xuXG4gIHBhdGNoID0gPFIgPSBhbnksIEIgPSBHZW5lcmljUGFyYW1zIHwgRm9ybURhdGE+KHtcbiAgICB1cmwsXG4gICAgYm9keSxcbiAgICB1cmxQYXJhbXMsXG4gICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcbiAgICBoZWFkZXJQYXJhbXMsXG4gICAgaGVhZGVyOiBvbGRIZWFkZXJQYXJhbXMsXG4gICAgcGFyYW1zOiBvbGRQYXJhbXMsXG4gIH06IEJvZHlQYXJhbXM8Qj4pOiBPYnNlcnZhYmxlPFI+ID0+IHtcbiAgICB1cmwgPSB0aGlzLnNldFVybFBhcmFtcyh1cmwsIHVybFBhcmFtcyk7XG4gICAgY29uc3Qgb3B0aW9uc1BhcmFtcyA9IHtcbiAgICAgIGhlYWRlclBhcmFtczoge1xuICAgICAgICAuLi5oZWFkZXJQYXJhbXMsXG4gICAgICAgIC4uLm9sZEhlYWRlclBhcmFtcyxcbiAgICAgIH0sXG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIC4uLm9sZFBhcmFtcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBsZXQgb3B0aW9ucyA9XG4gICAgICBib2R5ICYmIGJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YVxuICAgICAgICA/IHRoaXMuc2V0T3B0aW9uc0ZvckZpbGUob3B0aW9uc1BhcmFtcylcbiAgICAgICAgOiB0aGlzLnNldE9wdGlvbnMob3B0aW9uc1BhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxSPih1cmwsIGJvZHksIG9wdGlvbnMpO1xuICB9O1xuXG4gIGZpbGUgPSAoe1xuICAgIHVybCxcbiAgICB1cmxQYXJhbXMsXG4gICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcbiAgICBoZWFkZXJQYXJhbXMsXG4gICAgaGVhZGVyOiBvbGRIZWFkZXJQYXJhbXMsXG4gICAgcGFyYW1zOiBvbGRQYXJhbXMsXG4gIH06IEJhc2VQYXJhbXMpOiBPYnNlcnZhYmxlPFNhZmVSZXNvdXJjZVVybD4gPT4ge1xuICAgIHVybCA9IHRoaXMuc2V0VXJsUGFyYW1zKHVybCwgdXJsUGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KHVybCwge1xuICAgICAgICAuLi50aGlzLnNldE9wdGlvbnNGb3JGaWxlKHtcbiAgICAgICAgICBoZWFkZXJQYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLmhlYWRlclBhcmFtcyxcbiAgICAgICAgICAgIC4uLm9sZEhlYWRlclBhcmFtcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAuLi5vbGRQYXJhbXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InIGFzICdqc29uJyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbGVCbG9iID0gbmV3IEJsb2IoW3Jlc10sIHsgdHlwZTogcGFyYW1zPy5bJ2NvbnRlbnRUeXBlJ10gfSk7XG4gICAgICAgICAgY29uc3Qgb2JqVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlQmxvYik7XG4gICAgICAgICAgY29uc3Qgc2FuaXRpemVkID1cbiAgICAgICAgICAgIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChvYmpVcmwpO1xuICAgICAgICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9O1xufVxuIl19
@@ -1,7 +0,0 @@
1
- export * from './lib/models/von-error-rest-interceptor.model';
2
- export * from './lib/models/von-header-params.model';
3
- export * from './lib/models/von-page-response.model';
4
- export * from './lib/models/von-rest-definition.model';
5
- export * from './lib/von-rest-interceptor.service';
6
- export * from './lib/von-rest.service';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXJlc3Qtc2VydmljZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy92b24tZXJyb3ItcmVzdC1pbnRlcmNlcHRvci5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy92b24taGVhZGVyLXBhcmFtcy5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy92b24tcGFnZS1yZXNwb25zZS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy92b24tcmVzdC1kZWZpbml0aW9uLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdm9uLXJlc3QtaW50ZXJjZXB0b3Iuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Zvbi1yZXN0LnNlcnZpY2UnO1xyXG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLWRldmVsb3BtZW50LXN0dWRpby1hbmd1bGFyLXJlc3Qtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXJlc3Qtc2VydmljZS9zcmMvdm9uLWRldmVsb3BtZW50LXN0dWRpby1hbmd1bGFyLXJlc3Qtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19