@azure/cosmos 4.5.0 → 4.5.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 (1200) 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.js +34 -3
  8. package/dist/browser/CosmosClient.js.map +1 -1
  9. package/dist/browser/CosmosDiagnostics.js +3 -0
  10. package/dist/browser/CosmosDiagnostics.js.map +1 -1
  11. package/dist/browser/PartitionKeyRangeFailoverInfo.js +8 -5
  12. package/dist/browser/PartitionKeyRangeFailoverInfo.js.map +1 -1
  13. package/dist/browser/bulk/Batcher.js +13 -3
  14. package/dist/browser/bulk/Batcher.js.map +1 -1
  15. package/dist/browser/bulk/BulkHelper.js +26 -11
  16. package/dist/browser/bulk/BulkHelper.js.map +1 -1
  17. package/dist/browser/bulk/BulkResponse.js +22 -20
  18. package/dist/browser/bulk/BulkResponse.js.map +1 -1
  19. package/dist/browser/bulk/CongestionAlgorithm.js +11 -4
  20. package/dist/browser/bulk/CongestionAlgorithm.js.map +1 -1
  21. package/dist/browser/bulk/HelperPerPartition.js +14 -1
  22. package/dist/browser/bulk/HelperPerPartition.js.map +1 -1
  23. package/dist/browser/bulk/ItemOperationContext.js +4 -0
  24. package/dist/browser/bulk/ItemOperationContext.js.map +1 -1
  25. package/dist/browser/bulk/Limiter.js +27 -18
  26. package/dist/browser/bulk/Limiter.js.map +1 -1
  27. package/dist/browser/bulk/PartitionMetric.js +4 -0
  28. package/dist/browser/bulk/PartitionMetric.js.map +1 -1
  29. package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  30. package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  31. package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
  32. package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  33. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  34. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  35. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  36. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  37. package/dist/browser/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  38. package/dist/browser/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  39. package/dist/browser/client/ChangeFeed/ChangeFeedRange.js +20 -0
  40. package/dist/browser/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  41. package/dist/browser/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  42. package/dist/browser/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  43. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  44. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  45. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  46. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  47. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  48. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  49. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  50. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  51. package/dist/browser/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  52. package/dist/browser/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  53. package/dist/browser/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  54. package/dist/browser/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  55. package/dist/browser/client/ChangeFeed/FeedRange.js +8 -0
  56. package/dist/browser/client/ChangeFeed/FeedRange.js.map +1 -1
  57. package/dist/browser/client/ChangeFeed/FeedRangeQueue.js +1 -0
  58. package/dist/browser/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  59. package/dist/browser/client/ChangeFeed/changeFeedUtils.js +5 -5
  60. package/dist/browser/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  61. package/dist/browser/client/ClientUtils.js +1 -1
  62. package/dist/browser/client/ClientUtils.js.map +1 -1
  63. package/dist/browser/client/Conflict/Conflict.js +4 -0
  64. package/dist/browser/client/Conflict/Conflict.js.map +1 -1
  65. package/dist/browser/client/Conflict/ConflictResponse.js +2 -0
  66. package/dist/browser/client/Conflict/ConflictResponse.js.map +1 -1
  67. package/dist/browser/client/Conflict/Conflicts.js +2 -0
  68. package/dist/browser/client/Conflict/Conflicts.js.map +1 -1
  69. package/dist/browser/client/Container/Container.js +18 -3
  70. package/dist/browser/client/Container/Container.js.map +1 -1
  71. package/dist/browser/client/Container/ContainerResponse.js +2 -0
  72. package/dist/browser/client/Container/ContainerResponse.js.map +1 -1
  73. package/dist/browser/client/Container/Containers.js +4 -2
  74. package/dist/browser/client/Container/Containers.js.map +1 -1
  75. package/dist/browser/client/Database/Database.js +33 -0
  76. package/dist/browser/client/Database/Database.js.map +1 -1
  77. package/dist/browser/client/Database/DatabaseResponse.js +2 -0
  78. package/dist/browser/client/Database/DatabaseResponse.js.map +1 -1
  79. package/dist/browser/client/Database/Databases.js +3 -0
  80. package/dist/browser/client/Database/Databases.js.map +1 -1
  81. package/dist/browser/client/Item/Item.js +4 -0
  82. package/dist/browser/client/Item/Item.js.map +1 -1
  83. package/dist/browser/client/Item/ItemResponse.js +2 -0
  84. package/dist/browser/client/Item/ItemResponse.js.map +1 -1
  85. package/dist/browser/client/Item/Items.js +3 -0
  86. package/dist/browser/client/Item/Items.js.map +1 -1
  87. package/dist/browser/client/Offer/Offer.js +3 -0
  88. package/dist/browser/client/Offer/Offer.js.map +1 -1
  89. package/dist/browser/client/Offer/OfferResponse.js +2 -0
  90. package/dist/browser/client/Offer/OfferResponse.js.map +1 -1
  91. package/dist/browser/client/Offer/Offers.js +2 -0
  92. package/dist/browser/client/Offer/Offers.js.map +1 -1
  93. package/dist/browser/client/Permission/Permission.js +3 -0
  94. package/dist/browser/client/Permission/Permission.js.map +1 -1
  95. package/dist/browser/client/Permission/PermissionResponse.js +2 -0
  96. package/dist/browser/client/Permission/PermissionResponse.js.map +1 -1
  97. package/dist/browser/client/Permission/Permissions.js +2 -0
  98. package/dist/browser/client/Permission/Permissions.js.map +1 -1
  99. package/dist/browser/client/SasToken/SasTokenProperties.js +17 -0
  100. package/dist/browser/client/SasToken/SasTokenProperties.js.map +1 -1
  101. package/dist/browser/client/Script/Scripts.js +5 -0
  102. package/dist/browser/client/Script/Scripts.js.map +1 -1
  103. package/dist/browser/client/StoredProcedure/StoredProcedure.js +3 -0
  104. package/dist/browser/client/StoredProcedure/StoredProcedure.js.map +1 -1
  105. package/dist/browser/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  106. package/dist/browser/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  107. package/dist/browser/client/StoredProcedure/StoredProcedures.js +2 -0
  108. package/dist/browser/client/StoredProcedure/StoredProcedures.js.map +1 -1
  109. package/dist/browser/client/Trigger/Trigger.js +3 -0
  110. package/dist/browser/client/Trigger/Trigger.js.map +1 -1
  111. package/dist/browser/client/Trigger/TriggerResponse.js +2 -0
  112. package/dist/browser/client/Trigger/TriggerResponse.js.map +1 -1
  113. package/dist/browser/client/Trigger/Triggers.js +2 -0
  114. package/dist/browser/client/Trigger/Triggers.js.map +1 -1
  115. package/dist/browser/client/User/User.js +9 -0
  116. package/dist/browser/client/User/User.js.map +1 -1
  117. package/dist/browser/client/User/UserResponse.js +2 -0
  118. package/dist/browser/client/User/UserResponse.js.map +1 -1
  119. package/dist/browser/client/User/Users.js +2 -0
  120. package/dist/browser/client/User/Users.js.map +1 -1
  121. package/dist/browser/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  122. package/dist/browser/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  123. package/dist/browser/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  124. package/dist/browser/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  125. package/dist/browser/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  126. package/dist/browser/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  127. package/dist/browser/common/constants.js +1 -1
  128. package/dist/browser/common/constants.js.map +1 -1
  129. package/dist/browser/diagnostics/CosmosDiagnosticsContext.js +8 -7
  130. package/dist/browser/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  131. package/dist/browser/diagnostics/DiagnosticNodeInternal.js +26 -7
  132. package/dist/browser/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  133. package/dist/browser/diagnostics/DiagnosticWriter.js +1 -3
  134. package/dist/browser/diagnostics/DiagnosticWriter.js.map +1 -1
  135. package/dist/browser/diagnostics/index.js +2 -2
  136. package/dist/browser/diagnostics/index.js.map +1 -1
  137. package/dist/browser/documents/DatabaseAccount.js +20 -4
  138. package/dist/browser/documents/DatabaseAccount.js.map +1 -1
  139. package/dist/browser/documents/PartitionKey.js +1 -3
  140. package/dist/browser/documents/PartitionKey.js.map +1 -1
  141. package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  142. package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  143. package/dist/browser/encryption/Cache/EncryptionSettingsCache.js +2 -0
  144. package/dist/browser/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  145. package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  146. package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  147. package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  148. package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  149. package/dist/browser/encryption/EncryptionItemQueryIterator.js +24 -27
  150. package/dist/browser/encryption/EncryptionItemQueryIterator.js.map +1 -1
  151. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  152. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  153. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  154. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  155. package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  156. package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  157. package/dist/browser/encryption/EncryptionKeyStoreProvider.js +8 -1
  158. package/dist/browser/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  159. package/dist/browser/encryption/EncryptionManager.js +6 -0
  160. package/dist/browser/encryption/EncryptionManager.js.map +1 -1
  161. package/dist/browser/encryption/EncryptionProcessor.js +5 -0
  162. package/dist/browser/encryption/EncryptionProcessor.js.map +1 -1
  163. package/dist/browser/encryption/EncryptionQueryBuilder.js +2 -0
  164. package/dist/browser/encryption/EncryptionQueryBuilder.js.map +1 -1
  165. package/dist/browser/encryption/EncryptionSettingForProperty.js +6 -0
  166. package/dist/browser/encryption/EncryptionSettingForProperty.js.map +1 -1
  167. package/dist/browser/encryption/EncryptionSettings.js +6 -3
  168. package/dist/browser/encryption/EncryptionSettings.js.map +1 -1
  169. package/dist/browser/encryption/KeyEncryptionKey.js +4 -0
  170. package/dist/browser/encryption/KeyEncryptionKey.js.map +1 -1
  171. package/dist/browser/encryption/Serializers/StringSerializer.js +1 -1
  172. package/dist/browser/encryption/Serializers/StringSerializer.js.map +1 -1
  173. package/dist/browser/extractPartitionKey.js +2 -2
  174. package/dist/browser/extractPartitionKey.js.map +1 -1
  175. package/dist/browser/globalEndpointManager.d.ts.map +1 -1
  176. package/dist/browser/globalEndpointManager.js +36 -23
  177. package/dist/browser/globalEndpointManager.js.map +1 -1
  178. package/dist/browser/globalPartitionEndpointManager.js +8 -0
  179. package/dist/browser/globalPartitionEndpointManager.js.map +1 -1
  180. package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  181. package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  182. package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  183. package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  184. package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  185. package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  186. package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  187. package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  188. package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  189. package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  190. package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  191. package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  192. package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  193. package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  194. package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  195. package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  196. package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  197. package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  198. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  199. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  200. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  201. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  202. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  203. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  204. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  205. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  206. package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  207. package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  208. package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  209. package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  210. package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  211. package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  212. package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  213. package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  214. package/dist/browser/queryExecutionContext/FetchResult.js +4 -0
  215. package/dist/browser/queryExecutionContext/FetchResult.js.map +1 -1
  216. package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  217. package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  218. package/dist/browser/queryExecutionContext/documentProducer.js +34 -21
  219. package/dist/browser/queryExecutionContext/documentProducer.js.map +1 -1
  220. package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  221. package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  222. package/dist/browser/queryExecutionContext/orderByComparator.js +1 -0
  223. package/dist/browser/queryExecutionContext/orderByComparator.js.map +1 -1
  224. package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  225. package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  226. package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  227. package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  228. package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  229. package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  230. package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  231. package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  232. package/dist/browser/queryIterator.js +41 -33
  233. package/dist/browser/queryIterator.js.map +1 -1
  234. package/dist/browser/queryMetrics/clientSideMetrics.js +2 -1
  235. package/dist/browser/queryMetrics/clientSideMetrics.js.map +1 -1
  236. package/dist/browser/queryMetrics/queryMetrics.js +14 -1
  237. package/dist/browser/queryMetrics/queryMetrics.js.map +1 -1
  238. package/dist/browser/queryMetrics/queryPreparationTime.js +5 -1
  239. package/dist/browser/queryMetrics/queryPreparationTime.js.map +1 -1
  240. package/dist/browser/queryMetrics/runtimeExecutionTimes.js +4 -1
  241. package/dist/browser/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  242. package/dist/browser/queryMetrics/timeSpan.js +4 -3
  243. package/dist/browser/queryMetrics/timeSpan.js.map +1 -1
  244. package/dist/browser/request/ErrorResponse.js +19 -0
  245. package/dist/browser/request/ErrorResponse.js.map +1 -1
  246. package/dist/browser/request/FeedResponse.js +4 -0
  247. package/dist/browser/request/FeedResponse.js.map +1 -1
  248. package/dist/browser/request/RequestHandler.js +1 -2
  249. package/dist/browser/request/RequestHandler.js.map +1 -1
  250. package/dist/browser/request/ResourceResponse.js +5 -0
  251. package/dist/browser/request/ResourceResponse.js.map +1 -1
  252. package/dist/browser/request/TimeoutError.js +1 -1
  253. package/dist/browser/request/TimeoutError.js.map +1 -1
  254. package/dist/browser/request/hybridSearchQueryResult.js +5 -0
  255. package/dist/browser/request/hybridSearchQueryResult.js.map +1 -1
  256. package/dist/browser/request/request.js +5 -1
  257. package/dist/browser/request/request.js.map +1 -1
  258. package/dist/browser/retry/bulkExecutionRetryPolicy.js +5 -2
  259. package/dist/browser/retry/bulkExecutionRetryPolicy.js.map +1 -1
  260. package/dist/browser/retry/defaultRetryPolicy.d.ts.map +1 -1
  261. package/dist/browser/retry/defaultRetryPolicy.js +7 -7
  262. package/dist/browser/retry/defaultRetryPolicy.js.map +1 -1
  263. package/dist/browser/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
  264. package/dist/browser/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
  265. package/dist/browser/retry/endpointDiscoveryRetryPolicy.js +24 -7
  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.d.ts.map +1 -1
  270. package/dist/browser/retry/retryUtility.js +5 -5
  271. package/dist/browser/retry/retryUtility.js.map +1 -1
  272. package/dist/browser/retry/sessionRetryPolicy.js +8 -4
  273. package/dist/browser/retry/sessionRetryPolicy.js.map +1 -1
  274. package/dist/browser/retry/timeoutFailoverRetryPolicy.js +14 -4
  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/commonjs/ChangeFeedIterator.js +17 -11
  297. package/dist/commonjs/ChangeFeedIterator.js.map +1 -1
  298. package/dist/commonjs/ChangeFeedResponse.js +8 -0
  299. package/dist/commonjs/ChangeFeedResponse.js.map +1 -1
  300. package/dist/commonjs/ClientContext.js +122 -29
  301. package/dist/commonjs/ClientContext.js.map +1 -1
  302. package/dist/commonjs/CosmosClient.js +34 -3
  303. package/dist/commonjs/CosmosClient.js.map +1 -1
  304. package/dist/commonjs/CosmosDiagnostics.js +3 -0
  305. package/dist/commonjs/CosmosDiagnostics.js.map +1 -1
  306. package/dist/commonjs/PartitionKeyRangeFailoverInfo.js +8 -5
  307. package/dist/commonjs/PartitionKeyRangeFailoverInfo.js.map +1 -1
  308. package/dist/commonjs/bulk/Batcher.js +13 -3
  309. package/dist/commonjs/bulk/Batcher.js.map +1 -1
  310. package/dist/commonjs/bulk/BulkHelper.js +26 -11
  311. package/dist/commonjs/bulk/BulkHelper.js.map +1 -1
  312. package/dist/commonjs/bulk/BulkResponse.js +22 -20
  313. package/dist/commonjs/bulk/BulkResponse.js.map +1 -1
  314. package/dist/commonjs/bulk/CongestionAlgorithm.js +11 -4
  315. package/dist/commonjs/bulk/CongestionAlgorithm.js.map +1 -1
  316. package/dist/commonjs/bulk/HelperPerPartition.js +14 -1
  317. package/dist/commonjs/bulk/HelperPerPartition.js.map +1 -1
  318. package/dist/commonjs/bulk/ItemOperationContext.js +4 -0
  319. package/dist/commonjs/bulk/ItemOperationContext.js.map +1 -1
  320. package/dist/commonjs/bulk/Limiter.js +27 -18
  321. package/dist/commonjs/bulk/Limiter.js.map +1 -1
  322. package/dist/commonjs/bulk/PartitionMetric.js +4 -0
  323. package/dist/commonjs/bulk/PartitionMetric.js.map +1 -1
  324. package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  325. package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  326. package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
  327. package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  328. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  329. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  330. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  331. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  332. package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  333. package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  334. package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js +20 -0
  335. package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  336. package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  337. package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  338. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  339. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  340. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  341. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  342. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  343. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  344. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  345. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  346. package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  347. package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  348. package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  349. package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  350. package/dist/commonjs/client/ChangeFeed/FeedRange.js +8 -0
  351. package/dist/commonjs/client/ChangeFeed/FeedRange.js.map +1 -1
  352. package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js +1 -0
  353. package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  354. package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js +5 -5
  355. package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  356. package/dist/commonjs/client/ClientUtils.js +1 -1
  357. package/dist/commonjs/client/ClientUtils.js.map +1 -1
  358. package/dist/commonjs/client/Conflict/Conflict.js +4 -0
  359. package/dist/commonjs/client/Conflict/Conflict.js.map +1 -1
  360. package/dist/commonjs/client/Conflict/ConflictResponse.js +2 -0
  361. package/dist/commonjs/client/Conflict/ConflictResponse.js.map +1 -1
  362. package/dist/commonjs/client/Conflict/Conflicts.js +2 -0
  363. package/dist/commonjs/client/Conflict/Conflicts.js.map +1 -1
  364. package/dist/commonjs/client/Container/Container.js +18 -3
  365. package/dist/commonjs/client/Container/Container.js.map +1 -1
  366. package/dist/commonjs/client/Container/ContainerResponse.js +2 -0
  367. package/dist/commonjs/client/Container/ContainerResponse.js.map +1 -1
  368. package/dist/commonjs/client/Container/Containers.js +4 -2
  369. package/dist/commonjs/client/Container/Containers.js.map +1 -1
  370. package/dist/commonjs/client/Database/Database.js +33 -0
  371. package/dist/commonjs/client/Database/Database.js.map +1 -1
  372. package/dist/commonjs/client/Database/DatabaseResponse.js +2 -0
  373. package/dist/commonjs/client/Database/DatabaseResponse.js.map +1 -1
  374. package/dist/commonjs/client/Database/Databases.js +3 -0
  375. package/dist/commonjs/client/Database/Databases.js.map +1 -1
  376. package/dist/commonjs/client/Item/Item.js +4 -0
  377. package/dist/commonjs/client/Item/Item.js.map +1 -1
  378. package/dist/commonjs/client/Item/ItemResponse.js +2 -0
  379. package/dist/commonjs/client/Item/ItemResponse.js.map +1 -1
  380. package/dist/commonjs/client/Item/Items.js +3 -0
  381. package/dist/commonjs/client/Item/Items.js.map +1 -1
  382. package/dist/commonjs/client/Offer/Offer.js +3 -0
  383. package/dist/commonjs/client/Offer/Offer.js.map +1 -1
  384. package/dist/commonjs/client/Offer/OfferResponse.js +2 -0
  385. package/dist/commonjs/client/Offer/OfferResponse.js.map +1 -1
  386. package/dist/commonjs/client/Offer/Offers.js +2 -0
  387. package/dist/commonjs/client/Offer/Offers.js.map +1 -1
  388. package/dist/commonjs/client/Permission/Permission.js +3 -0
  389. package/dist/commonjs/client/Permission/Permission.js.map +1 -1
  390. package/dist/commonjs/client/Permission/PermissionResponse.js +2 -0
  391. package/dist/commonjs/client/Permission/PermissionResponse.js.map +1 -1
  392. package/dist/commonjs/client/Permission/Permissions.js +2 -0
  393. package/dist/commonjs/client/Permission/Permissions.js.map +1 -1
  394. package/dist/commonjs/client/SasToken/SasTokenProperties.js +17 -0
  395. package/dist/commonjs/client/SasToken/SasTokenProperties.js.map +1 -1
  396. package/dist/commonjs/client/Script/Scripts.js +5 -0
  397. package/dist/commonjs/client/Script/Scripts.js.map +1 -1
  398. package/dist/commonjs/client/StoredProcedure/StoredProcedure.js +3 -0
  399. package/dist/commonjs/client/StoredProcedure/StoredProcedure.js.map +1 -1
  400. package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  401. package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  402. package/dist/commonjs/client/StoredProcedure/StoredProcedures.js +2 -0
  403. package/dist/commonjs/client/StoredProcedure/StoredProcedures.js.map +1 -1
  404. package/dist/commonjs/client/Trigger/Trigger.js +3 -0
  405. package/dist/commonjs/client/Trigger/Trigger.js.map +1 -1
  406. package/dist/commonjs/client/Trigger/TriggerResponse.js +2 -0
  407. package/dist/commonjs/client/Trigger/TriggerResponse.js.map +1 -1
  408. package/dist/commonjs/client/Trigger/Triggers.js +2 -0
  409. package/dist/commonjs/client/Trigger/Triggers.js.map +1 -1
  410. package/dist/commonjs/client/User/User.js +9 -0
  411. package/dist/commonjs/client/User/User.js.map +1 -1
  412. package/dist/commonjs/client/User/UserResponse.js +2 -0
  413. package/dist/commonjs/client/User/UserResponse.js.map +1 -1
  414. package/dist/commonjs/client/User/Users.js +2 -0
  415. package/dist/commonjs/client/User/Users.js.map +1 -1
  416. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  417. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  418. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  419. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  420. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  421. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  422. package/dist/commonjs/common/constants.js +1 -1
  423. package/dist/commonjs/common/constants.js.map +1 -1
  424. package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js +8 -7
  425. package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  426. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js +26 -7
  427. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  428. package/dist/commonjs/diagnostics/DiagnosticWriter.js +1 -3
  429. package/dist/commonjs/diagnostics/DiagnosticWriter.js.map +1 -1
  430. package/dist/commonjs/diagnostics/index.js +2 -2
  431. package/dist/commonjs/diagnostics/index.js.map +1 -1
  432. package/dist/commonjs/documents/DatabaseAccount.js +20 -4
  433. package/dist/commonjs/documents/DatabaseAccount.js.map +1 -1
  434. package/dist/commonjs/documents/PartitionKey.js +1 -3
  435. package/dist/commonjs/documents/PartitionKey.js.map +1 -1
  436. package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
  437. package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
  438. package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  439. package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  440. package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js +2 -0
  441. package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  442. package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  443. package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  444. package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
  445. package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
  446. package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  447. package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  448. package/dist/commonjs/encryption/EncryptionItemQueryIterator.js +24 -27
  449. package/dist/commonjs/encryption/EncryptionItemQueryIterator.js.map +1 -1
  450. package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
  451. package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
  452. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  453. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  454. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  455. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  456. package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  457. package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  458. package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js +8 -1
  459. package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  460. package/dist/commonjs/encryption/EncryptionManager.js +6 -0
  461. package/dist/commonjs/encryption/EncryptionManager.js.map +1 -1
  462. package/dist/commonjs/encryption/EncryptionProcessor.js +5 -0
  463. package/dist/commonjs/encryption/EncryptionProcessor.js.map +1 -1
  464. package/dist/commonjs/encryption/EncryptionQueryBuilder.js +2 -0
  465. package/dist/commonjs/encryption/EncryptionQueryBuilder.js.map +1 -1
  466. package/dist/commonjs/encryption/EncryptionSettingForProperty.js +6 -0
  467. package/dist/commonjs/encryption/EncryptionSettingForProperty.js.map +1 -1
  468. package/dist/commonjs/encryption/EncryptionSettings.js +6 -3
  469. package/dist/commonjs/encryption/EncryptionSettings.js.map +1 -1
  470. package/dist/commonjs/encryption/KeyEncryptionKey.js +4 -0
  471. package/dist/commonjs/encryption/KeyEncryptionKey.js.map +1 -1
  472. package/dist/commonjs/encryption/Serializers/StringSerializer.js +1 -1
  473. package/dist/commonjs/encryption/Serializers/StringSerializer.js.map +1 -1
  474. package/dist/commonjs/extractPartitionKey.js +2 -2
  475. package/dist/commonjs/extractPartitionKey.js.map +1 -1
  476. package/dist/commonjs/globalEndpointManager.d.ts.map +1 -1
  477. package/dist/commonjs/globalEndpointManager.js +36 -23
  478. package/dist/commonjs/globalEndpointManager.js.map +1 -1
  479. package/dist/commonjs/globalPartitionEndpointManager.js +8 -0
  480. package/dist/commonjs/globalPartitionEndpointManager.js.map +1 -1
  481. package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  482. package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  483. package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  484. package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  485. package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  486. package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  487. package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  488. package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  489. package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  490. package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  491. package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  492. package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  493. package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  494. package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  495. package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  496. package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  497. package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  498. package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  499. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  500. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  501. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  502. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  503. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  504. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  505. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  506. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  507. package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  508. package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  509. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  510. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  511. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  512. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  513. package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  514. package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  515. package/dist/commonjs/queryExecutionContext/FetchResult.js +4 -0
  516. package/dist/commonjs/queryExecutionContext/FetchResult.js.map +1 -1
  517. package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  518. package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  519. package/dist/commonjs/queryExecutionContext/documentProducer.js +34 -21
  520. package/dist/commonjs/queryExecutionContext/documentProducer.js.map +1 -1
  521. package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  522. package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  523. package/dist/commonjs/queryExecutionContext/orderByComparator.js +1 -0
  524. package/dist/commonjs/queryExecutionContext/orderByComparator.js.map +1 -1
  525. package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  526. package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  527. package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  528. package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  529. package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  530. package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  531. package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  532. package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  533. package/dist/commonjs/queryIterator.js +41 -33
  534. package/dist/commonjs/queryIterator.js.map +1 -1
  535. package/dist/commonjs/queryMetrics/clientSideMetrics.js +2 -1
  536. package/dist/commonjs/queryMetrics/clientSideMetrics.js.map +1 -1
  537. package/dist/commonjs/queryMetrics/queryMetrics.js +14 -1
  538. package/dist/commonjs/queryMetrics/queryMetrics.js.map +1 -1
  539. package/dist/commonjs/queryMetrics/queryPreparationTime.js +5 -1
  540. package/dist/commonjs/queryMetrics/queryPreparationTime.js.map +1 -1
  541. package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js +4 -1
  542. package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  543. package/dist/commonjs/queryMetrics/timeSpan.js +4 -3
  544. package/dist/commonjs/queryMetrics/timeSpan.js.map +1 -1
  545. package/dist/commonjs/request/ErrorResponse.js +19 -0
  546. package/dist/commonjs/request/ErrorResponse.js.map +1 -1
  547. package/dist/commonjs/request/FeedResponse.js +4 -0
  548. package/dist/commonjs/request/FeedResponse.js.map +1 -1
  549. package/dist/commonjs/request/RequestHandler.js +1 -2
  550. package/dist/commonjs/request/RequestHandler.js.map +1 -1
  551. package/dist/commonjs/request/ResourceResponse.js +5 -0
  552. package/dist/commonjs/request/ResourceResponse.js.map +1 -1
  553. package/dist/commonjs/request/TimeoutError.js +1 -1
  554. package/dist/commonjs/request/TimeoutError.js.map +1 -1
  555. package/dist/commonjs/request/hybridSearchQueryResult.js +5 -0
  556. package/dist/commonjs/request/hybridSearchQueryResult.js.map +1 -1
  557. package/dist/commonjs/request/request.js +5 -1
  558. package/dist/commonjs/request/request.js.map +1 -1
  559. package/dist/commonjs/retry/bulkExecutionRetryPolicy.js +5 -2
  560. package/dist/commonjs/retry/bulkExecutionRetryPolicy.js.map +1 -1
  561. package/dist/commonjs/retry/defaultRetryPolicy.d.ts.map +1 -1
  562. package/dist/commonjs/retry/defaultRetryPolicy.js +6 -6
  563. package/dist/commonjs/retry/defaultRetryPolicy.js.map +1 -1
  564. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
  565. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
  566. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js +24 -7
  567. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  568. package/dist/commonjs/retry/resourceThrottleRetryPolicy.js +20 -10
  569. package/dist/commonjs/retry/resourceThrottleRetryPolicy.js.map +1 -1
  570. package/dist/commonjs/retry/retryUtility.d.ts.map +1 -1
  571. package/dist/commonjs/retry/retryUtility.js +5 -5
  572. package/dist/commonjs/retry/retryUtility.js.map +1 -1
  573. package/dist/commonjs/retry/sessionRetryPolicy.js +8 -4
  574. package/dist/commonjs/retry/sessionRetryPolicy.js.map +1 -1
  575. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js +14 -4
  576. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  577. package/dist/commonjs/routing/QueryRange.js +4 -0
  578. package/dist/commonjs/routing/QueryRange.js.map +1 -1
  579. package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js +4 -0
  580. package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  581. package/dist/commonjs/routing/partitionKeyRangeCache.js +2 -0
  582. package/dist/commonjs/routing/partitionKeyRangeCache.js.map +1 -1
  583. package/dist/commonjs/routing/smartRoutingMapProvider.js +1 -0
  584. package/dist/commonjs/routing/smartRoutingMapProvider.js.map +1 -1
  585. package/dist/commonjs/session/VectorSessionToken.js +6 -2
  586. package/dist/commonjs/session/VectorSessionToken.js.map +1 -1
  587. package/dist/commonjs/session/sessionContainer.js +5 -3
  588. package/dist/commonjs/session/sessionContainer.js.map +1 -1
  589. package/dist/commonjs/tsdoc-metadata.json +1 -1
  590. package/dist/commonjs/utils/batch.js +15 -4
  591. package/dist/commonjs/utils/batch.js.map +1 -1
  592. package/dist/commonjs/utils/fixedSizePriorityQueue.js +4 -0
  593. package/dist/commonjs/utils/fixedSizePriorityQueue.js.map +1 -1
  594. package/dist/commonjs/utils/hashing/hash.js +1 -1
  595. package/dist/commonjs/utils/hashing/hash.js.map +1 -1
  596. package/dist/commonjs/utils/nonStreamingOrderByMap.js +2 -0
  597. package/dist/commonjs/utils/nonStreamingOrderByMap.js.map +1 -1
  598. package/dist/esm/ChangeFeedIterator.js +17 -11
  599. package/dist/esm/ChangeFeedIterator.js.map +1 -1
  600. package/dist/esm/ChangeFeedResponse.js +8 -0
  601. package/dist/esm/ChangeFeedResponse.js.map +1 -1
  602. package/dist/esm/ClientContext.js +122 -29
  603. package/dist/esm/ClientContext.js.map +1 -1
  604. package/dist/esm/CosmosClient.js +34 -3
  605. package/dist/esm/CosmosClient.js.map +1 -1
  606. package/dist/esm/CosmosDiagnostics.js +3 -0
  607. package/dist/esm/CosmosDiagnostics.js.map +1 -1
  608. package/dist/esm/PartitionKeyRangeFailoverInfo.js +8 -5
  609. package/dist/esm/PartitionKeyRangeFailoverInfo.js.map +1 -1
  610. package/dist/esm/bulk/Batcher.js +13 -3
  611. package/dist/esm/bulk/Batcher.js.map +1 -1
  612. package/dist/esm/bulk/BulkHelper.js +26 -11
  613. package/dist/esm/bulk/BulkHelper.js.map +1 -1
  614. package/dist/esm/bulk/BulkResponse.js +22 -20
  615. package/dist/esm/bulk/BulkResponse.js.map +1 -1
  616. package/dist/esm/bulk/CongestionAlgorithm.js +11 -4
  617. package/dist/esm/bulk/CongestionAlgorithm.js.map +1 -1
  618. package/dist/esm/bulk/HelperPerPartition.js +14 -1
  619. package/dist/esm/bulk/HelperPerPartition.js.map +1 -1
  620. package/dist/esm/bulk/ItemOperationContext.js +4 -0
  621. package/dist/esm/bulk/ItemOperationContext.js.map +1 -1
  622. package/dist/esm/bulk/Limiter.js +27 -18
  623. package/dist/esm/bulk/Limiter.js.map +1 -1
  624. package/dist/esm/bulk/PartitionMetric.js +4 -0
  625. package/dist/esm/bulk/PartitionMetric.js.map +1 -1
  626. package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  627. package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  628. package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
  629. package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  630. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  631. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  632. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  633. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  634. package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  635. package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  636. package/dist/esm/client/ChangeFeed/ChangeFeedRange.js +20 -0
  637. package/dist/esm/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  638. package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  639. package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  640. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  641. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  642. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  643. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  644. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  645. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  646. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  647. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  648. package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  649. package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  650. package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  651. package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  652. package/dist/esm/client/ChangeFeed/FeedRange.js +8 -0
  653. package/dist/esm/client/ChangeFeed/FeedRange.js.map +1 -1
  654. package/dist/esm/client/ChangeFeed/FeedRangeQueue.js +1 -0
  655. package/dist/esm/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  656. package/dist/esm/client/ChangeFeed/changeFeedUtils.js +5 -5
  657. package/dist/esm/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  658. package/dist/esm/client/ClientUtils.js +1 -1
  659. package/dist/esm/client/ClientUtils.js.map +1 -1
  660. package/dist/esm/client/Conflict/Conflict.js +4 -0
  661. package/dist/esm/client/Conflict/Conflict.js.map +1 -1
  662. package/dist/esm/client/Conflict/ConflictResponse.js +2 -0
  663. package/dist/esm/client/Conflict/ConflictResponse.js.map +1 -1
  664. package/dist/esm/client/Conflict/Conflicts.js +2 -0
  665. package/dist/esm/client/Conflict/Conflicts.js.map +1 -1
  666. package/dist/esm/client/Container/Container.js +18 -3
  667. package/dist/esm/client/Container/Container.js.map +1 -1
  668. package/dist/esm/client/Container/ContainerResponse.js +2 -0
  669. package/dist/esm/client/Container/ContainerResponse.js.map +1 -1
  670. package/dist/esm/client/Container/Containers.js +4 -2
  671. package/dist/esm/client/Container/Containers.js.map +1 -1
  672. package/dist/esm/client/Database/Database.js +33 -0
  673. package/dist/esm/client/Database/Database.js.map +1 -1
  674. package/dist/esm/client/Database/DatabaseResponse.js +2 -0
  675. package/dist/esm/client/Database/DatabaseResponse.js.map +1 -1
  676. package/dist/esm/client/Database/Databases.js +3 -0
  677. package/dist/esm/client/Database/Databases.js.map +1 -1
  678. package/dist/esm/client/Item/Item.js +4 -0
  679. package/dist/esm/client/Item/Item.js.map +1 -1
  680. package/dist/esm/client/Item/ItemResponse.js +2 -0
  681. package/dist/esm/client/Item/ItemResponse.js.map +1 -1
  682. package/dist/esm/client/Item/Items.js +3 -0
  683. package/dist/esm/client/Item/Items.js.map +1 -1
  684. package/dist/esm/client/Offer/Offer.js +3 -0
  685. package/dist/esm/client/Offer/Offer.js.map +1 -1
  686. package/dist/esm/client/Offer/OfferResponse.js +2 -0
  687. package/dist/esm/client/Offer/OfferResponse.js.map +1 -1
  688. package/dist/esm/client/Offer/Offers.js +2 -0
  689. package/dist/esm/client/Offer/Offers.js.map +1 -1
  690. package/dist/esm/client/Permission/Permission.js +3 -0
  691. package/dist/esm/client/Permission/Permission.js.map +1 -1
  692. package/dist/esm/client/Permission/PermissionResponse.js +2 -0
  693. package/dist/esm/client/Permission/PermissionResponse.js.map +1 -1
  694. package/dist/esm/client/Permission/Permissions.js +2 -0
  695. package/dist/esm/client/Permission/Permissions.js.map +1 -1
  696. package/dist/esm/client/SasToken/SasTokenProperties.js +17 -0
  697. package/dist/esm/client/SasToken/SasTokenProperties.js.map +1 -1
  698. package/dist/esm/client/Script/Scripts.js +5 -0
  699. package/dist/esm/client/Script/Scripts.js.map +1 -1
  700. package/dist/esm/client/StoredProcedure/StoredProcedure.js +3 -0
  701. package/dist/esm/client/StoredProcedure/StoredProcedure.js.map +1 -1
  702. package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  703. package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  704. package/dist/esm/client/StoredProcedure/StoredProcedures.js +2 -0
  705. package/dist/esm/client/StoredProcedure/StoredProcedures.js.map +1 -1
  706. package/dist/esm/client/Trigger/Trigger.js +3 -0
  707. package/dist/esm/client/Trigger/Trigger.js.map +1 -1
  708. package/dist/esm/client/Trigger/TriggerResponse.js +2 -0
  709. package/dist/esm/client/Trigger/TriggerResponse.js.map +1 -1
  710. package/dist/esm/client/Trigger/Triggers.js +2 -0
  711. package/dist/esm/client/Trigger/Triggers.js.map +1 -1
  712. package/dist/esm/client/User/User.js +9 -0
  713. package/dist/esm/client/User/User.js.map +1 -1
  714. package/dist/esm/client/User/UserResponse.js +2 -0
  715. package/dist/esm/client/User/UserResponse.js.map +1 -1
  716. package/dist/esm/client/User/Users.js +2 -0
  717. package/dist/esm/client/User/Users.js.map +1 -1
  718. package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  719. package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  720. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  721. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  722. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  723. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  724. package/dist/esm/common/constants.js +1 -1
  725. package/dist/esm/common/constants.js.map +1 -1
  726. package/dist/esm/diagnostics/CosmosDiagnosticsContext.js +8 -7
  727. package/dist/esm/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  728. package/dist/esm/diagnostics/DiagnosticNodeInternal.js +26 -7
  729. package/dist/esm/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  730. package/dist/esm/diagnostics/DiagnosticWriter.js +1 -3
  731. package/dist/esm/diagnostics/DiagnosticWriter.js.map +1 -1
  732. package/dist/esm/diagnostics/index.js +2 -2
  733. package/dist/esm/diagnostics/index.js.map +1 -1
  734. package/dist/esm/documents/DatabaseAccount.js +20 -4
  735. package/dist/esm/documents/DatabaseAccount.js.map +1 -1
  736. package/dist/esm/documents/PartitionKey.js +1 -3
  737. package/dist/esm/documents/PartitionKey.js.map +1 -1
  738. package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
  739. package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
  740. package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  741. package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  742. package/dist/esm/encryption/Cache/EncryptionSettingsCache.js +2 -0
  743. package/dist/esm/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  744. package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  745. package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  746. package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
  747. package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
  748. package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  749. package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  750. package/dist/esm/encryption/EncryptionItemQueryIterator.js +24 -27
  751. package/dist/esm/encryption/EncryptionItemQueryIterator.js.map +1 -1
  752. package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
  753. package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
  754. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  755. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  756. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  757. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  758. package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  759. package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  760. package/dist/esm/encryption/EncryptionKeyStoreProvider.js +8 -1
  761. package/dist/esm/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  762. package/dist/esm/encryption/EncryptionManager.js +6 -0
  763. package/dist/esm/encryption/EncryptionManager.js.map +1 -1
  764. package/dist/esm/encryption/EncryptionProcessor.js +5 -0
  765. package/dist/esm/encryption/EncryptionProcessor.js.map +1 -1
  766. package/dist/esm/encryption/EncryptionQueryBuilder.js +2 -0
  767. package/dist/esm/encryption/EncryptionQueryBuilder.js.map +1 -1
  768. package/dist/esm/encryption/EncryptionSettingForProperty.js +6 -0
  769. package/dist/esm/encryption/EncryptionSettingForProperty.js.map +1 -1
  770. package/dist/esm/encryption/EncryptionSettings.js +6 -3
  771. package/dist/esm/encryption/EncryptionSettings.js.map +1 -1
  772. package/dist/esm/encryption/KeyEncryptionKey.js +4 -0
  773. package/dist/esm/encryption/KeyEncryptionKey.js.map +1 -1
  774. package/dist/esm/encryption/Serializers/StringSerializer.js +1 -1
  775. package/dist/esm/encryption/Serializers/StringSerializer.js.map +1 -1
  776. package/dist/esm/extractPartitionKey.js +2 -2
  777. package/dist/esm/extractPartitionKey.js.map +1 -1
  778. package/dist/esm/globalEndpointManager.d.ts.map +1 -1
  779. package/dist/esm/globalEndpointManager.js +36 -23
  780. package/dist/esm/globalEndpointManager.js.map +1 -1
  781. package/dist/esm/globalPartitionEndpointManager.js +8 -0
  782. package/dist/esm/globalPartitionEndpointManager.js.map +1 -1
  783. package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  784. package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  785. package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  786. package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  787. package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  788. package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  789. package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  790. package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  791. package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  792. package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  793. package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  794. package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  795. package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  796. package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  797. package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  798. package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  799. package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  800. package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  801. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  802. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  803. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  804. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  805. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  806. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  807. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  808. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  809. package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  810. package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  811. package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  812. package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  813. package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  814. package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  815. package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  816. package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  817. package/dist/esm/queryExecutionContext/FetchResult.js +4 -0
  818. package/dist/esm/queryExecutionContext/FetchResult.js.map +1 -1
  819. package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  820. package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  821. package/dist/esm/queryExecutionContext/documentProducer.js +34 -21
  822. package/dist/esm/queryExecutionContext/documentProducer.js.map +1 -1
  823. package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  824. package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  825. package/dist/esm/queryExecutionContext/orderByComparator.js +1 -0
  826. package/dist/esm/queryExecutionContext/orderByComparator.js.map +1 -1
  827. package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  828. package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  829. package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  830. package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  831. package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  832. package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  833. package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  834. package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  835. package/dist/esm/queryIterator.js +41 -33
  836. package/dist/esm/queryIterator.js.map +1 -1
  837. package/dist/esm/queryMetrics/clientSideMetrics.js +2 -1
  838. package/dist/esm/queryMetrics/clientSideMetrics.js.map +1 -1
  839. package/dist/esm/queryMetrics/queryMetrics.js +14 -1
  840. package/dist/esm/queryMetrics/queryMetrics.js.map +1 -1
  841. package/dist/esm/queryMetrics/queryPreparationTime.js +5 -1
  842. package/dist/esm/queryMetrics/queryPreparationTime.js.map +1 -1
  843. package/dist/esm/queryMetrics/runtimeExecutionTimes.js +4 -1
  844. package/dist/esm/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  845. package/dist/esm/queryMetrics/timeSpan.js +4 -3
  846. package/dist/esm/queryMetrics/timeSpan.js.map +1 -1
  847. package/dist/esm/request/ErrorResponse.js +19 -0
  848. package/dist/esm/request/ErrorResponse.js.map +1 -1
  849. package/dist/esm/request/FeedResponse.js +4 -0
  850. package/dist/esm/request/FeedResponse.js.map +1 -1
  851. package/dist/esm/request/RequestHandler.js +1 -2
  852. package/dist/esm/request/RequestHandler.js.map +1 -1
  853. package/dist/esm/request/ResourceResponse.js +5 -0
  854. package/dist/esm/request/ResourceResponse.js.map +1 -1
  855. package/dist/esm/request/TimeoutError.js +1 -1
  856. package/dist/esm/request/TimeoutError.js.map +1 -1
  857. package/dist/esm/request/hybridSearchQueryResult.js +5 -0
  858. package/dist/esm/request/hybridSearchQueryResult.js.map +1 -1
  859. package/dist/esm/request/request.js +5 -1
  860. package/dist/esm/request/request.js.map +1 -1
  861. package/dist/esm/retry/bulkExecutionRetryPolicy.js +5 -2
  862. package/dist/esm/retry/bulkExecutionRetryPolicy.js.map +1 -1
  863. package/dist/esm/retry/defaultRetryPolicy.d.ts.map +1 -1
  864. package/dist/esm/retry/defaultRetryPolicy.js +7 -7
  865. package/dist/esm/retry/defaultRetryPolicy.js.map +1 -1
  866. package/dist/esm/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
  867. package/dist/esm/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
  868. package/dist/esm/retry/endpointDiscoveryRetryPolicy.js +24 -7
  869. package/dist/esm/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  870. package/dist/esm/retry/resourceThrottleRetryPolicy.js +20 -10
  871. package/dist/esm/retry/resourceThrottleRetryPolicy.js.map +1 -1
  872. package/dist/esm/retry/retryUtility.d.ts.map +1 -1
  873. package/dist/esm/retry/retryUtility.js +5 -5
  874. package/dist/esm/retry/retryUtility.js.map +1 -1
  875. package/dist/esm/retry/sessionRetryPolicy.js +8 -4
  876. package/dist/esm/retry/sessionRetryPolicy.js.map +1 -1
  877. package/dist/esm/retry/timeoutFailoverRetryPolicy.js +14 -4
  878. package/dist/esm/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  879. package/dist/esm/routing/QueryRange.js +4 -0
  880. package/dist/esm/routing/QueryRange.js.map +1 -1
  881. package/dist/esm/routing/inMemoryCollectionRoutingMap.js +4 -0
  882. package/dist/esm/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  883. package/dist/esm/routing/partitionKeyRangeCache.js +2 -0
  884. package/dist/esm/routing/partitionKeyRangeCache.js.map +1 -1
  885. package/dist/esm/routing/smartRoutingMapProvider.js +1 -0
  886. package/dist/esm/routing/smartRoutingMapProvider.js.map +1 -1
  887. package/dist/esm/session/VectorSessionToken.js +6 -2
  888. package/dist/esm/session/VectorSessionToken.js.map +1 -1
  889. package/dist/esm/session/sessionContainer.js +5 -3
  890. package/dist/esm/session/sessionContainer.js.map +1 -1
  891. package/dist/esm/utils/batch.js +15 -4
  892. package/dist/esm/utils/batch.js.map +1 -1
  893. package/dist/esm/utils/fixedSizePriorityQueue.js +4 -0
  894. package/dist/esm/utils/fixedSizePriorityQueue.js.map +1 -1
  895. package/dist/esm/utils/hashing/hash.js +1 -1
  896. package/dist/esm/utils/hashing/hash.js.map +1 -1
  897. package/dist/esm/utils/nonStreamingOrderByMap.js +2 -0
  898. package/dist/esm/utils/nonStreamingOrderByMap.js.map +1 -1
  899. package/dist/react-native/ChangeFeedIterator.js +17 -11
  900. package/dist/react-native/ChangeFeedIterator.js.map +1 -1
  901. package/dist/react-native/ChangeFeedResponse.js +8 -0
  902. package/dist/react-native/ChangeFeedResponse.js.map +1 -1
  903. package/dist/react-native/ClientContext.js +122 -29
  904. package/dist/react-native/ClientContext.js.map +1 -1
  905. package/dist/react-native/CosmosClient.js +34 -3
  906. package/dist/react-native/CosmosClient.js.map +1 -1
  907. package/dist/react-native/CosmosDiagnostics.js +3 -0
  908. package/dist/react-native/CosmosDiagnostics.js.map +1 -1
  909. package/dist/react-native/PartitionKeyRangeFailoverInfo.js +8 -5
  910. package/dist/react-native/PartitionKeyRangeFailoverInfo.js.map +1 -1
  911. package/dist/react-native/bulk/Batcher.js +13 -3
  912. package/dist/react-native/bulk/Batcher.js.map +1 -1
  913. package/dist/react-native/bulk/BulkHelper.js +26 -11
  914. package/dist/react-native/bulk/BulkHelper.js.map +1 -1
  915. package/dist/react-native/bulk/BulkResponse.js +22 -20
  916. package/dist/react-native/bulk/BulkResponse.js.map +1 -1
  917. package/dist/react-native/bulk/CongestionAlgorithm.js +11 -4
  918. package/dist/react-native/bulk/CongestionAlgorithm.js.map +1 -1
  919. package/dist/react-native/bulk/HelperPerPartition.js +14 -1
  920. package/dist/react-native/bulk/HelperPerPartition.js.map +1 -1
  921. package/dist/react-native/bulk/ItemOperationContext.js +4 -0
  922. package/dist/react-native/bulk/ItemOperationContext.js.map +1 -1
  923. package/dist/react-native/bulk/Limiter.js +27 -18
  924. package/dist/react-native/bulk/Limiter.js.map +1 -1
  925. package/dist/react-native/bulk/PartitionMetric.js +4 -0
  926. package/dist/react-native/bulk/PartitionMetric.js.map +1 -1
  927. package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  928. package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  929. package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
  930. package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  931. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  932. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  933. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  934. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  935. package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  936. package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  937. package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js +20 -0
  938. package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  939. package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  940. package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  941. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  942. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  943. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  944. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  945. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  946. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  947. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  948. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  949. package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  950. package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  951. package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  952. package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  953. package/dist/react-native/client/ChangeFeed/FeedRange.js +8 -0
  954. package/dist/react-native/client/ChangeFeed/FeedRange.js.map +1 -1
  955. package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js +1 -0
  956. package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  957. package/dist/react-native/client/ChangeFeed/changeFeedUtils.js +5 -5
  958. package/dist/react-native/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  959. package/dist/react-native/client/ClientUtils.js +1 -1
  960. package/dist/react-native/client/ClientUtils.js.map +1 -1
  961. package/dist/react-native/client/Conflict/Conflict.js +4 -0
  962. package/dist/react-native/client/Conflict/Conflict.js.map +1 -1
  963. package/dist/react-native/client/Conflict/ConflictResponse.js +2 -0
  964. package/dist/react-native/client/Conflict/ConflictResponse.js.map +1 -1
  965. package/dist/react-native/client/Conflict/Conflicts.js +2 -0
  966. package/dist/react-native/client/Conflict/Conflicts.js.map +1 -1
  967. package/dist/react-native/client/Container/Container.js +18 -3
  968. package/dist/react-native/client/Container/Container.js.map +1 -1
  969. package/dist/react-native/client/Container/ContainerResponse.js +2 -0
  970. package/dist/react-native/client/Container/ContainerResponse.js.map +1 -1
  971. package/dist/react-native/client/Container/Containers.js +4 -2
  972. package/dist/react-native/client/Container/Containers.js.map +1 -1
  973. package/dist/react-native/client/Database/Database.js +33 -0
  974. package/dist/react-native/client/Database/Database.js.map +1 -1
  975. package/dist/react-native/client/Database/DatabaseResponse.js +2 -0
  976. package/dist/react-native/client/Database/DatabaseResponse.js.map +1 -1
  977. package/dist/react-native/client/Database/Databases.js +3 -0
  978. package/dist/react-native/client/Database/Databases.js.map +1 -1
  979. package/dist/react-native/client/Item/Item.js +4 -0
  980. package/dist/react-native/client/Item/Item.js.map +1 -1
  981. package/dist/react-native/client/Item/ItemResponse.js +2 -0
  982. package/dist/react-native/client/Item/ItemResponse.js.map +1 -1
  983. package/dist/react-native/client/Item/Items.js +3 -0
  984. package/dist/react-native/client/Item/Items.js.map +1 -1
  985. package/dist/react-native/client/Offer/Offer.js +3 -0
  986. package/dist/react-native/client/Offer/Offer.js.map +1 -1
  987. package/dist/react-native/client/Offer/OfferResponse.js +2 -0
  988. package/dist/react-native/client/Offer/OfferResponse.js.map +1 -1
  989. package/dist/react-native/client/Offer/Offers.js +2 -0
  990. package/dist/react-native/client/Offer/Offers.js.map +1 -1
  991. package/dist/react-native/client/Permission/Permission.js +3 -0
  992. package/dist/react-native/client/Permission/Permission.js.map +1 -1
  993. package/dist/react-native/client/Permission/PermissionResponse.js +2 -0
  994. package/dist/react-native/client/Permission/PermissionResponse.js.map +1 -1
  995. package/dist/react-native/client/Permission/Permissions.js +2 -0
  996. package/dist/react-native/client/Permission/Permissions.js.map +1 -1
  997. package/dist/react-native/client/SasToken/SasTokenProperties.js +17 -0
  998. package/dist/react-native/client/SasToken/SasTokenProperties.js.map +1 -1
  999. package/dist/react-native/client/Script/Scripts.js +5 -0
  1000. package/dist/react-native/client/Script/Scripts.js.map +1 -1
  1001. package/dist/react-native/client/StoredProcedure/StoredProcedure.js +3 -0
  1002. package/dist/react-native/client/StoredProcedure/StoredProcedure.js.map +1 -1
  1003. package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  1004. package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  1005. package/dist/react-native/client/StoredProcedure/StoredProcedures.js +2 -0
  1006. package/dist/react-native/client/StoredProcedure/StoredProcedures.js.map +1 -1
  1007. package/dist/react-native/client/Trigger/Trigger.js +3 -0
  1008. package/dist/react-native/client/Trigger/Trigger.js.map +1 -1
  1009. package/dist/react-native/client/Trigger/TriggerResponse.js +2 -0
  1010. package/dist/react-native/client/Trigger/TriggerResponse.js.map +1 -1
  1011. package/dist/react-native/client/Trigger/Triggers.js +2 -0
  1012. package/dist/react-native/client/Trigger/Triggers.js.map +1 -1
  1013. package/dist/react-native/client/User/User.js +9 -0
  1014. package/dist/react-native/client/User/User.js.map +1 -1
  1015. package/dist/react-native/client/User/UserResponse.js +2 -0
  1016. package/dist/react-native/client/User/UserResponse.js.map +1 -1
  1017. package/dist/react-native/client/User/Users.js +2 -0
  1018. package/dist/react-native/client/User/Users.js.map +1 -1
  1019. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  1020. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  1021. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  1022. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  1023. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  1024. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  1025. package/dist/react-native/common/constants.js +1 -1
  1026. package/dist/react-native/common/constants.js.map +1 -1
  1027. package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js +8 -7
  1028. package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  1029. package/dist/react-native/diagnostics/DiagnosticNodeInternal.js +26 -7
  1030. package/dist/react-native/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  1031. package/dist/react-native/diagnostics/DiagnosticWriter.js +1 -3
  1032. package/dist/react-native/diagnostics/DiagnosticWriter.js.map +1 -1
  1033. package/dist/react-native/diagnostics/index.js +2 -2
  1034. package/dist/react-native/diagnostics/index.js.map +1 -1
  1035. package/dist/react-native/documents/DatabaseAccount.js +20 -4
  1036. package/dist/react-native/documents/DatabaseAccount.js.map +1 -1
  1037. package/dist/react-native/documents/PartitionKey.js +1 -3
  1038. package/dist/react-native/documents/PartitionKey.js.map +1 -1
  1039. package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
  1040. package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
  1041. package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  1042. package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  1043. package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js +2 -0
  1044. package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  1045. package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  1046. package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  1047. package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
  1048. package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
  1049. package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  1050. package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  1051. package/dist/react-native/encryption/EncryptionItemQueryIterator.js +24 -27
  1052. package/dist/react-native/encryption/EncryptionItemQueryIterator.js.map +1 -1
  1053. package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
  1054. package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
  1055. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  1056. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  1057. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  1058. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  1059. package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  1060. package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  1061. package/dist/react-native/encryption/EncryptionKeyStoreProvider.js +8 -1
  1062. package/dist/react-native/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  1063. package/dist/react-native/encryption/EncryptionManager.js +6 -0
  1064. package/dist/react-native/encryption/EncryptionManager.js.map +1 -1
  1065. package/dist/react-native/encryption/EncryptionProcessor.js +5 -0
  1066. package/dist/react-native/encryption/EncryptionProcessor.js.map +1 -1
  1067. package/dist/react-native/encryption/EncryptionQueryBuilder.js +2 -0
  1068. package/dist/react-native/encryption/EncryptionQueryBuilder.js.map +1 -1
  1069. package/dist/react-native/encryption/EncryptionSettingForProperty.js +6 -0
  1070. package/dist/react-native/encryption/EncryptionSettingForProperty.js.map +1 -1
  1071. package/dist/react-native/encryption/EncryptionSettings.js +6 -3
  1072. package/dist/react-native/encryption/EncryptionSettings.js.map +1 -1
  1073. package/dist/react-native/encryption/KeyEncryptionKey.js +4 -0
  1074. package/dist/react-native/encryption/KeyEncryptionKey.js.map +1 -1
  1075. package/dist/react-native/encryption/Serializers/StringSerializer.js +1 -1
  1076. package/dist/react-native/encryption/Serializers/StringSerializer.js.map +1 -1
  1077. package/dist/react-native/extractPartitionKey.js +2 -2
  1078. package/dist/react-native/extractPartitionKey.js.map +1 -1
  1079. package/dist/react-native/globalEndpointManager.d.ts.map +1 -1
  1080. package/dist/react-native/globalEndpointManager.js +36 -23
  1081. package/dist/react-native/globalEndpointManager.js.map +1 -1
  1082. package/dist/react-native/globalPartitionEndpointManager.js +8 -0
  1083. package/dist/react-native/globalPartitionEndpointManager.js.map +1 -1
  1084. package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  1085. package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  1086. package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  1087. package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  1088. package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  1089. package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  1090. package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  1091. package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  1092. package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  1093. package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  1094. package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  1095. package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  1096. package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  1097. package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  1098. package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  1099. package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  1100. package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  1101. package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  1102. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  1103. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  1104. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  1105. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  1106. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  1107. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  1108. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  1109. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  1110. package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  1111. package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  1112. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  1113. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  1114. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  1115. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  1116. package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  1117. package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  1118. package/dist/react-native/queryExecutionContext/FetchResult.js +4 -0
  1119. package/dist/react-native/queryExecutionContext/FetchResult.js.map +1 -1
  1120. package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  1121. package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  1122. package/dist/react-native/queryExecutionContext/documentProducer.js +34 -21
  1123. package/dist/react-native/queryExecutionContext/documentProducer.js.map +1 -1
  1124. package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  1125. package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  1126. package/dist/react-native/queryExecutionContext/orderByComparator.js +1 -0
  1127. package/dist/react-native/queryExecutionContext/orderByComparator.js.map +1 -1
  1128. package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  1129. package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  1130. package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  1131. package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  1132. package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  1133. package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  1134. package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  1135. package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  1136. package/dist/react-native/queryIterator.js +41 -33
  1137. package/dist/react-native/queryIterator.js.map +1 -1
  1138. package/dist/react-native/queryMetrics/clientSideMetrics.js +2 -1
  1139. package/dist/react-native/queryMetrics/clientSideMetrics.js.map +1 -1
  1140. package/dist/react-native/queryMetrics/queryMetrics.js +14 -1
  1141. package/dist/react-native/queryMetrics/queryMetrics.js.map +1 -1
  1142. package/dist/react-native/queryMetrics/queryPreparationTime.js +5 -1
  1143. package/dist/react-native/queryMetrics/queryPreparationTime.js.map +1 -1
  1144. package/dist/react-native/queryMetrics/runtimeExecutionTimes.js +4 -1
  1145. package/dist/react-native/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  1146. package/dist/react-native/queryMetrics/timeSpan.js +4 -3
  1147. package/dist/react-native/queryMetrics/timeSpan.js.map +1 -1
  1148. package/dist/react-native/request/ErrorResponse.js +19 -0
  1149. package/dist/react-native/request/ErrorResponse.js.map +1 -1
  1150. package/dist/react-native/request/FeedResponse.js +4 -0
  1151. package/dist/react-native/request/FeedResponse.js.map +1 -1
  1152. package/dist/react-native/request/RequestHandler.js +1 -2
  1153. package/dist/react-native/request/RequestHandler.js.map +1 -1
  1154. package/dist/react-native/request/ResourceResponse.js +5 -0
  1155. package/dist/react-native/request/ResourceResponse.js.map +1 -1
  1156. package/dist/react-native/request/TimeoutError.js +1 -1
  1157. package/dist/react-native/request/TimeoutError.js.map +1 -1
  1158. package/dist/react-native/request/hybridSearchQueryResult.js +5 -0
  1159. package/dist/react-native/request/hybridSearchQueryResult.js.map +1 -1
  1160. package/dist/react-native/request/request.js +5 -1
  1161. package/dist/react-native/request/request.js.map +1 -1
  1162. package/dist/react-native/retry/bulkExecutionRetryPolicy.js +5 -2
  1163. package/dist/react-native/retry/bulkExecutionRetryPolicy.js.map +1 -1
  1164. package/dist/react-native/retry/defaultRetryPolicy.d.ts.map +1 -1
  1165. package/dist/react-native/retry/defaultRetryPolicy.js +7 -7
  1166. package/dist/react-native/retry/defaultRetryPolicy.js.map +1 -1
  1167. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
  1168. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
  1169. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js +24 -7
  1170. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  1171. package/dist/react-native/retry/resourceThrottleRetryPolicy.js +20 -10
  1172. package/dist/react-native/retry/resourceThrottleRetryPolicy.js.map +1 -1
  1173. package/dist/react-native/retry/retryUtility.d.ts.map +1 -1
  1174. package/dist/react-native/retry/retryUtility.js +5 -5
  1175. package/dist/react-native/retry/retryUtility.js.map +1 -1
  1176. package/dist/react-native/retry/sessionRetryPolicy.js +8 -4
  1177. package/dist/react-native/retry/sessionRetryPolicy.js.map +1 -1
  1178. package/dist/react-native/retry/timeoutFailoverRetryPolicy.js +14 -4
  1179. package/dist/react-native/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  1180. package/dist/react-native/routing/QueryRange.js +4 -0
  1181. package/dist/react-native/routing/QueryRange.js.map +1 -1
  1182. package/dist/react-native/routing/inMemoryCollectionRoutingMap.js +4 -0
  1183. package/dist/react-native/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  1184. package/dist/react-native/routing/partitionKeyRangeCache.js +2 -0
  1185. package/dist/react-native/routing/partitionKeyRangeCache.js.map +1 -1
  1186. package/dist/react-native/routing/smartRoutingMapProvider.js +1 -0
  1187. package/dist/react-native/routing/smartRoutingMapProvider.js.map +1 -1
  1188. package/dist/react-native/session/VectorSessionToken.js +6 -2
  1189. package/dist/react-native/session/VectorSessionToken.js.map +1 -1
  1190. package/dist/react-native/session/sessionContainer.js +5 -3
  1191. package/dist/react-native/session/sessionContainer.js.map +1 -1
  1192. package/dist/react-native/utils/batch.js +15 -4
  1193. package/dist/react-native/utils/batch.js.map +1 -1
  1194. package/dist/react-native/utils/fixedSizePriorityQueue.js +4 -0
  1195. package/dist/react-native/utils/fixedSizePriorityQueue.js.map +1 -1
  1196. package/dist/react-native/utils/hashing/hash.js +1 -1
  1197. package/dist/react-native/utils/hashing/hash.js.map +1 -1
  1198. package/dist/react-native/utils/nonStreamingOrderByMap.js +2 -0
  1199. package/dist/react-native/utils/nonStreamingOrderByMap.js.map +1 -1
  1200. package/package.json +32 -33
