@ngrdt/router 0.0.1
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/README.md +7 -0
- package/esm2022/index.mjs +9 -0
- package/esm2022/lib/directives/rdt-router-link.directive.mjs +69 -0
- package/esm2022/lib/rdt-route/constants.mjs +5 -0
- package/esm2022/lib/rdt-route/rdt-angular-route.mjs +173 -0
- package/esm2022/lib/rdt-route/rdt-route-builder.mjs +70 -0
- package/esm2022/lib/rdt-route/rdt-route.mjs +208 -0
- package/esm2022/lib/rdt-route/utils.mjs +2 -0
- package/esm2022/lib/services/rdt-confirm-data-loss.service.mjs +11 -0
- package/esm2022/lib/services/rdt-router.service.mjs +128 -0
- package/esm2022/lib/services/rdt-routes.token.mjs +3 -0
- package/esm2022/ngrdt-router.mjs +5 -0
- package/fesm2022/ngrdt-router.mjs +660 -0
- package/fesm2022/ngrdt-router.mjs.map +1 -0
- package/index.d.ts +8 -0
- package/lib/directives/rdt-router-link.directive.d.ts +23 -0
- package/lib/rdt-route/constants.d.ts +3 -0
- package/lib/rdt-route/rdt-angular-route.d.ts +28 -0
- package/lib/rdt-route/rdt-route-builder.d.ts +12 -0
- package/lib/rdt-route/rdt-route.d.ts +48 -0
- package/lib/rdt-route/utils.d.ts +10 -0
- package/lib/services/rdt-confirm-data-loss.service.d.ts +9 -0
- package/lib/services/rdt-router.service.d.ts +41 -0
- package/lib/services/rdt-routes.token.d.ts +3 -0
- package/package.json +25 -0
package/README.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './lib/services/rdt-confirm-data-loss.service';
|
|
2
|
+
export * from './lib/services/rdt-router.service';
|
|
3
|
+
export * from './lib/services/rdt-routes.token';
|
|
4
|
+
export * from './lib/rdt-route/rdt-route';
|
|
5
|
+
export * from './lib/rdt-route/rdt-route-builder';
|
|
6
|
+
export * from './lib/rdt-route/rdt-angular-route';
|
|
7
|
+
export * from './lib/rdt-route/constants';
|
|
8
|
+
export * from './lib/directives/rdt-router-link.directive';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUVoRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDJCQUEyQixDQUFDO0FBRTFDLGNBQWMsNENBQTRDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9yZHQtY29uZmlybS1kYXRhLWxvc3Muc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3JkdC1yb3V0ZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3JkdC1yb3V0ZXMudG9rZW4nO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmR0LXJvdXRlL3JkdC1yb3V0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JkdC1yb3V0ZS9yZHQtcm91dGUtYnVpbGRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JkdC1yb3V0ZS9yZHQtYW5ndWxhci1yb3V0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JkdC1yb3V0ZS9jb25zdGFudHMnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9yZHQtcm91dGVyLWxpbmsuZGlyZWN0aXZlJztcclxuIl19
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { booleanAttribute, Directive, EnvironmentInjector, inject, Input, } from '@angular/core';
|
|
2
|
+
import { RouterLink } from '@angular/router';
|
|
3
|
+
import { RdtRoute } from '../rdt-route/rdt-route';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/router";
|
|
6
|
+
export class RdtRouterLinkDirective {
|
|
7
|
+
routerLinkRef = inject(RouterLink, { self: true });
|
|
8
|
+
envInjector = inject(EnvironmentInjector);
|
|
9
|
+
route;
|
|
10
|
+
target = '_self';
|
|
11
|
+
params;
|
|
12
|
+
queryParams;
|
|
13
|
+
stateParams;
|
|
14
|
+
disabled = false;
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
this.update();
|
|
17
|
+
}
|
|
18
|
+
ngOnChanges() {
|
|
19
|
+
this.update();
|
|
20
|
+
}
|
|
21
|
+
update() {
|
|
22
|
+
if (this.route.canBeEntered(this.envInjector) && !this.disabled) {
|
|
23
|
+
this.setLink();
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.disableLink();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
setLink() {
|
|
30
|
+
this.routerLinkRef.routerLink = this.route.createAbsoluteUrl(this.params);
|
|
31
|
+
this.routerLinkRef.state = this.stateParams ?? this.route.stateParams;
|
|
32
|
+
this.routerLinkRef.queryParams = this.queryParams ?? this.route.queryParams;
|
|
33
|
+
this.routerLinkRef.ngOnChanges({});
|
|
34
|
+
}
|
|
35
|
+
disableLink() {
|
|
36
|
+
this.routerLinkRef.routerLink = null;
|
|
37
|
+
this.routerLinkRef.ngOnChanges({});
|
|
38
|
+
}
|
|
39
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtRouterLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
40
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.7", type: RdtRouterLinkDirective, isStandalone: true, selector: "[rdtRouterLink]", inputs: { route: ["rdtRouterLink", "route"], target: "target", params: "params", queryParams: "queryParams", stateParams: "stateParams", disabled: ["disabled", "disabled", booleanAttribute] }, usesOnChanges: true, hostDirectives: [{ directive: i1.RouterLink, inputs: ["target", "target"] }], ngImport: i0 });
|
|
41
|
+
}
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RdtRouterLinkDirective, decorators: [{
|
|
43
|
+
type: Directive,
|
|
44
|
+
args: [{
|
|
45
|
+
selector: '[rdtRouterLink]',
|
|
46
|
+
standalone: true,
|
|
47
|
+
hostDirectives: [
|
|
48
|
+
{
|
|
49
|
+
directive: RouterLink,
|
|
50
|
+
inputs: ['target'],
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
}]
|
|
54
|
+
}], propDecorators: { route: [{
|
|
55
|
+
type: Input,
|
|
56
|
+
args: [{ alias: 'rdtRouterLink', required: true }]
|
|
57
|
+
}], target: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], params: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], queryParams: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], stateParams: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], disabled: [{
|
|
66
|
+
type: Input,
|
|
67
|
+
args: [{ transform: booleanAttribute }]
|
|
68
|
+
}] } });
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci1saW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9kaXJlY3RpdmVzL3JkdC1yb3V0ZXItbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLE1BQU0sRUFDTixLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBWWxELE1BQU0sT0FBTyxzQkFBc0I7SUFHaEIsYUFBYSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxXQUFXLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFHM0QsS0FBSyxDQUFlO0lBR3BCLE1BQU0sR0FBNEMsT0FBTyxDQUFDO0lBRzFELE1BQU0sQ0FBYztJQUdwQixXQUFXLENBQVU7SUFHckIsV0FBVyxDQUFVO0lBR3JCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVPLE9BQU87UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDNUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7dUdBbERVLHNCQUFzQjsyRkFBdEIsc0JBQXNCLCtOQXFCYixnQkFBZ0I7OzJGQXJCekIsc0JBQXNCO2tCQVZsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUU7d0JBQ2Q7NEJBQ0UsU0FBUyxFQUFFLFVBQVU7NEJBQ3JCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQzt5QkFDbkI7cUJBQ0Y7aUJBQ0Y7OEJBUUMsS0FBSztzQkFESixLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUlqRCxNQUFNO3NCQURMLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBib29sZWFuQXR0cmlidXRlLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbnZpcm9ubWVudEluamVjdG9yLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXJhbXMsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4uL3JkdC1yb3V0ZS9yZHQtcm91dGUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcmR0Um91dGVyTGlua10nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaG9zdERpcmVjdGl2ZXM6IFtcclxuICAgIHtcclxuICAgICAgZGlyZWN0aXZlOiBSb3V0ZXJMaW5rLFxyXG4gICAgICBpbnB1dHM6IFsndGFyZ2V0J10sXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZHRSb3V0ZXJMaW5rRGlyZWN0aXZlPFQgZXh0ZW5kcyBvYmplY3Q+XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc1xyXG57XHJcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXJMaW5rUmVmID0gaW5qZWN0KFJvdXRlckxpbmssIHsgc2VsZjogdHJ1ZSB9KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVudkluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xyXG5cclxuICBASW5wdXQoeyBhbGlhczogJ3JkdFJvdXRlckxpbmsnLCByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gIHJvdXRlITogUmR0Um91dGU8VD47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGFyZ2V0OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCcgPSAnX3NlbGYnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBhcmFtcz86IFBhcnRpYWw8VD47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcXVlcnlQYXJhbXM/OiBQYXJhbXM7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc3RhdGVQYXJhbXM/OiBQYXJhbXM7XHJcblxyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxyXG4gIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlKCkge1xyXG4gICAgaWYgKHRoaXMucm91dGUuY2FuQmVFbnRlcmVkKHRoaXMuZW52SW5qZWN0b3IpICYmICF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuc2V0TGluaygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaXNhYmxlTGluaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRMaW5rKCkge1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnJvdXRlckxpbmsgPSB0aGlzLnJvdXRlLmNyZWF0ZUFic29sdXRlVXJsKHRoaXMucGFyYW1zKTtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5zdGF0ZSA9IHRoaXMuc3RhdGVQYXJhbXMgPz8gdGhpcy5yb3V0ZS5zdGF0ZVBhcmFtcztcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5xdWVyeVBhcmFtcyA9IHRoaXMucXVlcnlQYXJhbXMgPz8gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcztcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5uZ09uQ2hhbmdlcyh7fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpc2FibGVMaW5rKCkge1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnJvdXRlckxpbmsgPSBudWxsO1xyXG4gICAgdGhpcy5yb3V0ZXJMaW5rUmVmLm5nT25DaGFuZ2VzKHt9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export var RdtNavigationSource;
|
|
2
|
+
(function (RdtNavigationSource) {
|
|
3
|
+
RdtNavigationSource["BREADCRUMB"] = "breadcrumb";
|
|
4
|
+
})(RdtNavigationSource || (RdtNavigationSource = {}));
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksbUJBRVg7QUFGRCxXQUFZLG1CQUFtQjtJQUM3QixnREFBeUIsQ0FBQTtBQUMzQixDQUFDLEVBRlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUU5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJkdE5hdmlnYXRpb25Tb3VyY2Uge1xyXG4gIEJSRUFEQ1JVTUIgPSAnYnJlYWRjcnVtYicsXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { EnvironmentInjector, inject, runInInjectionContext, } from '@angular/core';
|
|
2
|
+
import { RdtNavigationSource } from './constants';
|
|
3
|
+
export class RdtAngularRoute {
|
|
4
|
+
route;
|
|
5
|
+
children = [];
|
|
6
|
+
// Must be set from component declaration files
|
|
7
|
+
loadChildren;
|
|
8
|
+
component;
|
|
9
|
+
providers = [];
|
|
10
|
+
resolvers = {};
|
|
11
|
+
canActivate = [];
|
|
12
|
+
canActivateChild = [];
|
|
13
|
+
canDeactivate = [];
|
|
14
|
+
runGuardsAndResolvers;
|
|
15
|
+
constructor(route) {
|
|
16
|
+
this.route = route;
|
|
17
|
+
}
|
|
18
|
+
provide(...providers) {
|
|
19
|
+
this.providers.push(...providers);
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
setModule(callback) {
|
|
23
|
+
this.loadChildren = callback;
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
setComponent(comp) {
|
|
27
|
+
this.component = comp;
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
setChildren(...routes) {
|
|
31
|
+
this.children = routes;
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
addResolve(paramName, resolver) {
|
|
35
|
+
this.resolvers[paramName] = resolver;
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
addCanActivate(...fns) {
|
|
39
|
+
this.canActivate.push(...fns);
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
addCanDeactivate(...fns) {
|
|
43
|
+
this.canDeactivate.push(...fns);
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
addCanActivateChild(...fns) {
|
|
47
|
+
this.canActivateChild.push(...fns);
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
setRunGuardsAndResolvers(value) {
|
|
51
|
+
this.runGuardsAndResolvers = value;
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
build() {
|
|
55
|
+
this.checkChildrenMatch();
|
|
56
|
+
let res = {
|
|
57
|
+
path: this.route.path,
|
|
58
|
+
providers: this.providers,
|
|
59
|
+
title: this.route.name,
|
|
60
|
+
canMatch: this.getCanMatch(),
|
|
61
|
+
};
|
|
62
|
+
if (this.component) {
|
|
63
|
+
res.component = this.component;
|
|
64
|
+
}
|
|
65
|
+
else if (this.loadChildren) {
|
|
66
|
+
res.loadChildren = this.loadChildren;
|
|
67
|
+
}
|
|
68
|
+
res.data = {
|
|
69
|
+
breadcrumb: {
|
|
70
|
+
label: this.route.name,
|
|
71
|
+
disable: this.route.entryDisabled,
|
|
72
|
+
staticStateParams: {
|
|
73
|
+
src: RdtNavigationSource.BREADCRUMB,
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
const guard = () => {
|
|
78
|
+
const injector = inject(EnvironmentInjector);
|
|
79
|
+
return runInInjectionContext(injector, this.route.canBeEntered.bind(this.route));
|
|
80
|
+
};
|
|
81
|
+
this.canActivate.push(guard);
|
|
82
|
+
this.canActivateChild.push(guard);
|
|
83
|
+
res.canActivate = this.canActivate;
|
|
84
|
+
res.canDeactivate = this.canDeactivate;
|
|
85
|
+
// If children exist, change
|
|
86
|
+
// {
|
|
87
|
+
// path: '/path',
|
|
88
|
+
// component: FeatureComponent,
|
|
89
|
+
// children: [...]
|
|
90
|
+
// }
|
|
91
|
+
// into
|
|
92
|
+
// {
|
|
93
|
+
// path: '/path',
|
|
94
|
+
// children: [
|
|
95
|
+
// {
|
|
96
|
+
// path: '',
|
|
97
|
+
// component: FeatureComponent
|
|
98
|
+
// },
|
|
99
|
+
// ...
|
|
100
|
+
// ]
|
|
101
|
+
// }
|
|
102
|
+
if (this.children.length > 0) {
|
|
103
|
+
if (this.loadChildren || this.component) {
|
|
104
|
+
const path = res.path;
|
|
105
|
+
res.path = '';
|
|
106
|
+
res.pathMatch = 'full';
|
|
107
|
+
res.canMatch = undefined;
|
|
108
|
+
res = {
|
|
109
|
+
path: path,
|
|
110
|
+
children: [res, ...this.children],
|
|
111
|
+
canActivateChild: this.canActivateChild,
|
|
112
|
+
canMatch: this.getCanMatch(),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
res.children = this.children;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (Object.keys(this.resolvers).length > 0) {
|
|
120
|
+
res.resolve = this.resolvers;
|
|
121
|
+
}
|
|
122
|
+
if (this.runGuardsAndResolvers) {
|
|
123
|
+
res.runGuardsAndResolvers = this.runGuardsAndResolvers;
|
|
124
|
+
}
|
|
125
|
+
return res;
|
|
126
|
+
}
|
|
127
|
+
getCanMatch() {
|
|
128
|
+
const paramMap = this.route.paramMap;
|
|
129
|
+
const hasNumberParams = Object.keys(paramMap).some((p) => paramMap[p] === 'number');
|
|
130
|
+
if (!hasNumberParams) {
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
const routeSegmentLength = this.route.path.split('/').length;
|
|
134
|
+
const regex = new RegExp(`^${this.route.regex.source}$`);
|
|
135
|
+
return [
|
|
136
|
+
(route, segments) => {
|
|
137
|
+
const path = segments
|
|
138
|
+
.slice(0, routeSegmentLength)
|
|
139
|
+
.map((s) => s.path)
|
|
140
|
+
.join('/');
|
|
141
|
+
return regex.test(path);
|
|
142
|
+
},
|
|
143
|
+
];
|
|
144
|
+
}
|
|
145
|
+
checkChildrenMatch() {
|
|
146
|
+
// Check that all routes are present if route is not
|
|
147
|
+
// lazy loaded module.
|
|
148
|
+
if (!this.loadChildren &&
|
|
149
|
+
(this.route.children.length > 0 || this.children.length > 0)) {
|
|
150
|
+
if (this.children.length < this.route.children.length) {
|
|
151
|
+
throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in global routes definition? Routes with following names should be present: ${this.route.children
|
|
152
|
+
.map((ch) => ch.name)
|
|
153
|
+
.join(', ')}`);
|
|
154
|
+
}
|
|
155
|
+
else if (this.children.length > this.route.children.length) {
|
|
156
|
+
throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in feature shell routes definition? Routes with following paths should be present: ${this.children
|
|
157
|
+
.map((ch) => ch.path)
|
|
158
|
+
.join(', ')}`);
|
|
159
|
+
}
|
|
160
|
+
const n1 = this.children.map((ch) => ch.path);
|
|
161
|
+
const n2 = this.route.children.map((ch) => ch.path);
|
|
162
|
+
n1.sort();
|
|
163
|
+
n2.sort();
|
|
164
|
+
for (let i = 0; i < n1.length; i++) {
|
|
165
|
+
if (n1[i] !== n2[i]) {
|
|
166
|
+
throw new Error(`Paths of children provided in RdtRoute and
|
|
167
|
+
RdtAngularRoute do not match. ${n1[i]} != ${n2[i]}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFuZ3VsYXItcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1hbmd1bGFyLXJvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxtQkFBbUIsRUFFbkIsTUFBTSxFQUVOLHFCQUFxQixHQUV0QixNQUFNLGVBQWUsQ0FBQztBQVl2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHbEQsTUFBTSxPQUFPLGVBQWU7SUFDbEIsS0FBSyxDQUFjO0lBQ25CLFFBQVEsR0FBWSxFQUFFLENBQUM7SUFFL0IsK0NBQStDO0lBQ3ZDLFlBQVksQ0FBd0I7SUFDcEMsU0FBUyxDQUFhO0lBQ3RCLFNBQVMsR0FBd0MsRUFBRSxDQUFDO0lBQ3BELFNBQVMsR0FBMEMsRUFBRSxDQUFDO0lBQ3RELFdBQVcsR0FBb0IsRUFBRSxDQUFDO0lBQ2xDLGdCQUFnQixHQUF5QixFQUFFLENBQUM7SUFDNUMsYUFBYSxHQUF5QixFQUFFLENBQUM7SUFDekMscUJBQXFCLENBQXlCO0lBRXRELFlBQVksS0FBa0I7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLFNBQTBCO1FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQThCO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFlO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFHLE1BQWU7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQWlCLEVBQUUsUUFBNEI7UUFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQUcsR0FBb0I7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFHLEdBQTJCO1FBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsR0FBRyxHQUF5QjtRQUM5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsS0FBNEI7UUFDbkQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFMUIsSUFBSSxHQUFHLEdBQVU7WUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO1NBQzdCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzdCLEdBQUcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2QyxDQUFDO1FBRUQsR0FBRyxDQUFDLElBQUksR0FBRztZQUNULFVBQVUsRUFBRTtnQkFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUN0QixPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO2dCQUNqQyxpQkFBaUIsRUFBRTtvQkFDakIsR0FBRyxFQUFFLG1CQUFtQixDQUFDLFVBQVU7aUJBQ3BDO2FBQ0Y7U0FDRixDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzdDLE9BQU8scUJBQXFCLENBQzFCLFFBQVEsRUFDUixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUN6QyxDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVsQyxHQUFHLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDbkMsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRXZDLDRCQUE0QjtRQUM1QixJQUFJO1FBQ0osb0JBQW9CO1FBQ3BCLGtDQUFrQztRQUNsQyxxQkFBcUI7UUFDckIsSUFBSTtRQUNKLE9BQU87UUFDUCxJQUFJO1FBQ0osb0JBQW9CO1FBQ3BCLGlCQUFpQjtRQUNqQixTQUFTO1FBQ1QsbUJBQW1CO1FBQ25CLHFDQUFxQztRQUNyQyxVQUFVO1FBQ1YsU0FBUztRQUNULE9BQU87UUFDUCxPQUFPO1FBQ1AsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN4QyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUN0QixHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDZCxHQUFHLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztnQkFDdkIsR0FBRyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7Z0JBQ3pCLEdBQUcsR0FBRztvQkFDSixJQUFJLEVBQUUsSUFBSTtvQkFDVixRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUNqQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO29CQUN2QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRTtpQkFDN0IsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDL0IsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0IsR0FBRyxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUN6RCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sV0FBVztRQUNqQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUNyQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDaEQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFZLENBQUMsS0FBSyxRQUFRLENBQzNDLENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUM3RCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDekQsT0FBTztZQUNMLENBQUMsS0FBWSxFQUFFLFFBQXNCLEVBQUUsRUFBRTtnQkFDdkMsTUFBTSxJQUFJLEdBQUcsUUFBUTtxQkFDbEIsS0FBSyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQztxQkFDNUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO3FCQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixvREFBb0Q7UUFDcEQsc0JBQXNCO1FBQ3RCLElBQ0UsQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUNsQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQzVELENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN0RCxNQUFNLElBQUksS0FBSyxDQUNiLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQ3RCLHNDQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFDaEIsd0pBQXdKLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtxQkFDeEssR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3FCQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDaEIsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDN0QsTUFBTSxJQUFJLEtBQUssQ0FDYixZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUN0QixzQ0FDRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQ2hCLCtKQUErSixJQUFJLENBQUMsUUFBUTtxQkFDekssR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3FCQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDaEIsQ0FBQztZQUNKLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUssQ0FBQyxDQUFDO1lBQy9DLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ25DLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNwQixNQUFNLElBQUksS0FBSyxDQUNiOzRDQUNnQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3BELENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBFbnZpcm9ubWVudEluamVjdG9yLFxyXG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxyXG4gIGluamVjdCxcclxuICBQcm92aWRlcixcclxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXHJcbiAgVHlwZSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDYW5BY3RpdmF0ZUNoaWxkRm4sXHJcbiAgQ2FuQWN0aXZhdGVGbixcclxuICBDYW5EZWFjdGl2YXRlRm4sXHJcbiAgQ2FuTWF0Y2hGbixcclxuICBMb2FkQ2hpbGRyZW5DYWxsYmFjayxcclxuICBSZXNvbHZlRm4sXHJcbiAgUm91dGUsXHJcbiAgUnVuR3VhcmRzQW5kUmVzb2x2ZXJzLFxyXG4gIFVybFNlZ21lbnQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmR0TmF2aWdhdGlvblNvdXJjZSB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuL3JkdC1yb3V0ZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgUmR0QW5ndWxhclJvdXRlPFQgZXh0ZW5kcyBvYmplY3Q+IHtcclxuICBwcml2YXRlIHJvdXRlOiBSZHRSb3V0ZTxUPjtcclxuICBwcml2YXRlIGNoaWxkcmVuOiBSb3V0ZVtdID0gW107XHJcblxyXG4gIC8vIE11c3QgYmUgc2V0IGZyb20gY29tcG9uZW50IGRlY2xhcmF0aW9uIGZpbGVzXHJcbiAgcHJpdmF0ZSBsb2FkQ2hpbGRyZW4/OiBMb2FkQ2hpbGRyZW5DYWxsYmFjaztcclxuICBwcml2YXRlIGNvbXBvbmVudD86IFR5cGU8YW55PjtcclxuICBwcml2YXRlIHByb3ZpZGVyczogKFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpW10gPSBbXTtcclxuICBwcml2YXRlIHJlc29sdmVyczogeyBba2V5OiBzdHJpbmddOiBSZXNvbHZlRm48dW5rbm93bj4gfSA9IHt9O1xyXG4gIHByaXZhdGUgY2FuQWN0aXZhdGU6IENhbkFjdGl2YXRlRm5bXSA9IFtdO1xyXG4gIHByaXZhdGUgY2FuQWN0aXZhdGVDaGlsZDogQ2FuQWN0aXZhdGVDaGlsZEZuW10gPSBbXTtcclxuICBwcml2YXRlIGNhbkRlYWN0aXZhdGU6IENhbkRlYWN0aXZhdGVGbjxUPltdID0gW107XHJcbiAgcHJpdmF0ZSBydW5HdWFyZHNBbmRSZXNvbHZlcnM/OiBSdW5HdWFyZHNBbmRSZXNvbHZlcnM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHJvdXRlOiBSZHRSb3V0ZTxUPikge1xyXG4gICAgdGhpcy5yb3V0ZSA9IHJvdXRlO1xyXG4gIH1cclxuXHJcbiAgcHJvdmlkZSguLi5wcm92aWRlcnM6IFR5cGU8dW5rbm93bj5bXSkge1xyXG4gICAgdGhpcy5wcm92aWRlcnMucHVzaCguLi5wcm92aWRlcnMpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBzZXRNb2R1bGUoY2FsbGJhY2s6IExvYWRDaGlsZHJlbkNhbGxiYWNrKSB7XHJcbiAgICB0aGlzLmxvYWRDaGlsZHJlbiA9IGNhbGxiYWNrO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBzZXRDb21wb25lbnQoY29tcDogVHlwZTxhbnk+KSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXA7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHNldENoaWxkcmVuKC4uLnJvdXRlczogUm91dGVbXSkge1xyXG4gICAgdGhpcy5jaGlsZHJlbiA9IHJvdXRlcztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgYWRkUmVzb2x2ZShwYXJhbU5hbWU6IHN0cmluZywgcmVzb2x2ZXI6IFJlc29sdmVGbjx1bmtub3duPikge1xyXG4gICAgdGhpcy5yZXNvbHZlcnNbcGFyYW1OYW1lXSA9IHJlc29sdmVyO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBhZGRDYW5BY3RpdmF0ZSguLi5mbnM6IENhbkFjdGl2YXRlRm5bXSkge1xyXG4gICAgdGhpcy5jYW5BY3RpdmF0ZS5wdXNoKC4uLmZucyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZENhbkRlYWN0aXZhdGUoLi4uZm5zOiBDYW5EZWFjdGl2YXRlRm48YW55PltdKSB7XHJcbiAgICB0aGlzLmNhbkRlYWN0aXZhdGUucHVzaCguLi5mbnMpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBhZGRDYW5BY3RpdmF0ZUNoaWxkKC4uLmZuczogQ2FuQWN0aXZhdGVDaGlsZEZuW10pIHtcclxuICAgIHRoaXMuY2FuQWN0aXZhdGVDaGlsZC5wdXNoKC4uLmZucyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHNldFJ1bkd1YXJkc0FuZFJlc29sdmVycyh2YWx1ZTogUnVuR3VhcmRzQW5kUmVzb2x2ZXJzKSB7XHJcbiAgICB0aGlzLnJ1bkd1YXJkc0FuZFJlc29sdmVycyA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBidWlsZCgpOiBSb3V0ZSB7XHJcbiAgICB0aGlzLmNoZWNrQ2hpbGRyZW5NYXRjaCgpO1xyXG5cclxuICAgIGxldCByZXM6IFJvdXRlID0ge1xyXG4gICAgICBwYXRoOiB0aGlzLnJvdXRlLnBhdGgsXHJcbiAgICAgIHByb3ZpZGVyczogdGhpcy5wcm92aWRlcnMsXHJcbiAgICAgIHRpdGxlOiB0aGlzLnJvdXRlLm5hbWUsXHJcbiAgICAgIGNhbk1hdGNoOiB0aGlzLmdldENhbk1hdGNoKCksXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNvbXBvbmVudCkge1xyXG4gICAgICByZXMuY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9hZENoaWxkcmVuKSB7XHJcbiAgICAgIHJlcy5sb2FkQ2hpbGRyZW4gPSB0aGlzLmxvYWRDaGlsZHJlbjtcclxuICAgIH1cclxuXHJcbiAgICByZXMuZGF0YSA9IHtcclxuICAgICAgYnJlYWRjcnVtYjoge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLnJvdXRlLm5hbWUsXHJcbiAgICAgICAgZGlzYWJsZTogdGhpcy5yb3V0ZS5lbnRyeURpc2FibGVkLFxyXG4gICAgICAgIHN0YXRpY1N0YXRlUGFyYW1zOiB7XHJcbiAgICAgICAgICBzcmM6IFJkdE5hdmlnYXRpb25Tb3VyY2UuQlJFQURDUlVNQixcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBndWFyZCA9ICgpID0+IHtcclxuICAgICAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XHJcbiAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoXHJcbiAgICAgICAgaW5qZWN0b3IsXHJcbiAgICAgICAgdGhpcy5yb3V0ZS5jYW5CZUVudGVyZWQuYmluZCh0aGlzLnJvdXRlKVxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICAgIHRoaXMuY2FuQWN0aXZhdGUucHVzaChndWFyZCk7XHJcbiAgICB0aGlzLmNhbkFjdGl2YXRlQ2hpbGQucHVzaChndWFyZCk7XHJcblxyXG4gICAgcmVzLmNhbkFjdGl2YXRlID0gdGhpcy5jYW5BY3RpdmF0ZTtcclxuICAgIHJlcy5jYW5EZWFjdGl2YXRlID0gdGhpcy5jYW5EZWFjdGl2YXRlO1xyXG5cclxuICAgIC8vIElmIGNoaWxkcmVuIGV4aXN0LCBjaGFuZ2VcclxuICAgIC8vIHtcclxuICAgIC8vICAgIHBhdGg6ICcvcGF0aCcsXHJcbiAgICAvLyAgICBjb21wb25lbnQ6IEZlYXR1cmVDb21wb25lbnQsXHJcbiAgICAvLyAgICBjaGlsZHJlbjogWy4uLl1cclxuICAgIC8vIH1cclxuICAgIC8vIGludG9cclxuICAgIC8vIHtcclxuICAgIC8vICAgIHBhdGg6ICcvcGF0aCcsXHJcbiAgICAvLyAgICBjaGlsZHJlbjogW1xyXG4gICAgLy8gICAgICB7XHJcbiAgICAvLyAgICAgICAgcGF0aDogJycsXHJcbiAgICAvLyAgICAgICAgY29tcG9uZW50OiBGZWF0dXJlQ29tcG9uZW50XHJcbiAgICAvLyAgICAgIH0sXHJcbiAgICAvLyAgICAuLi5cclxuICAgIC8vICAgIF1cclxuICAgIC8vICAgIH1cclxuICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKHRoaXMubG9hZENoaWxkcmVuIHx8IHRoaXMuY29tcG9uZW50KSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IHJlcy5wYXRoO1xyXG4gICAgICAgIHJlcy5wYXRoID0gJyc7XHJcbiAgICAgICAgcmVzLnBhdGhNYXRjaCA9ICdmdWxsJztcclxuICAgICAgICByZXMuY2FuTWF0Y2ggPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgcmVzID0ge1xyXG4gICAgICAgICAgcGF0aDogcGF0aCxcclxuICAgICAgICAgIGNoaWxkcmVuOiBbcmVzLCAuLi50aGlzLmNoaWxkcmVuXSxcclxuICAgICAgICAgIGNhbkFjdGl2YXRlQ2hpbGQ6IHRoaXMuY2FuQWN0aXZhdGVDaGlsZCxcclxuICAgICAgICAgIGNhbk1hdGNoOiB0aGlzLmdldENhbk1hdGNoKCksXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXMuY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMucmVzb2x2ZXJzKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJlcy5yZXNvbHZlID0gdGhpcy5yZXNvbHZlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucnVuR3VhcmRzQW5kUmVzb2x2ZXJzKSB7XHJcbiAgICAgIHJlcy5ydW5HdWFyZHNBbmRSZXNvbHZlcnMgPSB0aGlzLnJ1bkd1YXJkc0FuZFJlc29sdmVycztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDYW5NYXRjaCgpOiBDYW5NYXRjaEZuW10gfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgcGFyYW1NYXAgPSB0aGlzLnJvdXRlLnBhcmFtTWFwO1xyXG4gICAgY29uc3QgaGFzTnVtYmVyUGFyYW1zID0gT2JqZWN0LmtleXMocGFyYW1NYXApLnNvbWUoXHJcbiAgICAgIChwKSA9PiBwYXJhbU1hcFtwIGFzIGtleW9mIFRdID09PSAnbnVtYmVyJ1xyXG4gICAgKTtcclxuICAgIGlmICghaGFzTnVtYmVyUGFyYW1zKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCByb3V0ZVNlZ21lbnRMZW5ndGggPSB0aGlzLnJvdXRlLnBhdGguc3BsaXQoJy8nKS5sZW5ndGg7XHJcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke3RoaXMucm91dGUucmVnZXguc291cmNlfSRgKTtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIChyb3V0ZTogUm91dGUsIHNlZ21lbnRzOiBVcmxTZWdtZW50W10pID0+IHtcclxuICAgICAgICBjb25zdCBwYXRoID0gc2VnbWVudHNcclxuICAgICAgICAgIC5zbGljZSgwLCByb3V0ZVNlZ21lbnRMZW5ndGgpXHJcbiAgICAgICAgICAubWFwKChzKSA9PiBzLnBhdGgpXHJcbiAgICAgICAgICAuam9pbignLycpO1xyXG4gICAgICAgIHJldHVybiByZWdleC50ZXN0KHBhdGgpO1xyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tDaGlsZHJlbk1hdGNoKCkge1xyXG4gICAgLy8gQ2hlY2sgdGhhdCBhbGwgcm91dGVzIGFyZSBwcmVzZW50IGlmIHJvdXRlIGlzIG5vdFxyXG4gICAgLy8gbGF6eSBsb2FkZWQgbW9kdWxlLlxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5sb2FkQ2hpbGRyZW4gJiZcclxuICAgICAgKHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoID4gMCB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIDwgdGhpcy5yb3V0ZS5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICBgUmR0Um91dGUgJHt0aGlzLnJvdXRlLm5hbWV9IGhhcyAke1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgfSBjaGlsZHJlbiwgYnV0IFJkdEFuZ3VsYXJSb3V0ZSBoYXMgJHtcclxuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgIH0uIFRoZXNlIG51bWJlcnMgbXVzdCBtYXRjaC4gRGlkIHlvdSBmb3JnZXQgdG8gY2FsbCAuc2V0Q2hpbGRyZW4oKSBtZXRob2QgaW4gZ2xvYmFsIHJvdXRlcyBkZWZpbml0aW9uPyBSb3V0ZXMgd2l0aCBmb2xsb3dpbmcgbmFtZXMgc2hvdWxkIGJlIHByZXNlbnQ6ICR7dGhpcy5yb3V0ZS5jaGlsZHJlblxyXG4gICAgICAgICAgICAubWFwKChjaCkgPT4gY2gubmFtZSlcclxuICAgICAgICAgICAgLmpvaW4oJywgJyl9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPiB0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBSZHRSb3V0ZSAke3RoaXMucm91dGUubmFtZX0gaGFzICR7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoXHJcbiAgICAgICAgICB9IGNoaWxkcmVuLCBidXQgUmR0QW5ndWxhclJvdXRlIGhhcyAke1xyXG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgfS4gVGhlc2UgbnVtYmVycyBtdXN0IG1hdGNoLiBEaWQgeW91IGZvcmdldCB0byBjYWxsIC5zZXRDaGlsZHJlbigpIG1ldGhvZCBpbiBmZWF0dXJlIHNoZWxsIHJvdXRlcyBkZWZpbml0aW9uPyBSb3V0ZXMgd2l0aCBmb2xsb3dpbmcgcGF0aHMgc2hvdWxkIGJlIHByZXNlbnQ6ICR7dGhpcy5jaGlsZHJlblxyXG4gICAgICAgICAgICAubWFwKChjaCkgPT4gY2gucGF0aClcclxuICAgICAgICAgICAgLmpvaW4oJywgJyl9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbjEgPSB0aGlzLmNoaWxkcmVuLm1hcCgoY2gpID0+IGNoLnBhdGghKTtcclxuICAgICAgY29uc3QgbjIgPSB0aGlzLnJvdXRlLmNoaWxkcmVuLm1hcCgoY2gpID0+IGNoLnBhdGgpO1xyXG4gICAgICBuMS5zb3J0KCk7XHJcbiAgICAgIG4yLnNvcnQoKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuMS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChuMVtpXSAhPT0gbjJbaV0pIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgYFBhdGhzIG9mIGNoaWxkcmVuIHByb3ZpZGVkIGluIFJkdFJvdXRlIGFuZFxyXG4gICAgICAgICAgICBSZHRBbmd1bGFyUm91dGUgZG8gbm90IG1hdGNoLiAke24xW2ldfSAhPSAke24yW2ldfWBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { RdtRoute } from './rdt-route';
|
|
2
|
+
const DEFAULT_PARAM_TYPE = 'number';
|
|
3
|
+
export class RdtRouteBuilder extends RdtRoute {
|
|
4
|
+
setCanBeEntered(fn) {
|
|
5
|
+
this._canBeEntered = fn;
|
|
6
|
+
return this;
|
|
7
|
+
}
|
|
8
|
+
setEntryDisabled(value = true) {
|
|
9
|
+
this._entryDisabled = value;
|
|
10
|
+
return this;
|
|
11
|
+
}
|
|
12
|
+
setPath(path) {
|
|
13
|
+
this._path = path;
|
|
14
|
+
const s = path.split('/');
|
|
15
|
+
const params = [];
|
|
16
|
+
s.forEach((part) => {
|
|
17
|
+
if (part.includes(':')) {
|
|
18
|
+
const param = part.split(':')[1];
|
|
19
|
+
if (param) {
|
|
20
|
+
params.push(param);
|
|
21
|
+
if (!this._paramMap[param]) {
|
|
22
|
+
this._paramMap[param] = DEFAULT_PARAM_TYPE;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
this.orderedParams = params;
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
setParam(paramName, type) {
|
|
31
|
+
this._paramMap[paramName] = type;
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
setName(name) {
|
|
35
|
+
this._name = name;
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
setChildren(...children) {
|
|
39
|
+
this._children = children;
|
|
40
|
+
for (const child of children) {
|
|
41
|
+
child._parent = this;
|
|
42
|
+
}
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
build() {
|
|
46
|
+
if (typeof this._path !== 'string') {
|
|
47
|
+
throw new Error('Please provide path for route. Empty string is acceptable.');
|
|
48
|
+
}
|
|
49
|
+
this.setRegex();
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
setRegex() {
|
|
53
|
+
const params = Object.keys(this._paramMap);
|
|
54
|
+
params.sort((a, b) => b.length - a.length);
|
|
55
|
+
let substituted = this.path;
|
|
56
|
+
params.forEach((p) => {
|
|
57
|
+
const type = this._paramMap[p];
|
|
58
|
+
if (!type) {
|
|
59
|
+
throw new Error('Params is not set i');
|
|
60
|
+
}
|
|
61
|
+
substituted = substituted.replace(`:${p}`, RdtRouteBuilder.groups[type]);
|
|
62
|
+
});
|
|
63
|
+
this._regex = new RegExp(substituted);
|
|
64
|
+
}
|
|
65
|
+
static groups = {
|
|
66
|
+
string: '(.+)',
|
|
67
|
+
number: '(\\d+)',
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1yb3V0ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUM7QUFFcEMsTUFBTSxPQUFPLGVBQXdDLFNBQVEsUUFBVztJQUN0RSxlQUFlLENBQUMsRUFBaUI7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLElBQUk7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVk7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBWSxDQUFDO2dCQUM1QyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBZSxDQUFDLENBQUM7b0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsa0JBQWtCLENBQUM7b0JBQzdDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFFBQVEsQ0FBQyxTQUFrQixFQUFFLElBQXlCO1FBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFHLFFBQW9CO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7WUFDNUIsS0FBeUIsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsT0FBTyxJQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFTyxRQUFRO1FBQ2QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBWSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxNQUFNLENBQVUsTUFBTSxHQUFHO1FBQy9CLE1BQU0sRUFBRSxNQUFNO1FBQ2QsTUFBTSxFQUFFLFFBQVE7S0FDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJkdFJvdXRlIH0gZnJvbSAnLi9yZHQtcm91dGUnO1xyXG5cclxuY29uc3QgREVGQVVMVF9QQVJBTV9UWVBFID0gJ251bWJlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgUmR0Um91dGVCdWlsZGVyPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+IGV4dGVuZHMgUmR0Um91dGU8VD4ge1xyXG4gIHNldENhbkJlRW50ZXJlZChmbjogKCkgPT4gYm9vbGVhbikge1xyXG4gICAgdGhpcy5fY2FuQmVFbnRlcmVkID0gZm47XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHNldEVudHJ5RGlzYWJsZWQodmFsdWUgPSB0cnVlKSB7XHJcbiAgICB0aGlzLl9lbnRyeURpc2FibGVkID0gdmFsdWU7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHNldFBhdGgocGF0aDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9wYXRoID0gcGF0aDtcclxuICAgIGNvbnN0IHMgPSBwYXRoLnNwbGl0KCcvJyk7XHJcbiAgICBjb25zdCBwYXJhbXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBzLmZvckVhY2goKHBhcnQpID0+IHtcclxuICAgICAgaWYgKHBhcnQuaW5jbHVkZXMoJzonKSkge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtID0gcGFydC5zcGxpdCgnOicpWzFdIGFzIGtleW9mIFQ7XHJcbiAgICAgICAgaWYgKHBhcmFtKSB7XHJcbiAgICAgICAgICBwYXJhbXMucHVzaChwYXJhbSBhcyBzdHJpbmcpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLl9wYXJhbU1hcFtwYXJhbV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fcGFyYW1NYXBbcGFyYW1dID0gREVGQVVMVF9QQVJBTV9UWVBFO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9yZGVyZWRQYXJhbXMgPSBwYXJhbXM7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHNldFBhcmFtKHBhcmFtTmFtZToga2V5b2YgVCwgdHlwZTogJ3N0cmluZycgfCAnbnVtYmVyJykge1xyXG4gICAgdGhpcy5fcGFyYW1NYXBbcGFyYW1OYW1lXSA9IHR5cGU7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHNldE5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2hpbGRyZW4oLi4uY2hpbGRyZW46IFJkdFJvdXRlW10pIHtcclxuICAgIHRoaXMuX2NoaWxkcmVuID0gY2hpbGRyZW47XHJcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgIChjaGlsZCBhcyBSZHRSb3V0ZUJ1aWxkZXIpLl9wYXJlbnQgPSB0aGlzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBidWlsZCgpIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5fcGF0aCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdQbGVhc2UgcHJvdmlkZSBwYXRoIGZvciByb3V0ZS4gRW1wdHkgc3RyaW5nIGlzIGFjY2VwdGFibGUuJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRSZWdleCgpO1xyXG4gICAgcmV0dXJuIHRoaXMgYXMgUmR0Um91dGU8VD47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFJlZ2V4KCkge1xyXG4gICAgY29uc3QgcGFyYW1zID0gT2JqZWN0LmtleXModGhpcy5fcGFyYW1NYXApO1xyXG4gICAgcGFyYW1zLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpO1xyXG4gICAgbGV0IHN1YnN0aXR1dGVkID0gdGhpcy5wYXRoO1xyXG4gICAgcGFyYW1zLmZvckVhY2goKHApID0+IHtcclxuICAgICAgY29uc3QgdHlwZSA9IHRoaXMuX3BhcmFtTWFwW3AgYXMga2V5b2YgVF07XHJcbiAgICAgIGlmICghdHlwZSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUGFyYW1zIGlzIG5vdCBzZXQgaScpO1xyXG4gICAgICB9XHJcbiAgICAgIHN1YnN0aXR1dGVkID0gc3Vic3RpdHV0ZWQucmVwbGFjZShgOiR7cH1gLCBSZHRSb3V0ZUJ1aWxkZXIuZ3JvdXBzW3R5cGVdKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX3JlZ2V4ID0gbmV3IFJlZ0V4cChzdWJzdGl0dXRlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBncm91cHMgPSB7XHJcbiAgICBzdHJpbmc6ICcoLispJyxcclxuICAgIG51bWJlcjogJyhcXFxcZCspJyxcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { RdtStringUtils } from '@ngrdt/utils';
|
|
2
|
+
import { RdtAngularRoute } from './rdt-angular-route';
|
|
3
|
+
import { runInInjectionContext } from '@angular/core';
|
|
4
|
+
export class RdtRoute {
|
|
5
|
+
orderedParams = [];
|
|
6
|
+
_paramMap = {};
|
|
7
|
+
_regex;
|
|
8
|
+
paramMappings = [];
|
|
9
|
+
_staticParams = {};
|
|
10
|
+
_queryParams = {};
|
|
11
|
+
_stateParams = {};
|
|
12
|
+
_name;
|
|
13
|
+
_path;
|
|
14
|
+
_parent = null;
|
|
15
|
+
_children = [];
|
|
16
|
+
_entryDisabled = false;
|
|
17
|
+
_canBeEntered = () => true;
|
|
18
|
+
_absoluteRegex;
|
|
19
|
+
get paramMap() {
|
|
20
|
+
return this._paramMap;
|
|
21
|
+
}
|
|
22
|
+
get name() {
|
|
23
|
+
return this._name;
|
|
24
|
+
}
|
|
25
|
+
get path() {
|
|
26
|
+
return this._path;
|
|
27
|
+
}
|
|
28
|
+
get parent() {
|
|
29
|
+
return this._parent;
|
|
30
|
+
}
|
|
31
|
+
get children() {
|
|
32
|
+
return this._children;
|
|
33
|
+
}
|
|
34
|
+
get basePath() {
|
|
35
|
+
return this._parent ? this._parent.absolutePath : '/';
|
|
36
|
+
}
|
|
37
|
+
get absolutePath() {
|
|
38
|
+
return RdtStringUtils.joinPaths(this.basePath, this._path);
|
|
39
|
+
}
|
|
40
|
+
get regex() {
|
|
41
|
+
return this._regex;
|
|
42
|
+
}
|
|
43
|
+
get absoluteRegex() {
|
|
44
|
+
if (this._absoluteRegex) {
|
|
45
|
+
return this._absoluteRegex;
|
|
46
|
+
}
|
|
47
|
+
if (this._parent) {
|
|
48
|
+
// Remove initial ^ and ending $
|
|
49
|
+
const parent = this._parent.absoluteRegex.source.slice(1, -1);
|
|
50
|
+
this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths(parent, this._regex.source) + '$');
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths('/', this._regex.source) + '$');
|
|
54
|
+
}
|
|
55
|
+
return this._absoluteRegex;
|
|
56
|
+
}
|
|
57
|
+
get entryDisabled() {
|
|
58
|
+
return this._entryDisabled;
|
|
59
|
+
}
|
|
60
|
+
get stateParams() {
|
|
61
|
+
return this._stateParams;
|
|
62
|
+
}
|
|
63
|
+
get queryParams() {
|
|
64
|
+
return this._queryParams;
|
|
65
|
+
}
|
|
66
|
+
testUrl(url) {
|
|
67
|
+
return this.absoluteRegex.test(url);
|
|
68
|
+
}
|
|
69
|
+
get staticParams() {
|
|
70
|
+
return { ...this._staticParams };
|
|
71
|
+
}
|
|
72
|
+
canBeEntered(injector) {
|
|
73
|
+
return injector
|
|
74
|
+
? runInInjectionContext(injector, this._canBeEntered)
|
|
75
|
+
: this._canBeEntered();
|
|
76
|
+
}
|
|
77
|
+
// Extracts url parameters from absolute url.
|
|
78
|
+
parseAbsoluteUrl(url) {
|
|
79
|
+
const reg = this.absoluteRegex;
|
|
80
|
+
if (!reg.test(url)) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const matches = reg.exec(url);
|
|
84
|
+
if (matches) {
|
|
85
|
+
const values = matches.slice(1).reverse();
|
|
86
|
+
return this.fill(values);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
fill(values, res = {}) {
|
|
93
|
+
const params = {};
|
|
94
|
+
const reversedParams = this.orderedParams.slice().reverse();
|
|
95
|
+
for (let i = 0; i < reversedParams.length && i < values.length; i++) {
|
|
96
|
+
const key = reversedParams[i];
|
|
97
|
+
const mappedKey = this.paramMappings.find((m) => m.urlName === key)?.tableName ?? key;
|
|
98
|
+
let val = values[i];
|
|
99
|
+
if (this._paramMap[key] === 'number') {
|
|
100
|
+
val = parseInt(val);
|
|
101
|
+
}
|
|
102
|
+
params[mappedKey] = val;
|
|
103
|
+
}
|
|
104
|
+
res[this.absolutePath] = params;
|
|
105
|
+
if (values.length > reversedParams.length && this._parent) {
|
|
106
|
+
this._parent.fill(values.slice(reversedParams.length), res);
|
|
107
|
+
}
|
|
108
|
+
return res;
|
|
109
|
+
}
|
|
110
|
+
createAbsoluteUrl(paramMap = this._staticParams) {
|
|
111
|
+
if (!this._parent) {
|
|
112
|
+
return this.createUrl(this.absolutePath, paramMap);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
return RdtStringUtils.joinPaths(this._parent.createAbsoluteUrl(), this.createRelativeUrl(paramMap));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
createRelativeUrl(paramMap = this._staticParams) {
|
|
119
|
+
return this.createUrl(this.path, paramMap);
|
|
120
|
+
}
|
|
121
|
+
createUrl(path, paramMap) {
|
|
122
|
+
const paramNames = Object.keys(this._paramMap);
|
|
123
|
+
paramNames.sort((a, b) => b.length - a.length);
|
|
124
|
+
const extendedParamMap = { ...paramMap };
|
|
125
|
+
this.paramMappings.forEach((mapping) => {
|
|
126
|
+
if (mapping.tableName in paramMap) {
|
|
127
|
+
extendedParamMap[mapping.urlName] = paramMap[mapping.tableName];
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
paramNames.forEach((param) => {
|
|
131
|
+
path = path.replace(`:${param}`, `${extendedParamMap[param]}`);
|
|
132
|
+
});
|
|
133
|
+
return path;
|
|
134
|
+
}
|
|
135
|
+
toAngularRoute() {
|
|
136
|
+
if (!this._regex) {
|
|
137
|
+
throw new Error('You have to first call .build() on route!');
|
|
138
|
+
}
|
|
139
|
+
return new RdtAngularRoute(this);
|
|
140
|
+
}
|
|
141
|
+
// Provides static mapping for parameter names tableName -> urlName.
|
|
142
|
+
// Returns new instance of Dp3Route<T> that is clone of
|
|
143
|
+
// this route and its parents (NOT children).
|
|
144
|
+
withParamMappings(mappings) {
|
|
145
|
+
const clone = this.clone();
|
|
146
|
+
clone.paramMappings = mappings;
|
|
147
|
+
return clone;
|
|
148
|
+
}
|
|
149
|
+
// Sets selected parameters for itself and parents.
|
|
150
|
+
// Returns new instance of Dp3Route<T> that is clone of
|
|
151
|
+
// this route and its parents (NOT children).
|
|
152
|
+
withStaticParams(param1, param2) {
|
|
153
|
+
const clone = this.clone();
|
|
154
|
+
if (param2) {
|
|
155
|
+
const routeAbsPath = param1.absolutePath;
|
|
156
|
+
let current = clone;
|
|
157
|
+
while (current) {
|
|
158
|
+
if (current.absolutePath === routeAbsPath) {
|
|
159
|
+
current._staticParams = param2;
|
|
160
|
+
}
|
|
161
|
+
current = current._parent;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
clone._staticParams = param1;
|
|
166
|
+
}
|
|
167
|
+
return clone;
|
|
168
|
+
}
|
|
169
|
+
withQueryParams(queryParams) {
|
|
170
|
+
const clone = this.clone();
|
|
171
|
+
clone._queryParams = { ...queryParams };
|
|
172
|
+
return clone;
|
|
173
|
+
}
|
|
174
|
+
withStateParams(stateParams) {
|
|
175
|
+
const clone = this.clone();
|
|
176
|
+
clone._stateParams = { ...stateParams };
|
|
177
|
+
return clone;
|
|
178
|
+
}
|
|
179
|
+
// Returns Partial of object that only contains properties
|
|
180
|
+
// necessary to create this route.
|
|
181
|
+
extractRouteParams(row) {
|
|
182
|
+
const res = {};
|
|
183
|
+
this.orderedParams.forEach((param) => {
|
|
184
|
+
const mapping = this.paramMappings.find((m) => m.urlName === param);
|
|
185
|
+
const mappedParam = (mapping?.tableName ?? param);
|
|
186
|
+
if (mappedParam in row) {
|
|
187
|
+
res[mappedParam] = row[mappedParam];
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
return res;
|
|
191
|
+
}
|
|
192
|
+
// Returns new instance of Dp3Route<T> that is clone of
|
|
193
|
+
// this route and its parents (NOT children).
|
|
194
|
+
clone() {
|
|
195
|
+
const clone = new RdtRoute();
|
|
196
|
+
clone._name = this._name;
|
|
197
|
+
clone._parent = this._parent?.clone() ?? null;
|
|
198
|
+
clone._path = this.path;
|
|
199
|
+
clone._entryDisabled = this._entryDisabled;
|
|
200
|
+
clone.orderedParams = [...this.orderedParams];
|
|
201
|
+
clone._paramMap = { ...this._paramMap };
|
|
202
|
+
clone._regex = new RegExp(this._regex);
|
|
203
|
+
clone.paramMappings = this.paramMappings;
|
|
204
|
+
clone._staticParams = this._staticParams;
|
|
205
|
+
return clone;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9yZHQtcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUc5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFZLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE1BQU0sT0FBTyxRQUFRO0lBQ1QsYUFBYSxHQUFhLEVBQUUsQ0FBQztJQUM3QixTQUFTLEdBQW9CLEVBQUUsQ0FBQztJQUNoQyxNQUFNLENBQVU7SUFDaEIsYUFBYSxHQUFtQixFQUFFLENBQUM7SUFDbkMsYUFBYSxHQUFlLEVBQUUsQ0FBQztJQUMvQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLFlBQVksR0FBVyxFQUFFLENBQUM7SUFFMUIsS0FBSyxDQUFVO0lBQ2YsS0FBSyxDQUFVO0lBQ2YsT0FBTyxHQUFvQixJQUFJLENBQUM7SUFDaEMsU0FBUyxHQUFlLEVBQUUsQ0FBQztJQUMzQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLGFBQWEsR0FBa0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBRTVDLGNBQWMsQ0FBVTtJQUVoQyxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNB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SyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDOUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQyxLQUFLLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3hDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxLQUFLLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZHRTdHJpbmdVdGlscyB9IGZyb20gJ0BuZ3JkdC91dGlscyc7XHJcbmltcG9ydCB7IFN0YXRpY1JvdXRlUGFyYW1zLCBQYXJhbU1hcHBpbmcsIFBhcmFtVHlwZU1hcCB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSZHRBbmd1bGFyUm91dGUgfSBmcm9tICcuL3JkdC1hbmd1bGFyLXJvdXRlJztcclxuaW1wb3J0IHsgSW5qZWN0b3IsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+IHtcclxuICBwcm90ZWN0ZWQgb3JkZXJlZFBhcmFtczogc3RyaW5nW10gPSBbXTtcclxuICBwcm90ZWN0ZWQgX3BhcmFtTWFwOiBQYXJhbVR5cGVNYXA8VD4gPSB7fTtcclxuICBwcm90ZWN0ZWQgX3JlZ2V4ITogUmVnRXhwO1xyXG4gIHByb3RlY3RlZCBwYXJhbU1hcHBpbmdzOiBQYXJhbU1hcHBpbmdbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBfc3RhdGljUGFyYW1zOiBQYXJ0aWFsPFQ+ID0ge307XHJcbiAgcHJvdGVjdGVkIF9xdWVyeVBhcmFtczogUGFyYW1zID0ge307XHJcbiAgcHJvdGVjdGVkIF9zdGF0ZVBhcmFtczogUGFyYW1zID0ge307XHJcblxyXG4gIHByb3RlY3RlZCBfbmFtZSE6IHN0cmluZztcclxuICBwcm90ZWN0ZWQgX3BhdGghOiBzdHJpbmc7XHJcbiAgcHJvdGVjdGVkIF9wYXJlbnQ6IFJkdFJvdXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIF9jaGlsZHJlbjogUmR0Um91dGVbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBfZW50cnlEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCBfY2FuQmVFbnRlcmVkOiAoKSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBfYWJzb2x1dGVSZWdleD86IFJlZ0V4cDtcclxuXHJcbiAgZ2V0IHBhcmFtTWFwKCk6IFJlYWRvbmx5PFBhcmFtVHlwZU1hcDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtTWFwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcblxyXG4gIGdldCBwYXRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhdGg7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFyZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudDtcclxuICB9XHJcblxyXG4gIGdldCBjaGlsZHJlbigpIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbjtcclxuICB9XHJcblxyXG4gIGdldCBiYXNlUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudCA/IHRoaXMuX3BhcmVudC5hYnNvbHV0ZVBhdGggOiAnLyc7XHJcbiAgfVxyXG5cclxuICBnZXQgYWJzb2x1dGVQYXRoKCkge1xyXG4gICAgcmV0dXJuIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocyh0aGlzLmJhc2VQYXRoLCB0aGlzLl9wYXRoKTtcclxuICB9XHJcblxyXG4gIGdldCByZWdleCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9yZWdleDtcclxuICB9XHJcblxyXG4gIGdldCBhYnNvbHV0ZVJlZ2V4KCk6IFJlZ0V4cCB7XHJcbiAgICBpZiAodGhpcy5fYWJzb2x1dGVSZWdleCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYWJzb2x1dGVSZWdleDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5fcGFyZW50KSB7XHJcbiAgICAgIC8vIFJlbW92ZSBpbml0aWFsIF4gYW5kIGVuZGluZyAkXHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3BhcmVudC5hYnNvbHV0ZVJlZ2V4LnNvdXJjZS5zbGljZSgxLCAtMSk7XHJcbiAgICAgIHRoaXMuX2Fic29sdXRlUmVnZXggPSBuZXcgUmVnRXhwKFxyXG4gICAgICAgICdeJyArIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocyhwYXJlbnQsIHRoaXMuX3JlZ2V4LnNvdXJjZSkgKyAnJCdcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2Fic29sdXRlUmVnZXggPSBuZXcgUmVnRXhwKFxyXG4gICAgICAgICdeJyArIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocygnLycsIHRoaXMuX3JlZ2V4LnNvdXJjZSkgKyAnJCdcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9hYnNvbHV0ZVJlZ2V4O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVudHJ5RGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW50cnlEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIGdldCBzdGF0ZVBhcmFtcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9zdGF0ZVBhcmFtcztcclxuICB9XHJcblxyXG4gIGdldCBxdWVyeVBhcmFtcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtcztcclxuICB9XHJcblxyXG4gIHRlc3RVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmFic29sdXRlUmVnZXgudGVzdCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN0YXRpY1BhcmFtcygpIHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuX3N0YXRpY1BhcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgY2FuQmVFbnRlcmVkKGluamVjdG9yPzogSW5qZWN0b3IpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBpbmplY3RvclxyXG4gICAgICA/IHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgdGhpcy5fY2FuQmVFbnRlcmVkKVxyXG4gICAgICA6IHRoaXMuX2NhbkJlRW50ZXJlZCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gRXh0cmFjdHMgdXJsIHBhcmFtZXRlcnMgZnJvbSBhYnNvbHV0ZSB1cmwuXHJcbiAgcGFyc2VBYnNvbHV0ZVVybCh1cmw6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsIHtcclxuICAgIGNvbnN0IHJlZyA9IHRoaXMuYWJzb2x1dGVSZWdleDtcclxuICAgIGlmICghcmVnLnRlc3QodXJsKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IG1hdGNoZXMgPSByZWcuZXhlYyh1cmwpO1xyXG4gICAgaWYgKG1hdGNoZXMpIHtcclxuICAgICAgY29uc3QgdmFsdWVzID0gbWF0Y2hlcy5zbGljZSgxKS5yZXZlcnNlKCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpbGwodmFsdWVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxsKHZhbHVlczogc3RyaW5nW10sIHJlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KSB7XHJcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleSBpbiBrZXlvZiBUXT86IHN0cmluZyB8IG51bWJlciB9ID0ge307XHJcbiAgICBjb25zdCByZXZlcnNlZFBhcmFtcyA9IHRoaXMub3JkZXJlZFBhcmFtcy5zbGljZSgpLnJldmVyc2UoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV2ZXJzZWRQYXJhbXMubGVuZ3RoICYmIGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qga2V5ID0gcmV2ZXJzZWRQYXJhbXNbaV0gYXMga2V5b2YgVDtcclxuICAgICAgY29uc3QgbWFwcGVkS2V5ID1cclxuICAgICAgICB0aGlzLnBhcmFtTWFwcGluZ3MuZmluZCgobSkgPT4gbS51cmxOYW1lID09PSBrZXkpPy50YWJsZU5hbWUgPz8ga2V5O1xyXG4gICAgICBsZXQgdmFsOiBzdHJpbmcgfCBudW1iZXIgPSB2YWx1ZXNbaV07XHJcblxyXG4gICAgICBpZiAodGhpcy5fcGFyYW1NYXBba2V5XSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICB2YWwgPSBwYXJzZUludCh2YWwpO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtc1ttYXBwZWRLZXkgYXMga2V5b2YgVF0gPSB2YWw7XHJcbiAgICB9XHJcbiAgICByZXNbdGhpcy5hYnNvbHV0ZVBhdGhdID0gcGFyYW1zO1xyXG5cclxuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gcmV2ZXJzZWRQYXJhbXMubGVuZ3RoICYmIHRoaXMuX3BhcmVudCkge1xyXG4gICAgICB0aGlzLl9wYXJlbnQuZmlsbCh2YWx1ZXMuc2xpY2UocmV2ZXJzZWRQYXJhbXMubGVuZ3RoKSwgcmVzKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVBYnNvbHV0ZVVybChwYXJhbU1hcDogUGFydGlhbDxUPiA9IHRoaXMuX3N0YXRpY1BhcmFtcyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuX3BhcmVudCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVVcmwodGhpcy5hYnNvbHV0ZVBhdGgsIHBhcmFtTWFwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBSZHRTdHJpbmdVdGlscy5qb2luUGF0aHMoXHJcbiAgICAgICAgdGhpcy5fcGFyZW50LmNyZWF0ZUFic29sdXRlVXJsKCksXHJcbiAgICAgICAgdGhpcy5jcmVhdGVSZWxhdGl2ZVVybChwYXJhbU1hcClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZVJlbGF0aXZlVXJsKHBhcmFtTWFwOiBQYXJ0aWFsPFQ+ID0gdGhpcy5fc3RhdGljUGFyYW1zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVVcmwodGhpcy5wYXRoLCBwYXJhbU1hcCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVVybChwYXRoOiBzdHJpbmcsIHBhcmFtTWFwOiBQYXJ0aWFsPFQ+KSB7XHJcbiAgICBjb25zdCBwYXJhbU5hbWVzID0gT2JqZWN0LmtleXModGhpcy5fcGFyYW1NYXApO1xyXG4gICAgcGFyYW1OYW1lcy5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKTtcclxuICAgIGNvbnN0IGV4dGVuZGVkUGFyYW1NYXA6IGFueSA9IHsgLi4ucGFyYW1NYXAgfTtcclxuXHJcbiAgICB0aGlzLnBhcmFtTWFwcGluZ3MuZm9yRWFjaCgobWFwcGluZykgPT4ge1xyXG4gICAgICBpZiAobWFwcGluZy50YWJsZU5hbWUgaW4gcGFyYW1NYXApIHtcclxuICAgICAgICBleHRlbmRlZFBhcmFtTWFwW21hcHBpbmcudXJsTmFtZV0gPSAocGFyYW1NYXAgYXMgYW55KVtcclxuICAgICAgICAgIG1hcHBpbmcudGFibGVOYW1lXHJcbiAgICAgICAgXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcGFyYW1OYW1lcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xyXG4gICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKGA6JHtwYXJhbX1gLCBgJHtleHRlbmRlZFBhcmFtTWFwW3BhcmFtIGFzIGtleW9mIFRdfWApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbiAgfVxyXG5cclxuICB0b0FuZ3VsYXJSb3V0ZSgpIHtcclxuICAgIGlmICghdGhpcy5fcmVnZXgpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgaGF2ZSB0byBmaXJzdCBjYWxsIC5idWlsZCgpIG9uIHJvdXRlIScpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBSZHRBbmd1bGFyUm91dGU8VD4odGhpcyk7XHJcbiAgfVxyXG5cclxuICAvLyBQcm92aWRlcyBzdGF0aWMgbWFwcGluZyBmb3IgcGFyYW1ldGVyIG5hbWVzIHRhYmxlTmFtZSAtPiB1cmxOYW1lLlxyXG4gIC8vIFJldHVybnMgbmV3IGluc3RhbmNlIG9mIERwM1JvdXRlPFQ+IHRoYXQgaXMgY2xvbmUgb2ZcclxuICAvLyB0aGlzIHJvdXRlIGFuZCBpdHMgcGFyZW50cyAoTk9UIGNoaWxkcmVuKS5cclxuICB3aXRoUGFyYW1NYXBwaW5ncyhtYXBwaW5nczogUGFyYW1NYXBwaW5nW10pIHtcclxuICAgIGNvbnN0IGNsb25lID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgY2xvbmUucGFyYW1NYXBwaW5ncyA9IG1hcHBpbmdzO1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxuXHJcbiAgd2l0aFN0YXRpY1BhcmFtcyhwYXJhbXM6IFQpOiBSZHRSb3V0ZTxUPjtcclxuICB3aXRoU3RhdGljUGFyYW1zPFQyIGV4dGVuZHMgb2JqZWN0PihcclxuICAgIHJvdXRlOiBSZHRSb3V0ZTxUPixcclxuICAgIHBhcmFtczogVDJcclxuICApOiBSZHRSb3V0ZTxUPjtcclxuXHJcbiAgLy8gU2V0cyBzZWxlY3RlZCBwYXJhbWV0ZXJzIGZvciBpdHNlbGYgYW5kIHBhcmVudHMuXHJcbiAgLy8gUmV0dXJucyBuZXcgaW5zdGFuY2Ugb2YgRHAzUm91dGU8VD4gdGhhdCBpcyBjbG9uZSBvZlxyXG4gIC8vIHRoaXMgcm91dGUgYW5kIGl0cyBwYXJlbnRzIChOT1QgY2hpbGRyZW4pLlxyXG4gIHdpdGhTdGF0aWNQYXJhbXM8VDIgZXh0ZW5kcyBvYmplY3Q+KHBhcmFtMTogUmR0Um91dGU8VDI+IHwgVCwgcGFyYW0yPzogVDIpIHtcclxuICAgIGNvbnN0IGNsb25lID0gdGhpcy5jbG9uZSgpO1xyXG5cclxuICAgIGlmIChwYXJhbTIpIHtcclxuICAgICAgY29uc3Qgcm91dGVBYnNQYXRoID0gKHBhcmFtMSBhcyBSZHRSb3V0ZTxUMj4pLmFic29sdXRlUGF0aDtcclxuICAgICAgbGV0IGN1cnJlbnQ6IFJkdFJvdXRlIHwgbnVsbCA9IGNsb25lO1xyXG5cclxuICAgICAgd2hpbGUgKGN1cnJlbnQpIHtcclxuICAgICAgICBpZiAoY3VycmVudC5hYnNvbHV0ZVBhdGggPT09IHJvdXRlQWJzUGF0aCkge1xyXG4gICAgICAgICAgY3VycmVudC5fc3RhdGljUGFyYW1zID0gcGFyYW0yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudC5fcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjbG9uZS5fc3RhdGljUGFyYW1zID0gcGFyYW0xIGFzIFQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFBhcmFtcykge1xyXG4gICAgY29uc3QgY2xvbmUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICBjbG9uZS5fcXVlcnlQYXJhbXMgPSB7IC4uLnF1ZXJ5UGFyYW1zIH07XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICB3aXRoU3RhdGVQYXJhbXMoc3RhdGVQYXJhbXM6IFBhcmFtcykge1xyXG4gICAgY29uc3QgY2xvbmUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICBjbG9uZS5fc3RhdGVQYXJhbXMgPSB7IC4uLnN0YXRlUGFyYW1zIH07XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICAvLyBSZXR1cm5zIFBhcnRpYWwgb2Ygb2JqZWN0IHRoYXQgb25seSBjb250YWlucyBwcm9wZXJ0aWVzXHJcbiAgLy8gbmVjZXNzYXJ5IHRvIGNyZWF0ZSB0aGlzIHJvdXRlLlxyXG4gIGV4dHJhY3RSb3V0ZVBhcmFtcyhyb3c6IFQpOiBQYXJ0aWFsPFQ+IHtcclxuICAgIGNvbnN0IHJlczogUGFydGlhbDxUPiA9IHt9O1xyXG5cclxuICAgIHRoaXMub3JkZXJlZFBhcmFtcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xyXG4gICAgICBjb25zdCBtYXBwaW5nID0gdGhpcy5wYXJhbU1hcHBpbmdzLmZpbmQoKG0pID0+IG0udXJsTmFtZSA9PT0gcGFyYW0pO1xyXG4gICAgICBjb25zdCBtYXBwZWRQYXJhbSA9IChtYXBwaW5nPy50YWJsZU5hbWUgPz8gcGFyYW0pIGFzIGtleW9mIFQ7XHJcbiAgICAgIGlmIChtYXBwZWRQYXJhbSBpbiByb3cpIHtcclxuICAgICAgICByZXNbbWFwcGVkUGFyYW1dID0gcm93W21hcHBlZFBhcmFtXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIC8vIFJldHVybnMgbmV3IGluc3RhbmNlIG9mIERwM1JvdXRlPFQ+IHRoYXQgaXMgY2xvbmUgb2ZcclxuICAvLyB0aGlzIHJvdXRlIGFuZCBpdHMgcGFyZW50cyAoTk9UIGNoaWxkcmVuKS5cclxuICBjbG9uZSgpIHtcclxuICAgIGNvbnN0IGNsb25lID0gbmV3IFJkdFJvdXRlPFQ+KCk7XHJcbiAgICBjbG9uZS5fbmFtZSA9IHRoaXMuX25hbWU7XHJcbiAgICBjbG9uZS5fcGFyZW50ID0gdGhpcy5fcGFyZW50Py5jbG9uZSgpID8/IG51bGw7XHJcbiAgICBjbG9uZS5fcGF0aCA9IHRoaXMucGF0aDtcclxuICAgIGNsb25lLl9lbnRyeURpc2FibGVkID0gdGhpcy5fZW50cnlEaXNhYmxlZDtcclxuICAgIGNsb25lLm9yZGVyZWRQYXJhbXMgPSBbLi4udGhpcy5vcmRlcmVkUGFyYW1zXTtcclxuICAgIGNsb25lLl9wYXJhbU1hcCA9IHsgLi4udGhpcy5fcGFyYW1NYXAgfTtcclxuICAgIGNsb25lLl9yZWdleCA9IG5ldyBSZWdFeHAodGhpcy5fcmVnZXgpO1xyXG4gICAgY2xvbmUucGFyYW1NYXBwaW5ncyA9IHRoaXMucGFyYW1NYXBwaW5ncztcclxuICAgIGNsb25lLl9zdGF0aWNQYXJhbXMgPSB0aGlzLl9zdGF0aWNQYXJhbXM7XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBQYXJhbVR5cGVNYXA8VD4gPSB7XHJcbiAgW2tleSBpbiBrZXlvZiBUXT86ICdzdHJpbmcnIHwgJ251bWJlcic7XHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtTWFwcGluZyB7XHJcbiAgdXJsTmFtZTogc3RyaW5nO1xyXG4gIHRhYmxlTmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpY1JvdXRlUGFyYW1zIHtcclxuICBbYWJzb2x1dGVQYXRoOiBzdHJpbmddOiBvYmplY3Q7XHJcbn1cclxuIl19
|