@sapui5/sap.ushell 1.124.3 → 1.126.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/package.json +1 -1
  2. package/src/main/js/sap/ushell/.library +1 -1
  3. package/src/main/js/sap/ushell/AppInfoParameters.js +29 -27
  4. package/src/main/js/sap/ushell/Container.js +143 -72
  5. package/src/main/js/sap/ushell/Fiori20Adapter.js +1 -1
  6. package/src/main/js/sap/ushell/Fiori20AdapterTest.js +13 -10
  7. package/src/main/js/sap/ushell/Layout.js +7 -4
  8. package/src/main/js/sap/ushell/NWBCInterface.js +1 -1
  9. package/src/main/js/sap/ushell/SessionHandler.js +35 -31
  10. package/src/main/js/sap/ushell/TechnicalParameters.js +5 -3
  11. package/src/main/js/sap/ushell/URLTemplateProcessor.js +1 -1
  12. package/src/main/js/sap/ushell/Ui5NativeServiceFactory.js +1 -1
  13. package/src/main/js/sap/ushell/Ui5ServiceFactory.js +9 -3
  14. package/src/main/js/sap/ushell/UserActivityLog.js +5 -3
  15. package/src/main/js/sap/ushell/_URLTemplateProcessor/DefinitionParameterSetBuilder.js +1 -1
  16. package/src/main/js/sap/ushell/_URLTemplateProcessor/DependencyGraph.js +1 -1
  17. package/src/main/js/sap/ushell/_URLTemplateProcessor/Functions.js +1 -1
  18. package/src/main/js/sap/ushell/_URLTemplateProcessor/Resolvers.js +1 -1
  19. package/src/main/js/sap/ushell/_URLTemplateProcessor/TemplateParameterParser.js +1 -1
  20. package/src/main/js/sap/ushell/_URLTemplateProcessor/utils.js +1 -1
  21. package/src/main/js/sap/ushell/adapters/cdm/ClientSideTargetResolutionAdapter.js +4 -4
  22. package/src/main/js/sap/ushell/adapters/cdm/CommonDataModelAdapter.js +2 -4
  23. package/src/main/js/sap/ushell/adapters/cdm/ConfigurationDefaultsAdapter.js +1 -1
  24. package/src/main/js/sap/ushell/adapters/cdm/ContainerAdapter.js +1 -1
  25. package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +12 -10
  26. package/src/main/js/sap/ushell/adapters/cdm/MenuAdapter.js +8 -6
  27. package/src/main/js/sap/ushell/adapters/cdm/PagesCommonDataModelAdapter.js +14 -13
  28. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationAdapter.js +1 -1
  29. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationV2Adapter.js +1 -1
  30. package/src/main/js/sap/ushell/adapters/cdm/Ui5ComponentLoaderAdapter.js +1 -1
  31. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/modifyHome.js +1 -1
  32. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readCatalogs.js +1 -1
  33. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readHome.js +1 -1
  34. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/uri.transform.js +1 -1
  35. package/src/main/js/sap/ushell/adapters/cdm/util/AppForInbound.js +1 -1
  36. package/src/main/js/sap/ushell/adapters/cdm/util/cdmSiteUtils.js +1 -1
  37. package/src/main/js/sap/ushell/adapters/cdm/v3/AdapterBase.js +7 -5
  38. package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +15 -13
  39. package/src/main/js/sap/ushell/adapters/cdm/v3/LaunchPageAdapter.js +1 -1
  40. package/src/main/js/sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js +1 -1
  41. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readApplications.js +1 -1
  42. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readCatalogs.js +1 -1
  43. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readHome.js +1 -1
  44. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readPages.js +1 -1
  45. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readUtils.js +1 -1
  46. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readVisualizations.js +1 -1
  47. package/src/main/js/sap/ushell/adapters/cdm/v3/utilsCdm.js +34 -0
  48. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionAdapter.js +1 -1
  49. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionInternalAdapter.js +1 -1
  50. package/src/main/js/sap/ushell/adapters/cep/SearchCEPAdapter.js +6 -4
  51. package/src/main/js/sap/ushell/adapters/cflp/UserDefaultParameterPersistenceAdapter.js +7 -5
  52. package/src/main/js/sap/ushell/adapters/local/AdapterContainer.js +1 -1
  53. package/src/main/js/sap/ushell/adapters/local/AppStateAdapter.js +1 -1
  54. package/src/main/js/sap/ushell/adapters/local/ClientSideTargetResolutionAdapter.js +10 -12
  55. package/src/main/js/sap/ushell/adapters/local/ContainerAdapter.js +1 -1
  56. package/src/main/js/sap/ushell/adapters/local/FlpLaunchPageAdapter.js +7 -5
  57. package/src/main/js/sap/ushell/adapters/local/LaunchPageAdapter.js +1 -1
  58. package/src/main/js/sap/ushell/adapters/local/MenuAdapter.js +5 -3
  59. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionAdapter.js +1 -1
  60. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionInternalAdapter.js +6 -4
  61. package/src/main/js/sap/ushell/adapters/local/PageBuildingAdapter.js +1 -1
  62. package/src/main/js/sap/ushell/adapters/local/PagePersistenceAdapter.js +1 -1
  63. package/src/main/js/sap/ushell/adapters/local/PersonalizationAdapter.js +1 -1
  64. package/src/main/js/sap/ushell/adapters/local/PersonalizationV2Adapter.js +1 -1
  65. package/src/main/js/sap/ushell/adapters/local/SearchAdapter.js +1 -1
  66. package/src/main/js/sap/ushell/adapters/local/SearchCEPAdapter.js +1 -1
  67. package/src/main/js/sap/ushell/adapters/local/SupportTicketAdapter.js +1 -1
  68. package/src/main/js/sap/ushell/adapters/local/Ui5ComponentLoaderAdapter.js +1 -1
  69. package/src/main/js/sap/ushell/adapters/local/UserDefaultParameterPersistenceAdapter.js +5 -4
  70. package/src/main/js/sap/ushell/adapters/local/UserInfoAdapter.js +5 -4
  71. package/src/main/js/sap/ushell/api/RTA.js +14 -2
  72. package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +10 -5
  73. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/CheckConditions.js +1 -3
  74. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/rtaAgent/i18n/i18n_sh.properties +2 -2
  75. package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/RendererExtensions.js +5 -0
  76. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppConfiguration.js +37 -0
  77. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppState.js +21 -2
  78. package/src/main/js/sap/ushell/appRuntime/ui5/services/Bookmark.js +21 -1
  79. package/src/main/js/sap/ushell/appRuntime/ui5/services/BookmarkV2.js +38 -1
  80. package/src/main/js/sap/ushell/appRuntime/ui5/services/CommonDataModel.js +19 -1
  81. package/src/main/js/sap/ushell/appRuntime/ui5/services/Container.js +20 -3
  82. package/src/main/js/sap/ushell/appRuntime/ui5/services/CrossApplicationNavigation.js +28 -1
  83. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension/Item.js +1 -1
  84. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension.js +25 -2
  85. package/src/main/js/sap/ushell/appRuntime/ui5/services/FrameBoundExtension.js +8 -1
  86. package/src/main/js/sap/ushell/appRuntime/ui5/services/LaunchPage.js +20 -1
  87. package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker.js +18 -1
  88. package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolution.js +16 -0
  89. package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolutionInternal.js +14 -0
  90. package/src/main/js/sap/ushell/appRuntime/ui5/services/Navigation.js +24 -1
  91. package/src/main/js/sap/ushell/appRuntime/ui5/services/ReferenceResolver.js +18 -1
  92. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigation.js +23 -1
  93. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigationInternal.js +21 -1
  94. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellUIService.js +28 -4
  95. package/src/main/js/sap/ushell/appRuntime/ui5/services/UserInfo.js +19 -1
  96. package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/Ui5ComponentLoaderAdapter.js +1 -1
  97. package/src/main/js/sap/ushell/bootstrap/_SchedulingAgent/logger.js +1 -1
  98. package/src/main/js/sap/ushell/bootstrap/_SchedulingAgent/state.js +1 -1
  99. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5datetimeformat.js +1 -1
  100. package/src/main/js/sap/ushell/bootstrap/common/common.create.configcontract.core.js +15 -5
  101. package/src/main/js/sap/ushell/bootstrap/common/common.read.ushell.config.from.url.js +2 -2
  102. package/src/main/js/sap/ushell/bootstrap/common/common.util.js +8 -1
  103. package/src/main/js/sap/ushell/bootstrap/sandbox2.js +11 -6
  104. package/src/main/js/sap/ushell/components/CatalogsManager.js +28 -17
  105. package/src/main/js/sap/ushell/components/ComponentKeysHandler.js +14 -12
  106. package/src/main/js/sap/ushell/components/HomepageManager.js +6 -4
  107. package/src/main/js/sap/ushell/components/MessagingHelper.js +5 -4
  108. package/src/main/js/sap/ushell/components/SharedComponentUtils.js +6 -4
  109. package/src/main/js/sap/ushell/components/_HeaderManager/ControlManager.js +6 -4
  110. package/src/main/js/sap/ushell/components/_HeaderManager/ShellHeader.controller.js +6 -3
  111. package/src/main/js/sap/ushell/components/_HomepageManager/PersistentPageOperationAdapter.js +4 -2
  112. package/src/main/js/sap/ushell/components/appfinder/AppFinder.controller.js +18 -23
  113. package/src/main/js/sap/ushell/components/appfinder/Catalog.controller.js +6 -4
  114. package/src/main/js/sap/ushell/components/appfinder/Component.js +6 -4
  115. package/src/main/js/sap/ushell/components/appfinder/EasyAccess.controller.js +10 -10
  116. package/src/main/js/sap/ushell/components/appfinder/HierarchyApps.controller.js +6 -4
  117. package/src/main/js/sap/ushell/components/appfinder/HierarchyFolders.controller.js +5 -3
  118. package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
  119. package/src/main/js/sap/ushell/components/applicationIntegration/AppLifeCycle.js +78 -3
  120. package/src/main/js/sap/ushell/components/applicationIntegration/application/Application.js +1 -1
  121. package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxHandler.js +1 -1
  122. package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxesCache.js +37 -7
  123. package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageAPI.js +239 -94
  124. package/src/main/js/sap/ushell/components/applicationIntegration/configuration/AppMeta.js +1 -1
  125. package/src/main/js/sap/ushell/components/applicationIntegration/elements/model.js +1 -1
  126. package/src/main/js/sap/ushell/components/applicationIntegration/relatedServices/RelatedServices.js +1 -1
  127. package/src/main/js/sap/ushell/components/applicationIntegration/relatedShellElements/RelatedShellElements.js +3 -2
  128. package/src/main/js/sap/ushell/components/cards/Card.controller.js +5 -3
  129. package/src/main/js/sap/ushell/components/cepsearchresult/app/Main.controller.js +9 -14
  130. package/src/main/js/sap/ushell/components/cepsearchresult/app/cards/searchresultwidget/i18n/i18n_sh.properties +5 -5
  131. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/Application.js +7 -14
  132. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_sh.properties +19 -19
  133. package/src/main/js/sap/ushell/components/container/ApplicationContainer.js +2 -2
  134. package/src/main/js/sap/ushell/components/container/IframePOSTUtils.js +1 -1
  135. package/src/main/js/sap/ushell/components/container/resources/resources_sh.properties +1 -1
  136. package/src/main/js/sap/ushell/components/contentFinder/Component.js +1 -1
  137. package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +3 -3
  138. package/src/main/js/sap/ushell/components/contentFinder/controller/ContentFinderDialog.controller.js +1 -1
  139. package/src/main/js/sap/ushell/components/contentFinder/controller/WidgetGallery.controller.js +1 -1
  140. package/src/main/js/sap/ushell/components/contentFinder/manifest.json +1 -1
  141. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sh.properties +3 -3
  142. package/src/main/js/sap/ushell/components/contentFinder/view/WidgetGallery.view.xml +3 -5
  143. package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +1 -1
  144. package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +1 -1
  145. package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +1 -1
  146. package/src/main/js/sap/ushell/components/contentFinderStandalone/manifestAppSearch.json +1 -1
  147. package/src/main/js/sap/ushell/components/factsheet/Component.js +1 -1
  148. package/src/main/js/sap/ushell/components/homepage/ActionMode.js +1 -1
  149. package/src/main/js/sap/ushell/components/homepage/DashboardContent.controller.js +2 -27
  150. package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +1 -1
  151. package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +1 -1
  152. package/src/main/js/sap/ushell/components/homepage/DashboardUIActions.js +1 -1
  153. package/src/main/js/sap/ushell/components/homepage/manifest.json +1 -1
  154. package/src/main/js/sap/ushell/components/pages/ActionMode.js +6 -5
  155. package/src/main/js/sap/ushell/components/pages/Component.js +5 -4
  156. package/src/main/js/sap/ushell/components/pages/MyHomeImport.js +9 -7
  157. package/src/main/js/sap/ushell/components/pages/controller/ImportDialog.controller.js +10 -8
  158. package/src/main/js/sap/ushell/components/pages/controller/PageRuntime.controller.js +18 -13
  159. package/src/main/js/sap/ushell/components/pages/controller/PagesAndSpaceId.js +6 -5
  160. package/src/main/js/sap/ushell/components/pages/manifest.json +1 -1
  161. package/src/main/js/sap/ushell/components/runtimeSwitcher/controller/RuntimeSwitcher.controller.js +31 -34
  162. package/src/main/js/sap/ushell/components/runtimeSwitcher/manifest.json +1 -1
  163. package/src/main/js/sap/ushell/components/shell/MenuBar/controller/MenuBar.controller.js +8 -6
  164. package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +1 -1
  165. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +1 -1
  166. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/manifest.json +1 -1
  167. package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +1 -1
  168. package/src/main/js/sap/ushell/components/shell/Notifications/Notifications.controller.js +1 -1
  169. package/src/main/js/sap/ushell/components/shell/PostLoadingHeaderEnhancement/Component.js +8 -5
  170. package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +6 -4
  171. package/src/main/js/sap/ushell/components/shell/Search/Component.js +5 -4
  172. package/src/main/js/sap/ushell/components/shell/Search/ESearch.js +5 -4
  173. package/src/main/js/sap/ushell/components/shell/Search/manifest.json +1 -1
  174. package/src/main/js/sap/ushell/components/shell/SearchCEP/Component.js +1 -1
  175. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/FrequentActivityProvider.js +1 -1
  176. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/RecentSearchProvider.js +1 -1
  177. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchProvider.js +1 -1
  178. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchServiceProvider.js +1 -1
  179. package/src/main/js/sap/ushell/components/shell/Settings/Component.js +10 -8
  180. package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.controller.js +17 -5
  181. package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.controller.js +9 -7
  182. package/src/main/js/sap/ushell/components/shell/Settings/appearance/AppearanceEntry.js +6 -4
  183. package/src/main/js/sap/ushell/components/shell/Settings/homepage/HomepageEntry.js +5 -3
  184. package/src/main/js/sap/ushell/components/shell/Settings/notifications/NotificationsSetting.controller.js +3 -3
  185. package/src/main/js/sap/ushell/components/shell/Settings/spaces/SpacesEntry.js +6 -4
  186. package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountEntry.js +6 -4
  187. package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountSelector.controller.js +9 -7
  188. package/src/main/js/sap/ushell/components/shell/Settings/userActivities/UserActivitiesSetting.controller.js +6 -4
  189. package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/UserDefaultsEntry.js +7 -5
  190. package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/controller/UserDefaultsSetting.controller.js +11 -9
  191. package/src/main/js/sap/ushell/components/shell/Settings/userLanguageRegion/LanguageRegionSelector.controller.js +10 -7
  192. package/src/main/js/sap/ushell/components/shell/Settings/userLanguageRegion/UserLanguageRegionEntry.js +5 -3
  193. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +6 -4
  194. package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +11 -9
  195. package/src/main/js/sap/ushell/components/tiles/applauncher/StaticTile.controller.js +5 -3
  196. package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/DynamicTile.controller.js +6 -4
  197. package/src/main/js/sap/ushell/components/tiles/cdm/applauncher/StaticTile.controller.js +5 -3
  198. package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/Component.js +3 -0
  199. package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/DynamicTile.controller.js +5 -3
  200. package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +10 -10
  201. package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +1 -1
  202. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +1 -1
  203. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +6 -6
  204. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +1 -1
  205. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +1 -1
  206. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +1 -1
  207. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +1 -1
  208. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnResizer.js +1 -1
  209. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRow.js +2 -2
  210. package/src/main/js/sap/ushell/components/workPageBuilder/manifest.json +1 -1
  211. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sh.properties +17 -17
  212. package/src/main/js/sap/ushell/components/workPageRuntime/Component.js +1 -1
  213. package/src/main/js/sap/ushell/components/workPageRuntime/controller/WorkPageRuntime.controller.js +6 -4
  214. package/src/main/js/sap/ushell/components/workPageRuntime/manifest.json +1 -1
  215. package/src/main/js/sap/ushell/designtime/ApplicationContainer.designtime.js +1 -1
  216. package/src/main/js/sap/ushell/library.js +1 -1
  217. package/src/main/js/sap/ushell/navigationMode.js +1 -1
  218. package/src/main/js/sap/ushell/performance/ShellAnalytics.js +8 -6
  219. package/src/main/js/sap/ushell/performance/StatisticalRecord.js +1 -1
  220. package/src/main/js/sap/ushell/plugins/appwarmup/Component.js +1 -1
  221. package/src/main/js/sap/ushell/plugins/rta/i18n/i18n_sh.properties +2 -2
  222. package/src/main/js/sap/ushell/renderer/AccessKeysHandler.js +6 -4
  223. package/src/main/js/sap/ushell/renderer/History.js +1 -2
  224. package/src/main/js/sap/ushell/renderer/LogonFrameProvider.js +5 -3
  225. package/src/main/js/sap/ushell/renderer/Renderer.js +34 -35
  226. package/src/main/js/sap/ushell/renderer/Shell.controller.js +37 -37
  227. package/src/main/js/sap/ushell/renderer/Shell.view.js +9 -4
  228. package/src/main/js/sap/ushell/renderer/allMyApps/AllMyApps.controller.js +8 -6
  229. package/src/main/js/sap/ushell/renderer/allMyApps/AllMyAppsManager.js +13 -11
  230. package/src/main/js/sap/ushell/renderer/resources/resources.properties +4 -4
  231. package/src/main/js/sap/ushell/renderer/resources/resources_ar.properties +23 -26
  232. package/src/main/js/sap/ushell/renderer/resources/resources_bg.properties +24 -27
  233. package/src/main/js/sap/ushell/renderer/resources/resources_ca.properties +21 -24
  234. package/src/main/js/sap/ushell/renderer/resources/resources_cnr.properties +4 -10
  235. package/src/main/js/sap/ushell/renderer/resources/resources_cs.properties +19 -22
  236. package/src/main/js/sap/ushell/renderer/resources/resources_cy.properties +24 -27
  237. package/src/main/js/sap/ushell/renderer/resources/resources_da.properties +30 -33
  238. package/src/main/js/sap/ushell/renderer/resources/resources_de.properties +23 -26
  239. package/src/main/js/sap/ushell/renderer/resources/resources_el.properties +28 -31
  240. package/src/main/js/sap/ushell/renderer/resources/resources_en.properties +4 -928
  241. package/src/main/js/sap/ushell/renderer/resources/resources_en_GB.properties +30 -33
  242. package/src/main/js/sap/ushell/renderer/resources/resources_en_US_saprigi.properties +4 -4
  243. package/src/main/js/sap/ushell/renderer/resources/resources_es.properties +23 -26
  244. package/src/main/js/sap/ushell/renderer/resources/resources_es_MX.properties +18 -21
  245. package/src/main/js/sap/ushell/renderer/resources/resources_et.properties +25 -28
  246. package/src/main/js/sap/ushell/renderer/resources/resources_fi.properties +24 -27
  247. package/src/main/js/sap/ushell/renderer/resources/resources_fr.properties +28 -31
  248. package/src/main/js/sap/ushell/renderer/resources/resources_fr_CA.properties +53 -56
  249. package/src/main/js/sap/ushell/renderer/resources/resources_hi.properties +29 -32
  250. package/src/main/js/sap/ushell/renderer/resources/resources_hr.properties +21 -24
  251. package/src/main/js/sap/ushell/renderer/resources/resources_hu.properties +24 -27
  252. package/src/main/js/sap/ushell/renderer/resources/resources_id.properties +24 -27
  253. package/src/main/js/sap/ushell/renderer/resources/resources_it.properties +20 -23
  254. package/src/main/js/sap/ushell/renderer/resources/resources_iw.properties +20 -23
  255. package/src/main/js/sap/ushell/renderer/resources/resources_ja.properties +20 -23
  256. package/src/main/js/sap/ushell/renderer/resources/resources_kk.properties +28 -31
  257. package/src/main/js/sap/ushell/renderer/resources/resources_ko.properties +23 -26
  258. package/src/main/js/sap/ushell/renderer/resources/resources_lt.properties +20 -23
  259. package/src/main/js/sap/ushell/renderer/resources/resources_lv.properties +25 -28
  260. package/src/main/js/sap/ushell/renderer/resources/resources_mk.properties +4 -10
  261. package/src/main/js/sap/ushell/renderer/resources/resources_ms.properties +22 -25
  262. package/src/main/js/sap/ushell/renderer/resources/resources_nl.properties +21 -24
  263. package/src/main/js/sap/ushell/renderer/resources/resources_no.properties +33 -36
  264. package/src/main/js/sap/ushell/renderer/resources/resources_pl.properties +24 -27
  265. package/src/main/js/sap/ushell/renderer/resources/resources_pt.properties +22 -25
  266. package/src/main/js/sap/ushell/renderer/resources/resources_pt_PT.properties +17 -20
  267. package/src/main/js/sap/ushell/renderer/resources/resources_ro.properties +20 -23
  268. package/src/main/js/sap/ushell/renderer/resources/resources_ru.properties +21 -24
  269. package/src/main/js/sap/ushell/renderer/resources/resources_sh.properties +121 -124
  270. package/src/main/js/sap/ushell/renderer/resources/resources_sk.properties +21 -24
  271. package/src/main/js/sap/ushell/renderer/resources/resources_sl.properties +23 -26
  272. package/src/main/js/sap/ushell/renderer/resources/resources_sr.properties +4 -10
  273. package/src/main/js/sap/ushell/renderer/resources/resources_sv.properties +22 -25
  274. package/src/main/js/sap/ushell/renderer/resources/resources_th.properties +24 -27
  275. package/src/main/js/sap/ushell/renderer/resources/resources_tr.properties +24 -27
  276. package/src/main/js/sap/ushell/renderer/resources/resources_uk.properties +25 -28
  277. package/src/main/js/sap/ushell/renderer/resources/resources_vi.properties +22 -25
  278. package/src/main/js/sap/ushell/renderer/resources/resources_zh_CN.properties +19 -22
  279. package/src/main/js/sap/ushell/renderer/resources/resources_zh_TW.properties +25 -28
  280. package/src/main/js/sap/ushell/renderer/search/searchComponent/Component.js +4 -3
  281. package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
  282. package/src/main/js/sap/ushell/services/AppConfiguration.js +326 -274
  283. package/src/main/js/sap/ushell/services/AppLifeCycle.js +14 -14
  284. package/src/main/js/sap/ushell/services/AppState.js +1 -1
  285. package/src/main/js/sap/ushell/services/Bookmark.js +1 -1
  286. package/src/main/js/sap/ushell/services/BookmarkV2.js +12 -10
  287. package/src/main/js/sap/ushell/services/ClientSideTargetResolution.js +635 -755
  288. package/src/main/js/sap/ushell/services/CommonDataModel.js +25 -16
  289. package/src/main/js/sap/ushell/services/Configuration.js +5 -4
  290. package/src/main/js/sap/ushell/services/ConfigurationDefaults.js +1 -1
  291. package/src/main/js/sap/ushell/services/ContentExtensionAdapterFactory.js +1 -1
  292. package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +2 -2
  293. package/src/main/js/sap/ushell/services/DarkModeSupport.js +9 -7
  294. package/src/main/js/sap/ushell/services/Extension/Item.js +1 -1
  295. package/src/main/js/sap/ushell/services/Extension.js +18 -1
  296. package/src/main/js/sap/ushell/services/FlpLaunchPage.js +8 -6
  297. package/src/main/js/sap/ushell/services/FrameBoundExtension/FloatingContainer.js +1 -1
  298. package/src/main/js/sap/ushell/services/FrameBoundExtension/Footer.js +1 -1
  299. package/src/main/js/sap/ushell/services/FrameBoundExtension/Item.js +1 -1
  300. package/src/main/js/sap/ushell/services/FrameBoundExtension/SidePane.js +1 -1
  301. package/src/main/js/sap/ushell/services/FrameBoundExtension/ToolArea.js +1 -1
  302. package/src/main/js/sap/ushell/services/FrameBoundExtension.js +18 -1
  303. package/src/main/js/sap/ushell/services/LaunchPage.js +1 -1
  304. package/src/main/js/sap/ushell/services/Menu.js +6 -4
  305. package/src/main/js/sap/ushell/services/Message.js +91 -412
  306. package/src/main/js/sap/ushell/services/MessageBroker.js +1 -1
  307. package/src/main/js/sap/ushell/services/MessageInternal.js +448 -0
  308. package/src/main/js/sap/ushell/services/NavTargetResolution.js +2 -1
  309. package/src/main/js/sap/ushell/services/NavTargetResolutionInternal.js +1 -1
  310. package/src/main/js/sap/ushell/services/Navigation/compatibility.js +1 -1
  311. package/src/main/js/sap/ushell/services/Navigation/utils.js +1 -1
  312. package/src/main/js/sap/ushell/services/Navigation.js +3 -3
  313. package/src/main/js/sap/ushell/services/NavigationDataProvider.js +1 -1
  314. package/src/main/js/sap/ushell/services/Notifications.js +4 -2
  315. package/src/main/js/sap/ushell/services/NotificationsV2.js +7 -5
  316. package/src/main/js/sap/ushell/services/PageBuilding.js +1 -1
  317. package/src/main/js/sap/ushell/services/PagePersistence.js +1 -1
  318. package/src/main/js/sap/ushell/services/PageReferencing.js +1 -1
  319. package/src/main/js/sap/ushell/services/Pages.js +1 -1
  320. package/src/main/js/sap/ushell/services/Personalization.js +1 -1
  321. package/src/main/js/sap/ushell/services/PersonalizationV2.js +1 -1
  322. package/src/main/js/sap/ushell/services/PluginManager.js +7 -5
  323. package/src/main/js/sap/ushell/services/ReferenceResolver.js +234 -238
  324. package/src/main/js/sap/ushell/services/Search.js +1 -1
  325. package/src/main/js/sap/ushell/services/SearchCEP.js +5 -4
  326. package/src/main/js/sap/ushell/services/SearchableContent.js +1 -1
  327. package/src/main/js/sap/ushell/services/ShellNavigation.js +3 -3
  328. package/src/main/js/sap/ushell/services/ShellNavigationHashChanger.js +38 -56
  329. package/src/main/js/sap/ushell/services/ShellNavigationInternal.js +1 -1
  330. package/src/main/js/sap/ushell/services/SmartNavigation.js +8 -6
  331. package/src/main/js/sap/ushell/services/SpaceContent.js +16 -14
  332. package/src/main/js/sap/ushell/services/UITracer.js +1 -1
  333. package/src/main/js/sap/ushell/services/URLParsing.js +6 -4
  334. package/src/main/js/sap/ushell/services/URLShortening.js +1 -1
  335. package/src/main/js/sap/ushell/services/URLTemplate.js +1 -1
  336. package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +1 -1
  337. package/src/main/js/sap/ushell/services/UserDefaultParameterPersistence.js +89 -78
  338. package/src/main/js/sap/ushell/services/UserDefaultParameters.js +229 -273
  339. package/src/main/js/sap/ushell/services/UserInfo.js +1 -1
  340. package/src/main/js/sap/ushell/services/UserRecents.js +1 -1
  341. package/src/main/js/sap/ushell/services/VisualizationDataProvider.js +1 -1
  342. package/src/main/js/sap/ushell/services/VisualizationInstantiation.js +1 -1
  343. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/Formatter.js +11 -11
  344. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/InboundIndex.js +9 -6
  345. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/InboundProvider.js +16 -25
  346. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/ParameterMapping.js +3 -1
  347. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/PrelaunchOperations.js +20 -24
  348. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/Search.js +52 -45
  349. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/StagedLogger.js +3 -5
  350. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/SystemContext.js +5 -2
  351. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/Utils.js +1 -1
  352. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/VirtualInbounds.js +1 -1
  353. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/XAppStateProcessing.js +63 -80
  354. package/src/main/js/sap/ushell/services/_CommonDataModel/SiteConverter.js +1 -1
  355. package/src/main/js/sap/ushell/services/_CommonDataModel/vizTypeDefaults/VizTypeDefaults.js +1 -1
  356. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/ContentExtensionAdapterConfig.js +1 -1
  357. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/FeaturedGroupConfig.js +1 -1
  358. package/src/main/js/sap/ushell/services/_CrossApplicationNavigation/utils.js +1 -1
  359. package/src/main/js/sap/ushell/services/_MessageBroker/MessageBrokerEngine.js +1 -1
  360. package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +6 -4
  361. package/src/main/js/sap/ushell/services/_PluginManager/Extensions.js +1 -1
  362. package/src/main/js/sap/ushell/services/_PluginManager/HeaderExtensions.js +1 -1
  363. package/src/main/js/sap/ushell/services/_PluginManager/MenuExtensions.js +3 -3
  364. package/src/main/js/sap/ushell/services/_Ui5ComponentLoader/utils.js +2 -2
  365. package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +1 -1
  366. package/src/main/js/sap/ushell/themes/base/ShellHeader.less +32 -24
  367. package/src/main/js/sap/ushell/themes/sap_belize/library.source.less +10 -1
  368. package/src/main/js/sap/ushell/themes/sap_belize_base/.theming +4 -0
  369. package/src/main/js/sap/ushell/themes/sap_belize_base/ActionMode.less +107 -0
  370. package/src/main/js/sap/ushell/themes/sap_belize_base/AddBookmarkButton.less +37 -0
  371. package/src/main/js/sap/ushell/themes/sap_belize_base/AnchorItem.less +81 -0
  372. package/src/main/js/sap/ushell/themes/sap_belize_base/AnchorNavigationBar.less +86 -0
  373. package/src/main/js/sap/ushell/themes/sap_belize_base/AppearanceView.less +213 -0
  374. package/src/main/js/sap/ushell/themes/sap_belize_base/ApplicationContainer.less +37 -0
  375. package/src/main/js/sap/ushell/themes/sap_belize_base/Catalog.less +387 -0
  376. package/src/main/js/sap/ushell/themes/sap_belize_base/ContactSupport.less +12 -0
  377. package/src/main/js/sap/ushell/themes/sap_belize_base/ContentFinder.less +26 -0
  378. package/src/main/js/sap/ushell/themes/sap_belize_base/CustomGroupHeaderListItem.less +10 -0
  379. package/src/main/js/sap/ushell/themes/sap_belize_base/Dashboard.less +66 -0
  380. package/src/main/js/sap/ushell/themes/sap_belize_base/DynamicTile.less +114 -0
  381. package/src/main/js/sap/ushell/themes/sap_belize_base/Factsheet.less +225 -0
  382. package/src/main/js/sap/ushell/themes/sap_belize_base/FloatingContainer.less +125 -0
  383. package/src/main/js/sap/ushell/themes/sap_belize_base/FlpSettings.less +83 -0
  384. package/src/main/js/sap/ushell/themes/sap_belize_base/GroupList.less +68 -0
  385. package/src/main/js/sap/ushell/themes/sap_belize_base/GroupListItem.less +54 -0
  386. package/src/main/js/sap/ushell/themes/sap_belize_base/IconFonts.less +21 -0
  387. package/src/main/js/sap/ushell/themes/sap_belize_base/ImageTile.less +23 -0
  388. package/src/main/js/sap/ushell/themes/sap_belize_base/LoadingDialog.less +47 -0
  389. package/src/main/js/sap/ushell/themes/sap_belize_base/MenuBar.less +23 -0
  390. package/src/main/js/sap/ushell/themes/sap_belize_base/Notifications.less +135 -0
  391. package/src/main/js/sap/ushell/themes/sap_belize_base/Page.less +49 -0
  392. package/src/main/js/sap/ushell/themes/sap_belize_base/PictureTile.less +119 -0
  393. package/src/main/js/sap/ushell/themes/sap_belize_base/PictureViewer.less +25 -0
  394. package/src/main/js/sap/ushell/themes/sap_belize_base/PlusTile.less +38 -0
  395. package/src/main/js/sap/ushell/themes/sap_belize_base/QuickAccess.less +18 -0
  396. package/src/main/js/sap/ushell/themes/sap_belize_base/RightFloatingContainerItem.less +82 -0
  397. package/src/main/js/sap/ushell/themes/sap_belize_base/SearchCEP.less +121 -0
  398. package/src/main/js/sap/ushell/themes/sap_belize_base/SearchFLP.less +10 -0
  399. package/src/main/js/sap/ushell/themes/sap_belize_base/Section.less +60 -0
  400. package/src/main/js/sap/ushell/themes/sap_belize_base/ShellAppTitle.less +207 -0
  401. package/src/main/js/sap/ushell/themes/sap_belize_base/ShellFloatingAction.less +61 -0
  402. package/src/main/js/sap/ushell/themes/sap_belize_base/ShellFloatingActions.less +14 -0
  403. package/src/main/js/sap/ushell/themes/sap_belize_base/ShellHeader.less +389 -0
  404. package/src/main/js/sap/ushell/themes/sap_belize_base/ShellLayout.less +168 -0
  405. package/src/main/js/sap/ushell/themes/sap_belize_base/SidePane.less +8 -0
  406. package/src/main/js/sap/ushell/themes/sap_belize_base/StaticTile.less +9 -0
  407. package/src/main/js/sap/ushell/themes/sap_belize_base/SubHeader.less +3 -0
  408. package/src/main/js/sap/ushell/themes/sap_belize_base/SysInfoBar.less +164 -0
  409. package/src/main/js/sap/ushell/themes/sap_belize_base/TargetMappingConfiguration.less +8 -0
  410. package/src/main/js/sap/ushell/themes/sap_belize_base/Tile.less +223 -0
  411. package/src/main/js/sap/ushell/themes/sap_belize_base/TileBase.less +152 -0
  412. package/src/main/js/sap/ushell/themes/sap_belize_base/TileContainer.less +495 -0
  413. package/src/main/js/sap/ushell/themes/sap_belize_base/TilePlaceholder.less +75 -0
  414. package/src/main/js/sap/ushell/themes/sap_belize_base/TileState.less +62 -0
  415. package/src/main/js/sap/ushell/themes/sap_belize_base/ToolAreaItem.less +85 -0
  416. package/src/main/js/sap/ushell/themes/sap_belize_base/UserActionsMenu.less +23 -0
  417. package/src/main/js/sap/ushell/themes/sap_belize_base/UserConsentDialog.less +52 -0
  418. package/src/main/js/sap/ushell/themes/sap_belize_base/UserSettings.less +113 -0
  419. package/src/main/js/sap/ushell/themes/sap_belize_base/ViewPortContainer.less +28 -0
  420. package/src/main/js/sap/ushell/themes/sap_belize_base/WorkPage.less +58 -0
  421. package/src/main/js/sap/ushell/themes/sap_belize_base/WorkPageButton.less +60 -0
  422. package/src/main/js/sap/ushell/themes/sap_belize_base/WorkPageCell.less +144 -0
  423. package/src/main/js/sap/ushell/themes/sap_belize_base/WorkPageColumn.less +39 -0
  424. package/src/main/js/sap/ushell/themes/sap_belize_base/WorkPageColumnResizer.less +128 -0
  425. package/src/main/js/sap/ushell/themes/sap_belize_base/WorkPageRow.less +987 -0
  426. package/src/main/js/sap/ushell/themes/sap_belize_base/library.source.less +64 -0
  427. package/src/main/js/sap/ushell/themes/sap_belize_base/shared.less +40 -0
  428. package/src/main/js/sap/ushell/themes/sap_belize_hcb/library.source.less +10 -1
  429. package/src/main/js/sap/ushell/themes/sap_belize_hcw/library.source.less +10 -1
  430. package/src/main/js/sap/ushell/themes/sap_horizon/ShellHeader.less +9 -18
  431. package/src/main/js/sap/ushell/themes/sap_horizon/Tile.less +2 -6
  432. package/src/main/js/sap/ushell/themes/sap_horizon_dark/ShellHeader.less +9 -18
  433. package/src/main/js/sap/ushell/themes/sap_horizon_hcb/ShellHeader.less +7 -14
  434. package/src/main/js/sap/ushell/themes/sap_horizon_hcw/ShellHeader.less +7 -14
  435. package/src/main/js/sap/ushell/ui/AppContainer.js +5 -3
  436. package/src/main/js/sap/ushell/ui/ContentNodeSelector.js +78 -21
  437. package/src/main/js/sap/ushell/ui/ContentNodeSelectorRenderer.js +32 -0
  438. package/src/main/js/sap/ushell/ui/ShellHeader.js +8 -5
  439. package/src/main/js/sap/ushell/ui/appfinder/AppBoxInternal.js +1 -1
  440. package/src/main/js/sap/ushell/ui/cards/FrequentActivitiesExtension.js +5 -4
  441. package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +6 -5
  442. package/src/main/js/sap/ushell/ui/footerbar/AboutDialog.controller.js +11 -7
  443. package/src/main/js/sap/ushell/ui/footerbar/AboutDialog.fragment.xml +3 -3
  444. package/src/main/js/sap/ushell/ui/footerbar/AddBookmarkButton.js +4 -4
  445. package/src/main/js/sap/ushell/ui/footerbar/ContactSupportDialog.controller.js +6 -4
  446. package/src/main/js/sap/ushell/ui/footerbar/JamDiscussButton.js +8 -5
  447. package/src/main/js/sap/ushell/ui/footerbar/JamShareButton.js +8 -6
  448. package/src/main/js/sap/ushell/ui/footerbar/LogoutButton.js +10 -7
  449. package/src/main/js/sap/ushell/ui/footerbar/SaveAsTile.controller.js +5 -3
  450. package/src/main/js/sap/ushell/ui/footerbar/SendAsEmailButton.js +8 -6
  451. package/src/main/js/sap/ushell/ui/launchpad/CatalogEntryContainer.js +7 -4
  452. package/src/main/js/sap/ushell/ui/launchpad/ExtendedChangeDetection.js +1 -1
  453. package/src/main/js/sap/ushell/ui/launchpad/Section.js +3 -6
  454. package/src/main/js/sap/ushell/ui/launchpad/TileContainer.js +14 -10
  455. package/src/main/js/sap/ushell/ui/launchpad/ViewPortState.js +1 -1
  456. package/src/main/js/sap/ushell/ui/launchpad/VizInstance.js +10 -7
  457. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceAbap.js +4 -3
  458. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceCdm.js +5 -3
  459. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceLaunchPage.js +3 -0
  460. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceLink.js +5 -3
  461. package/src/main/js/sap/ushell/ui/launchpad/section/CompactArea.js +1 -1
  462. package/src/main/js/sap/ushell/ui/shell/ShellHeadItem.js +3 -8
  463. package/src/main/js/sap/ushell/ui/shell/ToolAreaItem.js +1 -2
  464. package/src/main/js/sap/ushell/ui/utils.js +1 -1
  465. package/src/main/js/sap/ushell/ui5service/ShellUIService.js +1 -1
  466. package/src/main/js/sap/ushell/ui5service/UserStatus.js +1 -1
  467. package/src/main/js/sap/ushell/utils/DynamicTileRequest.js +9 -7
  468. package/src/main/js/sap/ushell/utils/UriParameters.js +43 -0
  469. package/src/main/js/sap/ushell/utils/UrlParsing.js +2 -4
  470. package/src/main/js/sap/ushell/utils/UrlShortening.js +1 -1
  471. package/src/main/js/sap/ushell/utils/WindowUtils.js +20 -5
  472. package/src/main/js/sap/ushell/utils/chipsUtils.js +4 -3
  473. package/src/main/js/sap/ushell/utils/tilecard/TileCard.js +305 -305
  474. package/src/main/js/sap/ushell/utils/workpage/WorkPageHost.js +1 -1
  475. package/src/main/js/sap/ushell/utils/workpage/WorkPageService.js +22 -5
  476. package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +7 -6
  477. package/src/main/js/sap/ushell/utils/workpage/resources/resources_en.properties +5 -4
  478. package/src/main/js/sap/ushell/utils/workpage/resources/resources_sh.properties +21 -20
  479. package/src/main/js/sap/ushell/utils.js +69 -64
  480. package/src/test/js/sap/ushell/bootstrap/sandbox.js +6 -8
  481. package/ui5.yaml +1 -1
  482. package/src/main/js/sap/ushell/ui/ContentNodeSelector.control.xml +0 -26
