@vcd/sdk 0.13.0 → 15.0.0-alpha.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/client/client/api.result.service.d.ts +20 -0
- package/client/client/constants.d.ts +10 -0
- package/client/client/index.d.ts +7 -0
- package/client/client/logging.interceptor.d.ts +14 -0
- package/client/client/request.headers.interceptor.d.ts +20 -0
- package/client/client/response.normalization.interceptor.d.ts +39 -0
- package/client/client/vcd.api.client.d.ts +351 -0
- package/client/client/vcd.http.client.d.ts +32 -0
- package/client/client/vcd.transfer.client.d.ts +121 -0
- package/client/container-hooks/index.d.ts +58 -0
- package/client/index.d.ts +2 -0
- package/client/openapi.d.ts +76 -0
- package/client/query/filter.builder.d.ts +162 -0
- package/client/query/index.d.ts +2 -0
- package/client/query/query.builder.d.ts +30 -0
- package/common/container-hooks.d.ts +2 -2
- package/core/plugin.module.d.ts +10 -5
- package/esm2020/client/client/api.result.service.mjs +43 -0
- package/esm2020/client/client/constants.mjs +13 -0
- package/esm2020/client/client/index.mjs +8 -0
- package/esm2020/client/client/logging.interceptor.mjs +44 -0
- package/esm2020/client/client/request.headers.interceptor.mjs +91 -0
- package/esm2020/client/client/response.normalization.interceptor.mjs +59 -0
- package/esm2020/client/client/vcd.api.client.mjs +602 -0
- package/esm2020/client/client/vcd.http.client.mjs +52 -0
- package/esm2020/client/client/vcd.transfer.client.mjs +166 -0
- package/esm2020/client/container-hooks/index.mjs +57 -0
- package/esm2020/client/index.mjs +3 -0
- package/esm2020/client/openapi.mjs +16 -0
- package/esm2020/client/query/filter.builder.mjs +195 -0
- package/esm2020/client/query/index.mjs +3 -0
- package/esm2020/client/query/query.builder.mjs +79 -0
- package/esm2020/common/container-hooks.mjs +74 -0
- package/esm2020/common/index.mjs +2 -0
- package/esm2020/core/index.mjs +2 -0
- package/esm2020/core/plugin.module.mjs +18 -0
- package/esm2020/main.mjs +45 -0
- package/esm2020/public-api.mjs +8 -0
- package/esm2020/vcd-sdk.mjs +5 -0
- package/fesm2015/vcd-sdk.mjs +1513 -0
- package/fesm2015/vcd-sdk.mjs.map +1 -0
- package/fesm2020/vcd-sdk.mjs +1508 -0
- package/fesm2020/vcd-sdk.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/main.d.ts +11 -5
- package/package.json +30 -39
- package/public-api.d.ts +1 -1
- package/vcd-sdk-15.0.0-alpha.0.tgz +0 -0
- package/LICENSE.txt +0 -12
- package/README.md +0 -119
- package/bundles/vcd-sdk.umd.js +0 -810
- package/bundles/vcd-sdk.umd.js.map +0 -1
- package/bundles/vcd-sdk.umd.min.js +0 -16
- package/bundles/vcd-sdk.umd.min.js.map +0 -1
- package/esm2015/common/container-hooks.js +0 -219
- package/esm2015/common/index.js +0 -6
- package/esm2015/core/index.js +0 -6
- package/esm2015/core/plugin.module.js +0 -53
- package/esm2015/i18n/index.js +0 -8
- package/esm2015/i18n/translate.pipe.js +0 -92
- package/esm2015/i18n/translate.service.js +0 -229
- package/esm2015/i18n/translation.loader.js +0 -63
- package/esm2015/main.js +0 -37
- package/esm2015/public-api.js +0 -12
- package/esm2015/vcd-sdk.js +0 -10
- package/esm5/common/container-hooks.js +0 -266
- package/esm5/common/index.js +0 -6
- package/esm5/core/index.js +0 -6
- package/esm5/core/plugin.module.js +0 -64
- package/esm5/i18n/index.js +0 -8
- package/esm5/i18n/translate.pipe.js +0 -108
- package/esm5/i18n/translate.service.js +0 -280
- package/esm5/i18n/translation.loader.js +0 -68
- package/esm5/main.js +0 -41
- package/esm5/public-api.js +0 -12
- package/esm5/vcd-sdk.js +0 -10
- package/fesm2015/vcd-sdk.js +0 -511
- package/fesm2015/vcd-sdk.js.map +0 -1
- package/fesm5/vcd-sdk.js +0 -620
- package/fesm5/vcd-sdk.js.map +0 -1
- package/i18n/index.d.ts +0 -3
- package/i18n/translate.pipe.d.ts +0 -12
- package/i18n/translate.service.d.ts +0 -21
- package/i18n/translation.loader.d.ts +0 -11
- package/schematics/collection.json +0 -10
- package/schematics/ng-add/index.d.ts +0 -3
- package/schematics/ng-add/index.js +0 -101
- package/schematics/ng-add/index.ts +0 -134
- package/schematics/ng-add/schema.d.ts +0 -8
- package/schematics/ng-add/schema.json +0 -19
- package/vcd-sdk.d.ts +0 -5
- package/vcd-sdk.metadata.json +0 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity reference used to describe VCD entities
|
|
3
|
+
*/
|
|
4
|
+
export declare class EntityReference {
|
|
5
|
+
'name': string;
|
|
6
|
+
'id': string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Session
|
|
10
|
+
*/
|
|
11
|
+
export declare class Session {
|
|
12
|
+
/**
|
|
13
|
+
* ID of session
|
|
14
|
+
*/
|
|
15
|
+
'id': string;
|
|
16
|
+
/**
|
|
17
|
+
* User of this session
|
|
18
|
+
*/
|
|
19
|
+
'user': EntityReference;
|
|
20
|
+
/**
|
|
21
|
+
* Organization user is logged into for this session
|
|
22
|
+
*/
|
|
23
|
+
'org': EntityReference;
|
|
24
|
+
/**
|
|
25
|
+
* The accessible location this session is valid for
|
|
26
|
+
*/
|
|
27
|
+
'location': string;
|
|
28
|
+
/**
|
|
29
|
+
* User's roles for this session
|
|
30
|
+
*/
|
|
31
|
+
'roles': Array<string>;
|
|
32
|
+
/**
|
|
33
|
+
* References to user's roles
|
|
34
|
+
*/
|
|
35
|
+
'roleRefs': Array<EntityReference>;
|
|
36
|
+
/**
|
|
37
|
+
* The session idle timeout in minutes
|
|
38
|
+
*/
|
|
39
|
+
'sessionIdleTimeoutMinutes': number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A list of locations accessible to this session.
|
|
43
|
+
*/
|
|
44
|
+
export interface AccessibleLocations {
|
|
45
|
+
/**
|
|
46
|
+
* How many results there are in total (i.e., considering all pages).
|
|
47
|
+
*/
|
|
48
|
+
resultTotal?: number;
|
|
49
|
+
/**
|
|
50
|
+
* How many pages there are in total.
|
|
51
|
+
*/
|
|
52
|
+
pageCount?: number;
|
|
53
|
+
/**
|
|
54
|
+
* The page that was fetched, 1-indexed.
|
|
55
|
+
*/
|
|
56
|
+
page?: number;
|
|
57
|
+
/**
|
|
58
|
+
* Result count for page that was fetched.
|
|
59
|
+
*/
|
|
60
|
+
pageSize?: number;
|
|
61
|
+
/**
|
|
62
|
+
* The current page of accessible locations.
|
|
63
|
+
*/
|
|
64
|
+
values?: Array<AccessibleLocation>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A location accessible to this session.
|
|
68
|
+
*/
|
|
69
|
+
export declare class AccessibleLocation {
|
|
70
|
+
'locationId': string;
|
|
71
|
+
'site': EntityReference;
|
|
72
|
+
'org': EntityReference;
|
|
73
|
+
'restApiEndpoint': string;
|
|
74
|
+
'uiEndpoint': string;
|
|
75
|
+
'apiVersion': string;
|
|
76
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
export declare namespace Filter {
|
|
2
|
+
/**
|
|
3
|
+
* Collection of strategies for wilcard string matching.
|
|
4
|
+
*/
|
|
5
|
+
class MatchMode {
|
|
6
|
+
/**
|
|
7
|
+
* Match the start of a string.
|
|
8
|
+
*/
|
|
9
|
+
static readonly START: string;
|
|
10
|
+
/**
|
|
11
|
+
* Match the end of a string.
|
|
12
|
+
*/
|
|
13
|
+
static readonly END: string;
|
|
14
|
+
/**
|
|
15
|
+
* Match anywhere in the string.
|
|
16
|
+
*/
|
|
17
|
+
static readonly ANYWHERE: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A filter item that can define a comparison/condition.
|
|
21
|
+
*/
|
|
22
|
+
interface Property {
|
|
23
|
+
/**
|
|
24
|
+
* Create a filter condition to evaluate whether the property is equal to the specified value.
|
|
25
|
+
*
|
|
26
|
+
* @param value the pattern to evaluate
|
|
27
|
+
* @param moreValues optional additional patterns to evaluate that will be treated as an OR condition
|
|
28
|
+
* @returns an evaluatable filter condition
|
|
29
|
+
*/
|
|
30
|
+
equalTo(value: (boolean | number | string), ...moreValues: (boolean | number | string)[]): CompleteCondition;
|
|
31
|
+
/**
|
|
32
|
+
* Create a filter condition to evaluate whether the property is not equal to the specified value.
|
|
33
|
+
*
|
|
34
|
+
* @param value the pattern to evaluate
|
|
35
|
+
* @returns an evaluatable filter condition
|
|
36
|
+
*/
|
|
37
|
+
notEqualTo(value: (boolean | number | string)): CompleteCondition;
|
|
38
|
+
/**
|
|
39
|
+
* Create a filter condition to evaluate whether the property is less than the specified value.
|
|
40
|
+
*
|
|
41
|
+
* @param value the pattern to evaluate
|
|
42
|
+
* @returns an evaluatable filter condition
|
|
43
|
+
*/
|
|
44
|
+
lessThan(value: number): CompleteCondition;
|
|
45
|
+
/**
|
|
46
|
+
* Create a filter condition to evaluate whether the property is less than or equal to the specified value.
|
|
47
|
+
*
|
|
48
|
+
* @param value the pattern to evaluate
|
|
49
|
+
* @returns an evaluatable filter condition
|
|
50
|
+
*/
|
|
51
|
+
lessOrEqualTo(value: number): CompleteCondition;
|
|
52
|
+
/**
|
|
53
|
+
* Create a filter condition to evaluate whether the property is greater than the specified value.
|
|
54
|
+
*
|
|
55
|
+
* @param value the pattern to evaluate
|
|
56
|
+
* @returns an evaluatable filter condition
|
|
57
|
+
*/
|
|
58
|
+
greaterThan(value: number): CompleteCondition;
|
|
59
|
+
/**
|
|
60
|
+
* Create a filter condition to evaluate whether the property is greater than or equal to the specified value.
|
|
61
|
+
*
|
|
62
|
+
* @param value the pattern to evaluate
|
|
63
|
+
* @returns an evaluatable filter condition
|
|
64
|
+
*/
|
|
65
|
+
greaterOrEqualTo(value: number): CompleteCondition;
|
|
66
|
+
/**
|
|
67
|
+
* Create a filter condition to evaluate whether the property is a wildcard match with the specified value.
|
|
68
|
+
*
|
|
69
|
+
* @param value the pattern to evaluate
|
|
70
|
+
* @param mode the type of wildcard evaluation to perform
|
|
71
|
+
* @returns an evaluatable filter condition
|
|
72
|
+
*/
|
|
73
|
+
like(value: string, mode: MatchMode): CompleteCondition;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* A representation of a condition that is incomplete by itself, like an empty condition, aggregation wrapper, or junction.
|
|
77
|
+
*/
|
|
78
|
+
interface PartialCondition {
|
|
79
|
+
/**
|
|
80
|
+
* Create a simple property to be evaulated as a filter condition.
|
|
81
|
+
*
|
|
82
|
+
* @param property the name of the property
|
|
83
|
+
* @returns a Property instance for defining a filter condition
|
|
84
|
+
*/
|
|
85
|
+
is(property: string): Property;
|
|
86
|
+
/**
|
|
87
|
+
* Create a conjunction (AND) condition from existing conditions.
|
|
88
|
+
*
|
|
89
|
+
* @param condition1 first condition
|
|
90
|
+
* @param condition2 second condition
|
|
91
|
+
* @param conditionN any additional conditions
|
|
92
|
+
* @returns an evaluatable filter condition
|
|
93
|
+
*/
|
|
94
|
+
and(condition1: CompleteCondition, condition2: CompleteCondition, conditionN?: CompleteCondition[]): CompleteCondition;
|
|
95
|
+
/**
|
|
96
|
+
* Create a disjunction (OR) condition from existing conditions.
|
|
97
|
+
*
|
|
98
|
+
* @param condition1 first condition
|
|
99
|
+
* @param condition2 second condition
|
|
100
|
+
* @param conditionN any additional conditions
|
|
101
|
+
* @returns an evaluatable filter condition
|
|
102
|
+
*/
|
|
103
|
+
or(condition1: CompleteCondition, condition2: CompleteCondition, conditionN?: CompleteCondition[]): CompleteCondition;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* An evaluatable filter condition.
|
|
107
|
+
*/
|
|
108
|
+
interface CompleteCondition {
|
|
109
|
+
/**
|
|
110
|
+
* Add a condtion to this condition.
|
|
111
|
+
*
|
|
112
|
+
* This new condition will be ANDed to the existing condition.
|
|
113
|
+
*
|
|
114
|
+
* @returns an incomplete (empty) condition
|
|
115
|
+
*/
|
|
116
|
+
and(): PartialCondition;
|
|
117
|
+
/**
|
|
118
|
+
* Add a condtion to this condition.
|
|
119
|
+
*
|
|
120
|
+
* This new condition will be ORed to the existing condition.
|
|
121
|
+
*
|
|
122
|
+
* @returns an incomplete (empty) condition
|
|
123
|
+
*/
|
|
124
|
+
or(): PartialCondition;
|
|
125
|
+
/**
|
|
126
|
+
* Build the FIQL representation of the condition.
|
|
127
|
+
*
|
|
128
|
+
* @returns a FIQL string
|
|
129
|
+
*/
|
|
130
|
+
query(): string;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Builds a FIQL search condition using a fluent interface.
|
|
134
|
+
*/
|
|
135
|
+
class Builder implements PartialCondition {
|
|
136
|
+
/**
|
|
137
|
+
* Create a simple property to be evaulated as a filter condition.
|
|
138
|
+
*
|
|
139
|
+
* @param property the name of the property
|
|
140
|
+
* @returns a Property instance for defining a filter condition
|
|
141
|
+
*/
|
|
142
|
+
is(property: string): Property;
|
|
143
|
+
/**
|
|
144
|
+
* Create a conjunction (AND) condition from existing conditions.
|
|
145
|
+
*
|
|
146
|
+
* @param condition1 first condition
|
|
147
|
+
* @param condition2 second condition
|
|
148
|
+
* @param conditionN any additional conditions
|
|
149
|
+
* @returns an evaluatable filter condition
|
|
150
|
+
*/
|
|
151
|
+
and(condition1: CompleteCondition, condition2: CompleteCondition, conditionN?: CompleteCondition[]): CompleteCondition;
|
|
152
|
+
/**
|
|
153
|
+
* Create a disjunction (OR) condition from existing conditions.
|
|
154
|
+
*
|
|
155
|
+
* @param condition1 first condition
|
|
156
|
+
* @param condition2 second condition
|
|
157
|
+
* @param conditionN any additional conditions
|
|
158
|
+
* @returns an evaluatable filter condition
|
|
159
|
+
*/
|
|
160
|
+
or(condition1: CompleteCondition, condition2: CompleteCondition, conditionN?: CompleteCondition[]): CompleteCondition;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare namespace Query {
|
|
2
|
+
class Builder {
|
|
3
|
+
private _type;
|
|
4
|
+
private _format;
|
|
5
|
+
private _links;
|
|
6
|
+
private _pageSize;
|
|
7
|
+
private _fields;
|
|
8
|
+
private _filter;
|
|
9
|
+
private _sort;
|
|
10
|
+
private constructor();
|
|
11
|
+
static getBuilder(): Builder;
|
|
12
|
+
static ofType(type: string): Builder;
|
|
13
|
+
format(format: Query.Format): Builder;
|
|
14
|
+
links(links: boolean): Builder;
|
|
15
|
+
pageSize(pageSize: number): Builder;
|
|
16
|
+
fields(...fields: string[]): Builder;
|
|
17
|
+
filter(filter: string): Builder;
|
|
18
|
+
sort(...sort: {
|
|
19
|
+
field: string;
|
|
20
|
+
reverse?: boolean;
|
|
21
|
+
}[]): Builder;
|
|
22
|
+
get(): string;
|
|
23
|
+
getCloudAPI(): string;
|
|
24
|
+
}
|
|
25
|
+
class Format {
|
|
26
|
+
static readonly ID_RECORDS: string;
|
|
27
|
+
static readonly RECORDS: string;
|
|
28
|
+
static readonly REFERENCES: string;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -67,7 +67,7 @@ export interface ExtensionNavRegistrationAction {
|
|
|
67
67
|
payload: ExtensionNavRegistration;
|
|
68
68
|
readonly type: string;
|
|
69
69
|
}
|
|
70
|
-
export
|
|
70
|
+
export type ExtensionNavRegistrationActionCtor = new (payload: ExtensionNavRegistration) => ExtensionNavRegistrationAction;
|
|
71
71
|
export declare const ExtensionNavRegistrationAction: ExtensionNavRegistrationActionCtor;
|
|
72
72
|
/**
|
|
73
73
|
* Inject this to access the authentication token.
|
|
@@ -118,7 +118,7 @@ export interface EntityActionExtensionSubmenu {
|
|
|
118
118
|
/**
|
|
119
119
|
* This represents menu information for an entity action.
|
|
120
120
|
*/
|
|
121
|
-
export
|
|
121
|
+
export type EntityActionExtensionMenuEntry = EntityActionExtensionMenuItem | EntityActionExtensionSubmenu;
|
|
122
122
|
/**
|
|
123
123
|
* Every component referenced by an entity action extension point must inherit from this.
|
|
124
124
|
*/
|
package/core/plugin.module.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { Store } from '@ngrx/store';
|
|
2
2
|
import { ExtensionNavRegistration } from '../common';
|
|
3
|
-
import { TranslateService } from '../i18n';
|
|
4
3
|
export declare class PluginModule {
|
|
5
4
|
private appStore;
|
|
6
|
-
|
|
7
|
-
constructor(appStore: Store<any>, translate?: TranslateService);
|
|
5
|
+
constructor(appStore: Store<any>);
|
|
8
6
|
protected registerExtension(extension: ExtensionNavRegistration): void;
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Config object that is passed on VcdSdkModule init
|
|
10
|
+
* using .forRoot() method. It can be used to store
|
|
11
|
+
* configutration properties that are later used by the Services
|
|
12
|
+
* provided.
|
|
13
|
+
*/
|
|
14
|
+
export declare class VcdSdkConfig {
|
|
15
|
+
apiVersion: string;
|
|
11
16
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
// tslint:disable:variable-name
|
|
4
|
+
export class ApiResultService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this._results = [];
|
|
7
|
+
}
|
|
8
|
+
get results() {
|
|
9
|
+
return this._results;
|
|
10
|
+
}
|
|
11
|
+
add(result) {
|
|
12
|
+
this._results = [result, ...this._results.slice(0, 99)];
|
|
13
|
+
}
|
|
14
|
+
clear() {
|
|
15
|
+
this._results = [];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
ApiResultService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ApiResultService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
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: [{
|
|
21
|
+
type: Injectable
|
|
22
|
+
}] });
|
|
23
|
+
export class ApiResult {
|
|
24
|
+
get message() {
|
|
25
|
+
return this._message;
|
|
26
|
+
}
|
|
27
|
+
get succeeded() {
|
|
28
|
+
return this._succeeded;
|
|
29
|
+
}
|
|
30
|
+
get started() {
|
|
31
|
+
return this._started;
|
|
32
|
+
}
|
|
33
|
+
get finished() {
|
|
34
|
+
return this._finished;
|
|
35
|
+
}
|
|
36
|
+
constructor(message, succeeded, started, finished) {
|
|
37
|
+
this._message = message;
|
|
38
|
+
this._succeeded = succeeded;
|
|
39
|
+
this._started = started;
|
|
40
|
+
this._finished = finished;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnJlc3VsdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmNkL3Nkay9zcmMvY2xpZW50L2NsaWVudC9hcGkucmVzdWx0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0MsK0JBQStCO0FBRS9CLE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFWSxhQUFRLEdBQWdCLEVBQUUsQ0FBQztLQVl0QztJQVhHLElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQWlCO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OzZHQVpRLGdCQUFnQjtpSEFBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVU7O0FBZ0JYLE1BQU0sT0FBTyxTQUFTO0lBRWxCLElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBR0QsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBR0QsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFHRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVksT0FBZSxFQUFFLFNBQWtCLEVBQUUsT0FBYSxFQUFFLFFBQWM7UUFDMUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDOUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTp2YXJpYWJsZS1uYW1lXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXBpUmVzdWx0U2VydmljZSB7XG4gICAgcHJpdmF0ZSBfcmVzdWx0czogQXBpUmVzdWx0W10gPSBbXTtcbiAgICBwdWJsaWMgZ2V0IHJlc3VsdHMoKTogQXBpUmVzdWx0W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzdWx0cztcbiAgICB9XG5cbiAgICBhZGQocmVzdWx0OiBBcGlSZXN1bHQpIHtcbiAgICAgICAgdGhpcy5fcmVzdWx0cyA9IFtyZXN1bHQsIC4uLnRoaXMuX3Jlc3VsdHMuc2xpY2UoMCwgOTkpXTtcbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5fcmVzdWx0cyA9IFtdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaVJlc3VsdCB7XG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogc3RyaW5nO1xuICAgIHB1YmxpYyBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVzc2FnZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdWNjZWVkZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIGdldCBzdWNjZWVkZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWNjZWVkZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3RhcnRlZDogRGF0ZTtcbiAgICBwdWJsaWMgZ2V0IHN0YXJ0ZWQoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFydGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpbmlzaGVkOiBEYXRlO1xuICAgIHB1YmxpYyBnZXQgZmluaXNoZWQoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hlZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN1Y2NlZWRlZDogYm9vbGVhbiwgc3RhcnRlZDogRGF0ZSwgZmluaXNoZWQ6IERhdGUpIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIHRoaXMuX3N1Y2NlZWRlZCA9IHN1Y2NlZWRlZDtcbiAgICAgICAgdGhpcy5fc3RhcnRlZCA9IHN0YXJ0ZWQ7XG4gICAgICAgIHRoaXMuX2ZpbmlzaGVkID0gZmluaXNoZWQ7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Headers
|
|
3
|
+
*/
|
|
4
|
+
export const HTTP_HEADERS = Object.freeze({
|
|
5
|
+
Authorization: 'Authorization',
|
|
6
|
+
etag: 'etag',
|
|
7
|
+
// Angular is dealing with case sensitive links despite the specification
|
|
8
|
+
// https://github.com/angular/angular/issues/6142
|
|
9
|
+
link: 'link',
|
|
10
|
+
Link: 'Link',
|
|
11
|
+
x_vcloud_authorization: 'x-vcloud-authorization'
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmNkL3Nkay9zcmMvY2xpZW50L2NsaWVudC9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUV0QyxhQUFhLEVBQUUsZUFBZTtJQUU5QixJQUFJLEVBQUUsTUFBTTtJQUVaLHlFQUF5RTtJQUN6RSxpREFBaUQ7SUFDakQsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUVaLHNCQUFzQixFQUFFLHdCQUF3QjtDQUNuRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEhUVFAgSGVhZGVyc1xuICovXG5leHBvcnQgY29uc3QgSFRUUF9IRUFERVJTID0gT2JqZWN0LmZyZWV6ZSh7XG5cbiAgICBBdXRob3JpemF0aW9uOiAnQXV0aG9yaXphdGlvbicsXG5cbiAgICBldGFnOiAnZXRhZycsXG5cbiAgICAvLyBBbmd1bGFyIGlzIGRlYWxpbmcgd2l0aCBjYXNlIHNlbnNpdGl2ZSBsaW5rcyBkZXNwaXRlIHRoZSBzcGVjaWZpY2F0aW9uXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNjE0MlxuICAgIGxpbms6ICdsaW5rJyxcbiAgICBMaW5rOiAnTGluaycsXG5cbiAgICB4X3ZjbG91ZF9hdXRob3JpemF0aW9uOiAneC12Y2xvdWQtYXV0aG9yaXphdGlvbidcbn0pO1xuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './api.result.service';
|
|
2
|
+
export * from './vcd.http.client';
|
|
3
|
+
export * from './vcd.api.client';
|
|
4
|
+
export * from './vcd.transfer.client';
|
|
5
|
+
export * from './request.headers.interceptor';
|
|
6
|
+
export * from './logging.interceptor';
|
|
7
|
+
export * from './response.normalization.interceptor';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92Y2Qvc2RrL3NyYy9jbGllbnQvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwaS5yZXN1bHQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZjZC5odHRwLmNsaWVudCc7XG5leHBvcnQgKiBmcm9tICcuL3ZjZC5hcGkuY2xpZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdmNkLnRyYW5zZmVyLmNsaWVudCc7XG5leHBvcnQgKiBmcm9tICcuL3JlcXVlc3QuaGVhZGVycy5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xvZ2dpbmcuaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNwb25zZS5ub3JtYWxpemF0aW9uLmludGVyY2VwdG9yJztcbiJdfQ==
|
|
@@ -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
|
+
}
|
|
37
|
+
LoggingInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: LoggingInterceptor, deps: [{ token: i1.ApiResultService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
38
|
+
LoggingInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: LoggingInterceptor });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: LoggingInterceptor, decorators: [{
|
|
40
|
+
type: Injectable
|
|
41
|
+
}], ctorParameters: function () { return [{ type: i1.ApiResultService, decorators: [{
|
|
42
|
+
type: Optional
|
|
43
|
+
}] }]; } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjZC9zZGsvc3JjL2NsaWVudC9jbGllbnQvbG9nZ2luZy5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBRVEsWUFBWSxFQUMxQixNQUFNLHNCQUFzQixDQUFDO0FBRzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFvQixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRW5FLCtCQUErQjtBQUUvQixNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLElBQUksT0FBTyxDQUFDLE9BQWdCO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyx5R0FBeUcsQ0FBQyxDQUFDO1NBQ3pIO0lBQ0gsQ0FBQztJQUVELFlBQWdDLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBUjFELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFTdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pELENBQUM7SUFFRCxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksU0FBa0IsQ0FBQztRQUV2QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ3BCLElBQUksQ0FDSCxHQUFHLENBQ0QsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxZQUFZLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQ2pFLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FDM0IsRUFDRCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxhQUFhLGlCQUFpQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUM3SDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNoSDtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDOzsrR0FwQ1Usa0JBQWtCO21IQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVTs7MEJBV0ksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwRXZlbnQsIEh0dHBJbnRlcmNlcHRvciwgSHR0cEhhbmRsZXIsXG4gIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2Vcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBpUmVzdWx0U2VydmljZSwgQXBpUmVzdWx0IH0gZnJvbSAnLi9hcGkucmVzdWx0LnNlcnZpY2UnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTp2YXJpYWJsZS1uYW1lXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTG9nZ2luZ0ludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgcHJpdmF0ZSBfb3V0cHV0VG9Db25zb2xlOiBib29sZWFuO1xuICBwcml2YXRlIF9lbmFibGVkID0gZmFsc2U7XG4gIHNldCBlbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9lbmFibGVkID0gZW5hYmxlZDtcbiAgICBpZiAodGhpcy5fZW5hYmxlZCAmJiB0aGlzLl9vdXRwdXRUb0NvbnNvbGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignQVBJIGxvZ2dpbmcgZW5hYmxlZCBidXQgbm8gcHJvdmlkZXIgZm91bmQgZm9yIEFwaVJlc3VsdFNlcnZpY2UuICBSZXN1bHRzIHdpbGwgYmUgb3V0cHV0IHRvIHRoZSBjb25zb2xlLicpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgYXBpUmVzdWx0U2VydmljZTogQXBpUmVzdWx0U2VydmljZSkge1xuICAgIHRoaXMuX291dHB1dFRvQ29uc29sZSA9ICF0aGlzLmFwaVJlc3VsdFNlcnZpY2U7XG4gIH1cblxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBpZiAoIXRoaXMuX2VuYWJsZWQpIHtcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ZWQgPSBuZXcgRGF0ZSgpO1xuICAgIGxldCBzdWNjZWVkZWQ6IGJvb2xlYW47XG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChcbiAgICAgICAgICBldmVudCA9PiBzdWNjZWVkZWQgPSBldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICBlcnJvciA9PiBzdWNjZWVkZWQgPSBmYWxzZVxuICAgICAgICApLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX291dHB1dFRvQ29uc29sZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7cmVxLm1ldGhvZH0gJHtyZXEudXJsV2l0aFBhcmFtc30gY29tcGxldGVkIGluICR7RGF0ZS5ub3coKSAtIHN0YXJ0ZWQuZ2V0VGltZSgpfSBtcy4gIFN1Y2Nlc3M6ICR7c3VjY2VlZGVkfWApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFwaVJlc3VsdFNlcnZpY2UuYWRkKG5ldyBBcGlSZXN1bHQoYCR7cmVxLm1ldGhvZH0gJHtyZXEudXJsV2l0aFBhcmFtc31gLCBzdWNjZWVkZWQsIHN0YXJ0ZWQsIG5ldyBEYXRlKCkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
get version() {
|
|
21
|
+
return this._version;
|
|
22
|
+
}
|
|
23
|
+
set version(_version) {
|
|
24
|
+
this._version = _version;
|
|
25
|
+
}
|
|
26
|
+
set authentication(_authentication) {
|
|
27
|
+
this._authentication = _authentication;
|
|
28
|
+
this._authenticationHeader = (this._authentication && this._authentication.length > 32) ?
|
|
29
|
+
HTTP_HEADERS.Authorization : HTTP_HEADERS.x_vcloud_authorization;
|
|
30
|
+
}
|
|
31
|
+
intercept(req, next) {
|
|
32
|
+
let headers = req.headers;
|
|
33
|
+
if (!headers.has('Accept')) {
|
|
34
|
+
headers = this.setAcceptHeader(headers);
|
|
35
|
+
}
|
|
36
|
+
if (!headers.has('Content-Type')) {
|
|
37
|
+
headers = this.setContentTypeHeader(headers, req.url);
|
|
38
|
+
}
|
|
39
|
+
if (this._authentication && !headers.has(HTTP_HEADERS.Authorization)) {
|
|
40
|
+
headers = headers.set(this._authenticationHeader, this._authentication);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Covers the case where the User set the ActAs token himself
|
|
44
|
+
*/
|
|
45
|
+
if (!headers.has('X-VMWARE-VCLOUD-TENANT-CONTEXT') && this._actAs) {
|
|
46
|
+
headers = headers.set('X-VMWARE-VCLOUD-TENANT-CONTEXT', this._actAs);
|
|
47
|
+
}
|
|
48
|
+
const customReq = req.clone({
|
|
49
|
+
headers
|
|
50
|
+
});
|
|
51
|
+
return next.handle(customReq).pipe(map((res) => {
|
|
52
|
+
if (res instanceof HttpResponse) {
|
|
53
|
+
if (!res.body || !res.headers) {
|
|
54
|
+
return res;
|
|
55
|
+
}
|
|
56
|
+
if (res.headers.has(HTTP_HEADERS.link)) {
|
|
57
|
+
res.body.link = parseHeaderHateoasLinks(res.headers.get(HTTP_HEADERS.link));
|
|
58
|
+
}
|
|
59
|
+
if (res.headers.has(HTTP_HEADERS.Link)) {
|
|
60
|
+
res.body.link = parseHeaderHateoasLinks(res.headers.get(HTTP_HEADERS.Link));
|
|
61
|
+
}
|
|
62
|
+
if (res.headers.has(HTTP_HEADERS.etag)) {
|
|
63
|
+
res.body.etag = res.headers.get(HTTP_HEADERS.etag);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return res;
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
setAcceptHeader(headers) {
|
|
70
|
+
const value = headers.get('_multisite');
|
|
71
|
+
headers = headers.delete('_multisite');
|
|
72
|
+
return headers.set('Accept', [
|
|
73
|
+
`application/*+json;version=${this._version}${value ? `;multisite=${value}` : ''}`,
|
|
74
|
+
`application/json;version=${this._version}${value ? `;multisite=${value}` : ''}`
|
|
75
|
+
]);
|
|
76
|
+
}
|
|
77
|
+
setContentTypeHeader(headers, url) {
|
|
78
|
+
if (url.indexOf('cloudapi') > -1) {
|
|
79
|
+
return headers.set('Content-Type', 'application/json');
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
return headers.set('Content-Type', 'application/*+json');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
RequestHeadersInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
87
|
+
RequestHeadersInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor });
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor, decorators: [{
|
|
89
|
+
type: Injectable
|
|
90
|
+
}] });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5oZWFkZXJzLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmNkL3Nkay9zcmMvY2xpZW50L2NsaWVudC9yZXF1ZXN0LmhlYWRlcnMuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZILE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFM0MsK0JBQStCO0FBRS9CLE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFWSxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBVWhCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFRZCwwQkFBcUIsR0FBVyxZQUFZLENBQUMsYUFBYSxDQUFDO0tBNkV0RTtJQTlGRyxJQUFJLE9BQU8sQ0FBQyxRQUFpQjtRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBR0QsSUFBSSxLQUFLLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBR0QsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFnQjtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBSUQsSUFBSSxjQUFjLENBQUMsZUFBdUI7UUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLHFCQUFxQixH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QyxHQUFHLENBQ2QsUUFBUSxFQUFFO1lBQ04sOEJBQThCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbEYsNEJBQTRCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7U0FDbkYsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVPLG9CQUFvQixDQUFDLE9BQW9CLEVBQUUsR0FBVztRQUMxRCxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQzFEO2FBQU07WUFDSCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLG9CQUFvQixDQUFDLENBQUM7U0FDNUQ7SUFDTCxDQUFDOztzSEEvRlEseUJBQXlCOzBIQUF6Qix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0LCBIdHRwRXZlbnQsIEh0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBwYXJzZUhlYWRlckhhdGVvYXNMaW5rcyB9IGZyb20gJy4nO1xuaW1wb3J0IHsgSFRUUF9IRUFERVJTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTp2YXJpYWJsZS1uYW1lXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gICAgcHJpdmF0ZSBfZW5hYmxlZCA9IHRydWU7XG4gICAgc2V0IGVuYWJsZWQoX2VuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZW5hYmxlZCA9IF9lbmFibGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FjdEFzOiBzdHJpbmc7XG4gICAgc2V0IGFjdEFzKF9hY3RBczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2FjdEFzID0gX2FjdEFzO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZlcnNpb24gPSAnJztcbiAgICBnZXQgdmVyc2lvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmVyc2lvbjtcbiAgICB9XG4gICAgc2V0IHZlcnNpb24oX3ZlcnNpb246IHN0cmluZykge1xuICAgICAgICB0aGlzLl92ZXJzaW9uID0gX3ZlcnNpb247XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXV0aGVudGljYXRpb25IZWFkZXI6IHN0cmluZyA9IEhUVFBfSEVBREVSUy5BdXRob3JpemF0aW9uO1xuICAgIHByaXZhdGUgX2F1dGhlbnRpY2F0aW9uOiBzdHJpbmc7XG4gICAgc2V0IGF1dGhlbnRpY2F0aW9uKF9hdXRoZW50aWNhdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uID0gX2F1dGhlbnRpY2F0aW9uO1xuICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvbkhlYWRlciA9ICh0aGlzLl9hdXRoZW50aWNhdGlvbiAmJiB0aGlzLl9hdXRoZW50aWNhdGlvbi5sZW5ndGggPiAzMikgP1xuICAgICAgICAgICAgSFRUUF9IRUFERVJTLkF1dGhvcml6YXRpb24gOiBIVFRQX0hFQURFUlMueF92Y2xvdWRfYXV0aG9yaXphdGlvbjtcbiAgICB9XG5cbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAgICAgbGV0IGhlYWRlcnMgPSByZXEuaGVhZGVycztcblxuICAgICAgICBpZiAoIWhlYWRlcnMuaGFzKCdBY2NlcHQnKSkge1xuICAgICAgICAgICAgaGVhZGVycyA9IHRoaXMuc2V0QWNjZXB0SGVhZGVyKGhlYWRlcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoZWFkZXJzLmhhcygnQ29udGVudC1UeXBlJykpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSB0aGlzLnNldENvbnRlbnRUeXBlSGVhZGVyKGhlYWRlcnMsIHJlcS51cmwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2F1dGhlbnRpY2F0aW9uICYmICFoZWFkZXJzLmhhcyhIVFRQX0hFQURFUlMuQXV0aG9yaXphdGlvbikpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlYWRlciwgdGhpcy5fYXV0aGVudGljYXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvdmVycyB0aGUgY2FzZSB3aGVyZSB0aGUgVXNlciBzZXQgdGhlIEFjdEFzIHRva2VuIGhpbXNlbGZcbiAgICAgICAgICovXG4gICAgICAgIGlmICghaGVhZGVycy5oYXMoJ1gtVk1XQVJFLVZDTE9VRC1URU5BTlQtQ09OVEVYVCcpICYmIHRoaXMuX2FjdEFzKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtVk1XQVJFLVZDTE9VRC1URU5BTlQtQ09OVEVYVCcsIHRoaXMuX2FjdEFzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1c3RvbVJlcTogSHR0cFJlcXVlc3Q8YW55PiA9IHJlcS5jbG9uZSh7XG4gICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShjdXN0b21SZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlczogSHR0cEV2ZW50PGFueT4pID0+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
|
+
intercept(req, next) {
|
|
38
|
+
return next.handle(req).pipe(map(response => {
|
|
39
|
+
// While this condition seems awfully specific, the alternative option of examining the 'Content-Type'
|
|
40
|
+
// response header for 'version=30.0' proved to be an unreliable condition in at least one case;
|
|
41
|
+
// returning the same JSON payload as API versions >= 31.0.
|
|
42
|
+
if (response instanceof HttpResponse && response.body && response.body.value && response.body.declaredType && response.body.scope) {
|
|
43
|
+
const body = response.body.value;
|
|
44
|
+
if (response.body.declaredType === ResponseNormalizationInterceptor.QUERY_RESULT_TYPE) {
|
|
45
|
+
body.record = body.record.map(record => record.value);
|
|
46
|
+
}
|
|
47
|
+
return response.clone({ body });
|
|
48
|
+
}
|
|
49
|
+
return response;
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
ResponseNormalizationInterceptor.QUERY_RESULT_TYPE = 'com.vmware.vcloud.api.rest.schema_v1_5.QueryResultRecordsType';
|
|
54
|
+
ResponseNormalizationInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ResponseNormalizationInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
55
|
+
ResponseNormalizationInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ResponseNormalizationInterceptor });
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ResponseNormalizationInterceptor, decorators: [{
|
|
57
|
+
type: Injectable
|
|
58
|
+
}] });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2Uubm9ybWFsaXphdGlvbi5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjZC9zZGsvc3JjL2NsaWVudC9jbGllbnQvcmVzcG9uc2Uubm9ybWFsaXphdGlvbi5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBd0QsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHMUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUVyQyw4QkFBOEI7QUFDOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBRUgsTUFBTSxPQUFPLGdDQUFnQztJQUczQyxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDYixzR0FBc0c7WUFDdEcsZ0dBQWdHO1lBQ2hHLDJEQUEyRDtZQUMzRCxJQUFJLFFBQVEsWUFBWSxZQUFZLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDakksTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2pDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssZ0NBQWdDLENBQUMsaUJBQWlCLEVBQUU7b0JBQ3JGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3ZEO2dCQUVELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDakM7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7QUFwQnVCLGtEQUFpQixHQUFHLCtEQUErRCxDQUFDOzZIQURqRyxnQ0FBZ0M7aUlBQWhDLGdDQUFnQzsyRkFBaEMsZ0NBQWdDO2tCQUQ1QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBIYW5kbGVyLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8vIHRzbGludDpkaXNhYmxlOmpzZG9jLWZvcm1hdFxuLyoqXG4gKiBBbiBpbnRlcmNlcHRvciBvbiB0aGUgcmVzcG9uc2UgY2hhaW4gdGhhdCBub3JtYWxpemVzIGRpZmZlcmVuY2VzIGluXG4gKiBKU09OIHBheWxvYWRzIGJldHdlZW4gdkNsb3VkIERpcmVjdG9yIHZlcnNpb24gOS4xIGFuZCB2ZXJzaW9uc1xuICogZ3JlYXRlciB0aGFuIDkuMS5cbiAqXG4gKiBJbiA5LjEgKEFQSSB2ZXJzaW9uIDMwLjApIHRoZSBzZXJ2ZXIgc2VyaWFsaXplcyBKU09OIGFuZCBuZXN0cyB0aGUgcGF5bG9hZCBpbiBhIHZhbHVlIGZpZWxkOlxuICogYGBgXG4gIHtcbiAgICBcIm5hbWVcIiA6IFwie2h0dHA6Ly93d3cudm13YXJlLmNvbS92Y2xvdWQvdmVyc2lvbnN9U3VwcG9ydGVkVmVyc2lvbnNcIixcbiAgICBcImRlY2xhcmVkVHlwZVwiIDogXCJjb20udm13YXJlLnZjbG91ZC5hcGkucmVzdC5zY2hlbWEudmVyc2lvbmluZy5TdXBwb3J0ZWRWZXJzaW9uc1R5cGVcIixcbiAgICBcInNjb3BlXCIgOiBcImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlXCIsXG4gICAgXCJ2YWx1ZVwiIDoge1xuICAgICAgXCJ2ZXJzaW9uSW5mb1wiIDogW10sXG4gICAgICBcImFueVwiIDogW10sXG4gICAgICBcIm90aGVyQXR0cmlidXRlc1wiIDoge31cbiAgICB9XG4gIH1cbiAgYGBgXG4gKlxuICogVGhhdCBzYW1lIHJlcXVlc3QgaW4gQVBJIHZlcnNpb25zIDMxLjAgYW5kIGFib3ZlIGlzIHJlcHJlc2VudGVkIGFzOlxuICogYGBgXG4gIHtcbiAgICBcInZlcnNpb25JbmZvXCIgOiBbXSxcbiAgICBcImFueVwiIDogW10sXG4gICAgXCJvdGhlckF0dHJpYnV0ZXNcIiA6IHt9XG4gIH1cbiAgYGBgXG4gKiBUaGlzIGludGVyY2VwdG9yIHNob3VsZCBwcm9jZXNzIHJlc3BvbnNlcyBiZWZvcmUgYW55IG90aGVyIGludGVyY2VwdG9ycyB0aGF0IHJlbHlcbiAqIG9uIGNvbnNpc3RlbnQgQVBJIGluZm9ybWF0aW9uLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVzcG9uc2VOb3JtYWxpemF0aW9uSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBRVUVSWV9SRVNVTFRfVFlQRSA9ICdjb20udm13YXJlLnZjbG91ZC5hcGkucmVzdC5zY2hlbWFfdjFfNS5RdWVyeVJlc3VsdFJlY29yZHNUeXBlJztcblxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKFxuICAgICAgbWFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgLy8gV2hpbGUgdGhpcyBjb25kaXRpb24gc2VlbXMgYXdmdWxseSBzcGVjaWZpYywgdGhlIGFsdGVybmF0aXZlIG9wdGlvbiBvZiBleGFtaW5pbmcgdGhlICdDb250ZW50LVR5cGUnXG4gICAgICAgIC8vIHJlc3BvbnNlIGhlYWRlciBmb3IgJ3ZlcnNpb249MzAuMCcgcHJvdmVkIHRvIGJlIGFuIHVucmVsaWFibGUgY29uZGl0aW9uIGluIGF0IGxlYXN0IG9uZSBjYXNlO1xuICAgICAgICAvLyByZXR1cm5pbmcgdGhlIHNhbWUgSlNPTiBwYXlsb2FkIGFzIEFQSSB2ZXJzaW9ucyA+PSAzMS4wLlxuICAgICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UgJiYgcmVzcG9uc2UuYm9keSAmJiByZXNwb25zZS5ib2R5LnZhbHVlICYmIHJlc3BvbnNlLmJvZHkuZGVjbGFyZWRUeXBlICYmIHJlc3BvbnNlLmJvZHkuc2NvcGUpIHtcbiAgICAgICAgICBjb25zdCBib2R5ID0gcmVzcG9uc2UuYm9keS52YWx1ZTtcbiAgICAgICAgICBpZiAocmVzcG9uc2UuYm9keS5kZWNsYXJlZFR5cGUgPT09IFJlc3BvbnNlTm9ybWFsaXphdGlvbkludGVyY2VwdG9yLlFVRVJZX1JFU1VMVF9UWVBFKSB7XG4gICAgICAgICAgICBib2R5LnJlY29yZCA9IGJvZHkucmVjb3JkLm1hcChyZWNvcmQgPT4gcmVjb3JkLnZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuY2xvbmUoeyBib2R5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|