@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.
Files changed (75) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/application/ng-planet-application-ref.d.ts +48 -0
  3. package/application/ng-planet-application-ref.d.ts.map +1 -0
  4. package/application/planet-application-ref.d.ts +3 -27
  5. package/application/planet-application-ref.d.ts.map +1 -1
  6. package/component/planet-component-loader.d.ts.map +1 -1
  7. package/component/planet-component-outlet.d.ts +1 -1
  8. package/esm2022/application/ng-planet-application-ref.mjs +106 -0
  9. package/esm2022/application/planet-application-loader.mjs +454 -0
  10. package/esm2022/application/planet-application-ref.mjs +2 -0
  11. package/esm2022/application/planet-application.service.mjs +85 -0
  12. package/esm2022/assets-loader.mjs +216 -0
  13. package/esm2022/component/planet-component-loader.mjs +171 -0
  14. package/esm2022/component/planet-component-outlet.mjs +69 -0
  15. package/esm2022/debug.mjs +33 -0
  16. package/{esm2020 → esm2022}/empty/empty.component.mjs +4 -4
  17. package/esm2022/global-event-dispatcher.mjs +70 -0
  18. package/esm2022/global-planet.mjs +63 -0
  19. package/esm2022/helpers.mjs +119 -0
  20. package/esm2022/module.mjs +33 -0
  21. package/esm2022/planet.mjs +91 -0
  22. package/esm2022/public-api.mjs +19 -0
  23. package/esm2022/router/route-redirect.mjs +63 -0
  24. package/{esm2020 → esm2022}/sandbox/index.mjs +1 -1
  25. package/esm2022/sandbox/proxy/patches/eventListener.mjs +41 -0
  26. package/esm2022/sandbox/proxy/proxies/common.mjs +132 -0
  27. package/esm2022/sandbox/proxy/proxies/document.mjs +126 -0
  28. package/esm2022/sandbox/proxy/proxies/window.mjs +158 -0
  29. package/esm2022/sandbox/proxy/proxy-sandbox.mjs +49 -0
  30. package/esm2022/sandbox/snapshot/snapshot-sandbox.mjs +12 -0
  31. package/{fesm2020 → fesm2022}/worktile-planet.mjs +96 -73
  32. package/fesm2022/worktile-planet.mjs.map +1 -0
  33. package/global-planet.d.ts +4 -2
  34. package/global-planet.d.ts.map +1 -1
  35. package/package.json +7 -13
  36. package/sandbox/proxy/patches/eventListener.d.ts.map +1 -1
  37. package/sandbox/proxy/proxy-sandbox.d.ts.map +1 -1
  38. package/sandbox/snapshot/snapshot-sandbox.d.ts.map +1 -1
  39. package/esm2020/application/planet-application-loader.mjs +0 -454
  40. package/esm2020/application/planet-application-ref.mjs +0 -94
  41. package/esm2020/application/planet-application.service.mjs +0 -85
  42. package/esm2020/assets-loader.mjs +0 -216
  43. package/esm2020/component/planet-component-loader.mjs +0 -170
  44. package/esm2020/component/planet-component-outlet.mjs +0 -69
  45. package/esm2020/debug.mjs +0 -33
  46. package/esm2020/global-event-dispatcher.mjs +0 -70
  47. package/esm2020/global-planet.mjs +0 -53
  48. package/esm2020/helpers.mjs +0 -119
  49. package/esm2020/module.mjs +0 -33
  50. package/esm2020/planet.mjs +0 -91
  51. package/esm2020/public-api.mjs +0 -20
  52. package/esm2020/router/route-redirect.mjs +0 -63
  53. package/esm2020/sandbox/proxy/patches/eventListener.mjs +0 -41
  54. package/esm2020/sandbox/proxy/proxies/common.mjs +0 -132
  55. package/esm2020/sandbox/proxy/proxies/document.mjs +0 -126
  56. package/esm2020/sandbox/proxy/proxies/window.mjs +0 -158
  57. package/esm2020/sandbox/proxy/proxy-sandbox.mjs +0 -49
  58. package/esm2020/sandbox/snapshot/snapshot-sandbox.mjs +0 -12
  59. package/fesm2015/worktile-planet.mjs +0 -2193
  60. package/fesm2015/worktile-planet.mjs.map +0 -1
  61. package/fesm2020/worktile-planet.mjs.map +0 -1
  62. /package/{esm2020 → esm2022}/application/portal-application.mjs +0 -0
  63. /package/{esm2020 → esm2022}/component/planet-component-ref.mjs +0 -0
  64. /package/{esm2020 → esm2022}/component/plant-component.config.mjs +0 -0
  65. /package/{esm2020 → esm2022}/planet.class.mjs +0 -0
  66. /package/{esm2020 → esm2022}/sandbox/constants.mjs +0 -0
  67. /package/{esm2020 → esm2022}/sandbox/exec.mjs +0 -0
  68. /package/{esm2020 → esm2022}/sandbox/proxy/patches/document.mjs +0 -0
  69. /package/{esm2020 → esm2022}/sandbox/proxy/patches/index.mjs +0 -0
  70. /package/{esm2020 → esm2022}/sandbox/proxy/patches/storage.mjs +0 -0
  71. /package/{esm2020 → esm2022}/sandbox/proxy/patches/timer.mjs +0 -0
  72. /package/{esm2020 → esm2022}/sandbox/proxy/types.mjs +0 -0
  73. /package/{esm2020 → esm2022}/sandbox/sandbox.mjs +0 -0
  74. /package/{esm2020 → esm2022}/sandbox/types.mjs +0 -0
  75. /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
