@coolon/angular-ui-powerups 0.0.67 → 0.0.69
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 +2723 -2285
- 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 +207 -5
- package/esm2015/lib/place/place-history.js +3 -2
- package/esm2015/lib/place/place-router.js +184 -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 +263 -5
- package/esm5/lib/place/place-history.js +7 -3
- package/esm5/lib/place/place-router.js +241 -108
- 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 +1452 -1108
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +2715 -2281
- 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 +25 -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 +3 -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 -194
- 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 -159
- 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
|
@@ -12,11 +12,15 @@ var PlaceHistory = /** @class */ (function () {
|
|
|
12
12
|
this.router = router;
|
|
13
13
|
this._history = new Map();
|
|
14
14
|
}
|
|
15
|
+
// @Trace()
|
|
16
|
+
// @Trace()
|
|
15
17
|
/**
|
|
16
18
|
* @param {?} state
|
|
17
19
|
* @return {?}
|
|
18
20
|
*/
|
|
19
|
-
PlaceHistory.prototype.add =
|
|
21
|
+
PlaceHistory.prototype.add =
|
|
22
|
+
// @Trace()
|
|
23
|
+
/**
|
|
20
24
|
* @param {?} state
|
|
21
25
|
* @return {?}
|
|
22
26
|
*/
|
|
@@ -25,7 +29,7 @@ var PlaceHistory = /** @class */ (function () {
|
|
|
25
29
|
var history = this.getHistory(state.placeDefinition);
|
|
26
30
|
/** @type {?} */
|
|
27
31
|
var previousState = _.last(history);
|
|
28
|
-
if (!previousState || state.
|
|
32
|
+
if (!previousState || state.hasChangedFrom(previousState)) {
|
|
29
33
|
history.unshift(state); // LIFO
|
|
30
34
|
this.setHistory(state.placeDefinition, history.slice(0, 3)); // limit our history to 4 visits
|
|
31
35
|
}
|
|
@@ -87,4 +91,4 @@ if (false) {
|
|
|
87
91
|
*/
|
|
88
92
|
PlaceHistory.prototype.router;
|
|
89
93
|
}
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtaGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9wbGFjZS1oaXN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7OztBQUl2QjtJQU9FLHNCQUE2QixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUZuQyxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFHdkQsQ0FBQztJQUVELFdBQVc7Ozs7OztJQUNYLDBCQUFHOzs7Ozs7SUFBSCxVQUFJLEtBQVk7O1lBQ1IsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQzs7WUFDaEQsYUFBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN6RCxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTztZQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztTQUM5RjtJQUNILENBQUM7Ozs7O0lBRUQsaUNBQVU7Ozs7SUFBVixVQUFXLFFBQXlCOztZQUM5QixPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzs7Ozs7O0lBRU8saUNBQVU7Ozs7OztJQUFsQixVQUFtQixRQUF5QixFQUFFLE9BQWdCO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDOztnQkEvQkYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFSUSxNQUFNOzs7dUJBRGY7Q0FvREMsQUE3Q0QsSUE2Q0M7U0ExQ1ksWUFBWTs7Ozs7O0lBRXZCLGdDQUF1RDs7Ozs7SUFFM0MsOEJBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4vdmlzaXQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbGFjZUhpc3Rvcnkge1xuXG4gIHByaXZhdGUgX2hpc3RvcnkgPSBuZXcgTWFwPFBsYWNlRGVmaW5pdGlvbiwgVmlzaXRbXT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyKSB7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhZGQoc3RhdGU6IFZpc2l0KSB7XG4gICAgY29uc3QgaGlzdG9yeSA9IHRoaXMuZ2V0SGlzdG9yeShzdGF0ZS5wbGFjZURlZmluaXRpb24pO1xuICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSBfLmxhc3QoaGlzdG9yeSk7XG4gICAgaWYgKCFwcmV2aW91c1N0YXRlIHx8IHN0YXRlLmhhc0NoYW5nZWRGcm9tKHByZXZpb3VzU3RhdGUpKSB7XG4gICAgICBoaXN0b3J5LnVuc2hpZnQoc3RhdGUpOyAvLyBMSUZPXG4gICAgICB0aGlzLnNldEhpc3Rvcnkoc3RhdGUucGxhY2VEZWZpbml0aW9uLCBoaXN0b3J5LnNsaWNlKDAsIDMpKTsgLy8gbGltaXQgb3VyIGhpc3RvcnkgdG8gNCB2aXNpdHNcbiAgICB9XG4gIH1cblxuICBnZXRIaXN0b3J5KHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24pOiBWaXNpdFtdIHtcbiAgICBsZXQgaGlzdG9yeSA9IHRoaXMuX2hpc3RvcnkuZ2V0KHBsYWNlRGVmKTtcbiAgICBpZiAoIWhpc3RvcnkpIHtcbiAgICAgIGhpc3RvcnkgPSBbXTtcbiAgICAgIHRoaXMuc2V0SGlzdG9yeShwbGFjZURlZiwgaGlzdG9yeSk7XG4gICAgfVxuICAgIHJldHVybiBoaXN0b3J5O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRIaXN0b3J5KHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24sIGhpc3Rvcnk6IFZpc2l0W10pIHtcbiAgICB0aGlzLl9oaXN0b3J5LnNldChwbGFjZURlZiwgaGlzdG9yeSk7XG4gIH1cblxuLy8gcHJldmlvdXNWaXNpdCgpOiBWaXNpdCB7XG4gIC8vICAgcmV0dXJuIF8ubGFzdCh0aGlzLl9oaXN0b3J5KTtcbiAgLy8gfVxuICAvL1xuICAvLyB3aXRoUHJldmlvdXNWaXNpdDxSPihjYWxsYmFjazoocHJldmlvdXNWaXNpdDpWaXNpdCk9PlIsIGRlZmF1bHRWYWx1ZTpSID0gbnVsbCk6UntcbiAgLy8gICBjb25zdCB2aXNpdCA9IHRoaXMucHJldmlvdXNWaXNpdCgpO1xuICAvLyAgIHJldHVybiB2aXNpdCA/IGNhbGxiYWNrKHZpc2l0KSA6IGRlZmF1bHRWYWx1ZTtcbiAgLy8gfVxuICAvL1xuICAvLyBwcmV2aW91c1Zpc2l0VG8ocGxhY2U6IFBsYWNlKTogVmlzaXQge1xuICAvLyAgIHJldHVybiBuZXcgVmlzaXRIaXN0b3J5LlF1ZXJ5KHRoaXMuX2hpc3RvcnkpLnRvKHBsYWNlKS5sYXN0KCk7XG4gIC8vIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBWaXNpdEhpc3Rvcnkge1xuXG4gIC8vIGV4cG9ydCBjbGFzcyBRdWVyeSB7XG4gIC8vICAgcHJpdmF0ZSBfaGlzdG9yeTogVmlzaXQuU3RhdGVbXTtcbiAgLy8gICBwcml2YXRlIF9wbGFjZXM6IFBsYWNlW107XG4gIC8vICAgcHJpdmF0ZSBfcHJlZGljYXRlOiAodmlzaXQ6IGFueSkgPT4gYm9vbGVhbjtcbiAgLy8gICBwcml2YXRlIF9saW1pdDogbnVtYmVyO1xuICAvL1xuICAvLyAgIGNvbnN0cnVjdG9yKGhpc3RvcnksIGxpbWl0ID0gaGlzdG9yeS5sZW5ndGgpIHtcbiAgLy8gICAgIHRoaXMuX2hpc3RvcnkgPSBoaXN0b3J5O1xuICAvLyAgICAgdGhpcy5fcGxhY2VzID0gW107XG4gIC8vICAgICB0aGlzLl9wcmVkaWNhdGUgPSAodmlzaXQgPT4gdHJ1ZSk7XG4gIC8vICAgICB0aGlzLl9saW1pdCA9IGxpbWl0O1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICB0byguLi5wbGFjZXM6UGxhY2VbXSk6dGhpcyB7XG4gIC8vICAgICB0aGlzLl9wbGFjZXMgPSBwbGFjZXM7XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgd2l0aChwYXJhbWV0ZXJzOiB7IFtwYXJhbWV0ZXI6IHN0cmluZ106IGFueSB9KTogdGhpcyB7XG4gIC8vICAgICB0aGlzLm1hdGNoaW5nKHN0YXRlID0+IHtcbiAgLy8gICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgLy8gICAgICAgICBjb25zdCBtYXRjaFZhbHVlID0gcGFyYW1ldGVyc1trZXldO1xuICAvLyAgICAgICAgIGNvbnN0IHZpc2l0VmFsdWUgPSBzdGF0ZS5nZXQoa2V5KTtcbiAgLy8gICAgICAgICBjb25zdCBtYXRjaGVkID0gbWF0Y2hWYWx1ZSA9PT0gJyonID8gIV8uaXNOaWwodmlzaXRWYWx1ZSkgOiB2aXNpdFZhbHVlID09IG1hdGNoVmFsdWU7XG4gIC8vICAgICAgICAgLy8gTG9nZ2VyLmdldCh0aGlzKS5pbmZvKGBtYXRjaGVkPSR7bWF0Y2hlZH1gLCBwYXJhbWV0ZXJzLCB2aXNpdFZhbHVlKTtcbiAgLy8gICAgICAgICByZXR1cm4gYWNjICYmIG1hdGNoZWQ7XG4gIC8vICAgICAgIH0sIHRydWUpO1xuICAvLyAgICAgfSk7XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgbGFzdCgpOiBWaXNpdC5TdGF0ZSB7XG4gIC8vICAgICByZXR1cm4gXy5maW5kTGFzdCh0aGlzLl9oaXN0b3J5LCB2aXNpdCA9PiB0aGlzLl9tYXRjaGVzKHZpc2l0KSlcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgLy8gQHRyYWNlXG4gIC8vICAgYWxsVGhhdE1hdGNoKCk6IFZpc2l0LlN0YXRlW10ge1xuICAvLyAgICAgcmV0dXJuIF8uZmlsdGVyKHRoaXMuX2hpc3RvcnksIHZpc2l0ID0+IHRoaXMuX21hdGNoZXModmlzaXQpKS5zbGljZSgtdGhpcy5fbGltaXQpO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICAvLyBAdHJhY2VcbiAgLy8gICBtb3N0UmVjZW50VmFsdWVPZjxUPWFueT4ocGFyYW06IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUID0gbnVsbCk6IFQge1xuICAvLyAgICAgY29uc3QgbGFzdFN0YXRlV2l0aFBhcmFtID0gXy5maW5kTGFzdCh0aGlzLmFsbFRoYXRNYXRjaCgpLCBzdGF0ZSA9PiAhXy5pc05pbChzdGF0ZS5nZXQocGFyYW0pKSk7XG4gIC8vICAgICByZXR1cm4gXy5pc05pbChsYXN0U3RhdGVXaXRoUGFyYW0pID8gZGVmYXVsdFZhbHVlIDogbGFzdFN0YXRlV2l0aFBhcmFtLmdldChwYXJhbSk7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIGxpbWl0KGxpbWl0OiBudW1iZXIpOiB0aGlzIHtcbiAgLy8gICAgIHRoaXMuX2xpbWl0ID0gbGltaXQ7XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgbWF0Y2hpbmcocHJlZGljYXRlOiAodmlzaXQ6IFZpc2l0LlN0YXRlKSA9PiBib29sZWFuKTogdGhpcyB7XG4gIC8vICAgICB0aGlzLl9wcmVkaWNhdGUgPSBwcmVkaWNhdGU7XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgX21hdGNoZXModmlzaXQ6IFZpc2l0LlN0YXRlKSB7XG4gIC8vICAgICByZXR1cm4gdGhpcy5faXNQbGFjZU1hdGNoKHZpc2l0KSAmJiB0aGlzLl9wcmVkaWNhdGUodmlzaXQpO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICBfaXNQbGFjZU1hdGNoKHZpc2l0OiBWaXNpdC5TdGF0ZSkge1xuICAvLyAgICAgcmV0dXJuIHRoaXMuX3BsYWNlcy5sZW5ndGggPCAxIHx8IHRoaXMuX3BsYWNlcy5pbmNsdWRlcyh2aXNpdC5wbGFjZSlcbiAgLy8gICB9XG4gIC8vXG4gIC8vIH1cblxufVxuIl19
|
|
@@ -2,152 +2,279 @@
|
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
|
+
import * as tslib_1 from "tslib";
|
|
5
6
|
import { Location } from '@angular/common';
|
|
6
7
|
import { Injectable } from '@angular/core';
|
|
7
|
-
import { NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';
|
|
8
|
-
import { MutableValueModel } from '@coolon/pectin';
|
|
8
|
+
import { ActivatedRoute, NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';
|
|
9
|
+
import { Dsl, GarbageCollector, MutableListModel, MutableValueModel, Trace } from '@coolon/pectin';
|
|
9
10
|
import _ from 'lodash';
|
|
11
|
+
import { NavigationSession } from './navigation-session';
|
|
12
|
+
import { PlaceHistory } from './place-history';
|
|
13
|
+
import { Visit } from './visit';
|
|
10
14
|
import * as i0 from "@angular/core";
|
|
11
15
|
import * as i1 from "@angular/router";
|
|
12
16
|
import * as i2 from "@angular/common";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
* @return {?}
|
|
27
|
-
*/
|
|
28
|
-
function (placeComponent) {
|
|
29
|
-
return this._alreadyAccepted.includes(placeComponent);
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* @param {?} component
|
|
33
|
-
* @return {?}
|
|
34
|
-
*/
|
|
35
|
-
NavigationSession.prototype.rememberAcceptanceOf = /**
|
|
36
|
-
* @param {?} component
|
|
37
|
-
* @return {?}
|
|
38
|
-
*/
|
|
39
|
-
function (component) {
|
|
40
|
-
this._alreadyAccepted.push(component);
|
|
41
|
-
};
|
|
42
|
-
return NavigationSession;
|
|
43
|
-
}());
|
|
44
|
-
if (false) {
|
|
45
|
-
/**
|
|
46
|
-
* @type {?}
|
|
47
|
-
* @private
|
|
48
|
-
*/
|
|
49
|
-
NavigationSession.prototype._alreadyAccepted;
|
|
50
|
-
/** @type {?} */
|
|
51
|
-
NavigationSession.prototype.isPopState;
|
|
52
|
-
/** @type {?} */
|
|
53
|
-
NavigationSession.prototype.initialUrl;
|
|
54
|
-
}
|
|
55
|
-
var PlaceRouter = /** @class */ (function () {
|
|
56
|
-
function PlaceRouter(router, angularLocation) {
|
|
57
|
-
var _this = this;
|
|
58
|
-
this.router = router;
|
|
59
|
-
this.angularLocation = angularLocation;
|
|
60
|
-
this._navigationSession = new MutableValueModel();
|
|
17
|
+
import * as i3 from "./place-history";
|
|
18
|
+
var PlaceRouter = /** @class */ (function (_super) {
|
|
19
|
+
tslib_1.__extends(PlaceRouter, _super);
|
|
20
|
+
function PlaceRouter(router, angularLocation, placeHistory) {
|
|
21
|
+
var _this = _super.call(this) || this;
|
|
22
|
+
_this.router = router;
|
|
23
|
+
_this.angularLocation = angularLocation;
|
|
24
|
+
_this.placeHistory = placeHistory;
|
|
25
|
+
_this.firstRoute = true;
|
|
26
|
+
_this._navigationSessionModel = new MutableValueModel();
|
|
27
|
+
_this._activeVisits = new MutableListModel();
|
|
28
|
+
var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
|
|
29
|
+
_this.activeVisitIndex = chain(_this._activeVisits).indexBy('placeDefinition');
|
|
61
30
|
angularLocation.onUrlChange((/**
|
|
62
31
|
* @param {?} url
|
|
63
32
|
* @return {?}
|
|
64
33
|
*/
|
|
65
34
|
function (url) {
|
|
66
|
-
console.log("
|
|
35
|
+
console.log("location.onUrlChange -> " + url);
|
|
67
36
|
}));
|
|
68
|
-
this.
|
|
37
|
+
// TODO: make setup the callbacks in during module initiation to make this testable.
|
|
38
|
+
_this.router.events.subscribe((/**
|
|
69
39
|
* @param {?} event
|
|
70
40
|
* @return {?}
|
|
71
41
|
*/
|
|
72
42
|
function (event) {
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
// NavigationStart -> .... ->
|
|
76
|
-
// NavigationStart -> .... ->
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
console.log('navigation ended');
|
|
82
|
-
_this._navigationSession.value = null;
|
|
43
|
+
// Routing event sequence
|
|
44
|
+
// ======================
|
|
45
|
+
// NavigationStart -> .... -> NavigationCancel --> redirect, go around again in the same session
|
|
46
|
+
// NavigationStart -> .... -> NavigationEnd --> navigation complete, end session.
|
|
47
|
+
// NavigationStart -> .... -> NavigationError --> navigation canceled, end session.
|
|
48
|
+
// =======================
|
|
49
|
+
if (event instanceof NavigationStart) {
|
|
50
|
+
_this.onAngularRouterStarted(event);
|
|
83
51
|
}
|
|
84
|
-
if (event instanceof NavigationError) {
|
|
85
|
-
|
|
86
|
-
_this._navigationSession.value = null;
|
|
52
|
+
if (event instanceof NavigationEnd || event instanceof NavigationError) {
|
|
53
|
+
_this.onAngularRouterFinished();
|
|
87
54
|
}
|
|
88
55
|
}));
|
|
56
|
+
_this.navigationSessionActive = chain(_this.navigationSessionModel).isNotNil();
|
|
57
|
+
_this.navigationSessionActive.subscribe((/**
|
|
58
|
+
* @param {?} active
|
|
59
|
+
* @return {?}
|
|
60
|
+
*/
|
|
61
|
+
function (active) {
|
|
62
|
+
console.log('navigationSessionActive', active);
|
|
63
|
+
}));
|
|
64
|
+
return _this;
|
|
65
|
+
// const txo = new TransactionObserver().onEvent(e => console.log(e.toString()));
|
|
66
|
+
// txo.observe('this.navigationSessionModel', this.navigationSessionModel);
|
|
89
67
|
}
|
|
90
68
|
Object.defineProperty(PlaceRouter.prototype, "navigationSession", {
|
|
91
69
|
get: /**
|
|
92
70
|
* @return {?}
|
|
93
71
|
*/
|
|
94
72
|
function () {
|
|
95
|
-
return this.
|
|
73
|
+
return this._navigationSessionModel.value;
|
|
96
74
|
},
|
|
97
75
|
enumerable: true,
|
|
98
76
|
configurable: true
|
|
99
77
|
});
|
|
78
|
+
Object.defineProperty(PlaceRouter.prototype, "navigationSessionModel", {
|
|
79
|
+
get: /**
|
|
80
|
+
* @return {?}
|
|
81
|
+
*/
|
|
82
|
+
function () {
|
|
83
|
+
return this._navigationSessionModel.readonly;
|
|
84
|
+
},
|
|
85
|
+
enumerable: true,
|
|
86
|
+
configurable: true
|
|
87
|
+
});
|
|
88
|
+
Object.defineProperty(PlaceRouter.prototype, "activeVisits", {
|
|
89
|
+
get: /**
|
|
90
|
+
* @return {?}
|
|
91
|
+
*/
|
|
92
|
+
function () {
|
|
93
|
+
return this._activeVisits.readonly;
|
|
94
|
+
},
|
|
95
|
+
enumerable: true,
|
|
96
|
+
configurable: true
|
|
97
|
+
});
|
|
98
|
+
/**
|
|
99
|
+
* placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));
|
|
100
|
+
* @param visit
|
|
101
|
+
*/
|
|
102
|
+
// @Trace()
|
|
103
|
+
/**
|
|
104
|
+
* placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));
|
|
105
|
+
* @param {?} visit
|
|
106
|
+
* @return {?}
|
|
107
|
+
*/
|
|
108
|
+
// @Trace()
|
|
109
|
+
PlaceRouter.prototype.navigate = /**
|
|
110
|
+
* placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));
|
|
111
|
+
* @param {?} visit
|
|
112
|
+
* @return {?}
|
|
113
|
+
*/
|
|
114
|
+
// @Trace()
|
|
115
|
+
function (visit) {
|
|
116
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
117
|
+
return tslib_1.__generator(this, function (_a) {
|
|
118
|
+
this.doNavigation(visit);
|
|
119
|
+
return [2 /*return*/];
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
};
|
|
100
123
|
/**
|
|
101
124
|
* @param {?} activatedRoute
|
|
102
125
|
* @param {?} previous
|
|
103
126
|
* @param {?} next
|
|
104
127
|
* @return {?}
|
|
105
128
|
*/
|
|
106
|
-
PlaceRouter.prototype.
|
|
129
|
+
PlaceRouter.prototype.pushVisitChangesToRoute = /**
|
|
107
130
|
* @param {?} activatedRoute
|
|
108
131
|
* @param {?} previous
|
|
109
132
|
* @param {?} next
|
|
110
133
|
* @return {?}
|
|
111
134
|
*/
|
|
112
135
|
function (activatedRoute, previous, next) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
136
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
137
|
+
var _this = this;
|
|
138
|
+
return tslib_1.__generator(this, function (_a) {
|
|
139
|
+
// we have to push to history so our remember sanitisers don't pick up the previous value
|
|
140
|
+
// when it's been cleared by the user.
|
|
141
|
+
this.placeHistory.add(next);
|
|
142
|
+
// FIXME: no route id -> route id duplicates route parameters
|
|
143
|
+
if (next.hasRoutingChangedFrom(previous)) {
|
|
144
|
+
return [2 /*return*/, this.doNavigation(next, (/**
|
|
145
|
+
* @param {?} router
|
|
146
|
+
* @return {?}
|
|
147
|
+
*/
|
|
148
|
+
function (router) {
|
|
149
|
+
/** @type {?} */
|
|
150
|
+
var relativePath = !!previous.placeDefinition.hasRouteId() ? '..' : '.';
|
|
151
|
+
/** @type {?} */
|
|
152
|
+
var def = next.placeDefinition;
|
|
153
|
+
/** @type {?} */
|
|
154
|
+
var params = next.hasRouteId() ?
|
|
155
|
+
[def.getFormattedRouteId(next), def.getFormattedRouteParameters(next)] :
|
|
156
|
+
[def.getFormattedRouteParameters(next)];
|
|
157
|
+
/** @type {?} */
|
|
158
|
+
var commands = [relativePath].concat(params, _this.getChildPath(activatedRoute.snapshot));
|
|
159
|
+
console.log('### Redirect', commands);
|
|
160
|
+
return router.navigate(commands, {
|
|
161
|
+
relativeTo: activatedRoute
|
|
162
|
+
});
|
|
163
|
+
}))];
|
|
164
|
+
}
|
|
165
|
+
return [2 /*return*/];
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* @param {?} visit
|
|
171
|
+
* @param {?=} customNavigation
|
|
172
|
+
* @return {?}
|
|
173
|
+
*/
|
|
174
|
+
PlaceRouter.prototype.doNavigation = /**
|
|
175
|
+
* @param {?} visit
|
|
176
|
+
* @param {?=} customNavigation
|
|
177
|
+
* @return {?}
|
|
178
|
+
*/
|
|
179
|
+
function (visit, customNavigation) {
|
|
180
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
181
|
+
var def, parameterCommands, commands;
|
|
182
|
+
return tslib_1.__generator(this, function (_a) {
|
|
183
|
+
switch (_a.label) {
|
|
184
|
+
case 0:
|
|
185
|
+
this._navigationSessionModel.value = NavigationSession.createInternal(visit);
|
|
186
|
+
_a.label = 1;
|
|
187
|
+
case 1:
|
|
188
|
+
_a.trys.push([1, , 6, 7]);
|
|
189
|
+
if (!customNavigation) return [3 /*break*/, 3];
|
|
190
|
+
return [4 /*yield*/, customNavigation(this.router)];
|
|
191
|
+
case 2:
|
|
192
|
+
_a.sent();
|
|
193
|
+
return [3 /*break*/, 5];
|
|
194
|
+
case 3:
|
|
195
|
+
def = visit.placeDefinition;
|
|
196
|
+
// @see https://coolon.atlassian.net/browse/AUP-41
|
|
197
|
+
parameterCommands = visit.hasRouteId() ?
|
|
198
|
+
[def.getFormattedRouteId(visit), def.getFormattedRouteParameters(visit)] :
|
|
199
|
+
[def.getFormattedRouteParameters(visit)];
|
|
200
|
+
commands = [def.path].concat(parameterCommands);
|
|
201
|
+
console.log('_doNavigation', visit, commands);
|
|
202
|
+
return [4 /*yield*/, this.router.navigate(commands)];
|
|
203
|
+
case 4:
|
|
204
|
+
_a.sent();
|
|
205
|
+
_a.label = 5;
|
|
206
|
+
case 5: return [3 /*break*/, 7];
|
|
207
|
+
case 6:
|
|
208
|
+
if (this.navigationSession && !this.router.getCurrentNavigation()) {
|
|
209
|
+
this.onAngularRouterFinished();
|
|
210
|
+
}
|
|
211
|
+
return [7 /*endfinally*/];
|
|
212
|
+
case 7: return [2 /*return*/];
|
|
213
|
+
}
|
|
214
|
+
});
|
|
117
215
|
});
|
|
118
216
|
};
|
|
119
217
|
// @Trace()
|
|
120
218
|
// @Trace()
|
|
121
219
|
/**
|
|
122
|
-
* @
|
|
123
|
-
* @param {?}
|
|
220
|
+
* @private
|
|
221
|
+
* @param {?} event
|
|
124
222
|
* @return {?}
|
|
125
223
|
*/
|
|
126
|
-
PlaceRouter.prototype.
|
|
224
|
+
PlaceRouter.prototype.onAngularRouterStarted =
|
|
127
225
|
// @Trace()
|
|
128
226
|
/**
|
|
129
|
-
* @
|
|
130
|
-
* @param {?}
|
|
227
|
+
* @private
|
|
228
|
+
* @param {?} event
|
|
131
229
|
* @return {?}
|
|
132
230
|
*/
|
|
133
|
-
function (
|
|
134
|
-
|
|
135
|
-
|
|
231
|
+
function (event) {
|
|
232
|
+
if (!this.navigationSession) { // We been activated by an external route rather than placeRouter.go(visit)
|
|
233
|
+
console.log('navigation started', { firstTime: this.firstRoute });
|
|
234
|
+
/** @type {?} */
|
|
235
|
+
var session = NavigationSession.createExternal(this.firstRoute);
|
|
236
|
+
if (event.navigationTrigger === 'popstate') {
|
|
237
|
+
session.setPopstateReturn(this.router.routerState.snapshot.url);
|
|
238
|
+
}
|
|
239
|
+
this._navigationSessionModel.value = session;
|
|
240
|
+
}
|
|
241
|
+
this.firstRoute = false;
|
|
242
|
+
};
|
|
243
|
+
// @Trace()
|
|
244
|
+
// @Trace()
|
|
245
|
+
/**
|
|
246
|
+
* @private
|
|
247
|
+
* @return {?}
|
|
248
|
+
*/
|
|
249
|
+
PlaceRouter.prototype.onAngularRouterFinished =
|
|
250
|
+
// @Trace()
|
|
251
|
+
/**
|
|
252
|
+
* @private
|
|
253
|
+
* @return {?}
|
|
254
|
+
*/
|
|
255
|
+
function () {
|
|
256
|
+
var _this = this;
|
|
136
257
|
/** @type {?} */
|
|
137
|
-
var
|
|
258
|
+
var session = this._navigationSessionModel.value;
|
|
259
|
+
// Update visits before we end the navigation session. This allows the place out let to
|
|
260
|
+
// gate ignore changes that occur while the visit is active
|
|
138
261
|
/** @type {?} */
|
|
139
|
-
var
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
262
|
+
var visits = session.getVisits();
|
|
263
|
+
visits.forEach((/**
|
|
264
|
+
* @param {?} v
|
|
265
|
+
* @return {?}
|
|
266
|
+
*/
|
|
267
|
+
function (v) {
|
|
268
|
+
_this.placeHistory.add(v);
|
|
269
|
+
}));
|
|
270
|
+
this._activeVisits.value = visits;
|
|
271
|
+
this._navigationSessionModel.value = null;
|
|
143
272
|
};
|
|
144
273
|
/**
|
|
145
|
-
* @protected
|
|
146
274
|
* @param {?} activatedRoute
|
|
147
275
|
* @return {?}
|
|
148
276
|
*/
|
|
149
277
|
PlaceRouter.prototype.getChildPath = /**
|
|
150
|
-
* @protected
|
|
151
278
|
* @param {?} activatedRoute
|
|
152
279
|
* @return {?}
|
|
153
280
|
*/
|
|
@@ -158,23 +285,6 @@ var PlaceRouter = /** @class */ (function () {
|
|
|
158
285
|
*/
|
|
159
286
|
function (child) { return child.url; })));
|
|
160
287
|
};
|
|
161
|
-
/**
|
|
162
|
-
* @protected
|
|
163
|
-
* @param {?} parameters
|
|
164
|
-
* @return {?}
|
|
165
|
-
*/
|
|
166
|
-
PlaceRouter.prototype.createRouteParameters = /**
|
|
167
|
-
* @protected
|
|
168
|
-
* @param {?} parameters
|
|
169
|
-
* @return {?}
|
|
170
|
-
*/
|
|
171
|
-
function (parameters) {
|
|
172
|
-
/** @type {?} */
|
|
173
|
-
var routeId = parameters.getFormattedRouteId();
|
|
174
|
-
return routeId ?
|
|
175
|
-
[routeId, parameters.getFormattedParameters()] :
|
|
176
|
-
[parameters.getFormattedParameters()];
|
|
177
|
-
};
|
|
178
288
|
PlaceRouter.decorators = [
|
|
179
289
|
{ type: Injectable, args: [{
|
|
180
290
|
providedIn: 'root'
|
|
@@ -183,18 +293,39 @@ var PlaceRouter = /** @class */ (function () {
|
|
|
183
293
|
/** @nocollapse */
|
|
184
294
|
PlaceRouter.ctorParameters = function () { return [
|
|
185
295
|
{ type: Router },
|
|
186
|
-
{ type: Location }
|
|
296
|
+
{ type: Location },
|
|
297
|
+
{ type: PlaceHistory }
|
|
187
298
|
]; };
|
|
188
|
-
/** @nocollapse */ PlaceRouter.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.Location)); }, token: PlaceRouter, providedIn: "root" });
|
|
299
|
+
/** @nocollapse */ PlaceRouter.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.Location), i0.ɵɵinject(i3.PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
|
|
300
|
+
tslib_1.__decorate([
|
|
301
|
+
Trace(),
|
|
302
|
+
tslib_1.__metadata("design:type", Function),
|
|
303
|
+
tslib_1.__metadata("design:paramtypes", [ActivatedRoute, Visit, Visit]),
|
|
304
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
305
|
+
], PlaceRouter.prototype, "pushVisitChangesToRoute", null);
|
|
189
306
|
return PlaceRouter;
|
|
190
|
-
}());
|
|
307
|
+
}(GarbageCollector));
|
|
191
308
|
export { PlaceRouter };
|
|
192
309
|
if (false) {
|
|
193
310
|
/**
|
|
194
311
|
* @type {?}
|
|
195
312
|
* @private
|
|
196
313
|
*/
|
|
197
|
-
PlaceRouter.prototype.
|
|
314
|
+
PlaceRouter.prototype.firstRoute;
|
|
315
|
+
/**
|
|
316
|
+
* @type {?}
|
|
317
|
+
* @private
|
|
318
|
+
*/
|
|
319
|
+
PlaceRouter.prototype._navigationSessionModel;
|
|
320
|
+
/**
|
|
321
|
+
* @type {?}
|
|
322
|
+
* @private
|
|
323
|
+
*/
|
|
324
|
+
PlaceRouter.prototype._activeVisits;
|
|
325
|
+
/** @type {?} */
|
|
326
|
+
PlaceRouter.prototype.navigationSessionActive;
|
|
327
|
+
/** @type {?} */
|
|
328
|
+
PlaceRouter.prototype.activeVisitIndex;
|
|
198
329
|
/**
|
|
199
330
|
* @type {?}
|
|
200
331
|
* @private
|
|
@@ -202,5 +333,7 @@ if (false) {
|
|
|
202
333
|
PlaceRouter.prototype.router;
|
|
203
334
|
/** @type {?} */
|
|
204
335
|
PlaceRouter.prototype.angularLocation;
|
|
336
|
+
/** @type {?} */
|
|
337
|
+
PlaceRouter.prototype.placeHistory;
|
|
205
338
|
}
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUdMLGFBQWEsRUFDYixlQUFlLEVBQ2YsZUFBZSxFQUNmLE1BQU0sRUFFUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxpQkFBaUIsRUFBUyxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7OztBQUl2QjtJQUdFLDJCQUFxQixVQUFtQixFQUFXLFVBQWtCO1FBQWhELGVBQVUsR0FBVixVQUFVLENBQVM7UUFBVyxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBRjdELHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFHOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFVBQVUsWUFBQSxFQUFFLFVBQVUsWUFBQSxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDOzs7OztJQUVELDJDQUFlOzs7O0lBQWYsVUFBZ0IsY0FBOEI7UUFDNUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7Ozs7O0lBRUQsZ0RBQW9COzs7O0lBQXBCLFVBQXFCLFNBQXlCO1FBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNILHdCQUFDO0FBQUQsQ0FBQyxBQWRELElBY0M7Ozs7OztJQWJDLDZDQUFnRDs7SUFFcEMsdUNBQTRCOztJQUFFLHVDQUEyQjs7QUFjdkU7SUFPRSxxQkFBNkIsTUFB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QVEsQ0FBQyxHQUFHOzs7O1FBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsR0FBRyxFQUFULENBQVMsRUFBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs7Ozs7O0lBRVMsMkNBQXFCOzs7OztJQUEvQixVQUFnQyxVQUE2Qjs7WUFDckQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRTtRQUNoRCxPQUFPLE9BQU8sQ0FBQyxDQUFDO1lBQ2QsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hELENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDOztnQkE1REYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkEzQkMsTUFBTTtnQkFSQyxRQUFROzs7c0JBQWpCO0NBOEZDLEFBN0RELElBNkRDO1NBMURZLFdBQVc7Ozs7OztJQUV0Qix5Q0FBaUY7Ozs7O0lBRXJFLDZCQUErQjs7SUFBRSxzQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVycm9yLFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlcixcbiAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTXV0YWJsZVZhbHVlTW9kZWwsIFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFyYW1ldGVyU25hcHNob3QgfSBmcm9tICcuL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdCc7XG5cbmNsYXNzIE5hdmlnYXRpb25TZXNzaW9uIHtcbiAgcHJpdmF0ZSBfYWxyZWFkeUFjY2VwdGVkOiBQbGFjZUNvbXBvbmVudFtdID0gW107XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgaXNQb3BTdGF0ZTogYm9vbGVhbiwgcmVhZG9ubHkgaW5pdGlhbFVybDogc3RyaW5nKSB7XG4gICAgY29uc29sZS5sb2coJ05hdmlnYXRpb25TZXNzaW9uJywgeyBpc1BvcFN0YXRlLCBpbml0aWFsVXJsIH0pO1xuICB9XG5cbiAgYWxyZWFkeUFjY2VwdGVkKHBsYWNlQ29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hbHJlYWR5QWNjZXB0ZWQuaW5jbHVkZXMocGxhY2VDb21wb25lbnQpO1xuICB9XG5cbiAgcmVtZW1iZXJBY2NlcHRhbmNlT2YoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX2FscmVhZHlBY2NlcHRlZC5wdXNoKGNvbXBvbmVudCk7XG4gIH1cbn1cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbGFjZVJvdXRlciB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdGlvblNlc3Npb24gPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8TmF2aWdhdGlvblNlc3Npb24+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlciwgcmVhZG9ubHkgYW5ndWxhckxvY2F0aW9uOiBMb2NhdGlvbikge1xuICAgIGFuZ3VsYXJMb2NhdGlvbi5vblVybENoYW5nZSh1cmwgPT4ge1xuICAgICAgY29uc29sZS5sb2coYCMjIyAke3VybH1gKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGAke2V2ZW50LmNvbnN0cnVjdG9yLm5hbWV9YCwgbG9jYXRpb24ucGF0aG5hbWUsIGFuZ3VsYXJMb2NhdGlvbi5nZXRTdGF0ZSgpKTtcbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25DYW5jZWwgPT09IHJlZGlyZWN0IChzbyBkb24ndCBhc2sgYWdhaW4pXG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uRW5kID09PSBuYXZpZ2F0ZWQgKHNvIGFzayBuZXh0IHRpbWUpXG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uRXJyb3IgPT09IGNhbmNlbGVkIChndWFyZCBjYW5jZWxsZWQgc28gYXNrIG5leHQgdGltZSlcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCAmJiAhdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbikge1xuICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbi52YWx1ZSA9IG5ldyBOYXZpZ2F0aW9uU2Vzc2lvbihldmVudC5uYXZpZ2F0aW9uVHJpZ2dlciA9PT0gJ3BvcHN0YXRlJywgdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsKTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ25hdmlnYXRpb24gZW5kZWQnKTtcbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvblNlc3Npb24udmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCduYXZpZ2F0aW9uIGVycm9yZWQnKTtcbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvblNlc3Npb24udmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRpb25TZXNzaW9uKCk6IE5hdmlnYXRpb25TZXNzaW9uIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvblNlc3Npb24udmFsdWU7XG4gIH1cblxuICBwdXNoUGFyYW1ldGVyQ2hhbmdlc1RvUm91dGUoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcmV2aW91czogUGFyYW1ldGVyU25hcHNob3QsIG5leHQ6IFBhcmFtZXRlclNuYXBzaG90KSB7XG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID0gISFwcmV2aW91cy5oYXNSb3V0ZUlkKCkgPyAnLi4nIDogJy4nO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyZWxhdGl2ZVBhdGhdLmNvbmNhdCh0aGlzLmNyZWF0ZVJvdXRlUGFyYW1ldGVycyhuZXh0KSwgdGhpcy5nZXRDaGlsZFBhdGgoYWN0aXZhdGVkUm91dGUuc25hcHNob3QpKSwge1xuICAgICAgcmVsYXRpdmVUbzogYWN0aXZhdGVkUm91dGVcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGdldFJlZGlyZWN0VXJsVHJlZShhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc2FuaXRpc2VkOiBQYXJhbWV0ZXJTbmFwc2hvdCk6IFVybFRyZWUge1xuICAgIGNvbnN0IHVybFNlZ21lbnRzID0gYWN0aXZhdGVkUm91dGUudXJsO1xuICAgIGNvbnN0IHdlSGF2ZUFSb3V0ZUlkID0gc2FuaXRpc2VkLmhhc1JvdXRlSWQoKSAmJiBzYW5pdGlzZWQuZ2V0Rm9ybWF0dGVkUm91dGVJZCgpO1xuICAgIGNvbnN0IGNvbW1hbmRzID0gKHdlSGF2ZUFSb3V0ZUlkKSA/XG4gICAgICBbdXJsU2VnbWVudHNbMF0ucGF0aCwgc2FuaXRpc2VkLmdldEZvcm1hdHRlZFJvdXRlSWQoKSwgc2FuaXRpc2VkLmdldEZvcm1hdHRlZFBhcmFtZXRlcnMoKV0gOlxuICAgICAgW3VybFNlZ21lbnRzWzBdLnBhdGgsIHNhbml0aXNlZC5nZXRGb3JtYXR0ZWRQYXJhbWV0ZXJzKCldO1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKGNvbW1hbmRzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDaGlsZFBhdGgoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBhbnlbXSB7XG4gICAgcmV0dXJuIF8uZmxhdHRlbihhY3RpdmF0ZWRSb3V0ZS5jaGlsZHJlbi5tYXAoY2hpbGQgPT4gY2hpbGQudXJsKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlUm91dGVQYXJhbWV0ZXJzKHBhcmFtZXRlcnM6IFBhcmFtZXRlclNuYXBzaG90KTogYW55W10ge1xuICAgIGNvbnN0IHJvdXRlSWQgPSBwYXJhbWV0ZXJzLmdldEZvcm1hdHRlZFJvdXRlSWQoKTtcbiAgICByZXR1cm4gcm91dGVJZCA/XG4gICAgICBbcm91dGVJZCwgcGFyYW1ldGVycy5nZXRGb3JtYXR0ZWRQYXJhbWV0ZXJzKCldIDpcbiAgICAgIFtwYXJhbWV0ZXJzLmdldEZvcm1hdHRlZFBhcmFtZXRlcnMoKV07XG4gIH1cbn1cbiJdfQ==
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxjQUFjLEVBRWQsYUFBYSxFQUNiLGVBQWUsRUFDZixlQUFlLEVBQ2YsTUFBTSxFQUNQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUVMLEdBQUcsRUFDSCxnQkFBZ0IsRUFHaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixLQUFLLEVBRU4sTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7O0FBR2hDO0lBR2lDLHVDQUFnQjtJQVUvQyxxQkFBNkIsTUFBYyxFQUFXLGVBQXlCLEVBQVcsWUFBMEI7UUFBcEgsWUFDRSxpQkFBTyxTQThCUjtRQS9CNEIsWUFBTSxHQUFOLE1BQU0sQ0FBUTtRQUFXLHFCQUFlLEdBQWYsZUFBZSxDQUFVO1FBQVcsa0JBQVksR0FBWixZQUFZLENBQWM7UUFSNUcsZ0JBQVUsR0FBRyxJQUFJLENBQUM7UUFFVCw2QkFBdUIsR0FBRyxJQUFJLGlCQUFpQixFQUFxQixDQUFDO1FBQ3JFLG1CQUFhLEdBQUcsSUFBSSxnQkFBZ0IsRUFBUyxDQUFDO1FBT3ZELElBQUEsMkJBQWtGLEVBQWhGLGdCQUFLLEVBQUUsb0JBQU8sRUFBRSxrQkFBTSxFQUFF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TSxDQUFDO1FBRWxDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQzVDLENBQUM7Ozs7O0lBRUQsa0NBQVk7Ozs7SUFBWixVQUFhLGNBQXNDO1FBQ2pELE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUc7Ozs7UUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxHQUFHLEVBQVQsQ0FBUyxFQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDOztnQkE5SUYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFyQkMsTUFBTTtnQkFSQyxRQUFRO2dCQXVCUixZQUFZOzs7SUF3RW5CO1FBREMsS0FBSyxFQUFFOztpREFDc0MsY0FBYyxFQUFZLEtBQUssRUFBUSxLQUFLOzs4REFxQnpGO3NCQXBISDtDQTBLQyxBQS9JRCxDQUdpQyxnQkFBZ0IsR0E0SWhEO1NBNUlZLFdBQVc7Ozs7OztJQUV0QixpQ0FBMEI7Ozs7O0lBRTFCLDhDQUFzRjs7Ozs7SUFDdEYsb0NBQStEOztJQUUvRCw4Q0FBeUQ7O0lBQ3pELHVDQUFzRTs7Ozs7SUFFMUQsNkJBQStCOztJQUFFLHNDQUFrQzs7SUFBRSxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVycm9yLFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQm9vbGVhblZhbHVlTW9kZWxDaGFpbixcbiAgRHNsLFxuICBHYXJiYWdlQ29sbGVjdG9yLFxuICBIYXNPbmVJbmRleENoYWluLFxuICBMaXN0TW9kZWwsXG4gIE11dGFibGVMaXN0TW9kZWwsXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBUcmFjZSxcbiAgVmFsdWVNb2RlbFxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlc3Npb24gfSBmcm9tICcuL25hdmlnYXRpb24tc2Vzc2lvbic7XG5pbXBvcnQgeyBQbGFjZUhpc3RvcnkgfSBmcm9tICcuL3BsYWNlLWhpc3RvcnknO1xuaW1wb3J0IHsgVmlzaXQgfSBmcm9tICcuL3Zpc2l0JztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbGFjZVJvdXRlciBleHRlbmRzIEdhcmJhZ2VDb2xsZWN0b3Ige1xuXG4gIHByaXZhdGUgZmlyc3RSb3V0ZSA9IHRydWU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdGlvblNlc3Npb25Nb2RlbCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxOYXZpZ2F0aW9uU2Vzc2lvbj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlVmlzaXRzID0gbmV3IE11dGFibGVMaXN0TW9kZWw8VmlzaXQ+KCk7XG5cbiAgcmVhZG9ubHkgbmF2aWdhdGlvblNlc3Npb25BY3RpdmU6IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG4gIHJlYWRvbmx5IGFjdGl2ZVZpc2l0SW5kZXg6IEhhc09uZUluZGV4Q2hhaW48J3BsYWNlRGVmaW5pdGlvbicsIFZpc2l0PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLCByZWFkb25seSBhbmd1bGFyTG9jYXRpb246IExvY2F0aW9uLCByZWFkb25seSBwbGFjZUhpc3Rvcnk6IFBsYWNlSGlzdG9yeSkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgeyBjaGFpbiwgdmFsdWVPZiwgYmVmb3JlLCB3aGVuLCBhZnRlciwgb2JzZXJ2ZSwgc3dpdGNoT24gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB0aGlzLmFjdGl2ZVZpc2l0SW5kZXggPSBjaGFpbih0aGlzLl9hY3RpdmVWaXNpdHMpLmluZGV4QnkoJ3BsYWNlRGVmaW5pdGlvbicpO1xuXG4gICAgYW5ndWxhckxvY2F0aW9uLm9uVXJsQ2hhbmdlKHVybCA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhgbG9jYXRpb24ub25VcmxDaGFuZ2UgLT4gJHt1cmx9YCk7XG4gICAgfSk7XG5cbiAgICAvLyBUT0RPOiBtYWtlIHNldHVwIHRoZSBjYWxsYmFja3MgaW4gZHVyaW5nIG1vZHVsZSBpbml0aWF0aW9uIHRvIG1ha2UgdGhpcyB0ZXN0YWJsZS5cbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIC8vIFJvdXRpbmcgZXZlbnQgc2VxdWVuY2VcbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25DYW5jZWwgLS0+IHJlZGlyZWN0LCBnbyBhcm91bmQgYWdhaW4gaW4gdGhlIHNhbWUgc2Vzc2lvblxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkVuZCAtLT4gbmF2aWdhdGlvbiBjb21wbGV0ZSwgZW5kIHNlc3Npb24uXG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uRXJyb3IgLS0+IG5hdmlnYXRpb24gY2FuY2VsZWQsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICB0aGlzLm9uQW5ndWxhclJvdXRlclN0YXJ0ZWQoZXZlbnQpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fCBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xuICAgICAgICB0aGlzLm9uQW5ndWxhclJvdXRlckZpbmlzaGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uQWN0aXZlID0gY2hhaW4odGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsKS5pc05vdE5pbCgpO1xuICAgIHRoaXMubmF2aWdhdGlvblNlc3Npb25BY3RpdmUuc3Vic2NyaWJlKGFjdGl2ZSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnbmF2aWdhdGlvblNlc3Npb25BY3RpdmUnLCBhY3RpdmUpO1xuICAgIH0pO1xuICAgIC8vIGNvbnN0IHR4byA9IG5ldyBUcmFuc2FjdGlvbk9ic2VydmVyKCkub25FdmVudChlID0+IGNvbnNvbGUubG9nKGUudG9TdHJpbmcoKSkpO1xuICAgIC8vIHR4by5vYnNlcnZlKCd0aGlzLm5hdmlnYXRpb25TZXNzaW9uTW9kZWwnLCB0aGlzLm5hdmlnYXRpb25TZXNzaW9uTW9kZWwpO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRpb25TZXNzaW9uKCk6IE5hdmlnYXRpb25TZXNzaW9uIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvblNlc3Npb25Nb2RlbC52YWx1ZTtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsKCk6IFZhbHVlTW9kZWw8TmF2aWdhdGlvblNlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvblNlc3Npb25Nb2RlbC5yZWFkb25seTtcbiAgfVxuXG4gIGdldCBhY3RpdmVWaXNpdHMoKTogTGlzdE1vZGVsPFZpc2l0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVZpc2l0cy5yZWFkb25seTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgcGxhY2VSb3V0ZXIubmF2aWdhdGUocGxhY2VEZXN0aW5hdGlvbnMuc29tZVBsYWNlLmNyZWF0ZVZpc2l0KHJvdXRlSWQsIC4uLnZpc2l0UGFyYW1zKSk7XG4gICAqIEBwYXJhbSB2aXNpdFxuICAgKi9cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgbmF2aWdhdGUodmlzaXQ6IFZpc2l0KSB7XG4gICAgdGhpcy5kb05hdmlnYXRpb24odmlzaXQpO1xuICB9XG5cbiAgQFRyYWNlKClcbiAgYXN5bmMgcHVzaFZpc2l0Q2hhbmdlc1RvUm91dGUoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcmV2aW91czogVmlzaXQsIG5leHQ6IFZpc2l0KSB7XG5cbiAgICAvLyB3ZSBoYXZlIHRvIHB1c2ggdG8gaGlzdG9yeSBzbyBvdXIgcmVtZW1iZXIgc2FuaXRpc2VycyBkb24ndCBwaWNrIHVwIHRoZSBwcmV2aW91cyB2YWx1ZVxuICAgIC8vIHdoZW4gaXQncyBiZWVuIGNsZWFyZWQgYnkgdGhlIHVzZXIuXG4gICAgdGhpcy5wbGFjZUhpc3RvcnkuYWRkKG5leHQpO1xuXG4gICAgLy8gRklYTUU6IG5vIHJvdXRlIGlkIC0+IHJvdXRlIGlkIGR1cGxpY2F0ZXMgcm91dGUgcGFyYW1ldGVyc1xuICAgIGlmIChuZXh0Lmhhc1JvdXRpbmdDaGFuZ2VkRnJvbShwcmV2aW91cykpIHtcbiAgICAgIHJldHVybiB0aGlzLmRvTmF2aWdhdGlvbihuZXh0LCByb3V0ZXIgPT4ge1xuICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSAhIXByZXZpb3VzLnBsYWNlRGVmaW5pdGlvbi5oYXNSb3V0ZUlkKCkgPyAnLi4nIDogJy4nO1xuICAgICAgICBjb25zdCBkZWYgPSBuZXh0LnBsYWNlRGVmaW5pdGlvbjtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV4dC5oYXNSb3V0ZUlkKCkgP1xuICAgICAgICAgIFtkZWYuZ2V0Rm9ybWF0dGVkUm91dGVJZChuZXh0KSwgZGVmLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyhuZXh0KV0gOlxuICAgICAgICAgIFtkZWYuZ2V0Rm9ybWF0dGVkUm91dGVQYXJhbWV0ZXJzKG5leHQpXTtcbiAgICAgICAgY29uc3QgY29tbWFuZHMgPSBbcmVsYXRpdmVQYXRoXS5jb25jYXQocGFyYW1zLCB0aGlzLmdldENoaWxkUGF0aChhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdCkpO1xuICAgICAgICBjb25zb2xlLmxvZygnIyMjIFJlZGlyZWN0JywgY29tbWFuZHMpO1xuICAgICAgICByZXR1cm4gcm91dGVyLm5hdmlnYXRlKGNvbW1hbmRzLCB7XG4gICAgICAgICAgcmVsYXRpdmVUbzogYWN0aXZhdGVkUm91dGVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkb05hdmlnYXRpb24odmlzaXQ6IFZpc2l0LCBjdXN0b21OYXZpZ2F0aW9uPzogKHJvdXRlcjogUm91dGVyKSA9PiBhbnkpIHtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlID0gTmF2aWdhdGlvblNlc3Npb24uY3JlYXRlSW50ZXJuYWwodmlzaXQpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoY3VzdG9tTmF2aWdhdGlvbikge1xuICAgICAgICBhd2FpdCBjdXN0b21OYXZpZ2F0aW9uKHRoaXMucm91dGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRlZiA9IHZpc2l0LnBsYWNlRGVmaW5pdGlvbjtcbiAgICAgICAgLy8gQHNlZSBodHRwczovL2Nvb2xvbi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9BVVAtNDFcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyQ29tbWFuZHMgPSB2aXNpdC5oYXNSb3V0ZUlkKCkgP1xuICAgICAgICAgIFtkZWYuZ2V0Rm9ybWF0dGVkUm91dGVJZCh2aXNpdCksIGRlZi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnModmlzaXQpXSA6XG4gICAgICAgICAgW2RlZi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnModmlzaXQpXTtcbiAgICAgICAgY29uc3QgY29tbWFuZHMgPSBbZGVmLnBhdGhdLmNvbmNhdChwYXJhbWV0ZXJDb21tYW5kcyk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdfZG9OYXZpZ2F0aW9uJywgdmlzaXQsIGNvbW1hbmRzKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiAmJiAhdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSkge1xuICAgICAgICB0aGlzLm9uQW5ndWxhclJvdXRlckZpbmlzaGVkKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHJpdmF0ZSBvbkFuZ3VsYXJSb3V0ZXJTdGFydGVkKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICBpZiAoIXRoaXMubmF2aWdhdGlvblNlc3Npb24pIHsgLy8gV2UgYmVlbiBhY3RpdmF0ZWQgYnkgYW4gZXh0ZXJuYWwgcm91dGUgcmF0aGVyIHRoYW4gcGxhY2VSb3V0ZXIuZ28odmlzaXQpXG4gICAgICBjb25zb2xlLmxvZygnbmF2aWdhdGlvbiBzdGFydGVkJywgeyBmaXJzdFRpbWU6IHRoaXMuZmlyc3RSb3V0ZSB9KTtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBOYXZpZ2F0aW9uU2Vzc2lvbi5jcmVhdGVFeHRlcm5hbCh0aGlzLmZpcnN0Um91dGUpO1xuICAgICAgaWYgKGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnKSB7XG4gICAgICAgIHNlc3Npb24uc2V0UG9wc3RhdGVSZXR1cm4odGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWUgPSBzZXNzaW9uO1xuICAgIH1cbiAgICB0aGlzLmZpcnN0Um91dGUgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHByaXZhdGUgb25Bbmd1bGFyUm91dGVyRmluaXNoZWQoKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWU7XG4gICAgLy8gVXBkYXRlIHZpc2l0cyBiZWZvcmUgd2UgZW5kIHRoZSBuYXZpZ2F0aW9uIHNlc3Npb24uICBUaGlzIGFsbG93cyB0aGUgcGxhY2Ugb3V0IGxldCB0b1xuICAgIC8vIGdhdGUgaWdub3JlIGNoYW5nZXMgdGhhdCBvY2N1ciB3aGlsZSB0aGUgdmlzaXQgaXMgYWN0aXZlXG4gICAgY29uc3QgdmlzaXRzID0gc2Vzc2lvbi5nZXRWaXNpdHMoKTtcbiAgICB2aXNpdHMuZm9yRWFjaCh2ID0+IHtcbiAgICAgIHRoaXMucGxhY2VIaXN0b3J5LmFkZCh2KTtcbiAgICB9KTtcbiAgICB0aGlzLl9hY3RpdmVWaXNpdHMudmFsdWUgPSB2aXNpdHM7XG5cbiAgICB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIGdldENoaWxkUGF0aChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGFueVtdIHtcbiAgICByZXR1cm4gXy5mbGF0dGVuKGFjdGl2YXRlZFJvdXRlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBjaGlsZC51cmwpKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import _ from 'lodash';
|
|
6
|
+
// WARNING: interface has both a type and a value, skipping emit
|
|
7
|
+
export var Formatter;
|
|
8
|
+
(function (Formatter) {
|
|
9
|
+
var StringType = /** @class */ (function () {
|
|
10
|
+
function StringType() {
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* @param {?} value
|
|
14
|
+
* @return {?}
|
|
15
|
+
*/
|
|
16
|
+
StringType.prototype.format = /**
|
|
17
|
+
* @param {?} value
|
|
18
|
+
* @return {?}
|
|
19
|
+
*/
|
|
20
|
+
function (value) {
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* @param {?} value
|
|
25
|
+
* @return {?}
|
|
26
|
+
*/
|
|
27
|
+
StringType.prototype.parse = /**
|
|
28
|
+
* @param {?} value
|
|
29
|
+
* @return {?}
|
|
30
|
+
*/
|
|
31
|
+
function (value) {
|
|
32
|
+
return value;
|
|
33
|
+
};
|
|
34
|
+
return StringType;
|
|
35
|
+
}());
|
|
36
|
+
var NumberType = /** @class */ (function () {
|
|
37
|
+
function NumberType() {
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @param {?} value
|
|
41
|
+
* @return {?}
|
|
42
|
+
*/
|
|
43
|
+
NumberType.prototype.format = /**
|
|
44
|
+
* @param {?} value
|
|
45
|
+
* @return {?}
|
|
46
|
+
*/
|
|
47
|
+
function (value) {
|
|
48
|
+
return _.isNumber(value) && !_.isNaN(value) ? "" + value : null;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* @param {?} value
|
|
52
|
+
* @return {?}
|
|
53
|
+
*/
|
|
54
|
+
NumberType.prototype.parse = /**
|
|
55
|
+
* @param {?} value
|
|
56
|
+
* @return {?}
|
|
57
|
+
*/
|
|
58
|
+
function (value) {
|
|
59
|
+
/** @type {?} */
|
|
60
|
+
var parsed = Number.parseFloat(value);
|
|
61
|
+
return _.isNaN(parsed) ? null : parsed;
|
|
62
|
+
};
|
|
63
|
+
return NumberType;
|
|
64
|
+
}());
|
|
65
|
+
var BooleanType = /** @class */ (function () {
|
|
66
|
+
function BooleanType() {
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @param {?} value
|
|
70
|
+
* @return {?}
|
|
71
|
+
*/
|
|
72
|
+
BooleanType.prototype.format = /**
|
|
73
|
+
* @param {?} value
|
|
74
|
+
* @return {?}
|
|
75
|
+
*/
|
|
76
|
+
function (value) {
|
|
77
|
+
return value ? 'true' : 'false';
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* @param {?} value
|
|
81
|
+
* @return {?}
|
|
82
|
+
*/
|
|
83
|
+
BooleanType.prototype.parse = /**
|
|
84
|
+
* @param {?} value
|
|
85
|
+
* @return {?}
|
|
86
|
+
*/
|
|
87
|
+
function (value) {
|
|
88
|
+
return value === 'true';
|
|
89
|
+
};
|
|
90
|
+
return BooleanType;
|
|
91
|
+
}());
|
|
92
|
+
Formatter.STRING = new StringType();
|
|
93
|
+
Formatter.NUMBER = new NumberType();
|
|
94
|
+
Formatter.BOOLEAN = new BooleanType();
|
|
95
|
+
})(Formatter || (Formatter = {}));
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQVF2QixNQUFNLEtBQVcsU0FBUyxDQW9DekI7QUFwQ0QsV0FBaUIsU0FBUztJQUV4QjtRQUFBO1FBUUEsQ0FBQzs7Ozs7UUFQQywyQkFBTTs7OztRQUFOLFVBQU8sS0FBYTtZQUNsQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7Ozs7O1FBRUQsMEJBQUs7Ozs7UUFBTCxVQUFNLEtBQWE7WUFDakIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0gsaUJBQUM7SUFBRCxDQUFDLEFBUkQsSUFRQztJQUVEO1FBQUE7UUFTQSxDQUFDOzs7OztRQVJDLDJCQUFNOzs7O1FBQU4sVUFBTyxLQUFhO1lBQ2xCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsS0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEUsQ0FBQzs7Ozs7UUFFRCwwQkFBSzs7OztRQUFMLFVBQU0sS0FBYTs7Z0JBQ1gsTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDekMsQ0FBQztRQUNILGlCQUFDO0lBQUQsQ0FBQyxBQVRELElBU0M7SUFFRDtRQUFBO1FBUUEsQ0FBQzs7Ozs7UUFQQyw0QkFBTTs7OztRQUFOLFVBQU8sS0FBYztZQUNuQixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbEMsQ0FBQzs7Ozs7UUFFRCwyQkFBSzs7OztRQUFMLFVBQU0sS0FBYTtZQUNqQixPQUFPLEtBQUssS0FBSyxNQUFNLENBQUM7UUFDMUIsQ0FBQztRQUNILGtCQUFDO0lBQUQsQ0FBQyxBQVJELElBUUM7SUFFWSxnQkFBTSxHQUFHLElBQUksVUFBVSxFQUFFO0lBQ3pCLGdCQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7SUFDekIsaUJBQU8sR0FBRyxJQUFJLFdBQVcsRUFBRTtBQUMxQyxDQUFDLEVBcENnQixTQUFTLEtBQVQsU0FBUyxRQW9DekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRlcjxUPiB7XG4gIGZvcm1hdCh2YWx1ZTogVCk6IHN0cmluZztcblxuICBwYXJzZSh2YWx1ZTogc3RyaW5nKTogVDtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBGb3JtYXR0ZXIge1xuXG4gIGNsYXNzIFN0cmluZ1R5cGUgaW1wbGVtZW50cyBGb3JtYXR0ZXI8c3RyaW5nPiB7XG4gICAgZm9ybWF0KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIE51bWJlclR5cGUgaW1wbGVtZW50cyBGb3JtYXR0ZXI8bnVtYmVyPiB7XG4gICAgZm9ybWF0KHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIF8uaXNOdW1iZXIodmFsdWUpICYmICFfLmlzTmFOKHZhbHVlKSA/IGAke3ZhbHVlfWAgOiBudWxsO1xuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyLnBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgcmV0dXJuIF8uaXNOYU4ocGFyc2VkKSA/IG51bGwgOiBwYXJzZWQ7XG4gICAgfVxuICB9XG5cbiAgY2xhc3MgQm9vbGVhblR5cGUgaW1wbGVtZW50cyBGb3JtYXR0ZXI8Ym9vbGVhbj4ge1xuICAgIGZvcm1hdCh2YWx1ZTogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gJ3RydWUnO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjb25zdCBTVFJJTkcgPSBuZXcgU3RyaW5nVHlwZSgpO1xuICBleHBvcnQgY29uc3QgTlVNQkVSID0gbmV3IE51bWJlclR5cGUoKTtcbiAgZXhwb3J0IGNvbnN0IEJPT0xFQU4gPSBuZXcgQm9vbGVhblR5cGUoKTtcbn1cbiJdfQ==
|