ng2-rest 13.2.4 → 13.2.6
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 +135 -135
- package/assets/shared/shared_folder_info.txt +1 -1
- package/browser/README.md +24 -24
- package/browser/esm2020/lib/content-type.mjs +12 -12
- package/browser/esm2020/lib/cookie.mjs +28 -28
- package/browser/esm2020/lib/helpers.mjs +23 -23
- package/browser/esm2020/lib/index.mjs +12 -12
- package/browser/esm2020/lib/mapping.mjs +238 -238
- package/browser/esm2020/lib/models.mjs +160 -165
- package/browser/esm2020/lib/other/simple-resource.mjs +116 -116
- package/browser/esm2020/lib/params.mjs +278 -278
- package/browser/esm2020/lib/request-cache.mjs +100 -100
- package/browser/esm2020/lib/resource.service.mjs +213 -213
- package/browser/esm2020/lib/rest-headers.mjs +128 -128
- package/browser/esm2020/lib/rest-request.mjs +321 -321
- package/browser/esm2020/lib/rest.class.mjs +115 -115
- package/browser/esm2020/ng2-rest.mjs +4 -4
- package/browser/esm2020/public-api.mjs +1 -1
- package/browser/fesm2015/ng2-rest.mjs +1677 -1683
- package/browser/fesm2015/ng2-rest.mjs.map +1 -1
- package/browser/fesm2020/ng2-rest.mjs +1675 -1681
- package/browser/fesm2020/ng2-rest.mjs.map +1 -1
- package/browser/lib/content-type.d.ts +4 -4
- package/browser/lib/cookie.d.ts +7 -7
- package/browser/lib/helpers.d.ts +10 -10
- package/browser/lib/index.d.ts +9 -9
- package/browser/lib/mapping.d.ts +12 -12
- package/browser/lib/models.d.ts +157 -157
- package/browser/lib/other/simple-resource.d.ts +29 -29
- package/browser/lib/params.d.ts +23 -23
- package/browser/lib/request-cache.d.ts +17 -17
- package/browser/lib/resource.service.d.ts +43 -43
- package/browser/lib/rest-headers.d.ts +57 -57
- package/browser/lib/rest-request.d.ts +21 -21
- package/browser/lib/rest.class.d.ts +36 -36
- package/browser/ng2-rest.d.ts +4 -4
- package/client/README.md +24 -24
- package/client/esm2020/lib/content-type.mjs +12 -12
- package/client/esm2020/lib/cookie.mjs +28 -28
- package/client/esm2020/lib/helpers.mjs +23 -23
- package/client/esm2020/lib/index.mjs +12 -12
- package/client/esm2020/lib/mapping.mjs +238 -238
- package/client/esm2020/lib/models.mjs +160 -165
- package/client/esm2020/lib/other/simple-resource.mjs +116 -116
- package/client/esm2020/lib/params.mjs +278 -278
- package/client/esm2020/lib/request-cache.mjs +100 -100
- package/client/esm2020/lib/resource.service.mjs +213 -213
- package/client/esm2020/lib/rest-headers.mjs +128 -128
- package/client/esm2020/lib/rest-request.mjs +321 -321
- package/client/esm2020/lib/rest.class.mjs +115 -115
- package/client/esm2020/ng2-rest.mjs +4 -4
- package/client/esm2020/public-api.mjs +1 -1
- package/client/fesm2015/ng2-rest.mjs +1677 -1683
- package/client/fesm2015/ng2-rest.mjs.map +1 -1
- package/client/fesm2020/ng2-rest.mjs +1675 -1681
- package/client/fesm2020/ng2-rest.mjs.map +1 -1
- package/client/lib/content-type.d.ts +4 -4
- package/client/lib/cookie.d.ts +7 -7
- package/client/lib/helpers.d.ts +10 -10
- package/client/lib/index.d.ts +9 -9
- package/client/lib/mapping.d.ts +12 -12
- package/client/lib/models.d.ts +157 -157
- package/client/lib/other/simple-resource.d.ts +29 -29
- package/client/lib/params.d.ts +23 -23
- package/client/lib/request-cache.d.ts +17 -17
- package/client/lib/resource.service.d.ts +43 -43
- package/client/lib/rest-headers.d.ts +57 -57
- package/client/lib/rest-request.d.ts +21 -21
- package/client/lib/rest.class.d.ts +36 -36
- package/client/ng2-rest.d.ts +4 -4
- package/client/package.json +44 -44
- package/index.d.ts +1 -1
- package/lib/content-type.d.ts +5 -5
- package/lib/cookie.d.ts +8 -8
- package/lib/helpers.d.ts +11 -11
- package/lib/index.d.ts +10 -10
- package/lib/mapping.d.ts +13 -13
- package/lib/models.d.ts +158 -158
- package/lib/models.js +5 -12
- package/lib/models.js.map +1 -1
- package/lib/other/simple-resource.d.ts +30 -30
- package/lib/params.d.ts +24 -24
- package/lib/request-cache.d.ts +18 -18
- package/lib/resource.service.d.ts +44 -44
- package/lib/rest-headers.d.ts +58 -58
- package/lib/rest-request.d.ts +22 -22
- package/lib/rest.class.d.ts +37 -37
- package/package.json +5 -238
- package/package.json_devDependencies.json +217 -217
- package/package.json_tnp.json5 +50 -50
- package/tmp-environment.json +48 -48
- package/websql/README.md +24 -24
- package/websql/esm2020/lib/content-type.mjs +12 -12
- package/websql/esm2020/lib/cookie.mjs +28 -28
- package/websql/esm2020/lib/helpers.mjs +23 -23
- package/websql/esm2020/lib/index.mjs +12 -12
- package/websql/esm2020/lib/mapping.mjs +238 -238
- package/websql/esm2020/lib/models.mjs +160 -165
- package/websql/esm2020/lib/other/simple-resource.mjs +116 -116
- package/websql/esm2020/lib/params.mjs +278 -278
- package/websql/esm2020/lib/request-cache.mjs +100 -100
- package/websql/esm2020/lib/resource.service.mjs +213 -213
- package/websql/esm2020/lib/rest-headers.mjs +128 -128
- package/websql/esm2020/lib/rest-request.mjs +321 -321
- package/websql/esm2020/lib/rest.class.mjs +115 -115
- package/websql/esm2020/ng2-rest.mjs +4 -4
- package/websql/esm2020/public-api.mjs +1 -1
- package/websql/fesm2015/ng2-rest.mjs +1677 -1683
- package/websql/fesm2015/ng2-rest.mjs.map +1 -1
- package/websql/fesm2020/ng2-rest.mjs +1675 -1681
- package/websql/fesm2020/ng2-rest.mjs.map +1 -1
- package/websql/lib/content-type.d.ts +4 -4
- package/websql/lib/cookie.d.ts +7 -7
- package/websql/lib/helpers.d.ts +10 -10
- package/websql/lib/index.d.ts +9 -9
- package/websql/lib/mapping.d.ts +12 -12
- package/websql/lib/models.d.ts +157 -157
- package/websql/lib/other/simple-resource.d.ts +29 -29
- package/websql/lib/params.d.ts +23 -23
- package/websql/lib/request-cache.d.ts +17 -17
- package/websql/lib/resource.service.d.ts +43 -43
- package/websql/lib/rest-headers.d.ts +57 -57
- package/websql/lib/rest-request.d.ts +21 -21
- package/websql/lib/rest.class.d.ts +36 -36
- package/websql/ng2-rest.d.ts +4 -4
|
@@ -1,129 +1,129 @@
|
|
|
1
|
-
export class RestHeaders {
|
|
2
|
-
constructor(headers) {
|
|
3
|
-
/** @internal header names are lower case */
|
|
4
|
-
this._headers = new Map();
|
|
5
|
-
/** @internal map lower case names to actual names */
|
|
6
|
-
this._normalizedNames = new Map();
|
|
7
|
-
if (headers instanceof RestHeaders) {
|
|
8
|
-
headers.forEach((values, name) => {
|
|
9
|
-
values.forEach(value => this.set(name, value));
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
Object.keys(headers).forEach((name) => {
|
|
14
|
-
const values = (Array.isArray(headers[name]) ? headers[name] : [headers[name]]);
|
|
15
|
-
this.delete(name);
|
|
16
|
-
values.forEach(value => this.set(name, value));
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
static from(headers) {
|
|
21
|
-
if (!headers) {
|
|
22
|
-
return void 0;
|
|
23
|
-
}
|
|
24
|
-
return new RestHeaders(headers);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Returns a new RestHeaders instance from the given DOMString of Response RestHeaders
|
|
28
|
-
*/
|
|
29
|
-
static fromResponseHeaderString(headersString) {
|
|
30
|
-
const headers = new RestHeaders();
|
|
31
|
-
headersString.split('\n').forEach(line => {
|
|
32
|
-
const index = line.indexOf(':');
|
|
33
|
-
if (index > 0) {
|
|
34
|
-
const name = line.slice(0, index);
|
|
35
|
-
const value = line.slice(index + 1).trim();
|
|
36
|
-
headers.set(name, value);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
return headers;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Appends a header to existing list of header values for a given header name.
|
|
43
|
-
*/
|
|
44
|
-
append(name, value) {
|
|
45
|
-
const values = this.getAll(name);
|
|
46
|
-
if (values === null) {
|
|
47
|
-
this.set(name, value);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
values.push(value);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Deletes all header values for the given name.
|
|
55
|
-
*/
|
|
56
|
-
delete(name) {
|
|
57
|
-
const lcName = name.toLowerCase();
|
|
58
|
-
this._normalizedNames.delete(lcName);
|
|
59
|
-
this._headers.delete(lcName);
|
|
60
|
-
}
|
|
61
|
-
forEach(fn) {
|
|
62
|
-
this._headers.forEach((values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Returns first header that matches given name.
|
|
66
|
-
*/
|
|
67
|
-
get(name) {
|
|
68
|
-
const values = this.getAll(name);
|
|
69
|
-
if (values === null) {
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
return values.length > 0 ? values[0] : null;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Checks for existence of header by given name.
|
|
76
|
-
*/
|
|
77
|
-
has(name) { return this._headers.has(name.toLowerCase()); }
|
|
78
|
-
/**
|
|
79
|
-
* Returns the names of the headers
|
|
80
|
-
*/
|
|
81
|
-
keys() { return Array.from(this._normalizedNames.values()); }
|
|
82
|
-
/**
|
|
83
|
-
* Sets or overrides header value for given name.
|
|
84
|
-
*/
|
|
85
|
-
set(name, value) {
|
|
86
|
-
if (Array.isArray(value)) {
|
|
87
|
-
if (value.length) {
|
|
88
|
-
this._headers.set(name.toLowerCase(), [value.join(',')]);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
this._headers.set(name.toLowerCase(), [value]);
|
|
93
|
-
}
|
|
94
|
-
this.mayBeSetNormalizedName(name);
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Returns values of all headers.
|
|
98
|
-
*/
|
|
99
|
-
values() { return Array.from(this._headers.values()); }
|
|
100
|
-
/**
|
|
101
|
-
* Returns string of all headers.
|
|
102
|
-
*/
|
|
103
|
-
toJSON() {
|
|
104
|
-
const serialized = {};
|
|
105
|
-
if (!this._headers) {
|
|
106
|
-
}
|
|
107
|
-
this._headers.forEach((values, name) => {
|
|
108
|
-
const split = [];
|
|
109
|
-
values.forEach(v => split.push(...v.split(',')));
|
|
110
|
-
serialized[this._normalizedNames.get(name)] = split;
|
|
111
|
-
});
|
|
112
|
-
return serialized;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Returns list of header values for a given name.
|
|
116
|
-
*/
|
|
117
|
-
getAll(name) {
|
|
118
|
-
return this.has(name) ? this._headers.get(name.toLowerCase()) : null;
|
|
119
|
-
}
|
|
120
|
-
mayBeSetNormalizedName(name) {
|
|
121
|
-
const lcName = name.toLowerCase();
|
|
122
|
-
if (!this._normalizedNames.has(lcName)) {
|
|
123
|
-
this._normalizedNames.set(lcName, name);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
;
|
|
128
|
-
({}); // @--end-of-file-for-module=ng2-rest lib/rest-headers.ts
|
|
1
|
+
export class RestHeaders {
|
|
2
|
+
constructor(headers) {
|
|
3
|
+
/** @internal header names are lower case */
|
|
4
|
+
this._headers = new Map();
|
|
5
|
+
/** @internal map lower case names to actual names */
|
|
6
|
+
this._normalizedNames = new Map();
|
|
7
|
+
if (headers instanceof RestHeaders) {
|
|
8
|
+
headers.forEach((values, name) => {
|
|
9
|
+
values.forEach(value => this.set(name, value));
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
Object.keys(headers).forEach((name) => {
|
|
14
|
+
const values = (Array.isArray(headers[name]) ? headers[name] : [headers[name]]);
|
|
15
|
+
this.delete(name);
|
|
16
|
+
values.forEach(value => this.set(name, value));
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
static from(headers) {
|
|
21
|
+
if (!headers) {
|
|
22
|
+
return void 0;
|
|
23
|
+
}
|
|
24
|
+
return new RestHeaders(headers);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Returns a new RestHeaders instance from the given DOMString of Response RestHeaders
|
|
28
|
+
*/
|
|
29
|
+
static fromResponseHeaderString(headersString) {
|
|
30
|
+
const headers = new RestHeaders();
|
|
31
|
+
headersString.split('\n').forEach(line => {
|
|
32
|
+
const index = line.indexOf(':');
|
|
33
|
+
if (index > 0) {
|
|
34
|
+
const name = line.slice(0, index);
|
|
35
|
+
const value = line.slice(index + 1).trim();
|
|
36
|
+
headers.set(name, value);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return headers;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Appends a header to existing list of header values for a given header name.
|
|
43
|
+
*/
|
|
44
|
+
append(name, value) {
|
|
45
|
+
const values = this.getAll(name);
|
|
46
|
+
if (values === null) {
|
|
47
|
+
this.set(name, value);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
values.push(value);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Deletes all header values for the given name.
|
|
55
|
+
*/
|
|
56
|
+
delete(name) {
|
|
57
|
+
const lcName = name.toLowerCase();
|
|
58
|
+
this._normalizedNames.delete(lcName);
|
|
59
|
+
this._headers.delete(lcName);
|
|
60
|
+
}
|
|
61
|
+
forEach(fn) {
|
|
62
|
+
this._headers.forEach((values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Returns first header that matches given name.
|
|
66
|
+
*/
|
|
67
|
+
get(name) {
|
|
68
|
+
const values = this.getAll(name);
|
|
69
|
+
if (values === null) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
return values.length > 0 ? values[0] : null;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Checks for existence of header by given name.
|
|
76
|
+
*/
|
|
77
|
+
has(name) { return this._headers.has(name.toLowerCase()); }
|
|
78
|
+
/**
|
|
79
|
+
* Returns the names of the headers
|
|
80
|
+
*/
|
|
81
|
+
keys() { return Array.from(this._normalizedNames.values()); }
|
|
82
|
+
/**
|
|
83
|
+
* Sets or overrides header value for given name.
|
|
84
|
+
*/
|
|
85
|
+
set(name, value) {
|
|
86
|
+
if (Array.isArray(value)) {
|
|
87
|
+
if (value.length) {
|
|
88
|
+
this._headers.set(name.toLowerCase(), [value.join(',')]);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this._headers.set(name.toLowerCase(), [value]);
|
|
93
|
+
}
|
|
94
|
+
this.mayBeSetNormalizedName(name);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Returns values of all headers.
|
|
98
|
+
*/
|
|
99
|
+
values() { return Array.from(this._headers.values()); }
|
|
100
|
+
/**
|
|
101
|
+
* Returns string of all headers.
|
|
102
|
+
*/
|
|
103
|
+
toJSON() {
|
|
104
|
+
const serialized = {};
|
|
105
|
+
if (!this._headers) {
|
|
106
|
+
}
|
|
107
|
+
this._headers.forEach((values, name) => {
|
|
108
|
+
const split = [];
|
|
109
|
+
values.forEach(v => split.push(...v.split(',')));
|
|
110
|
+
serialized[this._normalizedNames.get(name)] = split;
|
|
111
|
+
});
|
|
112
|
+
return serialized;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Returns list of header values for a given name.
|
|
116
|
+
*/
|
|
117
|
+
getAll(name) {
|
|
118
|
+
return this.has(name) ? this._headers.get(name.toLowerCase()) : null;
|
|
119
|
+
}
|
|
120
|
+
mayBeSetNormalizedName(name) {
|
|
121
|
+
const lcName = name.toLowerCase();
|
|
122
|
+
if (!this._normalizedNames.has(lcName)) {
|
|
123
|
+
this._normalizedNames.set(lcName, name);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
;
|
|
128
|
+
({}); // @--end-of-file-for-module=ng2-rest lib/rest-headers.ts
|
|
129
129
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1oZWFkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9uZzItcmVzdC9wcm9qZWN0cy9uZzItcmVzdC9zcmMvbGliL3Jlc3QtaGVhZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8sV0FBVztJQWN0QixZQUFvQixPQUErRDtRQWJuRiw0Q0FBNEM7UUFDNUMsYUFBUSxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzVDLHFEQUFxRDtRQUNyRCxxQkFBZ0IsR0FBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQVdoRCxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUU7WUFDbEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQWdCLEVBQUUsSUFBWSxFQUFFLEVBQUU7Z0JBQ2pELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7Z0JBQzVDLE1BQU0sTUFBTSxHQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFRLENBQUM7Z0JBQ2pHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFD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QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsSUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkUsQ0FBQztJQUVPLHNCQUFzQixDQUFDLElBQVk7UUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztDQUNGO0FBR0EsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5REFBeUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJhc2VkIG9uIEhlYWRlcnMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL2h0dHAvc3JjL2hlYWRlcnMudHNcbiAqL1xuZXhwb3J0IHR5cGUgUmVzdEhlYWRlcnNPcHRpb25zID0gUmVzdEhlYWRlcnMgfCB7IFtuYW1lOiBzdHJpbmddOiAoc3RyaW5nIHwgc3RyaW5nW10pIH1cblxuZXhwb3J0IGNsYXNzIFJlc3RIZWFkZXJzIHtcbiAgLyoqIEBpbnRlcm5hbCBoZWFkZXIgbmFtZXMgYXJlIGxvd2VyIGNhc2UgKi9cbiAgX2hlYWRlcnM6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPiA9IG5ldyBNYXAoKTtcbiAgLyoqIEBpbnRlcm5hbCBtYXAgbG93ZXIgY2FzZSBuYW1lcyB0byBhY3R1YWwgbmFtZXMgKi9cbiAgX25vcm1hbGl6ZWROYW1lczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcblxuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbShoZWFkZXJzPzogUmVzdEhlYWRlcnNPcHRpb25zKSB7XG4gICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFJlc3RIZWFkZXJzKGhlYWRlcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihoZWFkZXJzPzogUmVzdEhlYWRlcnMgfCB7IFtuYW1lOiBzdHJpbmddOiAoc3RyaW5nIHwgc3RyaW5nW10pIH0pIHtcbiAgICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIFJlc3RIZWFkZXJzKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goKHZhbHVlczogc3RyaW5nW10sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLnNldChuYW1lLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5rZXlzKGhlYWRlcnMpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZXM6IHN0cmluZ1tdID0gKEFycmF5LmlzQXJyYXkoaGVhZGVyc1tuYW1lXSkgPyBoZWFkZXJzW25hbWVdIDogW2hlYWRlcnNbbmFtZV1dKSBhcyBhbnk7XG4gICAgICAgIHRoaXMuZGVsZXRlKG5hbWUpO1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLnNldChuYW1lLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBuZXcgUmVzdEhlYWRlcnMgaW5zdGFuY2UgZnJvbSB0aGUgZ2l2ZW4gRE9NU3RyaW5nIG9mIFJlc3BvbnNlIFJlc3RIZWFkZXJzXG4gICAqL1xuICBzdGF0aWMgZnJvbVJlc3BvbnNlSGVhZGVyU3RyaW5nKGhlYWRlcnNTdHJpbmc6IHN0cmluZyk6IFJlc3RIZWFkZXJzIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IFJlc3RIZWFkZXJzKCk7XG5cblxuXG4gICAgaGVhZGVyc1N0cmluZy5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBsaW5lLnNsaWNlKDAsIGluZGV4KTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBsaW5lLnNsaWNlKGluZGV4ICsgMSkudHJpbSgpO1xuICAgICAgICBoZWFkZXJzLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIGEgaGVhZGVyIHRvIGV4aXN0aW5nIGxpc3Qgb2YgaGVhZGVyIHZhbHVlcyBmb3IgYSBnaXZlbiBoZWFkZXIgbmFtZS5cbiAgICovXG4gIGFwcGVuZChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmdldEFsbChuYW1lKTtcblxuICAgIGlmICh2YWx1ZXMgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFsbCBoZWFkZXIgdmFsdWVzIGZvciB0aGUgZ2l2ZW4gbmFtZS5cbiAgICovXG4gIGRlbGV0ZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBsY05hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5fbm9ybWFsaXplZE5hbWVzLmRlbGV0ZShsY05hbWUpO1xuICAgIHRoaXMuX2hlYWRlcnMuZGVsZXRlKGxjTmFtZSk7XG4gIH1cblxuICBmb3JFYWNoKGZuOiAodmFsdWVzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nLCBoZWFkZXJzOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkZXJzLmZvckVhY2goXG4gICAgICAodmFsdWVzLCBsY05hbWUpID0+IGZuKHZhbHVlcywgdGhpcy5fbm9ybWFsaXplZE5hbWVzLmdldChsY05hbWUpLCB0aGlzLl9oZWFkZXJzKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBmaXJzdCBoZWFkZXIgdGhhdCBtYXRjaGVzIGdpdmVuIG5hbWUuXG4gICAqL1xuICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmdldEFsbChuYW1lKTtcblxuICAgIGlmICh2YWx1ZXMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZXMubGVuZ3RoID4gMCA/IHZhbHVlc1swXSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGZvciBleGlzdGVuY2Ugb2YgaGVhZGVyIGJ5IGdpdmVuIG5hbWUuXG4gICAqL1xuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9oZWFkZXJzLmhhcyhuYW1lLnRvTG93ZXJDYXNlKCkpOyB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hbWVzIG9mIHRoZSBoZWFkZXJzXG4gICAqL1xuICBrZXlzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fbm9ybWFsaXplZE5hbWVzLnZhbHVlcygpKTsgfVxuXG4gIC8qKlxuICAgKiBTZXRzIG9yIG92ZXJyaWRlcyBoZWFkZXIgdmFsdWUgZm9yIGdpdmVuIG5hbWUuXG4gICAqL1xuICBzZXQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5faGVhZGVycy5zZXQobmFtZS50b0xvd2VyQ2FzZSgpLCBbdmFsdWUuam9pbignLCcpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2hlYWRlcnMuc2V0KG5hbWUudG9Mb3dlckNhc2UoKSwgW3ZhbHVlXSk7XG4gICAgfVxuICAgIHRoaXMubWF5QmVTZXROb3JtYWxpemVkTmFtZShuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHZhbHVlcyBvZiBhbGwgaGVhZGVycy5cbiAgICovXG4gIHZhbHVlcygpOiBzdHJpbmdbXVtdIHsgcmV0dXJuIEFycmF5LmZyb20odGhpcy5faGVhZGVycy52YWx1ZXMoKSk7IH1cblxuICAvKipcbiAgICogUmV0dXJucyBzdHJpbmcgb2YgYWxsIGhlYWRlcnMuXG4gICAqL1xuXG4gIHRvSlNPTigpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgY29uc3Qgc2VyaWFsaXplZDogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuICAgIGlmICghdGhpcy5faGVhZGVycykge1xuXG5cbiAgICB9XG5cbiAgICB0aGlzLl9oZWFkZXJzLmZvckVhY2goKHZhbHVlczogc3RyaW5nW10sIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc3BsaXQ6IHN0cmluZ1tdID0gW107XG4gICAgICB2YWx1ZXMuZm9yRWFjaCh2ID0+IHNwbGl0LnB1c2goLi4udi5zcGxpdCgnLCcpKSk7XG5cblxuXG5cbiAgICAgIHNlcmlhbGl6ZWRbdGhpcy5fbm9ybWFsaXplZE5hbWVzLmdldChuYW1lKV0gPSBzcGxpdDtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZXJpYWxpemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbGlzdCBvZiBoZWFkZXIgdmFsdWVzIGZvciBhIGdpdmVuIG5hbWUuXG4gICAqL1xuICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMuX2hlYWRlcnMuZ2V0KG5hbWUudG9Mb3dlckNhc2UoKSkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXlCZVNldE5vcm1hbGl6ZWROYW1lKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGxjTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICghdGhpcy5fbm9ybWFsaXplZE5hbWVzLmhhcyhsY05hbWUpKSB7XG4gICAgICB0aGlzLl9ub3JtYWxpemVkTmFtZXMuc2V0KGxjTmFtZSwgbmFtZSk7XG4gICAgfVxuICB9XG59XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPW5nMi1yZXN0IGxpYi9yZXN0LWhlYWRlcnMudHMiXX0=
|