- import { PlantComponentConfig } from '../component/plant-component.config';
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 ngZone(): NgZone | undefined;
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
- getComponentFactory(): PlantComponentFactory;
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,WAAW,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACpD,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;AAE1D,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,uBAAuB,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;AAEtH,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,KAAK,EAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,KAClC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAE/B,qBAAa,oBAAoB;IACtB,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,CAAqB;IAChD,OAAO,CAAC,gBAAgB,CAAC,CAAwB;IAEjD,IAAW,QAAQ,WAElB;IAED,IAAW,YAAY,YAEtB;IAED,IAAW,MAAM,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;gBAEW,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAgBpD,OAAO,CAAC,gCAAgC;IAgBxC,SAAS,CAAC,GAAG,EAAE,uBAAuB,GAAG,UAAU,CAAC,IAAI,CAAC;IAezD,SAAS;IAIT,wBAAwB;IAIxB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOhC,mBAAmB;IAInB,wBAAwB,CAAC,gBAAgB,EAAE,qBAAqB;IAIhE,OAAO,IAAI,IAAI;CAalB"}
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,EAIP,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;;AAU7C,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;IAatB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kCAAkC;IAsB1C,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;yCApJ/B,qBAAqB;6CAArB,qBAAqB;CA2KjC"}
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcGxhbmV0LWFwcGxpY2F0aW9uLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvYXBwbGljYXRpb24vbmctcGxhbmV0LWFwcGxpY2F0aW9uLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJeEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBVyxNQUFNLGFBQWEsQ0FBQztBQXVCMUQsTUFBTSxPQUFPLHNCQUFzQjtJQVcvQixJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLGtCQUFrQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxZQUFZLElBQVksRUFBRSxPQUEwQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsSUFB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cG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBOZ01vZHVsZVJlZiwgTmdab25lLCBFbnZpcm9ubWVudEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBsYW5ldFBvcnRhbEFwcGxpY2F0aW9uIH0gZnJvbSAnLi9wb3J0YWwtYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgUGxhbnRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi9jb21wb25lbnQvcGxhbnQtY29tcG9uZW50LmNvbmZpZyc7XG5pbXBvcnQgeyBQbGFuZXRDb21wb25lbnRSZWYgfSBmcm9tICcuLi9jb21wb25lbnQvcGxhbmV0LWNvbXBvbmVudC1yZWYnO1xuaW1wb3J0IHsgZ2V0VGFnTmFtZUJ5VGVtcGxhdGUgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IGdldFNhbmRib3hJbnN0YW5jZSwgU2FuZGJveCB9IGZyb20gJy4uL3NhbmRib3gvJztcbmltcG9ydCB7IFBsYW5ldEFwcGxpY2F0aW9uUmVmIH0gZnJvbSAnLi9wbGFuZXQtYXBwbGljYXRpb24tcmVmJztcblxuZXhwb3J0IHR5cGUgTmdCb290c3RyYXBBcHBNb2R1bGUgPSAoXG4gICAgcG9ydGFsQXBwOiBQbGFuZXRQb3J0YWxBcHBsaWNhdGlvblxuKSA9PiBQcm9taXNlPE5nTW9kdWxlUmVmPGFueT4gfCB2b2lkIHwgQXBwbGljYXRpb25SZWYgfCB1bmRlZmluZWQgfCBudWxsPjtcblxuZXhwb3J0IGludGVyZmFjZSBOZ0Jvb3RzdHJhcE9wdGlvbnMge1xuICAgIHRlbXBsYXRlOiBzdHJpbmc7XG4gICAgYm9vdHN0cmFwOiBOZ0Jvb3RzdHJhcEFwcE1vZHVsZTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIE5nQm9vdHN0cmFwQXBwTW9kdWxlXG4gKi9cbmV4cG9ydCB0eXBlIEJvb3RzdHJhcEFwcE1vZHVsZSA9IE5nQm9vdHN0cmFwQXBwTW9kdWxlO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIE5nQm9vdHN0cmFwT3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcE9wdGlvbnMgZXh0ZW5kcyBOZ0Jvb3RzdHJhcE9wdGlvbnMge31cblxuZXhwb3J0IHR5cGUgUGxhbnRDb21wb25lbnRGYWN0b3J5ID0gPFREYXRhLCBUQ29tcD4oY29tcG9uZW50TmFtZTogc3RyaW5nLCBjb25maWc6IFBsYW50Q29tcG9uZW50Q29uZmlnPFREYXRhPikgPT4gUGxhbmV0Q29tcG9uZW50UmVmPFRDb21wPjtcblxuZXhwb3J0IGNsYXNzIE5nUGxhbmV0QXBwbGljYXRpb25SZWYgaW1wbGVtZW50cyBQbGFuZXRBcHBsaWNhdGlvblJlZiB7XG4gICAgcHJpdmF0ZSBpbmplY3Rvcj86IEVudmlyb25tZW50SW5qZWN0b3I7XG4gICAgcHJpdmF0ZSBhcHBSZWY/OiBBcHBsaWNhdGlvblJlZjtcbiAgICBwdWJsaWMgYXBwTW9kdWxlUmVmPzogTmdNb2R1bGVSZWY8YW55PjtcbiAgICBwdWJsaWMgdGVtcGxhdGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBpbm5lclNlbGVjdG9yPzogc3RyaW5nO1xuICAgIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgcG9ydGFsQXBwITogUGxhbmV0UG9ydGFsQXBwbGljYXRpb247XG4gICAgcHJpdmF0ZSBhcHBNb2R1bGVCb290c3RyYXA/OiBOZ0Jvb3RzdHJhcEFwcE1vZHVsZTtcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3Rvcnk/OiBQbGFudENvbXBvbmVudEZhY3Rvcnk7XG5cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbm5lclNlbGVjdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmdab25lKCk6IE5nWm9uZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiAodGhpcy5pbmplY3RvciB8fCB0aGlzLmFwcE1vZHVsZVJlZj8uaW5qZWN0b3IpPy5nZXQoTmdab25lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNhbmRib3goKTogU2FuZGJveCB7XG4gICAgICAgIHJldHVybiBnZXRTYW5kYm94SW5zdGFuY2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJvb3RzdHJhcHBlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuYXBwTW9kdWxlUmVmIHx8IHRoaXMuYXBwUmVmKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBCb290c3RyYXBPcHRpb25zKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlID0gb3B0aW9ucy50ZW1wbGF0ZTtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJTZWxlY3RvciA9IHRoaXMudGVtcGxhdGUgPyBnZXRUYWdOYW1lQnlUZW1wbGF0ZSh0aGlzLnRlbXBsYXRlKSA6ICcnO1xuICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVCb290c3RyYXAgPSBvcHRpb25zLmJvb3RzdHJhcDtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIGlzIGEgaGFjaywgc2luY2UgTmdab25lIGRvZXNuJ3QgYWxsb3cgeW91IHRvIGNvbmZpZ3VyZSB0aGUgcHJvcGVydHkgdGhhdCBpZGVudGlmaWVzIHlvdXIgem9uZS5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9QbGFjZU1lLVNBUy9zaW5nbGUtc3BhLWFuZ3VsYXItY2xpL2lzc3Vlcy8zMyxcbiAgICAgICAgLy8gTmdab25lLmlzSW5Bbmd1bGFyWm9uZSA9ICgpID0+IHtcbiAgICAgICAgLy8gICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgLy8gICAgIHJldHVybiB3aW5kb3cuWm9uZS5jdXJyZW50Ll9wcm9wZXJ0aWVzW2BuZ3gtcGxhbmV0LSR7bmFtZX1gXSA9PT0gdHJ1ZTtcbiAgICAgICAgLy8gfTtcbiAgICB9XG5cbiAgICAvLyDlrZDlupTnlKjot6/nlLHlj5jljJblkI7lkIzmraXkv67mlLkgcG9ydGFsIOeahCBSb3V0ZVxuICAgIHByaXZhdGUgc3luY1BvcnRhbFJvdXRlV2hlbk5hdmlnYXRpb25FbmQoKSB7XG4gICAgICAgIGNvbnN0IHJvdXRlciA9ICh0aGlzLmluamVjdG9yIHx8IHRoaXMuYXBwTW9kdWxlUmVmPy5pbmplY3Rvcik/LmdldChSb3V0ZXIpO1xuICAgICAgICBpZiAocm91dGVyKSB7XG4gICAgICAgICAgICByb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZT8ub25TdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9ydGFsQXBwLnJvdXRlciEubmF2aWdhdGVCeVVybChldmVudC51cmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBib290c3RyYXAoYXBwOiBQbGFuZXRQb3J0YWxBcHBsaWNhdGlvbik6IE9ic2VydmFibGU8dGhpcz4ge1xuICAgICAgICBpZiAoIXRoaXMuYXBwTW9kdWxlQm9vdHN0cmFwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGFwcCgke3RoaXMubmFtZX0pIGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3J0YWxBcHAgPSBhcHA7XG4gICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVCb290c3RyYXAoYXBwKS50aGVuKGFwcE1vZHVsZVJlZiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGFwcE1vZHVsZVJlZlsnaW5zdGFuY2UnXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcE1vZHVsZVJlZiA9IGFwcE1vZHVsZVJlZiBhcyBOZ01vZHVsZVJlZjxhbnk+O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcE1vZHVsZVJlZi5pbnN0YW5jZS5hcHBOYW1lID0gdGhpcy5uYW1lO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdG9yID0gdGhpcy5hcHBNb2R1bGVSZWYuaW5qZWN0b3I7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBSZWYgPSBhcHBNb2R1bGVSZWYgYXMgdW5rbm93biBhcyBBcHBsaWNhdGlvblJlZjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RvciA9IHRoaXMuYXBwUmVmLmluamVjdG9yO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2R1bGVSZWYgPSB0aGlzLmFwcFJlZi5pbmplY3Rvci5nZXQoTmdNb2R1bGVSZWYpO1xuICAgICAgICAgICAgICAgICAgICAobW9kdWxlUmVmIGFzIGFueSkuaW5zdGFuY2UgPSB7IGFwcE5hbWU6IHRoaXMubmFtZSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNQb3J0YWxSb3V0ZVdoZW5OYXZpZ2F0aW9uRW5kKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldFJvdXRlcigpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmluamVjdG9yIHx8IHRoaXMuYXBwTW9kdWxlUmVmPy5pbmplY3Rvcik/LmdldChSb3V0ZXIpO1xuICAgIH1cblxuICAgIGdldEN1cnJlbnRSb3V0ZXJTdGF0ZVVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um91dGVyKCk/LnJvdXRlclN0YXRlLnNuYXBzaG90LnVybDtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZUJ5VXJsKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJvdXRlciA9IHRoaXMuZ2V0Um91dGVyKCk7XG4gICAgICAgIHRoaXMubmdab25lPy5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgcm91dGVyPy5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldENvbXBvbmVudEZhY3RvcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudEZhY3Rvcnk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudEZhY3Rvcnk6IFBsYW50Q29tcG9uZW50RmFjdG9yeSkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRGYWN0b3J5O1xuICAgIH1cblxuICAgIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFwcE1vZHVsZVJlZiB8fCB0aGlzLmFwcFJlZikge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyID0gKHRoaXMuaW5qZWN0b3IgfHwgdGhpcy5hcHBNb2R1bGVSZWY/LmluamVjdG9yKT8uZ2V0KFJvdXRlcik7XG4gICAgICAgICAgICBpZiAocm91dGVyKSB7XG4gICAgICAgICAgICAgICAgcm91dGVyLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNhbmRib3gpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhbmRib3guZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hcHBNb2R1bGVSZWY/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuYXBwTW9kdWxlUmVmID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5hcHBSZWY/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuYXBwUmVmID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5pbmplY3RvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==