@openui5/sap.ui.core 1.136.4 → 1.136.6

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 (260) hide show
  1. package/package.json +1 -1
  2. package/src/jquery.sap.global.js +1 -1
  3. package/src/jquery.sap.properties.js +1 -1
  4. package/src/jquery.sap.resources.js +1 -1
  5. package/src/jquery.sap.script.js +1 -1
  6. package/src/jquery.sap.storage.js +3 -3
  7. package/src/sap/base/Event.js +1 -1
  8. package/src/sap/base/Eventing.js +1 -1
  9. package/src/sap/base/config.js +1 -1
  10. package/src/sap/base/i18n/LanguageTag.js +1 -1
  11. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  12. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  13. package/src/sap/base/util/restricted/_castArray.js +1 -1
  14. package/src/sap/base/util/restricted/_compact.js +1 -1
  15. package/src/sap/base/util/restricted/_curry.js +1 -1
  16. package/src/sap/base/util/restricted/_debounce.js +1 -1
  17. package/src/sap/base/util/restricted/_difference.js +1 -1
  18. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  19. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  20. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  23. package/src/sap/base/util/restricted/_flatten.js +1 -1
  24. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  25. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  26. package/src/sap/base/util/restricted/_intersection.js +1 -1
  27. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  28. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  29. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  30. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  31. package/src/sap/base/util/restricted/_isNil.js +1 -1
  32. package/src/sap/base/util/restricted/_max.js +1 -1
  33. package/src/sap/base/util/restricted/_merge.js +1 -1
  34. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  35. package/src/sap/base/util/restricted/_min.js +1 -1
  36. package/src/sap/base/util/restricted/_omit.js +1 -1
  37. package/src/sap/base/util/restricted/_pick.js +1 -1
  38. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  39. package/src/sap/base/util/restricted/_throttle.js +1 -1
  40. package/src/sap/base/util/restricted/_toArray.js +1 -1
  41. package/src/sap/base/util/restricted/_union.js +1 -1
  42. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  43. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  44. package/src/sap/base/util/restricted/_uniq.js +1 -1
  45. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  46. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  47. package/src/sap/base/util/restricted/_without.js +1 -1
  48. package/src/sap/base/util/restricted/_xor.js +1 -1
  49. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  50. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  51. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  52. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  53. package/src/sap/ui/Device.js +3 -3
  54. package/src/sap/ui/Global.js +3 -3
  55. package/src/sap/ui/base/Event.js +1 -1
  56. package/src/sap/ui/base/EventProvider.js +1 -1
  57. package/src/sap/ui/base/Interface.js +1 -1
  58. package/src/sap/ui/base/ManagedObject.js +1 -1
  59. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  60. package/src/sap/ui/base/Metadata.js +1 -1
  61. package/src/sap/ui/base/Object.js +1 -1
  62. package/src/sap/ui/base/ObjectPool.js +1 -1
  63. package/src/sap/ui/core/.library +1 -1
  64. package/src/sap/ui/core/BusyIndicator.js +1 -1
  65. package/src/sap/ui/core/Component.js +1 -1
  66. package/src/sap/ui/core/ComponentContainer.js +1 -1
  67. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  68. package/src/sap/ui/core/ComponentSupport.js +1 -1
  69. package/src/sap/ui/core/Configuration.js +1 -1
  70. package/src/sap/ui/core/Control.js +1 -1
  71. package/src/sap/ui/core/Core.js +2 -2
  72. package/src/sap/ui/core/CustomData.js +1 -1
  73. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  74. package/src/sap/ui/core/Element.js +1 -1
  75. package/src/sap/ui/core/ElementMetadata.js +1 -1
  76. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  77. package/src/sap/ui/core/EventBus.js +1 -1
  78. package/src/sap/ui/core/Fragment.js +1 -1
  79. package/src/sap/ui/core/HTML.js +1 -1
  80. package/src/sap/ui/core/History.js +1 -1
  81. package/src/sap/ui/core/Icon.js +1 -1
  82. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  83. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  84. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  85. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  86. package/src/sap/ui/core/InvisibleText.js +1 -1
  87. package/src/sap/ui/core/Item.js +1 -1
  88. package/src/sap/ui/core/LabelEnablement.js +1 -1
  89. package/src/sap/ui/core/LayoutData.js +1 -1
  90. package/src/sap/ui/core/ListItem.js +1 -1
  91. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  92. package/src/sap/ui/core/Locale.js +1 -1
  93. package/src/sap/ui/core/LocaleData.js +7 -4
  94. package/src/sap/ui/core/Manifest.js +1 -1
  95. package/src/sap/ui/core/Message.js +1 -1
  96. package/src/sap/ui/core/RenderManager.js +1 -1
  97. package/src/sap/ui/core/Renderer.js +1 -1
  98. package/src/sap/ui/core/ResizeHandler.js +1 -1
  99. package/src/sap/ui/core/ScrollBar.js +1 -1
  100. package/src/sap/ui/core/SeparatorItem.js +1 -1
  101. package/src/sap/ui/core/Title.js +1 -1
  102. package/src/sap/ui/core/TooltipBase.js +1 -1
  103. package/src/sap/ui/core/UIArea.js +1 -1
  104. package/src/sap/ui/core/UIComponent.js +1 -1
  105. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  106. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  107. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  108. package/src/sap/ui/core/XMLComposite.js +1 -1
  109. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  110. package/src/sap/ui/core/date/UI5Date.js +1 -1
  111. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  112. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  113. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  114. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  115. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  116. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  117. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  118. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  119. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  120. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  121. package/src/sap/ui/core/library.js +3 -3
  122. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  123. package/src/sap/ui/core/message/Message.js +1 -1
  124. package/src/sap/ui/core/message/MessageManager.js +1 -1
  125. package/src/sap/ui/core/message/MessageParser.js +1 -1
  126. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  127. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  128. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  129. package/src/sap/ui/core/mvc/JSView.js +1 -1
  130. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  131. package/src/sap/ui/core/mvc/View.js +1 -1
  132. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  133. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  134. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  135. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  136. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  137. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  138. package/src/sap/ui/core/routing/History.js +1 -0
  139. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  140. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  141. package/src/sap/ui/core/service/Service.js +1 -1
  142. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  143. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  144. package/src/sap/ui/core/support/Plugin.js +1 -1
  145. package/src/sap/ui/core/support/Support.js +1 -1
  146. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  147. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  148. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  149. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  150. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  151. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  152. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  153. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  154. package/src/sap/ui/core/theming/ThemeManager.js +7 -3
  155. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  156. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  157. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  158. package/src/sap/ui/core/tmpl/Template.js +1 -1
  159. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  160. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  161. package/src/sap/ui/core/util/Export.js +1 -1
  162. package/src/sap/ui/core/util/ExportCell.js +1 -1
  163. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  164. package/src/sap/ui/core/util/ExportRow.js +1 -1
  165. package/src/sap/ui/core/util/ExportType.js +1 -1
  166. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  167. package/src/sap/ui/core/util/File.js +1 -1
  168. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  169. package/src/sap/ui/core/util/MockServer.js +1 -1
  170. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  171. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  172. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  173. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  174. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  175. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  176. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  177. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  178. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  179. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  180. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  181. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  182. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  183. package/src/sap/ui/debug/ControlTree.js +1 -1
  184. package/src/sap/ui/debug/DebugEnv.js +1 -1
  185. package/src/sap/ui/debug/PropertyList.js +1 -1
  186. package/src/sap/ui/model/ClientModel.js +1 -1
  187. package/src/sap/ui/model/CompositeDataState.js +1 -1
  188. package/src/sap/ui/model/CompositeType.js +1 -1
  189. package/src/sap/ui/model/DataState.js +1 -1
  190. package/src/sap/ui/model/MetaModel.js +1 -1
  191. package/src/sap/ui/model/Model.js +1 -1
  192. package/src/sap/ui/model/SelectionModel.js +1 -1
  193. package/src/sap/ui/model/SimpleType.js +1 -1
  194. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  195. package/src/sap/ui/model/Type.js +1 -1
  196. package/src/sap/ui/model/json/JSONModel.js +1 -1
  197. package/src/sap/ui/model/message/MessageModel.js +1 -1
  198. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  199. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  200. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  201. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  202. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  203. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  204. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  205. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  206. package/src/sap/ui/model/odata/type/Date.js +1 -1
  207. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  208. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  209. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  210. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  211. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  212. package/src/sap/ui/model/odata/type/Double.js +1 -1
  213. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  214. package/src/sap/ui/model/odata/type/Int.js +1 -1
  215. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  216. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  217. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  218. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  219. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  220. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  221. package/src/sap/ui/model/odata/type/Single.js +1 -1
  222. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  223. package/src/sap/ui/model/odata/type/String.js +1 -1
  224. package/src/sap/ui/model/odata/type/Time.js +1 -1
  225. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  226. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  227. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  228. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  229. package/src/sap/ui/model/odata/v2/ODataModel.js +1 -1
  230. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  231. package/src/sap/ui/model/odata/v4/Context.js +1 -1
  232. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
  233. package/src/sap/ui/model/odata/v4/ODataListBinding.js +1 -1
  234. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  235. package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
  236. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  237. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +1 -1
  238. package/src/sap/ui/model/odata/v4/lib/_Cache.js +27 -42
  239. package/src/sap/ui/model/odata/v4/lib/_Helper.js +12 -14
  240. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +16 -6
  241. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  242. package/src/sap/ui/model/type/Boolean.js +1 -1
  243. package/src/sap/ui/model/type/Currency.js +1 -1
  244. package/src/sap/ui/model/type/Date.js +1 -1
  245. package/src/sap/ui/model/type/DateInterval.js +1 -1
  246. package/src/sap/ui/model/type/DateTime.js +1 -1
  247. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  248. package/src/sap/ui/model/type/FileSize.js +1 -1
  249. package/src/sap/ui/model/type/Float.js +1 -1
  250. package/src/sap/ui/model/type/Integer.js +1 -1
  251. package/src/sap/ui/model/type/String.js +1 -1
  252. package/src/sap/ui/model/type/Time.js +1 -1
  253. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  254. package/src/sap/ui/model/type/Unit.js +1 -1
  255. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  256. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  257. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  258. package/src/sap/ui/test/generic/TestBase.js +1 -1
  259. package/src/sap/ui/util/Storage.js +1 -1
  260. package/src/ui5loader.js +21 -1
