@vcd/sdk 15.0.8 → 17.0.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/{esm2020 → esm2022}/client/client/api.result.service.mjs +4 -4
- package/esm2022/client/client/logging.interceptor.mjs +44 -0
- package/esm2022/client/client/request.headers.interceptor.mjs +100 -0
- package/esm2022/client/client/response.normalization.interceptor.mjs +59 -0
- package/esm2022/client/client/vcd.api.client.mjs +603 -0
- package/{esm2020 → esm2022}/client/client/vcd.http.client.mjs +6 -6
- package/esm2022/client/client/vcd.transfer.client.mjs +166 -0
- package/esm2022/client/query/filter.builder.mjs +195 -0
- package/esm2022/client/query/query.builder.mjs +79 -0
- package/esm2022/common/container-hooks.mjs +85 -0
- package/{esm2020 → esm2022}/main.mjs +7 -7
- package/{fesm2020 → fesm2022}/vcd-sdk.mjs +54 -54
- package/{fesm2020 → fesm2022}/vcd-sdk.mjs.map +1 -1
- package/open_source_license_vcd_ui_sdk_17.0.0_ga.txt +393 -0
- package/package.json +8 -14
- package/VMware-vcd_ui_sdk-15.0.8-ODP.tar.gz +0 -0
- package/esm2020/client/client/logging.interceptor.mjs +0 -44
- package/esm2020/client/client/request.headers.interceptor.mjs +0 -100
- package/esm2020/client/client/response.normalization.interceptor.mjs +0 -59
- package/esm2020/client/client/vcd.api.client.mjs +0 -603
- package/esm2020/client/client/vcd.transfer.client.mjs +0 -166
- package/esm2020/client/query/filter.builder.mjs +0 -195
- package/esm2020/client/query/query.builder.mjs +0 -79
- package/esm2020/common/container-hooks.mjs +0 -85
- package/fesm2015/vcd-sdk.mjs +0 -1505
- package/fesm2015/vcd-sdk.mjs.map +0 -1
- package/open_source_license_@vcdsdk_15.0.8_GA.txt +0 -22623
- /package/{esm2020 → esm2022}/client/client/constants.mjs +0 -0
- /package/{esm2020 → esm2022}/client/client/index.mjs +0 -0
- /package/{esm2020 → esm2022}/client/client/types.mjs +0 -0
- /package/{esm2020 → esm2022}/client/index.mjs +0 -0
- /package/{esm2020 → esm2022}/client/openapi.mjs +0 -0
- /package/{esm2020 → esm2022}/client/query/index.mjs +0 -0
- /package/{esm2020 → esm2022}/common/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/index.mjs +0 -0
- /package/{esm2020 → esm2022}/core/plugin.module.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/vcd-sdk.mjs +0 -0
|
@@ -14,10 +14,10 @@ export class ApiResultService {
|
|
|
14
14
|
clear() {
|
|
15
15
|
this._results = [];
|
|
16
16
|
}
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ApiResultService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
18
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ApiResultService }); }
|
|
17
19
|
}
|
|
18
|
-
|
|
19
|
-
ApiResultService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ApiResultService });
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ApiResultService, decorators: [{
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ApiResultService, decorators: [{
|
|
21
21
|
type: Injectable
|
|
22
22
|
}] });
|
|
23
23
|
export class ApiResult {
|
|
@@ -40,4 +40,4 @@ export class ApiResult {
|
|
|
40
40
|
this._finished = finished;
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnJlc3VsdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmNkL3Nkay9zcmMvY2xpZW50L2NsaWVudC9hcGkucmVzdWx0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0MsK0JBQStCO0FBRS9CLE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFWSxhQUFRLEdBQWdCLEVBQUUsQ0FBQztLQVl0QztJQVhHLElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQWlCO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OEdBWlEsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVU7O0FBZ0JYLE1BQU0sT0FBTyxTQUFTO0lBRWxCLElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBR0QsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBR0QsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFHRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVksT0FBZSxFQUFFLFNBQWtCLEVBQUUsT0FBYSxFQUFFLFFBQWM7UUFDMUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDOUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTp2YXJpYWJsZS1uYW1lXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXBpUmVzdWx0U2VydmljZSB7XG4gICAgcHJpdmF0ZSBfcmVzdWx0czogQXBpUmVzdWx0W10gPSBbXTtcbiAgICBwdWJsaWMgZ2V0IHJlc3VsdHMoKTogQXBpUmVzdWx0W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzdWx0cztcbiAgICB9XG5cbiAgICBhZGQocmVzdWx0OiBBcGlSZXN1bHQpIHtcbiAgICAgICAgdGhpcy5fcmVzdWx0cyA9IFtyZXN1bHQsIC4uLnRoaXMuX3Jlc3VsdHMuc2xpY2UoMCwgOTkpXTtcbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5fcmVzdWx0cyA9IFtdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaVJlc3VsdCB7XG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogc3RyaW5nO1xuICAgIHB1YmxpYyBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVzc2FnZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdWNjZWVkZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIGdldCBzdWNjZWVkZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWNjZWVkZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3RhcnRlZDogRGF0ZTtcbiAgICBwdWJsaWMgZ2V0IHN0YXJ0ZWQoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFydGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpbmlzaGVkOiBEYXRlO1xuICAgIHB1YmxpYyBnZXQgZmluaXNoZWQoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hlZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN1Y2NlZWRlZDogYm9vbGVhbiwgc3RhcnRlZDogRGF0ZSwgZmluaXNoZWQ6IERhdGUpIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIHRoaXMuX3N1Y2NlZWRlZCA9IHN1Y2NlZWRlZDtcbiAgICAgICAgdGhpcy5fc3RhcnRlZCA9IHN0YXJ0ZWQ7XG4gICAgICAgIHRoaXMuX2ZpbmlzaGVkID0gZmluaXNoZWQ7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { HttpResponse } from '@angular/common/http';
|
|
3
|
+
import { finalize, tap } from 'rxjs/operators';
|
|
4
|
+
import { ApiResult } from './api.result.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./api.result.service";
|
|
7
|
+
// tslint:disable:variable-name
|
|
8
|
+
export class LoggingInterceptor {
|
|
9
|
+
set enabled(enabled) {
|
|
10
|
+
this._enabled = enabled;
|
|
11
|
+
if (this._enabled && this._outputToConsole) {
|
|
12
|
+
console.warn('API logging enabled but no provider found for ApiResultService. Results will be output to the console.');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
constructor(apiResultService) {
|
|
16
|
+
this.apiResultService = apiResultService;
|
|
17
|
+
this._enabled = false;
|
|
18
|
+
this._outputToConsole = !this.apiResultService;
|
|
19
|
+
}
|
|
20
|
+
intercept(req, next) {
|
|
21
|
+
if (!this._enabled) {
|
|
22
|
+
return next.handle(req);
|
|
23
|
+
}
|
|
24
|
+
const started = new Date();
|
|
25
|
+
let succeeded;
|
|
26
|
+
return next.handle(req)
|
|
27
|
+
.pipe(tap(event => succeeded = event instanceof HttpResponse ? true : false, error => succeeded = false), finalize(() => {
|
|
28
|
+
if (this._outputToConsole) {
|
|
29
|
+
console.log(`${req.method} ${req.urlWithParams} completed in ${Date.now() - started.getTime()} ms. Success: ${succeeded}`);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.apiResultService.add(new ApiResult(`${req.method} ${req.urlWithParams}`, succeeded, started, new Date()));
|
|
33
|
+
}
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LoggingInterceptor, deps: [{ token: i1.ApiResultService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LoggingInterceptor }); }
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LoggingInterceptor, decorators: [{
|
|
40
|
+
type: Injectable
|
|
41
|
+
}], ctorParameters: () => [{ type: i1.ApiResultService, decorators: [{
|
|
42
|
+
type: Optional
|
|
43
|
+
}] }] });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjZC9zZGsvc3JjL2NsaWVudC9jbGllbnQvbG9nZ2luZy5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBRVEsWUFBWSxFQUMxQixNQUFNLHNCQUFzQixDQUFDO0FBRzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFvQixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRW5FLCtCQUErQjtBQUUvQixNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLElBQUksT0FBTyxDQUFDLE9BQWdCO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLHlHQUF5RyxDQUFDLENBQUM7UUFDMUgsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFnQyxnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVIxRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBU3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxTQUFrQixDQUFDO1FBRXZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDcEIsSUFBSSxDQUNILEdBQUcsQ0FDRCxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsR0FBRyxLQUFLLFlBQVksWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFDakUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUMzQixFQUNELFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsYUFBYSxpQkFBaUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDOUgsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxhQUFhLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQzs4R0FwQ1Usa0JBQWtCO2tIQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7OzBCQVdJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSHR0cEV2ZW50LCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBIYW5kbGVyLFxuICBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwaVJlc3VsdFNlcnZpY2UsIEFwaVJlc3VsdCB9IGZyb20gJy4vYXBpLnJlc3VsdC5zZXJ2aWNlJztcblxuLy8gdHNsaW50OmRpc2FibGU6dmFyaWFibGUtbmFtZVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ2dpbmdJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIHByaXZhdGUgX291dHB1dFRvQ29uc29sZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZW5hYmxlZCA9IGZhbHNlO1xuICBzZXQgZW5hYmxlZChlbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgaWYgKHRoaXMuX2VuYWJsZWQgJiYgdGhpcy5fb3V0cHV0VG9Db25zb2xlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0FQSSBsb2dnaW5nIGVuYWJsZWQgYnV0IG5vIHByb3ZpZGVyIGZvdW5kIGZvciBBcGlSZXN1bHRTZXJ2aWNlLiAgUmVzdWx0cyB3aWxsIGJlIG91dHB1dCB0byB0aGUgY29uc29sZS4nKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIGFwaVJlc3VsdFNlcnZpY2U6IEFwaVJlc3VsdFNlcnZpY2UpIHtcbiAgICB0aGlzLl9vdXRwdXRUb0NvbnNvbGUgPSAhdGhpcy5hcGlSZXN1bHRTZXJ2aWNlO1xuICB9XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgaWYgKCF0aGlzLl9lbmFibGVkKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydGVkID0gbmV3IERhdGUoKTtcbiAgICBsZXQgc3VjY2VlZGVkOiBib29sZWFuO1xuXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoXG4gICAgICAgICAgZXZlbnQgPT4gc3VjY2VlZGVkID0gZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgZXJyb3IgPT4gc3VjY2VlZGVkID0gZmFsc2VcbiAgICAgICAgKSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9vdXRwdXRUb0NvbnNvbGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3JlcS5tZXRob2R9ICR7cmVxLnVybFdpdGhQYXJhbXN9IGNvbXBsZXRlZCBpbiAke0RhdGUubm93KCkgLSBzdGFydGVkLmdldFRpbWUoKX0gbXMuICBTdWNjZXNzOiAke3N1Y2NlZWRlZH1gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hcGlSZXN1bHRTZXJ2aWNlLmFkZChuZXcgQXBpUmVzdWx0KGAke3JlcS5tZXRob2R9ICR7cmVxLnVybFdpdGhQYXJhbXN9YCwgc3VjY2VlZGVkLCBzdGFydGVkLCBuZXcgRGF0ZSgpKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpResponse } from '@angular/common/http';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import { parseHeaderHateoasLinks } from '.';
|
|
5
|
+
import { HTTP_HEADERS } from './constants';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
// tslint:disable:variable-name
|
|
8
|
+
export class RequestHeadersInterceptor {
|
|
9
|
+
constructor() {
|
|
10
|
+
this._enabled = true;
|
|
11
|
+
this._version = '';
|
|
12
|
+
this._authenticationHeader = HTTP_HEADERS.Authorization;
|
|
13
|
+
}
|
|
14
|
+
set enabled(_enabled) {
|
|
15
|
+
this._enabled = _enabled;
|
|
16
|
+
}
|
|
17
|
+
set actAs(_actAs) {
|
|
18
|
+
this._actAs = _actAs;
|
|
19
|
+
}
|
|
20
|
+
set actAsOrgName(_actAsOrgName) {
|
|
21
|
+
this._actAsOrgName = _actAsOrgName;
|
|
22
|
+
}
|
|
23
|
+
get version() {
|
|
24
|
+
return this._version;
|
|
25
|
+
}
|
|
26
|
+
set version(_version) {
|
|
27
|
+
this._version = _version;
|
|
28
|
+
}
|
|
29
|
+
set authentication(_authentication) {
|
|
30
|
+
this._authentication = _authentication;
|
|
31
|
+
this._authenticationHeader = (this._authentication && this._authentication.length > 32) ?
|
|
32
|
+
HTTP_HEADERS.Authorization : HTTP_HEADERS.x_vcloud_authorization;
|
|
33
|
+
}
|
|
34
|
+
intercept(req, next) {
|
|
35
|
+
let headers = req.headers;
|
|
36
|
+
if (!headers.has('Accept')) {
|
|
37
|
+
headers = this.setAcceptHeader(headers);
|
|
38
|
+
}
|
|
39
|
+
if (!headers.has('Content-Type')) {
|
|
40
|
+
headers = this.setContentTypeHeader(headers, req.url);
|
|
41
|
+
}
|
|
42
|
+
if (this._authentication && !headers.has(HTTP_HEADERS.Authorization)) {
|
|
43
|
+
headers = headers.set(this._authenticationHeader, this._authentication);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Covers the case where the User set the ActAs token himself
|
|
47
|
+
*/
|
|
48
|
+
if (!headers.has('X-VMWARE-VCLOUD-TENANT-CONTEXT') && this._actAs) {
|
|
49
|
+
headers = headers.set('X-VMWARE-VCLOUD-TENANT-CONTEXT', this._actAs);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Covers the case where the User set the ActAs token himself
|
|
53
|
+
*/
|
|
54
|
+
if (!headers.has('X-VMWARE-VCLOUD-AUTH-CONTEXT') && this._actAsOrgName) {
|
|
55
|
+
headers = headers.set('X-VMWARE-VCLOUD-AUTH-CONTEXT', this._actAsOrgName);
|
|
56
|
+
}
|
|
57
|
+
const customReq = req.clone({
|
|
58
|
+
headers
|
|
59
|
+
});
|
|
60
|
+
return next.handle(customReq).pipe(map((res) => {
|
|
61
|
+
if (res instanceof HttpResponse) {
|
|
62
|
+
if (!res.body || !res.headers) {
|
|
63
|
+
return res;
|
|
64
|
+
}
|
|
65
|
+
if (res.headers.has(HTTP_HEADERS.link)) {
|
|
66
|
+
res.body.link = parseHeaderHateoasLinks(res.headers.get(HTTP_HEADERS.link));
|
|
67
|
+
}
|
|
68
|
+
if (res.headers.has(HTTP_HEADERS.Link)) {
|
|
69
|
+
res.body.link = parseHeaderHateoasLinks(res.headers.get(HTTP_HEADERS.Link));
|
|
70
|
+
}
|
|
71
|
+
if (res.headers.has(HTTP_HEADERS.etag)) {
|
|
72
|
+
res.body.etag = res.headers.get(HTTP_HEADERS.etag);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return res;
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
setAcceptHeader(headers) {
|
|
79
|
+
const value = headers.get('_multisite');
|
|
80
|
+
headers = headers.delete('_multisite');
|
|
81
|
+
return headers.set('Accept', [
|
|
82
|
+
`application/*+json;version=${this._version}${value ? `;multisite=${value}` : ''}`,
|
|
83
|
+
`application/json;version=${this._version}${value ? `;multisite=${value}` : ''}`
|
|
84
|
+
]);
|
|
85
|
+
}
|
|
86
|
+
setContentTypeHeader(headers, url) {
|
|
87
|
+
if (url.indexOf('cloudapi') > -1) {
|
|
88
|
+
return headers.set('Content-Type', 'application/json');
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
return headers.set('Content-Type', 'application/*+json');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RequestHeadersInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
95
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RequestHeadersInterceptor }); }
|
|
96
|
+
}
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RequestHeadersInterceptor, decorators: [{
|
|
98
|
+
type: Injectable
|
|
99
|
+
}] });
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5oZWFkZXJzLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmNkL3Nkay9zcmMvY2xpZW50L2NsaWVudC9yZXF1ZXN0LmhlYWRlcnMuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZILE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFM0MsK0JBQStCO0FBRS9CLE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFWSxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBZWhCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFRZCwwQkFBcUIsR0FBVyxZQUFZLENBQUMsYUFBYSxDQUFDO0tBb0Z0RTtJQTFHRyxJQUFJLE9BQU8sQ0FBQyxRQUFpQjtRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBR0QsSUFBSSxLQUFLLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBR0QsSUFBSSxZQUFZLENBQUMsYUFBcUI7UUFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUdELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsUUFBZ0I7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUlELElBQUksY0FB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bXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCwgSHR0cEV2ZW50LCBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgcGFyc2VIZWFkZXJIYXRlb2FzTGlua3MgfSBmcm9tICcuJztcbmltcG9ydCB7IEhUVFBfSEVBREVSUyB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuLy8gdHNsaW50OmRpc2FibGU6dmFyaWFibGUtbmFtZVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICAgIHByaXZhdGUgX2VuYWJsZWQgPSB0cnVlO1xuICAgIHNldCBlbmFibGVkKF9lbmFibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2VuYWJsZWQgPSBfZW5hYmxlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hY3RBczogc3RyaW5nO1xuICAgIHNldCBhY3RBcyhfYWN0QXM6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hY3RBcyA9IF9hY3RBcztcbiAgICB9XG4gICAgXG4gICAgcHJpdmF0ZSBfYWN0QXNPcmdOYW1lOiBzdHJpbmc7XG4gICAgc2V0IGFjdEFzT3JnTmFtZShfYWN0QXNPcmdOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYWN0QXNPcmdOYW1lID0gX2FjdEFzT3JnTmFtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92ZXJzaW9uID0gJyc7XG4gICAgZ2V0IHZlcnNpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247XG4gICAgfVxuICAgIHNldCB2ZXJzaW9uKF92ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdmVyc2lvbiA9IF92ZXJzaW9uO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2F1dGhlbnRpY2F0aW9uSGVhZGVyOiBzdHJpbmcgPSBIVFRQX0hFQURFUlMuQXV0aG9yaXphdGlvbjtcbiAgICBwcml2YXRlIF9hdXRoZW50aWNhdGlvbjogc3RyaW5nO1xuICAgIHNldCBhdXRoZW50aWNhdGlvbihfYXV0aGVudGljYXRpb246IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvbiA9IF9hdXRoZW50aWNhdGlvbjtcbiAgICAgICAgdGhpcy5fYXV0aGVudGljYXRpb25IZWFkZXIgPSAodGhpcy5fYXV0aGVudGljYXRpb24gJiYgdGhpcy5fYXV0aGVudGljYXRpb24ubGVuZ3RoID4gMzIpID9cbiAgICAgICAgICAgIEhUVFBfSEVBREVSUy5BdXRob3JpemF0aW9uIDogSFRUUF9IRUFERVJTLnhfdmNsb3VkX2F1dGhvcml6YXRpb247XG4gICAgfVxuXG4gICAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgICAgIGxldCBoZWFkZXJzID0gcmVxLmhlYWRlcnM7XG5cbiAgICAgICAgaWYgKCFoZWFkZXJzLmhhcygnQWNjZXB0JykpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSB0aGlzLnNldEFjY2VwdEhlYWRlcihoZWFkZXJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaGVhZGVycy5oYXMoJ0NvbnRlbnQtVHlwZScpKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gdGhpcy5zZXRDb250ZW50VHlwZUhlYWRlcihoZWFkZXJzLCByZXEudXJsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9hdXRoZW50aWNhdGlvbiAmJiAhaGVhZGVycy5oYXMoSFRUUF9IRUFERVJTLkF1dGhvcml6YXRpb24pKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQodGhpcy5fYXV0aGVudGljYXRpb25IZWFkZXIsIHRoaXMuX2F1dGhlbnRpY2F0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb3ZlcnMgdGhlIGNhc2Ugd2hlcmUgdGhlIFVzZXIgc2V0IHRoZSBBY3RBcyB0b2tlbiBoaW1zZWxmXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoIWhlYWRlcnMuaGFzKCdYLVZNV0FSRS1WQ0xPVUQtVEVOQU5ULUNPTlRFWFQnKSAmJiB0aGlzLl9hY3RBcykge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdYLVZNV0FSRS1WQ0xPVUQtVEVOQU5ULUNPTlRFWFQnLCB0aGlzLl9hY3RBcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQ292ZXJzIHRoZSBjYXNlIHdoZXJlIHRoZSBVc2VyIHNldCB0aGUgQWN0QXMgdG9rZW4gaGltc2VsZlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKCFoZWFkZXJzLmhhcygnWC1WTVdBUkUtVkNMT1VELUFVVEgtQ09OVEVYVCcpICYmIHRoaXMuX2FjdEFzT3JnTmFtZSkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdYLVZNV0FSRS1WQ0xPVUQtQVVUSC1DT05URVhUJywgdGhpcy5fYWN0QXNPcmdOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1c3RvbVJlcTogSHR0cFJlcXVlc3Q8YW55PiA9IHJlcS5jbG9uZSh7XG4gICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShjdXN0b21SZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlczogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzIGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzLmJvZHkgfHwgIXJlcy5oZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5oZWFkZXJzLmhhcyhIVFRQX0hFQURFUlMubGluaykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5ib2R5LmxpbmsgPSBwYXJzZUhlYWRlckhhdGVvYXNMaW5rcyhyZXMuaGVhZGVycy5nZXQoSFRUUF9IRUFERVJTLmxpbmspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuaGVhZGVycy5oYXMoSFRUUF9IRUFERVJTLkxpbmspKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMuYm9keS5saW5rID0gcGFyc2VIZWFkZXJIYXRlb2FzTGlua3MocmVzLmhlYWRlcnMuZ2V0KEhUVFBfSEVBREVSUy5MaW5rKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmhlYWRlcnMuaGFzKEhUVFBfSEVBREVSUy5ldGFnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmJvZHkuZXRhZyA9IHJlcy5oZWFkZXJzLmdldChIVFRQX0hFQURFUlMuZXRhZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRBY2NlcHRIZWFkZXIoaGVhZGVyczogSHR0cEhlYWRlcnMpOiBIdHRwSGVhZGVycyB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaGVhZGVycy5nZXQoJ19tdWx0aXNpdGUnKTtcbiAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuZGVsZXRlKCdfbXVsdGlzaXRlJyk7XG5cbiAgICAgICAgcmV0dXJuIGhlYWRlcnMuc2V0KFxuICAgICAgICAgICAgJ0FjY2VwdCcsIFtcbiAgICAgICAgICAgICAgICBgYXBwbGljYXRpb24vKitqc29uO3ZlcnNpb249JHt0aGlzLl92ZXJzaW9ufSR7dmFsdWUgPyBgO211bHRpc2l0ZT0ke3ZhbHVlfWAgOiAnJ31gLFxuICAgICAgICAgICAgICAgIGBhcHBsaWNhdGlvbi9qc29uO3ZlcnNpb249JHt0aGlzLl92ZXJzaW9ufSR7dmFsdWUgPyBgO211bHRpc2l0ZT0ke3ZhbHVlfWAgOiAnJ31gXG4gICAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDb250ZW50VHlwZUhlYWRlcihoZWFkZXJzOiBIdHRwSGVhZGVycywgdXJsOiBzdHJpbmcpOiBIdHRwSGVhZGVycyB7XG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignY2xvdWRhcGknKSA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi8qK2pzb24nKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpResponse } from '@angular/common/http';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
// tslint:disable:jsdoc-format
|
|
6
|
+
/**
|
|
7
|
+
* An interceptor on the response chain that normalizes differences in
|
|
8
|
+
* JSON payloads between vCloud Director version 9.1 and versions
|
|
9
|
+
* greater than 9.1.
|
|
10
|
+
*
|
|
11
|
+
* In 9.1 (API version 30.0) the server serializes JSON and nests the payload in a value field:
|
|
12
|
+
* ```
|
|
13
|
+
{
|
|
14
|
+
"name" : "{http://www.vmware.com/vcloud/versions}SupportedVersions",
|
|
15
|
+
"declaredType" : "com.vmware.vcloud.api.rest.schema.versioning.SupportedVersionsType",
|
|
16
|
+
"scope" : "javax.xml.bind.JAXBElement$GlobalScope",
|
|
17
|
+
"value" : {
|
|
18
|
+
"versionInfo" : [],
|
|
19
|
+
"any" : [],
|
|
20
|
+
"otherAttributes" : {}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
*
|
|
25
|
+
* That same request in API versions 31.0 and above is represented as:
|
|
26
|
+
* ```
|
|
27
|
+
{
|
|
28
|
+
"versionInfo" : [],
|
|
29
|
+
"any" : [],
|
|
30
|
+
"otherAttributes" : {}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
* This interceptor should process responses before any other interceptors that rely
|
|
34
|
+
* on consistent API information.
|
|
35
|
+
*/
|
|
36
|
+
export class ResponseNormalizationInterceptor {
|
|
37
|
+
static { this.QUERY_RESULT_TYPE = 'com.vmware.vcloud.api.rest.schema_v1_5.QueryResultRecordsType'; }
|
|
38
|
+
intercept(req, next) {
|
|
39
|
+
return next.handle(req).pipe(map(response => {
|
|
40
|
+
// While this condition seems awfully specific, the alternative option of examining the 'Content-Type'
|
|
41
|
+
// response header for 'version=30.0' proved to be an unreliable condition in at least one case;
|
|
42
|
+
// returning the same JSON payload as API versions >= 31.0.
|
|
43
|
+
if (response instanceof HttpResponse && response.body && response.body.value && response.body.declaredType && response.body.scope) {
|
|
44
|
+
const body = response.body.value;
|
|
45
|
+
if (response.body.declaredType === ResponseNormalizationInterceptor.QUERY_RESULT_TYPE) {
|
|
46
|
+
body.record = body.record.map(record => record.value);
|
|
47
|
+
}
|
|
48
|
+
return response.clone({ body });
|
|
49
|
+
}
|
|
50
|
+
return response;
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ResponseNormalizationInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
54
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ResponseNormalizationInterceptor }); }
|
|
55
|
+
}
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ResponseNormalizationInterceptor, decorators: [{
|
|
57
|
+
type: Injectable
|
|
58
|
+
}] });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2Uubm9ybWFsaXphdGlvbi5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjZC9zZGsvc3JjL2NsaWVudC9jbGllbnQvcmVzcG9uc2Uubm9ybWFsaXphdGlvbi5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBd0QsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHMUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUVyQyw4QkFBOEI7QUFDOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBRUgsTUFBTSxPQUFPLGdDQUFnQzthQUNuQixzQkFBaUIsR0FBRywrREFBK0QsQUFBbEUsQ0FBbUU7SUFFNUcsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFDaEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDMUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2Isc0dBQXNHO1lBQ3RHLGdHQUFnRztZQUNoRywyREFBMkQ7WUFDM0QsSUFBSSxRQUFRLFlBQVksWUFBWSxJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbEksTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2pDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssZ0NBQWdDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDdEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztnQkFFRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs4R0FyQlUsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0M7OzJGQUFoQyxnQ0FBZ0M7a0JBRDVDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBJbnRlcmNlcHRvciwgSHR0cEhhbmRsZXIsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLy8gdHNsaW50OmRpc2FibGU6anNkb2MtZm9ybWF0XG4vKipcbiAqIEFuIGludGVyY2VwdG9yIG9uIHRoZSByZXNwb25zZSBjaGFpbiB0aGF0IG5vcm1hbGl6ZXMgZGlmZmVyZW5jZXMgaW5cbiAqIEpTT04gcGF5bG9hZHMgYmV0d2VlbiB2Q2xvdWQgRGlyZWN0b3IgdmVyc2lvbiA5LjEgYW5kIHZlcnNpb25zXG4gKiBncmVhdGVyIHRoYW4gOS4xLlxuICpcbiAqIEluIDkuMSAoQVBJIHZlcnNpb24gMzAuMCkgdGhlIHNlcnZlciBzZXJpYWxpemVzIEpTT04gYW5kIG5lc3RzIHRoZSBwYXlsb2FkIGluIGEgdmFsdWUgZmllbGQ6XG4gKiBgYGBcbiAge1xuICAgIFwibmFtZVwiIDogXCJ7aHR0cDovL3d3dy52bXdhcmUuY29tL3ZjbG91ZC92ZXJzaW9uc31TdXBwb3J0ZWRWZXJzaW9uc1wiLFxuICAgIFwiZGVjbGFyZWRUeXBlXCIgOiBcImNvbS52bXdhcmUudmNsb3VkLmFwaS5yZXN0LnNjaGVtYS52ZXJzaW9uaW5nLlN1cHBvcnRlZFZlcnNpb25zVHlwZVwiLFxuICAgIFwic2NvcGVcIiA6IFwiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGVcIixcbiAgICBcInZhbHVlXCIgOiB7XG4gICAgICBcInZlcnNpb25JbmZvXCIgOiBbXSxcbiAgICAgIFwiYW55XCIgOiBbXSxcbiAgICAgIFwib3RoZXJBdHRyaWJ1dGVzXCIgOiB7fVxuICAgIH1cbiAgfVxuICBgYGBcbiAqXG4gKiBUaGF0IHNhbWUgcmVxdWVzdCBpbiBBUEkgdmVyc2lvbnMgMzEuMCBhbmQgYWJvdmUgaXMgcmVwcmVzZW50ZWQgYXM6XG4gKiBgYGBcbiAge1xuICAgIFwidmVyc2lvbkluZm9cIiA6IFtdLFxuICAgIFwiYW55XCIgOiBbXSxcbiAgICBcIm90aGVyQXR0cmlidXRlc1wiIDoge31cbiAgfVxuICBgYGBcbiAqIFRoaXMgaW50ZXJjZXB0b3Igc2hvdWxkIHByb2Nlc3MgcmVzcG9uc2VzIGJlZm9yZSBhbnkgb3RoZXIgaW50ZXJjZXB0b3JzIHRoYXQgcmVseVxuICogb24gY29uc2lzdGVudCBBUEkgaW5mb3JtYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZXNwb25zZU5vcm1hbGl6YXRpb25JbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFFVRVJZX1JFU1VMVF9UWVBFID0gJ2NvbS52bXdhcmUudmNsb3VkLmFwaS5yZXN0LnNjaGVtYV92MV81LlF1ZXJ5UmVzdWx0UmVjb3Jkc1R5cGUnO1xuXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUoXG4gICAgICBtYXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAvLyBXaGlsZSB0aGlzIGNvbmRpdGlvbiBzZWVtcyBhd2Z1bGx5IHNwZWNpZmljLCB0aGUgYWx0ZXJuYXRpdmUgb3B0aW9uIG9mIGV4YW1pbmluZyB0aGUgJ0NvbnRlbnQtVHlwZSdcbiAgICAgICAgLy8gcmVzcG9uc2UgaGVhZGVyIGZvciAndmVyc2lvbj0zMC4wJyBwcm92ZWQgdG8gYmUgYW4gdW5yZWxpYWJsZSBjb25kaXRpb24gaW4gYXQgbGVhc3Qgb25lIGNhc2U7XG4gICAgICAgIC8vIHJldHVybmluZyB0aGUgc2FtZSBKU09OIHBheWxvYWQgYXMgQVBJIHZlcnNpb25zID49IDMxLjAuXG4gICAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSAmJiByZXNwb25zZS5ib2R5ICYmIHJlc3BvbnNlLmJvZHkudmFsdWUgJiYgcmVzcG9uc2UuYm9keS5kZWNsYXJlZFR5cGUgJiYgcmVzcG9uc2UuYm9keS5zY29wZSkge1xuICAgICAgICAgIGNvbnN0IGJvZHkgPSByZXNwb25zZS5ib2R5LnZhbHVlO1xuICAgICAgICAgIGlmIChyZXNwb25zZS5ib2R5LmRlY2xhcmVkVHlwZSA9PT0gUmVzcG9uc2VOb3JtYWxpemF0aW9uSW50ZXJjZXB0b3IuUVVFUllfUkVTVUxUX1RZUEUpIHtcbiAgICAgICAgICAgIGJvZHkucmVjb3JkID0gYm9keS5yZWNvcmQubWFwKHJlY29yZCA9PiByZWNvcmQudmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXNwb25zZS5jbG9uZSh7IGJvZHkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|