@coolon/angular-ui-powerups 0.0.36 → 0.0.38
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 +1428 -809
- 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 -14
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/coolon-angular-ui-powerups.js +16 -14
- package/esm2015/index.js +2 -2
- package/esm2015/lib/angular-ui-powerups.module.js +6 -8
- package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +2 -3
- package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +1 -2
- package/esm2015/lib/place/components/abstract-place-navigation.component.js +75 -0
- package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +47 -0
- package/esm2015/lib/place/components/place-outlet/route-animations.js +12 -5
- package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +5 -39
- package/esm2015/lib/place/guards/leave-place.guard.js +11 -2
- package/esm2015/lib/place/guards/place-route.guard.js +29 -37
- package/esm2015/lib/place/index.js +11 -9
- package/esm2015/lib/place/nav-item.js +23 -0
- package/esm2015/lib/place/place-component-like.js +17 -0
- package/esm2015/lib/place/place-component.js +118 -14
- package/esm2015/lib/place/place-updates-service.js +16 -0
- package/esm2015/lib/place/place.decorator.js +1 -1
- package/esm2015/lib/place/place.module.js +6 -3
- package/esm2015/lib/place/place.service.js +30 -6
- package/esm2015/lib/place/route/default-parameter-sanitiser.js +78 -0
- package/esm2015/lib/place/route/parameter-decorators.js +15 -7
- package/esm2015/lib/place/route/parameter-definition.class.js +2 -2
- package/esm2015/lib/place/route/parameter-sanitiser.js +17 -2
- package/esm2015/lib/place/route/parameter-snapshot.js +382 -0
- package/esm2015/lib/place/route/parameter-type.js +3 -2
- package/esm2015/lib/place/route/route-parameter-sanitiser.js +73 -38
- package/esm2015/lib/place/visit.js +22 -0
- package/esm2015/public_api.js +2 -2
- package/esm5/coolon-angular-ui-powerups.js +16 -14
- package/esm5/index.js +2 -2
- package/esm5/lib/angular-ui-powerups.module.js +6 -8
- package/esm5/lib/interaction/components/activity-container/activity-container.component.js +2 -3
- package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +1 -2
- package/esm5/lib/place/components/abstract-place-navigation.component.js +86 -0
- package/esm5/lib/place/components/list-place-nav/list-place-nav.component.js +61 -0
- package/esm5/lib/place/components/place-outlet/route-animations.js +12 -5
- package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +6 -43
- package/esm5/lib/place/guards/leave-place.guard.js +11 -2
- package/esm5/lib/place/guards/place-route.guard.js +28 -37
- package/esm5/lib/place/index.js +11 -9
- package/esm5/lib/place/nav-item.js +23 -0
- package/esm5/lib/place/place-component-like.js +17 -0
- package/esm5/lib/place/place-component.js +132 -15
- package/esm5/lib/place/place-updates-service.js +16 -0
- package/esm5/lib/place/place.decorator.js +1 -1
- package/esm5/lib/place/place.module.js +6 -3
- package/esm5/lib/place/place.service.js +35 -6
- package/esm5/lib/place/route/default-parameter-sanitiser.js +85 -0
- package/esm5/lib/place/route/parameter-decorators.js +15 -7
- package/esm5/lib/place/route/parameter-definition.class.js +2 -2
- package/esm5/lib/place/route/parameter-sanitiser.js +17 -2
- package/esm5/lib/place/route/parameter-snapshot.js +474 -0
- package/esm5/lib/place/route/parameter-type.js +3 -2
- package/esm5/lib/place/route/route-parameter-sanitiser.js +100 -45
- package/esm5/lib/place/visit.js +22 -0
- package/esm5/public_api.js +2 -2
- package/fesm2015/coolon-angular-ui-powerups.js +1146 -651
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +1391 -779
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/place/components/abstract-place-navigation.component.d.ts +13 -0
- package/lib/place/components/list-place-nav/list-place-nav.component.d.ts +8 -0
- package/lib/place/components/place-outlet/route-animations.d.ts +1 -0
- package/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.d.ts +2 -9
- package/lib/place/guards/place-route.guard.d.ts +4 -4
- package/lib/place/index.d.ts +8 -6
- package/lib/place/nav-item.d.ts +5 -0
- package/lib/place/{i-place-component.d.ts → place-component-like.d.ts} +1 -1
- package/lib/place/place-component.d.ts +19 -8
- package/lib/place/place-updates-service.d.ts +10 -0
- package/lib/place/place.service.d.ts +11 -8
- package/lib/place/route/default-parameter-sanitiser.d.ts +13 -0
- package/lib/place/route/parameter-decorators.d.ts +6 -2
- package/lib/place/route/parameter-definition.class.d.ts +3 -3
- package/lib/place/route/parameter-sanitiser.d.ts +8 -1
- package/lib/place/route/parameter-snapshot.d.ts +46 -0
- package/lib/place/route/route-parameter-sanitiser.d.ts +13 -9
- package/lib/place/visit.d.ts +6 -0
- package/package.json +1 -1
- package/schematics/place-routes/index.js +8 -95
- package/schematics/place-routes/index.js.map +1 -1
- package/schematics/place-routes/place-builder.d.ts +19 -0
- package/schematics/place-routes/place-builder.js +109 -0
- package/schematics/place-routes/place-builder.js.map +1 -0
- package/schematics/place-routes/{scanner.d.ts → place-class-scanner.d.ts} +10 -6
- package/schematics/place-routes/{scanner.js → place-class-scanner.js} +43 -18
- package/schematics/place-routes/place-class-scanner.js.map +1 -0
- package/schematics/place-routes/place-def.d.ts +19 -4
- package/schematics/place-routes/place-def.js +54 -4
- package/schematics/place-routes/place-def.js.map +1 -1
- package/schematics/place-routes/templates/{place-routes.ts.template → places.ts.template} +14 -11
- package/esm2015/lib/place/i-place-component.js +0 -17
- package/esm2015/lib/place/i-place-service.js +0 -16
- package/esm2015/lib/place/route/resolved-parameter.js +0 -16
- package/esm2015/lib/place/route/resolved-route-parameter-snapshot.js +0 -106
- package/esm2015/lib/place/route/route-parameter-bindings.js +0 -150
- package/esm2015/lib/place/route/visit-snapshot.js +0 -7
- package/esm5/lib/place/i-place-component.js +0 -17
- package/esm5/lib/place/i-place-service.js +0 -16
- package/esm5/lib/place/route/resolved-parameter.js +0 -16
- package/esm5/lib/place/route/resolved-route-parameter-snapshot.js +0 -129
- package/esm5/lib/place/route/route-parameter-bindings.js +0 -167
- package/esm5/lib/place/route/visit-snapshot.js +0 -11
- package/lib/place/i-place-service.d.ts +0 -10
- package/lib/place/route/resolved-parameter.d.ts +0 -5
- package/lib/place/route/resolved-route-parameter-snapshot.d.ts +0 -12
- package/lib/place/route/route-parameter-bindings.d.ts +0 -17
- package/lib/place/route/visit-snapshot.d.ts +0 -2
- package/schematics/place-routes/scanner.js.map +0 -1
- package/schematics/place-routes/templates/place-router.ts.template +0 -33
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { assert, UseDelegate } from '@coolon/pectin';
|
|
6
6
|
import { Klass, Opts } from '@coolon/typescript-utilities';
|
|
7
|
-
import {
|
|
7
|
+
import { ROUTE_PARAMETER_LIST_KEY } from '../place-component';
|
|
8
8
|
/**
|
|
9
9
|
* @record
|
|
10
10
|
* @template T
|
|
@@ -16,6 +16,10 @@ if (false) {
|
|
|
16
16
|
/** @type {?|undefined} */
|
|
17
17
|
ParameterOptions.prototype.optional;
|
|
18
18
|
/** @type {?|undefined} */
|
|
19
|
+
ParameterOptions.prototype.remember;
|
|
20
|
+
/** @type {?|undefined} */
|
|
21
|
+
ParameterOptions.prototype.defaultValue;
|
|
22
|
+
/** @type {?|undefined} */
|
|
19
23
|
ParameterOptions.prototype.sanitiser;
|
|
20
24
|
}
|
|
21
25
|
/**
|
|
@@ -29,7 +33,11 @@ if (false) {
|
|
|
29
33
|
/** @type {?|undefined} */
|
|
30
34
|
ListParameterOptions.prototype.optional;
|
|
31
35
|
/** @type {?|undefined} */
|
|
32
|
-
ListParameterOptions.prototype.
|
|
36
|
+
ListParameterOptions.prototype.remember;
|
|
37
|
+
/** @type {?|undefined} */
|
|
38
|
+
ListParameterOptions.prototype.defaultValue;
|
|
39
|
+
/** @type {?|undefined} */
|
|
40
|
+
ListParameterOptions.prototype.sanitiser;
|
|
33
41
|
}
|
|
34
42
|
/**
|
|
35
43
|
* @template T
|
|
@@ -47,7 +55,7 @@ export function RouteId(type, options) {
|
|
|
47
55
|
function (prototype, propertyKey) {
|
|
48
56
|
/** @type {?} */
|
|
49
57
|
var param = createDefinition(propertyKey, type, options, true);
|
|
50
|
-
Klass.get(prototype).addToOwnMetadataList(
|
|
58
|
+
Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);
|
|
51
59
|
UseDelegate()(prototype, propertyKey);
|
|
52
60
|
});
|
|
53
61
|
}
|
|
@@ -67,7 +75,7 @@ export function RouteParameter(type, options) {
|
|
|
67
75
|
function (prototype, propertyKey) {
|
|
68
76
|
/** @type {?} */
|
|
69
77
|
var param = createDefinition(propertyKey, type, options, false);
|
|
70
|
-
Klass.get(prototype).addToOwnMetadataList(
|
|
78
|
+
Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);
|
|
71
79
|
UseDelegate()(prototype, propertyKey);
|
|
72
80
|
});
|
|
73
81
|
}
|
|
@@ -87,7 +95,7 @@ export function RouteParameterList(elementType, options) {
|
|
|
87
95
|
function (prototype, propertyKey) {
|
|
88
96
|
/** @type {?} */
|
|
89
97
|
var param = createArrayDefinition(propertyKey, elementType, options);
|
|
90
|
-
Klass.get(prototype).addToOwnMetadataList(
|
|
98
|
+
Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);
|
|
91
99
|
UseDelegate()(prototype, propertyKey);
|
|
92
100
|
});
|
|
93
101
|
}
|
|
@@ -132,10 +140,10 @@ function createArrayDefinition(propertyName, type, options) {
|
|
|
132
140
|
name: opts.getOptional('as', propertyNameAsString),
|
|
133
141
|
propertyName: propertyNameAsString,
|
|
134
142
|
type: assert.notNil(type),
|
|
135
|
-
sanitiser: opts.getOptional('
|
|
143
|
+
sanitiser: opts.getOptional('sanitiser', null),
|
|
136
144
|
isRouteId: false,
|
|
137
145
|
isArray: true
|
|
138
146
|
};
|
|
139
147
|
return def;
|
|
140
148
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLWRlY29yYXRvcnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2Uvcm91dGUvcGFyYW1ldGVyLWRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQWlCLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBSzlELHNDQU1DOzs7SUFMQyw4QkFBWTs7SUFDWixvQ0FBbUI7O0lBQ25CLG9DQUFtQjs7SUFDbkIsd0NBQWlCOztJQUNqQixxQ0FBaUY7Ozs7OztBQUduRiwwQ0FNQzs7O0lBTEMsa0NBQVk7O0lBQ1osd0NBQW1COztJQUNuQix3Q0FBbUI7O0lBQ25CLDRDQUFtQjs7SUFDbkIseUNBQXFGOzs7Ozs7OztBQUd2RixNQUFNLFVBQVUsT0FBTyxDQUE0QixJQUFzQixFQUFFLE9BQTZCO0lBQ3RHLG1DQUFtQztJQUNuQzs7Ozs7SUFBTyxVQUFDLFNBQWlCLEVBQUUsV0FBNEI7O1lBQy9DLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDaEUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRSxXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxFQUFDO0FBQ0osQ0FBQzs7Ozs7OztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUksSUFBc0IsRUFBRSxPQUE2QjtJQUNyRixtQ0FBbUM7SUFDbkM7Ozs7O0lBQU8sVUFBQyxTQUFpQixFQUFFLFdBQTRCOztZQUMvQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDO1FBQ2pFLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsb0JBQW9CLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0UsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsRUFBQztBQUNKLENBQUM7Ozs7Ozs7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUksV0FBNkIsRUFBRSxPQUFpQztJQUNwRyxtQ0FBbUM7SUFDbkM7Ozs7O0lBQU8sVUFBQyxTQUFpQixFQUFFLFdBQTRCOztZQUMvQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUM7UUFDdEUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRSxXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxFQUFDO0FBQ0osQ0FBQzs7Ozs7Ozs7O0FBRUQsU0FBUyxnQkFBZ0IsQ0FBSSxZQUE2QixFQUFFLElBQXNCLEVBQUUsT0FBNEIsRUFBRSxPQUFnQjs7UUFDMUgsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDOztRQUN4QixvQkFBb0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsRUFBRTs7UUFDN0QsR0FBRyxHQUE4QjtRQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUM7UUFDbEQsWUFBWSxFQUFFLG9CQUFvQjtRQUNsQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQztRQUM5QyxTQUFTLEVBQUUsT0FBTztRQUNsQixPQUFPLEVBQUUsS0FBSztLQUNmO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDOzs7Ozs7OztBQUVELFNBQVMscUJBQXFCLENBQUksWUFBNkIsRUFBRSxJQUFzQixFQUFFLE9BQWdDOztRQUNqSCxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7O1FBQ3hCLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFOztRQUU3RCxHQUFHLEdBQWdDO1FBQ3ZDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQztRQUNsRCxZQUFZLEVBQUUsb0JBQW9CO1FBQ2xDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDO1FBQzlDLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLE9BQU8sRUFBRSxJQUFJO0tBQ2Q7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQsIENvbnN0cnVjdGFibGUsIFVzZURlbGVnYXRlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgS2xhc3MsIE9wdHMgfSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcbmltcG9ydCB7IFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSB9IGZyb20gJy4uL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9wYXJhbWV0ZXItZGVmaW5pdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJTYW5pdGlzZXIgfSBmcm9tICcuL3BhcmFtZXRlci1zYW5pdGlzZXInO1xuaW1wb3J0IHsgUGFyYW1ldGVyVHlwZSB9IGZyb20gJy4vcGFyYW1ldGVyLXR5cGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlck9wdGlvbnM8VD4ge1xuICBhcz86IHN0cmluZztcbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICByZW1lbWJlcj86IGJvb2xlYW47XG4gIGRlZmF1bHRWYWx1ZT86IFQ7XG4gIHNhbml0aXNlcj86IENvbnN0cnVjdGFibGU8UGFyYW1ldGVyU2FuaXRpc2VyPFQ+PiB8IFBhcmFtZXRlclNhbml0aXNlci5PcHRpb25zPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RQYXJhbWV0ZXJPcHRpb25zPFQ+IHtcbiAgYXM/OiBzdHJpbmc7XG4gIG9wdGlvbmFsPzogYm9vbGVhbjtcbiAgcmVtZW1iZXI/OiBib29sZWFuO1xuICBkZWZhdWx0VmFsdWU/OiBUW107XG4gIHNhbml0aXNlcj86IENvbnN0cnVjdGFibGU8UGFyYW1ldGVyU2FuaXRpc2VyPFRbXT4+IHwgUGFyYW1ldGVyU2FuaXRpc2VyLk9wdGlvbnM8VFtdPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJvdXRlSWQ8VCBleHRlbmRzIHN0cmluZyB8IG51bWJlcj4odHlwZTogUGFyYW1ldGVyVHlwZTxUPiwgb3B0aW9ucz86IFBhcmFtZXRlck9wdGlvbnM8VD4pOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIC8vIGFzc2VydC5pc1RydXRoeSh0eXBlLmlzVmFsaWQoKSk7XG4gIHJldHVybiAocHJvdG90eXBlOiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcgfCBzeW1ib2wpID0+IHtcbiAgICBjb25zdCBwYXJhbSA9IGNyZWF0ZURlZmluaXRpb24ocHJvcGVydHlLZXksIHR5cGUsIG9wdGlvbnMsIHRydWUpO1xuICAgIEtsYXNzLmdldChwcm90b3R5cGUpLmFkZFRvT3duTWV0YWRhdGFMaXN0KFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSwgcGFyYW0pO1xuICAgIFVzZURlbGVnYXRlKCkocHJvdG90eXBlLCBwcm9wZXJ0eUtleSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSb3V0ZVBhcmFtZXRlcjxUPih0eXBlOiBQYXJhbWV0ZXJUeXBlPFQ+LCBvcHRpb25zPzogUGFyYW1ldGVyT3B0aW9uczxUPik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgLy8gYXNzZXJ0LmlzVHJ1dGh5KHR5cGUuaXNWYWxpZCgpKTtcbiAgcmV0dXJuIChwcm90b3R5cGU6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtID0gY3JlYXRlRGVmaW5pdGlvbihwcm9wZXJ0eUtleSwgdHlwZSwgb3B0aW9ucywgZmFsc2UpO1xuICAgIEtsYXNzLmdldChwcm90b3R5cGUpLmFkZFRvT3duTWV0YWRhdGFMaXN0KFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSwgcGFyYW0pO1xuICAgIFVzZURlbGVnYXRlKCkocHJvdG90eXBlLCBwcm9wZXJ0eUtleSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSb3V0ZVBhcmFtZXRlckxpc3Q8RT4oZWxlbWVudFR5cGU6IFBhcmFtZXRlclR5cGU8RT4sIG9wdGlvbnM/OiBMaXN0UGFyYW1ldGVyT3B0aW9uczxFPik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgLy8gYXNzZXJ0LmlzVHJ1dGh5KHR5cGUuaXNWYWxpZCgpKTtcbiAgcmV0dXJuIChwcm90b3R5cGU6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtID0gY3JlYXRlQXJyYXlEZWZpbml0aW9uKHByb3BlcnR5S2V5LCBlbGVtZW50VHlwZSwgb3B0aW9ucyk7XG4gICAgS2xhc3MuZ2V0KHByb3RvdHlwZSkuYWRkVG9Pd25NZXRhZGF0YUxpc3QoUk9VVEVfUEFSQU1FVEVSX0xJU1RfS0VZLCBwYXJhbSk7XG4gICAgVXNlRGVsZWdhdGUoKShwcm90b3R5cGUsIHByb3BlcnR5S2V5KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVmaW5pdGlvbjxUPihwcm9wZXJ0eU5hbWU6IHN5bWJvbCB8IHN0cmluZywgdHlwZTogUGFyYW1ldGVyVHlwZTxUPiwgb3B0aW9uczogUGFyYW1ldGVyT3B0aW9uczxUPiwgcm91dGVJZDogYm9vbGVhbikge1xuICBjb25zdCBvcHRzID0gT3B0cy5nZXQob3B0aW9ucyk7XG4gIGNvbnN0IHByb3BlcnR5TmFtZUFzU3RyaW5nID0gYXNzZXJ0Lm5vdE5pbChwcm9wZXJ0eU5hbWUpLnRvU3RyaW5nKCk7XG4gIGNvbnN0IGRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBUPiA9IHtcbiAgICBuYW1lOiBvcHRzLmdldE9wdGlvbmFsKCdhcycsIHByb3BlcnR5TmFtZUFzU3RyaW5nKSxcbiAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZUFzU3RyaW5nLFxuICAgIHR5cGU6IGFzc2VydC5ub3ROaWwodHlwZSksXG4gICAgc2FuaXRpc2VyOiBvcHRzLmdldE9wdGlvbmFsKCdzYW5pdGlzZXInLCBudWxsKSxcbiAgICBpc1JvdXRlSWQ6IHJvdXRlSWQsXG4gICAgaXNBcnJheTogZmFsc2VcbiAgfTtcbiAgcmV0dXJuIGRlZjtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQXJyYXlEZWZpbml0aW9uPFQ+KHByb3BlcnR5TmFtZTogc3ltYm9sIHwgc3RyaW5nLCB0eXBlOiBQYXJhbWV0ZXJUeXBlPFQ+LCBvcHRpb25zOiBMaXN0UGFyYW1ldGVyT3B0aW9uczxUPikge1xuICBjb25zdCBvcHRzID0gT3B0cy5nZXQob3B0aW9ucyk7XG4gIGNvbnN0IHByb3BlcnR5TmFtZUFzU3RyaW5nID0gYXNzZXJ0Lm5vdE5pbChwcm9wZXJ0eU5hbWUpLnRvU3RyaW5nKCk7XG5cbiAgY29uc3QgZGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFRbXT4gPSB7XG4gICAgbmFtZTogb3B0cy5nZXRPcHRpb25hbCgnYXMnLCBwcm9wZXJ0eU5hbWVBc1N0cmluZyksXG4gICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWVBc1N0cmluZyxcbiAgICB0eXBlOiBhc3NlcnQubm90TmlsKHR5cGUpLFxuICAgIHNhbml0aXNlcjogb3B0cy5nZXRPcHRpb25hbCgnc2FuaXRpc2VyJywgbnVsbCksXG4gICAgaXNSb3V0ZUlkOiBmYWxzZSxcbiAgICBpc0FycmF5OiB0cnVlXG4gIH07XG4gIHJldHVybiBkZWY7XG59XG4iXX0=
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* @record
|
|
7
|
-
* @template
|
|
7
|
+
* @template T, S
|
|
8
8
|
*/
|
|
9
9
|
export function ParameterDefinition() { }
|
|
10
10
|
if (false) {
|
|
@@ -21,4 +21,4 @@ if (false) {
|
|
|
21
21
|
/** @type {?} */
|
|
22
22
|
ParameterDefinition.prototype.isArray;
|
|
23
23
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2Uvcm91dGUvcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFJQSx5Q0FPQzs7O0lBTkMsbUNBQXNCOztJQUN0QiwyQ0FBOEI7O0lBQzlCLG1DQUFnQzs7SUFDaEMsd0NBQXlGOztJQUN6Rix3Q0FBNEI7O0lBQzVCLHNDQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdGFibGUgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBQYXJhbWV0ZXJTYW5pdGlzZXIgfSBmcm9tICcuL3BhcmFtZXRlci1zYW5pdGlzZXInO1xuaW1wb3J0IHsgUGFyYW1ldGVyVHlwZSB9IGZyb20gJy4vcGFyYW1ldGVyLXR5cGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlckRlZmluaXRpb248VCxTPVQ+IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdHlwZTogUGFyYW1ldGVyVHlwZTxUPjtcbiAgcmVhZG9ubHkgc2FuaXRpc2VyOiBDb25zdHJ1Y3RhYmxlPFBhcmFtZXRlclNhbml0aXNlcjxTPj4gfCBQYXJhbWV0ZXJTYW5pdGlzZXIuT3B0aW9uczxTPjtcbiAgcmVhZG9ubHkgaXNSb3V0ZUlkOiBib29sZWFuO1xuICByZWFkb25seSBpc0FycmF5OiBib29sZWFuO1xufVxuIl19
|
|
@@ -10,8 +10,23 @@ export function ParameterSanitiser() { }
|
|
|
10
10
|
if (false) {
|
|
11
11
|
/**
|
|
12
12
|
* @param {?} value
|
|
13
|
+
* @param {?=} visit
|
|
13
14
|
* @return {?}
|
|
14
15
|
*/
|
|
15
|
-
ParameterSanitiser.prototype.sanitise = function (value) { };
|
|
16
|
+
ParameterSanitiser.prototype.sanitise = function (value, visit) { };
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
+
(function (ParameterSanitiser) {
|
|
19
|
+
/**
|
|
20
|
+
* @record
|
|
21
|
+
* @template T
|
|
22
|
+
*/
|
|
23
|
+
function Options() { }
|
|
24
|
+
ParameterSanitiser.Options = Options;
|
|
25
|
+
if (false) {
|
|
26
|
+
/** @type {?|undefined} */
|
|
27
|
+
Options.prototype.remember;
|
|
28
|
+
/** @type {?|undefined} */
|
|
29
|
+
Options.prototype.defaultValue;
|
|
30
|
+
}
|
|
31
|
+
})(ParameterSanitiser || (ParameterSanitiser = {}));
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNhbml0aXNlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9yb3V0ZS9wYXJhbWV0ZXItc2FuaXRpc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsd0NBRUM7Ozs7Ozs7SUFEQyxvRUFBa0Q7O0FBR3BELFdBQWlCLGtCQUFrQjs7Ozs7SUFDakMsc0JBR0M7Ozs7UUFGQywyQkFBa0I7O1FBQ2xCLCtCQUFnQjs7QUFFcEIsQ0FBQyxFQUxnQixrQkFBa0IsS0FBbEIsa0JBQWtCLFFBS2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlzaXQgfSBmcm9tICcuLi92aXNpdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyU2FuaXRpc2VyPFQ+IHtcbiAgc2FuaXRpc2UodmFsdWU6IFQsIHZpc2l0PzogVmlzaXQpOiBUIHwgUHJvbWlzZTxUPjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQYXJhbWV0ZXJTYW5pdGlzZXIge1xuICBleHBvcnQgaW50ZXJmYWNlIE9wdGlvbnM8VD4ge1xuICAgIHJlbWVtYmVyPzogYm9vbGVhblxuICAgIGRlZmF1bHRWYWx1ZT86IFRcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,474 @@
|
|
|
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
|
+
import { assert, Trace } from '@coolon/pectin';
|
|
7
|
+
import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
|
|
8
|
+
import * as _ from 'lodash';
|
|
9
|
+
// TODO: there are really two types of snapshot, ones with id's and ones without.
|
|
10
|
+
// Id snapshot are repesented by 2 url segments
|
|
11
|
+
// ID => [{'/basePath', params}, {'id', params}]
|
|
12
|
+
// NO ID => [{'/basePath', params}]
|
|
13
|
+
var ParameterSnapshot = /** @class */ (function () {
|
|
14
|
+
function ParameterSnapshot(placeDefinition, resolved) {
|
|
15
|
+
this.placeDefinition = placeDefinition;
|
|
16
|
+
this.resolved = resolved;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @param {?} other
|
|
20
|
+
* @return {?}
|
|
21
|
+
*/
|
|
22
|
+
ParameterSnapshot.prototype.hasChanged = /**
|
|
23
|
+
* @param {?} other
|
|
24
|
+
* @return {?}
|
|
25
|
+
*/
|
|
26
|
+
function (other) {
|
|
27
|
+
/** @type {?} */
|
|
28
|
+
var changed = this.resolved.find((/**
|
|
29
|
+
* @param {?} r
|
|
30
|
+
* @return {?}
|
|
31
|
+
*/
|
|
32
|
+
function (r) {
|
|
33
|
+
return !r.isSame(other.getResolvedParameterValue(r.parameterDef));
|
|
34
|
+
}));
|
|
35
|
+
if (changed) {
|
|
36
|
+
console.log({ mine: changed, theirs: other.getResolvedParameter(changed.parameterDef) });
|
|
37
|
+
}
|
|
38
|
+
return !!changed;
|
|
39
|
+
};
|
|
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
|
+
/**
|
|
73
|
+
* @template T, S
|
|
74
|
+
* @param {?} parameterDef
|
|
75
|
+
* @return {?}
|
|
76
|
+
*/
|
|
77
|
+
ParameterSnapshot.prototype.getResolvedParameter = /**
|
|
78
|
+
* @template T, S
|
|
79
|
+
* @param {?} parameterDef
|
|
80
|
+
* @return {?}
|
|
81
|
+
*/
|
|
82
|
+
function (parameterDef) {
|
|
83
|
+
return this.resolved.find((/**
|
|
84
|
+
* @param {?} r
|
|
85
|
+
* @return {?}
|
|
86
|
+
*/
|
|
87
|
+
function (r) { return r.parameterDef === parameterDef; }));
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* @template T, S
|
|
91
|
+
* @param {?} parameterDef
|
|
92
|
+
* @return {?}
|
|
93
|
+
*/
|
|
94
|
+
ParameterSnapshot.prototype.getResolvedParameterValue = /**
|
|
95
|
+
* @template T, S
|
|
96
|
+
* @param {?} parameterDef
|
|
97
|
+
* @return {?}
|
|
98
|
+
*/
|
|
99
|
+
function (parameterDef) {
|
|
100
|
+
/** @type {?} */
|
|
101
|
+
var resolvedParameter = this.getResolvedParameter(parameterDef);
|
|
102
|
+
return resolvedParameter ? resolvedParameter.value : null;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* @return {?}
|
|
106
|
+
*/
|
|
107
|
+
ParameterSnapshot.prototype.getRouteId = /**
|
|
108
|
+
* @return {?}
|
|
109
|
+
*/
|
|
110
|
+
function () {
|
|
111
|
+
return this.getResolvedRouteId() ? this.getResolvedRouteId().value : null;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* @param {?} name
|
|
115
|
+
* @return {?}
|
|
116
|
+
*/
|
|
117
|
+
ParameterSnapshot.prototype.getRouteParameter = /**
|
|
118
|
+
* @param {?} name
|
|
119
|
+
* @return {?}
|
|
120
|
+
*/
|
|
121
|
+
function (name) {
|
|
122
|
+
/** @type {?} */
|
|
123
|
+
var resolvedParameter = this.resolved.find((/**
|
|
124
|
+
* @param {?} r
|
|
125
|
+
* @return {?}
|
|
126
|
+
*/
|
|
127
|
+
function (r) { return r.parameterDef.name === name; }));
|
|
128
|
+
return resolvedParameter ? resolvedParameter.value : null;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* @private
|
|
132
|
+
* @return {?}
|
|
133
|
+
*/
|
|
134
|
+
ParameterSnapshot.prototype.getResolvedRouteId = /**
|
|
135
|
+
* @private
|
|
136
|
+
* @return {?}
|
|
137
|
+
*/
|
|
138
|
+
function () {
|
|
139
|
+
// RouteId's are never arrays: see parameter-decorators.ts createDefinition methods. It would be nice to
|
|
140
|
+
// capture this in the type system though
|
|
141
|
+
return (/** @type {?} */ (this.resolved.find((/**
|
|
142
|
+
* @param {?} p
|
|
143
|
+
* @return {?}
|
|
144
|
+
*/
|
|
145
|
+
function (p) { return p.parameterDef.isRouteId; }))));
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* @return {?}
|
|
149
|
+
*/
|
|
150
|
+
ParameterSnapshot.prototype.hasRouteId = /**
|
|
151
|
+
* @return {?}
|
|
152
|
+
*/
|
|
153
|
+
function () {
|
|
154
|
+
return !!this.getResolvedRouteId();
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* @return {?}
|
|
158
|
+
*/
|
|
159
|
+
ParameterSnapshot.prototype.getFormattedRouteId = /**
|
|
160
|
+
* @return {?}
|
|
161
|
+
*/
|
|
162
|
+
function () {
|
|
163
|
+
/** @type {?} */
|
|
164
|
+
var routeIdParam = this.getResolvedRouteId();
|
|
165
|
+
return routeIdParam ? routeIdParam.formattedValue() : null;
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* @return {?}
|
|
169
|
+
*/
|
|
170
|
+
ParameterSnapshot.prototype.getFormattedParameters = /**
|
|
171
|
+
* @return {?}
|
|
172
|
+
*/
|
|
173
|
+
function () {
|
|
174
|
+
/** @type {?} */
|
|
175
|
+
var params = {};
|
|
176
|
+
/** @type {?} */
|
|
177
|
+
var routeIdParam = this.resolved.filter((/**
|
|
178
|
+
* @param {?} p
|
|
179
|
+
* @return {?}
|
|
180
|
+
*/
|
|
181
|
+
function (p) { return !p.parameterDef.isRouteId; })).forEach((/**
|
|
182
|
+
* @param {?} p
|
|
183
|
+
* @return {?}
|
|
184
|
+
*/
|
|
185
|
+
function (p) {
|
|
186
|
+
params[p.parameterDef.name] = p.formattedValue();
|
|
187
|
+
}));
|
|
188
|
+
return params;
|
|
189
|
+
};
|
|
190
|
+
/**
|
|
191
|
+
* @template T, S
|
|
192
|
+
* @param {?} parameter
|
|
193
|
+
* @param {?} value
|
|
194
|
+
* @return {?}
|
|
195
|
+
*/
|
|
196
|
+
ParameterSnapshot.prototype.replace = /**
|
|
197
|
+
* @template T, S
|
|
198
|
+
* @param {?} parameter
|
|
199
|
+
* @param {?} value
|
|
200
|
+
* @return {?}
|
|
201
|
+
*/
|
|
202
|
+
function (parameter, value) {
|
|
203
|
+
return new ParameterSnapshot(this.placeDefinition, this.resolved.map((/**
|
|
204
|
+
* @param {?} p
|
|
205
|
+
* @return {?}
|
|
206
|
+
*/
|
|
207
|
+
function (p) {
|
|
208
|
+
return p.parameterDef === parameter ? p.replace(value) : p;
|
|
209
|
+
})));
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* @param {?} url
|
|
213
|
+
* @return {?}
|
|
214
|
+
*/
|
|
215
|
+
ParameterSnapshot.prototype.updateUrl = /**
|
|
216
|
+
* @param {?} url
|
|
217
|
+
* @return {?}
|
|
218
|
+
*/
|
|
219
|
+
function (url) {
|
|
220
|
+
return url;
|
|
221
|
+
};
|
|
222
|
+
var _a;
|
|
223
|
+
tslib_1.__decorate([
|
|
224
|
+
Memoize(),
|
|
225
|
+
tslib_1.__metadata("design:type", Function),
|
|
226
|
+
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
227
|
+
tslib_1.__metadata("design:returntype", ParameterSnapshot.ResolvedParameter)
|
|
228
|
+
], ParameterSnapshot.prototype, "getResolvedParameter", null);
|
|
229
|
+
tslib_1.__decorate([
|
|
230
|
+
Memoize(),
|
|
231
|
+
tslib_1.__metadata("design:type", Function),
|
|
232
|
+
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
233
|
+
tslib_1.__metadata("design:returntype", typeof (_a = typeof S !== "undefined" && S) === "function" ? _a : Object)
|
|
234
|
+
], ParameterSnapshot.prototype, "getResolvedParameterValue", null);
|
|
235
|
+
tslib_1.__decorate([
|
|
236
|
+
Memoize(),
|
|
237
|
+
tslib_1.__metadata("design:type", Function),
|
|
238
|
+
tslib_1.__metadata("design:paramtypes", [String]),
|
|
239
|
+
tslib_1.__metadata("design:returntype", Object)
|
|
240
|
+
], ParameterSnapshot.prototype, "getRouteParameter", null);
|
|
241
|
+
tslib_1.__decorate([
|
|
242
|
+
Memoize(),
|
|
243
|
+
tslib_1.__metadata("design:type", Function),
|
|
244
|
+
tslib_1.__metadata("design:paramtypes", []),
|
|
245
|
+
tslib_1.__metadata("design:returntype", ParameterSnapshot.ResolvedValueParameter)
|
|
246
|
+
], ParameterSnapshot.prototype, "getResolvedRouteId", null);
|
|
247
|
+
return ParameterSnapshot;
|
|
248
|
+
}());
|
|
249
|
+
export { ParameterSnapshot };
|
|
250
|
+
if (false) {
|
|
251
|
+
/** @type {?} */
|
|
252
|
+
ParameterSnapshot.prototype.placeDefinition;
|
|
253
|
+
/**
|
|
254
|
+
* @type {?}
|
|
255
|
+
* @private
|
|
256
|
+
*/
|
|
257
|
+
ParameterSnapshot.prototype.resolved;
|
|
258
|
+
}
|
|
259
|
+
(function (ParameterSnapshot) {
|
|
260
|
+
/**
|
|
261
|
+
* @param {?} placeDef
|
|
262
|
+
* @param {?} paramMap
|
|
263
|
+
* @return {?}
|
|
264
|
+
*/
|
|
265
|
+
function create(placeDef, paramMap) {
|
|
266
|
+
/** @type {?} */
|
|
267
|
+
var resolvedParameters = placeDef.getRouteParameters()
|
|
268
|
+
.map((/**
|
|
269
|
+
* @param {?} def
|
|
270
|
+
* @return {?}
|
|
271
|
+
*/
|
|
272
|
+
function (def) {
|
|
273
|
+
if (def.isArray) {
|
|
274
|
+
/** @type {?} */
|
|
275
|
+
var value = paramMap.has(def.name) ? paramMap.getAll(def.name).map((/**
|
|
276
|
+
* @param {?} raw
|
|
277
|
+
* @return {?}
|
|
278
|
+
*/
|
|
279
|
+
function (raw) { return def.type.parse(raw); })) : null;
|
|
280
|
+
return new ResolvedArrayParameter(def, value);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
/** @type {?} */
|
|
284
|
+
var value = paramMap.has(def.name) ? def.type.parse(paramMap.get(def.name)) : null;
|
|
285
|
+
return new ResolvedValueParameter(def, value);
|
|
286
|
+
}
|
|
287
|
+
}));
|
|
288
|
+
return new ParameterSnapshot(placeDef, resolvedParameters);
|
|
289
|
+
}
|
|
290
|
+
ParameterSnapshot.create = create;
|
|
291
|
+
/**
|
|
292
|
+
* @abstract
|
|
293
|
+
* @template T, S
|
|
294
|
+
*/
|
|
295
|
+
var /**
|
|
296
|
+
* @abstract
|
|
297
|
+
* @template T, S
|
|
298
|
+
*/
|
|
299
|
+
ResolvedParameter = /** @class */ (function () {
|
|
300
|
+
function ResolvedParameter(parameterDef, value) {
|
|
301
|
+
this.parameterDef = parameterDef;
|
|
302
|
+
this.value = value;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* @return {?}
|
|
306
|
+
*/
|
|
307
|
+
ResolvedParameter.prototype.isRouteId = /**
|
|
308
|
+
* @return {?}
|
|
309
|
+
*/
|
|
310
|
+
function () {
|
|
311
|
+
return this.parameterDef.isRouteId;
|
|
312
|
+
};
|
|
313
|
+
return ResolvedParameter;
|
|
314
|
+
}());
|
|
315
|
+
ParameterSnapshot.ResolvedParameter = ResolvedParameter;
|
|
316
|
+
if (false) {
|
|
317
|
+
/** @type {?} */
|
|
318
|
+
ResolvedParameter.prototype.parameterDef;
|
|
319
|
+
/** @type {?} */
|
|
320
|
+
ResolvedParameter.prototype.value;
|
|
321
|
+
/**
|
|
322
|
+
* @abstract
|
|
323
|
+
* @param {?} dest
|
|
324
|
+
* @return {?}
|
|
325
|
+
*/
|
|
326
|
+
ResolvedParameter.prototype.injectRouteParam = function (dest) { };
|
|
327
|
+
/**
|
|
328
|
+
* @abstract
|
|
329
|
+
* @param {?} otherValue
|
|
330
|
+
* @return {?}
|
|
331
|
+
*/
|
|
332
|
+
ResolvedParameter.prototype.isSame = function (otherValue) { };
|
|
333
|
+
/**
|
|
334
|
+
* @abstract
|
|
335
|
+
* @return {?}
|
|
336
|
+
*/
|
|
337
|
+
ResolvedParameter.prototype.formattedValue = function () { };
|
|
338
|
+
/**
|
|
339
|
+
* @abstract
|
|
340
|
+
* @param {?} value
|
|
341
|
+
* @return {?}
|
|
342
|
+
*/
|
|
343
|
+
ResolvedParameter.prototype.replace = function (value) { };
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* @template T
|
|
347
|
+
*/
|
|
348
|
+
var ResolvedValueParameter = /** @class */ (function (_super) {
|
|
349
|
+
tslib_1.__extends(ResolvedValueParameter, _super);
|
|
350
|
+
function ResolvedValueParameter() {
|
|
351
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* @param {?} otherValue
|
|
355
|
+
* @return {?}
|
|
356
|
+
*/
|
|
357
|
+
ResolvedValueParameter.prototype.isSame = /**
|
|
358
|
+
* @param {?} otherValue
|
|
359
|
+
* @return {?}
|
|
360
|
+
*/
|
|
361
|
+
function (otherValue) {
|
|
362
|
+
return this.value === otherValue;
|
|
363
|
+
};
|
|
364
|
+
/**
|
|
365
|
+
* @param {?} dest
|
|
366
|
+
* @return {?}
|
|
367
|
+
*/
|
|
368
|
+
ResolvedValueParameter.prototype.injectRouteParam = /**
|
|
369
|
+
* @param {?} dest
|
|
370
|
+
* @return {?}
|
|
371
|
+
*/
|
|
372
|
+
function (dest) {
|
|
373
|
+
dest[this.parameterDef.name] = this.parameterDef.type.format(this.value);
|
|
374
|
+
};
|
|
375
|
+
/**
|
|
376
|
+
* @param {?} value
|
|
377
|
+
* @return {?}
|
|
378
|
+
*/
|
|
379
|
+
ResolvedValueParameter.prototype.replace = /**
|
|
380
|
+
* @param {?} value
|
|
381
|
+
* @return {?}
|
|
382
|
+
*/
|
|
383
|
+
function (value) {
|
|
384
|
+
return new ResolvedValueParameter(this.parameterDef, value);
|
|
385
|
+
};
|
|
386
|
+
/**
|
|
387
|
+
* @return {?}
|
|
388
|
+
*/
|
|
389
|
+
ResolvedValueParameter.prototype.formattedValue = /**
|
|
390
|
+
* @return {?}
|
|
391
|
+
*/
|
|
392
|
+
function () {
|
|
393
|
+
return !_.isNil(this.value) ? this.parameterDef.type.format(this.value) : null;
|
|
394
|
+
};
|
|
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
|
+
return ResolvedValueParameter;
|
|
402
|
+
}(ResolvedParameter));
|
|
403
|
+
ParameterSnapshot.ResolvedValueParameter = ResolvedValueParameter;
|
|
404
|
+
/**
|
|
405
|
+
* @template T
|
|
406
|
+
*/
|
|
407
|
+
var ResolvedArrayParameter = /** @class */ (function (_super) {
|
|
408
|
+
tslib_1.__extends(ResolvedArrayParameter, _super);
|
|
409
|
+
function ResolvedArrayParameter() {
|
|
410
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* @param {?} otherValue
|
|
414
|
+
* @return {?}
|
|
415
|
+
*/
|
|
416
|
+
ResolvedArrayParameter.prototype.isSame = /**
|
|
417
|
+
* @param {?} otherValue
|
|
418
|
+
* @return {?}
|
|
419
|
+
*/
|
|
420
|
+
function (otherValue) {
|
|
421
|
+
return _.isEqual(this.value, otherValue);
|
|
422
|
+
};
|
|
423
|
+
/**
|
|
424
|
+
* @param {?} dest
|
|
425
|
+
* @return {?}
|
|
426
|
+
*/
|
|
427
|
+
ResolvedArrayParameter.prototype.injectRouteParam = /**
|
|
428
|
+
* @param {?} dest
|
|
429
|
+
* @return {?}
|
|
430
|
+
*/
|
|
431
|
+
function (dest) {
|
|
432
|
+
var _this = this;
|
|
433
|
+
dest[this.parameterDef.name] = this.value.map((/**
|
|
434
|
+
* @param {?} v
|
|
435
|
+
* @return {?}
|
|
436
|
+
*/
|
|
437
|
+
function (v) { return _this.parameterDef.type.format(v); }));
|
|
438
|
+
};
|
|
439
|
+
/**
|
|
440
|
+
* @param {?} value
|
|
441
|
+
* @return {?}
|
|
442
|
+
*/
|
|
443
|
+
ResolvedArrayParameter.prototype.replace = /**
|
|
444
|
+
* @param {?} value
|
|
445
|
+
* @return {?}
|
|
446
|
+
*/
|
|
447
|
+
function (value) {
|
|
448
|
+
return new ResolvedArrayParameter(this.parameterDef, value);
|
|
449
|
+
};
|
|
450
|
+
/**
|
|
451
|
+
* @return {?}
|
|
452
|
+
*/
|
|
453
|
+
ResolvedArrayParameter.prototype.formattedValue = /**
|
|
454
|
+
* @return {?}
|
|
455
|
+
*/
|
|
456
|
+
function () {
|
|
457
|
+
var _this = this;
|
|
458
|
+
return this.value ? this.value.map((/**
|
|
459
|
+
* @param {?} v
|
|
460
|
+
* @return {?}
|
|
461
|
+
*/
|
|
462
|
+
function (v) { return _this.parameterDef.type.format(v); })) : [];
|
|
463
|
+
};
|
|
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
|
+
return ResolvedArrayParameter;
|
|
471
|
+
}(ResolvedParameter));
|
|
472
|
+
ParameterSnapshot.ResolvedArrayParameter = ResolvedArrayParameter;
|
|
473
|
+
})(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=
|