@openui5/sap.ui.core 1.115.1 → 1.117.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 (685) hide show
  1. package/.dtsgenrc +18 -0
  2. package/.eslintrc.json +1 -11
  3. package/.reuse/dep5 +0 -5
  4. package/THIRDPARTY.txt +1 -7
  5. package/package.json +1 -1
  6. package/src/jquery.sap.global.js +1 -1
  7. package/src/jquery.sap.properties.js +1 -1
  8. package/src/jquery.sap.resources.js +1 -1
  9. package/src/jquery.sap.script.js +1 -1
  10. package/src/jquery.sap.sjax.js +2 -2
  11. package/src/jquery.sap.storage.js +3 -3
  12. package/src/sap/base/Event.js +106 -0
  13. package/src/sap/base/Eventing.js +319 -0
  14. package/src/sap/base/config/MemoryConfigurationProvider.js +10 -1
  15. package/src/sap/base/config.js +3 -2
  16. package/src/sap/base/i18n/Formatting.js +989 -0
  17. package/src/sap/base/i18n/LanguageTag.js +189 -0
  18. package/src/sap/base/i18n/Localization.js +710 -0
  19. package/src/sap/base/i18n/ResourceBundle.js +5 -20
  20. package/src/sap/base/i18n/date/CalendarType.js +54 -0
  21. package/src/sap/base/i18n/date/CalendarWeekNumbering.js +105 -0
  22. package/src/sap/base/i18n/date/TimezoneUtils.js +287 -0
  23. package/src/sap/base/util/JSTokenizer.js +1 -1
  24. package/src/sap/base/util/fetch.js +4 -4
  25. package/src/sap/base/util/mixedFetch.js +2 -2
  26. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  27. package/src/sap/base/util/restricted/_castArray.js +1 -1
  28. package/src/sap/base/util/restricted/_compact.js +1 -1
  29. package/src/sap/base/util/restricted/_curry.js +1 -1
  30. package/src/sap/base/util/restricted/_debounce.js +1 -1
  31. package/src/sap/base/util/restricted/_difference.js +1 -1
  32. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  33. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  34. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  35. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  36. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  37. package/src/sap/base/util/restricted/_flatten.js +1 -1
  38. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  39. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  40. package/src/sap/base/util/restricted/_intersection.js +1 -1
  41. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  42. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  43. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  44. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  45. package/src/sap/base/util/restricted/_isNil.js +1 -1
  46. package/src/sap/base/util/restricted/_max.js +1 -1
  47. package/src/sap/base/util/restricted/_merge.js +1 -1
  48. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  49. package/src/sap/base/util/restricted/_min.js +1 -1
  50. package/src/sap/base/util/restricted/_omit.js +1 -1
  51. package/src/sap/base/util/restricted/_pick.js +1 -1
  52. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  53. package/src/sap/base/util/restricted/_throttle.js +1 -1
  54. package/src/sap/base/util/restricted/_toArray.js +1 -1
  55. package/src/sap/base/util/restricted/_union.js +1 -1
  56. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  57. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  58. package/src/sap/base/util/restricted/_uniq.js +1 -1
  59. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  60. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  61. package/src/sap/base/util/restricted/_without.js +1 -1
  62. package/src/sap/base/util/restricted/_xor.js +1 -1
  63. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  64. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  65. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  66. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  67. package/src/sap/base/util/syncFetch.js +2 -2
  68. package/src/sap/ui/Device.js +3 -3
  69. package/src/sap/ui/Global.js +4 -4
  70. package/src/sap/ui/base/Event.js +6 -4
  71. package/src/sap/ui/base/EventProvider.js +4 -12
  72. package/src/sap/ui/base/Interface.js +1 -1
  73. package/src/sap/ui/base/ManagedObject.js +9 -15
  74. package/src/sap/ui/base/ManagedObjectMetadata.js +33 -12
  75. package/src/sap/ui/base/Metadata.js +1 -1
  76. package/src/sap/ui/base/Object.js +1 -1
  77. package/src/sap/ui/base/ObjectPool.js +1 -1
  78. package/src/sap/ui/base/SyncPromise.js +10 -5
  79. package/src/sap/ui/core/.library +3 -3
  80. package/src/sap/ui/core/AccessKeysEnablement.js +10 -5
  81. package/src/sap/ui/core/AnimationMode.js +49 -0
  82. package/src/sap/ui/core/BusyIndicator.js +33 -42
  83. package/src/sap/ui/core/CalendarType.js +11 -37
  84. package/src/sap/ui/core/Component.js +4 -5
  85. package/src/sap/ui/core/ComponentContainer.js +1 -1
  86. package/src/sap/ui/core/ComponentMetadata.js +2 -2
  87. package/src/sap/ui/core/ComponentSupport.js +1 -1
  88. package/src/sap/ui/core/ConfigTest.js +17 -0
  89. package/src/sap/ui/core/Configuration.js +409 -1282
  90. package/src/sap/ui/core/Control.js +7 -12
  91. package/src/sap/ui/core/ControlBehavior.js +157 -0
  92. package/src/sap/ui/core/Core.js +126 -132
  93. package/src/sap/ui/core/CustomData.js +1 -1
  94. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  95. package/src/sap/ui/core/Element.js +14 -3
  96. package/src/sap/ui/core/ElementMetadata.js +2 -4
  97. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  98. package/src/sap/ui/core/EventBus.js +1 -1
  99. package/src/sap/ui/core/Fragment.js +1 -1
  100. package/src/sap/ui/core/HTML.js +1 -1
  101. package/src/sap/ui/core/History.js +1 -1
  102. package/src/sap/ui/core/Icon.js +1 -1
  103. package/src/sap/ui/core/IconPool.js +1 -2
  104. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  105. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  106. package/src/sap/ui/core/InvisibleMessage.js +5 -7
  107. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  108. package/src/sap/ui/core/InvisibleText.js +12 -12
  109. package/src/sap/ui/core/Item.js +1 -1
  110. package/src/sap/ui/core/LabelEnablement.js +1 -1
  111. package/src/sap/ui/core/LayoutData.js +1 -1
  112. package/src/sap/ui/core/Lib.js +126 -38
  113. package/src/sap/ui/core/ListItem.js +1 -1
  114. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  115. package/src/sap/ui/core/Locale.js +154 -430
  116. package/src/sap/ui/core/LocaleData.js +50 -14
  117. package/src/sap/ui/core/Manifest.js +5 -5
  118. package/src/sap/ui/core/Message.js +1 -1
  119. package/src/sap/ui/core/Popup.js +37 -50
  120. package/src/sap/ui/core/RenderManager.js +1 -1
  121. package/src/sap/ui/core/Renderer.js +1 -1
  122. package/src/sap/ui/core/Rendering.js +1 -1
  123. package/src/sap/ui/core/ResizeHandler.js +1 -1
  124. package/src/sap/ui/core/ScrollBar.js +1 -1
  125. package/src/sap/ui/core/SeparatorItem.js +1 -1
  126. package/src/sap/ui/core/Shortcut.js +11 -9
  127. package/src/sap/ui/core/StaticArea.js +31 -17
  128. package/src/sap/ui/core/Theming.js +458 -0
  129. package/src/sap/ui/core/Title.js +1 -1
  130. package/src/sap/ui/core/TooltipBase.js +1 -1
  131. package/src/sap/ui/core/UIArea.js +1 -1
  132. package/src/sap/ui/core/UIComponent.js +1 -1
  133. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  134. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  135. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  136. package/src/sap/ui/core/XMLComposite.js +1 -1
  137. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  138. package/src/sap/ui/core/XMLTemplateProcessor.js +28 -5
  139. package/src/sap/ui/core/_IconRegistry.js +89 -12
  140. package/src/sap/ui/core/boot/_bootConfig.js +137 -0
  141. package/src/sap/ui/core/boot/_runBoot.js +16 -0
  142. package/src/sap/ui/core/boot/initDOM.js +96 -0
  143. package/src/sap/ui/core/boot/loadCalendar.js +50 -0
  144. package/src/sap/ui/core/boot/loadManifest.js +55 -0
  145. package/src/sap/ui/core/boot/loadModules.js +80 -0
  146. package/src/sap/ui/core/boot/manifest.json +11 -0
  147. package/src/sap/ui/core/boot/onInit.js +44 -0
  148. package/src/sap/ui/core/boot.js +107 -0
  149. package/src/sap/ui/core/date/CalendarWeekNumbering.js +12 -83
  150. package/src/sap/ui/core/date/UI5Date.js +10 -4
  151. package/src/sap/ui/core/delegate/ItemNavigation.js +8 -10
  152. package/src/sap/ui/core/delegate/ScrollEnablement.js +5 -5
  153. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  154. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  155. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  156. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  157. package/src/sap/ui/core/format/DateFormat.js +33 -27
  158. package/src/sap/ui/core/format/TimezoneUtil.js +15 -273
  159. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  160. package/src/sap/ui/core/library.js +32 -6
  161. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  162. package/src/sap/ui/core/message/Message.js +1 -1
  163. package/src/sap/ui/core/message/MessageManager.js +1 -1
  164. package/src/sap/ui/core/message/MessageMixin.js +6 -5
  165. package/src/sap/ui/core/message/MessageParser.js +1 -1
  166. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  167. package/src/sap/ui/core/messagebundle_ar.properties +57 -55
  168. package/src/sap/ui/core/messagebundle_bg.properties +57 -55
  169. package/src/sap/ui/core/messagebundle_ca.properties +30 -28
  170. package/src/sap/ui/core/messagebundle_cs.properties +44 -42
  171. package/src/sap/ui/core/messagebundle_cy.properties +59 -57
  172. package/src/sap/ui/core/messagebundle_da.properties +57 -55
  173. package/src/sap/ui/core/messagebundle_de.properties +59 -57
  174. package/src/sap/ui/core/messagebundle_el.properties +48 -46
  175. package/src/sap/ui/core/messagebundle_en.properties +59 -57
  176. package/src/sap/ui/core/messagebundle_en_GB.properties +59 -57
  177. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +2 -0
  178. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +2 -0
  179. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +3 -0
  180. package/src/sap/ui/core/messagebundle_es.properties +48 -46
  181. package/src/sap/ui/core/messagebundle_es_MX.properties +58 -56
  182. package/src/sap/ui/core/messagebundle_et.properties +55 -53
  183. package/src/sap/ui/core/messagebundle_fi.properties +51 -49
  184. package/src/sap/ui/core/messagebundle_fr.properties +36 -34
  185. package/src/sap/ui/core/messagebundle_fr_CA.properties +21 -19
  186. package/src/sap/ui/core/messagebundle_hi.properties +42 -40
  187. package/src/sap/ui/core/messagebundle_hr.properties +57 -55
  188. package/src/sap/ui/core/messagebundle_hu.properties +58 -56
  189. package/src/sap/ui/core/messagebundle_id.properties +59 -57
  190. package/src/sap/ui/core/messagebundle_it.properties +75 -73
  191. package/src/sap/ui/core/messagebundle_iw.properties +59 -57
  192. package/src/sap/ui/core/messagebundle_ja.properties +50 -48
  193. package/src/sap/ui/core/messagebundle_kk.properties +44 -42
  194. package/src/sap/ui/core/messagebundle_ko.properties +20 -18
  195. package/src/sap/ui/core/messagebundle_lt.properties +59 -57
  196. package/src/sap/ui/core/messagebundle_lv.properties +59 -57
  197. package/src/sap/ui/core/messagebundle_ms.properties +60 -58
  198. package/src/sap/ui/core/messagebundle_nl.properties +58 -56
  199. package/src/sap/ui/core/messagebundle_no.properties +56 -54
  200. package/src/sap/ui/core/messagebundle_pl.properties +56 -54
  201. package/src/sap/ui/core/messagebundle_pt.properties +58 -56
  202. package/src/sap/ui/core/messagebundle_pt_PT.properties +58 -56
  203. package/src/sap/ui/core/messagebundle_ro.properties +59 -57
  204. package/src/sap/ui/core/messagebundle_ru.properties +57 -55
  205. package/src/sap/ui/core/messagebundle_sh.properties +59 -57
  206. package/src/sap/ui/core/messagebundle_sk.properties +57 -55
  207. package/src/sap/ui/core/messagebundle_sl.properties +58 -56
  208. package/src/sap/ui/core/messagebundle_sv.properties +54 -52
  209. package/src/sap/ui/core/messagebundle_th.properties +18 -16
  210. package/src/sap/ui/core/messagebundle_tr.properties +58 -56
  211. package/src/sap/ui/core/messagebundle_uk.properties +59 -57
  212. package/src/sap/ui/core/messagebundle_vi.properties +59 -57
  213. package/src/sap/ui/core/messagebundle_zh_CN.properties +58 -56
  214. package/src/sap/ui/core/messagebundle_zh_TW.properties +58 -56
  215. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  216. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  217. package/src/sap/ui/core/mvc/JSView.js +1 -1
  218. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  219. package/src/sap/ui/core/mvc/View.js +1 -1
  220. package/src/sap/ui/core/mvc/XMLView.js +14 -2
  221. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  222. package/src/sap/ui/core/plugin/LessSupport.js +14 -16
  223. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  224. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  225. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  226. package/src/sap/ui/core/routing/HashChanger.js +1 -0
  227. package/src/sap/ui/core/routing/Route.js +1 -0
  228. package/src/sap/ui/core/routing/Router.js +3 -1
  229. package/src/sap/ui/core/rules/Config.support.js +2 -2
  230. package/src/sap/ui/core/rules/Misc.support.js +1 -1
  231. package/src/sap/ui/core/rules/Model.support.js +3 -1
  232. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  233. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  234. package/src/sap/ui/core/service/Service.js +1 -1
  235. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  236. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  237. package/src/sap/ui/core/support/Plugin.js +1 -1
  238. package/src/sap/ui/core/support/Support.js +7 -4
  239. package/src/sap/ui/core/support/controls/TimelineOverview.js +1 -1
  240. package/src/sap/ui/core/support/plugins/ControlTree.js +2 -2
  241. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  242. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  243. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  244. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  245. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  246. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  247. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  248. package/src/sap/ui/core/themes/base/Icon.less +2 -2
  249. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +4 -4
  250. package/src/sap/ui/core/themes/base/base.less +41 -20
  251. package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
  252. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  253. package/src/sap/ui/core/theming/Parameters.js +6 -10
  254. package/src/sap/ui/core/theming/ThemeManager.js +312 -450
  255. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  256. package/src/sap/ui/core/tmpl/DOMElement.js +5 -10
  257. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  258. package/src/sap/ui/core/tmpl/Template.js +1 -1
  259. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  260. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  261. package/src/sap/ui/core/util/Export.js +1 -1
  262. package/src/sap/ui/core/util/ExportCell.js +1 -1
  263. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  264. package/src/sap/ui/core/util/ExportRow.js +1 -1
  265. package/src/sap/ui/core/util/ExportType.js +1 -1
  266. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  267. package/src/sap/ui/core/util/File.js +1 -1
  268. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  269. package/src/sap/ui/core/util/MockServer.js +4 -5
  270. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  271. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +3 -1
  272. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  273. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  274. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  275. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  276. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  277. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  278. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  279. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  280. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  281. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  282. package/src/sap/ui/debug/ControlTree.js +1 -1
  283. package/src/sap/ui/debug/DebugEnv.js +1 -1
  284. package/src/sap/ui/debug/PropertyList.js +1 -1
  285. package/src/sap/ui/events/PseudoEvents.js +17 -9
  286. package/src/sap/ui/model/Binding.js +19 -15
  287. package/src/sap/ui/model/ClientModel.js +1 -1
  288. package/src/sap/ui/model/CompositeBinding.js +57 -19
  289. package/src/sap/ui/model/CompositeDataState.js +1 -1
  290. package/src/sap/ui/model/CompositeType.js +1 -1
  291. package/src/sap/ui/model/DataState.js +1 -1
  292. package/src/sap/ui/model/ListBinding.js +42 -1
  293. package/src/sap/ui/model/MetaModel.js +1 -1
  294. package/src/sap/ui/model/Model.js +5 -4
  295. package/src/sap/ui/model/PropertyBinding.js +10 -0
  296. package/src/sap/ui/model/SelectionModel.js +1 -1
  297. package/src/sap/ui/model/SimpleType.js +4 -1
  298. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  299. package/src/sap/ui/model/Type.js +1 -1
  300. package/src/sap/ui/model/analytics/AnalyticalBinding.js +166 -79
  301. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +4 -3
  302. package/src/sap/ui/model/analytics/BatchResponseCollector.js +2 -2
  303. package/src/sap/ui/model/analytics/ODataModelAdapter.js +14 -27
  304. package/src/sap/ui/model/analytics/odata4analytics.js +6 -12
  305. package/src/sap/ui/model/base/ManagedObjectModel.js +3 -2
  306. package/src/sap/ui/model/json/JSONModel.js +6 -1
  307. package/src/sap/ui/model/message/MessageModel.js +1 -1
  308. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  309. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  310. package/src/sap/ui/model/odata/ODataMetaModel.js +191 -5
  311. package/src/sap/ui/model/odata/ODataMetadata.js +38 -4
  312. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  313. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  314. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  315. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  316. package/src/sap/ui/model/odata/type/Date.js +1 -1
  317. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  318. package/src/sap/ui/model/odata/type/DateTimeBase.js +8 -1
  319. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  320. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  321. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  322. package/src/sap/ui/model/odata/type/Double.js +1 -1
  323. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  324. package/src/sap/ui/model/odata/type/Int.js +1 -1
  325. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  326. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  327. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  328. package/src/sap/ui/model/odata/type/ODataType.js +3 -3
  329. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  330. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  331. package/src/sap/ui/model/odata/type/Single.js +1 -1
  332. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  333. package/src/sap/ui/model/odata/type/String.js +1 -1
  334. package/src/sap/ui/model/odata/type/Time.js +1 -1
  335. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  336. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  337. package/src/sap/ui/model/odata/v2/Context.js +3 -2
  338. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  339. package/src/sap/ui/model/odata/v2/ODataListBinding.js +14 -3
  340. package/src/sap/ui/model/odata/v2/ODataModel.js +46 -32
  341. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  342. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +4 -4
  343. package/src/sap/ui/model/odata/v4/Context.js +39 -32
  344. package/src/sap/ui/model/odata/v4/ODataBinding.js +85 -52
  345. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +23 -19
  346. package/src/sap/ui/model/odata/v4/ODataListBinding.js +139 -50
  347. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +30 -36
  348. package/src/sap/ui/model/odata/v4/ODataModel.js +49 -44
  349. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +72 -37
  350. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +34 -29
  351. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +95 -9
  352. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +25 -27
  353. package/src/sap/ui/model/odata/v4/lib/_Cache.js +95 -209
  354. package/src/sap/ui/model/odata/v4/lib/_Helper.js +168 -1
  355. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +14 -5
  356. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +34 -19
  357. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +4 -4
  358. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
  359. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  360. package/src/sap/ui/model/type/Boolean.js +1 -1
  361. package/src/sap/ui/model/type/Currency.js +1 -1
  362. package/src/sap/ui/model/type/Date.js +1 -1
  363. package/src/sap/ui/model/type/DateInterval.js +1 -1
  364. package/src/sap/ui/model/type/DateTime.js +1 -1
  365. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  366. package/src/sap/ui/model/type/FileSize.js +1 -1
  367. package/src/sap/ui/model/type/Float.js +1 -1
  368. package/src/sap/ui/model/type/Integer.js +1 -1
  369. package/src/sap/ui/model/type/String.js +1 -1
  370. package/src/sap/ui/model/type/Time.js +1 -1
  371. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  372. package/src/sap/ui/model/type/Unit.js +1 -1
  373. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  374. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  375. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  376. package/src/sap/ui/test/Opa5.js +1 -1
  377. package/src/sap/ui/test/TestUtils.js +1 -1
  378. package/src/sap/ui/test/autowaiter/_autoWaiter.js +1 -1
  379. package/src/sap/ui/test/generic/TestBase.js +1 -1
  380. package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +1 -3
  381. package/src/sap/ui/test/gherkin/simpleGherkinParser.js +10 -5
  382. package/src/sap/ui/test/matchers/LabelFor.js +1 -0
  383. package/src/sap/ui/test/matchers/_Visitor.js +6 -1
  384. package/src/sap/ui/test/starter/_setupAndStart.js +2 -5
  385. package/src/sap/ui/thirdparty/caja-html-sanitizer.js +111 -96
  386. package/src/sap/ui/thirdparty/qunit-2.js +9 -3
  387. package/src/sap/ui/util/ActivityDetection.js +7 -1
  388. package/src/sap/ui/util/Mobile.js +21 -14
  389. package/src/sap/ui/util/Storage.js +1 -1
  390. package/src/sap-ui-boot.js +23 -6
  391. package/src/ui5-boot.js +50 -0
  392. package/src/ui5loader-autoconfig.js +150 -75
  393. package/src/ui5loader.js +458 -514
  394. package/test/sap/ui/core/Device.js +1 -1
  395. package/test/sap/ui/core/FormatHelper.js +3 -2
  396. package/test/sap/ui/core/demokit/docuindex.json +6 -0
  397. package/test/sap/ui/core/demokit/sample/OpaAction/applicationUnderTest/view/Main.view.xml +1 -0
  398. package/test/sap/ui/core/demokit/sample/OpaBusyIndicator/OpaBusyIndicator.js +1 -1
  399. package/test/sap/ui/core/demokit/sample/OpaMatchers/OpaMatchers.js +2 -2
  400. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/MIT.ODataTypes.html +9 -14
  401. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Opa.qunit.js +7 -0
  402. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Template.controller.js +2 -2
  403. package/test/sap/ui/core/demokit/sample/common/pages/Any.js +1 -1
  404. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +24 -5
  405. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.view.xml +24 -6
  406. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.view.xml +20 -5
  407. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.js +2 -1
  408. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/tests/filter.js +2 -2
  409. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Component.js +27 -0
  410. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ListReport.controller.js +43 -0
  411. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ListReport.view.xml +47 -0
  412. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Main.controller.js +27 -0
  413. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Main.view.xml +7 -0
  414. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/NotFound.view.xml +8 -0
  415. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ObjectPage.controller.js +123 -0
  416. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ObjectPage.view.xml +92 -0
  417. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.html +27 -0
  418. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.js +70 -0
  419. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/README.html +55 -0
  420. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/SandboxModel.js +56 -0
  421. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/POST-SalesOrderList.json +66 -0
  422. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList('0500000000')-SO_2_SOITEM.json +57 -0
  423. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList('0500000000').json +20 -0
  424. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList('0500000001').json +9 -0
  425. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList('0500000007')-SO_2_BP.json +12 -0
  426. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList.json +62 -0
  427. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/VH_CurrencyCode.json +85 -0
  428. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/VH_CurrencyCode.xml +185 -0
  429. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/VH_ProductID.json +93 -0
  430. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/VH_ProductID.xml +262 -0
  431. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/metadata.xml +1779 -0
  432. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/manifest.json +134 -0
  433. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/pages/Main.js +119 -0
  434. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.js +2 -1
  435. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.js +2 -1
  436. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.view.xml +4 -1
  437. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.js +2 -1
  438. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/GridTable.view.xml +12 -3
  439. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +2 -1
  440. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +2 -1
  441. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.js +2 -1
  442. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.js +2 -1
  443. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.js +2 -1
  444. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +2 -1
  445. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/pages/Main.js +0 -41
  446. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.js +2 -1
  447. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +26 -8
  448. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +4 -0
  449. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.js +2 -1
  450. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/manifest.json +1 -1
  451. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.js +2 -1
  452. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/manifest.json +1 -1
  453. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.controller.js +5 -17
  454. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.js +2 -1
  455. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/pages/Main.js +18 -0
  456. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/Create.js +10 -6
  457. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.js +2 -1
  458. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/manifest.json +18 -0
  459. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.js +2 -1
  460. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Main.view.xml +3 -3
  461. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.js +2 -1
  462. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/pages/Main.js +4 -1
  463. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.js +2 -1
  464. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/controller/App.controller.js +1 -6
  465. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/localService/mockserver.js +1 -0
  466. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/controller/App.controller.js +1 -6
  467. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/localService/mockserver.js +1 -0
  468. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/controller/App.controller.js +1 -6
  469. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/localService/mockserver.js +1 -0
  470. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/arrangements/Startup.js +1 -1
  471. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/controller/App.controller.js +1 -6
  472. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/localService/mockserver.js +1 -0
  473. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/controller/App.controller.js +3 -8
  474. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/localService/mockserver.js +1 -0
  475. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/controller/App.controller.js +3 -8
  476. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/localService/mockserver.js +1 -0
  477. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/arrangements/Startup.js +1 -1
  478. package/test/sap/ui/core/qunit/CompositeBinding.qunit.js +25 -7
  479. package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +86 -2
  480. package/test/sap/ui/core/qunit/DataState.qunit.js +2 -7
  481. package/test/sap/ui/core/qunit/HTML.qunit.js +31 -31
  482. package/test/sap/ui/core/qunit/IconPool.qunit.js +53 -4
  483. package/test/sap/ui/core/qunit/Lib.qunit.js +55 -2
  484. package/test/sap/ui/core/qunit/LocalBusyIndicator.qunit.js +22 -15
  485. package/test/sap/ui/core/qunit/ManagedObject.qunit.js +5 -3
  486. package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +43 -5
  487. package/test/sap/ui/core/qunit/Object.qunit.js +4 -1
  488. package/test/sap/ui/core/qunit/ThemeManager.qunit.js +2 -2
  489. package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +9 -3
  490. package/test/sap/ui/core/qunit/Theming.beforeBootstrap.qunit.js +13 -0
  491. package/test/sap/ui/core/qunit/Theming.qunit.js +247 -0
  492. package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +510 -185
  493. package/test/sap/ui/core/qunit/analytics/AnalyticalTreeBindingAdapter.qunit.js +2 -7
  494. package/test/sap/ui/core/qunit/analytics/ODataModelAdapter.qunit.js +81 -16
  495. package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +20 -29
  496. package/test/sap/ui/core/qunit/app/MessageListBinding.qunit.js +2 -7
  497. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +18 -1
  498. package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.html +24 -0
  499. package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.js +277 -0
  500. package/test/sap/ui/core/qunit/base/i18n/Localization.qunit.js +282 -0
  501. package/test/sap/ui/core/qunit/base/i18n/ResourceBundle.qunit.js +5 -6
  502. package/test/sap/ui/core/qunit/base/security/sanitizeHTML.qunit.js +17 -0
  503. package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +1 -2
  504. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomBootTask.beforeBootstrap.qunit.js +13 -12
  505. package/test/sap/ui/core/qunit/bootstrap/Configuration.main.qunit.js +11 -0
  506. package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.html +4 -3
  507. package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.js +451 -281
  508. package/test/sap/ui/core/qunit/bootstrap/ThemeVersion.qunit.js +19 -30
  509. package/test/sap/ui/core/qunit/component/Models.qunit.js +12 -30
  510. package/test/sap/ui/core/qunit/component/Models_unavoidablySync.qunit.js +8 -26
  511. package/test/sap/ui/core/qunit/component/testdata/async/lib2/library-preload.js +2 -2
  512. package/test/sap/ui/core/qunit/component/testdata/async/lib2/library-preload.json +1 -1
  513. package/test/sap/ui/core/qunit/component/testdata/async/lib2/library.js +2 -2
  514. package/test/sap/ui/core/qunit/component/testdata/async/lib3/library-preload.js +2 -2
  515. package/test/sap/ui/core/qunit/component/testdata/async/lib3/library-preload.json +1 -1
  516. package/test/sap/ui/core/qunit/component/testdata/async/lib3/library.js +2 -2
  517. package/test/sap/ui/core/qunit/component/testdata/async/lib4/library-preload.js +2 -2
  518. package/test/sap/ui/core/qunit/component/testdata/async/lib4/library-preload.json +1 -1
  519. package/test/sap/ui/core/qunit/component/testdata/async/lib4/library.js +2 -2
  520. package/test/sap/ui/core/qunit/component/testdata/async/manifestcomp/Component-preload.js +1 -1
  521. package/test/sap/ui/core/qunit/component/testdata/async/manifestcomp/Component.js +2 -2
  522. package/test/sap/ui/core/qunit/component/testdata/async/mycomp/Component-preload.js +1 -1
  523. package/test/sap/ui/core/qunit/component/testdata/async/mycomp/Component.js +2 -2
  524. package/test/sap/ui/core/qunit/component/testdata/async/mysubcomp/Component-preload.js +1 -1
  525. package/test/sap/ui/core/qunit/component/testdata/async/mysubcomp/Component.js +2 -3
  526. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/Component.js +0 -4
  527. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/sync/Component.js +2 -6
  528. package/test/sap/ui/core/qunit/component/testdata/customizing/customersub/Component.js +0 -4
  529. package/test/sap/ui/core/qunit/component/testdata/inherit/Component.js +2 -7
  530. package/test/sap/ui/core/qunit/component/testdata/inherit/parent/Component.js +2 -7
  531. package/test/sap/ui/core/qunit/component/testdata/inheritAsync/Component.js +2 -2
  532. package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentA/Component.js +2 -2
  533. package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentB/Component.js +2 -2
  534. package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/Component.js +2 -2
  535. package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentA/Component.js +2 -2
  536. package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentB/Component.js +2 -2
  537. package/test/sap/ui/core/qunit/component/testdata/other/Component.js +2 -7
  538. package/test/sap/ui/core/qunit/component/testdata/terminologies/Component.js +2 -2
  539. package/test/sap/ui/core/qunit/component/testdata/terminologies/component1/Component.js +2 -2
  540. package/test/sap/ui/core/qunit/component/testdata/terminologies/component2/Component.js +2 -2
  541. package/test/sap/ui/core/qunit/component/testdata/terminologies/component3/Component.js +2 -2
  542. package/test/sap/ui/core/qunit/component/testdata/terminologies/component5/Component.js +2 -2
  543. package/test/sap/ui/core/qunit/component/testdata/terminologies/reuse/Component.js +2 -3
  544. package/test/sap/ui/core/qunit/component/testdata/v1/Component.js +2 -7
  545. package/test/sap/ui/core/qunit/component/testdata/v1empty/Component.js +2 -7
  546. package/test/sap/ui/core/qunit/component/testdata/v1inline/Component.js +2 -5
  547. package/test/sap/ui/core/qunit/component/testdata/v1missing/Component.js +2 -7
  548. package/test/sap/ui/core/qunit/component/testdata/v2/Component.js +2 -5
  549. package/test/sap/ui/core/qunit/component/testdata/v2asyncRootView/Component.js +2 -5
  550. package/test/sap/ui/core/qunit/component/testdata/v2empty/Component.js +2 -9
  551. package/test/sap/ui/core/qunit/component/testdata/v2inline/Component.js +2 -5
  552. package/test/sap/ui/core/qunit/component/testdata/v2missing/Component.js +2 -9
  553. package/test/sap/ui/core/qunit/component/testdata/v2version/Component.js +2 -2
  554. package/test/sap/ui/core/qunit/dnd/DragDropInfo.qunit.js +1 -2
  555. package/test/sap/ui/core/qunit/generic/EnforceSemanticRendering.qunit.js +2 -2
  556. package/test/sap/ui/core/qunit/generic/SettersContextReturn.qunit.js +2 -2
  557. package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +2 -0
  558. package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +2 -0
  559. package/test/sap/ui/core/qunit/generic/legacy/SettersContextReturn.qunit.js +2 -2
  560. package/test/sap/ui/core/qunit/gherkin/dataTableUtils.qunit.js +2 -2
  561. package/test/sap/ui/core/qunit/i18n/Locale.qunit.js +0 -52
  562. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +49 -14
  563. package/test/sap/ui/core/qunit/i18n/UI5Date.qunit.js +16 -4
  564. package/test/sap/ui/core/qunit/i18n/UniversalDate.qunit.js +74 -114
  565. package/test/sap/ui/core/qunit/i18n/UniversalDateUtils.qunit.js +34 -39
  566. package/test/sap/ui/core/qunit/i18n/testsuite.i18n.qunit.js +18 -0
  567. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +1 -0
  568. package/test/sap/ui/core/qunit/internal/BeforePush.ODataV4.js +28 -0
  569. package/test/sap/ui/core/qunit/internal/BeforePush.html +1 -0
  570. package/test/sap/ui/core/qunit/internal/BeforePush.js +15 -0
  571. package/test/sap/ui/core/qunit/internal/performance/ExpressionParser.performance.qunit.js +1 -0
  572. package/test/sap/ui/core/qunit/json/JSONListBinding.qunit.js +2 -7
  573. package/test/sap/ui/core/qunit/json/JSONPropertyBinding.qunit.js +7 -12
  574. package/test/sap/ui/core/qunit/json/JSONTwoWay.qunit.js +3 -8
  575. package/test/sap/ui/core/qunit/loader/asyncMode.qunit.js +2 -2
  576. package/test/sap/ui/core/qunit/loader/asyncMode_unavoidablySync.qunit.js +1 -1
  577. package/test/sap/ui/core/qunit/loader/fixture/amd-with-export-true/module1.js +2 -2
  578. package/test/sap/ui/core/qunit/loader/testsuite.loader.qunit.js +0 -3
  579. package/test/sap/ui/core/qunit/messages/MessageMixin.qunit.js +2 -7
  580. package/test/sap/ui/core/qunit/messages/messagesUsage.qunit.js +1 -1
  581. package/test/sap/ui/core/qunit/model/Binding.qunit.js +36 -11
  582. package/test/sap/ui/core/qunit/model/ClientListBinding.qunit.js +2 -7
  583. package/test/sap/ui/core/qunit/model/ClientTreeBinding.qunit.js +2 -7
  584. package/test/sap/ui/core/qunit/model/CompositeDataState.qunit.js +2 -7
  585. package/test/sap/ui/core/qunit/model/Context.qunit.js +2 -7
  586. package/test/sap/ui/core/qunit/model/ContextBinding.qunit.js +2 -7
  587. package/test/sap/ui/core/qunit/model/FAR_CUSTOMER_LINE_ITEMS.metadata.xml +2 -0
  588. package/test/sap/ui/core/qunit/model/ListBinding.qunit.js +63 -6
  589. package/test/sap/ui/core/qunit/model/Model.qunit.js +2 -7
  590. package/test/sap/ui/core/qunit/model/PropertyBinding.qunit.js +40 -0
  591. package/test/sap/ui/core/qunit/model/TreeBinding.qunit.js +2 -7
  592. package/test/sap/ui/core/qunit/model/TreeBindingAdapter.qunit.js +2 -7
  593. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +51 -0
  594. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +9 -8
  595. package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions.qunit.js +4 -4
  596. package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions_legacy.qunit.js +4 -4
  597. package/test/sap/ui/core/qunit/mvc/testdata/Async.view.xml +1 -1
  598. package/test/sap/ui/core/qunit/mvc/testdata/AsyncTypedView.js +5 -1
  599. package/test/sap/ui/core/qunit/odata/AnnotationParserNoFakeService.qunit.js +2 -7
  600. package/test/sap/ui/core/qunit/odata/ODataMessageParser.qunit.js +1 -1
  601. package/test/sap/ui/core/qunit/odata/ODataMessageParserNoFakeService.qunit.js +2 -8
  602. package/test/sap/ui/core/qunit/odata/ODataMetadataNoFakeService.qunit.js +68 -9
  603. package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +24 -0
  604. package/test/sap/ui/core/qunit/odata/v2/Context.qunit.js +2 -7
  605. package/test/sap/ui/core/qunit/odata/v2/ODataContextBindingNoFakeService.qunit.js +2 -7
  606. package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +31 -17
  607. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +260 -56
  608. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +70 -15
  609. package/test/sap/ui/core/qunit/odata/v2/ODataPropertyBindingNoFakeService.qunit.js +2 -7
  610. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +4 -9
  611. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +2 -7
  612. package/test/sap/ui/core/qunit/odata/v2/V2ODataModel.qunit.js +1 -1
  613. package/test/sap/ui/core/qunit/odata/v2/_CreatedContextsCache.qunit.js +2 -7
  614. package/test/sap/ui/core/qunit/odata/v4/AnnotationHelper.qunit.js +1 -1
  615. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +55 -22
  616. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +184 -151
  617. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +60 -30
  618. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +305 -69
  619. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +20 -69
  620. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1282 -255
  621. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +90 -61
  622. package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +0 -3
  623. package/test/sap/ui/core/qunit/odata/v4/ODataParentBinding.qunit.js +283 -170
  624. package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +103 -78
  625. package/test/sap/ui/core/qunit/odata/v4/data/metadata.json +2 -1
  626. package/test/sap/ui/core/qunit/odata/v4/data/metadata.xml +4 -0
  627. package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +2 -0
  628. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +151 -1
  629. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +24 -11
  630. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +279 -458
  631. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +204 -3
  632. package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +7 -3
  633. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +145 -26
  634. package/test/sap/ui/core/qunit/odata/v4/testsuite.odatav4.qunit.js +4 -0
  635. package/test/sap/ui/core/qunit/opa/_LogCollector.qunit.js +1 -1
  636. package/test/sap/ui/core/qunit/opa/matchers/LabelFor.qunit.js +4 -2
  637. package/test/sap/ui/core/qunit/opa/matchers/_Busy.qunit.js +129 -2
  638. package/test/sap/ui/core/qunit/opa/matchers/_Editable.qunit.js +5 -1
  639. package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +5 -0
  640. package/test/sap/ui/core/qunit/resource/ResourceModel.qunit.js +17 -37
  641. package/test/sap/ui/core/qunit/routing/HashChanger.qunit.js +1 -6
  642. package/test/sap/ui/core/qunit/routing/RouterHashChanger.qunit.js +1 -10
  643. package/test/sap/ui/core/qunit/routing/async/Router.qunit.js +1 -22
  644. package/test/sap/ui/core/qunit/routing/async/Target.qunit.js +1 -4
  645. package/test/sap/ui/core/qunit/routing/fixture/Async1.view.xml +1 -1
  646. package/test/sap/ui/core/qunit/rule/model/modelSupport.qunit.js +34 -1
  647. package/test/sap/ui/core/qunit/testdata/fastnavigation/view/FastNavigation.view.xml +2 -2
  648. package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib1/i18n.properties +1 -0
  649. package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib1/library.js +10 -0
  650. package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib1/manifest.json +10 -0
  651. package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib2/library.js +10 -0
  652. package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib2/messagebundle.properties +1 -0
  653. package/test/sap/ui/core/qunit/testdata/xml-require/helper/Formatter.js +7 -4
  654. package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_in_html.view.xml +36 -0
  655. package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +3 -0
  656. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +29 -0
  657. package/test/sap/ui/core/qunit/types/DateFormatTimezones.qunit.js +1381 -1570
  658. package/test/sap/ui/core/qunit/types/SimpleType.qunit.js +16 -2
  659. package/test/sap/ui/core/qunit/types/Types.qunit.js +2 -37
  660. package/test/sap/ui/core/qunit/types/testsuite.types.qunit.js +1 -1
  661. package/test/sap/ui/core/qunit/util/Popup.qunit.js +7 -11
  662. package/test/sap/ui/core/qunit/util/SyncPromise.qunit.js +4 -1
  663. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +3 -1
  664. package/test/sap/ui/core/qunit/util/jQuery.sap.Version.qunit.js +3 -0
  665. package/test/sap/ui/core/qunit/util/jQuery.sap.measure.qunit.js +16 -11
  666. package/test/sap/ui/core/qunit/util/reflection/BaseTreeModifier.qunit.js +1 -1
  667. package/test/sap/ui/core/qunit/xml/XMLListBinding.qunit.js +1 -3
  668. package/test/sap/ui/core/qunit/xml/XMLModel.qunit.js +4 -14
  669. package/test/sap/ui/core/qunit/xml/XMLPropertyBinding.qunit.js +7 -11
  670. package/test/sap/ui/core/qunit/xml/XMLTreeBinding.qunit.js +1 -1
  671. package/test/sap/ui/core/qunit/xml/XMLTwoWay.qunit.js +3 -7
  672. package/test/sap/ui/core/relnotes/changes-1.115.json +1 -37
  673. package/test/sap/ui/core/relnotes/changes-1.116.json +71 -0
  674. package/test/sap/ui/core/relnotes/changes-1.117.json +127 -0
  675. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
  676. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
  677. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
  678. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
  679. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
  680. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
  681. package/test/sap/ui/core/visual/images/HyphenationPlayground/windows/1600x1200/chrome/horizon/ltr/cozy/19_thirdParty_language_sl.ref.lnk +1 -1
  682. package/test/testsuite/js/samples.js +2 -0
  683. package/ui5.yaml +166 -1
  684. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +0 -45
  685. /package/test/sap/ui/core/qunit/bootstrap/{GlobalConfigurationSettings.js → Configuration.beforeBootstrap.qunit.js} +0 -0
