@coolon/angular-ui-powerups 0.0.43 → 0.0.46
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/bundles/coolon-angular-ui-powerups.umd.js +1499 -1188
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
- package/coolon-angular-ui-powerups.d.ts +16 -15
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/coolon-angular-ui-powerups.js +16 -15
- package/esm2015/index.js +2 -2
- package/esm2015/lib/components/disposable-component.js +1 -1
- package/esm2015/lib/components/forms/number-input/number-input.component.js +1 -1
- package/esm2015/lib/components/forms/password-input/password-input.component.js +1 -1
- package/esm2015/lib/components/forms/string-input/string-input.component.js +1 -1
- package/esm2015/lib/components/resize-aware.component.js +1 -1
- package/esm2015/lib/components/types/bounds.class.js +1 -1
- package/esm2015/lib/components/types/dimension.class.js +1 -1
- package/esm2015/lib/components/types/point.class.js +1 -1
- package/esm2015/lib/directives/command.directive.js +1 -1
- package/esm2015/lib/directives/focus-binding.directive.js +2 -2
- package/esm2015/lib/interaction/alert.js +1 -1
- package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +2 -2
- package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.js +6 -1
- package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
- package/esm2015/lib/interaction/confirm.js +1 -1
- package/esm2015/lib/interaction/interaction.module.js +2 -2
- package/esm2015/lib/interaction/result.js +1 -1
- package/esm2015/lib/interaction/services/dialog-interaction.service.js +2 -2
- package/esm2015/lib/place/components/abstract-place-navigation.component.js +3 -2
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +135 -84
- package/esm2015/lib/place/components/place-outlet/route-animations.js +2 -2
- package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
- package/esm2015/lib/place/guards/leave-place.guard.js +12 -10
- package/esm2015/lib/place/guards/place-route.guard.js +40 -33
- package/esm2015/lib/place/index.js +5 -6
- package/esm2015/lib/place/nav-item.js +1 -1
- package/esm2015/lib/place/place-component.js +39 -169
- package/esm2015/lib/place/place-definition.js +79 -0
- package/esm2015/lib/place/place-history.js +77 -0
- package/esm2015/lib/place/place-router.js +98 -0
- package/esm2015/lib/place/place.decorator.js +30 -3
- package/esm2015/lib/place/place.module.js +2 -5
- package/esm2015/lib/place/route/json-types.js +1 -1
- package/esm2015/lib/place/route/parameter-decorators.js +7 -60
- package/esm2015/lib/place/route/parameter-definition.class.js +187 -9
- package/esm2015/lib/place/route/parameter-sanitiser.js +4 -17
- package/esm2015/lib/place/route/parameter-snapshot.js +228 -72
- package/esm2015/lib/place/route/parameter-type.js +2 -2
- package/esm2015/lib/place/route/route-parameter-sanitiser.js +7 -21
- package/esm2015/lib/place/visit.js +3 -3
- package/esm2015/public_api.js +2 -2
- package/esm5/coolon-angular-ui-powerups.js +16 -15
- package/esm5/index.js +2 -2
- package/esm5/lib/components/disposable-component.js +1 -1
- package/esm5/lib/components/forms/number-input/number-input.component.js +1 -1
- package/esm5/lib/components/forms/password-input/password-input.component.js +1 -1
- package/esm5/lib/components/forms/string-input/string-input.component.js +1 -1
- package/esm5/lib/components/resize-aware.component.js +1 -1
- package/esm5/lib/components/types/bounds.class.js +1 -1
- package/esm5/lib/components/types/dimension.class.js +1 -1
- package/esm5/lib/components/types/point.class.js +1 -1
- package/esm5/lib/directives/command.directive.js +1 -1
- package/esm5/lib/directives/focus-binding.directive.js +2 -2
- package/esm5/lib/interaction/alert.js +1 -1
- package/esm5/lib/interaction/components/activity-container/activity-container.component.js +2 -2
- package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.js +6 -1
- package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
- package/esm5/lib/interaction/confirm.js +1 -1
- package/esm5/lib/interaction/interaction.module.js +2 -2
- package/esm5/lib/interaction/result.js +1 -1
- package/esm5/lib/interaction/services/dialog-interaction.service.js +2 -2
- package/esm5/lib/place/components/abstract-place-navigation.component.js +3 -2
- package/esm5/lib/place/components/place-outlet/place-outlet.component.js +153 -113
- package/esm5/lib/place/components/place-outlet/route-animations.js +2 -2
- package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
- package/esm5/lib/place/guards/leave-place.guard.js +12 -10
- package/esm5/lib/place/guards/place-route.guard.js +40 -32
- package/esm5/lib/place/index.js +5 -6
- package/esm5/lib/place/nav-item.js +1 -1
- package/esm5/lib/place/place-component.js +53 -199
- package/esm5/lib/place/place-definition.js +88 -0
- package/esm5/lib/place/place-history.js +90 -0
- package/esm5/lib/place/place-router.js +118 -0
- package/esm5/lib/place/place.decorator.js +30 -3
- package/esm5/lib/place/place.module.js +2 -5
- package/esm5/lib/place/route/json-types.js +1 -1
- package/esm5/lib/place/route/parameter-decorators.js +7 -60
- package/esm5/lib/place/route/parameter-definition.class.js +227 -9
- package/esm5/lib/place/route/parameter-sanitiser.js +4 -17
- package/esm5/lib/place/route/parameter-snapshot.js +295 -80
- package/esm5/lib/place/route/parameter-type.js +2 -2
- package/esm5/lib/place/route/route-parameter-sanitiser.js +7 -20
- package/esm5/lib/place/visit.js +3 -3
- package/esm5/public_api.js +2 -2
- package/fesm2015/coolon-angular-ui-powerups.js +1144 -904
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +1462 -1154
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/index.d.ts +1 -1
- package/lib/interaction/components/activity-outlet/activity-outlet.component.d.ts +7 -0
- package/lib/place/components/abstract-place-navigation.component.d.ts +3 -2
- package/lib/place/components/place-outlet/place-outlet.component.d.ts +30 -19
- package/lib/place/guards/place-route.guard.d.ts +7 -6
- package/lib/place/index.d.ts +3 -4
- package/lib/place/place-component.d.ts +13 -41
- package/lib/place/place-definition.d.ts +20 -0
- package/lib/place/place-history.d.ts +13 -0
- package/lib/place/place-router.d.ts +10 -0
- package/lib/place/place.decorator.d.ts +13 -1
- package/lib/place/route/parameter-decorators.d.ts +0 -4
- package/lib/place/route/parameter-definition.class.d.ts +39 -6
- package/lib/place/route/parameter-sanitiser.d.ts +3 -8
- package/lib/place/route/parameter-snapshot.d.ts +15 -12
- package/lib/place/route/route-parameter-sanitiser.d.ts +1 -3
- package/lib/place/visit.d.ts +4 -4
- package/package.json +1 -1
- package/schematics/place-routes/index.js.map +1 -1
- package/schematics/place-routes/place-def.js +1 -1
- package/schematics/place-routes/place-def.js.map +1 -1
- package/schematics/place-routes/templates/place-destinations.ts.template +21 -0
- package/schematics/place-routes/templates/{places.ts.template → place-routes.ts.template} +1 -13
- package/esm2015/lib/place/place-component-like.js +0 -17
- package/esm2015/lib/place/place-updates-service.js +0 -16
- package/esm2015/lib/place/place.service.js +0 -102
- package/esm2015/lib/place/route/default-parameter-sanitiser.js +0 -78
- package/esm5/lib/place/place-component-like.js +0 -17
- package/esm5/lib/place/place-updates-service.js +0 -16
- package/esm5/lib/place/place.service.js +0 -136
- package/esm5/lib/place/route/default-parameter-sanitiser.js +0 -85
- package/lib/place/place-component-like.d.ts +0 -5
- package/lib/place/place-updates-service.d.ts +0 -10
- package/lib/place/place.service.d.ts +0 -22
- package/lib/place/route/default-parameter-sanitiser.d.ts +0 -13
|
@@ -3,13 +3,11 @@
|
|
|
3
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
5
|
import * as tslib_1 from "tslib";
|
|
6
|
-
import {
|
|
6
|
+
import { Injector } from '@angular/core';
|
|
7
|
+
import { Trace } from '@coolon/pectin';
|
|
7
8
|
import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
// Id snapshot are repesented by 2 url segments
|
|
11
|
-
// ID => [{'/basePath', params}, {'id', params}]
|
|
12
|
-
// NO ID => [{'/basePath', params}]
|
|
9
|
+
import _ from 'lodash';
|
|
10
|
+
import { ParameterDefinition } from './parameter-definition.class';
|
|
13
11
|
var ParameterSnapshot = /** @class */ (function () {
|
|
14
12
|
function ParameterSnapshot(placeDefinition, resolved) {
|
|
15
13
|
this.placeDefinition = placeDefinition;
|
|
@@ -17,64 +15,39 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
17
15
|
}
|
|
18
16
|
/**
|
|
19
17
|
* @param {?} other
|
|
18
|
+
* @param {?=} debug
|
|
20
19
|
* @return {?}
|
|
21
20
|
*/
|
|
22
21
|
ParameterSnapshot.prototype.hasChanged = /**
|
|
23
22
|
* @param {?} other
|
|
23
|
+
* @param {?=} debug
|
|
24
24
|
* @return {?}
|
|
25
25
|
*/
|
|
26
|
-
function (other) {
|
|
26
|
+
function (other, debug) {
|
|
27
|
+
if (debug === void 0) { debug = false; }
|
|
27
28
|
/** @type {?} */
|
|
28
29
|
var changed = this.resolved.find((/**
|
|
29
30
|
* @param {?} r
|
|
30
31
|
* @return {?}
|
|
31
32
|
*/
|
|
32
33
|
function (r) {
|
|
33
|
-
return !r.isSame(other.
|
|
34
|
+
return !r.isSame(other.getValueOf(r.parameterDef));
|
|
34
35
|
}));
|
|
35
|
-
if (changed) {
|
|
36
|
-
console.log({
|
|
36
|
+
if (changed && debug) {
|
|
37
|
+
console.log({
|
|
38
|
+
name: changed.parameterDef.name,
|
|
39
|
+
mine: changed.value,
|
|
40
|
+
theirs: other.getValueOf(changed.parameterDef)
|
|
41
|
+
});
|
|
37
42
|
}
|
|
38
43
|
return !!changed;
|
|
39
44
|
};
|
|
40
|
-
/**
|
|
41
|
-
* @param {?} other
|
|
42
|
-
* @return {?}
|
|
43
|
-
*/
|
|
44
|
-
ParameterSnapshot.prototype.asUrlSegment = /**
|
|
45
|
-
* @param {?} other
|
|
46
|
-
* @return {?}
|
|
47
|
-
*/
|
|
48
|
-
function (other) {
|
|
49
|
-
assert.isTruthy(this.hasChanged(other));
|
|
50
|
-
/** @type {?} */
|
|
51
|
-
var routeParts = [];
|
|
52
|
-
/** @type {?} */
|
|
53
|
-
var gainedId = this.getFormattedRouteId() && !other.getFormattedRouteId();
|
|
54
|
-
/** @type {?} */
|
|
55
|
-
var sameId = this.getFormattedRouteId() === other.getFormattedRouteId();
|
|
56
|
-
/** @type {?} */
|
|
57
|
-
var lostId = (!this.getFormattedRouteId() && other.getFormattedRouteId());
|
|
58
|
-
/** @type {?} */
|
|
59
|
-
var changedId = (this.getFormattedRouteId() !== other.getFormattedRouteId());
|
|
60
|
-
if (lostId || changedId) {
|
|
61
|
-
routeParts.push('..');
|
|
62
|
-
if (changedId) {
|
|
63
|
-
routeParts.push(this.getFormattedRouteId());
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
routeParts.push('.');
|
|
68
|
-
}
|
|
69
|
-
routeParts.push(this.getFormattedParameters());
|
|
70
|
-
return routeParts;
|
|
71
|
-
};
|
|
72
45
|
/**
|
|
73
46
|
* @template T, S
|
|
74
47
|
* @param {?} parameterDef
|
|
75
48
|
* @return {?}
|
|
76
49
|
*/
|
|
77
|
-
ParameterSnapshot.prototype.
|
|
50
|
+
ParameterSnapshot.prototype.getParameter = /**
|
|
78
51
|
* @template T, S
|
|
79
52
|
* @param {?} parameterDef
|
|
80
53
|
* @return {?}
|
|
@@ -91,30 +64,30 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
91
64
|
* @param {?} parameterDef
|
|
92
65
|
* @return {?}
|
|
93
66
|
*/
|
|
94
|
-
ParameterSnapshot.prototype.
|
|
67
|
+
ParameterSnapshot.prototype.getValueOf = /**
|
|
95
68
|
* @template T, S
|
|
96
69
|
* @param {?} parameterDef
|
|
97
70
|
* @return {?}
|
|
98
71
|
*/
|
|
99
72
|
function (parameterDef) {
|
|
100
73
|
/** @type {?} */
|
|
101
|
-
var resolvedParameter = this.
|
|
74
|
+
var resolvedParameter = this.getParameter(parameterDef);
|
|
102
75
|
return resolvedParameter ? resolvedParameter.value : null;
|
|
103
76
|
};
|
|
104
77
|
/**
|
|
105
78
|
* @return {?}
|
|
106
79
|
*/
|
|
107
|
-
ParameterSnapshot.prototype.
|
|
80
|
+
ParameterSnapshot.prototype.getRouteIdValue = /**
|
|
108
81
|
* @return {?}
|
|
109
82
|
*/
|
|
110
83
|
function () {
|
|
111
|
-
return this.
|
|
84
|
+
return this.getRouteIdParameter() ? this.getRouteIdParameter().value : null;
|
|
112
85
|
};
|
|
113
86
|
/**
|
|
114
87
|
* @param {?} name
|
|
115
88
|
* @return {?}
|
|
116
89
|
*/
|
|
117
|
-
ParameterSnapshot.prototype.
|
|
90
|
+
ParameterSnapshot.prototype.getParameterValue = /**
|
|
118
91
|
* @param {?} name
|
|
119
92
|
* @return {?}
|
|
120
93
|
*/
|
|
@@ -131,7 +104,7 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
131
104
|
* @private
|
|
132
105
|
* @return {?}
|
|
133
106
|
*/
|
|
134
|
-
ParameterSnapshot.prototype.
|
|
107
|
+
ParameterSnapshot.prototype.getRouteIdParameter = /**
|
|
135
108
|
* @private
|
|
136
109
|
* @return {?}
|
|
137
110
|
*/
|
|
@@ -144,6 +117,21 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
144
117
|
*/
|
|
145
118
|
function (p) { return p.parameterDef.isRouteId; }))));
|
|
146
119
|
};
|
|
120
|
+
/**
|
|
121
|
+
* @private
|
|
122
|
+
* @return {?}
|
|
123
|
+
*/
|
|
124
|
+
ParameterSnapshot.prototype.getRouteParameters = /**
|
|
125
|
+
* @private
|
|
126
|
+
* @return {?}
|
|
127
|
+
*/
|
|
128
|
+
function () {
|
|
129
|
+
return this.resolved.filter((/**
|
|
130
|
+
* @param {?} r
|
|
131
|
+
* @return {?}
|
|
132
|
+
*/
|
|
133
|
+
function (r) { return !r.parameterDef.isRouteId; }));
|
|
134
|
+
};
|
|
147
135
|
/**
|
|
148
136
|
* @return {?}
|
|
149
137
|
*/
|
|
@@ -151,7 +139,7 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
151
139
|
* @return {?}
|
|
152
140
|
*/
|
|
153
141
|
function () {
|
|
154
|
-
return !!this.
|
|
142
|
+
return !!this.getRouteIdParameter();
|
|
155
143
|
};
|
|
156
144
|
/**
|
|
157
145
|
* @return {?}
|
|
@@ -161,7 +149,7 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
161
149
|
*/
|
|
162
150
|
function () {
|
|
163
151
|
/** @type {?} */
|
|
164
|
-
var routeIdParam = this.
|
|
152
|
+
var routeIdParam = this.getRouteIdParameter();
|
|
165
153
|
return routeIdParam ? routeIdParam.formattedValue() : null;
|
|
166
154
|
};
|
|
167
155
|
/**
|
|
@@ -187,6 +175,25 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
187
175
|
}));
|
|
188
176
|
return params;
|
|
189
177
|
};
|
|
178
|
+
/**
|
|
179
|
+
* @return {?}
|
|
180
|
+
*/
|
|
181
|
+
ParameterSnapshot.prototype.getAllFormattedParameters = /**
|
|
182
|
+
* @return {?}
|
|
183
|
+
*/
|
|
184
|
+
function () {
|
|
185
|
+
/** @type {?} */
|
|
186
|
+
var params = {};
|
|
187
|
+
/** @type {?} */
|
|
188
|
+
var routeIdParam = this.resolved.forEach((/**
|
|
189
|
+
* @param {?} p
|
|
190
|
+
* @return {?}
|
|
191
|
+
*/
|
|
192
|
+
function (p) {
|
|
193
|
+
params[p.parameterDef.name] = p.formattedValue();
|
|
194
|
+
}));
|
|
195
|
+
return params;
|
|
196
|
+
};
|
|
190
197
|
/**
|
|
191
198
|
* @template T, S
|
|
192
199
|
* @param {?} parameter
|
|
@@ -209,41 +216,89 @@ var ParameterSnapshot = /** @class */ (function () {
|
|
|
209
216
|
})));
|
|
210
217
|
};
|
|
211
218
|
/**
|
|
212
|
-
* @param {?}
|
|
219
|
+
* @param {?} injector
|
|
213
220
|
* @return {?}
|
|
214
221
|
*/
|
|
215
|
-
ParameterSnapshot.prototype.
|
|
216
|
-
* @param {?}
|
|
222
|
+
ParameterSnapshot.prototype.sanitise = /**
|
|
223
|
+
* @param {?} injector
|
|
217
224
|
* @return {?}
|
|
218
225
|
*/
|
|
219
|
-
function (
|
|
220
|
-
return
|
|
226
|
+
function (injector) {
|
|
227
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
228
|
+
var routeId, sanitisedValue, result, routeParameters, i, sanitisedValue;
|
|
229
|
+
return tslib_1.__generator(this, function (_a) {
|
|
230
|
+
switch (_a.label) {
|
|
231
|
+
case 0:
|
|
232
|
+
if (!this.hasRouteId()) return [3 /*break*/, 2];
|
|
233
|
+
routeId = this.getRouteIdParameter();
|
|
234
|
+
return [4 /*yield*/, routeId.sanitise(this, injector)];
|
|
235
|
+
case 1:
|
|
236
|
+
sanitisedValue = _a.sent();
|
|
237
|
+
if (!routeId.isSame(sanitisedValue)) {
|
|
238
|
+
// if the route id has changed we redirect immediately as other
|
|
239
|
+
// parameter sanitisers might use it.
|
|
240
|
+
return [2 /*return*/, this.replace(routeId.parameterDef, sanitisedValue)];
|
|
241
|
+
}
|
|
242
|
+
_a.label = 2;
|
|
243
|
+
case 2:
|
|
244
|
+
result = this;
|
|
245
|
+
routeParameters = this.getRouteParameters();
|
|
246
|
+
i = 0;
|
|
247
|
+
_a.label = 3;
|
|
248
|
+
case 3:
|
|
249
|
+
if (!(i < routeParameters.length)) return [3 /*break*/, 6];
|
|
250
|
+
return [4 /*yield*/, routeParameters[i].sanitise(this, injector)];
|
|
251
|
+
case 4:
|
|
252
|
+
sanitisedValue = _a.sent();
|
|
253
|
+
if (!routeParameters[i].isSame(sanitisedValue)) {
|
|
254
|
+
result = this.replace(routeParameters[i].parameterDef, sanitisedValue);
|
|
255
|
+
}
|
|
256
|
+
_a.label = 5;
|
|
257
|
+
case 5:
|
|
258
|
+
i++;
|
|
259
|
+
return [3 /*break*/, 3];
|
|
260
|
+
case 6: return [2 /*return*/, result];
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
});
|
|
221
264
|
};
|
|
222
265
|
var _a;
|
|
223
266
|
tslib_1.__decorate([
|
|
224
267
|
Memoize(),
|
|
225
268
|
tslib_1.__metadata("design:type", Function),
|
|
226
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
269
|
+
tslib_1.__metadata("design:paramtypes", [ParameterDefinition]),
|
|
227
270
|
tslib_1.__metadata("design:returntype", ParameterSnapshot.ResolvedParameter)
|
|
228
|
-
], ParameterSnapshot.prototype, "
|
|
271
|
+
], ParameterSnapshot.prototype, "getParameter", null);
|
|
229
272
|
tslib_1.__decorate([
|
|
230
273
|
Memoize(),
|
|
231
274
|
tslib_1.__metadata("design:type", Function),
|
|
232
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
275
|
+
tslib_1.__metadata("design:paramtypes", [ParameterDefinition]),
|
|
233
276
|
tslib_1.__metadata("design:returntype", typeof (_a = typeof S !== "undefined" && S) === "function" ? _a : Object)
|
|
234
|
-
], ParameterSnapshot.prototype, "
|
|
277
|
+
], ParameterSnapshot.prototype, "getValueOf", null);
|
|
235
278
|
tslib_1.__decorate([
|
|
236
279
|
Memoize(),
|
|
237
280
|
tslib_1.__metadata("design:type", Function),
|
|
238
281
|
tslib_1.__metadata("design:paramtypes", [String]),
|
|
239
282
|
tslib_1.__metadata("design:returntype", Object)
|
|
240
|
-
], ParameterSnapshot.prototype, "
|
|
283
|
+
], ParameterSnapshot.prototype, "getParameterValue", null);
|
|
241
284
|
tslib_1.__decorate([
|
|
242
285
|
Memoize(),
|
|
243
286
|
tslib_1.__metadata("design:type", Function),
|
|
244
287
|
tslib_1.__metadata("design:paramtypes", []),
|
|
245
288
|
tslib_1.__metadata("design:returntype", ParameterSnapshot.ResolvedValueParameter)
|
|
246
|
-
], ParameterSnapshot.prototype, "
|
|
289
|
+
], ParameterSnapshot.prototype, "getRouteIdParameter", null);
|
|
290
|
+
tslib_1.__decorate([
|
|
291
|
+
Memoize(),
|
|
292
|
+
tslib_1.__metadata("design:type", Function),
|
|
293
|
+
tslib_1.__metadata("design:paramtypes", []),
|
|
294
|
+
tslib_1.__metadata("design:returntype", Array)
|
|
295
|
+
], ParameterSnapshot.prototype, "getRouteParameters", null);
|
|
296
|
+
tslib_1.__decorate([
|
|
297
|
+
Trace(),
|
|
298
|
+
tslib_1.__metadata("design:type", Function),
|
|
299
|
+
tslib_1.__metadata("design:paramtypes", [Injector]),
|
|
300
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
301
|
+
], ParameterSnapshot.prototype, "sanitise", null);
|
|
247
302
|
return ParameterSnapshot;
|
|
248
303
|
}());
|
|
249
304
|
export { ParameterSnapshot };
|
|
@@ -259,10 +314,13 @@ if (false) {
|
|
|
259
314
|
(function (ParameterSnapshot) {
|
|
260
315
|
/**
|
|
261
316
|
* @param {?} placeDef
|
|
262
|
-
* @param {?}
|
|
317
|
+
* @param {?} params
|
|
318
|
+
* @param {?} urlSegments
|
|
263
319
|
* @return {?}
|
|
264
320
|
*/
|
|
265
|
-
function create(placeDef,
|
|
321
|
+
function create(placeDef, params, urlSegments) {
|
|
322
|
+
/** @type {?} */
|
|
323
|
+
var paramMap = new ConsolidatedParameterMap(params, urlSegments);
|
|
266
324
|
/** @type {?} */
|
|
267
325
|
var resolvedParameters = placeDef.getRouteParameters()
|
|
268
326
|
.map((/**
|
|
@@ -272,7 +330,11 @@ if (false) {
|
|
|
272
330
|
function (def) {
|
|
273
331
|
if (def.isArray) {
|
|
274
332
|
/** @type {?} */
|
|
275
|
-
var value = paramMap.has(def.name) ? paramMap.getAll(def.name).
|
|
333
|
+
var value = paramMap.has(def.name) ? paramMap.getAll(def.name).filter((/**
|
|
334
|
+
* @param {?} s
|
|
335
|
+
* @return {?}
|
|
336
|
+
*/
|
|
337
|
+
function (s) { return !_.isEmpty(s); })).map((/**
|
|
276
338
|
* @param {?} raw
|
|
277
339
|
* @return {?}
|
|
278
340
|
*/
|
|
@@ -288,6 +350,140 @@ if (false) {
|
|
|
288
350
|
return new ParameterSnapshot(placeDef, resolvedParameters);
|
|
289
351
|
}
|
|
290
352
|
ParameterSnapshot.create = create;
|
|
353
|
+
/**
|
|
354
|
+
* This a work around for the fact that an activated route with multiple segments doesn't
|
|
355
|
+
* include the segment params in the paramMap as well as each segment returns an empty
|
|
356
|
+
* param map even when `parameter`s has content.
|
|
357
|
+
*/
|
|
358
|
+
var /**
|
|
359
|
+
* This a work around for the fact that an activated route with multiple segments doesn't
|
|
360
|
+
* include the segment params in the paramMap as well as each segment returns an empty
|
|
361
|
+
* param map even when `parameter`s has content.
|
|
362
|
+
*/
|
|
363
|
+
ConsolidatedParameterMap = /** @class */ (function () {
|
|
364
|
+
function ConsolidatedParameterMap(paramMap, urlSegments) {
|
|
365
|
+
this.paramMaps = [paramMap].concat((urlSegments || []).map((/**
|
|
366
|
+
* @param {?} s
|
|
367
|
+
* @return {?}
|
|
368
|
+
*/
|
|
369
|
+
function (s) { return new ParamMapAdapter(s.parameters); }))).filter((/**
|
|
370
|
+
* @param {?} m
|
|
371
|
+
* @return {?}
|
|
372
|
+
*/
|
|
373
|
+
function (m) { return !!m; })); // the activated route param map can be null
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* @param {?} name
|
|
377
|
+
* @return {?}
|
|
378
|
+
*/
|
|
379
|
+
ConsolidatedParameterMap.prototype.get = /**
|
|
380
|
+
* @param {?} name
|
|
381
|
+
* @return {?}
|
|
382
|
+
*/
|
|
383
|
+
function (name) {
|
|
384
|
+
return this.paramMaps.find((/**
|
|
385
|
+
* @param {?} m
|
|
386
|
+
* @return {?}
|
|
387
|
+
*/
|
|
388
|
+
function (m) { return m.has(name); })).get(name);
|
|
389
|
+
};
|
|
390
|
+
/**
|
|
391
|
+
* @param {?} name
|
|
392
|
+
* @return {?}
|
|
393
|
+
*/
|
|
394
|
+
ConsolidatedParameterMap.prototype.getAll = /**
|
|
395
|
+
* @param {?} name
|
|
396
|
+
* @return {?}
|
|
397
|
+
*/
|
|
398
|
+
function (name) {
|
|
399
|
+
return this.paramMaps.find((/**
|
|
400
|
+
* @param {?} m
|
|
401
|
+
* @return {?}
|
|
402
|
+
*/
|
|
403
|
+
function (m) { return m.has(name); })).getAll(name);
|
|
404
|
+
};
|
|
405
|
+
/**
|
|
406
|
+
* @param {?} name
|
|
407
|
+
* @return {?}
|
|
408
|
+
*/
|
|
409
|
+
ConsolidatedParameterMap.prototype.has = /**
|
|
410
|
+
* @param {?} name
|
|
411
|
+
* @return {?}
|
|
412
|
+
*/
|
|
413
|
+
function (name) {
|
|
414
|
+
return !!this.paramMaps.find((/**
|
|
415
|
+
* @param {?} m
|
|
416
|
+
* @return {?}
|
|
417
|
+
*/
|
|
418
|
+
function (m) { return m.has(name); }));
|
|
419
|
+
};
|
|
420
|
+
return ConsolidatedParameterMap;
|
|
421
|
+
}());
|
|
422
|
+
if (false) {
|
|
423
|
+
/**
|
|
424
|
+
* @type {?}
|
|
425
|
+
* @private
|
|
426
|
+
*/
|
|
427
|
+
ConsolidatedParameterMap.prototype.paramMaps;
|
|
428
|
+
}
|
|
429
|
+
var ParamMapAdapter = /** @class */ (function () {
|
|
430
|
+
function ParamMapAdapter(params) {
|
|
431
|
+
this.params = params;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* @param {?} name
|
|
435
|
+
* @return {?}
|
|
436
|
+
*/
|
|
437
|
+
ParamMapAdapter.prototype.get = /**
|
|
438
|
+
* @param {?} name
|
|
439
|
+
* @return {?}
|
|
440
|
+
*/
|
|
441
|
+
function (name) {
|
|
442
|
+
return this.params[name];
|
|
443
|
+
};
|
|
444
|
+
/**
|
|
445
|
+
* @param {?} name
|
|
446
|
+
* @return {?}
|
|
447
|
+
*/
|
|
448
|
+
ParamMapAdapter.prototype.getAll = /**
|
|
449
|
+
* @param {?} name
|
|
450
|
+
* @return {?}
|
|
451
|
+
*/
|
|
452
|
+
function (name) {
|
|
453
|
+
/** @type {?} */
|
|
454
|
+
var value = this.get(name);
|
|
455
|
+
return Array.isArray(value) ? value : [value];
|
|
456
|
+
};
|
|
457
|
+
/**
|
|
458
|
+
* @param {?} name
|
|
459
|
+
* @return {?}
|
|
460
|
+
*/
|
|
461
|
+
ParamMapAdapter.prototype.has = /**
|
|
462
|
+
* @param {?} name
|
|
463
|
+
* @return {?}
|
|
464
|
+
*/
|
|
465
|
+
function (name) {
|
|
466
|
+
return this.keys.includes(name);
|
|
467
|
+
};
|
|
468
|
+
Object.defineProperty(ParamMapAdapter.prototype, "keys", {
|
|
469
|
+
get: /**
|
|
470
|
+
* @return {?}
|
|
471
|
+
*/
|
|
472
|
+
function () {
|
|
473
|
+
return Object.keys(this.params);
|
|
474
|
+
},
|
|
475
|
+
enumerable: true,
|
|
476
|
+
configurable: true
|
|
477
|
+
});
|
|
478
|
+
return ParamMapAdapter;
|
|
479
|
+
}());
|
|
480
|
+
if (false) {
|
|
481
|
+
/**
|
|
482
|
+
* @type {?}
|
|
483
|
+
* @private
|
|
484
|
+
*/
|
|
485
|
+
ParamMapAdapter.prototype.params;
|
|
486
|
+
}
|
|
291
487
|
/**
|
|
292
488
|
* @abstract
|
|
293
489
|
* @template T, S
|
|
@@ -310,6 +506,31 @@ if (false) {
|
|
|
310
506
|
function () {
|
|
311
507
|
return this.parameterDef.isRouteId;
|
|
312
508
|
};
|
|
509
|
+
/**
|
|
510
|
+
* @param {?} visit
|
|
511
|
+
* @param {?} injector
|
|
512
|
+
* @return {?}
|
|
513
|
+
*/
|
|
514
|
+
ResolvedParameter.prototype.sanitise = /**
|
|
515
|
+
* @param {?} visit
|
|
516
|
+
* @param {?} injector
|
|
517
|
+
* @return {?}
|
|
518
|
+
*/
|
|
519
|
+
function (visit, injector) {
|
|
520
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
521
|
+
var sanitiser;
|
|
522
|
+
return tslib_1.__generator(this, function (_a) {
|
|
523
|
+
sanitiser = this.parameterDef.getSanitiser(injector);
|
|
524
|
+
if (sanitiser) {
|
|
525
|
+
return [2 /*return*/, sanitiser.sanitise(this.parameterDef, this.value, visit)];
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
return [2 /*return*/, this.value];
|
|
529
|
+
}
|
|
530
|
+
return [2 /*return*/];
|
|
531
|
+
});
|
|
532
|
+
});
|
|
533
|
+
};
|
|
313
534
|
return ResolvedParameter;
|
|
314
535
|
}());
|
|
315
536
|
ParameterSnapshot.ResolvedParameter = ResolvedParameter;
|
|
@@ -345,7 +566,10 @@ if (false) {
|
|
|
345
566
|
/**
|
|
346
567
|
* @template T
|
|
347
568
|
*/
|
|
348
|
-
var
|
|
569
|
+
var /**
|
|
570
|
+
* @template T
|
|
571
|
+
*/
|
|
572
|
+
ResolvedValueParameter = /** @class */ (function (_super) {
|
|
349
573
|
tslib_1.__extends(ResolvedValueParameter, _super);
|
|
350
574
|
function ResolvedValueParameter() {
|
|
351
575
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
@@ -392,19 +616,16 @@ if (false) {
|
|
|
392
616
|
function () {
|
|
393
617
|
return !_.isNil(this.value) ? this.parameterDef.type.format(this.value) : null;
|
|
394
618
|
};
|
|
395
|
-
tslib_1.__decorate([
|
|
396
|
-
Trace(),
|
|
397
|
-
tslib_1.__metadata("design:type", Function),
|
|
398
|
-
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
399
|
-
tslib_1.__metadata("design:returntype", Boolean)
|
|
400
|
-
], ResolvedValueParameter.prototype, "isSame", null);
|
|
401
619
|
return ResolvedValueParameter;
|
|
402
620
|
}(ResolvedParameter));
|
|
403
621
|
ParameterSnapshot.ResolvedValueParameter = ResolvedValueParameter;
|
|
404
622
|
/**
|
|
405
623
|
* @template T
|
|
406
624
|
*/
|
|
407
|
-
var
|
|
625
|
+
var /**
|
|
626
|
+
* @template T
|
|
627
|
+
*/
|
|
628
|
+
ResolvedArrayParameter = /** @class */ (function (_super) {
|
|
408
629
|
tslib_1.__extends(ResolvedArrayParameter, _super);
|
|
409
630
|
function ResolvedArrayParameter() {
|
|
410
631
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
@@ -461,14 +682,8 @@ if (false) {
|
|
|
461
682
|
*/
|
|
462
683
|
function (v) { return _this.parameterDef.type.format(v); })) : [];
|
|
463
684
|
};
|
|
464
|
-
tslib_1.__decorate([
|
|
465
|
-
Trace(),
|
|
466
|
-
tslib_1.__metadata("design:type", Function),
|
|
467
|
-
tslib_1.__metadata("design:paramtypes", [Array]),
|
|
468
|
-
tslib_1.__metadata("design:returntype", Boolean)
|
|
469
|
-
], ResolvedArrayParameter.prototype, "isSame", null);
|
|
470
685
|
return ResolvedArrayParameter;
|
|
471
686
|
}(ResolvedParameter));
|
|
472
687
|
ParameterSnapshot.ResolvedArrayParameter = ResolvedArrayParameter;
|
|
473
688
|
})(ParameterSnapshot || (ParameterSnapshot = {}));
|
|
474
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzNFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOzs7OztBQVM1QjtJQUVFLDJCQUFxQixlQUEwQyxFQUFtQixRQUF5RDtRQUF0SCxvQkFBZSxHQUFmLGVBQWUsQ0FBMkI7UUFBbUIsYUFBUSxHQUFSLFFBQVEsQ0FBaUQ7SUFDM0ksQ0FBQzs7Ozs7SUFFRCxzQ0FBVTs7OztJQUFWLFVBQVcsS0FBd0I7O1lBQzNCLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7Ozs7UUFBQyxVQUFDLENBQUM7WUFDbkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsRUFBQztRQUNGLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzFGO1FBQ0QsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ25CLENBQUM7Ozs7O0lBRUQsd0NBQVk7Ozs7SUFBWixVQUFhLEtBQXdCO1FBQ25DLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDOztZQUNsQyxV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Ozs7O1FBaEJDLHVDQUFNOzs7O1FBQU4sVUFBTyxVQUFlO1lBQ3BCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7Ozs7O1FBRUQsaURBQWdCOzs7O1FBQWhCLFVBQWlCLElBQVE7WUFBekIsaUJBRUM7WUFEQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBaEMsQ0FBZ0MsRUFBQyxDQUFDO1FBQ3ZGLENBQUM7Ozs7O1FBRUQsd0NBQU87Ozs7UUFBUCxVQUFRLEtBQVU7WUFDaEIsT0FBTyxJQUFJLHNCQUFzQixDQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakUsQ0FBQzs7OztRQUVELCtDQUFjOzs7UUFBZDtZQUFBLGlCQUVDO1lBREMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBaEMsQ0FBZ0MsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakYsQ0FBQztRQWREO1lBREMsS0FBSyxFQUFFOzs7OzREQUdQO1FBY0gsNkJBQUM7S0FBQSxBQWxCRCxDQUErQyxpQkFBaUIsR0FrQi9EO0lBbEJZLHdDQUFzQix5QkFrQmxDLENBQUE7QUFHSCxDQUFDLEVBMUVnQixpQkFBaUIsS0FBakIsaUJBQWlCLFFBMEVqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcmFtTWFwLCBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGFzc2VydCwgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQHR5cGVzY3JpcHQtcGx1cy9mYXN0LW1lbW9pemUtZGVjb3JhdG9yL2Rpc3Qvc3JjJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vdmlzaXQnO1xuaW1wb3J0IHsgUGFyYW1ldGVyRGVmaW5pdGlvbiB9IGZyb20gJy4vcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MnO1xuXG4vLyBUT0RPOiB0aGVyZSBhcmUgcmVhbGx5IHR3byB0eXBlcyBvZiBzbmFwc2hvdCwgb25lcyB3aXRoIGlkJ3MgYW5kIG9uZXMgd2l0aG91dC5cbi8vIElkIHNuYXBzaG90IGFyZSByZXBlc2VudGVkIGJ5IDIgdXJsIHNlZ21lbnRzXG4vLyBJRCA9PiBbeycvYmFzZVBhdGgnLCBwYXJhbXN9LCB7J2lkJywgcGFyYW1zfV1cbi8vIE5PIElEID0+IFt7Jy9iYXNlUGF0aCcsIHBhcmFtc31dXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyU25hcHNob3QgaW1wbGVtZW50cyBWaXNpdCB7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgcGxhY2VEZWZpbml0aW9uOiBQbGFjZUNvbXBvbmVudC5EZWZpbml0aW9uLCBwcml2YXRlIHJlYWRvbmx5IHJlc29sdmVkOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxhbnksIGFueT5bXSkge1xuICB9XG5cbiAgaGFzQ2hhbmdlZChvdGhlcjogUGFyYW1ldGVyU25hcHNob3QpOiBib29sZWFuIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5yZXNvbHZlZC5maW5kKChyKSA9PiB7XG4gICAgICByZXR1cm4gIXIuaXNTYW1lKG90aGVyLmdldFJlc29sdmVkUGFyYW1ldGVyVmFsdWUoci5wYXJhbWV0ZXJEZWYpKTtcbiAgICB9KTtcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgY29uc29sZS5sb2coeyBtaW5lOiBjaGFuZ2VkLCB0aGVpcnM6IG90aGVyLmdldFJlc29sdmVkUGFyYW1ldGVyKGNoYW5nZWQucGFyYW1ldGVyRGVmKSB9KTtcbiAgICB9XG4gICAgcmV0dXJuICEhY2hhbmdlZDtcbiAgfVxuXG4gIGFzVXJsU2VnbWVudChvdGhlcjogUGFyYW1ldGVyU25hcHNob3QpOiBhbnlbXSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMuaGFzQ2hhbmdlZChvdGhlcikpO1xuICAgIGNvbnN0IHJvdXRlUGFydHMgPSBbXTtcbiAgICBjb25zdCBnYWluZWRJZCA9IHRoaXMuZ2V0Rm9ybWF0dGVkUm91dGVJZCgpICYmICFvdGhlci5nZXRGb3JtYXR0ZWRSb3V0ZUlkKCk7XG4gICAgY29uc3Qgc2FtZUlkID0gdGhpcy5nZXRGb3JtYXR0ZWRSb3V0ZUlkKCkgPT09IG90aGVyLmdldEZvcm1hdHRlZFJvdXRlSWQoKTtcbiAgICBjb25zdCBsb3N0SWQgPSAoIXRoaXMuZ2V0Rm9ybWF0dGVkUm91dGVJZCgpICYmIG90aGVyLmdldEZvcm1hdHRlZFJvdXRlSWQoKSk7XG4gICAgY29uc3QgY2hhbmdlZElkID0gKHRoaXMuZ2V0Rm9ybWF0dGVkUm91dGVJZCgpICE9PSBvdGhlci5nZXRGb3JtYXR0ZWRSb3V0ZUlkKCkpO1xuICAgIGlmIChsb3N0SWQgfHwgY2hhbmdlZElkKSB7XG4gICAgICByb3V0ZVBhcnRzLnB1c2goJy4uJyk7XG4gICAgICBpZiAoY2hhbmdlZElkKSB7XG4gICAgICAgIHJvdXRlUGFydHMucHVzaCh0aGlzLmdldEZvcm1hdHRlZFJvdXRlSWQoKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdXRlUGFydHMucHVzaCgnLicpO1xuICAgIH1cbiAgICByb3V0ZVBhcnRzLnB1c2godGhpcy5nZXRGb3JtYXR0ZWRQYXJhbWV0ZXJzKCkpO1xuICAgIHJldHVybiByb3V0ZVBhcnRzO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRSZXNvbHZlZFBhcmFtZXRlcjxULCBTPihwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4pOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxULCBTPiB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQuZmluZChyID0+IHIucGFyYW1ldGVyRGVmID09PSBwYXJhbWV0ZXJEZWYpO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRSZXNvbHZlZFBhcmFtZXRlclZhbHVlPFQsIFM+KHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPik6IFMge1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVyID0gdGhpcy5nZXRSZXNvbHZlZFBhcmFtZXRlcihwYXJhbWV0ZXJEZWYpO1xuICAgIHJldHVybiByZXNvbHZlZFBhcmFtZXRlciA/IHJlc29sdmVkUGFyYW1ldGVyLnZhbHVlIDogbnVsbDtcbiAgfVxuXG4gIGdldFJvdXRlSWQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvbHZlZFJvdXRlSWQoKSA/IHRoaXMuZ2V0UmVzb2x2ZWRSb3V0ZUlkKCkudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRSb3V0ZVBhcmFtZXRlcihuYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVyID0gdGhpcy5yZXNvbHZlZC5maW5kKHIgPT4gci5wYXJhbWV0ZXJEZWYubmFtZSA9PT0gbmFtZSk7XG4gICAgcmV0dXJuIHJlc29sdmVkUGFyYW1ldGVyID8gcmVzb2x2ZWRQYXJhbWV0ZXIudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBwcml2YXRlIGdldFJlc29sdmVkUm91dGVJZCgpOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFZhbHVlUGFyYW1ldGVyPGFueT4ge1xuICAgIC8vIFJvdXRlSWQncyBhcmUgbmV2ZXIgYXJyYXlzOiBzZWUgcGFyYW1ldGVyLWRlY29yYXRvcnMudHMgY3JlYXRlRGVmaW5pdGlvbiBtZXRob2RzLiBJdCB3b3VsZCBiZSBuaWNlIHRvXG4gICAgLy8gY2FwdHVyZSB0aGlzIGluIHRoZSB0eXBlIHN5c3RlbSB0aG91Z2hcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZC5maW5kKHAgPT4gcC5wYXJhbWV0ZXJEZWYuaXNSb3V0ZUlkKSBhcyBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFZhbHVlUGFyYW1ldGVyPGFueT47XG4gIH1cblxuICBoYXNSb3V0ZUlkKCkge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0UmVzb2x2ZWRSb3V0ZUlkKCk7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWRSb3V0ZUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5nZXRSZXNvbHZlZFJvdXRlSWQoKTtcbiAgICByZXR1cm4gcm91dGVJZFBhcmFtID8gcm91dGVJZFBhcmFtLmZvcm1hdHRlZFZhbHVlKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0Rm9ybWF0dGVkUGFyYW1ldGVycygpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgICBjb25zdCByb3V0ZUlkUGFyYW0gPSB0aGlzLnJlc29sdmVkLmZpbHRlcihwID0+ICFwLnBhcmFtZXRlckRlZi5pc1JvdXRlSWQpLmZvckVhY2gocCA9PiB7XG4gICAgICBwYXJhbXNbcC5wYXJhbWV0ZXJEZWYubmFtZV0gPSBwLmZvcm1hdHRlZFZhbHVlKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIHJlcGxhY2U8VCwgUz4ocGFyYW1ldGVyOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+LCB2YWx1ZTogUyk6IFBhcmFtZXRlclNuYXBzaG90IHtcbiAgICByZXR1cm4gbmV3IFBhcmFtZXRlclNuYXBzaG90KHRoaXMucGxhY2VEZWZpbml0aW9uLCB0aGlzLnJlc29sdmVkLm1hcChwID0+IHtcbiAgICAgIHJldHVybiBwLnBhcmFtZXRlckRlZiA9PT0gcGFyYW1ldGVyID8gcC5yZXBsYWNlKHZhbHVlKSA6IHA7XG4gICAgfSkpO1xuICB9XG5cbiAgdXBkYXRlVXJsKHVybDogVXJsU2VnbWVudFtdKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBhcmFtZXRlclNuYXBzaG90IHtcblxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlKHBsYWNlRGVmOiBQbGFjZUNvbXBvbmVudC5EZWZpbml0aW9uLCBwYXJhbU1hcDogUGFyYW1NYXApOiBQYXJhbWV0ZXJTbmFwc2hvdCB7XG4gICAgY29uc3QgcmVzb2x2ZWRQYXJhbWV0ZXJzOiBSZXNvbHZlZFBhcmFtZXRlcjxhbnksIGFueT5bXSA9IHBsYWNlRGVmLmdldFJvdXRlUGFyYW1ldGVycygpXG4gICAgICAubWFwKGRlZiA9PiB7XG4gICAgICBpZiAoZGVmLmlzQXJyYXkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbU1hcC5oYXMoZGVmLm5hbWUpID8gcGFyYW1NYXAuZ2V0QWxsKGRlZi5uYW1lKS5tYXAocmF3ID0+IGRlZi50eXBlLnBhcnNlKHJhdykpIDogbnVsbDtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNvbHZlZEFycmF5UGFyYW1ldGVyKGRlZiwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbU1hcC5oYXMoZGVmLm5hbWUpID8gZGVmLnR5cGUucGFyc2UocGFyYW1NYXAuZ2V0KGRlZi5uYW1lKSkgOiBudWxsO1xuICAgICAgICByZXR1cm4gbmV3IFJlc29sdmVkVmFsdWVQYXJhbWV0ZXIoZGVmLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBQYXJhbWV0ZXJTbmFwc2hvdChwbGFjZURlZiwgcmVzb2x2ZWRQYXJhbWV0ZXJzKTtcbiAgfVxuXG5cbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlc29sdmVkUGFyYW1ldGVyPFQsIFMgPSBUPiB7XG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgcGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+LCByZWFkb25seSB2YWx1ZTogUykge1xuICAgIH1cblxuICAgIGFic3RyYWN0IGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgaXNTYW1lKG90aGVyVmFsdWU6IFMpOiBib29sZWFuO1xuXG4gICAgaXNSb3V0ZUlkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1ldGVyRGVmLmlzUm91dGVJZDtcbiAgICB9XG5cbiAgICBhYnN0cmFjdCBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAgIGFic3RyYWN0IHJlcGxhY2UodmFsdWU6IFMpOiBSZXNvbHZlZFBhcmFtZXRlcjxULCBTPjtcbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBSZXNvbHZlZFZhbHVlUGFyYW1ldGVyPFQ+IGV4dGVuZHMgUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVD4ge1xuICAgIEBUcmFjZSgpXG4gICAgaXNTYW1lKG90aGVyVmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBvdGhlclZhbHVlO1xuICAgIH1cblxuICAgIGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pOiB2b2lkIHtcbiAgICAgIGRlc3RbdGhpcy5wYXJhbWV0ZXJEZWYubmFtZV0gPSB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXBsYWNlKHZhbHVlOiBUKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVD4ge1xuICAgICAgcmV0dXJuIG5ldyBSZXNvbHZlZFZhbHVlUGFyYW1ldGVyPFQ+KHRoaXMucGFyYW1ldGVyRGVmLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAhXy5pc05pbCh0aGlzLnZhbHVlKSA/IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHRoaXMudmFsdWUpIDogbnVsbDtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgUmVzb2x2ZWRBcnJheVBhcmFtZXRlcjxUPiBleHRlbmRzIFJlc29sdmVkUGFyYW1ldGVyPFQsIFRbXT4ge1xuICAgIEBUcmFjZSgpXG4gICAgaXNTYW1lKG90aGVyVmFsdWU6IFRbXSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIF8uaXNFcXVhbCh0aGlzLnZhbHVlLCBvdGhlclZhbHVlKTtcbiAgICB9XG5cbiAgICBpbmplY3RSb3V0ZVBhcmFtKGRlc3Q6IHt9KTogdm9pZCB7XG4gICAgICBkZXN0W3RoaXMucGFyYW1ldGVyRGVmLm5hbWVdID0gdGhpcy52YWx1ZS5tYXAodiA9PiB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh2KSk7XG4gICAgfVxuXG4gICAgcmVwbGFjZSh2YWx1ZTogVFtdKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVFtdPiB7XG4gICAgICByZXR1cm4gbmV3IFJlc29sdmVkQXJyYXlQYXJhbWV0ZXI8VD4odGhpcy5wYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUubWFwKHYgPT4gdGhpcy5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQodikpIDogW107XG4gICAgfVxuXG4gIH1cblxuXG59XG4iXX0=
|
|
689
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFHdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkU7SUFFRSwyQkFBcUIsZUFBZ0MsRUFBbUIsUUFBeUQ7UUFBNUcsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQW1CLGFBQVEsR0FBUixRQUFRLENBQWlEO0lBQ2pJLENBQUM7Ozs7OztJQUVELHNDQUFVOzs7OztJQUFWLFVBQVcsS0FBd0IsRUFBRSxLQUFhO1FBQWIsc0JBQUEsRUFBQSxhQUFhOztZQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJOzs7O1FBQUMsVUFBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxFQUFDO1FBQ0YsSUFBSSxPQUFPLElBQUksS0FBSyxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSTtnQkFDL0IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLO2dCQUNuQixNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO2FBQy9DLENB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QXpCLGlCQUVDO1lBREMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHOzs7O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWhDLENBQWdDLEVBQUMsQ0FBQztRQUN2RixDQUFDOzs7OztRQUVELHdDQUFPOzs7O1FBQVAsVUFBUSxLQUFVO1lBQ2hCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLENBQUM7Ozs7UUFFRCwrQ0FBYzs7O1FBQWQ7WUFBQSxpQkFFQztZQURDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHOzs7O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWhDLENBQWdDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pGLENBQUM7UUFFSCw2QkFBQztJQUFELENBQUMsQUFsQkQsQ0FBK0MsaUJBQWlCLEdBa0IvRDtJQWxCWSx3Q0FBc0IseUJBa0JsQyxDQUFBO0FBRUgsQ0FBQyxFQXRJZ0IsaUJBQWlCLEtBQWpCLGlCQUFpQixRQXNJakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUGFyYW1NYXAsIFVybFNlZ21lbnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQHR5cGVzY3JpcHQtcGx1cy9mYXN0LW1lbW9pemUtZGVjb3JhdG9yL2Rpc3Qvc3JjJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vdmlzaXQnO1xuaW1wb3J0IHsgUGFyYW1ldGVyRGVmaW5pdGlvbiB9IGZyb20gJy4vcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyU25hcHNob3QgaW1wbGVtZW50cyBWaXNpdCB7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgcGxhY2VEZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb24sIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZWQ6IFBhcmFtZXRlclNuYXBzaG90LlJlc29sdmVkUGFyYW1ldGVyPGFueSwgYW55PltdKSB7XG4gIH1cblxuICBoYXNDaGFuZ2VkKG90aGVyOiBQYXJhbWV0ZXJTbmFwc2hvdCwgZGVidWcgPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLnJlc29sdmVkLmZpbmQoKHIpID0+IHtcbiAgICAgIHJldHVybiAhci5pc1NhbWUob3RoZXIuZ2V0VmFsdWVPZihyLnBhcmFtZXRlckRlZikpO1xuICAgIH0pO1xuICAgIGlmIChjaGFuZ2VkICYmIGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyh7XG4gICAgICAgIG5hbWU6IGNoYW5nZWQucGFyYW1ldGVyRGVmLm5hbWUsXG4gICAgICAgIG1pbmU6IGNoYW5nZWQudmFsdWUsXG4gICAgICAgIHRoZWlyczogb3RoZXIuZ2V0VmFsdWVPZihjaGFuZ2VkLnBhcmFtZXRlckRlZilcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gISFjaGFuZ2VkO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRQYXJhbWV0ZXI8VCwgUz4ocGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+KTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgUz4ge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkLmZpbmQociA9PiByLnBhcmFtZXRlckRlZiA9PT0gcGFyYW1ldGVyRGVmKTtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0VmFsdWVPZjxULCBTPihwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4pOiBTIHtcbiAgICBjb25zdCByZXNvbHZlZFBhcmFtZXRlciA9IHRoaXMuZ2V0UGFyYW1ldGVyKHBhcmFtZXRlckRlZik7XG4gICAgcmV0dXJuIHJlc29sdmVkUGFyYW1ldGVyID8gcmVzb2x2ZWRQYXJhbWV0ZXIudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgZ2V0Um91dGVJZFZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Um91dGVJZFBhcmFtZXRlcigpID8gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCkudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRQYXJhbWV0ZXJWYWx1ZShuYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVyID0gdGhpcy5yZXNvbHZlZC5maW5kKHIgPT4gci5wYXJhbWV0ZXJEZWYubmFtZSA9PT0gbmFtZSk7XG4gICAgcmV0dXJuIHJlc29sdmVkUGFyYW1ldGVyID8gcmVzb2x2ZWRQYXJhbWV0ZXIudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBwcml2YXRlIGdldFJvdXRlSWRQYXJhbWV0ZXIoKTogUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRWYWx1ZVBhcmFtZXRlcjxhbnk+IHtcbiAgICAvLyBSb3V0ZUlkJ3MgYXJlIG5ldmVyIGFycmF5czogc2VlIHBhcmFtZXRlci1kZWNvcmF0b3JzLnRzIGNyZWF0ZURlZmluaXRpb24gbWV0aG9kcy4gSXQgd291bGQgYmUgbmljZSB0b1xuICAgIC8vIGNhcHR1cmUgdGhpcyBpbiB0aGUgdHlwZSBzeXN0ZW0gdGhvdWdoXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQuZmluZChwID0+IHAucGFyYW1ldGVyRGVmLmlzUm91dGVJZCkgYXMgUGFyYW1ldGVyU25hcHNob3QuUmVzb2x2ZWRWYWx1ZVBhcmFtZXRlcjxhbnk+O1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBwcml2YXRlIGdldFJvdXRlUGFyYW1ldGVycygpOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxhbnksIGFueT5bXSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQuZmlsdGVyKHIgPT4gIXIucGFyYW1ldGVyRGVmLmlzUm91dGVJZCk7XG4gIH1cblxuXG4gIGhhc1JvdXRlSWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWRSb3V0ZUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gICAgcmV0dXJuIHJvdXRlSWRQYXJhbSA/IHJvdXRlSWRQYXJhbS5mb3JtYXR0ZWRWYWx1ZSgpIDogbnVsbDtcbiAgfVxuXG4gIGdldEZvcm1hdHRlZFBhcmFtZXRlcnMoKSB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5yZXNvbHZlZC5maWx0ZXIocCA9PiAhcC5wYXJhbWV0ZXJEZWYuaXNSb3V0ZUlkKS5mb3JFYWNoKHAgPT4ge1xuICAgICAgcGFyYW1zW3AucGFyYW1ldGVyRGVmLm5hbWVdID0gcC5mb3JtYXR0ZWRWYWx1ZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICBnZXRBbGxGb3JtYXR0ZWRQYXJhbWV0ZXJzKCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IHJvdXRlSWRQYXJhbSA9IHRoaXMucmVzb2x2ZWQuZm9yRWFjaChwID0+IHtcbiAgICAgIHBhcmFtc1twLnBhcmFtZXRlckRlZi5uYW1lXSA9IHAuZm9ybWF0dGVkVmFsdWUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgcmVwbGFjZTxULCBTPihwYXJhbWV0ZXI6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4sIHZhbHVlOiBTKTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgIHJldHVybiBuZXcgUGFyYW1ldGVyU25hcHNob3QodGhpcy5wbGFjZURlZmluaXRpb24sIHRoaXMucmVzb2x2ZWQubWFwKHAgPT4ge1xuICAgICAgcmV0dXJuIHAucGFyYW1ldGVyRGVmID09PSBwYXJhbWV0ZXIgPyBwLnJlcGxhY2UodmFsdWUpIDogcDtcbiAgICB9KSk7XG4gIH1cblxuICBAVHJhY2UoKVxuICBhc3luYyBzYW5pdGlzZShpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPFBhcmFtZXRlclNuYXBzaG90PiB7XG4gICAgaWYgKHRoaXMuaGFzUm91dGVJZCgpKSB7XG4gICAgICBjb25zdCByb3V0ZUlkID0gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gICAgICBjb25zdCBzYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IHJvdXRlSWQuc2FuaXRpc2UodGhpcywgaW5qZWN0b3IpO1xuICAgICAgaWYgKCFyb3V0ZUlkLmlzU2FtZShzYW5pdGlzZWRWYWx1ZSkpIHtcbiAgICAgICAgLy8gaWYgdGhlIHJvdXRlIGlkIGhhcyBjaGFuZ2VkIHdlIHJlZGlyZWN0IGltbWVkaWF0ZWx5IGFzIG90aGVyXG4gICAgICAgIC8vIHBhcmFtZXRlciBzYW5pdGlzZXJzIG1pZ2h0IHVzZSBpdC5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVwbGFjZShyb3V0ZUlkLnBhcmFtZXRlckRlZiwgc2FuaXRpc2VkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcmVzdWx0OiBQYXJhbWV0ZXJTbmFwc2hvdCA9IHRoaXM7XG4gICAgY29uc3Qgcm91dGVQYXJhbWV0ZXJzID0gdGhpcy5nZXRSb3V0ZVBhcmFtZXRlcnMoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdXRlUGFyYW1ldGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc2FuaXRpc2VkVmFsdWUgPSBhd2FpdCByb3V0ZVBhcmFtZXRlcnNbaV0uc2FuaXRpc2UodGhpcywgaW5qZWN0b3IpO1xuICAgICAgaWYgKCFyb3V0ZVBhcmFtZXRlcnNbaV0uaXNTYW1lKHNhbml0aXNlZFZhbHVlKSkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLnJlcGxhY2Uocm91dGVQYXJhbWV0ZXJzW2ldLnBhcmFtZXRlckRlZiwgc2FuaXRpc2VkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQYXJhbWV0ZXJTbmFwc2hvdCB7XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZShwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uLCBwYXJhbXM6IFBhcmFtTWFwLCB1cmxTZWdtZW50czpVcmxTZWdtZW50W10pOiBQYXJhbWV0ZXJTbmFwc2hvdCB7XG4gICAgY29uc3QgcGFyYW1NYXAgPSBuZXcgQ29uc29saWRhdGVkUGFyYW1ldGVyTWFwKHBhcmFtcywgdXJsU2VnbWVudHMpO1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVyczogUmVzb2x2ZWRQYXJhbWV0ZXI8YW55LCBhbnk+W10gPSBwbGFjZURlZi5nZXRSb3V0ZVBhcmFtZXRlcnMoKVxuICAgICAgLm1hcChkZWYgPT4ge1xuICAgICAgICBpZiAoZGVmLmlzQXJyYXkpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtTWFwLmhhcyhkZWYubmFtZSkgPyBwYXJhbU1hcC5nZXRBbGwoZGVmLm5hbWUpLmZpbHRlcihzID0+ICFfLmlzRW1wdHkocykpLm1hcChyYXcgPT4gZGVmLnR5cGUucGFyc2UocmF3KSkgOiBudWxsO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzb2x2ZWRBcnJheVBhcmFtZXRlcihkZWYsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtTWFwLmhhcyhkZWYubmFtZSkgPyBkZWYudHlwZS5wYXJzZShwYXJhbU1hcC5nZXQoZGVmLm5hbWUpKSA6IG51bGw7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXNvbHZlZFZhbHVlUGFyYW1ldGVyKGRlZiwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICByZXR1cm4gbmV3IFBhcmFtZXRlclNuYXBzaG90KHBsYWNlRGVmLCByZXNvbHZlZFBhcmFtZXRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgYSB3b3JrIGFyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCBhbiBhY3RpdmF0ZWQgcm91dGUgd2l0aCBtdWx0aXBsZSBzZWdtZW50cyBkb2Vzbid0XG4gICAqIGluY2x1ZGUgdGhlIHNlZ21lbnQgcGFyYW1zIGluIHRoZSBwYXJhbU1hcCBhcyB3ZWxsIGFzIGVhY2ggc2VnbWVudCByZXR1cm5zIGFuIGVtcHR5XG4gICAqIHBhcmFtIG1hcCBldmVuIHdoZW4gYHBhcmFtZXRlcmBzIGhhcyBjb250ZW50LlxuICAgKi9cbiAgY2xhc3MgQ29uc29saWRhdGVkUGFyYW1ldGVyTWFwIHtcblxuICAgIHByaXZhdGUgcGFyYW1NYXBzOiBQYXJhbU1hcFtdO1xuXG4gICAgY29uc3RydWN0b3IocGFyYW1NYXA6UGFyYW1NYXAsIHVybFNlZ21lbnRzOlVybFNlZ21lbnRbXSkge1xuICAgICAgdGhpcy5wYXJhbU1hcHMgPSBbcGFyYW1NYXBdLmNvbmNhdChcbiAgICAgICAgKHVybFNlZ21lbnRzIHx8IFtdKS5tYXAocyA9PiBuZXcgUGFyYW1NYXBBZGFwdGVyKHMucGFyYW1ldGVycykpXG4gICAgICApLmZpbHRlcihtID0+ICEhbSk7IC8vIHRoZSBhY3RpdmF0ZWQgcm91dGUgcGFyYW0gbWFwIGNhbiBiZSBudWxsXG4gICAgfVxuXG4gICAgZ2V0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSkuZ2V0KG5hbWUpO1xuICAgIH1cblxuICAgIGdldEFsbChuYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbU1hcHMuZmluZChtID0+IG0uaGFzKG5hbWUpKS5nZXRBbGwobmFtZSk7XG4gICAgfVxuXG4gICAgaGFzKG5hbWU6c3RyaW5nKTpib29sZWFuIHtcbiAgICAgIHJldHVybiAhIXRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSk7XG4gICAgfVxuICB9XG5cbiAgY2xhc3MgUGFyYW1NYXBBZGFwdGVyIGltcGxlbWVudHMgUGFyYW1NYXAge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGFyYW1zOiB7IFtwOiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIH1cblxuICAgIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtc1tuYW1lXTtcbiAgICB9XG5cbiAgICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChuYW1lKTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICB9XG5cbiAgICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5rZXlzLmluY2x1ZGVzKG5hbWUpO1xuICAgIH1cblxuICAgIGdldCBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnBhcmFtcyk7XG4gICAgfVxuXG4gIH1cblxuXG4gIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXNvbHZlZFBhcmFtZXRlcjxULCBTID0gVD4ge1xuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPiwgcmVhZG9ubHkgdmFsdWU6IFMpIHtcbiAgICB9XG5cbiAgICBhYnN0cmFjdCBpbmplY3RSb3V0ZVBhcmFtKGRlc3Q6IHt9KTogdm9pZDtcblxuICAgIGFic3RyYWN0IGlzU2FtZShvdGhlclZhbHVlOiBTKTogYm9vbGVhbjtcblxuICAgIGlzUm91dGVJZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckRlZi5pc1JvdXRlSWQ7XG4gICAgfVxuXG4gICAgYWJzdHJhY3QgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgICBhYnN0cmFjdCByZXBsYWNlKHZhbHVlOiBTKTogUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgUz47XG5cbiAgICBhc3luYyBzYW5pdGlzZSh2aXNpdDogVmlzaXQsIGluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8Uz4ge1xuICAgICAgY29uc3Qgc2FuaXRpc2VyID0gdGhpcy5wYXJhbWV0ZXJEZWYuZ2V0U2FuaXRpc2VyKGluamVjdG9yKTtcbiAgICAgIGlmIChzYW5pdGlzZXIpIHtcbiAgICAgICAgcmV0dXJuIHNhbml0aXNlci5zYW5pdGlzZSh0aGlzLnBhcmFtZXRlckRlZiwgdGhpcy52YWx1ZSwgdmlzaXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIFJlc29sdmVkVmFsdWVQYXJhbWV0ZXI8VD4gZXh0ZW5kcyBSZXNvbHZlZFBhcmFtZXRlcjxULCBUPiB7XG5cbiAgICBpc1NhbWUob3RoZXJWYWx1ZTogVCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IG90aGVyVmFsdWU7XG4gICAgfVxuXG4gICAgaW5qZWN0Um91dGVQYXJhbShkZXN0OiB7fSk6IHZvaWQge1xuICAgICAgZGVzdFt0aGlzLnBhcmFtZXRlckRlZi5uYW1lXSA9IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHJlcGxhY2UodmFsdWU6IFQpOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxULCBUPiB7XG4gICAgICByZXR1cm4gbmV3IFJlc29sdmVkVmFsdWVQYXJhbWV0ZXI8VD4odGhpcy5wYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuICFfLmlzTmlsKHRoaXMudmFsdWUpID8gdGhpcy5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQodGhpcy52YWx1ZSkgOiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBSZXNvbHZlZEFycmF5UGFyYW1ldGVyPFQ+IGV4dGVuZHMgUmVzb2x2ZWRQYXJhbWV0ZXI8VCwgVFtdPiB7XG5cbiAgICBpc1NhbWUob3RoZXJWYWx1ZTogVFtdKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gXy5pc0VxdWFsKHRoaXMudmFsdWUsIG90aGVyVmFsdWUpO1xuICAgIH1cblxuICAgIGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pOiB2b2lkIHtcbiAgICAgIGRlc3RbdGhpcy5wYXJhbWV0ZXJEZWYubmFtZV0gPSB0aGlzLnZhbHVlLm1hcCh2ID0+IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHYpKTtcbiAgICB9XG5cbiAgICByZXBsYWNlKHZhbHVlOiBUW10pOiBQYXJhbWV0ZXJTbmFwc2hvdC5SZXNvbHZlZFBhcmFtZXRlcjxULCBUW10+IHtcbiAgICAgIHJldHVybiBuZXcgUmVzb2x2ZWRBcnJheVBhcmFtZXRlcjxUPih0aGlzLnBhcmFtZXRlckRlZiwgdmFsdWUpO1xuICAgIH1cblxuICAgIGZvcm1hdHRlZFZhbHVlKCk6IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZS5tYXAodiA9PiB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh2KSkgOiBbXTtcbiAgICB9XG5cbiAgfVxuXG59XG4iXX0=
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
|
-
import
|
|
5
|
+
import _ from 'lodash';
|
|
6
6
|
// WARNING: interface has both a type and a value, skipping emit
|
|
7
7
|
export var ParameterType;
|
|
8
8
|
(function (ParameterType) {
|
|
@@ -91,4 +91,4 @@ export var ParameterType;
|
|
|
91
91
|
ParameterType.NUMBER = new NumberType();
|
|
92
92
|
ParameterType.BOOLEAN = new BooleanType();
|
|
93
93
|
})(ParameterType || (ParameterType = {}));
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXR5cGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2Uvcm91dGUvcGFyYW1ldGVyLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7QUFRdkIsTUFBTSxLQUFXLGFBQWEsQ0FtQzdCO0FBbkNELFdBQWlCLGFBQWE7SUFFNUI7UUFBQTtRQVFBLENBQUM7Ozs7O1FBUEMsMkJBQU07Ozs7UUFBTixVQUFPLEtBQWE7WUFDbEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDOzs7OztRQUVELDBCQUFLOzs7O1FBQUwsVUFBTSxLQUFhO1lBQ2pCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNILGlCQUFDO0lBQUQsQ0FBQyxBQVJELElBUUM7SUFFRDtRQUFBO1FBUUEsQ0FBQzs7Ozs7UUFQQywyQkFBTTs7OztRQUFOLFVBQU8sS0FBYTtZQUNsQixPQUFPLEtBQUcsS0FBTyxDQUFDO1FBQ3BCLENBQUM7Ozs7O1FBRUQsMEJBQUs7Ozs7UUFBTCxVQUFNLEtBQWE7WUFDakIsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDNUQsQ0FBQztRQUNILGlCQUFDO0lBQUQsQ0FBQyxBQVJELElBUUM7SUFFRDtRQUFBO1FBUUEsQ0FBQzs7Ozs7UUFQQyw0QkFBTTs7OztRQUFOLFVBQU8sS0FBYztZQUNuQixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbEMsQ0FBQzs7Ozs7UUFFRCwyQkFBSzs7OztRQUFMLFVBQU0sS0FBYTtZQUNqQixPQUFPLEtBQUssS0FBSyxNQUFNLENBQUM7UUFDMUIsQ0FBQztRQUNILGtCQUFDO0lBQUQsQ0FBQyxBQVJELElBUUM7SUFFWSxvQkFBTSxHQUFHLElBQUksVUFBVSxFQUFFO0lBQ3pCLG9CQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7SUFDekIscUJBQU8sR0FBRyxJQUFJLFdBQVcsRUFBRTtBQUMxQyxDQUFDLEVBbkNnQixhQUFhLEtBQWIsYUFBYSxRQW1DN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlclR5cGU8VD4ge1xuICBmb3JtYXQodmFsdWU6IFQpOiBzdHJpbmc7XG5cbiAgcGFyc2UodmFsdWU6IHN0cmluZyk6IFQ7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGFyYW1ldGVyVHlwZSB7XG5cbiAgY2xhc3MgU3RyaW5nVHlwZSBpbXBsZW1lbnRzIFBhcmFtZXRlclR5cGU8c3RyaW5nPiB7XG4gICAgZm9ybWF0KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIE51bWJlclR5cGUgaW1wbGVtZW50cyBQYXJhbWV0ZXJUeXBlPG51bWJlcj4ge1xuICAgIGZvcm1hdCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIF8uaXNOaWwodmFsdWUpIHx8IF8uaXNFbXB0eSh2YWx1ZSkgPyBudWxsIDogK3ZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIEJvb2xlYW5UeXBlIGltcGxlbWVudHMgUGFyYW1ldGVyVHlwZTxib29sZWFuPiB7XG4gICAgZm9ybWF0KHZhbHVlOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB2YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgfVxuXG4gICAgcGFyc2UodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSAndHJ1ZSc7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNvbnN0IFNUUklORyA9IG5ldyBTdHJpbmdUeXBlKCk7XG4gIGV4cG9ydCBjb25zdCBOVU1CRVIgPSBuZXcgTnVtYmVyVHlwZSgpO1xuICBleHBvcnQgY29uc3QgQk9PTEVBTiA9IG5ldyBCb29sZWFuVHlwZSgpO1xufVxuIl19
|