@worktile/planet 16.0.0-next.0 → 17.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 +14 -0
- package/application/ng-planet-application-ref.d.ts +48 -0
- package/application/ng-planet-application-ref.d.ts.map +1 -0
- package/application/planet-application-ref.d.ts +3 -27
- package/application/planet-application-ref.d.ts.map +1 -1
- package/component/planet-component-loader.d.ts.map +1 -1
- package/component/planet-component-outlet.d.ts +1 -1
- package/esm2022/application/ng-planet-application-ref.mjs +106 -0
- package/esm2022/application/planet-application-loader.mjs +454 -0
- package/esm2022/application/planet-application-ref.mjs +2 -0
- package/esm2022/application/planet-application.service.mjs +85 -0
- package/esm2022/assets-loader.mjs +216 -0
- package/esm2022/component/planet-component-loader.mjs +171 -0
- package/esm2022/component/planet-component-outlet.mjs +69 -0
- package/esm2022/debug.mjs +33 -0
- package/{esm2020 → esm2022}/empty/empty.component.mjs +4 -4
- package/esm2022/global-event-dispatcher.mjs +70 -0
- package/esm2022/global-planet.mjs +63 -0
- package/esm2022/helpers.mjs +119 -0
- package/esm2022/module.mjs +33 -0
- package/esm2022/planet.mjs +91 -0
- package/esm2022/public-api.mjs +19 -0
- package/esm2022/router/route-redirect.mjs +63 -0
- package/{esm2020 → esm2022}/sandbox/index.mjs +1 -1
- package/esm2022/sandbox/proxy/patches/eventListener.mjs +41 -0
- package/esm2022/sandbox/proxy/proxies/common.mjs +132 -0
- package/esm2022/sandbox/proxy/proxies/document.mjs +126 -0
- package/esm2022/sandbox/proxy/proxies/window.mjs +158 -0
- package/esm2022/sandbox/proxy/proxy-sandbox.mjs +49 -0
- package/esm2022/sandbox/snapshot/snapshot-sandbox.mjs +12 -0
- package/{fesm2020 → fesm2022}/worktile-planet.mjs +96 -73
- package/fesm2022/worktile-planet.mjs.map +1 -0
- package/global-planet.d.ts +4 -2
- package/global-planet.d.ts.map +1 -1
- package/package.json +7 -13
- package/sandbox/proxy/patches/eventListener.d.ts.map +1 -1
- package/sandbox/proxy/proxy-sandbox.d.ts.map +1 -1
- package/sandbox/snapshot/snapshot-sandbox.d.ts.map +1 -1
- package/esm2020/application/planet-application-loader.mjs +0 -454
- package/esm2020/application/planet-application-ref.mjs +0 -94
- package/esm2020/application/planet-application.service.mjs +0 -85
- package/esm2020/assets-loader.mjs +0 -216
- package/esm2020/component/planet-component-loader.mjs +0 -170
- package/esm2020/component/planet-component-outlet.mjs +0 -69
- package/esm2020/debug.mjs +0 -33
- package/esm2020/global-event-dispatcher.mjs +0 -70
- package/esm2020/global-planet.mjs +0 -53
- package/esm2020/helpers.mjs +0 -119
- package/esm2020/module.mjs +0 -33
- package/esm2020/planet.mjs +0 -91
- package/esm2020/public-api.mjs +0 -20
- package/esm2020/router/route-redirect.mjs +0 -63
- package/esm2020/sandbox/proxy/patches/eventListener.mjs +0 -41
- package/esm2020/sandbox/proxy/proxies/common.mjs +0 -132
- package/esm2020/sandbox/proxy/proxies/document.mjs +0 -126
- package/esm2020/sandbox/proxy/proxies/window.mjs +0 -158
- package/esm2020/sandbox/proxy/proxy-sandbox.mjs +0 -49
- package/esm2020/sandbox/snapshot/snapshot-sandbox.mjs +0 -12
- package/fesm2015/worktile-planet.mjs +0 -2193
- package/fesm2015/worktile-planet.mjs.map +0 -1
- package/fesm2020/worktile-planet.mjs.map +0 -1
- /package/{esm2020 → esm2022}/application/portal-application.mjs +0 -0
- /package/{esm2020 → esm2022}/component/planet-component-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/component/plant-component.config.mjs +0 -0
- /package/{esm2020 → esm2022}/planet.class.mjs +0 -0
- /package/{esm2020 → esm2022}/sandbox/constants.mjs +0 -0
- /package/{esm2020 → esm2022}/sandbox/exec.mjs +0 -0
- /package/{esm2020 → esm2022}/sandbox/proxy/patches/document.mjs +0 -0
- /package/{esm2020 → esm2022}/sandbox/proxy/patches/index.mjs +0 -0
- /package/{esm2020 → esm2022}/sandbox/proxy/patches/storage.mjs +0 -0
- /package/{esm2020 → esm2022}/sandbox/proxy/patches/timer.mjs +0 -0
- /package/{esm2020 → esm2022}/sandbox/proxy/types.mjs +0 -0
- /package/{esm2020 → esm2022}/sandbox/sandbox.mjs +0 -0
- /package/{esm2020 → esm2022}/sandbox/types.mjs +0 -0
- /package/{esm2020 → esm2022}/worktile-planet.mjs +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
# [17.0.0-next.0](https://github.com/worktile/ngx-planet/compare/16.0.0...17.0.0-next.0) (2024-03-08)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* support load standalone app #INFR-11810 ([#305](https://github.com/worktile/ngx-planet/issues/305)) ([9a750ad](https://github.com/worktile/ngx-planet/commit/9a750ad15c4c036640ee44861ca1b8698bec7e3a)), closes [#INFR-11810](https://github.com/worktile/ngx-planet/issues/INFR-11810)
|
|
11
|
+
* upgrade ng to 17 ([#302](https://github.com/worktile/ngx-planet/issues/302)) ([acc1525](https://github.com/worktile/ngx-planet/commit/acc152587860f65551fde5c7b73a056d8b543f47))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# [16.0.0](https://github.com/worktile/ngx-planet/compare/16.0.0-next.0...16.0.0) (2023-08-22)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
5
19
|
# [16.0.0-next.0](https://github.com/worktile/ngx-planet/compare/15.0.0...16.0.0-next.0) (2023-08-10)
|
|
6
20
|
|
|
7
21
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ApplicationRef, NgModuleRef, NgZone } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { PlanetPortalApplication } from './portal-application';
|
|
5
|
+
import { PlantComponentConfig } from '../component/plant-component.config';
|
|
6
|
+
import { PlanetComponentRef } from '../component/planet-component-ref';
|
|
7
|
+
import { Sandbox } from '../sandbox/';
|
|
8
|
+
import { PlanetApplicationRef } from './planet-application-ref';
|
|
9
|
+
export type NgBootstrapAppModule = (portalApp: PlanetPortalApplication) => Promise<NgModuleRef<any> | void | ApplicationRef | undefined | null>;
|
|
10
|
+
export interface NgBootstrapOptions {
|
|
11
|
+
template: string;
|
|
12
|
+
bootstrap: NgBootstrapAppModule;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated please use NgBootstrapAppModule
|
|
16
|
+
*/
|
|
17
|
+
export type BootstrapAppModule = NgBootstrapAppModule;
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated please use NgBootstrapOptions
|
|
20
|
+
*/
|
|
21
|
+
export interface BootstrapOptions extends NgBootstrapOptions {
|
|
22
|
+
}
|
|
23
|
+
export type PlantComponentFactory = <TData, TComp>(componentName: string, config: PlantComponentConfig<TData>) => PlanetComponentRef<TComp>;
|
|
24
|
+
export declare class NgPlanetApplicationRef implements PlanetApplicationRef {
|
|
25
|
+
private injector?;
|
|
26
|
+
private appRef?;
|
|
27
|
+
appModuleRef?: NgModuleRef<any>;
|
|
28
|
+
template?: string;
|
|
29
|
+
private innerSelector?;
|
|
30
|
+
private name;
|
|
31
|
+
private portalApp;
|
|
32
|
+
private appModuleBootstrap?;
|
|
33
|
+
private componentFactory?;
|
|
34
|
+
get selector(): string;
|
|
35
|
+
get ngZone(): NgZone | undefined;
|
|
36
|
+
get sandbox(): Sandbox;
|
|
37
|
+
get bootstrapped(): boolean;
|
|
38
|
+
constructor(name: string, options?: BootstrapOptions);
|
|
39
|
+
private syncPortalRouteWhenNavigationEnd;
|
|
40
|
+
bootstrap(app: PlanetPortalApplication): Observable<this>;
|
|
41
|
+
getRouter(): Router;
|
|
42
|
+
getCurrentRouterStateUrl(): string;
|
|
43
|
+
navigateByUrl(url: string): void;
|
|
44
|
+
getComponentFactory(): PlantComponentFactory;
|
|
45
|
+
registerComponentFactory(componentFactory: PlantComponentFactory): void;
|
|
46
|
+
destroy(): void;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=ng-planet-application-ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ng-planet-application-ref.d.ts","sourceRoot":"","sources":["../../../packages/planet/src/application/ng-planet-application-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAuB,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAQ,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EAAsB,OAAO,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,MAAM,oBAAoB,GAAG,CAC/B,SAAS,EAAE,uBAAuB,KACjC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,cAAc,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,oBAAoB,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AACtD;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;CAAG;AAE/D,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAE5I,qBAAa,sBAAuB,YAAW,oBAAoB;IAC/D,OAAO,CAAC,QAAQ,CAAC,CAAsB;IACvC,OAAO,CAAC,MAAM,CAAC,CAAiB;IACzB,YAAY,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,kBAAkB,CAAC,CAAuB;IAClD,OAAO,CAAC,gBAAgB,CAAC,CAAwB;IAEjD,IAAW,QAAQ,WAElB;IAED,IAAW,MAAM,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,YAAY,IAAI,OAAO,CAEjC;gBAEW,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAgBpD,OAAO,CAAC,gCAAgC;IAgBxC,SAAS,CAAC,GAAG,EAAE,uBAAuB,GAAG,UAAU,CAAC,IAAI,CAAC;IAuBzD,SAAS;IAIT,wBAAwB;IAIxB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOhC,mBAAmB;IAInB,wBAAwB,CAAC,gBAAgB,EAAE,qBAAqB;IAIhE,OAAO,IAAI,IAAI;CAgBlB"}
|
|
@@ -1,36 +1,12 @@
|
|
|
1
|
-
import { NgModuleRef, NgZone } from '@angular/core';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
1
|
import { Observable } from 'rxjs';
|
|
4
2
|
import { PlanetPortalApplication } from './portal-application';
|
|
5
|
-
|
|
6
|
-
import { PlanetComponentRef } from '../component/planet-component-ref';
|
|
7
|
-
import { Sandbox } from '../sandbox/';
|
|
8
|
-
export interface BootstrapOptions {
|
|
9
|
-
template: string;
|
|
10
|
-
bootstrap: BootstrapAppModule;
|
|
11
|
-
}
|
|
12
|
-
export type BootstrapAppModule = (portalApp: PlanetPortalApplication) => Promise<NgModuleRef<any> | undefined | null>;
|
|
13
|
-
export type PlantComponentFactory = <TData, TComp>(componentName: string, config: PlantComponentConfig<TData>) => PlanetComponentRef<TComp>;
|
|
14
|
-
export declare class PlanetApplicationRef {
|
|
15
|
-
appModuleRef?: NgModuleRef<any>;
|
|
3
|
+
export interface PlanetApplicationRef {
|
|
16
4
|
template?: string;
|
|
17
|
-
private innerSelector?;
|
|
18
|
-
private name;
|
|
19
|
-
private portalApp;
|
|
20
|
-
private appModuleBootstrap?;
|
|
21
|
-
private componentFactory?;
|
|
22
|
-
get selector(): string;
|
|
23
5
|
get bootstrapped(): boolean;
|
|
24
|
-
get
|
|
25
|
-
get sandbox(): Sandbox;
|
|
26
|
-
constructor(name: string, options?: BootstrapOptions);
|
|
27
|
-
private syncPortalRouteWhenNavigationEnd;
|
|
6
|
+
get selector(): string;
|
|
28
7
|
bootstrap(app: PlanetPortalApplication): Observable<this>;
|
|
29
|
-
getRouter(): Router;
|
|
30
|
-
getCurrentRouterStateUrl(): string;
|
|
31
8
|
navigateByUrl(url: string): void;
|
|
32
|
-
|
|
33
|
-
registerComponentFactory(componentFactory: PlantComponentFactory): void;
|
|
9
|
+
getCurrentRouterStateUrl(): string;
|
|
34
10
|
destroy(): void;
|
|
35
11
|
}
|
|
36
12
|
//# sourceMappingURL=planet-application-ref.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planet-application-ref.d.ts","sourceRoot":"","sources":["../../../packages/planet/src/application/planet-application-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"planet-application-ref.d.ts","sourceRoot":"","sources":["../../../packages/planet/src/application/planet-application-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,YAAY,IAAI,OAAO,CAAC;IAC5B,IAAI,QAAQ,IAAI,MAAM,CAAC;IACvB,SAAS,CAAC,GAAG,EAAE,uBAAuB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1D,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,wBAAwB,IAAI,MAAM,CAAC;IACnC,OAAO,IAAI,IAAI,CAAC;CACnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planet-component-loader.d.ts","sourceRoot":"","sources":["../../../packages/planet/src/component/planet-component-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,cAAc,EACd,WAAW,EACX,MAAM,EAKN,IAAI,
|
|
1
|
+
{"version":3,"file":"planet-component-loader.d.ts","sourceRoot":"","sources":["../../../packages/planet/src/component/planet-component-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,cAAc,EACd,WAAW,EACX,MAAM,EAKN,IAAI,EAKP,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,EAAM,UAAU,EAAS,MAAM,MAAM,CAAC;;AAgB7C,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,OAAO,IACjC;IACI,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CACtB,GACD,IAAI,CAAC,CAAC,CAAC,CAAC;AAEd,qBAGa,qBAAqB;IAU1B,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACI,OAAO,CAAC,QAAQ;IAZtC,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,kBAAkB,GAE7B;gBAGW,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAC7B,MAAM,EAAE,MAAM,EACI,QAAQ,EAAE,GAAG;IAG3C,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kCAAkC;IAkB1C,OAAO,CAAC,eAAe;IAgCvB,+DAA+D;IAC/D,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,wBAAwB;IA0BhC,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,eAAe,EAAE;IAMxD,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EACjC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,GACpC,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;yCAjJ/B,qBAAqB;6CAArB,qBAAqB;CAwKjC"}
|
|
@@ -19,6 +19,6 @@ export declare class PlanetComponentOutlet implements OnChanges, OnDestroy, Afte
|
|
|
19
19
|
ngOnDestroy(): void;
|
|
20
20
|
clear(): void;
|
|
21
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<PlanetComponentOutlet, never>;
|
|
22
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<PlanetComponentOutlet, "[planetComponentOutlet]", never, { "planetComponentOutlet": "planetComponentOutlet"; "planetComponentOutletApp": "planetComponentOutletApp"; "planetComponentOutletInitialState": "planetComponentOutletInitialState"; }, { "planetComponentLoaded": "planetComponentLoaded"; }, never, never, true, never>;
|
|
22
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<PlanetComponentOutlet, "[planetComponentOutlet]", never, { "planetComponentOutlet": { "alias": "planetComponentOutlet"; "required": false; }; "planetComponentOutletApp": { "alias": "planetComponentOutletApp"; "required": false; }; "planetComponentOutletInitialState": { "alias": "planetComponentOutletInitialState"; "required": false; }; }, { "planetComponentLoaded": "planetComponentLoaded"; }, never, never, true, never>;
|
|
23
23
|
}
|
|
24
24
|
//# sourceMappingURL=planet-component-outlet.d.ts.map
|
|
@@ -0,0 +1,106 @@
|
|
|
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
|
+
this.ngZone?.onStable
|
|
41
|
+
.asObservable()
|
|
42
|
+
.pipe(take(1))
|
|
43
|
+
.subscribe(() => {
|
|
44
|
+
this.portalApp.router.navigateByUrl(event.url);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
bootstrap(app) {
|
|
51
|
+
if (!this.appModuleBootstrap) {
|
|
52
|
+
throw new Error(`app(${this.name}) is not defined`);
|
|
53
|
+
}
|
|
54
|
+
this.portalApp = app;
|
|
55
|
+
return from(this.appModuleBootstrap(app).then(appModuleRef => {
|
|
56
|
+
if (appModuleRef['instance']) {
|
|
57
|
+
this.appModuleRef = appModuleRef;
|
|
58
|
+
this.appModuleRef.instance.appName = this.name;
|
|
59
|
+
this.injector = this.appModuleRef.injector;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.appRef = appModuleRef;
|
|
63
|
+
this.injector = this.appRef.injector;
|
|
64
|
+
const moduleRef = this.appRef.injector.get(NgModuleRef);
|
|
65
|
+
moduleRef.instance = { appName: this.name };
|
|
66
|
+
}
|
|
67
|
+
this.syncPortalRouteWhenNavigationEnd();
|
|
68
|
+
return this;
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
getRouter() {
|
|
72
|
+
return (this.injector || this.appModuleRef?.injector)?.get(Router);
|
|
73
|
+
}
|
|
74
|
+
getCurrentRouterStateUrl() {
|
|
75
|
+
return this.getRouter()?.routerState.snapshot.url;
|
|
76
|
+
}
|
|
77
|
+
navigateByUrl(url) {
|
|
78
|
+
const router = this.getRouter();
|
|
79
|
+
this.ngZone?.run(() => {
|
|
80
|
+
router?.navigateByUrl(url);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
getComponentFactory() {
|
|
84
|
+
return this.componentFactory;
|
|
85
|
+
}
|
|
86
|
+
registerComponentFactory(componentFactory) {
|
|
87
|
+
this.componentFactory = componentFactory;
|
|
88
|
+
}
|
|
89
|
+
destroy() {
|
|
90
|
+
if (this.appModuleRef || this.appRef) {
|
|
91
|
+
const router = (this.injector || this.appModuleRef?.injector)?.get(Router);
|
|
92
|
+
if (router) {
|
|
93
|
+
router.dispose();
|
|
94
|
+
}
|
|
95
|
+
if (this.sandbox) {
|
|
96
|
+
this.sandbox.destroy();
|
|
97
|
+
}
|
|
98
|
+
this.appModuleRef?.destroy();
|
|
99
|
+
this.appModuleRef = undefined;
|
|
100
|
+
this.appRef?.destroy();
|
|
101
|
+
this.appRef = undefined;
|
|
102
|
+
this.injector = undefined;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcGxhbmV0LWFwcGxpY2F0aW9uLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvYXBwbGljYXRpb24vbmctcGxhbmV0LWFwcGxpY2F0aW9uLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJeEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBVyxNQUFNLGFBQWEsQ0FBQztBQXVCMUQsTUFBTSxPQUFPLHNCQUFzQjtJQVcvQixJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLGtCQUFrQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxZQUFZLElBQVksRUFBRSxPQUEwQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDaEQsQ0FBQztRQUNELHNHQUFzRztRQUN0Ryx1RUFBdUU7UUFDdkUsbUNBQW1DO1FBQ25DLG9CQUFvQjtRQUNwQiw2RUFBNkU7UUFDN0UsS0FBSztJQUNULENBQUM7SUFFRCw4QkFBOEI7SUFDdEIsZ0NBQWdDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzVCLElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVE7eUJBQ2hCLFlBQVksRUFBRTt5QkFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUNiLFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDcEQsQ0FBQyxDQUFDLENBQUM7Z0JBQ1gsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBNEI7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNyQixPQUFPLElBQUksQ0FDUCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzdDLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBZ0MsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDL0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBeUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztnQkFDckMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN2RCxTQUFpQixDQUFDLFFBQVEsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekQsQ0FBQztZQUNELElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUztRQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCx3QkFBd0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDdEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFXO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDbEIsTUFBTSxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxtQkFBbUI7UUFDZixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsd0JBQXdCLENBQUMsZ0JBQXVDO1FBQzVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUM3QyxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNFLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDOUIsQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBOZ01vZHVsZVJlZiwgTmdab25lLCBFbnZpcm9ubWVudEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBsYW5ldFBvcnRhbEFwcGxpY2F0aW9uIH0gZnJvbSAnLi9wb3J0YWwtYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgUGxhbnRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi9jb21wb25lbnQvcGxhbnQtY29tcG9uZW50LmNvbmZpZyc7XG5pbXBvcnQgeyBQbGFuZXRDb21wb25lbnRSZWYgfSBmcm9tICcuLi9jb21wb25lbnQvcGxhbmV0LWNvbXBvbmVudC1yZWYnO1xuaW1wb3J0IHsgZ2V0VGFnTmFtZUJ5VGVtcGxhdGUgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IGdldFNhbmRib3hJbnN0YW5jZSwgU2FuZGJveCB9IGZyb20gJy4uL3NhbmRib3gvJztcbmltcG9ydCB7IFBsYW5ldEFwcGxpY2F0aW9uUmVmIH0gZnJvbSAnLi9wbGFuZXQtYXBwbGljYXRpb24tcmVmJztcblxuZXhwb3J0IHR5cGUgTmdCb290c3RyYXBBcHBNb2R1bGUgPSAoXG4gICAgcG9ydGFsQXBwOiBQbGFuZXRQb3J0YWxBcHBsaWNhdGlvblxuKSA9PiBQcm9taXNlPE5nTW9kdWxlUmVmPGFueT4gfCB2b2lkIHwgQXBwbGljYXRpb25SZWYgfCB1bmRlZmluZWQgfCBudWxsPjtcblxuZXhwb3J0IGludGVyZmFjZSBOZ0Jvb3RzdHJhcE9wdGlvbnMge1xuICAgIHRlbXBsYXRlOiBzdHJpbmc7XG4gICAgYm9vdHN0cmFwOiBOZ0Jvb3RzdHJhcEFwcE1vZHVsZTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIE5nQm9vdHN0cmFwQXBwTW9kdWxlXG4gKi9cbmV4cG9ydCB0eXBlIEJvb3RzdHJhcEFwcE1vZHVsZSA9IE5nQm9vdHN0cmFwQXBwTW9kdWxlO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIE5nQm9vdHN0cmFwT3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcE9wdGlvbnMgZXh0ZW5kcyBOZ0Jvb3RzdHJhcE9wdGlvbnMge31cblxuZXhwb3J0IHR5cGUgUGxhbnRDb21wb25lbnRGYWN0b3J5ID0gPFREYXRhLCBUQ29tcD4oY29tcG9uZW50TmFtZTogc3RyaW5nLCBjb25maWc6IFBsYW50Q29tcG9uZW50Q29uZmlnPFREYXRhPikgPT4gUGxhbmV0Q29tcG9uZW50UmVmPFRDb21wPjtcblxuZXhwb3J0IGNsYXNzIE5nUGxhbmV0QXBwbGljYXRpb25SZWYgaW1wbGVtZW50cyBQbGFuZXRBcHBsaWNhdGlvblJlZiB7XG4gICAgcHJpdmF0ZSBpbmplY3Rvcj86IEVudmlyb25tZW50SW5qZWN0b3I7XG4gICAgcHJpdmF0ZSBhcHBSZWY/OiBBcHBsaWNhdGlvblJlZjtcbiAgICBwdWJsaWMgYXBwTW9kdWxlUmVmPzogTmdNb2R1bGVSZWY8YW55PjtcbiAgICBwdWJsaWMgdGVtcGxhdGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBpbm5lclNlbGVjdG9yPzogc3RyaW5nO1xuICAgIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgcG9ydGFsQXBwITogUGxhbmV0UG9ydGFsQXBwbGljYXRpb247XG4gICAgcHJpdmF0ZSBhcHBNb2R1bGVCb290c3RyYXA/OiBOZ0Jvb3RzdHJhcEFwcE1vZHVsZTtcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3Rvcnk/OiBQbGFudENvbXBvbmVudEZhY3Rvcnk7XG5cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbm5lclNlbGVjdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmdab25lKCk6IE5nWm9uZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiAodGhpcy5pbmplY3RvciB8fCB0aGlzLmFwcE1vZHVsZVJlZj8uaW5qZWN0b3IpPy5nZXQoTmdab25lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNhbmRib3goKTogU2FuZGJveCB7XG4gICAgICAgIHJldHVybiBnZXRTYW5kYm94SW5zdGFuY2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJvb3RzdHJhcHBlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuYXBwTW9kdWxlUmVmIHx8IHRoaXMuYXBwUmVmKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBCb290c3RyYXBPcHRpb25zKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlID0gb3B0aW9ucy50ZW1wbGF0ZTtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJTZWxlY3RvciA9IHRoaXMudGVtcGxhdGUgPyBnZXRUYWdOYW1lQnlUZW1wbGF0ZSh0aGlzLnRlbXBsYXRlKSA6ICcnO1xuICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVCb290c3RyYXAgPSBvcHRpb25zLmJvb3RzdHJhcDtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIGlzIGEgaGFjaywgc2luY2UgTmdab25lIGRvZXNuJ3QgYWxsb3cgeW91IHRvIGNvbmZpZ3VyZSB0aGUgcHJvcGVydHkgdGhhdCBpZGVudGlmaWVzIHlvdXIgem9uZS5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9QbGFjZU1lLVNBUy9zaW5nbGUtc3BhLWFuZ3VsYXItY2xpL2lzc3Vlcy8zMyxcbiAgICAgICAgLy8gTmdab25lLmlzSW5Bbmd1bGFyWm9uZSA9ICgpID0+IHtcbiAgICAgICAgLy8gICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgLy8gICAgIHJldHVybiB3aW5kb3cuWm9uZS5jdXJyZW50Ll9wcm9wZXJ0aWVzW2BuZ3gtcGxhbmV0LSR7bmFtZX1gXSA9PT0gdHJ1ZTtcbiAgICAgICAgLy8gfTtcbiAgICB9XG5cbiAgICAvLyDlrZDlupTnlKjot6/nlLHlj5jljJblkI7lkIzmraXkv67mlLkgcG9ydGFsIOeahCBSb3V0ZVxuICAgIHByaXZhdGUgc3luY1BvcnRhbFJvdXRlV2hlbk5hdmlnYXRpb25FbmQoKSB7XG4gICAgICAgIGNvbnN0IHJvdXRlciA9ICh0aGlzLmluamVjdG9yIHx8IHRoaXMuYXBwTW9kdWxlUmVmPy5pbmplY3Rvcik/LmdldChSb3V0ZXIpO1xuICAgICAgICBpZiAocm91dGVyKSB7XG4gICAgICAgICAgICByb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZT8ub25TdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9ydGFsQXBwLnJvdXRlciEubmF2aWdhdGVCeVVybChldmVudC51cmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBib290c3RyYXAoYXBwOiBQbGFuZXRQb3J0YWxBcHBsaWNhdGlvbik6IE9ic2VydmFibGU8dGhpcz4ge1xuICAgICAgICBpZiAoIXRoaXMuYXBwTW9kdWxlQm9vdHN0cmFwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGFwcCgke3RoaXMubmFtZX0pIGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3J0YWxBcHAgPSBhcHA7XG4gICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVCb290c3RyYXAoYXBwKS50aGVuKGFwcE1vZHVsZVJlZiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGFwcE1vZHVsZVJlZlsnaW5zdGFuY2UnXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcE1vZHVsZVJlZiA9IGFwcE1vZHVsZVJlZiBhcyBOZ01vZHVsZVJlZjxhbnk+O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcE1vZHVsZVJlZi5pbnN0YW5jZS5hcHBOYW1lID0gdGhpcy5uYW1lO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdG9yID0gdGhpcy5hcHBNb2R1bGVSZWYuaW5qZWN0b3I7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBSZWYgPSBhcHBNb2R1bGVSZWYgYXMgdW5rbm93biBhcyBBcHBsaWNhdGlvblJlZjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RvciA9IHRoaXMuYXBwUmVmLmluamVjdG9yO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2R1bGVSZWYgPSB0aGlzLmFwcFJlZi5pbmplY3Rvci5nZXQoTmdNb2R1bGVSZWYpO1xuICAgICAgICAgICAgICAgICAgICAobW9kdWxlUmVmIGFzIGFueSkuaW5zdGFuY2UgPSB7IGFwcE5hbWU6IHRoaXMubmFtZSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNQb3J0YWxSb3V0ZVdoZW5OYXZpZ2F0aW9uRW5kKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldFJvdXRlcigpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmluamVjdG9yIHx8IHRoaXMuYXBwTW9kdWxlUmVmPy5pbmplY3Rvcik/LmdldChSb3V0ZXIpO1xuICAgIH1cblxuICAgIGdldEN1cnJlbnRSb3V0ZXJTdGF0ZVVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um91dGVyKCk/LnJvdXRlclN0YXRlLnNuYXBzaG90LnVybDtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZUJ5VXJsKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJvdXRlciA9IHRoaXMuZ2V0Um91dGVyKCk7XG4gICAgICAgIHRoaXMubmdab25lPy5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgcm91dGVyPy5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldENvbXBvbmVudEZhY3RvcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudEZhY3Rvcnk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudEZhY3Rvcnk6IFBsYW50Q29tcG9uZW50RmFjdG9yeSkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRGYWN0b3J5O1xuICAgIH1cblxuICAgIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFwcE1vZHVsZVJlZiB8fCB0aGlzLmFwcFJlZikge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyID0gKHRoaXMuaW5qZWN0b3IgfHwgdGhpcy5hcHBNb2R1bGVSZWY/LmluamVjdG9yKT8uZ2V0KFJvdXRlcik7XG4gICAgICAgICAgICBpZiAocm91dGVyKSB7XG4gICAgICAgICAgICAgICAgcm91dGVyLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNhbmRib3gpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhbmRib3guZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVSZWY/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuYXBwTW9kdWxlUmVmID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5hcHBSZWY/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuYXBwUmVmID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5pbmplY3RvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|