@azure/cosmos 4.5.0-alpha.20250718.3 → 4.5.0-alpha.20250730.2

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 (1172) 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/diagnostics/CosmosDiagnosticsContext.js +8 -7
  128. package/dist/browser/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  129. package/dist/browser/diagnostics/DiagnosticNodeInternal.js +26 -7
  130. package/dist/browser/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  131. package/dist/browser/diagnostics/DiagnosticWriter.js +1 -3
  132. package/dist/browser/diagnostics/DiagnosticWriter.js.map +1 -1
  133. package/dist/browser/diagnostics/index.js +2 -2
  134. package/dist/browser/diagnostics/index.js.map +1 -1
  135. package/dist/browser/documents/DatabaseAccount.js +20 -4
  136. package/dist/browser/documents/DatabaseAccount.js.map +1 -1
  137. package/dist/browser/documents/PartitionKey.js +1 -3
  138. package/dist/browser/documents/PartitionKey.js.map +1 -1
  139. package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  140. package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  141. package/dist/browser/encryption/Cache/EncryptionSettingsCache.js +2 -0
  142. package/dist/browser/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  143. package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  144. package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  145. package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  146. package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  147. package/dist/browser/encryption/EncryptionItemQueryIterator.js +24 -27
  148. package/dist/browser/encryption/EncryptionItemQueryIterator.js.map +1 -1
  149. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  150. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  151. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  152. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  153. package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  154. package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  155. package/dist/browser/encryption/EncryptionKeyStoreProvider.js +8 -1
  156. package/dist/browser/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  157. package/dist/browser/encryption/EncryptionManager.js +6 -0
  158. package/dist/browser/encryption/EncryptionManager.js.map +1 -1
  159. package/dist/browser/encryption/EncryptionProcessor.js +5 -0
  160. package/dist/browser/encryption/EncryptionProcessor.js.map +1 -1
  161. package/dist/browser/encryption/EncryptionQueryBuilder.js +2 -0
  162. package/dist/browser/encryption/EncryptionQueryBuilder.js.map +1 -1
  163. package/dist/browser/encryption/EncryptionSettingForProperty.js +6 -0
  164. package/dist/browser/encryption/EncryptionSettingForProperty.js.map +1 -1
  165. package/dist/browser/encryption/EncryptionSettings.js +6 -3
  166. package/dist/browser/encryption/EncryptionSettings.js.map +1 -1
  167. package/dist/browser/encryption/KeyEncryptionKey.js +4 -0
  168. package/dist/browser/encryption/KeyEncryptionKey.js.map +1 -1
  169. package/dist/browser/encryption/Serializers/StringSerializer.js +1 -1
  170. package/dist/browser/encryption/Serializers/StringSerializer.js.map +1 -1
  171. package/dist/browser/extractPartitionKey.js +2 -2
  172. package/dist/browser/extractPartitionKey.js.map +1 -1
  173. package/dist/browser/globalEndpointManager.js +21 -4
  174. package/dist/browser/globalEndpointManager.js.map +1 -1
  175. package/dist/browser/globalPartitionEndpointManager.js +8 -0
  176. package/dist/browser/globalPartitionEndpointManager.js.map +1 -1
  177. package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  178. package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  179. package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  180. package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  181. package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  182. package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  183. package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  184. package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  185. package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  186. package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  187. package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  188. package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  189. package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  190. package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  191. package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  192. package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  193. package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  194. package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  195. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  196. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  197. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  198. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  199. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  200. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  201. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  202. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  203. package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  204. package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  205. package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  206. package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  207. package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  208. package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  209. package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  210. package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  211. package/dist/browser/queryExecutionContext/FetchResult.js +4 -0
  212. package/dist/browser/queryExecutionContext/FetchResult.js.map +1 -1
  213. package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  214. package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  215. package/dist/browser/queryExecutionContext/documentProducer.js +34 -21
  216. package/dist/browser/queryExecutionContext/documentProducer.js.map +1 -1
  217. package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  218. package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  219. package/dist/browser/queryExecutionContext/orderByComparator.js +1 -0
  220. package/dist/browser/queryExecutionContext/orderByComparator.js.map +1 -1
  221. package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  222. package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  223. package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  224. package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  225. package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  226. package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  227. package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  228. package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  229. package/dist/browser/queryIterator.js +41 -33
  230. package/dist/browser/queryIterator.js.map +1 -1
  231. package/dist/browser/queryMetrics/clientSideMetrics.js +2 -1
  232. package/dist/browser/queryMetrics/clientSideMetrics.js.map +1 -1
  233. package/dist/browser/queryMetrics/queryMetrics.js +14 -1
  234. package/dist/browser/queryMetrics/queryMetrics.js.map +1 -1
  235. package/dist/browser/queryMetrics/queryPreparationTime.js +5 -1
  236. package/dist/browser/queryMetrics/queryPreparationTime.js.map +1 -1
  237. package/dist/browser/queryMetrics/runtimeExecutionTimes.js +4 -1
  238. package/dist/browser/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  239. package/dist/browser/queryMetrics/timeSpan.js +4 -3
  240. package/dist/browser/queryMetrics/timeSpan.js.map +1 -1
  241. package/dist/browser/request/ErrorResponse.js +19 -0
  242. package/dist/browser/request/ErrorResponse.js.map +1 -1
  243. package/dist/browser/request/FeedResponse.js +4 -0
  244. package/dist/browser/request/FeedResponse.js.map +1 -1
  245. package/dist/browser/request/RequestHandler.js +1 -2
  246. package/dist/browser/request/RequestHandler.js.map +1 -1
  247. package/dist/browser/request/ResourceResponse.js +5 -0
  248. package/dist/browser/request/ResourceResponse.js.map +1 -1
  249. package/dist/browser/request/TimeoutError.js +1 -1
  250. package/dist/browser/request/TimeoutError.js.map +1 -1
  251. package/dist/browser/request/hybridSearchQueryResult.js +5 -0
  252. package/dist/browser/request/hybridSearchQueryResult.js.map +1 -1
  253. package/dist/browser/request/request.js +5 -1
  254. package/dist/browser/request/request.js.map +1 -1
  255. package/dist/browser/retry/bulkExecutionRetryPolicy.js +5 -2
  256. package/dist/browser/retry/bulkExecutionRetryPolicy.js.map +1 -1
  257. package/dist/browser/retry/defaultRetryPolicy.js +4 -3
  258. package/dist/browser/retry/defaultRetryPolicy.js.map +1 -1
  259. package/dist/browser/retry/endpointDiscoveryRetryPolicy.js +11 -2
  260. package/dist/browser/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  261. package/dist/browser/retry/resourceThrottleRetryPolicy.js +20 -10
  262. package/dist/browser/retry/resourceThrottleRetryPolicy.js.map +1 -1
  263. package/dist/browser/retry/retryUtility.js +2 -3
  264. package/dist/browser/retry/retryUtility.js.map +1 -1
  265. package/dist/browser/retry/sessionRetryPolicy.js +8 -4
  266. package/dist/browser/retry/sessionRetryPolicy.js.map +1 -1
  267. package/dist/browser/retry/timeoutFailoverRetryPolicy.js +14 -4
  268. package/dist/browser/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  269. package/dist/browser/routing/QueryRange.js +4 -0
  270. package/dist/browser/routing/QueryRange.js.map +1 -1
  271. package/dist/browser/routing/inMemoryCollectionRoutingMap.js +4 -0
  272. package/dist/browser/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  273. package/dist/browser/routing/partitionKeyRangeCache.js +2 -0
  274. package/dist/browser/routing/partitionKeyRangeCache.js.map +1 -1
  275. package/dist/browser/routing/smartRoutingMapProvider.js +1 -0
  276. package/dist/browser/routing/smartRoutingMapProvider.js.map +1 -1
  277. package/dist/browser/session/VectorSessionToken.js +6 -2
  278. package/dist/browser/session/VectorSessionToken.js.map +1 -1
  279. package/dist/browser/session/sessionContainer.js +5 -3
  280. package/dist/browser/session/sessionContainer.js.map +1 -1
  281. package/dist/browser/utils/batch.js +15 -4
  282. package/dist/browser/utils/batch.js.map +1 -1
  283. package/dist/browser/utils/fixedSizePriorityQueue.js +4 -0
  284. package/dist/browser/utils/fixedSizePriorityQueue.js.map +1 -1
  285. package/dist/browser/utils/hashing/hash.js +1 -1
  286. package/dist/browser/utils/hashing/hash.js.map +1 -1
  287. package/dist/browser/utils/nonStreamingOrderByMap.js +2 -0
  288. package/dist/browser/utils/nonStreamingOrderByMap.js.map +1 -1
  289. package/dist/commonjs/ChangeFeedIterator.js +17 -11
  290. package/dist/commonjs/ChangeFeedIterator.js.map +1 -1
  291. package/dist/commonjs/ChangeFeedResponse.js +8 -0
  292. package/dist/commonjs/ChangeFeedResponse.js.map +1 -1
  293. package/dist/commonjs/ClientContext.js +122 -29
  294. package/dist/commonjs/ClientContext.js.map +1 -1
  295. package/dist/commonjs/CosmosClient.js +34 -3
  296. package/dist/commonjs/CosmosClient.js.map +1 -1
  297. package/dist/commonjs/CosmosDiagnostics.js +3 -0
  298. package/dist/commonjs/CosmosDiagnostics.js.map +1 -1
  299. package/dist/commonjs/PartitionKeyRangeFailoverInfo.js +8 -5
  300. package/dist/commonjs/PartitionKeyRangeFailoverInfo.js.map +1 -1
  301. package/dist/commonjs/bulk/Batcher.js +13 -3
  302. package/dist/commonjs/bulk/Batcher.js.map +1 -1
  303. package/dist/commonjs/bulk/BulkHelper.js +26 -11
  304. package/dist/commonjs/bulk/BulkHelper.js.map +1 -1
  305. package/dist/commonjs/bulk/BulkResponse.js +22 -20
  306. package/dist/commonjs/bulk/BulkResponse.js.map +1 -1
  307. package/dist/commonjs/bulk/CongestionAlgorithm.js +11 -4
  308. package/dist/commonjs/bulk/CongestionAlgorithm.js.map +1 -1
  309. package/dist/commonjs/bulk/HelperPerPartition.js +14 -1
  310. package/dist/commonjs/bulk/HelperPerPartition.js.map +1 -1
  311. package/dist/commonjs/bulk/ItemOperationContext.js +4 -0
  312. package/dist/commonjs/bulk/ItemOperationContext.js.map +1 -1
  313. package/dist/commonjs/bulk/Limiter.js +27 -18
  314. package/dist/commonjs/bulk/Limiter.js.map +1 -1
  315. package/dist/commonjs/bulk/PartitionMetric.js +4 -0
  316. package/dist/commonjs/bulk/PartitionMetric.js.map +1 -1
  317. package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  318. package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  319. package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
  320. package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  321. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  322. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  323. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  324. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  325. package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  326. package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  327. package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js +20 -0
  328. package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  329. package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  330. package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  331. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  332. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  333. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  334. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  335. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  336. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  337. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  338. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  339. package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  340. package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  341. package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  342. package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  343. package/dist/commonjs/client/ChangeFeed/FeedRange.js +8 -0
  344. package/dist/commonjs/client/ChangeFeed/FeedRange.js.map +1 -1
  345. package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js +1 -0
  346. package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  347. package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js +5 -5
  348. package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  349. package/dist/commonjs/client/ClientUtils.js +1 -1
  350. package/dist/commonjs/client/ClientUtils.js.map +1 -1
  351. package/dist/commonjs/client/Conflict/Conflict.js +4 -0
  352. package/dist/commonjs/client/Conflict/Conflict.js.map +1 -1
  353. package/dist/commonjs/client/Conflict/ConflictResponse.js +2 -0
  354. package/dist/commonjs/client/Conflict/ConflictResponse.js.map +1 -1
  355. package/dist/commonjs/client/Conflict/Conflicts.js +2 -0
  356. package/dist/commonjs/client/Conflict/Conflicts.js.map +1 -1
  357. package/dist/commonjs/client/Container/Container.js +18 -3
  358. package/dist/commonjs/client/Container/Container.js.map +1 -1
  359. package/dist/commonjs/client/Container/ContainerResponse.js +2 -0
  360. package/dist/commonjs/client/Container/ContainerResponse.js.map +1 -1
  361. package/dist/commonjs/client/Container/Containers.js +4 -2
  362. package/dist/commonjs/client/Container/Containers.js.map +1 -1
  363. package/dist/commonjs/client/Database/Database.js +33 -0
  364. package/dist/commonjs/client/Database/Database.js.map +1 -1
  365. package/dist/commonjs/client/Database/DatabaseResponse.js +2 -0
  366. package/dist/commonjs/client/Database/DatabaseResponse.js.map +1 -1
  367. package/dist/commonjs/client/Database/Databases.js +3 -0
  368. package/dist/commonjs/client/Database/Databases.js.map +1 -1
  369. package/dist/commonjs/client/Item/Item.js +4 -0
  370. package/dist/commonjs/client/Item/Item.js.map +1 -1
  371. package/dist/commonjs/client/Item/ItemResponse.js +2 -0
  372. package/dist/commonjs/client/Item/ItemResponse.js.map +1 -1
  373. package/dist/commonjs/client/Item/Items.js +3 -0
  374. package/dist/commonjs/client/Item/Items.js.map +1 -1
  375. package/dist/commonjs/client/Offer/Offer.js +3 -0
  376. package/dist/commonjs/client/Offer/Offer.js.map +1 -1
  377. package/dist/commonjs/client/Offer/OfferResponse.js +2 -0
  378. package/dist/commonjs/client/Offer/OfferResponse.js.map +1 -1
  379. package/dist/commonjs/client/Offer/Offers.js +2 -0
  380. package/dist/commonjs/client/Offer/Offers.js.map +1 -1
  381. package/dist/commonjs/client/Permission/Permission.js +3 -0
  382. package/dist/commonjs/client/Permission/Permission.js.map +1 -1
  383. package/dist/commonjs/client/Permission/PermissionResponse.js +2 -0
  384. package/dist/commonjs/client/Permission/PermissionResponse.js.map +1 -1
  385. package/dist/commonjs/client/Permission/Permissions.js +2 -0
  386. package/dist/commonjs/client/Permission/Permissions.js.map +1 -1
  387. package/dist/commonjs/client/SasToken/SasTokenProperties.js +17 -0
  388. package/dist/commonjs/client/SasToken/SasTokenProperties.js.map +1 -1
  389. package/dist/commonjs/client/Script/Scripts.js +5 -0
  390. package/dist/commonjs/client/Script/Scripts.js.map +1 -1
  391. package/dist/commonjs/client/StoredProcedure/StoredProcedure.js +3 -0
  392. package/dist/commonjs/client/StoredProcedure/StoredProcedure.js.map +1 -1
  393. package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  394. package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  395. package/dist/commonjs/client/StoredProcedure/StoredProcedures.js +2 -0
  396. package/dist/commonjs/client/StoredProcedure/StoredProcedures.js.map +1 -1
  397. package/dist/commonjs/client/Trigger/Trigger.js +3 -0
  398. package/dist/commonjs/client/Trigger/Trigger.js.map +1 -1
  399. package/dist/commonjs/client/Trigger/TriggerResponse.js +2 -0
  400. package/dist/commonjs/client/Trigger/TriggerResponse.js.map +1 -1
  401. package/dist/commonjs/client/Trigger/Triggers.js +2 -0
  402. package/dist/commonjs/client/Trigger/Triggers.js.map +1 -1
  403. package/dist/commonjs/client/User/User.js +9 -0
  404. package/dist/commonjs/client/User/User.js.map +1 -1
  405. package/dist/commonjs/client/User/UserResponse.js +2 -0
  406. package/dist/commonjs/client/User/UserResponse.js.map +1 -1
  407. package/dist/commonjs/client/User/Users.js +2 -0
  408. package/dist/commonjs/client/User/Users.js.map +1 -1
  409. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  410. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  411. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  412. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  413. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  414. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  415. package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js +8 -7
  416. package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  417. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js +26 -7
  418. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  419. package/dist/commonjs/diagnostics/DiagnosticWriter.js +1 -3
  420. package/dist/commonjs/diagnostics/DiagnosticWriter.js.map +1 -1
  421. package/dist/commonjs/diagnostics/index.js +2 -2
  422. package/dist/commonjs/diagnostics/index.js.map +1 -1
  423. package/dist/commonjs/documents/DatabaseAccount.js +20 -4
  424. package/dist/commonjs/documents/DatabaseAccount.js.map +1 -1
  425. package/dist/commonjs/documents/PartitionKey.js +1 -3
  426. package/dist/commonjs/documents/PartitionKey.js.map +1 -1
  427. package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
  428. package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
  429. package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  430. package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  431. package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js +2 -0
  432. package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  433. package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  434. package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  435. package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
  436. package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
  437. package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  438. package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  439. package/dist/commonjs/encryption/EncryptionItemQueryIterator.js +24 -27
  440. package/dist/commonjs/encryption/EncryptionItemQueryIterator.js.map +1 -1
  441. package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
  442. package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
  443. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  444. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  445. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  446. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  447. package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  448. package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  449. package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js +8 -1
  450. package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  451. package/dist/commonjs/encryption/EncryptionManager.js +6 -0
  452. package/dist/commonjs/encryption/EncryptionManager.js.map +1 -1
  453. package/dist/commonjs/encryption/EncryptionProcessor.js +5 -0
  454. package/dist/commonjs/encryption/EncryptionProcessor.js.map +1 -1
  455. package/dist/commonjs/encryption/EncryptionQueryBuilder.js +2 -0
  456. package/dist/commonjs/encryption/EncryptionQueryBuilder.js.map +1 -1
  457. package/dist/commonjs/encryption/EncryptionSettingForProperty.js +6 -0
  458. package/dist/commonjs/encryption/EncryptionSettingForProperty.js.map +1 -1
  459. package/dist/commonjs/encryption/EncryptionSettings.js +6 -3
  460. package/dist/commonjs/encryption/EncryptionSettings.js.map +1 -1
  461. package/dist/commonjs/encryption/KeyEncryptionKey.js +4 -0
  462. package/dist/commonjs/encryption/KeyEncryptionKey.js.map +1 -1
  463. package/dist/commonjs/encryption/Serializers/StringSerializer.js +1 -1
  464. package/dist/commonjs/encryption/Serializers/StringSerializer.js.map +1 -1
  465. package/dist/commonjs/extractPartitionKey.js +2 -2
  466. package/dist/commonjs/extractPartitionKey.js.map +1 -1
  467. package/dist/commonjs/globalEndpointManager.js +21 -4
  468. package/dist/commonjs/globalEndpointManager.js.map +1 -1
  469. package/dist/commonjs/globalPartitionEndpointManager.js +8 -0
  470. package/dist/commonjs/globalPartitionEndpointManager.js.map +1 -1
  471. package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  472. package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  473. package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  474. package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  475. package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  476. package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  477. package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  478. package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  479. package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  480. package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  481. package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  482. package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  483. package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  484. package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  485. package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  486. package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  487. package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  488. package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  489. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  490. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  491. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  492. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  493. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  494. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  495. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  496. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  497. package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  498. package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  499. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  500. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  501. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  502. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  503. package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  504. package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  505. package/dist/commonjs/queryExecutionContext/FetchResult.js +4 -0
  506. package/dist/commonjs/queryExecutionContext/FetchResult.js.map +1 -1
  507. package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  508. package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  509. package/dist/commonjs/queryExecutionContext/documentProducer.js +34 -21
  510. package/dist/commonjs/queryExecutionContext/documentProducer.js.map +1 -1
  511. package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  512. package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  513. package/dist/commonjs/queryExecutionContext/orderByComparator.js +1 -0
  514. package/dist/commonjs/queryExecutionContext/orderByComparator.js.map +1 -1
  515. package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  516. package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  517. package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  518. package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  519. package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  520. package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  521. package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  522. package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  523. package/dist/commonjs/queryIterator.js +41 -33
  524. package/dist/commonjs/queryIterator.js.map +1 -1
  525. package/dist/commonjs/queryMetrics/clientSideMetrics.js +2 -1
  526. package/dist/commonjs/queryMetrics/clientSideMetrics.js.map +1 -1
  527. package/dist/commonjs/queryMetrics/queryMetrics.js +14 -1
  528. package/dist/commonjs/queryMetrics/queryMetrics.js.map +1 -1
  529. package/dist/commonjs/queryMetrics/queryPreparationTime.js +5 -1
  530. package/dist/commonjs/queryMetrics/queryPreparationTime.js.map +1 -1
  531. package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js +4 -1
  532. package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  533. package/dist/commonjs/queryMetrics/timeSpan.js +4 -3
  534. package/dist/commonjs/queryMetrics/timeSpan.js.map +1 -1
  535. package/dist/commonjs/request/ErrorResponse.js +19 -0
  536. package/dist/commonjs/request/ErrorResponse.js.map +1 -1
  537. package/dist/commonjs/request/FeedResponse.js +4 -0
  538. package/dist/commonjs/request/FeedResponse.js.map +1 -1
  539. package/dist/commonjs/request/RequestHandler.js +1 -2
  540. package/dist/commonjs/request/RequestHandler.js.map +1 -1
  541. package/dist/commonjs/request/ResourceResponse.js +5 -0
  542. package/dist/commonjs/request/ResourceResponse.js.map +1 -1
  543. package/dist/commonjs/request/TimeoutError.js +1 -1
  544. package/dist/commonjs/request/TimeoutError.js.map +1 -1
  545. package/dist/commonjs/request/hybridSearchQueryResult.js +5 -0
  546. package/dist/commonjs/request/hybridSearchQueryResult.js.map +1 -1
  547. package/dist/commonjs/request/request.js +5 -1
  548. package/dist/commonjs/request/request.js.map +1 -1
  549. package/dist/commonjs/retry/bulkExecutionRetryPolicy.js +5 -2
  550. package/dist/commonjs/retry/bulkExecutionRetryPolicy.js.map +1 -1
  551. package/dist/commonjs/retry/defaultRetryPolicy.js +4 -3
  552. package/dist/commonjs/retry/defaultRetryPolicy.js.map +1 -1
  553. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js +11 -2
  554. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  555. package/dist/commonjs/retry/resourceThrottleRetryPolicy.js +20 -10
  556. package/dist/commonjs/retry/resourceThrottleRetryPolicy.js.map +1 -1
  557. package/dist/commonjs/retry/retryUtility.js +2 -3
  558. package/dist/commonjs/retry/retryUtility.js.map +1 -1
  559. package/dist/commonjs/retry/sessionRetryPolicy.js +8 -4
  560. package/dist/commonjs/retry/sessionRetryPolicy.js.map +1 -1
  561. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js +14 -4
  562. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  563. package/dist/commonjs/routing/QueryRange.js +4 -0
  564. package/dist/commonjs/routing/QueryRange.js.map +1 -1
  565. package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js +4 -0
  566. package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  567. package/dist/commonjs/routing/partitionKeyRangeCache.js +2 -0
  568. package/dist/commonjs/routing/partitionKeyRangeCache.js.map +1 -1
  569. package/dist/commonjs/routing/smartRoutingMapProvider.js +1 -0
  570. package/dist/commonjs/routing/smartRoutingMapProvider.js.map +1 -1
  571. package/dist/commonjs/session/VectorSessionToken.js +6 -2
  572. package/dist/commonjs/session/VectorSessionToken.js.map +1 -1
  573. package/dist/commonjs/session/sessionContainer.js +5 -3
  574. package/dist/commonjs/session/sessionContainer.js.map +1 -1
  575. package/dist/commonjs/tsdoc-metadata.json +1 -1
  576. package/dist/commonjs/utils/batch.js +15 -4
  577. package/dist/commonjs/utils/batch.js.map +1 -1
  578. package/dist/commonjs/utils/fixedSizePriorityQueue.js +4 -0
  579. package/dist/commonjs/utils/fixedSizePriorityQueue.js.map +1 -1
  580. package/dist/commonjs/utils/hashing/hash.js +1 -1
  581. package/dist/commonjs/utils/hashing/hash.js.map +1 -1
  582. package/dist/commonjs/utils/nonStreamingOrderByMap.js +2 -0
  583. package/dist/commonjs/utils/nonStreamingOrderByMap.js.map +1 -1
  584. package/dist/esm/ChangeFeedIterator.js +17 -11
  585. package/dist/esm/ChangeFeedIterator.js.map +1 -1
  586. package/dist/esm/ChangeFeedResponse.js +8 -0
  587. package/dist/esm/ChangeFeedResponse.js.map +1 -1
  588. package/dist/esm/ClientContext.js +122 -29
  589. package/dist/esm/ClientContext.js.map +1 -1
  590. package/dist/esm/CosmosClient.js +34 -3
  591. package/dist/esm/CosmosClient.js.map +1 -1
  592. package/dist/esm/CosmosDiagnostics.js +3 -0
  593. package/dist/esm/CosmosDiagnostics.js.map +1 -1
  594. package/dist/esm/PartitionKeyRangeFailoverInfo.js +8 -5
  595. package/dist/esm/PartitionKeyRangeFailoverInfo.js.map +1 -1
  596. package/dist/esm/bulk/Batcher.js +13 -3
  597. package/dist/esm/bulk/Batcher.js.map +1 -1
  598. package/dist/esm/bulk/BulkHelper.js +26 -11
  599. package/dist/esm/bulk/BulkHelper.js.map +1 -1
  600. package/dist/esm/bulk/BulkResponse.js +22 -20
  601. package/dist/esm/bulk/BulkResponse.js.map +1 -1
  602. package/dist/esm/bulk/CongestionAlgorithm.js +11 -4
  603. package/dist/esm/bulk/CongestionAlgorithm.js.map +1 -1
  604. package/dist/esm/bulk/HelperPerPartition.js +14 -1
  605. package/dist/esm/bulk/HelperPerPartition.js.map +1 -1
  606. package/dist/esm/bulk/ItemOperationContext.js +4 -0
  607. package/dist/esm/bulk/ItemOperationContext.js.map +1 -1
  608. package/dist/esm/bulk/Limiter.js +27 -18
  609. package/dist/esm/bulk/Limiter.js.map +1 -1
  610. package/dist/esm/bulk/PartitionMetric.js +4 -0
  611. package/dist/esm/bulk/PartitionMetric.js.map +1 -1
  612. package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  613. package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  614. package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
  615. package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  616. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  617. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  618. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  619. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  620. package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  621. package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  622. package/dist/esm/client/ChangeFeed/ChangeFeedRange.js +20 -0
  623. package/dist/esm/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  624. package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  625. package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  626. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  627. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  628. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  629. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  630. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  631. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  632. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  633. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  634. package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  635. package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  636. package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  637. package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  638. package/dist/esm/client/ChangeFeed/FeedRange.js +8 -0
  639. package/dist/esm/client/ChangeFeed/FeedRange.js.map +1 -1
  640. package/dist/esm/client/ChangeFeed/FeedRangeQueue.js +1 -0
  641. package/dist/esm/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  642. package/dist/esm/client/ChangeFeed/changeFeedUtils.js +5 -5
  643. package/dist/esm/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  644. package/dist/esm/client/ClientUtils.js +1 -1
  645. package/dist/esm/client/ClientUtils.js.map +1 -1
  646. package/dist/esm/client/Conflict/Conflict.js +4 -0
  647. package/dist/esm/client/Conflict/Conflict.js.map +1 -1
  648. package/dist/esm/client/Conflict/ConflictResponse.js +2 -0
  649. package/dist/esm/client/Conflict/ConflictResponse.js.map +1 -1
  650. package/dist/esm/client/Conflict/Conflicts.js +2 -0
  651. package/dist/esm/client/Conflict/Conflicts.js.map +1 -1
  652. package/dist/esm/client/Container/Container.js +18 -3
  653. package/dist/esm/client/Container/Container.js.map +1 -1
  654. package/dist/esm/client/Container/ContainerResponse.js +2 -0
  655. package/dist/esm/client/Container/ContainerResponse.js.map +1 -1
  656. package/dist/esm/client/Container/Containers.js +4 -2
  657. package/dist/esm/client/Container/Containers.js.map +1 -1
  658. package/dist/esm/client/Database/Database.js +33 -0
  659. package/dist/esm/client/Database/Database.js.map +1 -1
  660. package/dist/esm/client/Database/DatabaseResponse.js +2 -0
  661. package/dist/esm/client/Database/DatabaseResponse.js.map +1 -1
  662. package/dist/esm/client/Database/Databases.js +3 -0
  663. package/dist/esm/client/Database/Databases.js.map +1 -1
  664. package/dist/esm/client/Item/Item.js +4 -0
  665. package/dist/esm/client/Item/Item.js.map +1 -1
  666. package/dist/esm/client/Item/ItemResponse.js +2 -0
  667. package/dist/esm/client/Item/ItemResponse.js.map +1 -1
  668. package/dist/esm/client/Item/Items.js +3 -0
  669. package/dist/esm/client/Item/Items.js.map +1 -1
  670. package/dist/esm/client/Offer/Offer.js +3 -0
  671. package/dist/esm/client/Offer/Offer.js.map +1 -1
  672. package/dist/esm/client/Offer/OfferResponse.js +2 -0
  673. package/dist/esm/client/Offer/OfferResponse.js.map +1 -1
  674. package/dist/esm/client/Offer/Offers.js +2 -0
  675. package/dist/esm/client/Offer/Offers.js.map +1 -1
  676. package/dist/esm/client/Permission/Permission.js +3 -0
  677. package/dist/esm/client/Permission/Permission.js.map +1 -1
  678. package/dist/esm/client/Permission/PermissionResponse.js +2 -0
  679. package/dist/esm/client/Permission/PermissionResponse.js.map +1 -1
  680. package/dist/esm/client/Permission/Permissions.js +2 -0
  681. package/dist/esm/client/Permission/Permissions.js.map +1 -1
  682. package/dist/esm/client/SasToken/SasTokenProperties.js +17 -0
  683. package/dist/esm/client/SasToken/SasTokenProperties.js.map +1 -1
  684. package/dist/esm/client/Script/Scripts.js +5 -0
  685. package/dist/esm/client/Script/Scripts.js.map +1 -1
  686. package/dist/esm/client/StoredProcedure/StoredProcedure.js +3 -0
  687. package/dist/esm/client/StoredProcedure/StoredProcedure.js.map +1 -1
  688. package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  689. package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  690. package/dist/esm/client/StoredProcedure/StoredProcedures.js +2 -0
  691. package/dist/esm/client/StoredProcedure/StoredProcedures.js.map +1 -1
  692. package/dist/esm/client/Trigger/Trigger.js +3 -0
  693. package/dist/esm/client/Trigger/Trigger.js.map +1 -1
  694. package/dist/esm/client/Trigger/TriggerResponse.js +2 -0
  695. package/dist/esm/client/Trigger/TriggerResponse.js.map +1 -1
  696. package/dist/esm/client/Trigger/Triggers.js +2 -0
  697. package/dist/esm/client/Trigger/Triggers.js.map +1 -1
  698. package/dist/esm/client/User/User.js +9 -0
  699. package/dist/esm/client/User/User.js.map +1 -1
  700. package/dist/esm/client/User/UserResponse.js +2 -0
  701. package/dist/esm/client/User/UserResponse.js.map +1 -1
  702. package/dist/esm/client/User/Users.js +2 -0
  703. package/dist/esm/client/User/Users.js.map +1 -1
  704. package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  705. package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  706. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  707. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  708. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  709. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  710. package/dist/esm/diagnostics/CosmosDiagnosticsContext.js +8 -7
  711. package/dist/esm/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  712. package/dist/esm/diagnostics/DiagnosticNodeInternal.js +26 -7
  713. package/dist/esm/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  714. package/dist/esm/diagnostics/DiagnosticWriter.js +1 -3
  715. package/dist/esm/diagnostics/DiagnosticWriter.js.map +1 -1
  716. package/dist/esm/diagnostics/index.js +2 -2
  717. package/dist/esm/diagnostics/index.js.map +1 -1
  718. package/dist/esm/documents/DatabaseAccount.js +20 -4
  719. package/dist/esm/documents/DatabaseAccount.js.map +1 -1
  720. package/dist/esm/documents/PartitionKey.js +1 -3
  721. package/dist/esm/documents/PartitionKey.js.map +1 -1
  722. package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
  723. package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
  724. package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  725. package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  726. package/dist/esm/encryption/Cache/EncryptionSettingsCache.js +2 -0
  727. package/dist/esm/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  728. package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  729. package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  730. package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
  731. package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
  732. package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  733. package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  734. package/dist/esm/encryption/EncryptionItemQueryIterator.js +24 -27
  735. package/dist/esm/encryption/EncryptionItemQueryIterator.js.map +1 -1
  736. package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
  737. package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
  738. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  739. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  740. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  741. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  742. package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  743. package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  744. package/dist/esm/encryption/EncryptionKeyStoreProvider.js +8 -1
  745. package/dist/esm/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  746. package/dist/esm/encryption/EncryptionManager.js +6 -0
  747. package/dist/esm/encryption/EncryptionManager.js.map +1 -1
  748. package/dist/esm/encryption/EncryptionProcessor.js +5 -0
  749. package/dist/esm/encryption/EncryptionProcessor.js.map +1 -1
  750. package/dist/esm/encryption/EncryptionQueryBuilder.js +2 -0
  751. package/dist/esm/encryption/EncryptionQueryBuilder.js.map +1 -1
  752. package/dist/esm/encryption/EncryptionSettingForProperty.js +6 -0
  753. package/dist/esm/encryption/EncryptionSettingForProperty.js.map +1 -1
  754. package/dist/esm/encryption/EncryptionSettings.js +6 -3
  755. package/dist/esm/encryption/EncryptionSettings.js.map +1 -1
  756. package/dist/esm/encryption/KeyEncryptionKey.js +4 -0
  757. package/dist/esm/encryption/KeyEncryptionKey.js.map +1 -1
  758. package/dist/esm/encryption/Serializers/StringSerializer.js +1 -1
  759. package/dist/esm/encryption/Serializers/StringSerializer.js.map +1 -1
  760. package/dist/esm/extractPartitionKey.js +2 -2
  761. package/dist/esm/extractPartitionKey.js.map +1 -1
  762. package/dist/esm/globalEndpointManager.js +21 -4
  763. package/dist/esm/globalEndpointManager.js.map +1 -1
  764. package/dist/esm/globalPartitionEndpointManager.js +8 -0
  765. package/dist/esm/globalPartitionEndpointManager.js.map +1 -1
  766. package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  767. package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  768. package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  769. package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  770. package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  771. package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  772. package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  773. package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  774. package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  775. package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  776. package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  777. package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  778. package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  779. package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  780. package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  781. package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  782. package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  783. package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  784. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  785. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  786. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  787. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  788. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  789. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  790. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  791. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  792. package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  793. package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  794. package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  795. package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  796. package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  797. package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  798. package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  799. package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  800. package/dist/esm/queryExecutionContext/FetchResult.js +4 -0
  801. package/dist/esm/queryExecutionContext/FetchResult.js.map +1 -1
  802. package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  803. package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  804. package/dist/esm/queryExecutionContext/documentProducer.js +34 -21
  805. package/dist/esm/queryExecutionContext/documentProducer.js.map +1 -1
  806. package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  807. package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  808. package/dist/esm/queryExecutionContext/orderByComparator.js +1 -0
  809. package/dist/esm/queryExecutionContext/orderByComparator.js.map +1 -1
  810. package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  811. package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  812. package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  813. package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  814. package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  815. package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  816. package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  817. package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  818. package/dist/esm/queryIterator.js +41 -33
  819. package/dist/esm/queryIterator.js.map +1 -1
  820. package/dist/esm/queryMetrics/clientSideMetrics.js +2 -1
  821. package/dist/esm/queryMetrics/clientSideMetrics.js.map +1 -1
  822. package/dist/esm/queryMetrics/queryMetrics.js +14 -1
  823. package/dist/esm/queryMetrics/queryMetrics.js.map +1 -1
  824. package/dist/esm/queryMetrics/queryPreparationTime.js +5 -1
  825. package/dist/esm/queryMetrics/queryPreparationTime.js.map +1 -1
  826. package/dist/esm/queryMetrics/runtimeExecutionTimes.js +4 -1
  827. package/dist/esm/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  828. package/dist/esm/queryMetrics/timeSpan.js +4 -3
  829. package/dist/esm/queryMetrics/timeSpan.js.map +1 -1
  830. package/dist/esm/request/ErrorResponse.js +19 -0
  831. package/dist/esm/request/ErrorResponse.js.map +1 -1
  832. package/dist/esm/request/FeedResponse.js +4 -0
  833. package/dist/esm/request/FeedResponse.js.map +1 -1
  834. package/dist/esm/request/RequestHandler.js +1 -2
  835. package/dist/esm/request/RequestHandler.js.map +1 -1
  836. package/dist/esm/request/ResourceResponse.js +5 -0
  837. package/dist/esm/request/ResourceResponse.js.map +1 -1
  838. package/dist/esm/request/TimeoutError.js +1 -1
  839. package/dist/esm/request/TimeoutError.js.map +1 -1
  840. package/dist/esm/request/hybridSearchQueryResult.js +5 -0
  841. package/dist/esm/request/hybridSearchQueryResult.js.map +1 -1
  842. package/dist/esm/request/request.js +5 -1
  843. package/dist/esm/request/request.js.map +1 -1
  844. package/dist/esm/retry/bulkExecutionRetryPolicy.js +5 -2
  845. package/dist/esm/retry/bulkExecutionRetryPolicy.js.map +1 -1
  846. package/dist/esm/retry/defaultRetryPolicy.js +4 -3
  847. package/dist/esm/retry/defaultRetryPolicy.js.map +1 -1
  848. package/dist/esm/retry/endpointDiscoveryRetryPolicy.js +11 -2
  849. package/dist/esm/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  850. package/dist/esm/retry/resourceThrottleRetryPolicy.js +20 -10
  851. package/dist/esm/retry/resourceThrottleRetryPolicy.js.map +1 -1
  852. package/dist/esm/retry/retryUtility.js +2 -3
  853. package/dist/esm/retry/retryUtility.js.map +1 -1
  854. package/dist/esm/retry/sessionRetryPolicy.js +8 -4
  855. package/dist/esm/retry/sessionRetryPolicy.js.map +1 -1
  856. package/dist/esm/retry/timeoutFailoverRetryPolicy.js +14 -4
  857. package/dist/esm/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  858. package/dist/esm/routing/QueryRange.js +4 -0
  859. package/dist/esm/routing/QueryRange.js.map +1 -1
  860. package/dist/esm/routing/inMemoryCollectionRoutingMap.js +4 -0
  861. package/dist/esm/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  862. package/dist/esm/routing/partitionKeyRangeCache.js +2 -0
  863. package/dist/esm/routing/partitionKeyRangeCache.js.map +1 -1
  864. package/dist/esm/routing/smartRoutingMapProvider.js +1 -0
  865. package/dist/esm/routing/smartRoutingMapProvider.js.map +1 -1
  866. package/dist/esm/session/VectorSessionToken.js +6 -2
  867. package/dist/esm/session/VectorSessionToken.js.map +1 -1
  868. package/dist/esm/session/sessionContainer.js +5 -3
  869. package/dist/esm/session/sessionContainer.js.map +1 -1
  870. package/dist/esm/utils/batch.js +15 -4
  871. package/dist/esm/utils/batch.js.map +1 -1
  872. package/dist/esm/utils/fixedSizePriorityQueue.js +4 -0
  873. package/dist/esm/utils/fixedSizePriorityQueue.js.map +1 -1
  874. package/dist/esm/utils/hashing/hash.js +1 -1
  875. package/dist/esm/utils/hashing/hash.js.map +1 -1
  876. package/dist/esm/utils/nonStreamingOrderByMap.js +2 -0
  877. package/dist/esm/utils/nonStreamingOrderByMap.js.map +1 -1
  878. package/dist/react-native/ChangeFeedIterator.js +17 -11
  879. package/dist/react-native/ChangeFeedIterator.js.map +1 -1
  880. package/dist/react-native/ChangeFeedResponse.js +8 -0
  881. package/dist/react-native/ChangeFeedResponse.js.map +1 -1
  882. package/dist/react-native/ClientContext.js +122 -29
  883. package/dist/react-native/ClientContext.js.map +1 -1
  884. package/dist/react-native/CosmosClient.js +34 -3
  885. package/dist/react-native/CosmosClient.js.map +1 -1
  886. package/dist/react-native/CosmosDiagnostics.js +3 -0
  887. package/dist/react-native/CosmosDiagnostics.js.map +1 -1
  888. package/dist/react-native/PartitionKeyRangeFailoverInfo.js +8 -5
  889. package/dist/react-native/PartitionKeyRangeFailoverInfo.js.map +1 -1
  890. package/dist/react-native/bulk/Batcher.js +13 -3
  891. package/dist/react-native/bulk/Batcher.js.map +1 -1
  892. package/dist/react-native/bulk/BulkHelper.js +26 -11
  893. package/dist/react-native/bulk/BulkHelper.js.map +1 -1
  894. package/dist/react-native/bulk/BulkResponse.js +22 -20
  895. package/dist/react-native/bulk/BulkResponse.js.map +1 -1
  896. package/dist/react-native/bulk/CongestionAlgorithm.js +11 -4
  897. package/dist/react-native/bulk/CongestionAlgorithm.js.map +1 -1
  898. package/dist/react-native/bulk/HelperPerPartition.js +14 -1
  899. package/dist/react-native/bulk/HelperPerPartition.js.map +1 -1
  900. package/dist/react-native/bulk/ItemOperationContext.js +4 -0
  901. package/dist/react-native/bulk/ItemOperationContext.js.map +1 -1
  902. package/dist/react-native/bulk/Limiter.js +27 -18
  903. package/dist/react-native/bulk/Limiter.js.map +1 -1
  904. package/dist/react-native/bulk/PartitionMetric.js +4 -0
  905. package/dist/react-native/bulk/PartitionMetric.js.map +1 -1
  906. package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  907. package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  908. package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
  909. package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  910. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  911. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  912. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  913. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  914. package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  915. package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  916. package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js +20 -0
  917. package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  918. package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  919. package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  920. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  921. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  922. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  923. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  924. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  925. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  926. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  927. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  928. package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  929. package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  930. package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  931. package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  932. package/dist/react-native/client/ChangeFeed/FeedRange.js +8 -0
  933. package/dist/react-native/client/ChangeFeed/FeedRange.js.map +1 -1
  934. package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js +1 -0
  935. package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  936. package/dist/react-native/client/ChangeFeed/changeFeedUtils.js +5 -5
  937. package/dist/react-native/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  938. package/dist/react-native/client/ClientUtils.js +1 -1
  939. package/dist/react-native/client/ClientUtils.js.map +1 -1
  940. package/dist/react-native/client/Conflict/Conflict.js +4 -0
  941. package/dist/react-native/client/Conflict/Conflict.js.map +1 -1
  942. package/dist/react-native/client/Conflict/ConflictResponse.js +2 -0
  943. package/dist/react-native/client/Conflict/ConflictResponse.js.map +1 -1
  944. package/dist/react-native/client/Conflict/Conflicts.js +2 -0
  945. package/dist/react-native/client/Conflict/Conflicts.js.map +1 -1
  946. package/dist/react-native/client/Container/Container.js +18 -3
  947. package/dist/react-native/client/Container/Container.js.map +1 -1
  948. package/dist/react-native/client/Container/ContainerResponse.js +2 -0
  949. package/dist/react-native/client/Container/ContainerResponse.js.map +1 -1
  950. package/dist/react-native/client/Container/Containers.js +4 -2
  951. package/dist/react-native/client/Container/Containers.js.map +1 -1
  952. package/dist/react-native/client/Database/Database.js +33 -0
  953. package/dist/react-native/client/Database/Database.js.map +1 -1
  954. package/dist/react-native/client/Database/DatabaseResponse.js +2 -0
  955. package/dist/react-native/client/Database/DatabaseResponse.js.map +1 -1
  956. package/dist/react-native/client/Database/Databases.js +3 -0
  957. package/dist/react-native/client/Database/Databases.js.map +1 -1
  958. package/dist/react-native/client/Item/Item.js +4 -0
  959. package/dist/react-native/client/Item/Item.js.map +1 -1
  960. package/dist/react-native/client/Item/ItemResponse.js +2 -0
  961. package/dist/react-native/client/Item/ItemResponse.js.map +1 -1
  962. package/dist/react-native/client/Item/Items.js +3 -0
  963. package/dist/react-native/client/Item/Items.js.map +1 -1
  964. package/dist/react-native/client/Offer/Offer.js +3 -0
  965. package/dist/react-native/client/Offer/Offer.js.map +1 -1
  966. package/dist/react-native/client/Offer/OfferResponse.js +2 -0
  967. package/dist/react-native/client/Offer/OfferResponse.js.map +1 -1
  968. package/dist/react-native/client/Offer/Offers.js +2 -0
  969. package/dist/react-native/client/Offer/Offers.js.map +1 -1
  970. package/dist/react-native/client/Permission/Permission.js +3 -0
  971. package/dist/react-native/client/Permission/Permission.js.map +1 -1
  972. package/dist/react-native/client/Permission/PermissionResponse.js +2 -0
  973. package/dist/react-native/client/Permission/PermissionResponse.js.map +1 -1
  974. package/dist/react-native/client/Permission/Permissions.js +2 -0
  975. package/dist/react-native/client/Permission/Permissions.js.map +1 -1
  976. package/dist/react-native/client/SasToken/SasTokenProperties.js +17 -0
  977. package/dist/react-native/client/SasToken/SasTokenProperties.js.map +1 -1
  978. package/dist/react-native/client/Script/Scripts.js +5 -0
  979. package/dist/react-native/client/Script/Scripts.js.map +1 -1
  980. package/dist/react-native/client/StoredProcedure/StoredProcedure.js +3 -0
  981. package/dist/react-native/client/StoredProcedure/StoredProcedure.js.map +1 -1
  982. package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  983. package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  984. package/dist/react-native/client/StoredProcedure/StoredProcedures.js +2 -0
  985. package/dist/react-native/client/StoredProcedure/StoredProcedures.js.map +1 -1
  986. package/dist/react-native/client/Trigger/Trigger.js +3 -0
  987. package/dist/react-native/client/Trigger/Trigger.js.map +1 -1
  988. package/dist/react-native/client/Trigger/TriggerResponse.js +2 -0
  989. package/dist/react-native/client/Trigger/TriggerResponse.js.map +1 -1
  990. package/dist/react-native/client/Trigger/Triggers.js +2 -0
  991. package/dist/react-native/client/Trigger/Triggers.js.map +1 -1
  992. package/dist/react-native/client/User/User.js +9 -0
  993. package/dist/react-native/client/User/User.js.map +1 -1
  994. package/dist/react-native/client/User/UserResponse.js +2 -0
  995. package/dist/react-native/client/User/UserResponse.js.map +1 -1
  996. package/dist/react-native/client/User/Users.js +2 -0
  997. package/dist/react-native/client/User/Users.js.map +1 -1
  998. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  999. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  1000. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  1001. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  1002. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  1003. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  1004. package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js +8 -7
  1005. package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  1006. package/dist/react-native/diagnostics/DiagnosticNodeInternal.js +26 -7
  1007. package/dist/react-native/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  1008. package/dist/react-native/diagnostics/DiagnosticWriter.js +1 -3
  1009. package/dist/react-native/diagnostics/DiagnosticWriter.js.map +1 -1
  1010. package/dist/react-native/diagnostics/index.js +2 -2
  1011. package/dist/react-native/diagnostics/index.js.map +1 -1
  1012. package/dist/react-native/documents/DatabaseAccount.js +20 -4
  1013. package/dist/react-native/documents/DatabaseAccount.js.map +1 -1
  1014. package/dist/react-native/documents/PartitionKey.js +1 -3
  1015. package/dist/react-native/documents/PartitionKey.js.map +1 -1
  1016. package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
  1017. package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
  1018. package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  1019. package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  1020. package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js +2 -0
  1021. package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  1022. package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  1023. package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  1024. package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
  1025. package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
  1026. package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  1027. package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  1028. package/dist/react-native/encryption/EncryptionItemQueryIterator.js +24 -27
  1029. package/dist/react-native/encryption/EncryptionItemQueryIterator.js.map +1 -1
  1030. package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
  1031. package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
  1032. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  1033. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  1034. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  1035. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  1036. package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  1037. package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  1038. package/dist/react-native/encryption/EncryptionKeyStoreProvider.js +8 -1
  1039. package/dist/react-native/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  1040. package/dist/react-native/encryption/EncryptionManager.js +6 -0
  1041. package/dist/react-native/encryption/EncryptionManager.js.map +1 -1
  1042. package/dist/react-native/encryption/EncryptionProcessor.js +5 -0
  1043. package/dist/react-native/encryption/EncryptionProcessor.js.map +1 -1
  1044. package/dist/react-native/encryption/EncryptionQueryBuilder.js +2 -0
  1045. package/dist/react-native/encryption/EncryptionQueryBuilder.js.map +1 -1
  1046. package/dist/react-native/encryption/EncryptionSettingForProperty.js +6 -0
  1047. package/dist/react-native/encryption/EncryptionSettingForProperty.js.map +1 -1
  1048. package/dist/react-native/encryption/EncryptionSettings.js +6 -3
  1049. package/dist/react-native/encryption/EncryptionSettings.js.map +1 -1
  1050. package/dist/react-native/encryption/KeyEncryptionKey.js +4 -0
  1051. package/dist/react-native/encryption/KeyEncryptionKey.js.map +1 -1
  1052. package/dist/react-native/encryption/Serializers/StringSerializer.js +1 -1
  1053. package/dist/react-native/encryption/Serializers/StringSerializer.js.map +1 -1
  1054. package/dist/react-native/extractPartitionKey.js +2 -2
  1055. package/dist/react-native/extractPartitionKey.js.map +1 -1
  1056. package/dist/react-native/globalEndpointManager.js +21 -4
  1057. package/dist/react-native/globalEndpointManager.js.map +1 -1
  1058. package/dist/react-native/globalPartitionEndpointManager.js +8 -0
  1059. package/dist/react-native/globalPartitionEndpointManager.js.map +1 -1
  1060. package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  1061. package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  1062. package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  1063. package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  1064. package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  1065. package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  1066. package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  1067. package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  1068. package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  1069. package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  1070. package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  1071. package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  1072. package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  1073. package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  1074. package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  1075. package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  1076. package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  1077. package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  1078. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  1079. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  1080. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  1081. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  1082. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  1083. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  1084. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  1085. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  1086. package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  1087. package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  1088. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  1089. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  1090. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  1091. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  1092. package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  1093. package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  1094. package/dist/react-native/queryExecutionContext/FetchResult.js +4 -0
  1095. package/dist/react-native/queryExecutionContext/FetchResult.js.map +1 -1
  1096. package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  1097. package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  1098. package/dist/react-native/queryExecutionContext/documentProducer.js +34 -21
  1099. package/dist/react-native/queryExecutionContext/documentProducer.js.map +1 -1
  1100. package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  1101. package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  1102. package/dist/react-native/queryExecutionContext/orderByComparator.js +1 -0
  1103. package/dist/react-native/queryExecutionContext/orderByComparator.js.map +1 -1
  1104. package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  1105. package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  1106. package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  1107. package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  1108. package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  1109. package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  1110. package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  1111. package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  1112. package/dist/react-native/queryIterator.js +41 -33
  1113. package/dist/react-native/queryIterator.js.map +1 -1
  1114. package/dist/react-native/queryMetrics/clientSideMetrics.js +2 -1
  1115. package/dist/react-native/queryMetrics/clientSideMetrics.js.map +1 -1
  1116. package/dist/react-native/queryMetrics/queryMetrics.js +14 -1
  1117. package/dist/react-native/queryMetrics/queryMetrics.js.map +1 -1
  1118. package/dist/react-native/queryMetrics/queryPreparationTime.js +5 -1
  1119. package/dist/react-native/queryMetrics/queryPreparationTime.js.map +1 -1
  1120. package/dist/react-native/queryMetrics/runtimeExecutionTimes.js +4 -1
  1121. package/dist/react-native/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  1122. package/dist/react-native/queryMetrics/timeSpan.js +4 -3
  1123. package/dist/react-native/queryMetrics/timeSpan.js.map +1 -1
  1124. package/dist/react-native/request/ErrorResponse.js +19 -0
  1125. package/dist/react-native/request/ErrorResponse.js.map +1 -1
  1126. package/dist/react-native/request/FeedResponse.js +4 -0
  1127. package/dist/react-native/request/FeedResponse.js.map +1 -1
  1128. package/dist/react-native/request/RequestHandler.js +1 -2
  1129. package/dist/react-native/request/RequestHandler.js.map +1 -1
  1130. package/dist/react-native/request/ResourceResponse.js +5 -0
  1131. package/dist/react-native/request/ResourceResponse.js.map +1 -1
  1132. package/dist/react-native/request/TimeoutError.js +1 -1
  1133. package/dist/react-native/request/TimeoutError.js.map +1 -1
  1134. package/dist/react-native/request/hybridSearchQueryResult.js +5 -0
  1135. package/dist/react-native/request/hybridSearchQueryResult.js.map +1 -1
  1136. package/dist/react-native/request/request.js +5 -1
  1137. package/dist/react-native/request/request.js.map +1 -1
  1138. package/dist/react-native/retry/bulkExecutionRetryPolicy.js +5 -2
  1139. package/dist/react-native/retry/bulkExecutionRetryPolicy.js.map +1 -1
  1140. package/dist/react-native/retry/defaultRetryPolicy.js +4 -3
  1141. package/dist/react-native/retry/defaultRetryPolicy.js.map +1 -1
  1142. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js +11 -2
  1143. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  1144. package/dist/react-native/retry/resourceThrottleRetryPolicy.js +20 -10
  1145. package/dist/react-native/retry/resourceThrottleRetryPolicy.js.map +1 -1
  1146. package/dist/react-native/retry/retryUtility.js +2 -3
  1147. package/dist/react-native/retry/retryUtility.js.map +1 -1
  1148. package/dist/react-native/retry/sessionRetryPolicy.js +8 -4
  1149. package/dist/react-native/retry/sessionRetryPolicy.js.map +1 -1
  1150. package/dist/react-native/retry/timeoutFailoverRetryPolicy.js +14 -4
  1151. package/dist/react-native/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  1152. package/dist/react-native/routing/QueryRange.js +4 -0
  1153. package/dist/react-native/routing/QueryRange.js.map +1 -1
  1154. package/dist/react-native/routing/inMemoryCollectionRoutingMap.js +4 -0
  1155. package/dist/react-native/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  1156. package/dist/react-native/routing/partitionKeyRangeCache.js +2 -0
  1157. package/dist/react-native/routing/partitionKeyRangeCache.js.map +1 -1
  1158. package/dist/react-native/routing/smartRoutingMapProvider.js +1 -0
  1159. package/dist/react-native/routing/smartRoutingMapProvider.js.map +1 -1
  1160. package/dist/react-native/session/VectorSessionToken.js +6 -2
  1161. package/dist/react-native/session/VectorSessionToken.js.map +1 -1
  1162. package/dist/react-native/session/sessionContainer.js +5 -3
  1163. package/dist/react-native/session/sessionContainer.js.map +1 -1
  1164. package/dist/react-native/utils/batch.js +15 -4
  1165. package/dist/react-native/utils/batch.js.map +1 -1
  1166. package/dist/react-native/utils/fixedSizePriorityQueue.js +4 -0
  1167. package/dist/react-native/utils/fixedSizePriorityQueue.js.map +1 -1
  1168. package/dist/react-native/utils/hashing/hash.js +1 -1
  1169. package/dist/react-native/utils/hashing/hash.js.map +1 -1
  1170. package/dist/react-native/utils/nonStreamingOrderByMap.js +2 -0
  1171. package/dist/react-native/utils/nonStreamingOrderByMap.js.map +1 -1
  1172. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/request/request.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { setAuthorizationHeader } from \"../auth.js\";\nimport {\n Constants,\n HTTPMethod,\n jsonStringifyAndEscapeNonASCII,\n OperationType,\n ResourceType,\n SDKSupportedCapabilities,\n} from \"../common/index.js\";\nimport type { CosmosClientOptions } from \"../CosmosClientOptions.js\";\nimport type { PartitionKeyInternal } from \"../documents/index.js\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/index.js\";\nimport { ErrorResponse, type FeedOptions, type RequestOptions } from \"./index.js\";\nimport { defaultLogger } from \"../common/logger.js\";\nimport { ChangeFeedMode } from \"../client/ChangeFeed/index.js\";\n// ----------------------------------------------------------------------------\n// Utility methods\n//\n\n/** @hidden */\nfunction javaScriptFriendlyJSONStringify(s: unknown): string {\n // two line terminators (Line separator and Paragraph separator) are not needed to be escaped in JSON\n // but are needed to be escaped in JavaScript.\n return JSON.stringify(s)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\n\n/** @hidden */\nexport function bodyFromData(data: Buffer | string | Record<string, unknown>): string {\n if (typeof data === \"object\") {\n return javaScriptFriendlyJSONStringify(data);\n }\n return data;\n}\n\n/**\n * @hidden\n */\ninterface GetHeadersOptions {\n clientOptions: CosmosClientOptions;\n defaultHeaders: CosmosHeaders;\n verb: HTTPMethod;\n path: string;\n resourceId: string;\n resourceType: ResourceType;\n options: RequestOptions & FeedOptions;\n operationType?: OperationType;\n partitionKeyRangeId?: string;\n useMultipleWriteLocations?: boolean;\n partitionKey?: PartitionKeyInternal;\n}\n\nconst JsonContentType = \"application/json\";\n\n/**\n * @hidden\n */\nexport async function getHeaders({\n clientOptions,\n defaultHeaders,\n verb,\n path,\n resourceId,\n resourceType,\n options = {},\n operationType,\n partitionKeyRangeId,\n useMultipleWriteLocations,\n partitionKey,\n}: GetHeadersOptions): Promise<CosmosHeaders> {\n const headers: CosmosHeaders = {\n [Constants.HttpHeaders.ResponseContinuationTokenLimitInKB]: 1,\n [Constants.HttpHeaders.EnableCrossPartitionQuery]: true,\n ...defaultHeaders,\n };\n\n // Adding SDKSupportedCapabilities header to hint that SDK supports partition merge\n headers[Constants.HttpHeaders.SDKSupportedCapabilities] = SDKSupportedCapabilities.PartitionMerge;\n\n if (useMultipleWriteLocations) {\n headers[Constants.HttpHeaders.ALLOW_MULTIPLE_WRITES] = true;\n }\n\n if (options.continuationTokenLimitInKB) {\n headers[Constants.HttpHeaders.ResponseContinuationTokenLimitInKB] =\n options.continuationTokenLimitInKB;\n }\n if (options.continuationToken) {\n headers[Constants.HttpHeaders.Continuation] = options.continuationToken;\n } else if (options.continuation) {\n headers[Constants.HttpHeaders.Continuation] = options.continuation;\n }\n\n if (options.preTriggerInclude) {\n headers[Constants.HttpHeaders.PreTriggerInclude] =\n options.preTriggerInclude.constructor === Array\n ? (options.preTriggerInclude as string[]).join(\",\")\n : (options.preTriggerInclude as string);\n }\n\n if (options.postTriggerInclude) {\n headers[Constants.HttpHeaders.PostTriggerInclude] =\n options.postTriggerInclude.constructor === Array\n ? (options.postTriggerInclude as string[]).join(\",\")\n : (options.postTriggerInclude as string);\n }\n\n if (options.offerType) {\n headers[Constants.HttpHeaders.OfferType] = options.offerType;\n }\n\n if (options.offerThroughput) {\n headers[Constants.HttpHeaders.OfferThroughput] = options.offerThroughput;\n }\n\n if (options.maxItemCount) {\n headers[Constants.HttpHeaders.PageSize] = options.maxItemCount;\n }\n\n if (options.accessCondition) {\n if (options.accessCondition.type === \"IfMatch\") {\n headers[Constants.HttpHeaders.IfMatch] = options.accessCondition.condition;\n } else {\n headers[Constants.HttpHeaders.IfNoneMatch] = options.accessCondition.condition;\n }\n }\n\n if (options.useAllVersionsAndDeletesFeed) {\n // headers required for reading feed in allVersionsAndDeletes mode\n headers[Constants.HttpHeaders.A_IM] = ChangeFeedMode.AllVersionsAndDeletes;\n headers[Constants.HttpHeaders.ChangeFeedWireFormatVersion] =\n Constants.AllVersionsAndDeletesChangeFeedWireFormatVersion;\n }\n\n if (options.useIncrementalFeed || options.useLatestVersionFeed) {\n headers[Constants.HttpHeaders.A_IM] = ChangeFeedMode.LatestVersion;\n }\n\n if (options.indexingDirective) {\n headers[Constants.HttpHeaders.IndexingDirective] = options.indexingDirective;\n }\n\n if (options.consistencyLevel) {\n headers[Constants.HttpHeaders.ConsistencyLevel] = options.consistencyLevel;\n }\n\n if (options.priorityLevel) {\n headers[Constants.HttpHeaders.PriorityLevel] = options.priorityLevel;\n }\n\n if (options.throughputBucket) {\n headers[Constants.HttpHeaders.ThroughputBucket] = options.throughputBucket;\n }\n\n if (options.maxIntegratedCacheStalenessInMs && resourceType === ResourceType.item) {\n if (typeof options.maxIntegratedCacheStalenessInMs === \"number\") {\n headers[Constants.HttpHeaders.DedicatedGatewayPerRequestCacheStaleness] =\n options.maxIntegratedCacheStalenessInMs.toString();\n } else {\n defaultLogger.error(\n `RangeError: maxIntegratedCacheStalenessInMs \"${options.maxIntegratedCacheStalenessInMs}\" is not a valid parameter.`,\n );\n headers[Constants.HttpHeaders.DedicatedGatewayPerRequestCacheStaleness] = \"null\";\n }\n }\n\n if (options.bypassIntegratedCache) {\n headers[Constants.HttpHeaders.DedicatedGatewayPerRequestBypassCache] =\n options.bypassIntegratedCache.toString();\n }\n\n if (options.resourceTokenExpirySeconds) {\n headers[Constants.HttpHeaders.ResourceTokenExpiry] = options.resourceTokenExpirySeconds;\n }\n\n if (options.sessionToken) {\n headers[Constants.HttpHeaders.SessionToken] = options.sessionToken;\n }\n\n if (options.enableScanInQuery) {\n headers[Constants.HttpHeaders.EnableScanInQuery] = options.enableScanInQuery;\n }\n\n if (options.populateQuotaInfo) {\n headers[Constants.HttpHeaders.PopulateQuotaInfo] = options.populateQuotaInfo;\n }\n\n if (options.populateQueryMetrics) {\n headers[Constants.HttpHeaders.PopulateQueryMetrics] = options.populateQueryMetrics;\n }\n\n if (\n options.maxDegreeOfParallelism !== undefined &&\n options.maxDegreeOfParallelism !== 0 &&\n options.maxDegreeOfParallelism !== 1\n ) {\n headers[Constants.HttpHeaders.ParallelizeCrossPartitionQuery] = true;\n }\n\n if (options.populateQuotaInfo) {\n headers[Constants.HttpHeaders.PopulateQuotaInfo] = true;\n }\n\n if (partitionKey !== undefined && !headers[Constants.HttpHeaders.PartitionKey]) {\n headers[Constants.HttpHeaders.PartitionKey] = jsonStringifyAndEscapeNonASCII(partitionKey);\n } else if (partitionKeyRangeId !== undefined) {\n headers[Constants.HttpHeaders.PartitionKeyRangeID] = partitionKeyRangeId;\n }\n\n if (clientOptions.key || clientOptions.tokenProvider) {\n headers[Constants.HttpHeaders.XDate] = new Date().toUTCString();\n }\n\n if (verb === HTTPMethod.post || verb === HTTPMethod.put) {\n if (!headers[Constants.HttpHeaders.ContentType]) {\n headers[Constants.HttpHeaders.ContentType] = JsonContentType;\n }\n }\n\n if (!headers[Constants.HttpHeaders.Accept]) {\n headers[Constants.HttpHeaders.Accept] = JsonContentType;\n }\n\n if (options.enableScriptLogging) {\n headers[Constants.HttpHeaders.EnableScriptLogging] = options.enableScriptLogging;\n }\n\n if (options.disableRUPerMinuteUsage) {\n headers[Constants.HttpHeaders.DisableRUPerMinuteUsage] = true;\n }\n\n if (options.populateIndexMetrics) {\n headers[Constants.HttpHeaders.PopulateIndexMetrics] = options.populateIndexMetrics;\n }\n\n if (clientOptions.clientEncryptionOptions) {\n headers[Constants.HttpHeaders.IsClientEncryptedHeader] = true;\n if (options.containerRid) {\n headers[Constants.HttpHeaders.IntendedCollectionHeader] = options.containerRid;\n }\n }\n\n if (\n clientOptions.key ||\n clientOptions.resourceTokens ||\n clientOptions.tokenProvider ||\n clientOptions.permissionFeed\n ) {\n await setAuthorizationHeader(clientOptions, verb, path, resourceId, resourceType, headers);\n }\n\n if (\n resourceType === ResourceType.item &&\n Object.prototype.hasOwnProperty.call(options, \"contentResponseOnWriteEnabled\") &&\n !options.contentResponseOnWriteEnabled\n ) {\n if (operationType === OperationType.Batch) {\n headers[Constants.HttpHeaders.Prefer] = Constants.HttpHeaders.PreferReturnMinimal;\n } else {\n throw new ErrorResponse(\n \"Currently `contentResponseOnWriteEnabled` option is only supported for batch and bulk operations.\",\n );\n }\n }\n return headers;\n}\n"]}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/request/request.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { setAuthorizationHeader } from \"../auth.js\";\nimport {\n Constants,\n HTTPMethod,\n jsonStringifyAndEscapeNonASCII,\n OperationType,\n ResourceType,\n SDKSupportedCapabilities,\n} from \"../common/index.js\";\nimport type { CosmosClientOptions } from \"../CosmosClientOptions.js\";\nimport type { PartitionKeyInternal } from \"../documents/index.js\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/index.js\";\nimport { ErrorResponse, type FeedOptions, type RequestOptions } from \"./index.js\";\nimport { defaultLogger } from \"../common/logger.js\";\nimport { ChangeFeedMode } from \"../client/ChangeFeed/index.js\";\n// ----------------------------------------------------------------------------\n// Utility methods\n//\n\n/** @hidden */\nfunction javaScriptFriendlyJSONStringify(s: unknown): string {\n // two line terminators (Line separator and Paragraph separator) are not needed to be escaped in JSON\n // but are needed to be escaped in JavaScript.\n return JSON.stringify(s)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\n\n/** @hidden */\nexport function bodyFromData(data: Buffer | string | Record<string, unknown>): string {\n if (typeof data === \"object\") {\n return javaScriptFriendlyJSONStringify(data);\n }\n return data;\n}\n\n/**\n * @hidden\n */\ninterface GetHeadersOptions {\n clientOptions: CosmosClientOptions;\n defaultHeaders: CosmosHeaders;\n verb: HTTPMethod;\n path: string;\n resourceId: string;\n resourceType: ResourceType;\n options: RequestOptions & FeedOptions;\n operationType?: OperationType;\n partitionKeyRangeId?: string;\n useMultipleWriteLocations?: boolean;\n partitionKey?: PartitionKeyInternal;\n}\n\nconst JsonContentType = \"application/json\";\n\n/**\n * @hidden\n */\nexport async function getHeaders({\n clientOptions,\n defaultHeaders,\n verb,\n path,\n resourceId,\n resourceType,\n options = {},\n operationType,\n partitionKeyRangeId,\n useMultipleWriteLocations,\n partitionKey,\n}: GetHeadersOptions): Promise<CosmosHeaders> {\n const headers: CosmosHeaders = {\n [Constants.HttpHeaders.ResponseContinuationTokenLimitInKB]: 1,\n [Constants.HttpHeaders.EnableCrossPartitionQuery]: true,\n ...defaultHeaders,\n };\n\n // Adding SDKSupportedCapabilities header to hint that SDK supports partition merge\n headers[Constants.HttpHeaders.SDKSupportedCapabilities] = SDKSupportedCapabilities.PartitionMerge;\n\n if (useMultipleWriteLocations) {\n headers[Constants.HttpHeaders.ALLOW_MULTIPLE_WRITES] = true;\n }\n\n if (options.continuationTokenLimitInKB) {\n headers[Constants.HttpHeaders.ResponseContinuationTokenLimitInKB] =\n options.continuationTokenLimitInKB;\n }\n if (options.continuationToken) {\n headers[Constants.HttpHeaders.Continuation] = options.continuationToken;\n } else if (options.continuation) {\n headers[Constants.HttpHeaders.Continuation] = options.continuation;\n }\n\n if (options.preTriggerInclude) {\n headers[Constants.HttpHeaders.PreTriggerInclude] =\n options.preTriggerInclude.constructor === Array\n ? (options.preTriggerInclude as string[]).join(\",\")\n : (options.preTriggerInclude as string);\n }\n\n if (options.postTriggerInclude) {\n headers[Constants.HttpHeaders.PostTriggerInclude] =\n options.postTriggerInclude.constructor === Array\n ? (options.postTriggerInclude as string[]).join(\",\")\n : (options.postTriggerInclude as string);\n }\n\n if (options.offerType) {\n headers[Constants.HttpHeaders.OfferType] = options.offerType;\n }\n\n if (options.offerThroughput) {\n headers[Constants.HttpHeaders.OfferThroughput] = options.offerThroughput;\n }\n\n if (options.maxItemCount) {\n headers[Constants.HttpHeaders.PageSize] = options.maxItemCount;\n }\n\n if (options.accessCondition) {\n if (options.accessCondition.type === \"IfMatch\") {\n headers[Constants.HttpHeaders.IfMatch] = options.accessCondition.condition;\n } else {\n headers[Constants.HttpHeaders.IfNoneMatch] = options.accessCondition.condition;\n }\n }\n\n if (options.useAllVersionsAndDeletesFeed) {\n // headers required for reading feed in allVersionsAndDeletes mode\n headers[Constants.HttpHeaders.A_IM] = ChangeFeedMode.AllVersionsAndDeletes;\n headers[Constants.HttpHeaders.ChangeFeedWireFormatVersion] =\n Constants.AllVersionsAndDeletesChangeFeedWireFormatVersion;\n }\n\n if (options.useIncrementalFeed || options.useLatestVersionFeed) {\n headers[Constants.HttpHeaders.A_IM] = ChangeFeedMode.LatestVersion;\n }\n\n if (options.indexingDirective) {\n headers[Constants.HttpHeaders.IndexingDirective] = options.indexingDirective;\n }\n\n if (options.consistencyLevel) {\n headers[Constants.HttpHeaders.ConsistencyLevel] = options.consistencyLevel;\n }\n\n if (options.priorityLevel) {\n headers[Constants.HttpHeaders.PriorityLevel] = options.priorityLevel;\n }\n\n if (options.throughputBucket) {\n headers[Constants.HttpHeaders.ThroughputBucket] = options.throughputBucket;\n }\n\n if (options.maxIntegratedCacheStalenessInMs && resourceType === ResourceType.item) {\n if (typeof options.maxIntegratedCacheStalenessInMs === \"number\") {\n headers[Constants.HttpHeaders.DedicatedGatewayPerRequestCacheStaleness] =\n options.maxIntegratedCacheStalenessInMs.toString();\n } else {\n defaultLogger.error(\n `RangeError: maxIntegratedCacheStalenessInMs \"${options.maxIntegratedCacheStalenessInMs}\" is not a valid parameter.`,\n );\n headers[Constants.HttpHeaders.DedicatedGatewayPerRequestCacheStaleness] = \"null\";\n }\n }\n\n if (options.bypassIntegratedCache) {\n headers[Constants.HttpHeaders.DedicatedGatewayPerRequestBypassCache] =\n options.bypassIntegratedCache.toString();\n }\n\n if (options.resourceTokenExpirySeconds) {\n headers[Constants.HttpHeaders.ResourceTokenExpiry] = options.resourceTokenExpirySeconds;\n }\n\n if (options.sessionToken) {\n headers[Constants.HttpHeaders.SessionToken] = options.sessionToken;\n }\n\n if (options.enableScanInQuery) {\n headers[Constants.HttpHeaders.EnableScanInQuery] = options.enableScanInQuery;\n }\n\n if (options.populateQuotaInfo) {\n headers[Constants.HttpHeaders.PopulateQuotaInfo] = options.populateQuotaInfo;\n }\n\n if (options.populateQueryMetrics) {\n headers[Constants.HttpHeaders.PopulateQueryMetrics] = options.populateQueryMetrics;\n }\n\n if (\n options.maxDegreeOfParallelism !== undefined &&\n options.maxDegreeOfParallelism !== 0 &&\n options.maxDegreeOfParallelism !== 1\n ) {\n headers[Constants.HttpHeaders.ParallelizeCrossPartitionQuery] = true;\n }\n\n if (options.populateQuotaInfo) {\n headers[Constants.HttpHeaders.PopulateQuotaInfo] = true;\n }\n\n if (partitionKey !== undefined && !headers[Constants.HttpHeaders.PartitionKey]) {\n headers[Constants.HttpHeaders.PartitionKey] = jsonStringifyAndEscapeNonASCII(partitionKey);\n } else if (partitionKeyRangeId !== undefined) {\n headers[Constants.HttpHeaders.PartitionKeyRangeID] = partitionKeyRangeId;\n }\n\n if (clientOptions.key || clientOptions.tokenProvider) {\n headers[Constants.HttpHeaders.XDate] = new Date().toUTCString();\n }\n\n if (verb === HTTPMethod.post || verb === HTTPMethod.put) {\n if (!headers[Constants.HttpHeaders.ContentType]) {\n headers[Constants.HttpHeaders.ContentType] = JsonContentType;\n }\n }\n\n if (!headers[Constants.HttpHeaders.Accept]) {\n headers[Constants.HttpHeaders.Accept] = JsonContentType;\n }\n\n if (options.enableScriptLogging) {\n headers[Constants.HttpHeaders.EnableScriptLogging] = options.enableScriptLogging;\n }\n\n if (options.disableRUPerMinuteUsage) {\n headers[Constants.HttpHeaders.DisableRUPerMinuteUsage] = true;\n }\n\n if (options.populateIndexMetrics) {\n headers[Constants.HttpHeaders.PopulateIndexMetrics] = options.populateIndexMetrics;\n }\n\n if (clientOptions.clientEncryptionOptions) {\n headers[Constants.HttpHeaders.IsClientEncryptedHeader] = true;\n if (options.containerRid) {\n headers[Constants.HttpHeaders.IntendedCollectionHeader] = options.containerRid;\n }\n }\n\n if (\n clientOptions.key ||\n clientOptions.resourceTokens ||\n clientOptions.tokenProvider ||\n clientOptions.permissionFeed\n ) {\n await setAuthorizationHeader(clientOptions, verb, path, resourceId, resourceType, headers);\n }\n\n if (\n resourceType === ResourceType.item &&\n Object.prototype.hasOwnProperty.call(options, \"contentResponseOnWriteEnabled\") &&\n !options.contentResponseOnWriteEnabled\n ) {\n if (operationType === OperationType.Batch) {\n headers[Constants.HttpHeaders.Prefer] = Constants.HttpHeaders.PreferReturnMinimal;\n } else {\n throw new ErrorResponse(\n \"Currently `contentResponseOnWriteEnabled` option is only supported for batch and bulk operations.\",\n );\n }\n }\n return headers;\n}\n"]}
