@coolon/angular-ui-powerups 0.0.66 → 0.0.68
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 +2207 -1737
- 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 +24 -22
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/coolon-angular-ui-powerups.js +24 -22
- package/esm2015/index.js +2 -2
- package/esm2015/lib/angular-ui-powerups.module.js +6 -3
- package/esm2015/lib/components/index.js +2 -1
- package/esm2015/lib/components/noop/noop.component.js +19 -0
- package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +2 -2
- package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +2 -2
- package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
- package/esm2015/lib/interaction/components/interaction-outlet/interaction-outlet.component.js +19 -0
- package/esm2015/lib/interaction/guards/interaction-guard.service.js +85 -0
- package/esm2015/lib/interaction/index.js +3 -2
- package/esm2015/lib/interaction/interaction.module.js +8 -3
- package/esm2015/lib/interaction/services/dialog-interaction.service.js +30 -5
- package/esm2015/lib/place/components/abstract-place-navigation.component.js +5 -5
- package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +2 -2
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +60 -66
- package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +2 -2
- package/esm2015/lib/place/index.js +9 -8
- package/esm2015/lib/place/navigation-session.js +147 -0
- package/esm2015/lib/place/place-component.js +18 -14
- package/esm2015/lib/place/place-definition.js +197 -5
- package/esm2015/lib/place/place-history.js +3 -2
- package/esm2015/lib/place/place-router.js +186 -89
- package/esm2015/lib/place/route/formatter.js +63 -0
- package/esm2015/lib/place/route/guards/leave-place.guard.js +193 -0
- package/esm2015/lib/place/route/guards/place-route.guard.js +243 -0
- package/esm2015/lib/place/route/parameter-decorators.js +35 -18
- package/esm2015/lib/place/route/parameter-definition.class.js +123 -67
- package/esm2015/lib/place/route/parameter-sanitiser.js +4 -3
- package/esm2015/lib/place/route/parameter-snapshot.js +11 -388
- package/esm2015/lib/place/route/visit-sanitiser.js +88 -0
- package/esm2015/lib/place/visit.js +107 -8
- package/esm2015/public_api.js +4 -4
- package/esm5/coolon-angular-ui-powerups.js +24 -22
- package/esm5/index.js +2 -2
- package/esm5/lib/angular-ui-powerups.module.js +6 -3
- package/esm5/lib/components/index.js +2 -1
- package/esm5/lib/components/noop/noop.component.js +21 -0
- package/esm5/lib/interaction/components/alert-dialog/alert-dialog.component.js +2 -2
- package/esm5/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +2 -2
- package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
- package/esm5/lib/interaction/components/interaction-outlet/interaction-outlet.component.js +21 -0
- package/esm5/lib/interaction/guards/interaction-guard.service.js +94 -0
- package/esm5/lib/interaction/index.js +3 -2
- package/esm5/lib/interaction/interaction.module.js +8 -3
- package/esm5/lib/interaction/services/dialog-interaction.service.js +28 -5
- package/esm5/lib/place/components/abstract-place-navigation.component.js +5 -5
- package/esm5/lib/place/components/list-place-nav/list-place-nav.component.js +2 -2
- package/esm5/lib/place/components/place-outlet/place-outlet.component.js +70 -82
- package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +2 -2
- package/esm5/lib/place/index.js +9 -8
- package/esm5/lib/place/navigation-session.js +193 -0
- package/esm5/lib/place/place-component.js +19 -15
- package/esm5/lib/place/place-definition.js +253 -5
- package/esm5/lib/place/place-history.js +7 -3
- package/esm5/lib/place/place-router.js +242 -107
- package/esm5/lib/place/route/formatter.js +96 -0
- package/esm5/lib/place/route/guards/leave-place.guard.js +152 -0
- package/esm5/lib/place/route/guards/place-route.guard.js +273 -0
- package/esm5/lib/place/route/parameter-decorators.js +35 -18
- package/esm5/lib/place/route/parameter-definition.class.js +179 -76
- package/esm5/lib/place/route/parameter-sanitiser.js +4 -3
- package/esm5/lib/place/route/parameter-snapshot.js +11 -480
- package/esm5/lib/place/route/visit-sanitiser.js +99 -0
- package/esm5/lib/place/visit.js +160 -8
- package/esm5/public_api.js +4 -4
- package/fesm2015/coolon-angular-ui-powerups.js +1493 -1124
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +2166 -1700
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/components/noop/noop.component.d.ts +3 -0
- package/lib/interaction/components/interaction-outlet/interaction-outlet.component.d.ts +3 -0
- package/lib/interaction/guards/interaction-guard.service.d.ts +13 -0
- package/lib/interaction/index.d.ts +2 -1
- package/lib/interaction/services/dialog-interaction.service.d.ts +5 -1
- package/lib/place/components/place-outlet/place-outlet.component.d.ts +12 -12
- package/lib/place/index.d.ts +5 -4
- package/lib/place/navigation-session.d.ts +26 -0
- package/lib/place/place-component.d.ts +3 -3
- package/lib/place/place-definition.d.ts +30 -3
- package/lib/place/place-history.d.ts +3 -3
- package/lib/place/place-router.d.ts +26 -19
- package/lib/place/route/{parameter-type.d.ts → formatter.d.ts} +5 -5
- package/lib/place/{guards → route/guards}/leave-place.guard.d.ts +4 -3
- package/lib/place/route/guards/place-route.guard.d.ts +27 -0
- package/lib/place/route/parameter-decorators.d.ts +14 -6
- package/lib/place/route/parameter-definition.class.d.ts +21 -17
- package/lib/place/route/parameter-sanitiser.d.ts +3 -2
- package/lib/place/route/parameter-snapshot.d.ts +4 -26
- package/lib/place/route/visit-sanitiser.d.ts +12 -0
- package/lib/place/visit.d.ts +24 -3
- package/package.json +1 -1
- package/schematics/place-routes/place-class-scanner.d.ts +2 -2
- package/schematics/place-routes/place-class-scanner.js +7 -7
- package/schematics/place-routes/place-class-scanner.js.map +1 -1
- package/schematics/place-routes/place-def.d.ts +3 -2
- package/schematics/place-routes/place-def.js +21 -12
- package/schematics/place-routes/place-def.js.map +1 -1
- package/schematics/place-routes/templates/place-destinations.ts.template +5 -3
- package/schematics/place-routes/templates/place-routes.ts.template +10 -1
- package/schematics/place-routes/templates/place-visits.ts.template +21 -0
- package/esm2015/lib/interaction/guards/close-interaction.guard.js +0 -62
- package/esm2015/lib/place/guards/leave-place.guard.js +0 -159
- package/esm2015/lib/place/guards/place-route.guard.js +0 -74
- package/esm2015/lib/place/route/parameter-type.js +0 -61
- package/esm2015/lib/place/route/route-parameter-value.js +0 -230
- package/esm5/lib/interaction/guards/close-interaction.guard.js +0 -66
- package/esm5/lib/place/guards/leave-place.guard.js +0 -117
- package/esm5/lib/place/guards/place-route.guard.js +0 -78
- package/esm5/lib/place/route/parameter-type.js +0 -94
- package/esm5/lib/place/route/route-parameter-value.js +0 -316
- package/lib/interaction/guards/close-interaction.guard.d.ts +0 -12
- package/lib/place/guards/place-route.guard.d.ts +0 -10
- package/lib/place/route/route-parameter-value.d.ts +0 -42
|
@@ -1,397 +1,20 @@
|
|
|
1
|
-
import * as tslib_1 from "tslib";
|
|
2
|
-
var _a;
|
|
3
1
|
/**
|
|
4
2
|
* @fileoverview added by tsickle
|
|
5
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
6
4
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
* @param {?} placeDefinition
|
|
13
|
-
* @param {?} parameters
|
|
14
|
-
*/
|
|
15
|
-
constructor(placeDefinition, parameters) {
|
|
16
|
-
this.placeDefinition = placeDefinition;
|
|
17
|
-
this.parameters = parameters;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* @param {?} other
|
|
21
|
-
* @param {?=} debug
|
|
22
|
-
* @return {?}
|
|
23
|
-
*/
|
|
24
|
-
hasChanged(other, debug = false) {
|
|
25
|
-
/** @type {?} */
|
|
26
|
-
const changed = this.parameters.find((/**
|
|
27
|
-
* @param {?} r
|
|
28
|
-
* @return {?}
|
|
29
|
-
*/
|
|
30
|
-
(r) => {
|
|
31
|
-
return r.hasChanged(other.getValueOf(r.definition));
|
|
32
|
-
}));
|
|
33
|
-
if (changed && debug) {
|
|
34
|
-
console.log({
|
|
35
|
-
name: changed.definition.name,
|
|
36
|
-
mine: changed.value,
|
|
37
|
-
theirs: other.getValueOf(changed.definition)
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
return !!changed;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* @template T, S
|
|
44
|
-
* @param {?} parameterDef
|
|
45
|
-
* @return {?}
|
|
46
|
-
*/
|
|
47
|
-
getParameter(parameterDef) {
|
|
48
|
-
return this.parameters.find((/**
|
|
49
|
-
* @param {?} r
|
|
50
|
-
* @return {?}
|
|
51
|
-
*/
|
|
52
|
-
r => r.definition === parameterDef));
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* @template T, S
|
|
56
|
-
* @param {?} parameterDef
|
|
57
|
-
* @return {?}
|
|
58
|
-
*/
|
|
59
|
-
getValueOf(parameterDef) {
|
|
60
|
-
/** @type {?} */
|
|
61
|
-
const resolvedParameter = this.getParameter(parameterDef);
|
|
62
|
-
return resolvedParameter ? resolvedParameter.value : null;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* @return {?}
|
|
66
|
-
*/
|
|
67
|
-
getRouteIdValue() {
|
|
68
|
-
return this.getRouteIdParameter() ? this.getRouteIdParameter().value : null;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* @param {?} name
|
|
72
|
-
* @return {?}
|
|
73
|
-
*/
|
|
74
|
-
getParameterValue(name) {
|
|
75
|
-
/** @type {?} */
|
|
76
|
-
const resolvedParameter = this.parameters.find((/**
|
|
77
|
-
* @param {?} r
|
|
78
|
-
* @return {?}
|
|
79
|
-
*/
|
|
80
|
-
r => r.definition.name === name));
|
|
81
|
-
return resolvedParameter ? resolvedParameter.value : null;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* @private
|
|
85
|
-
* @return {?}
|
|
86
|
-
*/
|
|
87
|
-
getRouteIdParameter() {
|
|
88
|
-
// RouteId's are never arrays: see parameter-decorators.ts createDefinition methods. It would be nice to
|
|
89
|
-
// capture this in the type system though
|
|
90
|
-
return (/** @type {?} */ (this.parameters.find((/**
|
|
91
|
-
* @param {?} p
|
|
92
|
-
* @return {?}
|
|
93
|
-
*/
|
|
94
|
-
p => p.definition.isRouteId))));
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* @private
|
|
98
|
-
* @return {?}
|
|
99
|
-
*/
|
|
100
|
-
getRouteParameters() {
|
|
101
|
-
return this.parameters.filter((/**
|
|
102
|
-
* @param {?} r
|
|
103
|
-
* @return {?}
|
|
104
|
-
*/
|
|
105
|
-
r => !r.definition.isRouteId));
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* @return {?}
|
|
109
|
-
*/
|
|
110
|
-
hasRouteId() {
|
|
111
|
-
return !!this.getRouteIdParameter();
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* @return {?}
|
|
115
|
-
*/
|
|
116
|
-
getFormattedRouteId() {
|
|
117
|
-
/** @type {?} */
|
|
118
|
-
const routeIdParam = this.getRouteIdParameter();
|
|
119
|
-
return routeIdParam ? routeIdParam.formattedValue() : null;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* @return {?}
|
|
123
|
-
*/
|
|
124
|
-
getNonEmptyParameters() {
|
|
125
|
-
return this.parameters.filter((/**
|
|
126
|
-
* @param {?} p
|
|
127
|
-
* @return {?}
|
|
128
|
-
*/
|
|
129
|
-
p => !p.isEmpty()));
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* @return {?}
|
|
133
|
-
*/
|
|
134
|
-
getFormattedParameters() {
|
|
135
|
-
/** @type {?} */
|
|
136
|
-
const params = {};
|
|
137
|
-
/** @type {?} */
|
|
138
|
-
const routeIdParam = this.getNonEmptyParameters()
|
|
139
|
-
.filter((/**
|
|
140
|
-
* @param {?} p
|
|
141
|
-
* @return {?}
|
|
142
|
-
*/
|
|
143
|
-
p => !p.definition.isRouteId))
|
|
144
|
-
.forEach((/**
|
|
145
|
-
* @param {?} p
|
|
146
|
-
* @return {?}
|
|
147
|
-
*/
|
|
148
|
-
p => params[p.definition.name] = p.formattedValue()));
|
|
149
|
-
return params;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* @return {?}
|
|
153
|
-
*/
|
|
154
|
-
getAllParameters() {
|
|
155
|
-
/** @type {?} */
|
|
156
|
-
const params = {};
|
|
157
|
-
/** @type {?} */
|
|
158
|
-
const routeIdParam = this.parameters.forEach((/**
|
|
159
|
-
* @param {?} p
|
|
160
|
-
* @return {?}
|
|
161
|
-
*/
|
|
162
|
-
p => {
|
|
163
|
-
params[p.definition.name] = p.value;
|
|
164
|
-
}));
|
|
165
|
-
return params;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* @template T, S
|
|
169
|
-
* @param {?} parameter
|
|
170
|
-
* @param {?} value
|
|
171
|
-
* @return {?}
|
|
172
|
-
*/
|
|
173
|
-
replace(parameter, value) {
|
|
174
|
-
return new ParameterSnapshot(this.placeDefinition, this.parameters.map((/**
|
|
175
|
-
* @param {?} p
|
|
176
|
-
* @return {?}
|
|
177
|
-
*/
|
|
178
|
-
p => {
|
|
179
|
-
return p.definition === parameter ? p.replace(value) : p;
|
|
180
|
-
})));
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* @param {?} injector
|
|
184
|
-
* @return {?}
|
|
185
|
-
*/
|
|
186
|
-
sanitise(injector) {
|
|
187
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
188
|
-
if (this.hasRouteId()) {
|
|
189
|
-
/** @type {?} */
|
|
190
|
-
const routeId = this.getRouteIdParameter();
|
|
191
|
-
/** @type {?} */
|
|
192
|
-
const sanitisedValue = yield routeId.sanitise(this, injector);
|
|
193
|
-
if (routeId.hasChanged(sanitisedValue)) {
|
|
194
|
-
// if the route id has changed we redirect immediately as other
|
|
195
|
-
// parameter sanitisers might use it.
|
|
196
|
-
return this.replace(routeId.definition, sanitisedValue);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
/** @type {?} */
|
|
200
|
-
let result = this;
|
|
201
|
-
/** @type {?} */
|
|
202
|
-
const routeParameters = this.getRouteParameters();
|
|
203
|
-
for (let i = 0; i < routeParameters.length; i++) {
|
|
204
|
-
/** @type {?} */
|
|
205
|
-
const routeParameter = routeParameters[i];
|
|
206
|
-
/** @type {?} */
|
|
207
|
-
const sanitisedValue = yield routeParameter.sanitise(this, injector);
|
|
208
|
-
if (routeParameter.hasChanged(sanitisedValue)) {
|
|
209
|
-
result = result.replace(routeParameter.definition, sanitisedValue);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
return result;
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
tslib_1.__decorate([
|
|
217
|
-
Memoize(),
|
|
218
|
-
tslib_1.__metadata("design:type", Function),
|
|
219
|
-
tslib_1.__metadata("design:paramtypes", [ParameterDefinition]),
|
|
220
|
-
tslib_1.__metadata("design:returntype", RouteParameterValue)
|
|
221
|
-
], ParameterSnapshot.prototype, "getParameter", null);
|
|
222
|
-
tslib_1.__decorate([
|
|
223
|
-
Memoize(),
|
|
224
|
-
tslib_1.__metadata("design:type", Function),
|
|
225
|
-
tslib_1.__metadata("design:paramtypes", [ParameterDefinition]),
|
|
226
|
-
tslib_1.__metadata("design:returntype", typeof (_a = typeof S !== "undefined" && S) === "function" ? _a : Object)
|
|
227
|
-
], ParameterSnapshot.prototype, "getValueOf", null);
|
|
228
|
-
tslib_1.__decorate([
|
|
229
|
-
Memoize(),
|
|
230
|
-
tslib_1.__metadata("design:type", Function),
|
|
231
|
-
tslib_1.__metadata("design:paramtypes", [String]),
|
|
232
|
-
tslib_1.__metadata("design:returntype", Object)
|
|
233
|
-
], ParameterSnapshot.prototype, "getParameterValue", null);
|
|
234
|
-
tslib_1.__decorate([
|
|
235
|
-
Memoize(),
|
|
236
|
-
tslib_1.__metadata("design:type", Function),
|
|
237
|
-
tslib_1.__metadata("design:paramtypes", []),
|
|
238
|
-
tslib_1.__metadata("design:returntype", RouteParameterValue.Scalar)
|
|
239
|
-
], ParameterSnapshot.prototype, "getRouteIdParameter", null);
|
|
240
|
-
tslib_1.__decorate([
|
|
241
|
-
Memoize(),
|
|
242
|
-
tslib_1.__metadata("design:type", Function),
|
|
243
|
-
tslib_1.__metadata("design:paramtypes", []),
|
|
244
|
-
tslib_1.__metadata("design:returntype", Array)
|
|
245
|
-
], ParameterSnapshot.prototype, "getRouteParameters", null);
|
|
5
|
+
/**
|
|
6
|
+
* @record
|
|
7
|
+
* @template T
|
|
8
|
+
*/
|
|
9
|
+
export function ParameterSnapshot() { }
|
|
246
10
|
if (false) {
|
|
247
11
|
/** @type {?} */
|
|
248
|
-
ParameterSnapshot.prototype.
|
|
249
|
-
/**
|
|
250
|
-
|
|
251
|
-
* @private
|
|
252
|
-
*/
|
|
253
|
-
ParameterSnapshot.prototype.parameters;
|
|
254
|
-
}
|
|
255
|
-
(function (ParameterSnapshot) {
|
|
12
|
+
ParameterSnapshot.prototype.definition;
|
|
13
|
+
/** @type {?} */
|
|
14
|
+
ParameterSnapshot.prototype.value;
|
|
256
15
|
/**
|
|
257
|
-
* @param {?} placeDef
|
|
258
|
-
* @param {?} params
|
|
259
|
-
* @param {?} urlSegments
|
|
260
16
|
* @return {?}
|
|
261
17
|
*/
|
|
262
|
-
function
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
/** @type {?} */
|
|
266
|
-
const resolvedParameters = placeDef.getRouteParameters().map((/**
|
|
267
|
-
* @param {?} def
|
|
268
|
-
* @return {?}
|
|
269
|
-
*/
|
|
270
|
-
def => RouteParameterValue.create(def, paramMap)));
|
|
271
|
-
return new ParameterSnapshot(placeDef, resolvedParameters);
|
|
272
|
-
}
|
|
273
|
-
ParameterSnapshot.create = create;
|
|
274
|
-
/**
|
|
275
|
-
* This a work around for the fact that an activated route with multiple segments doesn't
|
|
276
|
-
* include the segment params in the paramMap as well as each segment returns an empty
|
|
277
|
-
* param map even when `parameter`s has content.
|
|
278
|
-
*/
|
|
279
|
-
class ConsolidatedParameterMap {
|
|
280
|
-
/**
|
|
281
|
-
* @param {?} paramMap
|
|
282
|
-
* @param {?} urlSegments
|
|
283
|
-
*/
|
|
284
|
-
constructor(paramMap, urlSegments) {
|
|
285
|
-
this.paramMaps = [paramMap].concat((urlSegments || []).map((/**
|
|
286
|
-
* @param {?} s
|
|
287
|
-
* @return {?}
|
|
288
|
-
*/
|
|
289
|
-
s => new ParamMapAdapter(s.parameters)))).filter((/**
|
|
290
|
-
* @param {?} m
|
|
291
|
-
* @return {?}
|
|
292
|
-
*/
|
|
293
|
-
m => !!m)); // the activated route param map can be null
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* @param {?} name
|
|
297
|
-
* @return {?}
|
|
298
|
-
*/
|
|
299
|
-
get(name) {
|
|
300
|
-
return this.paramMaps.find((/**
|
|
301
|
-
* @param {?} m
|
|
302
|
-
* @return {?}
|
|
303
|
-
*/
|
|
304
|
-
m => m.has(name))).get(name);
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* @param {?} name
|
|
308
|
-
* @return {?}
|
|
309
|
-
*/
|
|
310
|
-
getAll(name) {
|
|
311
|
-
return this.paramMaps.find((/**
|
|
312
|
-
* @param {?} m
|
|
313
|
-
* @return {?}
|
|
314
|
-
*/
|
|
315
|
-
m => m.has(name))).getAll(name);
|
|
316
|
-
}
|
|
317
|
-
/**
|
|
318
|
-
* @param {?} name
|
|
319
|
-
* @return {?}
|
|
320
|
-
*/
|
|
321
|
-
has(name) {
|
|
322
|
-
return !!this.paramMaps.find((/**
|
|
323
|
-
* @param {?} m
|
|
324
|
-
* @return {?}
|
|
325
|
-
*/
|
|
326
|
-
m => m.has(name)));
|
|
327
|
-
}
|
|
328
|
-
/**
|
|
329
|
-
* @return {?}
|
|
330
|
-
*/
|
|
331
|
-
get keys() {
|
|
332
|
-
return this.paramMaps.reduce((/**
|
|
333
|
-
* @param {?} result
|
|
334
|
-
* @param {?} params
|
|
335
|
-
* @return {?}
|
|
336
|
-
*/
|
|
337
|
-
(result, params) => result.concat(params.keys)), []);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
tslib_1.__decorate([
|
|
341
|
-
Memoize(),
|
|
342
|
-
tslib_1.__metadata("design:type", Array),
|
|
343
|
-
tslib_1.__metadata("design:paramtypes", [])
|
|
344
|
-
], ConsolidatedParameterMap.prototype, "keys", null);
|
|
345
|
-
if (false) {
|
|
346
|
-
/**
|
|
347
|
-
* @type {?}
|
|
348
|
-
* @private
|
|
349
|
-
*/
|
|
350
|
-
ConsolidatedParameterMap.prototype.paramMaps;
|
|
351
|
-
}
|
|
352
|
-
class ParamMapAdapter {
|
|
353
|
-
/**
|
|
354
|
-
* @param {?} params
|
|
355
|
-
*/
|
|
356
|
-
constructor(params) {
|
|
357
|
-
this.params = params;
|
|
358
|
-
}
|
|
359
|
-
/**
|
|
360
|
-
* @param {?} name
|
|
361
|
-
* @return {?}
|
|
362
|
-
*/
|
|
363
|
-
get(name) {
|
|
364
|
-
return this.params[name];
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* @param {?} name
|
|
368
|
-
* @return {?}
|
|
369
|
-
*/
|
|
370
|
-
getAll(name) {
|
|
371
|
-
/** @type {?} */
|
|
372
|
-
const value = this.get(name);
|
|
373
|
-
return Array.isArray(value) ? value : [value];
|
|
374
|
-
}
|
|
375
|
-
/**
|
|
376
|
-
* @param {?} name
|
|
377
|
-
* @return {?}
|
|
378
|
-
*/
|
|
379
|
-
has(name) {
|
|
380
|
-
return this.keys.includes(name);
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* @return {?}
|
|
384
|
-
*/
|
|
385
|
-
get keys() {
|
|
386
|
-
return Object.keys(this.params);
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
if (false) {
|
|
390
|
-
/**
|
|
391
|
-
* @type {?}
|
|
392
|
-
* @private
|
|
393
|
-
*/
|
|
394
|
-
ParamMapAdapter.prototype.params;
|
|
395
|
-
}
|
|
396
|
-
})(ParameterSnapshot || (ParameterSnapshot = {}));
|
|
397
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFHM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7SUFFNUIsWUFBcUIsZUFBZ0MsRUFBbUIsVUFBZ0Q7UUFBbkcsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQW1CLGVBQVUsR0FBVixVQUFVLENBQXNDO0lBQ3hILENBQUM7Ozs7OztJQUVELFVBQVUsQ0FBQyxLQUF3QixFQUFFLEtBQUssR0FBRyxLQUFLOztjQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN6QyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDLEVBQUM7UUFDRixJQUFJLE9BQU8sSUFBSSxLQUFLLEVBQUU7WUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDVixJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJO2dCQUM3QixJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ25CLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7YUFDN0MsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbkIsQ0FBQzs7Ozs7O0lBR0Qs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T0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7Ozs7O1FBRUQsTUFBTSxDQUFDLElBQVk7O2tCQUNYLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUM1QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxDQUFDOzs7OztRQUVELEdBQUcsQ0FBQyxJQUFZO1lBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDOzs7O1FBRUQsSUFBSSxJQUFJO1lBQ04sT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDO0tBRUY7Ozs7OztRQXBCYSxpQ0FBZ0Q7O0FBdUJoRSxDQUFDLEVBakVnQixpQkFBaUIsS0FBakIsaUJBQWlCLFFBaUVqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYXJhbU1hcCwgVXJsU2VnbWVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3IvZGlzdC9zcmMnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uL3Zpc2l0JztcbmltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcbmltcG9ydCB7IFJvdXRlUGFyYW1ldGVyVmFsdWUgfSBmcm9tICcuL3JvdXRlLXBhcmFtZXRlci12YWx1ZSc7XG5cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJTbmFwc2hvdCBpbXBsZW1lbnRzIFZpc2l0IHtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbiwgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJzOiBSb3V0ZVBhcmFtZXRlclZhbHVlPGFueSwgYW55LCBhbnk+W10pIHtcbiAgfVxuXG4gIGhhc0NoYW5nZWQob3RoZXI6IFBhcmFtZXRlclNuYXBzaG90LCBkZWJ1ZyA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY2hhbmdlZCA9IHRoaXMucGFyYW1ldGVycy5maW5kKChyKSA9PiB7XG4gICAgICByZXR1cm4gci5oYXNDaGFuZ2VkKG90aGVyLmdldFZhbHVlT2Yoci5kZWZpbml0aW9uKSk7XG4gICAgfSk7XG4gICAgaWYgKGNoYW5nZWQgJiYgZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKHtcbiAgICAgICAgbmFtZTogY2hhbmdlZC5kZWZpbml0aW9uLm5hbWUsXG4gICAgICAgIG1pbmU6IGNoYW5nZWQudmFsdWUsXG4gICAgICAgIHRoZWlyczogb3RoZXIuZ2V0VmFsdWVPZihjaGFuZ2VkLmRlZmluaXRpb24pXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICEhY2hhbmdlZDtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0UGFyYW1ldGVyPFQsIFM+KHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPik6IFJvdXRlUGFyYW1ldGVyVmFsdWU8UywgVCwgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycy5maW5kKHIgPT4gci5kZWZpbml0aW9uID09PSBwYXJhbWV0ZXJEZWYpO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRWYWx1ZU9mPFQsIFM+KHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPik6IFMge1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVyID0gdGhpcy5nZXRQYXJhbWV0ZXIocGFyYW1ldGVyRGVmKTtcbiAgICByZXR1cm4gcmVzb2x2ZWRQYXJhbWV0ZXIgPyByZXNvbHZlZFBhcmFtZXRlci52YWx1ZSA6IG51bGw7XG4gIH1cblxuICBnZXRSb3V0ZUlkVmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCkgPyB0aGlzLmdldFJvdXRlSWRQYXJhbWV0ZXIoKS52YWx1ZSA6IG51bGw7XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIGdldFBhcmFtZXRlclZhbHVlKG5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWRQYXJhbWV0ZXIgPSB0aGlzLnBhcmFtZXRlcnMuZmluZChyID0+IHIuZGVmaW5pdGlvbi5uYW1lID09PSBuYW1lKTtcbiAgICByZXR1cm4gcmVzb2x2ZWRQYXJhbWV0ZXIgPyByZXNvbHZlZFBhcmFtZXRlci52YWx1ZSA6IG51bGw7XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIHByaXZhdGUgZ2V0Um91dGVJZFBhcmFtZXRlcigpOiBSb3V0ZVBhcmFtZXRlclZhbHVlLlNjYWxhcjxhbnk+IHtcbiAgICAvLyBSb3V0ZUlkJ3MgYXJlIG5ldmVyIGFycmF5czogc2VlIHBhcmFtZXRlci1kZWNvcmF0b3JzLnRzIGNyZWF0ZURlZmluaXRpb24gbWV0aG9kcy4gSXQgd291bGQgYmUgbmljZSB0b1xuICAgIC8vIGNhcHR1cmUgdGhpcyBpbiB0aGUgdHlwZSBzeXN0ZW0gdGhvdWdoXG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycy5maW5kKHAgPT4gcC5kZWZpbml0aW9uLmlzUm91dGVJZCkgYXMgUm91dGVQYXJhbWV0ZXJWYWx1ZS5TY2FsYXI8YW55PjtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgcHJpdmF0ZSBnZXRSb3V0ZVBhcmFtZXRlcnMoKTogUm91dGVQYXJhbWV0ZXJWYWx1ZTxhbnksIGFueSwgYW55PltdIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLmZpbHRlcihyID0+ICFyLmRlZmluaXRpb24uaXNSb3V0ZUlkKTtcbiAgfVxuXG4gIGhhc1JvdXRlSWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWRSb3V0ZUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gICAgcmV0dXJuIHJvdXRlSWRQYXJhbSA/IHJvdXRlSWRQYXJhbS5mb3JtYXR0ZWRWYWx1ZSgpIDogbnVsbDtcbiAgfVxuXG4gIGdldE5vbkVtcHR5UGFyYW1ldGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLmZpbHRlcihwID0+ICFwLmlzRW1wdHkoKSk7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWRQYXJhbWV0ZXJzKCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IHJvdXRlSWRQYXJhbSA9IHRoaXMuZ2V0Tm9uRW1wdHlQYXJhbWV0ZXJzKClcbiAgICAgIC5maWx0ZXIocCA9PiAhcC5kZWZpbml0aW9uLmlzUm91dGVJZClcbiAgICAgIC5mb3JFYWNoKHAgPT4gcGFyYW1zW3AuZGVmaW5pdGlvbi5uYW1lXSA9IHAuZm9ybWF0dGVkVmFsdWUoKSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGdldEFsbFBhcmFtZXRlcnMoKSB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5wYXJhbWV0ZXJzLmZvckVhY2gocCA9PiB7XG4gICAgICBwYXJhbXNbcC5kZWZpbml0aW9uLm5hbWVdID0gcC52YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgcmVwbGFjZTxULCBTPihwYXJhbWV0ZXI6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4sIHZhbHVlOiBTKTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgIHJldHVybiBuZXcgUGFyYW1ldGVyU25hcHNob3QodGhpcy5wbGFjZURlZmluaXRpb24sIHRoaXMucGFyYW1ldGVycy5tYXAocCA9PiB7XG4gICAgICByZXR1cm4gcC5kZWZpbml0aW9uID09PSBwYXJhbWV0ZXIgPyBwLnJlcGxhY2UodmFsdWUpIDogcDtcbiAgICB9KSk7XG4gIH1cblxuICBhc3luYyBzYW5pdGlzZShpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPFBhcmFtZXRlclNuYXBzaG90PiB7XG4gICAgaWYgKHRoaXMuaGFzUm91dGVJZCgpKSB7XG4gICAgICBjb25zdCByb3V0ZUlkID0gdGhpcy5nZXRSb3V0ZUlkUGFyYW1ldGVyKCk7XG4gICAgICBjb25zdCBzYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IHJvdXRlSWQuc2FuaXRpc2UodGhpcywgaW5qZWN0b3IpO1xuICAgICAgaWYgKHJvdXRlSWQuaGFzQ2hhbmdlZChzYW5pdGlzZWRWYWx1ZSkpIHtcbiAgICAgICAgLy8gaWYgdGhlIHJvdXRlIGlkIGhhcyBjaGFuZ2VkIHdlIHJlZGlyZWN0IGltbWVkaWF0ZWx5IGFzIG90aGVyXG4gICAgICAgIC8vIHBhcmFtZXRlciBzYW5pdGlzZXJzIG1pZ2h0IHVzZSBpdC5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVwbGFjZShyb3V0ZUlkLmRlZmluaXRpb24sIHNhbml0aXNlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHJlc3VsdDogUGFyYW1ldGVyU25hcHNob3QgPSB0aGlzO1xuICAgIGNvbnN0IHJvdXRlUGFyYW1ldGVycyA9IHRoaXMuZ2V0Um91dGVQYXJhbWV0ZXJzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3V0ZVBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHJvdXRlUGFyYW1ldGVyID0gcm91dGVQYXJhbWV0ZXJzW2ldO1xuICAgICAgY29uc3Qgc2FuaXRpc2VkVmFsdWUgPSBhd2FpdCByb3V0ZVBhcmFtZXRlci5zYW5pdGlzZSh0aGlzLCBpbmplY3Rvcik7XG4gICAgICBpZiAocm91dGVQYXJhbWV0ZXIuaGFzQ2hhbmdlZChzYW5pdGlzZWRWYWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2Uocm91dGVQYXJhbWV0ZXIuZGVmaW5pdGlvbiwgc2FuaXRpc2VkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQYXJhbWV0ZXJTbmFwc2hvdCB7XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZShwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uLCBwYXJhbXM6IFBhcmFtTWFwLCB1cmxTZWdtZW50czogVXJsU2VnbWVudFtdKTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgIGNvbnN0IHBhcmFtTWFwID0gbmV3IENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcChwYXJhbXMsIHVybFNlZ21lbnRzKTtcbiAgICBjb25zdCByZXNvbHZlZFBhcmFtZXRlcnMgPSBwbGFjZURlZi5nZXRSb3V0ZVBhcmFtZXRlcnMoKS5tYXAoZGVmID0+IFJvdXRlUGFyYW1ldGVyVmFsdWUuY3JlYXRlKGRlZiwgcGFyYW1NYXApKTtcbiAgICByZXR1cm4gbmV3IFBhcmFtZXRlclNuYXBzaG90KHBsYWNlRGVmLCByZXNvbHZlZFBhcmFtZXRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgYSB3b3JrIGFyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCBhbiBhY3RpdmF0ZWQgcm91dGUgd2l0aCBtdWx0aXBsZSBzZWdtZW50cyBkb2Vzbid0XG4gICAqIGluY2x1ZGUgdGhlIHNlZ21lbnQgcGFyYW1zIGluIHRoZSBwYXJhbU1hcCBhcyB3ZWxsIGFzIGVhY2ggc2VnbWVudCByZXR1cm5zIGFuIGVtcHR5XG4gICAqIHBhcmFtIG1hcCBldmVuIHdoZW4gYHBhcmFtZXRlcmBzIGhhcyBjb250ZW50LlxuICAgKi9cbiAgY2xhc3MgQ29uc29saWRhdGVkUGFyYW1ldGVyTWFwIGltcGxlbWVudHMgUGFyYW1NYXAge1xuXG4gICAgcHJpdmF0ZSBwYXJhbU1hcHM6IFBhcmFtTWFwW107XG5cbiAgICBjb25zdHJ1Y3RvcihwYXJhbU1hcDogUGFyYW1NYXAsIHVybFNlZ21lbnRzOiBVcmxTZWdtZW50W10pIHtcbiAgICAgIHRoaXMucGFyYW1NYXBzID0gW3BhcmFtTWFwXS5jb25jYXQoXG4gICAgICAgICh1cmxTZWdtZW50cyB8fCBbXSkubWFwKHMgPT4gbmV3IFBhcmFtTWFwQWRhcHRlcihzLnBhcmFtZXRlcnMpKVxuICAgICAgKS5maWx0ZXIobSA9PiAhIW0pOyAvLyB0aGUgYWN0aXZhdGVkIHJvdXRlIHBhcmFtIG1hcCBjYW4gYmUgbnVsbFxuICAgIH1cblxuICAgIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtTWFwcy5maW5kKG0gPT4gbS5oYXMobmFtZSkpLmdldChuYW1lKTtcbiAgICB9XG5cbiAgICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSkuZ2V0QWxsKG5hbWUpO1xuICAgIH1cblxuICAgIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAhIXRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSk7XG4gICAgfVxuXG4gICAgQE1lbW9pemUoKVxuICAgIGdldCBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtTWFwcy5yZWR1Y2UoKHJlc3VsdCwgcGFyYW1zKSA9PiByZXN1bHQuY29uY2F0KHBhcmFtcy5rZXlzKSwgW10pO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIFBhcmFtTWFwQWRhcHRlciBpbXBsZW1lbnRzIFBhcmFtTWFwIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBhcmFtczogeyBbcDogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB9XG5cbiAgICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbXNbbmFtZV07XG4gICAgfVxuXG4gICAgZ2V0QWxsKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQobmFtZSk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMua2V5cy5pbmNsdWRlcyhuYW1lKTtcbiAgICB9XG5cbiAgICBnZXQga2V5cygpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5wYXJhbXMpO1xuICAgIH1cblxuICB9XG5cblxufVxuIl19
|
|
18
|
+
ParameterSnapshot.prototype.isMissing = function () { };
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUVBLHVDQUlDOzs7SUFIQyx1Q0FBdUM7O0lBQ3ZDLGtDQUFrQjs7OztJQUNsQix3REFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJhbWV0ZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9wYXJhbWV0ZXItZGVmaW5pdGlvbi5jbGFzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyU25hcHNob3Q8VD4ge1xuICBkZWZpbml0aW9uOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIGFueT5cbiAgcmVhZG9ubHkgdmFsdWU6IFQ7XG4gIGlzTWlzc2luZygpOiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import * as tslib_1 from "tslib";
|
|
6
|
+
export class VisitSanitiser {
|
|
7
|
+
/**
|
|
8
|
+
* @param {?} activatedRoute
|
|
9
|
+
* @param {?} router
|
|
10
|
+
* @param {?} placeHistory
|
|
11
|
+
* @param {?} injector
|
|
12
|
+
*/
|
|
13
|
+
constructor(activatedRoute, router, placeHistory, injector) {
|
|
14
|
+
this.activatedRoute = activatedRoute;
|
|
15
|
+
this.router = router;
|
|
16
|
+
this.placeHistory = placeHistory;
|
|
17
|
+
this.injector = injector;
|
|
18
|
+
}
|
|
19
|
+
// @Trace()
|
|
20
|
+
/**
|
|
21
|
+
* @param {?} visit
|
|
22
|
+
* @return {?}
|
|
23
|
+
*/
|
|
24
|
+
sanitise(visit) {
|
|
25
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
/** @type {?} */
|
|
27
|
+
const placeDef = visit.placeDefinition;
|
|
28
|
+
if (placeDef.hasRouteId()) {
|
|
29
|
+
/** @type {?} */
|
|
30
|
+
const routeIdDef = placeDef.getRouteIdParameterDef();
|
|
31
|
+
/** @type {?} */
|
|
32
|
+
const routeId = visit.getRouteId();
|
|
33
|
+
/** @type {?} */
|
|
34
|
+
const sanitisedValue = yield routeIdDef.sanitise(routeId, visit, this.placeHistory, this.injector);
|
|
35
|
+
console.log({ routeId, sanitisedValue });
|
|
36
|
+
// ###------- EARLY EXIT --------###
|
|
37
|
+
if (routeIdDef.hasChanged(routeId, sanitisedValue)) {
|
|
38
|
+
// if the route id has changed we redirect immediately as other
|
|
39
|
+
// parameter sanitisers might use it.
|
|
40
|
+
return visit.replace(routeIdDef, sanitisedValue);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// if we didn't replace the routeId we continue the url present parameters.
|
|
44
|
+
/** @type {?} */
|
|
45
|
+
const parameterDefs = placeDef.getVisitParameterDefs({
|
|
46
|
+
includeRouteParameters: true,
|
|
47
|
+
includeNonRouteParameters: true
|
|
48
|
+
});
|
|
49
|
+
/** @type {?} */
|
|
50
|
+
let sanitisedVisit = visit;
|
|
51
|
+
for (let i = 0; i < parameterDefs.length; i++) {
|
|
52
|
+
/** @type {?} */
|
|
53
|
+
const def = parameterDefs[i];
|
|
54
|
+
/** @type {?} */
|
|
55
|
+
const value = visit.getParameter(def.name);
|
|
56
|
+
/** @type {?} */
|
|
57
|
+
const sanitisedValue = yield def.sanitise(value, sanitisedVisit, this.placeHistory, this.injector);
|
|
58
|
+
if (def.hasChanged(value, sanitisedValue)) {
|
|
59
|
+
sanitisedVisit = sanitisedVisit.replace(def, sanitisedValue);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return sanitisedVisit.hasChangedFrom(visit) ? sanitisedVisit : visit;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (false) {
|
|
67
|
+
/**
|
|
68
|
+
* @type {?}
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
VisitSanitiser.prototype.activatedRoute;
|
|
72
|
+
/**
|
|
73
|
+
* @type {?}
|
|
74
|
+
* @private
|
|
75
|
+
*/
|
|
76
|
+
VisitSanitiser.prototype.router;
|
|
77
|
+
/**
|
|
78
|
+
* @type {?}
|
|
79
|
+
* @private
|
|
80
|
+
*/
|
|
81
|
+
VisitSanitiser.prototype.placeHistory;
|
|
82
|
+
/**
|
|
83
|
+
* @type {?}
|
|
84
|
+
* @private
|
|
85
|
+
*/
|
|
86
|
+
VisitSanitiser.prototype.injector;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXQtc2FuaXRpc2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3Zpc2l0LXNhbml0aXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQU1BLE1BQU0sT0FBTyxjQUFjOzs7Ozs7O0lBQ3pCLFlBQW9CLGNBQXNDLEVBQVUsTUFBYyxFQUFVLFlBQTBCLEVBQVUsUUFBa0I7UUFBOUgsbUJBQWMsR0FBZCxjQUFjLENBQXdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUVsSixDQUFDOzs7Ozs7SUFHSyxRQUFRLENBQUMsS0FBWTs7O2tCQUNuQixRQUFRLEdBQUcsS0FBSyxDQUFDLGVBQWU7WUFDdEMsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUU7O3NCQUNuQixVQUFVLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixFQUFFOztzQkFDOUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUU7O3NCQUM1QixjQUFjLEdBQUcsTUFBTSxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNsRyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUMsT0FBTyxFQUFFLGNBQWMsRUFBQyxDQUFDLENBQUM7Z0JBQ3ZDLG9DQUFvQztnQkFDcEMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsRUFBRTtvQkFDbEQsK0RBQStEO29CQUMvRCxxQ0FBcUM7b0JBQ3JDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7aUJBQ2xEO2FBQ0Y7OztrQkFHSyxhQUFhLEdBQUcsUUFBUSxDQUFDLHFCQUFxQixDQUFDO2dCQUNuRCxzQkFBc0IsRUFBRSxJQUFJO2dCQUM1Qix5QkFBeUIsRUFBRSxJQUFJO2FBQ2hDLENBQUM7O2dCQUNFLGNBQWMsR0FBVSxLQUFLO1lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOztzQkFDdkMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7O3NCQUN0QixLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDOztzQkFDcEMsY0FBYyxHQUFHLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDbEcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsRUFBRTtvQkFDekMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2lCQUM5RDthQUNGO1lBRUQsT0FBTyxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN2RSxDQUFDO0tBQUE7Q0FFRjs7Ozs7O0lBdENhLHdDQUE4Qzs7Ozs7SUFBRSxnQ0FBc0I7Ozs7O0lBQUUsc0NBQWtDOzs7OztJQUFFLGtDQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBQbGFjZUhpc3RvcnkgfSBmcm9tICcuLi9wbGFjZS1oaXN0b3J5JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vdmlzaXQnO1xuXG5leHBvcnQgY2xhc3MgVmlzaXRTYW5pdGlzZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHBsYWNlSGlzdG9yeTogUGxhY2VIaXN0b3J5LCBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuXG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBzYW5pdGlzZSh2aXNpdDogVmlzaXQpOiBQcm9taXNlPFZpc2l0PiB7XG4gICAgY29uc3QgcGxhY2VEZWYgPSB2aXNpdC5wbGFjZURlZmluaXRpb247XG4gICAgaWYgKHBsYWNlRGVmLmhhc1JvdXRlSWQoKSkge1xuICAgICAgY29uc3Qgcm91dGVJZERlZiA9IHBsYWNlRGVmLmdldFJvdXRlSWRQYXJhbWV0ZXJEZWYoKTtcbiAgICAgIGNvbnN0IHJvdXRlSWQgPSB2aXNpdC5nZXRSb3V0ZUlkKCk7XG4gICAgICBjb25zdCBzYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IHJvdXRlSWREZWYuc2FuaXRpc2Uocm91dGVJZCwgdmlzaXQsIHRoaXMucGxhY2VIaXN0b3J5LCB0aGlzLmluamVjdG9yKTtcbiAgICAgIGNvbnNvbGUubG9nKHtyb3V0ZUlkLCBzYW5pdGlzZWRWYWx1ZX0pO1xuICAgICAgLy8gIyMjLS0tLS0tLSBFQVJMWSBFWElUIC0tLS0tLS0tIyMjXG4gICAgICBpZiAocm91dGVJZERlZi5oYXNDaGFuZ2VkKHJvdXRlSWQsIHNhbml0aXNlZFZhbHVlKSkge1xuICAgICAgICAvLyBpZiB0aGUgcm91dGUgaWQgaGFzIGNoYW5nZWQgd2UgcmVkaXJlY3QgaW1tZWRpYXRlbHkgYXMgb3RoZXJcbiAgICAgICAgLy8gcGFyYW1ldGVyIHNhbml0aXNlcnMgbWlnaHQgdXNlIGl0LlxuICAgICAgICByZXR1cm4gdmlzaXQucmVwbGFjZShyb3V0ZUlkRGVmLCBzYW5pdGlzZWRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgd2UgZGlkbid0IHJlcGxhY2UgdGhlIHJvdXRlSWQgd2UgY29udGludWUgdGhlIHVybCBwcmVzZW50IHBhcmFtZXRlcnMuXG4gICAgY29uc3QgcGFyYW1ldGVyRGVmcyA9IHBsYWNlRGVmLmdldFZpc2l0UGFyYW1ldGVyRGVmcyh7XG4gICAgICBpbmNsdWRlUm91dGVQYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgaW5jbHVkZU5vblJvdXRlUGFyYW1ldGVyczogdHJ1ZVxuICAgIH0pO1xuICAgIGxldCBzYW5pdGlzZWRWaXNpdDogVmlzaXQgPSB2aXNpdDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtZXRlckRlZnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGRlZiA9IHBhcmFtZXRlckRlZnNbaV07XG4gICAgICBjb25zdCB2YWx1ZSA9IHZpc2l0LmdldFBhcmFtZXRlcihkZWYubmFtZSk7XG4gICAgICBjb25zdCBzYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IGRlZi5zYW5pdGlzZSh2YWx1ZSwgc2FuaXRpc2VkVmlzaXQsIHRoaXMucGxhY2VIaXN0b3J5LCB0aGlzLmluamVjdG9yKTtcbiAgICAgIGlmIChkZWYuaGFzQ2hhbmdlZCh2YWx1ZSwgc2FuaXRpc2VkVmFsdWUpKSB7XG4gICAgICAgIHNhbml0aXNlZFZpc2l0ID0gc2FuaXRpc2VkVmlzaXQucmVwbGFjZShkZWYsIHNhbml0aXNlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2FuaXRpc2VkVmlzaXQuaGFzQ2hhbmdlZEZyb20odmlzaXQpID8gc2FuaXRpc2VkVmlzaXQgOiB2aXNpdDtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -2,21 +2,120 @@
|
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
|
+
import * as _ from 'lodash';
|
|
5
6
|
/**
|
|
6
7
|
* @record
|
|
7
8
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
|
|
9
|
+
function Params() { }
|
|
10
|
+
export class Visit {
|
|
11
|
+
/**
|
|
12
|
+
* @param {?} placeDefinition
|
|
13
|
+
* @param {?=} visitParameters
|
|
14
|
+
*/
|
|
15
|
+
constructor(placeDefinition, visitParameters = {}) {
|
|
16
|
+
this.placeDefinition = placeDefinition;
|
|
17
|
+
this.visitParameters = visitParameters;
|
|
18
|
+
}
|
|
19
|
+
// @Trace()
|
|
20
|
+
/**
|
|
21
|
+
* @return {?}
|
|
22
|
+
*/
|
|
23
|
+
getRouteId() {
|
|
24
|
+
return this.placeDefinition.getRouteIdFrom(this);
|
|
25
|
+
}
|
|
26
|
+
// @Trace()
|
|
12
27
|
/**
|
|
13
28
|
* @return {?}
|
|
14
29
|
*/
|
|
15
|
-
|
|
30
|
+
hasRouteId() {
|
|
31
|
+
return !_.isNil(this.getRouteId());
|
|
32
|
+
}
|
|
16
33
|
/**
|
|
17
|
-
*
|
|
34
|
+
* Returns the value of the place parameter with the specified name. The parameter
|
|
35
|
+
* name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the
|
|
36
|
+
* same as the the ValueModel property name.
|
|
37
|
+
* @param {?} parameterName the field name of the property model or the `as` option if specified.
|
|
18
38
|
* @return {?}
|
|
19
39
|
*/
|
|
20
|
-
|
|
40
|
+
getParameter(parameterName) {
|
|
41
|
+
return this.visitParameters[parameterName];
|
|
42
|
+
}
|
|
43
|
+
// @Trace()
|
|
44
|
+
/**
|
|
45
|
+
* @param {?} parameterName
|
|
46
|
+
* @return {?}
|
|
47
|
+
*/
|
|
48
|
+
hasParameter(parameterName) {
|
|
49
|
+
return Object.keys(this.visitParameters).includes(parameterName);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @template S
|
|
53
|
+
* @param {?} parameter
|
|
54
|
+
* @param {?} value
|
|
55
|
+
* @return {?}
|
|
56
|
+
*/
|
|
57
|
+
replace(parameter, value) {
|
|
58
|
+
return new Visit(this.placeDefinition, Object.assign({}, this.visitParameters, { [parameter.name]: value }));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* @template S
|
|
62
|
+
* @param {?} routeParams
|
|
63
|
+
* @return {?}
|
|
64
|
+
*/
|
|
65
|
+
mergeRouteParameters(routeParams) {
|
|
66
|
+
// todo: whitelist parameters.
|
|
67
|
+
/** @type {?} */
|
|
68
|
+
const routeParameterKeys = Object.keys(routeParams);
|
|
69
|
+
/** @type {?} */
|
|
70
|
+
const params = {};
|
|
71
|
+
this.placeDefinition.getVisitParameterDefs().forEach((/**
|
|
72
|
+
* @param {?} def
|
|
73
|
+
* @return {?}
|
|
74
|
+
*/
|
|
75
|
+
def => {
|
|
76
|
+
if (def.isRouteId || def.isRouteParameter) {
|
|
77
|
+
if (routeParameterKeys.includes(def.name)) {
|
|
78
|
+
params[def.name] = routeParams[def.name];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
// copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the
|
|
83
|
+
// defaults and remember sanitisation process.
|
|
84
|
+
if (this.hasParameter(def.name)) {
|
|
85
|
+
params[def.name] = this.getParameter(def.name);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}));
|
|
89
|
+
return new Visit(this.placeDefinition, params);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* @param {?} other
|
|
93
|
+
* @return {?}
|
|
94
|
+
*/
|
|
95
|
+
hasRoutingChangedFrom(other) {
|
|
96
|
+
/** @type {?} */
|
|
97
|
+
const samePlace = other.placeDefinition === this.placeDefinition;
|
|
98
|
+
/** @type {?} */
|
|
99
|
+
const sameRouteParameters = _.isEqual(this.placeDefinition.getFormattedRouteParameters(this, true), this.placeDefinition.getFormattedRouteParameters(other, true));
|
|
100
|
+
return !samePlace || !sameRouteParameters;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* @param {?} other
|
|
104
|
+
* @return {?}
|
|
105
|
+
*/
|
|
106
|
+
hasChangedFrom(other) {
|
|
107
|
+
/** @type {?} */
|
|
108
|
+
const sameNonRouteParameters = _.isEqual(this.placeDefinition.getNonRouteParameters(this), this.placeDefinition.getNonRouteParameters(other));
|
|
109
|
+
return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (false) {
|
|
113
|
+
/** @type {?} */
|
|
114
|
+
Visit.prototype.placeDefinition;
|
|
115
|
+
/**
|
|
116
|
+
* @type {?}
|
|
117
|
+
* @private
|
|
118
|
+
*/
|
|
119
|
+
Visit.prototype.visitParameters;
|
|
21
120
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvdmlzaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOzs7O0FBSTVCLHFCQUVDO0FBR0QsTUFBTSxPQUFPLEtBQUs7Ozs7O0lBRWhCLFlBQXFCLGVBQWdDLEVBQW1CLGtCQUEwQixFQUFFO1FBQS9FLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUFtQixvQkFBZSxHQUFmLGVBQWUsQ0FBYTtJQUNwRyxDQUFDOzs7OztJQUdELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7Ozs7O0lBR0QsVUFBVTtRQUNSLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Ozs7Ozs7O0lBUUQsWUFBWSxDQUFDLGFBQXFCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3QyxDQUFDOzs7Ozs7SUFHRCxZQUFZLENBQUMsYUFBcUI7UUFDaEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkUsQ0FBQzs7Ozs7OztJQUVELE9BQU8sQ0FBSSxTQUFzQyxFQUFFLEtBQVE7UUFDekQsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxvQkFBTyxJQUFJLENBQUMsZUFBZSxJQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBRyxDQUFDO0lBQy9GLENBQUM7Ozs7OztJQUVELG9CQUFvQixDQUFJLFdBQWlDOzs7Y0FFakQsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7O2NBQzdDLE1BQU0sR0FBRyxFQUFFO1FBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxPQUFPOzs7O1FBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekQsSUFBSSxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDekMsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUN6QyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzFDO2FBQ0Y7aUJBQU07Z0JBQ0wsOEdBQThHO2dCQUM5Ryw4Q0FBOEM7Z0JBQzlDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQy9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2hEO2FBQ0Y7UUFDSCxDQUFDLEVBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7OztJQUVELHFCQUFxQixDQUFDLEtBQVk7O2NBQzFCLFNBQVMsR0FBRyxLQUFLLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxlQUFlOztjQUMxRCxtQkFBbUIsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLDJCQUEyQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFDNUQsSUFBSSxDQUFDLGVBQWUsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzlEO1FBQ0QsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQzVDLENBQUM7Ozs7O0lBRUQsY0FBYyxDQUFDLEtBQVk7O2NBQ25CLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQ2xEO1FBQ0QsT0FBTyxDQUFDLHNCQUFzQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0Y7OztJQXBFYSxnQ0FBeUM7Ozs7O0lBQUUsZ0NBQTZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgUGFyYW1ldGVyRGVmaW5pdGlvbiB9IGZyb20gJy4vcm91dGUvcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MnO1xuXG5pbnRlcmZhY2UgUGFyYW1zIHtcbiAgW3A6IHN0cmluZ106IGFueVxufVxuXG5cbmV4cG9ydCBjbGFzcyBWaXNpdCB7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgcGxhY2VEZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb24sIHByaXZhdGUgcmVhZG9ubHkgdmlzaXRQYXJhbWV0ZXJzOiBQYXJhbXMgPSB7fSkge1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgZ2V0Um91dGVJZCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnBsYWNlRGVmaW5pdGlvbi5nZXRSb3V0ZUlkRnJvbSh0aGlzKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGhhc1JvdXRlSWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFfLmlzTmlsKHRoaXMuZ2V0Um91dGVJZCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgcGxhY2UgcGFyYW1ldGVyIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLiAgVGhlIHBhcmFtZXRlclxuICAgKiBuYW1lIGlzIHRha2VuIGZyb20gdGhlIGBhc2Agb3B0aW9uLCBlLmcuIHthczogJ2FDdXN0b21OYW1lJ30gb3RoZXJ3aXNlIGl0IGlzIHRoZVxuICAgKiBzYW1lIGFzIHRoZSB0aGUgVmFsdWVNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgKiBAcGFyYW0gcGFyYW1ldGVyTmFtZSB0aGUgZmllbGQgbmFtZSBvZiB0aGUgcHJvcGVydHkgbW9kZWwgb3IgdGhlIGBhc2Agb3B0aW9uIGlmIHNwZWNpZmllZC5cbiAgICovXG4gIGdldFBhcmFtZXRlcihwYXJhbWV0ZXJOYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnZpc2l0UGFyYW1ldGVyc1twYXJhbWV0ZXJOYW1lXTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGhhc1BhcmFtZXRlcihwYXJhbWV0ZXJOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy52aXNpdFBhcmFtZXRlcnMpLmluY2x1ZGVzKHBhcmFtZXRlck5hbWUpO1xuICB9XG5cbiAgcmVwbGFjZTxTPihwYXJhbWV0ZXI6IFBhcmFtZXRlckRlZmluaXRpb248YW55LCBTPiwgdmFsdWU6IFMpOiBWaXNpdCB7XG4gICAgcmV0dXJuIG5ldyBWaXNpdCh0aGlzLnBsYWNlRGVmaW5pdGlvbiwgeyAuLi50aGlzLnZpc2l0UGFyYW1ldGVycywgW3BhcmFtZXRlci5uYW1lXTogdmFsdWUgfSk7XG4gIH1cblxuICBtZXJnZVJvdXRlUGFyYW1ldGVyczxTPihyb3V0ZVBhcmFtczogeyBbcDogc3RyaW5nXTogYW55IH0pOiBWaXNpdCB7XG4gICAgLy8gdG9kbzogd2hpdGVsaXN0IHBhcmFtZXRlcnMuXG4gICAgY29uc3Qgcm91dGVQYXJhbWV0ZXJLZXlzID0gT2JqZWN0LmtleXMocm91dGVQYXJhbXMpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIHRoaXMucGxhY2VEZWZpbml0aW9uLmdldFZpc2l0UGFyYW1ldGVyRGVmcygpLmZvckVhY2goZGVmID0+IHtcbiAgICAgIGlmIChkZWYuaXNSb3V0ZUlkIHx8IGRlZi5pc1JvdXRlUGFyYW1ldGVyKSB7XG4gICAgICAgIGlmIChyb3V0ZVBhcmFtZXRlcktleXMuaW5jbHVkZXMoZGVmLm5hbWUpKSB7XG4gICAgICAgICAgcGFyYW1zW2RlZi5uYW1lXSA9IHJvdXRlUGFyYW1zW2RlZi5uYW1lXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29weSBub24gcm91dGUgcGFyYW1zIGFzIGlzLCBidXQgb25seSBpZiB0aGV5IGFscmVhZHkgZXhpc3Qgb3RoZXJ3aXNlIHdlJ2xsIGluamVjdCBuaWwgdmFsdWVzIGFuZCBicmVhayB0aGVcbiAgICAgICAgLy8gZGVmYXVsdHMgYW5kIHJlbWVtYmVyIHNhbml0aXNhdGlvbiBwcm9jZXNzLlxuICAgICAgICBpZiAodGhpcy5oYXNQYXJhbWV0ZXIoZGVmLm5hbWUpKSB7XG4gICAgICAgICAgcGFyYW1zW2RlZi5uYW1lXSA9IHRoaXMuZ2V0UGFyYW1ldGVyKGRlZi5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgVmlzaXQodGhpcy5wbGFjZURlZmluaXRpb24sIHBhcmFtcyk7XG4gIH1cblxuICBoYXNSb3V0aW5nQ2hhbmdlZEZyb20ob3RoZXI6IFZpc2l0KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2FtZVBsYWNlID0gb3RoZXIucGxhY2VEZWZpbml0aW9uID09PSB0aGlzLnBsYWNlRGVmaW5pdGlvbjtcbiAgICBjb25zdCBzYW1lUm91dGVQYXJhbWV0ZXJzID0gXy5pc0VxdWFsKFxuICAgICAgdGhpcy5wbGFjZURlZmluaXRpb24uZ2V0Rm9ybWF0dGVkUm91dGVQYXJhbWV0ZXJzKHRoaXMsIHRydWUpLFxuICAgICAgdGhpcy5wbGFjZURlZmluaXRpb24uZ2V0Rm9ybWF0dGVkUm91dGVQYXJhbWV0ZXJzKG90aGVyLCB0cnVlKVxuICAgICk7XG4gICAgcmV0dXJuICFzYW1lUGxhY2UgfHwgIXNhbWVSb3V0ZVBhcmFtZXRlcnM7XG4gIH1cblxuICBoYXNDaGFuZ2VkRnJvbShvdGhlcjogVmlzaXQpIHtcbiAgICBjb25zdCBzYW1lTm9uUm91dGVQYXJhbWV0ZXJzID0gXy5pc0VxdWFsKFxuICAgICAgdGhpcy5wbGFjZURlZmluaXRpb24uZ2V0Tm9uUm91dGVQYXJhbWV0ZXJzKHRoaXMpLFxuICAgICAgdGhpcy5wbGFjZURlZmluaXRpb24uZ2V0Tm9uUm91dGVQYXJhbWV0ZXJzKG90aGVyKVxuICAgICk7XG4gICAgcmV0dXJuICFzYW1lTm9uUm91dGVQYXJhbWV0ZXJzIHx8IHRoaXMuaGFzUm91dGluZ0NoYW5nZWRGcm9tKG90aGVyKTtcbiAgfVxufVxuIl19
|