@worktile/planet 18.0.1 → 19.0.0-next.0
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/CHANGELOG.md +15 -0
- package/fesm2022/worktile-planet.mjs +32 -32
- package/fesm2022/worktile-planet.mjs.map +1 -1
- package/package.json +3 -5
- package/esm2022/application/ng-planet-application-ref.mjs +0 -116
- package/esm2022/application/planet-application-loader.mjs +0 -459
- package/esm2022/application/planet-application-ref.mjs +0 -2
- package/esm2022/application/planet-application.service.mjs +0 -86
- package/esm2022/application/portal-application.mjs +0 -25
- package/esm2022/assets-loader.mjs +0 -304
- package/esm2022/component/planet-component-loader.mjs +0 -213
- package/esm2022/component/planet-component-outlet.mjs +0 -72
- package/esm2022/component/planet-component-types.mjs +0 -3
- package/esm2022/component/plant-component.config.mjs +0 -7
- package/esm2022/debug.mjs +0 -33
- package/esm2022/empty/empty.component.mjs +0 -17
- package/esm2022/global-event-dispatcher.mjs +0 -70
- package/esm2022/global-planet.mjs +0 -63
- package/esm2022/helpers.mjs +0 -185
- package/esm2022/inner-types.mjs +0 -2
- package/esm2022/module.mjs +0 -33
- package/esm2022/planet.class.mjs +0 -9
- package/esm2022/planet.mjs +0 -97
- package/esm2022/public-api.mjs +0 -19
- package/esm2022/router/route-redirect.mjs +0 -63
- package/esm2022/sandbox/constants.mjs +0 -7
- package/esm2022/sandbox/exec.mjs +0 -15
- package/esm2022/sandbox/index.mjs +0 -20
- package/esm2022/sandbox/proxy/patches/document.mjs +0 -12
- package/esm2022/sandbox/proxy/patches/eventListener.mjs +0 -41
- package/esm2022/sandbox/proxy/patches/index.mjs +0 -11
- package/esm2022/sandbox/proxy/patches/storage.mjs +0 -40
- package/esm2022/sandbox/proxy/patches/timer.mjs +0 -43
- package/esm2022/sandbox/proxy/proxies/common.mjs +0 -132
- package/esm2022/sandbox/proxy/proxies/document.mjs +0 -126
- package/esm2022/sandbox/proxy/proxies/window.mjs +0 -158
- package/esm2022/sandbox/proxy/proxy-sandbox.mjs +0 -49
- package/esm2022/sandbox/proxy/types.mjs +0 -2
- package/esm2022/sandbox/sandbox.mjs +0 -7
- package/esm2022/sandbox/snapshot/snapshot-sandbox.mjs +0 -12
- package/esm2022/sandbox/types.mjs +0 -2
- package/esm2022/worktile-planet.mjs +0 -5
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@worktile/planet",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "19.0.0-next.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"peerDependencies": {
|
|
6
|
-
"@angular/common": "^
|
|
7
|
-
"@angular/core": "^
|
|
6
|
+
"@angular/common": "^19.0.0",
|
|
7
|
+
"@angular/core": "^19.0.0"
|
|
8
8
|
},
|
|
9
9
|
"module": "fesm2022/worktile-planet.mjs",
|
|
10
10
|
"typings": "index.d.ts",
|
|
@@ -14,8 +14,6 @@
|
|
|
14
14
|
},
|
|
15
15
|
".": {
|
|
16
16
|
"types": "./index.d.ts",
|
|
17
|
-
"esm2022": "./esm2022/worktile-planet.mjs",
|
|
18
|
-
"esm": "./esm2022/worktile-planet.mjs",
|
|
19
17
|
"default": "./fesm2022/worktile-planet.mjs"
|
|
20
18
|
}
|
|
21
19
|
},
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { NgModuleRef, NgZone } from '@angular/core';
|
|
2
|
-
import { Router, NavigationEnd } from '@angular/router';
|
|
3
|
-
import { take } from 'rxjs/operators';
|
|
4
|
-
import { from } from 'rxjs';
|
|
5
|
-
import { getTagNameByTemplate } from '../helpers';
|
|
6
|
-
import { getSandboxInstance } from '../sandbox/';
|
|
7
|
-
export class NgPlanetApplicationRef {
|
|
8
|
-
get selector() {
|
|
9
|
-
return this.innerSelector;
|
|
10
|
-
}
|
|
11
|
-
get ngZone() {
|
|
12
|
-
return (this.injector || this.appModuleRef?.injector)?.get(NgZone);
|
|
13
|
-
}
|
|
14
|
-
get sandbox() {
|
|
15
|
-
return getSandboxInstance();
|
|
16
|
-
}
|
|
17
|
-
get bootstrapped() {
|
|
18
|
-
return !!(this.appModuleRef || this.appRef);
|
|
19
|
-
}
|
|
20
|
-
constructor(name, options) {
|
|
21
|
-
this.name = name;
|
|
22
|
-
if (options) {
|
|
23
|
-
this.template = options.template;
|
|
24
|
-
this.innerSelector = this.template ? getTagNameByTemplate(this.template) : '';
|
|
25
|
-
this.appModuleBootstrap = options.bootstrap;
|
|
26
|
-
}
|
|
27
|
-
// This is a hack, since NgZone doesn't allow you to configure the property that identifies your zone.
|
|
28
|
-
// See https://github.com/PlaceMe-SAS/single-spa-angular-cli/issues/33,
|
|
29
|
-
// NgZone.isInAngularZone = () => {
|
|
30
|
-
// // @ts-ignore
|
|
31
|
-
// return window.Zone.current._properties[`ngx-planet-${name}`] === true;
|
|
32
|
-
// };
|
|
33
|
-
}
|
|
34
|
-
// 子应用路由变化后同步修改 portal 的 Route
|
|
35
|
-
syncPortalRouteWhenNavigationEnd() {
|
|
36
|
-
const router = (this.injector || this.appModuleRef?.injector)?.get(Router);
|
|
37
|
-
if (router) {
|
|
38
|
-
router.events.subscribe(event => {
|
|
39
|
-
if (event instanceof NavigationEnd) {
|
|
40
|
-
const currentNavigation = router.getCurrentNavigation();
|
|
41
|
-
this.ngZone?.onStable
|
|
42
|
-
.asObservable()
|
|
43
|
-
.pipe(take(1))
|
|
44
|
-
.subscribe(() => {
|
|
45
|
-
this.portalApp.ngZone.run(() => {
|
|
46
|
-
if (currentNavigation?.extras?.browserUrl) {
|
|
47
|
-
this.portalApp.router.navigateByUrl(event.url, {
|
|
48
|
-
browserUrl: currentNavigation.extras.browserUrl
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
this.portalApp.router.navigateByUrl(event.url);
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
bootstrap(app) {
|
|
61
|
-
if (!this.appModuleBootstrap) {
|
|
62
|
-
throw new Error(`app(${this.name}) is not defined`);
|
|
63
|
-
}
|
|
64
|
-
this.portalApp = app;
|
|
65
|
-
return from(this.appModuleBootstrap(app).then(appModuleRef => {
|
|
66
|
-
if (appModuleRef['instance']) {
|
|
67
|
-
this.appModuleRef = appModuleRef;
|
|
68
|
-
this.appModuleRef.instance.appName = this.name;
|
|
69
|
-
this.injector = this.appModuleRef.injector;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
this.appRef = appModuleRef;
|
|
73
|
-
this.injector = this.appRef.injector;
|
|
74
|
-
const moduleRef = this.appRef.injector.get(NgModuleRef);
|
|
75
|
-
moduleRef.instance = { appName: this.name };
|
|
76
|
-
}
|
|
77
|
-
this.syncPortalRouteWhenNavigationEnd();
|
|
78
|
-
return this;
|
|
79
|
-
}));
|
|
80
|
-
}
|
|
81
|
-
getRouter() {
|
|
82
|
-
return (this.injector || this.appModuleRef?.injector)?.get(Router);
|
|
83
|
-
}
|
|
84
|
-
getCurrentRouterStateUrl() {
|
|
85
|
-
return this.getRouter()?.routerState.snapshot.url;
|
|
86
|
-
}
|
|
87
|
-
navigateByUrl(url, extras) {
|
|
88
|
-
const router = this.getRouter();
|
|
89
|
-
this.ngZone?.run(() => {
|
|
90
|
-
router?.navigateByUrl(url, extras);
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
getComponentFactory() {
|
|
94
|
-
return this.componentFactory;
|
|
95
|
-
}
|
|
96
|
-
registerComponentFactory(componentFactory) {
|
|
97
|
-
this.componentFactory = componentFactory;
|
|
98
|
-
}
|
|
99
|
-
destroy() {
|
|
100
|
-
if (this.appModuleRef || this.appRef) {
|
|
101
|
-
const router = (this.injector || this.appModuleRef?.injector)?.get(Router);
|
|
102
|
-
if (router) {
|
|
103
|
-
router.dispose();
|
|
104
|
-
}
|
|
105
|
-
if (this.sandbox) {
|
|
106
|
-
this.sandbox.destroy();
|
|
107
|
-
}
|
|
108
|
-
this.appModuleRef?.destroy();
|
|
109
|
-
this.appModuleRef = undefined;
|
|
110
|
-
this.appRef?.destroy();
|
|
111
|
-
this.appRef = undefined;
|
|
112
|
-
this.injector = undefined;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcGxhbmV0LWFwcGxpY2F0aW9uLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvYXBwbGljYXRpb24vbmctcGxhbmV0LWFwcGxpY2F0aW9uLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUE4QyxNQUFNLGlCQUFpQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQVcsTUFBTSxhQUFhLENBQUM7QUFxQjFELE1BQU0sT0FBTyxzQkFBc0I7SUFXL0IsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2QsT0FBTyxrQkFBa0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDbkIsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsWUFBWSxJQUFZLEVBQUUsT0FBMEI7UUFDaEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLElB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TUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDOUIsQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBOZ01vZHVsZVJlZiwgTmdab25lLCBFbnZpcm9ubWVudEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgTmF2aWdhdGlvbkJlaGF2aW9yT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGxhbmV0UG9ydGFsQXBwbGljYXRpb24gfSBmcm9tICcuL3BvcnRhbC1hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBQbGFudENvbXBvbmVudEZhY3RvcnkgfSBmcm9tICcuLi9jb21wb25lbnQvcGxhbmV0LWNvbXBvbmVudC10eXBlcyc7XG5pbXBvcnQgeyBnZXRUYWdOYW1lQnlUZW1wbGF0ZSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgZ2V0U2FuZGJveEluc3RhbmNlLCBTYW5kYm94IH0gZnJvbSAnLi4vc2FuZGJveC8nO1xuaW1wb3J0IHsgUGxhbmV0QXBwbGljYXRpb25SZWYgfSBmcm9tICcuL3BsYW5ldC1hcHBsaWNhdGlvbi1yZWYnO1xuXG5leHBvcnQgdHlwZSBOZ0Jvb3RzdHJhcEFwcE1vZHVsZSA9IChcbiAgICBwb3J0YWxBcHA6IFBsYW5ldFBvcnRhbEFwcGxpY2F0aW9uXG4pID0+IFByb21pc2U8TmdNb2R1bGVSZWY8YW55PiB8IHZvaWQgfCBBcHBsaWNhdGlvblJlZiB8IHVuZGVmaW5lZCB8IG51bGw+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5nQm9vdHN0cmFwT3B0aW9ucyB7XG4gICAgdGVtcGxhdGU6IHN0cmluZztcbiAgICBib290c3RyYXA6IE5nQm9vdHN0cmFwQXBwTW9kdWxlO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgTmdCb290c3RyYXBBcHBNb2R1bGVcbiAqL1xuZXhwb3J0IHR5cGUgQm9vdHN0cmFwQXBwTW9kdWxlID0gTmdCb290c3RyYXBBcHBNb2R1bGU7XG4vKipcbiAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgTmdCb290c3RyYXBPcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm9vdHN0cmFwT3B0aW9ucyBleHRlbmRzIE5nQm9vdHN0cmFwT3B0aW9ucyB7fVxuXG5leHBvcnQgY2xhc3MgTmdQbGFuZXRBcHBsaWNhdGlvblJlZiBpbXBsZW1lbnRzIFBsYW5ldEFwcGxpY2F0aW9uUmVmIHtcbiAgICBwcml2YXRlIGluamVjdG9yPzogRW52aXJvbm1lbnRJbmplY3RvcjtcbiAgICBwcml2YXRlIGFwcFJlZj86IEFwcGxpY2F0aW9uUmVmO1xuICAgIHB1YmxpYyBhcHBNb2R1bGVSZWY/OiBOZ01vZHVsZVJlZjxhbnk+O1xuICAgIHB1YmxpYyB0ZW1wbGF0ZT86IHN0cmluZztcbiAgICBwcml2YXRlIGlubmVyU2VsZWN0b3I/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBwb3J0YWxBcHAhOiBQbGFuZXRQb3J0YWxBcHBsaWNhdGlvbjtcbiAgICBwcml2YXRlIGFwcE1vZHVsZUJvb3RzdHJhcD86IE5nQm9vdHN0cmFwQXBwTW9kdWxlO1xuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeT86IFBsYW50Q29tcG9uZW50RmFjdG9yeTtcblxuICAgIHB1YmxpYyBnZXQgc2VsZWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyU2VsZWN0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuZ1pvbmUoKTogTmdab25lIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmluamVjdG9yIHx8IHRoaXMuYXBwTW9kdWxlUmVmPy5pbmplY3Rvcik/LmdldChOZ1pvbmUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2FuZGJveCgpOiBTYW5kYm94IHtcbiAgICAgICAgcmV0dXJuIGdldFNhbmRib3hJbnN0YW5jZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vdHN0cmFwcGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5hcHBNb2R1bGVSZWYgfHwgdGhpcy5hcHBSZWYpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgb3B0aW9ucz86IEJvb3RzdHJhcE9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGUgPSBvcHRpb25zLnRlbXBsYXRlO1xuICAgICAgICAgICAgdGhpcy5pbm5lclNlbGVjdG9yID0gdGhpcy50ZW1wbGF0ZSA/IGdldFRhZ05hbWVCeVRlbXBsYXRlKHRoaXMudGVtcGxhdGUpIDogJyc7XG4gICAgICAgICAgICB0aGlzLmFwcE1vZHVsZUJvb3RzdHJhcCA9IG9wdGlvbnMuYm9vdHN0cmFwO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgaXMgYSBoYWNrLCBzaW5jZSBOZ1pvbmUgZG9lc24ndCBhbGxvdyB5b3UgdG8gY29uZmlndXJlIHRoZSBwcm9wZXJ0eSB0aGF0IGlkZW50aWZpZXMgeW91ciB6b25lLlxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL1BsYWNlTWUtU0FTL3NpbmdsZS1zcGEtYW5ndWxhci1jbGkvaXNzdWVzLzMzLFxuICAgICAgICAvLyBOZ1pvbmUuaXNJbkFuZ3VsYXJab25lID0gKCkgPT4ge1xuICAgICAgICAvLyAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAvLyAgICAgcmV0dXJuIHdpbmRvdy5ab25lLmN1cnJlbnQuX3Byb3BlcnRpZXNbYG5neC1wbGFuZXQtJHtuYW1lfWBdID09PSB0cnVlO1xuICAgICAgICAvLyB9O1xuICAgIH1cblxuICAgIC8vIOWtkOW6lOeUqOi3r+eUseWPmOWMluWQjuWQjOatpeS/ruaUuSBwb3J0YWwg55qEIFJvdXRlXG4gICAgcHJpdmF0ZSBzeW5jUG9ydGFsUm91dGVXaGVuTmF2aWdhdGlvbkVuZCgpIHtcbiAgICAgICAgY29uc3Qgcm91dGVyID0gKHRoaXMuaW5qZWN0b3IgfHwgdGhpcy5hcHBNb2R1bGVSZWY/LmluamVjdG9yKT8uZ2V0KFJvdXRlcik7XG4gICAgICAgIGlmIChyb3V0ZXIpIHtcbiAgICAgICAgICAgIHJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnROYXZpZ2F0aW9uID0gcm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lPy5vblN0YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0YWxBcHAubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50TmF2aWdhdGlvbj8uZXh0cmFzPy5icm93c2VyVXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcnRhbEFwcC5yb3V0ZXIhLm5hdmlnYXRlQnlVcmwoZXZlbnQudXJsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3NlclVybDogY3VycmVudE5hdmlnYXRpb24uZXh0cmFzLmJyb3dzZXJVcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3J0YWxBcHAucm91dGVyIS5uYXZpZ2F0ZUJ5VXJsKGV2ZW50LnVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYm9vdHN0cmFwKGFwcDogUGxhbmV0UG9ydGFsQXBwbGljYXRpb24pOiBPYnNlcnZhYmxlPHRoaXM+IHtcbiAgICAgICAgaWYgKCF0aGlzLmFwcE1vZHVsZUJvb3RzdHJhcCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBhcHAoJHt0aGlzLm5hbWV9KSBpcyBub3QgZGVmaW5lZGApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9ydGFsQXBwID0gYXBwO1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIHRoaXMuYXBwTW9kdWxlQm9vdHN0cmFwKGFwcCkudGhlbihhcHBNb2R1bGVSZWYgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhcHBNb2R1bGVSZWZbJ2luc3RhbmNlJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVSZWYgPSBhcHBNb2R1bGVSZWYgYXMgTmdNb2R1bGVSZWY8YW55PjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVSZWYuaW5zdGFuY2UuYXBwTmFtZSA9IHRoaXMubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RvciA9IHRoaXMuYXBwTW9kdWxlUmVmLmluamVjdG9yO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwUmVmID0gYXBwTW9kdWxlUmVmIGFzIHVua25vd24gYXMgQXBwbGljYXRpb25SZWY7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IgPSB0aGlzLmFwcFJlZi5pbmplY3RvcjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlUmVmID0gdGhpcy5hcHBSZWYuaW5qZWN0b3IuZ2V0KE5nTW9kdWxlUmVmKTtcbiAgICAgICAgICAgICAgICAgICAgKG1vZHVsZVJlZiBhcyBhbnkpLmluc3RhbmNlID0geyBhcHBOYW1lOiB0aGlzLm5hbWUgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jUG9ydGFsUm91dGVXaGVuTmF2aWdhdGlvbkVuZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRSb3V0ZXIoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5pbmplY3RvciB8fCB0aGlzLmFwcE1vZHVsZVJlZj8uaW5qZWN0b3IpPy5nZXQoUm91dGVyKTtcbiAgICB9XG5cbiAgICBnZXRDdXJyZW50Um91dGVyU3RhdGVVcmwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFJvdXRlcigpPy5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmw7XG4gICAgfVxuXG4gICAgbmF2aWdhdGVCeVVybCh1cmw6IHN0cmluZywgZXh0cmFzPzogTmF2aWdhdGlvbkJlaGF2aW9yT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBjb25zdCByb3V0ZXIgPSB0aGlzLmdldFJvdXRlcigpO1xuICAgICAgICB0aGlzLm5nWm9uZT8ucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHJvdXRlcj8ubmF2aWdhdGVCeVVybCh1cmwsIGV4dHJhcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldENvbXBvbmVudEZhY3RvcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudEZhY3Rvcnk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudEZhY3Rvcnk6IFBsYW50Q29tcG9uZW50RmFjdG9yeSkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRGYWN0b3J5O1xuICAgIH1cblxuICAgIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFwcE1vZHVsZVJlZiB8fCB0aGlzLmFwcFJlZikge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyID0gKHRoaXMuaW5qZWN0b3IgfHwgdGhpcy5hcHBNb2R1bGVSZWY/LmluamVjdG9yKT8uZ2V0KFJvdXRlcik7XG4gICAgICAgICAgICBpZiAocm91dGVyKSB7XG4gICAgICAgICAgICAgICAgcm91dGVyLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNhbmRib3gpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhbmRib3guZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVSZWY/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuYXBwTW9kdWxlUmVmID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5hcHBSZWY/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuYXBwUmVmID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5pbmplY3RvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|