@scion/workbench 17.0.0-beta.5 → 17.0.0-beta.7
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/esm2022/lib/common/class-list.mjs +61 -0
- package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +32 -0
- package/esm2022/lib/dialog/workbench-dialog.mjs +1 -1
- package/esm2022/lib/dialog/workbench-dialog.options.mjs +1 -1
- package/esm2022/lib/dialog//311/265workbench-dialog.mjs +2 -20
- package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +13 -16
- package/esm2022/lib/layout/workbench-layout.component.mjs +12 -12
- package/esm2022/lib/layout/workbench-layouts.util.mjs +30 -0
- package/esm2022/lib/logging/logger-names.mjs +8 -9
- package/esm2022/lib/logging/logger.mjs +1 -1
- package/esm2022/lib/logging//311/265logger.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +55 -0
- package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +32 -20
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +53 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +85 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +140 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +122 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +30 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +130 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +16 -28
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +7 -29
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +70 -124
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-workbench-view.model.mjs +23 -0
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +41 -0
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +30 -0
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +123 -0
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +98 -0
- package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +31 -35
- package/esm2022/lib/part/part-bar/part-bar.component.mjs +2 -1
- package/esm2022/lib/part/part.component.mjs +2 -1
- package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +37 -25
- package/esm2022/lib/part/view-tab/view-tab.component.mjs +4 -3
- package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +1 -1
- package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +1 -1
- package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +1 -1
- package/esm2022/lib/routing/public_api.mjs +1 -1
- package/esm2022/lib/routing/router.util.mjs +20 -43
- package/esm2022/lib/routing/routing.model.mjs +11 -0
- package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +1 -2
- package/esm2022/lib/routing/workbench-dialog-differ.mjs +51 -0
- package/esm2022/lib/routing/workbench-navigational-states.mjs +28 -18
- package/esm2022/lib/routing/workbench-route-data.mjs +6 -15
- package/esm2022/lib/routing/workbench-router-link.directive.mjs +2 -3
- package/esm2022/lib/routing/workbench-router.service.mjs +5 -5
- package/esm2022/lib/routing/workbench-url-observer.service.mjs +37 -12
- package/esm2022/lib/view/view.component.mjs +6 -9
- package/esm2022/lib/view/workbench-view.model.mjs +1 -1
- package/esm2022/lib/view//311/265workbench-view.model.mjs +34 -6
- package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +49 -0
- package/esm2022/lib/view-dnd/view-drag.service.mjs +1 -1
- package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +6 -6
- package/esm2022/lib/workbench.constants.mjs +6 -2
- package/fesm2022/scion-workbench.mjs +1065 -544
- package/fesm2022/scion-workbench.mjs.map +1 -1
- package/lib/common/class-list.d.ts +51 -0
- package/lib/common/grid-element-if-visible.pipe.d.ts +13 -0
- package/lib/dialog/workbench-dialog.d.ts +2 -6
- package/lib/dialog/workbench-dialog.options.d.ts +1 -1
- package/lib/dialog//311/265workbench-dialog.d.ts +2 -4
- package/lib/layout/main-area-layout/main-area-layout.component.d.ts +4 -7
- package/lib/layout/workbench-layout.component.d.ts +3 -3
- package/lib/layout/workbench-layouts.util.d.ts +10 -0
- package/lib/logging/logger-names.d.ts +7 -7
- package/lib/logging/logger.d.ts +5 -1
- package/lib/logging//311/265logger.d.ts +1 -1
- package/lib/microfrontend-platform/common/microfrontend.util.d.ts +22 -0
- package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +15 -9
- package/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.d.ts +11 -0
- package/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.d.ts +28 -0
- package/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.d.ts +52 -0
- package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +37 -0
- package/lib/microfrontend-platform/microfrontend-popup/{microfrontend-popup-capability-interceptor.service.d.ts → microfrontend-popup-capability-validator.interceptor.d.ts} +3 -3
- package/lib/microfrontend-platform/microfrontend-popup/{microfrontend-popup-intent-interceptor.service.d.ts → microfrontend-popup-intent-handler.interceptor.d.ts} +9 -6
- package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +7 -10
- package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +2 -9
- package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +8 -14
- package/lib/microfrontend-platform/microfrontend-view/microfrontend-workbench-view.model.d.ts +14 -0
- package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +10 -0
- package/lib/microfrontend-platform/routing/{microfrontend-view-capability-interceptor.service.d.ts → microfrontend-view-capability-validator.interceptor.d.ts} +3 -3
- package/lib/microfrontend-platform/routing/{microfrontend-view-intent-interceptor.service.d.ts → microfrontend-view-intent-handler.interceptor.d.ts} +6 -5
- package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +49 -0
- package/lib/microfrontend-platform/workbench-microfrontend-support.d.ts +1 -0
- package/lib/part/view-context-menu/view-menu.service.d.ts +3 -2
- package/lib/perspective/workbench-perspective-storage.service.d.ts +1 -1
- package/lib/perspective/workbench-perspective-view-conflict-resolver.service.d.ts +1 -1
- package/lib/routing/public_api.d.ts +2 -1
- package/lib/routing/router.util.d.ts +12 -20
- package/lib/routing/routing.model.d.ts +30 -0
- package/lib/routing/workbench-auxiliary-routes-registrator.service.d.ts +2 -3
- package/lib/routing/workbench-dialog-differ.d.ts +25 -0
- package/lib/routing/workbench-navigational-states.d.ts +16 -13
- package/lib/routing/workbench-route-data.d.ts +5 -13
- package/lib/routing/workbench-router.service.d.ts +7 -22
- package/lib/routing/workbench-url-observer.service.d.ts +13 -1
- package/lib/view/workbench-view.model.d.ts +9 -8
- package/lib/view//311/265workbench-view.model.d.ts +21 -2
- package/lib/view-dnd/grid-drop-targets.util.d.ts +22 -0
- package/lib/view-dnd/view-drag.service.d.ts +58 -47
- package/lib/workbench.constants.d.ts +4 -0
- package/package.json +2 -2
- package/esm2022/lib/common/grid-element-visible.pipe.mjs +0 -29
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-interceptor.service.mjs +0 -30
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-interceptor.service.mjs +0 -130
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-navigational-states.mjs +0 -22
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-routes.mjs +0 -71
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-interceptor.service.mjs +0 -54
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-interceptor.service.mjs +0 -123
- package/esm2022/lib/routing/navigation-state.resolver.mjs +0 -54
- package/lib/common/grid-element-visible.pipe.d.ts +0 -13
- package/lib/microfrontend-platform/routing/microfrontend-navigational-states.d.ts +0 -11
- package/lib/microfrontend-platform/routing/microfrontend-routes.d.ts +0 -38
- package/lib/routing/navigation-state.resolver.d.ts +0 -12
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { WorkbenchCapabilities } from '@scion/workbench-client';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Asserts view capabilities to have required properties and assigns each view capability a stable identifer required for persistent navigation.
|
|
6
|
+
*/
|
|
7
|
+
export class MicrofrontendViewCapabilityValidator {
|
|
8
|
+
async intercept(capability) {
|
|
9
|
+
if (capability.type !== WorkbenchCapabilities.View) {
|
|
10
|
+
return capability;
|
|
11
|
+
}
|
|
12
|
+
const viewCapability = capability;
|
|
13
|
+
// Assert the view capability to have a qualifier set.
|
|
14
|
+
if (!viewCapability.qualifier || !Object.keys(viewCapability.qualifier).length) {
|
|
15
|
+
throw Error(`[NullQualifierError] View capability requires a qualifier [capability=${JSON.stringify(viewCapability)}]`);
|
|
16
|
+
}
|
|
17
|
+
// Assert the view capability to have a path set.
|
|
18
|
+
const path = viewCapability.properties?.path;
|
|
19
|
+
if (path === undefined || path === null) {
|
|
20
|
+
throw Error(`[NullPathError] View capability requires a path to the microfrontend in its properties [capability=${JSON.stringify(viewCapability)}]`);
|
|
21
|
+
}
|
|
22
|
+
return capability;
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: MicrofrontendViewCapabilityValidator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
25
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: MicrofrontendViewCapabilityValidator }); }
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: MicrofrontendViewCapabilityValidator, decorators: [{
|
|
28
|
+
type: Injectable
|
|
29
|
+
}] });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9mcm9udGVuZC12aWV3LWNhcGFiaWxpdHktdmFsaWRhdG9yLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvbWljcm9mcm9udGVuZC1wbGF0Zm9ybS9yb3V0aW5nL21pY3JvZnJvbnRlbmQtdmlldy1jYXBhYmlsaXR5LXZhbGlkYXRvci5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxxQkFBcUIsRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFdkY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sb0NBQW9DO0lBRXhDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBc0I7UUFDM0MsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLElBQUksRUFBRTtZQUNsRCxPQUFPLFVBQVUsQ0FBQztTQUNuQjtRQUVELE1BQU0sY0FBYyxHQUFHLFVBQXFDLENBQUM7UUFDN0Qsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQzlFLE1BQU0sS0FBSyxDQUFDLHlFQUF5RSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6SDtRQUVELGlEQUFpRDtRQUNqRCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztRQUM3QyxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUN2QyxNQUFNLEtBQUssQ0FBQyxzR0FBc0csSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdEo7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOzhHQXBCVSxvQ0FBb0M7a0hBQXBDLG9DQUFvQzs7MkZBQXBDLG9DQUFvQztrQkFEaEQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDYXBhYmlsaXR5LCBDYXBhYmlsaXR5SW50ZXJjZXB0b3J9IGZyb20gJ0BzY2lvbi9taWNyb2Zyb250ZW5kLXBsYXRmb3JtJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dvcmtiZW5jaENhcGFiaWxpdGllcywgV29ya2JlbmNoVmlld0NhcGFiaWxpdHl9IGZyb20gJ0BzY2lvbi93b3JrYmVuY2gtY2xpZW50JztcblxuLyoqXG4gKiBBc3NlcnRzIHZpZXcgY2FwYWJpbGl0aWVzIHRvIGhhdmUgcmVxdWlyZWQgcHJvcGVydGllcyBhbmQgYXNzaWducyBlYWNoIHZpZXcgY2FwYWJpbGl0eSBhIHN0YWJsZSBpZGVudGlmZXIgcmVxdWlyZWQgZm9yIHBlcnNpc3RlbnQgbmF2aWdhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoLyogRE8gTk9UIFBST1ZJREUgdmlhICdwcm92aWRlZEluJyBtZXRhZGF0YSBhcyBvbmx5IHJlZ2lzdGVyZWQgaWYgbWljcm9mcm9udGVuZCBzdXBwb3J0IGlzIGVuYWJsZWQuICovKVxuZXhwb3J0IGNsYXNzIE1pY3JvZnJvbnRlbmRWaWV3Q2FwYWJpbGl0eVZhbGlkYXRvciBpbXBsZW1lbnRzIENhcGFiaWxpdHlJbnRlcmNlcHRvciB7XG5cbiAgcHVibGljIGFzeW5jIGludGVyY2VwdChjYXBhYmlsaXR5OiBDYXBhYmlsaXR5KTogUHJvbWlzZTxDYXBhYmlsaXR5PiB7XG4gICAgaWYgKGNhcGFiaWxpdHkudHlwZSAhPT0gV29ya2JlbmNoQ2FwYWJpbGl0aWVzLlZpZXcpIHtcbiAgICAgIHJldHVybiBjYXBhYmlsaXR5O1xuICAgIH1cblxuICAgIGNvbnN0IHZpZXdDYXBhYmlsaXR5ID0gY2FwYWJpbGl0eSBhcyBXb3JrYmVuY2hWaWV3Q2FwYWJpbGl0eTtcbiAgICAvLyBBc3NlcnQgdGhlIHZpZXcgY2FwYWJpbGl0eSB0byBoYXZlIGEgcXVhbGlmaWVyIHNldC5cbiAgICBpZiAoIXZpZXdDYXBhYmlsaXR5LnF1YWxpZmllciB8fCAhT2JqZWN0LmtleXModmlld0NhcGFiaWxpdHkucXVhbGlmaWVyKS5sZW5ndGgpIHtcbiAgICAgIHRocm93IEVycm9yKGBbTnVsbFF1YWxpZmllckVycm9yXSBWaWV3IGNhcGFiaWxpdHkgcmVxdWlyZXMgYSBxdWFsaWZpZXIgW2NhcGFiaWxpdHk9JHtKU09OLnN0cmluZ2lmeSh2aWV3Q2FwYWJpbGl0eSl9XWApO1xuICAgIH1cblxuICAgIC8vIEFzc2VydCB0aGUgdmlldyBjYXBhYmlsaXR5IHRvIGhhdmUgYSBwYXRoIHNldC5cbiAgICBjb25zdCBwYXRoID0gdmlld0NhcGFiaWxpdHkucHJvcGVydGllcz8ucGF0aDtcbiAgICBpZiAocGF0aCA9PT0gdW5kZWZpbmVkIHx8IHBhdGggPT09IG51bGwpIHtcbiAgICAgIHRocm93IEVycm9yKGBbTnVsbFBhdGhFcnJvcl0gVmlldyBjYXBhYmlsaXR5IHJlcXVpcmVzIGEgcGF0aCB0byB0aGUgbWljcm9mcm9udGVuZCBpbiBpdHMgcHJvcGVydGllcyBbY2FwYWJpbGl0eT0ke0pTT04uc3RyaW5naWZ5KHZpZXdDYXBhYmlsaXR5KX1dYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhcGFiaWxpdHk7XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2018-2022 Swiss Federal Railways
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made
|
|
5
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
*/
|
|
10
|
+
import { MessageClient, MessageHeaders, ResponseStatusCodes } from '@scion/microfrontend-platform';
|
|
11
|
+
import { Injectable } from '@angular/core';
|
|
12
|
+
import { WorkbenchCapabilities } from '@scion/workbench-client';
|
|
13
|
+
import { MicrofrontendViewRoutes } from './microfrontend-view-routes';
|
|
14
|
+
import { LoggerNames } from '../../logging';
|
|
15
|
+
import { Beans } from '@scion/toolkit/bean-manager';
|
|
16
|
+
import { Arrays, Dictionaries } from '@scion/toolkit/util';
|
|
17
|
+
import { MicrofrontendWorkbenchView } from '../microfrontend-view/microfrontend-workbench-view.model';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "../../routing/workbench-router.service";
|
|
20
|
+
import * as i2 from "../../view/workbench-view.registry";
|
|
21
|
+
import * as i3 from "../../logging";
|
|
22
|
+
/**
|
|
23
|
+
* Handles microfrontend view intents, instructing the workbench to navigate to the microfrontend of the resolved capability.
|
|
24
|
+
*
|
|
25
|
+
* View intents are handled in this interceptor and are not transported to the providing application, enabling support for applications
|
|
26
|
+
* that are not connected to the SCION Workbench.
|
|
27
|
+
*/
|
|
28
|
+
export class MicrofrontendViewIntentHandler {
|
|
29
|
+
constructor(_workbenchRouter, _viewRegistry, _logger) {
|
|
30
|
+
this._workbenchRouter = _workbenchRouter;
|
|
31
|
+
this._viewRegistry = _viewRegistry;
|
|
32
|
+
this._logger = _logger;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* View intents are handled in this interceptor and then swallowed.
|
|
36
|
+
*/
|
|
37
|
+
intercept(intentMessage, next) {
|
|
38
|
+
if (intentMessage.intent.type === WorkbenchCapabilities.View) {
|
|
39
|
+
return this.consumeViewIntent(intentMessage);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return next.handle(intentMessage);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async consumeViewIntent(message) {
|
|
46
|
+
const replyTo = message.headers.get(MessageHeaders.ReplyTo);
|
|
47
|
+
const success = await this.navigate(message);
|
|
48
|
+
await Beans.get(MessageClient).publish(replyTo, success, { headers: new Map().set(MessageHeaders.Status, ResponseStatusCodes.TERMINAL) });
|
|
49
|
+
}
|
|
50
|
+
async navigate(message) {
|
|
51
|
+
const viewCapability = message.capability;
|
|
52
|
+
const intent = message.intent;
|
|
53
|
+
const extras = message.body ?? {};
|
|
54
|
+
const intentParams = Dictionaries.withoutUndefinedEntries(Dictionaries.coerce(intent.params));
|
|
55
|
+
const { urlParams, transientParams } = MicrofrontendViewRoutes.splitParams(intentParams, viewCapability);
|
|
56
|
+
const targets = this.resolveTargets(message, extras);
|
|
57
|
+
const routerNavigateCommand = extras.close ? [] : MicrofrontendViewRoutes.createMicrofrontendNavigateCommands(viewCapability.metadata.id, urlParams);
|
|
58
|
+
this._logger.debug(() => `Navigating to: ${viewCapability.properties.path}`, LoggerNames.MICROFRONTEND_ROUTING, routerNavigateCommand, viewCapability, transientParams);
|
|
59
|
+
const navigations = await Promise.all(Arrays.coerce(targets).map(target => {
|
|
60
|
+
return this._workbenchRouter.navigate(routerNavigateCommand, {
|
|
61
|
+
target,
|
|
62
|
+
activate: extras.activate,
|
|
63
|
+
close: extras.close,
|
|
64
|
+
blankInsertionIndex: extras.blankInsertionIndex,
|
|
65
|
+
cssClass: extras.cssClass,
|
|
66
|
+
state: Dictionaries.withoutUndefinedEntries({
|
|
67
|
+
[MicrofrontendViewRoutes.STATE_TRANSIENT_PARAMS]: transientParams,
|
|
68
|
+
}),
|
|
69
|
+
});
|
|
70
|
+
}));
|
|
71
|
+
return navigations.every(Boolean);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Resolves the target(s) for this navigation.
|
|
75
|
+
*/
|
|
76
|
+
resolveTargets(intentMessage, extras) {
|
|
77
|
+
// Closing a microfrontend view by viewId is not allowed, as this would violate the concept of intent-based view navigation.
|
|
78
|
+
if (extras.close && extras.target) {
|
|
79
|
+
throw Error(`[WorkbenchRouterError][IllegalArgumentError] The target must be empty if closing a view [target=${(extras.target)}]`);
|
|
80
|
+
}
|
|
81
|
+
if (extras.close) {
|
|
82
|
+
return this.resolvePresentViewIds(intentMessage, { matchWildcardParams: true }) ?? [];
|
|
83
|
+
}
|
|
84
|
+
if (!extras.target || extras.target === 'auto') {
|
|
85
|
+
return this.resolvePresentViewIds(intentMessage) ?? 'blank';
|
|
86
|
+
}
|
|
87
|
+
return extras.target;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Resolves opened views which match the given view intent.
|
|
91
|
+
* A view matches if its view capability and all its required parameters are equal.
|
|
92
|
+
*
|
|
93
|
+
* Allows matching wildcard parameters by setting the option `matchWildcardParameters` to `true`.
|
|
94
|
+
*/
|
|
95
|
+
resolvePresentViewIds(intentMessage, options) {
|
|
96
|
+
const requiredParams = intentMessage.capability.params?.filter(param => param.required).map(param => param.name) ?? [];
|
|
97
|
+
const matchWildcardParams = options?.matchWildcardParams ?? false;
|
|
98
|
+
const viewIds = this._viewRegistry.views
|
|
99
|
+
.filter(view => {
|
|
100
|
+
const microfrontendWorkbenchView = view.adapt(MicrofrontendWorkbenchView);
|
|
101
|
+
if (!microfrontendWorkbenchView) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
// Test whether the capability matches.
|
|
105
|
+
if (microfrontendWorkbenchView.capability.metadata.id !== intentMessage.capability.metadata.id) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
// Test whether all "navigational" params match.
|
|
109
|
+
return requiredParams.every(name => {
|
|
110
|
+
const intentParamValue = intentMessage.intent.params.get(name);
|
|
111
|
+
return (matchWildcardParams && intentParamValue === '*') || intentParamValue === microfrontendWorkbenchView.params[name];
|
|
112
|
+
});
|
|
113
|
+
})
|
|
114
|
+
.map(view => view.id);
|
|
115
|
+
return viewIds.length ? viewIds : null;
|
|
116
|
+
}
|
|
117
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: MicrofrontendViewIntentHandler, deps: [{ token: i1.WorkbenchRouter }, { token: i2.WorkbenchViewRegistry }, { token: i3.Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
118
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: MicrofrontendViewIntentHandler }); }
|
|
119
|
+
}
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: MicrofrontendViewIntentHandler, decorators: [{
|
|
121
|
+
type: Injectable
|
|
122
|
+
}], ctorParameters: () => [{ type: i1.WorkbenchRouter }, { type: i2.WorkbenchViewRegistry }, { type: i3.Logger }] });
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9mcm9udGVuZC12aWV3LWludGVudC1oYW5kbGVyLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvbWljcm9mcm9udGVuZC1wbGF0Zm9ybS9yb3V0aW5nL21pY3JvZnJvbnRlbmQtdmlldy1pbnRlbnQtaGFuZGxlci5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBNEMsYUFBYSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzVJLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLHFCQUFxQixFQUFxRCxNQUFNLHlCQUF5QixDQUFDO0FBRWxILE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBUyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2xELE9BQU8sRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFekQsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sMERBQTBELENBQUM7Ozs7O0FBRXBHOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLDhCQUE4QjtJQUV6QyxZQUFvQixnQkFBaUMsRUFDakMsYUFBb0MsRUFDcEMsT0FBZTtRQUZmLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBQ3BDLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUyxDQUFDLGFBQTRCLEVBQUUsSUFBNEI7UUFDekUsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUU7WUFDNUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDOUM7YUFDSTtZQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBNkQ7UUFDM0YsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDLENBQUM7SUFDMUksQ0FBQztJQUVPLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBNkQ7UUFDbEYsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFVBQXFDLENBQUM7UUFDckUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM5QixNQUFNLE1BQU0sR0FBOEIsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFFN0QsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDOUYsTUFBTSxFQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUMsR0FBRyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZHLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxtQ0FBbUMsQ0FBQyxjQUFjLENBQUMsUUFBUyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUV0SixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLENBQUMscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3hLLE1BQU0sV0FBVyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN4RSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUU7Z0JBQzNELE1BQU07Z0JBQ04sUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO2dCQUN6QixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7Z0JBQ25CLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUI7Z0JBQy9DLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtnQkFDekIsS0FBSyxFQUFFLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQztvQkFDMUMsQ0FBQyx1QkFBdUIsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLGVBQWU7aUJBQ2xFLENBQUM7YUFDSCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNLLGNBQWMsQ0FBQyxhQUE0QixFQUFFLE1BQWlDO1FBQ3BGLDRIQUE0SDtRQUM1SCxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNqQyxNQUFNLEtBQUssQ0FBQyxtR0FBbUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BJO1FBQ0QsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsRUFBRSxFQUFDLG1CQUFtQixFQUFFLElBQUksRUFBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3JGO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUU7WUFDOUMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDLElBQUksT0FBTyxDQUFDO1NBQzdEO1FBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLHFCQUFxQixDQUFDLGFBQTRCLEVBQUUsT0FBeUM7UUFDbkcsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkgsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLEVBQUUsbUJBQW1CLElBQUksS0FBSyxDQUFDO1FBRWxFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSzthQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDYixNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7Z0JBQy9CLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCx1Q0FBdUM7WUFDdkMsSUFBSSwwQkFBMEIsQ0FBQyxVQUFVLENBQUMsUUFBUyxDQUFDLEVBQUUsS0FBSyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2hHLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxnREFBZ0Q7WUFDaEQsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNqQyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEUsT0FBTyxDQUFDLG1CQUFtQixJQUFJLGdCQUFnQixLQUFLLEdBQUcsQ0FBQyxJQUFJLGdCQUFnQixLQUFLLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQzthQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV4QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3pDLENBQUM7OEdBbkdVLDhCQUE4QjtrSEFBOUIsOEJBQThCOzsyRkFBOUIsOEJBQThCO2tCQUQxQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0hhbmRsZXIsIEludGVudEludGVyY2VwdG9yLCBJbnRlbnRNZXNzYWdlLCBNZXNzYWdlQ2xpZW50LCBNZXNzYWdlSGVhZGVycywgUmVzcG9uc2VTdGF0dXNDb2Rlc30gZnJvbSAnQHNjaW9uL21pY3JvZnJvbnRlbmQtcGxhdGZvcm0nO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V29ya2JlbmNoQ2FwYWJpbGl0aWVzLCBXb3JrYmVuY2hOYXZpZ2F0aW9uRXh0cmFzLCBXb3JrYmVuY2hWaWV3Q2FwYWJpbGl0eX0gZnJvbSAnQHNjaW9uL3dvcmtiZW5jaC1jbGllbnQnO1xuaW1wb3J0IHtXb3JrYmVuY2hSb3V0ZXJ9IGZyb20gJy4uLy4uL3JvdXRpbmcvd29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7TWljcm9mcm9udGVuZFZpZXdSb3V0ZXN9IGZyb20gJy4vbWljcm9mcm9udGVuZC12aWV3LXJvdXRlcyc7XG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyTmFtZXN9IGZyb20gJy4uLy4uL2xvZ2dpbmcnO1xuaW1wb3J0IHtCZWFuc30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvYmVhbi1tYW5hZ2VyJztcbmltcG9ydCB7QXJyYXlzLCBEaWN0aW9uYXJpZXN9IGZyb20gJ0BzY2lvbi90b29sa2l0L3V0aWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hWaWV3UmVnaXN0cnl9IGZyb20gJy4uLy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcucmVnaXN0cnknO1xuaW1wb3J0IHtNaWNyb2Zyb250ZW5kV29ya2JlbmNoVmlld30gZnJvbSAnLi4vbWljcm9mcm9udGVuZC12aWV3L21pY3JvZnJvbnRlbmQtd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuXG4vKipcbiAqIEhhbmRsZXMgbWljcm9mcm9udGVuZCB2aWV3IGludGVudHMsIGluc3RydWN0aW5nIHRoZSB3b3JrYmVuY2ggdG8gbmF2aWdhdGUgdG8gdGhlIG1pY3JvZnJvbnRlbmQgb2YgdGhlIHJlc29sdmVkIGNhcGFiaWxpdHkuXG4gKlxuICogVmlldyBpbnRlbnRzIGFyZSBoYW5kbGVkIGluIHRoaXMgaW50ZXJjZXB0b3IgYW5kIGFyZSBub3QgdHJhbnNwb3J0ZWQgdG8gdGhlIHByb3ZpZGluZyBhcHBsaWNhdGlvbiwgZW5hYmxpbmcgc3VwcG9ydCBmb3IgYXBwbGljYXRpb25zXG4gKiB0aGF0IGFyZSBub3QgY29ubmVjdGVkIHRvIHRoZSBTQ0lPTiBXb3JrYmVuY2guXG4gKi9cbkBJbmplY3RhYmxlKC8qIERPIE5PVCBQUk9WSURFIHZpYSAncHJvdmlkZWRJbicgbWV0YWRhdGEgYXMgb25seSByZWdpc3RlcmVkIGlmIG1pY3JvZnJvbnRlbmQgc3VwcG9ydCBpcyBlbmFibGVkLiAqLylcbmV4cG9ydCBjbGFzcyBNaWNyb2Zyb250ZW5kVmlld0ludGVudEhhbmRsZXIgaW1wbGVtZW50cyBJbnRlbnRJbnRlcmNlcHRvciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfd29ya2JlbmNoUm91dGVyOiBXb3JrYmVuY2hSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3ZpZXdSZWdpc3RyeTogV29ya2JlbmNoVmlld1JlZ2lzdHJ5LFxuICAgICAgICAgICAgICBwcml2YXRlIF9sb2dnZXI6IExvZ2dlcikge1xuICB9XG5cbiAgLyoqXG4gICAqIFZpZXcgaW50ZW50cyBhcmUgaGFuZGxlZCBpbiB0aGlzIGludGVyY2VwdG9yIGFuZCB0aGVuIHN3YWxsb3dlZC5cbiAgICovXG4gIHB1YmxpYyBpbnRlcmNlcHQoaW50ZW50TWVzc2FnZTogSW50ZW50TWVzc2FnZSwgbmV4dDogSGFuZGxlcjxJbnRlbnRNZXNzYWdlPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChpbnRlbnRNZXNzYWdlLmludGVudC50eXBlID09PSBXb3JrYmVuY2hDYXBhYmlsaXRpZXMuVmlldykge1xuICAgICAgcmV0dXJuIHRoaXMuY29uc3VtZVZpZXdJbnRlbnQoaW50ZW50TWVzc2FnZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKGludGVudE1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29uc3VtZVZpZXdJbnRlbnQobWVzc2FnZTogSW50ZW50TWVzc2FnZTxXb3JrYmVuY2hOYXZpZ2F0aW9uRXh0cmFzIHwgdW5kZWZpbmVkPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcGx5VG8gPSBtZXNzYWdlLmhlYWRlcnMuZ2V0KE1lc3NhZ2VIZWFkZXJzLlJlcGx5VG8pO1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB0aGlzLm5hdmlnYXRlKG1lc3NhZ2UpO1xuICAgIGF3YWl0IEJlYW5zLmdldChNZXNzYWdlQ2xpZW50KS5wdWJsaXNoKHJlcGx5VG8sIHN1Y2Nlc3MsIHtoZWFkZXJzOiBuZXcgTWFwKCkuc2V0KE1lc3NhZ2VIZWFkZXJzLlN0YXR1cywgUmVzcG9uc2VTdGF0dXNDb2Rlcy5URVJNSU5BTCl9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbmF2aWdhdGUobWVzc2FnZTogSW50ZW50TWVzc2FnZTxXb3JrYmVuY2hOYXZpZ2F0aW9uRXh0cmFzIHwgdW5kZWZpbmVkPik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHZpZXdDYXBhYmlsaXR5ID0gbWVzc2FnZS5jYXBhYmlsaXR5IGFzIFdvcmtiZW5jaFZpZXdDYXBhYmlsaXR5O1xuICAgIGNvbnN0IGludGVudCA9IG1lc3NhZ2UuaW50ZW50O1xuICAgIGNvbnN0IGV4dHJhczogV29ya2JlbmNoTmF2aWdhdGlvbkV4dHJhcyA9IG1lc3NhZ2UuYm9keSA/PyB7fTtcblxuICAgIGNvbnN0IGludGVudFBhcmFtcyA9IERpY3Rpb25hcmllcy53aXRob3V0VW5kZWZpbmVkRW50cmllcyhEaWN0aW9uYXJpZXMuY29lcmNlKGludGVudC5wYXJhbXMpKTtcbiAgICBjb25zdCB7dXJsUGFyYW1zLCB0cmFuc2llbnRQYXJhbXN9ID0gTWljcm9mcm9udGVuZFZpZXdSb3V0ZXMuc3BsaXRQYXJhbXMoaW50ZW50UGFyYW1zLCB2aWV3Q2FwYWJpbGl0eSk7XG4gICAgY29uc3QgdGFyZ2V0cyA9IHRoaXMucmVzb2x2ZVRhcmdldHMobWVzc2FnZSwgZXh0cmFzKTtcbiAgICBjb25zdCByb3V0ZXJOYXZpZ2F0ZUNvbW1hbmQgPSBleHRyYXMuY2xvc2UgPyBbXSA6IE1pY3JvZnJvbnRlbmRWaWV3Um91dGVzLmNyZWF0ZU1pY3JvZnJvbnRlbmROYXZpZ2F0ZUNvbW1hbmRzKHZpZXdDYXBhYmlsaXR5Lm1ldGFkYXRhIS5pZCwgdXJsUGFyYW1zKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiBgTmF2aWdhdGluZyB0bzogJHt2aWV3Q2FwYWJpbGl0eS5wcm9wZXJ0aWVzLnBhdGh9YCwgTG9nZ2VyTmFtZXMuTUlDUk9GUk9OVEVORF9ST1VUSU5HLCByb3V0ZXJOYXZpZ2F0ZUNvbW1hbmQsIHZpZXdDYXBhYmlsaXR5LCB0cmFuc2llbnRQYXJhbXMpO1xuICAgIGNvbnN0IG5hdmlnYXRpb25zID0gYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXlzLmNvZXJjZSh0YXJnZXRzKS5tYXAodGFyZ2V0ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl93b3JrYmVuY2hSb3V0ZXIubmF2aWdhdGUocm91dGVyTmF2aWdhdGVDb21tYW5kLCB7XG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgYWN0aXZhdGU6IGV4dHJhcy5hY3RpdmF0ZSxcbiAgICAgICAgY2xvc2U6IGV4dHJhcy5jbG9zZSxcbiAgICAgICAgYmxhbmtJbnNlcnRpb25JbmRleDogZXh0cmFzLmJsYW5rSW5zZXJ0aW9uSW5kZXgsXG4gICAgICAgIGNzc0NsYXNzOiBleHRyYXMuY3NzQ2xhc3MsXG4gICAgICAgIHN0YXRlOiBEaWN0aW9uYXJpZXMud2l0aG91dFVuZGVmaW5lZEVudHJpZXMoe1xuICAgICAgICAgIFtNaWNyb2Zyb250ZW5kVmlld1JvdXRlcy5TVEFURV9UUkFOU0lFTlRfUEFSQU1TXTogdHJhbnNpZW50UGFyYW1zLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgICByZXR1cm4gbmF2aWdhdGlvbnMuZXZlcnkoQm9vbGVhbik7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIHRhcmdldChzKSBmb3IgdGhpcyBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlVGFyZ2V0cyhpbnRlbnRNZXNzYWdlOiBJbnRlbnRNZXNzYWdlLCBleHRyYXM6IFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXMpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XG4gICAgLy8gQ2xvc2luZyBhIG1pY3JvZnJvbnRlbmQgdmlldyBieSB2aWV3SWQgaXMgbm90IGFsbG93ZWQsIGFzIHRoaXMgd291bGQgdmlvbGF0ZSB0aGUgY29uY2VwdCBvZiBpbnRlbnQtYmFzZWQgdmlldyBuYXZpZ2F0aW9uLlxuICAgIGlmIChleHRyYXMuY2xvc2UgJiYgZXh0cmFzLnRhcmdldCkge1xuICAgICAgdGhyb3cgRXJyb3IoYFtXb3JrYmVuY2hSb3V0ZXJFcnJvcl1bSWxsZWdhbEFyZ3VtZW50RXJyb3JdIFRoZSB0YXJnZXQgbXVzdCBiZSBlbXB0eSBpZiBjbG9zaW5nIGEgdmlldyBbdGFyZ2V0PSR7KGV4dHJhcy50YXJnZXQpfV1gKTtcbiAgICB9XG4gICAgaWYgKGV4dHJhcy5jbG9zZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVByZXNlbnRWaWV3SWRzKGludGVudE1lc3NhZ2UsIHttYXRjaFdpbGRjYXJkUGFyYW1zOiB0cnVlfSkgPz8gW107XG4gICAgfVxuICAgIGlmICghZXh0cmFzLnRhcmdldCB8fCBleHRyYXMudGFyZ2V0ID09PSAnYXV0bycpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc29sdmVQcmVzZW50Vmlld0lkcyhpbnRlbnRNZXNzYWdlKSA/PyAnYmxhbmsnO1xuICAgIH1cbiAgICByZXR1cm4gZXh0cmFzLnRhcmdldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBvcGVuZWQgdmlld3Mgd2hpY2ggbWF0Y2ggdGhlIGdpdmVuIHZpZXcgaW50ZW50LlxuICAgKiBBIHZpZXcgbWF0Y2hlcyBpZiBpdHMgdmlldyBjYXBhYmlsaXR5IGFuZCBhbGwgaXRzIHJlcXVpcmVkIHBhcmFtZXRlcnMgYXJlIGVxdWFsLlxuICAgKlxuICAgKiBBbGxvd3MgbWF0Y2hpbmcgd2lsZGNhcmQgcGFyYW1ldGVycyBieSBzZXR0aW5nIHRoZSBvcHRpb24gYG1hdGNoV2lsZGNhcmRQYXJhbWV0ZXJzYCB0byBgdHJ1ZWAuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVQcmVzZW50Vmlld0lkcyhpbnRlbnRNZXNzYWdlOiBJbnRlbnRNZXNzYWdlLCBvcHRpb25zPzoge21hdGNoV2lsZGNhcmRQYXJhbXM/OiBib29sZWFufSk6IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgY29uc3QgcmVxdWlyZWRQYXJhbXMgPSBpbnRlbnRNZXNzYWdlLmNhcGFiaWxpdHkucGFyYW1zPy5maWx0ZXIocGFyYW0gPT4gcGFyYW0ucmVxdWlyZWQpLm1hcChwYXJhbSA9PiBwYXJhbS5uYW1lKSA/PyBbXTtcbiAgICBjb25zdCBtYXRjaFdpbGRjYXJkUGFyYW1zID0gb3B0aW9ucz8ubWF0Y2hXaWxkY2FyZFBhcmFtcyA/PyBmYWxzZTtcblxuICAgIGNvbnN0IHZpZXdJZHMgPSB0aGlzLl92aWV3UmVnaXN0cnkudmlld3NcbiAgICAgIC5maWx0ZXIodmlldyA9PiB7XG4gICAgICAgIGNvbnN0IG1pY3JvZnJvbnRlbmRXb3JrYmVuY2hWaWV3ID0gdmlldy5hZGFwdChNaWNyb2Zyb250ZW5kV29ya2JlbmNoVmlldyk7XG4gICAgICAgIGlmICghbWljcm9mcm9udGVuZFdvcmtiZW5jaFZpZXcpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUZXN0IHdoZXRoZXIgdGhlIGNhcGFiaWxpdHkgbWF0Y2hlcy5cbiAgICAgICAgaWYgKG1pY3JvZnJvbnRlbmRXb3JrYmVuY2hWaWV3LmNhcGFiaWxpdHkubWV0YWRhdGEhLmlkICE9PSBpbnRlbnRNZXNzYWdlLmNhcGFiaWxpdHkubWV0YWRhdGEhLmlkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGVzdCB3aGV0aGVyIGFsbCBcIm5hdmlnYXRpb25hbFwiIHBhcmFtcyBtYXRjaC5cbiAgICAgICAgcmV0dXJuIHJlcXVpcmVkUGFyYW1zLmV2ZXJ5KG5hbWUgPT4ge1xuICAgICAgICAgIGNvbnN0IGludGVudFBhcmFtVmFsdWUgPSBpbnRlbnRNZXNzYWdlLmludGVudC5wYXJhbXMhLmdldChuYW1lKTtcbiAgICAgICAgICByZXR1cm4gKG1hdGNoV2lsZGNhcmRQYXJhbXMgJiYgaW50ZW50UGFyYW1WYWx1ZSA9PT0gJyonKSB8fCBpbnRlbnRQYXJhbVZhbHVlID09PSBtaWNyb2Zyb250ZW5kV29ya2JlbmNoVmlldy5wYXJhbXNbbmFtZV07XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5tYXAodmlldyA9PiB2aWV3LmlkKTtcblxuICAgIHJldHVybiB2aWV3SWRzLmxlbmd0aCA/IHZpZXdJZHMgOiBudWxsO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made
|
|
5
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
*/
|
|
10
|
+
import { PRIMARY_OUTLET, UrlSegment } from '@angular/router';
|
|
11
|
+
import { ɵMicrofrontendRouteParams } from '@scion/workbench-client';
|
|
12
|
+
import { inject, Injector, runInInjectionContext } from '@angular/core';
|
|
13
|
+
import { RouterUtils } from '../../routing/router.util';
|
|
14
|
+
import { WorkbenchNavigationalStates } from '../../routing/workbench-navigational-states';
|
|
15
|
+
/**
|
|
16
|
+
* Provides functions and constants specific to microfrontend routes.
|
|
17
|
+
*/
|
|
18
|
+
export const MicrofrontendViewRoutes = {
|
|
19
|
+
/**
|
|
20
|
+
* Prefix to identify a microfrontend route.
|
|
21
|
+
*/
|
|
22
|
+
ROUTE_PREFIX: '~',
|
|
23
|
+
/**
|
|
24
|
+
* Key for associating transient parameters with a navigation.
|
|
25
|
+
*/
|
|
26
|
+
STATE_TRANSIENT_PARAMS: 'transientParams',
|
|
27
|
+
/**
|
|
28
|
+
* Custom URL matcher for microfrontend URLs, enabling transient parameters to be provided as regular route parameters.
|
|
29
|
+
*
|
|
30
|
+
* A microfrontend route consists of two segments:
|
|
31
|
+
* 1. An identifier segment (`~`) to identify a microfrontend route.
|
|
32
|
+
* 2. Capability segment to identify the microfrontend capability.
|
|
33
|
+
*
|
|
34
|
+
* Parameters are included in the second segment as matrix parameters.
|
|
35
|
+
*
|
|
36
|
+
* Example URL: `~/a538d2a;param1=value1;param2=value
|
|
37
|
+
*
|
|
38
|
+
* @see MicrofrontendViewRoutes.createMicrofrontendNavigateCommands
|
|
39
|
+
*/
|
|
40
|
+
provideMicrofrontendRouteMatcher: () => {
|
|
41
|
+
const injector = inject(Injector);
|
|
42
|
+
return (segments, group, route) => {
|
|
43
|
+
if (!RouterUtils.isPrimaryRouteTarget(route.outlet ?? PRIMARY_OUTLET)) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
if (!MicrofrontendViewRoutes.isMicrofrontendRoute(segments)) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const viewState = runInInjectionContext(injector, () => WorkbenchNavigationalStates.resolveViewState(route.outlet));
|
|
50
|
+
const transientParams = viewState?.[MicrofrontendViewRoutes.STATE_TRANSIENT_PARAMS] ?? {};
|
|
51
|
+
const posParams = Object.entries(transientParams).map(([name, value]) => [name, new UrlSegment(value, {})]);
|
|
52
|
+
return {
|
|
53
|
+
consumed: segments,
|
|
54
|
+
posParams: {
|
|
55
|
+
...Object.fromEntries(posParams),
|
|
56
|
+
[ɵMicrofrontendRouteParams.ɵVIEW_CAPABILITY_ID]: segments[1],
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
},
|
|
61
|
+
/**
|
|
62
|
+
* Creates routing commands to navigate a microfrontend.
|
|
63
|
+
*
|
|
64
|
+
* Format: ['~', '<capabilityId>, {params}]
|
|
65
|
+
*
|
|
66
|
+
* @see MicrofrontendViewRoutes.provideMicrofrontendRouteMatcher
|
|
67
|
+
*/
|
|
68
|
+
createMicrofrontendNavigateCommands: (viewCapabilityId, params) => {
|
|
69
|
+
if (Object.keys(params).length) {
|
|
70
|
+
return [MicrofrontendViewRoutes.ROUTE_PREFIX, viewCapabilityId, params];
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
return [MicrofrontendViewRoutes.ROUTE_PREFIX, viewCapabilityId];
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
/**
|
|
77
|
+
* Tests given URL to be a microfrontend route.
|
|
78
|
+
*/
|
|
79
|
+
isMicrofrontendRoute: (segments) => {
|
|
80
|
+
return segments.length === 2 && segments[0].path === MicrofrontendViewRoutes.ROUTE_PREFIX;
|
|
81
|
+
},
|
|
82
|
+
/**
|
|
83
|
+
* Splits given params into URL and transient params.
|
|
84
|
+
*/
|
|
85
|
+
splitParams: (params, capability) => {
|
|
86
|
+
const transientParamNames = new Set(capability.params?.filter(param => param.transient).map(param => param.name));
|
|
87
|
+
return Object.entries(params).reduce((groups, [name, value]) => {
|
|
88
|
+
if (transientParamNames.has(name)) {
|
|
89
|
+
groups.transientParams[name] = value;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
groups.urlParams[name] = value;
|
|
93
|
+
}
|
|
94
|
+
return groups;
|
|
95
|
+
}, { urlParams: {}, transientParams: {} });
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9mcm9udGVuZC12aWV3LXJvdXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL21pY3JvZnJvbnRlbmQtcGxhdGZvcm0vcm91dGluZy9taWNyb2Zyb250ZW5kLXZpZXctcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFTLGNBQWMsRUFBcUMsVUFBVSxFQUFrQixNQUFNLGlCQUFpQixDQUFDO0FBQ3ZILE9BQU8sRUFBMEIseUJBQXlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRixPQUFPLEVBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFHeEY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUVyQzs7T0FFRztJQUNILFlBQVksRUFBRSxHQUFHO0lBRWpCOztPQUVHO0lBQ0gsc0JBQXNCLEVBQUUsaUJBQWlCO0lBRXpDOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGdDQUFnQyxFQUFFLEdBQWUsRUFBRTtRQUNqRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbEMsT0FBTyxDQUFDLFFBQXNCLEVBQUUsS0FBc0IsRUFBRSxLQUFZLEVBQXlCLEVBQUU7WUFDN0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLGNBQWMsQ0FBQyxFQUFFO2dCQUNyRSxPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUMzRCxPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3JILE1BQU0sZUFBZSxHQUFHLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFNUcsT0FBTztnQkFDTCxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsU0FBUyxFQUFFO29CQUNULEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7b0JBQ2hDLENBQUMseUJBQXlCLENBQUMsbUJBQW1CLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO2lCQUM3RDthQUNGLENBQUM7UUFDSixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsbUNBQW1DLEVBQUUsQ0FBQyxnQkFBd0IsRUFBRSxNQUFjLEVBQVksRUFBRTtRQUMxRixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQzlCLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekU7YUFDSTtZQUNILE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixFQUFFLENBQUMsUUFBc0IsRUFBVyxFQUFFO1FBQ3hELE9BQU8sUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyx1QkFBdUIsQ0FBQyxZQUFZLENBQUM7SUFDNUYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxFQUFFLENBQUMsTUFBYyxFQUFFLFVBQW1DLEVBQWdELEVBQUU7UUFDakgsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVsSCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDN0QsSUFBSSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO2FBQ3RDO2lCQUNJO2dCQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO2FBQ2hDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxFQUFFLEVBQUMsU0FBUyxFQUFFLEVBQVksRUFBRSxlQUFlLEVBQUUsRUFBWSxFQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ08sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtQYXJhbXMsIFBSSU1BUllfT1VUTEVULCBSb3V0ZSwgVXJsTWF0Y2hlciwgVXJsTWF0Y2hSZXN1bHQsIFVybFNlZ21lbnQsIFVybFNlZ21lbnRHcm91cH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7V29ya2JlbmNoVmlld0NhcGFiaWxpdHksIMm1TWljcm9mcm9udGVuZFJvdXRlUGFyYW1zfSBmcm9tICdAc2Npb24vd29ya2JlbmNoLWNsaWVudCc7XG5pbXBvcnQge2luamVjdCwgSW5qZWN0b3IsIHJ1bkluSW5qZWN0aW9uQ29udGV4dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlclV0aWxzfSBmcm9tICcuLi8uLi9yb3V0aW5nL3JvdXRlci51dGlsJztcbmltcG9ydCB7V29ya2JlbmNoTmF2aWdhdGlvbmFsU3RhdGVzfSBmcm9tICcuLi8uLi9yb3V0aW5nL3dvcmtiZW5jaC1uYXZpZ2F0aW9uYWwtc3RhdGVzJztcbmltcG9ydCB7Q29tbWFuZHN9IGZyb20gJy4uLy4uL3JvdXRpbmcvcm91dGluZy5tb2RlbCc7XG5cbi8qKlxuICogUHJvdmlkZXMgZnVuY3Rpb25zIGFuZCBjb25zdGFudHMgc3BlY2lmaWMgdG8gbWljcm9mcm9udGVuZCByb3V0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBNaWNyb2Zyb250ZW5kVmlld1JvdXRlcyA9IHtcblxuICAvKipcbiAgICogUHJlZml4IHRvIGlkZW50aWZ5IGEgbWljcm9mcm9udGVuZCByb3V0ZS5cbiAgICovXG4gIFJPVVRFX1BSRUZJWDogJ34nLFxuXG4gIC8qKlxuICAgKiBLZXkgZm9yIGFzc29jaWF0aW5nIHRyYW5zaWVudCBwYXJhbWV0ZXJzIHdpdGggYSBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgU1RBVEVfVFJBTlNJRU5UX1BBUkFNUzogJ3RyYW5zaWVudFBhcmFtcycsXG5cbiAgLyoqXG4gICAqIEN1c3RvbSBVUkwgbWF0Y2hlciBmb3IgbWljcm9mcm9udGVuZCBVUkxzLCBlbmFibGluZyB0cmFuc2llbnQgcGFyYW1ldGVycyB0byBiZSBwcm92aWRlZCBhcyByZWd1bGFyIHJvdXRlIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIEEgbWljcm9mcm9udGVuZCByb3V0ZSBjb25zaXN0cyBvZiB0d28gc2VnbWVudHM6XG4gICAqIDEuIEFuIGlkZW50aWZpZXIgc2VnbWVudCAoYH5gKSB0byBpZGVudGlmeSBhIG1pY3JvZnJvbnRlbmQgcm91dGUuXG4gICAqIDIuIENhcGFiaWxpdHkgc2VnbWVudCB0byBpZGVudGlmeSB0aGUgbWljcm9mcm9udGVuZCBjYXBhYmlsaXR5LlxuICAgKlxuICAgKiBQYXJhbWV0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGUgc2Vjb25kIHNlZ21lbnQgYXMgbWF0cml4IHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIEV4YW1wbGUgVVJMOiBgfi9hNTM4ZDJhO3BhcmFtMT12YWx1ZTE7cGFyYW0yPXZhbHVlXG4gICAqXG4gICAqIEBzZWUgTWljcm9mcm9udGVuZFZpZXdSb3V0ZXMuY3JlYXRlTWljcm9mcm9udGVuZE5hdmlnYXRlQ29tbWFuZHNcbiAgICovXG4gIHByb3ZpZGVNaWNyb2Zyb250ZW5kUm91dGVNYXRjaGVyOiAoKTogVXJsTWF0Y2hlciA9PiB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gICAgcmV0dXJuIChzZWdtZW50czogVXJsU2VnbWVudFtdLCBncm91cDogVXJsU2VnbWVudEdyb3VwLCByb3V0ZTogUm91dGUpOiBVcmxNYXRjaFJlc3VsdCB8IG51bGwgPT4ge1xuICAgICAgaWYgKCFSb3V0ZXJVdGlscy5pc1ByaW1hcnlSb3V0ZVRhcmdldChyb3V0ZS5vdXRsZXQgPz8gUFJJTUFSWV9PVVRMRVQpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKCFNaWNyb2Zyb250ZW5kVmlld1JvdXRlcy5pc01pY3JvZnJvbnRlbmRSb3V0ZShzZWdtZW50cykpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCB2aWV3U3RhdGUgPSBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IFdvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlcy5yZXNvbHZlVmlld1N0YXRlKHJvdXRlLm91dGxldCEpKTtcbiAgICAgIGNvbnN0IHRyYW5zaWVudFBhcmFtcyA9IHZpZXdTdGF0ZT8uW01pY3JvZnJvbnRlbmRWaWV3Um91dGVzLlNUQVRFX1RSQU5TSUVOVF9QQVJBTVNdID8/IHt9O1xuICAgICAgY29uc3QgcG9zUGFyYW1zID0gT2JqZWN0LmVudHJpZXModHJhbnNpZW50UGFyYW1zKS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IFtuYW1lLCBuZXcgVXJsU2VnbWVudCh2YWx1ZSwge30pXSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnN1bWVkOiBzZWdtZW50cyxcbiAgICAgICAgcG9zUGFyYW1zOiB7XG4gICAgICAgICAgLi4uT2JqZWN0LmZyb21FbnRyaWVzKHBvc1BhcmFtcyksXG4gICAgICAgICAgW8m1TWljcm9mcm9udGVuZFJvdXRlUGFyYW1zLsm1VklFV19DQVBBQklMSVRZX0lEXTogc2VnbWVudHNbMV0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH07XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgcm91dGluZyBjb21tYW5kcyB0byBuYXZpZ2F0ZSBhIG1pY3JvZnJvbnRlbmQuXG4gICAqXG4gICAqIEZvcm1hdDogWyd+JywgJzxjYXBhYmlsaXR5SWQ+LCB7cGFyYW1zfV1cbiAgICpcbiAgICogQHNlZSBNaWNyb2Zyb250ZW5kVmlld1JvdXRlcy5wcm92aWRlTWljcm9mcm9udGVuZFJvdXRlTWF0Y2hlclxuICAgKi9cbiAgY3JlYXRlTWljcm9mcm9udGVuZE5hdmlnYXRlQ29tbWFuZHM6ICh2aWV3Q2FwYWJpbGl0eUlkOiBzdHJpbmcsIHBhcmFtczogUGFyYW1zKTogQ29tbWFuZHMgPT4ge1xuICAgIGlmIChPYmplY3Qua2V5cyhwYXJhbXMpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtNaWNyb2Zyb250ZW5kVmlld1JvdXRlcy5ST1VURV9QUkVGSVgsIHZpZXdDYXBhYmlsaXR5SWQsIHBhcmFtc107XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuIFtNaWNyb2Zyb250ZW5kVmlld1JvdXRlcy5ST1VURV9QUkVGSVgsIHZpZXdDYXBhYmlsaXR5SWRdO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogVGVzdHMgZ2l2ZW4gVVJMIHRvIGJlIGEgbWljcm9mcm9udGVuZCByb3V0ZS5cbiAgICovXG4gIGlzTWljcm9mcm9udGVuZFJvdXRlOiAoc2VnbWVudHM6IFVybFNlZ21lbnRbXSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBzZWdtZW50cy5sZW5ndGggPT09IDIgJiYgc2VnbWVudHNbMF0ucGF0aCA9PT0gTWljcm9mcm9udGVuZFZpZXdSb3V0ZXMuUk9VVEVfUFJFRklYO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTcGxpdHMgZ2l2ZW4gcGFyYW1zIGludG8gVVJMIGFuZCB0cmFuc2llbnQgcGFyYW1zLlxuICAgKi9cbiAgc3BsaXRQYXJhbXM6IChwYXJhbXM6IFBhcmFtcywgY2FwYWJpbGl0eTogV29ya2JlbmNoVmlld0NhcGFiaWxpdHkpOiB7dXJsUGFyYW1zOiBQYXJhbXM7IHRyYW5zaWVudFBhcmFtczogUGFyYW1zfSA9PiB7XG4gICAgY29uc3QgdHJhbnNpZW50UGFyYW1OYW1lcyA9IG5ldyBTZXQoY2FwYWJpbGl0eS5wYXJhbXM/LmZpbHRlcihwYXJhbSA9PiBwYXJhbS50cmFuc2llbnQpLm1hcChwYXJhbSA9PiBwYXJhbS5uYW1lKSk7XG5cbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocGFyYW1zKS5yZWR1Y2UoKGdyb3VwcywgW25hbWUsIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKHRyYW5zaWVudFBhcmFtTmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIGdyb3Vwcy50cmFuc2llbnRQYXJhbXNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBncm91cHMudXJsUGFyYW1zW25hbWVdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZ3JvdXBzO1xuICAgIH0sIHt1cmxQYXJhbXM6IHt9IGFzIFBhcmFtcywgdHJhbnNpZW50UGFyYW1zOiB7fSBhcyBQYXJhbXN9KTtcbiAgfSxcbn0gYXMgY29uc3Q7XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018-
|
|
2
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made
|
|
5
5
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -13,20 +13,24 @@ import { MicrofrontendPlatformInitializer } from './initialization/microfrontend
|
|
|
13
13
|
import { APP_IDENTITY, IntentClient, ManifestService, MessageClient, MicrofrontendPlatformConfig, OutletRouter, PlatformPropertyService } from '@scion/microfrontend-platform';
|
|
14
14
|
import { MICROFRONTEND_PLATFORM_POST_STARTUP, WORKBENCH_STARTUP } from '../startup/workbench-initializer';
|
|
15
15
|
import { Beans } from '@scion/toolkit/bean-manager';
|
|
16
|
-
import { WorkbenchMessageBoxService, WorkbenchNotificationService, WorkbenchPopupService, WorkbenchRouter
|
|
16
|
+
import { WorkbenchDialogService, WorkbenchMessageBoxService, WorkbenchNotificationService, WorkbenchPopupService, WorkbenchRouter } from '@scion/workbench-client';
|
|
17
17
|
import { NgZoneObservableDecorator } from './initialization/ng-zone-observable-decorator';
|
|
18
18
|
import { MicrofrontendViewCommandHandler } from './microfrontend-view/microfrontend-view-command-handler.service';
|
|
19
19
|
import { MicrofrontendMessageBoxIntentHandler } from './microfrontend-message-box/microfrontend-message-box-intent-handler.service';
|
|
20
20
|
import { MicrofrontendNotificationIntentHandler } from './microfrontend-notification/microfrontend-notification-intent-handler.service';
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
21
|
+
import { MicrofrontendViewIntentHandler } from './routing/microfrontend-view-intent-handler.interceptor';
|
|
22
|
+
import { MicrofrontendPopupIntentHandler } from './microfrontend-popup/microfrontend-popup-intent-handler.interceptor';
|
|
23
23
|
import { WorkbenchHostManifestInterceptor } from './initialization/workbench-host-manifest-interceptor.service';
|
|
24
24
|
import { ROUTES } from '@angular/router';
|
|
25
25
|
import { MicrofrontendViewComponent } from './microfrontend-view/microfrontend-view.component';
|
|
26
|
-
import { MicrofrontendViewRoutes } from './routing/microfrontend-routes';
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
26
|
+
import { MicrofrontendViewRoutes } from './routing/microfrontend-view-routes';
|
|
27
|
+
import { MicrofrontendViewCapabilityValidator } from './routing/microfrontend-view-capability-validator.interceptor';
|
|
28
|
+
import { MicrofrontendViewCapabilityIdAssigner } from './routing/microfrontend-view-capability-id-assigner.interceptor';
|
|
29
|
+
import { MicrofrontendPopupCapabilityValidator } from './microfrontend-popup/microfrontend-popup-capability-validator.interceptor';
|
|
30
|
+
import { MicrofrontendDialogIntentHandler } from './microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor';
|
|
31
|
+
import { MicrofrontendDialogCapabilityValidator } from './microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor';
|
|
29
32
|
import { Defined } from '@scion/toolkit/util';
|
|
33
|
+
import './microfrontend-platform.config'; // DO NOT REMOVE to augment `MicrofrontendPlatformConfig` with `splash` property.
|
|
30
34
|
import * as i0 from "@angular/core";
|
|
31
35
|
import * as i1 from "../workbench-module-config";
|
|
32
36
|
/**
|
|
@@ -65,13 +69,16 @@ export function provideWorkbenchMicrofrontendSupport(workbenchModuleConfig) {
|
|
|
65
69
|
provide: MicrofrontendPlatformConfig,
|
|
66
70
|
useFactory: () => Defined.orElseThrow(inject(MicrofrontendPlatformInitializer).config, () => Error('[MicrofrontendPlatformError] Illegal state: Microfrontend platform configuration not loaded.')),
|
|
67
71
|
},
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
MicrofrontendViewIntentHandler,
|
|
73
|
+
MicrofrontendPopupIntentHandler,
|
|
74
|
+
MicrofrontendDialogIntentHandler,
|
|
75
|
+
MicrofrontendViewCapabilityValidator,
|
|
76
|
+
MicrofrontendViewCapabilityIdAssigner,
|
|
77
|
+
MicrofrontendPopupCapabilityValidator,
|
|
78
|
+
MicrofrontendDialogCapabilityValidator,
|
|
72
79
|
NgZoneObservableDecorator,
|
|
73
80
|
WorkbenchHostManifestInterceptor,
|
|
74
|
-
|
|
81
|
+
provideMicrofrontendRoute(),
|
|
75
82
|
provideMicrofrontendPlatformBeans(),
|
|
76
83
|
provideWorkbenchClientBeans(),
|
|
77
84
|
]);
|
|
@@ -112,35 +119,24 @@ function provideWorkbenchClientBeans() {
|
|
|
112
119
|
return makeEnvironmentProviders([
|
|
113
120
|
{ provide: WorkbenchRouter, useFactory: () => Beans.get(WorkbenchRouter) },
|
|
114
121
|
{ provide: WorkbenchPopupService, useFactory: () => Beans.get(WorkbenchPopupService) },
|
|
122
|
+
{ provide: WorkbenchDialogService, useFactory: () => Beans.get(WorkbenchDialogService) },
|
|
115
123
|
{ provide: WorkbenchMessageBoxService, useFactory: () => Beans.get(WorkbenchMessageBoxService) },
|
|
116
124
|
{ provide: WorkbenchNotificationService, useFactory: () => Beans.get(WorkbenchNotificationService) },
|
|
117
125
|
]);
|
|
118
126
|
}
|
|
119
127
|
/**
|
|
120
|
-
* Provides
|
|
128
|
+
* Provides the route for integrating microfrontends.
|
|
121
129
|
*/
|
|
122
|
-
function
|
|
123
|
-
// Define route for embedding the microfrontend of a view capability.
|
|
124
|
-
const viewMicrofrontendRoute = {
|
|
125
|
-
/*
|
|
126
|
-
* Format: '~;{qualifier}/<viewCapabilityId>;{params}'
|
|
127
|
-
* - '{qualifier}' as matrix params of the first URL segment (~)
|
|
128
|
-
* - '{params}' as matrix params of the second URL segment (viewCapabilityId)
|
|
129
|
-
*/
|
|
130
|
-
path: `${MicrofrontendViewRoutes.ROUTE_PREFIX}/:${ɵMicrofrontendRouteParams.ɵVIEW_CAPABILITY_ID}`,
|
|
131
|
-
component: MicrofrontendViewComponent,
|
|
132
|
-
/*
|
|
133
|
-
* In the microfrontend view integration, parameters can be marked as 'transient'. Transient parameters are not added as matrix
|
|
134
|
-
* parameters to the URL but passed via navigational state to the component by {@link NavigationStateResolver}. The component can
|
|
135
|
-
* access transient params as resolved data via `ActivatedRoute.data[WorkbenchRouteData.state][MicrofrontendNavigationalStates.transientParams]`.
|
|
136
|
-
*
|
|
137
|
-
* However, by default, the Angular router only runs resolvers when the route's path or matrix parameters change. For this reason, we configure
|
|
138
|
-
* the microfrontend route to always run resolvers, allowing the update of transient parameters without URL change.
|
|
139
|
-
*/
|
|
140
|
-
runGuardsAndResolvers: 'always',
|
|
141
|
-
};
|
|
130
|
+
function provideMicrofrontendRoute() {
|
|
142
131
|
return makeEnvironmentProviders([
|
|
143
|
-
{
|
|
132
|
+
{
|
|
133
|
+
provide: ROUTES,
|
|
134
|
+
multi: true,
|
|
135
|
+
useFactory: () => ({
|
|
136
|
+
matcher: MicrofrontendViewRoutes.provideMicrofrontendRouteMatcher(),
|
|
137
|
+
component: MicrofrontendViewComponent,
|
|
138
|
+
}),
|
|
139
|
+
},
|
|
144
140
|
]);
|
|
145
141
|
}
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLW1pY3JvZnJvbnRlbmQtc3VwcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL21pY3JvZnJvbnRlbmQtcGxhdGZvcm0vd29ya2JlbmNoLW1pY3JvZnJvbnRlbmQtc3VwcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pGLE9BQU8sRUFBdUIsTUFBTSxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSw2REFBNkQsQ0FBQztBQUM3RyxPQUFPLEVBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLDJCQUEyQixFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzdLLE9BQU8sRUFBQyxtQ0FBbUMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hHLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsNEJBQTRCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDcEssT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFFeEYsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0saUVBQWlFLENBQUM7QUFDaEgsT0FBTyxFQUFDLG9DQUFvQyxFQUFDLE1BQU0sOEVBQThFLENBQUM7QUFDbEksT0FBTyxFQUFDLHNDQUFzQyxFQUFDLE1BQU0sZ0ZBQWdGLENBQUM7QUFDdEksT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0s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bUJBQW1CLEVBQUU7UUFDakcsU0FBUyxFQUFFLDBCQUEwQjtRQUNyQzs7Ozs7OztXQU9HO1FBQ0gscUJBQXFCLEVBQUUsUUFBUTtLQUNoQyxDQUFDO0lBRUYsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QixFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUM7S0FDakUsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtNaWNyb2Zyb250ZW5kUGxhdGZvcm1Db25maWdMb2FkZXJ9IGZyb20gJy4vbWljcm9mcm9udGVuZC1wbGF0Zm9ybS1jb25maWctbG9hZGVyJztcbmltcG9ydCB7RW52aXJvbm1lbnRQcm92aWRlcnMsIGluamVjdCwgSW5qZWN0YWJsZSwgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWljcm9mcm9udGVuZFBsYXRmb3JtSW5pdGlhbGl6ZXJ9IGZyb20gJy4vaW5pdGlhbGl6YXRpb24vbWljcm9mcm9udGVuZC1wbGF0Zm9ybS1pbml0aWFsaXplci5zZXJ2aWNlJztcbmltcG9ydCB7QVBQX0lERU5USVRZLCBJbnRlbnRDbGllbnQsIE1hbmlmZXN0U2VydmljZSwgTWVzc2FnZUNsaWVudCwgTWljcm9mcm9udGVuZFBsYXRmb3JtQ29uZmlnLCBPdXRsZXRSb3V0ZXIsIFBsYXRmb3JtUHJvcGVydHlTZXJ2aWNlfSBmcm9tICdAc2Npb24vbWljcm9mcm9udGVuZC1wbGF0Zm9ybSc7XG5pbXBvcnQge01JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUE9TVF9TVEFSVFVQLCBXT1JLQkVOQ0hfU1RBUlRVUH0gZnJvbSAnLi4vc3RhcnR1cC93b3JrYmVuY2gtaW5pdGlhbGl6ZXInO1xuaW1wb3J0IHtCZWFuc30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvYmVhbi1tYW5hZ2VyJztcbmltcG9ydCB7V29ya2JlbmNoTWVzc2FnZUJveFNlcnZpY2UsIFdvcmtiZW5jaE5vdGlmaWNhdGlvblNlcnZpY2UsIFdvcmtiZW5jaFBvcHVwU2VydmljZSwgV29ya2JlbmNoUm91dGVyLCDJtU1pY3JvZnJvbnRlbmRSb3V0ZVBhcmFtc30gZnJvbSAnQHNjaW9uL3dvcmtiZW5jaC1jbGllbnQnO1xuaW1wb3J0IHtOZ1pvbmVPYnNlcnZhYmxlRGVjb3JhdG9yfSBmcm9tICcuL2luaXRpYWxpemF0aW9uL25nLXpvbmUtb2JzZXJ2YWJsZS1kZWNvcmF0b3InO1xuaW1wb3J0IHtXb3JrYmVuY2hNb2R1bGVDb25maWd9IGZyb20gJy4uL3dvcmtiZW5jaC1tb2R1bGUtY29uZmlnJztcbmltcG9ydCB7TWljcm9mcm9udGVuZFZpZXdDb21tYW5kSGFuZGxlcn0gZnJvbSAnLi9taWNyb2Zyb250ZW5kLXZpZXcvbWljcm9mcm9udGVuZC12aWV3LWNvbW1hbmQtaGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7TWljcm9mcm9udGVuZE1lc3NhZ2VCb3hJbnRlbnRIYW5kbGVyfSBmcm9tICcuL21pY3JvZnJvbnRlbmQtbWVzc2FnZS1ib3gvbWljcm9mcm9udGVuZC1tZXNzYWdlLWJveC1pbnRlbnQtaGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7TWljcm9mcm9udGVuZE5vdGlmaWNhdGlvbkludGVudEhhbmRsZXJ9IGZyb20gJy4vbWljcm9mcm9udGVuZC1ub3RpZmljYXRpb24vbWljcm9mcm9udGVuZC1ub3RpZmljYXRpb24taW50ZW50LWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQge01pY3JvZnJvbnRlbmRWaWV3SW50ZW50SW50ZXJjZXB0b3J9IGZyb20gJy4vcm91dGluZy9taWNyb2Zyb250ZW5kLXZpZXctaW50ZW50LWludGVyY2VwdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtNaWNyb2Zyb250ZW5kUG9wdXBJbnRlbnRJbnRlcmNlcHRvcn0gZnJvbSAnLi9taWNyb2Zyb250ZW5kLXBvcHVwL21pY3JvZnJvbnRlbmQtcG9wdXAtaW50ZW50LWludGVyY2VwdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hIb3N0TWFuaWZlc3RJbnRlcmNlcHRvcn0gZnJvbSAnLi9pbml0aWFsaXphdGlvbi93b3JrYmVuY2gtaG9zdC1tYW5pZmVzdC1pbnRlcmNlcHRvci5zZXJ2aWNlJztcbmltcG9ydCB7Um91dGUsIFJPVVRFU30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7TWljcm9mcm9udGVuZFZpZXdDb21wb25lbnR9IGZyb20gJy4vbWljcm9mcm9udGVuZC12aWV3L21pY3JvZnJvbnRlbmQtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtNaWNyb2Zyb250ZW5kVmlld1JvdXRlc30gZnJvbSAnLi9yb3V0aW5nL21pY3JvZnJvbnRlbmQtcm91dGVzJztcbmltcG9ydCB7TWljcm9mcm9udGVuZFZpZXdDYXBhYmlsaXR5SW50ZXJjZXB0b3J9IGZyb20gJy4vcm91dGluZy9taWNyb2Zyb250ZW5kLXZpZXctY2FwYWJpbGl0eS1pbnRlcmNlcHRvci5zZXJ2aWNlJztcbmltcG9ydCB7TWljcm9mcm9udGVuZFBvcHVwQ2FwYWJpbGl0eUludGVyY2VwdG9yfSBmcm9tICcuL21pY3JvZnJvbnRlbmQtcG9wdXAvbWljcm9mcm9udGVuZC1wb3B1cC1jYXBhYmlsaXR5LWludGVyY2VwdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtEZWZpbmVkfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcblxuLyoqXG4gKiBQcm92aWRlcyBhIHNldCBvZiBESSBwcm92aWRlcnMgdG8gc2V0IHVwIG1pY3JvZnJvbnRlbmQgc3VwcG9ydCBpbiB0aGUgd29ya2JlbmNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVdvcmtiZW5jaE1pY3JvZnJvbnRlbmRTdXBwb3J0KHdvcmtiZW5jaE1vZHVsZUNvbmZpZzogV29ya2JlbmNoTW9kdWxlQ29uZmlnKTogRW52aXJvbm1lbnRQcm92aWRlcnMgfCBbXSB7XG4gIGlmICghd29ya2JlbmNoTW9kdWxlQ29uZmlnLm1pY3JvZnJvbnRlbmRQbGF0Zm9ybSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFdPUktCRU5DSF9TVEFSVFVQLFxuICAgICAgdXNlRXhpc3Rpbmc6IE1pY3JvZnJvbnRlbmRQbGF0Zm9ybUluaXRpYWxpemVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBNaWNyb2Zyb250ZW5kUGxhdGZvcm1Db25maWdMb2FkZXIsXG4gICAgICB1c2VDbGFzczogdHlwZW9mIHdvcmtiZW5jaE1vZHVsZUNvbmZpZy5taWNyb2Zyb250ZW5kUGxhdGZvcm0gPT09ICdmdW5jdGlvbicgPyB3b3JrYmVuY2hNb2R1bGVDb25maWcubWljcm9mcm9udGVuZFBsYXRmb3JtIDogU3RhdGljTWljcm9mcm9udGVuZFBsYXRmb3JtQ29uZmlnTG9hZGVyLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTUlDUk9GUk9OVEVORF9QTEFURk9STV9QT1NUX1NUQVJUVVAsXG4gICAgICB1c2VDbGFzczogTWljcm9mcm9udGVuZFZpZXdDb21tYW5kSGFuZGxlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTUlDUk9GUk9OVEVORF9QTEFURk9STV9QT1NUX1NUQVJUVVAsXG4gICAgICB1c2VDbGFzczogTWljcm9mcm9udGVuZE1lc3NhZ2VCb3hJbnRlbnRIYW5kbGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBNSUNST0ZST05URU5EX1BMQVRGT1JNX1BPU1RfU1RBUlRVUCxcbiAgICAgIHVzZUNsYXNzOiBNaWNyb2Zyb250ZW5kTm90aWZpY2F0aW9uSW50ZW50SGFuZGxlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTWljcm9mcm9udGVuZFBsYXRmb3JtQ29uZmlnLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gRGVmaW5lZC5vckVsc2VUaHJvdyhpbmplY3QoTWljcm9mcm9udGVuZFBsYXRmb3JtSW5pdGlhbGl6ZXIpLmNvbmZpZywgKCkgPT4gRXJyb3IoJ1tNaWNyb2Zyb250ZW5kUGxhdGZvcm1FcnJvcl0gSWxsZWdhbCBzdGF0ZTogTWljcm9mcm9udGVuZCBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIG5vdCBsb2FkZWQuJykpLFxuICAgIH0sXG4gICAgTWljcm9mcm9udGVuZFZpZXdJbnRlbnRJbnRlcmNlcHRvcixcbiAgICBNaWNyb2Zyb250ZW5kUG9wdXBJbnRlbnRJbnRlcmNlcHRvcixcbiAgICBNaWNyb2Zyb250ZW5kVmlld0NhcGFiaWxpdHlJbnRlcmNlcHRvcixcbiAgICBNaWNyb2Zyb250ZW5kUG9wdXBDYXBhYmlsaXR5SW50ZXJjZXB0b3IsXG4gICAgTmdab25lT2JzZXJ2YWJsZURlY29yYXRvcixcbiAgICBXb3JrYmVuY2hIb3N0TWFuaWZlc3RJbnRlcmNlcHRvcixcbiAgICBwcm92aWRlTWljcm9mcm9udGVuZFJvdXRlcygpLFxuICAgIHByb3ZpZGVNaWNyb2Zyb250ZW5kUGxhdGZvcm1CZWFucygpLFxuICAgIHByb3ZpZGVXb3JrYmVuY2hDbGllbnRCZWFucygpLFxuICBdKTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyB7QGxpbmsgV29ya2JlbmNoTW9kdWxlQ29uZmlnLm1pY3JvZnJvbnRlbmRQbGF0Zm9ybX0gY29uZmlnIGFzIHBhc3NlZCB0byB7QGxpbmsgV29ya2JlbmNoTW9kdWxlLmZvclJvb3R9LlxuICovXG5ASW5qZWN0YWJsZSgvKiBETyBOT1QgUFJPVklERSB2aWEgJ3Byb3ZpZGVkSW4nIG1ldGFkYXRhIGFzIHJlZ2lzdGVyZWQgdW5kZXIgYE1pY3JvZnJvbnRlbmRQbGF0Zm9ybUNvbmZpZ0xvYWRlcmAgREkgdG9rZW4uICovKVxuY2xhc3MgU3RhdGljTWljcm9mcm9udGVuZFBsYXRmb3JtQ29uZmlnTG9hZGVyIGltcGxlbWVudHMgTWljcm9mcm9udGVuZFBsYXRmb3JtQ29uZmlnTG9hZGVyIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF93b3JrYmVuY2hNb2R1bGVDb25maWc6IFdvcmtiZW5jaE1vZHVsZUNvbmZpZykge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxNaWNyb2Zyb250ZW5kUGxhdGZvcm1Db25maWc+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya2JlbmNoTW9kdWxlQ29uZmlnLm1pY3JvZnJvbnRlbmRQbGF0Zm9ybSEgYXMgTWljcm9mcm9udGVuZFBsYXRmb3JtQ29uZmlnO1xuICB9XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYmVhbnMgb2YgQHNjaW9uL21pY3JvZnJvbnRlbmQtcGxhdGZvcm0gZm9yIERJLlxuICovXG5mdW5jdGlvbiBwcm92aWRlTWljcm9mcm9udGVuZFBsYXRmb3JtQmVhbnMoKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7cHJvdmlkZTogQVBQX0lERU5USVRZLCB1c2VGYWN0b3J5OiAoKSA9PiBCZWFucy5nZXQoQVBQX0lERU5USVRZKX0sXG4gICAge3Byb3ZpZGU6IE1lc3NhZ2VDbGllbnQsIHVzZUZhY3Rvcnk6ICgpID0+IEJlYW5zLmdldChNZXNzYWdlQ2xpZW50KX0sXG4gICAge3Byb3ZpZGU6IEludGVudENsaWVudCwgdXNlRmFjdG9yeTogKCkgPT4gQmVhbnMuZ2V0KEludGVudENsaWVudCl9LFxuICAgIHtwcm92aWRlOiBPdXRsZXRSb3V0ZXIsIHVzZUZhY3Rvcnk6ICgpID0+IEJlYW5zLmdldChPdXRsZXRSb3V0ZXIpfSxcbiAgICB7cHJvdmlkZTogTWFuaWZlc3RTZXJ2aWNlLCB1c2VGYWN0b3J5OiAoKSA9PiBCZWFucy5nZXQoTWFuaWZlc3RTZXJ2aWNlKX0sXG4gICAge3Byb3ZpZGU6IFBsYXRmb3JtUHJvcGVydHlTZXJ2aWNlLCB1c2VGYWN0b3J5OiAoKSA9PiBCZWFucy5nZXQoUGxhdGZvcm1Qcm9wZXJ0eVNlcnZpY2UpfSxcbiAgXSk7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYmVhbnMgb2YgQHNjaW9uL3dvcmtiZW5jaC1jbGllbnQgZm9yIERJLlxuICovXG5mdW5jdGlvbiBwcm92aWRlV29ya2JlbmNoQ2xpZW50QmVhbnMoKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7cHJvdmlkZTogV29ya2JlbmNoUm91dGVyLCB1c2VGYWN0b3J5OiAoKSA9PiBCZWFucy5nZXQoV29ya2JlbmNoUm91dGVyKX0sXG4gICAge3Byb3ZpZGU6IFdvcmtiZW5jaFBvcHVwU2VydmljZSwgdXNlRmFjdG9yeTogKCkgPT4gQmVhbnMuZ2V0KFdvcmtiZW5jaFBvcHVwU2VydmljZSl9LFxuICAgIHtwcm92aWRlOiBXb3JrYmVuY2hNZXNzYWdlQm94U2VydmljZSwgdXNlRmFjdG9yeTogKCkgPT4gQmVhbnMuZ2V0KFdvcmtiZW5jaE1lc3NhZ2VCb3hTZXJ2aWNlKX0sXG4gICAge3Byb3ZpZGU6IFdvcmtiZW5jaE5vdGlmaWNhdGlvblNlcnZpY2UsIHVzZUZhY3Rvcnk6ICgpID0+IEJlYW5zLmdldChXb3JrYmVuY2hOb3RpZmljYXRpb25TZXJ2aWNlKX0sXG4gIF0pO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIHJvdXRlcyB1c2VkIGZvciB0aGUgaW50ZWdyYXRpb24gb2YgbWljcm9mcm9udGVuZHMuXG4gKi9cbmZ1bmN0aW9uIHByb3ZpZGVNaWNyb2Zyb250ZW5kUm91dGVzKCk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgLy8gRGVmaW5lIHJvdXRlIGZvciBlbWJlZGRpbmcgdGhlIG1pY3JvZnJvbnRlbmQgb2YgYSB2aWV3IGNhcGFiaWxpdHkuXG4gIGNvbnN0IHZpZXdNaWNyb2Zyb250ZW5kUm91dGU6IFJvdXRlID0ge1xuICAgIC8qXG4gICAgICogRm9ybWF0OiAnfjt7cXVhbGlmaWVyfS88dmlld0NhcGFiaWxpdHlJZD47e3BhcmFtc30nXG4gICAgICogIC0gJ3txdWFsaWZpZXJ9JyBhcyBtYXRyaXggcGFyYW1zIG9mIHRoZSBmaXJzdCBVUkwgc2VnbWVudCAofilcbiAgICAgKiAgLSAne3BhcmFtc30nIGFzIG1hdHJpeCBwYXJhbXMgb2YgdGhlIHNlY29uZCBVUkwgc2VnbWVudCAodmlld0NhcGFiaWxpdHlJZClcbiAgICAgKi9cbiAgICBwYXRoOiBgJHtNaWNyb2Zyb250ZW5kVmlld1JvdXRlcy5ST1VURV9QUkVGSVh9Lzoke8m1TWljcm9mcm9udGVuZFJvdXRlUGFyYW1zLsm1VklFV19DQVBBQklMSVRZX0lEfWAsXG4gICAgY29tcG9uZW50OiBNaWNyb2Zyb250ZW5kVmlld0NvbXBvbmVudCxcbiAgICAvKlxuICAgICAqIEluIHRoZSBtaWNyb2Zyb250ZW5kIHZpZXcgaW50ZWdyYXRpb24sIHBhcmFtZXRlcnMgY2FuIGJlIG1hcmtlZCBhcyAndHJhbnNpZW50Jy4gVHJhbnNpZW50IHBhcmFtZXRlcnMgYXJlIG5vdCBhZGRlZCBhcyBtYXRyaXhcbiAgICAgKiBwYXJhbWV0ZXJzIHRvIHRoZSBVUkwgYnV0IHBhc3NlZCB2aWEgbmF2aWdhdGlvbmFsIHN0YXRlIHRvIHRoZSBjb21wb25lbnQgYnkge0BsaW5rIE5hdmlnYXRpb25TdGF0ZVJlc29sdmVyfS4gVGhlIGNvbXBvbmVudCBjYW5cbiAgICAgKiBhY2Nlc3MgdHJhbnNpZW50IHBhcmFtcyBhcyByZXNvbHZlZCBkYXRhIHZpYSBgQWN0aXZhdGVkUm91dGUuZGF0YVtXb3JrYmVuY2hSb3V0ZURhdGEuc3RhdGVdW01pY3JvZnJvbnRlbmROYXZpZ2F0aW9uYWxTdGF0ZXMudHJhbnNpZW50UGFyYW1zXWAuXG4gICAgICpcbiAgICAgKiBIb3dldmVyLCBieSBkZWZhdWx0LCB0aGUgQW5ndWxhciByb3V0ZXIgb25seSBydW5zIHJlc29sdmVycyB3aGVuIHRoZSByb3V0ZSdzIHBhdGggb3IgbWF0cml4IHBhcmFtZXRlcnMgY2hhbmdlLiBGb3IgdGhpcyByZWFzb24sIHdlIGNvbmZpZ3VyZVxuICAgICAqIHRoZSBtaWNyb2Zyb250ZW5kIHJvdXRlIHRvIGFsd2F5cyBydW4gcmVzb2x2ZXJzLCBhbGxvd2luZyB0aGUgdXBkYXRlIG9mIHRyYW5zaWVudCBwYXJhbWV0ZXJzIHdpdGhvdXQgVVJMIGNoYW5nZS5cbiAgICAgKi9cbiAgICBydW5HdWFyZHNBbmRSZXNvbHZlcnM6ICdhbHdheXMnLFxuICB9O1xuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHtwcm92aWRlOiBST1VURVMsIG11bHRpOiB0cnVlLCB1c2VWYWx1ZTogdmlld01pY3JvZnJvbnRlbmRSb3V0ZX0sXG4gIF0pO1xufVxuIl19
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLW1pY3JvZnJvbnRlbmQtc3VwcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL21pY3JvZnJvbnRlbmQtcGxhdGZvcm0vd29ya2JlbmNoLW1pY3JvZnJvbnRlbmQtc3VwcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pGLE9BQU8sRUFBdUIsTUFBTSxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSw2REFBNkQsQ0FBQztBQUM3RyxPQUFPLEVBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLDJCQUEyQixFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzdLLE9BQU8sRUFBQyxtQ0FBbUMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hHLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsMEJBQTBCLEVBQUUsNEJBQTRCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDakssT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFFeEYsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0saUVBQWlFLENBQUM7QUFDaEgsT0FBTyxFQUFDLG9DQUFvQyxFQUFDLE1BQU0sOEVBQThFLENBQUM7QUFDbEksT0FBTyxFQUFDLHNDQUFzQyxFQUFDLE1BQU0sZ0ZBQWdGLENBQUM7QUFDdEksT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0s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QUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLEVBQUM7UUFDOUYsRUFBQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsRUFBQztLQUNuRyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLHlCQUF5QjtJQUNoQyxPQUFPLHdCQUF3QixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxFQUFFLE1BQU07WUFDZixLQUFLLEVBQUUsSUFBSTtZQUNYLFVBQVUsRUFBRSxHQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QixPQUFPLEVBQUUsdUJBQXVCLENBQUMsZ0NBQWdDLEVBQUU7Z0JBQ25FLFNBQVMsRUFBRSwwQkFBMEI7YUFDdEMsQ0FBQztTQUNIO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtNaWNyb2Zyb250ZW5kUGxhdGZvcm1Db25maWdMb2FkZXJ9IGZyb20gJy4vbWljcm9mcm9udGVuZC1wbGF0Zm9ybS1jb25maWctbG9hZGVyJztcbmltcG9ydCB7RW52aXJvbm1lbnRQcm92aWRlcnMsIGluamVjdCwgSW5qZWN0YWJsZSwgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWljcm9mcm9udGVuZFBsYXRmb3JtSW5pdGlhbGl6ZXJ9IGZyb20gJy4vaW5pdGlhbGl6YXRpb24vbWljcm9mcm9udGVuZC1wbGF0Zm9ybS1pbml0aWFsaXplci5zZXJ2aWNlJztcbmltcG9ydCB7QVBQX0lERU5USVRZLCBJbnRlbnRDbGllbnQsIE1hbmlmZXN0U2VydmljZSwgTWVzc2FnZUNsaWVudCwgTWljcm9mcm9udGVuZFBsYXRmb3JtQ29uZmlnLCBPdXRsZXRSb3V0ZXIsIFBsYXRmb3JtUHJvcGVydHlTZXJ2aWNlfSBmcm9tICdAc2Npb24vbWljcm9mcm9udGVuZC1wbGF0Zm9ybSc7XG5pbXBvcnQge01JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUE9TVF9TVEFSVFVQLCBXT1JLQkVOQ0hfU1RBUlRVUH0gZnJvbSAnLi4vc3RhcnR1cC93b3JrYmVuY2gtaW5pdGlhbGl6ZXInO1xuaW1wb3J0IHtCZWFuc30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvYmVhbi1tYW5hZ2VyJztcbmltcG9ydCB7V29ya2JlbmNoRGlhbG9nU2VydmljZSwgV29ya2JlbmNoTWVzc2FnZUJveFNlcnZpY2UsIFdvcmtiZW5jaE5vdGlmaWNhdGlvblNlcnZpY2UsIFdvcmtiZW5jaFBvcHVwU2VydmljZSwgV29ya2JlbmNoUm91dGVyfSBmcm9tICdAc2Npb24vd29ya2JlbmNoLWNsaWVudCc7XG5pbXBvcnQge05nWm9uZU9ic2VydmFibGVEZWNvcmF0b3J9IGZyb20gJy4vaW5pdGlhbGl6YXRpb24vbmctem9uZS1vYnNlcnZhYmxlLWRlY29yYXRvcic7XG5pbXBvcnQge1dvcmtiZW5jaE1vZHVsZUNvbmZpZ30gZnJvbSAnLi4vd29ya2JlbmNoLW1vZHVsZS1jb25maWcnO1xuaW1wb3J0IHtNaWNyb2Zyb250ZW5kVmlld0NvbW1hbmRIYW5kbGVyfSBmcm9tICcuL21pY3JvZnJvbnRlbmQtdmlldy9taWNyb2Zyb250ZW5kLXZpZXctY29tbWFuZC1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtNaWNyb2Zyb250ZW5kTWVzc2FnZUJveEludGVudEhhbmRsZXJ9IGZyb20gJy4vbWljcm9mcm9udGVuZC1tZXNzYWdlLWJveC9taWNyb2Zyb250ZW5kLW1lc3NhZ2UtYm94LWludGVudC1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtNaWNyb2Zyb250ZW5kTm90aWZpY2F0aW9uSW50ZW50SGFuZGxlcn0gZnJvbSAnLi9taWNyb2Zyb250ZW5kLW5vdGlmaWNhdGlvbi9taWNyb2Zyb250ZW5kLW5vdGlmaWNhdGlvbi1pbnRlbnQtaGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7TWljcm9mcm9udGVuZFZpZXdJbnRlbnRIYW5kbGVyfSBmcm9tICcuL3JvdXRpbmcvbWljcm9mcm9udGVuZC12aWV3LWludGVudC1oYW5kbGVyLmludGVyY2VwdG9yJztcbmltcG9ydCB7TWljcm9mcm9udGVuZFBvcHVwSW50ZW50SGFuZGxlcn0gZnJvbSAnLi9taWNyb2Zyb250ZW5kLXBvcHVwL21pY3JvZnJvbnRlbmQtcG9wdXAtaW50ZW50LWhhbmRsZXIuaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtXb3JrYmVuY2hIb3N0TWFuaWZlc3RJbnRlcmNlcHRvcn0gZnJvbSAnLi9pbml0aWFsaXphdGlvbi93b3JrYmVuY2gtaG9zdC1tYW5pZmVzdC1pbnRlcmNlcHRvci5zZXJ2aWNlJztcbmltcG9ydCB7Um91dGUsIFJPVVRFU30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7TWljcm9mcm9udGVuZFZpZXdDb21wb25lbnR9IGZyb20gJy4vbWljcm9mcm9udGVuZC12aWV3L21pY3JvZnJvbnRlbmQtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtNaWNyb2Zyb250ZW5kVmlld1JvdXRlc30gZnJvbSAnLi9yb3V0aW5nL21pY3JvZnJvbnRlbmQtdmlldy1yb3V0ZXMnO1xuaW1wb3J0IHtNaWNyb2Zyb250ZW5kVmlld0NhcGFiaWxpdHlWYWxpZGF0b3J9IGZyb20gJy4vcm91dGluZy9taWNyb2Zyb250ZW5kLXZpZXctY2FwYWJpbGl0eS12YWxpZGF0b3IuaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtNaWNyb2Zyb250ZW5kVmlld0NhcGFiaWxpdHlJZEFzc2lnbmVyfSBmcm9tICcuL3JvdXRpbmcvbWljcm9mcm9udGVuZC12aWV3LWNhcGFiaWxpdHktaWQtYXNzaWduZXIuaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtNaWNyb2Zyb250ZW5kUG9wdXBDYXBhYmlsaXR5VmFsaWRhdG9yfSBmcm9tICcuL21pY3JvZnJvbnRlbmQtcG9wdXAvbWljcm9mcm9udGVuZC1wb3B1cC1jYXBhYmlsaXR5LXZhbGlkYXRvci5pbnRlcmNlcHRvcic7XG5pbXBvcnQge01pY3JvZnJvbnRlbmREaWFsb2dJbnRlbnRIYW5kbGVyfSBmcm9tICcuL21pY3JvZnJvbnRlbmQtZGlhbG9nL21pY3JvZnJvbnRlbmQtZGlhbG9nLWludGVudC1oYW5kbGVyLmludGVyY2VwdG9yJztcbmltcG9ydCB7TWljcm9mcm9udGVuZERpYWxvZ0NhcGFiaWxpdHlWYWxpZGF0b3J9IGZyb20gJy4vbWljcm9mcm9udGVuZC1kaWFsb2cvbWljcm9mcm9udGVuZC1kaWFsb2ctY2FwYWJpbGl0eS12YWxpZGF0b3IuaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtEZWZpbmVkfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcbmltcG9ydCAnLi9taWNyb2Zyb250ZW5kLXBsYXRmb3JtLmNvbmZpZyc7IC8vIERPIE5PVCBSRU1PVkUgdG8gYXVnbWVudCBgTWljcm9mcm9udGVuZFBsYXRmb3JtQ29uZmlnYCB3aXRoIGBzcGxhc2hgIHByb3BlcnR5LlxuXG4vKipcbiAqIFByb3ZpZGVzIGEgc2V0IG9mIERJIHByb3ZpZGVycyB0byBzZXQgdXAgbWljcm9mcm9udGVuZCBzdXBwb3J0IGluIHRoZSB3b3JrYmVuY2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlV29ya2JlbmNoTWljcm9mcm9udGVuZFN1cHBvcnQod29ya2JlbmNoTW9kdWxlQ29uZmlnOiBXb3JrYmVuY2hNb2R1bGVDb25maWcpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB8IFtdIHtcbiAgaWYgKCF3b3JrYmVuY2hNb2R1bGVDb25maWcubWljcm9mcm9udGVuZFBsYXRmb3JtKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAge1xuICAgICAgcHJvdmlkZTogV09SS0JFTkNIX1NUQVJUVVAsXG4gICAgICB1c2VFeGlzdGluZzogTWljcm9mcm9udGVuZFBsYXRmb3JtSW5pdGlhbGl6ZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1pY3JvZnJvbnRlbmRQbGF0Zm9ybUNvbmZpZ0xvYWRlcixcbiAgICAgIHVzZUNsYXNzOiB0eXBlb2Ygd29ya2JlbmNoTW9kdWxlQ29uZmlnLm1pY3JvZnJvbnRlbmRQbGF0Zm9ybSA9PT0gJ2Z1bmN0aW9uJyA/IHdvcmtiZW5jaE1vZHVsZUNvbmZpZy5taWNyb2Zyb250ZW5kUGxhdGZvcm0gOiBTdGF0aWNNaWNyb2Zyb250ZW5kUGxhdGZvcm1Db25maWdMb2FkZXIsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBNSUNST0ZST05URU5EX1BMQVRGT1JNX1BPU1RfU1RBUlRVUCxcbiAgICAgIHVzZUNsYXNzOiBNaWNyb2Zyb250ZW5kVmlld0NvbW1hbmRIYW5kbGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBNSUNST0ZST05URU5EX1BMQVRGT1JNX1BPU1RfU1RBUlRVUCxcbiAgICAgIHVzZUNsYXNzOiBNaWNyb2Zyb250ZW5kTWVzc2FnZUJveEludGVudEhhbmRsZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUE9TVF9TVEFSVFVQLFxuICAgICAgdXNlQ2xhc3M6IE1pY3JvZnJvbnRlbmROb3RpZmljYXRpb25JbnRlbnRIYW5kbGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBNaWNyb2Zyb250ZW5kUGxhdGZvcm1Db25maWcsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBEZWZpbmVkLm9yRWxzZVRocm93KGluamVjdChNaWNyb2Zyb250ZW5kUGxhdGZvcm1Jbml0aWFsaXplcikuY29uZmlnLCAoKSA9PiBFcnJvcignW01pY3JvZnJvbnRlbmRQbGF0Zm9ybUVycm9yXSBJbGxlZ2FsIHN0YXRlOiBNaWNyb2Zyb250ZW5kIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gbm90IGxvYWRlZC4nKSksXG4gICAgfSxcbiAgICBNaWNyb2Zyb250ZW5kVmlld0ludGVudEhhbmRsZXIsXG4gICAgTWljcm9mcm9udGVuZFBvcHVwSW50ZW50SGFuZGxlcixcbiAgICBNaWNyb2Zyb250ZW5kRGlhbG9nSW50ZW50SGFuZGxlcixcbiAgICBNaWNyb2Zyb250ZW5kVmlld0NhcGFiaWxpdHlWYWxpZGF0b3IsXG4gICAgTWljcm9mcm9udGVuZFZpZXdDYXBhYmlsaXR5SWRBc3NpZ25lcixcbiAgICBNaWNyb2Zyb250ZW5kUG9wdXBDYXBhYmlsaXR5VmFsaWRhdG9yLFxuICAgIE1pY3JvZnJvbnRlbmREaWFsb2dDYXBhYmlsaXR5VmFsaWRhdG9yLFxuICAgIE5nWm9uZU9ic2VydmFibGVEZWNvcmF0b3IsXG4gICAgV29ya2JlbmNoSG9zdE1hbmlmZXN0SW50ZXJjZXB0b3IsXG4gICAgcHJvdmlkZU1pY3JvZnJvbnRlbmRSb3V0ZSgpLFxuICAgIHByb3ZpZGVNaWNyb2Zyb250ZW5kUGxhdGZvcm1CZWFucygpLFxuICAgIHByb3ZpZGVXb3JrYmVuY2hDbGllbnRCZWFucygpLFxuICBdKTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyB7QGxpbmsgV29ya2JlbmNoTW9kdWxlQ29uZmlnLm1pY3JvZnJvbnRlbmRQbGF0Zm9ybX0gY29uZmlnIGFzIHBhc3NlZCB0byB7QGxpbmsgV29ya2JlbmNoTW9kdWxlLmZvclJvb3R9LlxuICovXG5ASW5qZWN0YWJsZSgvKiBETyBOT1QgUFJPVklERSB2aWEgJ3Byb3ZpZGVkSW4nIG1ldGFkYXRhIGFzIHJlZ2lzdGVyZWQgdW5kZXIgYE1pY3JvZnJvbnRlbmRQbGF0Zm9ybUNvbmZpZ0xvYWRlcmAgREkgdG9rZW4uICovKVxuY2xhc3MgU3RhdGljTWljcm9mcm9udGVuZFBsYXRmb3JtQ29uZmlnTG9hZGVyIGltcGxlbWVudHMgTWljcm9mcm9udGVuZFBsYXRmb3JtQ29uZmlnTG9hZGVyIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF93b3JrYmVuY2hNb2R1bGVDb25maWc6IFdvcmtiZW5jaE1vZHVsZUNvbmZpZykge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxNaWNyb2Zyb250ZW5kUGxhdGZvcm1Db25maWc+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya2JlbmNoTW9kdWxlQ29uZmlnLm1pY3JvZnJvbnRlbmRQbGF0Zm9ybSEgYXMgTWljcm9mcm9udGVuZFBsYXRmb3JtQ29uZmlnO1xuICB9XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYmVhbnMgb2YgQHNjaW9uL21pY3JvZnJvbnRlbmQtcGxhdGZvcm0gZm9yIERJLlxuICovXG5mdW5jdGlvbiBwcm92aWRlTWljcm9mcm9udGVuZFBsYXRmb3JtQmVhbnMoKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7cHJvdmlkZTogQVBQX0lERU5USVRZLCB1c2VGYWN0b3J5OiAoKSA9PiBCZWFucy5nZXQoQVBQX0lERU5USVRZKX0sXG4gICAge3Byb3ZpZGU6IE1lc3NhZ2VDbGllbnQsIHVzZUZhY3Rvcnk6ICgpID0+IEJlYW5zLmdldChNZXNzYWdlQ2xpZW50KX0sXG4gICAge3Byb3ZpZGU6IEludGVudENsaWVudCwgdXNlRmFjdG9yeTogKCkgPT4gQmVhbnMuZ2V0KEludGVudENsaWVudCl9LFxuICAgIHtwcm92aWRlOiBPdXRsZXRSb3V0ZXIsIHVzZUZhY3Rvcnk6ICgpID0+IEJlYW5zLmdldChPdXRsZXRSb3V0ZXIpfSxcbiAgICB7cHJvdmlkZTogTWFuaWZlc3RTZXJ2aWNlLCB1c2VGYWN0b3J5OiAoKSA9PiBCZWFucy5nZXQoTWFuaWZlc3RTZXJ2aWNlKX0sXG4gICAge3Byb3ZpZGU6IFBsYXRmb3JtUHJvcGVydHlTZXJ2aWNlLCB1c2VGYWN0b3J5OiAoKSA9PiBCZWFucy5nZXQoUGxhdGZvcm1Qcm9wZXJ0eVNlcnZpY2UpfSxcbiAgXSk7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYmVhbnMgb2YgQHNjaW9uL3dvcmtiZW5jaC1jbGllbnQgZm9yIERJLlxuICovXG5mdW5jdGlvbiBwcm92aWRlV29ya2JlbmNoQ2xpZW50QmVhbnMoKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7cHJvdmlkZTogV29ya2JlbmNoUm91dGVyLCB1c2VGYWN0b3J5OiAoKSA9PiBCZWFucy5nZXQoV29ya2JlbmNoUm91dGVyKX0sXG4gICAge3Byb3ZpZGU6IFdvcmtiZW5jaFBvcHVwU2VydmljZSwgdXNlRmFjdG9yeTogKCkgPT4gQmVhbnMuZ2V0KFdvcmtiZW5jaFBvcHVwU2VydmljZSl9LFxuICAgIHtwcm92aWRlOiBXb3JrYmVuY2hEaWFsb2dTZXJ2aWNlLCB1c2VGYWN0b3J5OiAoKSA9PiBCZWFucy5nZXQoV29ya2JlbmNoRGlhbG9nU2VydmljZSl9LFxuICAgIHtwcm92aWRlOiBXb3JrYmVuY2hNZXNzYWdlQm94U2VydmljZSwgdXNlRmFjdG9yeTogKCkgPT4gQmVhbnMuZ2V0KFdvcmtiZW5jaE1lc3NhZ2VCb3hTZXJ2aWNlKX0sXG4gICAge3Byb3ZpZGU6IFdvcmtiZW5jaE5vdGlmaWNhdGlvblNlcnZpY2UsIHVzZUZhY3Rvcnk6ICgpID0+IEJlYW5zLmdldChXb3JrYmVuY2hOb3RpZmljYXRpb25TZXJ2aWNlKX0sXG4gIF0pO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIHRoZSByb3V0ZSBmb3IgaW50ZWdyYXRpbmcgbWljcm9mcm9udGVuZHMuXG4gKi9cbmZ1bmN0aW9uIHByb3ZpZGVNaWNyb2Zyb250ZW5kUm91dGUoKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBST1VURVMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpOiBSb3V0ZSA9PiAoe1xuICAgICAgICBtYXRjaGVyOiBNaWNyb2Zyb250ZW5kVmlld1JvdXRlcy5wcm92aWRlTWljcm9mcm9udGVuZFJvdXRlTWF0Y2hlcigpLFxuICAgICAgICBjb21wb25lbnQ6IE1pY3JvZnJvbnRlbmRWaWV3Q29tcG9uZW50LFxuICAgICAgfSksXG4gICAgfSxcbiAgXSk7XG59XG4iXX0=
|