@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.
Files changed (689) hide show
  1. package/package.json +2 -2
  2. package/src/main/js/sap/ushell/.library +1 -1
  3. package/src/main/js/sap/ushell/AppInfoParameters.js +1 -1
  4. package/src/main/js/sap/ushell/ApplicationType/UrlPostProcessing.js +0 -1
  5. package/src/main/js/sap/ushell/ApplicationType/guiResolution.js +6 -6
  6. package/src/main/js/sap/ushell/ApplicationType/systemAlias.js +22 -25
  7. package/src/main/js/sap/ushell/ApplicationType/urlResolution.js +12 -6
  8. package/src/main/js/sap/ushell/ApplicationType/urlTemplateResolution.js +277 -302
  9. package/src/main/js/sap/ushell/ApplicationType/wdaResolution.js +11 -10
  10. package/src/main/js/sap/ushell/ApplicationType.js +8 -8
  11. package/src/main/js/sap/ushell/Container.js +53 -55
  12. package/src/main/js/sap/ushell/EventHub.js +5 -7
  13. package/src/main/js/sap/ushell/Fiori20Adapter.js +17 -11
  14. package/src/main/js/sap/ushell/Fiori20AdapterTest.js +1 -1
  15. package/src/main/js/sap/ushell/NWBCInterface.js +1 -1
  16. package/src/main/js/sap/ushell/SessionHandler.js +1 -1
  17. package/src/main/js/sap/ushell/TechnicalParameters.js +5 -5
  18. package/src/main/js/sap/ushell/URLTemplateProcessor/DefinitionParameterSetBuilder.js +1 -1
  19. package/src/main/js/sap/ushell/URLTemplateProcessor/DependencyGraph.js +1 -1
  20. package/src/main/js/sap/ushell/URLTemplateProcessor/Functions.js +11 -4
  21. package/src/main/js/sap/ushell/URLTemplateProcessor/Resolvers.js +1 -1
  22. package/src/main/js/sap/ushell/URLTemplateProcessor/TemplateParameterParser.js +1 -1
  23. package/src/main/js/sap/ushell/URLTemplateProcessor/utils.js +13 -2
  24. package/src/main/js/sap/ushell/URLTemplateProcessor.js +13 -3
  25. package/src/main/js/sap/ushell/Ui5NativeServiceFactory.js +4 -2
  26. package/src/main/js/sap/ushell/Ui5ServiceFactory.js +29 -27
  27. package/src/main/js/sap/ushell/User.js +12 -12
  28. package/src/main/js/sap/ushell/UserActivityLog.js +3 -3
  29. package/src/main/js/sap/ushell/adapters/AppVariantPersonalizationAdapter.js +19 -15
  30. package/src/main/js/sap/ushell/adapters/cdm/ClientSideTargetResolutionAdapter.js +13 -10
  31. package/src/main/js/sap/ushell/adapters/cdm/CommonDataModelAdapter.js +15 -14
  32. package/src/main/js/sap/ushell/adapters/cdm/ConfigurationDefaultsAdapter.js +1 -1
  33. package/src/main/js/sap/ushell/adapters/cdm/ContainerAdapter.js +3 -3
  34. package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +155 -129
  35. package/src/main/js/sap/ushell/adapters/cdm/PagesCommonDataModelAdapter.js +25 -23
  36. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationAdapter.js +1 -1
  37. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationV2Adapter.js +1 -1
  38. package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegion.controller.js +4 -4
  39. package/src/main/js/sap/ushell/adapters/cdm/Ui5ComponentLoaderAdapter.js +1 -1
  40. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/modifyHome.js +1 -1
  41. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readCatalogs.js +1 -1
  42. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readHome.js +1 -1
  43. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/uri.transform.js +1 -1
  44. package/src/main/js/sap/ushell/adapters/cdm/_Personalization/internals.js +8 -13
  45. package/src/main/js/sap/ushell/adapters/cdm/util/AppForInbound.js +1 -1
  46. package/src/main/js/sap/ushell/adapters/cdm/util/cdmSiteUtils.js +6 -3
  47. package/src/main/js/sap/ushell/adapters/cdm/v3/AdapterBase.js +42 -30
  48. package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +112 -97
  49. package/src/main/js/sap/ushell/adapters/cdm/v3/LaunchPageAdapter.js +1 -1
  50. package/src/main/js/sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js +1 -1
  51. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readApplications.js +1 -1
  52. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readCatalogs.js +1 -1
  53. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readHome.js +1 -1
  54. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readPages.js +1 -1
  55. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readUtils.js +1 -1
  56. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readVisualizations.js +1 -1
  57. package/src/main/js/sap/ushell/adapters/cdm/v3/utilsCdm.js +5 -6
  58. package/src/main/js/sap/ushell/adapters/cep/MenuAdapter.js +2 -2
  59. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionAdapter.js +1 -1
  60. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionInternalAdapter.js +10 -8
  61. package/src/main/js/sap/ushell/adapters/cep/SearchCEPAdapter.js +1 -1
  62. package/src/main/js/sap/ushell/adapters/cflp/UserDefaultParameterPersistenceAdapter.js +13 -14
  63. package/src/main/js/sap/ushell/adapters/local/AdapterContainer.js +162 -162
  64. package/src/main/js/sap/ushell/adapters/local/AppStateAdapter.js +14 -14
  65. package/src/main/js/sap/ushell/adapters/local/ClientSideTargetResolutionAdapter.js +2 -2
  66. package/src/main/js/sap/ushell/adapters/local/ContainerAdapter.js +1 -1
  67. package/src/main/js/sap/ushell/adapters/local/FlpLaunchPageAdapter.js +22 -22
  68. package/src/main/js/sap/ushell/adapters/local/LaunchPageAdapter.js +1 -1
  69. package/src/main/js/sap/ushell/adapters/local/MenuAdapter.js +4 -4
  70. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionAdapter.js +1 -1
  71. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionInternalAdapter.js +4 -4
  72. package/src/main/js/sap/ushell/adapters/local/PageBuildingAdapter.js +1 -1
  73. package/src/main/js/sap/ushell/adapters/local/PagePersistenceAdapter.js +2 -2
  74. package/src/main/js/sap/ushell/adapters/local/PersonalizationAdapter.js +2 -2
  75. package/src/main/js/sap/ushell/adapters/local/PersonalizationV2Adapter.js +1 -1
  76. package/src/main/js/sap/ushell/adapters/local/SearchAdapter.js +1 -1
  77. package/src/main/js/sap/ushell/adapters/local/SearchCEPAdapter.js +2 -2
  78. package/src/main/js/sap/ushell/adapters/local/SupportTicketAdapter.js +1 -1
  79. package/src/main/js/sap/ushell/adapters/local/Ui5ComponentLoaderAdapter.js +1 -1
  80. package/src/main/js/sap/ushell/adapters/local/UserDefaultParameterPersistenceAdapter.js +14 -14
  81. package/src/main/js/sap/ushell/adapters/local/UserInfoAdapter.js +8 -13
  82. package/src/main/js/sap/ushell/api/common/ComponentInstantiation.js +5 -5
  83. package/src/main/js/sap/ushell/api/performance/Extension.js +2 -2
  84. package/src/main/js/sap/ushell/api/performance/NavigationSource.js +8 -8
  85. package/src/main/js/sap/ushell/appIntegration/AppLifeCycle.js +48 -81
  86. package/src/main/js/sap/ushell/appIntegration/ApplicationContainer.js +7 -35
  87. package/src/main/js/sap/ushell/appIntegration/ApplicationContainerCache.js +9 -6
  88. package/src/main/js/sap/ushell/appIntegration/IframeApplicationContainer.js +31 -7
  89. package/src/main/js/sap/ushell/appIntegration/IframeApplicationContainerRenderer.js +0 -3
  90. package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/AppInfoHandler.js +8 -5
  91. package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/AppStateHandler.js +1 -1
  92. package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/BookmarkHandler.js +15 -11
  93. package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/LifecycleHandler.js +21 -1
  94. package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/MessageBrokerHandler.js +110 -17
  95. package/src/main/js/sap/ushell/appIntegration/PostMessageHandler/SessionHandler.js +20 -4
  96. package/src/main/js/sap/ushell/appIntegration/PostMessageManager.js +26 -12
  97. package/src/main/js/sap/ushell/appIntegration/UI5ApplicationContainer.js +0 -1
  98. package/src/main/js/sap/ushell/appIntegration/contracts/EmbeddedUI5Handler.js +2 -23
  99. package/src/main/js/sap/ushell/appIntegration/contracts/StatefulContainerV1Handler.js +0 -3
  100. package/src/main/js/sap/ushell/appIntegration/contracts/StatefulContainerV2Handler.js +1 -3
  101. package/src/main/js/sap/ushell/appRuntime/ui5/AppCommunicationMgr.js +11 -10
  102. package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +3 -3
  103. package/src/main/js/sap/ushell/appRuntime/ui5/SessionHandlerAgent.js +3 -3
  104. package/src/main/js/sap/ushell/appRuntime/ui5/libsPreload.js +2 -2
  105. package/src/main/js/sap/ushell/appRuntime/ui5/performance/FesrEnhancer.js +1 -1
  106. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/AppLifeCycleUtils.js +11 -3
  107. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/BaseRTAPluginStatus.js +9 -1
  108. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/CheckConditions.js +18 -2
  109. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/Renderer.js +6 -0
  110. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/Trigger.js +6 -0
  111. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/rtaShell/Component.js +2 -1
  112. package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/RendererExtensions.js +1 -1
  113. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppConfiguration.js +1 -1
  114. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycle.js +3 -3
  115. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycleAgent.js +7 -6
  116. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppState.js +1 -1
  117. package/src/main/js/sap/ushell/appRuntime/ui5/services/Bookmark.js +3 -3
  118. package/src/main/js/sap/ushell/appRuntime/ui5/services/BookmarkV2.js +1 -1
  119. package/src/main/js/sap/ushell/appRuntime/ui5/services/CommonDataModel.js +1 -1
  120. package/src/main/js/sap/ushell/appRuntime/ui5/services/Container.js +5 -3
  121. package/src/main/js/sap/ushell/appRuntime/ui5/services/CrossApplicationNavigation.js +75 -18
  122. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension/Item.js +1 -1
  123. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension.js +1 -1
  124. package/src/main/js/sap/ushell/appRuntime/ui5/services/FlpLaunchPage.js +1 -1
  125. package/src/main/js/sap/ushell/appRuntime/ui5/services/FrameBoundExtension.js +1 -1
  126. package/src/main/js/sap/ushell/appRuntime/ui5/services/LaunchPage.js +1 -1
  127. package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker/Client.js +114 -0
  128. package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker.js +155 -56
  129. package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolution.js +2 -2
  130. package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolutionInternal.js +2 -2
  131. package/src/main/js/sap/ushell/appRuntime/ui5/services/Navigation.js +17 -21
  132. package/src/main/js/sap/ushell/appRuntime/ui5/services/ReferenceResolver.js +1 -1
  133. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigation.js +1 -1
  134. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigationInternal.js +1 -1
  135. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellUIService.js +1 -1
  136. package/src/main/js/sap/ushell/appRuntime/ui5/services/UserInfo.js +2 -2
  137. package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/ContainerAdapter.js +4 -3
  138. package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/Ui5ComponentLoaderAdapter.js +1 -1
  139. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/FLPLoader.js +1 -3
  140. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/logger.js +1 -1
  141. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/state.js +1 -1
  142. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent.js +21 -22
  143. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5datetimeformat.js +5 -5
  144. package/src/main/js/sap/ushell/bootstrap/common/common.debug.mode.js +1 -1
  145. package/src/main/js/sap/ushell/bootstrap/common/common.load.core-min.js +14 -2
  146. package/src/main/js/sap/ushell/bootstrap/common/common.load.script.js +1 -1
  147. package/src/main/js/sap/ushell/bootstrap/common/common.read.metatags.js +2 -2
  148. package/src/main/js/sap/ushell/bootstrap/common/common.util.js +2 -2
  149. package/src/main/js/sap/ushell/bootstrap/sandbox2/sandbox.js +1 -1
  150. package/src/main/js/sap/ushell/bootstrap/sandbox2.js +1 -1
  151. package/src/main/js/sap/ushell/components/CatalogsManager.js +3 -3
  152. package/src/main/js/sap/ushell/components/HomepageManager.js +120 -117
  153. package/src/main/js/sap/ushell/components/SharedComponentUtils.js +24 -13
  154. package/src/main/js/sap/ushell/components/_HomepageManager/PersistentPageOperationAdapter.js +17 -17
  155. package/src/main/js/sap/ushell/components/_HomepageManager/TransientPageOperationAdapter.js +4 -4
  156. package/src/main/js/sap/ushell/components/appfinder/AppFinder.controller.js +6 -3
  157. package/src/main/js/sap/ushell/components/appfinder/Catalog.controller.js +2 -2
  158. package/src/main/js/sap/ushell/components/appfinder/CatalogView.js +3 -3
  159. package/src/main/js/sap/ushell/components/appfinder/EasyAccess.controller.js +119 -108
  160. package/src/main/js/sap/ushell/components/appfinder/HierarchyAppsView.js +2 -2
  161. package/src/main/js/sap/ushell/components/appfinder/HierarchyFolders.controller.js +17 -15
  162. package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
  163. package/src/main/js/sap/ushell/components/cards/Configuration.controller.js +35 -33
  164. package/src/main/js/sap/ushell/components/cards/ManifestPropertyHelper.js +6 -4
  165. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/Edition.js +2 -2
  166. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/People.js +1 -1
  167. package/src/main/js/sap/ushell/components/contentFinder/CatalogService.js +6 -6
  168. package/src/main/js/sap/ushell/components/contentFinder/Component.js +1 -1
  169. package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +1 -1
  170. package/src/main/js/sap/ushell/components/contentFinder/controller/ContentFinderDialog.controller.js +1 -1
  171. package/src/main/js/sap/ushell/components/contentFinder/dialog/Component.js +1 -1
  172. package/src/main/js/sap/ushell/components/contentFinder/dialog/manifest.json +1 -1
  173. package/src/main/js/sap/ushell/components/contentFinder/manifest.json +1 -1
  174. package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +1 -1
  175. package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +29 -13
  176. package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +6 -1
  177. package/src/main/js/sap/ushell/components/factsheet/Component.js +1 -1
  178. package/src/main/js/sap/ushell/components/factsheet/factory/ThingInspector.js +2 -2
  179. package/src/main/js/sap/ushell/components/homepage/ActionMode.js +1 -1
  180. package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +1 -1
  181. package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +1 -1
  182. package/src/main/js/sap/ushell/components/homepage/DashboardUIActions.js +2 -2
  183. package/src/main/js/sap/ushell/components/homepage/manifest.json +1 -1
  184. package/src/main/js/sap/ushell/components/pages/ActionMode.js +1 -1
  185. package/src/main/js/sap/ushell/components/pages/Component.js +1 -1
  186. package/src/main/js/sap/ushell/components/pages/MyHomeImport.js +2 -2
  187. package/src/main/js/sap/ushell/components/pages/controller/ImportDialog.controller.js +8 -8
  188. package/src/main/js/sap/ushell/components/pages/controller/PageRuntime.controller.js +38 -29
  189. package/src/main/js/sap/ushell/components/pages/controller/PagesAndSpaceId.js +24 -15
  190. package/src/main/js/sap/ushell/components/pages/manifest.json +1 -1
  191. package/src/main/js/sap/ushell/components/runtimeSwitcher/controller/RuntimeSwitcher.controller.js +1 -1
  192. package/src/main/js/sap/ushell/components/runtimeSwitcher/manifest.json +1 -1
  193. package/src/main/js/sap/ushell/components/shell/FloatingContainer/Component.js +1 -1
  194. package/src/main/js/sap/ushell/components/shell/FloatingContainer/manifest.json +1 -1
  195. package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +1 -1
  196. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +1 -1
  197. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenuButton.controller.js +1 -1
  198. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/manifest.json +1 -1
  199. package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +3 -3
  200. package/src/main/js/sap/ushell/components/shell/Notifications/Notifications.controller.js +9 -9
  201. package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +3 -3
  202. package/src/main/js/sap/ushell/components/shell/Search/Component.js +0 -11
  203. package/src/main/js/sap/ushell/components/shell/Search/manifest.json +1 -1
  204. package/src/main/js/sap/ushell/components/shell/SearchCEP/Component.js +3 -3
  205. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/FrequentActivityProvider.js +32 -30
  206. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/RecentSearchProvider.js +19 -17
  207. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchProvider.js +1 -1
  208. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchServiceProvider.js +30 -28
  209. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/Component.js +14 -18
  210. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/SearchProviders/FrequentActivityProvider.js +3 -3
  211. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/SearchProviders/RecentSearchProvider.js +19 -17
  212. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/SearchProviders/SearchProvider.js +1 -1
  213. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/SearchProviders/SearchServiceProvider.js +30 -28
  214. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/manifest.json +1 -1
  215. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources.properties +2 -0
  216. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ar.properties +4 -0
  217. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_bg.properties +4 -0
  218. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ca.properties +4 -0
  219. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_cnr.properties +4 -0
  220. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_cs.properties +4 -0
  221. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_cy.properties +4 -0
  222. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_da.properties +4 -0
  223. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_de.properties +4 -0
  224. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_el.properties +4 -0
  225. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_en.properties +4 -0
  226. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_en_GB.properties +4 -0
  227. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_en_US_saprigi.properties +4 -0
  228. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_es.properties +4 -0
  229. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_es_MX.properties +4 -0
  230. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_et.properties +4 -0
  231. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_fi.properties +4 -0
  232. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_fr.properties +4 -0
  233. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_fr_CA.properties +4 -0
  234. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_hi.properties +4 -0
  235. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_hr.properties +4 -0
  236. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_hu.properties +4 -0
  237. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_id.properties +4 -0
  238. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_it.properties +4 -0
  239. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_iw.properties +4 -0
  240. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ja.properties +4 -0
  241. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_kk.properties +4 -0
  242. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ko.properties +4 -0
  243. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_lt.properties +4 -0
  244. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_lv.properties +4 -0
  245. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_mk.properties +4 -0
  246. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ms.properties +4 -0
  247. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_nl.properties +4 -0
  248. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_no.properties +4 -0
  249. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_pl.properties +4 -0
  250. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_pt.properties +4 -0
  251. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_pt_PT.properties +4 -0
  252. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ro.properties +4 -0
  253. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_ru.properties +4 -0
  254. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_sh.properties +4 -0
  255. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_sk.properties +4 -0
  256. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_sl.properties +4 -0
  257. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_sr.properties +4 -0
  258. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_sv.properties +4 -0
  259. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_th.properties +4 -0
  260. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_tr.properties +4 -0
  261. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_uk.properties +4 -0
  262. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_vi.properties +4 -0
  263. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_zh_CN.properties +4 -0
  264. package/src/main/js/sap/ushell/components/shell/SearchCEPNew/resources/resources_zh_TW.properties +4 -0
  265. package/src/main/js/sap/ushell/components/shell/Settings/Component.js +1 -1
  266. package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.controller.js +21 -20
  267. package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.controller.js +88 -65
  268. package/src/main/js/sap/ushell/components/shell/Settings/homepage/HomepageEntry.js +6 -6
  269. package/src/main/js/sap/ushell/components/shell/Settings/notifications/NotificationsSetting.controller.js +3 -3
  270. package/src/main/js/sap/ushell/components/shell/Settings/spaces/SpacesSetting.controller.js +8 -7
  271. package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountSelector.controller.js +4 -3
  272. package/src/main/js/sap/ushell/components/shell/Settings/userActivities/UserActivitiesSetting.controller.js +3 -3
  273. package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/controller/UserDefaultsSetting.controller.js +2 -2
  274. package/src/main/js/sap/ushell/components/shell/Settings/userLanguageRegion/LanguageRegionSelector.controller.js +5 -5
  275. package/src/main/js/sap/ushell/components/shell/ShellBar/Component.js +40 -2
  276. package/src/main/js/sap/ushell/components/shell/ShellBar/controller/ShellBar.controller.js +7 -0
  277. package/src/main/js/sap/ushell/components/shell/ShellBar/manifest.json +1 -1
  278. package/src/main/js/sap/ushell/components/shell/ShellBar/view/ShellBar.view.xml +9 -0
  279. package/src/main/js/sap/ushell/components/shell/SideNavigation/controller/SideNavigation.controller.js +48 -59
  280. package/src/main/js/sap/ushell/components/shell/SideNavigation/interface/ListProviderAPI.js +144 -0
  281. package/src/main/js/sap/ushell/components/shell/SideNavigation/interface/NavContainer.js +82 -0
  282. package/src/main/js/sap/ushell/components/shell/SideNavigation/manifest.json +1 -1
  283. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/AllSpaces.js +2 -2
  284. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Favorites.js +4 -4
  285. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/GenericFixedNavigationListProvider.js +49 -28
  286. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/GenericNavigationListProvider.js +104 -49
  287. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/MyHome.js +2 -2
  288. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/RecentActivity.js +2 -2
  289. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Spaces.js +18 -7
  290. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/SpacesNavigationListProvider.js +11 -5
  291. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +1 -1
  292. package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +1 -1
  293. package/src/main/js/sap/ushell/components/tiles/action/ActionTile.controller.js +22 -14
  294. package/src/main/js/sap/ushell/components/tiles/applauncher/StaticTile.controller.js +43 -13
  295. package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/DynamicTile.controller.js +43 -13
  296. package/src/main/js/sap/ushell/components/tiles/utils.js +25 -25
  297. package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +1 -1
  298. package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +1 -1
  299. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +1 -1
  300. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +1 -1
  301. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +1 -1
  302. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +1 -1
  303. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +1 -1
  304. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +1 -1
  305. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnResizer.js +1 -1
  306. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRow.js +1 -1
  307. package/src/main/js/sap/ushell/components/workPageBuilder/manifest.json +1 -1
  308. package/src/main/js/sap/ushell/components/workPageRuntime/Component.js +1 -1
  309. package/src/main/js/sap/ushell/components/workPageRuntime/controller/WorkPageRuntime.controller.js +1 -1
  310. package/src/main/js/sap/ushell/components/workPageRuntime/manifest.json +1 -1
  311. package/src/main/js/sap/ushell/designtime/ApplicationContainer.designtime.js +1 -1
  312. package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Avatar.js +111 -111
  313. package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Button.js +215 -145
  314. package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Label.js +68 -70
  315. package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/ListItem.js +81 -78
  316. package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/ListItemBase.js +40 -39
  317. package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/ListItemGroup.js +146 -85
  318. package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Menu.js +178 -110
  319. package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/MenuItem.js +186 -144
  320. package/src/main/js/sap/ushell/gen/ui5/webcomponents-base.js +519 -339
  321. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/IllustratedMessage.js +91 -90
  322. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/NotificationList.js +128 -73
  323. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/NotificationListGroupItem.js +76 -71
  324. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/NotificationListItem.js +119 -97
  325. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/NotificationListItemBase.js +48 -46
  326. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/Search.js +156 -128
  327. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/SearchItem.js +68 -65
  328. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/SearchItemGroup.js +30 -29
  329. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/SearchMessageArea.js +46 -45
  330. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/SearchScope.js +48 -49
  331. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBar.js +373 -198
  332. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBarBranding.js +71 -68
  333. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBarItem.js +81 -62
  334. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBarSearch.js +150 -122
  335. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/ShellBarSpacer.js +42 -41
  336. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/UserMenu.js +190 -121
  337. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/UserMenuAccount.js +76 -75
  338. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/dist/UserMenuItem.js +35 -34
  339. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori.js +1706 -1389
  340. package/src/main/js/sap/ushell/gen/ui5/webcomponents.js +3011 -2450
  341. package/src/main/js/sap/ushell/library.js +1 -1
  342. package/src/main/js/sap/ushell/modules/NavigationMenu/ListProvider.js +56 -0
  343. package/src/main/js/sap/ushell/modules/NavigationMenu/ListProviderAPI.js +119 -0
  344. package/src/main/js/sap/ushell/modules/NavigationMenu/NavContainer.js +60 -0
  345. package/src/main/js/sap/ushell/modules/NavigationMenu/NavigationMenuMode.js +37 -0
  346. package/src/main/js/sap/ushell/modules/NavigationMenu.js +17 -16
  347. package/src/main/js/sap/ushell/navigationMode.js +1 -1
  348. package/src/main/js/sap/ushell/performance/FesrEnhancer.js +1 -3
  349. package/src/main/js/sap/ushell/performance/ShellAnalytics.js +1 -1
  350. package/src/main/js/sap/ushell/performance/StatisticalRecord.js +1 -1
  351. package/src/main/js/sap/ushell/plugins/BaseRTAPlugin.js +6 -2
  352. package/src/main/js/sap/ushell/plugins/appwarmup/Component.js +1 -1
  353. package/src/main/js/sap/ushell/renderer/AccessKeysHandler.js +17 -13
  354. package/src/main/js/sap/ushell/renderer/Renderer.js +12 -12
  355. package/src/main/js/sap/ushell/renderer/RendererAppContainer.js +3 -3
  356. package/src/main/js/sap/ushell/renderer/RendererManagedComponents.js +134 -140
  357. package/src/main/js/sap/ushell/renderer/Shell.controller.js +29 -22
  358. package/src/main/js/sap/ushell/renderer/Shell.view.js +2 -2
  359. package/src/main/js/sap/ushell/renderer/resources/resources_cs.properties +8 -8
  360. package/src/main/js/sap/ushell/renderer/resources/resources_pt_PT.properties +1 -1
  361. package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
  362. package/src/main/js/sap/ushell/renderers/fiori2/Shell.view.js +2 -2
  363. package/src/main/js/sap/ushell/resources.js +1 -1
  364. package/src/main/js/sap/ushell/services/AllMyApps.js +1 -1
  365. package/src/main/js/sap/ushell/services/AppConfiguration.js +2 -2
  366. package/src/main/js/sap/ushell/services/AppLifeCycle.js +19 -22
  367. package/src/main/js/sap/ushell/services/AppState.js +3 -3
  368. package/src/main/js/sap/ushell/services/Bookmark.js +35 -39
  369. package/src/main/js/sap/ushell/services/BookmarkV2.js +6 -8
  370. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Formatter.js +1 -1
  371. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundIndex.js +1 -1
  372. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundProvider.js +1 -1
  373. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/PrelaunchOperations.js +5 -5
  374. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Search.js +1 -1
  375. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/StagedLogger.js +1 -1
  376. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/SystemContext.js +1 -1
  377. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Utils.js +1 -1
  378. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/VirtualInbounds.js +1 -1
  379. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/XAppStateProcessing.js +1 -1
  380. package/src/main/js/sap/ushell/services/ClientSideTargetResolution.js +13 -14
  381. package/src/main/js/sap/ushell/services/CommonDataModel/SiteConverter.js +1 -1
  382. package/src/main/js/sap/ushell/services/CommonDataModel/vizTypeDefaults/VizTypeDefaults.js +1 -1
  383. package/src/main/js/sap/ushell/services/CommonDataModel.js +82 -78
  384. package/src/main/js/sap/ushell/services/Configuration.js +1 -1
  385. package/src/main/js/sap/ushell/services/ConfigurationDefaults.js +1 -1
  386. package/src/main/js/sap/ushell/services/ContentExtensionAdapterFactory.js +1 -1
  387. package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +201 -230
  388. package/src/main/js/sap/ushell/services/DarkModeSupport.js +1 -1
  389. package/src/main/js/sap/ushell/services/EndUserFeedback.js +2 -2
  390. package/src/main/js/sap/ushell/services/Extension/Item.js +1 -1
  391. package/src/main/js/sap/ushell/services/Extension.js +1 -1
  392. package/src/main/js/sap/ushell/services/FlpLaunchPage.js +61 -57
  393. package/src/main/js/sap/ushell/services/FrameBoundExtension/FloatingContainer.js +1 -1
  394. package/src/main/js/sap/ushell/services/FrameBoundExtension/Footer.js +1 -1
  395. package/src/main/js/sap/ushell/services/FrameBoundExtension/Item.js +1 -1
  396. package/src/main/js/sap/ushell/services/FrameBoundExtension/SidePane.js +1 -1
  397. package/src/main/js/sap/ushell/services/FrameBoundExtension/ToolArea.js +1 -1
  398. package/src/main/js/sap/ushell/services/FrameBoundExtension/UserSettingsEntry.js +1 -1
  399. package/src/main/js/sap/ushell/services/FrameBoundExtension.js +1 -1
  400. package/src/main/js/sap/ushell/services/LaunchPage.js +1 -1
  401. package/src/main/js/sap/ushell/services/Menu.js +2 -2
  402. package/src/main/js/sap/ushell/services/Message.js +1 -1
  403. package/src/main/js/sap/ushell/services/MessageBroker/ClientAlias.js +37 -0
  404. package/src/main/js/sap/ushell/services/MessageBroker/ClientConnectionMessage.js +37 -0
  405. package/src/main/js/sap/ushell/services/MessageBroker/MessageBrokerEngine.js +463 -642
  406. package/src/main/js/sap/ushell/services/MessageBroker.js +126 -48
  407. package/src/main/js/sap/ushell/services/MessageInternal.js +2 -2
  408. package/src/main/js/sap/ushell/services/NavTargetResolutionInternal.js +4 -4
  409. package/src/main/js/sap/ushell/services/Navigation/compatibility.js +1 -2
  410. package/src/main/js/sap/ushell/services/Navigation/utils.js +3 -3
  411. package/src/main/js/sap/ushell/services/Navigation.js +5 -5
  412. package/src/main/js/sap/ushell/services/NavigationDataProvider.js +19 -10
  413. package/src/main/js/sap/ushell/services/NotificationsV2.js +151 -108
  414. package/src/main/js/sap/ushell/services/PageBuilding.js +4 -2
  415. package/src/main/js/sap/ushell/services/PagePersistence.js +1 -1
  416. package/src/main/js/sap/ushell/services/PageReferencing.js +1 -1
  417. package/src/main/js/sap/ushell/services/Pages.js +32 -32
  418. package/src/main/js/sap/ushell/services/Personalization.js +36 -32
  419. package/src/main/js/sap/ushell/services/PersonalizationV2/ContextContainer.js +6 -6
  420. package/src/main/js/sap/ushell/services/PersonalizationV2/Personalizer.js +3 -3
  421. package/src/main/js/sap/ushell/services/PersonalizationV2/WindowAdapter.js +2 -2
  422. package/src/main/js/sap/ushell/services/PersonalizationV2/WindowAdapterContainer.js +4 -4
  423. package/src/main/js/sap/ushell/services/PersonalizationV2/utils.js +4 -8
  424. package/src/main/js/sap/ushell/services/PersonalizationV2.js +17 -15
  425. package/src/main/js/sap/ushell/services/PluginManager/Extensions.js +3 -3
  426. package/src/main/js/sap/ushell/services/PluginManager/HeaderExtensions.js +1 -1
  427. package/src/main/js/sap/ushell/services/PluginManager/MenuExtensions.js +1 -1
  428. package/src/main/js/sap/ushell/services/PluginManager/SimpleExpression.js +1 -1
  429. package/src/main/js/sap/ushell/services/PluginManager.js +22 -22
  430. package/src/main/js/sap/ushell/services/ReferenceResolver.js +2 -2
  431. package/src/main/js/sap/ushell/services/Search.js +1 -1
  432. package/src/main/js/sap/ushell/services/SearchCEP.js +3 -3
  433. package/src/main/js/sap/ushell/services/SearchableContent.js +2 -2
  434. package/src/main/js/sap/ushell/services/ShellNavigation.js +1 -1
  435. package/src/main/js/sap/ushell/services/ShellNavigationHashChanger.js +2 -2
  436. package/src/main/js/sap/ushell/services/SmartNavigation.js +2 -3
  437. package/src/main/js/sap/ushell/services/SpaceContent.js +1 -1
  438. package/src/main/js/sap/ushell/services/UITracer.js +5 -5
  439. package/src/main/js/sap/ushell/services/URLParsing.js +2 -2
  440. package/src/main/js/sap/ushell/services/URLShortening.js +1 -1
  441. package/src/main/js/sap/ushell/services/URLTemplate.js +1 -1
  442. package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +15 -15
  443. package/src/main/js/sap/ushell/services/UserDefaultParameterPersistence.js +1 -1
  444. package/src/main/js/sap/ushell/services/UserDefaultParameters.js +6 -6
  445. package/src/main/js/sap/ushell/services/UserInfo.js +3 -3
  446. package/src/main/js/sap/ushell/services/UserRecents/RecentAppsUsage.js +2 -2
  447. package/src/main/js/sap/ushell/services/UserRecents/UserRecentsBase.js +6 -6
  448. package/src/main/js/sap/ushell/services/UserRecents.js +1 -1
  449. package/src/main/js/sap/ushell/services/VisualizationDataProvider.js +18 -15
  450. package/src/main/js/sap/ushell/services/VisualizationInstantiation.js +3 -3
  451. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/ContentExtensionAdapterConfig.js +1 -1
  452. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/FeaturedGroupConfig.js +1 -1
  453. package/src/main/js/sap/ushell/services/_CrossApplicationNavigation/utils.js +3 -3
  454. package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +2 -2
  455. package/src/main/js/sap/ushell/services/_Personalization/ContextContainer.js +10 -10
  456. package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainer.js +8 -8
  457. package/src/main/js/sap/ushell/services/_Personalization/Personalizer.js +14 -14
  458. package/src/main/js/sap/ushell/services/_Personalization/utils.js +2 -2
  459. package/src/main/js/sap/ushell/services/appstate/AppState.js +8 -8
  460. package/src/main/js/sap/ushell/services/appstate/WindowAdapter.js +3 -3
  461. package/src/main/js/sap/ushell/state/modules/BackNavigation.js +7 -24
  462. package/src/main/js/sap/ushell/state/modules/ContentDensity.js +1 -1
  463. package/src/main/js/sap/ushell/state/modules/Favicon.js +1 -1
  464. package/src/main/js/sap/ushell/state/modules/HeaderLogo.js +3 -3
  465. package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +1 -1
  466. package/src/main/js/sap/ushell/themes/base/ActionMode.less +1 -1
  467. package/src/main/js/sap/ushell/themes/base/ToolAreaItem.less +1 -1
  468. package/src/main/js/sap/ushell/thirdparty/Avatar.js +7 -7
  469. package/src/main/js/sap/ushell/thirdparty/BusyIndicator.js +4 -4
  470. package/src/main/js/sap/ushell/thirdparty/Button2.js +9 -8
  471. package/src/main/js/sap/ushell/thirdparty/FocusableElements.js +1 -1
  472. package/src/main/js/sap/ushell/thirdparty/Icon.js +29 -31
  473. package/src/main/js/sap/ushell/thirdparty/Icons.js +121 -84
  474. package/src/main/js/sap/ushell/thirdparty/IllustratedMessage.js +7 -2
  475. package/src/main/js/sap/ushell/thirdparty/Label.js +3 -3
  476. package/src/main/js/sap/ushell/thirdparty/Link.js +5 -5
  477. package/src/main/js/sap/ushell/thirdparty/List.js +14 -17
  478. package/src/main/js/sap/ushell/thirdparty/ListItemAdditionalText.css.js +2 -2
  479. package/src/main/js/sap/ushell/thirdparty/ListItemBase.js +8 -8
  480. package/src/main/js/sap/ushell/thirdparty/ListItemCustom.js +41 -39
  481. package/src/main/js/sap/ushell/thirdparty/ListItemGroup.js +15 -18
  482. package/src/main/js/sap/ushell/thirdparty/Menu.js +8 -8
  483. package/src/main/js/sap/ushell/thirdparty/MenuItem.js +1 -1
  484. package/src/main/js/sap/ushell/thirdparty/MenuItem2.js +16 -16
  485. package/src/main/js/sap/ushell/thirdparty/NotificationList.js +8 -8
  486. package/src/main/js/sap/ushell/thirdparty/NotificationListGroupItem.js +14 -14
  487. package/src/main/js/sap/ushell/thirdparty/NotificationListItem.js +10 -10
  488. package/src/main/js/sap/ushell/thirdparty/NotificationListItemBase.js +2 -2
  489. package/src/main/js/sap/ushell/thirdparty/ResponsivePopover.js +69 -41
  490. package/src/main/js/sap/ushell/thirdparty/SearchItem.js +5 -5
  491. package/src/main/js/sap/ushell/thirdparty/SearchItemGroup.js +2 -5
  492. package/src/main/js/sap/ushell/thirdparty/SearchMessageArea.js +2 -2
  493. package/src/main/js/sap/ushell/thirdparty/ShellBar.js +58 -27
  494. package/src/main/js/sap/ushell/thirdparty/ShellBarBranding.js +5 -5
  495. package/src/main/js/sap/ushell/thirdparty/ShellBarSearch.js +1 -1
  496. package/src/main/js/sap/ushell/thirdparty/ShellBarSearch2.js +166 -150
  497. package/src/main/js/sap/ushell/thirdparty/Tag.js +5 -5
  498. package/src/main/js/sap/ushell/thirdparty/Text.js +3 -3
  499. package/src/main/js/sap/ushell/thirdparty/Title.js +3 -3
  500. package/src/main/js/sap/ushell/thirdparty/UserMenu.js +21 -21
  501. package/src/main/js/sap/ushell/thirdparty/UserMenuItem.js +3 -3
  502. package/src/main/js/sap/ushell/thirdparty/_dynamics/InputSuggestions.js +1 -1
  503. package/src/main/js/sap/ushell/thirdparty/_dynamics/ListItemStandardExpandableTextTemplate.js +3 -3
  504. package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons.js +2 -1
  505. package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons2.js +2 -1
  506. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar2.js +93 -12
  507. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar3.js +6 -3
  508. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg2.js +92 -11
  509. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg3.js +6 -3
  510. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca2.js +92 -11
  511. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca3.js +6 -3
  512. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr2.js +92 -11
  513. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr3.js +6 -3
  514. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs2.js +92 -11
  515. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs3.js +6 -3
  516. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy2.js +92 -11
  517. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy3.js +6 -3
  518. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da2.js +92 -11
  519. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da3.js +6 -3
  520. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de2.js +92 -11
  521. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de3.js +7 -4
  522. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el2.js +92 -11
  523. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el3.js +6 -3
  524. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en3.js +75 -15
  525. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en4.js +12 -3
  526. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB2.js +92 -11
  527. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB3.js +6 -3
  528. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd3.js +71 -11
  529. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd4.js +6 -3
  530. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi3.js +75 -15
  531. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi4.js +12 -3
  532. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc.js +3 -174
  533. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc2.js +174 -756
  534. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc3.js +837 -585
  535. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc4.js +596 -0
  536. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es2.js +92 -11
  537. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es3.js +6 -3
  538. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX2.js +92 -11
  539. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX3.js +6 -3
  540. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et2.js +92 -11
  541. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et3.js +6 -3
  542. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi2.js +92 -11
  543. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi3.js +6 -3
  544. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr2.js +92 -11
  545. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr3.js +6 -3
  546. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA2.js +92 -11
  547. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA3.js +6 -3
  548. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi2.js +92 -11
  549. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi3.js +6 -3
  550. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr2.js +95 -14
  551. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr3.js +6 -3
  552. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu2.js +92 -11
  553. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu3.js +6 -3
  554. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_id2.js +92 -11
  555. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_id3.js +6 -3
  556. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it2.js +92 -11
  557. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it3.js +6 -3
  558. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw2.js +92 -11
  559. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw3.js +6 -3
  560. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja2.js +92 -11
  561. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja3.js +6 -3
  562. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk2.js +92 -11
  563. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk3.js +6 -3
  564. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko2.js +92 -11
  565. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko3.js +6 -3
  566. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt2.js +92 -11
  567. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt3.js +6 -3
  568. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv2.js +94 -13
  569. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv3.js +6 -3
  570. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk2.js +92 -11
  571. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk3.js +6 -3
  572. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms2.js +92 -11
  573. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms3.js +6 -3
  574. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl2.js +92 -11
  575. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl3.js +6 -3
  576. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no2.js +92 -11
  577. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no3.js +6 -3
  578. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl2.js +92 -11
  579. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl3.js +6 -3
  580. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt2.js +92 -11
  581. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt3.js +6 -3
  582. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT2.js +92 -11
  583. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT3.js +6 -3
  584. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro2.js +92 -11
  585. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro3.js +6 -3
  586. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru2.js +92 -11
  587. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru3.js +6 -3
  588. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh2.js +92 -11
  589. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh3.js +6 -3
  590. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk2.js +92 -11
  591. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk3.js +6 -3
  592. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl2.js +92 -11
  593. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl3.js +6 -3
  594. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr2.js +92 -11
  595. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr3.js +6 -3
  596. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv2.js +92 -11
  597. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv3.js +6 -3
  598. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th2.js +92 -11
  599. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th3.js +6 -3
  600. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr2.js +92 -11
  601. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr3.js +6 -3
  602. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk2.js +92 -11
  603. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk3.js +6 -3
  604. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi2.js +92 -11
  605. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi3.js +6 -3
  606. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN2.js +92 -11
  607. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN3.js +6 -3
  608. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW2.js +92 -11
  609. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW3.js +6 -3
  610. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css10.js +1 -1
  611. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css11.js +1 -1
  612. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css12.js +1 -1
  613. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css13.js +1 -1
  614. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css14.js +1 -1
  615. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css15.js +1 -1
  616. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css16.js +1 -1
  617. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css17.js +1 -1
  618. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css18.js +1 -1
  619. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css19.js +1 -1
  620. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css20.js +1 -1
  621. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css21.js +1 -1
  622. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css22.js +1 -1
  623. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css23.js +1 -1
  624. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css24.js +1 -1
  625. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css25.js +1 -1
  626. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css26.js +1 -1
  627. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css27.js +1 -1
  628. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css4.js +1 -1
  629. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css5.js +1 -1
  630. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css6.js +1 -1
  631. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css7.js +1 -1
  632. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css8.js +1 -1
  633. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css9.js +1 -1
  634. package/src/main/js/sap/ushell/thirdparty/information.js +10 -10
  635. package/src/main/js/sap/ushell/thirdparty/overflow.js +2 -2
  636. package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css.js +1 -1
  637. package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css2.js +3 -3
  638. package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css3.js +1 -1
  639. package/src/main/js/sap/ushell/thirdparty/slim-arrow-down.js +4 -4
  640. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons/AllIcons.js +2 -2
  641. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons-business-suite/AllIcons.js +2 -2
  642. package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons-tnt/AllIcons.js +2 -2
  643. package/src/main/js/sap/ushell/thirdparty/webcomponents-base.js +68 -68
  644. package/src/main/js/sap/ushell/thirdparty/webcomponents-fiori.js +3 -3
  645. package/src/main/js/sap/ushell/thirdparty/webcomponents.js +7 -7
  646. package/src/main/js/sap/ushell/ui/QuickAccess.js +10 -12
  647. package/src/main/js/sap/ushell/ui/ShellHeader.js +4 -4
  648. package/src/main/js/sap/ushell/ui/appfinder/AppBoxInternal.js +3 -3
  649. package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +1 -1
  650. package/src/main/js/sap/ushell/ui/footerbar/AboutDialog.controller.js +4 -4
  651. package/src/main/js/sap/ushell/ui/footerbar/AddBookmarkButton.js +7 -7
  652. package/src/main/js/sap/ushell/ui/footerbar/ContactSupportDialog.controller.js +1 -1
  653. package/src/main/js/sap/ushell/ui/footerbar/JamShareButton.js +4 -3
  654. package/src/main/js/sap/ushell/ui/launchpad/CatalogsContainer.js +2 -3
  655. package/src/main/js/sap/ushell/ui/launchpad/DashboardGroupsContainer.js +1 -1
  656. package/src/main/js/sap/ushell/ui/launchpad/ExtendedChangeDetection.js +2 -2
  657. package/src/main/js/sap/ushell/ui/launchpad/LinkTileWrapperRenderer.js +2 -2
  658. package/src/main/js/sap/ushell/ui/launchpad/Section.js +1 -1
  659. package/src/main/js/sap/ushell/ui/launchpad/TileContainerUtils.js +1 -2
  660. package/src/main/js/sap/ushell/ui/launchpad/TileRenderer.js +2 -2
  661. package/src/main/js/sap/ushell/ui/launchpad/section/CompactArea.js +1 -1
  662. package/src/main/js/sap/ushell/ui/shell/ShellAppTitle.js +3 -2
  663. package/src/main/js/sap/ushell/ui/shell/ShellNavigationMenu.js +20 -20
  664. package/src/main/js/sap/ushell/ui/shell/ToolAreaItem.js +1 -1
  665. package/src/main/js/sap/ushell/ui/tile/TileBase.js +3 -3
  666. package/src/main/js/sap/ushell/ui/utils.js +6 -6
  667. package/src/main/js/sap/ushell/ui5service/ShellUIService.js +3 -0
  668. package/src/main/js/sap/ushell/ui5service/ShellUIServiceFactory.js +1 -1
  669. package/src/main/js/sap/ushell/ui5service/UserStatus.js +1 -1
  670. package/src/main/js/sap/ushell/utils/CallbackQueue.js +114 -0
  671. package/src/main/js/sap/ushell/utils/Deferred.js +3 -3
  672. package/src/main/js/sap/ushell/utils/DynamicTileRequest.js +6 -6
  673. package/src/main/js/sap/ushell/utils/HttpClient.js +68 -68
  674. package/src/main/js/sap/ushell/utils/LaunchpadError.js +21 -0
  675. package/src/main/js/sap/ushell/utils/UrlParsing.js +12 -13
  676. package/src/main/js/sap/ushell/utils/UrlShortening.js +2 -2
  677. package/src/main/js/sap/ushell/utils/WindowUtils.js +5 -3
  678. package/src/main/js/sap/ushell/utils/chipsUtils.js +7 -5
  679. package/src/main/js/sap/ushell/utils/tilecard/TileCard.js +2 -2
  680. package/src/main/js/sap/ushell/utils/tilecard/TileCardExtension.js +9 -9
  681. package/src/main/js/sap/ushell/utils/utilsCdm.js +5 -6
  682. package/src/main/js/sap/ushell/utils/workpage/DestinationResolver.js +15 -11
  683. package/src/main/js/sap/ushell/utils/workpage/WorkPageHost.js +18 -19
  684. package/src/main/js/sap/ushell/utils/workpage/WorkPageService.js +11 -7
  685. package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +1 -1
  686. package/src/main/js/sap/ushell/utils.js +45 -65
  687. package/src/test/js/sap/ushell/bootstrap/sandbox.js +1 -1
  688. package/ui5.yaml +37 -16
  689. 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.140.0