package/src/ui5loader.js CHANGED
@@ -15,27 +15,6 @@
15
15
 
16
16
  /*global sap:true, Blob, console, document, Promise, URL, XMLHttpRequest */
17
17
 
18
- (function(__global) {
19
- "use strict";
20
- if ( __global.Promise === undefined || !__global.Promise.prototype.finally || __global.URLSearchParams === undefined ) {
21
- var page = document.documentElement, pageStyle = page.style,
22
- msg = "Microsoft Internet Explorer 11 and other legacy browsers are no longer supported. For more information, see ",
23
- hrefText = "Internet Explorer 11 will no longer be supported by various SAP UI technologies in newer releases",
24
- href = "https://blogs.sap.com/2021/02/02/internet-explorer-11-will-no-longer-be-supported-by-various-sap-ui-technologies-in-newer-releases/";
25
-
26
- page.innerHTML = '<body style="margin:0;padding:0;overflow-y:hidden;background-color:#f7f7f7;text-align:center;width:100%;position:absolute;top:50%;transform:translate(0,-50%);"><div style="color:#32363a;font-family:Arial,Helvetica,sans-serif;font-size:.875rem;">' +
27
- msg + '<a href="' + href + '" style="color:#4076b4;">' + hrefText + '</a>.</div></body>';
28
- pageStyle.margin = pageStyle.padding = "0";
29
- pageStyle.width = pageStyle.height = "100%";
30
- if (__global.stop) { // Check for __global.stop first because Safari 11 has __global.stop and document.execCommand but document.execCommand('Stop') does not work in Safari 11
31
- __global.stop();
32
- } else {
33
- document.execCommand('Stop');
34
- }
35
- throw new Error(msg + href);
36
- }
37
- }(window));
38
-
39
18
  (function(__global) {
40
19
  "use strict";
41
20
 
@@ -46,7 +25,7 @@
46
25
  * @returns {string}
47
26
  */
48
27
  function pathOnly(href) {
49
- var p = href.search(/[?#]/);
28
+ const p = href.search(/[?#]/);
50
29
  return p < 0 ? href : href.slice(0, p);
51
30
  }
52
31
 
@@ -72,19 +51,8 @@
72
51
 
73
52
  function noop() {}
74
53
 
75
- var aEarlyLogs = [];
76
-
77
- function earlyLog(level, message) {
78
- aEarlyLogs.push({
79
- level: level,
80
- message: message
81
- });
82
- }
83
-
84
54
  function forEach(obj, callback) {
85
- Object.keys(obj).forEach(function(key) {
86
- callback(key, obj[key]);
87
- });
55
+ Object.keys(obj).forEach((key) => callback(key, obj[key]));
88
56
  }
89
57
 
90
58
  function executeInSeparateTask(fn) {
@@ -97,6 +65,15 @@
97
65
 
98
66
  // ---- hooks & configuration -----------------------------------------------------------------
99
67
 
68
+ const aEarlyLogs = [];
69
+
70
+ function earlyLog(level, message) {
71
+ aEarlyLogs.push({
72
+ level,
73
+ message
74
+ });
75
+ }
76
+
100
77
  /**
101
78
  * Log functionality.
102
79
  *
@@ -110,7 +87,7 @@
110
87
  * @private
111
88
  */
112
89
 
113
- var log = {
90
+ let log = {
114
91
  debug: earlyLog.bind(this, 'debug'),
115
92
  info: earlyLog.bind(this, 'info'),
116
93
  warning: earlyLog.bind(this, 'warning'),
@@ -129,7 +106,7 @@
129
106
  * @type {function(any,string)}
130
107
  * @private
131
108
  */
132
- var assert = noop; // Null Object pattern: dummy assert which is used as long as no assert is injected
109
+ let assert = noop; // Null Object pattern: dummy assert which is used as long as no assert is injected
133
110
 
134
111
  /**
135
112
  * Callback for performance measurement.
@@ -138,7 +115,7 @@
138
115
  * @type {{start:function(string,any),end:function(string)}}
139
116
  * @private
140
117
  */
141
- var measure;
118
+ let measure;
142
119
 
143
120
  /**
144
121
  * Source code transformation hook.
@@ -146,7 +123,7 @@
146
123
  * To be used by code coverage, only supported in sync mode.
147
124
  * @private
148
125
  */
149
- var translate;
126
+ let translate;
150
127
 
151
128
  /**
152
129
  * Method used by sap.ui.require to simulate asynchronous behavior.
@@ -155,14 +132,14 @@
155
132
  * Can be changed to execute in a micro task to save idle time in case of
156
133
  * many nested sap.ui.require calls.
157
134
  */
158
- var simulateAsyncCallback = executeInSeparateTask;
135
+ let simulateAsyncCallback = executeInSeparateTask;
159
136
 
160
137
  /*
161
138
  * Activates strictest possible compliance with AMD spec
162
139
  * - no multiple executions of the same module
163
140
  * - at most one anonymous module definition per file, zero for adhoc definitions
164
141
  */
165
- var strictModuleDefinitions = true;
142
+ const strictModuleDefinitions = true;
166
143
 
167
144
  /**
168
145
  * Whether asynchronous loading can be used at all.
@@ -170,7 +147,7 @@
170
147
  * @type {boolean}
171
148
  * @private
172
149
  */
173
- var bGlobalAsyncMode = false;
150
+ let bGlobalAsyncMode = false;
174
151
 
175
152
 
176
153
  /**
@@ -179,7 +156,7 @@
179
156
  * @type {boolean}
180
157
  * @private
181
158
  */
182
- var bExposeAsAMDLoader = false;
159
+ let bExposeAsAMDLoader = false;
183
160
 
184
161
  /**
185
162
  * How the loader should react to calls of sync APIs or when global names are accessed:
@@ -189,7 +166,7 @@
189
166
  * @type {int}
190
167
  * @private
191
168
  */
192
- var syncCallBehavior = 0;
169
+ let syncCallBehavior = 0;
193
170
 
194
171
  /**
195
172
  * Default base URL for modules, used when no other configuration is provided.
@@ -199,7 +176,7 @@
199
176
  * @type {string}
200
177
  * @private
201
178
  */
202
- var DEFAULT_BASE_URL = "./";
179
+ const DEFAULT_BASE_URL = "./";
203
180
 
204
181
  /**
205
182
  * Temporarily saved reference to the original value of the global define variable.
@@ -207,7 +184,7 @@
207
184
  * @type {any}
208
185
  * @private
209
186
  */
210
- var vOriginalDefine;
187
+ let vOriginalDefine;
211
188
 
212
189
  /**
213
190
  * Temporarily saved reference to the original value of the global require variable.
@@ -215,7 +192,7 @@
215
192
  * @type {any}
216
193
  * @private
217
194
  */
218
- var vOriginalRequire;
195
+ let vOriginalRequire;
219
196
 
220
197
 
221
198
  /**
@@ -226,7 +203,7 @@
226
203
  * @type {Object<string,{url:string,absoluteUrl:string}>}
227
204
  * @private
228
205
  */
229
- var mUrlPrefixes = Object.create(null);
206
+ const mUrlPrefixes = Object.create(null);
230
207
  mUrlPrefixes[''] = {
231
208
  url: DEFAULT_BASE_URL,
232
209
  absoluteUrl: resolveURL(DEFAULT_BASE_URL)
@@ -242,7 +219,7 @@
242
219
  * @type {Object.<string,Object.<string,string>>}
243
220
  * @private
244
221
  */
245
- var mMaps = Object.create(null),
222
+ const mMaps = Object.create(null);
246
223
 
247
224
  /**
248
225
  * Information about third party modules, keyed by the module's resource name (including extension '.js').
@@ -266,7 +243,7 @@
266
243
  * @type {Object.<string,{amd:boolean,exports:(string|string[]),deps:string[]}>}
267
244
  * @private
268
245
  */
269
- mShims = Object.create(null),
246
+ const mShims = Object.create(null);
270
247
 
271
248
  /**
272
249
  * Dependency Cache information.
@@ -274,14 +251,14 @@
274
251
  * @type {Object.<string,string[]>}
275
252
  * @private
276
253
  */
277
- mDepCache = Object.create(null),
254
+ const mDepCache = Object.create(null);
278
255
 
279
256
  /**
280
257
  * Whether the loader should try to load debug sources.
281
258
  * @type {boolean}
282
259
  * @private
283
260
  */
284
- bDebugSources = false,
261
+ let bDebugSources = false;
285
262
 
286
263
  /**
287
264
  * Indicates partial or total debug mode.
@@ -291,7 +268,7 @@
291
268
  * @type {function(string):boolean|undefined}
292
269
  * @private
293
270
  */
294
- fnIgnorePreload;
271
+ let fnIgnorePreload;
295
272
 
296
273
 
297
274
  // ---- internal state ------------------------------------------------------------------------
@@ -302,7 +279,7 @@
302
279
  * @type {Object<string,Module>}
303
280
  * @private
304
281
  */
305
- var mModules = Object.create(null),
282
+ const mModules = Object.create(null);
306
283
 
307
284
  /**
308
285
  * Whether (sap.ui.)define calls must be executed synchronously in the current context.
@@ -316,35 +293,35 @@
316
293
  * synchronously.
317
294
  * Most prominent example: unit tests that include QUnitUtils as a script tag and use qutils
318
295
  * in one of their inline scripts.
319
- * @type {boolean}
296
+ * @type {boolean|null}
320
297
  * @private
321
298
  */
322
- bForceSyncDefines = null,
299
+ let bForceSyncDefines = null;
323
300
 
324
301
  /**
325
302
  * Stack of modules that are currently being executed in case of synchronous processing.
326
303
  *
327
304
  * Allows to identify the executing module (e.g. when resolving dependencies or in case of
328
- * in case of bundles like sap-ui-core).
305
+ * bundles like sap-ui-core).
329
306
  *
330
307
  * @type {Array.<{name:string,used:boolean}>}
331
308
  * @private
332
309
  */
333
- _execStack = [ ],
310
+ const _execStack = [ ];
334
311
 
335
312
  /**
336
313
  * A prefix that will be added to module loading log statements and which reflects the nesting of module executions.
337
314
  * @type {string}
338
315
  * @private
339
316
  */
340
- sLogPrefix = "",
317
+ let sLogPrefix = "";
341
318
 
342
319
  /**
343
320
  * Counter used to give anonymous modules a unique module ID.
344
321
  * @type {int}
345
322
  * @private
346
323
  */
347
- iAnonymousModuleCount = 0;
324
+ let iAnonymousModuleCount = 0;
348
325
 
349
326
  // ---- break preload execution into tasks ----------------------------------------------------
350
327
 
@@ -353,33 +330,33 @@
353
330
  *
354
331
  * A value of -1 switched the scheduling off, a value of zero postpones each execution
355
332
  */
356
- var DEFAULT_MAX_TASK_DURATION = -1; // off
333
+ const DEFAULT_MAX_TASK_DURATION = -1; // off
357
334
 
358
335
  /**
359
336
  * Maximum accumulated task execution time (threshold)
360
337
  * Can be configured via the private API property `maxTaskDuration`.
361
338
  */
362
- var iMaxTaskDuration = DEFAULT_MAX_TASK_DURATION;
339
+ let iMaxTaskDuration = DEFAULT_MAX_TASK_DURATION;
363
340
 
364
341
  /**
365
342
  * The earliest elapsed time at which a new browser task will be enforced.
366
343
  * Will be updated when a new task starts.
367
344
  */
368
- var iMaxTaskTime = Date.now() + iMaxTaskDuration;
345
+ let iMaxTaskTime = Date.now() + iMaxTaskDuration;
369
346
 
370
347
  /**
371
348
  * A promise that fulfills when the new browser task has been reached.
372
349
  * All postponed callback executions will be executed after this promise.
373
350
  * `null` as long as the elapsed time threshold is not reached.
374
351
  */
375
- var pWaitForNextTask;
352
+ let pWaitForNextTask;
376
353
 
377
354
  /**
378
355
  * Message channel which will be used to create a new browser task
379
356
  * without being subject to timer throttling.
380
357
  * Will be created lazily on first usage.
381
358
  */
382
- var oNextTaskMessageChannel;
359
+ let oNextTaskMessageChannel;
383
360
 
384
361
  /**
385
362
  * Update elapsed time threshold.
@@ -399,7 +376,7 @@
399
376
  function updateMaxTaskDuration(v) {
400
377
  v = Number(v);
401
378
 
402
- var iBeginOfCurrentTask = iMaxTaskTime - iMaxTaskDuration;
379
+ const iBeginOfCurrentTask = iMaxTaskTime - iMaxTaskDuration;
403
380
 
404
381
  // limit to range [-1 ... Infinity], any other value incl. NaN restores the default
405
382
  iMaxTaskDuration = v >= -1 ? v : DEFAULT_MAX_TASK_DURATION;
@@ -510,8 +487,9 @@
510
487
  }
511
488
 
512
489
  function urnToIDAndType(sResourceName) {
513
- var basenamePos = sResourceName.lastIndexOf('/'),
514
- dotPos = sResourceName.lastIndexOf('.');
490
+ const basenamePos = sResourceName.lastIndexOf('/');
491
+ const dotPos = sResourceName.lastIndexOf('.');
492
+
515
493
  if ( dotPos > basenamePos ) {
516
494
  return {
517
495
  id: sResourceName.slice(0, dotPos),
@@ -524,10 +502,10 @@
524
502
  };
525
503
  }
526
504
 
527
- var rJSSubTypes = /(\.controller|\.fragment|\.view|\.designtime|\.support)?.js$/;
505
+ const rJSSubTypes = /(\.controller|\.fragment|\.view|\.designtime|\.support)?.js$/;
528
506
 
529
507
  function urnToBaseIDAndSubType(sResourceName) {
530
- var m = rJSSubTypes.exec(sResourceName);
508
+ const m = rJSSubTypes.exec(sResourceName);
531
509
  if ( m ) {
532
510
  return {
533
511
  baseID: sResourceName.slice(0, m.index),
@@ -536,8 +514,8 @@
536
514
  }
537
515
  }
538
516
 
539
- var rDotSegmentAnywhere = /(?:^|\/)\.+(?=\/|$)/;
540
- var rDotSegment = /^\.*$/;
517
+ const rDotSegmentAnywhere = /(?:^|\/)\.+(?=\/|$)/;
518
+ const rDotSegment = /^\.*$/;
541
519
 
542
520
  /**
543
521
  * Normalizes a resource name by resolving any relative name segments.
@@ -564,10 +542,7 @@
564
542
  */
565
543
  function normalize(sResourceName, sBaseName) {
566
544
 
567
- var p = sResourceName.search(rDotSegmentAnywhere),
568
- aSegments,
569
- sSegment,
570
- i,j,l;
545
+ const p = sResourceName.search(rDotSegmentAnywhere);
571
546
 
572
547
  // check whether the name needs to be resolved at all - if not, just return the sModuleName as it is.
573
548
  if ( p < 0 ) {
@@ -583,12 +558,14 @@
583
558
  sResourceName = sBaseName.slice(0, sBaseName.lastIndexOf('/') + 1) + sResourceName;
584
559
  }
585
560
 
586
- aSegments = sResourceName.split('/');
561
+ const aSegments = sResourceName.split('/');
587
562
 
588
563
  // process path segments
589
- for (i = 0, j = 0, l = aSegments.length; i < l; i++) {
564
+ let j = 0;
565
+ const l = aSegments.length;
566
+ for (let i = 0; i < l; i++) {
590
567
 
591
- sSegment = aSegments[i];
568
+ const sSegment = aSegments[i];
592
569
 
593
570
  if ( rDotSegment.test(sSegment) ) {
594
571
  if (sSegment === '.' || sSegment === '') {
@@ -629,14 +606,14 @@
629
606
  if ( sResourceNamePrefix ) {
630
607
  if ( mUrlPrefixes[sResourceNamePrefix] ) {
631
608
  delete mUrlPrefixes[sResourceNamePrefix];
632
- log.info("registerResourcePath ('" + sResourceNamePrefix + "') (registration removed)");
609
+ log.info(`registerResourcePath ('${sResourceNamePrefix}') (registration removed)`);
633
610
  }
634
611
  return;
635
612
  }
636
613
 
637
614
  // otherwise restore the default
638
615
  sUrlPrefix = DEFAULT_BASE_URL;
639
- log.info("registerResourcePath ('" + sResourceNamePrefix + "') (default registration restored)");
616
+ log.info(`registerResourcePath ('${sResourceNamePrefix}') (default registration restored)`);
640
617
 
641
618
  }
642
619
 
@@ -665,9 +642,8 @@
665
642
  */
666
643
  function getResourcePath(sResourceName, sSuffix) {
667
644
 
668
- var sNamePrefix = sResourceName,
669
- p = sResourceName.length,
670
- sPath;
645
+ let sNamePrefix = sResourceName;
646
+ let p = sResourceName.length;
671
647
 
672
648
  // search for a registered name prefix, starting with the full name and successively removing one segment
673
649
  while ( p > 0 && !mUrlPrefixes[sNamePrefix] ) {
@@ -678,7 +654,7 @@
678
654
 
679
655
  assert((p > 0 || sNamePrefix === '') && mUrlPrefixes[sNamePrefix], "there always must be a mapping");
680
656
 
681
- sPath = mUrlPrefixes[sNamePrefix].url + sResourceName.slice(p + 1); // also skips a leading slash!
657
+ let sPath = mUrlPrefixes[sNamePrefix].url + sResourceName.slice(p + 1); // also skips a leading slash!
682
658
 
683
659
  //remove trailing slash
684
660
  if ( sPath.slice(-1) === '/' ) {
@@ -712,31 +688,27 @@
712
688
  * @private
713
689
  */
714
690
  function guessResourceName(sURL, bLoadedResourcesOnly) {
715
- var sNamePrefix,
716
- sUrlPrefix,
717
- sResourceName;
718
-
719
691
  // Make sure to have an absolute URL without query parameters or hash
720
692
  // to check against absolute prefix URLs
721
693
  sURL = pathOnly(resolveURL(sURL));
722
694
 
723
- for (sNamePrefix in mUrlPrefixes) {
695
+ for (const sNamePrefix in mUrlPrefixes) {
724
696
 
725
697
  // Note: configured URL prefixes are guaranteed to end with a '/'
726
698
  // But to support the legacy scenario promoted by the application tools ( "registerModulePath('Application','Application')" )
727
699
  // the prefix check here has to be done without the slash
728
- sUrlPrefix = mUrlPrefixes[sNamePrefix].absoluteUrl.slice(0, -1);
700
+ const sUrlPrefix = mUrlPrefixes[sNamePrefix].absoluteUrl.slice(0, -1);
729
701
 
730
- if ( sURL.lastIndexOf(sUrlPrefix, 0) === 0 ) {
702
+ if ( sURL.startsWith(sUrlPrefix) ) {
731
703
 
732
704
  // calc resource name
733
- sResourceName = sNamePrefix + sURL.slice(sUrlPrefix.length);
705
+ let sResourceName = sNamePrefix + sURL.slice(sUrlPrefix.length);
734
706
  // remove a leading '/' (occurs if name prefix is empty and if match was a full segment match
735
707
  if ( sResourceName.charAt(0) === '/' ) {
736
708
  sResourceName = sResourceName.slice(1);
737
709
  }
738
710
 
739
- if ( !bLoadedResourcesOnly || mModules[sResourceName] && mModules[sResourceName].data != undefined ) {
711
+ if ( !bLoadedResourcesOnly || mModules[sResourceName]?.data != undefined ) {
740
712
  return sResourceName;
741
713
  }
742
714
  }
@@ -749,7 +721,7 @@
749
721
  * @returns {Object<string,string>|undefined} Most specific map or <code>undefined</code>
750
722
  */
751
723
  function findMapForContext(sContext) {
752
- var p, mMap;
724
+ let p, mMap;
753
725
  if ( sContext != null ) {
754
726
  // maps are defined on module IDs, reduce URN to module ID
755
727
  sContext = urnToIDAndType(sContext).id;
@@ -769,8 +741,7 @@
769
741
 
770
742
  function getMappedName(sResourceName, sRequestingResourceName) {
771
743
 
772
- var mMap = findMapForContext(sRequestingResourceName),
773
- sPrefix, p;
744
+ const mMap = findMapForContext(sRequestingResourceName);
774
745
 
775
746
  // resolve relative names
776
747
  sResourceName = normalize(sResourceName, sRequestingResourceName);
@@ -778,8 +749,8 @@
778
749
  // if there's a map, search for the most specific matching entry
779
750
  if ( mMap != null ) {
780
751
  // start with the full ID and successively remove one segment
781
- sPrefix = urnToIDAndType(sResourceName).id;
782
- p = sPrefix.length;
752
+ let sPrefix = urnToIDAndType(sResourceName).id;
753
+ let p = sPrefix.length;
783
754
  while ( p > 0 && mMap[sPrefix] == null ) {
784
755
  p = sPrefix.lastIndexOf('/');
785
756
  // Note: an empty segment at p = 0 (leading slash) will be ignored
@@ -787,10 +758,11 @@
787
758
  }
788
759
 
789
760
  if ( p > 0 ) {
761
+ const sMappedResourceName = mMap[sPrefix] + sResourceName.slice(p);
790
762
  if ( log.isLoggable() ) {
791
- log.debug('module ID ' + sResourceName + " mapped to " + mMap[sPrefix] + sResourceName.slice(p));
763
+ log.debug(`module ID ${sResourceName} mapped to ${sMappedResourceName}`);
792
764
  }
793
- return mMap[sPrefix] + sResourceName.slice(p); // also skips a leading slash!
765
+ return sMappedResourceName; // also skips a leading slash!
794
766
  }
795
767
  }
796
768
 
@@ -798,7 +770,7 @@
798
770
  }
799
771
 
800
772
  function getGlobalObject(oObject, aNames, l, bCreate) {
801
- for (var i = 0; oObject && i < l; i++) {
773
+ for (let i = 0; oObject && i < l; i++) {
802
774
  if (!oObject[aNames[i]] && bCreate ) {
803
775
  oObject[aNames[i]] = {};
804
776
  }
@@ -808,7 +780,7 @@
808
780
  }
809
781
 
810
782
  function getGlobalProperty(sName) {
811
- var aNames = sName ? sName.split(".") : [];
783
+ const aNames = sName ? sName.split(".") : [];
812
784
 
813
785
  if ( syncCallBehavior && aNames.length > 1 ) {
814
786
  log.error("[nosync] getGlobalProperty called to retrieve global name '" + sName + "'");
@@ -818,10 +790,10 @@
818
790
  }
819
791
 
820
792
  function setGlobalProperty(sName, vValue) {
821
- var aNames = sName ? sName.split(".") : [],
822
- oObject;
793
+ const aNames = sName ? sName.split(".") : [];
794
+
823
795
  if ( aNames.length > 0 ) {
824
- oObject = getGlobalObject(__global, aNames, aNames.length - 1, true);
796
+ const oObject = getGlobalObject(__global, aNames, aNames.length - 1, true);
825
797
  oObject[aNames[aNames.length - 1]] = vValue;
826
798
  }
827
799
  }
@@ -839,7 +811,7 @@
839
811
  /**
840
812
  * Module neither has been required nor preloaded nor declared, but someone asked for it.
841
813
  */
842
- var INITIAL = 0,
814
+ const INITIAL = 0,
843
815
 
844
816
  /**
845
817
  * Module has been preloaded, but not required or declared.
@@ -879,7 +851,7 @@
879
851
  /**
880
852
  * A module/resource as managed by the module system.
881
853
  *
882
- * Each module is an object with the following properties
854
+ * Each module has the following properties
883
855
  * <ul>
884
856
  * <li>{int} state one of the module states defined in this function</li>
885
857
  * <li>{string} url URL where the module has been loaded from</li>
@@ -888,193 +860,187 @@
888
860
  * <li>{string} error an error description for state <code>FAILED</code></li>
889
861
  * <li>{any} content the content of the module as exported via define()<(li>
890
862
  * </ul>
891
- *
892
- * @param {string} name Name of the module, including extension
893
863
  */
894
- function Module(name) {
895
- this.name = name;
896
- this.state = INITIAL;
897
- /*
898
- * Whether processing of the module is complete.
899
- * This is very similar to, but not the same as state >= READY because declareModule() sets state=READY very early.
900
- * That state transition is 'legacy' from the library-all files; it needs to be checked whether it can be removed.
901
- */
902
- this.settled = false;
903
- this.url =
904
- this._deferred =
905
- this.data =
906
- this.group =
907
- this.error =
908
- this.pending = null;
909
- this.content = NOT_YET_DETERMINED;
910
- }
864
+ class Module {
911
865
 
912
- Module.prototype.deferred = function() {
913
- if ( this._deferred == null ) {
914
- var deferred = this._deferred = {};
915
- deferred.promise = new Promise(function(resolve,reject) {
916
- deferred.resolve = resolve;
917
- deferred.reject = reject;
918
- });
919
- // avoid 'Uncaught (in promise)' log entries
920
- deferred.promise.catch(noop);
866
+ /**
867
+ * Creates a new Module.
868
+ *
869
+ * @param {string} name Name of the module, including extension
870
+ */
871
+ constructor(name) {
872
+ this.name = name;
873
+ this.state = INITIAL;
874
+ /*
875
+ * Whether processing of the module is complete.
876
+ * This is very similar to, but not the same as state >= READY because declareModule() sets state=READY very early.
877
+ * That state transition is 'legacy' from the library-all files; it needs to be checked whether it can be removed.
878
+ */
879
+ this.settled = false;
880
+ this.url =
881
+ this._deferred =
882
+ this.data =
883
+ this.group =
884
+ this.error =
885
+ this.pending = null;
886
+ this.content = NOT_YET_DETERMINED;
887
+ }
888
+
889
+ deferred() {
890
+ if ( this._deferred == null ) {
891
+ const deferred = this._deferred = {};
892
+ deferred.promise = new Promise(function(resolve,reject) {
893
+ deferred.resolve = resolve;
894
+ deferred.reject = reject;
895
+ });
896
+ // avoid 'Uncaught (in promise)' log entries
897
+ deferred.promise.catch(noop);
898
+ }
899
+ return this._deferred;
921
900
  }
922
- return this._deferred;
923
- };
924
901
 
925
- Module.prototype.api = function() {
926
- if ( this._api == null ) {
927
- this._exports = {};
928
- this._api = {
902
+ api() {
903
+ this._api ??= {
929
904
  id: this.name.slice(0,-3),
930
- exports: this._exports,
905
+ exports: this._exports = {},
931
906
  url: this.url,
932
907
  config: noop
933
908
  };
909
+ return this._api;
934
910
  }
935
- return this._api;
936
- };
937
-
938
- /**
939
- * Sets the module state to READY and either determines the value or sets
940
- * it from the given parameter.
941
- * @param {any} value Module value
942
- */
943
- Module.prototype.ready = function(value) {
944
- // should throw, but some tests and apps would fail
945
- assert(!this.settled, "Module " + this.name + " is already settled");
946
- this.state = READY;
947
- this.settled = true;
948
- if ( arguments.length > 0 ) {
949
- // check arguments.length to allow a value of undefined
950
- this.content = value;
951
- }
952
- this.deferred().resolve(wrapExport(this.value()));
953
- if ( this.aliases ) {
954
- value = this.value();
955
- this.aliases.forEach(function(alias) {
956
- Module.get(alias).ready(value);
957
- });
958
- }
959
- };
960
911
 
961
- Module.prototype.failWith = function(msg, cause) {
962
- var err = makeModuleError(msg, this, cause);
963
- this.fail(err);
964
- return err;
965
- };
966
-
967
- Module.prototype.fail = function(err) {
968
- // should throw, but some tests and apps would fail
969
- assert(!this.settled, "Module " + this.name + " is already settled");
970
- this.settled = true;
971
- if ( this.state !== FAILED ) {
972
- this.state = FAILED;
973
- this.error = err;
974
- this.deferred().reject(err);
912
+ /**
913
+ * Sets the module state to READY and either determines the value or sets
914
+ * it from the given parameter.
915
+ * @param {any} value Module value
916
+ */
917
+ ready(value) {
918
+ // should throw, but some tests and apps would fail
919
+ assert(!this.settled, `Module ${this.name} is already settled`);
920
+ this.state = READY;
921
+ this.settled = true;
922
+ if ( arguments.length > 0 ) {
923
+ // check arguments.length to allow a value of undefined
924
+ this.content = value;
925
+ }
926
+ this.deferred().resolve(wrapExport(this.value()));
975
927
  if ( this.aliases ) {
976
- this.aliases.forEach(function(alias) {
977
- Module.get(alias).fail(err);
978
- });
928
+ value = this.value();
929
+ this.aliases.forEach((alias) => Module.get(alias).ready(value));
979
930
  }
980
931
  }
981
- };
982
932
 
983
- Module.prototype.addPending = function(sDependency) {
984
- (this.pending || (this.pending = [])).push(sDependency);
985
- };
933
+ failWith(msg, cause) {
934
+ const err = makeModuleError(msg, this, cause);
935
+ this.fail(err);
936
+ return err;
937
+ }
986
938
 
987
- Module.prototype.addAlias = function(sAliasName) {
988
- (this.aliases || (this.aliases = [])).push(sAliasName);
989
- // add this module as pending dependency to the original
990
- Module.get(sAliasName).addPending(this.name);
991
- };
939
+ fail(err) {
940
+ // should throw, but some tests and apps would fail
941
+ assert(!this.settled, `Module ${this.name} is already settled`);
942
+ this.settled = true;
943
+ if ( this.state !== FAILED ) {
944
+ this.state = FAILED;
945
+ this.error = err;
946
+ this.deferred().reject(err);
947
+ this.aliases?.forEach((alias) => Module.get(alias).fail(err));
948
+ }
949
+ }
992
950
 
993
- Module.prototype.preload = function(url, data, bundle) {
994
- if ( this.state === INITIAL && !(fnIgnorePreload && fnIgnorePreload(this.name)) ) {
995
- this.state = PRELOADED;
996
- this.url = url;
997
- this.data = data;
998
- this.group = bundle;
951
+ addPending(sDependency) {
952
+ (this.pending ??= []).push(sDependency);
999
953
  }
1000
- return this;
1001
- };
1002
954
 
1003
- /**
1004
- * Determines the value of this module.
1005
- *
1006
- * If the module hasn't been loaded or executed yet, <code>undefined</code> will be returned.
1007
- *
1008
- * @returns {any} Export of the module or <code>undefined</code>
1009
- * @private
1010
- */
1011
- Module.prototype.value = function() {
955
+ addAlias(sAliasName) {
956
+ (this.aliases ??= []).push(sAliasName);
957
+ // add this module as pending dependency to the original
958
+ Module.get(sAliasName).addPending(this.name);
959
+ }
1012
960
 
1013
- if ( this.state === READY ) {
1014
- if ( this.content === NOT_YET_DETERMINED ) {
1015
- // Determine the module value lazily.
1016
- // For AMD modules this has already been done on execution of the factory function.
1017
- // For other modules that are required synchronously, it has been done after execution.
1018
- // For the few remaining scenarios (like global scripts), it is done here
1019
- var oShim = mShims[this.name],
1020
- sExport = oShim && (Array.isArray(oShim.exports) ? oShim.exports[0] : oShim.exports);
1021
- // best guess for thirdparty modules or legacy modules that don't use sap.ui.define
1022
- this.content = getGlobalProperty( sExport || urnToUI5(this.name) );
961
+ preload(url, data, bundle) {
962
+ if ( this.state === INITIAL && !fnIgnorePreload?.(this.name) ) {
963
+ this.state = PRELOADED;
964
+ this.url = url;
965
+ this.data = data;
966
+ this.group = bundle;
1023
967
  }
1024
- return this.content;
968
+ return this;
1025
969
  }
1026
970
 
1027
- return undefined;
1028
- };
971
+ /**
972
+ * Determines the value of this module.
973
+ *
974
+ * If the module hasn't been loaded or executed yet, <code>undefined</code> will be returned.
975
+ *
976
+ * @returns {any} Export of the module or <code>undefined</code>
977
+ * @private
978
+ */
979
+ value() {
980
+ if ( this.state === READY ) {
981
+ if ( this.content === NOT_YET_DETERMINED ) {
982
+ // Determine the module value lazily.
983
+ // For AMD modules this has already been done on execution of the factory function.
984
+ // For other modules that are required synchronously, it has been done after execution.
985
+ // For the few remaining scenarios (like global scripts), it is done here
986
+ const oShim = mShims[this.name],
987
+ sExport = oShim && (Array.isArray(oShim.exports) ? oShim.exports[0] : oShim.exports);
988
+ // best guess for thirdparty modules or legacy modules that don't use sap.ui.define
989
+ this.content = getGlobalProperty( sExport || urnToUI5(this.name) );
990
+ }
991
+ return this.content;
992
+ }
1029
993
 
1030
- /**
1031
- * Checks whether this module depends on the given module.
1032
- *
1033
- * When a module definition (define) is executed, the requested dependencies are added
1034
- * as 'pending' to the Module instance. This function checks if the oDependantModule is
1035
- * reachable from this module when following the pending dependency information.
1036
- *
1037
- * Note: when module aliases are introduced (all module definitions in a file use an ID that differs
1038
- * from the request module ID), then the alias module is also added as a "pending" dependency.
1039
- *
1040
- * @param {Module} oDependantModule Module which has a dependency to <code>oModule</code>
1041
- * @returns {boolean} Whether this module depends on the given one.
1042
- * @private
1043
- */
1044
- Module.prototype.dependsOn = function(oDependantModule) {
1045
- var dependant = oDependantModule.name,
1046
- visited = Object.create(null);
994
+ return undefined;
995
+ }
1047
996
 
1048
- // log.debug("checking for a cycle between", this.name, "and", dependant);
1049
- function visit(mod) {
1050
- if ( !visited[mod] ) {
1051
- // log.debug(" ", mod);
1052
- visited[mod] = true;
1053
- var pending = mModules[mod] && mModules[mod].pending;
1054
- return Array.isArray(pending) &&
1055
- (pending.indexOf(dependant) >= 0 || pending.some(visit));
997
+ /**
998
+ * Checks whether this module depends on the given module.
999
+ *
1000
+ * When a module definition (define) is executed, the requested dependencies are added
1001
+ * as 'pending' to the Module instance. This function checks if the oDependantModule is
1002
+ * reachable from this module when following the pending dependency information.
1003
+ *
1004
+ * Note: when module aliases are introduced (all module definitions in a file use an ID that differs
1005
+ * from the request module ID), then the alias module is also added as a "pending" dependency.
1006
+ *
1007
+ * @param {Module} oDependantModule Module which has a dependency to <code>oModule</code>
1008
+ * @returns {boolean} Whether this module depends on the given one.
1009
+ * @private
1010
+ */
1011
+ dependsOn(oDependantModule) {
1012
+ const dependant = oDependantModule.name,
1013
+ visited = Object.create(null);
1014
+
1015
+ // log.debug("checking for a cycle between", this.name, "and", dependant);
1016
+ function visit(mod) {
1017
+ if ( !visited[mod] ) {
1018
+ // log.debug(" ", mod);
1019
+ visited[mod] = true;
1020
+ const pending = mModules[mod]?.pending;
1021
+ return Array.isArray(pending) &&
1022
+ (pending.indexOf(dependant) >= 0 || pending.some(visit));
1023
+ }
1024
+ return false;
1056
1025
  }
1057
- return false;
1058
- }
1059
1026
 
1060
- return this.name === dependant || visit(this.name);
1061
- };
1027
+ return this.name === dependant || visit(this.name);
1028
+ }
1062
1029
 
1063
- /**
1064
- * Find or create a module by its unified resource name.
1065
- *
1066
- * If the module doesn't exist yet, a new one is created in state INITIAL.
1067
- *
1068
- * @param {string} sModuleName Name of the module in URN syntax
1069
- * @returns {Module} Module with that name, newly created if it didn't exist yet
1070
- * @static
1071
- */
1072
- Module.get = function(sModuleName) {
1073
- if (!mModules[sModuleName]) {
1074
- mModules[sModuleName] = new Module(sModuleName);
1030
+ /**
1031
+ * Find or create a module by its unified resource name.
1032
+ *
1033
+ * If the module doesn't exist yet, a new one is created in state INITIAL.
1034
+ *
1035
+ * @param {string} sModuleName Name of the module in URN syntax
1036
+ * @returns {Module} Module with that name, newly created if it didn't exist yet
1037
+ */
1038
+ static get(sModuleName) {
1039
+ const oModule = mModules[sModuleName] ??= new Module(sModuleName);
1040
+ return oModule;
1075
1041
  }
1076
- return mModules[sModuleName];
1077
- };
1042
+
1043
+ }
1078
1044
 
1079
1045
  /*
1080
1046
  * Determines the currently executing module.
@@ -1083,12 +1049,12 @@
1083
1049
  if ( _execStack.length > 0 ) {
1084
1050
  return _execStack[_execStack.length - 1].name;
1085
1051
  }
1086
- return document.currentScript && document.currentScript.getAttribute("data-sap-ui-module");
1052
+ return document.currentScript?.getAttribute("data-sap-ui-module");
1087
1053
  }
1088
1054
 
1089
1055
  // --------------------------------------------------------------------------------------------
1090
1056
 
1091
- var _globalDefine,
1057
+ let _globalDefine,
1092
1058
  _globalDefineAMD;
1093
1059
 
1094
1060
  function updateDefineAndInterceptAMDFlag(newDefine) {
@@ -1114,16 +1080,16 @@
1114
1080
 
1115
1081
  Object.defineProperty(_globalDefine, "amd", {
1116
1082
  get: function() {
1117
- var sCurrentModule = getExecutingModule();
1118
- if ( sCurrentModule && mShims[sCurrentModule] && mShims[sCurrentModule].amd ) {
1119
- log.debug("suppressing define.amd for " + sCurrentModule);
1083
+ const sCurrentModule = getExecutingModule();
1084
+ if ( sCurrentModule && mShims[sCurrentModule]?.amd ) {
1085
+ log.debug(`suppressing define.amd for ${sCurrentModule}`);
1120
1086
  return undefined;
1121
1087
  }
1122
1088
  return _globalDefineAMD;
1123
1089
  },
1124
1090
  set: function(newDefineAMD) {
1125
1091
  _globalDefineAMD = newDefineAMD;
1126
- log.debug("define.amd became " + (newDefineAMD ? "active" : "unset"));
1092
+ log.debug(`define.amd became ${newDefineAMD ? "active" : "unset"}`);
1127
1093
  },
1128
1094
  configurable: true // we have to allow a redefine for debug mode or restart from CDN etc.
1129
1095
  });
@@ -1137,7 +1103,7 @@
1137
1103
  },
1138
1104
  set: function(newDefine) {
1139
1105
  updateDefineAndInterceptAMDFlag(newDefine);
1140
- log.debug("define became " + (newDefine ? "active" : "unset"));
1106
+ log.debug(`define became ${newDefine ? "active" : "unset"}`);
1141
1107
  },
1142
1108
  configurable: true // we have to allow a redefine for debug mode or restart from CDN etc.
1143
1109
  });
@@ -1150,7 +1116,7 @@
1150
1116
  // --------------------------------------------------------------------------------------------
1151
1117
 
1152
1118
  function isModuleError(err) {
1153
- return err && err.name === "ModuleError";
1119
+ return err?.name === "ModuleError";
1154
1120
  }
1155
1121
 
1156
1122
  /**
@@ -1171,11 +1137,11 @@
1171
1137
  * @returns {Error} New module error
1172
1138
  */
1173
1139
  function makeModuleError(template, module, cause) {
1174
- var modules = "'" + module.name + "'";
1140
+ let modules = `'${module.name}'`;
1175
1141
 
1176
1142
  if (isModuleError(cause)) {
1177
1143
  // update the chain of modules (increasing the indent)
1178
- modules = modules + "\n -> " + cause._modules.replace(/ -> /g, " -> ");
1144
+ modules += `\n -> ${cause._modules.replace(/ -> /g, " -> ")}`;
1179
1145
  // omit repeated occurrences of the same kind of error
1180
1146
  if ( template === cause._template ) {
1181
1147
  cause = cause.cause;
@@ -1183,14 +1149,14 @@
1183
1149
  }
1184
1150
 
1185
1151
  // create the message string from the template and the cause's message
1186
- var message =
1152
+ const message =
1187
1153
  template.replace(/\{id\}/, modules).replace(/\{url\}/, module.url)
1188
1154
  + (cause ? ": " + cause.message : "");
1189
1155
 
1190
- var error = new Error(message);
1156
+ const error = new Error(message);
1191
1157
  error.name = "ModuleError";
1192
1158
  error.cause = cause;
1193
- if ( cause && cause.stack ) {
1159
+ if ( cause?.stack ) {
1194
1160
  error.stack = error.stack + "\nCaused by: " + cause.stack;
1195
1161
  }
1196
1162
  // the following properties are only for internal usage
@@ -1200,19 +1166,17 @@
1200
1166
  }
1201
1167
 
1202
1168
  function declareModule(sModuleName) {
1203
- var oModule;
1204
-
1205
1169
  // sModuleName must be a unified resource name of type .js
1206
1170
  assert(/\.js$/.test(sModuleName), "must be a Javascript module");
1207
1171
 
1208
- oModule = Module.get(sModuleName);
1172
+ const oModule = Module.get(sModuleName);
1209
1173
 
1210
1174
  if ( oModule.state > INITIAL ) {
1211
1175
  return oModule;
1212
1176
  }
1213
1177
 
1214
1178
  if ( log.isLoggable() ) {
1215
- log.debug(sLogPrefix + "declare module '" + sModuleName + "'");
1179
+ log.debug(`${sLogPrefix}declare module '${sModuleName}'`);
1216
1180
  }
1217
1181
 
1218
1182
  // avoid cycles
@@ -1241,7 +1205,7 @@
1241
1205
  * @param {boolean} [nested] Whether this is a nested queue used during sync execution of a module
1242
1206
  */
1243
1207
  function ModuleDefinitionQueue(nested) {
1244
- var aQueue = [],
1208
+ let aQueue = [],
1245
1209
  iRun = 0,
1246
1210
  vTimer;
1247
1211
 
@@ -1252,7 +1216,7 @@
1252
1216
  + " to define queue #" + iRun);
1253
1217
  }
1254
1218
 
1255
- var sModule = document.currentScript && document.currentScript.getAttribute('data-sap-ui-module');
1219
+ const sModule = document.currentScript?.getAttribute('data-sap-ui-module');
1256
1220
  aQueue.push({
1257
1221
  name: name,
1258
1222
  deps: deps,
@@ -1286,26 +1250,22 @@
1286
1250
  * @param {string} [sInitiator] A string describing the caller of <code>process</code>
1287
1251
  */
1288
1252
  this.process = function(oRequestedModule, sInitiator) {
1289
- var bLoggable = log.isLoggable(),
1290
- iCurrentRun = iRun++,
1291
- aQueueCopy = aQueue,
1292
- sModuleName = null;
1253
+ const bLoggable = log.isLoggable();
1254
+ const aQueueCopy = aQueue;
1255
+ const iCurrentRun = iRun++;
1256
+ let sModuleName = null;
1293
1257
 
1294
1258
  // clear the queue and timer early, we've already taken a copy of the queue
1295
1259
  this.clear();
1296
1260
 
1297
1261
 
1298
- if ( oRequestedModule ) {
1299
-
1300
- // if a module execution error was detected, stop processing the queue
1301
- if ( oRequestedModule.execError ) {
1302
- if ( bLoggable ) {
1303
- log.debug("module execution error detected, ignoring queued define calls (" + aQueueCopy.length + ")");
1304
- }
1305
- oRequestedModule.fail(oRequestedModule.execError);
1306
- return;
1262
+ // if a module execution error was detected, stop processing the queue
1263
+ if ( oRequestedModule?.execError ) {
1264
+ if ( bLoggable ) {
1265
+ log.debug(`module execution error detected, ignoring queued define calls (${aQueueCopy.length})`);
1307
1266
  }
1308
-
1267
+ oRequestedModule.fail(oRequestedModule.execError);
1268
+ return;
1309
1269
  }
1310
1270
 
1311
1271
  /*
@@ -1317,10 +1277,10 @@
1317
1277
  * - when the name of a named module definition matches the name of requested module, the name is 'consumed'.
1318
1278
  * Any later unnamed module definition will be reported as an error, too
1319
1279
  */
1320
- sModuleName = oRequestedModule && oRequestedModule.name;
1280
+ sModuleName = oRequestedModule?.name;
1321
1281
 
1322
1282
  // check whether there's a module definition for the requested module
1323
- aQueueCopy.forEach(function(oEntry) {
1283
+ aQueueCopy.forEach((oEntry) => {
1324
1284
  if ( oEntry.name == null ) {
1325
1285
  if ( sModuleName != null ) {
1326
1286
  oEntry.name = sModuleName;
@@ -1328,7 +1288,7 @@
1328
1288
  } else {
1329
1289
  // multiple modules have been queued, but only one module can inherit the name from the require call
1330
1290
  if ( strictModuleDefinitions ) {
1331
- var oError = new Error(
1291
+ const oError = new Error(
1332
1292
  "Modules that use an anonymous define() call must be loaded with a require() call; " +
1333
1293
  "they must not be executed via script tag or nested into other modules. ");
1334
1294
  if ( oRequestedModule ) {
@@ -1338,7 +1298,7 @@
1338
1298
  }
1339
1299
  }
1340
1300
  // give anonymous modules a unique pseudo ID
1341
- oEntry.name = '~anonymous~' + (++iAnonymousModuleCount) + '.js';
1301
+ oEntry.name = `~anonymous~${++iAnonymousModuleCount}.js`;
1342
1302
  log.error(
1343
1303
  "Modules that use an anonymous define() call must be loaded with a require() call; " +
1344
1304
  "they must not be executed via script tag or nested into other modules. " +
@@ -1361,7 +1321,7 @@
1361
1321
  if ( bLoggable ) {
1362
1322
  log.debug(
1363
1323
  "No queued module definition matches the ID of the request. " +
1364
- "Now assuming that the first definition '" + aQueueCopy[0].name + "' is an alias of '" + sModuleName + "'");
1324
+ `Now assuming that the first definition '${aQueueCopy[0].name}' is an alias of '${sModuleName}'`);
1365
1325
  }
1366
1326
  Module.get(aQueueCopy[0].name).addAlias(sModuleName);
1367
1327
  sModuleName = null;
@@ -1371,10 +1331,10 @@
1371
1331
  log.debug(sLogPrefix + "[" + sInitiator + "] "
1372
1332
  + "processing define queue #" + iCurrentRun
1373
1333
  + (oRequestedModule ? " for '" + oRequestedModule.name + "'" : "")
1374
- + " with entries [" + aQueueCopy.map(function(entry) { return "'" + entry.name + "'"; }) + "]");
1334
+ + ` with entries [${aQueueCopy.map((entry) => `'${entry.name}'`)}]`);
1375
1335
  }
1376
1336
 
1377
- aQueueCopy.forEach(function(oEntry) {
1337
+ aQueueCopy.forEach((oEntry) => {
1378
1338
  // start to resolve the dependencies
1379
1339
  executeModuleDefinition(oEntry.name, oEntry.deps, oEntry.factory, oEntry._export, /* bAsync = */ true);
1380
1340
  });
@@ -1389,12 +1349,12 @@
1389
1349
  }
1390
1350
 
1391
1351
  if ( bLoggable ) {
1392
- log.debug(sLogPrefix + "processing define queue #" + iCurrentRun + " done");
1352
+ log.debug(sLogPrefix + `processing define queue #${iCurrentRun} done`);
1393
1353
  }
1394
1354
  };
1395
1355
  }
1396
1356
 
1397
- var queue = new ModuleDefinitionQueue();
1357
+ let queue = new ModuleDefinitionQueue();
1398
1358
 
1399
1359
  /**
1400
1360
  * Loads the source for the given module with a sync XHR.
@@ -1402,7 +1362,7 @@
1402
1362
  * @throws {Error} When loading failed for some reason.
1403
1363
  */
1404
1364
  function loadSyncXHR(oModule) {
1405
- var xhr = new XMLHttpRequest();
1365
+ const xhr = new XMLHttpRequest();
1406
1366
 
1407
1367
  function createXHRLoadError(error) {
1408
1368
  error = new Error(xhr.statusText ? xhr.status + " - " + xhr.statusText : xhr.status);
@@ -1439,12 +1399,12 @@
1439
1399
  * @private
1440
1400
  */
1441
1401
  window.addEventListener('error', function onUncaughtError(errorEvent) {
1442
- var sModuleName = document.currentScript && document.currentScript.getAttribute('data-sap-ui-module');
1402
+ var sModuleName = document.currentScript?.getAttribute('data-sap-ui-module');
1443
1403
  var oModule = sModuleName && Module.get(sModuleName);
1444
1404
  if ( oModule && oModule.execError == null ) {
1445
1405
  // if a currently executing module can be identified, attach the error to it and suppress reporting
1446
1406
  if ( log.isLoggable() ) {
1447
- log.debug("unhandled exception occurred while executing " + sModuleName + ": " + errorEvent.message);
1407
+ log.debug(`unhandled exception occurred while executing ${sModuleName}: ${errorEvent.message}`);
1448
1408
  }
1449
1409
  oModule.execError = errorEvent.error || {
1450
1410
  name: 'Error',
@@ -1456,12 +1416,20 @@
1456
1416
 
1457
1417
  function loadScript(oModule, sAlternativeURL) {
1458
1418
 
1459
- var oScript;
1419
+ const oScript = document.createElement('SCRIPT');
1420
+ // Accessing the 'src' property of the script in this strange way prevents Safari 12 (or WebKit) from
1421
+ // wrongly optimizing access. SF12 seems to check at optimization time whether there's a setter for the
1422
+ // property and optimize accordingly. When a setter is defined or changed at a later point in time (e.g.
1423
+ // by the AppCacheBuster), then the optimization seems not to be updated and the new setter is ignored
1424
+ // BCP 1970035485
1425
+ oScript["s" + "rc"] = oModule.url;
1426
+ //oScript.src = oModule.url;
1427
+ oScript.setAttribute("data-sap-ui-module", oModule.name);
1460
1428
 
1461
1429
  function onload(e) {
1462
1430
  updateMaxTaskTime();
1463
1431
  if ( log.isLoggable() ) {
1464
- log.debug("JavaScript resource loaded: " + oModule.name);
1432
+ log.debug(`JavaScript resource loaded: ${oModule.name}`);
1465
1433
  }
1466
1434
  oScript.removeEventListener('load', onload);
1467
1435
  oScript.removeEventListener('error', onerror);
@@ -1473,30 +1441,19 @@
1473
1441
  oScript.removeEventListener('load', onload);
1474
1442
  oScript.removeEventListener('error', onerror);
1475
1443
  if (sAlternativeURL) {
1476
- log.warning("retry loading JavaScript resource: " + oModule.name);
1477
- if (oScript && oScript.parentNode) {
1478
- oScript.parentNode.removeChild(oScript);
1479
- }
1444
+ log.warning(`retry loading JavaScript resource: ${oModule.name}`);
1445
+ oScript?.parentNode?.removeChild(oScript);
1480
1446
  oModule.url = sAlternativeURL;
1481
1447
  loadScript(oModule, /* sAlternativeURL= */ null);
1482
1448
  return;
1483
1449
  }
1484
1450
 
1485
- log.error("failed to load JavaScript resource: " + oModule.name);
1451
+ log.error(`failed to load JavaScript resource: ${oModule.name}`);
1486
1452
  oModule.failWith("failed to load {id} from {url}", new Error("script load error"));
1487
1453
  }
1488
1454
 
1489
- oScript = document.createElement('SCRIPT');
1490
- // Accessing the 'src' property of the script in this strange way prevents Safari 12 (or WebKit) from
1491
- // wrongly optimizing access. SF12 seems to check at optimization time whether there's a setter for the
1492
- // property and optimize accordingly. When a setter is defined or changed at a later point in time (e.g.
1493
- // by the AppCacheBuster), then the optimization seems not to be updated and the new setter is ignored
1494
- // BCP 1970035485
1495
- oScript["s" + "rc"] = oModule.url;
1496
- //oScript.src = oModule.url;
1497
- oScript.setAttribute("data-sap-ui-module", oModule.name);
1498
1455
  if ( sAlternativeURL !== undefined ) {
1499
- if ( mShims[oModule.name] && mShims[oModule.name].amd ) {
1456
+ if ( mShims[oModule.name]?.amd ) {
1500
1457
  oScript.setAttribute("data-sap-ui-module-amd", "true");
1501
1458
  }
1502
1459
  oScript.addEventListener('load', onload);
@@ -1507,10 +1464,10 @@
1507
1464
  }
1508
1465
 
1509
1466
  function preloadDependencies(sModuleName) {
1510
- var knownDependencies = mDepCache[sModuleName];
1467
+ const knownDependencies = mDepCache[sModuleName];
1511
1468
  if ( Array.isArray(knownDependencies) ) {
1512
- log.debug("preload dependencies for " + sModuleName + ": " + knownDependencies);
1513
- knownDependencies.forEach(function(dep) {
1469
+ log.debug(`preload dependencies for ${sModuleName}: ${knownDependencies}`);
1470
+ knownDependencies.forEach((dep) => {
1514
1471
  dep = getMappedName(dep, sModuleName);
1515
1472
  if ( /\.js$/.test(dep) ) {
1516
1473
  requireModule(null, dep, /* always async */ true);
@@ -1539,14 +1496,10 @@
1539
1496
  */
1540
1497
  function requireModule(oRequestingModule, sModuleName, bAsync, bSkipShimDeps, bSkipBundle) {
1541
1498
 
1542
- var bLoggable = log.isLoggable(),
1543
- oSplitName = urnToBaseIDAndSubType(sModuleName),
1544
- oShim = mShims[sModuleName],
1545
- oModule, aExtensions, i, sMsg, bExecutedNow;
1546
-
1547
1499
  // only for robustness, should not be possible by design (all callers append '.js')
1500
+ const oSplitName = urnToBaseIDAndSubType(sModuleName);
1548
1501
  if ( !oSplitName ) {
1549
- throw new Error("can only require Javascript module, not " + sModuleName);
1502
+ throw new Error(`can only require Javascript module, not ${sModuleName}`);
1550
1503
  }
1551
1504
 
1552
1505
  // Module names should not start with a "/"
@@ -1554,11 +1507,14 @@
1554
1507
  log.error("Module names that start with a slash should not be used, as they are reserved for future use.");
1555
1508
  }
1556
1509
 
1557
- oModule = Module.get(sModuleName);
1510
+ const bLoggable = log.isLoggable();
1511
+
1512
+ const oModule = Module.get(sModuleName);
1513
+ const oShim = mShims[sModuleName];
1558
1514
 
1559
1515
  // when there's a shim with dependencies for the module
1560
1516
  // resolve them first before requiring the module again with bSkipShimDeps = true
1561
- if ( oShim && oShim.deps && !bSkipShimDeps ) {
1517
+ if ( oShim?.deps && !bSkipShimDeps ) {
1562
1518
  if ( bLoggable ) {
1563
1519
  log.debug("require dependencies of raw module " + sModuleName);
1564
1520
  }
@@ -1575,8 +1531,7 @@
1575
1531
  // require the bundle first before requiring the module again with bSkipBundle = true
1576
1532
  if ( oModule.state === INITIAL && oModule.group && oModule.group !== sModuleName && !bSkipBundle ) {
1577
1533
  if ( bLoggable ) {
1578
- log.debug(sLogPrefix + "require bundle '" + oModule.group + "'"
1579
- + " containing '" + sModuleName + "'");
1534
+ log.debug(`${sLogPrefix}require bundle '${oModule.group}' containing '${sModuleName}'`);
1580
1535
  }
1581
1536
  if ( bAsync ) {
1582
1537
  return requireModule(null, oModule.group, bAsync).catch(noop).then(function() {
@@ -1602,6 +1557,8 @@
1602
1557
  // check if module has been loaded already
1603
1558
  if ( oModule.state !== INITIAL ) {
1604
1559
 
1560
+ let bExecutedNow = false;
1561
+
1605
1562
  if ( oModule.state === EXECUTING && oModule.data != null && !bAsync && oModule.async ) {
1606
1563
  oModule.state = PRELOADED;
1607
1564
  oModule.async = bAsync;
@@ -1663,10 +1620,10 @@
1663
1620
  oModule.async = bAsync;
1664
1621
 
1665
1622
  // if debug is enabled, try to load debug module first
1666
- aExtensions = bDebugSources ? ["-dbg", ""] : [""];
1623
+ const aExtensions = bDebugSources ? ["-dbg", ""] : [""];
1667
1624
  if ( !bAsync ) {
1668
1625
 
1669
- for (i = 0; i < aExtensions.length && oModule.state !== LOADED; i++) {
1626
+ for (let i = 0; i < aExtensions.length && oModule.state !== LOADED; i++) {
1670
1627
  // create module URL for the current extension
1671
1628
  oModule.url = getResourcePath(oSplitName.baseID, aExtensions[i] + oSplitName.subType);
1672
1629
  if ( bLoggable ) {
@@ -1674,7 +1631,7 @@
1674
1631
  }
1675
1632
 
1676
1633
  if ( syncCallBehavior ) {
1677
- sMsg = "[nosync] loading module '" + oModule.url + "'";
1634
+ const sMsg = "[nosync] loading module '" + oModule.url + "'";
1678
1635
  if ( syncCallBehavior === 1 ) {
1679
1636
  log.error(sMsg);
1680
1637
  } else {
@@ -1708,7 +1665,7 @@
1708
1665
 
1709
1666
  oModule.url = getResourcePath(oSplitName.baseID, aExtensions[0] + oSplitName.subType);
1710
1667
  // in debug mode, fall back to the non-dbg source, otherwise try the same source again (for SSO re-connect)
1711
- var sAltUrl = bDebugSources ? getResourcePath(oSplitName.baseID, aExtensions[1] + oSplitName.subType) : oModule.url;
1668
+ const sAltUrl = bDebugSources ? getResourcePath(oSplitName.baseID, aExtensions[1] + oSplitName.subType) : oModule.url;
1712
1669
 
1713
1670
  if ( log.isLoggable() ) {
1714
1671
  log.debug(sLogPrefix + "loading '" + sModuleName + "' from '" + oModule.url + "' (using <script>)");
@@ -1728,14 +1685,14 @@
1728
1685
  // sModuleName must be a normalized resource name of type .js
1729
1686
  function execModule(sModuleName, bAsync) {
1730
1687
 
1731
- var oModule = mModules[sModuleName],
1732
- bLoggable = log.isLoggable(),
1733
- sOldPrefix, sScript, oMatch, bOldForceSyncDefines, oOldQueue;
1688
+ const oModule = mModules[sModuleName];
1734
1689
 
1735
1690
  if ( oModule && oModule.state === LOADED && typeof oModule.data !== "undefined" ) {
1736
1691
 
1737
- bOldForceSyncDefines = bForceSyncDefines;
1738
- oOldQueue = queue;
1692
+ const bLoggable = log.isLoggable();
1693
+ const bOldForceSyncDefines = bForceSyncDefines;
1694
+ const oOldQueue = queue;
1695
+ let sOldPrefix, sScript;
1739
1696
 
1740
1697
  try {
1741
1698
 
@@ -1773,7 +1730,7 @@
1773
1730
  // Note: Chrome ignores debug files when the same URL has already been load via sourcemap of the bootstrap file (sap-ui-core)
1774
1731
  // Note: sourcemap annotations URLs in eval'ed sources are resolved relative to the page, not relative to the source
1775
1732
  if (sScript ) {
1776
- oMatch = /\/\/[#@] source(Mapping)?URL=(.*)$/.exec(sScript);
1733
+ const oMatch = /\/\/[#@] source(Mapping)?URL=(.*)$/.exec(sScript);
1777
1734
  if ( oMatch && oMatch[1] && /^[^/]+\.js\.map$/.test(oMatch[2]) ) {
1778
1735
  // found a sourcemap annotation with a typical UI5 generated relative URL
1779
1736
  sScript = sScript.slice(0, oMatch.index) + oMatch[0].slice(0, -oMatch[2].length) + resolveURL(oMatch[2], oModule.url);
@@ -1833,8 +1790,9 @@
1833
1790
 
1834
1791
  function requireAll(oRequestingModule, aDependencies, fnCallback, fnErrCallback, bAsync) {
1835
1792
 
1836
- var sBaseName, aModules = [],
1837
- i, sDepModName, oError, oPromise;
1793
+ const aModules = [];
1794
+ let sBaseName,
1795
+ oError;
1838
1796
 
1839
1797
  try {
1840
1798
  // calculate the base name for relative module names
@@ -1845,20 +1803,20 @@
1845
1803
  oRequestingModule = null;
1846
1804
  }
1847
1805
  aDependencies = aDependencies.slice();
1848
- for (i = 0; i < aDependencies.length; i++) {
1806
+ for (let i = 0; i < aDependencies.length; i++) {
1849
1807
  aDependencies[i] = getMappedName(aDependencies[i] + '.js', sBaseName);
1850
1808
  }
1851
1809
  if ( oRequestingModule ) {
1852
1810
  // remember outgoing dependencies to be able to detect cycles, but ignore pseudo-dependencies
1853
- aDependencies.forEach(function(dep) {
1811
+ aDependencies.forEach((dep) => {
1854
1812
  if ( !/^(require|exports|module)\.js$/.test(dep) ) {
1855
1813
  oRequestingModule.addPending(dep);
1856
1814
  }
1857
1815
  });
1858
1816
  }
1859
1817
 
1860
- for (i = 0; i < aDependencies.length; i++) {
1861
- sDepModName = aDependencies[i];
1818
+ for (let i = 0; i < aDependencies.length; i++) {
1819
+ const sDepModName = aDependencies[i];
1862
1820
  if ( oRequestingModule ) {
1863
1821
  switch ( sDepModName ) {
1864
1822
  case 'require.js':
@@ -1886,7 +1844,7 @@
1886
1844
  }
1887
1845
 
1888
1846
  if ( bAsync ) {
1889
- oPromise = oError ? Promise.reject(oError) : Promise.all(aModules);
1847
+ const oPromise = oError ? Promise.reject(oError) : Promise.all(aModules);
1890
1848
  return oPromise.then(fnCallback, fnErrCallback);
1891
1849
  } else {
1892
1850
  if ( oError ) {
@@ -1898,16 +1856,16 @@
1898
1856
  }
1899
1857
 
1900
1858
  function executeModuleDefinition(sResourceName, aDependencies, vFactory, bExport, bAsync) {
1901
- var bLoggable = log.isLoggable();
1859
+ const bLoggable = log.isLoggable();
1902
1860
  sResourceName = normalize(sResourceName);
1903
1861
 
1904
1862
  if ( bLoggable ) {
1905
1863
  log.debug(sLogPrefix + "define('" + sResourceName + "', " + "['" + aDependencies.join("','") + "']" + ")");
1906
1864
  }
1907
1865
 
1908
- var oModule = declareModule(sResourceName);
1866
+ const oModule = declareModule(sResourceName);
1909
1867
 
1910
- var repeatedExecutionReported = false;
1868
+ let repeatedExecutionReported = false;
1911
1869
 
1912
1870
  function shouldSkipExecution() {
1913
1871
  if ( oModule.settled ) {
@@ -1956,7 +1914,7 @@
1956
1914
 
1957
1915
  if ( bExport && syncCallBehavior !== 2 ) {
1958
1916
  // ensure parent namespace
1959
- var aPackages = sResourceName.split('/');
1917
+ const aPackages = sResourceName.split('/');
1960
1918
  if ( aPackages.length > 1 ) {
1961
1919
  getGlobalObject(__global, aPackages, aPackages.length - 1, true);
1962
1920
  }
@@ -1968,15 +1926,15 @@
1968
1926
  // then that value should be assigned as the exported value for the module."
1969
1927
  try {
1970
1928
  aModules = aModules.map(unwrapExport);
1971
- var exports = vFactory.apply(__global, aModules);
1972
- if ( oModule._api && oModule._api.exports !== undefined && oModule._api.exports !== oModule._exports ) {
1929
+ let exports = vFactory.apply(__global, aModules);
1930
+ if ( oModule._api?.exports !== undefined && oModule._api.exports !== oModule._exports ) {
1973
1931
  exports = oModule._api.exports;
1974
1932
  } else if ( exports === undefined && oModule._exports ) {
1975
1933
  exports = oModule._exports;
1976
1934
  }
1977
1935
  oModule.content = exports;
1978
1936
  } catch (error) {
1979
- var wrappedError = oModule.failWith("failed to execute module factory for '{id}'", error);
1937
+ const wrappedError = oModule.failWith("failed to execute module factory for '{id}'", error);
1980
1938
  if ( bAsync ) {
1981
1939
  // Note: in async mode, the error is reported via the oModule's promise
1982
1940
  return;
@@ -1990,13 +1948,13 @@
1990
1948
  // HACK: global export
1991
1949
  if ( bExport && syncCallBehavior !== 2 ) {
1992
1950
  if ( oModule.content == null ) {
1993
- log.error("Module '" + sResourceName + "' returned no content, but should export to global?");
1951
+ log.error(`Module '${sResourceName}' returned no content, but should export to global?`);
1994
1952
  } else {
1995
1953
  if ( bLoggable ) {
1996
- log.debug("exporting content of '" + sResourceName + "': as global object");
1954
+ log.debug(`exporting content of '${sResourceName}': as global object`);
1997
1955
  }
1998
1956
  // convert module name to UI5 module name syntax (might fail!)
1999
- var sModuleName = urnToUI5(sResourceName);
1957
+ const sModuleName = urnToUI5(sResourceName);
2000
1958
  setGlobalProperty(sModuleName, oModule.content);
2001
1959
  }
2002
1960
  }
@@ -2007,7 +1965,7 @@
2007
1965
 
2008
1966
  // Note: dependencies will be resolved and converted from RJS to URN inside requireAll
2009
1967
  requireAll(oModule, aDependencies, bAsync && oModule.data ? scheduleExecution(onSuccess) : onSuccess, function(oErr) {
2010
- var oWrappedError = oModule.failWith("Failed to resolve dependencies of {id}", oErr);
1968
+ const oWrappedError = oModule.failWith("Failed to resolve dependencies of {id}", oErr);
2011
1969
  if ( !bAsync ) {
2012
1970
  throw oWrappedError;
2013
1971
  }
@@ -2017,8 +1975,7 @@
2017
1975
  }
2018
1976
 
2019
1977
  function ui5Define(sModuleName, aDependencies, vFactory, bExport) {
2020
- var sResourceName,
2021
- oCurrentExecInfo;
1978
+ let sResourceName;
2022
1979
 
2023
1980
  // optional id
2024
1981
  if ( typeof sModuleName === 'string' ) {
@@ -2046,7 +2003,7 @@
2046
2003
  if ( bForceSyncDefines === false || (bForceSyncDefines == null && bGlobalAsyncMode) ) {
2047
2004
  queue.push(sResourceName, aDependencies, vFactory, bExport);
2048
2005
  if ( sResourceName != null ) {
2049
- var oModule = Module.get(sResourceName);
2006
+ const oModule = Module.get(sResourceName);
2050
2007
  if ( oModule.state === INITIAL ) {
2051
2008
  oModule.state = EXECUTING;
2052
2009
  oModule.async = true;
@@ -2056,7 +2013,7 @@
2056
2013
  }
2057
2014
 
2058
2015
  // immediate, synchronous execution
2059
- oCurrentExecInfo = _execStack.length > 0 ? _execStack[_execStack.length - 1] : null;
2016
+ const oCurrentExecInfo = _execStack.length > 0 ? _execStack[_execStack.length - 1] : null;
2060
2017
  if ( !sResourceName ) {
2061
2018
 
2062
2019
  if ( oCurrentExecInfo && !oCurrentExecInfo.used ) {
@@ -2064,7 +2021,7 @@
2064
2021
  oCurrentExecInfo.used = true;
2065
2022
  } else {
2066
2023
  // give anonymous modules a unique pseudo ID
2067
- sResourceName = '~anonymous~' + (++iAnonymousModuleCount) + '.js';
2024
+ sResourceName = `~anonymous~${++iAnonymousModuleCount}.js`;
2068
2025
  if ( oCurrentExecInfo ) {
2069
2026
  sResourceName = oCurrentExecInfo.name.slice(0, oCurrentExecInfo.name.lastIndexOf('/') + 1) + sResourceName;
2070
2027
  }
@@ -2074,8 +2031,8 @@
2074
2031
  "All other usages will fail in future releases or when standard AMD loaders are used " +
2075
2032
  "or when ui5loader runs in async mode. Now using substitute name " + sResourceName);
2076
2033
  }
2077
- } else if ( oCurrentExecInfo && !oCurrentExecInfo.used && sResourceName !== oCurrentExecInfo.name ) {
2078
- log.debug("module names don't match: requested: " + sModuleName + ", defined: ", oCurrentExecInfo.name);
2034
+ } else if ( oCurrentExecInfo?.used && sResourceName !== oCurrentExecInfo.name ) {
2035
+ log.debug(`module names don't match: requested: ${sModuleName}, defined: ${oCurrentExecInfo.name}`);
2079
2036
  Module.get(oCurrentExecInfo.name).addAlias(sModuleName);
2080
2037
  }
2081
2038
  executeModuleDefinition(sResourceName, aDependencies, vFactory, bExport, /* bAsync = */ false);
@@ -2088,8 +2045,8 @@
2088
2045
  * mode (has to be configured explicitly).
2089
2046
  */
2090
2047
  function amdDefine(sModuleName, aDependencies, vFactory) {
2091
- var oArgs = arguments;
2092
- var bExportIsSet = typeof oArgs[oArgs.length - 1] === "boolean";
2048
+ let oArgs = arguments;
2049
+ const bExportIsSet = typeof oArgs[oArgs.length - 1] === "boolean";
2093
2050
 
2094
2051
  // bExport parameter is proprietary and should not be used for an AMD compliant define()
2095
2052
  if (bExportIsSet) {
@@ -2110,17 +2067,15 @@
2110
2067
  * @returns {function} Require function.
2111
2068
  */
2112
2069
  function createContextualRequire(sContextName, bAMDCompliance) {
2113
- var fnRequire = function(vDependencies, fnCallback, fnErrCallback) {
2114
- var sModuleName;
2115
-
2070
+ const fnRequire = function(vDependencies, fnCallback, fnErrCallback) {
2116
2071
  assert(typeof vDependencies === 'string' || Array.isArray(vDependencies), "dependency param either must be a single string or an array of strings");
2117
2072
  assert(fnCallback == null || typeof fnCallback === 'function', "callback must be a function or null/undefined");
2118
2073
  assert(fnErrCallback == null || typeof fnErrCallback === 'function', "error callback must be a function or null/undefined");
2119
2074
 
2120
2075
  // Probing for existing module
2121
2076
  if ( typeof vDependencies === 'string' ) {
2122
- sModuleName = getMappedName(vDependencies + '.js', sContextName);
2123
- var oModule = Module.get(sModuleName);
2077
+ const sModuleName = getMappedName(vDependencies + '.js', sContextName);
2078
+ const oModule = Module.get(sModuleName);
2124
2079
 
2125
2080
  // check the modules internal state
2126
2081
  // everything from PRELOADED to LOADED (incl. FAILED) is considered erroneous
@@ -2165,7 +2120,7 @@
2165
2120
  // return undefined;
2166
2121
  };
2167
2122
  fnRequire.toUrl = function(sName) {
2168
- var sMappedName = ensureTrailingSlash(getMappedName(sName, sContextName), sName);
2123
+ const sMappedName = ensureTrailingSlash(getMappedName(sName, sContextName), sName);
2169
2124
  return toUrl(sMappedName);
2170
2125
  };
2171
2126
  return fnRequire;
@@ -2181,7 +2136,7 @@
2181
2136
 
2182
2137
  function toUrl(sName) {
2183
2138
  if (sName.indexOf("/") === 0) {
2184
- throw new Error("The provided argument '" + sName + "' may not start with a slash");
2139
+ throw new Error(`The provided argument '${sName}' may not start with a slash`);
2185
2140
  }
2186
2141
  return ensureTrailingSlash(getResourcePath(sName), sName);
2187
2142
  }
@@ -2189,7 +2144,7 @@
2189
2144
  /*
2190
2145
  * UI5 version of require (sap.ui.require)
2191
2146
  */
2192
- var ui5Require = createContextualRequire(null, false);
2147
+ const ui5Require = createContextualRequire(null, false);
2193
2148
 
2194
2149
  /*
2195
2150
  * AMD version of require (window.require)
@@ -2198,12 +2153,12 @@
2198
2153
  * - require("my/module"), returns undefined if the module was not loaded yet
2199
2154
  * - amdRequire("my/module"), throws an error if the module was not loaded yet
2200
2155
  */
2201
- var amdRequire = createContextualRequire(null, true);
2156
+ const amdRequire = createContextualRequire(null, true);
2202
2157
 
2203
2158
  function requireSync(sModuleName) {
2204
2159
  sModuleName = getMappedName(sModuleName + '.js');
2205
2160
  if ( log.isLoggable() ) {
2206
- log.warning("sync require of '" + sModuleName + "'");
2161
+ log.warning(`sync require of '${sModuleName}'`);
2207
2162
  }
2208
2163
  return unwrapExport(requireModule(null, sModuleName, /* bAsync = */ false));
2209
2164
  }
@@ -2219,7 +2174,7 @@
2219
2174
  function preload(modules, group, url) {
2220
2175
  group = group || null;
2221
2176
  url = url || "<unknown>";
2222
- for ( var name in modules ) {
2177
+ for ( let name in modules ) {
2223
2178
  name = normalize(name);
2224
2179
  Module.get(name).preload(url + "/" + name, modules[name], group);
2225
2180
  }
@@ -2233,44 +2188,45 @@
2233
2188
  */
2234
2189
  function dumpInternals(iThreshold) {
2235
2190
 
2236
- var states = [PRELOADED, INITIAL, LOADED, READY, FAILED, EXECUTING, LOADING];
2237
- var stateNames = {};
2238
- stateNames[PRELOADED] = 'PRELOADED';
2239
- stateNames[INITIAL] = 'INITIAL';
2240
- stateNames[LOADING] = 'LOADING';
2241
- stateNames[LOADED] = 'LOADED';
2242
- stateNames[EXECUTING] = 'EXECUTING';
2243
- stateNames[READY] = 'READY';
2244
- stateNames[FAILED] = 'FAILED';
2191
+ const states = [PRELOADED, INITIAL, LOADED, READY, FAILED, EXECUTING, LOADING];
2192
+ const stateNames = {
2193
+ [PRELOADED]: 'PRELOADED',
2194
+ [INITIAL]:'INITIAL',
2195
+ [LOADING]: 'LOADING',
2196
+ [LOADED]: 'LOADED',
2197
+ [EXECUTING]: 'EXECUTING',
2198
+ [READY]: 'READY',
2199
+ [FAILED]: 'FAILED'
2200
+ };
2245
2201
 
2246
2202
  if ( iThreshold == null ) {
2247
2203
  iThreshold = PRELOADED;
2248
2204
  }
2249
2205
 
2250
2206
  /*eslint-disable no-console */
2251
- var info = log.isLoggable('INFO') ? log.info.bind(log) : console.info.bind(console);
2207
+ const info = log.isLoggable('INFO') ? log.info.bind(log) : console.info.bind(console);
2252
2208
  /*eslint-enable no-console */
2253
2209
 
2254
- var aModuleNames = Object.keys(mModules).sort();
2255
- states.forEach(function(state) {
2210
+ const aModuleNames = Object.keys(mModules).sort();
2211
+ states.forEach((state) => {
2256
2212
  if ( state < iThreshold ) {
2257
2213
  return;
2258
2214
  }
2259
- var count = 0;
2215
+ let count = 0;
2260
2216
  info(stateNames[state] + ":");
2261
- aModuleNames.forEach(function(sModule, idx) {
2262
- var oModule = mModules[sModule];
2217
+ aModuleNames.forEach((sModule, idx) => {
2218
+ const oModule = mModules[sModule];
2263
2219
  if ( oModule.state === state ) {
2264
- var addtlInfo;
2220
+ let addtlInfo;
2265
2221
  if ( oModule.state === LOADING ) {
2266
- var pending = oModule.pending && oModule.pending.reduce(function(acc, dep) {
2267
- var oDepModule = Module.get(dep);
2222
+ const pending = oModule.pending?.reduce((acc, dep) => {
2223
+ const oDepModule = Module.get(dep);
2268
2224
  if ( oDepModule.state !== READY ) {
2269
2225
  acc.push( dep + "(" + stateNames[oDepModule.state] + ")");
2270
2226
  }
2271
2227
  return acc;
2272
2228
  }, []);
2273
- if ( pending && pending.length > 0 ) {
2229
+ if ( pending?.length > 0 ) {
2274
2230
  addtlInfo = "waiting for " + pending.join(", ");
2275
2231
  }
2276
2232
  } else if ( oModule.state === FAILED ) {
@@ -2293,7 +2249,7 @@
2293
2249
  * @private
2294
2250
  */
2295
2251
  function getUrlPrefixes() {
2296
- var mUrlPrefixesCopy = Object.create(null);
2252
+ const mUrlPrefixesCopy = Object.create(null);
2297
2253
  forEach(mUrlPrefixes, function(sNamePrefix, oUrlInfo) {
2298
2254
  mUrlPrefixesCopy[sNamePrefix] = oUrlInfo.url;
2299
2255
  });
@@ -2311,8 +2267,7 @@
2311
2267
  * @private
2312
2268
  */
2313
2269
  function unloadResources(sName, bPreloadGroup, bUnloadAll, bDeleteExports) {
2314
- var aModules = [],
2315
- sURN, oModule;
2270
+ const aModules = [];
2316
2271
 
2317
2272
  if ( bPreloadGroup == null ) {
2318
2273
  bPreloadGroup = true;
@@ -2320,13 +2275,12 @@
2320
2275
 
2321
2276
  if ( bPreloadGroup ) {
2322
2277
  // collect modules that belong to the given group
2323
- for ( sURN in mModules ) {
2324
- oModule = mModules[sURN];
2278
+ for ( const sURN in mModules ) {
2279
+ const oModule = mModules[sURN];
2325
2280
  if ( oModule && oModule.group === sName ) {
2326
2281
  aModules.push(sURN);
2327
2282
  }
2328
2283
  }
2329
-
2330
2284
  } else {
2331
2285
  // single module
2332
2286
  if ( mModules[sName] ) {
@@ -2334,8 +2288,8 @@
2334
2288
  }
2335
2289
  }
2336
2290
 
2337
- aModules.forEach(function(sURN) {
2338
- var oModule = mModules[sURN];
2291
+ aModules.forEach((sURN) => {
2292
+ const oModule = mModules[sURN];
2339
2293
  if ( oModule && bDeleteExports && sURN.match(/\.js$/) ) {
2340
2294
  // @evo-todo move to compat layer?
2341
2295
  setGlobalProperty(urnToUI5(sURN), undefined);
@@ -2344,7 +2298,6 @@
2344
2298
  delete mModules[sURN];
2345
2299
  }
2346
2300
  });
2347
-
2348
2301
  }
2349
2302
 
2350
2303
  function getModuleContent(name, url) {
@@ -2353,7 +2306,7 @@
2353
2306
  } else {
2354
2307
  name = guessResourceName(url, true);
2355
2308
  }
2356
- var oModule = name && mModules[name];
2309
+ const oModule = name && mModules[name];
2357
2310
  if ( oModule ) {
2358
2311
  oModule.state = LOADED;
2359
2312
  return oModule.data;
@@ -2373,7 +2326,7 @@
2373
2326
  * @private
2374
2327
  */
2375
2328
  function getAllModules() {
2376
- var mSnapshot = Object.create(null);
2329
+ const mSnapshot = Object.create(null);
2377
2330
  forEach(mModules, function(sURN, oModule) {
2378
2331
  mSnapshot[sURN] = {
2379
2332
  state: oModule.state,
@@ -2385,24 +2338,24 @@
2385
2338
 
2386
2339
  function loadJSResourceAsync(sResource, bIgnoreErrors) {
2387
2340
  sResource = getMappedName(sResource);
2388
- var promise = requireModule(null, sResource, /* bAsync = */ true).then(unwrapExport);
2341
+ const promise = requireModule(null, sResource, /* bAsync = */ true).then(unwrapExport);
2389
2342
  return bIgnoreErrors ? promise.catch(noop) : promise;
2390
2343
  }
2391
2344
 
2392
2345
  // ---- config --------------------------------------------------------------------------------
2393
2346
 
2394
- var mUI5ConfigHandlers = {
2395
- baseUrl: function(url) {
2347
+ const mUI5ConfigHandlers = {
2348
+ baseUrl(url) {
2396
2349
  registerResourcePath("", url);
2397
2350
  },
2398
2351
  paths: registerResourcePath, // has length 2
2399
- shim: function(module, shim) {
2352
+ shim(module, shim) {
2400
2353
  if ( Array.isArray(shim) ) {
2401
2354
  shim = { deps : shim };
2402
2355
  }
2403
2356
  mShims[module + '.js'] = shim;
2404
2357
  },
2405
- amd: function(bValue) {
2358
+ amd(bValue) {
2406
2359
  bValue = !!bValue;
2407
2360
  if ( bExposeAsAMDLoader !== bValue ) {
2408
2361
  bExposeAsAMDLoader = bValue;
@@ -2421,38 +2374,38 @@
2421
2374
  }
2422
2375
  }
2423
2376
  },
2424
- async: function(async) {
2377
+ async(async) {
2425
2378
  if (bGlobalAsyncMode && !async) {
2426
2379
  throw new Error("Changing the ui5loader config from async to sync is not supported. Only a change from sync to async is allowed.");
2427
2380
  }
2428
2381
  bGlobalAsyncMode = !!async;
2429
2382
  },
2430
- bundles: function(bundle, modules) {
2383
+ bundles(bundle, modules) {
2431
2384
  bundle += '.js';
2432
- modules.forEach(function(module) {
2433
- Module.get(module + '.js').group = bundle;
2434
- });
2385
+ modules.forEach(
2386
+ (module) => { Module.get(module + '.js').group = bundle; }
2387
+ );
2435
2388
  },
2436
- bundlesUI5: function(bundle, resources) {
2437
- resources.forEach(function(module) {
2438
- Module.get(module).group = bundle;
2439
- });
2389
+ bundlesUI5(bundle, resources) {
2390
+ resources.forEach(
2391
+ (module) => { Module.get(module).group = bundle; }
2392
+ );
2440
2393
  },
2441
- debugSources: function(debug) {
2394
+ debugSources(debug) {
2442
2395
  bDebugSources = !!debug;
2443
2396
  },
2444
- depCache: function(module, deps) {
2445
- mDepCache[module + '.js'] = deps.map(function(dep) { return dep + '.js'; });
2397
+ depCache(module, deps) {
2398
+ mDepCache[module + '.js'] = deps.map((dep) => dep + '.js');
2446
2399
  },
2447
- depCacheUI5: function(module, deps) {
2400
+ depCacheUI5(module, deps) {
2448
2401
  mDepCache[module] = deps;
2449
2402
  },
2450
- ignoreBundledResources: function(filter) {
2403
+ ignoreBundledResources(filter) {
2451
2404
  if ( filter == null || typeof filter === 'function' ) {
2452
2405
  fnIgnorePreload = filter;
2453
2406
  }
2454
2407
  },
2455
- map: function(context, map) {
2408
+ map(context, map) {
2456
2409
  // @evo-todo ignore empty context, empty prefix?
2457
2410
  if ( map == null ) {
2458
2411
  delete mMaps[context];
@@ -2460,18 +2413,18 @@
2460
2413
  // SystemJS style config
2461
2414
  mMaps['*'][context] = map;
2462
2415
  } else {
2463
- mMaps[context] = mMaps[context] || Object.create(null);
2416
+ mMaps[context] ||= Object.create(null);
2464
2417
  forEach(map, function(alias, name) {
2465
2418
  mMaps[context][alias] = name;
2466
2419
  });
2467
2420
  }
2468
2421
  },
2469
- reportSyncCalls: function(report) {
2422
+ reportSyncCalls(report) {
2470
2423
  if ( report === 0 || report === 1 || report === 2 ) {
2471
2424
  syncCallBehavior = report;
2472
2425
  }
2473
2426
  },
2474
- noConflict: function(bValue) {
2427
+ noConflict(bValue) {
2475
2428
  log.warning("Config option 'noConflict' has been deprecated, use option 'amd' instead, if still needed.");
2476
2429
  mUI5ConfigHandlers.amd(!bValue);
2477
2430
  }
@@ -2481,9 +2434,9 @@
2481
2434
  * Config handlers used when amd mode is enabled.
2482
2435
  * References only methods defined in the AMD spec.
2483
2436
  */
2484
- var mAMDConfigHandlers = {
2437
+ const mAMDConfigHandlers = {
2485
2438
  baseUrl: mUI5ConfigHandlers.baseUrl,
2486
- paths: function (module, url) {
2439
+ paths(module, url) {
2487
2440
  registerResourcePath(module, resolveURL(url, getResourcePath("") + "/"));
2488
2441
  },
2489
2442
  map: mUI5ConfigHandlers.map,
@@ -2499,7 +2452,7 @@
2499
2452
  function handleConfigObject(oCfg, mHandlers) {
2500
2453
 
2501
2454
  function processConfig(key, value) {
2502
- var handler = mHandlers[key];
2455
+ const handler = mHandlers[key];
2503
2456
  if ( typeof handler === 'function' ) {
2504
2457
  if ( handler.length === 1) {
2505
2458
  handler(value);
@@ -2507,7 +2460,7 @@
2507
2460
  forEach(value, handler);
2508
2461
  }
2509
2462
  } else {
2510
- log.warning("configuration option " + key + " not supported (ignored)");
2463
+ log.warning(`configuration option ${key} not supported (ignored)`);
2511
2464
  }
2512
2465
  }
2513
2466
 
@@ -2551,80 +2504,71 @@
2551
2504
  ui5Require.load = function(context, url, id) {
2552
2505
  };
2553
2506
 
2554
- var privateAPI = {
2555
- amdDefine: amdDefine,
2556
- amdRequire: amdRequire,
2557
- config: ui5Config,
2558
- declareModule: function(sResourceName) {
2559
- /* void */ declareModule( normalize(sResourceName) );
2507
+ const privateAPI = {
2508
+
2509
+ // properties
2510
+ get assert() {
2511
+ return assert;
2560
2512
  },
2561
- defineModuleSync: defineModuleSync,
2562
- dump: dumpInternals,
2563
- getAllModules: getAllModules,
2564
- getModuleContent: getModuleContent,
2565
- getModuleState: function(sResourceName) {
2566
- return mModules[sResourceName] ? mModules[sResourceName].state : INITIAL;
2513
+ set assert(v) {
2514
+ assert = v;
2567
2515
  },
2568
- getResourcePath: getResourcePath,
2569
- getSyncCallBehavior: getSyncCallBehavior,
2570
- getUrlPrefixes: getUrlPrefixes,
2571
- loadJSResourceAsync: loadJSResourceAsync,
2572
- resolveURL: resolveURL,
2573
- guessResourceName: guessResourceName,
2574
- toUrl: toUrl,
2575
- unloadResources: unloadResources
2576
- };
2577
- Object.defineProperties(privateAPI, {
2578
- logger: {
2579
- get: function() {
2580
- return log;
2581
- },
2582
- set: function(v) {
2583
- log = v;
2584
- aEarlyLogs.forEach(function(earlyLog) {
2585
- log[earlyLog.level](earlyLog.message);
2586
- });
2587
- }
2516
+ get logger() {
2517
+ return log;
2588
2518
  },
2589
- measure: {
2590
- get: function() {
2591
- return measure;
2592
- },
2593
- set: function(v) {
2594
- measure = v;
2595
- }
2519
+ set logger(v) {
2520
+ log = v;
2521
+ aEarlyLogs.forEach(({level, message}) => log[level](message));
2596
2522
  },
2597
- assert: {
2598
- get: function() {
2599
- return assert;
2600
- },
2601
- set: function(v) {
2602
- assert = v;
2603
- }
2523
+ get measure() {
2524
+ return measure;
2604
2525
  },
2605
- translate: {
2606
- get: function() {
2607
- return translate;
2608
- },
2609
- set: function(v) {
2610
- translate = v;
2611
- }
2526
+ set measure(v) {
2527
+ measure = v;
2612
2528
  },
2613
- callbackInMicroTask: {
2614
- get: function() {
2615
- return simulateAsyncCallback === executeInMicroTask;
2616
- },
2617
- set: function(v) {
2618
- simulateAsyncCallback = v ? executeInMicroTask : executeInSeparateTask;
2619
- }
2529
+ get translate() {
2530
+ return translate;
2620
2531
  },
2621
- maxTaskDuration: {
2622
- get: function() {
2623
- return iMaxTaskDuration;
2624
- },
2625
- set: updateMaxTaskDuration
2626
- }
2627
- });
2532
+ set translate(v) {
2533
+ translate = v;
2534
+ },
2535
+ get callbackInMicroTask() {
2536
+ return simulateAsyncCallback === executeInMicroTask;
2537
+ },
2538
+ set callbackInMicroTask(v) {
2539
+ simulateAsyncCallback = v ? executeInMicroTask : executeInSeparateTask;
2540
+ },
2541
+ get maxTaskDuration() {
2542
+ return iMaxTaskDuration;
2543
+ },
2544
+ set maxTaskDuration(v) {
2545
+ updateMaxTaskDuration(v);
2546
+ },
2547
+
2548
+ // methods
2549
+ amdDefine,
2550
+ amdRequire,
2551
+ config: ui5Config,
2552
+ declareModule(sResourceName) {
2553
+ /* void */ declareModule( normalize(sResourceName) );
2554
+ },
2555
+ defineModuleSync,
2556
+ dump: dumpInternals,
2557
+ getAllModules,
2558
+ getModuleContent,
2559
+ getModuleState(sResourceName) {
2560
+ return mModules[sResourceName] ? mModules[sResourceName].state : INITIAL;
2561
+ },
2562
+ getResourcePath,
2563
+ getSyncCallBehavior,
2564
+ getUrlPrefixes,
2565
+ loadJSResourceAsync,
2566
+ resolveURL,
2567
+ guessResourceName,
2568
+ toUrl,
2569
+ unloadResources
2570
+ };
2571
+
2628
2572
 
2629
2573
  // establish APIs in the sap.ui namespace
2630
2574
 
@@ -3302,4 +3246,4 @@
3302
3246
  */
3303
3247
  sap.ui.requireSync = requireSync;
3304
3248
 
3305
- }(window));
3249
+ }(globalThis));