@micropermit/client-angular 0.4.5-alpha1 → 0.4.5-alpha2
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/{fesm2015/micropermit-client-angular.js → fesm2022/micropermit-client-angular.mjs} +354 -1513
- package/fesm2022/micropermit-client-angular.mjs.map +1 -0
- package/{micropermit-client-angular.d.ts → index.d.ts} +1 -0
- package/lib/components/errorindicator.component.d.ts +3 -0
- package/lib/components/loadingindicator.component.d.ts +3 -0
- package/lib/directives/call-link.directive.d.ts +3 -0
- package/lib/directives/linkfield.directive.d.ts +7 -4
- package/lib/directives/micro-link-validate.directive.d.ts +3 -0
- package/lib/link-field-paging-support.d.ts +1 -1
- package/lib/microclient.module.d.ts +10 -0
- package/lib/microclient.service.d.ts +3 -0
- package/lib/pipes/linkfield.pipe.d.ts +3 -0
- package/package.json +14 -12
- package/bundles/micropermit-client-angular.umd.js +0 -3315
- package/bundles/micropermit-client-angular.umd.js.map +0 -1
- package/bundles/micropermit-client-angular.umd.min.js +0 -16
- package/bundles/micropermit-client-angular.umd.min.js.map +0 -1
- package/esm2015/lib/components/errorindicator.component.js +0 -53
- package/esm2015/lib/components/loadingindicator.component.js +0 -49
- package/esm2015/lib/directives/call-link.directive.js +0 -110
- package/esm2015/lib/directives/linkfield.directive.js +0 -363
- package/esm2015/lib/directives/micro-link-validate.directive.js +0 -141
- package/esm2015/lib/error/microerror.js +0 -27
- package/esm2015/lib/link-field-paging-support.js +0 -318
- package/esm2015/lib/links/callablelink.js +0 -265
- package/esm2015/lib/links/linkfield.js +0 -289
- package/esm2015/lib/links/mock-linkfield.js +0 -42
- package/esm2015/lib/microclient.module.js +0 -54
- package/esm2015/lib/microclient.service.js +0 -515
- package/esm2015/lib/microobject.js +0 -222
- package/esm2015/lib/paramutils.js +0 -176
- package/esm2015/lib/pipes/linkfield.pipe.js +0 -53
- package/esm2015/micropermit-client-angular.js +0 -9
- package/esm2015/public_api.js +0 -23
- package/esm5/lib/components/errorindicator.component.js +0 -36
- package/esm5/lib/components/loadingindicator.component.js +0 -19
- package/esm5/lib/directives/call-link.directive.js +0 -112
- package/esm5/lib/directives/linkfield.directive.js +0 -420
- package/esm5/lib/directives/micro-link-validate.directive.js +0 -152
- package/esm5/lib/error/microerror.js +0 -31
- package/esm5/lib/link-field-paging-support.js +0 -387
- package/esm5/lib/links/callablelink.js +0 -336
- package/esm5/lib/links/linkfield.js +0 -369
- package/esm5/lib/links/mock-linkfield.js +0 -56
- package/esm5/lib/microclient.module.js +0 -61
- package/esm5/lib/microclient.service.js +0 -616
- package/esm5/lib/microobject.js +0 -296
- package/esm5/lib/paramutils.js +0 -228
- package/esm5/lib/pipes/linkfield.pipe.js +0 -60
- package/esm5/micropermit-client-angular.js +0 -9
- package/esm5/public_api.js +0 -23
- package/fesm2015/micropermit-client-angular.js.map +0 -1
- package/fesm5/micropermit-client-angular.js +0 -3116
- package/fesm5/micropermit-client-angular.js.map +0 -1
- package/micropermit-client-angular.metadata.json +0 -1
|
@@ -1,318 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
export class LinkFieldPagingSupport {
|
|
6
|
-
/**
|
|
7
|
-
* @param {?} pageLink
|
|
8
|
-
* @param {?} changeDetectorRef
|
|
9
|
-
* @param {?=} pageLimit
|
|
10
|
-
*/
|
|
11
|
-
constructor(pageLink, changeDetectorRef, pageLimit = 200) {
|
|
12
|
-
this.pageLink = pageLink;
|
|
13
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
14
|
-
this.pageLimit = pageLimit;
|
|
15
|
-
this.sorts = null;
|
|
16
|
-
this.isLoading = false;
|
|
17
|
-
this.loadedCompletely = false;
|
|
18
|
-
this.hasLoaded = false;
|
|
19
|
-
this._rows = null;
|
|
20
|
-
this.loadingSubscription = null;
|
|
21
|
-
this.loadingCallback = (/**
|
|
22
|
-
* @return {?}
|
|
23
|
-
*/
|
|
24
|
-
() => {
|
|
25
|
-
this.setLoading(false);
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* @return {?}
|
|
30
|
-
*/
|
|
31
|
-
get rows() {
|
|
32
|
-
if (!this.hasLoaded) {
|
|
33
|
-
this.loadNextPage();
|
|
34
|
-
}
|
|
35
|
-
return this._rows;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* @param {?} pageLink
|
|
39
|
-
* @param {?} changeDetectorRef
|
|
40
|
-
* @param {?=} pageLimit
|
|
41
|
-
* @return {?}
|
|
42
|
-
*/
|
|
43
|
-
static from(pageLink, changeDetectorRef, pageLimit = 200) {
|
|
44
|
-
return new LinkFieldPagingSupport(pageLink, changeDetectorRef, pageLimit);
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* @param {?} sorts
|
|
48
|
-
* @param {?=} externalSorting
|
|
49
|
-
* @return {?}
|
|
50
|
-
*/
|
|
51
|
-
applySort(sorts, externalSorting = true) {
|
|
52
|
-
this.hasLoaded = false;
|
|
53
|
-
this.sorts = null;
|
|
54
|
-
this._rows = null;
|
|
55
|
-
if (externalSorting) {
|
|
56
|
-
this.sorts = sorts;
|
|
57
|
-
this.loadNextPage();
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
if (!this.loadedCompletely) {
|
|
61
|
-
this.loadNextPage(null);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
this.changeDetectorRef.detectChanges();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* @param {?=} pageSize
|
|
70
|
-
* @param {?=} resultCallback
|
|
71
|
-
* @return {?}
|
|
72
|
-
*/
|
|
73
|
-
loadNextPage(pageSize = this.pageLimit, resultCallback = null) {
|
|
74
|
-
if (this.pageLink && !this.isLoading) {
|
|
75
|
-
if (this.loadingSubscription) {
|
|
76
|
-
this.loadingSubscription.unsubscribe();
|
|
77
|
-
this.loadingSubscription = null;
|
|
78
|
-
}
|
|
79
|
-
this.hasLoaded = true;
|
|
80
|
-
this.loadedCompletely = false;
|
|
81
|
-
if (this._rows == null) {
|
|
82
|
-
this.setLoading(true);
|
|
83
|
-
/** @type {?} */
|
|
84
|
-
const reqOptions = {};
|
|
85
|
-
if (this.sorts != null) {
|
|
86
|
-
reqOptions.sorting = this.sorts;
|
|
87
|
-
}
|
|
88
|
-
if (pageSize != null) {
|
|
89
|
-
reqOptions.pageSize = pageSize;
|
|
90
|
-
}
|
|
91
|
-
this.loadingSubscription = this.pageLink.initWithObs(null, reqOptions).subscribe((/**
|
|
92
|
-
* @param {?} firstPage
|
|
93
|
-
* @return {?}
|
|
94
|
-
*/
|
|
95
|
-
(firstPage) => {
|
|
96
|
-
this.setRows(firstPage, resultCallback);
|
|
97
|
-
}), this.loadingCallback, this.loadingCallback);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
/** @type {?} */
|
|
101
|
-
const lastRow = this.lastRow();
|
|
102
|
-
if (lastRow) {
|
|
103
|
-
if (lastRow.__meta.nextPage) {
|
|
104
|
-
/** @type {?} */
|
|
105
|
-
let reqOptions = null;
|
|
106
|
-
if (pageSize != null) {
|
|
107
|
-
reqOptions = {
|
|
108
|
-
pageSize: pageSize
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
/** @type {?} */
|
|
112
|
-
const nextPageObs = lastRow.__meta.nextPage.initWithObs(null, reqOptions);
|
|
113
|
-
if (nextPageObs) {
|
|
114
|
-
this.setLoading(true);
|
|
115
|
-
this.loadingSubscription = nextPageObs.subscribe((/**
|
|
116
|
-
* @param {?} nextPage
|
|
117
|
-
* @return {?}
|
|
118
|
-
*/
|
|
119
|
-
(nextPage) => {
|
|
120
|
-
this.setRows(nextPage, resultCallback);
|
|
121
|
-
}), this.loadingCallback, this.loadingCallback);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
else if (!this.pageLink) {
|
|
128
|
-
this.clearRows();
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* @return {?}
|
|
133
|
-
*/
|
|
134
|
-
loadEverything() {
|
|
135
|
-
this.loadNextPage(null);
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* @private
|
|
139
|
-
* @return {?}
|
|
140
|
-
*/
|
|
141
|
-
lastRow() {
|
|
142
|
-
return this._rows[this._rows.length - 1];
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* @private
|
|
146
|
-
* @param {?} additionalPage
|
|
147
|
-
* @param {?} loadCallback
|
|
148
|
-
* @return {?}
|
|
149
|
-
*/
|
|
150
|
-
setRows(additionalPage, loadCallback) {
|
|
151
|
-
if (this._rows) {
|
|
152
|
-
this._rows = [...this.rows, ...additionalPage];
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
this._rows = additionalPage;
|
|
156
|
-
}
|
|
157
|
-
if (loadCallback) {
|
|
158
|
-
loadCallback(additionalPage, this._rows);
|
|
159
|
-
}
|
|
160
|
-
this.reflectChanges();
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* @private
|
|
164
|
-
* @return {?}
|
|
165
|
-
*/
|
|
166
|
-
clearRows() {
|
|
167
|
-
if (this._rows != null) {
|
|
168
|
-
this._rows = null;
|
|
169
|
-
this.reflectChanges();
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* @private
|
|
174
|
-
* @return {?}
|
|
175
|
-
*/
|
|
176
|
-
reflectChanges() {
|
|
177
|
-
/** @type {?} */
|
|
178
|
-
const lastRow = this.lastRow();
|
|
179
|
-
if (lastRow && lastRow.__meta) {
|
|
180
|
-
this.loadedCompletely = lastRow.__meta.nextPage == null;
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
this.loadedCompletely = false;
|
|
184
|
-
}
|
|
185
|
-
if (this.rowsChangeCallback) {
|
|
186
|
-
this.rowsChangeCallback(this._rows);
|
|
187
|
-
}
|
|
188
|
-
this.changeDetectorRef.detectChanges();
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* @private
|
|
192
|
-
* @param {?} isLoading
|
|
193
|
-
* @return {?}
|
|
194
|
-
*/
|
|
195
|
-
setLoading(isLoading) {
|
|
196
|
-
this.isLoading = isLoading;
|
|
197
|
-
if (this.isLoadingCallback) {
|
|
198
|
-
this.isLoadingCallback(this.isLoading);
|
|
199
|
-
}
|
|
200
|
-
this.changeDetectorRef.detectChanges();
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* @return {?}
|
|
204
|
-
*/
|
|
205
|
-
dispose() {
|
|
206
|
-
this.rowsChangeCallback = null;
|
|
207
|
-
this.isLoadingCallback = null;
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* @param {?} pageLink
|
|
211
|
-
* @return {?}
|
|
212
|
-
*/
|
|
213
|
-
setPageLink(pageLink) {
|
|
214
|
-
this.clearState();
|
|
215
|
-
this.pageLink = pageLink;
|
|
216
|
-
this.loadNextPage();
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* @return {?}
|
|
220
|
-
*/
|
|
221
|
-
hasLoadedCompletely() {
|
|
222
|
-
return this.loadedCompletely;
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* @param {?} rowsChangeCallback
|
|
226
|
-
* @param {?=} isLoadingCallback
|
|
227
|
-
* @return {?}
|
|
228
|
-
*/
|
|
229
|
-
init(rowsChangeCallback, isLoadingCallback = null) {
|
|
230
|
-
this.rowsChangeCallback = rowsChangeCallback;
|
|
231
|
-
this.isLoadingCallback = isLoadingCallback;
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* @private
|
|
235
|
-
* @return {?}
|
|
236
|
-
*/
|
|
237
|
-
clearState() {
|
|
238
|
-
this.isLoading = false;
|
|
239
|
-
this.loadedCompletely = false;
|
|
240
|
-
this.hasLoaded = false;
|
|
241
|
-
this._rows = null;
|
|
242
|
-
if (this.loadingSubscription) {
|
|
243
|
-
this.loadingSubscription.unsubscribe();
|
|
244
|
-
this.loadingSubscription = null;
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
if (false) {
|
|
249
|
-
/**
|
|
250
|
-
* @type {?}
|
|
251
|
-
* @private
|
|
252
|
-
*/
|
|
253
|
-
LinkFieldPagingSupport.prototype.sorts;
|
|
254
|
-
/** @type {?} */
|
|
255
|
-
LinkFieldPagingSupport.prototype.isLoading;
|
|
256
|
-
/**
|
|
257
|
-
* @type {?}
|
|
258
|
-
* @private
|
|
259
|
-
*/
|
|
260
|
-
LinkFieldPagingSupport.prototype.loadedCompletely;
|
|
261
|
-
/**
|
|
262
|
-
* @type {?}
|
|
263
|
-
* @private
|
|
264
|
-
*/
|
|
265
|
-
LinkFieldPagingSupport.prototype.hasLoaded;
|
|
266
|
-
/**
|
|
267
|
-
* @type {?}
|
|
268
|
-
* @private
|
|
269
|
-
*/
|
|
270
|
-
LinkFieldPagingSupport.prototype._rows;
|
|
271
|
-
/**
|
|
272
|
-
* @type {?}
|
|
273
|
-
* @private
|
|
274
|
-
*/
|
|
275
|
-
LinkFieldPagingSupport.prototype.loadingSubscription;
|
|
276
|
-
/** @type {?} */
|
|
277
|
-
LinkFieldPagingSupport.prototype.rowsChangeCallback;
|
|
278
|
-
/** @type {?} */
|
|
279
|
-
LinkFieldPagingSupport.prototype.isLoadingCallback;
|
|
280
|
-
/**
|
|
281
|
-
* @type {?}
|
|
282
|
-
* @private
|
|
283
|
-
*/
|
|
284
|
-
LinkFieldPagingSupport.prototype.loadingCallback;
|
|
285
|
-
/**
|
|
286
|
-
* @type {?}
|
|
287
|
-
* @private
|
|
288
|
-
*/
|
|
289
|
-
LinkFieldPagingSupport.prototype.pageLink;
|
|
290
|
-
/**
|
|
291
|
-
* @type {?}
|
|
292
|
-
* @private
|
|
293
|
-
*/
|
|
294
|
-
LinkFieldPagingSupport.prototype.changeDetectorRef;
|
|
295
|
-
/** @type {?} */
|
|
296
|
-
LinkFieldPagingSupport.prototype.pageLimit;
|
|
297
|
-
}
|
|
298
|
-
export class SortInfo {
|
|
299
|
-
/**
|
|
300
|
-
* @param {?} field
|
|
301
|
-
* @param {?} dir
|
|
302
|
-
*/
|
|
303
|
-
constructor(field, dir) {
|
|
304
|
-
this.field = field;
|
|
305
|
-
this.dir = dir;
|
|
306
|
-
this.dir = dir.toUpperCase();
|
|
307
|
-
if (!(this.dir === 'ASC' || this.dir === 'DESC')) {
|
|
308
|
-
throw Error('dir can only be \'ASC\' or \'DESC\'');
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
if (false) {
|
|
313
|
-
/** @type {?} */
|
|
314
|
-
SortInfo.prototype.field;
|
|
315
|
-
/** @type {?} */
|
|
316
|
-
SortInfo.prototype.dir;
|
|
317
|
-
}
|
|
318
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1maWVsZC1wYWdpbmctc3VwcG9ydC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9saW5rLWZpZWxkLXBhZ2luZy1zdXBwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFLQSxNQUFNLE9BQU8sc0JBQXNCOzs7Ozs7SUFFL0IsWUFDWSxRQUFrQyxFQUNsQyxpQkFBb0MsRUFDckMsWUFBb0IsR0FBRztRQUZ0QixhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3JDLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFJMUIsVUFBSyxHQUFlLElBQUksQ0FBQztRQUUxQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLFVBQUssR0FBVSxJQUFJLENBQUM7UUFDcEIsd0JBQW1CLEdBQWlCLElBQUksQ0FBQztRQXNDekMsb0JBQWU7OztRQUFHLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUMsRUFBQztJQWhERixDQUFDOzs7O0lBYUQsSUFBSSxJQUFJO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7Ozs7Ozs7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUNkLFFBQWtDLEVBQ2xDLGlCQUFvQyxFQUNwQyxZQUFvQixHQUFHO1FBRXZCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUUsQ0FBQzs7Ozs7O0lBRU0sU0FBUyxDQUFDLEtBQWlCLEVBQUUsZUFB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QUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7U0FDbkM7SUFDTCxDQUFDO0NBQ0o7Ozs7OztJQWpMRyx1Q0FBaUM7O0lBRWpDLDJDQUF5Qjs7Ozs7SUFDekIsa0RBQWlDOzs7OztJQUNqQywyQ0FBMEI7Ozs7O0lBQzFCLHVDQUE0Qjs7Ozs7SUFDNUIscURBQWlEOztJQUVqRCxvREFBaUQ7O0lBQ2pELG1EQUF1RDs7Ozs7SUFtQ3ZELGlEQUVFOzs7OztJQXBERSwwQ0FBMEM7Ozs7O0lBQzFDLG1EQUE0Qzs7SUFDNUMsMkNBQThCOztBQXVMdEMsTUFBTSxPQUFPLFFBQVE7Ozs7O0lBQ2pCLFlBQW1CLEtBQWEsRUFBUyxHQUFXO1FBQWpDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ2hELElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLEVBQUU7WUFDOUMsTUFBTSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztTQUN0RDtJQUNMLENBQUM7Q0FDSjs7O0lBTmUseUJBQW9COztJQUFFLHVCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtMaW5rRmllbGR9IGZyb20gJy4vbGlua3MvbGlua2ZpZWxkJztcbmltcG9ydCB7TWljcm9PYmplY3R9IGZyb20gJy4vbWljcm9vYmplY3QnO1xuXG5leHBvcnQgY2xhc3MgTGlua0ZpZWxkUGFnaW5nU3VwcG9ydCB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBwYWdlTGluazogTGlua0ZpZWxkPE1pY3JvT2JqZWN0W10+LFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIHBhZ2VMaW1pdDogbnVtYmVyID0gMjAwXG4gICAgKSB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0czogU29ydEluZm9bXSA9IG51bGw7XG5cbiAgICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBsb2FkZWRDb21wbGV0ZWx5ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBoYXNMb2FkZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9yb3dzOiBhbnlbXSA9IG51bGw7XG4gICAgcHJpdmF0ZSBsb2FkaW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBudWxsO1xuXG4gICAgcHVibGljIHJvd3NDaGFuZ2VDYWxsYmFjazogKHJvd3M6IGFueVtdKSA9PiB2b2lkO1xuICAgIHB1YmxpYyBpc0xvYWRpbmdDYWxsYmFjazogKGlzTG9hZGluZzogYm9vbGVhbikgPT4gdm9pZDtcblxuICAgIGdldCByb3dzKCk6IGFueVtdIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc0xvYWRlZCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkTmV4dFBhZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcm93cztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb20oXG4gICAgICAgIHBhZ2VMaW5rOiBMaW5rRmllbGQ8TWljcm9PYmplY3RbXT4sXG4gICAgICAgIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcGFnZUxpbWl0OiBudW1iZXIgPSAyMDBcbiAgICApOiBMaW5rRmllbGRQYWdpbmdTdXBwb3J0IHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaW5rRmllbGRQYWdpbmdTdXBwb3J0KHBhZ2VMaW5rLCBjaGFuZ2VEZXRlY3RvclJlZiwgcGFnZUxpbWl0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXBwbHlTb3J0KHNvcnRzOiBTb3J0SW5mb1tdLCBleHRlcm5hbFNvcnRpbmcgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuaGFzTG9hZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc29ydHMgPSBudWxsO1xuICAgICAgICB0aGlzLl9yb3dzID0gbnVsbDtcblxuICAgICAgICBpZiAoZXh0ZXJuYWxTb3J0aW5nKSB7XG4gICAgICAgICAgICB0aGlzLnNvcnRzID0gc29ydHM7XG4gICAgICAgICAgICB0aGlzLmxvYWROZXh0UGFnZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmxvYWRlZENvbXBsZXRlbHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWROZXh0UGFnZShudWxsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZGluZ0NhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNldExvYWRpbmcoZmFsc2UpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgbG9hZE5leHRQYWdlKHBhZ2VTaXplOiBudW1iZXIgPSB0aGlzLnBhZ2VMaW1pdCwgcmVzdWx0Q2FsbGJhY2s6ICgocGFnZTogYW55W10sIGFsbDogYW55W10pID0+IHZvaWQpID0gbnVsbCkge1xuICAgICAgICBpZiAodGhpcy5wYWdlTGluayAmJiAhdGhpcy5pc0xvYWRpbmcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvYWRpbmdTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmhhc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxvYWRlZENvbXBsZXRlbHkgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9yb3dzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRpbmcodHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXFPcHRpb25zOiBhbnkgPSB7fTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3J0cyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcU9wdGlvbnMuc29ydGluZyA9IHRoaXMuc29ydHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYWdlU2l6ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcU9wdGlvbnMucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbiA9IHRoaXMucGFnZUxpbmsuaW5pdFdpdGhPYnMobnVsbCwgcmVxT3B0aW9ucykuc3Vic2NyaWJlKChmaXJzdFBhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSb3dzKGZpcnN0UGFnZSwgcmVzdWx0Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0sIHRoaXMubG9hZGluZ0NhbGxiYWNrLCB0aGlzLmxvYWRpbmdDYWxsYmFjayk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RSb3cgPSB0aGlzLmxhc3RSb3coKTtcbiAgICAgICAgICAgICAgICBpZiAobGFzdFJvdykge1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFJvdy5fX21ldGEubmV4dFBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXFPcHRpb25zID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdlU2l6ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IHBhZ2VTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFBhZ2VPYnM6IE9ic2VydmFibGU8TWljcm9PYmplY3RbXT4gPSBsYXN0Um93Ll9fbWV0YS5uZXh0UGFnZS5pbml0V2l0aE9icyhudWxsLCByZXFPcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0UGFnZU9icykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJzY3JpcHRpb24gPSBuZXh0UGFnZU9icy5zdWJzY3JpYmUoKG5leHRQYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Um93cyhuZXh0UGFnZSwgcmVzdWx0Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMubG9hZGluZ0NhbGxiYWNrLCB0aGlzLmxvYWRpbmdDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMucGFnZUxpbmspIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJSb3dzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZEV2ZXJ5dGhpbmcoKSB7XG4gICAgICAgIHRoaXMubG9hZE5leHRQYWdlKG51bGwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbGFzdFJvdygpOiBNaWNyb09iamVjdCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dzW3RoaXMuX3Jvd3MubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRSb3dzKGFkZGl0aW9uYWxQYWdlOiBhbnlbXSwgbG9hZENhbGxiYWNrOiAoKHBhZ2U6IGFueVtdLCBhbGw6IGFueVtdKSA9PiB2b2lkKSkge1xuICAgICAgICBpZiAodGhpcy5fcm93cykge1xuICAgICAgICAgICAgdGhpcy5fcm93cyA9IFsuLi50aGlzLnJvd3MsIC4uLmFkZGl0aW9uYWxQYWdlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3Jvd3MgPSBhZGRpdGlvbmFsUGFnZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9hZENhbGxiYWNrKSB7XG4gICAgICAgICAgICBsb2FkQ2FsbGJhY2soYWRkaXRpb25hbFBhZ2UsIHRoaXMuX3Jvd3MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmbGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyUm93cygpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Jvd3MgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fcm93cyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnJlZmxlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZmxlY3RDaGFuZ2VzKCkge1xuICAgICAgICBjb25zdCBsYXN0Um93ID0gdGhpcy5sYXN0Um93KCk7XG4gICAgICAgIGlmIChsYXN0Um93ICYmIGxhc3RSb3cuX19tZXRhKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRlZENvbXBsZXRlbHkgPSBsYXN0Um93Ll9fbWV0YS5uZXh0UGFnZSA9PSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2FkZWRDb21wbGV0ZWx5ID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yb3dzQ2hhbmdlQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMucm93c0NoYW5nZUNhbGxiYWNrKHRoaXMuX3Jvd3MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TG9hZGluZyhpc0xvYWRpbmc6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBpc0xvYWRpbmc7XG4gICAgICAgIGlmICh0aGlzLmlzTG9hZGluZ0NhbGxiYWNrKSB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ0NhbGxiYWNrKHRoaXMuaXNMb2FkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzcG9zZSgpIHtcbiAgICAgICAgdGhpcy5yb3dzQ2hhbmdlQ2FsbGJhY2sgPSBudWxsO1xuICAgICAgICB0aGlzLmlzTG9hZGluZ0NhbGxiYWNrID0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UGFnZUxpbmsocGFnZUxpbms6IExpbmtGaWVsZDxNaWNyb09iamVjdFtdPikge1xuICAgICAgICB0aGlzLmNsZWFyU3RhdGUoKTtcbiAgICAgICAgdGhpcy5wYWdlTGluayA9IHBhZ2VMaW5rO1xuICAgICAgICB0aGlzLmxvYWROZXh0UGFnZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNMb2FkZWRDb21wbGV0ZWx5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZWRDb21wbGV0ZWx5O1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0KHJvd3NDaGFuZ2VDYWxsYmFjazogKHJvd3M6IGFueVtdKSA9PiB2b2lkLCBpc0xvYWRpbmdDYWxsYmFjazogKChpc0xvYWRpbmc6IGJvb2xlYW4pID0+IHZvaWQpID0gbnVsbCkge1xuICAgICAgICB0aGlzLnJvd3NDaGFuZ2VDYWxsYmFjayA9IHJvd3NDaGFuZ2VDYWxsYmFjaztcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdDYWxsYmFjayA9IGlzTG9hZGluZ0NhbGxiYWNrO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sb2FkZWRDb21wbGV0ZWx5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaGFzTG9hZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3Jvd3MgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5sb2FkaW5nU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb3J0SW5mbyB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGZpZWxkOiBzdHJpbmcsIHB1YmxpYyBkaXI6IHN0cmluZykge1xuICAgICAgICB0aGlzLmRpciA9IGRpci50b1VwcGVyQ2FzZSgpO1xuICAgICAgICBpZiAoISh0aGlzLmRpciA9PT0gJ0FTQycgfHwgdGhpcy5kaXIgPT09ICdERVNDJykpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdkaXIgY2FuIG9ubHkgYmUgXFwnQVNDXFwnIG9yIFxcJ0RFU0NcXCcnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
import { MicroObject } from '../microobject';
|
|
6
|
-
import { ParamUtils } from '../paramutils';
|
|
7
|
-
/**
|
|
8
|
-
* @template T
|
|
9
|
-
*/
|
|
10
|
-
export class CallableLink {
|
|
11
|
-
/**
|
|
12
|
-
* @param {?} link
|
|
13
|
-
* @param {?} microClient
|
|
14
|
-
* @param {?=} callParams
|
|
15
|
-
* @param {?=} requestOptions
|
|
16
|
-
*/
|
|
17
|
-
constructor(link, microClient, callParams = null, requestOptions = null) {
|
|
18
|
-
this.link = link;
|
|
19
|
-
this.microClient = microClient;
|
|
20
|
-
this.callParams = callParams;
|
|
21
|
-
this.requestOptions = requestOptions;
|
|
22
|
-
this.serializeTo = LinkSerializer.DONT_SERIALIZE;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* @return {?}
|
|
26
|
-
*/
|
|
27
|
-
hasLink() {
|
|
28
|
-
return this.link != null;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* @return {?}
|
|
32
|
-
*/
|
|
33
|
-
getLink() {
|
|
34
|
-
return this.link;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* @param {?} key
|
|
38
|
-
* @param {?=} urlDecode
|
|
39
|
-
* @return {?}
|
|
40
|
-
*/
|
|
41
|
-
getQueryParam(key, urlDecode = false) {
|
|
42
|
-
return ParamUtils.getParam(this.link, key, urlDecode);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* @return {?}
|
|
46
|
-
*/
|
|
47
|
-
getSignedParams() {
|
|
48
|
-
/** @type {?} */
|
|
49
|
-
let params = this.getSignedMicroObjectParam('params');
|
|
50
|
-
if (params == null) {
|
|
51
|
-
params = this.getSignedMicroObjectParam('bParams');
|
|
52
|
-
}
|
|
53
|
-
return params;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* @param {?=} copy
|
|
57
|
-
* @return {?}
|
|
58
|
-
*/
|
|
59
|
-
getOpenParams(copy = false) {
|
|
60
|
-
/** @type {?} */
|
|
61
|
-
let params = this.getMicroObjectParam('oParams');
|
|
62
|
-
if (params == null) {
|
|
63
|
-
params = this.getMicroObjectParam('bOParams');
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
if (copy) {
|
|
67
|
-
params = MicroObject.fromString(JSON.stringify(params), this.microClient);
|
|
68
|
-
}
|
|
69
|
-
if (this.callParams) {
|
|
70
|
-
params = Object.assign(params, this.callParams);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return params;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* @return {?}
|
|
77
|
-
*/
|
|
78
|
-
getOptions() {
|
|
79
|
-
/** @type {?} */
|
|
80
|
-
let options = this.getMicroObjectParam('options');
|
|
81
|
-
if (this.requestOptions) {
|
|
82
|
-
if (options == null) {
|
|
83
|
-
options = new MicroObject();
|
|
84
|
-
}
|
|
85
|
-
options = Object.assign(options, this.requestOptions);
|
|
86
|
-
}
|
|
87
|
-
return options;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* @private
|
|
91
|
-
* @param {?} key
|
|
92
|
-
* @return {?}
|
|
93
|
-
*/
|
|
94
|
-
getSignedMicroObjectParam(key) {
|
|
95
|
-
/** @type {?} */
|
|
96
|
-
const paramsStr = ParamUtils.getParam(this.link, key, false);
|
|
97
|
-
/** @type {?} */
|
|
98
|
-
let params = null;
|
|
99
|
-
if (paramsStr) {
|
|
100
|
-
/** @type {?} */
|
|
101
|
-
const splitted = paramsStr.split('.');
|
|
102
|
-
if (splitted.length !== 3) {
|
|
103
|
-
throw new Error('Expected a signed query param to have a JWT like structure');
|
|
104
|
-
}
|
|
105
|
-
params = MicroObject.fromString(atob(splitted[1]), this.microClient);
|
|
106
|
-
}
|
|
107
|
-
return params;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* @param {?} key
|
|
111
|
-
* @return {?}
|
|
112
|
-
*/
|
|
113
|
-
getMicroObjectParam(key) {
|
|
114
|
-
/** @type {?} */
|
|
115
|
-
const paramsStr = ParamUtils.getParam(this.link, key, true);
|
|
116
|
-
/** @type {?} */
|
|
117
|
-
let params = null;
|
|
118
|
-
if (paramsStr) {
|
|
119
|
-
params = MicroObject.fromString(paramsStr, this.microClient);
|
|
120
|
-
}
|
|
121
|
-
return params;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* @param {?} onNext
|
|
125
|
-
* @return {?}
|
|
126
|
-
*/
|
|
127
|
-
call(onNext) {
|
|
128
|
-
return this.callWith(null, null, onNext);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* @param {?=} params
|
|
132
|
-
* @param {?=} requestOptions
|
|
133
|
-
* @param {?=} onNext
|
|
134
|
-
* @return {?}
|
|
135
|
-
*/
|
|
136
|
-
callWith(params = null, requestOptions = null, onNext) {
|
|
137
|
-
return (/** @type {?} */ (this.callWithObs(params, requestOptions).toPromise().then(onNext)));
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* @param {?=} params
|
|
141
|
-
* @param {?=} requestOptions
|
|
142
|
-
* @return {?}
|
|
143
|
-
*/
|
|
144
|
-
callWithObs(params = null, requestOptions = null) {
|
|
145
|
-
if (this.link == null) {
|
|
146
|
-
throw Error('Can\'t use callWithObs without a provided link');
|
|
147
|
-
}
|
|
148
|
-
if (this.microClient == null) {
|
|
149
|
-
throw Error('Can\'t use callWithObs without a provided microClient');
|
|
150
|
-
}
|
|
151
|
-
/** @type {?} */
|
|
152
|
-
let paramsToUse = null;
|
|
153
|
-
if (this.callParams != null) {
|
|
154
|
-
paramsToUse = Object.assign(new MicroObject(), this.callParams);
|
|
155
|
-
}
|
|
156
|
-
if (params) {
|
|
157
|
-
if (paramsToUse == null) {
|
|
158
|
-
paramsToUse = new MicroObject();
|
|
159
|
-
}
|
|
160
|
-
paramsToUse = Object.assign(paramsToUse, params);
|
|
161
|
-
}
|
|
162
|
-
/** @type {?} */
|
|
163
|
-
let optionsToUse = null;
|
|
164
|
-
if (this.requestOptions != null) {
|
|
165
|
-
optionsToUse = Object.assign(new MicroObject(), this.requestOptions);
|
|
166
|
-
}
|
|
167
|
-
if (requestOptions) {
|
|
168
|
-
if (optionsToUse == null) {
|
|
169
|
-
optionsToUse = new MicroObject();
|
|
170
|
-
}
|
|
171
|
-
optionsToUse = Object.assign(optionsToUse, requestOptions);
|
|
172
|
-
}
|
|
173
|
-
return (/** @type {?} */ (this.microClient.load(this.link, paramsToUse, optionsToUse)));
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* @return {?}
|
|
177
|
-
*/
|
|
178
|
-
copy() {
|
|
179
|
-
return new CallableLink(this.link, this.microClient, this.callParams, this.requestOptions);
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* @param {?} callParams
|
|
183
|
-
* @param {?=} requestOptions
|
|
184
|
-
* @return {?}
|
|
185
|
-
*/
|
|
186
|
-
withCallParams(callParams, requestOptions = this.requestOptions) {
|
|
187
|
-
return new CallableLink(this.link, this.microClient, callParams, requestOptions);
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* @return {?}
|
|
191
|
-
*/
|
|
192
|
-
toJSON() {
|
|
193
|
-
if (this.serializeTo) {
|
|
194
|
-
return this.serializeTo(this.link, this.callParams, this.requestOptions, undefined, undefined);
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
return undefined;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
if (false) {
|
|
202
|
-
/** @type {?} */
|
|
203
|
-
CallableLink.prototype.serializeTo;
|
|
204
|
-
/**
|
|
205
|
-
* @type {?}
|
|
206
|
-
* @protected
|
|
207
|
-
*/
|
|
208
|
-
CallableLink.prototype.link;
|
|
209
|
-
/**
|
|
210
|
-
* @type {?}
|
|
211
|
-
* @protected
|
|
212
|
-
*/
|
|
213
|
-
CallableLink.prototype.microClient;
|
|
214
|
-
/**
|
|
215
|
-
* @type {?}
|
|
216
|
-
* @protected
|
|
217
|
-
*/
|
|
218
|
-
CallableLink.prototype.callParams;
|
|
219
|
-
/**
|
|
220
|
-
* @type {?}
|
|
221
|
-
* @protected
|
|
222
|
-
*/
|
|
223
|
-
CallableLink.prototype.requestOptions;
|
|
224
|
-
}
|
|
225
|
-
// @dynamic
|
|
226
|
-
export class LinkSerializer {
|
|
227
|
-
}
|
|
228
|
-
LinkSerializer.DONT_SERIALIZE = (/**
|
|
229
|
-
* @return {?}
|
|
230
|
-
*/
|
|
231
|
-
function () {
|
|
232
|
-
return undefined;
|
|
233
|
-
});
|
|
234
|
-
LinkSerializer.AS_LINK = (/**
|
|
235
|
-
* @param {?} link
|
|
236
|
-
* @return {?}
|
|
237
|
-
*/
|
|
238
|
-
function (link) {
|
|
239
|
-
return link;
|
|
240
|
-
});
|
|
241
|
-
LinkSerializer.AS_VALUE_IF_INITIALIZED = (/**
|
|
242
|
-
* @param {?} link
|
|
243
|
-
* @param {?} callParams
|
|
244
|
-
* @param {?} requestOptions
|
|
245
|
-
* @param {?} value
|
|
246
|
-
* @param {?} isInitialized
|
|
247
|
-
* @return {?}
|
|
248
|
-
*/
|
|
249
|
-
function (link, callParams, requestOptions, value, isInitialized) {
|
|
250
|
-
if (isInitialized) {
|
|
251
|
-
return value;
|
|
252
|
-
}
|
|
253
|
-
else {
|
|
254
|
-
return undefined;
|
|
255
|
-
}
|
|
256
|
-
});
|
|
257
|
-
if (false) {
|
|
258
|
-
/** @type {?} */
|
|
259
|
-
LinkSerializer.DONT_SERIALIZE;
|
|
260
|
-
/** @type {?} */
|
|
261
|
-
LinkSerializer.AS_LINK;
|
|
262
|
-
/** @type {?} */
|
|
263
|
-
LinkSerializer.AS_VALUE_IF_INITIALIZED;
|
|
264
|
-
}
|
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbGFibGVsaW5rLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG1pY3JvcGVybWl0L2NsaWVudC1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL2xpbmtzL2NhbGxhYmxlbGluay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFFekMsTUFBTSxPQUFPLFlBQVk7Ozs7Ozs7SUFFckIsWUFDYyxJQUFZLEVBQ1osV0FBd0IsRUFDeEIsYUFBcUIsSUFBSSxFQUN6QixpQkFBeUIsSUFBSTtRQUg3QixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQUN6QixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUlwQyxnQkFBVyxHQUEwRyxjQUFjLENBQUMsY0FBYyxDQUFDO0lBRjFKLENBQUM7Ozs7SUFJRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztJQUM3QixDQUFDOzs7O0lBRUQsT0FBTztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDOzs7Ozs7SUFFRCxhQUFhLENBQUMsR0FBVyxFQUFFLFlBQXFCLEtBQUs7UUFDakQsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7Ozs7SUFFRCxlQUFlOztZQUNQLE1BQU0sR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDO1FBQ3JELElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtZQUNoQixNQUFNLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQzs7Ozs7SUFFRCxhQUFhLENBQUMsT0FBZ0IsS0FBSzs7WUFDM0IsTUFBTSxHQUFnQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDO1FBQzdFLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtZQUNoQixNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pEO2FBQU07WUFDSCxJQUFJLElBQUksRUFBRTtnQkFDTixNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUM3RTtZQUVELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNuRDtTQUNKO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQzs7OztJQUVELFVBQVU7O1lBQ0YsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7UUFFakQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtnQkFDakIsT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7YUFDL0I7WUFDRCxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3pEO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQzs7Ozs7O0lBRU8seUJBQXlCLENBQUMsR0FBVzs7Y0FDbkMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDOztZQUN4RCxNQUFNLEdBQUcsSUFBSTtRQUNqQixJQUFJLFNBQVMsRUFBRTs7a0JBQ0wsUUFBUSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1lBQ3JDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQzthQUNqRjtZQUNELE1BQU0sR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDeEU7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDOzs7OztJQUVELG1CQUFtQixDQUFDLEdBQVc7O2NBQ3JCLFNBQVMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQzs7WUFDdkQsTUFBTSxHQUFHLElBQUk7UUFDakIsSUFBSSxTQUFTLEVBQUU7WUFDWCxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQzs7Ozs7SUFFRCxJQUFJLENBQUMsTUFBbUI7UUFDcEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7Ozs7OztJQUVELFFBQVEsQ0FBQyxTQUFpQixJQUFJLEVBQUUsaUJBQXlCLElBQUksRUFBRSxNQUFtQjtRQUM5RSxPQUFPLG1CQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQSxDQUFDO0lBQ3pGLENBQUM7Ozs7OztJQUVELFdBQVcsQ0FBQyxTQUFpQixJQUFJLEVBQUUsaUJBQXlCLElBQUk7UUFDNUQsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRTtZQUNuQixNQUFNLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksRUFBRTtZQUMxQixNQUFNLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1NBQ3hFOztZQUVHLFdBQVcsR0FBRyxJQUFJO1FBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDekIsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbkU7UUFDRCxJQUFJLE1BQU0sRUFBRTtZQUNSLElBQUksV0FBVyxJQUFJLElBQUksRUFBRTtnQkFDckIsV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7YUFDbkM7WUFDRCxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDcEQ7O1lBRUcsWUFBWSxHQUFHLElBQUk7UUFDdkIsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTtZQUM3QixZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN4RTtRQUNELElBQUksY0FBYyxFQUFFO1lBQ2hCLElBQUksWUFBWSxJQUFJLElBQUksRUFBRTtnQkFDdEIsWUFBWSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7YUFDcEM7WUFDRCxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDOUQ7UUFFRCxPQUFPLG1CQUFlLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxFQUFBLENBQUM7SUFDdEYsQ0FBQzs7OztJQUVELElBQUk7UUFDQSxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvRixDQUFDOzs7Ozs7SUFFRCxjQUFjLENBQUMsVUFBa0IsRUFBRSxpQkFBeUIsSUFBSSxDQUFDLGNBQWM7UUFDM0UsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7Ozs7SUFFRCxNQUFNO1FBQ0YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDbEc7YUFBTTtZQUNILE9BQU8sU0FBUyxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztDQUNKOzs7SUFqSUcsbUNBQTBKOzs7OztJQVB0Siw0QkFBc0I7Ozs7O0lBQ3RCLG1DQUFrQzs7Ozs7SUFDbEMsa0NBQW1DOzs7OztJQUNuQyxzQ0FBdUM7OztBQXdJL0MsTUFBTSxPQUFPLGNBQWM7O0FBQ1QsNkJBQWM7OztBQUFHO0lBQzNCLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUMsRUFBQztBQUVZLHNCQUFPOzs7O0FBQUcsVUFBVSxJQUFZO0lBQzFDLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsRUFBQztBQUVZLHNDQUF1Qjs7Ozs7Ozs7QUFBRyxVQUFVLElBQVksRUFBRSxVQUFrQixFQUFFLGNBQXNCLEVBQUUsS0FBVSxFQUFFLGFBQXNCO0lBQzFJLElBQUksYUFBYSxFQUFFO1FBQ2YsT0FBTyxLQUFLLENBQUM7S0FDaEI7U0FBTTtRQUNILE9BQU8sU0FBUyxDQUFDO0tBQ3BCO0FBQ0wsQ0FBQyxFQUFDOzs7SUFkRiw4QkFFRTs7SUFFRix1QkFFRTs7SUFFRix1Q0FNRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWljcm9DbGllbnR9IGZyb20gJy4uL21pY3JvY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TWljcm9PYmplY3R9IGZyb20gJy4uL21pY3Jvb2JqZWN0JztcbmltcG9ydCB7UGFyYW1VdGlsc30gZnJvbSAnLi4vcGFyYW11dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBDYWxsYWJsZUxpbms8VD4ge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBsaW5rOiBzdHJpbmcsXG4gICAgICAgIHByb3RlY3RlZCBtaWNyb0NsaWVudDogTWljcm9DbGllbnQsXG4gICAgICAgIHByb3RlY3RlZCBjYWxsUGFyYW1zOiBvYmplY3QgPSBudWxsLFxuICAgICAgICBwcm90ZWN0ZWQgcmVxdWVzdE9wdGlvbnM6IG9iamVjdCA9IG51bGxcbiAgICApIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VyaWFsaXplVG86IChsaW5rOiBzdHJpbmcsIGNhbGxQYXJhbXM6IG9iamVjdCwgcmVxdWVzdE9wdGlvbnM6IG9iamVjdCwgdmFsdWU6IGFueSwgaXNJbml0aWFsaXplZDogYm9vbGVhbikgPT4gYW55ID0gTGlua1NlcmlhbGl6ZXIuRE9OVF9TRVJJQUxJWkU7XG5cbiAgICBoYXNMaW5rKCk6IEJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5saW5rICE9IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0TGluaygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5saW5rO1xuICAgIH1cblxuICAgIGdldFF1ZXJ5UGFyYW0oa2V5OiBzdHJpbmcsIHVybERlY29kZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBQYXJhbVV0aWxzLmdldFBhcmFtKHRoaXMubGluaywga2V5LCB1cmxEZWNvZGUpO1xuICAgIH1cblxuICAgIGdldFNpZ25lZFBhcmFtcygpOiBNaWNyb09iamVjdCB8IE1pY3JvT2JqZWN0W10ge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5nZXRTaWduZWRNaWNyb09iamVjdFBhcmFtKCdwYXJhbXMnKTtcbiAgICAgICAgaWYgKHBhcmFtcyA9PSBudWxsKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSB0aGlzLmdldFNpZ25lZE1pY3JvT2JqZWN0UGFyYW0oJ2JQYXJhbXMnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cblxuICAgIGdldE9wZW5QYXJhbXMoY29weTogYm9vbGVhbiA9IGZhbHNlKTogTWljcm9PYmplY3QgfCBNaWNyb09iamVjdFtdIHtcbiAgICAgICAgbGV0IHBhcmFtczogTWljcm9PYmplY3QgfCBNaWNyb09iamVjdFtdID0gdGhpcy5nZXRNaWNyb09iamVjdFBhcmFtKCdvUGFyYW1zJyk7XG4gICAgICAgIGlmIChwYXJhbXMgPT0gbnVsbCkge1xuICAgICAgICAgICAgcGFyYW1zID0gdGhpcy5nZXRNaWNyb09iamVjdFBhcmFtKCdiT1BhcmFtcycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNvcHkpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBNaWNyb09iamVjdC5mcm9tU3RyaW5nKEpTT04uc3RyaW5naWZ5KHBhcmFtcyksIHRoaXMubWljcm9DbGllbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5jYWxsUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gT2JqZWN0LmFzc2lnbihwYXJhbXMsIHRoaXMuY2FsbFBhcmFtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICBnZXRPcHRpb25zKCk6IE1pY3JvT2JqZWN0IHtcbiAgICAgICAgbGV0IG9wdGlvbnMgPSB0aGlzLmdldE1pY3JvT2JqZWN0UGFyYW0oJ29wdGlvbnMnKTtcblxuICAgICAgICBpZiAodGhpcy5yZXF1ZXN0T3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBuZXcgTWljcm9PYmplY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHRoaXMucmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTaWduZWRNaWNyb09iamVjdFBhcmFtKGtleTogc3RyaW5nKTogTWljcm9PYmplY3Qge1xuICAgICAgICBjb25zdCBwYXJhbXNTdHIgPSBQYXJhbVV0aWxzLmdldFBhcmFtKHRoaXMubGluaywga2V5LCBmYWxzZSk7XG4gICAgICAgIGxldCBwYXJhbXMgPSBudWxsO1xuICAgICAgICBpZiAocGFyYW1zU3RyKSB7XG4gICAgICAgICAgICBjb25zdCBzcGxpdHRlZCA9IHBhcmFtc1N0ci5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKHNwbGl0dGVkLmxlbmd0aCAhPT0gMykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYSBzaWduZWQgcXVlcnkgcGFyYW0gdG8gaGF2ZSBhIEpXVCBsaWtlIHN0cnVjdHVyZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFyYW1zID0gTWljcm9PYmplY3QuZnJvbVN0cmluZyhhdG9iKHNwbGl0dGVkWzFdKSwgdGhpcy5taWNyb0NsaWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICBnZXRNaWNyb09iamVjdFBhcmFtKGtleTogc3RyaW5nKTogTWljcm9PYmplY3Qge1xuICAgICAgICBjb25zdCBwYXJhbXNTdHIgPSBQYXJhbVV0aWxzLmdldFBhcmFtKHRoaXMubGluaywga2V5LCB0cnVlKTtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG51bGw7XG4gICAgICAgIGlmIChwYXJhbXNTdHIpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IE1pY3JvT2JqZWN0LmZyb21TdHJpbmcocGFyYW1zU3RyLCB0aGlzLm1pY3JvQ2xpZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cblxuICAgIGNhbGwob25OZXh0OiAoVCkgPT4gdm9pZCk6IFByb21pc2U8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsV2l0aChudWxsLCBudWxsLCBvbk5leHQpO1xuICAgIH1cblxuICAgIGNhbGxXaXRoKHBhcmFtczogb2JqZWN0ID0gbnVsbCwgcmVxdWVzdE9wdGlvbnM6IG9iamVjdCA9IG51bGwsIG9uTmV4dDogKFQpID0+IHZvaWQpOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIDxQcm9taXNlPFQ+PnRoaXMuY2FsbFdpdGhPYnMocGFyYW1zLCByZXF1ZXN0T3B0aW9ucykudG9Qcm9taXNlKCkudGhlbihvbk5leHQpO1xuICAgIH1cblxuICAgIGNhbGxXaXRoT2JzKHBhcmFtczogb2JqZWN0ID0gbnVsbCwgcmVxdWVzdE9wdGlvbnM6IG9iamVjdCA9IG51bGwpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgaWYgKHRoaXMubGluayA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQ2FuXFwndCB1c2UgY2FsbFdpdGhPYnMgd2l0aG91dCBhIHByb3ZpZGVkIGxpbmsnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5taWNyb0NsaWVudCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQ2FuXFwndCB1c2UgY2FsbFdpdGhPYnMgd2l0aG91dCBhIHByb3ZpZGVkIG1pY3JvQ2xpZW50Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFyYW1zVG9Vc2UgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5jYWxsUGFyYW1zICE9IG51bGwpIHtcbiAgICAgICAgICAgIHBhcmFtc1RvVXNlID0gT2JqZWN0LmFzc2lnbihuZXcgTWljcm9PYmplY3QoKSwgdGhpcy5jYWxsUGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICBpZiAocGFyYW1zVG9Vc2UgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHBhcmFtc1RvVXNlID0gbmV3IE1pY3JvT2JqZWN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJhbXNUb1VzZSA9IE9iamVjdC5hc3NpZ24ocGFyYW1zVG9Vc2UsIHBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3B0aW9uc1RvVXNlID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMucmVxdWVzdE9wdGlvbnMgIT0gbnVsbCkge1xuICAgICAgICAgICAgb3B0aW9uc1RvVXNlID0gT2JqZWN0LmFzc2lnbihuZXcgTWljcm9PYmplY3QoKSwgdGhpcy5yZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcXVlc3RPcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uc1RvVXNlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zVG9Vc2UgPSBuZXcgTWljcm9PYmplY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnNUb1VzZSA9IE9iamVjdC5hc3NpZ24ob3B0aW9uc1RvVXNlLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gPE9ic2VydmFibGU8VD4+dGhpcy5taWNyb0NsaWVudC5sb2FkKHRoaXMubGluaywgcGFyYW1zVG9Vc2UsIG9wdGlvbnNUb1VzZSk7XG4gICAgfVxuXG4gICAgY29weSgpOiBDYWxsYWJsZUxpbms8VD4ge1xuICAgICAgICByZXR1cm4gbmV3IENhbGxhYmxlTGluayh0aGlzLmxpbmssIHRoaXMubWljcm9DbGllbnQsIHRoaXMuY2FsbFBhcmFtcywgdGhpcy5yZXF1ZXN0T3B0aW9ucyk7XG4gICAgfVxuXG4gICAgd2l0aENhbGxQYXJhbXMoY2FsbFBhcmFtczogb2JqZWN0LCByZXF1ZXN0T3B0aW9uczogb2JqZWN0ID0gdGhpcy5yZXF1ZXN0T3B0aW9ucyk6IENhbGxhYmxlTGluazxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FsbGFibGVMaW5rKHRoaXMubGluaywgdGhpcy5taWNyb0NsaWVudCwgY2FsbFBhcmFtcywgcmVxdWVzdE9wdGlvbnMpO1xuICAgIH1cblxuICAgIHRvSlNPTigpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5zZXJpYWxpemVUbykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplVG8odGhpcy5saW5rLCB0aGlzLmNhbGxQYXJhbXMsIHRoaXMucmVxdWVzdE9wdGlvbnMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgTGlua1NlcmlhbGl6ZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgRE9OVF9TRVJJQUxJWkUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfTtcblxuICAgIHB1YmxpYyBzdGF0aWMgQVNfTElOSyA9IGZ1bmN0aW9uIChsaW5rOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGxpbms7XG4gICAgfTtcblxuICAgIHB1YmxpYyBzdGF0aWMgQVNfVkFMVUVfSUZfSU5JVElBTElaRUQgPSBmdW5jdGlvbiAobGluazogc3RyaW5nLCBjYWxsUGFyYW1zOiBvYmplY3QsIHJlcXVlc3RPcHRpb25zOiBvYmplY3QsIHZhbHVlOiBhbnksIGlzSW5pdGlhbGl6ZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9O1xufVxuIl19
|