@@ -12,8 +12,13 @@ const batch_js_1 = require("../utils/batch.js");
12
12
  * @hidden
13
13
  */
14
14
  class BulkResponse {
15
+ statusCode;
16
+ subStatusCode;
17
+ headers;
18
+ operations;
19
+ results = [];
20
+ diagnostics;
15
21
  constructor(statusCode, subStatusCode, headers, operations) {
16
- this.results = [];
17
22
  this.statusCode = statusCode;
18
23
  this.subStatusCode = subStatusCode;
19
24
  this.headers = headers;
@@ -31,7 +36,6 @@ class BulkResponse {
31
36
  * static method to create BulkResponse from Response object
32
37
  */
33
38
  static fromResponseMessage(responseMessage, operations) {
34
- var _a;
35
39
  // Create and populate the response object
36
40
  let bulkResponse = this.populateFromResponse(responseMessage, operations);
37
41
  if (!bulkResponse.results || bulkResponse.results.length !== operations.length) {
@@ -43,7 +47,7 @@ class BulkResponse {
43
47
  // When the overall response status code is TooManyRequests, propagate the RetryAfter into the individual operations.
44
48
  let retryAfterMilliseconds = 0;
45
49
  if (responseMessage.code === statusCodes_js_1.StatusCodes.TooManyRequests) {
46
- const retryAfter = (_a = responseMessage.headers) === null || _a === void 0 ? void 0 : _a[constants_js_1.Constants.HttpHeaders.RetryAfterInMs];
50
+ const retryAfter = responseMessage.headers?.[constants_js_1.Constants.HttpHeaders.RetryAfterInMs];
47
51
  retryAfterMilliseconds = !retryAfter || isNaN(Number(retryAfter)) ? 0 : Number(retryAfter);
48
52
  }
49
53
  bulkResponse.createAndPopulateResults(operations, retryAfterMilliseconds, responseMessage);
@@ -51,19 +55,18 @@ class BulkResponse {
51
55
  return bulkResponse;
52
56
  }
53
57
  static populateFromResponse(responseMessage, operations) {
54
- var _a, _b, _c;
55
58
  const results = [];
56
59
  if (responseMessage.result) {
57
60
  for (let i = 0; i < operations.length; i++) {
58
61
  const itemResponse = responseMessage.result[i];
59
- if ((0, batch_js_1.isSuccessStatusCode)(itemResponse === null || itemResponse === void 0 ? void 0 : itemResponse.statusCode)) {
62
+ if ((0, batch_js_1.isSuccessStatusCode)(itemResponse?.statusCode)) {
60
63
  const result = {
61
- statusCode: itemResponse === null || itemResponse === void 0 ? void 0 : itemResponse.statusCode,
62
- eTag: itemResponse === null || itemResponse === void 0 ? void 0 : itemResponse.eTag,
63
- activityId: (_a = responseMessage.headers) === null || _a === void 0 ? void 0 : _a[constants_js_1.Constants.HttpHeaders.ActivityId],
64
- sessionToken: (_b = responseMessage.headers) === null || _b === void 0 ? void 0 : _b[constants_js_1.Constants.HttpHeaders.SessionToken],
65
- requestCharge: itemResponse === null || itemResponse === void 0 ? void 0 : itemResponse.requestCharge,
66
- resourceBody: itemResponse === null || itemResponse === void 0 ? void 0 : itemResponse.resourceBody,
64
+ statusCode: itemResponse?.statusCode,
65
+ eTag: itemResponse?.eTag,
66
+ activityId: responseMessage.headers?.[constants_js_1.Constants.HttpHeaders.ActivityId],
67
+ sessionToken: responseMessage.headers?.[constants_js_1.Constants.HttpHeaders.SessionToken],
68
+ requestCharge: itemResponse?.requestCharge,
69
+ resourceBody: itemResponse?.resourceBody,
67
70
  // diagnostics will be filled in Batcher dispatch to capture the complete diagnostics(e.g. decryption)
68
71
  diagnostics: null,
69
72
  headers: responseMessage.headers,
@@ -72,14 +75,14 @@ class BulkResponse {
72
75
  }
73
76
  else {
74
77
  const error = new index_js_1.ErrorResponse();
75
- error.code = itemResponse === null || itemResponse === void 0 ? void 0 : itemResponse.statusCode;
76
- error.substatus = itemResponse === null || itemResponse === void 0 ? void 0 : itemResponse.subStatusCode;
77
- error.message = itemResponse === null || itemResponse === void 0 ? void 0 : itemResponse.message;
78
- error.requestCharge = itemResponse === null || itemResponse === void 0 ? void 0 : itemResponse.requestCharge;
79
- error.body = itemResponse === null || itemResponse === void 0 ? void 0 : itemResponse.resourceBody;
78
+ error.code = itemResponse?.statusCode;
79
+ error.substatus = itemResponse?.subStatusCode;
80
+ error.message = itemResponse?.message;
81
+ error.requestCharge = itemResponse?.requestCharge;
82
+ error.body = itemResponse?.resourceBody;
80
83
  error.headers = responseMessage.headers;
81
- error.activityId = (_c = responseMessage.headers) === null || _c === void 0 ? void 0 : _c[constants_js_1.Constants.HttpHeaders.ActivityId];
82
- error.retryAfterInMs = itemResponse === null || itemResponse === void 0 ? void 0 : itemResponse.retryAfterMilliseconds;
84
+ error.activityId = responseMessage.headers?.[constants_js_1.Constants.HttpHeaders.ActivityId];
85
+ error.retryAfterInMs = itemResponse?.retryAfterMilliseconds;
83
86
  error.diagnostics = responseMessage.diagnostics;
84
87
  results.push(error);
85
88
  }
@@ -104,13 +107,12 @@ class BulkResponse {
104
107
  }
105
108
  createAndPopulateResults(operations, retryAfterInMs, error) {
106
109
  this.results = operations.map(() => {
107
- var _a;
108
110
  const errorResponse = new index_js_1.ErrorResponse();
109
111
  errorResponse.message = error.message;
110
112
  errorResponse.code = this.statusCode;
111
113
  errorResponse.substatus = this.subStatusCode;
112
114
  errorResponse.retryAfterInMs = retryAfterInMs;
113
- errorResponse.activityId = (_a = this.headers) === null || _a === void 0 ? void 0 : _a[constants_js_1.Constants.HttpHeaders.ActivityId];
115
+ errorResponse.activityId = this.headers?.[constants_js_1.Constants.HttpHeaders.ActivityId];
114
116
  errorResponse.body = error.body;
115
117
  errorResponse.diagnostics = error.diagnostics;
116
118
  errorResponse.headers = this.headers;
@@ -1 +1 @@
1
- {"version":3,"file":"BulkResponse.js","sourceRoot":"","sources":["../../../src/bulk/BulkResponse.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"../common/constants.js\";\nimport { StatusCodes, SubStatusCodes } from \"../common/statusCodes.js\";\nimport type { CosmosDiagnostics, Response } from \"../index.js\";\nimport { ErrorResponse } from \"../index.js\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/headerUtils.js\";\nimport type { StatusCode, SubStatusCode } from \"../request/StatusCodes.js\";\nimport type { ExtendedOperationResponse } from \"../utils/batch.js\";\nimport { isSuccessStatusCode } from \"../utils/batch.js\";\nimport type { ItemOperation } from \"./index.js\";\n\n/**\n * Represents a batch response for bulk request.\n * @hidden\n */\n\nexport class BulkResponse {\n statusCode: StatusCode;\n subStatusCode: SubStatusCode;\n headers: CosmosHeaders;\n operations: ItemOperation[];\n results: (ExtendedOperationResponse | ErrorResponse)[] = [];\n diagnostics: CosmosDiagnostics;\n\n constructor(\n statusCode: StatusCode,\n subStatusCode: SubStatusCode,\n headers: CosmosHeaders,\n operations: ItemOperation[],\n ) {\n this.statusCode = statusCode;\n this.subStatusCode = subStatusCode;\n this.headers = headers;\n this.operations = operations;\n }\n\n /**\n * Generate empty response object\n */\n static createEmptyResponse(\n operations: ItemOperation[],\n statusCode: StatusCode,\n subStatusCode: SubStatusCode,\n headers: CosmosHeaders,\n ): BulkResponse {\n const bulkResponse = new BulkResponse(statusCode, subStatusCode, headers, operations);\n bulkResponse.createAndPopulateResults(operations, 0, new ErrorResponse());\n return bulkResponse;\n }\n\n /**\n * static method to create BulkResponse from Response object\n */\n static fromResponseMessage(\n responseMessage: Response<any>,\n operations: ItemOperation[],\n ): BulkResponse {\n // Create and populate the response object\n let bulkResponse = this.populateFromResponse(responseMessage, operations);\n\n if (!bulkResponse.results || bulkResponse.results.length !== operations.length) {\n // Server should be guaranteeing number of results equal to operations when\n // batch request is successful - so fail as InternalServerError if this is not the case.\n if (isSuccessStatusCode(responseMessage.code)) {\n bulkResponse = new BulkResponse(\n StatusCodes.InternalServerError,\n SubStatusCodes.Unknown,\n responseMessage.headers,\n operations,\n );\n }\n\n // When the overall response status code is TooManyRequests, propagate the RetryAfter into the individual operations.\n let retryAfterMilliseconds = 0;\n\n if (responseMessage.code === StatusCodes.TooManyRequests) {\n const retryAfter = responseMessage.headers?.[Constants.HttpHeaders.RetryAfterInMs];\n retryAfterMilliseconds = !retryAfter || isNaN(Number(retryAfter)) ? 0 : Number(retryAfter);\n }\n\n bulkResponse.createAndPopulateResults(\n operations,\n retryAfterMilliseconds,\n responseMessage as ErrorResponse,\n );\n }\n return bulkResponse;\n }\n\n private static populateFromResponse(\n responseMessage: Response<any>,\n operations: ItemOperation[],\n ): BulkResponse {\n const results: (ExtendedOperationResponse | ErrorResponse)[] = [];\n\n if (responseMessage.result) {\n for (let i = 0; i < operations.length; i++) {\n const itemResponse = responseMessage.result[i];\n\n if (isSuccessStatusCode(itemResponse?.statusCode)) {\n const result: ExtendedOperationResponse = {\n statusCode: itemResponse?.statusCode,\n eTag: itemResponse?.eTag,\n activityId: responseMessage.headers?.[Constants.HttpHeaders.ActivityId],\n sessionToken: responseMessage.headers?.[Constants.HttpHeaders.SessionToken],\n requestCharge: itemResponse?.requestCharge,\n resourceBody: itemResponse?.resourceBody,\n // diagnostics will be filled in Batcher dispatch to capture the complete diagnostics(e.g. decryption)\n diagnostics: null,\n headers: responseMessage.headers,\n };\n results.push(result);\n } else {\n const error: ErrorResponse = new ErrorResponse();\n error.code = itemResponse?.statusCode;\n error.substatus = itemResponse?.subStatusCode;\n error.message = itemResponse?.message;\n error.requestCharge = itemResponse?.requestCharge;\n error.body = itemResponse?.resourceBody;\n error.headers = responseMessage.headers;\n error.activityId = responseMessage.headers?.[Constants.HttpHeaders.ActivityId];\n error.retryAfterInMs = itemResponse?.retryAfterMilliseconds;\n error.diagnostics = responseMessage.diagnostics;\n results.push(error);\n }\n }\n }\n let statusCode = responseMessage.code;\n let subStatusCode = responseMessage.substatus;\n\n if (responseMessage.code === StatusCodes.MultiStatus) {\n for (const result of results) {\n if (\n result instanceof ErrorResponse &&\n result.statusCode !== StatusCodes.FailedDependency &&\n result.statusCode >= StatusCodes.BadRequest\n ) {\n statusCode = typeof result.code === \"number\" ? result.code : Number(result.code);\n subStatusCode = result.substatus;\n break;\n }\n }\n }\n\n const bulkResponse = new BulkResponse(\n statusCode,\n subStatusCode,\n responseMessage.headers,\n operations,\n );\n bulkResponse.results = results;\n return bulkResponse;\n }\n\n private createAndPopulateResults(\n operations: ItemOperation[],\n retryAfterInMs: number,\n error: ErrorResponse,\n ): void {\n this.results = operations.map(() => {\n const errorResponse = new ErrorResponse();\n errorResponse.message = error.message;\n errorResponse.code = this.statusCode;\n errorResponse.substatus = this.subStatusCode;\n errorResponse.retryAfterInMs = retryAfterInMs;\n errorResponse.activityId = this.headers?.[Constants.HttpHeaders.ActivityId];\n errorResponse.body = error.body;\n errorResponse.diagnostics = error.diagnostics;\n errorResponse.headers = this.headers;\n errorResponse.requestCharge = error.requestCharge;\n return errorResponse;\n });\n }\n}\n"]}
1
+ {"version":3,"file":"BulkResponse.js","sourceRoot":"","sources":["../../../src/bulk/BulkResponse.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"../common/constants.js\";\nimport { StatusCodes, SubStatusCodes } from \"../common/statusCodes.js\";\nimport type { CosmosDiagnostics, Response } from \"../index.js\";\nimport { ErrorResponse } from \"../index.js\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/headerUtils.js\";\nimport type { StatusCode, SubStatusCode } from \"../request/StatusCodes.js\";\nimport type { ExtendedOperationResponse } from \"../utils/batch.js\";\nimport { isSuccessStatusCode } from \"../utils/batch.js\";\nimport type { ItemOperation } from \"./index.js\";\n\n/**\n * Represents a batch response for bulk request.\n * @hidden\n */\n\nexport class BulkResponse {\n statusCode: StatusCode;\n subStatusCode: SubStatusCode;\n headers: CosmosHeaders;\n operations: ItemOperation[];\n results: (ExtendedOperationResponse | ErrorResponse)[] = [];\n diagnostics: CosmosDiagnostics;\n\n constructor(\n statusCode: StatusCode,\n subStatusCode: SubStatusCode,\n headers: CosmosHeaders,\n operations: ItemOperation[],\n ) {\n this.statusCode = statusCode;\n this.subStatusCode = subStatusCode;\n this.headers = headers;\n this.operations = operations;\n }\n\n /**\n * Generate empty response object\n */\n static createEmptyResponse(\n operations: ItemOperation[],\n statusCode: StatusCode,\n subStatusCode: SubStatusCode,\n headers: CosmosHeaders,\n ): BulkResponse {\n const bulkResponse = new BulkResponse(statusCode, subStatusCode, headers, operations);\n bulkResponse.createAndPopulateResults(operations, 0, new ErrorResponse());\n return bulkResponse;\n }\n\n /**\n * static method to create BulkResponse from Response object\n */\n static fromResponseMessage(\n responseMessage: Response<any>,\n operations: ItemOperation[],\n ): BulkResponse {\n // Create and populate the response object\n let bulkResponse = this.populateFromResponse(responseMessage, operations);\n\n if (!bulkResponse.results || bulkResponse.results.length !== operations.length) {\n // Server should be guaranteeing number of results equal to operations when\n // batch request is successful - so fail as InternalServerError if this is not the case.\n if (isSuccessStatusCode(responseMessage.code)) {\n bulkResponse = new BulkResponse(\n StatusCodes.InternalServerError,\n SubStatusCodes.Unknown,\n responseMessage.headers,\n operations,\n );\n }\n\n // When the overall response status code is TooManyRequests, propagate the RetryAfter into the individual operations.\n let retryAfterMilliseconds = 0;\n\n if (responseMessage.code === StatusCodes.TooManyRequests) {\n const retryAfter = responseMessage.headers?.[Constants.HttpHeaders.RetryAfterInMs];\n retryAfterMilliseconds = !retryAfter || isNaN(Number(retryAfter)) ? 0 : Number(retryAfter);\n }\n\n bulkResponse.createAndPopulateResults(\n operations,\n retryAfterMilliseconds,\n responseMessage as ErrorResponse,\n );\n }\n return bulkResponse;\n }\n\n private static populateFromResponse(\n responseMessage: Response<any>,\n operations: ItemOperation[],\n ): BulkResponse {\n const results: (ExtendedOperationResponse | ErrorResponse)[] = [];\n\n if (responseMessage.result) {\n for (let i = 0; i < operations.length; i++) {\n const itemResponse = responseMessage.result[i];\n\n if (isSuccessStatusCode(itemResponse?.statusCode)) {\n const result: ExtendedOperationResponse = {\n statusCode: itemResponse?.statusCode,\n eTag: itemResponse?.eTag,\n activityId: responseMessage.headers?.[Constants.HttpHeaders.ActivityId],\n sessionToken: responseMessage.headers?.[Constants.HttpHeaders.SessionToken],\n requestCharge: itemResponse?.requestCharge,\n resourceBody: itemResponse?.resourceBody,\n // diagnostics will be filled in Batcher dispatch to capture the complete diagnostics(e.g. decryption)\n diagnostics: null,\n headers: responseMessage.headers,\n };\n results.push(result);\n } else {\n const error: ErrorResponse = new ErrorResponse();\n error.code = itemResponse?.statusCode;\n error.substatus = itemResponse?.subStatusCode;\n error.message = itemResponse?.message;\n error.requestCharge = itemResponse?.requestCharge;\n error.body = itemResponse?.resourceBody;\n error.headers = responseMessage.headers;\n error.activityId = responseMessage.headers?.[Constants.HttpHeaders.ActivityId];\n error.retryAfterInMs = itemResponse?.retryAfterMilliseconds;\n error.diagnostics = responseMessage.diagnostics;\n results.push(error);\n }\n }\n }\n let statusCode = responseMessage.code;\n let subStatusCode = responseMessage.substatus;\n\n if (responseMessage.code === StatusCodes.MultiStatus) {\n for (const result of results) {\n if (\n result instanceof ErrorResponse &&\n result.statusCode !== StatusCodes.FailedDependency &&\n result.statusCode >= StatusCodes.BadRequest\n ) {\n statusCode = typeof result.code === \"number\" ? result.code : Number(result.code);\n subStatusCode = result.substatus;\n break;\n }\n }\n }\n\n const bulkResponse = new BulkResponse(\n statusCode,\n subStatusCode,\n responseMessage.headers,\n operations,\n );\n bulkResponse.results = results;\n return bulkResponse;\n }\n\n private createAndPopulateResults(\n operations: ItemOperation[],\n retryAfterInMs: number,\n error: ErrorResponse,\n ): void {\n this.results = operations.map(() => {\n const errorResponse = new ErrorResponse();\n errorResponse.message = error.message;\n errorResponse.code = this.statusCode;\n errorResponse.substatus = this.subStatusCode;\n errorResponse.retryAfterInMs = retryAfterInMs;\n errorResponse.activityId = this.headers?.[Constants.HttpHeaders.ActivityId];\n errorResponse.body = error.body;\n errorResponse.diagnostics = error.diagnostics;\n errorResponse.headers = this.headers;\n errorResponse.requestCharge = error.requestCharge;\n return errorResponse;\n });\n }\n}\n"]}
@@ -16,11 +16,18 @@ const constants_js_1 = require("../common/constants.js");
16
16
  * @hidden
17
17
  */
18
18
  class CongestionAlgorithm {
19
+ // The semaphore to control the degree of concurrency.
20
+ limiterQueue;
21
+ // captures metrics upto previous requests for a partition.
22
+ oldPartitionMetric;
23
+ // captures metrics upto current request for a partition.
24
+ partitionMetric;
25
+ // time to wait before adjusting the degree of concurrency.
26
+ congestionWaitTimeInMs = 1000;
27
+ congestionIncreaseFactor = 1;
28
+ congestionDecreaseFactor = 5;
29
+ currentDegreeOfConcurrency;
19
30
  constructor(limiterQueue, partitionMetric, oldPartitionMetric) {
20
- // time to wait before adjusting the degree of concurrency.
21
- this.congestionWaitTimeInMs = 1000;
22
- this.congestionIncreaseFactor = 1;
23
- this.congestionDecreaseFactor = 5;
24
31
  this.limiterQueue = limiterQueue;
25
32
  this.oldPartitionMetric = oldPartitionMetric;
26
33
  this.partitionMetric = partitionMetric;
@@ -1 +1 @@
1
- {"version":3,"file":"CongestionAlgorithm.js","sourceRoot":"","sources":["../../../src/bulk/CongestionAlgorithm.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,yDAAmD;AAInD;;;;;;;;;;GAUG;AAEH,MAAa,mBAAmB;IAa9B,YACE,YAA0B,EAC1B,eAAgC,EAChC,kBAAmC;QATrC,2DAA2D;QACnD,2BAAsB,GAAW,IAAI,CAAC;QACtC,6BAAwB,GAAW,CAAC,CAAC;QACrC,6BAAwB,GAAW,CAAC,CAAC;QAQ3C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,0BAA0B,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,GAAG;QACD,MAAM,eAAe,GACnB,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;QAE7E,IAAI,eAAe,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACnD,MAAM,YAAY,GAChB,IAAI,CAAC,eAAe,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;YACrF,MAAM,gBAAgB,GACpB,IAAI,CAAC,eAAe,CAAC,uBAAuB;gBAC5C,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC;YAElD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;YAC7E,4EAA4E;YAC5E,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC;YACD,4GAA4G;YAC5G,IAAI,gBAAgB,GAAG,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,mBAAmB;QACzB,2DAA2D;QAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAC5B,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,GAAG,CAAC,CAAC,CAChD,CAAC;QACF,IAAI,CAAC,0BAA0B,IAAI,aAAa,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAClE,oFAAoF;QACpF,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC;IACtC,CAAC;IAEO,mBAAmB;QACzB,IACE,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,wBAAwB;YAC/D,wBAAS,CAAC,0BAA0B,EACpC,CAAC;YACD,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,wBAAwB,CAAC;YACjE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF;AApED,kDAoEC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"../common/constants.js\";\nimport type { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { LimiterQueue } from \"./Limiter.js\";\n\n/**\n * This class implements a congestion control algorithm which dynamically adjusts the degree\n * of concurrency based on the throttling and number of processed items.\n * For example, if it sees any throttling in requests from the last time the algorithm ran, it will decrease the\n * degree of concurrency (either by a factor of 5 or half the current degree of concurrency, whichever is smaller)\n * and increase the wait time to run the algorithm again by 1 second.\n * If it sees no throttling and the number of items processed increased, it will increase the degree of concurrency\n * (by a factor of 1) which cannot exceed the max degree of concurrency (Min(20, concurrency set by user)).\n * It uses the @see {@link PartitionMetric} to capture the metrics.\n * @hidden\n */\n\nexport class CongestionAlgorithm {\n // The semaphore to control the degree of concurrency.\n private limiterQueue: LimiterQueue;\n // captures metrics upto previous requests for a partition.\n private oldPartitionMetric: PartitionMetric;\n // captures metrics upto current request for a partition.\n private partitionMetric: PartitionMetric;\n // time to wait before adjusting the degree of concurrency.\n private congestionWaitTimeInMs: number = 1000;\n private congestionIncreaseFactor: number = 1;\n private congestionDecreaseFactor: number = 5;\n private currentDegreeOfConcurrency: number;\n\n constructor(\n limiterQueue: LimiterQueue,\n partitionMetric: PartitionMetric,\n oldPartitionMetric: PartitionMetric,\n ) {\n this.limiterQueue = limiterQueue;\n this.oldPartitionMetric = oldPartitionMetric;\n this.partitionMetric = partitionMetric;\n this.currentDegreeOfConcurrency = 1;\n }\n\n run(): void {\n const elapsedTimeInMs =\n this.partitionMetric.timeTakenInMs - this.oldPartitionMetric.timeTakenInMs;\n\n if (elapsedTimeInMs >= this.congestionWaitTimeInMs) {\n const diffThrottle =\n this.partitionMetric.numberOfThrottles - this.oldPartitionMetric.numberOfThrottles;\n const changeItemsCount =\n this.partitionMetric.numberOfItemsOperatedOn -\n this.oldPartitionMetric.numberOfItemsOperatedOn;\n\n this.oldPartitionMetric.add(changeItemsCount, elapsedTimeInMs, diffThrottle);\n // if the number of throttles increased, decrease the degree of concurrency.\n if (diffThrottle > 0) {\n this.decreaseConcurrency();\n }\n // if there's no throttling and the number of items processed increased, increase the degree of concurrency.\n if (changeItemsCount > 0 && diffThrottle === 0) {\n this.increaseConcurrency();\n }\n }\n }\n\n private decreaseConcurrency(): void {\n // decrease should not lead the degree of concurrency as 0.\n const decreaseCount = Math.min(\n this.congestionDecreaseFactor,\n Math.floor(this.currentDegreeOfConcurrency / 2),\n );\n this.currentDegreeOfConcurrency -= decreaseCount;\n this.limiterQueue.setConcurrency(this.currentDegreeOfConcurrency);\n // In case of throttling increase the wait time to adjust the degree of concurrency.\n this.congestionWaitTimeInMs += 1000;\n }\n\n private increaseConcurrency(): void {\n if (\n this.currentDegreeOfConcurrency + this.congestionIncreaseFactor <=\n Constants.BulkMaxDegreeOfConcurrency\n ) {\n this.currentDegreeOfConcurrency += this.congestionIncreaseFactor;\n this.limiterQueue.setConcurrency(this.currentDegreeOfConcurrency);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"CongestionAlgorithm.js","sourceRoot":"","sources":["../../../src/bulk/CongestionAlgorithm.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,yDAAmD;AAInD;;;;;;;;;;GAUG;AAEH,MAAa,mBAAmB;IAC9B,sDAAsD;IAC9C,YAAY,CAAe;IACnC,2DAA2D;IACnD,kBAAkB,CAAkB;IAC5C,yDAAyD;IACjD,eAAe,CAAkB;IACzC,2DAA2D;IACnD,sBAAsB,GAAW,IAAI,CAAC;IACtC,wBAAwB,GAAW,CAAC,CAAC;IACrC,wBAAwB,GAAW,CAAC,CAAC;IACrC,0BAA0B,CAAS;IAE3C,YACE,YAA0B,EAC1B,eAAgC,EAChC,kBAAmC;QAEnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,0BAA0B,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,GAAG;QACD,MAAM,eAAe,GACnB,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;QAE7E,IAAI,eAAe,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACnD,MAAM,YAAY,GAChB,IAAI,CAAC,eAAe,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;YACrF,MAAM,gBAAgB,GACpB,IAAI,CAAC,eAAe,CAAC,uBAAuB;gBAC5C,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC;YAElD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;YAC7E,4EAA4E;YAC5E,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC;YACD,4GAA4G;YAC5G,IAAI,gBAAgB,GAAG,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,mBAAmB;QACzB,2DAA2D;QAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAC5B,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,GAAG,CAAC,CAAC,CAChD,CAAC;QACF,IAAI,CAAC,0BAA0B,IAAI,aAAa,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAClE,oFAAoF;QACpF,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC;IACtC,CAAC;IAEO,mBAAmB;QACzB,IACE,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,wBAAwB;YAC/D,wBAAS,CAAC,0BAA0B,EACpC,CAAC;YACD,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,wBAAwB,CAAC;YACjE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF;AApED,kDAoEC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"../common/constants.js\";\nimport type { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { LimiterQueue } from \"./Limiter.js\";\n\n/**\n * This class implements a congestion control algorithm which dynamically adjusts the degree\n * of concurrency based on the throttling and number of processed items.\n * For example, if it sees any throttling in requests from the last time the algorithm ran, it will decrease the\n * degree of concurrency (either by a factor of 5 or half the current degree of concurrency, whichever is smaller)\n * and increase the wait time to run the algorithm again by 1 second.\n * If it sees no throttling and the number of items processed increased, it will increase the degree of concurrency\n * (by a factor of 1) which cannot exceed the max degree of concurrency (Min(20, concurrency set by user)).\n * It uses the @see {@link PartitionMetric} to capture the metrics.\n * @hidden\n */\n\nexport class CongestionAlgorithm {\n // The semaphore to control the degree of concurrency.\n private limiterQueue: LimiterQueue;\n // captures metrics upto previous requests for a partition.\n private oldPartitionMetric: PartitionMetric;\n // captures metrics upto current request for a partition.\n private partitionMetric: PartitionMetric;\n // time to wait before adjusting the degree of concurrency.\n private congestionWaitTimeInMs: number = 1000;\n private congestionIncreaseFactor: number = 1;\n private congestionDecreaseFactor: number = 5;\n private currentDegreeOfConcurrency: number;\n\n constructor(\n limiterQueue: LimiterQueue,\n partitionMetric: PartitionMetric,\n oldPartitionMetric: PartitionMetric,\n ) {\n this.limiterQueue = limiterQueue;\n this.oldPartitionMetric = oldPartitionMetric;\n this.partitionMetric = partitionMetric;\n this.currentDegreeOfConcurrency = 1;\n }\n\n run(): void {\n const elapsedTimeInMs =\n this.partitionMetric.timeTakenInMs - this.oldPartitionMetric.timeTakenInMs;\n\n if (elapsedTimeInMs >= this.congestionWaitTimeInMs) {\n const diffThrottle =\n this.partitionMetric.numberOfThrottles - this.oldPartitionMetric.numberOfThrottles;\n const changeItemsCount =\n this.partitionMetric.numberOfItemsOperatedOn -\n this.oldPartitionMetric.numberOfItemsOperatedOn;\n\n this.oldPartitionMetric.add(changeItemsCount, elapsedTimeInMs, diffThrottle);\n // if the number of throttles increased, decrease the degree of concurrency.\n if (diffThrottle > 0) {\n this.decreaseConcurrency();\n }\n // if there's no throttling and the number of items processed increased, increase the degree of concurrency.\n if (changeItemsCount > 0 && diffThrottle === 0) {\n this.increaseConcurrency();\n }\n }\n }\n\n private decreaseConcurrency(): void {\n // decrease should not lead the degree of concurrency as 0.\n const decreaseCount = Math.min(\n this.congestionDecreaseFactor,\n Math.floor(this.currentDegreeOfConcurrency / 2),\n );\n this.currentDegreeOfConcurrency -= decreaseCount;\n this.limiterQueue.setConcurrency(this.currentDegreeOfConcurrency);\n // In case of throttling increase the wait time to adjust the degree of concurrency.\n this.congestionWaitTimeInMs += 1000;\n }\n\n private increaseConcurrency(): void {\n if (\n this.currentDegreeOfConcurrency + this.congestionIncreaseFactor <=\n Constants.BulkMaxDegreeOfConcurrency\n ) {\n this.currentDegreeOfConcurrency += this.congestionIncreaseFactor;\n this.limiterQueue.setConcurrency(this.currentDegreeOfConcurrency);\n }\n }\n}\n"]}
@@ -16,8 +16,21 @@ const Limiter_js_1 = require("./Limiter.js");
16
16
  * @hidden
17
17
  */
18
18
  class HelperPerPartition {
19
+ executor;
20
+ retrier;
21
+ currentBatcher;
22
+ lock;
23
+ partitionMetric;
24
+ oldPartitionMetric;
25
+ diagnosticLevel;
26
+ encryptionEnabled;
27
+ encryptionProcessor;
28
+ clientConfigDiagnostics;
29
+ congestionControlAlgorithm;
30
+ dispatchLimiterQueue;
31
+ initialConcurrency = 1;
32
+ processedOperationCountRef;
19
33
  constructor(executor, retrier, refreshpartitionKeyRangeCache, diagnosticLevel, encryptionEnabled, clientConfig, encryptionProcessor, processedOperationCountRef) {
20
- this.initialConcurrency = 1;
21
34
  this.executor = executor;
22
35
  this.retrier = retrier;
23
36
  this.diagnosticLevel = diagnosticLevel;
@@ -1 +1 @@
1
- {"version":3,"file":"HelperPerPartition.js","sourceRoot":"","sources":["../../../src/bulk/HelperPerPartition.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport semaphore from \"semaphore\";\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport type { CosmosDbDiagnosticLevel } from \"../diagnostics/CosmosDbDiagnosticLevel.js\";\nimport type { EncryptionProcessor } from \"../encryption/EncryptionProcessor.js\";\nimport type { ClientConfigDiagnostic, DiagnosticNodeInternal } from \"../index.js\";\nimport type { ExecuteCallback, RetryCallback, BulkOperationResult } from \"../utils/batch.js\";\nimport { Batcher } from \"./Batcher.js\";\nimport { CongestionAlgorithm } from \"./CongestionAlgorithm.js\";\nimport { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { ItemOperation } from \"./index.js\";\nimport { LimiterQueue } from \"./Limiter.js\";\n\n/**\n * Handles operations batching and queuing for dispatch. Fills batches efficiently. There is always one batch at a time being filled. When the batch is full, it is added to the\n * dispatch queue and a new batch is created.\n * @hidden\n */\n\nexport class HelperPerPartition {\n private readonly executor: ExecuteCallback;\n private readonly retrier: RetryCallback;\n private currentBatcher: Batcher;\n private readonly lock: semaphore.Semaphore;\n private readonly partitionMetric: PartitionMetric;\n private readonly oldPartitionMetric: PartitionMetric;\n private readonly diagnosticLevel: CosmosDbDiagnosticLevel;\n private readonly encryptionEnabled: boolean;\n private readonly encryptionProcessor: EncryptionProcessor;\n private readonly clientConfigDiagnostics: ClientConfigDiagnostic;\n private readonly congestionControlAlgorithm: CongestionAlgorithm;\n private readonly dispatchLimiterQueue: LimiterQueue;\n private initialConcurrency: number = 1;\n private processedOperationCountRef: { count: number };\n\n constructor(\n executor: ExecuteCallback,\n retrier: RetryCallback,\n refreshpartitionKeyRangeCache: (diagnosticNode: DiagnosticNodeInternal) => Promise<void>,\n diagnosticLevel: CosmosDbDiagnosticLevel,\n encryptionEnabled: boolean,\n clientConfig: ClientConfigDiagnostic,\n encryptionProcessor: EncryptionProcessor,\n processedOperationCountRef: { count: number },\n ) {\n this.executor = executor;\n this.retrier = retrier;\n this.diagnosticLevel = diagnosticLevel;\n this.encryptionEnabled = encryptionEnabled;\n this.encryptionProcessor = encryptionProcessor;\n this.clientConfigDiagnostics = clientConfig;\n this.oldPartitionMetric = new PartitionMetric();\n this.partitionMetric = new PartitionMetric();\n this.processedOperationCountRef = processedOperationCountRef;\n this.lock = semaphore(1);\n this.dispatchLimiterQueue = new LimiterQueue(\n this.initialConcurrency,\n this.partitionMetric,\n this.retrier,\n refreshpartitionKeyRangeCache,\n );\n this.congestionControlAlgorithm = new CongestionAlgorithm(\n this.dispatchLimiterQueue,\n this.partitionMetric,\n this.oldPartitionMetric,\n );\n this.currentBatcher = this.createBatcher();\n }\n\n /**\n * Enqueues an operation into the current batch.\n * If the operation does not fit because the batch is full, the full batch is enqueued in the dispatch queue\n * and a new batch is created. The promise resolves when the operation has been successfully added.\n */\n async add(operation: ItemOperation): Promise<void> {\n return new Promise((resolve, reject) => {\n this.lock.take(() => {\n try {\n // If the current batch is full, move it to the dispatch queue until the operation fits.\n while (!this.currentBatcher.tryAdd(operation)) {\n const fullBatch = this.getBatchToQueueAndCreate();\n if (fullBatch) {\n this.dispatchLimiterQueue.push(fullBatch);\n }\n }\n // At this point the operation was added.\n resolve();\n } catch (err) {\n const response: BulkOperationResult = {\n operationInput: operation.unencryptedOperationInput,\n error: Object.assign(new Error(err.message), {\n code: StatusCodes.InternalServerError,\n diagnostics: operation.operationContext.diagnosticNode.toDiagnostic(\n this.clientConfigDiagnostics,\n ),\n }),\n };\n operation.operationContext.fail(response);\n this.processedOperationCountRef.count++;\n reject(err);\n } finally {\n this.lock.leave();\n }\n });\n });\n }\n\n /**\n * @returns the batch to be dispatched and creates a new one\n */\n private getBatchToQueueAndCreate(): Batcher {\n if (this.currentBatcher.isEmpty()) return null;\n const previousBatcher = this.currentBatcher;\n this.currentBatcher = this.createBatcher();\n return previousBatcher;\n }\n\n /**\n * In case there are leftover operations that did not fill a full batch,\n * dispatchUnfilledBatch will add those operations as a batch in the dispatch queue.\n */\n addPartialBatchToQueue(): void {\n this.lock.take(() => {\n try {\n if (!this.currentBatcher.isEmpty()) {\n const batch = this.currentBatcher;\n this.currentBatcher = this.createBatcher();\n this.dispatchLimiterQueue.push(batch);\n }\n } finally {\n this.lock.leave();\n }\n });\n }\n\n private createBatcher(): Batcher {\n return new Batcher(\n this.dispatchLimiterQueue,\n this.executor,\n this.retrier,\n this.diagnosticLevel,\n this.encryptionEnabled,\n this.clientConfigDiagnostics,\n this.encryptionProcessor,\n this.processedOperationCountRef,\n );\n }\n /**\n * Runs congestion algo for a partition.\n * Controlled by a single timer for all the partitions.\n */\n public runCongestionAlgorithm(): void {\n this.congestionControlAlgorithm.run();\n }\n\n /**\n * Empties the dispatch queue and clears the current batch.\n * This is used in case of stale container Rid detected for encryption operations\n */\n public async dispose(): Promise<void> {\n await this.dispatchLimiterQueue.pauseAndClear(null);\n this.currentBatcher = undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"HelperPerPartition.js","sourceRoot":"","sources":["../../../src/bulk/HelperPerPartition.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport semaphore from \"semaphore\";\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport type { CosmosDbDiagnosticLevel } from \"../diagnostics/CosmosDbDiagnosticLevel.js\";\nimport type { EncryptionProcessor } from \"../encryption/EncryptionProcessor.js\";\nimport type { ClientConfigDiagnostic, DiagnosticNodeInternal } from \"../index.js\";\nimport type { ExecuteCallback, RetryCallback, BulkOperationResult } from \"../utils/batch.js\";\nimport { Batcher } from \"./Batcher.js\";\nimport { CongestionAlgorithm } from \"./CongestionAlgorithm.js\";\nimport { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { ItemOperation } from \"./index.js\";\nimport { LimiterQueue } from \"./Limiter.js\";\n\n/**\n * Handles operations batching and queuing for dispatch. Fills batches efficiently. There is always one batch at a time being filled. When the batch is full, it is added to the\n * dispatch queue and a new batch is created.\n * @hidden\n */\n\nexport class HelperPerPartition {\n private readonly executor: ExecuteCallback;\n private readonly retrier: RetryCallback;\n private currentBatcher: Batcher;\n private readonly lock: semaphore.Semaphore;\n private readonly partitionMetric: PartitionMetric;\n private readonly oldPartitionMetric: PartitionMetric;\n private readonly diagnosticLevel: CosmosDbDiagnosticLevel;\n private readonly encryptionEnabled: boolean;\n private readonly encryptionProcessor: EncryptionProcessor;\n private readonly clientConfigDiagnostics: ClientConfigDiagnostic;\n private readonly congestionControlAlgorithm: CongestionAlgorithm;\n private readonly dispatchLimiterQueue: LimiterQueue;\n private initialConcurrency: number = 1;\n private processedOperationCountRef: { count: number };\n\n constructor(\n executor: ExecuteCallback,\n retrier: RetryCallback,\n refreshpartitionKeyRangeCache: (diagnosticNode: DiagnosticNodeInternal) => Promise<void>,\n diagnosticLevel: CosmosDbDiagnosticLevel,\n encryptionEnabled: boolean,\n clientConfig: ClientConfigDiagnostic,\n encryptionProcessor: EncryptionProcessor,\n processedOperationCountRef: { count: number },\n ) {\n this.executor = executor;\n this.retrier = retrier;\n this.diagnosticLevel = diagnosticLevel;\n this.encryptionEnabled = encryptionEnabled;\n this.encryptionProcessor = encryptionProcessor;\n this.clientConfigDiagnostics = clientConfig;\n this.oldPartitionMetric = new PartitionMetric();\n this.partitionMetric = new PartitionMetric();\n this.processedOperationCountRef = processedOperationCountRef;\n this.lock = semaphore(1);\n this.dispatchLimiterQueue = new LimiterQueue(\n this.initialConcurrency,\n this.partitionMetric,\n this.retrier,\n refreshpartitionKeyRangeCache,\n );\n this.congestionControlAlgorithm = new CongestionAlgorithm(\n this.dispatchLimiterQueue,\n this.partitionMetric,\n this.oldPartitionMetric,\n );\n this.currentBatcher = this.createBatcher();\n }\n\n /**\n * Enqueues an operation into the current batch.\n * If the operation does not fit because the batch is full, the full batch is enqueued in the dispatch queue\n * and a new batch is created. The promise resolves when the operation has been successfully added.\n */\n async add(operation: ItemOperation): Promise<void> {\n return new Promise((resolve, reject) => {\n this.lock.take(() => {\n try {\n // If the current batch is full, move it to the dispatch queue until the operation fits.\n while (!this.currentBatcher.tryAdd(operation)) {\n const fullBatch = this.getBatchToQueueAndCreate();\n if (fullBatch) {\n this.dispatchLimiterQueue.push(fullBatch);\n }\n }\n // At this point the operation was added.\n resolve();\n } catch (err) {\n const response: BulkOperationResult = {\n operationInput: operation.unencryptedOperationInput,\n error: Object.assign(new Error(err.message), {\n code: StatusCodes.InternalServerError,\n diagnostics: operation.operationContext.diagnosticNode.toDiagnostic(\n this.clientConfigDiagnostics,\n ),\n }),\n };\n operation.operationContext.fail(response);\n this.processedOperationCountRef.count++;\n reject(err);\n } finally {\n this.lock.leave();\n }\n });\n });\n }\n\n /**\n * @returns the batch to be dispatched and creates a new one\n */\n private getBatchToQueueAndCreate(): Batcher {\n if (this.currentBatcher.isEmpty()) return null;\n const previousBatcher = this.currentBatcher;\n this.currentBatcher = this.createBatcher();\n return previousBatcher;\n }\n\n /**\n * In case there are leftover operations that did not fill a full batch,\n * dispatchUnfilledBatch will add those operations as a batch in the dispatch queue.\n */\n addPartialBatchToQueue(): void {\n this.lock.take(() => {\n try {\n if (!this.currentBatcher.isEmpty()) {\n const batch = this.currentBatcher;\n this.currentBatcher = this.createBatcher();\n this.dispatchLimiterQueue.push(batch);\n }\n } finally {\n this.lock.leave();\n }\n });\n }\n\n private createBatcher(): Batcher {\n return new Batcher(\n this.dispatchLimiterQueue,\n this.executor,\n this.retrier,\n this.diagnosticLevel,\n this.encryptionEnabled,\n this.clientConfigDiagnostics,\n this.encryptionProcessor,\n this.processedOperationCountRef,\n );\n }\n /**\n * Runs congestion algo for a partition.\n * Controlled by a single timer for all the partitions.\n */\n public runCongestionAlgorithm(): void {\n this.congestionControlAlgorithm.run();\n }\n\n /**\n * Empties the dispatch queue and clears the current batch.\n * This is used in case of stale container Rid detected for encryption operations\n */\n public async dispose(): Promise<void> {\n await this.dispatchLimiterQueue.pauseAndClear(null);\n this.currentBatcher = undefined;\n }\n}\n"]}
@@ -9,6 +9,10 @@ const batch_js_1 = require("../utils/batch.js");
9
9
  * @hidden
10
10
  */
11
11
  class ItemOperationContext {
12
+ pkRangeId;
13
+ retryPolicy;
14
+ diagnosticNode;
15
+ taskCompletionSource;
12
16
  constructor(pkRangeId, retryPolicy, diagnosticNode) {
13
17
  this.pkRangeId = pkRangeId;
14
18
  this.retryPolicy = retryPolicy;
@@ -1 +1 @@
1
- {"version":3,"file":"ItemOperationContext.js","sourceRoot":"","sources":["../../../src/bulk/ItemOperationContext.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAKlC,gDAAyD;AAEzD;;;GAGG;AACH,MAAa,oBAAoB;IAM/B,YAAY,SAAiB,EAAE,WAAwB,EAAE,cAAsC;QAC7F,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,oBAAoB,GAAG,IAAI,+BAAoB,EAAuB,CAAC;IAC9E,CAAC;IAED,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,kBAAkB,CAAC,cAAsC;QACvD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1F,cAAc,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC;IAED,eAAe,CAAC,SAAiB;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,MAA2B;QAClC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,KAA0B;QAC7B,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;CACF;AAjCD,oDAiCC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { RetryPolicy } from \"../retry/RetryPolicy.js\";\nimport type { BulkOperationResult } from \"../utils/batch.js\";\nimport { TaskCompletionSource } from \"../utils/batch.js\";\n\n/**\n * Context for a particular @see {@link ItemOperation}.\n * @hidden\n */\nexport class ItemOperationContext {\n pkRangeId: string;\n retryPolicy: RetryPolicy;\n diagnosticNode: DiagnosticNodeInternal;\n private readonly taskCompletionSource: TaskCompletionSource<BulkOperationResult>;\n\n constructor(pkRangeId: string, retryPolicy: RetryPolicy, diagnosticNode: DiagnosticNodeInternal) {\n this.pkRangeId = pkRangeId;\n this.retryPolicy = retryPolicy;\n this.diagnosticNode = diagnosticNode;\n this.taskCompletionSource = new TaskCompletionSource<BulkOperationResult>();\n }\n\n public get operationPromise(): Promise<BulkOperationResult> {\n return this.taskCompletionSource.task;\n }\n\n addDiagnosticChild(diagnosticNode: DiagnosticNodeInternal): void {\n this.diagnosticNode.addBulkChildNode(diagnosticNode, this.diagnosticNode.diagnosticLevel);\n diagnosticNode.updateTimestamp();\n }\n\n updatePKRangeId(pkRangeId: string): void {\n this.pkRangeId = pkRangeId;\n }\n\n complete(result: BulkOperationResult): void {\n this.taskCompletionSource.setResult(result);\n }\n\n fail(error: BulkOperationResult): void {\n this.taskCompletionSource.setException(error.error);\n }\n}\n"]}
1
+ {"version":3,"file":"ItemOperationContext.js","sourceRoot":"","sources":["../../../src/bulk/ItemOperationContext.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAKlC,gDAAyD;AAEzD;;;GAGG;AACH,MAAa,oBAAoB;IAC/B,SAAS,CAAS;IAClB,WAAW,CAAc;IACzB,cAAc,CAAyB;IACtB,oBAAoB,CAA4C;IAEjF,YAAY,SAAiB,EAAE,WAAwB,EAAE,cAAsC;QAC7F,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,oBAAoB,GAAG,IAAI,+BAAoB,EAAuB,CAAC;IAC9E,CAAC;IAED,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,kBAAkB,CAAC,cAAsC;QACvD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1F,cAAc,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC;IAED,eAAe,CAAC,SAAiB;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,MAA2B;QAClC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,KAA0B;QAC7B,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;CACF;AAjCD,oDAiCC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { RetryPolicy } from \"../retry/RetryPolicy.js\";\nimport type { BulkOperationResult } from \"../utils/batch.js\";\nimport { TaskCompletionSource } from \"../utils/batch.js\";\n\n/**\n * Context for a particular @see {@link ItemOperation}.\n * @hidden\n */\nexport class ItemOperationContext {\n pkRangeId: string;\n retryPolicy: RetryPolicy;\n diagnosticNode: DiagnosticNodeInternal;\n private readonly taskCompletionSource: TaskCompletionSource<BulkOperationResult>;\n\n constructor(pkRangeId: string, retryPolicy: RetryPolicy, diagnosticNode: DiagnosticNodeInternal) {\n this.pkRangeId = pkRangeId;\n this.retryPolicy = retryPolicy;\n this.diagnosticNode = diagnosticNode;\n this.taskCompletionSource = new TaskCompletionSource<BulkOperationResult>();\n }\n\n public get operationPromise(): Promise<BulkOperationResult> {\n return this.taskCompletionSource.task;\n }\n\n addDiagnosticChild(diagnosticNode: DiagnosticNodeInternal): void {\n this.diagnosticNode.addBulkChildNode(diagnosticNode, this.diagnosticNode.diagnosticLevel);\n diagnosticNode.updateTimestamp();\n }\n\n updatePKRangeId(pkRangeId: string): void {\n this.pkRangeId = pkRangeId;\n }\n\n complete(result: BulkOperationResult): void {\n this.taskCompletionSource.setResult(result);\n }\n\n fail(error: BulkOperationResult): void {\n this.taskCompletionSource.setException(error.error);\n }\n}\n"]}
@@ -5,18 +5,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.LimiterQueue = void 0;
6
6
  const statusCodes_js_1 = require("../common/statusCodes.js");
7
7
  class ListNode {
8
+ value;
9
+ next = null;
10
+ prev = null;
8
11
  constructor(value) {
9
- this.next = null;
10
- this.prev = null;
11
12
  this.value = value;
12
13
  }
13
14
  }
14
15
  class DoublyLinkedList {
15
- constructor() {
16
- this.head = null;
17
- this.tail = null;
18
- this.length = 0;
19
- }
16
+ head = null;
17
+ tail = null;
18
+ length = 0;
20
19
  push(value) {
21
20
  const node = new ListNode(value);
22
21
  if (!this.head) {
@@ -74,21 +73,31 @@ function scheduleCallback(fn) {
74
73
  * any subsequent push() calls will immediately resolve with that value.
75
74
  */
76
75
  class LimiterQueue {
76
+ // maximum number of tasks allowed to run concurrently
77
+ concurrency;
78
+ // number of tasks currently executing
79
+ running = 0;
80
+ // doubly linked list to store batchers and resolve/reject functions for dispatch tasks
81
+ tasks = new DoublyLinkedList();
82
+ // boolean flag that indicates whether the queue has been permanently paused
83
+ terminated = false;
84
+ // value to resolve with when the queue is terminated
85
+ terminatedValue;
86
+ // indicates if the processing cycle has been scheduled via the asynchronous scheduler
87
+ scheduled = false;
88
+ // indicates whether the queue is currently in the process of dequeueing and executing tasks
89
+ processing = false;
90
+ // retry callback to retry all the queued operations in case of split/merge error
91
+ retrier;
92
+ // partiton metric for collecting metrics for the requests
93
+ partitionMetric;
94
+ // callback used to refresh the partition key range cache in case of split/merge error
95
+ refreshPartitionKeyRangeCache;
96
+ refreshPKRangeCachePromise = undefined;
77
97
  /**
78
98
  * Creates a new HighPerformanceQueue.
79
99
  */
80
100
  constructor(concurrency, partitionMetric, retrier, refreshPartitionKeyRangeCache) {
81
- // number of tasks currently executing
82
- this.running = 0;
83
- // doubly linked list to store batchers and resolve/reject functions for dispatch tasks
84
- this.tasks = new DoublyLinkedList();
85
- // boolean flag that indicates whether the queue has been permanently paused
86
- this.terminated = false;
87
- // indicates if the processing cycle has been scheduled via the asynchronous scheduler
88
- this.scheduled = false;
89
- // indicates whether the queue is currently in the process of dequeueing and executing tasks
90
- this.processing = false;
91
- this.refreshPKRangeCachePromise = undefined;
92
101
  this.concurrency = concurrency;
93
102
  this.partitionMetric = partitionMetric;
94
103
  this.retrier = retrier;
@@ -1 +1 @@
1
- {"version":3,"file":"Limiter.js","sourceRoot":"","sources":["../../../src/bulk/Limiter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { RetryCallback } from \"../utils/batch.js\";\nimport type { Batcher } from \"./Batcher.js\";\nimport type { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { ItemOperation } from \"./ItemOperation.js\";\n\nexport type Task<T = any> = () => Promise<T>;\n\ninterface QueueItem {\n batcher: Batcher;\n resolve: (value: any) => void;\n reject: (reason?: any) => void;\n}\n\nclass ListNode<T> {\n public value: T;\n public next: ListNode<T> | null = null;\n public prev: ListNode<T> | null = null;\n constructor(value: T) {\n this.value = value;\n }\n}\n\nclass DoublyLinkedList<T> {\n public head: ListNode<T> | null = null;\n public tail: ListNode<T> | null = null;\n public length = 0;\n\n public push(value: T): void {\n const node = new ListNode(value);\n if (!this.head) {\n this.head = this.tail = node;\n } else {\n this.tail!.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n this.length++;\n }\n\n public shift(): T | null {\n if (!this.head) return null;\n const value = this.head.value;\n this.head = this.head.next;\n if (this.head) {\n this.head.prev = null;\n } else {\n this.tail = null;\n }\n this.length--;\n return value;\n }\n\n public clear(): void {\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n public isEmpty(): boolean {\n return this.length === 0;\n }\n}\n\n/**\n * Returns a function that will schedule the given callback using the best available method.\n */\nfunction scheduleCallback(fn: () => void): void {\n if (typeof process !== \"undefined\" && typeof process.nextTick === \"function\") {\n process.nextTick(fn);\n } else if (typeof setImmediate === \"function\") {\n setImmediate(fn);\n } else {\n // eslint-disable-next-line promise/catch-or-return\n Promise.resolve().then(fn);\n }\n}\n\n/**\n * HighPerformanceQueue processes tasks concurrently.\n * If pauseAndClear() is called, it permanently halts processing,\n * clears queued tasks (resolving them with a custom value), and\n * any subsequent push() calls will immediately resolve with that value.\n */\nexport class LimiterQueue {\n // maximum number of tasks allowed to run concurrently\n public concurrency: number;\n // number of tasks currently executing\n private running = 0;\n // doubly linked list to store batchers and resolve/reject functions for dispatch tasks\n private tasks: DoublyLinkedList<QueueItem> = new DoublyLinkedList();\n // boolean flag that indicates whether the queue has been permanently paused\n private terminated = false;\n // value to resolve with when the queue is terminated\n private terminatedValue: any;\n // indicates if the processing cycle has been scheduled via the asynchronous scheduler\n private scheduled = false;\n // indicates whether the queue is currently in the process of dequeueing and executing tasks\n private processing = false;\n // retry callback to retry all the queued operations in case of split/merge error\n private retrier: RetryCallback;\n // partiton metric for collecting metrics for the requests\n private partitionMetric: PartitionMetric;\n // callback used to refresh the partition key range cache in case of split/merge error\n private readonly refreshPartitionKeyRangeCache: (diagnosticNode: any) => Promise<void>;\n private refreshPKRangeCachePromise: Promise<void> | undefined = undefined;\n /**\n * Creates a new HighPerformanceQueue.\n */\n constructor(\n concurrency: number,\n partitionMetric: PartitionMetric,\n retrier: RetryCallback,\n refreshPartitionKeyRangeCache: (diagnosticNode: any) => Promise<void>,\n ) {\n this.concurrency = concurrency;\n this.partitionMetric = partitionMetric;\n this.retrier = retrier;\n this.refreshPartitionKeyRangeCache = refreshPartitionKeyRangeCache;\n }\n\n /**\n * Enqueue a task and return a Promise that resolves or rejects when the task completes.\n * If the queue has been terminated via pauseAndClear, the promise resolves immediately with the terminated value.\n */\n public push(batcher: Batcher): Promise<any> {\n if (this.terminated) {\n const ops = batcher.getOperations();\n ops.forEach((op) => this.retrier(op, op.operationContext.diagnosticNode));\n return Promise.resolve(this.terminatedValue);\n }\n return new Promise<any>((resolve, reject) => {\n this.tasks.push({ batcher, resolve, reject });\n this.scheduleProcess();\n });\n }\n\n /**\n * Permanently pauses processing and clears the queue.\n * All queued tasks and subsequent push() calls will immediately resolve with the provided custom value.\n */\n public async pauseAndClear<T = any>(\n customValue: T,\n diagnosticNode?: DiagnosticNodeInternal,\n ): Promise<void> {\n this.terminated = true;\n this.terminatedValue = customValue;\n const operationsList: ItemOperation[] = [];\n while (!this.tasks.isEmpty()) {\n const queueItem = this.tasks.shift();\n if (!queueItem) break;\n if (customValue === StatusCodes.Gone) {\n const operations = queueItem.batcher.getOperations();\n operationsList.push(...operations);\n }\n queueItem.resolve(customValue);\n }\n if (customValue === StatusCodes.Gone) {\n // Multiple requests could result in 410 error for one partition based on degree of concurrency.\n // The refreshPKRangeCachePromise is added to ensure that only one refreshPartitionKeyRangeCache() call is made\n // to backend for one partition.\n if (this.refreshPKRangeCachePromise) {\n await this.refreshPKRangeCachePromise;\n } else {\n this.refreshPKRangeCachePromise = this.refreshPartitionKeyRangeCache(diagnosticNode);\n await this.refreshPKRangeCachePromise;\n }\n for (const operation of operationsList) {\n await this.retrier(operation, operation.operationContext.diagnosticNode);\n }\n }\n }\n\n /**\n * Schedules the processing loop using the best available asynchronous scheduler.\n */\n private scheduleProcess(): void {\n if (this.scheduled || this.processing || this.terminated) return;\n this.scheduled = true;\n scheduleCallback(() => {\n this.scheduled = false;\n this.process();\n });\n }\n\n /**\n * Processes tasks up to the concurrency limit.\n */\n private process(): void {\n if (this.terminated) return;\n this.processing = true;\n\n try {\n while (!this.terminated && this.running < this.concurrency && !this.tasks.isEmpty()) {\n const queueItem = this.tasks.shift();\n if (!queueItem) break;\n\n this.running++;\n\n // Handle synchronous exceptions\n let dispatchPromise: Promise<any>;\n try {\n dispatchPromise = queueItem.batcher.dispatch(this.partitionMetric);\n } catch (err) {\n // Handle synchronous errors\n queueItem.reject(err);\n this.running--;\n continue;\n }\n\n void dispatchPromise\n // eslint-disable-next-line promise/always-return\n .then((result) => {\n queueItem.resolve(result);\n })\n .catch((err) => {\n queueItem.reject(err);\n })\n .finally(() => {\n this.running--;\n if (!this.terminated && this.running < this.concurrency && !this.tasks.isEmpty()) {\n this.scheduleProcess();\n }\n });\n }\n } catch (err) {\n console.error(\"Unexpected error in task queue processing:\", err);\n } finally {\n this.processing = false;\n }\n }\n\n /**\n * Dynamically updates the concurrency limit.\n */\n public setConcurrency(newConcurrency: number): void {\n if (newConcurrency < 1) {\n throw new Error(\"Concurrency must be at least 1\");\n }\n this.concurrency = newConcurrency;\n if (!this.terminated && this.running < this.concurrency) {\n // Use the scheduleCallback helper for consistency\n this.scheduleProcess();\n }\n }\n}\n"]}
1
+ {"version":3,"file":"Limiter.js","sourceRoot":"","sources":["../../../src/bulk/Limiter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { RetryCallback } from \"../utils/batch.js\";\nimport type { Batcher } from \"./Batcher.js\";\nimport type { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { ItemOperation } from \"./ItemOperation.js\";\n\nexport type Task<T = any> = () => Promise<T>;\n\ninterface QueueItem {\n batcher: Batcher;\n resolve: (value: any) => void;\n reject: (reason?: any) => void;\n}\n\nclass ListNode<T> {\n public value: T;\n public next: ListNode<T> | null = null;\n public prev: ListNode<T> | null = null;\n constructor(value: T) {\n this.value = value;\n }\n}\n\nclass DoublyLinkedList<T> {\n public head: ListNode<T> | null = null;\n public tail: ListNode<T> | null = null;\n public length = 0;\n\n public push(value: T): void {\n const node = new ListNode(value);\n if (!this.head) {\n this.head = this.tail = node;\n } else {\n this.tail!.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n this.length++;\n }\n\n public shift(): T | null {\n if (!this.head) return null;\n const value = this.head.value;\n this.head = this.head.next;\n if (this.head) {\n this.head.prev = null;\n } else {\n this.tail = null;\n }\n this.length--;\n return value;\n }\n\n public clear(): void {\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n public isEmpty(): boolean {\n return this.length === 0;\n }\n}\n\n/**\n * Returns a function that will schedule the given callback using the best available method.\n */\nfunction scheduleCallback(fn: () => void): void {\n if (typeof process !== \"undefined\" && typeof process.nextTick === \"function\") {\n process.nextTick(fn);\n } else if (typeof setImmediate === \"function\") {\n setImmediate(fn);\n } else {\n // eslint-disable-next-line promise/catch-or-return\n Promise.resolve().then(fn);\n }\n}\n\n/**\n * HighPerformanceQueue processes tasks concurrently.\n * If pauseAndClear() is called, it permanently halts processing,\n * clears queued tasks (resolving them with a custom value), and\n * any subsequent push() calls will immediately resolve with that value.\n */\nexport class LimiterQueue {\n // maximum number of tasks allowed to run concurrently\n public concurrency: number;\n // number of tasks currently executing\n private running = 0;\n // doubly linked list to store batchers and resolve/reject functions for dispatch tasks\n private tasks: DoublyLinkedList<QueueItem> = new DoublyLinkedList();\n // boolean flag that indicates whether the queue has been permanently paused\n private terminated = false;\n // value to resolve with when the queue is terminated\n private terminatedValue: any;\n // indicates if the processing cycle has been scheduled via the asynchronous scheduler\n private scheduled = false;\n // indicates whether the queue is currently in the process of dequeueing and executing tasks\n private processing = false;\n // retry callback to retry all the queued operations in case of split/merge error\n private retrier: RetryCallback;\n // partiton metric for collecting metrics for the requests\n private partitionMetric: PartitionMetric;\n // callback used to refresh the partition key range cache in case of split/merge error\n private readonly refreshPartitionKeyRangeCache: (diagnosticNode: any) => Promise<void>;\n private refreshPKRangeCachePromise: Promise<void> | undefined = undefined;\n /**\n * Creates a new HighPerformanceQueue.\n */\n constructor(\n concurrency: number,\n partitionMetric: PartitionMetric,\n retrier: RetryCallback,\n refreshPartitionKeyRangeCache: (diagnosticNode: any) => Promise<void>,\n ) {\n this.concurrency = concurrency;\n this.partitionMetric = partitionMetric;\n this.retrier = retrier;\n this.refreshPartitionKeyRangeCache = refreshPartitionKeyRangeCache;\n }\n\n /**\n * Enqueue a task and return a Promise that resolves or rejects when the task completes.\n * If the queue has been terminated via pauseAndClear, the promise resolves immediately with the terminated value.\n */\n public push(batcher: Batcher): Promise<any> {\n if (this.terminated) {\n const ops = batcher.getOperations();\n ops.forEach((op) => this.retrier(op, op.operationContext.diagnosticNode));\n return Promise.resolve(this.terminatedValue);\n }\n return new Promise<any>((resolve, reject) => {\n this.tasks.push({ batcher, resolve, reject });\n this.scheduleProcess();\n });\n }\n\n /**\n * Permanently pauses processing and clears the queue.\n * All queued tasks and subsequent push() calls will immediately resolve with the provided custom value.\n */\n public async pauseAndClear<T = any>(\n customValue: T,\n diagnosticNode?: DiagnosticNodeInternal,\n ): Promise<void> {\n this.terminated = true;\n this.terminatedValue = customValue;\n const operationsList: ItemOperation[] = [];\n while (!this.tasks.isEmpty()) {\n const queueItem = this.tasks.shift();\n if (!queueItem) break;\n if (customValue === StatusCodes.Gone) {\n const operations = queueItem.batcher.getOperations();\n operationsList.push(...operations);\n }\n queueItem.resolve(customValue);\n }\n if (customValue === StatusCodes.Gone) {\n // Multiple requests could result in 410 error for one partition based on degree of concurrency.\n // The refreshPKRangeCachePromise is added to ensure that only one refreshPartitionKeyRangeCache() call is made\n // to backend for one partition.\n if (this.refreshPKRangeCachePromise) {\n await this.refreshPKRangeCachePromise;\n } else {\n this.refreshPKRangeCachePromise = this.refreshPartitionKeyRangeCache(diagnosticNode);\n await this.refreshPKRangeCachePromise;\n }\n for (const operation of operationsList) {\n await this.retrier(operation, operation.operationContext.diagnosticNode);\n }\n }\n }\n\n /**\n * Schedules the processing loop using the best available asynchronous scheduler.\n */\n private scheduleProcess(): void {\n if (this.scheduled || this.processing || this.terminated) return;\n this.scheduled = true;\n scheduleCallback(() => {\n this.scheduled = false;\n this.process();\n });\n }\n\n /**\n * Processes tasks up to the concurrency limit.\n */\n private process(): void {\n if (this.terminated) return;\n this.processing = true;\n\n try {\n while (!this.terminated && this.running < this.concurrency && !this.tasks.isEmpty()) {\n const queueItem = this.tasks.shift();\n if (!queueItem) break;\n\n this.running++;\n\n // Handle synchronous exceptions\n let dispatchPromise: Promise<any>;\n try {\n dispatchPromise = queueItem.batcher.dispatch(this.partitionMetric);\n } catch (err) {\n // Handle synchronous errors\n queueItem.reject(err);\n this.running--;\n continue;\n }\n\n void dispatchPromise\n // eslint-disable-next-line promise/always-return\n .then((result) => {\n queueItem.resolve(result);\n })\n .catch((err) => {\n queueItem.reject(err);\n })\n .finally(() => {\n this.running--;\n if (!this.terminated && this.running < this.concurrency && !this.tasks.isEmpty()) {\n this.scheduleProcess();\n }\n });\n }\n } catch (err) {\n console.error(\"Unexpected error in task queue processing:\", err);\n } finally {\n this.processing = false;\n }\n }\n\n /**\n * Dynamically updates the concurrency limit.\n */\n public setConcurrency(newConcurrency: number): void {\n if (newConcurrency < 1) {\n throw new Error(\"Concurrency must be at least 1\");\n }\n this.concurrency = newConcurrency;\n if (!this.terminated && this.running < this.concurrency) {\n // Use the scheduleCallback helper for consistency\n this.scheduleProcess();\n }\n }\n}\n"]}
@@ -9,6 +9,10 @@ const semaphore_1 = tslib_1.__importDefault(require("semaphore"));
9
9
  * Captures the metrics for the requests made for bulk.
10
10
  */
11
11
  class PartitionMetric {
12
+ numberOfItemsOperatedOn;
13
+ timeTakenInMs;
14
+ numberOfThrottles;
15
+ semaphore;
12
16
  constructor() {
13
17
  this.numberOfItemsOperatedOn = 0;
14
18
  this.timeTakenInMs = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"PartitionMetric.js","sourceRoot":"","sources":["../../../src/bulk/PartitionMetric.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,kEAAkC;AAElC;;GAEG;AACH,MAAa,eAAe;IAM1B;QACE,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAA,mBAAS,EAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,WAAmB,EAAE,aAAqB,EAAE,cAAsB;QACpE,wFAAwF;QACxF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC;gBACH,IAAI,CAAC,uBAAuB,IAAI,WAAW,CAAC;gBAC5C,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC;gBACpC,IAAI,CAAC,iBAAiB,IAAI,cAAc,CAAC;YAC3C,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAzBD,0CAyBC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport semaphore from \"semaphore\";\n\n/**\n * Captures the metrics for the requests made for bulk.\n */\nexport class PartitionMetric {\n numberOfItemsOperatedOn: number;\n timeTakenInMs: number;\n numberOfThrottles: number;\n private semaphore: semaphore.Semaphore;\n\n constructor() {\n this.numberOfItemsOperatedOn = 0;\n this.timeTakenInMs = 0;\n this.numberOfThrottles = 0;\n this.semaphore = semaphore(1);\n }\n\n add(numberOfDoc: number, timeTakenInMs: number, numOfThrottles: number): void {\n // these operations should be atomic as multiple dispatch could be updating these values\n this.semaphore.take(() => {\n try {\n this.numberOfItemsOperatedOn += numberOfDoc;\n this.timeTakenInMs += timeTakenInMs;\n this.numberOfThrottles += numOfThrottles;\n } finally {\n this.semaphore.leave();\n }\n });\n }\n}\n"]}
1
+ {"version":3,"file":"PartitionMetric.js","sourceRoot":"","sources":["../../../src/bulk/PartitionMetric.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,kEAAkC;AAElC;;GAEG;AACH,MAAa,eAAe;IAC1B,uBAAuB,CAAS;IAChC,aAAa,CAAS;IACtB,iBAAiB,CAAS;IAClB,SAAS,CAAsB;IAEvC;QACE,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAA,mBAAS,EAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,WAAmB,EAAE,aAAqB,EAAE,cAAsB;QACpE,wFAAwF;QACxF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC;gBACH,IAAI,CAAC,uBAAuB,IAAI,WAAW,CAAC;gBAC5C,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC;gBACpC,IAAI,CAAC,iBAAiB,IAAI,cAAc,CAAC;YAC3C,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAzBD,0CAyBC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport semaphore from \"semaphore\";\n\n/**\n * Captures the metrics for the requests made for bulk.\n */\nexport class PartitionMetric {\n numberOfItemsOperatedOn: number;\n timeTakenInMs: number;\n numberOfThrottles: number;\n private semaphore: semaphore.Semaphore;\n\n constructor() {\n this.numberOfItemsOperatedOn = 0;\n this.timeTakenInMs = 0;\n this.numberOfThrottles = 0;\n this.semaphore = semaphore(1);\n }\n\n add(numberOfDoc: number, timeTakenInMs: number, numOfThrottles: number): void {\n // these operations should be atomic as multiple dispatch could be updating these values\n this.semaphore.take(() => {\n try {\n this.numberOfItemsOperatedOn += numberOfDoc;\n this.timeTakenInMs += timeTakenInMs;\n this.numberOfThrottles += numOfThrottles;\n } finally {\n this.semaphore.leave();\n }\n });\n }\n}\n"]}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ChangeFeedForEpkRange = void 0;
4
- const tslib_1 = require("tslib");
5
4
  // Copyright (c) Microsoft Corporation.
6
5
  // Licensed under the MIT License.
7
6
  const ChangeFeedRange_js_1 = require("./ChangeFeedRange.js");
@@ -21,6 +20,20 @@ const ChangeFeedMode_js_1 = require("./ChangeFeedMode.js");
21
20
  * Use `Items.getChangeFeedIterator()` to get an instance of the iterator.
22
21
  */
23
22
  class ChangeFeedForEpkRange {
23
+ clientContext;
24
+ container;
25
+ partitionKeyRangeCache;
26
+ resourceId;
27
+ resourceLink;
28
+ url;
29
+ changeFeedOptions;
30
+ epkRange;
31
+ continuationToken;
32
+ queue;
33
+ startTime;
34
+ isInstantiated;
35
+ rId;
36
+ startFromNow;
24
37
  /**
25
38
  * @internal
26
39
  */
@@ -33,9 +46,6 @@ class ChangeFeedForEpkRange {
33
46
  this.url = url;
34
47
  this.changeFeedOptions = changeFeedOptions;
35
48
  this.epkRange = epkRange;
36
- this.generateContinuationToken = () => {
37
- return JSON.stringify(new CompositeContinuationToken_js_1.CompositeContinuationToken(this.rId, this.queue.returnSnapshot()));
38
- };
39
49
  this.queue = new FeedRangeQueue_js_1.FeedRangeQueue();
40
50
  this.continuationToken = changeFeedOptions.continuationToken
41
51
  ? JSON.parse(changeFeedOptions.continuationToken)
@@ -124,13 +134,11 @@ class ChangeFeedForEpkRange {
124
134
  /**
125
135
  * Gets an async iterator which will yield change feed results.
126
136
  */
127
- getAsyncIterator() {
128
- return tslib_1.__asyncGenerator(this, arguments, function* getAsyncIterator_1() {
129
- do {
130
- const result = yield tslib_1.__await(this.readNext());
131
- yield yield tslib_1.__await(result);
132
- } while (this.hasMoreResults);
133
- });
137
+ async *getAsyncIterator() {
138
+ do {
139
+ const result = await this.readNext();
140
+ yield result;
141
+ } while (this.hasMoreResults);
134
142
  }
135
143
  /**
136
144
  * Gets an async iterator which will yield pages of results from Azure Cosmos DB.
@@ -177,6 +185,9 @@ class ChangeFeedForEpkRange {
177
185
  return result;
178
186
  }, this.clientContext);
179
187
  }
188
+ generateContinuationToken = () => {
189
+ return JSON.stringify(new CompositeContinuationToken_js_1.CompositeContinuationToken(this.rId, this.queue.returnSnapshot()));
190
+ };
180
191
  /**
181
192
  * Read feed and retrieves the next page of results in Azure Cosmos DB.
182
193
  */
@@ -209,10 +220,10 @@ class ChangeFeedForEpkRange {
209
220
  return false;
210
221
  }
211
222
  const feedRangeQueueFirstElement = this.queue.peek();
212
- return (firstNotModifiedFeedRange.minInclusive === (feedRangeQueueFirstElement === null || feedRangeQueueFirstElement === void 0 ? void 0 : feedRangeQueueFirstElement.minInclusive) &&
213
- firstNotModifiedFeedRange.maxExclusive === (feedRangeQueueFirstElement === null || feedRangeQueueFirstElement === void 0 ? void 0 : feedRangeQueueFirstElement.maxExclusive) &&
214
- firstNotModifiedFeedRange.epkMinHeader === (feedRangeQueueFirstElement === null || feedRangeQueueFirstElement === void 0 ? void 0 : feedRangeQueueFirstElement.epkMinHeader) &&
215
- firstNotModifiedFeedRange.epkMaxHeader === (feedRangeQueueFirstElement === null || feedRangeQueueFirstElement === void 0 ? void 0 : feedRangeQueueFirstElement.epkMaxHeader));
223
+ return (firstNotModifiedFeedRange.minInclusive === feedRangeQueueFirstElement?.minInclusive &&
224
+ firstNotModifiedFeedRange.maxExclusive === feedRangeQueueFirstElement?.maxExclusive &&
225
+ firstNotModifiedFeedRange.epkMinHeader === feedRangeQueueFirstElement?.epkMinHeader &&
226
+ firstNotModifiedFeedRange.epkMaxHeader === feedRangeQueueFirstElement?.epkMaxHeader);
216
227
  }
217
228
  /**
218
229
  * Checks whether the current EpkRange is split into multiple ranges or not.