5
+ * @version 1.141.1
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/Log",
9
- "sap/base/util/deepExtend"
9
+ "sap/base/util/deepClone",
10
+ "sap/ushell/services/MessageBroker/ClientAlias",
11
+ "sap/ushell/services/MessageBroker/ClientConnectionMessage"
10
12
  ], (
11
13
  Log,
12
- deepExtend
14
+ deepClone,
15
+ ClientAlias,
16
+ ClientConnectionMessage
13
17
  ) => {
14
18
  "use strict";
15
19
 
16
- let bEnabled = true;
17
- const oAcceptedOrigins = {};
18
- const oClientsPerChannel = {};
19
- const oConnectedClients = {};
20
- const oSubscribedClients = {};
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
- // add default origin
23
- oAcceptedOrigins[window.location.origin] = true;
72
+ /**
73
+ * @type {Set<string>} Set of accepted origins.
74
+ */
75
+ #sAcceptedOrigins = new Set();
24
76
 
25
- function MessageBrokerEngine () {
26
- this.setEnabled = function (bVal) {
27
- bEnabled = bVal;
28
- };
77
+ /**
78
+ * @type {Set<ClientId>} Set of connected clients.
79
+ */
80
+ #sConnectedClients = new Set();
29
81
 
30
82
  /**
31
- *
32
- * @param {object} oPostMessageData The PostMessage object.
33
- * @returns {Promise} Promise result.
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
- this.processPostMessage = function (oPostMessageData) {
40
- if (!bEnabled) {
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
- const oMessageData = oPostMessageData.oMessageData;
45
- const oMessageDataBody = oMessageData.body;
46
- const oMessage = oPostMessageData.oMessage;
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
- oMessageDataBody.requestId = oMessageData.request_id;
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
- if (!oIframe) {
53
- const sErrorMsg = "Missing iframe object in PostMessage request";
54
- Log.error(sErrorMsg, null, "sap.ushell.services.MessageBroker");
55
- return Promise.reject(sErrorMsg);
141
+ this.#aPendingTimeouts.push(setTimeout(() => {
142
+ this.#emitInformAboutOtherClients(sClientId);
143
+ }, 0));
56
144
  }
57
145
 
58
- return this._handlePostMessageRequest(oMessageDataBody, oIframe, sOrigin);
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
- * @param {string} sClientId client id.
64
- * @returns {Promise} the result.
65
- *
66
- * @since 1.110.0
154
+ * @since 1.140.0
67
155
  * @private
68
156
  */
69
-
70
- this.connect = function (sClientId) {
71
- let sError;
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
- if (typeof sClientId !== "string" || !sClientId.length) {
78
- sError = "Missing required parameter client id";
79
- } else if (oConnectedClients[sClientId]) {
80
- sError = "Client is already connected";
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
- Log.error(sError, null, "sap.ushell.services.MessageBroker");
88
- return Promise.reject(sError);
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
- * @param {string} sClientId client id.
94
- * @returns {Promise} the result.
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
- this.disconnect = function (sClientId) {
101
- let sError;
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
- sError = "Missing required parameter client id";
109
- } else if (!oConnectedClients[sClientId]) {
110
- sError = "Client is already disconnected";
111
- } else {
112
- for (const sChannelKey in oClientsPerChannel) {
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
- if (oClient.clientId === sClientId) {
119
- aChannelClients.splice(oClientKey, 1);
120
- break;
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
- if (oSubscribedClients[sClientId] && oSubscribedClients[sClientId].channels.length) {
127
- this._emitEvent("clientUnsubscribed", sClientId, oSubscribedClients[sClientId].channels);
128
-
129
- // remove from subscribed clients
130
- delete oSubscribedClients[sClientId];
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
- Log.error(sError, null, "sap.ushell.services.MessageBroker");
139
- return Promise.reject(sError);
140
- };
225
+ // remove from connected clients
226
+ this.#sConnectedClients.delete(sClientId);
227
+ }
141
228
 
142
229
  /**
143
- *
144
- * @param {string} sClientId client id.
145
- * @param {Array<*>} aSubscribedChannels array of channel-objects.
146
- * @param {function} fnMessageCallback callback function returns promise.
147
- * @param {function} fnClientConnectionCallback callback function returns promise.
148
- * @param {object} oIframe iframe object if iframe client.
149
- * @param {string} sOrigin iframe origin if iframe client.
150
- * @returns {Promise} the result.
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
- this.subscribe = function (sClientId, aSubscribedChannels, fnMessageCallback, fnClientConnectionCallback, oIframe, sOrigin) {
157
- let sError;
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 (typeof sClientId !== "string" || !sClientId.length ||
167
- !aSubscribedChannels.length ||
168
- (typeof oIframe !== "object" &&
169
- (typeof fnMessageCallback !== "function" ||
170
- typeof fnClientConnectionCallback !== "function"))) {
171
- sError = "Missing required parameter(s)";
172
- } else if (!oConnectedClients[sClientId]) {
173
- sError = "Client is not connected";
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
- // add new client
199
- if (!oExistingClient) {
200
- oClientsPerChannel[oChannel.channelId].push(oFullClientData);
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
- // if client is already subscribed to any channel
204
- if (oSubscribedClients[sClientId]) {
205
- const oExistingChannel = oSubscribedClients[sClientId].channels.find((oSubChannel) => {
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
- if (!oExistingChannel) {
210
- // add new channel to the existing channels
211
- oSubscribedClients[sClientId].channels.push(oChannel);
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
- // if new client
217
- if (!oSubscribedClients[sClientId]) {
218
- bIsNewClient = true;
279
+ const oClientChannelData = this.#oClientsPerChannel[sChannelId].find((oClient) => {
280
+ return oClient.clientId === sClientId;
281
+ });
219
282
 
220
- const oSubscriptionData = {
283
+ // add new client
284
+ if (!oClientChannelData) {
285
+ // add new client to the channel
286
+ this.#oClientsPerChannel[sChannelId].push({
221
287
  clientId: sClientId,
222
- channels: aSubscribedChannels
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
- // notify other subscribed clients of new subscription
233
- if (Object.keys(oSubscribedClients).length > 1) {
234
- this._emitEvent(sMessageName, sClientId, aSubscribedChannels);
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
- if (bIsNewClient) {
238
- // notify new client of other already subscribed clients
239
- setTimeout(() => {
240
- if (aOtherSubscribedClients.length) {
241
- aOtherSubscribedClients.forEach((oClient) => {
242
- if (!oIframe) {
243
- fnClientConnectionCallback(sMessageName, oClient.clientId, oClient.channels);
244
- } else {
245
- const oParams = {
246
- clientId: oClient.clientId,
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
- return Promise.resolve();
316
+ if (!bAlreadySubscribed) {
317
+ // add new channel to the existing channels
318
+ oClientSubscriptionData.channels.push(oChannel);
319
+ }
320
+ }
263
321
  }
264
322
 
265
- Log.error(sError, null, "sap.ushell.services.MessageBroker");
266
- return Promise.reject(sError);
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 {string} sClientId client id.
272
- * @param {object[]} aUnsubscribedChannels channels to unsubscribe from.
273
- * @returns {Promise} the resolve or error.
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
- this.unsubscribe = function (sClientId, aUnsubscribedChannels) {
280
- let sError;
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 (typeof sClientId !== "string" || !sClientId.length ||
287
- !Array.isArray(aUnsubscribedChannels) || !aUnsubscribedChannels.length) {
288
- sError = "Missing required parameter(s)";
289
- Log.error(sError, null, "sap.ushell.services.MessageBroker");
290
- return Promise.reject(sError);
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 (!oConnectedClients[sClientId]) {
294
- sError = "Client is not connected";
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
- for (const sChannelIndex in aUnsubscribedChannels) {
300
- const oChannel = aUnsubscribedChannels[sChannelIndex];
301
-
302
- if (oClientsPerChannel[oChannel.channelId]) {
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
- for (const oClientKey in aChannelClients) {
306
- const oClient = aChannelClients[oClientKey];
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
- const sMessage = `Unknown channel Id: ${oChannel.channelId}`;
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
- this._emitEvent("clientUnsubscribed", sClientId, aUnsubscribedChannels);
327
- return Promise.resolve();
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
- * @param {string} sChannelId channel id.
333
- * @param {string} sClientId client id.
334
- * @param {string} sMessageId request id for iframe clients or message id for UI5 clients.
335
- * @param {string} sMessageName message name.
336
- * @param {string[]} aTargetClientIds array of target clients Ids.
337
- * @param {object} data additional data.
338
- * @returns {Promise} Promise result.
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
- this.publish = function (sChannelId, sClientId, sMessageId, sMessageName, aTargetClientIds, data) {
345
- let sError;
346
- let aTargetClients = [];
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
- if (!bEnabled) {
349
- return Promise.reject();
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 (!oConnectedClients[sClientId]) {
354
- sError = "Client is not connected";
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
- sError = `Unknown channel Id: ${sChannelId}`;
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 oPubClient = oClientsPerChannel[sChannelId].find((oSubClient) => {
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 (!oPubClient) {
372
- sError = "Client is not subscribed to the provided channel";
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
- for (const sClientKey in aTargetClientIds) {
378
- const sTargetClientId = aTargetClientIds[sClientKey];
450
+ const bUsesWildcard = aTargetClientIds.includes(ClientAlias.AllClients);
379
451
 
380
- // if message is for all clients in the channel
381
- if (sTargetClientId === "*") {
382
- aTargetClients = oClientsPerChannel[sChannelId].concat();
383
- break;
384
- } else {
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 oTargetClient = oClientsPerChannel[sChannelId].find((oClient) => {
458
+ const oClientChannelData = aSubscribedClients.find((oClient) => {
387
459
  return oClient.clientId === sTargetClientId;
388
460
  });
389
461
 
390
- if (oTargetClient) {
391
- aTargetClients.push(this._deepCopy(oTargetClient));
462
+ if (oClientChannelData) {
463
+ aTargetClients.push(oClientChannelData);
392
464
  }
393
465
  }
394
466
  }
395
467
 
396
- if (aTargetClients.length) {
397
- this._sendMessage(aTargetClients, sChannelId, sMessageId, sMessageName, sClientId, data);
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
- sError = "Target client(s) not found in the provided channel";
402
- Log.error(sError, null, "sap.ushell.services.MessageBroker");
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
- this.addAcceptedOrigin = function (sOrigin) {
415
- if (!bEnabled) {
484
+ addAcceptedOrigin (sOrigin) {
485
+ if (!this.#bEnabled) {
416
486
  return;
417
487
  }
418
488
 
419
- if (typeof sOrigin === "string" && sOrigin.length > 0) {
420
- oAcceptedOrigins[sOrigin] = true;
421
- if (sOrigin.startsWith("https:") && sOrigin.endsWith(":443")) {
422
- oAcceptedOrigins[sOrigin.substring(0, sOrigin.length - 4)] = true;
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
- this.removeAcceptedOrigin = function (sOrigin) {
438
- if (!bEnabled) {
523
+ removeAcceptedOrigin (sOrigin) {
524
+ if (!this.#bEnabled) {
439
525
  return;
440
526
  }
441
- delete oAcceptedOrigins[sOrigin];
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[]} the result.
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
- this.getAcceptedOrigins = function () {
453
- if (!bEnabled) {
560
+ getAcceptedOrigins () {
561
+ if (!this.#bEnabled) {
454
562
  return;
455
563
  }
456
- return Object.keys(oAcceptedOrigins);
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
- this.getSubscribedClients = function () {
468
- if (!bEnabled) {
574
+ getSubscribedClients () {
575
+ if (!this.#bEnabled) {
469
576
  return;
470
577
  }
471
- return this._deepCopy(oClientsPerChannel);
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 {string} sMessageName message name.
477
- * @param {string} sClientId client id.
478
- * @param {Array<*>} aChannels subscribed/unsubscribed channels of the client.
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
- this._emitEvent = function (sMessageName, sClientId, aChannels) {
485
- const oNotifiedClients = {};
486
-
487
- for (const sChannelKey in oClientsPerChannel) {
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 {object[]} aTargetClients target clients.
520
- * @param {string} sChannelId channel id.
521
- * @param {string} sMessageId request id for iframe clients or message id for UI5 clients.
522
- * @param {string} sMessageName message name.
523
- * @param {string} sClientId client id.
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
- this._sendMessage = function (aTargetClients, sChannelId, sMessageId, sMessageName, sClientId, data) {
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
- if (oClient.isUI5 !== false) {
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
- * @param {object} oMessageDataBody message object.
571
- * @param {object} oIframe The iFrame object.
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.110.0
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
- this._handlePostMessageRequest = function (oMessageDataBody, oIframe, sOrigin) {
580
- return new Promise((resolve, reject) => {
581
- const sClientId = oMessageDataBody.clientId;
582
- const sChannelId = oMessageDataBody.channelId;
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
- const oPostMessageParams = {
619
- channelId: sChannelId,
620
- clientId: sClientId,
621
- messageName: sMessageName,
622
- requestId: sRequestId
623
- };
638
+ // Add default origin again
639
+ this.addAcceptedOrigin(window.location.origin);
624
640
 
625
- sMessageName = oApiParams[sMessageName] ? sMessageName : "publish";
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
- * @param {string} sType object type.
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
- this._buildPostMessageObjectFallback = function (PostMessageUtils, sObjectType, oParams) {
655
- const sServiceName = "sap.ushell.services.MessageBroker";
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
- }, false);
661
+ });