@azure/cosmos 4.5.0-alpha.20250717.1 → 4.5.0-alpha.20250729.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1219) hide show
  1. package/dist/browser/ChangeFeedIterator.js +17 -11
  2. package/dist/browser/ChangeFeedIterator.js.map +1 -1
  3. package/dist/browser/ChangeFeedResponse.js +8 -0
  4. package/dist/browser/ChangeFeedResponse.js.map +1 -1
  5. package/dist/browser/ClientContext.js +122 -29
  6. package/dist/browser/ClientContext.js.map +1 -1
  7. package/dist/browser/CosmosClient.d.ts.map +1 -1
  8. package/dist/browser/CosmosClient.js +37 -3
  9. package/dist/browser/CosmosClient.js.map +1 -1
  10. package/dist/browser/CosmosDiagnostics.js +3 -0
  11. package/dist/browser/CosmosDiagnostics.js.map +1 -1
  12. package/dist/browser/PartitionKeyRangeFailoverInfo.js +8 -5
  13. package/dist/browser/PartitionKeyRangeFailoverInfo.js.map +1 -1
  14. package/dist/browser/bulk/Batcher.js +13 -3
  15. package/dist/browser/bulk/Batcher.js.map +1 -1
  16. package/dist/browser/bulk/BulkHelper.js +26 -11
  17. package/dist/browser/bulk/BulkHelper.js.map +1 -1
  18. package/dist/browser/bulk/BulkResponse.js +22 -20
  19. package/dist/browser/bulk/BulkResponse.js.map +1 -1
  20. package/dist/browser/bulk/CongestionAlgorithm.js +11 -4
  21. package/dist/browser/bulk/CongestionAlgorithm.js.map +1 -1
  22. package/dist/browser/bulk/HelperPerPartition.js +14 -1
  23. package/dist/browser/bulk/HelperPerPartition.js.map +1 -1
  24. package/dist/browser/bulk/ItemOperationContext.js +4 -0
  25. package/dist/browser/bulk/ItemOperationContext.js.map +1 -1
  26. package/dist/browser/bulk/Limiter.js +27 -18
  27. package/dist/browser/bulk/Limiter.js.map +1 -1
  28. package/dist/browser/bulk/PartitionMetric.js +4 -0
  29. package/dist/browser/bulk/PartitionMetric.js.map +1 -1
  30. package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  31. package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  32. package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.d.ts.map +1 -1
  33. package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js +20 -8
  34. package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  35. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  36. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  37. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  38. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  39. package/dist/browser/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  40. package/dist/browser/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  41. package/dist/browser/client/ChangeFeed/ChangeFeedRange.js +20 -0
  42. package/dist/browser/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  43. package/dist/browser/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  44. package/dist/browser/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  45. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  46. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  47. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  48. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  49. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  50. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  51. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  52. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  53. package/dist/browser/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  54. package/dist/browser/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  55. package/dist/browser/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  56. package/dist/browser/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  57. package/dist/browser/client/ChangeFeed/FeedRange.js +8 -0
  58. package/dist/browser/client/ChangeFeed/FeedRange.js.map +1 -1
  59. package/dist/browser/client/ChangeFeed/FeedRangeQueue.js +1 -0
  60. package/dist/browser/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  61. package/dist/browser/client/ChangeFeed/changeFeedUtils.js +5 -5
  62. package/dist/browser/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  63. package/dist/browser/client/ClientUtils.js +1 -1
  64. package/dist/browser/client/ClientUtils.js.map +1 -1
  65. package/dist/browser/client/Conflict/Conflict.js +4 -0
  66. package/dist/browser/client/Conflict/Conflict.js.map +1 -1
  67. package/dist/browser/client/Conflict/ConflictResponse.js +2 -0
  68. package/dist/browser/client/Conflict/ConflictResponse.js.map +1 -1
  69. package/dist/browser/client/Conflict/Conflicts.js +2 -0
  70. package/dist/browser/client/Conflict/Conflicts.js.map +1 -1
  71. package/dist/browser/client/Container/Container.js +18 -3
  72. package/dist/browser/client/Container/Container.js.map +1 -1
  73. package/dist/browser/client/Container/ContainerResponse.js +2 -0
  74. package/dist/browser/client/Container/ContainerResponse.js.map +1 -1
  75. package/dist/browser/client/Container/Containers.js +4 -2
  76. package/dist/browser/client/Container/Containers.js.map +1 -1
  77. package/dist/browser/client/Database/Database.js +33 -0
  78. package/dist/browser/client/Database/Database.js.map +1 -1
  79. package/dist/browser/client/Database/DatabaseResponse.js +2 -0
  80. package/dist/browser/client/Database/DatabaseResponse.js.map +1 -1
  81. package/dist/browser/client/Database/Databases.js +3 -0
  82. package/dist/browser/client/Database/Databases.js.map +1 -1
  83. package/dist/browser/client/Item/Item.js +4 -0
  84. package/dist/browser/client/Item/Item.js.map +1 -1
  85. package/dist/browser/client/Item/ItemResponse.js +2 -0
  86. package/dist/browser/client/Item/ItemResponse.js.map +1 -1
  87. package/dist/browser/client/Item/Items.d.ts.map +1 -1
  88. package/dist/browser/client/Item/Items.js +12 -0
  89. package/dist/browser/client/Item/Items.js.map +1 -1
  90. package/dist/browser/client/Offer/Offer.js +3 -0
  91. package/dist/browser/client/Offer/Offer.js.map +1 -1
  92. package/dist/browser/client/Offer/OfferResponse.js +2 -0
  93. package/dist/browser/client/Offer/OfferResponse.js.map +1 -1
  94. package/dist/browser/client/Offer/Offers.js +2 -0
  95. package/dist/browser/client/Offer/Offers.js.map +1 -1
  96. package/dist/browser/client/Permission/Permission.js +3 -0
  97. package/dist/browser/client/Permission/Permission.js.map +1 -1
  98. package/dist/browser/client/Permission/PermissionResponse.js +2 -0
  99. package/dist/browser/client/Permission/PermissionResponse.js.map +1 -1
  100. package/dist/browser/client/Permission/Permissions.js +2 -0
  101. package/dist/browser/client/Permission/Permissions.js.map +1 -1
  102. package/dist/browser/client/SasToken/SasTokenProperties.js +17 -0
  103. package/dist/browser/client/SasToken/SasTokenProperties.js.map +1 -1
  104. package/dist/browser/client/Script/Scripts.js +5 -0
  105. package/dist/browser/client/Script/Scripts.js.map +1 -1
  106. package/dist/browser/client/StoredProcedure/StoredProcedure.js +3 -0
  107. package/dist/browser/client/StoredProcedure/StoredProcedure.js.map +1 -1
  108. package/dist/browser/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  109. package/dist/browser/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  110. package/dist/browser/client/StoredProcedure/StoredProcedures.js +2 -0
  111. package/dist/browser/client/StoredProcedure/StoredProcedures.js.map +1 -1
  112. package/dist/browser/client/Trigger/Trigger.js +3 -0
  113. package/dist/browser/client/Trigger/Trigger.js.map +1 -1
  114. package/dist/browser/client/Trigger/TriggerResponse.js +2 -0
  115. package/dist/browser/client/Trigger/TriggerResponse.js.map +1 -1
  116. package/dist/browser/client/Trigger/Triggers.js +2 -0
  117. package/dist/browser/client/Trigger/Triggers.js.map +1 -1
  118. package/dist/browser/client/User/User.js +9 -0
  119. package/dist/browser/client/User/User.js.map +1 -1
  120. package/dist/browser/client/User/UserResponse.js +2 -0
  121. package/dist/browser/client/User/UserResponse.js.map +1 -1
  122. package/dist/browser/client/User/Users.js +2 -0
  123. package/dist/browser/client/User/Users.js.map +1 -1
  124. package/dist/browser/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  125. package/dist/browser/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  126. package/dist/browser/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  127. package/dist/browser/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  128. package/dist/browser/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  129. package/dist/browser/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  130. package/dist/browser/diagnostics/CosmosDiagnosticsContext.js +8 -7
  131. package/dist/browser/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  132. package/dist/browser/diagnostics/DiagnosticNodeInternal.js +26 -7
  133. package/dist/browser/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  134. package/dist/browser/diagnostics/DiagnosticWriter.js +1 -3
  135. package/dist/browser/diagnostics/DiagnosticWriter.js.map +1 -1
  136. package/dist/browser/diagnostics/index.js +2 -2
  137. package/dist/browser/diagnostics/index.js.map +1 -1
  138. package/dist/browser/documents/DatabaseAccount.js +20 -4
  139. package/dist/browser/documents/DatabaseAccount.js.map +1 -1
  140. package/dist/browser/documents/PartitionKey.js +1 -3
  141. package/dist/browser/documents/PartitionKey.js.map +1 -1
  142. package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  143. package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  144. package/dist/browser/encryption/Cache/EncryptionSettingsCache.js +2 -0
  145. package/dist/browser/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  146. package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  147. package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  148. package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  149. package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  150. package/dist/browser/encryption/EncryptionItemQueryIterator.js +24 -27
  151. package/dist/browser/encryption/EncryptionItemQueryIterator.js.map +1 -1
  152. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  153. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  154. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  155. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  156. package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  157. package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  158. package/dist/browser/encryption/EncryptionKeyStoreProvider.d.ts.map +1 -1
  159. package/dist/browser/encryption/EncryptionKeyStoreProvider.js +10 -2
  160. package/dist/browser/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  161. package/dist/browser/encryption/EncryptionManager.js +6 -0
  162. package/dist/browser/encryption/EncryptionManager.js.map +1 -1
  163. package/dist/browser/encryption/EncryptionProcessor.js +5 -0
  164. package/dist/browser/encryption/EncryptionProcessor.js.map +1 -1
  165. package/dist/browser/encryption/EncryptionQueryBuilder.js +2 -0
  166. package/dist/browser/encryption/EncryptionQueryBuilder.js.map +1 -1
  167. package/dist/browser/encryption/EncryptionSettingForProperty.js +6 -0
  168. package/dist/browser/encryption/EncryptionSettingForProperty.js.map +1 -1
  169. package/dist/browser/encryption/EncryptionSettings.js +6 -3
  170. package/dist/browser/encryption/EncryptionSettings.js.map +1 -1
  171. package/dist/browser/encryption/KeyEncryptionKey.js +4 -0
  172. package/dist/browser/encryption/KeyEncryptionKey.js.map +1 -1
  173. package/dist/browser/encryption/Serializers/StringSerializer.js +1 -1
  174. package/dist/browser/encryption/Serializers/StringSerializer.js.map +1 -1
  175. package/dist/browser/extractPartitionKey.js +2 -2
  176. package/dist/browser/extractPartitionKey.js.map +1 -1
  177. package/dist/browser/globalEndpointManager.js +21 -4
  178. package/dist/browser/globalEndpointManager.js.map +1 -1
  179. package/dist/browser/globalPartitionEndpointManager.d.ts.map +1 -1
  180. package/dist/browser/globalPartitionEndpointManager.js +16 -9
  181. package/dist/browser/globalPartitionEndpointManager.js.map +1 -1
  182. package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  183. package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  184. package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  185. package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  186. package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  187. package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  188. package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  189. package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  190. package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  191. package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  192. package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  193. package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  194. package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  195. package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  196. package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  197. package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  198. package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  199. package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  200. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  201. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  202. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  203. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  204. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  205. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  206. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  207. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  208. package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  209. package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  210. package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  211. package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  212. package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  213. package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  214. package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  215. package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  216. package/dist/browser/queryExecutionContext/FetchResult.js +4 -0
  217. package/dist/browser/queryExecutionContext/FetchResult.js.map +1 -1
  218. package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  219. package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  220. package/dist/browser/queryExecutionContext/documentProducer.js +34 -21
  221. package/dist/browser/queryExecutionContext/documentProducer.js.map +1 -1
  222. package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  223. package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  224. package/dist/browser/queryExecutionContext/orderByComparator.js +1 -0
  225. package/dist/browser/queryExecutionContext/orderByComparator.js.map +1 -1
  226. package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  227. package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  228. package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  229. package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  230. package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  231. package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  232. package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  233. package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  234. package/dist/browser/queryIterator.js +41 -33
  235. package/dist/browser/queryIterator.js.map +1 -1
  236. package/dist/browser/queryMetrics/clientSideMetrics.js +2 -1
  237. package/dist/browser/queryMetrics/clientSideMetrics.js.map +1 -1
  238. package/dist/browser/queryMetrics/queryMetrics.js +14 -1
  239. package/dist/browser/queryMetrics/queryMetrics.js.map +1 -1
  240. package/dist/browser/queryMetrics/queryPreparationTime.js +5 -1
  241. package/dist/browser/queryMetrics/queryPreparationTime.js.map +1 -1
  242. package/dist/browser/queryMetrics/runtimeExecutionTimes.js +4 -1
  243. package/dist/browser/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  244. package/dist/browser/queryMetrics/timeSpan.js +4 -3
  245. package/dist/browser/queryMetrics/timeSpan.js.map +1 -1
  246. package/dist/browser/request/ErrorResponse.js +19 -0
  247. package/dist/browser/request/ErrorResponse.js.map +1 -1
  248. package/dist/browser/request/FeedResponse.js +4 -0
  249. package/dist/browser/request/FeedResponse.js.map +1 -1
  250. package/dist/browser/request/RequestHandler.js +1 -2
  251. package/dist/browser/request/RequestHandler.js.map +1 -1
  252. package/dist/browser/request/ResourceResponse.js +5 -0
  253. package/dist/browser/request/ResourceResponse.js.map +1 -1
  254. package/dist/browser/request/TimeoutError.js +1 -1
  255. package/dist/browser/request/TimeoutError.js.map +1 -1
  256. package/dist/browser/request/hybridSearchQueryResult.js +5 -0
  257. package/dist/browser/request/hybridSearchQueryResult.js.map +1 -1
  258. package/dist/browser/request/request.d.ts.map +1 -1
  259. package/dist/browser/request/request.js +8 -4
  260. package/dist/browser/request/request.js.map +1 -1
  261. package/dist/browser/retry/bulkExecutionRetryPolicy.js +5 -2
  262. package/dist/browser/retry/bulkExecutionRetryPolicy.js.map +1 -1
  263. package/dist/browser/retry/defaultRetryPolicy.js +4 -3
  264. package/dist/browser/retry/defaultRetryPolicy.js.map +1 -1
  265. package/dist/browser/retry/endpointDiscoveryRetryPolicy.js +11 -2
  266. package/dist/browser/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  267. package/dist/browser/retry/resourceThrottleRetryPolicy.js +20 -10
  268. package/dist/browser/retry/resourceThrottleRetryPolicy.js.map +1 -1
  269. package/dist/browser/retry/retryUtility.js +2 -3
  270. package/dist/browser/retry/retryUtility.js.map +1 -1
  271. package/dist/browser/retry/sessionRetryPolicy.js +8 -4
  272. package/dist/browser/retry/sessionRetryPolicy.js.map +1 -1
  273. package/dist/browser/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
  274. package/dist/browser/retry/timeoutFailoverRetryPolicy.js +17 -7
  275. package/dist/browser/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  276. package/dist/browser/routing/QueryRange.js +4 -0
  277. package/dist/browser/routing/QueryRange.js.map +1 -1
  278. package/dist/browser/routing/inMemoryCollectionRoutingMap.js +4 -0
  279. package/dist/browser/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  280. package/dist/browser/routing/partitionKeyRangeCache.js +2 -0
  281. package/dist/browser/routing/partitionKeyRangeCache.js.map +1 -1
  282. package/dist/browser/routing/smartRoutingMapProvider.js +1 -0
  283. package/dist/browser/routing/smartRoutingMapProvider.js.map +1 -1
  284. package/dist/browser/session/VectorSessionToken.js +6 -2
  285. package/dist/browser/session/VectorSessionToken.js.map +1 -1
  286. package/dist/browser/session/sessionContainer.js +5 -3
  287. package/dist/browser/session/sessionContainer.js.map +1 -1
  288. package/dist/browser/utils/batch.js +15 -4
  289. package/dist/browser/utils/batch.js.map +1 -1
  290. package/dist/browser/utils/fixedSizePriorityQueue.js +4 -0
  291. package/dist/browser/utils/fixedSizePriorityQueue.js.map +1 -1
  292. package/dist/browser/utils/hashing/hash.js +1 -1
  293. package/dist/browser/utils/hashing/hash.js.map +1 -1
  294. package/dist/browser/utils/nonStreamingOrderByMap.js +2 -0
  295. package/dist/browser/utils/nonStreamingOrderByMap.js.map +1 -1
  296. package/dist/browser/utils/time.d.ts +8 -0
  297. package/dist/browser/utils/time.d.ts.map +1 -1
  298. package/dist/browser/utils/time.js +19 -0
  299. package/dist/browser/utils/time.js.map +1 -1
  300. package/dist/commonjs/ChangeFeedIterator.js +17 -11
  301. package/dist/commonjs/ChangeFeedIterator.js.map +1 -1
  302. package/dist/commonjs/ChangeFeedResponse.js +8 -0
  303. package/dist/commonjs/ChangeFeedResponse.js.map +1 -1
  304. package/dist/commonjs/ClientContext.js +122 -29
  305. package/dist/commonjs/ClientContext.js.map +1 -1
  306. package/dist/commonjs/CosmosClient.d.ts.map +1 -1
  307. package/dist/commonjs/CosmosClient.js +37 -3
  308. package/dist/commonjs/CosmosClient.js.map +1 -1
  309. package/dist/commonjs/CosmosDiagnostics.js +3 -0
  310. package/dist/commonjs/CosmosDiagnostics.js.map +1 -1
  311. package/dist/commonjs/PartitionKeyRangeFailoverInfo.js +8 -5
  312. package/dist/commonjs/PartitionKeyRangeFailoverInfo.js.map +1 -1
  313. package/dist/commonjs/bulk/Batcher.js +13 -3
  314. package/dist/commonjs/bulk/Batcher.js.map +1 -1
  315. package/dist/commonjs/bulk/BulkHelper.js +26 -11
  316. package/dist/commonjs/bulk/BulkHelper.js.map +1 -1
  317. package/dist/commonjs/bulk/BulkResponse.js +22 -20
  318. package/dist/commonjs/bulk/BulkResponse.js.map +1 -1
  319. package/dist/commonjs/bulk/CongestionAlgorithm.js +11 -4
  320. package/dist/commonjs/bulk/CongestionAlgorithm.js.map +1 -1
  321. package/dist/commonjs/bulk/HelperPerPartition.js +14 -1
  322. package/dist/commonjs/bulk/HelperPerPartition.js.map +1 -1
  323. package/dist/commonjs/bulk/ItemOperationContext.js +4 -0
  324. package/dist/commonjs/bulk/ItemOperationContext.js.map +1 -1
  325. package/dist/commonjs/bulk/Limiter.js +27 -18
  326. package/dist/commonjs/bulk/Limiter.js.map +1 -1
  327. package/dist/commonjs/bulk/PartitionMetric.js +4 -0
  328. package/dist/commonjs/bulk/PartitionMetric.js.map +1 -1
  329. package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  330. package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  331. package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.d.ts.map +1 -1
  332. package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js +20 -8
  333. package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  334. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  335. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  336. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  337. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  338. package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  339. package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  340. package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js +20 -0
  341. package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  342. package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  343. package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  344. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  345. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  346. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  347. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  348. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  349. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  350. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  351. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  352. package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  353. package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  354. package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  355. package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  356. package/dist/commonjs/client/ChangeFeed/FeedRange.js +8 -0
  357. package/dist/commonjs/client/ChangeFeed/FeedRange.js.map +1 -1
  358. package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js +1 -0
  359. package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  360. package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js +5 -5
  361. package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  362. package/dist/commonjs/client/ClientUtils.js +1 -1
  363. package/dist/commonjs/client/ClientUtils.js.map +1 -1
  364. package/dist/commonjs/client/Conflict/Conflict.js +4 -0
  365. package/dist/commonjs/client/Conflict/Conflict.js.map +1 -1
  366. package/dist/commonjs/client/Conflict/ConflictResponse.js +2 -0
  367. package/dist/commonjs/client/Conflict/ConflictResponse.js.map +1 -1
  368. package/dist/commonjs/client/Conflict/Conflicts.js +2 -0
  369. package/dist/commonjs/client/Conflict/Conflicts.js.map +1 -1
  370. package/dist/commonjs/client/Container/Container.js +18 -3
  371. package/dist/commonjs/client/Container/Container.js.map +1 -1
  372. package/dist/commonjs/client/Container/ContainerResponse.js +2 -0
  373. package/dist/commonjs/client/Container/ContainerResponse.js.map +1 -1
  374. package/dist/commonjs/client/Container/Containers.js +4 -2
  375. package/dist/commonjs/client/Container/Containers.js.map +1 -1
  376. package/dist/commonjs/client/Database/Database.js +33 -0
  377. package/dist/commonjs/client/Database/Database.js.map +1 -1
  378. package/dist/commonjs/client/Database/DatabaseResponse.js +2 -0
  379. package/dist/commonjs/client/Database/DatabaseResponse.js.map +1 -1
  380. package/dist/commonjs/client/Database/Databases.js +3 -0
  381. package/dist/commonjs/client/Database/Databases.js.map +1 -1
  382. package/dist/commonjs/client/Item/Item.js +4 -0
  383. package/dist/commonjs/client/Item/Item.js.map +1 -1
  384. package/dist/commonjs/client/Item/ItemResponse.js +2 -0
  385. package/dist/commonjs/client/Item/ItemResponse.js.map +1 -1
  386. package/dist/commonjs/client/Item/Items.d.ts.map +1 -1
  387. package/dist/commonjs/client/Item/Items.js +12 -0
  388. package/dist/commonjs/client/Item/Items.js.map +1 -1
  389. package/dist/commonjs/client/Offer/Offer.js +3 -0
  390. package/dist/commonjs/client/Offer/Offer.js.map +1 -1
  391. package/dist/commonjs/client/Offer/OfferResponse.js +2 -0
  392. package/dist/commonjs/client/Offer/OfferResponse.js.map +1 -1
  393. package/dist/commonjs/client/Offer/Offers.js +2 -0
  394. package/dist/commonjs/client/Offer/Offers.js.map +1 -1
  395. package/dist/commonjs/client/Permission/Permission.js +3 -0
  396. package/dist/commonjs/client/Permission/Permission.js.map +1 -1
  397. package/dist/commonjs/client/Permission/PermissionResponse.js +2 -0
  398. package/dist/commonjs/client/Permission/PermissionResponse.js.map +1 -1
  399. package/dist/commonjs/client/Permission/Permissions.js +2 -0
  400. package/dist/commonjs/client/Permission/Permissions.js.map +1 -1
  401. package/dist/commonjs/client/SasToken/SasTokenProperties.js +17 -0
  402. package/dist/commonjs/client/SasToken/SasTokenProperties.js.map +1 -1
  403. package/dist/commonjs/client/Script/Scripts.js +5 -0
  404. package/dist/commonjs/client/Script/Scripts.js.map +1 -1
  405. package/dist/commonjs/client/StoredProcedure/StoredProcedure.js +3 -0
  406. package/dist/commonjs/client/StoredProcedure/StoredProcedure.js.map +1 -1
  407. package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  408. package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  409. package/dist/commonjs/client/StoredProcedure/StoredProcedures.js +2 -0
  410. package/dist/commonjs/client/StoredProcedure/StoredProcedures.js.map +1 -1
  411. package/dist/commonjs/client/Trigger/Trigger.js +3 -0
  412. package/dist/commonjs/client/Trigger/Trigger.js.map +1 -1
  413. package/dist/commonjs/client/Trigger/TriggerResponse.js +2 -0
  414. package/dist/commonjs/client/Trigger/TriggerResponse.js.map +1 -1
  415. package/dist/commonjs/client/Trigger/Triggers.js +2 -0
  416. package/dist/commonjs/client/Trigger/Triggers.js.map +1 -1
  417. package/dist/commonjs/client/User/User.js +9 -0
  418. package/dist/commonjs/client/User/User.js.map +1 -1
  419. package/dist/commonjs/client/User/UserResponse.js +2 -0
  420. package/dist/commonjs/client/User/UserResponse.js.map +1 -1
  421. package/dist/commonjs/client/User/Users.js +2 -0
  422. package/dist/commonjs/client/User/Users.js.map +1 -1
  423. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  424. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  425. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  426. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  427. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  428. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  429. package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js +8 -7
  430. package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  431. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js +26 -7
  432. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  433. package/dist/commonjs/diagnostics/DiagnosticWriter.js +1 -3
  434. package/dist/commonjs/diagnostics/DiagnosticWriter.js.map +1 -1
  435. package/dist/commonjs/diagnostics/index.js +2 -2
  436. package/dist/commonjs/diagnostics/index.js.map +1 -1
  437. package/dist/commonjs/documents/DatabaseAccount.js +20 -4
  438. package/dist/commonjs/documents/DatabaseAccount.js.map +1 -1
  439. package/dist/commonjs/documents/PartitionKey.js +1 -3
  440. package/dist/commonjs/documents/PartitionKey.js.map +1 -1
  441. package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
  442. package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
  443. package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  444. package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  445. package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js +2 -0
  446. package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  447. package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  448. package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  449. package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.d.ts.map +1 -1
  450. package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js +7 -1
  451. package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
  452. package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  453. package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  454. package/dist/commonjs/encryption/EncryptionItemQueryIterator.js +24 -27
  455. package/dist/commonjs/encryption/EncryptionItemQueryIterator.js.map +1 -1
  456. package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
  457. package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
  458. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  459. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  460. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  461. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  462. package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  463. package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  464. package/dist/commonjs/encryption/EncryptionKeyStoreProvider.d.ts.map +1 -1
  465. package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js +10 -2
  466. package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  467. package/dist/commonjs/encryption/EncryptionManager.js +6 -0
  468. package/dist/commonjs/encryption/EncryptionManager.js.map +1 -1
  469. package/dist/commonjs/encryption/EncryptionProcessor.js +5 -0
  470. package/dist/commonjs/encryption/EncryptionProcessor.js.map +1 -1
  471. package/dist/commonjs/encryption/EncryptionQueryBuilder.js +2 -0
  472. package/dist/commonjs/encryption/EncryptionQueryBuilder.js.map +1 -1
  473. package/dist/commonjs/encryption/EncryptionSettingForProperty.js +6 -0
  474. package/dist/commonjs/encryption/EncryptionSettingForProperty.js.map +1 -1
  475. package/dist/commonjs/encryption/EncryptionSettings.js +6 -3
  476. package/dist/commonjs/encryption/EncryptionSettings.js.map +1 -1
  477. package/dist/commonjs/encryption/KeyEncryptionKey.js +4 -0
  478. package/dist/commonjs/encryption/KeyEncryptionKey.js.map +1 -1
  479. package/dist/commonjs/encryption/Serializers/StringSerializer.js +1 -1
  480. package/dist/commonjs/encryption/Serializers/StringSerializer.js.map +1 -1
  481. package/dist/commonjs/extractPartitionKey.js +2 -2
  482. package/dist/commonjs/extractPartitionKey.js.map +1 -1
  483. package/dist/commonjs/globalEndpointManager.js +21 -4
  484. package/dist/commonjs/globalEndpointManager.js.map +1 -1
  485. package/dist/commonjs/globalPartitionEndpointManager.d.ts.map +1 -1
  486. package/dist/commonjs/globalPartitionEndpointManager.js +16 -9
  487. package/dist/commonjs/globalPartitionEndpointManager.js.map +1 -1
  488. package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  489. package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  490. package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  491. package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  492. package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  493. package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  494. package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  495. package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  496. package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  497. package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  498. package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  499. package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  500. package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  501. package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  502. package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  503. package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  504. package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  505. package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  506. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  507. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  508. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  509. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  510. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  511. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  512. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  513. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  514. package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  515. package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  516. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  517. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  518. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  519. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  520. package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  521. package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  522. package/dist/commonjs/queryExecutionContext/FetchResult.js +4 -0
  523. package/dist/commonjs/queryExecutionContext/FetchResult.js.map +1 -1
  524. package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  525. package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  526. package/dist/commonjs/queryExecutionContext/documentProducer.js +34 -21
  527. package/dist/commonjs/queryExecutionContext/documentProducer.js.map +1 -1
  528. package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  529. package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  530. package/dist/commonjs/queryExecutionContext/orderByComparator.js +1 -0
  531. package/dist/commonjs/queryExecutionContext/orderByComparator.js.map +1 -1
  532. package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  533. package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  534. package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  535. package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  536. package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  537. package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  538. package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  539. package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  540. package/dist/commonjs/queryIterator.js +41 -33
  541. package/dist/commonjs/queryIterator.js.map +1 -1
  542. package/dist/commonjs/queryMetrics/clientSideMetrics.js +2 -1
  543. package/dist/commonjs/queryMetrics/clientSideMetrics.js.map +1 -1
  544. package/dist/commonjs/queryMetrics/queryMetrics.js +14 -1
  545. package/dist/commonjs/queryMetrics/queryMetrics.js.map +1 -1
  546. package/dist/commonjs/queryMetrics/queryPreparationTime.js +5 -1
  547. package/dist/commonjs/queryMetrics/queryPreparationTime.js.map +1 -1
  548. package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js +4 -1
  549. package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  550. package/dist/commonjs/queryMetrics/timeSpan.js +4 -3
  551. package/dist/commonjs/queryMetrics/timeSpan.js.map +1 -1
  552. package/dist/commonjs/request/ErrorResponse.js +19 -0
  553. package/dist/commonjs/request/ErrorResponse.js.map +1 -1
  554. package/dist/commonjs/request/FeedResponse.js +4 -0
  555. package/dist/commonjs/request/FeedResponse.js.map +1 -1
  556. package/dist/commonjs/request/RequestHandler.js +1 -2
  557. package/dist/commonjs/request/RequestHandler.js.map +1 -1
  558. package/dist/commonjs/request/ResourceResponse.js +5 -0
  559. package/dist/commonjs/request/ResourceResponse.js.map +1 -1
  560. package/dist/commonjs/request/TimeoutError.js +1 -1
  561. package/dist/commonjs/request/TimeoutError.js.map +1 -1
  562. package/dist/commonjs/request/hybridSearchQueryResult.js +5 -0
  563. package/dist/commonjs/request/hybridSearchQueryResult.js.map +1 -1
  564. package/dist/commonjs/request/request.d.ts.map +1 -1
  565. package/dist/commonjs/request/request.js +8 -4
  566. package/dist/commonjs/request/request.js.map +1 -1
  567. package/dist/commonjs/retry/bulkExecutionRetryPolicy.js +5 -2
  568. package/dist/commonjs/retry/bulkExecutionRetryPolicy.js.map +1 -1
  569. package/dist/commonjs/retry/defaultRetryPolicy.js +4 -3
  570. package/dist/commonjs/retry/defaultRetryPolicy.js.map +1 -1
  571. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js +11 -2
  572. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  573. package/dist/commonjs/retry/resourceThrottleRetryPolicy.js +20 -10
  574. package/dist/commonjs/retry/resourceThrottleRetryPolicy.js.map +1 -1
  575. package/dist/commonjs/retry/retryUtility.js +2 -3
  576. package/dist/commonjs/retry/retryUtility.js.map +1 -1
  577. package/dist/commonjs/retry/sessionRetryPolicy.js +8 -4
  578. package/dist/commonjs/retry/sessionRetryPolicy.js.map +1 -1
  579. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
  580. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js +17 -7
  581. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  582. package/dist/commonjs/routing/QueryRange.js +4 -0
  583. package/dist/commonjs/routing/QueryRange.js.map +1 -1
  584. package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js +4 -0
  585. package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  586. package/dist/commonjs/routing/partitionKeyRangeCache.js +2 -0
  587. package/dist/commonjs/routing/partitionKeyRangeCache.js.map +1 -1
  588. package/dist/commonjs/routing/smartRoutingMapProvider.js +1 -0
  589. package/dist/commonjs/routing/smartRoutingMapProvider.js.map +1 -1
  590. package/dist/commonjs/session/VectorSessionToken.js +6 -2
  591. package/dist/commonjs/session/VectorSessionToken.js.map +1 -1
  592. package/dist/commonjs/session/sessionContainer.js +5 -3
  593. package/dist/commonjs/session/sessionContainer.js.map +1 -1
  594. package/dist/commonjs/tsdoc-metadata.json +11 -11
  595. package/dist/commonjs/utils/batch.js +15 -4
  596. package/dist/commonjs/utils/batch.js.map +1 -1
  597. package/dist/commonjs/utils/fixedSizePriorityQueue.js +4 -0
  598. package/dist/commonjs/utils/fixedSizePriorityQueue.js.map +1 -1
  599. package/dist/commonjs/utils/hashing/hash.js +1 -1
  600. package/dist/commonjs/utils/hashing/hash.js.map +1 -1
  601. package/dist/commonjs/utils/nonStreamingOrderByMap.js +2 -0
  602. package/dist/commonjs/utils/nonStreamingOrderByMap.js.map +1 -1
  603. package/dist/commonjs/utils/time.d.ts +8 -0
  604. package/dist/commonjs/utils/time.d.ts.map +1 -1
  605. package/dist/commonjs/utils/time.js +20 -0
  606. package/dist/commonjs/utils/time.js.map +1 -1
  607. package/dist/esm/ChangeFeedIterator.js +17 -11
  608. package/dist/esm/ChangeFeedIterator.js.map +1 -1
  609. package/dist/esm/ChangeFeedResponse.js +8 -0
  610. package/dist/esm/ChangeFeedResponse.js.map +1 -1
  611. package/dist/esm/ClientContext.js +122 -29
  612. package/dist/esm/ClientContext.js.map +1 -1
  613. package/dist/esm/CosmosClient.d.ts.map +1 -1
  614. package/dist/esm/CosmosClient.js +37 -3
  615. package/dist/esm/CosmosClient.js.map +1 -1
  616. package/dist/esm/CosmosDiagnostics.js +3 -0
  617. package/dist/esm/CosmosDiagnostics.js.map +1 -1
  618. package/dist/esm/PartitionKeyRangeFailoverInfo.js +8 -5
  619. package/dist/esm/PartitionKeyRangeFailoverInfo.js.map +1 -1
  620. package/dist/esm/bulk/Batcher.js +13 -3
  621. package/dist/esm/bulk/Batcher.js.map +1 -1
  622. package/dist/esm/bulk/BulkHelper.js +26 -11
  623. package/dist/esm/bulk/BulkHelper.js.map +1 -1
  624. package/dist/esm/bulk/BulkResponse.js +22 -20
  625. package/dist/esm/bulk/BulkResponse.js.map +1 -1
  626. package/dist/esm/bulk/CongestionAlgorithm.js +11 -4
  627. package/dist/esm/bulk/CongestionAlgorithm.js.map +1 -1
  628. package/dist/esm/bulk/HelperPerPartition.js +14 -1
  629. package/dist/esm/bulk/HelperPerPartition.js.map +1 -1
  630. package/dist/esm/bulk/ItemOperationContext.js +4 -0
  631. package/dist/esm/bulk/ItemOperationContext.js.map +1 -1
  632. package/dist/esm/bulk/Limiter.js +27 -18
  633. package/dist/esm/bulk/Limiter.js.map +1 -1
  634. package/dist/esm/bulk/PartitionMetric.js +4 -0
  635. package/dist/esm/bulk/PartitionMetric.js.map +1 -1
  636. package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  637. package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  638. package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.d.ts.map +1 -1
  639. package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js +20 -8
  640. package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  641. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  642. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  643. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  644. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  645. package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  646. package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  647. package/dist/esm/client/ChangeFeed/ChangeFeedRange.js +20 -0
  648. package/dist/esm/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  649. package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  650. package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  651. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  652. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  653. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  654. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  655. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  656. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  657. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  658. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  659. package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  660. package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  661. package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  662. package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  663. package/dist/esm/client/ChangeFeed/FeedRange.js +8 -0
  664. package/dist/esm/client/ChangeFeed/FeedRange.js.map +1 -1
  665. package/dist/esm/client/ChangeFeed/FeedRangeQueue.js +1 -0
  666. package/dist/esm/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  667. package/dist/esm/client/ChangeFeed/changeFeedUtils.js +5 -5
  668. package/dist/esm/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  669. package/dist/esm/client/ClientUtils.js +1 -1
  670. package/dist/esm/client/ClientUtils.js.map +1 -1
  671. package/dist/esm/client/Conflict/Conflict.js +4 -0
  672. package/dist/esm/client/Conflict/Conflict.js.map +1 -1
  673. package/dist/esm/client/Conflict/ConflictResponse.js +2 -0
  674. package/dist/esm/client/Conflict/ConflictResponse.js.map +1 -1
  675. package/dist/esm/client/Conflict/Conflicts.js +2 -0
  676. package/dist/esm/client/Conflict/Conflicts.js.map +1 -1
  677. package/dist/esm/client/Container/Container.js +18 -3
  678. package/dist/esm/client/Container/Container.js.map +1 -1
  679. package/dist/esm/client/Container/ContainerResponse.js +2 -0
  680. package/dist/esm/client/Container/ContainerResponse.js.map +1 -1
  681. package/dist/esm/client/Container/Containers.js +4 -2
  682. package/dist/esm/client/Container/Containers.js.map +1 -1
  683. package/dist/esm/client/Database/Database.js +33 -0
  684. package/dist/esm/client/Database/Database.js.map +1 -1
  685. package/dist/esm/client/Database/DatabaseResponse.js +2 -0
  686. package/dist/esm/client/Database/DatabaseResponse.js.map +1 -1
  687. package/dist/esm/client/Database/Databases.js +3 -0
  688. package/dist/esm/client/Database/Databases.js.map +1 -1
  689. package/dist/esm/client/Item/Item.js +4 -0
  690. package/dist/esm/client/Item/Item.js.map +1 -1
  691. package/dist/esm/client/Item/ItemResponse.js +2 -0
  692. package/dist/esm/client/Item/ItemResponse.js.map +1 -1
  693. package/dist/esm/client/Item/Items.d.ts.map +1 -1
  694. package/dist/esm/client/Item/Items.js +12 -0
  695. package/dist/esm/client/Item/Items.js.map +1 -1
  696. package/dist/esm/client/Offer/Offer.js +3 -0
  697. package/dist/esm/client/Offer/Offer.js.map +1 -1
  698. package/dist/esm/client/Offer/OfferResponse.js +2 -0
  699. package/dist/esm/client/Offer/OfferResponse.js.map +1 -1
  700. package/dist/esm/client/Offer/Offers.js +2 -0
  701. package/dist/esm/client/Offer/Offers.js.map +1 -1
  702. package/dist/esm/client/Permission/Permission.js +3 -0
  703. package/dist/esm/client/Permission/Permission.js.map +1 -1
  704. package/dist/esm/client/Permission/PermissionResponse.js +2 -0
  705. package/dist/esm/client/Permission/PermissionResponse.js.map +1 -1
  706. package/dist/esm/client/Permission/Permissions.js +2 -0
  707. package/dist/esm/client/Permission/Permissions.js.map +1 -1
  708. package/dist/esm/client/SasToken/SasTokenProperties.js +17 -0
  709. package/dist/esm/client/SasToken/SasTokenProperties.js.map +1 -1
  710. package/dist/esm/client/Script/Scripts.js +5 -0
  711. package/dist/esm/client/Script/Scripts.js.map +1 -1
  712. package/dist/esm/client/StoredProcedure/StoredProcedure.js +3 -0
  713. package/dist/esm/client/StoredProcedure/StoredProcedure.js.map +1 -1
  714. package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  715. package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  716. package/dist/esm/client/StoredProcedure/StoredProcedures.js +2 -0
  717. package/dist/esm/client/StoredProcedure/StoredProcedures.js.map +1 -1
  718. package/dist/esm/client/Trigger/Trigger.js +3 -0
  719. package/dist/esm/client/Trigger/Trigger.js.map +1 -1
  720. package/dist/esm/client/Trigger/TriggerResponse.js +2 -0
  721. package/dist/esm/client/Trigger/TriggerResponse.js.map +1 -1
  722. package/dist/esm/client/Trigger/Triggers.js +2 -0
  723. package/dist/esm/client/Trigger/Triggers.js.map +1 -1
  724. package/dist/esm/client/User/User.js +9 -0
  725. package/dist/esm/client/User/User.js.map +1 -1
  726. package/dist/esm/client/User/UserResponse.js +2 -0
  727. package/dist/esm/client/User/UserResponse.js.map +1 -1
  728. package/dist/esm/client/User/Users.js +2 -0
  729. package/dist/esm/client/User/Users.js.map +1 -1
  730. package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  731. package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  732. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  733. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  734. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  735. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  736. package/dist/esm/diagnostics/CosmosDiagnosticsContext.js +8 -7
  737. package/dist/esm/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  738. package/dist/esm/diagnostics/DiagnosticNodeInternal.js +26 -7
  739. package/dist/esm/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  740. package/dist/esm/diagnostics/DiagnosticWriter.js +1 -3
  741. package/dist/esm/diagnostics/DiagnosticWriter.js.map +1 -1
  742. package/dist/esm/diagnostics/index.js +2 -2
  743. package/dist/esm/diagnostics/index.js.map +1 -1
  744. package/dist/esm/documents/DatabaseAccount.js +20 -4
  745. package/dist/esm/documents/DatabaseAccount.js.map +1 -1
  746. package/dist/esm/documents/PartitionKey.js +1 -3
  747. package/dist/esm/documents/PartitionKey.js.map +1 -1
  748. package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
  749. package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
  750. package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  751. package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  752. package/dist/esm/encryption/Cache/EncryptionSettingsCache.js +2 -0
  753. package/dist/esm/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  754. package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  755. package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  756. package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.d.ts.map +1 -1
  757. package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js +7 -1
  758. package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
  759. package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  760. package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  761. package/dist/esm/encryption/EncryptionItemQueryIterator.js +24 -27
  762. package/dist/esm/encryption/EncryptionItemQueryIterator.js.map +1 -1
  763. package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
  764. package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
  765. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  766. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  767. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  768. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  769. package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  770. package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  771. package/dist/esm/encryption/EncryptionKeyStoreProvider.d.ts.map +1 -1
  772. package/dist/esm/encryption/EncryptionKeyStoreProvider.js +10 -2
  773. package/dist/esm/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  774. package/dist/esm/encryption/EncryptionManager.js +6 -0
  775. package/dist/esm/encryption/EncryptionManager.js.map +1 -1
  776. package/dist/esm/encryption/EncryptionProcessor.js +5 -0
  777. package/dist/esm/encryption/EncryptionProcessor.js.map +1 -1
  778. package/dist/esm/encryption/EncryptionQueryBuilder.js +2 -0
  779. package/dist/esm/encryption/EncryptionQueryBuilder.js.map +1 -1
  780. package/dist/esm/encryption/EncryptionSettingForProperty.js +6 -0
  781. package/dist/esm/encryption/EncryptionSettingForProperty.js.map +1 -1
  782. package/dist/esm/encryption/EncryptionSettings.js +6 -3
  783. package/dist/esm/encryption/EncryptionSettings.js.map +1 -1
  784. package/dist/esm/encryption/KeyEncryptionKey.js +4 -0
  785. package/dist/esm/encryption/KeyEncryptionKey.js.map +1 -1
  786. package/dist/esm/encryption/Serializers/StringSerializer.js +1 -1
  787. package/dist/esm/encryption/Serializers/StringSerializer.js.map +1 -1
  788. package/dist/esm/extractPartitionKey.js +2 -2
  789. package/dist/esm/extractPartitionKey.js.map +1 -1
  790. package/dist/esm/globalEndpointManager.js +21 -4
  791. package/dist/esm/globalEndpointManager.js.map +1 -1
  792. package/dist/esm/globalPartitionEndpointManager.d.ts.map +1 -1
  793. package/dist/esm/globalPartitionEndpointManager.js +16 -9
  794. package/dist/esm/globalPartitionEndpointManager.js.map +1 -1
  795. package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  796. package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  797. package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  798. package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  799. package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  800. package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  801. package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  802. package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  803. package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  804. package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  805. package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  806. package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  807. package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  808. package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  809. package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  810. package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  811. package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  812. package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  813. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  814. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  815. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  816. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  817. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  818. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  819. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  820. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  821. package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  822. package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  823. package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  824. package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  825. package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  826. package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  827. package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  828. package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  829. package/dist/esm/queryExecutionContext/FetchResult.js +4 -0
  830. package/dist/esm/queryExecutionContext/FetchResult.js.map +1 -1
  831. package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  832. package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  833. package/dist/esm/queryExecutionContext/documentProducer.js +34 -21
  834. package/dist/esm/queryExecutionContext/documentProducer.js.map +1 -1
  835. package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  836. package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  837. package/dist/esm/queryExecutionContext/orderByComparator.js +1 -0
  838. package/dist/esm/queryExecutionContext/orderByComparator.js.map +1 -1
  839. package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  840. package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  841. package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  842. package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  843. package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  844. package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  845. package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  846. package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  847. package/dist/esm/queryIterator.js +41 -33
  848. package/dist/esm/queryIterator.js.map +1 -1
  849. package/dist/esm/queryMetrics/clientSideMetrics.js +2 -1
  850. package/dist/esm/queryMetrics/clientSideMetrics.js.map +1 -1
  851. package/dist/esm/queryMetrics/queryMetrics.js +14 -1
  852. package/dist/esm/queryMetrics/queryMetrics.js.map +1 -1
  853. package/dist/esm/queryMetrics/queryPreparationTime.js +5 -1
  854. package/dist/esm/queryMetrics/queryPreparationTime.js.map +1 -1
  855. package/dist/esm/queryMetrics/runtimeExecutionTimes.js +4 -1
  856. package/dist/esm/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  857. package/dist/esm/queryMetrics/timeSpan.js +4 -3
  858. package/dist/esm/queryMetrics/timeSpan.js.map +1 -1
  859. package/dist/esm/request/ErrorResponse.js +19 -0
  860. package/dist/esm/request/ErrorResponse.js.map +1 -1
  861. package/dist/esm/request/FeedResponse.js +4 -0
  862. package/dist/esm/request/FeedResponse.js.map +1 -1
  863. package/dist/esm/request/RequestHandler.js +1 -2
  864. package/dist/esm/request/RequestHandler.js.map +1 -1
  865. package/dist/esm/request/ResourceResponse.js +5 -0
  866. package/dist/esm/request/ResourceResponse.js.map +1 -1
  867. package/dist/esm/request/TimeoutError.js +1 -1
  868. package/dist/esm/request/TimeoutError.js.map +1 -1
  869. package/dist/esm/request/hybridSearchQueryResult.js +5 -0
  870. package/dist/esm/request/hybridSearchQueryResult.js.map +1 -1
  871. package/dist/esm/request/request.d.ts.map +1 -1
  872. package/dist/esm/request/request.js +8 -4
  873. package/dist/esm/request/request.js.map +1 -1
  874. package/dist/esm/retry/bulkExecutionRetryPolicy.js +5 -2
  875. package/dist/esm/retry/bulkExecutionRetryPolicy.js.map +1 -1
  876. package/dist/esm/retry/defaultRetryPolicy.js +4 -3
  877. package/dist/esm/retry/defaultRetryPolicy.js.map +1 -1
  878. package/dist/esm/retry/endpointDiscoveryRetryPolicy.js +11 -2
  879. package/dist/esm/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  880. package/dist/esm/retry/resourceThrottleRetryPolicy.js +20 -10
  881. package/dist/esm/retry/resourceThrottleRetryPolicy.js.map +1 -1
  882. package/dist/esm/retry/retryUtility.js +2 -3
  883. package/dist/esm/retry/retryUtility.js.map +1 -1
  884. package/dist/esm/retry/sessionRetryPolicy.js +8 -4
  885. package/dist/esm/retry/sessionRetryPolicy.js.map +1 -1
  886. package/dist/esm/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
  887. package/dist/esm/retry/timeoutFailoverRetryPolicy.js +17 -7
  888. package/dist/esm/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  889. package/dist/esm/routing/QueryRange.js +4 -0
  890. package/dist/esm/routing/QueryRange.js.map +1 -1
  891. package/dist/esm/routing/inMemoryCollectionRoutingMap.js +4 -0
  892. package/dist/esm/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  893. package/dist/esm/routing/partitionKeyRangeCache.js +2 -0
  894. package/dist/esm/routing/partitionKeyRangeCache.js.map +1 -1
  895. package/dist/esm/routing/smartRoutingMapProvider.js +1 -0
  896. package/dist/esm/routing/smartRoutingMapProvider.js.map +1 -1
  897. package/dist/esm/session/VectorSessionToken.js +6 -2
  898. package/dist/esm/session/VectorSessionToken.js.map +1 -1
  899. package/dist/esm/session/sessionContainer.js +5 -3
  900. package/dist/esm/session/sessionContainer.js.map +1 -1
  901. package/dist/esm/utils/batch.js +15 -4
  902. package/dist/esm/utils/batch.js.map +1 -1
  903. package/dist/esm/utils/fixedSizePriorityQueue.js +4 -0
  904. package/dist/esm/utils/fixedSizePriorityQueue.js.map +1 -1
  905. package/dist/esm/utils/hashing/hash.js +1 -1
  906. package/dist/esm/utils/hashing/hash.js.map +1 -1
  907. package/dist/esm/utils/nonStreamingOrderByMap.js +2 -0
  908. package/dist/esm/utils/nonStreamingOrderByMap.js.map +1 -1
  909. package/dist/esm/utils/time.d.ts +8 -0
  910. package/dist/esm/utils/time.d.ts.map +1 -1
  911. package/dist/esm/utils/time.js +19 -0
  912. package/dist/esm/utils/time.js.map +1 -1
  913. package/dist/react-native/ChangeFeedIterator.js +17 -11
  914. package/dist/react-native/ChangeFeedIterator.js.map +1 -1
  915. package/dist/react-native/ChangeFeedResponse.js +8 -0
  916. package/dist/react-native/ChangeFeedResponse.js.map +1 -1
  917. package/dist/react-native/ClientContext.js +122 -29
  918. package/dist/react-native/ClientContext.js.map +1 -1
  919. package/dist/react-native/CosmosClient.d.ts.map +1 -1
  920. package/dist/react-native/CosmosClient.js +37 -3
  921. package/dist/react-native/CosmosClient.js.map +1 -1
  922. package/dist/react-native/CosmosDiagnostics.js +3 -0
  923. package/dist/react-native/CosmosDiagnostics.js.map +1 -1
  924. package/dist/react-native/PartitionKeyRangeFailoverInfo.js +8 -5
  925. package/dist/react-native/PartitionKeyRangeFailoverInfo.js.map +1 -1
  926. package/dist/react-native/bulk/Batcher.js +13 -3
  927. package/dist/react-native/bulk/Batcher.js.map +1 -1
  928. package/dist/react-native/bulk/BulkHelper.js +26 -11
  929. package/dist/react-native/bulk/BulkHelper.js.map +1 -1
  930. package/dist/react-native/bulk/BulkResponse.js +22 -20
  931. package/dist/react-native/bulk/BulkResponse.js.map +1 -1
  932. package/dist/react-native/bulk/CongestionAlgorithm.js +11 -4
  933. package/dist/react-native/bulk/CongestionAlgorithm.js.map +1 -1
  934. package/dist/react-native/bulk/HelperPerPartition.js +14 -1
  935. package/dist/react-native/bulk/HelperPerPartition.js.map +1 -1
  936. package/dist/react-native/bulk/ItemOperationContext.js +4 -0
  937. package/dist/react-native/bulk/ItemOperationContext.js.map +1 -1
  938. package/dist/react-native/bulk/Limiter.js +27 -18
  939. package/dist/react-native/bulk/Limiter.js.map +1 -1
  940. package/dist/react-native/bulk/PartitionMetric.js +4 -0
  941. package/dist/react-native/bulk/PartitionMetric.js.map +1 -1
  942. package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  943. package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  944. package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.d.ts.map +1 -1
  945. package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js +20 -8
  946. package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  947. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  948. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  949. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  950. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  951. package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  952. package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  953. package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js +20 -0
  954. package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  955. package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  956. package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  957. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  958. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  959. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  960. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  961. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  962. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  963. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  964. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  965. package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  966. package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  967. package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  968. package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  969. package/dist/react-native/client/ChangeFeed/FeedRange.js +8 -0
  970. package/dist/react-native/client/ChangeFeed/FeedRange.js.map +1 -1
  971. package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js +1 -0
  972. package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  973. package/dist/react-native/client/ChangeFeed/changeFeedUtils.js +5 -5
  974. package/dist/react-native/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  975. package/dist/react-native/client/ClientUtils.js +1 -1
  976. package/dist/react-native/client/ClientUtils.js.map +1 -1
  977. package/dist/react-native/client/Conflict/Conflict.js +4 -0
  978. package/dist/react-native/client/Conflict/Conflict.js.map +1 -1
  979. package/dist/react-native/client/Conflict/ConflictResponse.js +2 -0
  980. package/dist/react-native/client/Conflict/ConflictResponse.js.map +1 -1
  981. package/dist/react-native/client/Conflict/Conflicts.js +2 -0
  982. package/dist/react-native/client/Conflict/Conflicts.js.map +1 -1
  983. package/dist/react-native/client/Container/Container.js +18 -3
  984. package/dist/react-native/client/Container/Container.js.map +1 -1
  985. package/dist/react-native/client/Container/ContainerResponse.js +2 -0
  986. package/dist/react-native/client/Container/ContainerResponse.js.map +1 -1
  987. package/dist/react-native/client/Container/Containers.js +4 -2
  988. package/dist/react-native/client/Container/Containers.js.map +1 -1
  989. package/dist/react-native/client/Database/Database.js +33 -0
  990. package/dist/react-native/client/Database/Database.js.map +1 -1
  991. package/dist/react-native/client/Database/DatabaseResponse.js +2 -0
  992. package/dist/react-native/client/Database/DatabaseResponse.js.map +1 -1
  993. package/dist/react-native/client/Database/Databases.js +3 -0
  994. package/dist/react-native/client/Database/Databases.js.map +1 -1
  995. package/dist/react-native/client/Item/Item.js +4 -0
  996. package/dist/react-native/client/Item/Item.js.map +1 -1
  997. package/dist/react-native/client/Item/ItemResponse.js +2 -0
  998. package/dist/react-native/client/Item/ItemResponse.js.map +1 -1
  999. package/dist/react-native/client/Item/Items.d.ts.map +1 -1
  1000. package/dist/react-native/client/Item/Items.js +12 -0
  1001. package/dist/react-native/client/Item/Items.js.map +1 -1
  1002. package/dist/react-native/client/Offer/Offer.js +3 -0
  1003. package/dist/react-native/client/Offer/Offer.js.map +1 -1
  1004. package/dist/react-native/client/Offer/OfferResponse.js +2 -0
  1005. package/dist/react-native/client/Offer/OfferResponse.js.map +1 -1
  1006. package/dist/react-native/client/Offer/Offers.js +2 -0
  1007. package/dist/react-native/client/Offer/Offers.js.map +1 -1
  1008. package/dist/react-native/client/Permission/Permission.js +3 -0
  1009. package/dist/react-native/client/Permission/Permission.js.map +1 -1
  1010. package/dist/react-native/client/Permission/PermissionResponse.js +2 -0
  1011. package/dist/react-native/client/Permission/PermissionResponse.js.map +1 -1
  1012. package/dist/react-native/client/Permission/Permissions.js +2 -0
  1013. package/dist/react-native/client/Permission/Permissions.js.map +1 -1
  1014. package/dist/react-native/client/SasToken/SasTokenProperties.js +17 -0
  1015. package/dist/react-native/client/SasToken/SasTokenProperties.js.map +1 -1
  1016. package/dist/react-native/client/Script/Scripts.js +5 -0
  1017. package/dist/react-native/client/Script/Scripts.js.map +1 -1
  1018. package/dist/react-native/client/StoredProcedure/StoredProcedure.js +3 -0
  1019. package/dist/react-native/client/StoredProcedure/StoredProcedure.js.map +1 -1
  1020. package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  1021. package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  1022. package/dist/react-native/client/StoredProcedure/StoredProcedures.js +2 -0
  1023. package/dist/react-native/client/StoredProcedure/StoredProcedures.js.map +1 -1
  1024. package/dist/react-native/client/Trigger/Trigger.js +3 -0
  1025. package/dist/react-native/client/Trigger/Trigger.js.map +1 -1
  1026. package/dist/react-native/client/Trigger/TriggerResponse.js +2 -0
  1027. package/dist/react-native/client/Trigger/TriggerResponse.js.map +1 -1
  1028. package/dist/react-native/client/Trigger/Triggers.js +2 -0
  1029. package/dist/react-native/client/Trigger/Triggers.js.map +1 -1
  1030. package/dist/react-native/client/User/User.js +9 -0
  1031. package/dist/react-native/client/User/User.js.map +1 -1
  1032. package/dist/react-native/client/User/UserResponse.js +2 -0
  1033. package/dist/react-native/client/User/UserResponse.js.map +1 -1
  1034. package/dist/react-native/client/User/Users.js +2 -0
  1035. package/dist/react-native/client/User/Users.js.map +1 -1
  1036. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  1037. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  1038. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  1039. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  1040. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  1041. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  1042. package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js +8 -7
  1043. package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  1044. package/dist/react-native/diagnostics/DiagnosticNodeInternal.js +26 -7
  1045. package/dist/react-native/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  1046. package/dist/react-native/diagnostics/DiagnosticWriter.js +1 -3
  1047. package/dist/react-native/diagnostics/DiagnosticWriter.js.map +1 -1
  1048. package/dist/react-native/diagnostics/index.js +2 -2
  1049. package/dist/react-native/diagnostics/index.js.map +1 -1
  1050. package/dist/react-native/documents/DatabaseAccount.js +20 -4
  1051. package/dist/react-native/documents/DatabaseAccount.js.map +1 -1
  1052. package/dist/react-native/documents/PartitionKey.js +1 -3
  1053. package/dist/react-native/documents/PartitionKey.js.map +1 -1
  1054. package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
  1055. package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
  1056. package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  1057. package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  1058. package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js +2 -0
  1059. package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  1060. package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  1061. package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  1062. package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.d.ts.map +1 -1
  1063. package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js +7 -1
  1064. package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
  1065. package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  1066. package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  1067. package/dist/react-native/encryption/EncryptionItemQueryIterator.js +24 -27
  1068. package/dist/react-native/encryption/EncryptionItemQueryIterator.js.map +1 -1
  1069. package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
  1070. package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
  1071. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  1072. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  1073. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  1074. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  1075. package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  1076. package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  1077. package/dist/react-native/encryption/EncryptionKeyStoreProvider.d.ts.map +1 -1
  1078. package/dist/react-native/encryption/EncryptionKeyStoreProvider.js +10 -2
  1079. package/dist/react-native/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  1080. package/dist/react-native/encryption/EncryptionManager.js +6 -0
  1081. package/dist/react-native/encryption/EncryptionManager.js.map +1 -1
  1082. package/dist/react-native/encryption/EncryptionProcessor.js +5 -0
  1083. package/dist/react-native/encryption/EncryptionProcessor.js.map +1 -1
  1084. package/dist/react-native/encryption/EncryptionQueryBuilder.js +2 -0
  1085. package/dist/react-native/encryption/EncryptionQueryBuilder.js.map +1 -1
  1086. package/dist/react-native/encryption/EncryptionSettingForProperty.js +6 -0
  1087. package/dist/react-native/encryption/EncryptionSettingForProperty.js.map +1 -1
  1088. package/dist/react-native/encryption/EncryptionSettings.js +6 -3
  1089. package/dist/react-native/encryption/EncryptionSettings.js.map +1 -1
  1090. package/dist/react-native/encryption/KeyEncryptionKey.js +4 -0
  1091. package/dist/react-native/encryption/KeyEncryptionKey.js.map +1 -1
  1092. package/dist/react-native/encryption/Serializers/StringSerializer.js +1 -1
  1093. package/dist/react-native/encryption/Serializers/StringSerializer.js.map +1 -1
  1094. package/dist/react-native/extractPartitionKey.js +2 -2
  1095. package/dist/react-native/extractPartitionKey.js.map +1 -1
  1096. package/dist/react-native/globalEndpointManager.js +21 -4
  1097. package/dist/react-native/globalEndpointManager.js.map +1 -1
  1098. package/dist/react-native/globalPartitionEndpointManager.d.ts.map +1 -1
  1099. package/dist/react-native/globalPartitionEndpointManager.js +16 -9
  1100. package/dist/react-native/globalPartitionEndpointManager.js.map +1 -1
  1101. package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  1102. package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  1103. package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  1104. package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  1105. package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  1106. package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  1107. package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  1108. package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  1109. package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  1110. package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  1111. package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  1112. package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  1113. package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  1114. package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  1115. package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  1116. package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  1117. package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  1118. package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  1119. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  1120. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  1121. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  1122. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  1123. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  1124. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  1125. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  1126. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  1127. package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  1128. package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  1129. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  1130. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  1131. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  1132. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  1133. package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  1134. package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  1135. package/dist/react-native/queryExecutionContext/FetchResult.js +4 -0
  1136. package/dist/react-native/queryExecutionContext/FetchResult.js.map +1 -1
  1137. package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  1138. package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  1139. package/dist/react-native/queryExecutionContext/documentProducer.js +34 -21
  1140. package/dist/react-native/queryExecutionContext/documentProducer.js.map +1 -1
  1141. package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  1142. package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  1143. package/dist/react-native/queryExecutionContext/orderByComparator.js +1 -0
  1144. package/dist/react-native/queryExecutionContext/orderByComparator.js.map +1 -1
  1145. package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  1146. package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  1147. package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  1148. package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  1149. package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  1150. package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  1151. package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  1152. package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  1153. package/dist/react-native/queryIterator.js +41 -33
  1154. package/dist/react-native/queryIterator.js.map +1 -1
  1155. package/dist/react-native/queryMetrics/clientSideMetrics.js +2 -1
  1156. package/dist/react-native/queryMetrics/clientSideMetrics.js.map +1 -1
  1157. package/dist/react-native/queryMetrics/queryMetrics.js +14 -1
  1158. package/dist/react-native/queryMetrics/queryMetrics.js.map +1 -1
  1159. package/dist/react-native/queryMetrics/queryPreparationTime.js +5 -1
  1160. package/dist/react-native/queryMetrics/queryPreparationTime.js.map +1 -1
  1161. package/dist/react-native/queryMetrics/runtimeExecutionTimes.js +4 -1
  1162. package/dist/react-native/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  1163. package/dist/react-native/queryMetrics/timeSpan.js +4 -3
  1164. package/dist/react-native/queryMetrics/timeSpan.js.map +1 -1
  1165. package/dist/react-native/request/ErrorResponse.js +19 -0
  1166. package/dist/react-native/request/ErrorResponse.js.map +1 -1
  1167. package/dist/react-native/request/FeedResponse.js +4 -0
  1168. package/dist/react-native/request/FeedResponse.js.map +1 -1
  1169. package/dist/react-native/request/RequestHandler.js +1 -2
  1170. package/dist/react-native/request/RequestHandler.js.map +1 -1
  1171. package/dist/react-native/request/ResourceResponse.js +5 -0
  1172. package/dist/react-native/request/ResourceResponse.js.map +1 -1
  1173. package/dist/react-native/request/TimeoutError.js +1 -1
  1174. package/dist/react-native/request/TimeoutError.js.map +1 -1
  1175. package/dist/react-native/request/hybridSearchQueryResult.js +5 -0
  1176. package/dist/react-native/request/hybridSearchQueryResult.js.map +1 -1
  1177. package/dist/react-native/request/request.d.ts.map +1 -1
  1178. package/dist/react-native/request/request.js +8 -4
  1179. package/dist/react-native/request/request.js.map +1 -1
  1180. package/dist/react-native/retry/bulkExecutionRetryPolicy.js +5 -2
  1181. package/dist/react-native/retry/bulkExecutionRetryPolicy.js.map +1 -1
  1182. package/dist/react-native/retry/defaultRetryPolicy.js +4 -3
  1183. package/dist/react-native/retry/defaultRetryPolicy.js.map +1 -1
  1184. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js +11 -2
  1185. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  1186. package/dist/react-native/retry/resourceThrottleRetryPolicy.js +20 -10
  1187. package/dist/react-native/retry/resourceThrottleRetryPolicy.js.map +1 -1
  1188. package/dist/react-native/retry/retryUtility.js +2 -3
  1189. package/dist/react-native/retry/retryUtility.js.map +1 -1
  1190. package/dist/react-native/retry/sessionRetryPolicy.js +8 -4
  1191. package/dist/react-native/retry/sessionRetryPolicy.js.map +1 -1
  1192. package/dist/react-native/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
  1193. package/dist/react-native/retry/timeoutFailoverRetryPolicy.js +17 -7
  1194. package/dist/react-native/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  1195. package/dist/react-native/routing/QueryRange.js +4 -0
  1196. package/dist/react-native/routing/QueryRange.js.map +1 -1
  1197. package/dist/react-native/routing/inMemoryCollectionRoutingMap.js +4 -0
  1198. package/dist/react-native/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  1199. package/dist/react-native/routing/partitionKeyRangeCache.js +2 -0
  1200. package/dist/react-native/routing/partitionKeyRangeCache.js.map +1 -1
  1201. package/dist/react-native/routing/smartRoutingMapProvider.js +1 -0
  1202. package/dist/react-native/routing/smartRoutingMapProvider.js.map +1 -1
  1203. package/dist/react-native/session/VectorSessionToken.js +6 -2
  1204. package/dist/react-native/session/VectorSessionToken.js.map +1 -1
  1205. package/dist/react-native/session/sessionContainer.js +5 -3
  1206. package/dist/react-native/session/sessionContainer.js.map +1 -1
  1207. package/dist/react-native/utils/batch.js +15 -4
  1208. package/dist/react-native/utils/batch.js.map +1 -1
  1209. package/dist/react-native/utils/fixedSizePriorityQueue.js +4 -0
  1210. package/dist/react-native/utils/fixedSizePriorityQueue.js.map +1 -1
  1211. package/dist/react-native/utils/hashing/hash.js +1 -1
  1212. package/dist/react-native/utils/hashing/hash.js.map +1 -1
  1213. package/dist/react-native/utils/nonStreamingOrderByMap.js +2 -0
  1214. package/dist/react-native/utils/nonStreamingOrderByMap.js.map +1 -1
  1215. package/dist/react-native/utils/time.d.ts +8 -0
  1216. package/dist/react-native/utils/time.d.ts.map +1 -1
  1217. package/dist/react-native/utils/time.js +19 -0
  1218. package/dist/react-native/utils/time.js.map +1 -1
  1219. package/package.json +1 -1