@@ -586,7 +586,7 @@ sap.ui.define([
586
586
  _Helper.getPrivateAnnotation(oEntityData, "select"));
587
587
  if (!bDeepCreate) { // after a deep create the complete response is accepted
588
588
  aSelect = _Helper.getQueryOptionsForPath(
589
- that.mLateQueryOptions || that.mQueryOptions, sPath
589
+ that.mLateExpandSelect || that.mQueryOptions, sPath
590
590
  ).$select;
591
591
  }
592
592
  // update selected properties (or in case of a deep create all of them incl.
@@ -998,7 +998,7 @@ sap.ui.define([
998
998
  }
999
999
  }
1000
1000
 
1001
- if (!(this.mLateQueryOptions || this.mQueryOptions && this.mQueryOptions.$select)) {
1001
+ if (!(this.mLateExpandSelect || this.mQueryOptions && this.mQueryOptions.$select)) {
1002
1002
  return false; // no autoExpandSelect
1003
1003
  }
1004
1004
 
@@ -1011,7 +1011,7 @@ sap.ui.define([
1011
1011
  aUpdateProperties = [sRequestedPropertyPath];
1012
1012
 
1013
1013
  sFullResourceMetaPath = _Helper.buildPath(this.sMetaPath, sResourceMetaPath);
1014
- mQueryOptions = this.mLateQueryOptions
1014
+ mQueryOptions = this.mLateExpandSelect
1015
1015
  || { // ensure that $select precedes $expand in the resulting query
1016
1016
  $select : this.mQueryOptions.$select,
1017
1017
  $expand : this.mQueryOptions.$expand
@@ -1284,18 +1284,6 @@ sap.ui.define([
1284
1284
  return aFilteredElements;
1285
1285
  };
1286
1286
 
1287
- /**
1288
- * Returns the query options for late properties.
1289
- *
1290
- * @returns {object} The late query options
1291
- *
1292
- * @public
1293
- * @see #setLateQueryOptions
1294
- */
1295
- _Cache.prototype.getLateQueryOptions = function () {
1296
- return this.mLateQueryOptions;
1297
- };
1298
-
1299
1287
  /**
1300
1288
  * Returns a promise that is pending while DELETEs or POSTs are being sent, or
1301
1289
  * <code>null</code> in case no such requests are currently being sent.
@@ -1511,10 +1499,10 @@ sap.ui.define([
1511
1499
  throw new Error("No key predicate known");
1512
1500
  }
1513
1501
  sReadUrl = _Helper.buildPath(that.sResourcePath, sPath, sPredicate);
1514
- if (bKeepAlive && that.mLateQueryOptions) {
1502
+ if (bKeepAlive && that.mLateExpandSelect) {
1515
1503
  // bKeepAlive === true -> own cache of the list binding -> sPath === ''
1516
1504
  // -> no need to apply _Helper.getQueryOptionsForPath
1517
- _Helper.aggregateExpandSelect(mQueryOptions, that.mLateQueryOptions);
1505
+ _Helper.aggregateExpandSelect(mQueryOptions, that.mLateExpandSelect);
1518
1506
  }
1519
1507
  if (sMessagesPath && mQueryOptions.$select
1520
1508
  && !mQueryOptions.$select.includes(sMessagesPath)) {
@@ -1522,19 +1510,17 @@ sap.ui.define([
1522
1510
  mQueryOptions.$select.push(sMessagesPath);
1523
1511
  bKeepReportedMessagesPath = true;
1524
1512
  }
1525
- // drop collection related system query options
1526
- delete mQueryOptions.$apply;
1527
- delete mQueryOptions.$count;
1528
- delete mQueryOptions.$filter;
1529
- delete mQueryOptions.$orderby;
1530
- delete mQueryOptions.$search;
1531
- sReadUrl += that.oRequestor.buildQueryString(that.sMetaPath, mQueryOptions, false,
1532
- that.bSortExpandSelect);
1513
+ const mMergeableQueryOptions = _Helper.extractMergeableQueryOptions(mQueryOptions);
1514
+ mMergeableQueryOptions.$$sortIfMerged = true;
1515
+ sReadUrl += that.oRequestor.buildQueryString(that.sMetaPath, mQueryOptions,
1516
+ // drop system query options to allow merging with late property requests
1517
+ /*bDropSystemQueryOptions*/true, that.bSortExpandSelect);
1533
1518
 
1534
1519
  that.bSentRequest = true;
1535
1520
  return SyncPromise.all([
1536
1521
  that.oRequestor
1537
- .request("GET", sReadUrl, oGroupLock, undefined, undefined, fnDataRequested),
1522
+ .request("GET", sReadUrl, oGroupLock, undefined, undefined, fnDataRequested,
1523
+ undefined, undefined, undefined, undefined, mMergeableQueryOptions),
1538
1524
  that.fetchTypes()
1539
1525
  ]).then(function (aResult) {
1540
1526
  var oElement = aResult[0];
@@ -1641,10 +1627,10 @@ sap.ui.define([
1641
1627
 
1642
1628
  that.bSentRequest = true;
1643
1629
  if (bKeepAlive) {
1644
- if (that.mLateQueryOptions) {
1630
+ if (that.mLateExpandSelect) {
1645
1631
  // bKeepAlive === true -> own cache of the list binding -> sPath === ''
1646
1632
  // -> no need to apply _Helper.getQueryOptionsForPath
1647
- _Helper.aggregateExpandSelect(mQueryOptions, that.mLateQueryOptions);
1633
+ _Helper.aggregateExpandSelect(mQueryOptions, that.mLateExpandSelect);
1648
1634
  }
1649
1635
  // clone query options for possible second request to check if entity is in
1650
1636
  // the collection
@@ -2042,26 +2028,25 @@ sap.ui.define([
2042
2028
 
2043
2029
  /**
2044
2030
  * Sets query options after the cache has sent a request to allow adding late properties.
2045
- * Accepts only $expand and $select.
2031
+ * Remembers only $expand and $select, and ignores others.
2046
2032
  *
2047
2033
  * @param {object} mQueryOptions
2048
2034
  * The new late query options or <code>null</code> to reset
2049
2035
  *
2050
2036
  * @public
2051
- * @see #getLateQueryOptions
2052
2037
  * @see #hasSentRequest
2053
2038
  */
2054
2039
  _Cache.prototype.setLateQueryOptions = function (mQueryOptions) {
2055
2040
  // this.checkSharedRequest(); // don't do that here! it might work well enough
2056
2041
  if (mQueryOptions) {
2057
- this.mLateQueryOptions = {
2042
+ this.mLateExpandSelect = {
2058
2043
  // must contain both properties for requestSideEffects
2059
2044
  // ensure that $select precedes $expand in the resulting query
2060
2045
  $select : mQueryOptions.$select,
2061
2046
  $expand : mQueryOptions.$expand
2062
2047
  };
2063
2048
  } else {
2064
- this.mLateQueryOptions = null;
2049
+ this.mLateExpandSelect = null;
2065
2050
  }
2066
2051
  };
2067
2052
 
@@ -2141,7 +2126,7 @@ sap.ui.define([
2141
2126
  this.oTypePromise = undefined;
2142
2127
 
2143
2128
  // the query options extended by $select for late properties
2144
- this.mLateQueryOptions = null;
2129
+ this.mLateExpandSelect = null;
2145
2130
  // map from resource path to request Promise for pending late property requests
2146
2131
  this.mPropertyRequestByPath = {};
2147
2132
  };
@@ -3542,8 +3527,8 @@ sap.ui.define([
3542
3527
  var aKeyFilters,
3543
3528
  mQueryOptions = _Helper.clone(that.mQueryOptions);
3544
3529
 
3545
- if (that.mLateQueryOptions) {
3546
- _Helper.aggregateExpandSelect(mQueryOptions, that.mLateQueryOptions);
3530
+ if (that.mLateExpandSelect) {
3531
+ _Helper.aggregateExpandSelect(mQueryOptions, that.mLateExpandSelect);
3547
3532
  }
3548
3533
  if (bDropApply) {
3549
3534
  delete mQueryOptions.$apply;
@@ -3940,7 +3925,7 @@ sap.ui.define([
3940
3925
  this.checkSharedRequest();
3941
3926
 
3942
3927
  mQueryOptions = _Helper.intersectQueryOptions(
3943
- Object.assign({}, this.mQueryOptions, this.mLateQueryOptions), aPaths,
3928
+ Object.assign({}, this.mQueryOptions, this.mLateExpandSelect), aPaths,
3944
3929
  this.oRequestor.getModelInterface().fetchMetadata, this.sMetaPath, "", bWithMessages);
3945
3930
  if (!mQueryOptions) {
3946
3931
  return SyncPromise.resolve(); // micro optimization: use *sync.* promise which is cached
@@ -4651,7 +4636,7 @@ sap.ui.define([
4651
4636
  this.checkSharedRequest();
4652
4637
 
4653
4638
  mQueryOptions = this.oPromise && _Helper.intersectQueryOptions(
4654
- Object.assign({}, this.mQueryOptions, this.mLateQueryOptions), aPaths,
4639
+ Object.assign({}, this.mQueryOptions, this.mLateExpandSelect), aPaths,
4655
4640
  this.oRequestor.getModelInterface().fetchMetadata, this.sMetaPath);
4656
4641
  if (!mQueryOptions) {
4657
4642
  return SyncPromise.resolve();
@@ -4776,7 +4761,7 @@ sap.ui.define([
4776
4761
 
4777
4762
  /**
4778
4763
  * Delegates to #fetchValue of its shared OData Singleton _SingleCache. Within the 1st call its
4779
- * own relative property path is added to the mLateQueryOptions of its _SingleCache.
4764
+ * own relative property path is added to the mLateExpandSelect of its _SingleCache.
4780
4765
  *
4781
4766
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
4782
4767
  * A lock for the group to associate the request with
@@ -4801,18 +4786,18 @@ sap.ui.define([
4801
4786
  _SingletonPropertyCache.prototype.fetchValue = function (oGroupLock, _sPath, fnDataRequested,
4802
4787
  oListener, bCreateOnDemand) {
4803
4788
  var sPropertyPath = this.oSingleton.sResourcePath + "/" + this.sRelativePath,
4804
- mLateQueryOptions,
4789
+ mLateExpandSelect,
4805
4790
  oMetadataPromise = this.oMetadataPromise || this.oRequestor.getModelInterface()
4806
4791
  .fetchMetadata("/" + _Helper.getMetaPath(sPropertyPath)),
4807
4792
  that = this;
4808
4793
 
4809
4794
  return oMetadataPromise.then(function () {
4810
4795
  if (!that.oMetadataPromise) {
4811
- mLateQueryOptions = that.oSingleton.getLateQueryOptions() || {};
4812
- _Helper.aggregateExpandSelect(mLateQueryOptions,
4796
+ mLateExpandSelect = that.oSingleton.mLateExpandSelect || {};
4797
+ _Helper.aggregateExpandSelect(mLateExpandSelect,
4813
4798
  _Helper.wrapChildQueryOptions("/" + that.oSingleton.sResourcePath,
4814
4799
  that.sRelativePath, {}, that.oRequestor.getModelInterface().fetchMetadata));
4815
- that.oSingleton.setLateQueryOptions(mLateQueryOptions);
4800
+ that.oSingleton.setLateQueryOptions(mLateExpandSelect);
4816
4801
  }
4817
4802
  that.oMetadataPromise = oMetadataPromise;
4818
4803
  return that.oSingleton.fetchValue(oGroupLock, that.sRelativePath, fnDataRequested,
@@ -302,7 +302,8 @@ sap.ui.define([
302
302
  /**
303
303
  * Builds a query string from the given parameter map. Takes care of encoding, but ensures
304
304
  * that the characters "$", "(", ")", ";" and "=" are not encoded, so that OData queries
305
- * remain readable.
305
+ * remain readable. A parameter starting with "$$" is meant to be internal and does not
306
+ * become part of the query string.
306
307
  *
307
308
  * ';' is not encoded although RFC 1866 encourages its usage as separator between query
308
309
  * parameters. However OData Version 4.0 Part 2 specifies that only '&' is a valid
@@ -330,7 +331,7 @@ sap.ui.define([
330
331
  return "";
331
332
  }
332
333
 
333
- aKeys = Object.keys(mParameters);
334
+ aKeys = Object.keys(mParameters).filter((sKey) => !sKey.startsWith("$$"));
334
335
  if (aKeys.length === 0) {
335
336
  return "";
336
337
  }
@@ -1002,24 +1003,21 @@ sap.ui.define([
1002
1003
  * Extracts the mergeable query options "$expand" and "$select" from the given ones, returns
1003
1004
  * them as a new map while replacing their value with "~" in the old map.
1004
1005
  *
1005
- * @param {object} mQueryOptions
1006
- * The original query options, will be modified
1007
- * @returns {object}
1008
- * The extracted query options
1006
+ * @param {object} mQueryOptions - The original query options to be MODIFIED
1007
+ * @returns {object} The extracted query options in the same order
1009
1008
  *
1010
1009
  * @public
1011
1010
  */
1012
1011
  extractMergeableQueryOptions : function (mQueryOptions) {
1013
1012
  var mExtractedQueryOptions = {};
1014
1013
 
1015
- if ("$expand" in mQueryOptions) {
1016
- mExtractedQueryOptions.$expand = mQueryOptions.$expand;
1017
- mQueryOptions.$expand = "~";
1018
- }
1019
- if ("$select" in mQueryOptions) {
1020
- mExtractedQueryOptions.$select = mQueryOptions.$select;
1021
- mQueryOptions.$select = "~";
1022
- }
1014
+ // ensure to keep the order of the query options
1015
+ Object.keys(mQueryOptions).forEach(function (sKey) {
1016
+ if (sKey === "$expand" || sKey === "$select") {
1017
+ mExtractedQueryOptions[sKey] = mQueryOptions[sKey];
1018
+ mQueryOptions[sKey] = "~";
1019
+ }
1020
+ });
1023
1021
 
1024
1022
  return mExtractedQueryOptions;
1025
1023
  },
@@ -192,11 +192,14 @@ sap.ui.define([
192
192
  * @param {string} sResourcePath The resource path with possible query options and placeholders
193
193
  * @param {string} sMetaPath The absolute meta path matching the resource path
194
194
  * @param {object} mQueryOptions Query options to add to the resource path
195
+ * @param {boolean} [bSortSystemQueryOptions]
196
+ * Whether system query options are sorted alphabetically and moved to the query string's end
195
197
  * @returns {string} The resource path with the query options
196
198
  *
197
199
  * @private
198
200
  */
199
- _Requestor.prototype.addQueryString = function (sResourcePath, sMetaPath, mQueryOptions) {
201
+ _Requestor.prototype.addQueryString = function (sResourcePath, sMetaPath, mQueryOptions,
202
+ bSortSystemQueryOptions) {
200
203
  var sQueryString;
201
204
 
202
205
  mQueryOptions = this.convertQueryOptions(sMetaPath, mQueryOptions, false, true);
@@ -209,7 +212,7 @@ sap.ui.define([
209
212
  return _Helper.encodePair(sOption, sValue);
210
213
  });
211
214
 
212
- sQueryString = _Helper.buildQuery(mQueryOptions);
215
+ sQueryString = _Helper.buildQuery(mQueryOptions, bSortSystemQueryOptions);
213
216
  if (!sQueryString) {
214
217
  return sResourcePath;
215
218
  }
@@ -1266,6 +1269,9 @@ sap.ui.define([
1266
1269
  if (oCandidate.$mergeRequests && oRequest.$mergeRequests) {
1267
1270
  oCandidate.$mergeRequests(oRequest.$mergeRequests());
1268
1271
  }
1272
+ oCandidate.$sortSystemQueryOptions
1273
+ ||= oCandidate.$queryOptions.$$sortIfMerged
1274
+ || oRequest.$queryOptions.$$sortIfMerged;
1269
1275
 
1270
1276
  return true;
1271
1277
  }
@@ -1283,10 +1289,12 @@ sap.ui.define([
1283
1289
  var mQueryOptions = oRequest.$queryOptions;
1284
1290
 
1285
1291
  if (mQueryOptions) {
1286
- if (mQueryOptions.$expand && !mQueryOptions.$select.length) {
1292
+ // if there was no $select, don't introduce one
1293
+ if (mQueryOptions.$expand && mQueryOptions.$select?.length === 0) {
1287
1294
  mQueryOptions.$select = Object.keys(mQueryOptions.$expand).sort().slice(0, 1);
1288
1295
  }
1289
- oRequest.url = that.addQueryString(oRequest.url, oRequest.$metaPath, mQueryOptions);
1296
+ oRequest.url = that.addQueryString(oRequest.url, oRequest.$metaPath, mQueryOptions,
1297
+ oRequest.$sortSystemQueryOptions);
1290
1298
  }
1291
1299
  });
1292
1300
  aResultingRequests.iChangeSet = aRequests.iChangeSet;
@@ -1833,10 +1841,12 @@ sap.ui.define([
1833
1841
  * contain $expand
1834
1842
  * @param {any} [vOwner]
1835
1843
  * An additional precondition for the merging of GET requests: the owner must be identical.
1844
+ * This is probably relevant when using parameter <code>fnMergeRequests</code> to ensure both
1845
+ * functions work well together.
1836
1846
  * @param {function(string[]):string[]} [fnMergeRequests]
1837
1847
  * Function which is called during merging of GET or PATCH requests. If a merged request has a
1838
- * function given, this function will be called and its return value is
1839
- * given to the one remaining request's function as a parameter.
1848
+ * function given, this function will be called and its return value is given to the one
1849
+ * remaining request's function as a parameter. See also <code>vOwner</code>.
1840
1850
  * @returns {Promise}
1841
1851
  * A promise on the outcome of the HTTP request; it will be rejected with an error having the
1842
1852
  * property <code>canceled = true</code> instead of sending a request if
@@ -227,7 +227,7 @@ sap.ui.define([
227
227
  *
228
228
  * @extends sap.ui.model.Model
229
229
  * @public
230
- * @version 1.136.4
230
+ * @version 1.136.6
231
231
  */
232
232
  var ResourceModel = Model.extend("sap.ui.model.resource.ResourceModel", /** @lends sap.ui.model.resource.ResourceModel.prototype */ {
233
233
 
@@ -19,7 +19,7 @@ sap.ui.define(["sap/ui/core/Lib", 'sap/ui/model/SimpleType', 'sap/ui/model/Forma
19
19
  * @extends sap.ui.model.SimpleType
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.136.4
22
+ * @version 1.136.6
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions]
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.model.CompositeType
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.136.4
37
+ * @version 1.136.6
38
38
  *
39
39
  * @public
40
40
  * @param {object} [oFormatOptions]
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @extends sap.ui.model.SimpleType
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.136.4
30
+ * @version 1.136.6
31
31
  *
32
32
  * @public
33
33
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateInstance DateFormat}.
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @extends sap.ui.model.CompositeType
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.136.4
28
+ * @version 1.136.6
29
29
  *
30
30
  * @alias sap.ui.model.type.DateInterval
31
31
  * @param {object} [oFormatOptions]
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.Date
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.136.4
22
+ * @version 1.136.6
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.DateInterval
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.136.4
22
+ * @version 1.136.6
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @extends sap.ui.model.SimpleType
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.136.4
28
+ * @version 1.136.6
29
29
  *
30
30
  * @public
31
31
  * @param {object} [oFormatOptions]
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.model.SimpleType
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.136.4
29
+ * @version 1.136.6
30
30
  *
31
31
  * @public
32
32
  * @param {object} [oFormatOptions]
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.model.SimpleType
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.136.4
29
+ * @version 1.136.6
30
30
  *
31
31
  * @public
32
32
  * @param {object} [oFormatOptions]
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @extends sap.ui.model.SimpleType
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.136.4
28
+ * @version 1.136.6
29
29
  *
30
30
  * @alias sap.ui.model.type.String
31
31
  * @param {object} [oFormatOptions]
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.Date
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.136.4
22
+ * @version 1.136.6
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.DateInterval
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.136.4
22
+ * @version 1.136.6
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
@@ -49,7 +49,7 @@ sap.ui.define([
49
49
  *
50
50
  *
51
51
  * @author SAP SE
52
- * @version 1.136.4
52
+ * @version 1.136.6
53
53
  *
54
54
  * @public
55
55
  * @param {object} [oFormatOptions]
@@ -47,7 +47,7 @@ sap.ui.define([
47
47
  * @extends sap.ui.model.ClientModel
48
48
  *
49
49
  * @author SAP SE
50
- * @version 1.136.4
50
+ * @version 1.136.6
51
51
  *
52
52
  * @param {XMLDocument|string} oData
53
53
  * Either the URL where to load the XML from or an XML document
@@ -53,7 +53,7 @@ sap.ui.define(['sap/ui/core/Core', "sap/ui/VersionInfo", "sap/ui/core/Lib"],
53
53
  * @namespace
54
54
  *
55
55
  * @author SAP SE
56
- * @version 1.136.4
56
+ * @version 1.136.6
57
57
  *
58
58
  * @public
59
59
  * @since 1.48.0
@@ -30,7 +30,7 @@ sap.ui.define([ 'sap/ui/core/ElementRegistry', 'sap/ui/core/Control', "sap/ui/qu
30
30
  * @namespace
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.136.4
33
+ * @version 1.136.6
34
34
  *
35
35
  * @public
36
36
  * @since 1.48.0
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.base.Object
27
27
  * @abstract
28
28
  * @author SAP SE
29
- * @version 1.136.4
29
+ * @version 1.136.6
30
30
  * @since 1.100
31
31
  */
32
32
  return BaseObject.extend("sap.ui.test.generic.TestBase", {
@@ -277,7 +277,7 @@ sap.ui.define(["sap/base/assert"], function (assert) {
277
277
  *
278
278
  * @enum {string}
279
279
  * @public
280
- * @version 1.136.4
280
+ * @version 1.136.6
281
281
  */
282
282
  Storage.Type = {
283
283
  /**
package/src/ui5loader.js CHANGED
@@ -18,6 +18,26 @@
18
18
  (function(__global) {
19
19
  "use strict";
20
20
 
21
+ // Polyfill `Promise.withResolvers` for older browsers.
22
+ if (typeof Promise.withResolvers === "undefined") {
23
+ Object.defineProperty(Promise, "withResolvers", {
24
+ writable: true,
25
+ configurable: true,
26
+ // enumerable: false
27
+ value: function() {
28
+ let resolve, reject;
29
+ return {
30
+ promise: new this((_resolve, _reject) => {
31
+ resolve = _resolve;
32
+ reject = _reject;
33
+ }),
34
+ resolve,
35
+ reject
36
+ };
37
+ }
38
+ });
39
+ }
40
+
21
41
  /*
22
42
  * Helper function that removes any query and/or hash parts from the given URL.
23
43
  *
@@ -2696,7 +2716,7 @@
2696
2716
  /**
2697
2717
  * Root namespace for JavaScript functionality provided by SAP SE.
2698
2718
  *
2699
- * @version 1.136.4
2719
+ * @version 1.136.6
2700
2720
  * @namespace
2701
2721
  * @public
2702
2722
  * @name sap