@@ -7,9 +7,12 @@ import { StatusCodes, SubStatusCodes } from "../common/statusCodes.js";
7
7
  * @hidden
8
8
  */
9
9
  export class BulkExecutionRetryPolicy {
10
+ retryAfterInMs;
11
+ retriesOn410;
12
+ MaxRetriesOn410 = 10;
13
+ SubstatusCodeBatchResponseSizeExceeded = 3402;
14
+ nextRetryPolicy;
10
15
  constructor(nextRetryPolicy) {
11
- this.MaxRetriesOn410 = 10;
12
- this.SubstatusCodeBatchResponseSizeExceeded = 3402;
13
16
  this.nextRetryPolicy = nextRetryPolicy;
14
17
  this.retriesOn410 = 0;
15
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bulkExecutionRetryPolicy.js","sourceRoot":"","sources":["../../../src/retry/bulkExecutionRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAKvE;;;GAGG;AACH,MAAM,OAAO,wBAAwB;IAOnC,YAAY,eAA4B;QAJvB,oBAAe,GAAG,EAAE,CAAC;QACrB,2CAAsC,GAAG,IAAI,CAAC;QAI7D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,GAAkB,EAClB,cAAsC;QAEtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC7C,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IACE,GAAG,CAAC,SAAS,KAAK,cAAc,CAAC,qBAAqB;gBACtD,GAAG,CAAC,SAAS,KAAK,cAAc,CAAC,eAAe;gBAChD,GAAG,CAAC,SAAS,KAAK,cAAc,CAAC,4BAA4B,EAC7D,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,GAAG,CAAC,SAAS,KAAK,cAAc,CAAC,gBAAgB,EAAE,CAAC;gBACtD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,uHAAuH;QACvH,wCAAwC;QACxC,IACE,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,qBAAqB;YAC9C,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,sCAAsC,EAC7D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,sBAAsB;QACtB,IAAI,sBAAsB,GAAG,KAAK,CAAC;QACnC,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,eAAe,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAChF,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QACrF,CAAC;QACD,IAAI,sBAAsB,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,sBAAsB,CAAC;IAChC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { sleep } from \"../common/helper.js\";\nimport { StatusCodes, SubStatusCodes } from \"../common/statusCodes.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { ErrorResponse } from \"../index.js\";\nimport type { RetryPolicy } from \"./RetryPolicy.js\";\n\n/**\n * This class implements the retry policy for bulk operations.\n * @hidden\n */\nexport class BulkExecutionRetryPolicy implements RetryPolicy {\n retryAfterInMs: number;\n private retriesOn410: number;\n private readonly MaxRetriesOn410 = 10;\n private readonly SubstatusCodeBatchResponseSizeExceeded = 3402;\n nextRetryPolicy: RetryPolicy;\n\n constructor(nextRetryPolicy: RetryPolicy) {\n this.nextRetryPolicy = nextRetryPolicy;\n this.retriesOn410 = 0;\n }\n\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<boolean | [boolean, string]> {\n if (!err) {\n return false;\n }\n if (err.code === StatusCodes.Gone) {\n this.retriesOn410++;\n\n if (this.retriesOn410 > this.MaxRetriesOn410) {\n return false;\n }\n if (\n err.substatus === SubStatusCodes.PartitionKeyRangeGone ||\n err.substatus === SubStatusCodes.CompletingSplit ||\n err.substatus === SubStatusCodes.CompletingPartitionMigration\n ) {\n return true;\n }\n if (err.substatus === SubStatusCodes.NameCacheIsStale) {\n return true;\n }\n }\n\n // API can return 413 which means the response is bigger than 4Mb.\n // Operations that exceed the 4Mb limit are returned as 413/3402, while the operations within the 4Mb limit will be 200\n // TODO: better way to handle this error\n if (\n err.code === StatusCodes.RequestEntityTooLarge &&\n err.substatus === this.SubstatusCodeBatchResponseSizeExceeded\n ) {\n return true;\n }\n // check for 429 error\n let shouldRetryForThrottle = false;\n if (err.code === StatusCodes.TooManyRequests) {\n const retryResult = await this.nextRetryPolicy.shouldRetry(err, diagnosticNode);\n shouldRetryForThrottle = Array.isArray(retryResult) ? retryResult[0] : retryResult;\n }\n if (shouldRetryForThrottle) {\n await sleep(this.nextRetryPolicy.retryAfterInMs);\n }\n return shouldRetryForThrottle;\n }\n}\n"]}
1
+ {"version":3,"file":"bulkExecutionRetryPolicy.js","sourceRoot":"","sources":["../../../src/retry/bulkExecutionRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAKvE;;;GAGG;AACH,MAAM,OAAO,wBAAwB;IACnC,cAAc,CAAS;IACf,YAAY,CAAS;IACZ,eAAe,GAAG,EAAE,CAAC;IACrB,sCAAsC,GAAG,IAAI,CAAC;IAC/D,eAAe,CAAc;IAE7B,YAAY,eAA4B;QACtC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,GAAkB,EAClB,cAAsC;QAEtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC7C,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IACE,GAAG,CAAC,SAAS,KAAK,cAAc,CAAC,qBAAqB;gBACtD,GAAG,CAAC,SAAS,KAAK,cAAc,CAAC,eAAe;gBAChD,GAAG,CAAC,SAAS,KAAK,cAAc,CAAC,4BAA4B,EAC7D,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,GAAG,CAAC,SAAS,KAAK,cAAc,CAAC,gBAAgB,EAAE,CAAC;gBACtD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,uHAAuH;QACvH,wCAAwC;QACxC,IACE,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,qBAAqB;YAC9C,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,sCAAsC,EAC7D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,sBAAsB;QACtB,IAAI,sBAAsB,GAAG,KAAK,CAAC;QACnC,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,eAAe,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAChF,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QACrF,CAAC;QACD,IAAI,sBAAsB,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,sBAAsB,CAAC;IAChC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { sleep } from \"../common/helper.js\";\nimport { StatusCodes, SubStatusCodes } from \"../common/statusCodes.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { ErrorResponse } from \"../index.js\";\nimport type { RetryPolicy } from \"./RetryPolicy.js\";\n\n/**\n * This class implements the retry policy for bulk operations.\n * @hidden\n */\nexport class BulkExecutionRetryPolicy implements RetryPolicy {\n retryAfterInMs: number;\n private retriesOn410: number;\n private readonly MaxRetriesOn410 = 10;\n private readonly SubstatusCodeBatchResponseSizeExceeded = 3402;\n nextRetryPolicy: RetryPolicy;\n\n constructor(nextRetryPolicy: RetryPolicy) {\n this.nextRetryPolicy = nextRetryPolicy;\n this.retriesOn410 = 0;\n }\n\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<boolean | [boolean, string]> {\n if (!err) {\n return false;\n }\n if (err.code === StatusCodes.Gone) {\n this.retriesOn410++;\n\n if (this.retriesOn410 > this.MaxRetriesOn410) {\n return false;\n }\n if (\n err.substatus === SubStatusCodes.PartitionKeyRangeGone ||\n err.substatus === SubStatusCodes.CompletingSplit ||\n err.substatus === SubStatusCodes.CompletingPartitionMigration\n ) {\n return true;\n }\n if (err.substatus === SubStatusCodes.NameCacheIsStale) {\n return true;\n }\n }\n\n // API can return 413 which means the response is bigger than 4Mb.\n // Operations that exceed the 4Mb limit are returned as 413/3402, while the operations within the 4Mb limit will be 200\n // TODO: better way to handle this error\n if (\n err.code === StatusCodes.RequestEntityTooLarge &&\n err.substatus === this.SubstatusCodeBatchResponseSizeExceeded\n ) {\n return true;\n }\n // check for 429 error\n let shouldRetryForThrottle = false;\n if (err.code === StatusCodes.TooManyRequests) {\n const retryResult = await this.nextRetryPolicy.shouldRetry(err, diagnosticNode);\n shouldRetryForThrottle = Array.isArray(retryResult) ? retryResult[0] : retryResult;\n }\n if (shouldRetryForThrottle) {\n await sleep(this.nextRetryPolicy.retryAfterInMs);\n }\n return shouldRetryForThrottle;\n }\n}\n"]}
@@ -110,11 +110,12 @@ function needsRetry(operationType, code) {
110
110
  * @hidden
111
111
  */
112
112
  export class DefaultRetryPolicy {
113
+ operationType;
114
+ maxTries = 10;
115
+ currentRetryAttemptCount = 0;
116
+ retryAfterInMs = 1000;
113
117
  constructor(operationType) {
114
118
  this.operationType = operationType;
115
- this.maxTries = 10;
116
- this.currentRetryAttemptCount = 0;
117
- this.retryAfterInMs = 1000;
118
119
  }
119
120
  /**
120
121
  * Determines whether the request should be retried or not.
@@ -1 +1 @@
1
- {"version":3,"file":"defaultRetryPolicy.js","sourceRoot":"","sources":["../../../src/retry/defaultRetryPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D;;GAEG;AACH,6BAA6B;AAC7B,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAC7C;;GAEG;AACH,MAAM,yBAAyB,GAAG,KAAK,CAAC;AACxC;;GAEG;AACH,MAAM,uBAAuB,GAAG,KAAK,CAAC;AACtC;;GAEG;AACH,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC;;GAEG;AACH,MAAM,sBAAsB,GAAG,KAAK,CAAC;AACrC;;GAEG;AACH,MAAM,qCAAqC,GAAG,KAAK,CAAC;AACpD;;GAEG;AACH,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAC5C;;GAEG;AACH,MAAM,0BAA0B,GAAG,KAAK,CAAC;AACzC;;GAEG;AACH,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAC3C;;GAEG;AACH,MAAM,oCAAoC,GAAG,KAAK,CAAC;AACnD;;GAEG;AACH,MAAM,yBAAyB,GAAG,KAAK,CAAC;AACxC;;GAEG;AACH,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC;;GAEG;AACH,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC;;GAEG;AACH,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC;;GAEG;AACH,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC;;GAEG;AAEH,oBAAoB;AACpB;;GAEG;AACH,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAE1C,mBAAmB;AACnB;;GAEG;AACH,MAAM,UAAU,GAAG,OAAO,CAAC;AAE3B;;GAEG;AACH,MAAM,sBAAsB,GAAG;IAC7B,8BAA8B;IAC9B,yBAAyB;IACzB,uBAAuB;IACvB,iBAAiB;IACjB,sBAAsB;IACtB,qCAAqC;IACrC,6BAA6B;IAC7B,0BAA0B;IAC1B,4BAA4B;IAC5B,oCAAoC;IACpC,yBAAyB;IACzB,wBAAwB;IACxB,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB;IAChB,UAAU;CACX,CAAC;AAEF;;GAEG;AACH,SAAS,UAAU,CAAC,aAA4B,EAAE,IAAqB;IACrE,OAAO,CACL,IAAI,KAAK,WAAW,CAAC,SAAS;QAC9B,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC,IAAI,IAAI,aAAa,KAAK,aAAa,CAAC,KAAK,CAAC;YAC9E,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACzC,CAAC;AACJ,CAAC;AACD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAK7B,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAJxC,aAAQ,GAAW,EAAE,CAAC;QACtB,6BAAwB,GAAW,CAAC,CAAC;QACtC,mBAAc,GAAW,IAAI,CAAC;IAEc,CAAC;IACpD;;;OAGG;IACI,KAAK,CAAC,WAAW,CACtB,GAAkB,EAClB,cAAsC;QAEtC,IAAI,GAAG,EAAE,CAAC;YACR,IACE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ;gBAC7C,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,EACxC,CAAC;gBACD,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7D,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport { OperationType, StatusCodes } from \"../common/index.js\";\nimport type { ErrorResponse } from \"../request/index.js\";\nimport { TimeoutErrorCode } from \"../request/TimeoutError.js\";\nimport type { RetryPolicy } from \"./RetryPolicy.js\";\n\n/**\n * @hidden\n */\n// Windows Socket Error Codes\nconst WindowsInterruptedFunctionCall = 10004;\n/**\n * @hidden\n */\nconst WindowsFileHandleNotValid = 10009;\n/**\n * @hidden\n */\nconst WindowsPermissionDenied = 10013;\n/**\n * @hidden\n */\nconst WindowsBadAddress = 10014;\n/**\n * @hidden\n */\nconst WindowsInvalidArgumnet = 10022;\n/**\n * @hidden\n */\nconst WindowsResourceTemporarilyUnavailable = 10035;\n/**\n * @hidden\n */\nconst WindowsOperationNowInProgress = 10036;\n/**\n * @hidden\n */\nconst WindowsAddressAlreadyInUse = 10048;\n/**\n * @hidden\n */\nconst WindowsConnectionResetByPeer = 10054;\n/**\n * @hidden\n */\nconst WindowsCannotSendAfterSocketShutdown = 10058;\n/**\n * @hidden\n */\nconst WindowsConnectionTimedOut = 10060;\n/**\n * @hidden\n */\nconst WindowsConnectionRefused = 10061;\n/**\n * @hidden\n */\nconst WindowsNameTooLong = 10063;\n/**\n * @hidden\n */\nconst WindowsHostIsDown = 10064;\n/**\n * @hidden\n */\nconst WindowsNoRouteTohost = 10065;\n/**\n * @hidden\n */\n\n// Linux Error Codes\n/**\n * @hidden\n */\nconst LinuxConnectionReset = \"ECONNRESET\";\n\n// Node Error Codes\n/**\n * @hidden\n */\nconst BrokenPipe = \"EPIPE\";\n\n/**\n * @hidden\n */\nconst CONNECTION_ERROR_CODES = [\n WindowsInterruptedFunctionCall,\n WindowsFileHandleNotValid,\n WindowsPermissionDenied,\n WindowsBadAddress,\n WindowsInvalidArgumnet,\n WindowsResourceTemporarilyUnavailable,\n WindowsOperationNowInProgress,\n WindowsAddressAlreadyInUse,\n WindowsConnectionResetByPeer,\n WindowsCannotSendAfterSocketShutdown,\n WindowsConnectionTimedOut,\n WindowsConnectionRefused,\n WindowsNameTooLong,\n WindowsHostIsDown,\n WindowsNoRouteTohost,\n LinuxConnectionReset,\n TimeoutErrorCode,\n BrokenPipe,\n];\n\n/**\n * @hidden\n */\nfunction needsRetry(operationType: OperationType, code: number | string): boolean {\n return (\n code === StatusCodes.ENOTFOUND ||\n ((operationType === OperationType.Read || operationType === OperationType.Query) &&\n CONNECTION_ERROR_CODES.includes(code))\n );\n}\n/**\n * This class implements the default connection retry policy for requests.\n * @hidden\n */\nexport class DefaultRetryPolicy implements RetryPolicy {\n private maxTries: number = 10;\n private currentRetryAttemptCount: number = 0;\n public retryAfterInMs: number = 1000;\n\n constructor(private operationType: OperationType) {}\n /**\n * Determines whether the request should be retried or not.\n * @param err - Error returned by the request.\n */\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<boolean> {\n if (err) {\n if (\n this.currentRetryAttemptCount < this.maxTries &&\n needsRetry(this.operationType, err.code)\n ) {\n diagnosticNode.addData({ successfulRetryPolicy: \"default\" });\n this.currentRetryAttemptCount++;\n return true;\n }\n }\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"defaultRetryPolicy.js","sourceRoot":"","sources":["../../../src/retry/defaultRetryPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D;;GAEG;AACH,6BAA6B;AAC7B,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAC7C;;GAEG;AACH,MAAM,yBAAyB,GAAG,KAAK,CAAC;AACxC;;GAEG;AACH,MAAM,uBAAuB,GAAG,KAAK,CAAC;AACtC;;GAEG;AACH,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC;;GAEG;AACH,MAAM,sBAAsB,GAAG,KAAK,CAAC;AACrC;;GAEG;AACH,MAAM,qCAAqC,GAAG,KAAK,CAAC;AACpD;;GAEG;AACH,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAC5C;;GAEG;AACH,MAAM,0BAA0B,GAAG,KAAK,CAAC;AACzC;;GAEG;AACH,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAC3C;;GAEG;AACH,MAAM,oCAAoC,GAAG,KAAK,CAAC;AACnD;;GAEG;AACH,MAAM,yBAAyB,GAAG,KAAK,CAAC;AACxC;;GAEG;AACH,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC;;GAEG;AACH,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC;;GAEG;AACH,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC;;GAEG;AACH,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC;;GAEG;AAEH,oBAAoB;AACpB;;GAEG;AACH,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAE1C,mBAAmB;AACnB;;GAEG;AACH,MAAM,UAAU,GAAG,OAAO,CAAC;AAE3B;;GAEG;AACH,MAAM,sBAAsB,GAAG;IAC7B,8BAA8B;IAC9B,yBAAyB;IACzB,uBAAuB;IACvB,iBAAiB;IACjB,sBAAsB;IACtB,qCAAqC;IACrC,6BAA6B;IAC7B,0BAA0B;IAC1B,4BAA4B;IAC5B,oCAAoC;IACpC,yBAAyB;IACzB,wBAAwB;IACxB,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB;IAChB,UAAU;CACX,CAAC;AAEF;;GAEG;AACH,SAAS,UAAU,CAAC,aAA4B,EAAE,IAAqB;IACrE,OAAO,CACL,IAAI,KAAK,WAAW,CAAC,SAAS;QAC9B,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC,IAAI,IAAI,aAAa,KAAK,aAAa,CAAC,KAAK,CAAC;YAC9E,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACzC,CAAC;AACJ,CAAC;AACD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAKT;IAJZ,QAAQ,GAAW,EAAE,CAAC;IACtB,wBAAwB,GAAW,CAAC,CAAC;IACtC,cAAc,GAAW,IAAI,CAAC;IAErC,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IACpD;;;OAGG;IACI,KAAK,CAAC,WAAW,CACtB,GAAkB,EAClB,cAAsC;QAEtC,IAAI,GAAG,EAAE,CAAC;YACR,IACE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ;gBAC7C,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,EACxC,CAAC;gBACD,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7D,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport { OperationType, StatusCodes } from \"../common/index.js\";\nimport type { ErrorResponse } from \"../request/index.js\";\nimport { TimeoutErrorCode } from \"../request/TimeoutError.js\";\nimport type { RetryPolicy } from \"./RetryPolicy.js\";\n\n/**\n * @hidden\n */\n// Windows Socket Error Codes\nconst WindowsInterruptedFunctionCall = 10004;\n/**\n * @hidden\n */\nconst WindowsFileHandleNotValid = 10009;\n/**\n * @hidden\n */\nconst WindowsPermissionDenied = 10013;\n/**\n * @hidden\n */\nconst WindowsBadAddress = 10014;\n/**\n * @hidden\n */\nconst WindowsInvalidArgumnet = 10022;\n/**\n * @hidden\n */\nconst WindowsResourceTemporarilyUnavailable = 10035;\n/**\n * @hidden\n */\nconst WindowsOperationNowInProgress = 10036;\n/**\n * @hidden\n */\nconst WindowsAddressAlreadyInUse = 10048;\n/**\n * @hidden\n */\nconst WindowsConnectionResetByPeer = 10054;\n/**\n * @hidden\n */\nconst WindowsCannotSendAfterSocketShutdown = 10058;\n/**\n * @hidden\n */\nconst WindowsConnectionTimedOut = 10060;\n/**\n * @hidden\n */\nconst WindowsConnectionRefused = 10061;\n/**\n * @hidden\n */\nconst WindowsNameTooLong = 10063;\n/**\n * @hidden\n */\nconst WindowsHostIsDown = 10064;\n/**\n * @hidden\n */\nconst WindowsNoRouteTohost = 10065;\n/**\n * @hidden\n */\n\n// Linux Error Codes\n/**\n * @hidden\n */\nconst LinuxConnectionReset = \"ECONNRESET\";\n\n// Node Error Codes\n/**\n * @hidden\n */\nconst BrokenPipe = \"EPIPE\";\n\n/**\n * @hidden\n */\nconst CONNECTION_ERROR_CODES = [\n WindowsInterruptedFunctionCall,\n WindowsFileHandleNotValid,\n WindowsPermissionDenied,\n WindowsBadAddress,\n WindowsInvalidArgumnet,\n WindowsResourceTemporarilyUnavailable,\n WindowsOperationNowInProgress,\n WindowsAddressAlreadyInUse,\n WindowsConnectionResetByPeer,\n WindowsCannotSendAfterSocketShutdown,\n WindowsConnectionTimedOut,\n WindowsConnectionRefused,\n WindowsNameTooLong,\n WindowsHostIsDown,\n WindowsNoRouteTohost,\n LinuxConnectionReset,\n TimeoutErrorCode,\n BrokenPipe,\n];\n\n/**\n * @hidden\n */\nfunction needsRetry(operationType: OperationType, code: number | string): boolean {\n return (\n code === StatusCodes.ENOTFOUND ||\n ((operationType === OperationType.Read || operationType === OperationType.Query) &&\n CONNECTION_ERROR_CODES.includes(code))\n );\n}\n/**\n * This class implements the default connection retry policy for requests.\n * @hidden\n */\nexport class DefaultRetryPolicy implements RetryPolicy {\n private maxTries: number = 10;\n private currentRetryAttemptCount: number = 0;\n public retryAfterInMs: number = 1000;\n\n constructor(private operationType: OperationType) {}\n /**\n * Determines whether the request should be retried or not.\n * @param err - Error returned by the request.\n */\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<boolean> {\n if (err) {\n if (\n this.currentRetryAttemptCount < this.maxTries &&\n needsRetry(this.operationType, err.code)\n ) {\n diagnosticNode.addData({ successfulRetryPolicy: \"default\" });\n this.currentRetryAttemptCount++;\n return true;\n }\n }\n return false;\n }\n}\n"]}
@@ -4,6 +4,17 @@ import { isReadRequest } from "../common/helper.js";
4
4
  * @hidden
5
5
  */
6
6
  export class EndpointDiscoveryRetryPolicy {
7
+ globalEndpointManager;
8
+ operationType;
9
+ globalPartitionEndpointManager;
10
+ /** Current retry attempt count. */
11
+ currentRetryAttemptCount;
12
+ /** Retry interval in milliseconds. */
13
+ retryAfterInMs;
14
+ /** Max number of retry attempts to perform. */
15
+ maxTries;
16
+ static maxTries = 120; // TODO: Constant?
17
+ static retryAfterInMs = 1000;
7
18
  /**
8
19
  * @param globalEndpointManager - The GlobalEndpointManager instance.
9
20
  */
@@ -52,6 +63,4 @@ export class EndpointDiscoveryRetryPolicy {
52
63
  return true;
53
64
  }
54
65
  }
55
- EndpointDiscoveryRetryPolicy.maxTries = 120; // TODO: Constant?
56
- EndpointDiscoveryRetryPolicy.retryAfterInMs = 1000;
57
66
  //# sourceMappingURL=endpointDiscoveryRetryPolicy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"endpointDiscoveryRetryPolicy.js","sourceRoot":"","sources":["../../../src/retry/endpointDiscoveryRetryPolicy.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD;;;GAGG;AACH,MAAM,OAAO,4BAA4B;IAWvC;;OAEG;IACH,YACU,qBAA4C,EAC5C,aAA4B,EAC5B,8BAA+D;QAF/D,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,kBAAa,GAAb,aAAa,CAAe;QAC5B,mCAA8B,GAA9B,8BAA8B,CAAiC;QAEvE,IAAI,CAAC,QAAQ,GAAG,4BAA4B,CAAC,QAAQ,CAAC;QACtD,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,4BAA4B,CAAC,cAAc,CAAC;IACpE,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,WAAW,CACtB,GAAkB,EAClB,cAAsC,EACtC,YAA2B,EAC3B,gBAAyB,EACzB,cAA+B;QAE/B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,8BAA8B,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,yBAAyB,CACrF,cAAc,EACd,cAAc,CACf,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,qBAAqB,CAAC,qCAAqC,CACpE,cAAc,EACd,gBAAgB,CACjB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,qBAAqB,CAAC,sCAAsC,CACrE,cAAc,EACd,gBAAgB,CACjB,CAAC;QACJ,CAAC;QAED,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC;QACxD,YAAY,CAAC,6BAA6B,GAAG,KAAK,CAAC;QACnD,YAAY,CAAC,gCAAgC,GAAG,KAAK,CAAC;QACtD,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;;AAxEuB,qCAAQ,GAAG,GAAG,CAAC,CAAC,kBAAkB;AAClC,2CAAc,GAAG,IAAI,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { OperationType } from \"../common/index.js\";\nimport { isReadRequest } from \"../common/helper.js\";\nimport type { GlobalEndpointManager } from \"../globalEndpointManager.js\";\nimport type { ErrorResponse, RequestContext } from \"../request/index.js\";\nimport type { RetryContext } from \"./RetryContext.js\";\nimport type { RetryPolicy } from \"./RetryPolicy.js\";\nimport { GlobalPartitionEndpointManager } from \"../globalPartitionEndpointManager.js\";\n\n/**\n * This class implements the retry policy for endpoint discovery.\n * @hidden\n */\nexport class EndpointDiscoveryRetryPolicy implements RetryPolicy {\n /** Current retry attempt count. */\n public currentRetryAttemptCount: number;\n /** Retry interval in milliseconds. */\n public retryAfterInMs: number;\n\n /** Max number of retry attempts to perform. */\n private maxTries: number;\n private static readonly maxTries = 120; // TODO: Constant?\n private static readonly retryAfterInMs = 1000;\n\n /**\n * @param globalEndpointManager - The GlobalEndpointManager instance.\n */\n constructor(\n private globalEndpointManager: GlobalEndpointManager,\n private operationType: OperationType,\n private globalPartitionEndpointManager?: GlobalPartitionEndpointManager,\n ) {\n this.maxTries = EndpointDiscoveryRetryPolicy.maxTries;\n this.currentRetryAttemptCount = 0;\n this.retryAfterInMs = EndpointDiscoveryRetryPolicy.retryAfterInMs;\n }\n\n /**\n * Determines whether the request should be retried or not.\n * @param err - Error returned by the request.\n */\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n retryContext?: RetryContext,\n locationEndpoint?: string,\n requestContext?: RequestContext,\n ): Promise<boolean | [boolean, string]> {\n if (!err) {\n return false;\n }\n\n if (!retryContext || !locationEndpoint) {\n return false;\n }\n\n if (!this.globalEndpointManager.enableEndpointDiscovery) {\n return false;\n }\n\n if (this.globalPartitionEndpointManager) {\n const didFailover = await this.globalPartitionEndpointManager.tryPartitionLevelFailover(\n requestContext,\n diagnosticNode,\n );\n if (didFailover) {\n return true;\n }\n }\n\n if (this.currentRetryAttemptCount >= this.maxTries) {\n return false;\n }\n\n this.currentRetryAttemptCount++;\n\n if (isReadRequest(this.operationType)) {\n await this.globalEndpointManager.markCurrentLocationUnavailableForRead(\n diagnosticNode,\n locationEndpoint,\n );\n } else {\n await this.globalEndpointManager.markCurrentLocationUnavailableForWrite(\n diagnosticNode,\n locationEndpoint,\n );\n }\n\n retryContext.retryCount = this.currentRetryAttemptCount;\n retryContext.clearSessionTokenNotAvailable = false;\n retryContext.retryRequestOnPreferredLocations = false;\n diagnosticNode.addData({ successfulRetryPolicy: \"endpointDiscovery\" });\n return true;\n }\n}\n"]}
1
+ {"version":3,"file":"endpointDiscoveryRetryPolicy.js","sourceRoot":"","sources":["../../../src/retry/endpointDiscoveryRetryPolicy.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD;;;GAGG;AACH,MAAM,OAAO,4BAA4B;IAe7B;IACA;IACA;IAhBV,mCAAmC;IAC5B,wBAAwB,CAAS;IACxC,sCAAsC;IAC/B,cAAc,CAAS;IAE9B,+CAA+C;IACvC,QAAQ,CAAS;IACjB,MAAM,CAAU,QAAQ,GAAG,GAAG,CAAC,CAAC,kBAAkB;IAClD,MAAM,CAAU,cAAc,GAAG,IAAI,CAAC;IAE9C;;OAEG;IACH,YACU,qBAA4C,EAC5C,aAA4B,EAC5B,8BAA+D;QAF/D,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,kBAAa,GAAb,aAAa,CAAe;QAC5B,mCAA8B,GAA9B,8BAA8B,CAAiC;QAEvE,IAAI,CAAC,QAAQ,GAAG,4BAA4B,CAAC,QAAQ,CAAC;QACtD,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,4BAA4B,CAAC,cAAc,CAAC;IACpE,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,WAAW,CACtB,GAAkB,EAClB,cAAsC,EACtC,YAA2B,EAC3B,gBAAyB,EACzB,cAA+B;QAE/B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,8BAA8B,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,yBAAyB,CACrF,cAAc,EACd,cAAc,CACf,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,qBAAqB,CAAC,qCAAqC,CACpE,cAAc,EACd,gBAAgB,CACjB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,qBAAqB,CAAC,sCAAsC,CACrE,cAAc,EACd,gBAAgB,CACjB,CAAC;QACJ,CAAC;QAED,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC;QACxD,YAAY,CAAC,6BAA6B,GAAG,KAAK,CAAC;QACnD,YAAY,CAAC,gCAAgC,GAAG,KAAK,CAAC;QACtD,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { OperationType } from \"../common/index.js\";\nimport { isReadRequest } from \"../common/helper.js\";\nimport type { GlobalEndpointManager } from \"../globalEndpointManager.js\";\nimport type { ErrorResponse, RequestContext } from \"../request/index.js\";\nimport type { RetryContext } from \"./RetryContext.js\";\nimport type { RetryPolicy } from \"./RetryPolicy.js\";\nimport { GlobalPartitionEndpointManager } from \"../globalPartitionEndpointManager.js\";\n\n/**\n * This class implements the retry policy for endpoint discovery.\n * @hidden\n */\nexport class EndpointDiscoveryRetryPolicy implements RetryPolicy {\n /** Current retry attempt count. */\n public currentRetryAttemptCount: number;\n /** Retry interval in milliseconds. */\n public retryAfterInMs: number;\n\n /** Max number of retry attempts to perform. */\n private maxTries: number;\n private static readonly maxTries = 120; // TODO: Constant?\n private static readonly retryAfterInMs = 1000;\n\n /**\n * @param globalEndpointManager - The GlobalEndpointManager instance.\n */\n constructor(\n private globalEndpointManager: GlobalEndpointManager,\n private operationType: OperationType,\n private globalPartitionEndpointManager?: GlobalPartitionEndpointManager,\n ) {\n this.maxTries = EndpointDiscoveryRetryPolicy.maxTries;\n this.currentRetryAttemptCount = 0;\n this.retryAfterInMs = EndpointDiscoveryRetryPolicy.retryAfterInMs;\n }\n\n /**\n * Determines whether the request should be retried or not.\n * @param err - Error returned by the request.\n */\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n retryContext?: RetryContext,\n locationEndpoint?: string,\n requestContext?: RequestContext,\n ): Promise<boolean | [boolean, string]> {\n if (!err) {\n return false;\n }\n\n if (!retryContext || !locationEndpoint) {\n return false;\n }\n\n if (!this.globalEndpointManager.enableEndpointDiscovery) {\n return false;\n }\n\n if (this.globalPartitionEndpointManager) {\n const didFailover = await this.globalPartitionEndpointManager.tryPartitionLevelFailover(\n requestContext,\n diagnosticNode,\n );\n if (didFailover) {\n return true;\n }\n }\n\n if (this.currentRetryAttemptCount >= this.maxTries) {\n return false;\n }\n\n this.currentRetryAttemptCount++;\n\n if (isReadRequest(this.operationType)) {\n await this.globalEndpointManager.markCurrentLocationUnavailableForRead(\n diagnosticNode,\n locationEndpoint,\n );\n } else {\n await this.globalEndpointManager.markCurrentLocationUnavailableForWrite(\n diagnosticNode,\n locationEndpoint,\n );\n }\n\n retryContext.retryCount = this.currentRetryAttemptCount;\n retryContext.clearSessionTokenNotAvailable = false;\n retryContext.retryRequestOnPreferredLocations = false;\n diagnosticNode.addData({ successfulRetryPolicy: \"endpointDiscovery\" });\n return true;\n }\n}\n"]}
@@ -6,18 +6,28 @@ import { Constants } from "../common/constants.js";
6
6
  * @hidden
7
7
  */
8
8
  export class ResourceThrottleRetryPolicy {
9
+ /** Current retry attempt count. */
10
+ currentRetryAttemptCount = 0;
11
+ /** Cummulative wait time in milliseconds for a request while the retries are happening. */
12
+ cummulativeWaitTimeinMs = 0;
13
+ /** Retry interval in milliseconds to wait before the next request will be sent. */
14
+ retryAfterInMs = 0;
15
+ /** Max wait time in milliseconds to wait for a request while the retries are happening. */
16
+ timeoutInMs;
17
+ /**
18
+ * @param maxTries - Max number of retries to be performed for a request.
19
+ * @param fixedRetryIntervalInMs - Fixed retry interval in milliseconds to wait between each
20
+ * retry ignoring the retryAfter returned as part of the response.
21
+ * @param timeoutInSeconds - Max wait time in seconds to wait for a request while the
22
+ * retries are happening.
23
+ */
24
+ maxTries;
25
+ fixedRetryIntervalInMs;
9
26
  constructor(options) {
10
- var _a, _b, _c;
11
- /** Current retry attempt count. */
12
- this.currentRetryAttemptCount = 0;
13
- /** Cummulative wait time in milliseconds for a request while the retries are happening. */
14
- this.cummulativeWaitTimeinMs = 0;
15
- /** Retry interval in milliseconds to wait before the next request will be sent. */
16
- this.retryAfterInMs = 0;
17
- this.maxTries = (_a = options.maxRetryAttemptCount) !== null && _a !== void 0 ? _a : Constants.ThrottledRequestMaxRetryAttemptCount;
27
+ this.maxTries = options.maxRetryAttemptCount ?? Constants.ThrottledRequestMaxRetryAttemptCount;
18
28
  this.fixedRetryIntervalInMs =
19
- (_b = options.fixedRetryIntervalInMilliseconds) !== null && _b !== void 0 ? _b : Constants.ThrottledRequestFixedRetryIntervalInMs;
20
- const timeoutInSeconds = (_c = options.maxWaitTimeInSeconds) !== null && _c !== void 0 ? _c : Constants.ThrottledRequestMaxWaitTimeInSeconds;
29
+ options.fixedRetryIntervalInMilliseconds ?? Constants.ThrottledRequestFixedRetryIntervalInMs;
30
+ const timeoutInSeconds = options.maxWaitTimeInSeconds ?? Constants.ThrottledRequestMaxWaitTimeInSeconds;
21
31
  this.timeoutInMs = timeoutInSeconds * 1000;
22
32
  this.currentRetryAttemptCount = 0;
23
33
  this.cummulativeWaitTimeinMs = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"resourceThrottleRetryPolicy.js","sourceRoot":"","sources":["../../../src/retry/resourceThrottleRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKnD;;;GAGG;AACH,MAAM,OAAO,2BAA2B;IAoBtC,YAAY,OAAqB;;QAnBjC,mCAAmC;QAC5B,6BAAwB,GAAW,CAAC,CAAC;QAC5C,2FAA2F;QACpF,4BAAuB,GAAW,CAAC,CAAC;QAC3C,mFAAmF;QAC5E,mBAAc,GAAW,CAAC,CAAC;QAehC,IAAI,CAAC,QAAQ,GAAG,MAAA,OAAO,CAAC,oBAAoB,mCAAI,SAAS,CAAC,oCAAoC,CAAC;QAC/F,IAAI,CAAC,sBAAsB;YACzB,MAAA,OAAO,CAAC,gCAAgC,mCAAI,SAAS,CAAC,sCAAsC,CAAC;QAC/F,MAAM,gBAAgB,GACpB,MAAA,OAAO,CAAC,oBAAoB,mCAAI,SAAS,CAAC,oCAAoC,CAAC;QACjF,IAAI,CAAC,WAAW,GAAG,gBAAgB,GAAG,IAAI,CAAC;QAC3C,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACnC,CAAC;IACD;;;OAGG;IACI,KAAK,CAAC,WAAW,CACtB,GAAkB,EAClB,cAAsC;QAEtC,gCAAgC;QAChC,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClD,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBAExB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC;gBACpD,CAAC;qBAAM,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;oBAC9B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;gBAC3C,CAAC;gBAED,IAAI,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBACpD,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,cAAc,CAAC;oBACpD,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBACtE,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants } from \"../common/constants.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { ErrorResponse } from \"../request/index.js\";\nimport type { RetryOptions } from \"./retryOptions.js\";\n\n/**\n * This class implements the resource throttle retry policy for requests.\n * @hidden\n */\nexport class ResourceThrottleRetryPolicy {\n /** Current retry attempt count. */\n public currentRetryAttemptCount: number = 0;\n /** Cummulative wait time in milliseconds for a request while the retries are happening. */\n public cummulativeWaitTimeinMs: number = 0;\n /** Retry interval in milliseconds to wait before the next request will be sent. */\n public retryAfterInMs: number = 0;\n\n /** Max wait time in milliseconds to wait for a request while the retries are happening. */\n private timeoutInMs: number;\n /**\n * @param maxTries - Max number of retries to be performed for a request.\n * @param fixedRetryIntervalInMs - Fixed retry interval in milliseconds to wait between each\n * retry ignoring the retryAfter returned as part of the response.\n * @param timeoutInSeconds - Max wait time in seconds to wait for a request while the\n * retries are happening.\n */\n\n private maxTries: number;\n private fixedRetryIntervalInMs: number;\n constructor(options: RetryOptions) {\n this.maxTries = options.maxRetryAttemptCount ?? Constants.ThrottledRequestMaxRetryAttemptCount;\n this.fixedRetryIntervalInMs =\n options.fixedRetryIntervalInMilliseconds ?? Constants.ThrottledRequestFixedRetryIntervalInMs;\n const timeoutInSeconds =\n options.maxWaitTimeInSeconds ?? Constants.ThrottledRequestMaxWaitTimeInSeconds;\n this.timeoutInMs = timeoutInSeconds * 1000;\n this.currentRetryAttemptCount = 0;\n this.cummulativeWaitTimeinMs = 0;\n }\n /**\n * Determines whether the request should be retried or not.\n * @param err - Error returned by the request.\n */\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<boolean> {\n // TODO: any custom error object\n if (err) {\n if (this.currentRetryAttemptCount < this.maxTries) {\n this.currentRetryAttemptCount++;\n this.retryAfterInMs = 0;\n\n if (this.fixedRetryIntervalInMs) {\n this.retryAfterInMs = this.fixedRetryIntervalInMs;\n } else if (err.retryAfterInMs) {\n this.retryAfterInMs = err.retryAfterInMs;\n }\n\n if (this.cummulativeWaitTimeinMs < this.timeoutInMs) {\n this.cummulativeWaitTimeinMs += this.retryAfterInMs;\n diagnosticNode.addData({ successfulRetryPolicy: \"resourceThrottle\" });\n return true;\n }\n }\n }\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"resourceThrottleRetryPolicy.js","sourceRoot":"","sources":["../../../src/retry/resourceThrottleRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKnD;;;GAGG;AACH,MAAM,OAAO,2BAA2B;IACtC,mCAAmC;IAC5B,wBAAwB,GAAW,CAAC,CAAC;IAC5C,2FAA2F;IACpF,uBAAuB,GAAW,CAAC,CAAC;IAC3C,mFAAmF;IAC5E,cAAc,GAAW,CAAC,CAAC;IAElC,2FAA2F;IACnF,WAAW,CAAS;IAC5B;;;;;;OAMG;IAEK,QAAQ,CAAS;IACjB,sBAAsB,CAAS;IACvC,YAAY,OAAqB;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,oBAAoB,IAAI,SAAS,CAAC,oCAAoC,CAAC;QAC/F,IAAI,CAAC,sBAAsB;YACzB,OAAO,CAAC,gCAAgC,IAAI,SAAS,CAAC,sCAAsC,CAAC;QAC/F,MAAM,gBAAgB,GACpB,OAAO,CAAC,oBAAoB,IAAI,SAAS,CAAC,oCAAoC,CAAC;QACjF,IAAI,CAAC,WAAW,GAAG,gBAAgB,GAAG,IAAI,CAAC;QAC3C,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACnC,CAAC;IACD;;;OAGG;IACI,KAAK,CAAC,WAAW,CACtB,GAAkB,EAClB,cAAsC;QAEtC,gCAAgC;QAChC,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClD,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBAExB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC;gBACpD,CAAC;qBAAM,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;oBAC9B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;gBAC3C,CAAC;gBAED,IAAI,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBACpD,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,cAAc,CAAC;oBACpD,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBACtE,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants } from \"../common/constants.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { ErrorResponse } from \"../request/index.js\";\nimport type { RetryOptions } from \"./retryOptions.js\";\n\n/**\n * This class implements the resource throttle retry policy for requests.\n * @hidden\n */\nexport class ResourceThrottleRetryPolicy {\n /** Current retry attempt count. */\n public currentRetryAttemptCount: number = 0;\n /** Cummulative wait time in milliseconds for a request while the retries are happening. */\n public cummulativeWaitTimeinMs: number = 0;\n /** Retry interval in milliseconds to wait before the next request will be sent. */\n public retryAfterInMs: number = 0;\n\n /** Max wait time in milliseconds to wait for a request while the retries are happening. */\n private timeoutInMs: number;\n /**\n * @param maxTries - Max number of retries to be performed for a request.\n * @param fixedRetryIntervalInMs - Fixed retry interval in milliseconds to wait between each\n * retry ignoring the retryAfter returned as part of the response.\n * @param timeoutInSeconds - Max wait time in seconds to wait for a request while the\n * retries are happening.\n */\n\n private maxTries: number;\n private fixedRetryIntervalInMs: number;\n constructor(options: RetryOptions) {\n this.maxTries = options.maxRetryAttemptCount ?? Constants.ThrottledRequestMaxRetryAttemptCount;\n this.fixedRetryIntervalInMs =\n options.fixedRetryIntervalInMilliseconds ?? Constants.ThrottledRequestFixedRetryIntervalInMs;\n const timeoutInSeconds =\n options.maxWaitTimeInSeconds ?? Constants.ThrottledRequestMaxWaitTimeInSeconds;\n this.timeoutInMs = timeoutInSeconds * 1000;\n this.currentRetryAttemptCount = 0;\n this.cummulativeWaitTimeinMs = 0;\n }\n /**\n * Determines whether the request should be retried or not.\n * @param err - Error returned by the request.\n */\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<boolean> {\n // TODO: any custom error object\n if (err) {\n if (this.currentRetryAttemptCount < this.maxTries) {\n this.currentRetryAttemptCount++;\n this.retryAfterInMs = 0;\n\n if (this.fixedRetryIntervalInMs) {\n this.retryAfterInMs = this.fixedRetryIntervalInMs;\n } else if (err.retryAfterInMs) {\n this.retryAfterInMs = err.retryAfterInMs;\n }\n\n if (this.cummulativeWaitTimeinMs < this.timeoutInMs) {\n this.cummulativeWaitTimeinMs += this.retryAfterInMs;\n diagnosticNode.addData({ successfulRetryPolicy: \"resourceThrottle\" });\n return true;\n }\n }\n }\n return false;\n }\n}\n"]}
@@ -18,12 +18,11 @@ import { TimeoutFailoverRetryPolicy } from "./timeoutFailoverRetryPolicy.js";
18
18
  export async function execute({ diagnosticNode, retryContext = { retryCount: 0 }, retryPolicies, requestContext, executeRequest, }) {
19
19
  // TODO: any response
20
20
  return addDiagnosticChild(async (localDiagnosticNode) => {
21
- var _a;
22
21
  localDiagnosticNode.addData({ requestAttempNumber: retryContext.retryCount });
23
22
  if (!retryPolicies) {
24
23
  retryPolicies = {
25
24
  endpointDiscoveryRetryPolicy: new EndpointDiscoveryRetryPolicy(requestContext.globalEndpointManager, requestContext.operationType, requestContext.globalPartitionEndpointManager),
26
- resourceThrottleRetryPolicy: new ResourceThrottleRetryPolicy((_a = requestContext.connectionPolicy.retryOptions) !== null && _a !== void 0 ? _a : {}),
25
+ resourceThrottleRetryPolicy: new ResourceThrottleRetryPolicy(requestContext.connectionPolicy.retryOptions ?? {}),
27
26
  sessionReadRetryPolicy: new SessionRetryPolicy(requestContext.globalEndpointManager, requestContext.resourceType, requestContext.operationType, requestContext.connectionPolicy),
28
27
  defaultRetryPolicy: new DefaultRetryPolicy(requestContext.operationType),
29
28
  timeoutFailoverRetryPolicy: new TimeoutFailoverRetryPolicy(requestContext.globalEndpointManager, requestContext.headers, requestContext.method, requestContext.resourceType, requestContext.operationType, requestContext.connectionPolicy.enableEndpointDiscovery, requestContext.connectionPolicy.enablePartitionLevelFailover, requestContext.globalPartitionEndpointManager),
@@ -91,7 +90,7 @@ export async function execute({ diagnosticNode, retryContext = { retryCount: 0 }
91
90
  retryPolicies.resourceThrottleRetryPolicy.currentRetryAttemptCount;
92
91
  headers[Constants.ThrottleRetryWaitTimeInMs] =
93
92
  retryPolicies.resourceThrottleRetryPolicy.cummulativeWaitTimeinMs;
94
- err.headers = Object.assign(Object.assign({}, err.headers), headers);
93
+ err.headers = { ...err.headers, ...headers };
95
94
  throw err;
96
95
  }
97
96
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"retryUtility.js","sourceRoot":"","sources":["../../../src/retry/retryUtility.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants } from \"../common/constants.js\";\nimport { sleep } from \"../common/helper.js\";\nimport { StatusCodes, SubStatusCodes } from \"../common/statusCodes.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport { DiagnosticNodeType } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { Response } from \"../request/index.js\";\nimport type { RequestContext } from \"../request/RequestContext.js\";\nimport { TimeoutErrorCode } from \"../request/TimeoutError.js\";\nimport { addDiagnosticChild } from \"../utils/diagnostics.js\";\nimport { getCurrentTimestampInMs } from \"../utils/time.js\";\nimport { DefaultRetryPolicy } from \"./defaultRetryPolicy.js\";\nimport { EndpointDiscoveryRetryPolicy } from \"./endpointDiscoveryRetryPolicy.js\";\nimport { ResourceThrottleRetryPolicy } from \"./resourceThrottleRetryPolicy.js\";\nimport type { RetryContext } from \"./RetryContext.js\";\nimport type { RetryPolicy } from \"./RetryPolicy.js\";\nimport { SessionRetryPolicy } from \"./sessionRetryPolicy.js\";\nimport { TimeoutFailoverRetryPolicy } from \"./timeoutFailoverRetryPolicy.js\";\n\n/**\n * @hidden\n */\ninterface ExecuteArgs {\n retryContext?: RetryContext;\n diagnosticNode: DiagnosticNodeInternal;\n retryPolicies?: RetryPolicies;\n requestContext: RequestContext;\n executeRequest: (\n diagnosticNode: DiagnosticNodeInternal,\n requestContext: RequestContext,\n ) => Promise<Response<any>>;\n}\n\n/**\n * @hidden\n */\ninterface RetryPolicies {\n endpointDiscoveryRetryPolicy: EndpointDiscoveryRetryPolicy;\n resourceThrottleRetryPolicy: ResourceThrottleRetryPolicy;\n sessionReadRetryPolicy: SessionRetryPolicy;\n defaultRetryPolicy: DefaultRetryPolicy;\n timeoutFailoverRetryPolicy: TimeoutFailoverRetryPolicy;\n}\n\n/**\n * @hidden\n */\nexport async function execute({\n diagnosticNode,\n retryContext = { retryCount: 0 },\n retryPolicies,\n requestContext,\n executeRequest,\n}: ExecuteArgs): Promise<Response<any>> {\n // TODO: any response\n return addDiagnosticChild(\n async (localDiagnosticNode: DiagnosticNodeInternal) => {\n localDiagnosticNode.addData({ requestAttempNumber: retryContext.retryCount });\n if (!retryPolicies) {\n retryPolicies = {\n endpointDiscoveryRetryPolicy: new EndpointDiscoveryRetryPolicy(\n requestContext.globalEndpointManager,\n requestContext.operationType,\n requestContext.globalPartitionEndpointManager,\n ),\n resourceThrottleRetryPolicy: new ResourceThrottleRetryPolicy(\n requestContext.connectionPolicy.retryOptions ?? {},\n ),\n sessionReadRetryPolicy: new SessionRetryPolicy(\n requestContext.globalEndpointManager,\n requestContext.resourceType,\n requestContext.operationType,\n requestContext.connectionPolicy,\n ),\n defaultRetryPolicy: new DefaultRetryPolicy(requestContext.operationType),\n timeoutFailoverRetryPolicy: new TimeoutFailoverRetryPolicy(\n requestContext.globalEndpointManager,\n requestContext.headers,\n requestContext.method,\n requestContext.resourceType,\n requestContext.operationType,\n requestContext.connectionPolicy.enableEndpointDiscovery,\n requestContext.connectionPolicy.enablePartitionLevelFailover,\n requestContext.globalPartitionEndpointManager,\n ),\n };\n }\n if (retryContext && retryContext.clearSessionTokenNotAvailable) {\n requestContext.client.clearSessionToken(requestContext.path);\n delete requestContext.headers[\"x-ms-session-token\"];\n }\n if (retryContext && retryContext.retryLocationServerIndex) {\n requestContext.endpoint = await requestContext.globalEndpointManager.resolveServiceEndpoint(\n localDiagnosticNode,\n requestContext.resourceType,\n requestContext.operationType,\n retryContext.retryLocationServerIndex,\n );\n } else {\n requestContext.endpoint = await requestContext.globalEndpointManager.resolveServiceEndpoint(\n localDiagnosticNode,\n requestContext.resourceType,\n requestContext.operationType,\n );\n }\n const startTimeUTCInMs = getCurrentTimestampInMs();\n const correlatedActivityId =\n requestContext.headers[Constants.HttpHeaders.CorrelatedActivityId];\n\n if (requestContext.globalPartitionEndpointManager) {\n // Try partition level location override\n // This is used to override the partition level location for the request\n // if there has been a partition level failover\n requestContext =\n await requestContext.globalPartitionEndpointManager.tryAddPartitionLevelLocationOverride(\n requestContext,\n localDiagnosticNode,\n );\n }\n\n try {\n const response = await executeRequest(localDiagnosticNode, requestContext);\n response.headers[Constants.ThrottleRetryCount] =\n retryPolicies.resourceThrottleRetryPolicy.currentRetryAttemptCount;\n response.headers[Constants.ThrottleRetryWaitTimeInMs] =\n retryPolicies.resourceThrottleRetryPolicy.cummulativeWaitTimeinMs;\n if (correlatedActivityId) {\n response.headers[Constants.HttpHeaders.CorrelatedActivityId] = correlatedActivityId;\n }\n return response;\n } catch (err: any) {\n // TODO: any error\n let retryPolicy: RetryPolicy = null;\n const headers = err.headers || {};\n if (correlatedActivityId) {\n headers[Constants.HttpHeaders.CorrelatedActivityId] = correlatedActivityId;\n }\n\n if (\n err.code === \"REQUEST_SEND_ERROR\" ||\n (err.code === StatusCodes.Forbidden &&\n (err.substatus === SubStatusCodes.DatabaseAccountNotFound ||\n err.substatus === SubStatusCodes.WriteForbidden))\n ) {\n retryPolicy = retryPolicies.endpointDiscoveryRetryPolicy;\n } else if (err.code === StatusCodes.TooManyRequests && !isBulkRequest(requestContext)) {\n retryPolicy = retryPolicies.resourceThrottleRetryPolicy;\n } else if (\n err.code === StatusCodes.NotFound &&\n err.substatus === SubStatusCodes.ReadSessionNotAvailable\n ) {\n retryPolicy = retryPolicies.sessionReadRetryPolicy;\n } else if (err.code === StatusCodes.ServiceUnavailable || err.code === TimeoutErrorCode) {\n retryPolicy = retryPolicies.timeoutFailoverRetryPolicy;\n } else {\n retryPolicy = retryPolicies.defaultRetryPolicy;\n }\n const results = await retryPolicy.shouldRetry(\n err,\n localDiagnosticNode,\n retryContext,\n requestContext.endpoint,\n requestContext,\n );\n if (!results) {\n headers[Constants.ThrottleRetryCount] =\n retryPolicies.resourceThrottleRetryPolicy.currentRetryAttemptCount;\n headers[Constants.ThrottleRetryWaitTimeInMs] =\n retryPolicies.resourceThrottleRetryPolicy.cummulativeWaitTimeinMs;\n err.headers = { ...err.headers, ...headers };\n throw err;\n } else {\n requestContext.retryCount++;\n const newUrl = (results as any)[1]; // TODO: any hack\n if (newUrl !== undefined) {\n requestContext.endpoint = newUrl;\n }\n localDiagnosticNode.recordFailedNetworkCall(\n startTimeUTCInMs,\n requestContext,\n retryContext.retryCount,\n err.code,\n err.subsstatusCode,\n headers,\n );\n await sleep(retryPolicy.retryAfterInMs);\n return execute({\n diagnosticNode,\n executeRequest,\n requestContext,\n retryContext,\n retryPolicies,\n });\n }\n }\n },\n diagnosticNode,\n DiagnosticNodeType.HTTP_REQUEST,\n );\n}\n\n/**\n * @hidden\n */\nfunction isBulkRequest(requestContext: RequestContext): boolean {\n return (\n requestContext.operationType === \"batch\" &&\n !requestContext.headers[Constants.HttpHeaders.IsBatchAtomic]\n );\n}\n"]}
1
+ {"version":3,"file":"retryUtility.js","sourceRoot":"","sources":["../../../src/retry/retryUtility.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants } from \"../common/constants.js\";\nimport { sleep } from \"../common/helper.js\";\nimport { StatusCodes, SubStatusCodes } from \"../common/statusCodes.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport { DiagnosticNodeType } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { Response } from \"../request/index.js\";\nimport type { RequestContext } from \"../request/RequestContext.js\";\nimport { TimeoutErrorCode } from \"../request/TimeoutError.js\";\nimport { addDiagnosticChild } from \"../utils/diagnostics.js\";\nimport { getCurrentTimestampInMs } from \"../utils/time.js\";\nimport { DefaultRetryPolicy } from \"./defaultRetryPolicy.js\";\nimport { EndpointDiscoveryRetryPolicy } from \"./endpointDiscoveryRetryPolicy.js\";\nimport { ResourceThrottleRetryPolicy } from \"./resourceThrottleRetryPolicy.js\";\nimport type { RetryContext } from \"./RetryContext.js\";\nimport type { RetryPolicy } from \"./RetryPolicy.js\";\nimport { SessionRetryPolicy } from \"./sessionRetryPolicy.js\";\nimport { TimeoutFailoverRetryPolicy } from \"./timeoutFailoverRetryPolicy.js\";\n\n/**\n * @hidden\n */\ninterface ExecuteArgs {\n retryContext?: RetryContext;\n diagnosticNode: DiagnosticNodeInternal;\n retryPolicies?: RetryPolicies;\n requestContext: RequestContext;\n executeRequest: (\n diagnosticNode: DiagnosticNodeInternal,\n requestContext: RequestContext,\n ) => Promise<Response<any>>;\n}\n\n/**\n * @hidden\n */\ninterface RetryPolicies {\n endpointDiscoveryRetryPolicy: EndpointDiscoveryRetryPolicy;\n resourceThrottleRetryPolicy: ResourceThrottleRetryPolicy;\n sessionReadRetryPolicy: SessionRetryPolicy;\n defaultRetryPolicy: DefaultRetryPolicy;\n timeoutFailoverRetryPolicy: TimeoutFailoverRetryPolicy;\n}\n\n/**\n * @hidden\n */\nexport async function execute({\n diagnosticNode,\n retryContext = { retryCount: 0 },\n retryPolicies,\n requestContext,\n executeRequest,\n}: ExecuteArgs): Promise<Response<any>> {\n // TODO: any response\n return addDiagnosticChild(\n async (localDiagnosticNode: DiagnosticNodeInternal) => {\n localDiagnosticNode.addData({ requestAttempNumber: retryContext.retryCount });\n if (!retryPolicies) {\n retryPolicies = {\n endpointDiscoveryRetryPolicy: new EndpointDiscoveryRetryPolicy(\n requestContext.globalEndpointManager,\n requestContext.operationType,\n requestContext.globalPartitionEndpointManager,\n ),\n resourceThrottleRetryPolicy: new ResourceThrottleRetryPolicy(\n requestContext.connectionPolicy.retryOptions ?? {},\n ),\n sessionReadRetryPolicy: new SessionRetryPolicy(\n requestContext.globalEndpointManager,\n requestContext.resourceType,\n requestContext.operationType,\n requestContext.connectionPolicy,\n ),\n defaultRetryPolicy: new DefaultRetryPolicy(requestContext.operationType),\n timeoutFailoverRetryPolicy: new TimeoutFailoverRetryPolicy(\n requestContext.globalEndpointManager,\n requestContext.headers,\n requestContext.method,\n requestContext.resourceType,\n requestContext.operationType,\n requestContext.connectionPolicy.enableEndpointDiscovery,\n requestContext.connectionPolicy.enablePartitionLevelFailover,\n requestContext.globalPartitionEndpointManager,\n ),\n };\n }\n if (retryContext && retryContext.clearSessionTokenNotAvailable) {\n requestContext.client.clearSessionToken(requestContext.path);\n delete requestContext.headers[\"x-ms-session-token\"];\n }\n if (retryContext && retryContext.retryLocationServerIndex) {\n requestContext.endpoint = await requestContext.globalEndpointManager.resolveServiceEndpoint(\n localDiagnosticNode,\n requestContext.resourceType,\n requestContext.operationType,\n retryContext.retryLocationServerIndex,\n );\n } else {\n requestContext.endpoint = await requestContext.globalEndpointManager.resolveServiceEndpoint(\n localDiagnosticNode,\n requestContext.resourceType,\n requestContext.operationType,\n );\n }\n const startTimeUTCInMs = getCurrentTimestampInMs();\n const correlatedActivityId =\n requestContext.headers[Constants.HttpHeaders.CorrelatedActivityId];\n\n if (requestContext.globalPartitionEndpointManager) {\n // Try partition level location override\n // This is used to override the partition level location for the request\n // if there has been a partition level failover\n requestContext =\n await requestContext.globalPartitionEndpointManager.tryAddPartitionLevelLocationOverride(\n requestContext,\n localDiagnosticNode,\n );\n }\n\n try {\n const response = await executeRequest(localDiagnosticNode, requestContext);\n response.headers[Constants.ThrottleRetryCount] =\n retryPolicies.resourceThrottleRetryPolicy.currentRetryAttemptCount;\n response.headers[Constants.ThrottleRetryWaitTimeInMs] =\n retryPolicies.resourceThrottleRetryPolicy.cummulativeWaitTimeinMs;\n if (correlatedActivityId) {\n response.headers[Constants.HttpHeaders.CorrelatedActivityId] = correlatedActivityId;\n }\n return response;\n } catch (err: any) {\n // TODO: any error\n let retryPolicy: RetryPolicy = null;\n const headers = err.headers || {};\n if (correlatedActivityId) {\n headers[Constants.HttpHeaders.CorrelatedActivityId] = correlatedActivityId;\n }\n\n if (\n err.code === \"REQUEST_SEND_ERROR\" ||\n (err.code === StatusCodes.Forbidden &&\n (err.substatus === SubStatusCodes.DatabaseAccountNotFound ||\n err.substatus === SubStatusCodes.WriteForbidden))\n ) {\n retryPolicy = retryPolicies.endpointDiscoveryRetryPolicy;\n } else if (err.code === StatusCodes.TooManyRequests && !isBulkRequest(requestContext)) {\n retryPolicy = retryPolicies.resourceThrottleRetryPolicy;\n } else if (\n err.code === StatusCodes.NotFound &&\n err.substatus === SubStatusCodes.ReadSessionNotAvailable\n ) {\n retryPolicy = retryPolicies.sessionReadRetryPolicy;\n } else if (err.code === StatusCodes.ServiceUnavailable || err.code === TimeoutErrorCode) {\n retryPolicy = retryPolicies.timeoutFailoverRetryPolicy;\n } else {\n retryPolicy = retryPolicies.defaultRetryPolicy;\n }\n const results = await retryPolicy.shouldRetry(\n err,\n localDiagnosticNode,\n retryContext,\n requestContext.endpoint,\n requestContext,\n );\n if (!results) {\n headers[Constants.ThrottleRetryCount] =\n retryPolicies.resourceThrottleRetryPolicy.currentRetryAttemptCount;\n headers[Constants.ThrottleRetryWaitTimeInMs] =\n retryPolicies.resourceThrottleRetryPolicy.cummulativeWaitTimeinMs;\n err.headers = { ...err.headers, ...headers };\n throw err;\n } else {\n requestContext.retryCount++;\n const newUrl = (results as any)[1]; // TODO: any hack\n if (newUrl !== undefined) {\n requestContext.endpoint = newUrl;\n }\n localDiagnosticNode.recordFailedNetworkCall(\n startTimeUTCInMs,\n requestContext,\n retryContext.retryCount,\n err.code,\n err.subsstatusCode,\n headers,\n );\n await sleep(retryPolicy.retryAfterInMs);\n return execute({\n diagnosticNode,\n executeRequest,\n requestContext,\n retryContext,\n retryPolicies,\n });\n }\n }\n },\n diagnosticNode,\n DiagnosticNodeType.HTTP_REQUEST,\n );\n}\n\n/**\n * @hidden\n */\nfunction isBulkRequest(requestContext: RequestContext): boolean {\n return (\n requestContext.operationType === \"batch\" &&\n !requestContext.headers[Constants.HttpHeaders.IsBatchAtomic]\n );\n}\n"]}
@@ -4,6 +4,14 @@ import { isReadRequest } from "../common/index.js";
4
4
  * @hidden
5
5
  */
6
6
  export class SessionRetryPolicy {
7
+ globalEndpointManager;
8
+ resourceType;
9
+ operationType;
10
+ connectionPolicy;
11
+ /** Current retry attempt count. */
12
+ currentRetryAttemptCount = 0;
13
+ /** Retry interval in milliseconds. */
14
+ retryAfterInMs = 0;
7
15
  /**
8
16
  * @param globalEndpointManager - The GlobalEndpointManager instance.
9
17
  */
@@ -12,10 +20,6 @@ export class SessionRetryPolicy {
12
20
  this.resourceType = resourceType;
13
21
  this.operationType = operationType;
14
22
  this.connectionPolicy = connectionPolicy;
15
- /** Current retry attempt count. */
16
- this.currentRetryAttemptCount = 0;
17
- /** Retry interval in milliseconds. */
18
- this.retryAfterInMs = 0;
19
23
  }
20
24
  /**
21
25
  * Determines whether the request should be retried or not.
@@ -1 +1 @@
1
- {"version":3,"file":"sessionRetryPolicy.js","sourceRoot":"","sources":["../../../src/retry/sessionRetryPolicy.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAM7B;;OAEG;IACH,YACU,qBAA4C,EAC5C,YAA0B,EAC1B,aAA4B,EAC5B,gBAAkC;QAHlC,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,iBAAY,GAAZ,YAAY,CAAc;QAC1B,kBAAa,GAAb,aAAa,CAAe;QAC5B,qBAAgB,GAAhB,gBAAgB,CAAkB;QAZ5C,mCAAmC;QAC5B,6BAAwB,GAAG,CAAC,CAAC;QACpC,sCAAsC;QAC/B,mBAAc,GAAG,CAAC,CAAC;IAUvB,CAAC;IAEJ;;;;;OAKG;IACI,KAAK,CAAC,WAAW,CACtB,GAAkB,EAClB,cAAsC,EACtC,YAA2B;QAE3B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IACE,IAAI,CAAC,qBAAqB,CAAC,4BAA4B,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,EAC9F,CAAC;YACD,iGAAiG;YACjG,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;gBACjD,CAAC,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;gBACrD,CAAC,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBACrD,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC1B,YAAY,CAAC,gCAAgC,GAAG,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;gBAClF,YAAY,CAAC,6BAA6B;oBACxC,IAAI,CAAC,wBAAwB,KAAK,SAAS,CAAC,MAAM,CAAC;gBACrD,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,wBAAwB,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC1B,YAAY,CAAC,gCAAgC,GAAG,KAAK,CAAC,CAAC,kDAAkD;gBACzG,YAAY,CAAC,6BAA6B,GAAG,IAAI,CAAC;gBAClD,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { OperationType, ResourceType } from \"../common/index.js\";\nimport { isReadRequest } from \"../common/index.js\";\nimport type { ConnectionPolicy } from \"../documents/index.js\";\nimport type { GlobalEndpointManager } from \"../globalEndpointManager.js\";\nimport type { ErrorResponse } from \"../request/index.js\";\nimport type { RetryContext } from \"./RetryContext.js\";\nimport type { RetryPolicy } from \"./RetryPolicy.js\";\n\n/**\n * This class implements the retry policy for session consistent reads.\n * @hidden\n */\nexport class SessionRetryPolicy implements RetryPolicy {\n /** Current retry attempt count. */\n public currentRetryAttemptCount = 0;\n /** Retry interval in milliseconds. */\n public retryAfterInMs = 0;\n\n /**\n * @param globalEndpointManager - The GlobalEndpointManager instance.\n */\n constructor(\n private globalEndpointManager: GlobalEndpointManager,\n private resourceType: ResourceType,\n private operationType: OperationType,\n private connectionPolicy: ConnectionPolicy,\n ) {}\n\n /**\n * Determines whether the request should be retried or not.\n * @param err - Error returned by the request.\n * @param callback - The callback function which takes bool argument which specifies whether the request\n * will be retried or not.\n */\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n retryContext?: RetryContext,\n ): Promise<boolean> {\n if (!err) {\n return false;\n }\n\n if (!retryContext) {\n return false;\n }\n\n if (!this.connectionPolicy.enableEndpointDiscovery) {\n return false;\n }\n\n if (\n this.globalEndpointManager.canUseMultipleWriteLocations(this.resourceType, this.operationType)\n ) {\n // If we can write to multiple locations, we should against every write endpoint until we succeed\n const endpoints = isReadRequest(this.operationType)\n ? await this.globalEndpointManager.getReadEndpoints()\n : await this.globalEndpointManager.getWriteEndpoints();\n if (this.currentRetryAttemptCount > endpoints.length) {\n return false;\n } else {\n this.currentRetryAttemptCount++;\n retryContext.retryCount++;\n retryContext.retryRequestOnPreferredLocations = this.currentRetryAttemptCount > 1;\n retryContext.clearSessionTokenNotAvailable =\n this.currentRetryAttemptCount === endpoints.length;\n diagnosticNode.addData({ successfulRetryPolicy: \"session\" });\n return true;\n }\n } else {\n if (this.currentRetryAttemptCount > 1) {\n return false;\n } else {\n this.currentRetryAttemptCount++;\n retryContext.retryCount++;\n retryContext.retryRequestOnPreferredLocations = false; // Forces all operations to primary write endpoint\n retryContext.clearSessionTokenNotAvailable = true;\n diagnosticNode.addData({ successfulRetryPolicy: \"session\" });\n return true;\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"sessionRetryPolicy.js","sourceRoot":"","sources":["../../../src/retry/sessionRetryPolicy.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAUnB;IACA;IACA;IACA;IAZV,mCAAmC;IAC5B,wBAAwB,GAAG,CAAC,CAAC;IACpC,sCAAsC;IAC/B,cAAc,GAAG,CAAC,CAAC;IAE1B;;OAEG;IACH,YACU,qBAA4C,EAC5C,YAA0B,EAC1B,aAA4B,EAC5B,gBAAkC;QAHlC,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,iBAAY,GAAZ,YAAY,CAAc;QAC1B,kBAAa,GAAb,aAAa,CAAe;QAC5B,qBAAgB,GAAhB,gBAAgB,CAAkB;IACzC,CAAC;IAEJ;;;;;OAKG;IACI,KAAK,CAAC,WAAW,CACtB,GAAkB,EAClB,cAAsC,EACtC,YAA2B;QAE3B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IACE,IAAI,CAAC,qBAAqB,CAAC,4BAA4B,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,EAC9F,CAAC;YACD,iGAAiG;YACjG,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;gBACjD,CAAC,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;gBACrD,CAAC,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBACrD,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC1B,YAAY,CAAC,gCAAgC,GAAG,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;gBAClF,YAAY,CAAC,6BAA6B;oBACxC,IAAI,CAAC,wBAAwB,KAAK,SAAS,CAAC,MAAM,CAAC;gBACrD,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,wBAAwB,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC1B,YAAY,CAAC,gCAAgC,GAAG,KAAK,CAAC,CAAC,kDAAkD;gBACzG,YAAY,CAAC,6BAA6B,GAAG,IAAI,CAAC;gBAClD,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { OperationType, ResourceType } from \"../common/index.js\";\nimport { isReadRequest } from \"../common/index.js\";\nimport type { ConnectionPolicy } from \"../documents/index.js\";\nimport type { GlobalEndpointManager } from \"../globalEndpointManager.js\";\nimport type { ErrorResponse } from \"../request/index.js\";\nimport type { RetryContext } from \"./RetryContext.js\";\nimport type { RetryPolicy } from \"./RetryPolicy.js\";\n\n/**\n * This class implements the retry policy for session consistent reads.\n * @hidden\n */\nexport class SessionRetryPolicy implements RetryPolicy {\n /** Current retry attempt count. */\n public currentRetryAttemptCount = 0;\n /** Retry interval in milliseconds. */\n public retryAfterInMs = 0;\n\n /**\n * @param globalEndpointManager - The GlobalEndpointManager instance.\n */\n constructor(\n private globalEndpointManager: GlobalEndpointManager,\n private resourceType: ResourceType,\n private operationType: OperationType,\n private connectionPolicy: ConnectionPolicy,\n ) {}\n\n /**\n * Determines whether the request should be retried or not.\n * @param err - Error returned by the request.\n * @param callback - The callback function which takes bool argument which specifies whether the request\n * will be retried or not.\n */\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n retryContext?: RetryContext,\n ): Promise<boolean> {\n if (!err) {\n return false;\n }\n\n if (!retryContext) {\n return false;\n }\n\n if (!this.connectionPolicy.enableEndpointDiscovery) {\n return false;\n }\n\n if (\n this.globalEndpointManager.canUseMultipleWriteLocations(this.resourceType, this.operationType)\n ) {\n // If we can write to multiple locations, we should against every write endpoint until we succeed\n const endpoints = isReadRequest(this.operationType)\n ? await this.globalEndpointManager.getReadEndpoints()\n : await this.globalEndpointManager.getWriteEndpoints();\n if (this.currentRetryAttemptCount > endpoints.length) {\n return false;\n } else {\n this.currentRetryAttemptCount++;\n retryContext.retryCount++;\n retryContext.retryRequestOnPreferredLocations = this.currentRetryAttemptCount > 1;\n retryContext.clearSessionTokenNotAvailable =\n this.currentRetryAttemptCount === endpoints.length;\n diagnosticNode.addData({ successfulRetryPolicy: \"session\" });\n return true;\n }\n } else {\n if (this.currentRetryAttemptCount > 1) {\n return false;\n } else {\n this.currentRetryAttemptCount++;\n retryContext.retryCount++;\n retryContext.retryRequestOnPreferredLocations = false; // Forces all operations to primary write endpoint\n retryContext.clearSessionTokenNotAvailable = true;\n diagnosticNode.addData({ successfulRetryPolicy: \"session\" });\n return true;\n }\n }\n }\n}\n"]}
@@ -10,6 +10,20 @@ import { TimeoutErrorCode } from "../request/TimeoutError.js";
10
10
  * @hidden
11
11
  */
12
12
  export class TimeoutFailoverRetryPolicy {
13
+ globalEndpointManager;
14
+ headers;
15
+ methodType;
16
+ resourceType;
17
+ operationType;
18
+ enableEndPointDiscovery;
19
+ enablePartitionLevelFailover;
20
+ globalPartitionEndpointManager;
21
+ maxRetryAttemptCount = 120;
22
+ maxServiceUnavailableRetryCount = 1;
23
+ retryAfterInMs = 0;
24
+ failoverRetryCount = 0;
25
+ request;
26
+ locationEndpoint;
13
27
  constructor(globalEndpointManager, headers, methodType, resourceType, operationType, enableEndPointDiscovery, enablePartitionLevelFailover, globalPartitionEndpointManager) {
14
28
  this.globalEndpointManager = globalEndpointManager;
15
29
  this.headers = headers;
@@ -19,10 +33,6 @@ export class TimeoutFailoverRetryPolicy {
19
33
  this.enableEndPointDiscovery = enableEndPointDiscovery;
20
34
  this.enablePartitionLevelFailover = enablePartitionLevelFailover;
21
35
  this.globalPartitionEndpointManager = globalPartitionEndpointManager;
22
- this.maxRetryAttemptCount = 120;
23
- this.maxServiceUnavailableRetryCount = 1;
24
- this.retryAfterInMs = 0;
25
- this.failoverRetryCount = 0;
26
36
  }
27
37
  /**
28
38
  * Checks if a timeout request is valid for the timeout failover retry policy.
@@ -1 +1 @@
1
- {"version":3,"file":"timeoutFailoverRetryPolicy.js","sourceRoot":"","sources":["../../../src/retry/timeoutFailoverRetryPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { RetryPolicy } from \"./RetryPolicy.js\";\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport type { GlobalEndpointManager } from \"../globalEndpointManager.js\";\nimport { HTTPMethod, isReadRequest } from \"../common/index.js\";\nimport type { OperationType, ResourceType } from \"../common/constants.js\";\nimport { Constants } from \"../common/constants.js\";\nimport type { RetryContext } from \"./RetryContext.js\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/CosmosHeaders.js\";\nimport { TimeoutErrorCode } from \"../request/TimeoutError.js\";\nimport type { ErrorResponse, RequestContext } from \"../request/index.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport { GlobalPartitionEndpointManager } from \"../globalPartitionEndpointManager.js\";\n\n/**\n * This class TimeoutFailoverRetryPolicy handles retries for read operations\n * (including data plane,metadata, and query plan) in case of request timeouts\n * (TimeoutError) or service unavailability (503 status code) by performing failover\n * and retrying on other regions.\n * @hidden\n */\nexport class TimeoutFailoverRetryPolicy implements RetryPolicy {\n private maxRetryAttemptCount = 120;\n private maxServiceUnavailableRetryCount = 1;\n public retryAfterInMs = 0;\n public failoverRetryCount = 0;\n public request: any;\n public locationEndpoint: any;\n\n constructor(\n private globalEndpointManager: GlobalEndpointManager,\n private headers: CosmosHeaders,\n private methodType: HTTPMethod,\n private resourceType: ResourceType,\n private operationType: OperationType,\n private enableEndPointDiscovery: boolean,\n private enablePartitionLevelFailover: boolean,\n private globalPartitionEndpointManager?: GlobalPartitionEndpointManager,\n ) {}\n\n /**\n * Checks if a timeout request is valid for the timeout failover retry policy.\n * A valid request should be a data plane, metadata, or query plan request.\n * @returns\n */\n private isValidRequestForTimeoutError(): boolean {\n const isQuery = Constants.HttpHeaders.IsQuery in this.headers;\n const isQueryPlan = Constants.HttpHeaders.IsQueryPlan in this.headers;\n if (this.methodType === HTTPMethod.get || isQuery || isQueryPlan) {\n return true;\n }\n return false;\n }\n\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n retryContext?: RetryContext,\n locationEndpoint?: string,\n requestContext?: RequestContext,\n ): Promise<boolean> {\n if (!err) {\n return false;\n }\n if (!retryContext || !locationEndpoint) {\n return false;\n }\n if (!this.enableEndPointDiscovery) {\n return false;\n }\n // Mark the partition as unavailable.\n // Let the Retry logic decide if the request should be retried\n if (requestContext && this.globalPartitionEndpointManager) {\n await this.globalPartitionEndpointManager.tryPartitionLevelFailover(\n requestContext,\n diagnosticNode,\n );\n }\n // Check if the error is a timeout error (TimeoutErrorCode) and if it is not a valid HTTP network timeout request\n if (err.code === TimeoutErrorCode && !this.isValidRequestForTimeoutError()) {\n return false;\n }\n if (\n err.code === StatusCodes.ServiceUnavailable &&\n this.failoverRetryCount >= this.maxServiceUnavailableRetryCount\n ) {\n return false;\n }\n if (this.failoverRetryCount >= this.maxRetryAttemptCount) {\n return false;\n }\n const canUseMultipleWriteLocations = this.globalEndpointManager.canUseMultipleWriteLocations(\n this.resourceType,\n this.operationType,\n );\n const readRequest = isReadRequest(this.operationType);\n\n if (!canUseMultipleWriteLocations && !readRequest && !this.enablePartitionLevelFailover) {\n // Write requests on single master cannot be retried if partition level failover is disabled.\n // This means there are no other regions available to serve the writes.\n return false;\n }\n this.failoverRetryCount++;\n // Setting the retryLocationIndex to the next available location for retry.\n // The retryLocationIndex is determined based on the failoverRetryCount, starting from zero.\n retryContext.retryLocationServerIndex = await this.findEndpointIndex(this.failoverRetryCount);\n diagnosticNode.addData({ successfulRetryPolicy: \"timeout-failover\" });\n return true;\n }\n\n /**\n * Determines index of endpoint to be used for retry based upon failoverRetryCount and avalable locations\n * @param failoverRetryCount - count of failovers\n * @returns\n */\n private async findEndpointIndex(failoverRetryCount: number): Promise<number> {\n // count of preferred locations specified by user\n const preferredLocationsCount = this.globalEndpointManager.preferredLocationsCount;\n const readRequest = isReadRequest(this.operationType);\n let endpointIndex = 0;\n // If preferredLocationsCount is not zero, it indicates that the user has specified preferred locations.\n if (preferredLocationsCount !== 0) {\n // The endpointIndex is set based on the preferred location and the failover retry count.\n endpointIndex = failoverRetryCount % preferredLocationsCount;\n } else {\n // In the absence of preferred locations, the endpoint selection is based on the failover count and the number of available locations.\n if (readRequest) {\n const getReadEndpoints = await this.globalEndpointManager.getReadEndpoints();\n if (getReadEndpoints && getReadEndpoints.length > 0) {\n endpointIndex = failoverRetryCount % getReadEndpoints.length;\n }\n } else {\n const getWriteEndpoints = await this.globalEndpointManager.getWriteEndpoints();\n if (getWriteEndpoints && getWriteEndpoints.length > 0) {\n endpointIndex = failoverRetryCount % getWriteEndpoints.length;\n }\n }\n }\n return endpointIndex;\n }\n}\n"]}
1
+ {"version":3,"file":"timeoutFailoverRetryPolicy.js","sourceRoot":"","sources":["../../../src/retry/timeoutFailoverRetryPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { RetryPolicy } from \"./RetryPolicy.js\";\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport type { GlobalEndpointManager } from \"../globalEndpointManager.js\";\nimport { HTTPMethod, isReadRequest } from \"../common/index.js\";\nimport type { OperationType, ResourceType } from \"../common/constants.js\";\nimport { Constants } from \"../common/constants.js\";\nimport type { RetryContext } from \"./RetryContext.js\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/CosmosHeaders.js\";\nimport { TimeoutErrorCode } from \"../request/TimeoutError.js\";\nimport type { ErrorResponse, RequestContext } from \"../request/index.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport { GlobalPartitionEndpointManager } from \"../globalPartitionEndpointManager.js\";\n\n/**\n * This class TimeoutFailoverRetryPolicy handles retries for read operations\n * (including data plane,metadata, and query plan) in case of request timeouts\n * (TimeoutError) or service unavailability (503 status code) by performing failover\n * and retrying on other regions.\n * @hidden\n */\nexport class TimeoutFailoverRetryPolicy implements RetryPolicy {\n private maxRetryAttemptCount = 120;\n private maxServiceUnavailableRetryCount = 1;\n public retryAfterInMs = 0;\n public failoverRetryCount = 0;\n public request: any;\n public locationEndpoint: any;\n\n constructor(\n private globalEndpointManager: GlobalEndpointManager,\n private headers: CosmosHeaders,\n private methodType: HTTPMethod,\n private resourceType: ResourceType,\n private operationType: OperationType,\n private enableEndPointDiscovery: boolean,\n private enablePartitionLevelFailover: boolean,\n private globalPartitionEndpointManager?: GlobalPartitionEndpointManager,\n ) {}\n\n /**\n * Checks if a timeout request is valid for the timeout failover retry policy.\n * A valid request should be a data plane, metadata, or query plan request.\n * @returns\n */\n private isValidRequestForTimeoutError(): boolean {\n const isQuery = Constants.HttpHeaders.IsQuery in this.headers;\n const isQueryPlan = Constants.HttpHeaders.IsQueryPlan in this.headers;\n if (this.methodType === HTTPMethod.get || isQuery || isQueryPlan) {\n return true;\n }\n return false;\n }\n\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n retryContext?: RetryContext,\n locationEndpoint?: string,\n requestContext?: RequestContext,\n ): Promise<boolean> {\n if (!err) {\n return false;\n }\n if (!retryContext || !locationEndpoint) {\n return false;\n }\n if (!this.enableEndPointDiscovery) {\n return false;\n }\n // Mark the partition as unavailable.\n // Let the Retry logic decide if the request should be retried\n if (requestContext && this.globalPartitionEndpointManager) {\n await this.globalPartitionEndpointManager.tryPartitionLevelFailover(\n requestContext,\n diagnosticNode,\n );\n }\n // Check if the error is a timeout error (TimeoutErrorCode) and if it is not a valid HTTP network timeout request\n if (err.code === TimeoutErrorCode && !this.isValidRequestForTimeoutError()) {\n return false;\n }\n if (\n err.code === StatusCodes.ServiceUnavailable &&\n this.failoverRetryCount >= this.maxServiceUnavailableRetryCount\n ) {\n return false;\n }\n if (this.failoverRetryCount >= this.maxRetryAttemptCount) {\n return false;\n }\n const canUseMultipleWriteLocations = this.globalEndpointManager.canUseMultipleWriteLocations(\n this.resourceType,\n this.operationType,\n );\n const readRequest = isReadRequest(this.operationType);\n\n if (!canUseMultipleWriteLocations && !readRequest && !this.enablePartitionLevelFailover) {\n // Write requests on single master cannot be retried if partition level failover is disabled.\n // This means there are no other regions available to serve the writes.\n return false;\n }\n this.failoverRetryCount++;\n // Setting the retryLocationIndex to the next available location for retry.\n // The retryLocationIndex is determined based on the failoverRetryCount, starting from zero.\n retryContext.retryLocationServerIndex = await this.findEndpointIndex(this.failoverRetryCount);\n diagnosticNode.addData({ successfulRetryPolicy: \"timeout-failover\" });\n return true;\n }\n\n /**\n * Determines index of endpoint to be used for retry based upon failoverRetryCount and avalable locations\n * @param failoverRetryCount - count of failovers\n * @returns\n */\n private async findEndpointIndex(failoverRetryCount: number): Promise<number> {\n // count of preferred locations specified by user\n const preferredLocationsCount = this.globalEndpointManager.preferredLocationsCount;\n const readRequest = isReadRequest(this.operationType);\n let endpointIndex = 0;\n // If preferredLocationsCount is not zero, it indicates that the user has specified preferred locations.\n if (preferredLocationsCount !== 0) {\n // The endpointIndex is set based on the preferred location and the failover retry count.\n endpointIndex = failoverRetryCount % preferredLocationsCount;\n } else {\n // In the absence of preferred locations, the endpoint selection is based on the failover count and the number of available locations.\n if (readRequest) {\n const getReadEndpoints = await this.globalEndpointManager.getReadEndpoints();\n if (getReadEndpoints && getReadEndpoints.length > 0) {\n endpointIndex = failoverRetryCount % getReadEndpoints.length;\n }\n } else {\n const getWriteEndpoints = await this.globalEndpointManager.getWriteEndpoints();\n if (getWriteEndpoints && getWriteEndpoints.length > 0) {\n endpointIndex = failoverRetryCount % getWriteEndpoints.length;\n }\n }\n }\n return endpointIndex;\n }\n}\n"]}
@@ -1,6 +1,10 @@
1
1
  import { Constants } from "../common/index.js";
2
2
  /** @hidden */
3
3
  export class QueryRange {
4
+ min;
5
+ max;
6
+ isMinInclusive;
7
+ isMaxInclusive;
4
8
  /**
5
9
  * Represents a QueryRange.
6
10
  *
@@ -1 +1 @@
1
- {"version":3,"file":"QueryRange.js","sourceRoot":"","sources":["../../../src/routing/QueryRange.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,cAAc;AACd,MAAM,OAAO,UAAU;IAMrB;;;;;;;;OAQG;IACH,YACE,QAAgB,EAChB,QAAgB,EAChB,cAAuB,EACvB,cAAuB;QAEvB,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IACM,QAAQ,CAAC,KAAiB;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,uDAAuD;QAC5E,MAAM,MAAM,GAAG,KAAK,CAAC;QACrB,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACzD,IACE,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;gBAChF,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,EAChF,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,WAAW;QAChB,OAAO,CACL,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,8BAA8B,CAAC,qCAAqC;YAC3F,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,8BAA8B,CAAC,qCAAqC;YAC3F,IAAI,CAAC,cAAc,KAAK,IAAI;YAC5B,IAAI,CAAC,cAAc,KAAK,KAAK,CAC9B,CAAC;IACJ,CAAC;IAEM,OAAO;QACZ,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;IAChF,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,sBAAsB,CAAC,iBAAoC;QACvE,OAAO,IAAI,UAAU,CACnB,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAC3D,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAC3D,IAAI,EACJ,KAAK,CACN,CAAC;IACJ,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,aAAa,CAAC,cAAkC;QAC5D,OAAO,IAAI,UAAU,CACnB,cAAc,CAAC,GAAG,EAClB,cAAc,CAAC,GAAG,EAClB,cAAc,CAAC,cAAc,EAC7B,cAAc,CAAC,cAAc,CAC9B,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKeyRange } from \"../client/Container/PartitionKeyRange.js\";\nimport { Constants } from \"../common/index.js\";\nimport type { QueryRange as ResponseQueryRange } from \"../request/ErrorResponse.js\";\n\n/** @hidden */\nexport class QueryRange {\n public min: string;\n public max: string;\n public isMinInclusive: boolean;\n public isMaxInclusive: boolean;\n\n /**\n * Represents a QueryRange.\n *\n * @param rangeMin - min\n * @param rangeMin - max\n * @param isMinInclusive - isMinInclusive\n * @param isMaxInclusive - isMaxInclusive\n * @hidden\n */\n constructor(\n rangeMin: string,\n rangeMax: string,\n isMinInclusive: boolean,\n isMaxInclusive: boolean,\n ) {\n this.min = rangeMin;\n this.max = rangeMax;\n this.isMinInclusive = isMinInclusive;\n this.isMaxInclusive = isMaxInclusive;\n }\n public overlaps(other: QueryRange): boolean {\n const range1 = this; // eslint-disable-line @typescript-eslint/no-this-alias\n const range2 = other;\n if (range1 === undefined || range2 === undefined) {\n return false;\n }\n if (range1.isEmpty() || range2.isEmpty()) {\n return false;\n }\n\n if (range1.min <= range2.max || range2.min <= range1.max) {\n if (\n (range1.min === range2.max && !(range1.isMinInclusive && range2.isMaxInclusive)) ||\n (range2.min === range1.max && !(range2.isMinInclusive && range1.isMaxInclusive))\n ) {\n return false;\n }\n return true;\n }\n return false;\n }\n\n public isFullRange(): boolean {\n return (\n this.min === Constants.EffectivePartitionKeyConstants.MinimumInclusiveEffectivePartitionKey &&\n this.max === Constants.EffectivePartitionKeyConstants.MaximumExclusiveEffectivePartitionKey &&\n this.isMinInclusive === true &&\n this.isMaxInclusive === false\n );\n }\n\n public isEmpty(): boolean {\n return !(this.isMinInclusive && this.isMaxInclusive) && this.min === this.max;\n }\n /**\n * Parse a QueryRange from a partitionKeyRange\n * @returns QueryRange\n * @hidden\n */\n public static parsePartitionKeyRange(partitionKeyRange: PartitionKeyRange): QueryRange {\n return new QueryRange(\n partitionKeyRange[Constants.PartitionKeyRange.MinInclusive],\n partitionKeyRange[Constants.PartitionKeyRange.MaxExclusive],\n true,\n false,\n );\n }\n /**\n * Parse a QueryRange from a dictionary\n * @returns QueryRange\n * @hidden\n */\n public static parseFromDict(queryRangeDict: ResponseQueryRange): QueryRange {\n return new QueryRange(\n queryRangeDict.min,\n queryRangeDict.max,\n queryRangeDict.isMinInclusive,\n queryRangeDict.isMaxInclusive,\n );\n }\n}\n"]}
1
+ {"version":3,"file":"QueryRange.js","sourceRoot":"","sources":["../../../src/routing/QueryRange.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,cAAc;AACd,MAAM,OAAO,UAAU;IACd,GAAG,CAAS;IACZ,GAAG,CAAS;IACZ,cAAc,CAAU;IACxB,cAAc,CAAU;IAE/B;;;;;;;;OAQG;IACH,YACE,QAAgB,EAChB,QAAgB,EAChB,cAAuB,EACvB,cAAuB;QAEvB,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IACM,QAAQ,CAAC,KAAiB;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,uDAAuD;QAC5E,MAAM,MAAM,GAAG,KAAK,CAAC;QACrB,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACzD,IACE,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;gBAChF,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,EAChF,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,WAAW;QAChB,OAAO,CACL,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,8BAA8B,CAAC,qCAAqC;YAC3F,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,8BAA8B,CAAC,qCAAqC;YAC3F,IAAI,CAAC,cAAc,KAAK,IAAI;YAC5B,IAAI,CAAC,cAAc,KAAK,KAAK,CAC9B,CAAC;IACJ,CAAC;IAEM,OAAO;QACZ,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;IAChF,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,sBAAsB,CAAC,iBAAoC;QACvE,OAAO,IAAI,UAAU,CACnB,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAC3D,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAC3D,IAAI,EACJ,KAAK,CACN,CAAC;IACJ,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,aAAa,CAAC,cAAkC;QAC5D,OAAO,IAAI,UAAU,CACnB,cAAc,CAAC,GAAG,EAClB,cAAc,CAAC,GAAG,EAClB,cAAc,CAAC,cAAc,EAC7B,cAAc,CAAC,cAAc,CAC9B,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKeyRange } from \"../client/Container/PartitionKeyRange.js\";\nimport { Constants } from \"../common/index.js\";\nimport type { QueryRange as ResponseQueryRange } from \"../request/ErrorResponse.js\";\n\n/** @hidden */\nexport class QueryRange {\n public min: string;\n public max: string;\n public isMinInclusive: boolean;\n public isMaxInclusive: boolean;\n\n /**\n * Represents a QueryRange.\n *\n * @param rangeMin - min\n * @param rangeMin - max\n * @param isMinInclusive - isMinInclusive\n * @param isMaxInclusive - isMaxInclusive\n * @hidden\n */\n constructor(\n rangeMin: string,\n rangeMax: string,\n isMinInclusive: boolean,\n isMaxInclusive: boolean,\n ) {\n this.min = rangeMin;\n this.max = rangeMax;\n this.isMinInclusive = isMinInclusive;\n this.isMaxInclusive = isMaxInclusive;\n }\n public overlaps(other: QueryRange): boolean {\n const range1 = this; // eslint-disable-line @typescript-eslint/no-this-alias\n const range2 = other;\n if (range1 === undefined || range2 === undefined) {\n return false;\n }\n if (range1.isEmpty() || range2.isEmpty()) {\n return false;\n }\n\n if (range1.min <= range2.max || range2.min <= range1.max) {\n if (\n (range1.min === range2.max && !(range1.isMinInclusive && range2.isMaxInclusive)) ||\n (range2.min === range1.max && !(range2.isMinInclusive && range1.isMaxInclusive))\n ) {\n return false;\n }\n return true;\n }\n return false;\n }\n\n public isFullRange(): boolean {\n return (\n this.min === Constants.EffectivePartitionKeyConstants.MinimumInclusiveEffectivePartitionKey &&\n this.max === Constants.EffectivePartitionKeyConstants.MaximumExclusiveEffectivePartitionKey &&\n this.isMinInclusive === true &&\n this.isMaxInclusive === false\n );\n }\n\n public isEmpty(): boolean {\n return !(this.isMinInclusive && this.isMaxInclusive) && this.min === this.max;\n }\n /**\n * Parse a QueryRange from a partitionKeyRange\n * @returns QueryRange\n * @hidden\n */\n public static parsePartitionKeyRange(partitionKeyRange: PartitionKeyRange): QueryRange {\n return new QueryRange(\n partitionKeyRange[Constants.PartitionKeyRange.MinInclusive],\n partitionKeyRange[Constants.PartitionKeyRange.MaxExclusive],\n true,\n false,\n );\n }\n /**\n * Parse a QueryRange from a dictionary\n * @returns QueryRange\n * @hidden\n */\n public static parseFromDict(queryRangeDict: ResponseQueryRange): QueryRange {\n return new QueryRange(\n queryRangeDict.min,\n queryRangeDict.max,\n queryRangeDict.isMinInclusive,\n queryRangeDict.isMaxInclusive,\n );\n }\n}\n"]}
@@ -2,6 +2,10 @@ import { Constants } from "../common/index.js";
2
2
  import { QueryRange } from "./QueryRange.js";
3
3
  /** @hidden */
4
4
  export class InMemoryCollectionRoutingMap {
5
+ orderedPartitionKeyRanges;
6
+ orderedRanges;
7
+ // TODO: chrande made this public, even though it is implementation detail for a test
8
+ orderedPartitionInfo;
5
9
  /**
6
10
  * Represents a InMemoryCollectionRoutingMap Object,
7
11
  * Stores partition key ranges in an efficient way with some additional information and provides
@@ -1 +1 @@
1
- {"version":3,"file":"inMemoryCollectionRoutingMap.js","sourceRoot":"","sources":["../../../src/routing/inMemoryCollectionRoutingMap.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKeyRange } from \"../client/index.js\";\nimport { Constants } from \"../common/index.js\";\nimport { QueryRange } from \"./QueryRange.js\";\n\n/** @hidden */\nexport class InMemoryCollectionRoutingMap {\n private orderedPartitionKeyRanges: PartitionKeyRange[];\n private orderedRanges: QueryRange[];\n // TODO: chrande made this public, even though it is implementation detail for a test\n public orderedPartitionInfo: unknown;\n\n /**\n * Represents a InMemoryCollectionRoutingMap Object,\n * Stores partition key ranges in an efficient way with some additional information and provides\n * convenience methods for working with set of ranges.\n */\n constructor(orderedPartitionKeyRanges: PartitionKeyRange[], orderedPartitionInfo: unknown) {\n this.orderedPartitionKeyRanges = orderedPartitionKeyRanges;\n this.orderedRanges = orderedPartitionKeyRanges.map((pkr) => {\n return new QueryRange(\n pkr[Constants.PartitionKeyRange.MinInclusive],\n pkr[Constants.PartitionKeyRange.MaxExclusive],\n true,\n false,\n );\n });\n this.orderedPartitionInfo = orderedPartitionInfo;\n }\n public getOrderedParitionKeyRanges(): PartitionKeyRange[] {\n return this.orderedPartitionKeyRanges;\n }\n\n public getOverlappingRanges(providedQueryRanges: QueryRange | QueryRange[]): PartitionKeyRange[] {\n // TODO This code has all kinds of smells. Multiple iterations and sorts just to grab overlapping ranges\n // stfaul attempted to bring it down to one for-loop and failed\n const pqr: QueryRange[] = Array.isArray(providedQueryRanges)\n ? providedQueryRanges\n : [providedQueryRanges];\n const minToPartitionRange: any = {}; // TODO: any\n\n // this for loop doesn't invoke any async callback\n for (const queryRange of pqr) {\n if (queryRange.isEmpty()) {\n continue;\n }\n\n if (queryRange.isFullRange()) {\n return this.orderedPartitionKeyRanges;\n }\n\n const minIndex = this.orderedRanges.findIndex((range) => {\n if (queryRange.min > range.min && queryRange.min < range.max) {\n return true;\n }\n if (queryRange.min === range.min) {\n return true;\n }\n if (queryRange.min === range.max) {\n return true;\n }\n });\n\n if (minIndex < 0) {\n throw new Error(\n \"error in collection routing map, queried value is less than the start range.\",\n );\n }\n\n // Start at the end and work backwards\n let maxIndex: number;\n for (let i = this.orderedRanges.length - 1; i >= 0; i--) {\n const range = this.orderedRanges[i];\n if (queryRange.max > range.min && queryRange.max < range.max) {\n maxIndex = i;\n break;\n }\n if (queryRange.max === range.min) {\n maxIndex = i;\n break;\n }\n if (queryRange.max === range.max) {\n maxIndex = i;\n break;\n }\n }\n\n if (maxIndex > this.orderedRanges.length) {\n throw new Error(\n \"error in collection routing map, queried value is greater than the end range.\",\n );\n }\n\n for (let j = minIndex; j < maxIndex + 1; j++) {\n if (queryRange.overlaps(this.orderedRanges[j])) {\n minToPartitionRange[\n this.orderedPartitionKeyRanges[j][Constants.PartitionKeyRange.MinInclusive]\n ] = this.orderedPartitionKeyRanges[j];\n }\n }\n }\n\n const overlappingPartitionKeyRanges = Object.keys(minToPartitionRange).map(\n (k) => minToPartitionRange[k],\n );\n\n return overlappingPartitionKeyRanges.sort((a, b) => {\n return a[Constants.PartitionKeyRange.MinInclusive].localeCompare(\n b[Constants.PartitionKeyRange.MinInclusive],\n );\n });\n }\n}\n"]}
1
+ {"version":3,"file":"inMemoryCollectionRoutingMap.js","sourceRoot":"","sources":["../../../src/routing/inMemoryCollectionRoutingMap.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKeyRange } from \"../client/index.js\";\nimport { Constants } from \"../common/index.js\";\nimport { QueryRange } from \"./QueryRange.js\";\n\n/** @hidden */\nexport class InMemoryCollectionRoutingMap {\n private orderedPartitionKeyRanges: PartitionKeyRange[];\n private orderedRanges: QueryRange[];\n // TODO: chrande made this public, even though it is implementation detail for a test\n public orderedPartitionInfo: unknown;\n\n /**\n * Represents a InMemoryCollectionRoutingMap Object,\n * Stores partition key ranges in an efficient way with some additional information and provides\n * convenience methods for working with set of ranges.\n */\n constructor(orderedPartitionKeyRanges: PartitionKeyRange[], orderedPartitionInfo: unknown) {\n this.orderedPartitionKeyRanges = orderedPartitionKeyRanges;\n this.orderedRanges = orderedPartitionKeyRanges.map((pkr) => {\n return new QueryRange(\n pkr[Constants.PartitionKeyRange.MinInclusive],\n pkr[Constants.PartitionKeyRange.MaxExclusive],\n true,\n false,\n );\n });\n this.orderedPartitionInfo = orderedPartitionInfo;\n }\n public getOrderedParitionKeyRanges(): PartitionKeyRange[] {\n return this.orderedPartitionKeyRanges;\n }\n\n public getOverlappingRanges(providedQueryRanges: QueryRange | QueryRange[]): PartitionKeyRange[] {\n // TODO This code has all kinds of smells. Multiple iterations and sorts just to grab overlapping ranges\n // stfaul attempted to bring it down to one for-loop and failed\n const pqr: QueryRange[] = Array.isArray(providedQueryRanges)\n ? providedQueryRanges\n : [providedQueryRanges];\n const minToPartitionRange: any = {}; // TODO: any\n\n // this for loop doesn't invoke any async callback\n for (const queryRange of pqr) {\n if (queryRange.isEmpty()) {\n continue;\n }\n\n if (queryRange.isFullRange()) {\n return this.orderedPartitionKeyRanges;\n }\n\n const minIndex = this.orderedRanges.findIndex((range) => {\n if (queryRange.min > range.min && queryRange.min < range.max) {\n return true;\n }\n if (queryRange.min === range.min) {\n return true;\n }\n if (queryRange.min === range.max) {\n return true;\n }\n });\n\n if (minIndex < 0) {\n throw new Error(\n \"error in collection routing map, queried value is less than the start range.\",\n );\n }\n\n // Start at the end and work backwards\n let maxIndex: number;\n for (let i = this.orderedRanges.length - 1; i >= 0; i--) {\n const range = this.orderedRanges[i];\n if (queryRange.max > range.min && queryRange.max < range.max) {\n maxIndex = i;\n break;\n }\n if (queryRange.max === range.min) {\n maxIndex = i;\n break;\n }\n if (queryRange.max === range.max) {\n maxIndex = i;\n break;\n }\n }\n\n if (maxIndex > this.orderedRanges.length) {\n throw new Error(\n \"error in collection routing map, queried value is greater than the end range.\",\n );\n }\n\n for (let j = minIndex; j < maxIndex + 1; j++) {\n if (queryRange.overlaps(this.orderedRanges[j])) {\n minToPartitionRange[\n this.orderedPartitionKeyRanges[j][Constants.PartitionKeyRange.MinInclusive]\n ] = this.orderedPartitionKeyRanges[j];\n }\n }\n }\n\n const overlappingPartitionKeyRanges = Object.keys(minToPartitionRange).map(\n (k) => minToPartitionRange[k],\n );\n\n return overlappingPartitionKeyRanges.sort((a, b) => {\n return a[Constants.PartitionKeyRange.MinInclusive].localeCompare(\n b[Constants.PartitionKeyRange.MinInclusive],\n );\n });\n }\n}\n"]}