@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
@@ -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"]}
@@ -5,6 +5,7 @@ const orderByDocumentProducerComparator_js_1 = require("./orderByDocumentProduce
5
5
  const parallelQueryExecutionContextBase_js_1 = require("./parallelQueryExecutionContextBase.js");
6
6
  /** @hidden */
7
7
  class OrderByQueryExecutionContext extends parallelQueryExecutionContextBase_js_1.ParallelQueryExecutionContextBase {
8
+ orderByComparator;
8
9
  /**
9
10
  * Provides the OrderByQueryExecutionContext.
10
11
  * 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,iGAA2F;AAC3F,iGAA2F;AAG3F,cAAc;AACd,MAAa,4BACX,SAAQ,wEAAiC;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,wEAAiC,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;AAjED,oEAiEC","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,iGAA2F;AAC3F,iGAA2F;AAG3F,cAAc;AACd,MAAa,4BACX,SAAQ,wEAAiC;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,wEAAiC,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;AAjED,oEAiEC","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"]}
@@ -24,6 +24,25 @@ var ParallelQueryExecutionContextBaseStates;
24
24
  })(ParallelQueryExecutionContextBaseStates || (exports.ParallelQueryExecutionContextBaseStates = ParallelQueryExecutionContextBaseStates = {}));
25
25
  /** @hidden */
26
26
  class ParallelQueryExecutionContextBase {
27
+ clientContext;
28
+ collectionLink;
29
+ query;
30
+ options;
31
+ partitionedQueryExecutionInfo;
32
+ correlatedActivityId;
33
+ err;
34
+ state;
35
+ static STATES = ParallelQueryExecutionContextBaseStates;
36
+ routingProvider;
37
+ sortOrders;
38
+ requestContinuation;
39
+ respHeaders;
40
+ unfilledDocumentProducersQueue;
41
+ bufferedDocumentProducersQueue;
42
+ // TODO: update type of buffer from any --> generic can be used here
43
+ buffer;
44
+ sem;
45
+ diagnosticNodeWrapper;
27
46
  /**
28
47
  * Provides the ParallelQueryExecutionContextBase.
29
48
  * This is the base class that ParallelQueryExecutionContext and OrderByQueryExecutionContext will derive from.
@@ -208,7 +227,7 @@ class ParallelQueryExecutionContextBase {
208
227
  rewrittenQuery = rewrittenQuery.replace(formatPlaceHolder, "true");
209
228
  sqlQuerySpec["query"] = rewrittenQuery;
210
229
  }
211
- const options = Object.assign({}, this.options);
230
+ const options = { ...this.options };
212
231
  options.continuationToken = continuationToken;
213
232
  return new documentProducer_js_1.DocumentProducer(this.clientContext, this.collectionLink, sqlQuerySpec, partitionKeyTargetRange, options, this.correlatedActivityId, startEpk, endEpk, populateEpkRangeHeaders);
214
233
  }
@@ -427,5 +446,4 @@ class ParallelQueryExecutionContextBase {
427
446
  }
428
447
  }
429
448
  exports.ParallelQueryExecutionContextBase = ParallelQueryExecutionContextBase;
430
- ParallelQueryExecutionContextBase.STATES = ParallelQueryExecutionContextBaseStates;
431
449
  //# sourceMappingURL=parallelQueryExecutionContextBase.js.map
@@ -1 +1 @@
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"]}
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"]}
@@ -15,6 +15,20 @@ const NonStreamingOrderByDistinctEndpointComponent_js_1 = require("./EndpointCom
15
15
  const NonStreamingOrderByEndpointComponent_js_1 = require("./EndpointComponent/NonStreamingOrderByEndpointComponent.js");
16
16
  /** @hidden */
17
17
  class PipelinedQueryExecutionContext {
18
+ clientContext;
19
+ collectionLink;
20
+ query;
21
+ options;
22
+ partitionedQueryExecutionInfo;
23
+ emitRawOrderByPayload;
24
+ fetchBuffer;
25
+ fetchMoreRespHeaders;
26
+ endpoint;
27
+ pageSize;
28
+ vectorSearchBufferSize = 0;
29
+ static DEFAULT_PAGE_SIZE = 10;
30
+ static DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE = 50000;
31
+ nonStreamingOrderBy = false;
18
32
  constructor(clientContext, collectionLink, query, options, partitionedQueryExecutionInfo, correlatedActivityId, emitRawOrderByPayload = false) {
19
33
  this.clientContext = clientContext;
20
34
  this.collectionLink = collectionLink;
@@ -22,8 +36,6 @@ class PipelinedQueryExecutionContext {
22
36
  this.options = options;
23
37
  this.partitionedQueryExecutionInfo = partitionedQueryExecutionInfo;
24
38
  this.emitRawOrderByPayload = emitRawOrderByPayload;
25
- this.vectorSearchBufferSize = 0;
26
- this.nonStreamingOrderBy = false;
27
39
  this.endpoint = null;
28
40
  this.pageSize = options["maxItemCount"];
29
41
  if (this.pageSize === undefined) {
@@ -173,6 +185,4 @@ class PipelinedQueryExecutionContext {
173
185
  }
174
186
  }
175
187
  exports.PipelinedQueryExecutionContext = PipelinedQueryExecutionContext;
176
- PipelinedQueryExecutionContext.DEFAULT_PAGE_SIZE = 10;
177
- PipelinedQueryExecutionContext.DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE = 50000;
178
188
  //# 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"]}
@@ -3,7 +3,6 @@
3
3
  // Licensed under the MIT License.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.QueryIterator = void 0;
6
- const tslib_1 = require("tslib");
7
6
  const DiagnosticNodeInternal_js_1 = require("./diagnostics/DiagnosticNodeInternal.js");
8
7
  const index_js_1 = require("./common/index.js");
9
8
  const index_js_2 = require("./queryExecutionContext/index.js");
@@ -18,6 +17,19 @@ const hybridQueryExecutionContext_js_1 = require("./queryExecutionContext/hybrid
18
17
  * in the Azure Cosmos DB database service.
19
18
  */
20
19
  class QueryIterator {
20
+ clientContext;
21
+ query;
22
+ options;
23
+ fetchFunctions;
24
+ resourceLink;
25
+ resourceType;
26
+ fetchAllTempResources; // TODO
27
+ fetchAllLastResHeaders;
28
+ queryExecutionContext;
29
+ queryPlanPromise;
30
+ isInitialized;
31
+ correlatedActivityId;
32
+ partitionKeyRangeCache;
21
33
  /**
22
34
  * @hidden
23
35
  */
@@ -65,45 +77,41 @@ class QueryIterator {
65
77
  * }
66
78
  * ```
67
79
  */
68
- getAsyncIterator() {
69
- return tslib_1.__asyncGenerator(this, arguments, function* getAsyncIterator_1() {
70
- const diagnosticNode = new DiagnosticNodeInternal_js_1.DiagnosticNodeInternal(this.clientContext.diagnosticLevel, DiagnosticNodeInternal_js_1.DiagnosticNodeType.CLIENT_REQUEST_NODE, null);
71
- yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(this.getAsyncIteratorInternal(diagnosticNode))));
72
- });
80
+ async *getAsyncIterator() {
81
+ const diagnosticNode = new DiagnosticNodeInternal_js_1.DiagnosticNodeInternal(this.clientContext.diagnosticLevel, DiagnosticNodeInternal_js_1.DiagnosticNodeType.CLIENT_REQUEST_NODE, null);
82
+ yield* this.getAsyncIteratorInternal(diagnosticNode);
73
83
  }
74
84
  /**
75
85
  * @internal
76
86
  */
77
- getAsyncIteratorInternal(diagnosticNode) {
78
- return tslib_1.__asyncGenerator(this, arguments, function* getAsyncIteratorInternal_1() {
79
- this.reset();
80
- this.queryPlanPromise = this.fetchQueryPlan(diagnosticNode);
81
- while (this.queryExecutionContext.hasMoreResults()) {
82
- let response;
83
- try {
84
- response = yield tslib_1.__await(this.queryExecutionContext.fetchMore(diagnosticNode));
85
- }
86
- catch (error) {
87
- if (this.needsQueryPlan(error)) {
88
- yield tslib_1.__await(this.createExecutionContext(diagnosticNode));
89
- try {
90
- response = yield tslib_1.__await(this.queryExecutionContext.fetchMore(diagnosticNode));
91
- }
92
- catch (queryError) {
93
- this.handleSplitError(queryError);
94
- }
87
+ async *getAsyncIteratorInternal(diagnosticNode) {
88
+ this.reset();
89
+ this.queryPlanPromise = this.fetchQueryPlan(diagnosticNode);
90
+ while (this.queryExecutionContext.hasMoreResults()) {
91
+ let response;
92
+ try {
93
+ response = await this.queryExecutionContext.fetchMore(diagnosticNode);
94
+ }
95
+ catch (error) {
96
+ if (this.needsQueryPlan(error)) {
97
+ await this.createExecutionContext(diagnosticNode);
98
+ try {
99
+ response = await this.queryExecutionContext.fetchMore(diagnosticNode);
95
100
  }
96
- else {
97
- throw error;
101
+ catch (queryError) {
102
+ this.handleSplitError(queryError);
98
103
  }
99
104
  }
100
- const feedResponse = new FeedResponse_js_1.FeedResponse(response.result, response.headers, this.queryExecutionContext.hasMoreResults(), diagnosticNode.toDiagnostic(this.clientContext.getClientConfig()));
101
- diagnosticNode = new DiagnosticNodeInternal_js_1.DiagnosticNodeInternal(this.clientContext.diagnosticLevel, DiagnosticNodeInternal_js_1.DiagnosticNodeType.CLIENT_REQUEST_NODE, null);
102
- if (response.result !== undefined) {
103
- yield yield tslib_1.__await(feedResponse);
105
+ else {
106
+ throw error;
104
107
  }
105
108
  }
106
- });
109
+ const feedResponse = new FeedResponse_js_1.FeedResponse(response.result, response.headers, this.queryExecutionContext.hasMoreResults(), diagnosticNode.toDiagnostic(this.clientContext.getClientConfig()));
110
+ diagnosticNode = new DiagnosticNodeInternal_js_1.DiagnosticNodeInternal(this.clientContext.diagnosticLevel, DiagnosticNodeInternal_js_1.DiagnosticNodeType.CLIENT_REQUEST_NODE, null);
111
+ if (response.result !== undefined) {
112
+ yield feedResponse;
113
+ }
114
+ }
107
115
  }
108
116
  /**
109
117
  * Determine if there are still remaining resources to process based on the value of the continuation token or the
@@ -324,8 +332,7 @@ class QueryIterator {
324
332
  return this.queryPlanPromise;
325
333
  }
326
334
  needsQueryPlan(error) {
327
- var _a;
328
- if (((_a = error.body) === null || _a === void 0 ? void 0 : _a.additionalErrorInfo) ||
335
+ if (error.body?.additionalErrorInfo ||
329
336
  error.message.includes("Cross partition query only supports")) {
330
337
  return error.code === index_js_1.StatusCodes.BadRequest && this.resourceType === index_js_1.ResourceType.item;
331
338
  }
@@ -333,6 +340,7 @@ class QueryIterator {
333
340
  throw error;
334
341
  }
335
342
  }
343
+ initPromise;
336
344
  /**
337
345
  * @internal
338
346
  */