@von-development-studio/angular-rest-service 2.0.4-SNAPSHOT → 18.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.
- package/README.md +54 -54
- package/esm2022/lib/models/von-error-rest-interceptor.model.mjs +2 -0
- package/esm2022/lib/models/von-header-params.model.mjs +2 -0
- package/esm2022/lib/models/von-http-options.model.mjs +2 -0
- package/esm2022/lib/models/von-page-response.model.mjs +2 -0
- package/esm2022/lib/models/von-rest-definition.model.mjs +2 -0
- package/esm2022/lib/von-rest-interceptor.service.mjs +68 -0
- package/esm2022/lib/von-rest.service.mjs +185 -0
- package/esm2022/public-api.mjs +7 -0
- package/esm2022/von-development-studio-angular-rest-service.mjs +5 -0
- package/fesm2022/von-development-studio-angular-rest-service.mjs +258 -0
- package/fesm2022/von-development-studio-angular-rest-service.mjs.map +1 -0
- package/{von-development-studio-angular-rest-service.d.ts → index.d.ts} +0 -0
- package/lib/{model → models}/von-error-rest-interceptor.model.d.ts +0 -0
- package/lib/models/von-header-params.model.d.ts +5 -0
- package/lib/{model → models}/von-http-options.model.d.ts +0 -0
- package/lib/{model → models}/von-page-response.model.d.ts +3 -0
- package/lib/models/von-rest-definition.model.d.ts +21 -0
- package/lib/von-rest-interceptor.service.d.ts +0 -0
- package/lib/von-rest.service.d.ts +35 -16
- package/package.json +13 -19
- package/public-api.d.ts +4 -4
- package/LICENSE +0 -21
- package/esm2020/lib/model/von-error-response.model.mjs +0 -2
- package/esm2020/lib/model/von-error-rest-interceptor.model.mjs +0 -2
- package/esm2020/lib/model/von-http-options.model.mjs +0 -2
- package/esm2020/lib/model/von-page-response.model.mjs +0 -2
- package/esm2020/lib/model/von-rest-definition.type.mjs +0 -2
- package/esm2020/lib/von-rest-interceptor.service.mjs +0 -62
- package/esm2020/lib/von-rest.service.mjs +0 -105
- package/esm2020/public-api.mjs +0 -7
- package/esm2020/von-development-studio-angular-rest-service.mjs +0 -5
- package/fesm2015/von-development-studio-angular-rest-service.mjs +0 -168
- package/fesm2015/von-development-studio-angular-rest-service.mjs.map +0 -1
- package/fesm2020/von-development-studio-angular-rest-service.mjs +0 -172
- package/fesm2020/von-development-studio-angular-rest-service.mjs.map +0 -1
- package/lib/model/von-error-response.model.d.ts +0 -5
- package/lib/model/von-rest-definition.type.d.ts +0 -25
package/README.md
CHANGED
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
# Angular Rest Service
|
|
2
|
-
|
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version
|
|
4
|
-
|
|
5
|
-
## Installing
|
|
6
|
-
|
|
7
|
-
1. Add NPM package into your project:
|
|
8
|
-
|
|
9
|
-
```node
|
|
10
|
-
npm install @von-development-studio/angular-rest-service --save
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
2. Create your rest service file _**RestService**_
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
...
|
|
17
|
-
import { VonRestService } from '@von-development-studio/angular-rest-service';
|
|
18
|
-
...
|
|
19
|
-
|
|
20
|
-
@Injectable({
|
|
21
|
-
providedIn: 'root'
|
|
22
|
-
})
|
|
23
|
-
export class RestService extends VonRestService {
|
|
24
|
-
constructor(
|
|
25
|
-
protected http: HttpClient,
|
|
26
|
-
protected sanitizer: DomSanitizer
|
|
27
|
-
) {
|
|
28
|
-
super(http, sanitizer);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
2. Create your rest interceptor service file _**RestInterceptorService**_
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
...
|
|
37
|
-
import { VonRestInterceptorService } from '@von-development-studio/angular-rest-service';
|
|
38
|
-
...
|
|
39
|
-
|
|
40
|
-
@Injectable({
|
|
41
|
-
providedIn: 'root'
|
|
42
|
-
})
|
|
43
|
-
export class RestInterceptorService extends VonRestInterceptorService {
|
|
44
|
-
constructor(
|
|
45
|
-
protected router: Router
|
|
46
|
-
) {
|
|
47
|
-
super(router);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
<hr>
|
|
53
|
-
|
|
54
|
-
###### _[By Von Development Studio](https://www.von-development-studio.com/)_
|
|
1
|
+
# Angular Rest Service
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.2.13.
|
|
4
|
+
|
|
5
|
+
## Installing
|
|
6
|
+
|
|
7
|
+
1. Add NPM package into your project:
|
|
8
|
+
|
|
9
|
+
```node
|
|
10
|
+
npm install @von-development-studio/angular-rest-service --save
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
2. Create your rest service file _**RestService**_
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
...
|
|
17
|
+
import { VonRestService } from '@von-development-studio/angular-rest-service';
|
|
18
|
+
...
|
|
19
|
+
|
|
20
|
+
@Injectable({
|
|
21
|
+
providedIn: 'root'
|
|
22
|
+
})
|
|
23
|
+
export class RestService extends VonRestService {
|
|
24
|
+
constructor(
|
|
25
|
+
protected http: HttpClient,
|
|
26
|
+
protected sanitizer: DomSanitizer
|
|
27
|
+
) {
|
|
28
|
+
super(http, sanitizer);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
2. Create your rest interceptor service file _**RestInterceptorService**_
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
...
|
|
37
|
+
import { VonRestInterceptorService } from '@von-development-studio/angular-rest-service';
|
|
38
|
+
...
|
|
39
|
+
|
|
40
|
+
@Injectable({
|
|
41
|
+
providedIn: 'root'
|
|
42
|
+
})
|
|
43
|
+
export class RestInterceptorService extends VonRestInterceptorService {
|
|
44
|
+
constructor(
|
|
45
|
+
protected router: Router
|
|
46
|
+
) {
|
|
47
|
+
super(router);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
<hr>
|
|
53
|
+
|
|
54
|
+
###### _[By Von Development Studio](https://www.von-development-studio.com/)_
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLWVycm9yLXJlc3QtaW50ZXJjZXB0b3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1yZXN0LXNlcnZpY2Uvc3JjL2xpYi9tb2RlbHMvdm9uLWVycm9yLXJlc3QtaW50ZXJjZXB0b3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVm9uRXJyb3JSZXN0SW50ZXJjZXB0b3JNb2RlbCB7XG4gIHN0YXR1czogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGJvZHk/OiBhbnk7XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLWhlYWRlci1wYXJhbXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1yZXN0LXNlcnZpY2Uvc3JjL2xpYi9tb2RlbHMvdm9uLWhlYWRlci1wYXJhbXMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEhlYWRlclBhcmFtcyA9IHtcclxuICBjb250ZW50VHlwZT86IHN0cmluZztcclxuICBhY2NlcHQ/OiBzdHJpbmc7XHJcbiAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xyXG59O1xyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLWh0dHAtb3B0aW9ucy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlc3Qtc2VydmljZS9zcmMvbGliL21vZGVscy92b24taHR0cC1vcHRpb25zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuZXhwb3J0IGludGVyZmFjZSBWb25IdHRwT3B0aW9uc01vZGVsIHtcbiAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICB9O1xuICBvYnNlcnZlPzogJ2JvZHknO1xuICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwge1xuICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gIH07XG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLXBhZ2UtcmVzcG9uc2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1yZXN0LXNlcnZpY2Uvc3JjL2xpYi9tb2RlbHMvdm9uLXBhZ2UtcmVzcG9uc2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlcHJlY2F0ZWQgRGVmaW5lIHRoaXMgbW9kZWwgaW4gdGhlIHNvbHV0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVm9uUGFnZVJlc3BvbnNlTW9kZWw8VD4ge1xuICBjb250ZW50OiBUW107XG4gIGxhc3Q6IGJvb2xlYW47XG4gIHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgdG90YWxFbGVtZW50czogbnVtYmVyO1xuICBzaXplOiBudW1iZXI7XG4gIG51bWJlck9mRWxlbWVudHM6IG51bWJlcjtcbiAgbnVtYmVyOiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLXJlc3QtZGVmaW5pdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlc3Qtc2VydmljZS9zcmMvbGliL21vZGVscy92b24tcmVzdC1kZWZpbml0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIZWFkZXJQYXJhbXMgfSBmcm9tICcuL3Zvbi1oZWFkZXItcGFyYW1zLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmljUGFyYW1zIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VQYXJhbXMge1xuICB1cmw6IHN0cmluZztcbiAgdXJsUGFyYW1zPzogR2VuZXJpY1BhcmFtcztcbiAgcXVlcnlQYXJhbXM/OiBHZW5lcmljUGFyYW1zO1xuICBoZWFkZXJQYXJhbXM/OiBIZWFkZXJQYXJhbXM7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBoZWFkZXJQYXJhbXMgaW5zdGVhZFxuICAgKi9cbiAgaGVhZGVyPzogSGVhZGVyUGFyYW1zO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHF1ZXJ5UGFyYW1zIGluc3RlYWRcbiAgICovXG4gIHBhcmFtcz86IEdlbmVyaWNQYXJhbXM7XG59XG5cbmV4cG9ydCB0eXBlIEJvZHlQYXJhbXM8QiA9IEdlbmVyaWNQYXJhbXMgfCBGb3JtRGF0YT4gPSBCYXNlUGFyYW1zICYge1xuICBib2R5PzogQjtcbn07XG4iXX0=
|
|
@@ -0,0 +1,68 @@
|
|
|
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
|
|
@@ -0,0 +1,185 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLXJlc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXJlc3Qtc2VydmljZS9zcmMvbGliL3Zvbi1yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBU2xEOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFnQixjQUFjO0lBQ1o7SUFBNEI7SUFBbEQsWUFBc0IsSUFBZ0IsRUFBWSxTQUF1QjtRQUFuRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVksY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFHLENBQUM7SUFFN0U7Ozs7Ozs7Ozs7O09BV0c7SUFDTyxVQUFVLEdBQUcsQ0FBQyxZQUEyQixFQUFlLEVBQUU7UUFDbEUsT0FBTyxJQUFJLFdBQVcsQ0FBQztZQUNyQixjQUFjLEVBQUUsWUFBWSxFQUFFLFdBQVcsSUFBSSxrQkFBa0I7WUFDL0QsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLElBQUksa0JBQWtCO1lBQ2xELDZCQUE2QixFQUFFLEdBQUc7U0FDbkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRVEsVUFBVSxHQUFHLENBQUMsRUFDdEIsWUFBWSxFQUNaLFdBQVcsRUFBRSxNQUFNLE1BSWpCLEVBQUUsRUFBdUIsRUFBRTtRQUM3QixNQUFNLE9BQU8sR0FBd0I7WUFDbkMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1lBQ3RDLE1BQU07WUFDTixlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO1FBQ0YsSUFBSSxZQUFZLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDL0IsT0FBTyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQ25ELENBQUM7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QUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDLENBQUM7SUFFRixJQUFJLEdBQUcsQ0FBQyxFQUNOLEdBQUcsRUFDSCxTQUFTLEVBQ1QsV0FBVyxFQUFFLE1BQU0sRUFDbkIsWUFBWSxFQUNaLE1BQU0sRUFBRSxlQUFlLEVBQ3ZCLE1BQU0sRUFBRSxTQUFTLEdBQ04sRUFBK0IsRUFBRTtRQUM1QyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDeEIsWUFBWSxFQUFFO29CQUNaLEdBQUcsWUFBWTtvQkFDZixHQUFHLGVBQWU7aUJBQ25CO2dCQUNELFdBQVcsRUFBRTtvQkFDWCxHQUFHLE1BQU07b0JBQ1QsR0FBRyxTQUFTO2lCQUNiO2FBQ0YsQ0FBQztZQUNGLFlBQVksRUFBRSxNQUFnQjtTQUMvQixDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2YsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxNQUFNLFNBQVMsR0FDYixJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmUsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIZWFkZXJQYXJhbXMgfSBmcm9tICcuL21vZGVscy92b24taGVhZGVyLXBhcmFtcy5tb2RlbCc7XG5pbXBvcnQgeyBWb25IdHRwT3B0aW9uc01vZGVsIH0gZnJvbSAnLi9tb2RlbHMvdm9uLWh0dHAtb3B0aW9ucy5tb2RlbCc7XG5pbXBvcnQge1xuICBCYXNlUGFyYW1zLFxuICBCb2R5UGFyYW1zLFxuICBHZW5lcmljUGFyYW1zLFxufSBmcm9tICcuL21vZGVscy92b24tcmVzdC1kZWZpbml0aW9uLm1vZGVsJztcblxuLyoqXG4gKiBSZXN0IHNlcnZpY2Ugd3JhcHBlciBmb3IgQVBJIGNhbGxzLiBUaGlzIGNsYXNzIG5lZWRzIHRvIGJlIGV4dGVuZGVkIGluIGEgYEBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pYCBzZXJ2aWNlLlxuICogUGFyYW1ldGVycyBuZWVkZWQ6XG4gKiBASHR0cENsaWVudFxuICogQERvbVNhbml0aXplclxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVm9uUmVzdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCwgcHJvdGVjdGVkIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gc2V0IHRoZSBkZWZhdWx0IGhlYWRlcnNcbiAgICogQHBhcmFtIGhlYWRlclBhcmFtcyBDaGVjayBIZWFkZXJQYXJhbXMgaW50ZXJmYWNlIHRvIHZlcmlmeSBhbGxvd2VkIG92ZXJyaWRlc1xuICAgKiBAcmV0dXJuc1xuICAgKiBgYGBqc29uXG4gICAqIHtcbiAgICogICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICogICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICogICBcIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpblwiOiBcIipcIlxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgcHJvdGVjdGVkIHNldEhlYWRlcnMgPSAoaGVhZGVyUGFyYW1zPzogSGVhZGVyUGFyYW1zKTogSHR0cEhlYWRlcnMgPT4ge1xuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6IGhlYWRlclBhcmFtcz8uY29udGVudFR5cGUgPz8gJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgQWNjZXB0OiBoZWFkZXJQYXJhbXM/LmFjY2VwdCA/PyAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogJyonLFxuICAgIH0pO1xuICB9O1xuXG4gIHByb3RlY3RlZCBzZXRPcHRpb25zID0gKHtcbiAgICBoZWFkZXJQYXJhbXMsXG4gICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcbiAgfToge1xuICAgIGhlYWRlclBhcmFtcz86IEhlYWRlclBhcmFtcztcbiAgICBxdWVyeVBhcmFtcz86IEdlbmVyaWNQYXJhbXM7XG4gIH0gPSB7fSk6IFZvbkh0dHBPcHRpb25zTW9kZWwgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnM6IFZvbkh0dHBPcHRpb25zTW9kZWwgPSB7XG4gICAgICBoZWFkZXJzOiB0aGlzLnNldEhlYWRlcnMoaGVhZGVyUGFyYW1zKSxcbiAgICAgIHBhcmFtcyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9O1xuICAgIGlmIChoZWFkZXJQYXJhbXM/LnJlc3BvbnNlVHlwZSkge1xuICAgICAgb3B0aW9ucy5yZXNwb25zZVR5cGUgPSBoZWFkZXJQYXJhbXMucmVzcG9uc2VUeXBlO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfTtcblxuICBwcm90ZWN0ZWQgc2V0T3B0aW9uc0ZvckZpbGUgPSAoe1xuICAgIGhlYWRlclBhcmFtcyxcbiAgICBxdWVyeVBhcmFtcyxcbiAgfToge1xuICAgIGhlYWRlclBhcmFtcz86IEhlYWRlclBhcmFtcztcbiAgICBxdWVyeVBhcmFtcz86IEdlbmVyaWNQYXJhbXM7XG4gIH0gPSB7fSk6IFZvbkh0dHBPcHRpb25zTW9kZWwgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnM6IFZvbkh0dHBPcHRpb25zTW9kZWwgPSB7XG4gICAgICAuLi50aGlzLnNldE9wdGlvbnMoe1xuICAgICAgICBoZWFkZXJQYXJhbXMsXG4gICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgfSksXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICBBY2NlcHQ6IGhlYWRlclBhcmFtcz8uYWNjZXB0ID8/ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbic6ICcqJyxcbiAgICAgIH0pLFxuICAgIH07XG4gICAgaWYgKGhlYWRlclBhcmFtcz8ucmVzcG9uc2VUeXBlKSB7XG4gICAgICBvcHRpb25zLnJlc3BvbnNlVHlwZSA9IGhlYWRlclBhcmFtcy5yZXNwb25zZVR5cGU7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xuICB9O1xuXG4gIHByb3RlY3RlZCBzZXRVcmxQYXJhbXMgPSAodXJsOiBzdHJpbmcsIHBhcmFtcz86IEdlbmVyaWNQYXJhbXMpID0+IHtcbiAgICBpZiAocGFyYW1zICE9IG51bGwpIHtcbiAgICAgIGZvciAoY29uc3QgcCBpbiBwYXJhbXMpIHtcbiAgICAgICAgaWYgKHAgIT0gbnVsbCkge1xuICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKGB7JHtwfX1gLCBwYXJhbXNbcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1cmw7XG4gIH07XG5cbiAgYXV0aGVudGljYXRlID0gKFxuICAgIHVybDogc3RyaW5nLFxuICAgIHVzZXJuYW1lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xuICAgIGNvbnN0IGF1dGhvcml6YXRpb24gPSBidG9hKGAke3VzZXJuYW1lfToke3Bhc3N3b3JkfWApO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgYXV0aG9yaXphdGlvbjogYEJhc2ljICR7YXV0aG9yaXphdGlvbn1gLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodXJsLCB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YWtlKDEpLCBzaGFyZSgpKTtcbiAgfTtcblxuICBnZXQgPSA8UiA9IGFueT4oe1xuICAgIHVybCxcbiAgICB1cmxQYXJhbXMsXG4gICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcbiAgICBoZWFkZXJQYXJhbXMsXG4gICAgaGVhZGVyOiBvbGRIZWFkZXJQYXJhbXMsXG4gICAgcGFyYW1zOiBvbGRQYXJhbXMsXG4gIH06IEJhc2VQYXJhbXMpOiBPYnNlcnZhYmxlPFI+ID0+IHtcbiAgICB1cmwgPSB0aGlzLnNldFVybFBhcmFtcyh1cmwsIHVybFBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Uj4oXG4gICAgICB1cmwsXG4gICAgICB0aGlzLnNldE9wdGlvbnMoe1xuICAgICAgICBoZWFkZXJQYXJhbXM6IHtcbiAgICAgICAgICAuLi5oZWFkZXJQYXJhbXMsXG4gICAgICAgICAgLi4ub2xkSGVhZGVyUGFyYW1zLFxuICAgICAgICB9LFxuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAuLi5vbGRQYXJhbXMsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gIH07XG5cbiAgZGVsZXRlID0gPFIgPSBhbnk+KHtcbiAgICB1cmwsXG4gICAgdXJsUGFyYW1zLFxuICAgIHF1ZXJ5UGFyYW1zOiBwYXJhbXMsXG4gICAgaGVhZGVyUGFyYW1zLFxuICAgIGhlYWRlcjogb2xkSGVhZGVyUGFyYW1zLFxuICAgIHBhcmFtczogb2xkUGFyYW1zLFxuICB9OiBCYXNlUGFyYW1zKTogT2JzZXJ2YWJsZTxSPiA9PiB7XG4gICAgdXJsID0gdGhpcy5zZXRVcmxQYXJhbXModXJsLCB1cmxQYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFI+KFxuICAgICAgdXJsLFxuICAgICAgdGhpcy5zZXRPcHRpb25zKHtcbiAgICAgICAgaGVhZGVyUGFyYW1zOiB7XG4gICAgICAgICAgLi4uaGVhZGVyUGFyYW1zLFxuICAgICAgICAgIC4uLm9sZEhlYWRlclBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgLi4ub2xkUGFyYW1zLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICB9O1xuXG4gIHBvc3QgPSA8UiA9IGFueSwgQiA9IEdlbmVyaWNQYXJhbXMgfCBGb3JtRGF0YT4oe1xuICAgIHVybCxcbiAgICBib2R5LFxuICAgIHVybFBhcmFtcyxcbiAgICBxdWVyeVBhcmFtczogcGFyYW1zLFxuICAgIGhlYWRlclBhcmFtcyxcbiAgICBoZWFkZXI6IG9sZEhlYWRlclBhcmFtcyxcbiAgICBwYXJhbXM6IG9sZFBhcmFtcyxcbiAgfTogQm9keVBhcmFtczxCPik6IE9ic2VydmFibGU8Uj4gPT4ge1xuICAgIHVybCA9IHRoaXMuc2V0VXJsUGFyYW1zKHVybCwgdXJsUGFyYW1zKTtcbiAgICBjb25zdCBvcHRpb25zUGFyYW1zID0ge1xuICAgICAgaGVhZGVyUGFyYW1zOiB7XG4gICAgICAgIC4uLmhlYWRlclBhcmFtcyxcbiAgICAgICAgLi4ub2xkSGVhZGVyUGFyYW1zLFxuICAgICAgfSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgLi4ub2xkUGFyYW1zLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGxldCBvcHRpb25zID1cbiAgICAgIGJvZHkgJiYgYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhXG4gICAgICAgID8gdGhpcy5zZXRPcHRpb25zRm9yRmlsZShvcHRpb25zUGFyYW1zKVxuICAgICAgICA6IHRoaXMuc2V0T3B0aW9ucyhvcHRpb25zUGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Uj4odXJsLCBib2R5LCBvcHRpb25zKTtcbiAgfTtcblxuICBwdXQgPSA8UiA9IGFueSwgQiA9IEdlbmVyaWNQYXJhbXMgfCBGb3JtRGF0YT4oe1xuICAgIHVybCxcbiAgICBib2R5LFxuICAgIHVybFBhcmFtcyxcbiAgICBxdWVyeVBhcmFtczogcGFyYW1zLFxuICAgIGhlYWRlclBhcmFtcyxcbiAgICBoZWFkZXI6IG9sZEhlYWRlclBhcmFtcyxcbiAgICBwYXJhbXM6IG9sZFBhcmFtcyxcbiAgfTogQm9keVBhcmFtczxCPik6IE9ic2VydmFibGU8Uj4gPT4ge1xuICAgIHVybCA9IHRoaXMuc2V0VXJsUGFyYW1zKHVybCwgdXJsUGFyYW1zKTtcbiAgICBjb25zdCBvcHRpb25zUGFyYW1zID0ge1xuICAgICAgaGVhZGVyUGFyYW1zOiB7XG4gICAgICAgIC4uLmhlYWRlclBhcmFtcyxcbiAgICAgICAgLi4ub2xkSGVhZGVyUGFyYW1zLFxuICAgICAgfSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgLi4ub2xkUGFyYW1zLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGxldCBvcHRpb25zID1cbiAgICAgIGJvZHkgJiYgYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhXG4gICAgICAgID8gdGhpcy5zZXRPcHRpb25zRm9yRmlsZShvcHRpb25zUGFyYW1zKVxuICAgICAgICA6IHRoaXMuc2V0T3B0aW9ucyhvcHRpb25zUGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxSPih1cmwsIGJvZHksIG9wdGlvbnMpO1xuICB9O1xuXG4gIHBhdGNoID0gPFIgPSBhbnksIEIgPSBHZW5lcmljUGFyYW1zIHwgRm9ybURhdGE+KHtcbiAgICB1cmwsXG4gICAgYm9keSxcbiAgICB1cmxQYXJhbXMsXG4gICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcbiAgICBoZWFkZXJQYXJhbXMsXG4gICAgaGVhZGVyOiBvbGRIZWFkZXJQYXJhbXMsXG4gICAgcGFyYW1zOiBvbGRQYXJhbXMsXG4gIH06IEJvZHlQYXJhbXM8Qj4pOiBPYnNlcnZhYmxlPFI+ID0+IHtcbiAgICB1cmwgPSB0aGlzLnNldFVybFBhcmFtcyh1cmwsIHVybFBhcmFtcyk7XG4gICAgY29uc3Qgb3B0aW9uc1BhcmFtcyA9IHtcbiAgICAgIGhlYWRlclBhcmFtczoge1xuICAgICAgICAuLi5oZWFkZXJQYXJhbXMsXG4gICAgICAgIC4uLm9sZEhlYWRlclBhcmFtcyxcbiAgICAgIH0sXG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIC4uLm9sZFBhcmFtcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBsZXQgb3B0aW9ucyA9XG4gICAgICBib2R5ICYmIGJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YVxuICAgICAgICA/IHRoaXMuc2V0T3B0aW9uc0ZvckZpbGUob3B0aW9uc1BhcmFtcylcbiAgICAgICAgOiB0aGlzLnNldE9wdGlvbnMob3B0aW9uc1BhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxSPih1cmwsIGJvZHksIG9wdGlvbnMpO1xuICB9O1xuXG4gIGZpbGUgPSAoe1xuICAgIHVybCxcbiAgICB1cmxQYXJhbXMsXG4gICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcbiAgICBoZWFkZXJQYXJhbXMsXG4gICAgaGVhZGVyOiBvbGRIZWFkZXJQYXJhbXMsXG4gICAgcGFyYW1zOiBvbGRQYXJhbXMsXG4gIH06IEJhc2VQYXJhbXMpOiBPYnNlcnZhYmxlPFNhZmVSZXNvdXJjZVVybD4gPT4ge1xuICAgIHVybCA9IHRoaXMuc2V0VXJsUGFyYW1zKHVybCwgdXJsUGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KHVybCwge1xuICAgICAgICAuLi50aGlzLnNldE9wdGlvbnNGb3JGaWxlKHtcbiAgICAgICAgICBoZWFkZXJQYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLmhlYWRlclBhcmFtcyxcbiAgICAgICAgICAgIC4uLm9sZEhlYWRlclBhcmFtcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAuLi5vbGRQYXJhbXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InIGFzICdqc29uJyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbGVCbG9iID0gbmV3IEJsb2IoW3Jlc10sIHsgdHlwZTogcGFyYW1zPy5bJ2NvbnRlbnRUeXBlJ10gfSk7XG4gICAgICAgICAgY29uc3Qgb2JqVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlQmxvYik7XG4gICAgICAgICAgY29uc3Qgc2FuaXRpemVkID1cbiAgICAgICAgICAgIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChvYmpVcmwpO1xuICAgICAgICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
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=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLWRldmVsb3BtZW50LXN0dWRpby1hbmd1bGFyLXJlc3Qtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXJlc3Qtc2VydmljZS9zcmMvdm9uLWRldmVsb3BtZW50LXN0dWRpby1hbmd1bGFyLXJlc3Qtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|