@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
@@ -1,91 +0,0 @@
1
- import { Injectable, Inject, Optional, Injector } from '@angular/core';
2
- import { NavigationEnd, Router } from '@angular/router';
3
- import { PLANET_APPLICATIONS } from './planet.class';
4
- import { PlanetApplicationService } from './application/planet-application.service';
5
- import { PlanetApplicationLoader } from './application/planet-application-loader';
6
- import { filter, startWith, distinctUntilChanged, map } from 'rxjs/operators';
7
- import { setPortalApplicationData, setApplicationLoader, setApplicationService, getApplicationLoader, getApplicationService } from './global-planet';
8
- import { setDebugFactory } from './debug';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/router";
11
- export class Planet {
12
- get planetApplicationLoader() {
13
- return getApplicationLoader();
14
- }
15
- get planetApplicationService() {
16
- return getApplicationService();
17
- }
18
- get loadingDone() {
19
- return this.planetApplicationLoader.loadingDone;
20
- }
21
- get appStatusChange() {
22
- return this.planetApplicationLoader.appStatusChange;
23
- }
24
- get appsLoadingStart() {
25
- return this.planetApplicationLoader.appsLoadingStart;
26
- }
27
- constructor(injector, router, planetApplications) {
28
- this.injector = injector;
29
- this.router = router;
30
- if (!this.planetApplicationLoader) {
31
- setApplicationLoader(this.injector.get(PlanetApplicationLoader));
32
- }
33
- if (!this.planetApplicationService) {
34
- setApplicationService(this.injector.get(PlanetApplicationService));
35
- }
36
- if (planetApplications) {
37
- this.registerApps(planetApplications);
38
- }
39
- }
40
- setOptions(options) {
41
- this.planetApplicationLoader.setOptions(options);
42
- if (options.debugFactory) {
43
- setDebugFactory(options.debugFactory);
44
- }
45
- }
46
- setPortalAppData(data) {
47
- setPortalApplicationData(data);
48
- }
49
- registerApp(app) {
50
- this.planetApplicationService.register(app);
51
- }
52
- registerApps(apps) {
53
- this.planetApplicationService.register(apps);
54
- }
55
- unregisterApp(name) {
56
- this.planetApplicationService.unregister(name);
57
- }
58
- getApps() {
59
- return this.planetApplicationService.getApps();
60
- }
61
- start() {
62
- this.subscription = this.router.events
63
- .pipe(filter(event => {
64
- return event instanceof NavigationEnd;
65
- }), map(event => {
66
- return event.urlAfterRedirects || event.url;
67
- }), startWith(location.pathname), distinctUntilChanged())
68
- .subscribe((url) => {
69
- this.planetApplicationLoader.reroute({
70
- url: url
71
- });
72
- });
73
- }
74
- stop() {
75
- this.subscription?.unsubscribe();
76
- }
77
- }
78
- Planet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: Planet, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: PLANET_APPLICATIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
79
- Planet.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: Planet, providedIn: 'root' });
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: Planet, decorators: [{
81
- type: Injectable,
82
- args: [{
83
- providedIn: 'root'
84
- }]
85
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.Router }, { type: undefined, decorators: [{
86
- type: Inject,
87
- args: [PLANET_APPLICATIONS]
88
- }, {
89
- type: Optional
90
- }] }]; } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0L3NyYy9wbGFuZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBb0MsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNwRixPQUFPLEVBQ0gsdUJBQXVCLEVBRzFCLE1BQU0seUNBQXlDLENBQUM7QUFFakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUNILHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDeEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7QUFLMUMsTUFBTSxPQUFPLE1BQU07SUFDZixJQUFZLHVCQUF1QjtRQUMvQixPQUFPLG9CQUFvQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVksd0JBQXdCO1FBQ2hDLE9BQU8scUJBQXFCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUM7SUFDekQsQ0FBQztJQUlELFlBQ1ksUUFBa0IsRUFDbEIsTUFBYyxFQUNtQixrQkFBdUM7UUFGeEUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBR3RCLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDL0Isb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNoQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7U0FDdEU7UUFFRCxJQUFJLGtCQUFrQixFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUN6QztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBK0I7UUFDdEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDdEIsZUFBZSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN6QztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBSSxJQUFPO1FBQ3ZCLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXLENBQVMsR0FBOEI7UUFDOUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsWUFBWSxDQUFTLElBQWlDO1FBQ2xELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFZO1FBQ3RCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFrQzthQUM5RCxJQUFJLENBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1gsT0FBTyxLQUFLLFlBQVksYUFBYSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLE9BQVEsS0FBdUIsQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQzVCLG9CQUFvQixFQUFFLENBQ3pCO2FBQ0EsU0FBUyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztnQkFDakMsR0FBRyxFQUFFLEdBQUc7YUFDWCxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxJQUFJO1FBQ0EsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzttR0F4RlEsTUFBTSxnRUEwQkgsbUJBQW1CO3VHQTFCdEIsTUFBTSxjQUZILE1BQU07MkZBRVQsTUFBTTtrQkFIbEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQTJCUSxNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJFdmVudCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFBsYW5ldE9wdGlvbnMsIFBsYW5ldEFwcGxpY2F0aW9uLCBQTEFORVRfQVBQTElDQVRJT05TIH0gZnJvbSAnLi9wbGFuZXQuY2xhc3MnO1xuaW1wb3J0IHsgUGxhbmV0QXBwbGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9hcHBsaWNhdGlvbi9wbGFuZXQtYXBwbGljYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1xuICAgIFBsYW5ldEFwcGxpY2F0aW9uTG9hZGVyLFxuICAgIEFwcHNMb2FkaW5nU3RhcnRFdmVudCxcbiAgICBBcHBTdGF0dXNDaGFuZ2VFdmVudFxufSBmcm9tICcuL2FwcGxpY2F0aW9uL3BsYW5ldC1hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHN0YXJ0V2l0aCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgc2V0UG9ydGFsQXBwbGljYXRpb25EYXRhLFxuICAgIHNldEFwcGxpY2F0aW9uTG9hZGVyLFxuICAgIHNldEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICBnZXRBcHBsaWNhdGlvbkxvYWRlcixcbiAgICBnZXRBcHBsaWNhdGlvblNlcnZpY2Vcbn0gZnJvbSAnLi9nbG9iYWwtcGxhbmV0JztcbmltcG9ydCB7IHNldERlYnVnRmFjdG9yeSB9IGZyb20gJy4vZGVidWcnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBsYW5ldCB7XG4gICAgcHJpdmF0ZSBnZXQgcGxhbmV0QXBwbGljYXRpb25Mb2FkZXIoKTogUGxhbmV0QXBwbGljYXRpb25Mb2FkZXIge1xuICAgICAgICByZXR1cm4gZ2V0QXBwbGljYXRpb25Mb2FkZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBwbGFuZXRBcHBsaWNhdGlvblNlcnZpY2UoKSB7XG4gICAgICAgIHJldHVybiBnZXRBcHBsaWNhdGlvblNlcnZpY2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmdEb25lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGFuZXRBcHBsaWNhdGlvbkxvYWRlci5sb2FkaW5nRG9uZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcFN0YXR1c0NoYW5nZSgpOiBPYnNlcnZhYmxlPEFwcFN0YXR1c0NoYW5nZUV2ZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYW5ldEFwcGxpY2F0aW9uTG9hZGVyLmFwcFN0YXR1c0NoYW5nZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcHNMb2FkaW5nU3RhcnQoKTogT2JzZXJ2YWJsZTxBcHBzTG9hZGluZ1N0YXJ0RXZlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhbmV0QXBwbGljYXRpb25Mb2FkZXIuYXBwc0xvYWRpbmdTdGFydDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgQEluamVjdChQTEFORVRfQVBQTElDQVRJT05TKSBAT3B0aW9uYWwoKSBwbGFuZXRBcHBsaWNhdGlvbnM6IFBsYW5ldEFwcGxpY2F0aW9uW11cbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLnBsYW5ldEFwcGxpY2F0aW9uTG9hZGVyKSB7XG4gICAgICAgICAgICBzZXRBcHBsaWNhdGlvbkxvYWRlcih0aGlzLmluamVjdG9yLmdldChQbGFuZXRBcHBsaWNhdGlvbkxvYWRlcikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5wbGFuZXRBcHBsaWNhdGlvblNlcnZpY2UpIHtcbiAgICAgICAgICAgIHNldEFwcGxpY2F0aW9uU2VydmljZSh0aGlzLmluamVjdG9yLmdldChQbGFuZXRBcHBsaWNhdGlvblNlcnZpY2UpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwbGFuZXRBcHBsaWNhdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJBcHBzKHBsYW5ldEFwcGxpY2F0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRPcHRpb25zKG9wdGlvbnM6IFBhcnRpYWw8UGxhbmV0T3B0aW9ucz4pIHtcbiAgICAgICAgdGhpcy5wbGFuZXRBcHBsaWNhdGlvbkxvYWRlci5zZXRPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICBpZiAob3B0aW9ucy5kZWJ1Z0ZhY3RvcnkpIHtcbiAgICAgICAgICAgIHNldERlYnVnRmFjdG9yeShvcHRpb25zLmRlYnVnRmFjdG9yeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRQb3J0YWxBcHBEYXRhPFQ+KGRhdGE6IFQpIHtcbiAgICAgICAgc2V0UG9ydGFsQXBwbGljYXRpb25EYXRhKGRhdGEpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyQXBwPFRFeHRyYT4oYXBwOiBQbGFuZXRBcHBsaWNhdGlvbjxURXh0cmE+KSB7XG4gICAgICAgIHRoaXMucGxhbmV0QXBwbGljYXRpb25TZXJ2aWNlLnJlZ2lzdGVyKGFwcCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJBcHBzPFRFeHRyYT4oYXBwczogUGxhbmV0QXBwbGljYXRpb248VEV4dHJhPltdKSB7XG4gICAgICAgIHRoaXMucGxhbmV0QXBwbGljYXRpb25TZXJ2aWNlLnJlZ2lzdGVyKGFwcHMpO1xuICAgIH1cblxuICAgIHVucmVnaXN0ZXJBcHAobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucGxhbmV0QXBwbGljYXRpb25TZXJ2aWNlLnVucmVnaXN0ZXIobmFtZSk7XG4gICAgfVxuXG4gICAgZ2V0QXBwcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhbmV0QXBwbGljYXRpb25TZXJ2aWNlLmdldEFwcHMoKTtcbiAgICB9XG5cbiAgICBzdGFydCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSAodGhpcy5yb3V0ZXIuZXZlbnRzIGFzIE9ic2VydmFibGU8Um91dGVyRXZlbnQ+KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGV2ZW50IGFzIE5hdmlnYXRpb25FbmQpLnVybEFmdGVyUmVkaXJlY3RzIHx8IGV2ZW50LnVybDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobG9jYXRpb24ucGF0aG5hbWUpLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHVybDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbGFuZXRBcHBsaWNhdGlvbkxvYWRlci5yZXJvdXRlKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0b3AoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,20 +0,0 @@
1
- /*
2
- * Public API Surface of core
3
- */
4
- export * from './planet';
5
- export * from './global-event-dispatcher';
6
- export * from './application/portal-application';
7
- export * from './planet.class';
8
- export * from './module';
9
- export { PlanetApplicationRef } from './application/planet-application-ref';
10
- export { defineApplication, getPortalApplicationData, getPlanetApplicationRef } from './global-planet';
11
- export { PlanetApplicationService } from './application/planet-application.service';
12
- export * from './application/planet-application-loader';
13
- export * from './assets-loader';
14
- export { PlanetComponentLoader } from './component/planet-component-loader';
15
- export { PlanetComponentRef } from './component/planet-component-ref';
16
- export { PlanetComponentOutlet } from './component/planet-component-outlet';
17
- export { PlantComponentConfig } from './component/plant-component.config';
18
- export * from './empty/empty.component';
19
- export * from './router/route-redirect';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BGLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxPQUFPLEVBQW1CLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb3JlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wbGFuZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9nbG9iYWwtZXZlbnQtZGlzcGF0Y2hlcic7XG5leHBvcnQgKiBmcm9tICcuL2FwcGxpY2F0aW9uL3BvcnRhbC1hcHBsaWNhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3BsYW5ldC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsZSc7XG5leHBvcnQgeyBQbGFuZXRBcHBsaWNhdGlvblJlZiB9IGZyb20gJy4vYXBwbGljYXRpb24vcGxhbmV0LWFwcGxpY2F0aW9uLXJlZic7XG5leHBvcnQgeyBkZWZpbmVBcHBsaWNhdGlvbiwgZ2V0UG9ydGFsQXBwbGljYXRpb25EYXRhLCBnZXRQbGFuZXRBcHBsaWNhdGlvblJlZiB9IGZyb20gJy4vZ2xvYmFsLXBsYW5ldCc7XG5leHBvcnQgeyBQbGFuZXRBcHBsaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL2FwcGxpY2F0aW9uL3BsYW5ldC1hcHBsaWNhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb24vcGxhbmV0LWFwcGxpY2F0aW9uLWxvYWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2Fzc2V0cy1sb2FkZXInO1xuZXhwb3J0IHsgUGxhbmV0Q29tcG9uZW50LCBQbGFuZXRDb21wb25lbnRMb2FkZXIgfSBmcm9tICcuL2NvbXBvbmVudC9wbGFuZXQtY29tcG9uZW50LWxvYWRlcic7XG5leHBvcnQgeyBQbGFuZXRDb21wb25lbnRSZWYgfSBmcm9tICcuL2NvbXBvbmVudC9wbGFuZXQtY29tcG9uZW50LXJlZic7XG5leHBvcnQgeyBQbGFuZXRDb21wb25lbnRPdXRsZXQgfSBmcm9tICcuL2NvbXBvbmVudC9wbGFuZXQtY29tcG9uZW50LW91dGxldCc7XG5leHBvcnQgeyBQbGFudENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4vY29tcG9uZW50L3BsYW50LWNvbXBvbmVudC5jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9lbXB0eS9lbXB0eS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZXIvcm91dGUtcmVkaXJlY3QnO1xuIl19
@@ -1,63 +0,0 @@
1
- import { Component, inject } from '@angular/core';
2
- import { ActivatedRoute, Router } from '@angular/router';
3
- import * as i0 from "@angular/core";
4
- class RouteRedirect {
5
- constructor(redirectTo) {
6
- this.activatedRoute = inject(ActivatedRoute);
7
- this.router = inject(Router);
8
- const finalRedirectTo = redirectTo || this.activatedRoute.snapshot.data.redirectTo;
9
- if (finalRedirectTo) {
10
- const activatedRouteUrl = this.activatedRoute.pathFromRoot
11
- .filter(route => {
12
- return route.snapshot.url?.length > 0;
13
- })
14
- .map(route => {
15
- return route.snapshot.url.join('/');
16
- })
17
- .join('/');
18
- if (this.router.isActive(activatedRouteUrl, {
19
- matrixParams: 'exact',
20
- paths: 'exact',
21
- queryParams: 'exact',
22
- fragment: 'exact'
23
- })) {
24
- this.router.navigate([`${finalRedirectTo}`],
25
- // By replacing the current URL in the history, we keep the Browser's Back
26
- // Button behavior in tact. This will allow the user to easily navigate back
27
- // to the previous URL without getting caught in a redirect.
28
- {
29
- replaceUrl: true,
30
- relativeTo: this.activatedRoute
31
- });
32
- }
33
- }
34
- }
35
- }
36
- export function routeRedirect(redirectTo) {
37
- return new RouteRedirect(redirectTo);
38
- }
39
- export class RedirectToRouteComponent {
40
- constructor() {
41
- this.routeRedirect = routeRedirect();
42
- }
43
- }
44
- RedirectToRouteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: RedirectToRouteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
45
- RedirectToRouteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: RedirectToRouteComponent, isStandalone: true, selector: "planet-redirect-to-route", ngImport: i0, template: '', isInline: true });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: RedirectToRouteComponent, decorators: [{
47
- type: Component,
48
- args: [{
49
- selector: 'planet-redirect-to-route',
50
- template: '',
51
- standalone: true
52
- }]
53
- }] });
54
- export function redirectToRoute(redirectTo) {
55
- return {
56
- path: '',
57
- component: RedirectToRouteComponent,
58
- data: {
59
- redirectTo: redirectTo
60
- }
61
- };
62
- }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcmVkaXJlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL3JvdXRlci9yb3V0ZS1yZWRpcmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFTLE1BQU0sRUFBVyxNQUFNLGlCQUFpQixDQUFDOztBQUV6RSxNQUFNLGFBQWE7SUFJZixZQUFZLFVBQWtCO1FBSDlCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hDLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFHcEIsTUFBTSxlQUFlLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkYsSUFBSSxlQUFlLEVBQUU7WUFDakIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVk7aUJBQ3JELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDWixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDO2lCQUNELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDVCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUM7aUJBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsSUFDSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDcEMsWUFBWSxFQUFFLE9BQU87Z0JBQ3JCLEtBQUssRUFBRSxPQUFPO2dCQUNkLFdBQVcsRUFBRSxPQUFPO2dCQUNwQixRQUFRLEVBQUUsT0FBTzthQUNwQixDQUFDLEVBQ0o7Z0JBQ0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQ2hCLENBQUMsR0FBRyxlQUFlLEVBQUUsQ0FBQztnQkFDdEIsMEVBQTBFO2dCQUMxRSw0RUFBNEU7Z0JBQzVFLDREQUE0RDtnQkFDNUQ7b0JBQ0ksVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYztpQkFDbEMsQ0FDSixDQUFDO2FBQ0w7U0FDSjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsVUFBbUI7SUFDN0MsT0FBTyxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBT0QsTUFBTSxPQUFPLHdCQUF3QjtJQUxyQztRQU1JLGtCQUFhLEdBQUcsYUFBYSxFQUFFLENBQUM7S0FDbkM7O3FIQUZZLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLG9GQUh2QixFQUFFOzJGQUdILHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7O0FBS0QsTUFBTSxVQUFVLGVBQWUsQ0FBQyxVQUFrQjtJQUM5QyxPQUFPO1FBQ0gsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUsd0JBQXdCO1FBQ25DLElBQUksRUFBRTtZQUNGLFVBQVUsRUFBRSxVQUFVO1NBQ3pCO0tBQ0osQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlLCBSb3V0ZXIsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5jbGFzcyBSb3V0ZVJlZGlyZWN0IHtcbiAgICBhY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWRpcmVjdFRvOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmluYWxSZWRpcmVjdFRvID0gcmVkaXJlY3RUbyB8fCB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGEucmVkaXJlY3RUbztcbiAgICAgICAgaWYgKGZpbmFsUmVkaXJlY3RUbykge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZhdGVkUm91dGVVcmwgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhdGhGcm9tUm9vdFxuICAgICAgICAgICAgICAgIC5maWx0ZXIocm91dGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm91dGUuc25hcHNob3QudXJsPy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLm1hcChyb3V0ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByb3V0ZS5zbmFwc2hvdC51cmwuam9pbignLycpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmpvaW4oJy8nKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5pc0FjdGl2ZShhY3RpdmF0ZWRSb3V0ZVVybCwge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXhQYXJhbXM6ICdleGFjdCcsXG4gICAgICAgICAgICAgICAgICAgIHBhdGhzOiAnZXhhY3QnLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogJ2V4YWN0JyxcbiAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQ6ICdleGFjdCdcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXG4gICAgICAgICAgICAgICAgICAgIFtgJHtmaW5hbFJlZGlyZWN0VG99YF0sXG4gICAgICAgICAgICAgICAgICAgIC8vIEJ5IHJlcGxhY2luZyB0aGUgY3VycmVudCBVUkwgaW4gdGhlIGhpc3RvcnksIHdlIGtlZXAgdGhlIEJyb3dzZXIncyBCYWNrXG4gICAgICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiBiZWhhdmlvciBpbiB0YWN0LiBUaGlzIHdpbGwgYWxsb3cgdGhlIHVzZXIgdG8gZWFzaWx5IG5hdmlnYXRlIGJhY2tcbiAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIHByZXZpb3VzIFVSTCB3aXRob3V0IGdldHRpbmcgY2F1Z2h0IGluIGEgcmVkaXJlY3QuXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcm91dGVSZWRpcmVjdChyZWRpcmVjdFRvPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBSb3V0ZVJlZGlyZWN0KHJlZGlyZWN0VG8pO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BsYW5ldC1yZWRpcmVjdC10by1yb3V0ZScsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUmVkaXJlY3RUb1JvdXRlQ29tcG9uZW50IHtcbiAgICByb3V0ZVJlZGlyZWN0ID0gcm91dGVSZWRpcmVjdCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkaXJlY3RUb1JvdXRlKHJlZGlyZWN0VG86IHN0cmluZyk6IFJvdXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgY29tcG9uZW50OiBSZWRpcmVjdFRvUm91dGVDb21wb25lbnQsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHJlZGlyZWN0VG86IHJlZGlyZWN0VG9cbiAgICAgICAgfVxuICAgIH07XG59XG4iXX0=
@@ -1,41 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- export function eventListenerPatch(sandbox) {
3
- const rawAddEventListener = window.addEventListener;
4
- const rawRemoveEventListener = window.removeEventListener;
5
- const listenerSubscriptions = new Map();
6
- function addEventListener(type, listener, options) {
7
- const observable = new Observable(() => {
8
- rawAddEventListener.call(this, type, listener, options);
9
- return () => {
10
- rawRemoveEventListener.call(this, type, listener, options);
11
- };
12
- });
13
- const subscription = observable.subscribe(() => { });
14
- listenerSubscriptions.set(listener, subscription);
15
- }
16
- function removeEventListener(type, listener) {
17
- const subscription = listenerSubscriptions.get(listener);
18
- if (subscription) {
19
- subscription.unsubscribe();
20
- listenerSubscriptions.delete(listener);
21
- }
22
- }
23
- return {
24
- rewrite: {
25
- addEventListener: addEventListener.bind(window),
26
- removeEventListener: removeEventListener.bind(window)
27
- },
28
- init() {
29
- const fakeDocument = sandbox.global.document;
30
- if (fakeDocument) {
31
- fakeDocument.addEventListener = addEventListener.bind(document);
32
- fakeDocument.removeEventListener = removeEventListener.bind(document);
33
- }
34
- },
35
- destroy() {
36
- listenerSubscriptions.forEach(subscription => subscription.unsubscribe());
37
- listenerSubscriptions.clear();
38
- }
39
- };
40
- }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRMaXN0ZW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvc2FuZGJveC9wcm94eS9wYXRjaGVzL2V2ZW50TGlzdGVuZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFaEQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQTZCO0lBQzVELE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO0lBQ3BELE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO0lBQzFELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQW9ELENBQUM7SUFFMUYsU0FBUyxnQkFBZ0IsQ0FDckIsSUFBWSxFQUNaLFFBQTRDLEVBQzVDLE9BQTJDO1FBRTNDLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDeEQsT0FBTyxHQUFHLEVBQUU7Z0JBQ1Isc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQy9ELENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztRQUNwRCxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxTQUFTLG1CQUFtQixDQUFDLElBQVksRUFBRSxRQUE0QztRQUNuRixNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsSUFBSSxZQUFZLEVBQUU7WUFDZCxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IscUJBQXFCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDSCxPQUFPLEVBQUU7WUFDTCxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQy9DLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDeEQ7UUFDRCxJQUFJO1lBQ0EsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDN0MsSUFBSSxZQUFZLEVBQUU7Z0JBQ2QsWUFBWSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEUsWUFBWSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN6RTtRQUNMLENBQUM7UUFDRCxPQUFPO1lBQ0gscUJBQXFCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDMUUscUJBQXFCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEMsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FuZGJveFBhdGNoSGFuZGxlciwgUHJveHlTYW5kYm94SW5zdGFuY2UgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZW50TGlzdGVuZXJQYXRjaChzYW5kYm94OiBQcm94eVNhbmRib3hJbnN0YW5jZSk6IFNhbmRib3hQYXRjaEhhbmRsZXIge1xuICAgIGNvbnN0IHJhd0FkZEV2ZW50TGlzdGVuZXIgPSB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcjtcbiAgICBjb25zdCByYXdSZW1vdmVFdmVudExpc3RlbmVyID0gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXI7XG4gICAgY29uc3QgbGlzdGVuZXJTdWJzY3JpcHRpb25zID0gbmV3IE1hcDxFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0LCBTdWJzY3JpcHRpb24+KCk7XG5cbiAgICBmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgICB0eXBlOiBzdHJpbmcsXG4gICAgICAgIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0LFxuICAgICAgICBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZSgoKSA9PiB7XG4gICAgICAgICAgICByYXdBZGRFdmVudExpc3RlbmVyLmNhbGwodGhpcywgdHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICByYXdSZW1vdmVFdmVudExpc3RlbmVyLmNhbGwodGhpcywgdHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG9ic2VydmFibGUuc3Vic2NyaWJlKCgpID0+IHt9KTtcbiAgICAgICAgbGlzdGVuZXJTdWJzY3JpcHRpb25zLnNldChsaXN0ZW5lciwgc3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3QpIHtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gbGlzdGVuZXJTdWJzY3JpcHRpb25zLmdldChsaXN0ZW5lcik7XG4gICAgICAgIGlmIChzdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgbGlzdGVuZXJTdWJzY3JpcHRpb25zLmRlbGV0ZShsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICByZXdyaXRlOiB7XG4gICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBhZGRFdmVudExpc3RlbmVyLmJpbmQod2luZG93KSxcbiAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IHJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh3aW5kb3cpXG4gICAgICAgIH0sXG4gICAgICAgIGluaXQoKSB7XG4gICAgICAgICAgICBjb25zdCBmYWtlRG9jdW1lbnQgPSBzYW5kYm94Lmdsb2JhbC5kb2N1bWVudDtcbiAgICAgICAgICAgIGlmIChmYWtlRG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBmYWtlRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXIuYmluZChkb2N1bWVudCk7XG4gICAgICAgICAgICAgICAgZmFrZURvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZW1vdmVFdmVudExpc3RlbmVyLmJpbmQoZG9jdW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkZXN0cm95KCkge1xuICAgICAgICAgICAgbGlzdGVuZXJTdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgICAgIGxpc3RlbmVyU3Vic2NyaXB0aW9ucy5jbGVhcigpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiJdfQ==
@@ -1,132 +0,0 @@
1
- import { isObject } from '../../../helpers';
2
- import { RAW_NODE } from '../../constants';
3
- const rawHasOwnProperty = Object.prototype.hasOwnProperty;
4
- export function hasOwnProp(obj, key) {
5
- return rawHasOwnProperty.call(obj, key);
6
- }
7
- export function isValueDescriptor(desc) {
8
- if (desc === undefined) {
9
- return false;
10
- }
11
- return 'value' in desc || 'writable' in desc;
12
- }
13
- export function isAccessorDescriptor(desc) {
14
- if (desc === undefined) {
15
- return false;
16
- }
17
- return 'get' in desc || 'set' in desc;
18
- }
19
- export function isNonWriteableValue(desc) {
20
- return desc && desc.configurable === false && 'value' in desc && desc.writable === false;
21
- }
22
- export function isInvalidSetAccessor(desc) {
23
- if (desc && desc.configurable === false && 'set' in desc && desc.set === undefined) {
24
- return true;
25
- }
26
- else {
27
- return false;
28
- }
29
- }
30
- export function isInvalidGetAccessor(desc) {
31
- if (desc && desc.configurable === false && 'get' in desc && desc.get === undefined) {
32
- return true;
33
- }
34
- else {
35
- return false;
36
- }
37
- }
38
- function transferParams(args) {
39
- args = Array.isArray(args) ? args : Array.from(args);
40
- return args.map(arg => {
41
- return arg[RAW_NODE] ? arg[RAW_NODE] : arg;
42
- });
43
- }
44
- const buildInProps = ['length', 'caller', 'callee', 'arguments', 'prototype', Symbol.hasInstance];
45
- function transferProps(o, n) {
46
- for (const key of Reflect.ownKeys(o)) {
47
- if (buildInProps.includes(key)) {
48
- continue;
49
- }
50
- const desc = Object.getOwnPropertyDescriptor(n, key);
51
- if (desc && desc.writable) {
52
- n[key] = o[key];
53
- }
54
- }
55
- }
56
- export function bind(fn, context) {
57
- const fNOP = function () { };
58
- function bound() {
59
- const args = transferParams(arguments);
60
- if (this instanceof bound) {
61
- const obj = new fn(...args);
62
- Object.setPrototypeOf(obj, bound.prototype);
63
- return obj;
64
- }
65
- else {
66
- return fn.apply(context, args);
67
- }
68
- }
69
- bound.$native = fn;
70
- transferProps(fn, bound);
71
- if (fn.prototype) {
72
- fNOP.prototype = fn.prototype;
73
- }
74
- bound.prototype = new fNOP();
75
- if (Symbol.hasInstance) {
76
- Object.defineProperty(bound, Symbol.hasInstance, {
77
- configurable: true,
78
- value(instance) {
79
- const op = fn.prototype;
80
- return isObject(op) || typeof op === 'function' ? instance instanceof fn : false;
81
- }
82
- });
83
- }
84
- return bound;
85
- }
86
- export function createFakeObject(target, writableKeys) {
87
- const fakeObject = {};
88
- const propertyMap = {};
89
- const storageBox = Object.create(null);
90
- const propertyNames = Object.getOwnPropertyNames(target);
91
- const def = (p) => {
92
- const descriptor = Object.getOwnPropertyDescriptor(target, p);
93
- if (descriptor?.configurable) {
94
- const hasGetter = hasOwnProp(descriptor, 'get');
95
- const hasSetter = hasOwnProp(descriptor, 'set');
96
- const canWritable = writableKeys && writableKeys.length > 0 && writableKeys.includes(p);
97
- if (hasGetter) {
98
- descriptor.get = () => (hasOwnProp(storageBox, p) ? storageBox[p] : target[p]);
99
- }
100
- if (hasSetter) {
101
- descriptor.set = val => {
102
- storageBox[p] = val;
103
- return true;
104
- };
105
- }
106
- if (canWritable) {
107
- if (descriptor.writable === false) {
108
- descriptor.writable = true;
109
- }
110
- else if (hasGetter) {
111
- descriptor.set = val => {
112
- storageBox[p] = val;
113
- return true;
114
- };
115
- }
116
- }
117
- Object.defineProperty(fakeObject, p, Object.freeze(descriptor));
118
- }
119
- };
120
- propertyNames.forEach(p => {
121
- propertyMap[p] = true;
122
- def(p);
123
- });
124
- // 再次循环是为了处理原型链中的属性
125
- for (const prop in target) {
126
- if (!propertyMap[prop]) {
127
- def(prop);
128
- }
129
- }
130
- return fakeObject;
131
- }
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0L3NyYy9zYW5kYm94L3Byb3h5L3Byb3hpZXMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztBQUMxRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVEsRUFBRSxHQUFnQjtJQUNqRCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUF5QjtJQUN2RCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDcEIsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFDRCxPQUFPLE9BQU8sSUFBSSxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQXlCO0lBQzFELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUNwQixPQUFPLEtBQUssQ0FBQztLQUNoQjtJQUNELE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBeUI7SUFDekQsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQztBQUM3RixDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQXlCO0lBQzFELElBQUksSUFB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QUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgUkFXX05PREUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG5jb25zdCByYXdIYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5leHBvcnQgZnVuY3Rpb24gaGFzT3duUHJvcChvYmo6IGFueSwga2V5OiBQcm9wZXJ0eUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByYXdIYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsdWVEZXNjcmlwdG9yKGRlc2M/OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICd2YWx1ZScgaW4gZGVzYyB8fCAnd3JpdGFibGUnIGluIGRlc2M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FjY2Vzc29yRGVzY3JpcHRvcihkZXNjPzogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAnZ2V0JyBpbiBkZXNjIHx8ICdzZXQnIGluIGRlc2M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vbldyaXRlYWJsZVZhbHVlKGRlc2M/OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICByZXR1cm4gZGVzYyAmJiBkZXNjLmNvbmZpZ3VyYWJsZSA9PT0gZmFsc2UgJiYgJ3ZhbHVlJyBpbiBkZXNjICYmIGRlc2Mud3JpdGFibGUgPT09IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnZhbGlkU2V0QWNjZXNzb3IoZGVzYz86IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIGlmIChkZXNjICYmIGRlc2MuY29uZmlndXJhYmxlID09PSBmYWxzZSAmJiAnc2V0JyBpbiBkZXNjICYmIGRlc2Muc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW52YWxpZEdldEFjY2Vzc29yKGRlc2M/OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBpZiAoZGVzYyAmJiBkZXNjLmNvbmZpZ3VyYWJsZSA9PT0gZmFsc2UgJiYgJ2dldCcgaW4gZGVzYyAmJiBkZXNjLmdldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRyYW5zZmVyUGFyYW1zKGFyZ3M6IElBcmd1bWVudHMgfCBBcnJheTxhbnk+KSB7XG4gICAgYXJncyA9IEFycmF5LmlzQXJyYXkoYXJncykgPyBhcmdzIDogQXJyYXkuZnJvbShhcmdzKTtcbiAgICByZXR1cm4gYXJncy5tYXAoYXJnID0+IHtcbiAgICAgICAgcmV0dXJuIGFyZ1tSQVdfTk9ERV0gPyBhcmdbUkFXX05PREVdIDogYXJnO1xuICAgIH0pO1xufVxuXG5jb25zdCBidWlsZEluUHJvcHM6IFByb3BlcnR5S2V5W10gPSBbJ2xlbmd0aCcsICdjYWxsZXInLCAnY2FsbGVlJywgJ2FyZ3VtZW50cycsICdwcm90b3R5cGUnLCBTeW1ib2wuaGFzSW5zdGFuY2VdO1xuZnVuY3Rpb24gdHJhbnNmZXJQcm9wcyhvOiBGdW5jdGlvbiwgbjogRnVuY3Rpb24pIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBSZWZsZWN0Lm93bktleXMobykpIHtcbiAgICAgICAgaWYgKGJ1aWxkSW5Qcm9wcy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLCBrZXkpO1xuICAgICAgICBpZiAoZGVzYyAmJiBkZXNjLndyaXRhYmxlKSB7XG4gICAgICAgICAgICBuW2tleV0gPSBvW2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5kKGZuOiBhbnksIGNvbnRleHQ6IGFueSkge1xuICAgIGNvbnN0IGZOT1AgPSBmdW5jdGlvbigpIHt9O1xuICAgIGZ1bmN0aW9uIGJvdW5kKCkge1xuICAgICAgICBjb25zdCBhcmdzID0gdHJhbnNmZXJQYXJhbXMoYXJndW1lbnRzKTtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBib3VuZCkge1xuICAgICAgICAgICAgY29uc3Qgb2JqID0gbmV3IGZuKC4uLmFyZ3MpO1xuICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iaiwgYm91bmQucHJvdG90eXBlKTtcbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZm4uYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYm91bmQuJG5hdGl2ZSA9IGZuO1xuICAgIHRyYW5zZmVyUHJvcHMoZm4sIGJvdW5kKTtcbiAgICBpZiAoZm4ucHJvdG90eXBlKSB7XG4gICAgICAgIGZOT1AucHJvdG90eXBlID0gZm4ucHJvdG90eXBlO1xuICAgIH1cbiAgICBib3VuZC5wcm90b3R5cGUgPSBuZXcgZk5PUCgpO1xuICAgIGlmIChTeW1ib2wuaGFzSW5zdGFuY2UpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJvdW5kLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHtcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlKGluc3RhbmNlOiBhbnkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcCA9IGZuLnByb3RvdHlwZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNPYmplY3Qob3ApIHx8IHR5cGVvZiBvcCA9PT0gJ2Z1bmN0aW9uJyA/IGluc3RhbmNlIGluc3RhbmNlb2YgZm4gOiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBib3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZha2VPYmplY3QodGFyZ2V0OiBSZWNvcmQ8UHJvcGVydHlLZXksIGFueT4sIHdyaXRhYmxlS2V5cz86IFByb3BlcnR5S2V5W10pIHtcbiAgICBjb25zdCBmYWtlT2JqZWN0ID0ge307XG4gICAgY29uc3QgcHJvcGVydHlNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IGJvb2xlYW4+ID0ge307XG4gICAgY29uc3Qgc3RvcmFnZUJveCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgY29uc3QgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCk7XG4gICAgY29uc3QgZGVmID0gKHA6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHApO1xuICAgICAgICBpZiAoZGVzY3JpcHRvcj8uY29uZmlndXJhYmxlKSB7XG4gICAgICAgICAgICBjb25zdCBoYXNHZXR0ZXIgPSBoYXNPd25Qcm9wKGRlc2NyaXB0b3IsICdnZXQnKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NldHRlciA9IGhhc093blByb3AoZGVzY3JpcHRvciwgJ3NldCcpO1xuICAgICAgICAgICAgY29uc3QgY2FuV3JpdGFibGUgPSB3cml0YWJsZUtleXMgJiYgd3JpdGFibGVLZXlzLmxlbmd0aCA+IDAgJiYgd3JpdGFibGVLZXlzLmluY2x1ZGVzKHApO1xuICAgICAgICAgICAgaWYgKGhhc0dldHRlcikge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gKCkgPT4gKGhhc093blByb3Aoc3RvcmFnZUJveCwgcCkgPyBzdG9yYWdlQm94W3BdIDogdGFyZ2V0W3BdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoYXNTZXR0ZXIpIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldCA9IHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VCb3hbcF0gPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FuV3JpdGFibGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci53cml0YWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNHZXR0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvci5zZXQgPSB2YWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZUJveFtwXSA9IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmYWtlT2JqZWN0LCBwLCBPYmplY3QuZnJlZXplKGRlc2NyaXB0b3IpKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcHJvcGVydHlOYW1lcy5mb3JFYWNoKHAgPT4ge1xuICAgICAgICBwcm9wZXJ0eU1hcFtwXSA9IHRydWU7XG4gICAgICAgIGRlZihwKTtcbiAgICB9KTtcbiAgICAvLyDlho3mrKHlvqrnjq/mmK/kuLrkuoblpITnkIbljp/lnovpk77kuK3nmoTlsZ7mgKdcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gdGFyZ2V0KSB7XG4gICAgICAgIGlmICghcHJvcGVydHlNYXBbcHJvcF0pIHtcbiAgICAgICAgICAgIGRlZihwcm9wKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFrZU9iamVjdCBhcyBhbnk7XG59XG4iXX0=
@@ -1,126 +0,0 @@
1
- import { isFunction } from '../../../helpers';
2
- import { DOCUMENT_BIND_FN, PLANET_SANDBOX_DOCUMENT_WHITELIST, RAW_NODE } from '../../constants';
3
- import { hasOwnProp, createFakeObject, isInvalidSetAccessor, isNonWriteableValue, bind, isInvalidGetAccessor } from './common';
4
- const rawDocument = Document;
5
- const whitelist = ['cookie', 'title', 'location', ...(PLANET_SANDBOX_DOCUMENT_WHITELIST || [])];
6
- export class ProxyDocument {
7
- constructor() { }
8
- createGetter() {
9
- return (target, p, receiver) => {
10
- const value = hasOwnProp(target, p) ? Reflect.get(target, p, receiver) : Reflect.get(document, p);
11
- if (p === 'activeElement') {
12
- return Reflect.get(document, p);
13
- }
14
- // TODO: 处理动态节点
15
- // if (p === 'createElement') {
16
- // return function(tagName: string, options: ElementCreationOptions) {
17
- // const created = value.call(document, tagName, options);
18
- // if (isObject(created)) {
19
- // created[SANDBOX_INSTANCE] = sandbox;
20
- // }
21
- // return created;
22
- // };
23
- // }
24
- if (isFunction(value)) {
25
- let newValue = hasOwnProp(value, DOCUMENT_BIND_FN) ? value[DOCUMENT_BIND_FN] : null;
26
- if (!newValue) {
27
- newValue = bind(value, document);
28
- }
29
- const desc = Object.getOwnPropertyDescriptor(target, p);
30
- if (desc && isNonWriteableValue(desc)) {
31
- if (!Object.is(newValue, desc.value)) {
32
- return value;
33
- }
34
- }
35
- if (isInvalidGetAccessor(desc)) {
36
- return undefined;
37
- }
38
- value[DOCUMENT_BIND_FN] = newValue;
39
- return newValue;
40
- }
41
- return value;
42
- };
43
- }
44
- createSetter() {
45
- return (target, p, value, receiver) => {
46
- const desc = Object.getOwnPropertyDescriptor(whitelist.includes(p) ? document : receiver || target, p);
47
- if (desc && isNonWriteableValue(desc)) {
48
- if (Object.is(value, desc.value)) {
49
- return true;
50
- }
51
- else {
52
- return false;
53
- }
54
- }
55
- if (isInvalidSetAccessor(desc)) {
56
- return false;
57
- }
58
- return whitelist.includes(p) ? Reflect.set(document, p, value) : Reflect.set(target, p, value, receiver);
59
- };
60
- }
61
- createDefineProperty() {
62
- return (target, p, descriptor) => {
63
- return whitelist.includes(p)
64
- ? Reflect.defineProperty(document, p, descriptor)
65
- : Reflect.defineProperty(target, p, descriptor);
66
- };
67
- }
68
- create() {
69
- let proxyDocument = null;
70
- const fakeDocument = createFakeObject(document);
71
- const getter = this.createGetter();
72
- const fakeDocumentProto = new Proxy(fakeDocument, {
73
- get: (...args) => {
74
- return getter(...args);
75
- }
76
- });
77
- const fakeDocumentCtor = function Document() {
78
- if (!(this instanceof fakeDocumentCtor)) {
79
- throw new TypeError(`Failed to construct 'Document': Please use the 'new' operator.`);
80
- }
81
- const docInstance = new rawDocument();
82
- Object.setPrototypeOf(docInstance, fakeDocument);
83
- return docInstance;
84
- };
85
- fakeDocumentCtor.prototype = fakeDocumentProto;
86
- fakeDocumentCtor.prototype.constructor = fakeDocumentCtor;
87
- if (Symbol.hasInstance) {
88
- Object.defineProperty(fakeDocumentCtor, Symbol.hasInstance, {
89
- configurable: true,
90
- value(value) {
91
- let proto = value;
92
- if (proto === document) {
93
- return true;
94
- }
95
- while ((proto = Object.getPrototypeOf(proto))) {
96
- if (proto === fakeDocumentProto) {
97
- return true;
98
- }
99
- }
100
- const cloned = function () { };
101
- cloned.prototype = fakeDocument;
102
- return value instanceof cloned;
103
- }
104
- });
105
- }
106
- proxyDocument = new Proxy(Object.create(fakeDocumentProto, {
107
- currentScript: {
108
- value: null,
109
- writable: true
110
- },
111
- [RAW_NODE]: {
112
- writable: false,
113
- configurable: false,
114
- value: document
115
- }
116
- }), {
117
- set: this.createSetter(),
118
- defineProperty: this.createDefineProperty()
119
- });
120
- return {
121
- document: proxyDocument,
122
- Document: fakeDocumentCtor
123
- };
124
- }
125
- }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL3NhbmRib3gvcHJveHkvcHJveGllcy9kb2N1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hHLE9BQU8sRUFDSCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsSUFBSSxFQUNKLG9CQUFvQixFQUN2QixNQUFNLFVBQVUsQ0FBQztBQUVsQixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUM7QUFDN0IsTUFBTSxTQUFTLEdBQWtCLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLGlDQUFpQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFL0csTUFBTSxPQUFPLGFBQWE7SUFDdEIsZ0JBQWUsQ0FBQztJQUVSLFlBQVk7UUFDaEIsT0FBTyxDQUFDLE1BQVcsRUFBRSxDQUFjLEVBQUUsUUFBYyxFQUFFLEVBQUU7WUFDbkQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsRyxJQUFJLENBQUMsS0FBSyxlQUFlLEVBQUU7Z0JBQ3ZCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbkM7WUFDRCxlQUFlO1lBQ2YsK0JBQStCO1lBQy9CLDBF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Q0FBQztvQkFDN0IsTUFBTSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7b0JBQ2hDLE9BQU8sS0FBSyxZQUFZLE1BQU0sQ0FBQztnQkFDbkMsQ0FBQzthQUNKLENBQUMsQ0FBQztTQUNOO1FBQ0QsYUFBYSxHQUFHLElBQUksS0FBSyxDQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFO1lBQzdCLGFBQWEsRUFBRTtnQkFDWCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxRQUFRLEVBQUUsSUFBSTthQUNqQjtZQUNELENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLEtBQUssRUFBRSxRQUFRO2FBQ2xCO1NBQ0osQ0FBQyxFQUNGO1lBQ0ksR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDeEIsY0FBYyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtTQUM5QyxDQUNKLENBQUM7UUFDRixPQUFPO1lBQ0gsUUFBUSxFQUFFLGFBQWE7WUFDdkIsUUFBUSxFQUFFLGdCQUFnQjtTQUM3QixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgRE9DVU1FTlRfQklORF9GTiwgUExBTkVUX1NBTkRCT1hfRE9DVU1FTlRfV0hJVEVMSVNULCBSQVdfTk9ERSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIGhhc093blByb3AsXG4gICAgY3JlYXRlRmFrZU9iamVjdCxcbiAgICBpc0ludmFsaWRTZXRBY2Nlc3NvcixcbiAgICBpc05vbldyaXRlYWJsZVZhbHVlLFxuICAgIGJpbmQsXG4gICAgaXNJbnZhbGlkR2V0QWNjZXNzb3Jcbn0gZnJvbSAnLi9jb21tb24nO1xuXG5jb25zdCByYXdEb2N1bWVudCA9IERvY3VtZW50O1xuY29uc3Qgd2hpdGVsaXN0OiBQcm9wZXJ0eUtleVtdID0gWydjb29raWUnLCAndGl0bGUnLCAnbG9jYXRpb24nLCAuLi4oUExBTkVUX1NBTkRCT1hfRE9DVU1FTlRfV0hJVEVMSVNUIHx8IFtdKV07XG5cbmV4cG9ydCBjbGFzcyBQcm94eURvY3VtZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUdldHRlcigpIHtcbiAgICAgICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcDogUHJvcGVydHlLZXksIHJlY2VpdmVyPzogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGhhc093blByb3AodGFyZ2V0LCBwKSA/IFJlZmxlY3QuZ2V0KHRhcmdldCwgcCwgcmVjZWl2ZXIpIDogUmVmbGVjdC5nZXQoZG9jdW1lbnQsIHApO1xuICAgICAgICAgICAgaWYgKHAgPT09ICdhY3RpdmVFbGVtZW50Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldChkb2N1bWVudCwgcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUT0RPOiDlpITnkIbliqjmgIHoioLngrlcbiAgICAgICAgICAgIC8vIGlmIChwID09PSAnY3JlYXRlRWxlbWVudCcpIHtcbiAgICAgICAgICAgIC8vICAgICByZXR1cm4gZnVuY3Rpb24odGFnTmFtZTogc3RyaW5nLCBvcHRpb25zOiBFbGVtZW50Q3JlYXRpb25PcHRpb25zKSB7XG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnN0IGNyZWF0ZWQgPSB2YWx1ZS5jYWxsKGRvY3VtZW50LCB0YWdOYW1lLCBvcHRpb25zKTtcbiAgICAgICAgICAgIC8vICAgICAgICAgaWYgKGlzT2JqZWN0KGNyZWF0ZWQpKSB7XG4gICAgICAgICAgICAvLyAgICAgICAgICAgICBjcmVhdGVkW1NBTkRCT1hfSU5TVEFOQ0VdID0gc2FuZGJveDtcbiAgICAgICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAgICAgLy8gICAgICAgICByZXR1cm4gY3JlYXRlZDtcbiAgICAgICAgICAgIC8vICAgICB9O1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0gaGFzT3duUHJvcCh2YWx1ZSwgRE9DVU1FTlRfQklORF9GTikgPyB2YWx1ZVtET0NVTUVOVF9CSU5EX0ZOXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGJpbmQodmFsdWUsIGRvY3VtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwKTtcbiAgICAgICAgICAgICAgICBpZiAoZGVzYyAmJiBpc05vbldyaXRlYWJsZVZhbHVlKGRlc2MpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmlzKG5ld1ZhbHVlLCBkZXNjLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0ludmFsaWRHZXRBY2Nlc3NvcihkZXNjKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YWx1ZVtET0NVTUVOVF9CSU5EX0ZOXSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVNldHRlcigpIHtcbiAgICAgICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcDogUHJvcGVydHlLZXksIHZhbHVlOiBhbnksIHJlY2VpdmVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdoaXRlbGlzdC5pbmNsdWRlcyhwKSA/IGRvY3VtZW50IDogcmVjZWl2ZXIgfHwgdGFyZ2V0LCBwKTtcbiAgICAgICAgICAgIGlmIChkZXNjICYmIGlzTm9uV3JpdGVhYmxlVmFsdWUoZGVzYykpIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmlzKHZhbHVlLCBkZXNjLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzSW52YWxpZFNldEFjY2Vzc29yKGRlc2MpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdoaXRlbGlzdC5pbmNsdWRlcyhwKSA/IFJlZmxlY3Quc2V0KGRvY3VtZW50LCBwLCB2YWx1ZSkgOiBSZWZsZWN0LnNldCh0YXJnZXQsIHAsIHZhbHVlLCByZWNlaXZlcik7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZpbmVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcDogUHJvcGVydHlLZXksIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHdoaXRlbGlzdC5pbmNsdWRlcyhwKVxuICAgICAgICAgICAgICAgID8gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgcCwgZGVzY3JpcHRvcilcbiAgICAgICAgICAgICAgICA6IFJlZmxlY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwLCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjcmVhdGUoKSB7XG4gICAgICAgIGxldCBwcm94eURvY3VtZW50ID0gbnVsbDtcbiAgICAgICAgY29uc3QgZmFrZURvY3VtZW50ID0gY3JlYXRlRmFrZU9iamVjdChkb2N1bWVudCk7XG4gICAgICAgIGNvbnN0IGdldHRlciA9IHRoaXMuY3JlYXRlR2V0dGVyKCk7XG4gICAgICAgIGNvbnN0IGZha2VEb2N1bWVudFByb3RvID0gbmV3IFByb3h5KGZha2VEb2N1bWVudCwge1xuICAgICAgICAgICAgZ2V0OiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXR0ZXIoLi4uYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBmYWtlRG9jdW1lbnRDdG9yID0gZnVuY3Rpb24gRG9jdW1lbnQoKSB7XG4gICAgICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgZmFrZURvY3VtZW50Q3RvcikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBGYWlsZWQgdG8gY29uc3RydWN0ICdEb2N1bWVudCc6IFBsZWFzZSB1c2UgdGhlICduZXcnIG9wZXJhdG9yLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZG9jSW5zdGFuY2UgPSBuZXcgcmF3RG9jdW1lbnQoKTtcbiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihkb2NJbnN0YW5jZSwgZmFrZURvY3VtZW50KTtcbiAgICAgICAgICAgIHJldHVybiBkb2NJbnN0YW5jZTtcbiAgICAgICAgfTtcbiAgICAgICAgZmFrZURvY3VtZW50Q3Rvci5wcm90b3R5cGUgPSBmYWtlRG9jdW1lbnRQcm90bztcbiAgICAgICAgZmFrZURvY3VtZW50Q3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBmYWtlRG9jdW1lbnRDdG9yO1xuICAgICAgICBpZiAoU3ltYm9sLmhhc0luc3RhbmNlKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmFrZURvY3VtZW50Q3RvciwgU3ltYm9sLmhhc0luc3RhbmNlLCB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3RvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm90byA9PT0gZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICgocHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RvID09PSBmYWtlRG9jdW1lbnRQcm90bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lZCA9IGZ1bmN0aW9uKCkge307XG4gICAgICAgICAgICAgICAgICAgIGNsb25lZC5wcm90b3R5cGUgPSBmYWtlRG9jdW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIGNsb25lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBwcm94eURvY3VtZW50ID0gbmV3IFByb3h5KFxuICAgICAgICAgICAgT2JqZWN0LmNyZWF0ZShmYWtlRG9jdW1lbnRQcm90bywge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTY3JpcHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbUkFXX05PREVdOiB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRvY3VtZW50XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2V0OiB0aGlzLmNyZWF0ZVNldHRlcigpLFxuICAgICAgICAgICAgICAgIGRlZmluZVByb3BlcnR5OiB0aGlzLmNyZWF0ZURlZmluZVByb3BlcnR5KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRvY3VtZW50OiBwcm94eURvY3VtZW50LFxuICAgICAgICAgICAgRG9jdW1lbnQ6IGZha2VEb2N1bWVudEN0b3JcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=