@@ -29,7 +29,7 @@
29
29
  * In the future, the custom resolver mechanism should be probably moved towards modifying (or only adding to the list of Inbounds),
30
30
  * this way a single data source has to be altered to support consistently getLinks, isIntentSupported.
31
31
  *
32
- * @version 1.124.3
32
+ * @version 1.126.0
33
33
  */
34
34
  sap.ui.define([
35
35
  "sap/base/Log",
@@ -52,7 +52,8 @@ sap.ui.define([
52
52
  "sap/ushell/services/_ClientSideTargetResolution/XAppStateProcessing",
53
53
  "sap/ushell/TechnicalParameters",
54
54
  "sap/ushell/utils",
55
- "sap/ushell/utils/UrlParsing"
55
+ "sap/ushell/utils/UrlParsing",
56
+ "sap/ushell/Container"
56
57
  ], function (
57
58
  Log,
58
59
  fnIsPlainObject,
@@ -73,8 +74,9 @@ sap.ui.define([
73
74
  _VirtualInbounds,
74
75
  _XAppStateProcessing,
75
76
  TechnicalParameters,
76
- UshellUtils,
77
- UrlParsing
77
+ ushellUtils,
78
+ UrlParsing,
79
+ Container
78
80
  ) {
79
81
  "use strict";
80
82
 
@@ -120,8 +122,11 @@ sap.ui.define([
120
122
  *
121
123
  * Usage:
122
124
  * <pre>
123
- * var oService = sap.ushell.Container.getServiceAsync("ClientSideTargetResolution").then(function (ClientSideTargetResolution) {});
124
- * oService.isIntentSupported("#SemanticObject-action");
125
+ * sap.ui.require(["sap/ushell/Container"], function(Container) {
126
+ * Container.getServiceAsync("ClientSideTargetResolution").then(function (oService) {
127
+ * oService.isIntentSupported("#SemanticObject-action");
128
+ * });
129
+ * });
125
130
  * </pre>
126
131
  *
127
132
  * @param {object} oAdapter Adapter, provides an array of Inbounds.
@@ -225,24 +230,22 @@ sap.ui.define([
225
230
  * @since 1.34.0
226
231
  */
227
232
  ClientSideTargetResolution.prototype.resolveHashFragment = function (sHashFragment) {
228
- var that = this;
229
233
  var oDeferred = new jQuery.Deferred();
230
234
  // NOTE: adapter may not implement fallback function
231
235
  var fnBoundFallback = this._oAdapter.resolveHashFragmentFallback && this._oAdapter.resolveHashFragmentFallback.bind(this._oAdapter);
232
236
  var aSegments = this._extractInboundFilter(sHashFragment);
233
237
 
234
- this._oInboundProvider.getInbounds(aSegments).then(
235
- function (oInboundIndex) {
236
- that._resolveHashFragment(sHashFragment, fnBoundFallback, oInboundIndex)
237
- .done(function (o) {
238
- return oDeferred.resolve(o);
239
- })
240
- .fail(oDeferred.reject.bind(oDeferred));
241
- },
242
- function () {
243
- oDeferred.reject.apply(oDeferred, arguments);
244
- }
245
- );
238
+ this._oInboundProvider.getInbounds(aSegments)
239
+ .then((oInboundIndex) => {
240
+ return this._resolveHashFragment(sHashFragment, fnBoundFallback, oInboundIndex);
241
+ })
242
+ .then((oResolvedHashFragment) => {
243
+ oDeferred.resolve(oResolvedHashFragment);
244
+ })
245
+ .catch((oError) => {
246
+ oDeferred.reject(oError);
247
+ });
248
+
246
249
  return oDeferred.promise();
247
250
  };
248
251
 
@@ -256,22 +259,22 @@ sap.ui.define([
256
259
  * @since 1.38.0
257
260
  */
258
261
  ClientSideTargetResolution.prototype.resolveTileIntent = function (sHashFragment) {
259
- var that = this;
260
262
  var oDeferred = new jQuery.Deferred();
261
263
 
262
264
  // NOTE: adapter may not implement fallback function
263
265
  var aSegments = this._extractInboundFilter(sHashFragment);
264
266
 
265
- this._oInboundProvider.getInbounds(aSegments).then(
266
- function (oInboundIndex) {
267
- that._resolveTileIntent(sHashFragment, undefined, oInboundIndex)
268
- .done(oDeferred.resolve.bind(oDeferred))
269
- .fail(oDeferred.reject.bind(oDeferred));
270
- },
271
- function () {
272
- oDeferred.reject.apply(oDeferred, arguments);
273
- }
274
- );
267
+ this._oInboundProvider.getInbounds(aSegments)
268
+ .then((oInboundIndex) => {
269
+ return this._resolveTileIntent(sHashFragment, undefined, oInboundIndex);
270
+ })
271
+ .then((oResolvedIntent) => {
272
+ oDeferred.resolve(oResolvedIntent);
273
+ })
274
+ .catch((oError) => {
275
+ oDeferred.reject(oError);
276
+ });
277
+
275
278
  return oDeferred.promise();
276
279
  };
277
280
 
@@ -292,15 +295,17 @@ sap.ui.define([
292
295
  );
293
296
 
294
297
  this._resolveTileIntent(sHashFragment, undefined /* fnBoundFallback */, oInboundIndex)
295
- .done(oDeferred.resolve.bind(oDeferred))
296
- .fail(oDeferred.reject.bind(oDeferred));
298
+ .then((oResolvedTileIntent) => {
299
+ oDeferred.resolve(oResolvedTileIntent);
300
+ })
301
+ .catch((oError) => {
302
+ oDeferred.reject(oError);
303
+ });
297
304
 
298
305
  return oDeferred.promise();
299
306
  };
300
307
 
301
- ClientSideTargetResolution.prototype._resolveHashFragment = function (sHashFragment, fnBoundFallback, oInboundIndex) {
302
- var that = this;
303
- var oDeferred = new jQuery.Deferred();
308
+ ClientSideTargetResolution.prototype._resolveHashFragment = async function (sHashFragment, fnBoundFallback, oInboundIndex) {
304
309
  var sFixedHashFragment = sHashFragment.indexOf("#") === 0 ? sHashFragment : "#" + sHashFragment;
305
310
  var oShellHash = UrlParsing.parseShellHash(sFixedHashFragment);
306
311
 
@@ -308,58 +313,44 @@ sap.ui.define([
308
313
  Log.error("Could not parse shell hash '" + sHashFragment + "'",
309
314
  "please specify a valid shell hash",
310
315
  "sap.ushell.services.ClientSideTargetResolution");
311
- return oDeferred.reject().promise();
316
+ throw new Error(`Could not parse shell hash '${sHashFragment}'please specify a valid shell hash`);
312
317
  }
313
318
 
314
- oShellHash.formFactor = UshellUtils.getFormFactor();
319
+ oShellHash.formFactor = ushellUtils.getFormFactor();
315
320
 
316
- this._getMatchingInbounds(oShellHash, oInboundIndex, { bExcludeTileInbounds: true })
317
- .fail(function (sError) {
318
- Log.error("Could not resolve " + sHashFragment,
319
- "_getMatchingInbounds promise rejected with: " + sError,
320
- "sap.ushell.services.ClientSideTargetResolution");
321
- oDeferred.reject(sError);
322
- })
323
- .done(function (aMatchingTargets) {
324
- var oMatchingTarget;
325
-
326
- if (aMatchingTargets.length === 0) {
327
- Log.warning(
328
- "Could not resolve " + sHashFragment,
329
- "rejecting promise",
330
- "sap.ushell.services.ClientSideTargetResolution"
331
- );
332
- oDeferred.reject("Could not resolve navigation target");
333
- return;
334
- }
321
+ let aMatchingTargets = await this._getMatchingInbounds(oShellHash, oInboundIndex, { bExcludeTileInbounds: true });
335
322
 
336
- aMatchingTargets = that._applySapNavigationScopeFilter(aMatchingTargets, oShellHash);
323
+ if (aMatchingTargets.length === 0) {
324
+ Log.warning(
325
+ "Could not resolve " + sHashFragment,
326
+ "rejecting promise",
327
+ "sap.ushell.services.ClientSideTargetResolution"
328
+ );
329
+ throw new Error(`Could not resolve ${sHashFragment}`);
330
+ }
337
331
 
338
- oMatchingTarget = aMatchingTargets[0];
332
+ aMatchingTargets = this._applySapNavigationScopeFilter(aMatchingTargets, oShellHash);
339
333
 
340
- if (Log.getLevel() >= Log.Level.DEBUG) {
341
- // replacer for JSON.stringify to show undefined values
342
- var fnUndefinedReplacer = function (sKey, vVal) {
343
- return (this[sKey] === undefined) ? "<undefined>" : vVal;
344
- };
345
- var fnReplacer = function (key, value) {
346
- return (key === "_original") ? undefined : fnUndefinedReplacer.call(this, key, value);
347
- };
348
- var sMatchedTarget = JSON.stringify(oMatchingTarget, fnReplacer, " ");
334
+ const oMatchingTarget = aMatchingTargets[0];
349
335
 
350
- Log.debug(
351
- "The following target will now be resolved",
352
- sMatchedTarget,
353
- "sap.ushell.services.ClientSideTargetResolution"
354
- );
355
- }
336
+ if (Log.getLevel() >= Log.Level.DEBUG) {
337
+ // replacer for JSON.stringify to show undefined values
338
+ var fnUndefinedReplacer = function (sKey, vVal) {
339
+ return (this[sKey] === undefined) ? "<undefined>" : vVal;
340
+ };
341
+ var fnReplacer = function (key, value) {
342
+ return (key === "_original") ? undefined : fnUndefinedReplacer.call(this, key, value);
343
+ };
344
+ var sMatchedTarget = JSON.stringify(oMatchingTarget, fnReplacer, " ");
356
345
 
357
- that._resolveSingleMatchingTarget(oMatchingTarget, fnBoundFallback, sFixedHashFragment)
358
- .done(oDeferred.resolve.bind(oDeferred))
359
- .fail(oDeferred.reject.bind(oDeferred));
360
- });
346
+ Log.debug(
347
+ "The following target will now be resolved",
348
+ sMatchedTarget,
349
+ "sap.ushell.services.ClientSideTargetResolution"
350
+ );
351
+ }
361
352
 
362
- return oDeferred.promise();
353
+ return this._resolveSingleMatchingTarget(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
363
354
  };
364
355
 
365
356
  /**
@@ -389,9 +380,7 @@ sap.ui.define([
389
380
  return aFilteredResults.length > 0 ? aFilteredResults : aMatchResults;
390
381
  };
391
382
 
392
- ClientSideTargetResolution.prototype._resolveSingleMatchingTarget = function (oMatchingTarget, fnBoundFallback, sFixedHashFragment) {
393
- var that = this;
394
- var oDeferred = new jQuery.Deferred();
383
+ ClientSideTargetResolution.prototype._resolveSingleMatchingTarget = async function (oMatchingTarget, fnBoundFallback, sFixedHashFragment) {
395
384
  var oIntent = UrlParsing.parseShellHash(sFixedHashFragment);
396
385
  var sIntent = [oIntent.semanticObject, oIntent.action].join("-");
397
386
  var sApplicationType = (oMatchingTarget.inbound.resolutionResult || {}).applicationType;
@@ -404,86 +393,77 @@ sap.ui.define([
404
393
  var bHasUrlTemplate = !!oMatchingTarget.inbound.templateContext;
405
394
  var fnEasyAccessMenuResolver = ApplicationType.getEasyAccessMenuResolver(sIntent, sApplicationType);
406
395
  if (fnEasyAccessMenuResolver && !bHasUrlTemplate) {
407
- fnEasyAccessMenuResolver(oIntent, oMatchingTarget, fnExternalSystemAliasResolver, ApplicationType.WDA.enableWdaCompatibilityMode)
408
- .then(
409
- function (oResolutionResult) {
410
- var oNavModeProperties = NavigationMode.getNavigationMode(
411
- oResolutionResult,
412
- (oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-navmode"] || [])[0],
413
- (oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-next-navmode"] || [])[0]
414
- );
415
- UshellUtils.shallowMergeObject(oResolutionResult, oNavModeProperties);
416
- oResolutionResult.inboundPermanentKey = oMatchingTarget.inbound.permanentKey || oMatchingTarget.inbound.id;
417
- oDeferred.resolve(oResolutionResult);
418
- },
419
- function (sError) {
420
- oDeferred.reject(sError);
421
- }
422
- );
423
- return oDeferred.promise();
396
+ const oResolutionResult = await fnEasyAccessMenuResolver(oIntent, oMatchingTarget, fnExternalSystemAliasResolver, ApplicationType.WDA.enableWdaCompatibilityMode);
397
+
398
+ const oNavModeProperties = NavigationMode.getNavigationMode(
399
+ oResolutionResult,
400
+ (oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-navmode"] || [])[0],
401
+ (oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-next-navmode"] || [])[0]
402
+ );
403
+ ushellUtils.shallowMergeObject(oResolutionResult, oNavModeProperties);
404
+ oResolutionResult.inboundPermanentKey = oMatchingTarget.inbound.permanentKey || oMatchingTarget.inbound.id;
405
+
406
+ return oResolutionResult;
424
407
  }
425
408
 
426
409
  var oReservedParameters = this._getReservedParameters(oMatchingTarget);
427
410
 
428
411
  // rename Parameters
429
412
  _ParameterMapping.mapParameterNamesAndRemoveObjects(oMatchingTarget);
430
- sap.ushell.Container.getServiceAsync("AppState").then(function (AppStateService) {
431
- _XAppStateProcessing.mixAppStateIntoResolutionResultAndRename(oMatchingTarget, AppStateService)
432
- .done(function (oMatchingTarget) {
433
- var fnResultProcessor = function () {
434
- return that._constructFallbackResolutionResult(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
435
- };
436
- if (ApplicationType[sApplicationType]) {
437
- fnResultProcessor = ApplicationType[sApplicationType].generateResolutionResult;
438
- }
439
413
 
440
- // remove parameters that should not make it to the URL (in any case!)
441
- delete oMatchingTarget.intentParamsPlusAllDefaults["sap-tag"];
442
- delete oMatchingTarget.mappedIntentParamsPlusSimpleDefaults["sap-tag"];
443
- oMatchingTarget.mappedDefaultedParamNames = oMatchingTarget.mappedDefaultedParamNames.filter(function (sParameterName) {
444
- return sParameterName !== "sap-tag";
445
- });
446
-
447
- var sBaseUrl = ObjectPath.get("inbound.resolutionResult.url", oMatchingTarget);
448
-
449
- _PrelaunchOperations.executePrelaunchOperations(oMatchingTarget, oReservedParameters["sap-prelaunch-operations"])
450
- .then(function () {
451
- return fnResultProcessor(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
452
- })
453
- .then(function (oResolutionResult) {
454
- var oNavModeProperties = NavigationMode.getNavigationMode(
455
- oResolutionResult,
456
- (oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-navmode"] || [])[0],
457
- (oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-next-navmode"] || [])[0]
458
- );
459
- UshellUtils.shallowMergeObject(oResolutionResult, oNavModeProperties);
414
+ const AppState = await Container.getServiceAsync("AppState");
415
+ oMatchingTarget = await _XAppStateProcessing.mixAppStateIntoResolutionResultAndRename(oMatchingTarget, AppState);
460
416
 
461
- oResolutionResult.reservedParameters = oReservedParameters;
462
- oResolutionResult.inboundPermanentKey = oMatchingTarget.inbound.permanentKey || oMatchingTarget.inbound.id;
463
- Log.debug(
464
- "Intent was resolved to the following target",
465
- JSON.stringify(oResolutionResult, null, 3),
466
- "sap.ushell.services.ClientSideTargetResolution"
467
- );
468
- UshellUtils.shallowMergeObject(oMatchingTarget.resolutionResult, oResolutionResult);
469
- oDeferred.resolve(oMatchingTarget.resolutionResult);
470
- }, function (vMessage) {
471
- if (typeof vMessage === "string" && vMessage.indexOf("fallback:") >= 0) {
472
- that._constructFallbackResolutionResult.call(this, oMatchingTarget, fnBoundFallback, sFixedHashFragment)
473
- .then(
474
- function (oResolutionResult) {
475
- UshellUtils.shallowMergeObject(oMatchingTarget.resolutionResult, oResolutionResult);
476
- oDeferred.resolve(oMatchingTarget.resolutionResult);
477
- },
478
- oDeferred.reject.bind(oDeferred)
479
- );
480
- } else {
481
- oDeferred.reject(vMessage);
482
- }
483
- });
484
- });
417
+ // remove parameters that should not make it to the URL (in any case!)
418
+ delete oMatchingTarget.intentParamsPlusAllDefaults["sap-tag"];
419
+ delete oMatchingTarget.mappedIntentParamsPlusSimpleDefaults["sap-tag"];
420
+ oMatchingTarget.mappedDefaultedParamNames = oMatchingTarget.mappedDefaultedParamNames.filter(function (sParameterName) {
421
+ return sParameterName !== "sap-tag";
485
422
  });
486
- return oDeferred.promise();
423
+
424
+ var sBaseUrl = ObjectPath.get("inbound.resolutionResult.url", oMatchingTarget);
425
+
426
+ await _PrelaunchOperations.executePrelaunchOperations(oMatchingTarget, oReservedParameters["sap-prelaunch-operations"]);
427
+
428
+ try {
429
+ let fnResultProcessor;
430
+ if (ApplicationType[sApplicationType]) {
431
+ fnResultProcessor = ApplicationType[sApplicationType].generateResolutionResult;
432
+ } else {
433
+ fnResultProcessor = () => {
434
+ return this._constructFallbackResolutionResult(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
435
+ };
436
+ }
437
+ const oResolutionResult = await fnResultProcessor(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
438
+
439
+ const oNavModeProperties = NavigationMode.getNavigationMode(
440
+ oResolutionResult,
441
+ (oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-navmode"] || [])[0],
442
+ (oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-next-navmode"] || [])[0]
443
+ );
444
+ ushellUtils.shallowMergeObject(oResolutionResult, oNavModeProperties);
445
+
446
+ oResolutionResult.reservedParameters = oReservedParameters;
447
+ oResolutionResult.inboundPermanentKey = oMatchingTarget.inbound.permanentKey || oMatchingTarget.inbound.id;
448
+
449
+ Log.debug(
450
+ "Intent was resolved to the following target",
451
+ JSON.stringify(oResolutionResult, null, 3),
452
+ "sap.ushell.services.ClientSideTargetResolution"
453
+ );
454
+ ushellUtils.shallowMergeObject(oMatchingTarget.resolutionResult, oResolutionResult);
455
+
456
+ return oMatchingTarget.resolutionResult;
457
+ } catch (vMessage) {
458
+ if (typeof vMessage === "string" && vMessage.indexOf("fallback:") >= 0) {
459
+ const oResolutionResult = await this._constructFallbackResolutionResult(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
460
+ ushellUtils.shallowMergeObject(oMatchingTarget.resolutionResult, oResolutionResult);
461
+
462
+ return oMatchingTarget.resolutionResult;
463
+ }
464
+
465
+ throw vMessage;
466
+ }
487
467
  };
488
468
 
489
469
  /**‚
@@ -537,9 +517,7 @@ sap.ui.define([
537
517
  return oReservedParameters;
538
518
  };
539
519
 
540
- ClientSideTargetResolution.prototype._resolveTileIntent = function (sHashFragment, fnBoundFallback, oInboundIndex) {
541
- var that = this;
542
- var oDeferred = new jQuery.Deferred();
520
+ ClientSideTargetResolution.prototype._resolveTileIntent = async function (sHashFragment, fnBoundFallback, oInboundIndex) {
543
521
  var sFixedHashFragment = sHashFragment.indexOf("#") === 0 ? sHashFragment : "#" + sHashFragment;
544
522
  var oShellHash = UrlParsing.parseShellHash(sFixedHashFragment);
545
523
 
@@ -549,45 +527,28 @@ sap.ui.define([
549
527
  "please specify a valid shell hash",
550
528
  "sap.ushell.services.ClientSideTargetResolution"
551
529
  );
552
- return oDeferred.reject("Cannot parse shell hash").promise();
530
+ throw new Error("Cannot parse shell hash");
553
531
  }
554
532
 
555
- oShellHash.formFactor = UshellUtils.getFormFactor();
533
+ oShellHash.formFactor = ushellUtils.getFormFactor();
556
534
 
557
- this._getMatchingInbounds(oShellHash, oInboundIndex, { bExcludeTileInbounds: false })
558
- .fail(function (sError) {
559
- Log.error(
560
- "Could not resolve " + sHashFragment,
561
- "_getMatchingInbounds promise rejected with: " + sError,
562
- "sap.ushell.services.ClientSideTargetResolution"
563
- );
564
- oDeferred.reject(sError);
565
- })
566
- .done(function (aMatchingTargets) {
567
- var oMatchingTarget;
568
-
569
- if (aMatchingTargets.length === 0) {
570
- Log.warning(
571
- "Could not resolve " + sHashFragment,
572
- "no matching targets were found",
573
- "sap.ushell.services.ClientSideTargetResolution"
574
- );
575
- oDeferred.reject("No matching targets found");
576
- return;
577
- }
535
+ const aMatchingTargets = await this._getMatchingInbounds(oShellHash, oInboundIndex, { bExcludeTileInbounds: false });
578
536
 
579
- oMatchingTarget = aMatchingTargets[0];
580
- that._resolveSingleMatchingTileIntent(oMatchingTarget, fnBoundFallback, sFixedHashFragment)
581
- .done(oDeferred.resolve.bind(oDeferred))
582
- .fail(oDeferred.reject.bind(oDeferred));
583
- });
584
- return oDeferred.promise();
537
+ if (aMatchingTargets.length === 0) {
538
+ Log.warning(
539
+ "Could not resolve " + sHashFragment,
540
+ "no matching targets were found",
541
+ "sap.ushell.services.ClientSideTargetResolution"
542
+ );
543
+ throw new Error("No matching targets found");
544
+ }
545
+
546
+ const oMatchingTarget = aMatchingTargets[0];
547
+ return this._resolveSingleMatchingTileIntent(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
585
548
  };
586
549
 
587
- ClientSideTargetResolution.prototype._resolveSingleMatchingTileIntent = function (oMatchingTarget, fnBoundFallback, sFixedHashFragment) {
588
- var oDeferred = new jQuery.Deferred();
550
+ ClientSideTargetResolution.prototype._resolveSingleMatchingTileIntent = async function (oMatchingTarget, fnBoundFallback, sFixedHashFragment) {
589
551
  var sApplicationType = (oMatchingTarget.inbound.resolutionResult || {}).applicationType;
590
- var that = this;
591
552
 
592
553
  var fnExternalSystemAliasResolver;
593
554
  if (this._oAdapter.resolveSystemAlias) {
@@ -596,55 +557,51 @@ sap.ui.define([
596
557
 
597
558
  // rename Parameters
598
559
  _ParameterMapping.mapParameterNamesAndRemoveObjects(oMatchingTarget);
599
- sap.ushell.Container.getServiceAsync("AppState").then(function (AppStateService) {
600
- _XAppStateProcessing.mixAppStateIntoResolutionResultAndRename(oMatchingTarget, AppStateService)
601
- .done(function (oMatchingTarget) {
602
- var fnResultProcessor = function () {
603
- return that._constructFallbackResolutionResult(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
604
- };
605
- if (ApplicationType[sApplicationType]) {
606
- fnResultProcessor = ApplicationType[sApplicationType].generateResolutionResult;
607
- }
608
560
 
609
- // remove parameters that should not make it to the URL (in any case!)
610
- delete oMatchingTarget.intentParamsPlusAllDefaults["sap-tag"];
611
- delete oMatchingTarget.mappedIntentParamsPlusSimpleDefaults["sap-tag"];
612
- oMatchingTarget.mappedDefaultedParamNames = oMatchingTarget.mappedDefaultedParamNames.filter(function (sParameterName) {
613
- return sParameterName !== "sap-tag";
614
- });
561
+ const AppState = await Container.getServiceAsync("AppState");
562
+ oMatchingTarget = await _XAppStateProcessing.mixAppStateIntoResolutionResultAndRename(oMatchingTarget, AppState);
615
563
 
616
- var sBaseUrl = ObjectPath.get("inbound.resolutionResult.url", oMatchingTarget);
564
+ // remove parameters that should not make it to the URL (in any case!)
565
+ delete oMatchingTarget.intentParamsPlusAllDefaults["sap-tag"];
566
+ delete oMatchingTarget.mappedIntentParamsPlusSimpleDefaults["sap-tag"];
567
+ oMatchingTarget.mappedDefaultedParamNames = oMatchingTarget.mappedDefaultedParamNames.filter(function (sParameterName) {
568
+ return sParameterName !== "sap-tag";
569
+ });
617
570
 
618
- fnResultProcessor(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver).then(
619
- function (oResolutionResult) {
620
- UshellUtils.shallowMergeObject(oMatchingTarget.resolutionResult, oResolutionResult);
571
+ var sBaseUrl = ObjectPath.get("inbound.resolutionResult.url", oMatchingTarget);
621
572
 
622
- // beware, shallow copy of central object! only modify root properties!
623
- var oTileResolutionResult = fnExtend({}, oMatchingTarget.inbound.tileResolutionResult);
573
+ let fnResultProcessor;
624
574
 
625
- oTileResolutionResult.startupParameters = oMatchingTarget.effectiveParameters;
575
+ if (ApplicationType[sApplicationType]) {
576
+ fnResultProcessor = ApplicationType[sApplicationType].generateResolutionResult;
577
+ } else {
578
+ fnResultProcessor = () => {
579
+ return this._constructFallbackResolutionResult(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
580
+ };
581
+ }
626
582
 
627
- var oNavModeProperties = NavigationMode.getNavigationMode(
628
- oResolutionResult,
629
- (oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-navmode"] || [])[0],
630
- (oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-next-navmode"] || [])[0]
631
- );
632
- UshellUtils.shallowMergeObject(oTileResolutionResult, oNavModeProperties);
583
+ const oResolutionResult = await fnResultProcessor(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
633
584
 
634
- oDeferred.resolve(oTileResolutionResult);
635
- Log.debug(
636
- "Tile Intent was resolved to the following target",
637
- JSON.stringify(oTileResolutionResult, null, 3),
638
- "sap.ushell.services.ClientSideTargetResolution"
639
- );
640
- },
641
- function (sMessage) {
642
- oDeferred.reject(sMessage);
643
- }
644
- );
645
- });
646
- });
647
- return oDeferred.promise();
585
+ ushellUtils.shallowMergeObject(oMatchingTarget.resolutionResult, oResolutionResult);
586
+
587
+ // beware, shallow copy of central object! only modify root properties!
588
+ var oTileResolutionResult = fnExtend({}, oMatchingTarget.inbound.tileResolutionResult);
589
+
590
+ oTileResolutionResult.startupParameters = oMatchingTarget.effectiveParameters;
591
+
592
+ var oNavModeProperties = NavigationMode.getNavigationMode(
593
+ oResolutionResult,
594
+ (oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-navmode"] || [])[0],
595
+ (oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-next-navmode"] || [])[0]
596
+ );
597
+ ushellUtils.shallowMergeObject(oTileResolutionResult, oNavModeProperties);
598
+
599
+ Log.debug(
600
+ "Tile Intent was resolved to the following target",
601
+ JSON.stringify(oTileResolutionResult, null, 3),
602
+ "sap.ushell.services.ClientSideTargetResolution"
603
+ );
604
+ return oTileResolutionResult;
648
605
  };
649
606
 
650
607
  /**
@@ -668,7 +625,7 @@ sap.ui.define([
668
625
  * <li>inbound that matched the hash fragment</li>
669
626
  * <li>oEffectiveParameters, the parameters to be added to the resolved url</li>
670
627
  * </ol>
671
- * This function must return a jQuery promise that is resolved with an object like:
628
+ * This function must return a promise that is resolved with an object like:
672
629
  * <pre>
673
630
  * {
674
631
  * applicationType: ...,
@@ -684,7 +641,7 @@ sap.ui.define([
684
641
  * <code>fnBoundFallback</code> parameter was undefined or failed to produce a resolution result.
685
642
  * @private
686
643
  */
687
- ClientSideTargetResolution.prototype._constructFallbackResolutionResult = function (oMatchingTarget, fnBoundFallback, sFixedHashFragment) {
644
+ ClientSideTargetResolution.prototype._constructFallbackResolutionResult = async function (oMatchingTarget, fnBoundFallback, sFixedHashFragment) {
688
645
  // The current flow is to resolve the result with all *uncompressed* default substituted parameters and alters
689
646
  // appState compress the url afterwards if needed (the fallback function takes care of this).
690
647
  var oEffectiveParameters = {};
@@ -707,7 +664,7 @@ sap.ui.define([
707
664
  "sap.ushell.services.ClientSideTargetResolution"
708
665
  );
709
666
 
710
- return Promise.reject("Cannot resolve hash fragment: no fallback provided.");
667
+ throw new Error("Cannot resolve hash fragment: no fallback provided.");
711
668
  }
712
669
 
713
670
  // fallback
@@ -718,25 +675,21 @@ sap.ui.define([
718
675
  );
719
676
 
720
677
  // NOTE: the callback function will be invoked with the effective *unmapped* parameter names! as 3rd argument
721
- return new Promise(function (fnResolve, fnReject) {
722
- fnBoundFallback(
723
- sFixedHashFragment,
724
- fnExtend({}, oMatchingTarget.inbound), // don't let adapters to change the inbound member
725
- oEffectiveParameters
726
- )
727
- .done(function (oFallbackResolutionResult) {
728
- var oResolutionResult = {};
729
- // propagate properties from the resolution result returned by the fallback function
730
- ["applicationType", "additionalInformation", "url", "applicationDependencies", "text"].forEach(function (sPropName) {
731
- if (oFallbackResolutionResult.hasOwnProperty(sPropName)) {
732
- oResolutionResult[sPropName] = oFallbackResolutionResult[sPropName];
733
- }
734
- });
735
-
736
- fnResolve(oResolutionResult);
737
- })
738
- .fail(fnReject.bind(null));
678
+ const oFallbackResolutionResult = await ushellUtils.promisify(fnBoundFallback(
679
+ sFixedHashFragment,
680
+ fnExtend({}, oMatchingTarget.inbound), // don't let adapters to change the inbound member
681
+ oEffectiveParameters
682
+ ));
683
+
684
+ var oResolutionResult = {};
685
+ // propagate properties from the resolution result returned by the fallback function
686
+ ["applicationType", "additionalInformation", "url", "applicationDependencies", "text"].forEach(function (sPropName) {
687
+ if (oFallbackResolutionResult.hasOwnProperty(sPropName)) {
688
+ oResolutionResult[sPropName] = oFallbackResolutionResult[sPropName];
689
+ }
739
690
  });
691
+
692
+ return oResolutionResult;
740
693
  };
741
694
 
742
695
  /**
@@ -753,8 +706,8 @@ sap.ui.define([
753
706
  ClientSideTargetResolution.prototype.getDistinctSemanticObjects = function () {
754
707
  var oDeferred = new jQuery.Deferred();
755
708
 
756
- this._oInboundProvider.getInbounds().then(
757
- function (oInboundIndex) {
709
+ this._oInboundProvider.getInbounds()
710
+ .then((oInboundIndex) => {
758
711
  var oSemanticObjects = {};
759
712
 
760
713
  oInboundIndex.getAllInbounds().forEach(function (oInbound) {
@@ -764,14 +717,12 @@ sap.ui.define([
764
717
  }
765
718
  });
766
719
 
767
- oDeferred.resolve(
768
- Object.keys(oSemanticObjects).sort()
769
- );
770
- },
771
- function () {
772
- oDeferred.reject.apply(oDeferred, arguments);
773
- }
774
- );
720
+ oDeferred.resolve(Object.keys(oSemanticObjects).sort());
721
+ })
722
+ .catch((oError) => {
723
+ oDeferred.reject(oError);
724
+ });
725
+
775
726
  return oDeferred.promise();
776
727
  };
777
728
 
@@ -820,8 +771,6 @@ sap.ui.define([
820
771
  * @since 1.38.0
821
772
  */
822
773
  ClientSideTargetResolution.prototype.getLinks = function (oArgs) {
823
- var that = this;
824
-
825
774
  var oDeferred = new jQuery.Deferred();
826
775
  var oCallArgs;
827
776
 
@@ -865,16 +814,17 @@ sap.ui.define([
865
814
  return oDeferred.reject("invalid arguments for getLinks").promise();
866
815
  }
867
816
 
868
- this._oInboundProvider.getInbounds().then(
869
- function (oInboundIndex) {
870
- that._getLinks(oCallArgs, oInboundIndex)
871
- .done(oDeferred.resolve.bind(oDeferred))
872
- .fail(oDeferred.reject.bind(oDeferred));
873
- },
874
- function () {
875
- oDeferred.reject.apply(oDeferred, arguments);
876
- }
877
- );
817
+ this._oInboundProvider.getInbounds()
818
+ .then((oInboundIndex) => {
819
+ return this._getLinks(oCallArgs, oInboundIndex);
820
+ })
821
+ .then((aLinks) => {
822
+ oDeferred.resolve(aLinks);
823
+ })
824
+ .catch((oError) => {
825
+ oDeferred.reject(oError);
826
+ });
827
+
878
828
  return oDeferred.promise();
879
829
  };
880
830
 
@@ -951,7 +901,7 @@ sap.ui.define([
951
901
  * }
952
902
  * </pre>
953
903
  * @param {object} oInboundIndex An inbound index to retrieve the get semantic object links from.
954
- * @returns {object[]} An array of link objects containing (at least) the following properties:
904
+ * @returns {Promise<object[]>} An array of link objects containing (at least) the following properties:
955
905
  * <pre>
956
906
  * {
957
907
  * intent: "#AnObject-Action?A=B&C=e&C=j",
@@ -963,7 +913,7 @@ sap.ui.define([
963
913
  * </pre>
964
914
  * @private
965
915
  */
966
- ClientSideTargetResolution.prototype._getLinks = function (oArgs, oInboundIndex) {
916
+ ClientSideTargetResolution.prototype._getLinks = async function (oArgs, oInboundIndex) {
967
917
  var sSemanticObject = oArgs.semanticObject;
968
918
  var sAction = oArgs.action;
969
919
  var mParameters = oArgs.params;
@@ -991,12 +941,12 @@ sap.ui.define([
991
941
  }
992
942
 
993
943
  if (sErrorMessage) {
994
- return new jQuery.Deferred().reject(sErrorMessage).promise();
944
+ throw new Error(sErrorMessage);
995
945
  }
996
946
 
997
947
  if (sSemanticObject === "*") {
998
948
  // shortcut: skip matching inbounds and return directly; it can only match "*" and we don't return it anyway
999
- return jQuery.when([]);
949
+ return [];
1000
950
  }
1001
951
 
1002
952
  /**
@@ -1007,172 +957,164 @@ sap.ui.define([
1007
957
  return sBusinessParams ? "?" + sBusinessParams : "";
1008
958
  }
1009
959
 
1010
- var oDeferred = new jQuery.Deferred();
1011
- var sFormFactor = UshellUtils.getFormFactor();
960
+ var sFormFactor = ushellUtils.getFormFactor();
1012
961
  var oAllIntentParams = UrlParsing.parseParameters(fnConstructBusinessParamsString(mParameters));
1013
962
  var oShellHash = {
1014
963
  semanticObject: (sSemanticObject === "" ? undefined : sSemanticObject),
1015
964
  action: sAction, // undefined: match all actions
1016
- formFactor: (
1017
- bIgnoreFormFactor
1018
- ? undefined // match any form factor
1019
- : sFormFactor
1020
- ),
965
+ formFactor: (bIgnoreFormFactor ? undefined : sFormFactor), // undefined: match any form factor
1021
966
  params: oAllIntentParams
1022
967
  };
1023
968
  if (bTreatTechHintAsFilter) {
1024
969
  oShellHash.treatTechHintAsFilter = true;
1025
970
  }
1026
971
 
1027
- this._getMatchingInbounds(oShellHash, oInboundIndex, oInboundsConstraints)
1028
- .done(function (aMatchingTargets) {
1029
- var oUniqueIntents = {};
1030
- var aResults = aMatchingTargets.map(function (oMatchResult) {
1031
- var sAdjustedSemanticObject = sSemanticObject || oMatchResult.inbound.semanticObject;
1032
- var sIntent = "#" + sAdjustedSemanticObject + "-" + oMatchResult.inbound.action;
1033
- var oNeededParameters;
972
+ const aMatchingTargets = await this._getMatchingInbounds(oShellHash, oInboundIndex, oInboundsConstraints);
1034
973
 
1035
- // we never return "*" semantic objects from getLinks as they are not parsable links
1036
- if (sAdjustedSemanticObject === "*") {
1037
- return undefined;
1038
- }
974
+ var oUniqueIntents = {};
975
+ var aResults = aMatchingTargets
976
+ .map(function (oMatchResult) {
977
+ var sAdjustedSemanticObject = sSemanticObject || oMatchResult.inbound.semanticObject;
978
+ var sIntent = "#" + sAdjustedSemanticObject + "-" + oMatchResult.inbound.action;
979
+ var oNeededParameters;
1039
980
 
1040
- // we never want to return "*" actions from getLinks as they are non parsable links
1041
- if (oMatchResult.inbound.action === "*") {
1042
- return undefined;
1043
- }
981
+ // we never return "*" semantic objects from getLinks as they are not parsable links
982
+ if (sAdjustedSemanticObject === "*") {
983
+ return undefined;
984
+ }
1044
985
 
1045
- if (oMatchResult.inbound && oMatchResult.inbound.hasOwnProperty("hideIntentLink") && oMatchResult.inbound.hideIntentLink === true) {
1046
- return undefined;
1047
- }
986
+ // we never want to return "*" actions from getLinks as they are non parsable links
987
+ if (oMatchResult.inbound.action === "*") {
988
+ return undefined;
989
+ }
1048
990
 
1049
- if (!oUniqueIntents.hasOwnProperty(sIntent)) {
1050
- oUniqueIntents[sIntent] = {
1051
- matchingInbound: oMatchResult.inbound,
1052
- count: 1
1053
- };
991
+ if (oMatchResult.inbound && oMatchResult.inbound.hasOwnProperty("hideIntentLink") && oMatchResult.inbound.hideIntentLink === true) {
992
+ return undefined;
993
+ }
1054
994
 
1055
- if (oMatchResult.inbound.signature.additionalParameters === "ignored") {
1056
- // in the result do not show all intent parameters, but only those mentioned by the inbound
1057
- oNeededParameters = _Utils.filterObjectKeys(oAllIntentParams, function (sIntentParam) {
1058
- return (sIntentParam.indexOf("sap-") === 0) ||
1059
- oMatchResult.inbound.signature.parameters.hasOwnProperty(sIntentParam);
1060
- }, false);
1061
- } else {
1062
- oNeededParameters = oAllIntentParams;
1063
- }
995
+ if (!oUniqueIntents.hasOwnProperty(sIntent)) {
996
+ oUniqueIntents[sIntent] = {
997
+ matchingInbound: oMatchResult.inbound,
998
+ count: 1
999
+ };
1064
1000
 
1065
- // --- begin of post-match reject reasons
1001
+ if (oMatchResult.inbound.signature.additionalParameters === "ignored") {
1002
+ // in the result do not show all intent parameters, but only those mentioned by the inbound
1003
+ oNeededParameters = _Utils.filterObjectKeys(oAllIntentParams, function (sIntentParam) {
1004
+ return (sIntentParam.indexOf("sap-") === 0) || oMatchResult.inbound.signature.parameters.hasOwnProperty(sIntentParam);
1005
+ }, false);
1006
+ } else {
1007
+ oNeededParameters = oAllIntentParams;
1008
+ }
1066
1009
 
1067
- if (bWithAtLeastOneUsedParam) {
1068
- var bAtLeastOneNonSapParam = Object.keys(oNeededParameters).some(function (sNeededParamName) {
1069
- return sNeededParamName.indexOf("sap-") !== 0;
1070
- });
1071
- if (!bAtLeastOneNonSapParam) {
1072
- oUniqueIntents[sIntent].hideReason = "getLinks called with 'withAtLeastOneUsedParam = true', but the inbound had no business parameters defined.";
1073
- return undefined;
1074
- }
1075
- }
1010
+ // --- begin of post-match reject reasons
1076
1011
 
1077
- var bSignatureMeetsParameterOptions = _Utils.inboundSignatureMeetsParameterOptions(
1078
- oMatchResult.inbound.signature.parameters,
1079
- oArgs.paramsOptions || []
1080
- );
1081
- if (!bSignatureMeetsParameterOptions) {
1082
- oUniqueIntents[sIntent].hideReason = "inbound signature does not meet the requested parameter filter options";
1012
+ if (bWithAtLeastOneUsedParam) {
1013
+ var bAtLeastOneNonSapParam = Object.keys(oNeededParameters).some(function (sNeededParamName) {
1014
+ return sNeededParamName.indexOf("sap-") !== 0;
1015
+ });
1016
+ if (!bAtLeastOneNonSapParam) {
1017
+ oUniqueIntents[sIntent].hideReason = "getLinks called with 'withAtLeastOneUsedParam = true', but the inbound had no business parameters defined.";
1083
1018
  return undefined;
1084
1019
  }
1020
+ }
1085
1021
 
1086
- // --- end of post-match reject reasons
1087
-
1088
- var oResult = {
1089
- intent: sIntent + fnConstructBusinessParamsString(oNeededParameters),
1090
- text: oMatchResult.inbound.title
1091
- };
1022
+ var bSignatureMeetsParameterOptions = _Utils.inboundSignatureMeetsParameterOptions(
1023
+ oMatchResult.inbound.signature.parameters,
1024
+ oArgs.paramsOptions || []
1025
+ );
1026
+ if (!bSignatureMeetsParameterOptions) {
1027
+ oUniqueIntents[sIntent].hideReason = "inbound signature does not meet the requested parameter filter options";
1028
+ return undefined;
1029
+ }
1092
1030
 
1093
- if (oMatchResult.inbound.icon) {
1094
- oResult.icon = oMatchResult.inbound.icon;
1095
- }
1096
- if (oMatchResult.inbound.subTitle) {
1097
- oResult.subTitle = oMatchResult.inbound.subTitle;
1098
- }
1099
- if (oMatchResult.inbound.shortTitle) {
1100
- oResult.shortTitle = oMatchResult.inbound.shortTitle;
1101
- }
1031
+ // --- end of post-match reject reasons
1102
1032
 
1103
- var sInboundTag = ObjectPath.get("inbound.signature.parameters.sap-tag.defaultValue.value", oMatchResult);
1104
- if (sInboundTag) {
1105
- oResult.tags = [sInboundTag];
1106
- }
1033
+ var oResult = {
1034
+ intent: sIntent + fnConstructBusinessParamsString(oNeededParameters),
1035
+ text: oMatchResult.inbound.title
1036
+ };
1107
1037
 
1108
- return oResult;
1038
+ if (oMatchResult.inbound.icon) {
1039
+ oResult.icon = oMatchResult.inbound.icon;
1040
+ }
1041
+ if (oMatchResult.inbound.subTitle) {
1042
+ oResult.subTitle = oMatchResult.inbound.subTitle;
1043
+ }
1044
+ if (oMatchResult.inbound.shortTitle) {
1045
+ oResult.shortTitle = oMatchResult.inbound.shortTitle;
1109
1046
  }
1110
- // for debugging purposes
1111
- oUniqueIntents[sIntent].count++;
1112
1047
 
1113
- return undefined;
1114
- }).filter(function (oSemanticObjectLink) {
1115
- return typeof oSemanticObjectLink === "object";
1116
- });
1048
+ var sInboundTag = ObjectPath.get("inbound.signature.parameters.sap-tag.defaultValue.value", oMatchResult);
1049
+ if (sInboundTag) {
1050
+ oResult.tags = [sInboundTag];
1051
+ }
1117
1052
 
1118
- if (sSortProperty !== "priority") {
1119
- aResults.sort(function (oGetSoLinksResult1, oGetSoLinksResult2) {
1120
- return oGetSoLinksResult1[sSortProperty] < oGetSoLinksResult2[sSortProperty] ? -1 : 1;
1121
- });
1053
+ return oResult;
1122
1054
  }
1055
+ // for debugging purposes
1056
+ oUniqueIntents[sIntent].count++;
1123
1057
 
1124
- if (aResults.length === 0) {
1125
- Log.debug("_getLinks returned no results");
1126
- } else if (Log.getLevel() >= Log.Level.DEBUG) {
1127
- if (Log.getLevel() >= Log.Level.TRACE) {
1128
- var aResultLines = [];
1129
- var aHiddenResultLines = [];
1130
-
1131
- aResults.forEach(function (oResult) {
1132
- var sIntent = oResult.intent.split("?")[0];
1133
-
1134
- if (oUniqueIntents[sIntent].hideReason) {
1135
- aHiddenResultLines.push([
1136
- "-", sIntent + "(" + oUniqueIntents[sIntent].hideReason + ")\n",
1137
- " text:", oResult.text + "\n",
1138
- " full intent:", oResult.intent
1139
- ].join(" "));
1140
- } else {
1141
- aResultLines.push([
1142
- "-", sIntent,
1143
- oUniqueIntents[sIntent].count > 1
1144
- ? "(" + (oUniqueIntents[sIntent].count - 1) + " others matched)\n"
1145
- : "\n",
1146
- "text:", oResult.text + "\n",
1147
- "full intent:", oResult.intent
1148
- ].join(" "));
1149
- }
1150
- });
1058
+ return undefined;
1059
+ })
1060
+ .filter(function (oSemanticObjectLink) {
1061
+ return typeof oSemanticObjectLink === "object";
1062
+ });
1151
1063
 
1152
- Log.debug(
1153
- "_getLinks filtered to the following unique intents:",
1154
- "\n" + aResultLines.join("\n"),
1155
- "sap.ushell.services.ClientSideTargetResolution"
1156
- );
1157
-
1158
- Log.debug(
1159
- "_getLinks would have also returned the following unique intents, but something prevented this:",
1160
- aHiddenResultLines.join("\n"),
1161
- "sap.ushell.services.ClientSideTargetResolution"
1162
- );
1064
+ if (sSortProperty !== "priority") {
1065
+ aResults.sort(function (oGetSoLinksResult1, oGetSoLinksResult2) {
1066
+ return oGetSoLinksResult1[sSortProperty] < oGetSoLinksResult2[sSortProperty] ? -1 : 1;
1067
+ });
1068
+ }
1069
+
1070
+ if (aResults.length === 0) {
1071
+ Log.debug("_getLinks returned no results");
1072
+ } else if (Log.getLevel() >= Log.Level.DEBUG) {
1073
+ if (Log.getLevel() >= Log.Level.TRACE) {
1074
+ var aResultLines = [];
1075
+ var aHiddenResultLines = [];
1076
+
1077
+ aResults.forEach(function (oResult) {
1078
+ var sIntent = oResult.intent.split("?")[0];
1079
+
1080
+ if (oUniqueIntents[sIntent].hideReason) {
1081
+ aHiddenResultLines.push([
1082
+ "-", sIntent + "(" + oUniqueIntents[sIntent].hideReason + ")\n",
1083
+ " text:", oResult.text + "\n",
1084
+ " full intent:", oResult.intent
1085
+ ].join(" "));
1163
1086
  } else {
1164
- Log.debug(
1165
- "_getLinks filtered to unique intents.",
1166
- "Reporting histogram: \n - " + Object.keys(oUniqueIntents).join("\n - "),
1167
- "sap.ushell.services.ClientSideTargetResolution"
1168
- );
1087
+ aResultLines.push([
1088
+ "-", sIntent,
1089
+ oUniqueIntents[sIntent].count > 1
1090
+ ? "(" + (oUniqueIntents[sIntent].count - 1) + " others matched)\n"
1091
+ : "\n",
1092
+ "text:", oResult.text + "\n",
1093
+ "full intent:", oResult.intent
1094
+ ].join(" "));
1169
1095
  }
1170
- }
1171
- oDeferred.resolve(aResults);
1172
- })
1173
- .fail(oDeferred.reject.bind(oDeferred));
1096
+ });
1174
1097
 
1175
- return oDeferred.promise();
1098
+ Log.debug(
1099
+ "_getLinks filtered to the following unique intents:",
1100
+ "\n" + aResultLines.join("\n"),
1101
+ "sap.ushell.services.ClientSideTargetResolution"
1102
+ );
1103
+
1104
+ Log.debug(
1105
+ "_getLinks would have also returned the following unique intents, but something prevented this:",
1106
+ aHiddenResultLines.join("\n"),
1107
+ "sap.ushell.services.ClientSideTargetResolution"
1108
+ );
1109
+ } else {
1110
+ Log.debug(
1111
+ "_getLinks filtered to unique intents.",
1112
+ "Reporting histogram: \n - " + Object.keys(oUniqueIntents).join("\n - "),
1113
+ "sap.ushell.services.ClientSideTargetResolution"
1114
+ );
1115
+ }
1116
+ }
1117
+ return aResults;
1176
1118
  };
1177
1119
 
1178
1120
  /**
@@ -1203,18 +1145,17 @@ sap.ui.define([
1203
1145
  * }
1204
1146
  * </pre>
1205
1147
  * @param {string[]} [oConstraints.tags] Tags to which the queried inbounds should belong to.
1206
- * @returns {jQuery.Promise[]} A sorted array of matching targets.
1148
+ * @returns {Promise<object[]>} A sorted array of matching targets.
1207
1149
  * A target is a matching result that in addition has a specific priority with respect to other matching targets.
1208
1150
  * @private
1209
1151
  * @since 1.32.0
1210
1152
  */
1211
- ClientSideTargetResolution.prototype._getMatchingInbounds = function (oShellHash, oInboundIndex, oConstraints) {
1153
+ ClientSideTargetResolution.prototype._getMatchingInbounds = async function (oShellHash, oInboundIndex, oConstraints) {
1212
1154
  var that = this;
1213
1155
  var aTags;
1214
1156
  var iLogId;
1215
1157
  var bExcludeTileInbounds;
1216
1158
  var aPreFilteredInbounds;
1217
- var oDeferred = new jQuery.Deferred();
1218
1159
 
1219
1160
  if (oConstraints) {
1220
1161
  aTags = oConstraints.tags;
@@ -1263,6 +1204,13 @@ sap.ui.define([
1263
1204
  };
1264
1205
  });
1265
1206
 
1207
+ // output logs before returning
1208
+ function endLogger () {
1209
+ _StagedLogger.end(() => {
1210
+ return { logId: iLogId };
1211
+ });
1212
+ }
1213
+
1266
1214
  var sSemanticObject = oShellHash.semanticObject;
1267
1215
  var sAction = oShellHash.action;
1268
1216
  this._oShellHash = oShellHash;
@@ -1287,73 +1235,60 @@ sap.ui.define([
1287
1235
  }
1288
1236
 
1289
1237
  // initial match
1290
- _Search
1291
- .match(oShellHash, aPreFilteredInbounds, {} /* known default */, fnGetContentProviderLookup, Log.getLevel() >= Log.Level.DEBUG)
1292
- .then(function (oInitialMatchResult) {
1293
- // resolve References
1238
+ const oInitialMatchResult = await _Search.match(oShellHash, aPreFilteredInbounds, {} /* known default */, fnGetContentProviderLookup, Log.getLevel() >= Log.Level.DEBUG);
1294
1239
 
1295
- _StagedLogger.log(function () {
1296
- return {
1297
- logId: iLogId,
1298
- stage: 1,
1299
- prefix: "\u2718", // heavy black X
1300
- lines: Object.keys(oInitialMatchResult.noMatchReasons || {}).map(function (sInbound) {
1301
- return sInbound + " " + oInitialMatchResult.noMatchReasons[sInbound];
1302
- })
1303
- };
1304
- });
1305
-
1306
- _StagedLogger.log(function () {
1307
- var aLines = oInitialMatchResult.matchResults.map(function (oMatchResult) {
1308
- return _Formatter.formatInbound(oMatchResult.inbound);
1309
- });
1310
- return {
1311
- logId: iLogId,
1312
- stage: 1,
1313
- prefix: aLines.length > 0
1314
- ? "\u2705" // green checkmark
1315
- : "\u2718", // heavy black X
1316
- lines: aLines.length > 0
1317
- ? aLines
1318
- : ["No inbound was matched"]
1319
- };
1320
- });
1240
+ // ========================= Stage 1 ================================
1241
+ // resolve References
1242
+ _StagedLogger.log(function () {
1243
+ return {
1244
+ logId: iLogId,
1245
+ stage: 1,
1246
+ prefix: "\u2718", // heavy black X
1247
+ lines: Object.keys(oInitialMatchResult.noMatchReasons || {}).map(function (sInbound) {
1248
+ return sInbound + " " + oInitialMatchResult.noMatchReasons[sInbound];
1249
+ })
1250
+ };
1251
+ });
1321
1252
 
1322
- var oMissingReferences = {};
1323
- var bNeedToResolve = false;
1324
- var aContentProviders = Object.keys(oInitialMatchResult.missingReferences);
1325
- aContentProviders.forEach(function (sContentProviderId) {
1326
- var aReferences = Object.keys(oInitialMatchResult.missingReferences[sContentProviderId]);
1327
- bNeedToResolve = bNeedToResolve || aReferences.length > 0;
1328
- oMissingReferences[sContentProviderId] = aReferences;
1329
- });
1253
+ _StagedLogger.log(function () {
1254
+ var aLines = oInitialMatchResult.matchResults.map(function (oMatchResult) {
1255
+ return _Formatter.formatInbound(oMatchResult.inbound);
1256
+ });
1257
+ return {
1258
+ logId: iLogId,
1259
+ stage: 1,
1260
+ prefix: aLines.length > 0
1261
+ ? "\u2705" // green checkmark
1262
+ : "\u2718", // heavy black X
1263
+ lines: aLines.length > 0
1264
+ ? aLines
1265
+ : ["No inbound was matched"]
1266
+ };
1267
+ });
1330
1268
 
1331
- aContentProviders = aContentProviders.filter(function (sContentProviderId) {
1332
- if (oMissingReferences[sContentProviderId].length > 0) {
1333
- return true;
1334
- }
1335
- delete oMissingReferences[sContentProviderId];
1336
- return false;
1337
- });
1269
+ var oMissingReferences = {};
1270
+ var bNeedToResolve = false;
1271
+ var aContentProviders = Object.keys(oInitialMatchResult.missingReferences);
1272
+ aContentProviders.forEach(function (sContentProviderId) {
1273
+ var aReferences = Object.keys(oInitialMatchResult.missingReferences[sContentProviderId]);
1274
+ bNeedToResolve = bNeedToResolve || aReferences.length > 0;
1275
+ oMissingReferences[sContentProviderId] = aReferences;
1276
+ });
1338
1277
 
1339
- // no references to resolve
1340
- if (!bNeedToResolve) {
1341
- _StagedLogger.log(function () {
1342
- return {
1343
- logId: iLogId,
1344
- stage: 2,
1345
- prefix: "\u2705", // green checkmark
1346
- line: "No need to resolve references"
1347
- };
1348
- });
1278
+ aContentProviders = aContentProviders.filter(function (sContentProviderId) {
1279
+ if (oMissingReferences[sContentProviderId].length > 0) {
1280
+ return true;
1281
+ }
1282
+ delete oMissingReferences[sContentProviderId];
1283
+ return false;
1284
+ });
1349
1285
 
1350
- return new jQuery.Deferred().resolve({
1351
- matchResults: oInitialMatchResult.matchResults,
1352
- referencesToInclude: null
1353
- }).promise();
1354
- }
1355
1286
 
1356
- // must resolve references
1287
+ // ========================= Stage 2 ================================
1288
+ // resolve references
1289
+ let oInitialMatchWithReferencesResult;
1290
+ if (bNeedToResolve) {
1291
+ try {
1357
1292
  aContentProviders.forEach(function (sContentProviderId) {
1358
1293
  _StagedLogger.log(function () {
1359
1294
  return {
@@ -1366,161 +1301,152 @@ sap.ui.define([
1366
1301
  });
1367
1302
  });
1368
1303
 
1369
- var oReadyToRematchDeferred = new jQuery.Deferred();
1370
- sap.ushell.Container.getServiceAsync("ReferenceResolver")
1371
- .then(function (oReferenceResolver) {
1372
- var aSystemContextPromises = aContentProviders.map(function (sContentProviderId) {
1373
- return this.getSystemContext(sContentProviderId);
1374
- }.bind(this));
1375
- return Promise.all(aSystemContextPromises)
1376
- .then(function (aSystemContexts) {
1377
- var aReferencePromises = aContentProviders.map(function (sContentProviderId, iIndex) {
1378
- return new Promise(function (resolve, reject) {
1379
- oReferenceResolver.resolveReferences(oMissingReferences[sContentProviderId], aSystemContexts[iIndex])
1380
- .done(resolve)
1381
- .fail(reject);
1382
- });
1383
- });
1384
- return Promise.all(aReferencePromises);
1385
- });
1386
- }.bind(this))
1387
- .then(function (aResolvedRefs) {
1388
- var oResult = {
1389
- matchResults: oInitialMatchResult.matchResults,
1390
- referencesToInclude: {}
1391
- };
1392
- aContentProviders.forEach(function (sContentProviderId, iIndex) {
1393
- var oResolvedRefs = aResolvedRefs[iIndex];
1394
- oResult.referencesToInclude[sContentProviderId] = oResolvedRefs;
1395
- if (Object.keys(oResolvedRefs).length > 0) {
1396
- _StagedLogger.log(function () {
1397
- return {
1398
- logId: iLogId,
1399
- stage: 2,
1400
- line: "\u2705 resolved references with contentProviderId = \"" + sContentProviderId + "\" to the following values:",
1401
- prefix: "\u2022", // bullet point
1402
- lines: Object.keys(oResolvedRefs).map(function (sRefName) {
1403
- return sRefName + ": '" + oResolvedRefs[sRefName] + "'";
1404
- })
1405
- };
1406
- });
1407
- }
1408
- });
1409
- oReadyToRematchDeferred.resolve(oResult);
1410
- })
1411
- .catch(function (sError) {
1304
+ const ReferenceResolver = await Container.getServiceAsync("ReferenceResolver");
1305
+
1306
+ const aSystemContexts = await Promise.all(aContentProviders.map((sContentProviderId) => {
1307
+ return this.getSystemContext(sContentProviderId);
1308
+ }));
1309
+ const aResolvedRefs = await Promise.all(aContentProviders.map(function (sContentProviderId, iIndex) {
1310
+ return ushellUtils.promisify(ReferenceResolver.resolveReferences(oMissingReferences[sContentProviderId], aSystemContexts[iIndex]));
1311
+ }));
1312
+
1313
+ var oResult = {
1314
+ matchResults: oInitialMatchResult.matchResults,
1315
+ referencesToInclude: {}
1316
+ };
1317
+ aContentProviders.forEach(function (sContentProviderId, iIndex) {
1318
+ var oResolvedRefs = aResolvedRefs[iIndex];
1319
+ oResult.referencesToInclude[sContentProviderId] = oResolvedRefs;
1320
+ if (Object.keys(oResolvedRefs).length > 0) {
1412
1321
  _StagedLogger.log(function () {
1413
1322
  return {
1414
1323
  logId: iLogId,
1415
1324
  stage: 2,
1416
- prefix: "\u274c", // red X
1417
- line: "Failed to resolve references: " + sError
1325
+ line: "\u2705 resolved references with contentProviderId = \"" + sContentProviderId + "\" to the following values:",
1326
+ prefix: "\u2022", // bullet point
1327
+ lines: Object.keys(oResolvedRefs).map(function (sRefName) {
1328
+ return sRefName + ": '" + oResolvedRefs[sRefName] + "'";
1329
+ })
1418
1330
  };
1419
1331
  });
1420
-
1421
- // don't continue processing, just exit with an empty result set
1422
- oDeferred.resolve([]);
1423
- });
1424
- return oReadyToRematchDeferred.promise();
1425
- }.bind(this))
1426
- .then(function (oInitialMatchWithReferencesResult) {
1427
- // re-match with resolved references
1428
- var oReferences = oInitialMatchWithReferencesResult.referencesToInclude;
1429
-
1430
- if (!oReferences) {
1431
- _StagedLogger.log(function () {
1432
- return {
1433
- logId: iLogId,
1434
- stage: 3,
1435
- line: "rematch was skipped (no references to resolve)",
1436
- prefix: "\u2705" // green checkmark
1437
- };
1438
- });
1439
- // no references, skip re-match
1440
- return new jQuery.Deferred().resolve(oInitialMatchWithReferencesResult).promise();
1441
- }
1442
-
1443
- // rematch using the set of the already matched inbounds
1444
- var aMatchResults = oInitialMatchWithReferencesResult.matchResults;
1445
- var aMatchingInbounds = aMatchResults.map(function (oMatchResult) {
1446
- return oMatchResult.inbound;
1332
+ }
1447
1333
  });
1448
-
1449
- return _Search.match(oShellHash, aMatchingInbounds, oReferences, fnGetContentProviderLookup, 0 /* iDebugLevel */).then(function (oFinalMatchResult) {
1450
- _StagedLogger.log(function () {
1451
- var aMatchResults = oFinalMatchResult.matchResults || [];
1452
- if (aMatchResults.length >= 1) {
1453
- return {
1454
- logId: iLogId,
1455
- stage: 3,
1456
- line: "The following inbounds re-matched:",
1457
- lines: aMatchResults.map(function (oMatchResult) {
1458
- return _Formatter.formatInbound(oMatchResult.inbound);
1459
- }),
1460
- prefix: "\u2705" // green checkmark
1461
- };
1462
- }
1463
-
1464
- return {
1465
- logId: iLogId,
1466
- stage: 3,
1467
- line: "No inbounds re-matched",
1468
- prefix: "-"
1469
- };
1470
- });
1471
-
1472
- return oFinalMatchResult;
1334
+ oInitialMatchWithReferencesResult = oResult;
1335
+ } catch (sError) {
1336
+ _StagedLogger.log(function () {
1337
+ return {
1338
+ logId: iLogId,
1339
+ stage: 2,
1340
+ prefix: "\u274c", // red X
1341
+ line: "Failed to resolve references: " + sError
1342
+ };
1473
1343
  });
1474
- })
1475
- .then(function (oFinalMatchResult) {
1476
- // sorting
1477
-
1478
- var aMatchResultsToSort = oFinalMatchResult.matchResults || [];
1479
- if (aMatchResultsToSort.length <= 1) {
1480
- _StagedLogger.log(function () {
1481
- return {
1482
- logId: iLogId,
1483
- stage: 4,
1484
- line: "Nothing to sort"
1485
- };
1486
- });
1487
1344
 
1488
- oDeferred.resolve(aMatchResultsToSort);
1489
- return;
1490
- }
1345
+ // don't continue processing, just exit with an empty result set
1346
+ endLogger();
1347
+ return [];
1348
+ }
1349
+ } else { // no references to resolve
1350
+ _StagedLogger.log(function () {
1351
+ return {
1352
+ logId: iLogId,
1353
+ stage: 2,
1354
+ prefix: "\u2705", // green checkmark
1355
+ line: "No need to resolve references"
1356
+ };
1357
+ });
1491
1358
 
1492
- var aSortedMatchResults = _Search.sortMatchingResultsDeterministic(oFinalMatchResult.matchResults || []);
1359
+ oInitialMatchWithReferencesResult = {
1360
+ matchResults: oInitialMatchResult.matchResults,
1361
+ referencesToInclude: null
1362
+ };
1363
+ }
1493
1364
 
1494
- _StagedLogger.log(function () {
1495
- var aLines = aSortedMatchResults.map(function (oMatchResult) {
1496
- return _Formatter.formatInbound(oMatchResult.inbound || {}) +
1497
- (oMatchResult.matchesVirtualInbound ? " (virtual)" : "")
1498
- + "\n[ Sort Criteria ] "
1499
- + "\n * 1 * sap-priority: '" + oMatchResult["sap-priority"] + "'"
1500
- + "\n * 2 * Sort string: '" + oMatchResult.priorityString
1501
- + "\n * 3 * Deterministic blob: '" + _Search.serializeMatchingResult(oMatchResult) + "'";
1502
- });
1365
+ // ========================= Stage 3 ================================
1366
+ // re-match with resolved references
1367
+ let oFinalMatchResult;
1368
+ if (oInitialMatchWithReferencesResult.referencesToInclude) {
1369
+ // rematch using the set of the already matched inbounds
1370
+ var aMatchResults = oInitialMatchWithReferencesResult.matchResults;
1371
+ var aMatchingInbounds = aMatchResults.map(function (oMatchResult) {
1372
+ return oMatchResult.inbound;
1373
+ });
1503
1374
 
1375
+ oFinalMatchResult = await _Search.match(oShellHash, aMatchingInbounds, oInitialMatchWithReferencesResult.referencesToInclude, fnGetContentProviderLookup, 0 /* iDebugLevel */);
1376
+ _StagedLogger.log(function () {
1377
+ var aMatchResults = oFinalMatchResult.matchResults || [];
1378
+ if (aMatchResults.length >= 1) {
1504
1379
  return {
1505
1380
  logId: iLogId,
1506
- stage: 4,
1507
- line: "Sorted inbounds as follows:",
1508
- lines: aLines,
1509
- prefix: ".",
1510
- number: true
1381
+ stage: 3,
1382
+ line: "The following inbounds re-matched:",
1383
+ lines: aMatchResults.map(function (oMatchResult) {
1384
+ return _Formatter.formatInbound(oMatchResult.inbound);
1385
+ }),
1386
+ prefix: "\u2705" // green checkmark
1511
1387
  };
1512
- });
1388
+ }
1513
1389
 
1514
- oDeferred.resolve(aSortedMatchResults);
1390
+ return {
1391
+ logId: iLogId,
1392
+ stage: 3,
1393
+ line: "No inbounds re-matched",
1394
+ prefix: "-"
1395
+ };
1396
+ });
1397
+ } else { // no references, skip re-match
1398
+ _StagedLogger.log(function () {
1399
+ return {
1400
+ logId: iLogId,
1401
+ stage: 3,
1402
+ line: "rematch was skipped (no references to resolve)",
1403
+ prefix: "\u2705" // green checkmark
1404
+ };
1515
1405
  });
1406
+ oFinalMatchResult = oInitialMatchWithReferencesResult;
1407
+ }
1516
1408
 
1517
- return oDeferred.promise().then(function (aMatchResults) {
1518
- // output logs before returning
1519
- _StagedLogger.end(function () {
1520
- return { logId: iLogId };
1409
+ // ========================= Stage 4 ================================
1410
+ // sorting
1411
+ var aMatchResultsToSort = oFinalMatchResult.matchResults || [];
1412
+ if (aMatchResultsToSort.length <= 1) {
1413
+ _StagedLogger.log(function () {
1414
+ return {
1415
+ logId: iLogId,
1416
+ stage: 4,
1417
+ line: "Nothing to sort"
1418
+ };
1521
1419
  });
1522
- return aMatchResults;
1420
+
1421
+ endLogger();
1422
+ return aMatchResultsToSort;
1423
+ }
1424
+
1425
+ var aSortedMatchResults = _Search.sortMatchingResultsDeterministic(oFinalMatchResult.matchResults || []);
1426
+
1427
+ _StagedLogger.log(function () {
1428
+ var aLines = aSortedMatchResults.map(function (oMatchResult) {
1429
+ return _Formatter.formatInbound(oMatchResult.inbound || {}) +
1430
+ (oMatchResult.matchesVirtualInbound ? " (virtual)" : "")
1431
+ + "\n[ Sort Criteria ] "
1432
+ + "\n * 1 * sap-priority: '" + oMatchResult["sap-priority"] + "'"
1433
+ + "\n * 2 * Sort string: '" + oMatchResult.priorityString
1434
+ + "\n * 3 * Deterministic blob: '" + _Search.serializeMatchingResult(oMatchResult) + "'";
1435
+ });
1436
+
1437
+ return {
1438
+ logId: iLogId,
1439
+ stage: 4,
1440
+ line: "Sorted inbounds as follows:",
1441
+ lines: aLines,
1442
+ prefix: ".",
1443
+ number: true
1444
+ };
1523
1445
  });
1446
+
1447
+
1448
+ endLogger();
1449
+ return aSortedMatchResults;
1524
1450
  };
1525
1451
 
1526
1452
  /**
@@ -1528,34 +1454,26 @@ sap.ui.define([
1528
1454
  *
1529
1455
  * @param {string} sIntent The intent to be matched.
1530
1456
  * @param {object} oInboundIndex The index of the inbounds to be matched.
1531
- * @returns {jQuery.Promise} Resolves with a boolean if the intent is supported and rejected if not.
1457
+ * @returns {Promise<boolean>} Resolves with a boolean if the intent is supported and rejected if not.
1532
1458
  * The promise resolves to true if only one target matches the intent, and false if multiple targets match the intent.
1533
1459
  * @private
1534
1460
  * @since 1.32.0
1535
1461
  */
1536
- ClientSideTargetResolution.prototype._isIntentSupportedOne = function (sIntent, oInboundIndex) {
1537
- var oDeferred = new jQuery.Deferred();
1462
+ ClientSideTargetResolution.prototype._isIntentSupportedOne = async function (sIntent, oInboundIndex) {
1538
1463
  var oShellHash = UrlParsing.parseShellHash(sIntent);
1539
1464
  // navigation to '#' is always considered possible
1540
1465
  if (sIntent === "#") {
1541
- oDeferred.resolve(true);
1542
- return oDeferred.promise();
1466
+ return true;
1543
1467
  }
1544
1468
  if (oShellHash === undefined) {
1545
- return oDeferred.reject("Could not parse shell hash '" + sIntent + "'").promise();
1469
+ throw new Error(`Could not parse shell hash '${sIntent}'`);
1546
1470
  }
1547
1471
 
1548
- oShellHash.formFactor = UshellUtils.getFormFactor();
1472
+ oShellHash.formFactor = ushellUtils.getFormFactor();
1549
1473
 
1550
- this._getMatchingInbounds(oShellHash, oInboundIndex, { bExcludeTileInbounds: true })
1551
- .done(function (aTargets) {
1552
- oDeferred.resolve(aTargets.length > 0);
1553
- })
1554
- .fail(function () {
1555
- oDeferred.reject();
1556
- });
1474
+ const aTargets = await this._getMatchingInbounds(oShellHash, oInboundIndex, { bExcludeTileInbounds: true });
1557
1475
 
1558
- return oDeferred.promise();
1476
+ return aTargets.length > 0;
1559
1477
  };
1560
1478
 
1561
1479
  /**
@@ -1576,62 +1494,37 @@ sap.ui.define([
1576
1494
  * @since 1.32.0
1577
1495
  */
1578
1496
  ClientSideTargetResolution.prototype.isIntentSupported = function (aIntents) {
1579
- var that = this;
1580
1497
  var oDeferred = new jQuery.Deferred();
1581
1498
 
1582
- this._oInboundProvider.getInbounds().then(
1583
- function (oInboundIndex) {
1584
- that._isIntentSupported(aIntents, oInboundIndex)
1585
- .done(oDeferred.resolve.bind(oDeferred))
1586
- .fail(oDeferred.reject.bind(oDeferred));
1587
- },
1588
- function () {
1589
- oDeferred.reject.apply(oDeferred, arguments);
1590
- }
1591
- );
1499
+ this._oInboundProvider.getInbounds()
1500
+ .then((oInboundIndex) => {
1501
+ return this._isIntentSupported(aIntents, oInboundIndex);
1502
+ })
1503
+ .then((oSupportedByIntent) => {
1504
+ oDeferred.resolve(oSupportedByIntent);
1505
+ })
1506
+ .catch((oError) => {
1507
+ oDeferred.reject(oError);
1508
+ });
1509
+
1592
1510
  return oDeferred.promise();
1593
1511
  };
1594
1512
 
1595
- ClientSideTargetResolution.prototype._isIntentSupported = function (aIntents, oInboundIndex) {
1596
- var that = this;
1597
- var oDeferred = new jQuery.Deferred();
1598
- var mSupportedByIntent = {};
1599
-
1600
- oDeferred.resolve();
1601
-
1602
- /**
1603
- * Sets the result for the given intent as indicated.
1604
- *
1605
- * @param {string} sIntent Intent string
1606
- * @param {boolean} bSupported Supported flag
1607
- */
1608
- function setResult (sIntent, bSupported) {
1609
- mSupportedByIntent[sIntent] = {
1610
- supported: bSupported
1611
- };
1612
- }
1613
-
1614
- var aRejectErrors = [];
1615
-
1616
- aIntents.forEach(function (sIntent) {
1617
- var oNextPromise = that._isIntentSupportedOne(sIntent, oInboundIndex);
1618
- oNextPromise.fail(function (sErrorMessage) {
1619
- aRejectErrors.push(sErrorMessage);
1620
- });
1621
- oNextPromise.done(function (bResult) {
1622
- setResult(sIntent, bResult);
1623
- });
1624
- oDeferred = jQuery.when(oDeferred, oNextPromise);
1625
- });
1626
-
1627
- var oRes = new jQuery.Deferred();
1628
- oDeferred.done(function () {
1629
- oRes.resolve(mSupportedByIntent);
1630
- }).fail(function () {
1631
- oRes.reject("One or more input intents contain errors: " + aRejectErrors.join(", "));
1632
- });
1513
+ ClientSideTargetResolution.prototype._isIntentSupported = async function (aIntents, oInboundIndex) {
1514
+ var oSupportedByIntent = {};
1515
+
1516
+ await Promise.all(aIntents.map(async (sIntent) => {
1517
+ try {
1518
+ const bSupported = await this._isIntentSupportedOne(sIntent, oInboundIndex);
1519
+ oSupportedByIntent[sIntent] = {
1520
+ supported: bSupported
1521
+ };
1522
+ } catch (oError) {
1523
+ throw new Error(`One or more input intents contain errors: ${oError}`);
1524
+ }
1525
+ }));
1633
1526
 
1634
- return oRes.promise();
1527
+ return oSupportedByIntent;
1635
1528
  };
1636
1529
 
1637
1530
  /**
@@ -1659,26 +1552,19 @@ sap.ui.define([
1659
1552
  */
1660
1553
  ClientSideTargetResolution.prototype.getUserDefaultParameterNames = function (oSystemContext) {
1661
1554
  // the empty objects may in future bear information like sap-system relevance
1662
- var that = this;
1663
1555
  var oDeferred = new jQuery.Deferred();
1664
1556
 
1665
- this._oInboundProvider.getInbounds().then(
1557
+ this._oInboundProvider.getInbounds()
1558
+ .then((oInboundIndex) => {
1559
+ return this._getUserDefaultParameterNames(oInboundIndex.getAllInbounds(), oSystemContext);
1560
+ })
1561
+ .then((oRefs) => {
1562
+ oDeferred.resolve(oRefs);
1563
+ })
1564
+ .catch((oError) => {
1565
+ oDeferred.reject(oError);
1566
+ });
1666
1567
 
1667
- function (oInboundIndex) {
1668
- that._getUserDefaultParameterNames(oInboundIndex.getAllInbounds(), oSystemContext)
1669
- .then(
1670
- function (oRef) {
1671
- oDeferred.resolve(oRef);
1672
- },
1673
- function (e) {
1674
- oDeferred.reject("Cannot get user default parameters from inbounds: " + e);
1675
- }
1676
- );
1677
- },
1678
- function () {
1679
- oDeferred.reject.apply(oDeferred, arguments);
1680
- }
1681
- );
1682
1568
  return oDeferred.promise();
1683
1569
  };
1684
1570
 
@@ -1694,7 +1580,7 @@ sap.ui.define([
1694
1580
  }
1695
1581
  return oInb.contentProviderId === oSystemContext.id;
1696
1582
  });
1697
- return sap.ushell.Container.getServiceAsync("ReferenceResolver").then(function (oRefResolverService) {
1583
+ return Container.getServiceAsync("ReferenceResolver").then(function (oRefResolverService) {
1698
1584
  aInbounds.forEach(function (oTm) {
1699
1585
  var oSignatureParams = oTm.signature && oTm.signature.parameters || [];
1700
1586
 
@@ -1774,8 +1660,8 @@ sap.ui.define([
1774
1660
  if (this._oHaveEasyAccessSystemsDeferreds[sMenuType]) {
1775
1661
  return this._oHaveEasyAccessSystemsDeferreds[sMenuType].promise();
1776
1662
  }
1777
- this._oHaveEasyAccessSystemsDeferreds[sMenuType] = new jQuery.Deferred();
1778
- var oDeferred = this._oHaveEasyAccessSystemsDeferreds[sMenuType]; // shorter name
1663
+ var oDeferred = new jQuery.Deferred();
1664
+ this._oHaveEasyAccessSystemsDeferreds[sMenuType] = oDeferred;
1779
1665
 
1780
1666
  function isValidEasyAccessMenuInbound (oInbound, sCurrentFormFactor, oValidMenuTypeIntents) {
1781
1667
  if (!oInbound) {
@@ -1812,62 +1698,62 @@ sap.ui.define([
1812
1698
  }, {})
1813
1699
  };
1814
1700
 
1815
- this._oInboundProvider.getInbounds().then(
1816
- function (oInboundIndex) { // all inbounds, no segments
1701
+ this._oInboundProvider.getInbounds()
1702
+ .then((oInboundIndex) => { // all inbounds, no segments
1817
1703
  var oLastPriorityPerSystem = {};
1818
1704
 
1819
- oInboundIndex.getAllInbounds().filter(function (oInbound) {
1820
- return isValidEasyAccessMenuInbound(
1821
- oInbound, UshellUtils.getFormFactor(), oValidMenuTypeIntents
1822
- );
1823
- }).forEach(function (oEasyAccessInbound) {
1824
- // extract the data for the easy access system list
1825
- var sSystemAliasName;
1826
- if (fnIsPlainObject(oEasyAccessInbound.signature.parameters["sap-system"]) &&
1827
- oEasyAccessInbound.signature.parameters["sap-system"].hasOwnProperty("filter")) {
1828
- sSystemAliasName = ObjectPath.get("signature.parameters.sap-system.filter.value", oEasyAccessInbound);
1829
- }
1830
-
1831
- if (typeof sSystemAliasName === "string") {
1832
- /*
1833
- * Code below builds the set of easy access system that should be displayed in the sapMenu/userMenu.
1834
- * In case multiple inbounds exist with a certain system,
1835
- * the app type with the highest priority is used to choose the title (see oActionDefinitions above).
1836
- * Note that other app types should still appear in the result set (see 'appType' in the example result from jsdoc).
1837
- */
1838
- var iCurrentActionPriority = oActionDefinitions[oEasyAccessInbound.action].priority;
1839
- var sCurrentActionAppType = oActionDefinitions[oEasyAccessInbound.action].appType;
1840
-
1841
- if (!oResultEasyAccessSystemSet[sSystemAliasName]) {
1842
- // provide base structure...
1843
- oLastPriorityPerSystem[sSystemAliasName] = -1;
1844
- oResultEasyAccessSystemSet[sSystemAliasName] = {
1845
- appType: {}
1846
- };
1705
+ oInboundIndex.getAllInbounds()
1706
+ .filter(function (oInbound) {
1707
+ return isValidEasyAccessMenuInbound(oInbound, ushellUtils.getFormFactor(), oValidMenuTypeIntents);
1708
+ })
1709
+ .forEach(function (oEasyAccessInbound) {
1710
+ // extract the data for the easy access system list
1711
+ var sSystemAliasName;
1712
+ if (fnIsPlainObject(oEasyAccessInbound.signature.parameters["sap-system"]) &&
1713
+ oEasyAccessInbound.signature.parameters["sap-system"].hasOwnProperty("filter")) {
1714
+ sSystemAliasName = ObjectPath.get("signature.parameters.sap-system.filter.value", oEasyAccessInbound);
1847
1715
  }
1848
1716
 
1849
- if (oLastPriorityPerSystem[sSystemAliasName] < iCurrentActionPriority) {
1850
- // ...then populate in case
1851
- oResultEasyAccessSystemSet[sSystemAliasName].text = oEasyAccessInbound.title;
1852
- oLastPriorityPerSystem[sSystemAliasName] = iCurrentActionPriority;
1853
- }
1717
+ if (typeof sSystemAliasName === "string") {
1718
+ /*
1719
+ * Code below builds the set of easy access system that should be displayed in the sapMenu/userMenu.
1720
+ * In case multiple inbounds exist with a certain system,
1721
+ * the app type with the highest priority is used to choose the title (see oActionDefinitions above).
1722
+ * Note that other app types should still appear in the result set (see 'appType' in the example result from jsdoc).
1723
+ */
1724
+ var iCurrentActionPriority = oActionDefinitions[oEasyAccessInbound.action].priority;
1725
+ var sCurrentActionAppType = oActionDefinitions[oEasyAccessInbound.action].appType;
1726
+
1727
+ if (!oResultEasyAccessSystemSet[sSystemAliasName]) {
1728
+ // provide base structure...
1729
+ oLastPriorityPerSystem[sSystemAliasName] = -1;
1730
+ oResultEasyAccessSystemSet[sSystemAliasName] = {
1731
+ appType: {}
1732
+ };
1733
+ }
1854
1734
 
1855
- // keep track of all the app types
1856
- oResultEasyAccessSystemSet[sSystemAliasName].appType[sCurrentActionAppType] = true;
1857
- } else {
1858
- Log.warning(
1859
- "Cannot extract sap-system from easy access menu inbound: " + _Formatter.formatInbound(oEasyAccessInbound),
1860
- "This parameter is supposed to be a string. Got '" + sSystemAliasName + "' instead.",
1861
- "sap.ushell.services.ClientSideTargetResolution"
1862
- );
1863
- }
1864
- });
1735
+ if (oLastPriorityPerSystem[sSystemAliasName] < iCurrentActionPriority) {
1736
+ // ...then populate in case
1737
+ oResultEasyAccessSystemSet[sSystemAliasName].text = oEasyAccessInbound.title;
1738
+ oLastPriorityPerSystem[sSystemAliasName] = iCurrentActionPriority;
1739
+ }
1740
+
1741
+ // keep track of all the app types
1742
+ oResultEasyAccessSystemSet[sSystemAliasName].appType[sCurrentActionAppType] = true;
1743
+ } else {
1744
+ Log.warning(
1745
+ "Cannot extract sap-system from easy access menu inbound: " + _Formatter.formatInbound(oEasyAccessInbound),
1746
+ "This parameter is supposed to be a string. Got '" + sSystemAliasName + "' instead.",
1747
+ "sap.ushell.services.ClientSideTargetResolution"
1748
+ );
1749
+ }
1750
+ });
1865
1751
  oDeferred.resolve(oResultEasyAccessSystemSet);
1866
- },
1867
- function () {
1868
- oDeferred.reject.apply(oDeferred, arguments);
1869
- }
1870
- );
1752
+ })
1753
+ .catch((oError) => {
1754
+ oDeferred.reject(oError);
1755
+ });
1756
+
1871
1757
  return oDeferred.promise();
1872
1758
  };
1873
1759
 
@@ -1888,20 +1774,14 @@ sap.ui.define([
1888
1774
  * @private
1889
1775
  * @since 1.78.0
1890
1776
  */
1891
- ClientSideTargetResolution.prototype.getSystemContext = function (systemId) {
1777
+ ClientSideTargetResolution.prototype.getSystemContext = async function (systemId) {
1892
1778
  var sSystemId = systemId === undefined ? "" : systemId;
1893
1779
 
1894
- return new Promise(function (resolve, reject) {
1895
- var oSystemContext;
1896
- this._oAdapter.resolveSystemAlias(sSystemId)
1897
- .done(function (oResolvedSystemAlias) {
1898
- oSystemContext = _SystemContext.createSystemContextFromSystemAlias(oResolvedSystemAlias);
1899
- resolve(oSystemContext);
1900
- })
1901
- .fail(function (oError) {
1902
- reject(oError);
1903
- });
1904
- }.bind(this));
1780
+ const oResolvedSystemAlias = await ushellUtils.promisify(this._oAdapter.resolveSystemAlias(sSystemId));
1781
+
1782
+ const oSystemContext = _SystemContext.createSystemContextFromSystemAlias(oResolvedSystemAlias);
1783
+
1784
+ return oSystemContext;
1905
1785
  };
1906
1786
 
1907
1787
  ClientSideTargetResolution.hasNoAdapter = false;