@sapui5/sap.ushell 1.140.0 → 1.141.1
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/package.json +2 -2
- package/src/main/js/sap/ushell/.library +1 -1
- package/src/main/js/sap/ushell/AppInfoParameters.js +1 -1
- package/src/main/js/sap/ushell/ApplicationType/UrlPostProcessing.js +0 -1
- package/src/main/js/sap/ushell/ApplicationType/guiResolution.js +6 -6
- package/src/main/js/sap/ushell/ApplicationType/systemAlias.js +22 -25
- package/src/main/js/sap/ushell/ApplicationType/urlResolution.js +12 -6
- package/src/main/js/sap/ushell/ApplicationType/urlTemplateResolution.js +277 -302
- package/src/main/js/sap/ushell/ApplicationType/wdaResolution.js +11 -10
- package/src/main/js/sap/ushell/ApplicationType.js +8 -8
- package/src/main/js/sap/ushell/Container.js +53 -55
- package/src/main/js/sap/ushell/EventHub.js +5 -7
- package/src/main/js/sap/ushell/Fiori20Adapter.js +17 -11
- package/src/main/js/sap/ushell/Fiori20AdapterTest.js +1 -1
- package/src/main/js/sap/ushell/NWBCInterface.js +1 -1
- package/src/main/js/sap/ushell/SessionHandler.js +1 -1
- package/src/main/js/sap/ushell/TechnicalParameters.js +5 -5
- package/src/main/js/sap/ushell/URLTemplateProcessor/DefinitionParameterSetBuilder.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/DependencyGraph.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/Functions.js +11 -4
- package/src/main/js/sap/ushell/URLTemplateProcessor/Resolvers.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/TemplateParameterParser.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/utils.js +13 -2
- package/src/main/js/sap/ushell/URLTemplateProcessor.js +13 -3
- package/src/main/js/sap/ushell/Ui5NativeServiceFactory.js +4 -2
- package/src/main/js/sap/ushell/Ui5ServiceFactory.js +29 -27
- package/src/main/js/sap/ushell/User.js +12 -12
- package/src/main/js/sap/ushell/UserActivityLog.js +3 -3
- package/src/main/js/sap/ushell/adapters/AppVariantPersonalizationAdapter.js +19 -15
- package/src/main/js/sap/ushell/adapters/cdm/ClientSideTargetResolutionAdapter.js +13 -10
- package/src/main/js/sap/ushell/adapters/cdm/CommonDataModelAdapter.js +15 -14
- package/src/main/js/sap/ushell/adapters/cdm/ConfigurationDefaultsAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/ContainerAdapter.js +3 -3
- package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +155 -129
- package/src/main/js/sap/ushell/adapters/cdm/PagesCommonDataModelAdapter.js +25 -23
- package/src/main/js/sap/ushell/adapters/cdm/PersonalizationAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/PersonalizationV2Adapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegion.controller.js +4 -4
- package/src/main/js/sap/ushell/adapters/cdm/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/modifyHome.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readCatalogs.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readHome.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/uri.transform.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_Personalization/internals.js +8 -13
- package/src/main/js/sap/ushell/adapters/cdm/util/AppForInbound.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/util/cdmSiteUtils.js +6 -3
- package/src/main/js/sap/ushell/adapters/cdm/v3/AdapterBase.js +42 -30
- package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +112 -97
- package/src/main/js/sap/ushell/adapters/cdm/v3/LaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readApplications.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readCatalogs.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readHome.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readPages.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readUtils.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readVisualizations.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/utilsCdm.js +5 -6
- package/src/main/js/sap/ushell/adapters/cep/MenuAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionInternalAdapter.js +10 -8
- package/src/main/js/sap/ushell/adapters/cep/SearchCEPAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cflp/UserDefaultParameterPersistenceAdapter.js +13 -14
- package/src/main/js/sap/ushell/adapters/local/AdapterContainer.js +162 -162
- package/src/main/js/sap/ushell/adapters/local/AppStateAdapter.js +14 -14
- package/src/main/js/sap/ushell/adapters/local/ClientSideTargetResolutionAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/FlpLaunchPageAdapter.js +22 -22
- package/src/main/js/sap/ushell/adapters/local/LaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/MenuAdapter.js +4 -4
- package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionInternalAdapter.js +4 -4
- package/src/main/js/sap/ushell/adapters/local/PageBuildingAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/PagePersistenceAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/PersonalizationAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/PersonalizationV2Adapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/SearchAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/SearchCEPAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/SupportTicketAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/UserDefaultParameterPersistenceAdapter.js +14 -14
- package/src/main/js/sap/ushell/adapters/local/UserInfoAdapter.js +8 -13
- package/src/main/js/sap/ushell/api/common/ComponentInstantiation.js +5 -5
- package/src/main/js/sap/ushell/api/performance/Extension.js +2 -2
- package/src/main/js/sap/ushell/api/performance/NavigationSource.js +8 -8
- package/src/main/js/sap/ushell/appIntegration/AppLifeCycle.js +48 -81
- package/src/main/js/sap/ushell/appIntegration/ApplicationContainer.js +7 -35
- package/src/main/js/sap/ushell/appIntegration/ApplicationContainerCache.js +9 -6
- package/src/main/js/sap/ushell/appIntegration/IframeApplicationContainer.js +31 -7
- package/src/main/js/sap/ushell/appIntegration/IframeApplicationContainerRenderer.js +0 -3
- package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/AppInfoHandler.js +8 -5
- package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/AppStateHandler.js +1 -1
- package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/BookmarkHandler.js +15 -11
- package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/LifecycleHandler.js +21 -1
- package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/MessageBrokerHandler.js +110 -17
- package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/SessionHandler.js +20 -4
- package/src/main/js/sap/ushell/appIntegration/PostMessageManager.js +26 -12
- package/src/main/js/sap/ushell/appIntegration/UI5ApplicationContainer.js +0 -1
- package/src/main/js/sap/ushell/appIntegration/contracts/EmbeddedUI5Handler.js +2 -23
- package/src/main/js/sap/ushell/appIntegration/contracts/StatefulContainerV1Handler.js +0 -3
- package/src/main/js/sap/ushell/appIntegration/contracts/StatefulContainerV2Handler.js +1 -3
- package/src/main/js/sap/ushell/appRuntime/ui5/AppCommunicationMgr.js +11 -10
- package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +3 -3
- package/src/main/js/sap/ushell/appRuntime/ui5/SessionHandlerAgent.js +3 -3
- package/src/main/js/sap/ushell/appRuntime/ui5/libsPreload.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/performance/FesrEnhancer.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/AppLifeCycleUtils.js +11 -3
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/BaseRTAPluginStatus.js +9 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/CheckConditions.js +18 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/Renderer.js +6 -0
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/Trigger.js +6 -0
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/rtaShell/Component.js +2 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/RendererExtensions.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppConfiguration.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycle.js +3 -3
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycleAgent.js +7 -6
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppState.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Bookmark.js +3 -3
- package/src/main/js/sap/ushell/appRuntime/ui5/services/BookmarkV2.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/CommonDataModel.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Container.js +5 -3
- package/src/main/js/sap/ushell/appRuntime/ui5/services/CrossApplicationNavigation.js +75 -18
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension/Item.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/FlpLaunchPage.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/FrameBoundExtension.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/LaunchPage.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker/Client.js +114 -0
- package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker.js +155 -56
- package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolution.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolutionInternal.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Navigation.js +17 -21
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ReferenceResolver.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigation.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigationInternal.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellUIService.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/UserInfo.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/ContainerAdapter.js +4 -3
- package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/FLPLoader.js +1 -3
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/logger.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/state.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent.js +21 -22
- package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5datetimeformat.js +5 -5
- package/src/main/js/sap/ushell/bootstrap/common/common.debug.mode.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.load.core-min.js +14 -2
- package/src/main/js/sap/ushell/bootstrap/common/common.load.script.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.read.metatags.js +2 -2
- package/src/main/js/sap/ushell/bootstrap/common/common.util.js +2 -2
- package/src/main/js/sap/ushell/bootstrap/sandbox2/sandbox.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/sandbox2.js +1 -1
- package/src/main/js/sap/ushell/components/CatalogsManager.js +3 -3
- package/src/main/js/sap/ushell/components/HomepageManager.js +120 -117
- package/src/main/js/sap/ushell/components/SharedComponentUtils.js +24 -13
- package/src/main/js/sap/ushell/components/_HomepageManager/PersistentPageOperationAdapter.js +17 -17
- package/src/main/js/sap/ushell/components/_HomepageManager/TransientPageOperationAdapter.js +4 -4
- package/src/main/js/sap/ushell/components/appfinder/AppFinder.controller.js +6 -3
- package/src/main/js/sap/ushell/components/appfinder/Catalog.controller.js +2 -2
- package/src/main/js/sap/ushell/components/appfinder/CatalogView.js +3 -3
- package/src/main/js/sap/ushell/components/appfinder/EasyAccess.controller.js +119 -108
- package/src/main/js/sap/ushell/components/appfinder/HierarchyAppsView.js +2 -2
- package/src/main/js/sap/ushell/components/appfinder/HierarchyFolders.controller.js +17 -15
- package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/cards/Configuration.controller.js +35 -33
- package/src/main/js/sap/ushell/components/cards/ManifestPropertyHelper.js +6 -4
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/Edition.js +2 -2
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/People.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/CatalogService.js +6 -6
- package/src/main/js/sap/ushell/components/contentFinder/Component.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/controller/ContentFinderDialog.controller.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/dialog/Component.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/dialog/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +29 -13
- package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +6 -1
- package/src/main/js/sap/ushell/components/factsheet/Component.js +1 -1
- package/src/main/js/sap/ushell/components/factsheet/factory/ThingInspector.js +2 -2
- package/src/main/js/sap/ushell/components/homepage/ActionMode.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardUIActions.js +2 -2
- package/src/main/js/sap/ushell/components/homepage/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/pages/ActionMode.js +1 -1
- package/src/main/js/sap/ushell/components/pages/Component.js +1 -1
- package/src/main/js/sap/ushell/components/pages/MyHomeImport.js +2 -2
- package/src/main/js/sap/ushell/components/pages/controller/ImportDialog.controller.js +8 -8
- package/src/main/js/sap/ushell/components/pages/controller/PageRuntime.controller.js +38 -29
- package/src/main/js/sap/ushell/components/pages/controller/PagesAndSpaceId.js +24 -15
- package/src/main/js/sap/ushell/components/pages/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/runtimeSwitcher/controller/RuntimeSwitcher.controller.js +1 -1
- package/src/main/js/sap/ushell/components/runtimeSwitcher/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/FloatingContainer/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/FloatingContainer/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenuButton.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +3 -3
- package/src/main/js/sap/ushell/components/shell/Notifications/Notifications.controller.js +9 -9
- package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +3 -3
- package/src/main/js/sap/ushell/components/shell/Search/Component.js +0 -11
- package/src/main/js/sap/ushell/components/shell/Search/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/Component.js +3 -3
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/FrequentActivityProvider.js +32 -30
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/RecentSearchProvider.js +19 -17
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchServiceProvider.js +30 -28
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/Component.js +14 -18
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/SearchProviders/FrequentActivityProvider.js +3 -3
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/SearchProviders/RecentSearchProvider.js +19 -17
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/SearchProviders/SearchProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/SearchProviders/SearchServiceProvider.js +30 -28
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources.properties +2 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ar.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_bg.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ca.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_cnr.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_cs.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_cy.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_da.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_de.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_el.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_en.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_en_GB.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_en_US_saprigi.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_es.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_es_MX.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_et.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_fi.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_fr.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_fr_CA.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_hi.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_hr.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_hu.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_id.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_it.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_iw.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ja.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_kk.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ko.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_lt.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_lv.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_mk.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ms.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_nl.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_no.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_pl.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_pt.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_pt_PT.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ro.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ru.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_sh.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_sk.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_sl.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_sr.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_sv.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_th.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_tr.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_uk.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_vi.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_zh_CN.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_zh_TW.properties +4 -0
- package/src/main/js/sap/ushell/components/shell/Settings/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.controller.js +21 -20
- package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.controller.js +88 -65
- package/src/main/js/sap/ushell/components/shell/Settings/homepage/HomepageEntry.js +6 -6
- package/src/main/js/sap/ushell/components/shell/Settings/notifications/NotificationsSetting.controller.js +3 -3
- package/src/main/js/sap/ushell/components/shell/Settings/spaces/SpacesSetting.controller.js +8 -7
- package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountSelector.controller.js +4 -3
- package/src/main/js/sap/ushell/components/shell/Settings/userActivities/UserActivitiesSetting.controller.js +3 -3
- package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/controller/UserDefaultsSetting.controller.js +2 -2
- package/src/main/js/sap/ushell/components/shell/Settings/userLanguageRegion/LanguageRegionSelector.controller.js +5 -5
- package/src/main/js/sap/ushell/components/shell/ShellBar/Component.js +40 -2
- package/src/main/js/sap/ushell/components/shell/ShellBar/controller/ShellBar.controller.js +7 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/ShellBar/view/ShellBar.view.xml +9 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/controller/SideNavigation.controller.js +48 -59
- package/src/main/js/sap/ushell/components/shell/SideNavigation/interface/ListProviderAPI.js +144 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/interface/NavContainer.js +82 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/AllSpaces.js +2 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Favorites.js +4 -4
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/GenericFixedNavigationListProvider.js +49 -28
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/GenericNavigationListProvider.js +104 -49
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/MyHome.js +2 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/RecentActivity.js +2 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Spaces.js +18 -7
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/SpacesNavigationListProvider.js +11 -5
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/action/ActionTile.controller.js +22 -14
- package/src/main/js/sap/ushell/components/tiles/applauncher/StaticTile.controller.js +43 -13
- package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/DynamicTile.controller.js +43 -13
- package/src/main/js/sap/ushell/components/tiles/utils.js +25 -25
- package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnResizer.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRow.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/workPageRuntime/Component.js +1 -1
- package/src/main/js/sap/ushell/components/workPageRuntime/controller/WorkPageRuntime.controller.js +1 -1
- package/src/main/js/sap/ushell/components/workPageRuntime/manifest.json +1 -1
- package/src/main/js/sap/ushell/designtime/ApplicationContainer.designtime.js +1 -1
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Avatar.js +111 -111
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Button.js +215 -145
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Label.js +68 -70
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/ListItem.js +81 -78
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/ListItemBase.js +40 -39
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/ListItemGroup.js +146 -85
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Menu.js +178 -110
- package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/MenuItem.js +186 -144
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-base.js +519 -339
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/IllustratedMessage.js +91 -90
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/NotificationList.js +128 -73
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/NotificationListGroupItem.js +76 -71
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/NotificationListItem.js +119 -97
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/NotificationListItemBase.js +48 -46
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/Search.js +156 -128
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/SearchItem.js +68 -65
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/SearchItemGroup.js +30 -29
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/SearchMessageArea.js +46 -45
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/SearchScope.js +48 -49
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBar.js +373 -198
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBarBranding.js +71 -68
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBarItem.js +81 -62
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBarSearch.js +150 -122
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBarSpacer.js +42 -41
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/UserMenu.js +190 -121
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/UserMenuAccount.js +76 -75
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/UserMenuItem.js +35 -34
- package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori.js +1706 -1389
- package/src/main/js/sap/ushell/gen/ui5/webcomponents.js +3011 -2450
- package/src/main/js/sap/ushell/library.js +1 -1
- package/src/main/js/sap/ushell/modules/NavigationMenu/ListProvider.js +56 -0
- package/src/main/js/sap/ushell/modules/NavigationMenu/ListProviderAPI.js +119 -0
- package/src/main/js/sap/ushell/modules/NavigationMenu/NavContainer.js +60 -0
- package/src/main/js/sap/ushell/modules/NavigationMenu/NavigationMenuMode.js +37 -0
- package/src/main/js/sap/ushell/modules/NavigationMenu.js +17 -16
- package/src/main/js/sap/ushell/navigationMode.js +1 -1
- package/src/main/js/sap/ushell/performance/FesrEnhancer.js +1 -3
- package/src/main/js/sap/ushell/performance/ShellAnalytics.js +1 -1
- package/src/main/js/sap/ushell/performance/StatisticalRecord.js +1 -1
- package/src/main/js/sap/ushell/plugins/BaseRTAPlugin.js +6 -2
- package/src/main/js/sap/ushell/plugins/appwarmup/Component.js +1 -1
- package/src/main/js/sap/ushell/renderer/AccessKeysHandler.js +17 -13
- package/src/main/js/sap/ushell/renderer/Renderer.js +12 -12
- package/src/main/js/sap/ushell/renderer/RendererAppContainer.js +3 -3
- package/src/main/js/sap/ushell/renderer/RendererManagedComponents.js +134 -140
- package/src/main/js/sap/ushell/renderer/Shell.controller.js +29 -22
- package/src/main/js/sap/ushell/renderer/Shell.view.js +2 -2
- package/src/main/js/sap/ushell/renderer/resources/resources_cs.properties +8 -8
- package/src/main/js/sap/ushell/renderer/resources/resources_pt_PT.properties +1 -1
- package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
- package/src/main/js/sap/ushell/renderers/fiori2/Shell.view.js +2 -2
- package/src/main/js/sap/ushell/resources.js +1 -1
- package/src/main/js/sap/ushell/services/AllMyApps.js +1 -1
- package/src/main/js/sap/ushell/services/AppConfiguration.js +2 -2
- package/src/main/js/sap/ushell/services/AppLifeCycle.js +19 -22
- package/src/main/js/sap/ushell/services/AppState.js +3 -3
- package/src/main/js/sap/ushell/services/Bookmark.js +35 -39
- package/src/main/js/sap/ushell/services/BookmarkV2.js +6 -8
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Formatter.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundIndex.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundProvider.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/PrelaunchOperations.js +5 -5
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Search.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/StagedLogger.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/SystemContext.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Utils.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/VirtualInbounds.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/XAppStateProcessing.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution.js +13 -14
- package/src/main/js/sap/ushell/services/CommonDataModel/SiteConverter.js +1 -1
- package/src/main/js/sap/ushell/services/CommonDataModel/vizTypeDefaults/VizTypeDefaults.js +1 -1
- package/src/main/js/sap/ushell/services/CommonDataModel.js +82 -78
- package/src/main/js/sap/ushell/services/Configuration.js +1 -1
- package/src/main/js/sap/ushell/services/ConfigurationDefaults.js +1 -1
- package/src/main/js/sap/ushell/services/ContentExtensionAdapterFactory.js +1 -1
- package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +201 -230
- package/src/main/js/sap/ushell/services/DarkModeSupport.js +1 -1
- package/src/main/js/sap/ushell/services/EndUserFeedback.js +2 -2
- package/src/main/js/sap/ushell/services/Extension/Item.js +1 -1
- package/src/main/js/sap/ushell/services/Extension.js +1 -1
- package/src/main/js/sap/ushell/services/FlpLaunchPage.js +61 -57
- package/src/main/js/sap/ushell/services/FrameBoundExtension/FloatingContainer.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/Footer.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/Item.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/SidePane.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/ToolArea.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/UserSettingsEntry.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension.js +1 -1
- package/src/main/js/sap/ushell/services/LaunchPage.js +1 -1
- package/src/main/js/sap/ushell/services/Menu.js +2 -2
- package/src/main/js/sap/ushell/services/Message.js +1 -1
- package/src/main/js/sap/ushell/services/MessageBroker/ClientAlias.js +37 -0
- package/src/main/js/sap/ushell/services/MessageBroker/ClientConnectionMessage.js +37 -0
- package/src/main/js/sap/ushell/services/MessageBroker/MessageBrokerEngine.js +463 -642
- package/src/main/js/sap/ushell/services/MessageBroker.js +126 -48
- package/src/main/js/sap/ushell/services/MessageInternal.js +2 -2
- package/src/main/js/sap/ushell/services/NavTargetResolutionInternal.js +4 -4
- package/src/main/js/sap/ushell/services/Navigation/compatibility.js +1 -2
- package/src/main/js/sap/ushell/services/Navigation/utils.js +3 -3
- package/src/main/js/sap/ushell/services/Navigation.js +5 -5
- package/src/main/js/sap/ushell/services/NavigationDataProvider.js +19 -10
- package/src/main/js/sap/ushell/services/NotificationsV2.js +151 -108
- package/src/main/js/sap/ushell/services/PageBuilding.js +4 -2
- package/src/main/js/sap/ushell/services/PagePersistence.js +1 -1
- package/src/main/js/sap/ushell/services/PageReferencing.js +1 -1
- package/src/main/js/sap/ushell/services/Pages.js +32 -32
- package/src/main/js/sap/ushell/services/Personalization.js +36 -32
- package/src/main/js/sap/ushell/services/PersonalizationV2/ContextContainer.js +6 -6
- package/src/main/js/sap/ushell/services/PersonalizationV2/Personalizer.js +3 -3
- package/src/main/js/sap/ushell/services/PersonalizationV2/WindowAdapter.js +2 -2
- package/src/main/js/sap/ushell/services/PersonalizationV2/WindowAdapterContainer.js +4 -4
- package/src/main/js/sap/ushell/services/PersonalizationV2/utils.js +4 -8
- package/src/main/js/sap/ushell/services/PersonalizationV2.js +17 -15
- package/src/main/js/sap/ushell/services/PluginManager/Extensions.js +3 -3
- package/src/main/js/sap/ushell/services/PluginManager/HeaderExtensions.js +1 -1
- package/src/main/js/sap/ushell/services/PluginManager/MenuExtensions.js +1 -1
- package/src/main/js/sap/ushell/services/PluginManager/SimpleExpression.js +1 -1
- package/src/main/js/sap/ushell/services/PluginManager.js +22 -22
- package/src/main/js/sap/ushell/services/ReferenceResolver.js +2 -2
- package/src/main/js/sap/ushell/services/Search.js +1 -1
- package/src/main/js/sap/ushell/services/SearchCEP.js +3 -3
- package/src/main/js/sap/ushell/services/SearchableContent.js +2 -2
- package/src/main/js/sap/ushell/services/ShellNavigation.js +1 -1
- package/src/main/js/sap/ushell/services/ShellNavigationHashChanger.js +2 -2
- package/src/main/js/sap/ushell/services/SmartNavigation.js +2 -3
- package/src/main/js/sap/ushell/services/SpaceContent.js +1 -1
- package/src/main/js/sap/ushell/services/UITracer.js +5 -5
- package/src/main/js/sap/ushell/services/URLParsing.js +2 -2
- package/src/main/js/sap/ushell/services/URLShortening.js +1 -1
- package/src/main/js/sap/ushell/services/URLTemplate.js +1 -1
- package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +15 -15
- package/src/main/js/sap/ushell/services/UserDefaultParameterPersistence.js +1 -1
- package/src/main/js/sap/ushell/services/UserDefaultParameters.js +6 -6
- package/src/main/js/sap/ushell/services/UserInfo.js +3 -3
- package/src/main/js/sap/ushell/services/UserRecents/RecentAppsUsage.js +2 -2
- package/src/main/js/sap/ushell/services/UserRecents/UserRecentsBase.js +6 -6
- package/src/main/js/sap/ushell/services/UserRecents.js +1 -1
- package/src/main/js/sap/ushell/services/VisualizationDataProvider.js +18 -15
- package/src/main/js/sap/ushell/services/VisualizationInstantiation.js +3 -3
- package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/ContentExtensionAdapterConfig.js +1 -1
- package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/FeaturedGroupConfig.js +1 -1
- package/src/main/js/sap/ushell/services/_CrossApplicationNavigation/utils.js +3 -3
- package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +2 -2
- package/src/main/js/sap/ushell/services/_Personalization/ContextContainer.js +10 -10
- package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainer.js +8 -8
- package/src/main/js/sap/ushell/services/_Personalization/Personalizer.js +14 -14
- package/src/main/js/sap/ushell/services/_Personalization/utils.js +2 -2
- package/src/main/js/sap/ushell/services/appstate/AppState.js +8 -8
- package/src/main/js/sap/ushell/services/appstate/WindowAdapter.js +3 -3
- package/src/main/js/sap/ushell/state/modules/BackNavigation.js +7 -24
- package/src/main/js/sap/ushell/state/modules/ContentDensity.js +1 -1
- package/src/main/js/sap/ushell/state/modules/Favicon.js +1 -1
- package/src/main/js/sap/ushell/state/modules/HeaderLogo.js +3 -3
- package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +1 -1
- package/src/main/js/sap/ushell/themes/base/ActionMode.less +1 -1
- package/src/main/js/sap/ushell/themes/base/ToolAreaItem.less +1 -1
- package/src/main/js/sap/ushell/thirdparty/Avatar.js +7 -7
- package/src/main/js/sap/ushell/thirdparty/BusyIndicator.js +4 -4
- package/src/main/js/sap/ushell/thirdparty/Button2.js +9 -8
- package/src/main/js/sap/ushell/thirdparty/FocusableElements.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/Icon.js +29 -31
- package/src/main/js/sap/ushell/thirdparty/Icons.js +121 -84
- package/src/main/js/sap/ushell/thirdparty/IllustratedMessage.js +7 -2
- package/src/main/js/sap/ushell/thirdparty/Label.js +3 -3
- package/src/main/js/sap/ushell/thirdparty/Link.js +5 -5
- package/src/main/js/sap/ushell/thirdparty/List.js +14 -17
- package/src/main/js/sap/ushell/thirdparty/ListItemAdditionalText.css.js +2 -2
- package/src/main/js/sap/ushell/thirdparty/ListItemBase.js +8 -8
- package/src/main/js/sap/ushell/thirdparty/ListItemCustom.js +41 -39
- package/src/main/js/sap/ushell/thirdparty/ListItemGroup.js +15 -18
- package/src/main/js/sap/ushell/thirdparty/Menu.js +8 -8
- package/src/main/js/sap/ushell/thirdparty/MenuItem.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/MenuItem2.js +16 -16
- package/src/main/js/sap/ushell/thirdparty/NotificationList.js +8 -8
- package/src/main/js/sap/ushell/thirdparty/NotificationListGroupItem.js +14 -14
- package/src/main/js/sap/ushell/thirdparty/NotificationListItem.js +10 -10
- package/src/main/js/sap/ushell/thirdparty/NotificationListItemBase.js +2 -2
- package/src/main/js/sap/ushell/thirdparty/ResponsivePopover.js +69 -41
- package/src/main/js/sap/ushell/thirdparty/SearchItem.js +5 -5
- package/src/main/js/sap/ushell/thirdparty/SearchItemGroup.js +2 -5
- package/src/main/js/sap/ushell/thirdparty/SearchMessageArea.js +2 -2
- package/src/main/js/sap/ushell/thirdparty/ShellBar.js +58 -27
- package/src/main/js/sap/ushell/thirdparty/ShellBarBranding.js +5 -5
- package/src/main/js/sap/ushell/thirdparty/ShellBarSearch.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/ShellBarSearch2.js +166 -150
- package/src/main/js/sap/ushell/thirdparty/Tag.js +5 -5
- package/src/main/js/sap/ushell/thirdparty/Text.js +3 -3
- package/src/main/js/sap/ushell/thirdparty/Title.js +3 -3
- package/src/main/js/sap/ushell/thirdparty/UserMenu.js +21 -21
- package/src/main/js/sap/ushell/thirdparty/UserMenuItem.js +3 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/InputSuggestions.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ListItemStandardExpandableTextTemplate.js +3 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons.js +2 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons2.js +2 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar2.js +93 -12
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de3.js +7 -4
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en3.js +75 -15
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en4.js +12 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd3.js +71 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd4.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi3.js +75 -15
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi4.js +12 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc.js +3 -174
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc2.js +174 -756
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc3.js +837 -585
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc4.js +596 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr2.js +95 -14
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_id2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_id3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv2.js +94 -13
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW2.js +92 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW3.js +6 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css10.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css11.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css12.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css13.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css14.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css15.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css16.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css17.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css18.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css19.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css20.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css21.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css22.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css23.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css24.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css25.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css26.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css27.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css4.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css5.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css6.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css7.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css8.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css9.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/information.js +10 -10
- package/src/main/js/sap/ushell/thirdparty/overflow.js +2 -2
- package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css2.js +3 -3
- package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css3.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/slim-arrow-down.js +4 -4
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons/AllIcons.js +2 -2
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons-business-suite/AllIcons.js +2 -2
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons-tnt/AllIcons.js +2 -2
- package/src/main/js/sap/ushell/thirdparty/webcomponents-base.js +68 -68
- package/src/main/js/sap/ushell/thirdparty/webcomponents-fiori.js +3 -3
- package/src/main/js/sap/ushell/thirdparty/webcomponents.js +7 -7
- package/src/main/js/sap/ushell/ui/QuickAccess.js +10 -12
- package/src/main/js/sap/ushell/ui/ShellHeader.js +4 -4
- package/src/main/js/sap/ushell/ui/appfinder/AppBoxInternal.js +3 -3
- package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/AboutDialog.controller.js +4 -4
- package/src/main/js/sap/ushell/ui/footerbar/AddBookmarkButton.js +7 -7
- package/src/main/js/sap/ushell/ui/footerbar/ContactSupportDialog.controller.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/JamShareButton.js +4 -3
- package/src/main/js/sap/ushell/ui/launchpad/CatalogsContainer.js +2 -3
- package/src/main/js/sap/ushell/ui/launchpad/DashboardGroupsContainer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/ExtendedChangeDetection.js +2 -2
- package/src/main/js/sap/ushell/ui/launchpad/LinkTileWrapperRenderer.js +2 -2
- package/src/main/js/sap/ushell/ui/launchpad/Section.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/TileContainerUtils.js +1 -2
- package/src/main/js/sap/ushell/ui/launchpad/TileRenderer.js +2 -2
- package/src/main/js/sap/ushell/ui/launchpad/section/CompactArea.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/ShellAppTitle.js +3 -2
- package/src/main/js/sap/ushell/ui/shell/ShellNavigationMenu.js +20 -20
- package/src/main/js/sap/ushell/ui/shell/ToolAreaItem.js +1 -1
- package/src/main/js/sap/ushell/ui/tile/TileBase.js +3 -3
- package/src/main/js/sap/ushell/ui/utils.js +6 -6
- package/src/main/js/sap/ushell/ui5service/ShellUIService.js +3 -0
- package/src/main/js/sap/ushell/ui5service/ShellUIServiceFactory.js +1 -1
- package/src/main/js/sap/ushell/ui5service/UserStatus.js +1 -1
- package/src/main/js/sap/ushell/utils/CallbackQueue.js +114 -0
- package/src/main/js/sap/ushell/utils/Deferred.js +3 -3
- package/src/main/js/sap/ushell/utils/DynamicTileRequest.js +6 -6
- package/src/main/js/sap/ushell/utils/HttpClient.js +68 -68
- package/src/main/js/sap/ushell/utils/LaunchpadError.js +21 -0
- package/src/main/js/sap/ushell/utils/UrlParsing.js +12 -13
- package/src/main/js/sap/ushell/utils/UrlShortening.js +2 -2
- package/src/main/js/sap/ushell/utils/WindowUtils.js +5 -3
- package/src/main/js/sap/ushell/utils/chipsUtils.js +7 -5
- package/src/main/js/sap/ushell/utils/tilecard/TileCard.js +2 -2
- package/src/main/js/sap/ushell/utils/tilecard/TileCardExtension.js +9 -9
- package/src/main/js/sap/ushell/utils/utilsCdm.js +5 -6
- package/src/main/js/sap/ushell/utils/workpage/DestinationResolver.js +15 -11
- package/src/main/js/sap/ushell/utils/workpage/WorkPageHost.js +18 -19
- package/src/main/js/sap/ushell/utils/workpage/WorkPageService.js +11 -7
- package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +1 -1
- package/src/main/js/sap/ushell/utils.js +45 -65
- package/src/test/js/sap/ushell/bootstrap/sandbox.js +1 -1
- package/ui5.yaml +37 -16
- package/src/main/js/sap/ushell/thirdparty/getEffectiveScrollbarStyle.js +0 -33
|
@@ -2,839 +2,660 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @fileOverview This module contains the implementation of the message broker
|
|
5
|
-
* @version 1.
|
|
5
|
+
* @version 1.141.1
|
|
6
6
|
*/
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
"sap/base/Log",
|
|
9
|
-
"sap/base/util/
|
|
9
|
+
"sap/base/util/deepClone",
|
|
10
|
+
"sap/ushell/services/MessageBroker/ClientAlias",
|
|
11
|
+
"sap/ushell/services/MessageBroker/ClientConnectionMessage"
|
|
10
12
|
], (
|
|
11
13
|
Log,
|
|
12
|
-
|
|
14
|
+
deepClone,
|
|
15
|
+
ClientAlias,
|
|
16
|
+
ClientConnectionMessage
|
|
13
17
|
) => {
|
|
14
18
|
"use strict";
|
|
15
19
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* @typedef {string} ClientId
|
|
22
|
+
* The client id of the sender.
|
|
23
|
+
*
|
|
24
|
+
* @since 1.110.0
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @typedef {string} ChannelId
|
|
30
|
+
* The channel id.
|
|
31
|
+
*
|
|
32
|
+
* @since 1.110.0
|
|
33
|
+
* @private
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @typedef {object} ClientChannelData
|
|
38
|
+
* The internal representation of a client within a channel.
|
|
39
|
+
* @property {ClientId} clientId The client id.
|
|
40
|
+
* @property {sap.ushell.services.MessageBroker.MessageCallback} messageCallback
|
|
41
|
+
* The callback function that is called when a message is published to the channel.
|
|
42
|
+
*
|
|
43
|
+
* @since 1.110.0
|
|
44
|
+
* @private
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @typedef {object} ClientSubscriptionData
|
|
49
|
+
* The internal representation of a client.
|
|
50
|
+
* @property {ClientId} clientId The client id.
|
|
51
|
+
* @property {sap.ushell.services.MessageBroker.Channel[]} channels The channels the client is subscribed to.
|
|
52
|
+
* @property {sap.ushell.services.MessageBroker.ClientConnectionCallback} clientConnectionCallback
|
|
53
|
+
* The callback function that is called when the client connects or disconnects.
|
|
54
|
+
*
|
|
55
|
+
* @since 1.110.0
|
|
56
|
+
* @private
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @alias sap.ushell.services.MessageBroker.MessageBrokerEngine
|
|
61
|
+
* @namespace
|
|
62
|
+
* @description The Message Broker Engine is responsible for managing clients, channels, and messages.
|
|
63
|
+
*
|
|
64
|
+
* @since 1.110.0
|
|
65
|
+
* @private
|
|
66
|
+
*/
|
|
67
|
+
class MessageBrokerEngine {
|
|
68
|
+
#bEnabled = true;
|
|
69
|
+
#bSkipEmitInformAboutOtherClients = false;
|
|
70
|
+
#oLogger = Log.getLogger("sap.ushell.services.MessageBroker");
|
|
21
71
|
|
|
22
|
-
|
|
23
|
-
|
|
72
|
+
/**
|
|
73
|
+
* @type {Set<string>} Set of accepted origins.
|
|
74
|
+
*/
|
|
75
|
+
#sAcceptedOrigins = new Set();
|
|
24
76
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
77
|
+
/**
|
|
78
|
+
* @type {Set<ClientId>} Set of connected clients.
|
|
79
|
+
*/
|
|
80
|
+
#sConnectedClients = new Set();
|
|
29
81
|
|
|
30
82
|
/**
|
|
31
|
-
*
|
|
32
|
-
|
|
33
|
-
|
|
83
|
+
* @type {Object<ClientId, ClientSubscriptionData>} Map of subscribed clients.
|
|
84
|
+
*/
|
|
85
|
+
#oSubscribedClients = {};
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* @type {Object<ChannelId, ClientChannelData[]>} Map of clients per channel.
|
|
89
|
+
* Key is the channel id, value is an array of clients subscribed to the channel.
|
|
90
|
+
*/
|
|
91
|
+
#oClientsPerChannel = {};
|
|
92
|
+
|
|
93
|
+
#aPendingTimeouts = [];
|
|
94
|
+
|
|
95
|
+
constructor () {
|
|
96
|
+
// add default origin
|
|
97
|
+
this.addAcceptedOrigin(window.location.origin);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
setEnabled (bVal) {
|
|
101
|
+
this.#bEnabled = bVal;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Connects the client to the message broker.
|
|
106
|
+
* When the client connects, it will receive the information about all other clients that are already subscribed to channels.
|
|
107
|
+
* Additionally, the client is informed about _any_ new subscription and unsubscription to a channel.
|
|
108
|
+
* @param {ClientId} sClientId client id.
|
|
109
|
+
* @param {sap.ushell.services.MessageBroker.ClientConnectionCallback} fnClientConnectionCallback
|
|
110
|
+
* Callback function that is called whenever the client subscribes or unsubscribes to a channel.
|
|
111
|
+
* @returns {Promise} Resolves once the client is connected.
|
|
34
112
|
*
|
|
35
113
|
* @since 1.110.0
|
|
36
114
|
* @private
|
|
37
115
|
*/
|
|
116
|
+
async connect (sClientId, fnClientConnectionCallback) {
|
|
117
|
+
if (!this.#bEnabled) {
|
|
118
|
+
throw new Error(`Cannot connect client '${sClientId}': MessageBroker is not enabled`);
|
|
119
|
+
}
|
|
38
120
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return Promise.reject();
|
|
121
|
+
if (typeof sClientId !== "string" || !sClientId.length) {
|
|
122
|
+
throw new Error("Cannot connect client: Missing required parameter client id");
|
|
42
123
|
}
|
|
43
124
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const sOrigin = oMessage.origin;
|
|
48
|
-
const oIframe = oMessage.source;
|
|
125
|
+
if (this.#sConnectedClients.has(sClientId)) {
|
|
126
|
+
throw new Error(`Cannot connect client '${sClientId}': Client is already connected`);
|
|
127
|
+
}
|
|
49
128
|
|
|
50
|
-
|
|
129
|
+
if (
|
|
130
|
+
typeof fnClientConnectionCallback !== "function"
|
|
131
|
+
) {
|
|
132
|
+
this.#oLogger.error(`Missing required parameter 'fnClientConnectionCallback' for client '${sClientId}'! It has to be provided as part of the connect() call`);
|
|
133
|
+
} else {
|
|
134
|
+
// add client connection callback
|
|
135
|
+
this.#oSubscribedClients[sClientId] = {
|
|
136
|
+
clientId: sClientId,
|
|
137
|
+
channels: [],
|
|
138
|
+
clientConnectionCallback: fnClientConnectionCallback
|
|
139
|
+
};
|
|
51
140
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return Promise.reject(sErrorMsg);
|
|
141
|
+
this.#aPendingTimeouts.push(setTimeout(() => {
|
|
142
|
+
this.#emitInformAboutOtherClients(sClientId);
|
|
143
|
+
}, 0));
|
|
56
144
|
}
|
|
57
145
|
|
|
58
|
-
|
|
59
|
-
|
|
146
|
+
// add client initial entry to connected clients
|
|
147
|
+
this.#sConnectedClients.add(sClientId);
|
|
148
|
+
}
|
|
60
149
|
|
|
61
150
|
/**
|
|
151
|
+
* Emits information about all other clients to the specified client.
|
|
152
|
+
* @param {ClientId} sClientId client id.
|
|
62
153
|
*
|
|
63
|
-
* @
|
|
64
|
-
* @returns {Promise} the result.
|
|
65
|
-
*
|
|
66
|
-
* @since 1.110.0
|
|
154
|
+
* @since 1.140.0
|
|
67
155
|
* @private
|
|
68
156
|
*/
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if (!bEnabled) {
|
|
74
|
-
return Promise.reject();
|
|
157
|
+
#emitInformAboutOtherClients (sClientId) {
|
|
158
|
+
// ONLY FOR TESTING!
|
|
159
|
+
if (this.#bSkipEmitInformAboutOtherClients) {
|
|
160
|
+
return;
|
|
75
161
|
}
|
|
76
162
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
} else {
|
|
82
|
-
// add client initial entry to connected clients
|
|
83
|
-
oConnectedClients[sClientId] = true;
|
|
84
|
-
return Promise.resolve();
|
|
163
|
+
const oClient = this.#oSubscribedClients[sClientId];
|
|
164
|
+
if (!oClient) {
|
|
165
|
+
// client is already disconnected
|
|
166
|
+
return;
|
|
85
167
|
}
|
|
86
168
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
169
|
+
const aOtherSubscribedClients = Object.values(this.#oSubscribedClients).filter((oOtherClient) => {
|
|
170
|
+
return oOtherClient.clientId !== sClientId;
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
if (aOtherSubscribedClients.length) {
|
|
174
|
+
aOtherSubscribedClients.forEach((oOtherClient) => {
|
|
175
|
+
oClient.clientConnectionCallback(
|
|
176
|
+
ClientConnectionMessage.ClientSubscribed,
|
|
177
|
+
oOtherClient.clientId,
|
|
178
|
+
deepClone(oOtherClient.channels)
|
|
179
|
+
);
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
90
183
|
|
|
91
184
|
/**
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* @
|
|
185
|
+
* Disconnects the client.
|
|
186
|
+
* If the client was subscribed to channels, it will be unsubscribed from all channels.
|
|
187
|
+
* @param {ClientId} sClientId client id.
|
|
188
|
+
* @returns {Promise} Resolves once the client is disconnected.
|
|
95
189
|
*
|
|
96
190
|
* @since 1.110.0
|
|
97
191
|
* @private
|
|
98
192
|
*/
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (!bEnabled) {
|
|
104
|
-
return Promise.reject();
|
|
193
|
+
async disconnect (sClientId) {
|
|
194
|
+
if (!this.#bEnabled) {
|
|
195
|
+
throw new Error(`Cannot disconnect client '${sClientId}': MessageBroker is not enabled`);
|
|
105
196
|
}
|
|
106
197
|
|
|
107
198
|
if (typeof sClientId !== "string" || !sClientId.length) {
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
const aChannelClients = oClientsPerChannel[sChannelKey];
|
|
114
|
-
// find client and remove from the channel
|
|
115
|
-
for (const oClientKey in aChannelClients) {
|
|
116
|
-
const oClient = aChannelClients[oClientKey];
|
|
199
|
+
throw new Error("Cannot disconnect client: Missing required parameter client id");
|
|
200
|
+
}
|
|
201
|
+
if (!this.#sConnectedClients.has(sClientId)) {
|
|
202
|
+
throw new Error(`Cannot disconnect client '${sClientId}': Client is already disconnected`);
|
|
203
|
+
}
|
|
117
204
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
205
|
+
// === Update "channel data" ===
|
|
206
|
+
for (const sChannelId in this.#oClientsPerChannel) {
|
|
207
|
+
// find client and remove from the channel
|
|
208
|
+
this.#oClientsPerChannel[sChannelId] = this.#oClientsPerChannel[sChannelId].filter((oClient) => {
|
|
209
|
+
return oClient.clientId !== sClientId;
|
|
210
|
+
});
|
|
211
|
+
}
|
|
124
212
|
|
|
213
|
+
// === Update "subscribed clients" ===
|
|
214
|
+
if (this.#oSubscribedClients[sClientId]?.channels.length) {
|
|
125
215
|
// if client disconnects but is still subscribed
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
// remove from connected clients
|
|
133
|
-
delete oConnectedClients[sClientId];
|
|
134
|
-
|
|
135
|
-
return Promise.resolve();
|
|
216
|
+
this.#emitConnectionEvent(
|
|
217
|
+
ClientConnectionMessage.ClientUnsubscribed,
|
|
218
|
+
sClientId,
|
|
219
|
+
this.#oSubscribedClients[sClientId].channels
|
|
220
|
+
);
|
|
136
221
|
}
|
|
222
|
+
// remove from subscribed clients
|
|
223
|
+
delete this.#oSubscribedClients[sClientId];
|
|
137
224
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
225
|
+
// remove from connected clients
|
|
226
|
+
this.#sConnectedClients.delete(sClientId);
|
|
227
|
+
}
|
|
141
228
|
|
|
142
229
|
/**
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
* @param {
|
|
147
|
-
* @param {
|
|
148
|
-
* @param {
|
|
149
|
-
*
|
|
150
|
-
*
|
|
230
|
+
* Subscribe to a channel.
|
|
231
|
+
* Before subscribing, the client must be connected.
|
|
232
|
+
* Afterwards, the client receives messages for the subscribed channels.
|
|
233
|
+
* @param {ClientId} sClientId client id.
|
|
234
|
+
* @param {sap.ushell.services.MessageBroker.Channel[]} aSubscribedChannels array of channel-objects.
|
|
235
|
+
* @param {sap.ushell.services.MessageBroker.MessageCallback} fnMessageCallback
|
|
236
|
+
* Callback function that is called whenever a message is published to subscribed channels.
|
|
237
|
+
* The message callback is overwritten on subsequent calls to subscribe.
|
|
238
|
+
* Every channel can has its own message callback.
|
|
239
|
+
* @param {sap.ushell.services.MessageBroker.ClientConnectionCallback} fnClientConnectionCallback
|
|
240
|
+
* <b>DEPRECATED</b> Should be provided as part of {@link #connect}.
|
|
241
|
+
* @returns {Promise} Resolves once the client is subscribed to the channels.
|
|
151
242
|
*
|
|
152
243
|
* @since 1.110.0
|
|
153
244
|
* @private
|
|
154
245
|
*/
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const sMessageName = "clientSubscribed";
|
|
159
|
-
let aOtherSubscribedClients = [];
|
|
160
|
-
let bIsNewClient = false;
|
|
161
|
-
|
|
162
|
-
if (!bEnabled) {
|
|
163
|
-
return Promise.reject();
|
|
246
|
+
async subscribe (sClientId, aSubscribedChannels, fnMessageCallback, fnClientConnectionCallback) {
|
|
247
|
+
if (!this.#bEnabled) {
|
|
248
|
+
throw new Error(`Cannot subscribe client '${sClientId}': MessageBroker is not enabled`);
|
|
164
249
|
}
|
|
165
250
|
|
|
166
|
-
if (
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
} else {
|
|
175
|
-
for (const sChannelKey in aSubscribedChannels) {
|
|
176
|
-
const oChannel = aSubscribedChannels[sChannelKey];
|
|
177
|
-
|
|
178
|
-
// add new client to the channel
|
|
179
|
-
const oFullClientData = {
|
|
180
|
-
clientId: sClientId,
|
|
181
|
-
subscribedChannels: aSubscribedChannels,
|
|
182
|
-
messageCallback: fnMessageCallback,
|
|
183
|
-
clientConnectionCallback: fnClientConnectionCallback,
|
|
184
|
-
iframe: oIframe || {},
|
|
185
|
-
origin: sOrigin || "",
|
|
186
|
-
isUI5: !oIframe
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
// add new channel
|
|
190
|
-
if (!oClientsPerChannel[oChannel.channelId]) {
|
|
191
|
-
oClientsPerChannel[oChannel.channelId] = [];
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
const oExistingClient = oClientsPerChannel[oChannel.channelId].find((oClient) => {
|
|
195
|
-
return oClient.clientId === sClientId;
|
|
196
|
-
});
|
|
251
|
+
if (
|
|
252
|
+
typeof sClientId !== "string"
|
|
253
|
+
|| !sClientId.length
|
|
254
|
+
|| !aSubscribedChannels.length
|
|
255
|
+
|| typeof fnMessageCallback !== "function"
|
|
256
|
+
) {
|
|
257
|
+
throw new Error(`Cannot subscribe client '${sClientId}': Missing required parameter(s)`);
|
|
258
|
+
}
|
|
197
259
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
260
|
+
if (
|
|
261
|
+
typeof fnClientConnectionCallback === "function"
|
|
262
|
+
) {
|
|
263
|
+
// eslint-disable-next-line max-len
|
|
264
|
+
this.#oLogger.error(`The 'fnClientConnectionCallback' parameter was provided by client '${sClientId}'. This parameter is deprecated and should be provided as part of the connect() call`);
|
|
265
|
+
}
|
|
202
266
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
return oSubChannel.channelId === oChannel.channelId;
|
|
207
|
-
});
|
|
267
|
+
if (!this.#sConnectedClients.has(sClientId)) {
|
|
268
|
+
throw new Error(`Cannot subscribe client '${sClientId}': Client is not connected`);
|
|
269
|
+
}
|
|
208
270
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
271
|
+
// === Update "channel data" ===
|
|
272
|
+
for (const oChannel of aSubscribedChannels) {
|
|
273
|
+
const sChannelId = oChannel.channelId;
|
|
274
|
+
// add new channel
|
|
275
|
+
if (!this.#oClientsPerChannel[sChannelId]) {
|
|
276
|
+
this.#oClientsPerChannel[sChannelId] = [];
|
|
214
277
|
}
|
|
215
278
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
279
|
+
const oClientChannelData = this.#oClientsPerChannel[sChannelId].find((oClient) => {
|
|
280
|
+
return oClient.clientId === sClientId;
|
|
281
|
+
});
|
|
219
282
|
|
|
220
|
-
|
|
283
|
+
// add new client
|
|
284
|
+
if (!oClientChannelData) {
|
|
285
|
+
// add new client to the channel
|
|
286
|
+
this.#oClientsPerChannel[sChannelId].push({
|
|
221
287
|
clientId: sClientId,
|
|
222
|
-
|
|
223
|
-
};
|
|
224
|
-
// add to subscribed clients
|
|
225
|
-
oSubscribedClients[sClientId] = oSubscriptionData;
|
|
226
|
-
|
|
227
|
-
aOtherSubscribedClients = Object.values(oSubscribedClients).filter((oClient) => {
|
|
228
|
-
return oClient.clientId !== sClientId;
|
|
288
|
+
messageCallback: fnMessageCallback
|
|
229
289
|
});
|
|
290
|
+
} else {
|
|
291
|
+
oClientChannelData.messageCallback = fnMessageCallback;
|
|
230
292
|
}
|
|
293
|
+
}
|
|
231
294
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
295
|
+
// === Update "subscribed clients" ===
|
|
296
|
+
const oClientSubscriptionData = this.#oSubscribedClients[sClientId];
|
|
297
|
+
if (!oClientSubscriptionData) { // this case is deprecated as all clients should be connected and provide the connection callback before
|
|
298
|
+
// add to subscribed clients
|
|
299
|
+
this.#oSubscribedClients[sClientId] = {
|
|
300
|
+
clientId: sClientId,
|
|
301
|
+
channels: deepClone(aSubscribedChannels),
|
|
302
|
+
clientConnectionCallback: fnClientConnectionCallback
|
|
303
|
+
};
|
|
236
304
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
channels: oClient.channels,
|
|
248
|
-
channelId: "sap.ushell.MessageBroker",
|
|
249
|
-
messageName: sMessageName
|
|
250
|
-
};
|
|
251
|
-
|
|
252
|
-
sap.ui.require(["sap/ushell/appIntegration/PostMessageManager"], (PostMessageManager) => {
|
|
253
|
-
const oResult = this._buildPostMessageObject("event", oParams);
|
|
254
|
-
this._sendPostMessage(PostMessageManager, oResult, oIframe, sOrigin);
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
}, 1000);
|
|
260
|
-
}
|
|
305
|
+
// notify new client of other already subscribed clients
|
|
306
|
+
this.#aPendingTimeouts.push(setTimeout(() => {
|
|
307
|
+
this.#emitInformAboutOtherClients(sClientId);
|
|
308
|
+
}, 1000));
|
|
309
|
+
} else {
|
|
310
|
+
// if client is already subscribed to any channel
|
|
311
|
+
for (const oChannel of aSubscribedChannels) {
|
|
312
|
+
const bAlreadySubscribed = oClientSubscriptionData.channels.some((oSubChannel) => {
|
|
313
|
+
return oSubChannel.channelId === oChannel.channelId;
|
|
314
|
+
});
|
|
261
315
|
|
|
262
|
-
|
|
316
|
+
if (!bAlreadySubscribed) {
|
|
317
|
+
// add new channel to the existing channels
|
|
318
|
+
oClientSubscriptionData.channels.push(oChannel);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
263
321
|
}
|
|
264
322
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
323
|
+
// notify other subscribed clients of new subscription
|
|
324
|
+
if (Object.keys(this.#oSubscribedClients).length > 1) {
|
|
325
|
+
this.#emitConnectionEvent(
|
|
326
|
+
ClientConnectionMessage.ClientSubscribed,
|
|
327
|
+
sClientId,
|
|
328
|
+
aSubscribedChannels
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
268
332
|
|
|
269
333
|
/**
|
|
270
|
-
*
|
|
271
|
-
* @param {
|
|
272
|
-
* @param {
|
|
273
|
-
* @returns {Promise} the
|
|
334
|
+
* Unsubscribes the client from the specified channels.
|
|
335
|
+
* @param {ClientId} sClientId client id.
|
|
336
|
+
* @param {sap.ushell.services.MessageBroker.Channel[]} aUnsubscribedChannels channels to unsubscribe from.
|
|
337
|
+
* @returns {Promise} Resolves once the client is unsubscribed from the channels.
|
|
274
338
|
*
|
|
275
339
|
* @since 1.110.0
|
|
276
340
|
* @private
|
|
277
341
|
*/
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
if (!bEnabled) {
|
|
283
|
-
return Promise.reject();
|
|
342
|
+
async unsubscribe (sClientId, aUnsubscribedChannels) {
|
|
343
|
+
if (!this.#bEnabled) {
|
|
344
|
+
throw new Error(`Cannot unsubscribe client '${sClientId}': MessageBroker is not enabled`);
|
|
284
345
|
}
|
|
285
346
|
|
|
286
|
-
if (
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
347
|
+
if (
|
|
348
|
+
typeof sClientId !== "string"
|
|
349
|
+
|| !sClientId.length
|
|
350
|
+
|| !Array.isArray(aUnsubscribedChannels)
|
|
351
|
+
|| !aUnsubscribedChannels.length
|
|
352
|
+
) {
|
|
353
|
+
throw new Error(`Cannot unsubscribe client '${sClientId}': Missing required parameter(s)`);
|
|
291
354
|
}
|
|
292
355
|
|
|
293
|
-
if (!
|
|
294
|
-
|
|
295
|
-
Log.error(sError, null, "sap.ushell.services.MessageBroker");
|
|
296
|
-
return Promise.reject(sError);
|
|
356
|
+
if (!this.#sConnectedClients.has(sClientId)) {
|
|
357
|
+
throw new Error(`Cannot unsubscribe client '${sClientId}': Client is not connected`);
|
|
297
358
|
}
|
|
298
359
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
if (oClientsPerChannel[
|
|
303
|
-
const aChannelClients = oClientsPerChannel[oChannel.channelId];
|
|
360
|
+
// === Update "channel data" ===
|
|
361
|
+
for (const oChannel of aUnsubscribedChannels) {
|
|
362
|
+
const sChannelId = oChannel.channelId;
|
|
363
|
+
if (this.#oClientsPerChannel[sChannelId]) {
|
|
304
364
|
// find client and remove from the channel
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
if (oClient.clientId === sClientId) {
|
|
309
|
-
const aSubscribedChannels = oSubscribedClients[sClientId].channels;
|
|
310
|
-
|
|
311
|
-
oSubscribedClients[sClientId].channels = aSubscribedChannels.filter((oSubChannel) => {
|
|
312
|
-
return oSubChannel.channelId !== oChannel.channelId;
|
|
313
|
-
});
|
|
314
|
-
|
|
315
|
-
aChannelClients.splice(oClientKey, 1);
|
|
316
|
-
break;
|
|
317
|
-
}
|
|
318
|
-
}
|
|
365
|
+
this.#oClientsPerChannel[sChannelId] = this.#oClientsPerChannel[sChannelId].filter((oClient) => {
|
|
366
|
+
return oClient.clientId !== sClientId;
|
|
367
|
+
});
|
|
319
368
|
} else {
|
|
320
369
|
// if channel does not exist
|
|
321
|
-
|
|
322
|
-
Log.warning(sMessage, null, "sap.ushell.services.MessageBroker");
|
|
370
|
+
this.#oLogger.warning(`Cannot unsubscribe client '${sClientId}': Channel '${sChannelId}' is unknown`);
|
|
323
371
|
}
|
|
324
372
|
}
|
|
325
373
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
374
|
+
// === Update "subscribed clients" ===
|
|
375
|
+
this.#oSubscribedClients[sClientId].channels = this.#oSubscribedClients[sClientId].channels.filter((oChannel) => {
|
|
376
|
+
const bFound = aUnsubscribedChannels.some((oChannelToRemove) => {
|
|
377
|
+
return oChannelToRemove.channelId === oChannel.channelId;
|
|
378
|
+
});
|
|
379
|
+
return !bFound;
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
this.#emitConnectionEvent(
|
|
383
|
+
ClientConnectionMessage.ClientUnsubscribed,
|
|
384
|
+
sClientId,
|
|
385
|
+
aUnsubscribedChannels
|
|
386
|
+
);
|
|
387
|
+
}
|
|
329
388
|
|
|
330
389
|
/**
|
|
331
|
-
*
|
|
332
|
-
*
|
|
333
|
-
*
|
|
334
|
-
*
|
|
335
|
-
* @param {
|
|
336
|
-
* @param {
|
|
337
|
-
* @param {
|
|
338
|
-
*
|
|
390
|
+
* Publishes a message to a channel.
|
|
391
|
+
* All clients that are subscribed to the channel will receive the message.
|
|
392
|
+
* The message is NOT sent to the client that published it.
|
|
393
|
+
*
|
|
394
|
+
* @param {ChannelId} sChannelId channel id.
|
|
395
|
+
* @param {ClientId} sClientId The client id of the sender.
|
|
396
|
+
* @param {string} sMessageId
|
|
397
|
+
* <b>DEPRECATED</b> Should not be provided.
|
|
398
|
+
* @param {string} sMessageName message name. Can be used to identify the message type or as a topic.
|
|
399
|
+
* @param {string[]|sap.ushell.services.MessageBroker.ClientAlias.AllClients} vTargetClientIds
|
|
400
|
+
* list of target client ids. Can include the wildcard "*" to send the message to all clients subscribed to the channel.
|
|
401
|
+
* If the wildcard is used, the other client ids are ignored.
|
|
402
|
+
* @param {object} oData additional data.
|
|
403
|
+
* @returns {Promise} Resolves once the message is published successfully.
|
|
339
404
|
*
|
|
340
405
|
* @since 1.110.0
|
|
341
406
|
* @private
|
|
342
407
|
*/
|
|
408
|
+
async publish (sChannelId, sClientId, sMessageId, sMessageName, vTargetClientIds, oData) {
|
|
409
|
+
if (!this.#bEnabled) {
|
|
410
|
+
throw new Error(`Cannot publish message of client '${sClientId}': MessageBroker is not enabled`);
|
|
411
|
+
}
|
|
343
412
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
413
|
+
if (typeof sMessageName === "string" && (Array.isArray(vTargetClientIds) || vTargetClientIds === ClientAlias.AllClients)) {
|
|
414
|
+
this.#oLogger.error(`The parameter 'sMessageId' was provided by client '${sClientId}'. It is deprecated and should not be provided`);
|
|
415
|
+
} else {
|
|
416
|
+
// do remapping
|
|
417
|
+
oData = vTargetClientIds;
|
|
418
|
+
vTargetClientIds = sMessageName;
|
|
419
|
+
sMessageName = sMessageId;
|
|
420
|
+
sMessageId = undefined;
|
|
421
|
+
}
|
|
347
422
|
|
|
348
|
-
|
|
349
|
-
|
|
423
|
+
let aTargetClientIds;
|
|
424
|
+
if (vTargetClientIds === ClientAlias.AllClients) {
|
|
425
|
+
aTargetClientIds = [ClientAlias.AllClients];
|
|
426
|
+
} else {
|
|
427
|
+
aTargetClientIds = [...vTargetClientIds];
|
|
350
428
|
}
|
|
351
429
|
|
|
352
430
|
// if client is not connected
|
|
353
|
-
if (!
|
|
354
|
-
|
|
355
|
-
Log.error(sError, null, "sap.ushell.services.MessageBroker");
|
|
356
|
-
return Promise.reject(sError);
|
|
431
|
+
if (!this.#sConnectedClients.has(sClientId)) {
|
|
432
|
+
throw new Error(`Cannot publish message '${sMessageName}' of client '${sClientId}': Client '${sClientId}' is not connected`);
|
|
357
433
|
}
|
|
358
434
|
|
|
359
435
|
// if channel does not exist
|
|
360
|
-
if (!oClientsPerChannel[sChannelId]) {
|
|
361
|
-
|
|
362
|
-
Log.error(sError, null, "sap.ushell.services.MessageBroker");
|
|
363
|
-
return Promise.reject(sError);
|
|
436
|
+
if (!this.#oClientsPerChannel[sChannelId]) {
|
|
437
|
+
throw new Error(`Cannot publish message '${sMessageName}' of client '${sClientId}': Channel '${sChannelId}' is unknown`);
|
|
364
438
|
}
|
|
365
439
|
|
|
366
|
-
const
|
|
440
|
+
const aSubscribedClients = this.#oClientsPerChannel[sChannelId];
|
|
441
|
+
const oPublishingClient = aSubscribedClients.find((oSubClient) => {
|
|
367
442
|
return oSubClient.clientId === sClientId;
|
|
368
443
|
});
|
|
369
444
|
|
|
370
445
|
// if client is not subscribed to the channel
|
|
371
|
-
if (!
|
|
372
|
-
|
|
373
|
-
Log.error(sError, null, "sap.ushell.services.MessageBroker");
|
|
374
|
-
return Promise.reject(sError);
|
|
446
|
+
if (!oPublishingClient) {
|
|
447
|
+
throw new Error(`Cannot publish message '${sMessageName}' of client '${sClientId}': Client is not subscribed to the provided channel '${sChannelId}'`);
|
|
375
448
|
}
|
|
376
449
|
|
|
377
|
-
|
|
378
|
-
const sTargetClientId = aTargetClientIds[sClientKey];
|
|
450
|
+
const bUsesWildcard = aTargetClientIds.includes(ClientAlias.AllClients);
|
|
379
451
|
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
452
|
+
let aTargetClients = [];
|
|
453
|
+
if (bUsesWildcard) {
|
|
454
|
+
aTargetClients = [...aSubscribedClients];
|
|
455
|
+
} else {
|
|
456
|
+
for (const sTargetClientId of aTargetClientIds) {
|
|
385
457
|
// check if target client exists
|
|
386
|
-
const
|
|
458
|
+
const oClientChannelData = aSubscribedClients.find((oClient) => {
|
|
387
459
|
return oClient.clientId === sTargetClientId;
|
|
388
460
|
});
|
|
389
461
|
|
|
390
|
-
if (
|
|
391
|
-
aTargetClients.push(
|
|
462
|
+
if (oClientChannelData) {
|
|
463
|
+
aTargetClients.push(oClientChannelData);
|
|
392
464
|
}
|
|
393
465
|
}
|
|
394
466
|
}
|
|
395
467
|
|
|
396
|
-
if (aTargetClients.length) {
|
|
397
|
-
|
|
398
|
-
return Promise.resolve();
|
|
468
|
+
if (!bUsesWildcard && !aTargetClients.length) {
|
|
469
|
+
throw new Error(`Cannot publish message '${sMessageName}' of client '${sClientId}': No target client(s) found in the provided channel '${sChannelId}'`);
|
|
399
470
|
}
|
|
400
471
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
return Promise.reject(sError);
|
|
404
|
-
};
|
|
472
|
+
this.#sendMessage(aTargetClients, sChannelId, sMessageName, sClientId, oData);
|
|
473
|
+
}
|
|
405
474
|
|
|
406
475
|
/**
|
|
476
|
+
* Adds the iframe origin to the list of accepted origins.
|
|
477
|
+
* The port is automatically added based on the protocol (HTTP/HTTPS).
|
|
407
478
|
*
|
|
408
|
-
* @param {string} sOrigin iframe origin.
|
|
479
|
+
* @param {string} sOrigin The iframe origin (e.g https://www.example.com:443)
|
|
409
480
|
*
|
|
410
481
|
* @since 1.110.0
|
|
411
482
|
* @private
|
|
412
483
|
*/
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
if (!bEnabled) {
|
|
484
|
+
addAcceptedOrigin (sOrigin) {
|
|
485
|
+
if (!this.#bEnabled) {
|
|
416
486
|
return;
|
|
417
487
|
}
|
|
418
488
|
|
|
419
|
-
if (typeof sOrigin
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
489
|
+
if (typeof sOrigin !== "string" || !sOrigin.length) {
|
|
490
|
+
throw new Error("Missing required parameter");
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
this.#sAcceptedOrigins.add(sOrigin);
|
|
494
|
+
const oUrl = new URL(sOrigin);
|
|
495
|
+
|
|
496
|
+
if (oUrl.protocol === "https:" && oUrl.port === "") {
|
|
497
|
+
// store the origin with and without port
|
|
498
|
+
if (sOrigin.endsWith(":443")) {
|
|
499
|
+
this.#sAcceptedOrigins.add(sOrigin.substring(0, sOrigin.length - 4));
|
|
500
|
+
} else {
|
|
501
|
+
this.#sAcceptedOrigins.add(`${sOrigin}:443`);
|
|
423
502
|
}
|
|
424
|
-
} else {
|
|
425
|
-
Log.warning("Missing required parameter sOrigin", null, "sap.ushell.services.MessageBroker");
|
|
426
503
|
}
|
|
427
|
-
|
|
504
|
+
if (oUrl.protocol === "http:" && oUrl.port === "") {
|
|
505
|
+
// store the origin with and without port
|
|
506
|
+
if (sOrigin.endsWith(":80")) {
|
|
507
|
+
this.#sAcceptedOrigins.add(sOrigin.substring(0, sOrigin.length - 3));
|
|
508
|
+
} else {
|
|
509
|
+
this.#sAcceptedOrigins.add(`${sOrigin}:80`);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
}
|
|
428
513
|
|
|
429
514
|
/**
|
|
515
|
+
* Removes the iframe origin from the list of accepted origins.
|
|
516
|
+
* Also removes the origin with or without port based on the protocol (HTTP/HTTPS).
|
|
430
517
|
*
|
|
431
|
-
* @param {string} sOrigin iframe origin.
|
|
518
|
+
* @param {string} sOrigin The iframe origin (e.g https://www.example.com:443)
|
|
432
519
|
*
|
|
433
520
|
* @since 1.110.0
|
|
434
521
|
* @private
|
|
435
522
|
*/
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
if (!bEnabled) {
|
|
523
|
+
removeAcceptedOrigin (sOrigin) {
|
|
524
|
+
if (!this.#bEnabled) {
|
|
439
525
|
return;
|
|
440
526
|
}
|
|
441
|
-
|
|
442
|
-
|
|
527
|
+
|
|
528
|
+
if (typeof sOrigin !== "string" || !sOrigin.length) {
|
|
529
|
+
throw new Error("Missing required parameter");
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
this.#sAcceptedOrigins.delete(sOrigin);
|
|
533
|
+
const oUrl = new URL(sOrigin);
|
|
534
|
+
|
|
535
|
+
if (oUrl.protocol === "https:" && oUrl.port === "") {
|
|
536
|
+
// remove the origin with and without port
|
|
537
|
+
if (sOrigin.endsWith(":443")) {
|
|
538
|
+
this.#sAcceptedOrigins.delete(sOrigin.substring(0, sOrigin.length - 4));
|
|
539
|
+
} else {
|
|
540
|
+
this.#sAcceptedOrigins.delete(`${sOrigin}:443`);
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
if (oUrl.protocol === "http:" && oUrl.port === "") {
|
|
544
|
+
// remove the origin with and without port
|
|
545
|
+
if (sOrigin.endsWith(":80")) {
|
|
546
|
+
this.#sAcceptedOrigins.delete(sOrigin.substring(0, sOrigin.length - 3));
|
|
547
|
+
} else {
|
|
548
|
+
this.#sAcceptedOrigins.delete(`${sOrigin}:80`);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
}
|
|
443
552
|
|
|
444
553
|
/**
|
|
445
|
-
*
|
|
446
|
-
* @returns {string[]}
|
|
554
|
+
* Returns the current list of accepted origins.
|
|
555
|
+
* @returns {string[]} The list of accepted origins.
|
|
447
556
|
*
|
|
448
557
|
* @since 1.110.0
|
|
449
558
|
* @private
|
|
450
559
|
*/
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
if (!bEnabled) {
|
|
560
|
+
getAcceptedOrigins () {
|
|
561
|
+
if (!this.#bEnabled) {
|
|
454
562
|
return;
|
|
455
563
|
}
|
|
456
|
-
return
|
|
457
|
-
}
|
|
564
|
+
return Array.from(this.#sAcceptedOrigins.values());
|
|
565
|
+
}
|
|
458
566
|
|
|
459
567
|
/**
|
|
460
|
-
*
|
|
568
|
+
* Returns the map of subscribed clients.
|
|
461
569
|
* @returns {object} the result.
|
|
462
570
|
*
|
|
463
571
|
* @since 1.110.0
|
|
464
572
|
* @private
|
|
465
573
|
*/
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
if (!bEnabled) {
|
|
574
|
+
getSubscribedClients () {
|
|
575
|
+
if (!this.#bEnabled) {
|
|
469
576
|
return;
|
|
470
577
|
}
|
|
471
|
-
return this
|
|
472
|
-
}
|
|
578
|
+
return deepClone(this.#oClientsPerChannel);
|
|
579
|
+
}
|
|
473
580
|
|
|
474
581
|
/**
|
|
582
|
+
* Calls the connection callback for all subscribed clients except the one who initiated the event.
|
|
475
583
|
*
|
|
476
|
-
* @param {
|
|
477
|
-
* @param {
|
|
478
|
-
* @param {
|
|
584
|
+
* @param {sap.ushell.services.MessageBroker.ClientConnectionMessage} sMessageName The event to emit.
|
|
585
|
+
* @param {ClientId} sClientId The client id of the sender.
|
|
586
|
+
* @param {sap.ushell.services.MessageBroker.Channel[]} aChannels subscribed/unsubscribed channels of the client.
|
|
479
587
|
*
|
|
480
588
|
* @since 1.110.0
|
|
481
589
|
* @private
|
|
482
590
|
*/
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
const oChannel = oClientsPerChannel[sChannelKey];
|
|
489
|
-
|
|
490
|
-
for (const sClientKey in oChannel) {
|
|
491
|
-
const oClient = oChannel[sClientKey];
|
|
492
|
-
// do not notify the same client who initiated the event
|
|
493
|
-
if (oClient.clientId !== sClientId && !oNotifiedClients[oClient.clientId]) {
|
|
494
|
-
const oParams = {
|
|
495
|
-
clientId: sClientId,
|
|
496
|
-
channels: aChannels
|
|
497
|
-
};
|
|
498
|
-
|
|
499
|
-
if (oClient.isUI5 !== false) {
|
|
500
|
-
oClient.clientConnectionCallback(sMessageName, sClientId, aChannels);
|
|
501
|
-
} else {
|
|
502
|
-
oParams.channelId = "sap.ushell.MessageBroker";
|
|
503
|
-
oParams.messageName = sMessageName;
|
|
504
|
-
|
|
505
|
-
sap.ui.require(["sap/ushell/appIntegration/PostMessageManager"], (PostMessageManager) => {
|
|
506
|
-
const oResult = this._buildPostMessageObject("event", oParams);
|
|
507
|
-
this._sendPostMessage(PostMessageManager, oResult, oClient.iframe, oClient.origin);
|
|
508
|
-
});
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
oNotifiedClients[oClient.clientId] = true;
|
|
512
|
-
}
|
|
591
|
+
#emitConnectionEvent (sMessageName, sClientId, aChannels) {
|
|
592
|
+
for (const oClient of Object.values(this.#oSubscribedClients)) {
|
|
593
|
+
// do not notify the same client who initiated the event
|
|
594
|
+
if (oClient.clientId !== sClientId) {
|
|
595
|
+
oClient.clientConnectionCallback(sMessageName, sClientId, deepClone(aChannels));
|
|
513
596
|
}
|
|
514
597
|
}
|
|
515
|
-
}
|
|
598
|
+
}
|
|
516
599
|
|
|
517
600
|
/**
|
|
601
|
+
* Calls the message callback for all target clients except the one who initiated the event.
|
|
518
602
|
*
|
|
519
|
-
* @param {
|
|
520
|
-
* @param {
|
|
521
|
-
* @param {string}
|
|
522
|
-
* @param {
|
|
523
|
-
* @param {
|
|
524
|
-
* @param {object} data additional data.
|
|
603
|
+
* @param {ClientChannelData[]} aTargetClients target clients.
|
|
604
|
+
* @param {ChannelId} sChannelId The channel id.
|
|
605
|
+
* @param {string} sMessageName The message name.
|
|
606
|
+
* @param {ClientId} sClientId The client id of the sender.
|
|
607
|
+
* @param {object} oData Additional data.
|
|
525
608
|
*
|
|
526
609
|
* @since 1.110.0
|
|
527
610
|
* @private
|
|
528
611
|
*/
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
for (const sClientKey in aTargetClients) {
|
|
532
|
-
const oClient = aTargetClients[sClientKey];
|
|
533
|
-
|
|
612
|
+
#sendMessage (aTargetClients, sChannelId, sMessageName, sClientId, oData) {
|
|
613
|
+
for (const oClient of aTargetClients) {
|
|
534
614
|
// do not send message to the same client who requested to send it
|
|
535
615
|
if (oClient.clientId !== sClientId) {
|
|
536
|
-
|
|
537
|
-
oClient.messageCallback(sClientId, sChannelId, sMessageName, data);
|
|
538
|
-
} else {
|
|
539
|
-
const oParams = {
|
|
540
|
-
clientId: sClientId,
|
|
541
|
-
channelId: sChannelId,
|
|
542
|
-
messageName: sMessageName,
|
|
543
|
-
data: data
|
|
544
|
-
};
|
|
545
|
-
|
|
546
|
-
sap.ui.require(["sap/ushell/appIntegration/PostMessageManager"], (PostMessageManager) => {
|
|
547
|
-
const oResult = this._buildPostMessageObject("request", oParams);
|
|
548
|
-
this._sendPostMessage(PostMessageManager, oResult, oClient.iframe, oClient.origin);
|
|
549
|
-
});
|
|
550
|
-
}
|
|
616
|
+
oClient.messageCallback(sClientId, sChannelId, sMessageName, deepClone(oData));
|
|
551
617
|
}
|
|
552
618
|
}
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
/**
|
|
556
|
-
*
|
|
557
|
-
* @param {string} sEndpoint api method name.
|
|
558
|
-
* @param {Array<*>} aParams api parameters.
|
|
559
|
-
* @returns {Promise} Promise result.
|
|
560
|
-
*
|
|
561
|
-
* @since 1.110.0
|
|
562
|
-
* @private
|
|
563
|
-
*/
|
|
564
|
-
|
|
565
|
-
this._callApi = function (sEndpoint, aParams) {
|
|
566
|
-
return this[sEndpoint].apply(this, aParams);
|
|
567
|
-
};
|
|
619
|
+
}
|
|
568
620
|
|
|
569
621
|
/**
|
|
570
|
-
*
|
|
571
|
-
*
|
|
572
|
-
* @param {string} sOrigin iframe origin.
|
|
573
|
-
* @returns {Promise} Promise result.
|
|
622
|
+
* ONLY FOR TESTING!
|
|
623
|
+
* Resets the Message Broker Engine.
|
|
574
624
|
*
|
|
575
|
-
* @since 1.
|
|
625
|
+
* @since 1.140.0
|
|
576
626
|
* @private
|
|
577
627
|
*/
|
|
628
|
+
reset () {
|
|
629
|
+
// Reset all internal states
|
|
630
|
+
this.#bEnabled = true;
|
|
631
|
+
this.#bSkipEmitInformAboutOtherClients = false;
|
|
578
632
|
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
const sRequestId = oMessageDataBody.requestId;
|
|
584
|
-
let sMessageName = oMessageDataBody.messageName;
|
|
585
|
-
const aSubscribedChannels = oMessageDataBody.subscribedChannels;
|
|
586
|
-
const aTargetClientIds = oMessageDataBody.targetClientIds;
|
|
587
|
-
const data = oMessageDataBody.data;
|
|
588
|
-
|
|
589
|
-
const oApiParams = {
|
|
590
|
-
connect: [
|
|
591
|
-
sClientId
|
|
592
|
-
],
|
|
593
|
-
disconnect: [
|
|
594
|
-
sClientId
|
|
595
|
-
],
|
|
596
|
-
subscribe: [
|
|
597
|
-
sClientId,
|
|
598
|
-
aSubscribedChannels,
|
|
599
|
-
null,
|
|
600
|
-
null,
|
|
601
|
-
oIframe,
|
|
602
|
-
sOrigin
|
|
603
|
-
],
|
|
604
|
-
unsubscribe: [
|
|
605
|
-
sClientId,
|
|
606
|
-
aSubscribedChannels
|
|
607
|
-
],
|
|
608
|
-
publish: [
|
|
609
|
-
sChannelId,
|
|
610
|
-
sClientId,
|
|
611
|
-
sRequestId,
|
|
612
|
-
sMessageName,
|
|
613
|
-
aTargetClientIds,
|
|
614
|
-
data
|
|
615
|
-
]
|
|
616
|
-
};
|
|
633
|
+
this.#sAcceptedOrigins.clear();
|
|
634
|
+
this.#sConnectedClients.clear();
|
|
635
|
+
this.#oSubscribedClients = {};
|
|
636
|
+
this.#oClientsPerChannel = {};
|
|
617
637
|
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
clientId: sClientId,
|
|
621
|
-
messageName: sMessageName,
|
|
622
|
-
requestId: sRequestId
|
|
623
|
-
};
|
|
638
|
+
// Add default origin again
|
|
639
|
+
this.addAcceptedOrigin(window.location.origin);
|
|
624
640
|
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
this._callApi(sMessageName, oApiParams[sMessageName])
|
|
628
|
-
.then(() => {
|
|
629
|
-
if (sMessageName !== "publish") {
|
|
630
|
-
sap.ui.require(["sap/ushell/appIntegration/PostMessageManager"], (PostMessageManager) => {
|
|
631
|
-
const oResult = this._buildPostMessageObject("response", oPostMessageParams);
|
|
632
|
-
oResult.messageBody.status = "accepted";
|
|
633
|
-
|
|
634
|
-
this._sendPostMessage(PostMessageManager, oResult, oIframe, sOrigin);
|
|
635
|
-
});
|
|
636
|
-
}
|
|
637
|
-
resolve({ _noresponse_: true });
|
|
638
|
-
}).catch((sError) => {
|
|
639
|
-
reject(sError);
|
|
640
|
-
});
|
|
641
|
+
this.#aPendingTimeouts.forEach((iTimeout) => {
|
|
642
|
+
clearTimeout(iTimeout);
|
|
641
643
|
});
|
|
642
|
-
|
|
644
|
+
this.#aPendingTimeouts = [];
|
|
645
|
+
}
|
|
643
646
|
|
|
644
647
|
/**
|
|
648
|
+
* ONLY FOR TESTING!
|
|
649
|
+
* Skips the emit of the "inform about other clients" event.
|
|
650
|
+
* This is useful for testing purposes to avoid sending messages to other clients.
|
|
645
651
|
*
|
|
646
|
-
* @
|
|
647
|
-
* @param {object} oParams object properties.
|
|
648
|
-
* @returns {object} relevant post message object.
|
|
649
|
-
*
|
|
650
|
-
* @since 1.110.0
|
|
652
|
+
* @since 1.140.0
|
|
651
653
|
* @private
|
|
652
654
|
*/
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
if (sObjectType === "response") {
|
|
658
|
-
const oMessageBody = {
|
|
659
|
-
channelId: oParams.channelId,
|
|
660
|
-
clientId: oParams.clientId,
|
|
661
|
-
correlationMessageId: oParams.requestId,
|
|
662
|
-
messageName: oParams.messageName
|
|
663
|
-
};
|
|
664
|
-
const oResponse = PostMessageUtils.createPostMessageResponse(
|
|
665
|
-
sServiceName,
|
|
666
|
-
oParams.requestId,
|
|
667
|
-
oMessageBody,
|
|
668
|
-
true
|
|
669
|
-
);
|
|
670
|
-
return oResponse;
|
|
671
|
-
}
|
|
672
|
-
|
|
673
|
-
if (sObjectType === "event") {
|
|
674
|
-
const oMessageBody = {
|
|
675
|
-
channelId: oParams.channelId,
|
|
676
|
-
clientId: oParams.clientId,
|
|
677
|
-
messageName: oParams.messageName,
|
|
678
|
-
channels: oParams.channels
|
|
679
|
-
};
|
|
680
|
-
const oRequest = PostMessageUtils.createPostMessageRequest(
|
|
681
|
-
sServiceName,
|
|
682
|
-
oMessageBody
|
|
683
|
-
);
|
|
684
|
-
return oRequest;
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
if (sObjectType === "request") {
|
|
688
|
-
const oMessageBody = {
|
|
689
|
-
channelId: oParams.channelId,
|
|
690
|
-
clientId: oParams.clientId,
|
|
691
|
-
messageName: oParams.messageName,
|
|
692
|
-
data: oParams.data
|
|
693
|
-
};
|
|
694
|
-
const oRequest = PostMessageUtils.createPostMessageRequest(
|
|
695
|
-
sServiceName,
|
|
696
|
-
oMessageBody
|
|
697
|
-
);
|
|
698
|
-
return oRequest;
|
|
699
|
-
}
|
|
700
|
-
|
|
701
|
-
return PostMessageUtils.createPostMessageRequest(
|
|
702
|
-
sServiceName
|
|
703
|
-
);
|
|
704
|
-
};
|
|
705
|
-
|
|
706
|
-
/**
|
|
707
|
-
*
|
|
708
|
-
* @param {string} sType object type.
|
|
709
|
-
* @param {object} oParams object properties.
|
|
710
|
-
* @returns {object} relevant post message object.
|
|
711
|
-
*
|
|
712
|
-
* @since 1.134.0
|
|
713
|
-
* @private
|
|
714
|
-
*/
|
|
715
|
-
|
|
716
|
-
this._buildPostMessageObject = function (sObjectType, oParams) {
|
|
717
|
-
const sServiceName = "sap.ushell.services.MessageBroker";
|
|
718
|
-
|
|
719
|
-
if (sObjectType === "response") {
|
|
720
|
-
const oMessageBody = {
|
|
721
|
-
channelId: oParams.channelId,
|
|
722
|
-
clientId: oParams.clientId,
|
|
723
|
-
correlationMessageId: oParams.requestId,
|
|
724
|
-
messageName: oParams.messageName
|
|
725
|
-
};
|
|
726
|
-
return {
|
|
727
|
-
isRequest: false,
|
|
728
|
-
requestId: oParams.requestId,
|
|
729
|
-
isSuccess: true,
|
|
730
|
-
serviceRequest: sServiceName,
|
|
731
|
-
messageBody: oMessageBody
|
|
732
|
-
};
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
if (sObjectType === "event") {
|
|
736
|
-
const oMessageBody = {
|
|
737
|
-
channelId: oParams.channelId,
|
|
738
|
-
clientId: oParams.clientId,
|
|
739
|
-
messageName: oParams.messageName,
|
|
740
|
-
channels: oParams.channels
|
|
741
|
-
};
|
|
742
|
-
return {
|
|
743
|
-
isRequest: true,
|
|
744
|
-
serviceRequest: sServiceName,
|
|
745
|
-
messageBody: oMessageBody
|
|
746
|
-
};
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
if (sObjectType === "request") {
|
|
750
|
-
const oMessageBody = {
|
|
751
|
-
channelId: oParams.channelId,
|
|
752
|
-
clientId: oParams.clientId,
|
|
753
|
-
messageName: oParams.messageName,
|
|
754
|
-
data: oParams.data
|
|
755
|
-
};
|
|
756
|
-
return {
|
|
757
|
-
isRequest: true,
|
|
758
|
-
serviceRequest: sServiceName,
|
|
759
|
-
messageBody: oMessageBody
|
|
760
|
-
};
|
|
761
|
-
}
|
|
762
|
-
|
|
763
|
-
return {
|
|
764
|
-
isRequest: true,
|
|
765
|
-
serviceRequest: sServiceName
|
|
766
|
-
};
|
|
767
|
-
};
|
|
768
|
-
|
|
769
|
-
this._sendPostMessage = function (PostMessageManager, oResult, oContentWindow, sTargetOrigin) {
|
|
770
|
-
if (oResult.isRequest) {
|
|
771
|
-
PostMessageManager.sendRequest(
|
|
772
|
-
oResult.serviceRequest,
|
|
773
|
-
oResult.messageBody,
|
|
774
|
-
oContentWindow,
|
|
775
|
-
sTargetOrigin,
|
|
776
|
-
false // bWaitForResponse
|
|
777
|
-
);
|
|
778
|
-
} else {
|
|
779
|
-
PostMessageManager.sendResponse(
|
|
780
|
-
oResult.requestId,
|
|
781
|
-
oResult.serviceRequest,
|
|
782
|
-
oResult.messageBody,
|
|
783
|
-
oResult.isSuccess,
|
|
784
|
-
oContentWindow,
|
|
785
|
-
sTargetOrigin
|
|
786
|
-
);
|
|
787
|
-
}
|
|
788
|
-
};
|
|
789
|
-
|
|
790
|
-
/**
|
|
791
|
-
*
|
|
792
|
-
* @param {string} sPrefix function name prefix.
|
|
793
|
-
* @param {string} sType function type.
|
|
794
|
-
* @returns {string} function name to call.
|
|
795
|
-
*
|
|
796
|
-
* @since 1.110.0
|
|
797
|
-
* @private
|
|
798
|
-
*/
|
|
799
|
-
|
|
800
|
-
this._buildFunctionName = function (sPrefix, sType) {
|
|
801
|
-
sType = sType.charAt(0).toUpperCase() + sType.substring(1);
|
|
802
|
-
return sPrefix + sType;
|
|
803
|
-
};
|
|
804
|
-
|
|
805
|
-
/**
|
|
806
|
-
*
|
|
807
|
-
* @param {object} oEntity.
|
|
808
|
-
* @returns {object} deep copy.
|
|
809
|
-
*
|
|
810
|
-
* @since 1.110.0
|
|
811
|
-
* @private
|
|
812
|
-
*/
|
|
813
|
-
|
|
814
|
-
this._deepCopy = function (oEntity) {
|
|
815
|
-
return deepExtend(oEntity);
|
|
816
|
-
};
|
|
817
|
-
|
|
818
|
-
this.reset = function () {
|
|
819
|
-
// Reset all internal states
|
|
820
|
-
bEnabled = true;
|
|
821
|
-
for (const sKey in oAcceptedOrigins) {
|
|
822
|
-
delete oAcceptedOrigins[sKey];
|
|
823
|
-
}
|
|
824
|
-
for (const sKey in oClientsPerChannel) {
|
|
825
|
-
delete oClientsPerChannel[sKey];
|
|
826
|
-
}
|
|
827
|
-
for (const sKey in oConnectedClients) {
|
|
828
|
-
delete oConnectedClients[sKey];
|
|
829
|
-
}
|
|
830
|
-
for (const sKey in oSubscribedClients) {
|
|
831
|
-
delete oSubscribedClients[sKey];
|
|
832
|
-
}
|
|
833
|
-
|
|
834
|
-
// Add default origin again
|
|
835
|
-
oAcceptedOrigins[window.location.origin] = true;
|
|
836
|
-
};
|
|
655
|
+
skipEmitInformAboutOtherClients () {
|
|
656
|
+
this.#bSkipEmitInformAboutOtherClients = true;
|
|
657
|
+
}
|
|
837
658
|
}
|
|
838
659
|
|
|
839
660
|
return new MessageBrokerEngine();
|
|
840
|
-
}
|
|
661
|
+
});
|