@@ -28,6 +28,7 @@ const TYPEORDCOMPARATOR = Object.freeze({
28
28
  });
29
29
  /** @hidden */
30
30
  export class OrderByDocumentProducerComparator {
31
+ sortOrder;
31
32
  constructor(sortOrder) {
32
33
  this.sortOrder = sortOrder;
33
34
  } // TODO: This should be an enum
@@ -1 +1 @@
1
- {"version":3,"file":"orderByDocumentProducerComparator.js","sourceRoot":"","sources":["../../../src/queryExecutionContext/orderByDocumentProducerComparator.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DocumentProducer } from \"./documentProducer.js\";\n\n// TODO: this smells funny\n/** @hidden */\nconst TYPEORDCOMPARATOR: {\n [type: string]: { ord: number; compFunc?: (a: any, b: any) => number };\n} = Object.freeze({\n NoValue: {\n ord: 0,\n },\n undefined: {\n ord: 1,\n },\n boolean: {\n ord: 2,\n compFunc: (a: boolean, b: boolean) => {\n return a === b ? 0 : a > b ? 1 : -1;\n },\n },\n number: {\n ord: 4,\n compFunc: (a: number, b: number) => {\n return a === b ? 0 : a > b ? 1 : -1;\n },\n },\n string: {\n ord: 5,\n compFunc: (a: string, b: string) => {\n return a === b ? 0 : a > b ? 1 : -1;\n },\n },\n});\n\n/** @hidden */\nexport class OrderByDocumentProducerComparator {\n constructor(public sortOrder: string[]) {} // TODO: This should be an enum\n\n private targetPartitionKeyRangeDocProdComparator(\n docProd1: DocumentProducer,\n docProd2: DocumentProducer,\n ): 0 | 1 | -1 {\n const a = docProd1.getTargetParitionKeyRange()[\"minInclusive\"];\n const b = docProd2.getTargetParitionKeyRange()[\"minInclusive\"];\n return a === b ? 0 : a > b ? 1 : -1;\n }\n\n public compare(docProd1: DocumentProducer, docProd2: DocumentProducer): number {\n // Need to check for split, since we don't want to dereference \"item\" of undefined / exception\n if (docProd1.gotSplit()) {\n return -1;\n }\n if (docProd2.gotSplit()) {\n return 1;\n }\n\n const orderByItemsRes1 = this.getOrderByItems(docProd1.peekBufferedItems()[0]);\n const orderByItemsRes2 = this.getOrderByItems(docProd2.peekBufferedItems()[0]);\n\n // validate order by items and types\n // TODO: once V1 order by on different types is fixed this need to change\n this.validateOrderByItems(orderByItemsRes1, orderByItemsRes2);\n\n // no async call in the for loop\n for (let i = 0; i < orderByItemsRes1.length; i++) {\n // compares the orderby items one by one\n const compRes = this.compareOrderByItem(orderByItemsRes1[i], orderByItemsRes2[i]);\n if (compRes !== 0) {\n if (this.sortOrder[i] === \"Ascending\") {\n return compRes;\n } else if (this.sortOrder[i] === \"Descending\") {\n return -compRes;\n }\n }\n }\n\n return this.targetPartitionKeyRangeDocProdComparator(docProd1, docProd2);\n }\n\n // TODO: This smells funny\n public compareValue(item1: unknown, type1: string, item2: unknown, type2: string): number {\n if (type1 === \"object\" || type2 === \"object\") {\n throw new Error(\"Tried to compare an object type\");\n }\n const type1Ord = TYPEORDCOMPARATOR[type1].ord;\n const type2Ord = TYPEORDCOMPARATOR[type2].ord;\n const typeCmp = type1Ord - type2Ord;\n\n if (typeCmp !== 0) {\n // if the types are different, use type ordinal\n return typeCmp;\n }\n\n // both are of the same type\n if (\n type1Ord === TYPEORDCOMPARATOR[\"undefined\"].ord ||\n type1Ord === TYPEORDCOMPARATOR[\"NoValue\"].ord\n ) {\n // if both types are undefined or Null they are equal\n return 0;\n }\n\n const compFunc = TYPEORDCOMPARATOR[type1].compFunc;\n if (typeof compFunc === \"undefined\") {\n throw new Error(\"Cannot find the comparison function\");\n }\n // same type and type is defined compare the items\n return compFunc(item1, item2);\n }\n\n private compareOrderByItem(orderByItem1: any, orderByItem2: any): number {\n const type1 = this.getType(orderByItem1);\n const type2 = this.getType(orderByItem2);\n return this.compareValue(orderByItem1[\"item\"], type1, orderByItem2[\"item\"], type2);\n }\n\n private validateOrderByItems(res1: string[], res2: string[]): void {\n if (res1.length !== res2.length) {\n throw new Error(`Expected ${res1.length}, but got ${res2.length}.`);\n }\n if (res1.length !== this.sortOrder.length) {\n throw new Error(\"orderByItems cannot have a different size than sort orders.\");\n }\n\n for (let i = 0; i < this.sortOrder.length; i++) {\n const type1 = this.getType(res1[i]);\n const type2 = this.getType(res2[i]);\n if (type1 !== type2) {\n throw new Error(\n `Expected ${type1}, but got ${type2}. Cannot execute cross partition order-by queries on mixed types. Consider filtering your query using IS_STRING or IS_NUMBER to get around this exception.`,\n );\n }\n }\n }\n\n private getType(\n orderByItem: any,\n ):\n | \"string\"\n | \"number\"\n | \"bigint\"\n | \"boolean\"\n | \"symbol\"\n | \"undefined\"\n | \"object\"\n | \"function\"\n | \"NoValue\" {\n // TODO: any item?\n if (orderByItem === undefined || orderByItem.item === undefined) {\n return \"NoValue\";\n }\n const type = typeof orderByItem.item;\n if (TYPEORDCOMPARATOR[type] === undefined) {\n throw new Error(`unrecognizable type ${type}`);\n }\n return type;\n }\n\n private getOrderByItems(res: any): any {\n // TODO: any res?\n return res[\"orderByItems\"];\n }\n}\n"]}
1
+ {"version":3,"file":"orderByDocumentProducerComparator.js","sourceRoot":"","sources":["../../../src/queryExecutionContext/orderByDocumentProducerComparator.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DocumentProducer } from \"./documentProducer.js\";\n\n// TODO: this smells funny\n/** @hidden */\nconst TYPEORDCOMPARATOR: {\n [type: string]: { ord: number; compFunc?: (a: any, b: any) => number };\n} = Object.freeze({\n NoValue: {\n ord: 0,\n },\n undefined: {\n ord: 1,\n },\n boolean: {\n ord: 2,\n compFunc: (a: boolean, b: boolean) => {\n return a === b ? 0 : a > b ? 1 : -1;\n },\n },\n number: {\n ord: 4,\n compFunc: (a: number, b: number) => {\n return a === b ? 0 : a > b ? 1 : -1;\n },\n },\n string: {\n ord: 5,\n compFunc: (a: string, b: string) => {\n return a === b ? 0 : a > b ? 1 : -1;\n },\n },\n});\n\n/** @hidden */\nexport class OrderByDocumentProducerComparator {\n constructor(public sortOrder: string[]) {} // TODO: This should be an enum\n\n private targetPartitionKeyRangeDocProdComparator(\n docProd1: DocumentProducer,\n docProd2: DocumentProducer,\n ): 0 | 1 | -1 {\n const a = docProd1.getTargetParitionKeyRange()[\"minInclusive\"];\n const b = docProd2.getTargetParitionKeyRange()[\"minInclusive\"];\n return a === b ? 0 : a > b ? 1 : -1;\n }\n\n public compare(docProd1: DocumentProducer, docProd2: DocumentProducer): number {\n // Need to check for split, since we don't want to dereference \"item\" of undefined / exception\n if (docProd1.gotSplit()) {\n return -1;\n }\n if (docProd2.gotSplit()) {\n return 1;\n }\n\n const orderByItemsRes1 = this.getOrderByItems(docProd1.peekBufferedItems()[0]);\n const orderByItemsRes2 = this.getOrderByItems(docProd2.peekBufferedItems()[0]);\n\n // validate order by items and types\n // TODO: once V1 order by on different types is fixed this need to change\n this.validateOrderByItems(orderByItemsRes1, orderByItemsRes2);\n\n // no async call in the for loop\n for (let i = 0; i < orderByItemsRes1.length; i++) {\n // compares the orderby items one by one\n const compRes = this.compareOrderByItem(orderByItemsRes1[i], orderByItemsRes2[i]);\n if (compRes !== 0) {\n if (this.sortOrder[i] === \"Ascending\") {\n return compRes;\n } else if (this.sortOrder[i] === \"Descending\") {\n return -compRes;\n }\n }\n }\n\n return this.targetPartitionKeyRangeDocProdComparator(docProd1, docProd2);\n }\n\n // TODO: This smells funny\n public compareValue(item1: unknown, type1: string, item2: unknown, type2: string): number {\n if (type1 === \"object\" || type2 === \"object\") {\n throw new Error(\"Tried to compare an object type\");\n }\n const type1Ord = TYPEORDCOMPARATOR[type1].ord;\n const type2Ord = TYPEORDCOMPARATOR[type2].ord;\n const typeCmp = type1Ord - type2Ord;\n\n if (typeCmp !== 0) {\n // if the types are different, use type ordinal\n return typeCmp;\n }\n\n // both are of the same type\n if (\n type1Ord === TYPEORDCOMPARATOR[\"undefined\"].ord ||\n type1Ord === TYPEORDCOMPARATOR[\"NoValue\"].ord\n ) {\n // if both types are undefined or Null they are equal\n return 0;\n }\n\n const compFunc = TYPEORDCOMPARATOR[type1].compFunc;\n if (typeof compFunc === \"undefined\") {\n throw new Error(\"Cannot find the comparison function\");\n }\n // same type and type is defined compare the items\n return compFunc(item1, item2);\n }\n\n private compareOrderByItem(orderByItem1: any, orderByItem2: any): number {\n const type1 = this.getType(orderByItem1);\n const type2 = this.getType(orderByItem2);\n return this.compareValue(orderByItem1[\"item\"], type1, orderByItem2[\"item\"], type2);\n }\n\n private validateOrderByItems(res1: string[], res2: string[]): void {\n if (res1.length !== res2.length) {\n throw new Error(`Expected ${res1.length}, but got ${res2.length}.`);\n }\n if (res1.length !== this.sortOrder.length) {\n throw new Error(\"orderByItems cannot have a different size than sort orders.\");\n }\n\n for (let i = 0; i < this.sortOrder.length; i++) {\n const type1 = this.getType(res1[i]);\n const type2 = this.getType(res2[i]);\n if (type1 !== type2) {\n throw new Error(\n `Expected ${type1}, but got ${type2}. Cannot execute cross partition order-by queries on mixed types. Consider filtering your query using IS_STRING or IS_NUMBER to get around this exception.`,\n );\n }\n }\n }\n\n private getType(\n orderByItem: any,\n ):\n | \"string\"\n | \"number\"\n | \"bigint\"\n | \"boolean\"\n | \"symbol\"\n | \"undefined\"\n | \"object\"\n | \"function\"\n | \"NoValue\" {\n // TODO: any item?\n if (orderByItem === undefined || orderByItem.item === undefined) {\n return \"NoValue\";\n }\n const type = typeof orderByItem.item;\n if (TYPEORDCOMPARATOR[type] === undefined) {\n throw new Error(`unrecognizable type ${type}`);\n }\n return type;\n }\n\n private getOrderByItems(res: any): any {\n // TODO: any res?\n return res[\"orderByItems\"];\n }\n}\n"]}
@@ -2,6 +2,7 @@ import { OrderByDocumentProducerComparator } from "./orderByDocumentProducerComp
2
2
  import { ParallelQueryExecutionContextBase } from "./parallelQueryExecutionContextBase.js";
3
3
  /** @hidden */
4
4
  export class OrderByQueryExecutionContext extends ParallelQueryExecutionContextBase {
5
+ orderByComparator;
5
6
  /**
6
7
  * Provides the OrderByQueryExecutionContext.
7
8
  * This class is capable of handling orderby queries and dervives from ParallelQueryExecutionContextBase.
@@ -1 +1 @@
1
- {"version":3,"file":"orderByQueryExecutionContext.js","sourceRoot":"","sources":["../../../src/queryExecutionContext/orderByQueryExecutionContext.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAG3F,cAAc;AACd,MAAM,OAAO,4BACX,SAAQ,iCAAiC;IAIzC;;;;;;;;;;;;OAYG;IACH,YACE,aAA4B,EAC5B,cAAsB,EACtB,KAA4B,EAC5B,OAAoB,EACpB,6BAA4D,EAC5D,oBAA4B;QAE5B,oCAAoC;QACpC,KAAK,CACH,aAAa,EACb,cAAc,EACd,KAAK,EACL,OAAO,EACP,6BAA6B,EAC7B,oBAAoB,CACrB,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,iCAAiC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClF,CAAC;IACD,iCAAiC;IAEjC,0EAA0E;IAC1E;;;;OAIG;IACI,0BAA0B,CAAC,QAA0B,EAAE,QAA0B;QACtF,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,SAAS,CAAC,cAAuC;QAC5D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../ClientContext.js\";\nimport type { PartitionedQueryExecutionInfo } from \"../request/ErrorResponse.js\";\nimport type { FeedOptions } from \"../request/FeedOptions.js\";\nimport type { DocumentProducer } from \"./documentProducer.js\";\nimport type { ExecutionContext } from \"./ExecutionContext.js\";\nimport { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport { OrderByDocumentProducerComparator } from \"./orderByDocumentProducerComparator.js\";\nimport { ParallelQueryExecutionContextBase } from \"./parallelQueryExecutionContextBase.js\";\nimport type { SqlQuerySpec } from \"./SqlQuerySpec.js\";\n\n/** @hidden */\nexport class OrderByQueryExecutionContext\n extends ParallelQueryExecutionContextBase\n implements ExecutionContext\n{\n private orderByComparator: any;\n /**\n * Provides the OrderByQueryExecutionContext.\n * This class is capable of handling orderby queries and dervives from ParallelQueryExecutionContextBase.\n *\n * When handling a parallelized query, it instantiates one instance of\n * DocumentProcuder per target partition key range and aggregates the result of each.\n *\n * @param clientContext - The service endpoint to use to create the client.\n * @param collectionLink - The Collection Link\n * @param options - Represents the feed options.\n * @param partitionedQueryExecutionInfo - PartitionedQueryExecutionInfo\n * @hidden\n */\n constructor(\n clientContext: ClientContext,\n collectionLink: string,\n query: string | SqlQuerySpec,\n options: FeedOptions,\n partitionedQueryExecutionInfo: PartitionedQueryExecutionInfo,\n correlatedActivityId: string,\n ) {\n // Calling on base class constructor\n super(\n clientContext,\n collectionLink,\n query,\n options,\n partitionedQueryExecutionInfo,\n correlatedActivityId,\n );\n this.orderByComparator = new OrderByDocumentProducerComparator(this.sortOrders);\n }\n // Instance members are inherited\n\n // Overriding documentProducerComparator for OrderByQueryExecutionContexts\n /**\n * Provides a Comparator for document producers which respects orderby sort order.\n * @returns Comparator Function\n * @hidden\n */\n public documentProducerComparator(docProd1: DocumentProducer, docProd2: DocumentProducer): any {\n return this.orderByComparator.compare(docProd1, docProd2);\n }\n\n /**\n * Fetches more results from the query execution context.\n * @param diagnosticNode - Optional diagnostic node for tracing.\n * @returns A promise that resolves to the fetched results.\n * @hidden\n */\n public async fetchMore(diagnosticNode?: DiagnosticNodeInternal): Promise<any> {\n try {\n await this.bufferDocumentProducers(diagnosticNode);\n await this.fillBufferFromBufferQueue(true);\n return this.drainBufferedItems();\n } catch (error) {\n console.error(\"Error fetching more results:\", error);\n throw error;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"orderByQueryExecutionContext.js","sourceRoot":"","sources":["../../../src/queryExecutionContext/orderByQueryExecutionContext.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAG3F,cAAc;AACd,MAAM,OAAO,4BACX,SAAQ,iCAAiC;IAGjC,iBAAiB,CAAM;IAC/B;;;;;;;;;;;;OAYG;IACH,YACE,aAA4B,EAC5B,cAAsB,EACtB,KAA4B,EAC5B,OAAoB,EACpB,6BAA4D,EAC5D,oBAA4B;QAE5B,oCAAoC;QACpC,KAAK,CACH,aAAa,EACb,cAAc,EACd,KAAK,EACL,OAAO,EACP,6BAA6B,EAC7B,oBAAoB,CACrB,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,iCAAiC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClF,CAAC;IACD,iCAAiC;IAEjC,0EAA0E;IAC1E;;;;OAIG;IACI,0BAA0B,CAAC,QAA0B,EAAE,QAA0B;QACtF,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,SAAS,CAAC,cAAuC;QAC5D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../ClientContext.js\";\nimport type { PartitionedQueryExecutionInfo } from \"../request/ErrorResponse.js\";\nimport type { FeedOptions } from \"../request/FeedOptions.js\";\nimport type { DocumentProducer } from \"./documentProducer.js\";\nimport type { ExecutionContext } from \"./ExecutionContext.js\";\nimport { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport { OrderByDocumentProducerComparator } from \"./orderByDocumentProducerComparator.js\";\nimport { ParallelQueryExecutionContextBase } from \"./parallelQueryExecutionContextBase.js\";\nimport type { SqlQuerySpec } from \"./SqlQuerySpec.js\";\n\n/** @hidden */\nexport class OrderByQueryExecutionContext\n extends ParallelQueryExecutionContextBase\n implements ExecutionContext\n{\n private orderByComparator: any;\n /**\n * Provides the OrderByQueryExecutionContext.\n * This class is capable of handling orderby queries and dervives from ParallelQueryExecutionContextBase.\n *\n * When handling a parallelized query, it instantiates one instance of\n * DocumentProcuder per target partition key range and aggregates the result of each.\n *\n * @param clientContext - The service endpoint to use to create the client.\n * @param collectionLink - The Collection Link\n * @param options - Represents the feed options.\n * @param partitionedQueryExecutionInfo - PartitionedQueryExecutionInfo\n * @hidden\n */\n constructor(\n clientContext: ClientContext,\n collectionLink: string,\n query: string | SqlQuerySpec,\n options: FeedOptions,\n partitionedQueryExecutionInfo: PartitionedQueryExecutionInfo,\n correlatedActivityId: string,\n ) {\n // Calling on base class constructor\n super(\n clientContext,\n collectionLink,\n query,\n options,\n partitionedQueryExecutionInfo,\n correlatedActivityId,\n );\n this.orderByComparator = new OrderByDocumentProducerComparator(this.sortOrders);\n }\n // Instance members are inherited\n\n // Overriding documentProducerComparator for OrderByQueryExecutionContexts\n /**\n * Provides a Comparator for document producers which respects orderby sort order.\n * @returns Comparator Function\n * @hidden\n */\n public documentProducerComparator(docProd1: DocumentProducer, docProd2: DocumentProducer): any {\n return this.orderByComparator.compare(docProd1, docProd2);\n }\n\n /**\n * Fetches more results from the query execution context.\n * @param diagnosticNode - Optional diagnostic node for tracing.\n * @returns A promise that resolves to the fetched results.\n * @hidden\n */\n public async fetchMore(diagnosticNode?: DiagnosticNodeInternal): Promise<any> {\n try {\n await this.bufferDocumentProducers(diagnosticNode);\n await this.fillBufferFromBufferQueue(true);\n return this.drainBufferedItems();\n } catch (error) {\n console.error(\"Error fetching more results:\", error);\n throw error;\n }\n }\n}\n"]}
@@ -20,6 +20,25 @@ export var ParallelQueryExecutionContextBaseStates;
20
20
  })(ParallelQueryExecutionContextBaseStates || (ParallelQueryExecutionContextBaseStates = {}));
21
21
  /** @hidden */
22
22
  export class ParallelQueryExecutionContextBase {
23
+ clientContext;
24
+ collectionLink;
25
+ query;
26
+ options;
27
+ partitionedQueryExecutionInfo;
28
+ correlatedActivityId;
29
+ err;
30
+ state;
31
+ static STATES = ParallelQueryExecutionContextBaseStates;
32
+ routingProvider;
33
+ sortOrders;
34
+ requestContinuation;
35
+ respHeaders;
36
+ unfilledDocumentProducersQueue;
37
+ bufferedDocumentProducersQueue;
38
+ // TODO: update type of buffer from any --> generic can be used here
39
+ buffer;
40
+ sem;
41
+ diagnosticNodeWrapper;
23
42
  /**
24
43
  * Provides the ParallelQueryExecutionContextBase.
25
44
  * This is the base class that ParallelQueryExecutionContext and OrderByQueryExecutionContext will derive from.
@@ -204,7 +223,7 @@ export class ParallelQueryExecutionContextBase {
204
223
  rewrittenQuery = rewrittenQuery.replace(formatPlaceHolder, "true");
205
224
  sqlQuerySpec["query"] = rewrittenQuery;
206
225
  }
207
- const options = Object.assign({}, this.options);
226
+ const options = { ...this.options };
208
227
  options.continuationToken = continuationToken;
209
228
  return new DocumentProducer(this.clientContext, this.collectionLink, sqlQuerySpec, partitionKeyTargetRange, options, this.correlatedActivityId, startEpk, endEpk, populateEpkRangeHeaders);
210
229
  }
@@ -422,5 +441,4 @@ export class ParallelQueryExecutionContextBase {
422
441
  }
423
442
  }
424
443
  }
425
- ParallelQueryExecutionContextBase.STATES = ParallelQueryExecutionContextBaseStates;
426
444
  //# sourceMappingURL=parallelQueryExecutionContextBase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parallelQueryExecutionContextBase.js","sourceRoot":"","sources":["../../../src/queryExecutionContext/parallelQueryExecutionContextBase.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,SAAS,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,0CAA0C,CAAC;AAElD,cAAc;AACd,MAAM,MAAM,GAAgB,kBAAkB,CAAC,mCAAmC,CAAC,CAAC;AAEpF,cAAc;AACd,MAAM,CAAN,IAAY,uCAIX;AAJD,WAAY,uCAAuC;IACjD,8DAAmB,CAAA;IACnB,oEAAyB,CAAA;IACzB,0DAAe,CAAA;AACjB,CAAC,EAJW,uCAAuC,KAAvC,uCAAuC,QAIlD;AAED,cAAc;AACd,MAAM,OAAgB,iCAAiC;IAiBrD;;;;;;;;;;;;OAYG;IACH,YACU,aAA4B,EAC5B,cAAsB,EACtB,KAA4B,EAC5B,OAAoB,EACpB,6BAA4D,EAC5D,oBAA4B;QAL5B,kBAAa,GAAb,aAAa,CAAe;QAC5B,mBAAc,GAAd,cAAc,CAAQ;QACtB,UAAK,GAAL,KAAK,CAAuB;QAC5B,YAAO,GAAP,OAAO,CAAa;QACpB,kCAA6B,GAA7B,6BAA6B,CAA+B;QAC5D,yBAAoB,GAApB,oBAAoB,CAAQ;QAEpC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,CAAC;QACnE,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,qBAAqB,GAAG;YAC3B,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,IAAI,sBAAsB,CACxC,aAAa,CAAC,eAAe,EAC7B,kBAAkB,CAAC,mBAAmB,EACtC,IAAI,CACL;SACF,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,iCAAiC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9D,IAAI,CAAC,eAAe,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,OAAO,CAAC;QACvE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9F,2CAA2C;QAC3C,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,CAAC;QACtC,4CAA4C;QAC5C,IAAI,CAAC,8BAA8B,GAAG,IAAI,aAAa,CACrD,CAAC,CAAmB,EAAE,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAC1E,CAAC;QACF,kDAAkD;QAClD,IAAI,CAAC,8BAA8B,GAAG,IAAI,aAAa,CACrD,CAAC,CAAmB,EAAE,CAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,CACpF,CAAC;QACF,iCAAiC;QACjC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,iDAAiD,GAAG,KAAK,IAAmB,EAAE;YAClF,iDAAiD;YACjD,IAAI,CAAC;gBACH,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAEpE,MAAM,sBAAsB,GAC1B,OAAO,CAAC,sBAAsB,KAAK,SAAS,IAAI,OAAO,CAAC,sBAAsB,GAAG,CAAC;oBAChF,CAAC,CAAC,qBAAqB,CAAC,MAAM;oBAC9B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBAE7E,MAAM,CAAC,IAAI,CACT,yBAAyB;oBACvB,qBAAqB,CAAC,MAAM;oBAC5B,8BAA8B;oBAC9B,sBAAsB,CACzB,CAAC;gBAEF,IAAI,0BAA0B,GAAG,EAAE,CAAC;gBACpC,mEAAmE;gBACnE,MAAM,wCAAwC,GAAuB,EAAE,CAAC;gBAExE,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC7B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;gBAC3F,CAAC;qBAAM,CAAC;oBACN,0BAA0B,GAAG,qBAAqB,CAAC;gBACrD,CAAC;gBACD,4DAA4D;gBAC5D,0BAA0B,CAAC,OAAO,CAAC,CAAC,oBAAyB,EAAE,EAAE;oBAC/D,iCAAiC;oBACjC,oBAAoB;oBACpB,wCAAwC,CAAC,IAAI,CAC3C,IAAI,CAAC,2CAA2C,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAClF,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,oDAAoD;gBACpD,wCAAwC,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAQ,EAAE;oBAC1E,qBAAqB;oBACrB,IAAI,CAAC;wBACH,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBAC5D,CAAC;oBAAC,OAAO,CAAM,EAAE,CAAC;wBAChB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;oBACf,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;gBACf,mBAAmB;gBACnB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACnE,CAAC;IAOO,+BAA+B,CAAC,OAAsB;QAC5D,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEO,iCAAiC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,iBAAiB;QACvB,OAAO,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,wBAAwB;QACpC,kEAAkE;QAClE,MAAM,YAAY,GAAG,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC;QACpE,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAC9C,IAAI,CAAC,cAAc,EACnB,WAAW,EACX,IAAI,CAAC,iBAAiB,EAAE,CACzB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iCAAiC,CAC7C,gBAAkC,EAClC,cAAsC;QAEtC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,uBAAuB,CAAC;QACnE,+BAA+B;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvE,4DAA4D;QAC5D,MAAM,UAAU,GAAG,UAAU,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAC9C,IAAI,CAAC,cAAc,EACnB,CAAC,UAAU,CAAC,EACZ,cAAc,CACf,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,oCAAoC,CAChD,KAAU,EACV,cAAsC,EACtC,gBAAkC;QAElC,6BAA6B;QAC7B,MAAM,6BAA6B,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAChF,gBAAgB,EAChB,cAAc,CACf,CAAC;QAEF,IAAI,6BAA6B,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,KAAK,CAAC;QACd,CAAC;aAAM,IAAI,6BAA6B,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,iCAAiC;YACjC,2HAA2H;YAC3H,MAAM,2BAA2B,GAAG,IAAI,CAAC,2CAA2C,CAClF,6BAA6B,CAAC,CAAC,CAAC,EAChC,gBAAgB,CAAC,iBAAiB,EAClC,gBAAgB,CAAC,QAAQ,EACzB,gBAAgB,CAAC,MAAM,EACvB,IAAI,CACL,CAAC;YAEF,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,2CAA2C;YAC3C,MAAM,4BAA4B,GAAuB,EAAE,CAAC;YAC5D,6BAA6B,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAE;gBAC1D,MAAM,UAAU,GAAG,UAAU,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;gBACxE,2EAA2E;gBAC3E,MAAM,2BAA2B,GAAG,IAAI,CAAC,2CAA2C,CAClF,iBAAiB,EACjB,gBAAgB,CAAC,iBAAiB,EAClC,UAAU,CAAC,GAAG,EACd,UAAU,CAAC,GAAG,EACd,KAAK,CACN,CAAC;gBACF,4BAA4B,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,sCAAsC;YACtC,4BAA4B,CAAC,OAAO,CAAC,CAAC,2BAA2B,EAAE,EAAE;gBACnE,IAAI,2BAA2B,CAAC,cAAc,EAAE,EAAE,CAAC;oBACjD,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,kCAAkC,CAAC,KAAU;QAC1D,kBAAkB;QAClB,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI;YAC/B,WAAW,IAAI,KAAK;YACpB,KAAK,CAAC,WAAW,CAAC,KAAK,cAAc,CAAC,qBAAqB,CAC5D,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,cAAc;QACnB,OAAO,CACL,CAAC,IAAI,CAAC,GAAG;YACT,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,iCAAiC,CAAC,MAAM,CAAC,KAAK,CAAC,CAC1F,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,2CAA2C,CACjD,uBAA4B,EAC5B,iBAAuB,EACvB,QAAiB,EACjB,MAAe,EACf,uBAAiC;QAEjC,IAAI,cAAc,GAAG,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,cAAc,CAAC;QACjF,IAAI,YAA0B,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,iBAAiB,GAAG,6CAA6C,CAAC;QACxE,IAAI,cAAc,EAAE,CAAC;YACnB,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;YACxD,qDAAqD;YACrD,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACnE,YAAY,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC;QACzC,CAAC;QAED,MAAM,OAAO,qBAAQ,IAAI,CAAC,OAAO,CAAE,CAAC;QACpC,OAAO,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAE9C,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,YAAY,EACZ,uBAAuB,EACvB,OAAO,EACP,IAAI,CAAC,oBAAoB,EACzB,QAAQ,EACR,MAAM,EACN,uBAAuB,CACxB,CAAC;IACJ,CAAC;IACS,KAAK,CAAC,kBAAkB;QAChC,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;oBACb,yCAAyC;oBACzC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACjB,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;oBAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjB,OAAO;gBACT,CAAC;gBAED,+CAA+C;gBAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACjB,OAAO,OAAO,CAAC;wBACb,MAAM,EAAE,IAAI,CAAC,KAAK,KAAK,iCAAiC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;wBACtF,OAAO,EAAE,IAAI,CAAC,iCAAiC,EAAE;qBAClD,CAAC,CAAC;gBACL,CAAC;gBACD,6EAA6E;gBAC7E,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;gBAEjB,oCAAoC;gBACpC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACjB,kCAAkC;gBAClC,OAAO,OAAO,CAAC;oBACb,MAAM,EAAE,eAAe;oBACvB,OAAO,EAAE,IAAI,CAAC,iCAAiC,EAAE;iBAClD,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,uBAAuB,CAAC,cAAuC;QAC7E,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACjB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjB,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAE5B,IAAI,IAAI,CAAC,KAAK,KAAK,iCAAiC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBAClE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACjB,OAAO,EAAE,CAAC;oBACV,OAAO;gBACT,CAAC;gBAED,IAAI,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;oBACrD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACjB,OAAO,EAAE,CAAC;oBACV,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,sBAAsB,GAC1B,IAAI,CAAC,OAAO,CAAC,sBAAsB,KAAK,SAAS;wBACjD,IAAI,CAAC,OAAO,CAAC,sBAAsB,GAAG,CAAC;wBACrC,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE;wBAC5C,CAAC,CAAC,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,OAAO,CAAC,sBAAsB,EACnC,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,CAC3C,CAAC;oBAER,MAAM,iBAAiB,GAAuB,EAAE,CAAC;oBACjD,OACE,iBAAiB,CAAC,MAAM,GAAG,sBAAsB;wBACjD,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,GAAG,CAAC,EAC9C,CAAC;wBACD,IAAI,gBAAkC,CAAC;wBACvC,IAAI,CAAC;4BACH,gBAAgB,GAAG,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC;wBAC/D,CAAC;wBAAC,OAAO,CAAM,EAAE,CAAC;4BAChB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;4BACb,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;4BAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACjB,OAAO;wBACT,CAAC;wBACD,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBAC3C,CAAC;oBAED,MAAM,sBAAsB,GAAG,KAAK,EAClC,gBAAkC,EACnB,EAAE;wBACjB,IAAI,CAAC;4BACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;4BAClE,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;4BAC9C,4FAA4F;4BAC5F,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,EAAE,CAAC;4BACjD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gCAC3B,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;4BAC5D,CAAC;iCAAM,IAAI,gBAAgB,CAAC,cAAc,EAAE,EAAE,CAAC;gCAC7C,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;4BAC5D,CAAC;wBACH,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,IAAI,iCAAiC,CAAC,kCAAkC,CAAC,GAAG,CAAC,EAAE,CAAC;gCAC9E,yCAAyC;gCACzC,mEAAmE;gCACnE,8FAA8F;gCAC9F,MAAM,IAAI,CAAC,oCAAoC,CAC7C,GAAG,EACH,cAAc,EACd,gBAAgB,CACjB,CAAC;gCACF,OAAO,EAAE,CAAC;4BACZ,CAAC;iCAAM,CAAC;gCACN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;gCACf,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;gCAC5D,MAAM,CAAC,GAAG,CAAC,CAAC;4BACd,CAAC;wBACH,CAAC;oBACH,CAAC,CAAC;oBAEF,IAAI,CAAC;wBACH,MAAM,OAAO,CAAC,GAAG,CACf,iBAAiB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CACtE,CAAC;oBACJ,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;wBACf,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;wBAC5D,MAAM,CAAC,GAAG,CAAC,CAAC;wBACZ,OAAO;oBACT,CAAC;oBACD,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;oBACf,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;oBAC5D,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;wBAAS,CAAC;oBACT,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACD;;;;OAIG;IACO,KAAK,CAAC,yBAAyB,CAAC,YAAqB,KAAK;QAClE,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;oBACb,yCAAyC;oBACzC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACjB,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;oBAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjB,OAAO;gBACT,CAAC;gBAED,IACE,IAAI,CAAC,KAAK,KAAK,iCAAiC,CAAC,MAAM,CAAC,KAAK;oBAC7D,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,KAAK,CAAC,EAChD,CAAC;oBACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACjB,OAAO,EAAE,CAAC;oBACV,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC;oBACH,IAAI,SAAS,EAAE,CAAC;wBACd,OACE,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE;4BAC7C,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,GAAG,CAAC,EAC9C,CAAC;4BACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC;4BACnE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,gBAAgB,CAAC,aAAa,EAAE,CAAC;4BACnE,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;4BAC9C,IAAI,MAAM,EAAE,CAAC;gCACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BAC3B,CAAC;4BACD,IAAI,gBAAgB,CAAC,YAAY,EAAE,KAAK,SAAS,EAAE,CAAC;gCAClD,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;4BAC5D,CAAC;iCAAM,IAAI,gBAAgB,CAAC,cAAc,EAAE,EAAE,CAAC;gCAC7C,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;4BAC5D,CAAC;iCAAM,CAAC;gCACN,uCAAuC;4BACzC,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;4BACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC;4BACnE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;4BACxE,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;4BAC9C,IAAI,MAAM,EAAE,CAAC;gCACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;4BAC9B,CAAC;4BACD,IAAI,gBAAgB,CAAC,cAAc,EAAE,EAAE,CAAC;gCACtC,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;4BAC5D,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;oBACf,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;oBAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjB,OAAO;gBACT,CAAC;wBAAS,CAAC;oBACT,oCAAoC;oBACpC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACnB,CAAC;gBACD,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;YACjB,IAAI,CAAC,KAAK,GAAG,iCAAiC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,iCAAiC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpE,IAAI,CAAC,KAAK,GAAG,iCAAiC,CAAC,MAAM,CAAC,UAAU,CAAC;QACnE,CAAC;QAED,MAAM,oBAAoB,GACxB,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,KAAK,CAAC;YAChD,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEnD,IAAI,oBAAoB,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,iCAAiC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC9D,CAAC;IACH,CAAC;;AAzgBc,wCAAM,GAAG,uCAAuC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport PriorityQueue from \"priorityqueuejs\";\nimport semaphore from \"semaphore\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\nimport { StatusCodes, SubStatusCodes } from \"../common/statusCodes.js\";\nimport type { FeedOptions, Response } from \"../request/index.js\";\nimport type { PartitionedQueryExecutionInfo } from \"../request/ErrorResponse.js\";\nimport { QueryRange } from \"../routing/QueryRange.js\";\nimport { SmartRoutingMapProvider } from \"../routing/smartRoutingMapProvider.js\";\nimport type { CosmosHeaders } from \"./CosmosHeaders.js\";\nimport { DocumentProducer } from \"./documentProducer.js\";\nimport type { ExecutionContext } from \"./ExecutionContext.js\";\nimport { getInitialHeader, mergeHeaders } from \"./headerUtils.js\";\nimport type { SqlQuerySpec } from \"./SqlQuerySpec.js\";\nimport {\n DiagnosticNodeInternal,\n DiagnosticNodeType,\n} from \"../diagnostics/DiagnosticNodeInternal.js\";\n\n/** @hidden */\nconst logger: AzureLogger = createClientLogger(\"parallelQueryExecutionContextBase\");\n\n/** @hidden */\nexport enum ParallelQueryExecutionContextBaseStates {\n started = \"started\",\n inProgress = \"inProgress\",\n ended = \"ended\",\n}\n\n/** @hidden */\nexport abstract class ParallelQueryExecutionContextBase implements ExecutionContext {\n private err: any;\n private state: any;\n private static STATES = ParallelQueryExecutionContextBaseStates;\n private routingProvider: SmartRoutingMapProvider;\n protected sortOrders: any;\n private requestContinuation: any;\n private respHeaders: CosmosHeaders;\n private unfilledDocumentProducersQueue: PriorityQueue<DocumentProducer>;\n private bufferedDocumentProducersQueue: PriorityQueue<DocumentProducer>;\n // TODO: update type of buffer from any --> generic can be used here\n private buffer: any[];\n private sem: any;\n private diagnosticNodeWrapper: {\n consumed: boolean;\n diagnosticNode: DiagnosticNodeInternal;\n };\n /**\n * Provides the ParallelQueryExecutionContextBase.\n * This is the base class that ParallelQueryExecutionContext and OrderByQueryExecutionContext will derive from.\n *\n * When handling a parallelized query, it instantiates one instance of\n * DocumentProcuder per target partition key range and aggregates the result of each.\n *\n * @param clientContext - The service endpoint to use to create the client.\n * @param collectionLink - The Collection Link\n * @param options - Represents the feed options.\n * @param partitionedQueryExecutionInfo - PartitionedQueryExecutionInfo\n * @hidden\n */\n constructor(\n private clientContext: ClientContext,\n private collectionLink: string,\n private query: string | SqlQuerySpec,\n private options: FeedOptions,\n private partitionedQueryExecutionInfo: PartitionedQueryExecutionInfo,\n private correlatedActivityId: string,\n ) {\n this.clientContext = clientContext;\n this.collectionLink = collectionLink;\n this.query = query;\n this.options = options;\n this.partitionedQueryExecutionInfo = partitionedQueryExecutionInfo;\n this.correlatedActivityId = correlatedActivityId;\n this.diagnosticNodeWrapper = {\n consumed: false,\n diagnosticNode: new DiagnosticNodeInternal(\n clientContext.diagnosticLevel,\n DiagnosticNodeType.PARALLEL_QUERY_NODE,\n null,\n ),\n };\n this.diagnosticNodeWrapper.diagnosticNode.addData({ stateful: true });\n this.err = undefined;\n this.state = ParallelQueryExecutionContextBase.STATES.started;\n this.routingProvider = new SmartRoutingMapProvider(this.clientContext);\n this.sortOrders = this.partitionedQueryExecutionInfo.queryInfo.orderBy;\n this.buffer = [];\n\n this.requestContinuation = options ? options.continuationToken || options.continuation : null;\n // response headers of undergoing operation\n this.respHeaders = getInitialHeader();\n // Make priority queue for documentProducers\n this.unfilledDocumentProducersQueue = new PriorityQueue<DocumentProducer>(\n (a: DocumentProducer, b: DocumentProducer) => a.generation - b.generation,\n );\n // The comparator is supplied by the derived class\n this.bufferedDocumentProducersQueue = new PriorityQueue<DocumentProducer>(\n (a: DocumentProducer, b: DocumentProducer) => this.documentProducerComparator(b, a),\n );\n // Creating the documentProducers\n this.sem = semaphore(1);\n const createDocumentProducersAndFillUpPriorityQueueFunc = async (): Promise<void> => {\n // ensure the lock is released after finishing up\n try {\n const targetPartitionRanges = await this._onTargetPartitionRanges();\n\n const maxDegreeOfParallelism =\n options.maxDegreeOfParallelism === undefined || options.maxDegreeOfParallelism < 1\n ? targetPartitionRanges.length\n : Math.min(options.maxDegreeOfParallelism, targetPartitionRanges.length);\n\n logger.info(\n \"Query starting against \" +\n targetPartitionRanges.length +\n \" ranges with parallelism of \" +\n maxDegreeOfParallelism,\n );\n\n let filteredPartitionKeyRanges = [];\n // The document producers generated from filteredPartitionKeyRanges\n const targetPartitionQueryExecutionContextList: DocumentProducer[] = [];\n\n if (this.requestContinuation) {\n throw new Error(\"Continuation tokens are not yet supported for cross partition queries\");\n } else {\n filteredPartitionKeyRanges = targetPartitionRanges;\n }\n // Create one documentProducer for each partitionTargetRange\n filteredPartitionKeyRanges.forEach((partitionTargetRange: any) => {\n // TODO: any partitionTargetRange\n // no async callback\n targetPartitionQueryExecutionContextList.push(\n this._createTargetPartitionQueryExecutionContext(partitionTargetRange, undefined),\n );\n });\n\n // Fill up our priority queue with documentProducers\n targetPartitionQueryExecutionContextList.forEach((documentProducer): void => {\n // has async callback\n try {\n this.unfilledDocumentProducersQueue.enq(documentProducer);\n } catch (e: any) {\n this.err = e;\n }\n });\n\n this.sem.leave();\n } catch (err: any) {\n this.err = err;\n // release the lock\n this.sem.leave();\n return;\n }\n };\n this.sem.take(createDocumentProducersAndFillUpPriorityQueueFunc);\n }\n\n protected abstract documentProducerComparator(\n dp1: DocumentProducer,\n dp2: DocumentProducer,\n ): number;\n\n private _mergeWithActiveResponseHeaders(headers: CosmosHeaders): void {\n mergeHeaders(this.respHeaders, headers);\n }\n\n private _getAndResetActiveResponseHeaders(): CosmosHeaders {\n const ret = this.respHeaders;\n this.respHeaders = getInitialHeader();\n return ret;\n }\n\n private getDiagnosticNode(): DiagnosticNodeInternal {\n return this.diagnosticNodeWrapper.diagnosticNode;\n }\n\n private async _onTargetPartitionRanges(): Promise<any[]> {\n // invokes the callback when the target partition ranges are ready\n const parsedRanges = this.partitionedQueryExecutionInfo.queryRanges;\n const queryRanges = parsedRanges.map((item) => QueryRange.parseFromDict(item));\n return this.routingProvider.getOverlappingRanges(\n this.collectionLink,\n queryRanges,\n this.getDiagnosticNode(),\n );\n }\n\n /**\n * Gets the replacement ranges for a partitionkeyrange that has been split\n */\n private async _getReplacementPartitionKeyRanges(\n documentProducer: DocumentProducer,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<any[]> {\n const partitionKeyRange = documentProducer.targetPartitionKeyRange;\n // Download the new routing map\n this.routingProvider = new SmartRoutingMapProvider(this.clientContext);\n // Get the queryRange that relates to this partitionKeyRange\n const queryRange = QueryRange.parsePartitionKeyRange(partitionKeyRange);\n return this.routingProvider.getOverlappingRanges(\n this.collectionLink,\n [queryRange],\n diagnosticNode,\n );\n }\n\n private async _enqueueReplacementDocumentProducers(\n error: any,\n diagnosticNode: DiagnosticNodeInternal,\n documentProducer: DocumentProducer,\n ): Promise<void> {\n // Get the replacement ranges\n const replacementPartitionKeyRanges = await this._getReplacementPartitionKeyRanges(\n documentProducer,\n diagnosticNode,\n );\n\n if (replacementPartitionKeyRanges.length === 0) {\n throw error;\n } else if (replacementPartitionKeyRanges.length === 1) {\n // Partition is gone due to Merge\n // Create the replacement documentProducer with populateEpkRangeHeaders Flag set to true to set startEpk and endEpk headers\n const replacementDocumentProducer = this._createTargetPartitionQueryExecutionContext(\n replacementPartitionKeyRanges[0],\n documentProducer.continuationToken,\n documentProducer.startEpk,\n documentProducer.endEpk,\n true,\n );\n\n this.unfilledDocumentProducersQueue.enq(replacementDocumentProducer);\n } else {\n // Create the replacement documentProducers\n const replacementDocumentProducers: DocumentProducer[] = [];\n replacementPartitionKeyRanges.forEach((partitionKeyRange) => {\n const queryRange = QueryRange.parsePartitionKeyRange(partitionKeyRange);\n // Create replacment document producers with the parent's continuationToken\n const replacementDocumentProducer = this._createTargetPartitionQueryExecutionContext(\n partitionKeyRange,\n documentProducer.continuationToken,\n queryRange.min,\n queryRange.max,\n false,\n );\n replacementDocumentProducers.push(replacementDocumentProducer);\n });\n\n // add document producers to the queue\n replacementDocumentProducers.forEach((replacementDocumentProducer) => {\n if (replacementDocumentProducer.hasMoreResults()) {\n this.unfilledDocumentProducersQueue.enq(replacementDocumentProducer);\n }\n });\n }\n }\n\n private static _needPartitionKeyRangeCacheRefresh(error: any): boolean {\n // TODO: any error\n return (\n error.code === StatusCodes.Gone &&\n \"substatus\" in error &&\n error[\"substatus\"] === SubStatusCodes.PartitionKeyRangeGone\n );\n }\n\n /**\n * Determine if there are still remaining resources to processs based on the value of the continuation\n * token or the elements remaining on the current batch in the QueryIterator.\n * @returns true if there is other elements to process in the ParallelQueryExecutionContextBase.\n */\n public hasMoreResults(): boolean {\n return (\n !this.err &&\n (this.buffer.length > 0 || this.state !== ParallelQueryExecutionContextBase.STATES.ended)\n );\n }\n\n /**\n * Creates target partition range Query Execution Context\n */\n private _createTargetPartitionQueryExecutionContext(\n partitionKeyTargetRange: any,\n continuationToken?: any,\n startEpk?: string,\n endEpk?: string,\n populateEpkRangeHeaders?: boolean,\n ): DocumentProducer {\n let rewrittenQuery = this.partitionedQueryExecutionInfo.queryInfo.rewrittenQuery;\n let sqlQuerySpec: SqlQuerySpec;\n const query = this.query;\n if (typeof query === \"string\") {\n sqlQuerySpec = { query };\n } else {\n sqlQuerySpec = query;\n }\n\n const formatPlaceHolder = \"{documentdb-formattableorderbyquery-filter}\";\n if (rewrittenQuery) {\n sqlQuerySpec = JSON.parse(JSON.stringify(sqlQuerySpec));\n // We hardcode the formattable filter to true for now\n rewrittenQuery = rewrittenQuery.replace(formatPlaceHolder, \"true\");\n sqlQuerySpec[\"query\"] = rewrittenQuery;\n }\n\n const options = { ...this.options };\n options.continuationToken = continuationToken;\n\n return new DocumentProducer(\n this.clientContext,\n this.collectionLink,\n sqlQuerySpec,\n partitionKeyTargetRange,\n options,\n this.correlatedActivityId,\n startEpk,\n endEpk,\n populateEpkRangeHeaders,\n );\n }\n protected async drainBufferedItems(): Promise<Response<any>> {\n return new Promise<Response<any>>((resolve, reject) => {\n this.sem.take(() => {\n if (this.err) {\n // if there is a prior error return error\n this.sem.leave();\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(this.err);\n return;\n }\n\n // return undefined if there is no more results\n if (this.buffer.length === 0) {\n this.sem.leave();\n return resolve({\n result: this.state === ParallelQueryExecutionContextBase.STATES.ended ? undefined : [],\n headers: this._getAndResetActiveResponseHeaders(),\n });\n }\n // draing the entire buffer object and return that in result of return object\n const bufferedResults = this.buffer;\n this.buffer = [];\n\n // release the lock before returning\n this.sem.leave();\n // invoke the callback on the item\n return resolve({\n result: bufferedResults,\n headers: this._getAndResetActiveResponseHeaders(),\n });\n });\n });\n }\n\n /**\n * Buffers document producers based on the maximum degree of parallelism.\n * Moves document producers from the unfilled queue to the buffered queue.\n * @param diagnosticNode - The diagnostic node for logging and tracing.\n * @returns A promise that resolves when buffering is complete.\n */\n protected async bufferDocumentProducers(diagnosticNode?: DiagnosticNodeInternal): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.sem.take(async () => {\n if (this.err) {\n this.sem.leave();\n reject(this.err);\n return;\n }\n this.updateStates(this.err);\n\n if (this.state === ParallelQueryExecutionContextBase.STATES.ended) {\n this.sem.leave();\n resolve();\n return;\n }\n\n if (this.unfilledDocumentProducersQueue.size() === 0) {\n this.sem.leave();\n resolve();\n return;\n }\n\n try {\n const maxDegreeOfParallelism =\n this.options.maxDegreeOfParallelism === undefined ||\n this.options.maxDegreeOfParallelism < 1\n ? this.unfilledDocumentProducersQueue.size()\n : Math.min(\n this.options.maxDegreeOfParallelism,\n this.unfilledDocumentProducersQueue.size(),\n );\n\n const documentProducers: DocumentProducer[] = [];\n while (\n documentProducers.length < maxDegreeOfParallelism &&\n this.unfilledDocumentProducersQueue.size() > 0\n ) {\n let documentProducer: DocumentProducer;\n try {\n documentProducer = this.unfilledDocumentProducersQueue.deq();\n } catch (e: any) {\n this.err = e;\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(this.err);\n return;\n }\n documentProducers.push(documentProducer);\n }\n\n const bufferDocumentProducer = async (\n documentProducer: DocumentProducer,\n ): Promise<void> => {\n try {\n const headers = await documentProducer.bufferMore(diagnosticNode);\n this._mergeWithActiveResponseHeaders(headers);\n // if buffer of document producer is filled, add it to the buffered document producers queue\n const nextItem = documentProducer.peakNextItem();\n if (nextItem !== undefined) {\n this.bufferedDocumentProducersQueue.enq(documentProducer);\n } else if (documentProducer.hasMoreResults()) {\n this.unfilledDocumentProducersQueue.enq(documentProducer);\n }\n } catch (err) {\n if (ParallelQueryExecutionContextBase._needPartitionKeyRangeCacheRefresh(err)) {\n // We want the document producer enqueued\n // So that later parts of the code can repair the execution context\n // refresh the partition key ranges and ctreate new document producers and add it to the queue\n await this._enqueueReplacementDocumentProducers(\n err,\n diagnosticNode,\n documentProducer,\n );\n resolve();\n } else {\n this.err = err;\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(err);\n }\n }\n };\n\n try {\n await Promise.all(\n documentProducers.map((producer) => bufferDocumentProducer(producer)),\n );\n } catch (err) {\n this.err = err;\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(err);\n return;\n }\n resolve();\n } catch (err) {\n this.err = err;\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(err);\n } finally {\n this.sem.leave();\n }\n });\n });\n }\n /**\n * Drains the buffer of filled document producers and appends their items to the main buffer.\n * @param isOrderBy - Indicates if the query is an order by query.\n * @returns A promise that resolves when the buffer is filled.\n */\n protected async fillBufferFromBufferQueue(isOrderBy: boolean = false): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.sem.take(async () => {\n if (this.err) {\n // if there is a prior error return error\n this.sem.leave();\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(this.err);\n return;\n }\n\n if (\n this.state === ParallelQueryExecutionContextBase.STATES.ended ||\n this.bufferedDocumentProducersQueue.size() === 0\n ) {\n this.sem.leave();\n resolve();\n return;\n }\n\n try {\n if (isOrderBy) {\n while (\n this.unfilledDocumentProducersQueue.isEmpty() &&\n this.bufferedDocumentProducersQueue.size() > 0\n ) {\n const documentProducer = this.bufferedDocumentProducersQueue.deq();\n const { result, headers } = await documentProducer.fetchNextItem();\n this._mergeWithActiveResponseHeaders(headers);\n if (result) {\n this.buffer.push(result);\n }\n if (documentProducer.peakNextItem() !== undefined) {\n this.bufferedDocumentProducersQueue.enq(documentProducer);\n } else if (documentProducer.hasMoreResults()) {\n this.unfilledDocumentProducersQueue.enq(documentProducer);\n } else {\n // no more results in document producer\n }\n }\n } else {\n while (this.bufferedDocumentProducersQueue.size() > 0) {\n const documentProducer = this.bufferedDocumentProducersQueue.deq();\n const { result, headers } = await documentProducer.fetchBufferedItems();\n this._mergeWithActiveResponseHeaders(headers);\n if (result) {\n this.buffer.push(...result);\n }\n if (documentProducer.hasMoreResults()) {\n this.unfilledDocumentProducersQueue.enq(documentProducer);\n }\n }\n }\n this.updateStates(this.err);\n } catch (err) {\n this.err = err;\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(this.err);\n return;\n } finally {\n // release the lock before returning\n this.sem.leave();\n }\n resolve();\n return;\n });\n });\n }\n\n private updateStates(error: any): void {\n if (error) {\n this.err = error;\n this.state = ParallelQueryExecutionContextBase.STATES.ended;\n return;\n }\n\n if (this.state === ParallelQueryExecutionContextBase.STATES.started) {\n this.state = ParallelQueryExecutionContextBase.STATES.inProgress;\n }\n\n const hasNoActiveProducers =\n this.unfilledDocumentProducersQueue.size() === 0 &&\n this.bufferedDocumentProducersQueue.size() === 0;\n\n if (hasNoActiveProducers) {\n this.state = ParallelQueryExecutionContextBase.STATES.ended;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"parallelQueryExecutionContextBase.js","sourceRoot":"","sources":["../../../src/queryExecutionContext/parallelQueryExecutionContextBase.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport PriorityQueue from \"priorityqueuejs\";\nimport semaphore from \"semaphore\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\nimport { StatusCodes, SubStatusCodes } from \"../common/statusCodes.js\";\nimport type { FeedOptions, Response } from \"../request/index.js\";\nimport type { PartitionedQueryExecutionInfo } from \"../request/ErrorResponse.js\";\nimport { QueryRange } from \"../routing/QueryRange.js\";\nimport { SmartRoutingMapProvider } from \"../routing/smartRoutingMapProvider.js\";\nimport type { CosmosHeaders } from \"./CosmosHeaders.js\";\nimport { DocumentProducer } from \"./documentProducer.js\";\nimport type { ExecutionContext } from \"./ExecutionContext.js\";\nimport { getInitialHeader, mergeHeaders } from \"./headerUtils.js\";\nimport type { SqlQuerySpec } from \"./SqlQuerySpec.js\";\nimport {\n DiagnosticNodeInternal,\n DiagnosticNodeType,\n} from \"../diagnostics/DiagnosticNodeInternal.js\";\n\n/** @hidden */\nconst logger: AzureLogger = createClientLogger(\"parallelQueryExecutionContextBase\");\n\n/** @hidden */\nexport enum ParallelQueryExecutionContextBaseStates {\n started = \"started\",\n inProgress = \"inProgress\",\n ended = \"ended\",\n}\n\n/** @hidden */\nexport abstract class ParallelQueryExecutionContextBase implements ExecutionContext {\n private err: any;\n private state: any;\n private static STATES = ParallelQueryExecutionContextBaseStates;\n private routingProvider: SmartRoutingMapProvider;\n protected sortOrders: any;\n private requestContinuation: any;\n private respHeaders: CosmosHeaders;\n private unfilledDocumentProducersQueue: PriorityQueue<DocumentProducer>;\n private bufferedDocumentProducersQueue: PriorityQueue<DocumentProducer>;\n // TODO: update type of buffer from any --> generic can be used here\n private buffer: any[];\n private sem: any;\n private diagnosticNodeWrapper: {\n consumed: boolean;\n diagnosticNode: DiagnosticNodeInternal;\n };\n /**\n * Provides the ParallelQueryExecutionContextBase.\n * This is the base class that ParallelQueryExecutionContext and OrderByQueryExecutionContext will derive from.\n *\n * When handling a parallelized query, it instantiates one instance of\n * DocumentProcuder per target partition key range and aggregates the result of each.\n *\n * @param clientContext - The service endpoint to use to create the client.\n * @param collectionLink - The Collection Link\n * @param options - Represents the feed options.\n * @param partitionedQueryExecutionInfo - PartitionedQueryExecutionInfo\n * @hidden\n */\n constructor(\n private clientContext: ClientContext,\n private collectionLink: string,\n private query: string | SqlQuerySpec,\n private options: FeedOptions,\n private partitionedQueryExecutionInfo: PartitionedQueryExecutionInfo,\n private correlatedActivityId: string,\n ) {\n this.clientContext = clientContext;\n this.collectionLink = collectionLink;\n this.query = query;\n this.options = options;\n this.partitionedQueryExecutionInfo = partitionedQueryExecutionInfo;\n this.correlatedActivityId = correlatedActivityId;\n this.diagnosticNodeWrapper = {\n consumed: false,\n diagnosticNode: new DiagnosticNodeInternal(\n clientContext.diagnosticLevel,\n DiagnosticNodeType.PARALLEL_QUERY_NODE,\n null,\n ),\n };\n this.diagnosticNodeWrapper.diagnosticNode.addData({ stateful: true });\n this.err = undefined;\n this.state = ParallelQueryExecutionContextBase.STATES.started;\n this.routingProvider = new SmartRoutingMapProvider(this.clientContext);\n this.sortOrders = this.partitionedQueryExecutionInfo.queryInfo.orderBy;\n this.buffer = [];\n\n this.requestContinuation = options ? options.continuationToken || options.continuation : null;\n // response headers of undergoing operation\n this.respHeaders = getInitialHeader();\n // Make priority queue for documentProducers\n this.unfilledDocumentProducersQueue = new PriorityQueue<DocumentProducer>(\n (a: DocumentProducer, b: DocumentProducer) => a.generation - b.generation,\n );\n // The comparator is supplied by the derived class\n this.bufferedDocumentProducersQueue = new PriorityQueue<DocumentProducer>(\n (a: DocumentProducer, b: DocumentProducer) => this.documentProducerComparator(b, a),\n );\n // Creating the documentProducers\n this.sem = semaphore(1);\n const createDocumentProducersAndFillUpPriorityQueueFunc = async (): Promise<void> => {\n // ensure the lock is released after finishing up\n try {\n const targetPartitionRanges = await this._onTargetPartitionRanges();\n\n const maxDegreeOfParallelism =\n options.maxDegreeOfParallelism === undefined || options.maxDegreeOfParallelism < 1\n ? targetPartitionRanges.length\n : Math.min(options.maxDegreeOfParallelism, targetPartitionRanges.length);\n\n logger.info(\n \"Query starting against \" +\n targetPartitionRanges.length +\n \" ranges with parallelism of \" +\n maxDegreeOfParallelism,\n );\n\n let filteredPartitionKeyRanges = [];\n // The document producers generated from filteredPartitionKeyRanges\n const targetPartitionQueryExecutionContextList: DocumentProducer[] = [];\n\n if (this.requestContinuation) {\n throw new Error(\"Continuation tokens are not yet supported for cross partition queries\");\n } else {\n filteredPartitionKeyRanges = targetPartitionRanges;\n }\n // Create one documentProducer for each partitionTargetRange\n filteredPartitionKeyRanges.forEach((partitionTargetRange: any) => {\n // TODO: any partitionTargetRange\n // no async callback\n targetPartitionQueryExecutionContextList.push(\n this._createTargetPartitionQueryExecutionContext(partitionTargetRange, undefined),\n );\n });\n\n // Fill up our priority queue with documentProducers\n targetPartitionQueryExecutionContextList.forEach((documentProducer): void => {\n // has async callback\n try {\n this.unfilledDocumentProducersQueue.enq(documentProducer);\n } catch (e: any) {\n this.err = e;\n }\n });\n\n this.sem.leave();\n } catch (err: any) {\n this.err = err;\n // release the lock\n this.sem.leave();\n return;\n }\n };\n this.sem.take(createDocumentProducersAndFillUpPriorityQueueFunc);\n }\n\n protected abstract documentProducerComparator(\n dp1: DocumentProducer,\n dp2: DocumentProducer,\n ): number;\n\n private _mergeWithActiveResponseHeaders(headers: CosmosHeaders): void {\n mergeHeaders(this.respHeaders, headers);\n }\n\n private _getAndResetActiveResponseHeaders(): CosmosHeaders {\n const ret = this.respHeaders;\n this.respHeaders = getInitialHeader();\n return ret;\n }\n\n private getDiagnosticNode(): DiagnosticNodeInternal {\n return this.diagnosticNodeWrapper.diagnosticNode;\n }\n\n private async _onTargetPartitionRanges(): Promise<any[]> {\n // invokes the callback when the target partition ranges are ready\n const parsedRanges = this.partitionedQueryExecutionInfo.queryRanges;\n const queryRanges = parsedRanges.map((item) => QueryRange.parseFromDict(item));\n return this.routingProvider.getOverlappingRanges(\n this.collectionLink,\n queryRanges,\n this.getDiagnosticNode(),\n );\n }\n\n /**\n * Gets the replacement ranges for a partitionkeyrange that has been split\n */\n private async _getReplacementPartitionKeyRanges(\n documentProducer: DocumentProducer,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<any[]> {\n const partitionKeyRange = documentProducer.targetPartitionKeyRange;\n // Download the new routing map\n this.routingProvider = new SmartRoutingMapProvider(this.clientContext);\n // Get the queryRange that relates to this partitionKeyRange\n const queryRange = QueryRange.parsePartitionKeyRange(partitionKeyRange);\n return this.routingProvider.getOverlappingRanges(\n this.collectionLink,\n [queryRange],\n diagnosticNode,\n );\n }\n\n private async _enqueueReplacementDocumentProducers(\n error: any,\n diagnosticNode: DiagnosticNodeInternal,\n documentProducer: DocumentProducer,\n ): Promise<void> {\n // Get the replacement ranges\n const replacementPartitionKeyRanges = await this._getReplacementPartitionKeyRanges(\n documentProducer,\n diagnosticNode,\n );\n\n if (replacementPartitionKeyRanges.length === 0) {\n throw error;\n } else if (replacementPartitionKeyRanges.length === 1) {\n // Partition is gone due to Merge\n // Create the replacement documentProducer with populateEpkRangeHeaders Flag set to true to set startEpk and endEpk headers\n const replacementDocumentProducer = this._createTargetPartitionQueryExecutionContext(\n replacementPartitionKeyRanges[0],\n documentProducer.continuationToken,\n documentProducer.startEpk,\n documentProducer.endEpk,\n true,\n );\n\n this.unfilledDocumentProducersQueue.enq(replacementDocumentProducer);\n } else {\n // Create the replacement documentProducers\n const replacementDocumentProducers: DocumentProducer[] = [];\n replacementPartitionKeyRanges.forEach((partitionKeyRange) => {\n const queryRange = QueryRange.parsePartitionKeyRange(partitionKeyRange);\n // Create replacment document producers with the parent's continuationToken\n const replacementDocumentProducer = this._createTargetPartitionQueryExecutionContext(\n partitionKeyRange,\n documentProducer.continuationToken,\n queryRange.min,\n queryRange.max,\n false,\n );\n replacementDocumentProducers.push(replacementDocumentProducer);\n });\n\n // add document producers to the queue\n replacementDocumentProducers.forEach((replacementDocumentProducer) => {\n if (replacementDocumentProducer.hasMoreResults()) {\n this.unfilledDocumentProducersQueue.enq(replacementDocumentProducer);\n }\n });\n }\n }\n\n private static _needPartitionKeyRangeCacheRefresh(error: any): boolean {\n // TODO: any error\n return (\n error.code === StatusCodes.Gone &&\n \"substatus\" in error &&\n error[\"substatus\"] === SubStatusCodes.PartitionKeyRangeGone\n );\n }\n\n /**\n * Determine if there are still remaining resources to processs based on the value of the continuation\n * token or the elements remaining on the current batch in the QueryIterator.\n * @returns true if there is other elements to process in the ParallelQueryExecutionContextBase.\n */\n public hasMoreResults(): boolean {\n return (\n !this.err &&\n (this.buffer.length > 0 || this.state !== ParallelQueryExecutionContextBase.STATES.ended)\n );\n }\n\n /**\n * Creates target partition range Query Execution Context\n */\n private _createTargetPartitionQueryExecutionContext(\n partitionKeyTargetRange: any,\n continuationToken?: any,\n startEpk?: string,\n endEpk?: string,\n populateEpkRangeHeaders?: boolean,\n ): DocumentProducer {\n let rewrittenQuery = this.partitionedQueryExecutionInfo.queryInfo.rewrittenQuery;\n let sqlQuerySpec: SqlQuerySpec;\n const query = this.query;\n if (typeof query === \"string\") {\n sqlQuerySpec = { query };\n } else {\n sqlQuerySpec = query;\n }\n\n const formatPlaceHolder = \"{documentdb-formattableorderbyquery-filter}\";\n if (rewrittenQuery) {\n sqlQuerySpec = JSON.parse(JSON.stringify(sqlQuerySpec));\n // We hardcode the formattable filter to true for now\n rewrittenQuery = rewrittenQuery.replace(formatPlaceHolder, \"true\");\n sqlQuerySpec[\"query\"] = rewrittenQuery;\n }\n\n const options = { ...this.options };\n options.continuationToken = continuationToken;\n\n return new DocumentProducer(\n this.clientContext,\n this.collectionLink,\n sqlQuerySpec,\n partitionKeyTargetRange,\n options,\n this.correlatedActivityId,\n startEpk,\n endEpk,\n populateEpkRangeHeaders,\n );\n }\n protected async drainBufferedItems(): Promise<Response<any>> {\n return new Promise<Response<any>>((resolve, reject) => {\n this.sem.take(() => {\n if (this.err) {\n // if there is a prior error return error\n this.sem.leave();\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(this.err);\n return;\n }\n\n // return undefined if there is no more results\n if (this.buffer.length === 0) {\n this.sem.leave();\n return resolve({\n result: this.state === ParallelQueryExecutionContextBase.STATES.ended ? undefined : [],\n headers: this._getAndResetActiveResponseHeaders(),\n });\n }\n // draing the entire buffer object and return that in result of return object\n const bufferedResults = this.buffer;\n this.buffer = [];\n\n // release the lock before returning\n this.sem.leave();\n // invoke the callback on the item\n return resolve({\n result: bufferedResults,\n headers: this._getAndResetActiveResponseHeaders(),\n });\n });\n });\n }\n\n /**\n * Buffers document producers based on the maximum degree of parallelism.\n * Moves document producers from the unfilled queue to the buffered queue.\n * @param diagnosticNode - The diagnostic node for logging and tracing.\n * @returns A promise that resolves when buffering is complete.\n */\n protected async bufferDocumentProducers(diagnosticNode?: DiagnosticNodeInternal): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.sem.take(async () => {\n if (this.err) {\n this.sem.leave();\n reject(this.err);\n return;\n }\n this.updateStates(this.err);\n\n if (this.state === ParallelQueryExecutionContextBase.STATES.ended) {\n this.sem.leave();\n resolve();\n return;\n }\n\n if (this.unfilledDocumentProducersQueue.size() === 0) {\n this.sem.leave();\n resolve();\n return;\n }\n\n try {\n const maxDegreeOfParallelism =\n this.options.maxDegreeOfParallelism === undefined ||\n this.options.maxDegreeOfParallelism < 1\n ? this.unfilledDocumentProducersQueue.size()\n : Math.min(\n this.options.maxDegreeOfParallelism,\n this.unfilledDocumentProducersQueue.size(),\n );\n\n const documentProducers: DocumentProducer[] = [];\n while (\n documentProducers.length < maxDegreeOfParallelism &&\n this.unfilledDocumentProducersQueue.size() > 0\n ) {\n let documentProducer: DocumentProducer;\n try {\n documentProducer = this.unfilledDocumentProducersQueue.deq();\n } catch (e: any) {\n this.err = e;\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(this.err);\n return;\n }\n documentProducers.push(documentProducer);\n }\n\n const bufferDocumentProducer = async (\n documentProducer: DocumentProducer,\n ): Promise<void> => {\n try {\n const headers = await documentProducer.bufferMore(diagnosticNode);\n this._mergeWithActiveResponseHeaders(headers);\n // if buffer of document producer is filled, add it to the buffered document producers queue\n const nextItem = documentProducer.peakNextItem();\n if (nextItem !== undefined) {\n this.bufferedDocumentProducersQueue.enq(documentProducer);\n } else if (documentProducer.hasMoreResults()) {\n this.unfilledDocumentProducersQueue.enq(documentProducer);\n }\n } catch (err) {\n if (ParallelQueryExecutionContextBase._needPartitionKeyRangeCacheRefresh(err)) {\n // We want the document producer enqueued\n // So that later parts of the code can repair the execution context\n // refresh the partition key ranges and ctreate new document producers and add it to the queue\n await this._enqueueReplacementDocumentProducers(\n err,\n diagnosticNode,\n documentProducer,\n );\n resolve();\n } else {\n this.err = err;\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(err);\n }\n }\n };\n\n try {\n await Promise.all(\n documentProducers.map((producer) => bufferDocumentProducer(producer)),\n );\n } catch (err) {\n this.err = err;\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(err);\n return;\n }\n resolve();\n } catch (err) {\n this.err = err;\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(err);\n } finally {\n this.sem.leave();\n }\n });\n });\n }\n /**\n * Drains the buffer of filled document producers and appends their items to the main buffer.\n * @param isOrderBy - Indicates if the query is an order by query.\n * @returns A promise that resolves when the buffer is filled.\n */\n protected async fillBufferFromBufferQueue(isOrderBy: boolean = false): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.sem.take(async () => {\n if (this.err) {\n // if there is a prior error return error\n this.sem.leave();\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(this.err);\n return;\n }\n\n if (\n this.state === ParallelQueryExecutionContextBase.STATES.ended ||\n this.bufferedDocumentProducersQueue.size() === 0\n ) {\n this.sem.leave();\n resolve();\n return;\n }\n\n try {\n if (isOrderBy) {\n while (\n this.unfilledDocumentProducersQueue.isEmpty() &&\n this.bufferedDocumentProducersQueue.size() > 0\n ) {\n const documentProducer = this.bufferedDocumentProducersQueue.deq();\n const { result, headers } = await documentProducer.fetchNextItem();\n this._mergeWithActiveResponseHeaders(headers);\n if (result) {\n this.buffer.push(result);\n }\n if (documentProducer.peakNextItem() !== undefined) {\n this.bufferedDocumentProducersQueue.enq(documentProducer);\n } else if (documentProducer.hasMoreResults()) {\n this.unfilledDocumentProducersQueue.enq(documentProducer);\n } else {\n // no more results in document producer\n }\n }\n } else {\n while (this.bufferedDocumentProducersQueue.size() > 0) {\n const documentProducer = this.bufferedDocumentProducersQueue.deq();\n const { result, headers } = await documentProducer.fetchBufferedItems();\n this._mergeWithActiveResponseHeaders(headers);\n if (result) {\n this.buffer.push(...result);\n }\n if (documentProducer.hasMoreResults()) {\n this.unfilledDocumentProducersQueue.enq(documentProducer);\n }\n }\n }\n this.updateStates(this.err);\n } catch (err) {\n this.err = err;\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(this.err);\n return;\n } finally {\n // release the lock before returning\n this.sem.leave();\n }\n resolve();\n return;\n });\n });\n }\n\n private updateStates(error: any): void {\n if (error) {\n this.err = error;\n this.state = ParallelQueryExecutionContextBase.STATES.ended;\n return;\n }\n\n if (this.state === ParallelQueryExecutionContextBase.STATES.started) {\n this.state = ParallelQueryExecutionContextBase.STATES.inProgress;\n }\n\n const hasNoActiveProducers =\n this.unfilledDocumentProducersQueue.size() === 0 &&\n this.bufferedDocumentProducersQueue.size() === 0;\n\n if (hasNoActiveProducers) {\n this.state = ParallelQueryExecutionContextBase.STATES.ended;\n }\n }\n}\n"]}
@@ -12,6 +12,20 @@ import { NonStreamingOrderByDistinctEndpointComponent } from "./EndpointComponen
12
12
  import { NonStreamingOrderByEndpointComponent } from "./EndpointComponent/NonStreamingOrderByEndpointComponent.js";
13
13
  /** @hidden */
14
14
  export class PipelinedQueryExecutionContext {
15
+ clientContext;
16
+ collectionLink;
17
+ query;
18
+ options;
19
+ partitionedQueryExecutionInfo;
20
+ emitRawOrderByPayload;
21
+ fetchBuffer;
22
+ fetchMoreRespHeaders;
23
+ endpoint;
24
+ pageSize;
25
+ vectorSearchBufferSize = 0;
26
+ static DEFAULT_PAGE_SIZE = 10;
27
+ static DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE = 50000;
28
+ nonStreamingOrderBy = false;
15
29
  constructor(clientContext, collectionLink, query, options, partitionedQueryExecutionInfo, correlatedActivityId, emitRawOrderByPayload = false) {
16
30
  this.clientContext = clientContext;
17
31
  this.collectionLink = collectionLink;
@@ -19,8 +33,6 @@ export class PipelinedQueryExecutionContext {
19
33
  this.options = options;
20
34
  this.partitionedQueryExecutionInfo = partitionedQueryExecutionInfo;
21
35
  this.emitRawOrderByPayload = emitRawOrderByPayload;
22
- this.vectorSearchBufferSize = 0;
23
- this.nonStreamingOrderBy = false;
24
36
  this.endpoint = null;
25
37
  this.pageSize = options["maxItemCount"];
26
38
  if (this.pageSize === undefined) {
@@ -169,6 +181,4 @@ export class PipelinedQueryExecutionContext {
169
181
  return;
170
182
  }
171
183
  }
172
- PipelinedQueryExecutionContext.DEFAULT_PAGE_SIZE = 10;
173
- PipelinedQueryExecutionContext.DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE = 50000;
174
184
  //# sourceMappingURL=pipelinedQueryExecutionContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipelinedQueryExecutionContext.js","sourceRoot":"","sources":["../../../src/queryExecutionContext/pipelinedQueryExecutionContext.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../ClientContext.js\";\nimport type { Response, FeedOptions } from \"../request/index.js\";\nimport type { PartitionedQueryExecutionInfo, QueryInfo } from \"../request/ErrorResponse.js\";\nimport { ErrorResponse } from \"../request/ErrorResponse.js\";\nimport type { CosmosHeaders } from \"./CosmosHeaders.js\";\nimport { OffsetLimitEndpointComponent } from \"./EndpointComponent/OffsetLimitEndpointComponent.js\";\nimport { OrderByEndpointComponent } from \"./EndpointComponent/OrderByEndpointComponent.js\";\nimport { OrderedDistinctEndpointComponent } from \"./EndpointComponent/OrderedDistinctEndpointComponent.js\";\nimport { UnorderedDistinctEndpointComponent } from \"./EndpointComponent/UnorderedDistinctEndpointComponent.js\";\nimport { GroupByEndpointComponent } from \"./EndpointComponent/GroupByEndpointComponent.js\";\nimport type { ExecutionContext } from \"./ExecutionContext.js\";\nimport { getInitialHeader, mergeHeaders } from \"./headerUtils.js\";\nimport { OrderByQueryExecutionContext } from \"./orderByQueryExecutionContext.js\";\nimport { ParallelQueryExecutionContext } from \"./parallelQueryExecutionContext.js\";\nimport { GroupByValueEndpointComponent } from \"./EndpointComponent/GroupByValueEndpointComponent.js\";\nimport type { SqlQuerySpec } from \"./SqlQuerySpec.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport { NonStreamingOrderByDistinctEndpointComponent } from \"./EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js\";\nimport { NonStreamingOrderByEndpointComponent } from \"./EndpointComponent/NonStreamingOrderByEndpointComponent.js\";\n\n/** @hidden */\nexport class PipelinedQueryExecutionContext implements ExecutionContext {\n private fetchBuffer: any[];\n private fetchMoreRespHeaders: CosmosHeaders;\n private endpoint: ExecutionContext;\n private pageSize: number;\n private vectorSearchBufferSize: number = 0;\n private static DEFAULT_PAGE_SIZE = 10;\n private static DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE = 50000;\n private nonStreamingOrderBy = false;\n\n constructor(\n private clientContext: ClientContext,\n private collectionLink: string,\n private query: string | SqlQuerySpec,\n private options: FeedOptions,\n private partitionedQueryExecutionInfo: PartitionedQueryExecutionInfo,\n correlatedActivityId: string,\n private emitRawOrderByPayload: boolean = false,\n ) {\n this.endpoint = null;\n this.pageSize = options[\"maxItemCount\"];\n if (this.pageSize === undefined) {\n this.pageSize = PipelinedQueryExecutionContext.DEFAULT_PAGE_SIZE;\n }\n // Pick between Nonstreaming and streaming endpoints\n this.nonStreamingOrderBy = partitionedQueryExecutionInfo.queryInfo.hasNonStreamingOrderBy;\n\n // Pick between parallel vs order by execution context\n const sortOrders = partitionedQueryExecutionInfo.queryInfo.orderBy;\n // TODO: Currently we don't get any field from backend to determine streaming queries\n if (this.nonStreamingOrderBy) {\n if (!options.allowUnboundedNonStreamingQueries) {\n this.checkQueryConstraints(partitionedQueryExecutionInfo.queryInfo);\n }\n\n this.vectorSearchBufferSize = this.calculateVectorSearchBufferSize(\n partitionedQueryExecutionInfo.queryInfo,\n options,\n );\n const maxBufferSize = options[\"vectorSearchBufferSize\"]\n ? options[\"vectorSearchBufferSize\"]\n : PipelinedQueryExecutionContext.DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE;\n\n if (this.vectorSearchBufferSize > maxBufferSize) {\n throw new ErrorResponse(\n `Executing a vector search query with TOP or OFFSET + LIMIT value ${this.vectorSearchBufferSize} larger than the vectorSearchBufferSize ${maxBufferSize} ` +\n `is not allowed`,\n );\n }\n\n const distinctType = partitionedQueryExecutionInfo.queryInfo.distinctType;\n const context: ExecutionContext = new ParallelQueryExecutionContext(\n this.clientContext,\n this.collectionLink,\n this.query,\n this.options,\n this.partitionedQueryExecutionInfo,\n correlatedActivityId,\n );\n\n if (distinctType === \"None\") {\n this.endpoint = new NonStreamingOrderByEndpointComponent(\n context,\n sortOrders,\n this.vectorSearchBufferSize,\n partitionedQueryExecutionInfo.queryInfo.offset,\n this.emitRawOrderByPayload,\n );\n } else {\n this.endpoint = new NonStreamingOrderByDistinctEndpointComponent(\n context,\n partitionedQueryExecutionInfo.queryInfo,\n this.vectorSearchBufferSize,\n this.emitRawOrderByPayload,\n );\n }\n } else {\n if (Array.isArray(sortOrders) && sortOrders.length > 0) {\n // Need to wrap orderby execution context in endpoint component, since the data is nested as a \\\n // \"payload\" property.\n this.endpoint = new OrderByEndpointComponent(\n new OrderByQueryExecutionContext(\n this.clientContext,\n this.collectionLink,\n this.query,\n this.options,\n this.partitionedQueryExecutionInfo,\n correlatedActivityId,\n ),\n this.emitRawOrderByPayload,\n );\n } else {\n this.endpoint = new ParallelQueryExecutionContext(\n this.clientContext,\n this.collectionLink,\n this.query,\n this.options,\n this.partitionedQueryExecutionInfo,\n correlatedActivityId,\n );\n }\n if (\n Object.keys(partitionedQueryExecutionInfo.queryInfo.groupByAliasToAggregateType).length >\n 0 ||\n partitionedQueryExecutionInfo.queryInfo.aggregates.length > 0 ||\n partitionedQueryExecutionInfo.queryInfo.groupByExpressions.length > 0\n ) {\n if (partitionedQueryExecutionInfo.queryInfo.hasSelectValue) {\n this.endpoint = new GroupByValueEndpointComponent(\n this.endpoint,\n partitionedQueryExecutionInfo.queryInfo,\n );\n } else {\n this.endpoint = new GroupByEndpointComponent(\n this.endpoint,\n partitionedQueryExecutionInfo.queryInfo,\n );\n }\n }\n\n // If distinct then add that to the pipeline\n const distinctType = partitionedQueryExecutionInfo.queryInfo.distinctType;\n if (distinctType === \"Ordered\") {\n this.endpoint = new OrderedDistinctEndpointComponent(this.endpoint);\n }\n if (distinctType === \"Unordered\") {\n this.endpoint = new UnorderedDistinctEndpointComponent(this.endpoint);\n }\n\n // If top then add that to the pipeline. TOP N is effectively OFFSET 0 LIMIT N\n const top = partitionedQueryExecutionInfo.queryInfo.top;\n if (typeof top === \"number\") {\n this.endpoint = new OffsetLimitEndpointComponent(this.endpoint, 0, top);\n }\n\n // If offset+limit then add that to the pipeline\n const limit = partitionedQueryExecutionInfo.queryInfo.limit;\n const offset = partitionedQueryExecutionInfo.queryInfo.offset;\n if (typeof limit === \"number\" && typeof offset === \"number\") {\n this.endpoint = new OffsetLimitEndpointComponent(this.endpoint, offset, limit);\n }\n }\n this.fetchBuffer = [];\n }\n\n public hasMoreResults(): boolean {\n return this.fetchBuffer.length !== 0 || this.endpoint.hasMoreResults();\n }\n\n public async fetchMore(diagnosticNode: DiagnosticNodeInternal): Promise<Response<any>> {\n this.fetchMoreRespHeaders = getInitialHeader();\n return this._fetchMoreImplementation(diagnosticNode);\n }\n\n private async _fetchMoreImplementation(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<Response<any>> {\n try {\n if (this.fetchBuffer.length >= this.pageSize) {\n const temp = this.fetchBuffer.slice(0, this.pageSize);\n this.fetchBuffer = this.fetchBuffer.slice(this.pageSize);\n return { result: temp, headers: this.fetchMoreRespHeaders };\n } else {\n const response = await this.endpoint.fetchMore(diagnosticNode);\n mergeHeaders(this.fetchMoreRespHeaders, response.headers);\n if (response === undefined || response.result === undefined) {\n if (this.fetchBuffer.length > 0) {\n const temp = this.fetchBuffer;\n this.fetchBuffer = [];\n return { result: temp, headers: this.fetchMoreRespHeaders };\n } else {\n return { result: undefined, headers: this.fetchMoreRespHeaders };\n }\n }\n this.fetchBuffer.push(...response.result);\n\n if (this.options.enableQueryControl) {\n if (this.fetchBuffer.length >= this.pageSize) {\n const temp = this.fetchBuffer.slice(0, this.pageSize);\n this.fetchBuffer = this.fetchBuffer.slice(this.pageSize);\n return { result: temp, headers: this.fetchMoreRespHeaders };\n } else {\n const temp = this.fetchBuffer;\n this.fetchBuffer = [];\n return { result: temp, headers: this.fetchMoreRespHeaders };\n }\n }\n // Recursively fetch more results to ensure the pageSize number of results are returned\n // to maintain compatibility with the previous implementation\n return this._fetchMoreImplementation(diagnosticNode);\n }\n } catch (err: any) {\n mergeHeaders(this.fetchMoreRespHeaders, err.headers);\n err.headers = this.fetchMoreRespHeaders;\n if (err) {\n throw err;\n }\n }\n }\n\n private calculateVectorSearchBufferSize(queryInfo: QueryInfo, options: FeedOptions): number {\n if (queryInfo.top === 0 || queryInfo.limit === 0) return 0;\n return queryInfo.top\n ? queryInfo.top\n : queryInfo.limit\n ? queryInfo.offset + queryInfo.limit\n : options[\"vectorSearchBufferSize\"] && options[\"vectorSearchBufferSize\"] > 0\n ? options[\"vectorSearchBufferSize\"]\n : PipelinedQueryExecutionContext.DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE;\n }\n\n private checkQueryConstraints(queryInfo: QueryInfo): void {\n const hasTop = queryInfo.top || queryInfo.top === 0;\n const hasLimit = queryInfo.limit || queryInfo.limit === 0;\n if (!hasTop && !hasLimit) {\n throw new ErrorResponse(\n \"Executing a non-streaming search query without TOP or LIMIT can consume a large number of RUs \" +\n \"very fast and have long runtimes. Please ensure you are using one of the above two filters \" +\n \"with your vector search query.\",\n );\n }\n return;\n }\n}\n"]}
1
+ {"version":3,"file":"pipelinedQueryExecutionContext.js","sourceRoot":"","sources":["../../../src/queryExecutionContext/pipelinedQueryExecutionContext.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../ClientContext.js\";\nimport type { Response, FeedOptions } from \"../request/index.js\";\nimport type { PartitionedQueryExecutionInfo, QueryInfo } from \"../request/ErrorResponse.js\";\nimport { ErrorResponse } from \"../request/ErrorResponse.js\";\nimport type { CosmosHeaders } from \"./CosmosHeaders.js\";\nimport { OffsetLimitEndpointComponent } from \"./EndpointComponent/OffsetLimitEndpointComponent.js\";\nimport { OrderByEndpointComponent } from \"./EndpointComponent/OrderByEndpointComponent.js\";\nimport { OrderedDistinctEndpointComponent } from \"./EndpointComponent/OrderedDistinctEndpointComponent.js\";\nimport { UnorderedDistinctEndpointComponent } from \"./EndpointComponent/UnorderedDistinctEndpointComponent.js\";\nimport { GroupByEndpointComponent } from \"./EndpointComponent/GroupByEndpointComponent.js\";\nimport type { ExecutionContext } from \"./ExecutionContext.js\";\nimport { getInitialHeader, mergeHeaders } from \"./headerUtils.js\";\nimport { OrderByQueryExecutionContext } from \"./orderByQueryExecutionContext.js\";\nimport { ParallelQueryExecutionContext } from \"./parallelQueryExecutionContext.js\";\nimport { GroupByValueEndpointComponent } from \"./EndpointComponent/GroupByValueEndpointComponent.js\";\nimport type { SqlQuerySpec } from \"./SqlQuerySpec.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport { NonStreamingOrderByDistinctEndpointComponent } from \"./EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js\";\nimport { NonStreamingOrderByEndpointComponent } from \"./EndpointComponent/NonStreamingOrderByEndpointComponent.js\";\n\n/** @hidden */\nexport class PipelinedQueryExecutionContext implements ExecutionContext {\n private fetchBuffer: any[];\n private fetchMoreRespHeaders: CosmosHeaders;\n private endpoint: ExecutionContext;\n private pageSize: number;\n private vectorSearchBufferSize: number = 0;\n private static DEFAULT_PAGE_SIZE = 10;\n private static DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE = 50000;\n private nonStreamingOrderBy = false;\n\n constructor(\n private clientContext: ClientContext,\n private collectionLink: string,\n private query: string | SqlQuerySpec,\n private options: FeedOptions,\n private partitionedQueryExecutionInfo: PartitionedQueryExecutionInfo,\n correlatedActivityId: string,\n private emitRawOrderByPayload: boolean = false,\n ) {\n this.endpoint = null;\n this.pageSize = options[\"maxItemCount\"];\n if (this.pageSize === undefined) {\n this.pageSize = PipelinedQueryExecutionContext.DEFAULT_PAGE_SIZE;\n }\n // Pick between Nonstreaming and streaming endpoints\n this.nonStreamingOrderBy = partitionedQueryExecutionInfo.queryInfo.hasNonStreamingOrderBy;\n\n // Pick between parallel vs order by execution context\n const sortOrders = partitionedQueryExecutionInfo.queryInfo.orderBy;\n // TODO: Currently we don't get any field from backend to determine streaming queries\n if (this.nonStreamingOrderBy) {\n if (!options.allowUnboundedNonStreamingQueries) {\n this.checkQueryConstraints(partitionedQueryExecutionInfo.queryInfo);\n }\n\n this.vectorSearchBufferSize = this.calculateVectorSearchBufferSize(\n partitionedQueryExecutionInfo.queryInfo,\n options,\n );\n const maxBufferSize = options[\"vectorSearchBufferSize\"]\n ? options[\"vectorSearchBufferSize\"]\n : PipelinedQueryExecutionContext.DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE;\n\n if (this.vectorSearchBufferSize > maxBufferSize) {\n throw new ErrorResponse(\n `Executing a vector search query with TOP or OFFSET + LIMIT value ${this.vectorSearchBufferSize} larger than the vectorSearchBufferSize ${maxBufferSize} ` +\n `is not allowed`,\n );\n }\n\n const distinctType = partitionedQueryExecutionInfo.queryInfo.distinctType;\n const context: ExecutionContext = new ParallelQueryExecutionContext(\n this.clientContext,\n this.collectionLink,\n this.query,\n this.options,\n this.partitionedQueryExecutionInfo,\n correlatedActivityId,\n );\n\n if (distinctType === \"None\") {\n this.endpoint = new NonStreamingOrderByEndpointComponent(\n context,\n sortOrders,\n this.vectorSearchBufferSize,\n partitionedQueryExecutionInfo.queryInfo.offset,\n this.emitRawOrderByPayload,\n );\n } else {\n this.endpoint = new NonStreamingOrderByDistinctEndpointComponent(\n context,\n partitionedQueryExecutionInfo.queryInfo,\n this.vectorSearchBufferSize,\n this.emitRawOrderByPayload,\n );\n }\n } else {\n if (Array.isArray(sortOrders) && sortOrders.length > 0) {\n // Need to wrap orderby execution context in endpoint component, since the data is nested as a \\\n // \"payload\" property.\n this.endpoint = new OrderByEndpointComponent(\n new OrderByQueryExecutionContext(\n this.clientContext,\n this.collectionLink,\n this.query,\n this.options,\n this.partitionedQueryExecutionInfo,\n correlatedActivityId,\n ),\n this.emitRawOrderByPayload,\n );\n } else {\n this.endpoint = new ParallelQueryExecutionContext(\n this.clientContext,\n this.collectionLink,\n this.query,\n this.options,\n this.partitionedQueryExecutionInfo,\n correlatedActivityId,\n );\n }\n if (\n Object.keys(partitionedQueryExecutionInfo.queryInfo.groupByAliasToAggregateType).length >\n 0 ||\n partitionedQueryExecutionInfo.queryInfo.aggregates.length > 0 ||\n partitionedQueryExecutionInfo.queryInfo.groupByExpressions.length > 0\n ) {\n if (partitionedQueryExecutionInfo.queryInfo.hasSelectValue) {\n this.endpoint = new GroupByValueEndpointComponent(\n this.endpoint,\n partitionedQueryExecutionInfo.queryInfo,\n );\n } else {\n this.endpoint = new GroupByEndpointComponent(\n this.endpoint,\n partitionedQueryExecutionInfo.queryInfo,\n );\n }\n }\n\n // If distinct then add that to the pipeline\n const distinctType = partitionedQueryExecutionInfo.queryInfo.distinctType;\n if (distinctType === \"Ordered\") {\n this.endpoint = new OrderedDistinctEndpointComponent(this.endpoint);\n }\n if (distinctType === \"Unordered\") {\n this.endpoint = new UnorderedDistinctEndpointComponent(this.endpoint);\n }\n\n // If top then add that to the pipeline. TOP N is effectively OFFSET 0 LIMIT N\n const top = partitionedQueryExecutionInfo.queryInfo.top;\n if (typeof top === \"number\") {\n this.endpoint = new OffsetLimitEndpointComponent(this.endpoint, 0, top);\n }\n\n // If offset+limit then add that to the pipeline\n const limit = partitionedQueryExecutionInfo.queryInfo.limit;\n const offset = partitionedQueryExecutionInfo.queryInfo.offset;\n if (typeof limit === \"number\" && typeof offset === \"number\") {\n this.endpoint = new OffsetLimitEndpointComponent(this.endpoint, offset, limit);\n }\n }\n this.fetchBuffer = [];\n }\n\n public hasMoreResults(): boolean {\n return this.fetchBuffer.length !== 0 || this.endpoint.hasMoreResults();\n }\n\n public async fetchMore(diagnosticNode: DiagnosticNodeInternal): Promise<Response<any>> {\n this.fetchMoreRespHeaders = getInitialHeader();\n return this._fetchMoreImplementation(diagnosticNode);\n }\n\n private async _fetchMoreImplementation(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<Response<any>> {\n try {\n if (this.fetchBuffer.length >= this.pageSize) {\n const temp = this.fetchBuffer.slice(0, this.pageSize);\n this.fetchBuffer = this.fetchBuffer.slice(this.pageSize);\n return { result: temp, headers: this.fetchMoreRespHeaders };\n } else {\n const response = await this.endpoint.fetchMore(diagnosticNode);\n mergeHeaders(this.fetchMoreRespHeaders, response.headers);\n if (response === undefined || response.result === undefined) {\n if (this.fetchBuffer.length > 0) {\n const temp = this.fetchBuffer;\n this.fetchBuffer = [];\n return { result: temp, headers: this.fetchMoreRespHeaders };\n } else {\n return { result: undefined, headers: this.fetchMoreRespHeaders };\n }\n }\n this.fetchBuffer.push(...response.result);\n\n if (this.options.enableQueryControl) {\n if (this.fetchBuffer.length >= this.pageSize) {\n const temp = this.fetchBuffer.slice(0, this.pageSize);\n this.fetchBuffer = this.fetchBuffer.slice(this.pageSize);\n return { result: temp, headers: this.fetchMoreRespHeaders };\n } else {\n const temp = this.fetchBuffer;\n this.fetchBuffer = [];\n return { result: temp, headers: this.fetchMoreRespHeaders };\n }\n }\n // Recursively fetch more results to ensure the pageSize number of results are returned\n // to maintain compatibility with the previous implementation\n return this._fetchMoreImplementation(diagnosticNode);\n }\n } catch (err: any) {\n mergeHeaders(this.fetchMoreRespHeaders, err.headers);\n err.headers = this.fetchMoreRespHeaders;\n if (err) {\n throw err;\n }\n }\n }\n\n private calculateVectorSearchBufferSize(queryInfo: QueryInfo, options: FeedOptions): number {\n if (queryInfo.top === 0 || queryInfo.limit === 0) return 0;\n return queryInfo.top\n ? queryInfo.top\n : queryInfo.limit\n ? queryInfo.offset + queryInfo.limit\n : options[\"vectorSearchBufferSize\"] && options[\"vectorSearchBufferSize\"] > 0\n ? options[\"vectorSearchBufferSize\"]\n : PipelinedQueryExecutionContext.DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE;\n }\n\n private checkQueryConstraints(queryInfo: QueryInfo): void {\n const hasTop = queryInfo.top || queryInfo.top === 0;\n const hasLimit = queryInfo.limit || queryInfo.limit === 0;\n if (!hasTop && !hasLimit) {\n throw new ErrorResponse(\n \"Executing a non-streaming search query without TOP or LIMIT can consume a large number of RUs \" +\n \"very fast and have long runtimes. Please ensure you are using one of the above two filters \" +\n \"with your vector search query.\",\n );\n }\n return;\n }\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
- import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tslib";
4
3
  import { DiagnosticNodeInternal, DiagnosticNodeType, } from "./diagnostics/DiagnosticNodeInternal.js";
5
4
  import { getPathFromLink, ResourceType, StatusCodes } from "./common/index.js";
6
5
  import { DefaultQueryExecutionContext, getInitialHeader, mergeHeaders, PipelinedQueryExecutionContext, } from "./queryExecutionContext/index.js";
@@ -15,6 +14,19 @@ import { HybridQueryExecutionContext } from "./queryExecutionContext/hybridQuery
15
14
  * in the Azure Cosmos DB database service.
16
15
  */
17
16
  export class QueryIterator {
17
+ clientContext;
18
+ query;
19
+ options;
20
+ fetchFunctions;
21
+ resourceLink;
22
+ resourceType;
23
+ fetchAllTempResources; // TODO
24
+ fetchAllLastResHeaders;
25
+ queryExecutionContext;
26
+ queryPlanPromise;
27
+ isInitialized;
28
+ correlatedActivityId;
29
+ partitionKeyRangeCache;
18
30
  /**
19
31
  * @hidden
20
32
  */
@@ -62,45 +74,41 @@ export class QueryIterator {
62
74
  * }
63
75
  * ```
64
76
  */
65
- getAsyncIterator() {
66
- return __asyncGenerator(this, arguments, function* getAsyncIterator_1() {
67
- const diagnosticNode = new DiagnosticNodeInternal(this.clientContext.diagnosticLevel, DiagnosticNodeType.CLIENT_REQUEST_NODE, null);
68
- yield __await(yield* __asyncDelegator(__asyncValues(this.getAsyncIteratorInternal(diagnosticNode))));
69
- });
77
+ async *getAsyncIterator() {
78
+ const diagnosticNode = new DiagnosticNodeInternal(this.clientContext.diagnosticLevel, DiagnosticNodeType.CLIENT_REQUEST_NODE, null);
79
+ yield* this.getAsyncIteratorInternal(diagnosticNode);
70
80
  }
71
81
  /**
72
82
  * @internal
73
83
  */
74
- getAsyncIteratorInternal(diagnosticNode) {
75
- return __asyncGenerator(this, arguments, function* getAsyncIteratorInternal_1() {
76
- this.reset();
77
- this.queryPlanPromise = this.fetchQueryPlan(diagnosticNode);
78
- while (this.queryExecutionContext.hasMoreResults()) {
79
- let response;
80
- try {
81
- response = yield __await(this.queryExecutionContext.fetchMore(diagnosticNode));
82
- }
83
- catch (error) {
84
- if (this.needsQueryPlan(error)) {
85
- yield __await(this.createExecutionContext(diagnosticNode));
86
- try {
87
- response = yield __await(this.queryExecutionContext.fetchMore(diagnosticNode));
88
- }
89
- catch (queryError) {
90
- this.handleSplitError(queryError);
91
- }
84
+ async *getAsyncIteratorInternal(diagnosticNode) {
85
+ this.reset();
86
+ this.queryPlanPromise = this.fetchQueryPlan(diagnosticNode);
87
+ while (this.queryExecutionContext.hasMoreResults()) {
88
+ let response;
89
+ try {
90
+ response = await this.queryExecutionContext.fetchMore(diagnosticNode);
91
+ }
92
+ catch (error) {
93
+ if (this.needsQueryPlan(error)) {
94
+ await this.createExecutionContext(diagnosticNode);
95
+ try {
96
+ response = await this.queryExecutionContext.fetchMore(diagnosticNode);
92
97
  }
93
- else {
94
- throw error;
98
+ catch (queryError) {
99
+ this.handleSplitError(queryError);
95
100
  }
96
101
  }
97
- const feedResponse = new FeedResponse(response.result, response.headers, this.queryExecutionContext.hasMoreResults(), diagnosticNode.toDiagnostic(this.clientContext.getClientConfig()));
98
- diagnosticNode = new DiagnosticNodeInternal(this.clientContext.diagnosticLevel, DiagnosticNodeType.CLIENT_REQUEST_NODE, null);
99
- if (response.result !== undefined) {
100
- yield yield __await(feedResponse);
102
+ else {
103
+ throw error;
101
104
  }
102
105
  }
103
- });
106
+ const feedResponse = new FeedResponse(response.result, response.headers, this.queryExecutionContext.hasMoreResults(), diagnosticNode.toDiagnostic(this.clientContext.getClientConfig()));
107
+ diagnosticNode = new DiagnosticNodeInternal(this.clientContext.diagnosticLevel, DiagnosticNodeType.CLIENT_REQUEST_NODE, null);
108
+ if (response.result !== undefined) {
109
+ yield feedResponse;
110
+ }
111
+ }
104
112
  }
105
113
  /**
106
114
  * Determine if there are still remaining resources to process based on the value of the continuation token or the
@@ -321,8 +329,7 @@ export class QueryIterator {
321
329
  return this.queryPlanPromise;
322
330
  }
323
331
  needsQueryPlan(error) {
324
- var _a;
325
- if (((_a = error.body) === null || _a === void 0 ? void 0 : _a.additionalErrorInfo) ||
332
+ if (error.body?.additionalErrorInfo ||
326
333
  error.message.includes("Cross partition query only supports")) {
327
334
  return error.code === StatusCodes.BadRequest && this.resourceType === ResourceType.item;
328
335
  }
@@ -330,6 +337,7 @@ export class QueryIterator {
330
337
  throw error;
331
338
  }
332
339
  }
340
+ initPromise;
333
341
  /**
334
342
  * @internal
335
343
  */