@azure/cosmos 4.5.0 → 4.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1200) hide show
  1. package/dist/browser/ChangeFeedIterator.js +17 -11
  2. package/dist/browser/ChangeFeedIterator.js.map +1 -1
  3. package/dist/browser/ChangeFeedResponse.js +8 -0
  4. package/dist/browser/ChangeFeedResponse.js.map +1 -1
  5. package/dist/browser/ClientContext.js +122 -29
  6. package/dist/browser/ClientContext.js.map +1 -1
  7. package/dist/browser/CosmosClient.js +34 -3
  8. package/dist/browser/CosmosClient.js.map +1 -1
  9. package/dist/browser/CosmosDiagnostics.js +3 -0
  10. package/dist/browser/CosmosDiagnostics.js.map +1 -1
  11. package/dist/browser/PartitionKeyRangeFailoverInfo.js +8 -5
  12. package/dist/browser/PartitionKeyRangeFailoverInfo.js.map +1 -1
  13. package/dist/browser/bulk/Batcher.js +13 -3
  14. package/dist/browser/bulk/Batcher.js.map +1 -1
  15. package/dist/browser/bulk/BulkHelper.js +26 -11
  16. package/dist/browser/bulk/BulkHelper.js.map +1 -1
  17. package/dist/browser/bulk/BulkResponse.js +22 -20
  18. package/dist/browser/bulk/BulkResponse.js.map +1 -1
  19. package/dist/browser/bulk/CongestionAlgorithm.js +11 -4
  20. package/dist/browser/bulk/CongestionAlgorithm.js.map +1 -1
  21. package/dist/browser/bulk/HelperPerPartition.js +14 -1
  22. package/dist/browser/bulk/HelperPerPartition.js.map +1 -1
  23. package/dist/browser/bulk/ItemOperationContext.js +4 -0
  24. package/dist/browser/bulk/ItemOperationContext.js.map +1 -1
  25. package/dist/browser/bulk/Limiter.js +27 -18
  26. package/dist/browser/bulk/Limiter.js.map +1 -1
  27. package/dist/browser/bulk/PartitionMetric.js +4 -0
  28. package/dist/browser/bulk/PartitionMetric.js.map +1 -1
  29. package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  30. package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  31. package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
  32. package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  33. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  34. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  35. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  36. package/dist/browser/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  37. package/dist/browser/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  38. package/dist/browser/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  39. package/dist/browser/client/ChangeFeed/ChangeFeedRange.js +20 -0
  40. package/dist/browser/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  41. package/dist/browser/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  42. package/dist/browser/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  43. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  44. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  45. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  46. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  47. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  48. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  49. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  50. package/dist/browser/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  51. package/dist/browser/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  52. package/dist/browser/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  53. package/dist/browser/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  54. package/dist/browser/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  55. package/dist/browser/client/ChangeFeed/FeedRange.js +8 -0
  56. package/dist/browser/client/ChangeFeed/FeedRange.js.map +1 -1
  57. package/dist/browser/client/ChangeFeed/FeedRangeQueue.js +1 -0
  58. package/dist/browser/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  59. package/dist/browser/client/ChangeFeed/changeFeedUtils.js +5 -5
  60. package/dist/browser/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  61. package/dist/browser/client/ClientUtils.js +1 -1
  62. package/dist/browser/client/ClientUtils.js.map +1 -1
  63. package/dist/browser/client/Conflict/Conflict.js +4 -0
  64. package/dist/browser/client/Conflict/Conflict.js.map +1 -1
  65. package/dist/browser/client/Conflict/ConflictResponse.js +2 -0
  66. package/dist/browser/client/Conflict/ConflictResponse.js.map +1 -1
  67. package/dist/browser/client/Conflict/Conflicts.js +2 -0
  68. package/dist/browser/client/Conflict/Conflicts.js.map +1 -1
  69. package/dist/browser/client/Container/Container.js +18 -3
  70. package/dist/browser/client/Container/Container.js.map +1 -1
  71. package/dist/browser/client/Container/ContainerResponse.js +2 -0
  72. package/dist/browser/client/Container/ContainerResponse.js.map +1 -1
  73. package/dist/browser/client/Container/Containers.js +4 -2
  74. package/dist/browser/client/Container/Containers.js.map +1 -1
  75. package/dist/browser/client/Database/Database.js +33 -0
  76. package/dist/browser/client/Database/Database.js.map +1 -1
  77. package/dist/browser/client/Database/DatabaseResponse.js +2 -0
  78. package/dist/browser/client/Database/DatabaseResponse.js.map +1 -1
  79. package/dist/browser/client/Database/Databases.js +3 -0
  80. package/dist/browser/client/Database/Databases.js.map +1 -1
  81. package/dist/browser/client/Item/Item.js +4 -0
  82. package/dist/browser/client/Item/Item.js.map +1 -1
  83. package/dist/browser/client/Item/ItemResponse.js +2 -0
  84. package/dist/browser/client/Item/ItemResponse.js.map +1 -1
  85. package/dist/browser/client/Item/Items.js +3 -0
  86. package/dist/browser/client/Item/Items.js.map +1 -1
  87. package/dist/browser/client/Offer/Offer.js +3 -0
  88. package/dist/browser/client/Offer/Offer.js.map +1 -1
  89. package/dist/browser/client/Offer/OfferResponse.js +2 -0
  90. package/dist/browser/client/Offer/OfferResponse.js.map +1 -1
  91. package/dist/browser/client/Offer/Offers.js +2 -0
  92. package/dist/browser/client/Offer/Offers.js.map +1 -1
  93. package/dist/browser/client/Permission/Permission.js +3 -0
  94. package/dist/browser/client/Permission/Permission.js.map +1 -1
  95. package/dist/browser/client/Permission/PermissionResponse.js +2 -0
  96. package/dist/browser/client/Permission/PermissionResponse.js.map +1 -1
  97. package/dist/browser/client/Permission/Permissions.js +2 -0
  98. package/dist/browser/client/Permission/Permissions.js.map +1 -1
  99. package/dist/browser/client/SasToken/SasTokenProperties.js +17 -0
  100. package/dist/browser/client/SasToken/SasTokenProperties.js.map +1 -1
  101. package/dist/browser/client/Script/Scripts.js +5 -0
  102. package/dist/browser/client/Script/Scripts.js.map +1 -1
  103. package/dist/browser/client/StoredProcedure/StoredProcedure.js +3 -0
  104. package/dist/browser/client/StoredProcedure/StoredProcedure.js.map +1 -1
  105. package/dist/browser/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  106. package/dist/browser/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  107. package/dist/browser/client/StoredProcedure/StoredProcedures.js +2 -0
  108. package/dist/browser/client/StoredProcedure/StoredProcedures.js.map +1 -1
  109. package/dist/browser/client/Trigger/Trigger.js +3 -0
  110. package/dist/browser/client/Trigger/Trigger.js.map +1 -1
  111. package/dist/browser/client/Trigger/TriggerResponse.js +2 -0
  112. package/dist/browser/client/Trigger/TriggerResponse.js.map +1 -1
  113. package/dist/browser/client/Trigger/Triggers.js +2 -0
  114. package/dist/browser/client/Trigger/Triggers.js.map +1 -1
  115. package/dist/browser/client/User/User.js +9 -0
  116. package/dist/browser/client/User/User.js.map +1 -1
  117. package/dist/browser/client/User/UserResponse.js +2 -0
  118. package/dist/browser/client/User/UserResponse.js.map +1 -1
  119. package/dist/browser/client/User/Users.js +2 -0
  120. package/dist/browser/client/User/Users.js.map +1 -1
  121. package/dist/browser/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  122. package/dist/browser/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  123. package/dist/browser/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  124. package/dist/browser/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  125. package/dist/browser/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  126. package/dist/browser/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  127. package/dist/browser/common/constants.js +1 -1
  128. package/dist/browser/common/constants.js.map +1 -1
  129. package/dist/browser/diagnostics/CosmosDiagnosticsContext.js +8 -7
  130. package/dist/browser/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  131. package/dist/browser/diagnostics/DiagnosticNodeInternal.js +26 -7
  132. package/dist/browser/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  133. package/dist/browser/diagnostics/DiagnosticWriter.js +1 -3
  134. package/dist/browser/diagnostics/DiagnosticWriter.js.map +1 -1
  135. package/dist/browser/diagnostics/index.js +2 -2
  136. package/dist/browser/diagnostics/index.js.map +1 -1
  137. package/dist/browser/documents/DatabaseAccount.js +20 -4
  138. package/dist/browser/documents/DatabaseAccount.js.map +1 -1
  139. package/dist/browser/documents/PartitionKey.js +1 -3
  140. package/dist/browser/documents/PartitionKey.js.map +1 -1
  141. package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  142. package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  143. package/dist/browser/encryption/Cache/EncryptionSettingsCache.js +2 -0
  144. package/dist/browser/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  145. package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  146. package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  147. package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  148. package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  149. package/dist/browser/encryption/EncryptionItemQueryIterator.js +24 -27
  150. package/dist/browser/encryption/EncryptionItemQueryIterator.js.map +1 -1
  151. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  152. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  153. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  154. package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  155. package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  156. package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  157. package/dist/browser/encryption/EncryptionKeyStoreProvider.js +8 -1
  158. package/dist/browser/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  159. package/dist/browser/encryption/EncryptionManager.js +6 -0
  160. package/dist/browser/encryption/EncryptionManager.js.map +1 -1
  161. package/dist/browser/encryption/EncryptionProcessor.js +5 -0
  162. package/dist/browser/encryption/EncryptionProcessor.js.map +1 -1
  163. package/dist/browser/encryption/EncryptionQueryBuilder.js +2 -0
  164. package/dist/browser/encryption/EncryptionQueryBuilder.js.map +1 -1
  165. package/dist/browser/encryption/EncryptionSettingForProperty.js +6 -0
  166. package/dist/browser/encryption/EncryptionSettingForProperty.js.map +1 -1
  167. package/dist/browser/encryption/EncryptionSettings.js +6 -3
  168. package/dist/browser/encryption/EncryptionSettings.js.map +1 -1
  169. package/dist/browser/encryption/KeyEncryptionKey.js +4 -0
  170. package/dist/browser/encryption/KeyEncryptionKey.js.map +1 -1
  171. package/dist/browser/encryption/Serializers/StringSerializer.js +1 -1
  172. package/dist/browser/encryption/Serializers/StringSerializer.js.map +1 -1
  173. package/dist/browser/extractPartitionKey.js +2 -2
  174. package/dist/browser/extractPartitionKey.js.map +1 -1
  175. package/dist/browser/globalEndpointManager.d.ts.map +1 -1
  176. package/dist/browser/globalEndpointManager.js +36 -23
  177. package/dist/browser/globalEndpointManager.js.map +1 -1
  178. package/dist/browser/globalPartitionEndpointManager.js +8 -0
  179. package/dist/browser/globalPartitionEndpointManager.js.map +1 -1
  180. package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  181. package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  182. package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  183. package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  184. package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  185. package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  186. package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  187. package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  188. package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  189. package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  190. package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  191. package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  192. package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  193. package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  194. package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  195. package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  196. package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  197. package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  198. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  199. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  200. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  201. package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  202. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  203. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  204. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  205. package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  206. package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  207. package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  208. package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  209. package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  210. package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  211. package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  212. package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  213. package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  214. package/dist/browser/queryExecutionContext/FetchResult.js +4 -0
  215. package/dist/browser/queryExecutionContext/FetchResult.js.map +1 -1
  216. package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  217. package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  218. package/dist/browser/queryExecutionContext/documentProducer.js +34 -21
  219. package/dist/browser/queryExecutionContext/documentProducer.js.map +1 -1
  220. package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  221. package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  222. package/dist/browser/queryExecutionContext/orderByComparator.js +1 -0
  223. package/dist/browser/queryExecutionContext/orderByComparator.js.map +1 -1
  224. package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  225. package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  226. package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  227. package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  228. package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  229. package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  230. package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  231. package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  232. package/dist/browser/queryIterator.js +41 -33
  233. package/dist/browser/queryIterator.js.map +1 -1
  234. package/dist/browser/queryMetrics/clientSideMetrics.js +2 -1
  235. package/dist/browser/queryMetrics/clientSideMetrics.js.map +1 -1
  236. package/dist/browser/queryMetrics/queryMetrics.js +14 -1
  237. package/dist/browser/queryMetrics/queryMetrics.js.map +1 -1
  238. package/dist/browser/queryMetrics/queryPreparationTime.js +5 -1
  239. package/dist/browser/queryMetrics/queryPreparationTime.js.map +1 -1
  240. package/dist/browser/queryMetrics/runtimeExecutionTimes.js +4 -1
  241. package/dist/browser/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  242. package/dist/browser/queryMetrics/timeSpan.js +4 -3
  243. package/dist/browser/queryMetrics/timeSpan.js.map +1 -1
  244. package/dist/browser/request/ErrorResponse.js +19 -0
  245. package/dist/browser/request/ErrorResponse.js.map +1 -1
  246. package/dist/browser/request/FeedResponse.js +4 -0
  247. package/dist/browser/request/FeedResponse.js.map +1 -1
  248. package/dist/browser/request/RequestHandler.js +1 -2
  249. package/dist/browser/request/RequestHandler.js.map +1 -1
  250. package/dist/browser/request/ResourceResponse.js +5 -0
  251. package/dist/browser/request/ResourceResponse.js.map +1 -1
  252. package/dist/browser/request/TimeoutError.js +1 -1
  253. package/dist/browser/request/TimeoutError.js.map +1 -1
  254. package/dist/browser/request/hybridSearchQueryResult.js +5 -0
  255. package/dist/browser/request/hybridSearchQueryResult.js.map +1 -1
  256. package/dist/browser/request/request.js +5 -1
  257. package/dist/browser/request/request.js.map +1 -1
  258. package/dist/browser/retry/bulkExecutionRetryPolicy.js +5 -2
  259. package/dist/browser/retry/bulkExecutionRetryPolicy.js.map +1 -1
  260. package/dist/browser/retry/defaultRetryPolicy.d.ts.map +1 -1
  261. package/dist/browser/retry/defaultRetryPolicy.js +7 -7
  262. package/dist/browser/retry/defaultRetryPolicy.js.map +1 -1
  263. package/dist/browser/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
  264. package/dist/browser/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
  265. package/dist/browser/retry/endpointDiscoveryRetryPolicy.js +24 -7
  266. package/dist/browser/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  267. package/dist/browser/retry/resourceThrottleRetryPolicy.js +20 -10
  268. package/dist/browser/retry/resourceThrottleRetryPolicy.js.map +1 -1
  269. package/dist/browser/retry/retryUtility.d.ts.map +1 -1
  270. package/dist/browser/retry/retryUtility.js +5 -5
  271. package/dist/browser/retry/retryUtility.js.map +1 -1
  272. package/dist/browser/retry/sessionRetryPolicy.js +8 -4
  273. package/dist/browser/retry/sessionRetryPolicy.js.map +1 -1
  274. package/dist/browser/retry/timeoutFailoverRetryPolicy.js +14 -4
  275. package/dist/browser/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  276. package/dist/browser/routing/QueryRange.js +4 -0
  277. package/dist/browser/routing/QueryRange.js.map +1 -1
  278. package/dist/browser/routing/inMemoryCollectionRoutingMap.js +4 -0
  279. package/dist/browser/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  280. package/dist/browser/routing/partitionKeyRangeCache.js +2 -0
  281. package/dist/browser/routing/partitionKeyRangeCache.js.map +1 -1
  282. package/dist/browser/routing/smartRoutingMapProvider.js +1 -0
  283. package/dist/browser/routing/smartRoutingMapProvider.js.map +1 -1
  284. package/dist/browser/session/VectorSessionToken.js +6 -2
  285. package/dist/browser/session/VectorSessionToken.js.map +1 -1
  286. package/dist/browser/session/sessionContainer.js +5 -3
  287. package/dist/browser/session/sessionContainer.js.map +1 -1
  288. package/dist/browser/utils/batch.js +15 -4
  289. package/dist/browser/utils/batch.js.map +1 -1
  290. package/dist/browser/utils/fixedSizePriorityQueue.js +4 -0
  291. package/dist/browser/utils/fixedSizePriorityQueue.js.map +1 -1
  292. package/dist/browser/utils/hashing/hash.js +1 -1
  293. package/dist/browser/utils/hashing/hash.js.map +1 -1
  294. package/dist/browser/utils/nonStreamingOrderByMap.js +2 -0
  295. package/dist/browser/utils/nonStreamingOrderByMap.js.map +1 -1
  296. package/dist/commonjs/ChangeFeedIterator.js +17 -11
  297. package/dist/commonjs/ChangeFeedIterator.js.map +1 -1
  298. package/dist/commonjs/ChangeFeedResponse.js +8 -0
  299. package/dist/commonjs/ChangeFeedResponse.js.map +1 -1
  300. package/dist/commonjs/ClientContext.js +122 -29
  301. package/dist/commonjs/ClientContext.js.map +1 -1
  302. package/dist/commonjs/CosmosClient.js +34 -3
  303. package/dist/commonjs/CosmosClient.js.map +1 -1
  304. package/dist/commonjs/CosmosDiagnostics.js +3 -0
  305. package/dist/commonjs/CosmosDiagnostics.js.map +1 -1
  306. package/dist/commonjs/PartitionKeyRangeFailoverInfo.js +8 -5
  307. package/dist/commonjs/PartitionKeyRangeFailoverInfo.js.map +1 -1
  308. package/dist/commonjs/bulk/Batcher.js +13 -3
  309. package/dist/commonjs/bulk/Batcher.js.map +1 -1
  310. package/dist/commonjs/bulk/BulkHelper.js +26 -11
  311. package/dist/commonjs/bulk/BulkHelper.js.map +1 -1
  312. package/dist/commonjs/bulk/BulkResponse.js +22 -20
  313. package/dist/commonjs/bulk/BulkResponse.js.map +1 -1
  314. package/dist/commonjs/bulk/CongestionAlgorithm.js +11 -4
  315. package/dist/commonjs/bulk/CongestionAlgorithm.js.map +1 -1
  316. package/dist/commonjs/bulk/HelperPerPartition.js +14 -1
  317. package/dist/commonjs/bulk/HelperPerPartition.js.map +1 -1
  318. package/dist/commonjs/bulk/ItemOperationContext.js +4 -0
  319. package/dist/commonjs/bulk/ItemOperationContext.js.map +1 -1
  320. package/dist/commonjs/bulk/Limiter.js +27 -18
  321. package/dist/commonjs/bulk/Limiter.js.map +1 -1
  322. package/dist/commonjs/bulk/PartitionMetric.js +4 -0
  323. package/dist/commonjs/bulk/PartitionMetric.js.map +1 -1
  324. package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  325. package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  326. package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
  327. package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  328. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  329. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  330. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  331. package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  332. package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  333. package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  334. package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js +20 -0
  335. package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  336. package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  337. package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  338. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  339. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  340. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  341. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  342. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  343. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  344. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  345. package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  346. package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  347. package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  348. package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  349. package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  350. package/dist/commonjs/client/ChangeFeed/FeedRange.js +8 -0
  351. package/dist/commonjs/client/ChangeFeed/FeedRange.js.map +1 -1
  352. package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js +1 -0
  353. package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  354. package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js +5 -5
  355. package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  356. package/dist/commonjs/client/ClientUtils.js +1 -1
  357. package/dist/commonjs/client/ClientUtils.js.map +1 -1
  358. package/dist/commonjs/client/Conflict/Conflict.js +4 -0
  359. package/dist/commonjs/client/Conflict/Conflict.js.map +1 -1
  360. package/dist/commonjs/client/Conflict/ConflictResponse.js +2 -0
  361. package/dist/commonjs/client/Conflict/ConflictResponse.js.map +1 -1
  362. package/dist/commonjs/client/Conflict/Conflicts.js +2 -0
  363. package/dist/commonjs/client/Conflict/Conflicts.js.map +1 -1
  364. package/dist/commonjs/client/Container/Container.js +18 -3
  365. package/dist/commonjs/client/Container/Container.js.map +1 -1
  366. package/dist/commonjs/client/Container/ContainerResponse.js +2 -0
  367. package/dist/commonjs/client/Container/ContainerResponse.js.map +1 -1
  368. package/dist/commonjs/client/Container/Containers.js +4 -2
  369. package/dist/commonjs/client/Container/Containers.js.map +1 -1
  370. package/dist/commonjs/client/Database/Database.js +33 -0
  371. package/dist/commonjs/client/Database/Database.js.map +1 -1
  372. package/dist/commonjs/client/Database/DatabaseResponse.js +2 -0
  373. package/dist/commonjs/client/Database/DatabaseResponse.js.map +1 -1
  374. package/dist/commonjs/client/Database/Databases.js +3 -0
  375. package/dist/commonjs/client/Database/Databases.js.map +1 -1
  376. package/dist/commonjs/client/Item/Item.js +4 -0
  377. package/dist/commonjs/client/Item/Item.js.map +1 -1
  378. package/dist/commonjs/client/Item/ItemResponse.js +2 -0
  379. package/dist/commonjs/client/Item/ItemResponse.js.map +1 -1
  380. package/dist/commonjs/client/Item/Items.js +3 -0
  381. package/dist/commonjs/client/Item/Items.js.map +1 -1
  382. package/dist/commonjs/client/Offer/Offer.js +3 -0
  383. package/dist/commonjs/client/Offer/Offer.js.map +1 -1
  384. package/dist/commonjs/client/Offer/OfferResponse.js +2 -0
  385. package/dist/commonjs/client/Offer/OfferResponse.js.map +1 -1
  386. package/dist/commonjs/client/Offer/Offers.js +2 -0
  387. package/dist/commonjs/client/Offer/Offers.js.map +1 -1
  388. package/dist/commonjs/client/Permission/Permission.js +3 -0
  389. package/dist/commonjs/client/Permission/Permission.js.map +1 -1
  390. package/dist/commonjs/client/Permission/PermissionResponse.js +2 -0
  391. package/dist/commonjs/client/Permission/PermissionResponse.js.map +1 -1
  392. package/dist/commonjs/client/Permission/Permissions.js +2 -0
  393. package/dist/commonjs/client/Permission/Permissions.js.map +1 -1
  394. package/dist/commonjs/client/SasToken/SasTokenProperties.js +17 -0
  395. package/dist/commonjs/client/SasToken/SasTokenProperties.js.map +1 -1
  396. package/dist/commonjs/client/Script/Scripts.js +5 -0
  397. package/dist/commonjs/client/Script/Scripts.js.map +1 -1
  398. package/dist/commonjs/client/StoredProcedure/StoredProcedure.js +3 -0
  399. package/dist/commonjs/client/StoredProcedure/StoredProcedure.js.map +1 -1
  400. package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  401. package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  402. package/dist/commonjs/client/StoredProcedure/StoredProcedures.js +2 -0
  403. package/dist/commonjs/client/StoredProcedure/StoredProcedures.js.map +1 -1
  404. package/dist/commonjs/client/Trigger/Trigger.js +3 -0
  405. package/dist/commonjs/client/Trigger/Trigger.js.map +1 -1
  406. package/dist/commonjs/client/Trigger/TriggerResponse.js +2 -0
  407. package/dist/commonjs/client/Trigger/TriggerResponse.js.map +1 -1
  408. package/dist/commonjs/client/Trigger/Triggers.js +2 -0
  409. package/dist/commonjs/client/Trigger/Triggers.js.map +1 -1
  410. package/dist/commonjs/client/User/User.js +9 -0
  411. package/dist/commonjs/client/User/User.js.map +1 -1
  412. package/dist/commonjs/client/User/UserResponse.js +2 -0
  413. package/dist/commonjs/client/User/UserResponse.js.map +1 -1
  414. package/dist/commonjs/client/User/Users.js +2 -0
  415. package/dist/commonjs/client/User/Users.js.map +1 -1
  416. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  417. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  418. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  419. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  420. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  421. package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  422. package/dist/commonjs/common/constants.js +1 -1
  423. package/dist/commonjs/common/constants.js.map +1 -1
  424. package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js +8 -7
  425. package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  426. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js +26 -7
  427. package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  428. package/dist/commonjs/diagnostics/DiagnosticWriter.js +1 -3
  429. package/dist/commonjs/diagnostics/DiagnosticWriter.js.map +1 -1
  430. package/dist/commonjs/diagnostics/index.js +2 -2
  431. package/dist/commonjs/diagnostics/index.js.map +1 -1
  432. package/dist/commonjs/documents/DatabaseAccount.js +20 -4
  433. package/dist/commonjs/documents/DatabaseAccount.js.map +1 -1
  434. package/dist/commonjs/documents/PartitionKey.js +1 -3
  435. package/dist/commonjs/documents/PartitionKey.js.map +1 -1
  436. package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
  437. package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
  438. package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  439. package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  440. package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js +2 -0
  441. package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  442. package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  443. package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  444. package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
  445. package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
  446. package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  447. package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  448. package/dist/commonjs/encryption/EncryptionItemQueryIterator.js +24 -27
  449. package/dist/commonjs/encryption/EncryptionItemQueryIterator.js.map +1 -1
  450. package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
  451. package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
  452. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  453. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  454. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  455. package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  456. package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  457. package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  458. package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js +8 -1
  459. package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  460. package/dist/commonjs/encryption/EncryptionManager.js +6 -0
  461. package/dist/commonjs/encryption/EncryptionManager.js.map +1 -1
  462. package/dist/commonjs/encryption/EncryptionProcessor.js +5 -0
  463. package/dist/commonjs/encryption/EncryptionProcessor.js.map +1 -1
  464. package/dist/commonjs/encryption/EncryptionQueryBuilder.js +2 -0
  465. package/dist/commonjs/encryption/EncryptionQueryBuilder.js.map +1 -1
  466. package/dist/commonjs/encryption/EncryptionSettingForProperty.js +6 -0
  467. package/dist/commonjs/encryption/EncryptionSettingForProperty.js.map +1 -1
  468. package/dist/commonjs/encryption/EncryptionSettings.js +6 -3
  469. package/dist/commonjs/encryption/EncryptionSettings.js.map +1 -1
  470. package/dist/commonjs/encryption/KeyEncryptionKey.js +4 -0
  471. package/dist/commonjs/encryption/KeyEncryptionKey.js.map +1 -1
  472. package/dist/commonjs/encryption/Serializers/StringSerializer.js +1 -1
  473. package/dist/commonjs/encryption/Serializers/StringSerializer.js.map +1 -1
  474. package/dist/commonjs/extractPartitionKey.js +2 -2
  475. package/dist/commonjs/extractPartitionKey.js.map +1 -1
  476. package/dist/commonjs/globalEndpointManager.d.ts.map +1 -1
  477. package/dist/commonjs/globalEndpointManager.js +36 -23
  478. package/dist/commonjs/globalEndpointManager.js.map +1 -1
  479. package/dist/commonjs/globalPartitionEndpointManager.js +8 -0
  480. package/dist/commonjs/globalPartitionEndpointManager.js.map +1 -1
  481. package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  482. package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  483. package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  484. package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  485. package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  486. package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  487. package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  488. package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  489. package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  490. package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  491. package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  492. package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  493. package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  494. package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  495. package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  496. package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  497. package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  498. package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  499. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  500. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  501. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  502. package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  503. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  504. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  505. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  506. package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  507. package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  508. package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  509. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  510. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  511. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  512. package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  513. package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  514. package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  515. package/dist/commonjs/queryExecutionContext/FetchResult.js +4 -0
  516. package/dist/commonjs/queryExecutionContext/FetchResult.js.map +1 -1
  517. package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  518. package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  519. package/dist/commonjs/queryExecutionContext/documentProducer.js +34 -21
  520. package/dist/commonjs/queryExecutionContext/documentProducer.js.map +1 -1
  521. package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  522. package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  523. package/dist/commonjs/queryExecutionContext/orderByComparator.js +1 -0
  524. package/dist/commonjs/queryExecutionContext/orderByComparator.js.map +1 -1
  525. package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  526. package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  527. package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  528. package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  529. package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  530. package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  531. package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  532. package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  533. package/dist/commonjs/queryIterator.js +41 -33
  534. package/dist/commonjs/queryIterator.js.map +1 -1
  535. package/dist/commonjs/queryMetrics/clientSideMetrics.js +2 -1
  536. package/dist/commonjs/queryMetrics/clientSideMetrics.js.map +1 -1
  537. package/dist/commonjs/queryMetrics/queryMetrics.js +14 -1
  538. package/dist/commonjs/queryMetrics/queryMetrics.js.map +1 -1
  539. package/dist/commonjs/queryMetrics/queryPreparationTime.js +5 -1
  540. package/dist/commonjs/queryMetrics/queryPreparationTime.js.map +1 -1
  541. package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js +4 -1
  542. package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  543. package/dist/commonjs/queryMetrics/timeSpan.js +4 -3
  544. package/dist/commonjs/queryMetrics/timeSpan.js.map +1 -1
  545. package/dist/commonjs/request/ErrorResponse.js +19 -0
  546. package/dist/commonjs/request/ErrorResponse.js.map +1 -1
  547. package/dist/commonjs/request/FeedResponse.js +4 -0
  548. package/dist/commonjs/request/FeedResponse.js.map +1 -1
  549. package/dist/commonjs/request/RequestHandler.js +1 -2
  550. package/dist/commonjs/request/RequestHandler.js.map +1 -1
  551. package/dist/commonjs/request/ResourceResponse.js +5 -0
  552. package/dist/commonjs/request/ResourceResponse.js.map +1 -1
  553. package/dist/commonjs/request/TimeoutError.js +1 -1
  554. package/dist/commonjs/request/TimeoutError.js.map +1 -1
  555. package/dist/commonjs/request/hybridSearchQueryResult.js +5 -0
  556. package/dist/commonjs/request/hybridSearchQueryResult.js.map +1 -1
  557. package/dist/commonjs/request/request.js +5 -1
  558. package/dist/commonjs/request/request.js.map +1 -1
  559. package/dist/commonjs/retry/bulkExecutionRetryPolicy.js +5 -2
  560. package/dist/commonjs/retry/bulkExecutionRetryPolicy.js.map +1 -1
  561. package/dist/commonjs/retry/defaultRetryPolicy.d.ts.map +1 -1
  562. package/dist/commonjs/retry/defaultRetryPolicy.js +6 -6
  563. package/dist/commonjs/retry/defaultRetryPolicy.js.map +1 -1
  564. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
  565. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
  566. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js +24 -7
  567. package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  568. package/dist/commonjs/retry/resourceThrottleRetryPolicy.js +20 -10
  569. package/dist/commonjs/retry/resourceThrottleRetryPolicy.js.map +1 -1
  570. package/dist/commonjs/retry/retryUtility.d.ts.map +1 -1
  571. package/dist/commonjs/retry/retryUtility.js +5 -5
  572. package/dist/commonjs/retry/retryUtility.js.map +1 -1
  573. package/dist/commonjs/retry/sessionRetryPolicy.js +8 -4
  574. package/dist/commonjs/retry/sessionRetryPolicy.js.map +1 -1
  575. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js +14 -4
  576. package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  577. package/dist/commonjs/routing/QueryRange.js +4 -0
  578. package/dist/commonjs/routing/QueryRange.js.map +1 -1
  579. package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js +4 -0
  580. package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  581. package/dist/commonjs/routing/partitionKeyRangeCache.js +2 -0
  582. package/dist/commonjs/routing/partitionKeyRangeCache.js.map +1 -1
  583. package/dist/commonjs/routing/smartRoutingMapProvider.js +1 -0
  584. package/dist/commonjs/routing/smartRoutingMapProvider.js.map +1 -1
  585. package/dist/commonjs/session/VectorSessionToken.js +6 -2
  586. package/dist/commonjs/session/VectorSessionToken.js.map +1 -1
  587. package/dist/commonjs/session/sessionContainer.js +5 -3
  588. package/dist/commonjs/session/sessionContainer.js.map +1 -1
  589. package/dist/commonjs/tsdoc-metadata.json +1 -1
  590. package/dist/commonjs/utils/batch.js +15 -4
  591. package/dist/commonjs/utils/batch.js.map +1 -1
  592. package/dist/commonjs/utils/fixedSizePriorityQueue.js +4 -0
  593. package/dist/commonjs/utils/fixedSizePriorityQueue.js.map +1 -1
  594. package/dist/commonjs/utils/hashing/hash.js +1 -1
  595. package/dist/commonjs/utils/hashing/hash.js.map +1 -1
  596. package/dist/commonjs/utils/nonStreamingOrderByMap.js +2 -0
  597. package/dist/commonjs/utils/nonStreamingOrderByMap.js.map +1 -1
  598. package/dist/esm/ChangeFeedIterator.js +17 -11
  599. package/dist/esm/ChangeFeedIterator.js.map +1 -1
  600. package/dist/esm/ChangeFeedResponse.js +8 -0
  601. package/dist/esm/ChangeFeedResponse.js.map +1 -1
  602. package/dist/esm/ClientContext.js +122 -29
  603. package/dist/esm/ClientContext.js.map +1 -1
  604. package/dist/esm/CosmosClient.js +34 -3
  605. package/dist/esm/CosmosClient.js.map +1 -1
  606. package/dist/esm/CosmosDiagnostics.js +3 -0
  607. package/dist/esm/CosmosDiagnostics.js.map +1 -1
  608. package/dist/esm/PartitionKeyRangeFailoverInfo.js +8 -5
  609. package/dist/esm/PartitionKeyRangeFailoverInfo.js.map +1 -1
  610. package/dist/esm/bulk/Batcher.js +13 -3
  611. package/dist/esm/bulk/Batcher.js.map +1 -1
  612. package/dist/esm/bulk/BulkHelper.js +26 -11
  613. package/dist/esm/bulk/BulkHelper.js.map +1 -1
  614. package/dist/esm/bulk/BulkResponse.js +22 -20
  615. package/dist/esm/bulk/BulkResponse.js.map +1 -1
  616. package/dist/esm/bulk/CongestionAlgorithm.js +11 -4
  617. package/dist/esm/bulk/CongestionAlgorithm.js.map +1 -1
  618. package/dist/esm/bulk/HelperPerPartition.js +14 -1
  619. package/dist/esm/bulk/HelperPerPartition.js.map +1 -1
  620. package/dist/esm/bulk/ItemOperationContext.js +4 -0
  621. package/dist/esm/bulk/ItemOperationContext.js.map +1 -1
  622. package/dist/esm/bulk/Limiter.js +27 -18
  623. package/dist/esm/bulk/Limiter.js.map +1 -1
  624. package/dist/esm/bulk/PartitionMetric.js +4 -0
  625. package/dist/esm/bulk/PartitionMetric.js.map +1 -1
  626. package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  627. package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  628. package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
  629. package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  630. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  631. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  632. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  633. package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  634. package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  635. package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  636. package/dist/esm/client/ChangeFeed/ChangeFeedRange.js +20 -0
  637. package/dist/esm/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  638. package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  639. package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  640. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  641. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  642. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  643. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  644. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  645. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  646. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  647. package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  648. package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  649. package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  650. package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  651. package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  652. package/dist/esm/client/ChangeFeed/FeedRange.js +8 -0
  653. package/dist/esm/client/ChangeFeed/FeedRange.js.map +1 -1
  654. package/dist/esm/client/ChangeFeed/FeedRangeQueue.js +1 -0
  655. package/dist/esm/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  656. package/dist/esm/client/ChangeFeed/changeFeedUtils.js +5 -5
  657. package/dist/esm/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  658. package/dist/esm/client/ClientUtils.js +1 -1
  659. package/dist/esm/client/ClientUtils.js.map +1 -1
  660. package/dist/esm/client/Conflict/Conflict.js +4 -0
  661. package/dist/esm/client/Conflict/Conflict.js.map +1 -1
  662. package/dist/esm/client/Conflict/ConflictResponse.js +2 -0
  663. package/dist/esm/client/Conflict/ConflictResponse.js.map +1 -1
  664. package/dist/esm/client/Conflict/Conflicts.js +2 -0
  665. package/dist/esm/client/Conflict/Conflicts.js.map +1 -1
  666. package/dist/esm/client/Container/Container.js +18 -3
  667. package/dist/esm/client/Container/Container.js.map +1 -1
  668. package/dist/esm/client/Container/ContainerResponse.js +2 -0
  669. package/dist/esm/client/Container/ContainerResponse.js.map +1 -1
  670. package/dist/esm/client/Container/Containers.js +4 -2
  671. package/dist/esm/client/Container/Containers.js.map +1 -1
  672. package/dist/esm/client/Database/Database.js +33 -0
  673. package/dist/esm/client/Database/Database.js.map +1 -1
  674. package/dist/esm/client/Database/DatabaseResponse.js +2 -0
  675. package/dist/esm/client/Database/DatabaseResponse.js.map +1 -1
  676. package/dist/esm/client/Database/Databases.js +3 -0
  677. package/dist/esm/client/Database/Databases.js.map +1 -1
  678. package/dist/esm/client/Item/Item.js +4 -0
  679. package/dist/esm/client/Item/Item.js.map +1 -1
  680. package/dist/esm/client/Item/ItemResponse.js +2 -0
  681. package/dist/esm/client/Item/ItemResponse.js.map +1 -1
  682. package/dist/esm/client/Item/Items.js +3 -0
  683. package/dist/esm/client/Item/Items.js.map +1 -1
  684. package/dist/esm/client/Offer/Offer.js +3 -0
  685. package/dist/esm/client/Offer/Offer.js.map +1 -1
  686. package/dist/esm/client/Offer/OfferResponse.js +2 -0
  687. package/dist/esm/client/Offer/OfferResponse.js.map +1 -1
  688. package/dist/esm/client/Offer/Offers.js +2 -0
  689. package/dist/esm/client/Offer/Offers.js.map +1 -1
  690. package/dist/esm/client/Permission/Permission.js +3 -0
  691. package/dist/esm/client/Permission/Permission.js.map +1 -1
  692. package/dist/esm/client/Permission/PermissionResponse.js +2 -0
  693. package/dist/esm/client/Permission/PermissionResponse.js.map +1 -1
  694. package/dist/esm/client/Permission/Permissions.js +2 -0
  695. package/dist/esm/client/Permission/Permissions.js.map +1 -1
  696. package/dist/esm/client/SasToken/SasTokenProperties.js +17 -0
  697. package/dist/esm/client/SasToken/SasTokenProperties.js.map +1 -1
  698. package/dist/esm/client/Script/Scripts.js +5 -0
  699. package/dist/esm/client/Script/Scripts.js.map +1 -1
  700. package/dist/esm/client/StoredProcedure/StoredProcedure.js +3 -0
  701. package/dist/esm/client/StoredProcedure/StoredProcedure.js.map +1 -1
  702. package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  703. package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  704. package/dist/esm/client/StoredProcedure/StoredProcedures.js +2 -0
  705. package/dist/esm/client/StoredProcedure/StoredProcedures.js.map +1 -1
  706. package/dist/esm/client/Trigger/Trigger.js +3 -0
  707. package/dist/esm/client/Trigger/Trigger.js.map +1 -1
  708. package/dist/esm/client/Trigger/TriggerResponse.js +2 -0
  709. package/dist/esm/client/Trigger/TriggerResponse.js.map +1 -1
  710. package/dist/esm/client/Trigger/Triggers.js +2 -0
  711. package/dist/esm/client/Trigger/Triggers.js.map +1 -1
  712. package/dist/esm/client/User/User.js +9 -0
  713. package/dist/esm/client/User/User.js.map +1 -1
  714. package/dist/esm/client/User/UserResponse.js +2 -0
  715. package/dist/esm/client/User/UserResponse.js.map +1 -1
  716. package/dist/esm/client/User/Users.js +2 -0
  717. package/dist/esm/client/User/Users.js.map +1 -1
  718. package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  719. package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  720. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  721. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  722. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  723. package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  724. package/dist/esm/common/constants.js +1 -1
  725. package/dist/esm/common/constants.js.map +1 -1
  726. package/dist/esm/diagnostics/CosmosDiagnosticsContext.js +8 -7
  727. package/dist/esm/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  728. package/dist/esm/diagnostics/DiagnosticNodeInternal.js +26 -7
  729. package/dist/esm/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  730. package/dist/esm/diagnostics/DiagnosticWriter.js +1 -3
  731. package/dist/esm/diagnostics/DiagnosticWriter.js.map +1 -1
  732. package/dist/esm/diagnostics/index.js +2 -2
  733. package/dist/esm/diagnostics/index.js.map +1 -1
  734. package/dist/esm/documents/DatabaseAccount.js +20 -4
  735. package/dist/esm/documents/DatabaseAccount.js.map +1 -1
  736. package/dist/esm/documents/PartitionKey.js +1 -3
  737. package/dist/esm/documents/PartitionKey.js.map +1 -1
  738. package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
  739. package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
  740. package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  741. package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  742. package/dist/esm/encryption/Cache/EncryptionSettingsCache.js +2 -0
  743. package/dist/esm/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  744. package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  745. package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  746. package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
  747. package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
  748. package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  749. package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  750. package/dist/esm/encryption/EncryptionItemQueryIterator.js +24 -27
  751. package/dist/esm/encryption/EncryptionItemQueryIterator.js.map +1 -1
  752. package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
  753. package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
  754. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  755. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  756. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  757. package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  758. package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  759. package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  760. package/dist/esm/encryption/EncryptionKeyStoreProvider.js +8 -1
  761. package/dist/esm/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  762. package/dist/esm/encryption/EncryptionManager.js +6 -0
  763. package/dist/esm/encryption/EncryptionManager.js.map +1 -1
  764. package/dist/esm/encryption/EncryptionProcessor.js +5 -0
  765. package/dist/esm/encryption/EncryptionProcessor.js.map +1 -1
  766. package/dist/esm/encryption/EncryptionQueryBuilder.js +2 -0
  767. package/dist/esm/encryption/EncryptionQueryBuilder.js.map +1 -1
  768. package/dist/esm/encryption/EncryptionSettingForProperty.js +6 -0
  769. package/dist/esm/encryption/EncryptionSettingForProperty.js.map +1 -1
  770. package/dist/esm/encryption/EncryptionSettings.js +6 -3
  771. package/dist/esm/encryption/EncryptionSettings.js.map +1 -1
  772. package/dist/esm/encryption/KeyEncryptionKey.js +4 -0
  773. package/dist/esm/encryption/KeyEncryptionKey.js.map +1 -1
  774. package/dist/esm/encryption/Serializers/StringSerializer.js +1 -1
  775. package/dist/esm/encryption/Serializers/StringSerializer.js.map +1 -1
  776. package/dist/esm/extractPartitionKey.js +2 -2
  777. package/dist/esm/extractPartitionKey.js.map +1 -1
  778. package/dist/esm/globalEndpointManager.d.ts.map +1 -1
  779. package/dist/esm/globalEndpointManager.js +36 -23
  780. package/dist/esm/globalEndpointManager.js.map +1 -1
  781. package/dist/esm/globalPartitionEndpointManager.js +8 -0
  782. package/dist/esm/globalPartitionEndpointManager.js.map +1 -1
  783. package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  784. package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  785. package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  786. package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  787. package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  788. package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  789. package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  790. package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  791. package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  792. package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  793. package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  794. package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  795. package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  796. package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  797. package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  798. package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  799. package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  800. package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  801. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  802. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  803. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  804. package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  805. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  806. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  807. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  808. package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  809. package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  810. package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  811. package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  812. package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  813. package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  814. package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  815. package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  816. package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  817. package/dist/esm/queryExecutionContext/FetchResult.js +4 -0
  818. package/dist/esm/queryExecutionContext/FetchResult.js.map +1 -1
  819. package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  820. package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  821. package/dist/esm/queryExecutionContext/documentProducer.js +34 -21
  822. package/dist/esm/queryExecutionContext/documentProducer.js.map +1 -1
  823. package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  824. package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  825. package/dist/esm/queryExecutionContext/orderByComparator.js +1 -0
  826. package/dist/esm/queryExecutionContext/orderByComparator.js.map +1 -1
  827. package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  828. package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  829. package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  830. package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  831. package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  832. package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  833. package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  834. package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  835. package/dist/esm/queryIterator.js +41 -33
  836. package/dist/esm/queryIterator.js.map +1 -1
  837. package/dist/esm/queryMetrics/clientSideMetrics.js +2 -1
  838. package/dist/esm/queryMetrics/clientSideMetrics.js.map +1 -1
  839. package/dist/esm/queryMetrics/queryMetrics.js +14 -1
  840. package/dist/esm/queryMetrics/queryMetrics.js.map +1 -1
  841. package/dist/esm/queryMetrics/queryPreparationTime.js +5 -1
  842. package/dist/esm/queryMetrics/queryPreparationTime.js.map +1 -1
  843. package/dist/esm/queryMetrics/runtimeExecutionTimes.js +4 -1
  844. package/dist/esm/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  845. package/dist/esm/queryMetrics/timeSpan.js +4 -3
  846. package/dist/esm/queryMetrics/timeSpan.js.map +1 -1
  847. package/dist/esm/request/ErrorResponse.js +19 -0
  848. package/dist/esm/request/ErrorResponse.js.map +1 -1
  849. package/dist/esm/request/FeedResponse.js +4 -0
  850. package/dist/esm/request/FeedResponse.js.map +1 -1
  851. package/dist/esm/request/RequestHandler.js +1 -2
  852. package/dist/esm/request/RequestHandler.js.map +1 -1
  853. package/dist/esm/request/ResourceResponse.js +5 -0
  854. package/dist/esm/request/ResourceResponse.js.map +1 -1
  855. package/dist/esm/request/TimeoutError.js +1 -1
  856. package/dist/esm/request/TimeoutError.js.map +1 -1
  857. package/dist/esm/request/hybridSearchQueryResult.js +5 -0
  858. package/dist/esm/request/hybridSearchQueryResult.js.map +1 -1
  859. package/dist/esm/request/request.js +5 -1
  860. package/dist/esm/request/request.js.map +1 -1
  861. package/dist/esm/retry/bulkExecutionRetryPolicy.js +5 -2
  862. package/dist/esm/retry/bulkExecutionRetryPolicy.js.map +1 -1
  863. package/dist/esm/retry/defaultRetryPolicy.d.ts.map +1 -1
  864. package/dist/esm/retry/defaultRetryPolicy.js +7 -7
  865. package/dist/esm/retry/defaultRetryPolicy.js.map +1 -1
  866. package/dist/esm/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
  867. package/dist/esm/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
  868. package/dist/esm/retry/endpointDiscoveryRetryPolicy.js +24 -7
  869. package/dist/esm/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  870. package/dist/esm/retry/resourceThrottleRetryPolicy.js +20 -10
  871. package/dist/esm/retry/resourceThrottleRetryPolicy.js.map +1 -1
  872. package/dist/esm/retry/retryUtility.d.ts.map +1 -1
  873. package/dist/esm/retry/retryUtility.js +5 -5
  874. package/dist/esm/retry/retryUtility.js.map +1 -1
  875. package/dist/esm/retry/sessionRetryPolicy.js +8 -4
  876. package/dist/esm/retry/sessionRetryPolicy.js.map +1 -1
  877. package/dist/esm/retry/timeoutFailoverRetryPolicy.js +14 -4
  878. package/dist/esm/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  879. package/dist/esm/routing/QueryRange.js +4 -0
  880. package/dist/esm/routing/QueryRange.js.map +1 -1
  881. package/dist/esm/routing/inMemoryCollectionRoutingMap.js +4 -0
  882. package/dist/esm/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  883. package/dist/esm/routing/partitionKeyRangeCache.js +2 -0
  884. package/dist/esm/routing/partitionKeyRangeCache.js.map +1 -1
  885. package/dist/esm/routing/smartRoutingMapProvider.js +1 -0
  886. package/dist/esm/routing/smartRoutingMapProvider.js.map +1 -1
  887. package/dist/esm/session/VectorSessionToken.js +6 -2
  888. package/dist/esm/session/VectorSessionToken.js.map +1 -1
  889. package/dist/esm/session/sessionContainer.js +5 -3
  890. package/dist/esm/session/sessionContainer.js.map +1 -1
  891. package/dist/esm/utils/batch.js +15 -4
  892. package/dist/esm/utils/batch.js.map +1 -1
  893. package/dist/esm/utils/fixedSizePriorityQueue.js +4 -0
  894. package/dist/esm/utils/fixedSizePriorityQueue.js.map +1 -1
  895. package/dist/esm/utils/hashing/hash.js +1 -1
  896. package/dist/esm/utils/hashing/hash.js.map +1 -1
  897. package/dist/esm/utils/nonStreamingOrderByMap.js +2 -0
  898. package/dist/esm/utils/nonStreamingOrderByMap.js.map +1 -1
  899. package/dist/react-native/ChangeFeedIterator.js +17 -11
  900. package/dist/react-native/ChangeFeedIterator.js.map +1 -1
  901. package/dist/react-native/ChangeFeedResponse.js +8 -0
  902. package/dist/react-native/ChangeFeedResponse.js.map +1 -1
  903. package/dist/react-native/ClientContext.js +122 -29
  904. package/dist/react-native/ClientContext.js.map +1 -1
  905. package/dist/react-native/CosmosClient.js +34 -3
  906. package/dist/react-native/CosmosClient.js.map +1 -1
  907. package/dist/react-native/CosmosDiagnostics.js +3 -0
  908. package/dist/react-native/CosmosDiagnostics.js.map +1 -1
  909. package/dist/react-native/PartitionKeyRangeFailoverInfo.js +8 -5
  910. package/dist/react-native/PartitionKeyRangeFailoverInfo.js.map +1 -1
  911. package/dist/react-native/bulk/Batcher.js +13 -3
  912. package/dist/react-native/bulk/Batcher.js.map +1 -1
  913. package/dist/react-native/bulk/BulkHelper.js +26 -11
  914. package/dist/react-native/bulk/BulkHelper.js.map +1 -1
  915. package/dist/react-native/bulk/BulkResponse.js +22 -20
  916. package/dist/react-native/bulk/BulkResponse.js.map +1 -1
  917. package/dist/react-native/bulk/CongestionAlgorithm.js +11 -4
  918. package/dist/react-native/bulk/CongestionAlgorithm.js.map +1 -1
  919. package/dist/react-native/bulk/HelperPerPartition.js +14 -1
  920. package/dist/react-native/bulk/HelperPerPartition.js.map +1 -1
  921. package/dist/react-native/bulk/ItemOperationContext.js +4 -0
  922. package/dist/react-native/bulk/ItemOperationContext.js.map +1 -1
  923. package/dist/react-native/bulk/Limiter.js +27 -18
  924. package/dist/react-native/bulk/Limiter.js.map +1 -1
  925. package/dist/react-native/bulk/PartitionMetric.js +4 -0
  926. package/dist/react-native/bulk/PartitionMetric.js.map +1 -1
  927. package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
  928. package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
  929. package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
  930. package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
  931. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
  932. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
  933. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
  934. package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
  935. package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
  936. package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
  937. package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js +20 -0
  938. package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
  939. package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
  940. package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
  941. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
  942. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
  943. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
  944. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
  945. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
  946. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
  947. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
  948. package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
  949. package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js +8 -0
  950. package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
  951. package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
  952. package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
  953. package/dist/react-native/client/ChangeFeed/FeedRange.js +8 -0
  954. package/dist/react-native/client/ChangeFeed/FeedRange.js.map +1 -1
  955. package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js +1 -0
  956. package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
  957. package/dist/react-native/client/ChangeFeed/changeFeedUtils.js +5 -5
  958. package/dist/react-native/client/ChangeFeed/changeFeedUtils.js.map +1 -1
  959. package/dist/react-native/client/ClientUtils.js +1 -1
  960. package/dist/react-native/client/ClientUtils.js.map +1 -1
  961. package/dist/react-native/client/Conflict/Conflict.js +4 -0
  962. package/dist/react-native/client/Conflict/Conflict.js.map +1 -1
  963. package/dist/react-native/client/Conflict/ConflictResponse.js +2 -0
  964. package/dist/react-native/client/Conflict/ConflictResponse.js.map +1 -1
  965. package/dist/react-native/client/Conflict/Conflicts.js +2 -0
  966. package/dist/react-native/client/Conflict/Conflicts.js.map +1 -1
  967. package/dist/react-native/client/Container/Container.js +18 -3
  968. package/dist/react-native/client/Container/Container.js.map +1 -1
  969. package/dist/react-native/client/Container/ContainerResponse.js +2 -0
  970. package/dist/react-native/client/Container/ContainerResponse.js.map +1 -1
  971. package/dist/react-native/client/Container/Containers.js +4 -2
  972. package/dist/react-native/client/Container/Containers.js.map +1 -1
  973. package/dist/react-native/client/Database/Database.js +33 -0
  974. package/dist/react-native/client/Database/Database.js.map +1 -1
  975. package/dist/react-native/client/Database/DatabaseResponse.js +2 -0
  976. package/dist/react-native/client/Database/DatabaseResponse.js.map +1 -1
  977. package/dist/react-native/client/Database/Databases.js +3 -0
  978. package/dist/react-native/client/Database/Databases.js.map +1 -1
  979. package/dist/react-native/client/Item/Item.js +4 -0
  980. package/dist/react-native/client/Item/Item.js.map +1 -1
  981. package/dist/react-native/client/Item/ItemResponse.js +2 -0
  982. package/dist/react-native/client/Item/ItemResponse.js.map +1 -1
  983. package/dist/react-native/client/Item/Items.js +3 -0
  984. package/dist/react-native/client/Item/Items.js.map +1 -1
  985. package/dist/react-native/client/Offer/Offer.js +3 -0
  986. package/dist/react-native/client/Offer/Offer.js.map +1 -1
  987. package/dist/react-native/client/Offer/OfferResponse.js +2 -0
  988. package/dist/react-native/client/Offer/OfferResponse.js.map +1 -1
  989. package/dist/react-native/client/Offer/Offers.js +2 -0
  990. package/dist/react-native/client/Offer/Offers.js.map +1 -1
  991. package/dist/react-native/client/Permission/Permission.js +3 -0
  992. package/dist/react-native/client/Permission/Permission.js.map +1 -1
  993. package/dist/react-native/client/Permission/PermissionResponse.js +2 -0
  994. package/dist/react-native/client/Permission/PermissionResponse.js.map +1 -1
  995. package/dist/react-native/client/Permission/Permissions.js +2 -0
  996. package/dist/react-native/client/Permission/Permissions.js.map +1 -1
  997. package/dist/react-native/client/SasToken/SasTokenProperties.js +17 -0
  998. package/dist/react-native/client/SasToken/SasTokenProperties.js.map +1 -1
  999. package/dist/react-native/client/Script/Scripts.js +5 -0
  1000. package/dist/react-native/client/Script/Scripts.js.map +1 -1
  1001. package/dist/react-native/client/StoredProcedure/StoredProcedure.js +3 -0
  1002. package/dist/react-native/client/StoredProcedure/StoredProcedure.js.map +1 -1
  1003. package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js +4 -0
  1004. package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
  1005. package/dist/react-native/client/StoredProcedure/StoredProcedures.js +2 -0
  1006. package/dist/react-native/client/StoredProcedure/StoredProcedures.js.map +1 -1
  1007. package/dist/react-native/client/Trigger/Trigger.js +3 -0
  1008. package/dist/react-native/client/Trigger/Trigger.js.map +1 -1
  1009. package/dist/react-native/client/Trigger/TriggerResponse.js +2 -0
  1010. package/dist/react-native/client/Trigger/TriggerResponse.js.map +1 -1
  1011. package/dist/react-native/client/Trigger/Triggers.js +2 -0
  1012. package/dist/react-native/client/Trigger/Triggers.js.map +1 -1
  1013. package/dist/react-native/client/User/User.js +9 -0
  1014. package/dist/react-native/client/User/User.js.map +1 -1
  1015. package/dist/react-native/client/User/UserResponse.js +2 -0
  1016. package/dist/react-native/client/User/UserResponse.js.map +1 -1
  1017. package/dist/react-native/client/User/Users.js +2 -0
  1018. package/dist/react-native/client/User/Users.js.map +1 -1
  1019. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
  1020. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
  1021. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
  1022. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
  1023. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
  1024. package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
  1025. package/dist/react-native/common/constants.js +1 -1
  1026. package/dist/react-native/common/constants.js.map +1 -1
  1027. package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js +8 -7
  1028. package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
  1029. package/dist/react-native/diagnostics/DiagnosticNodeInternal.js +26 -7
  1030. package/dist/react-native/diagnostics/DiagnosticNodeInternal.js.map +1 -1
  1031. package/dist/react-native/diagnostics/DiagnosticWriter.js +1 -3
  1032. package/dist/react-native/diagnostics/DiagnosticWriter.js.map +1 -1
  1033. package/dist/react-native/diagnostics/index.js +2 -2
  1034. package/dist/react-native/diagnostics/index.js.map +1 -1
  1035. package/dist/react-native/documents/DatabaseAccount.js +20 -4
  1036. package/dist/react-native/documents/DatabaseAccount.js.map +1 -1
  1037. package/dist/react-native/documents/PartitionKey.js +1 -3
  1038. package/dist/react-native/documents/PartitionKey.js.map +1 -1
  1039. package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
  1040. package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
  1041. package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
  1042. package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
  1043. package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js +2 -0
  1044. package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
  1045. package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
  1046. package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
  1047. package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
  1048. package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
  1049. package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
  1050. package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
  1051. package/dist/react-native/encryption/EncryptionItemQueryIterator.js +24 -27
  1052. package/dist/react-native/encryption/EncryptionItemQueryIterator.js.map +1 -1
  1053. package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
  1054. package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
  1055. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
  1056. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
  1057. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
  1058. package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
  1059. package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
  1060. package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
  1061. package/dist/react-native/encryption/EncryptionKeyStoreProvider.js +8 -1
  1062. package/dist/react-native/encryption/EncryptionKeyStoreProvider.js.map +1 -1
  1063. package/dist/react-native/encryption/EncryptionManager.js +6 -0
  1064. package/dist/react-native/encryption/EncryptionManager.js.map +1 -1
  1065. package/dist/react-native/encryption/EncryptionProcessor.js +5 -0
  1066. package/dist/react-native/encryption/EncryptionProcessor.js.map +1 -1
  1067. package/dist/react-native/encryption/EncryptionQueryBuilder.js +2 -0
  1068. package/dist/react-native/encryption/EncryptionQueryBuilder.js.map +1 -1
  1069. package/dist/react-native/encryption/EncryptionSettingForProperty.js +6 -0
  1070. package/dist/react-native/encryption/EncryptionSettingForProperty.js.map +1 -1
  1071. package/dist/react-native/encryption/EncryptionSettings.js +6 -3
  1072. package/dist/react-native/encryption/EncryptionSettings.js.map +1 -1
  1073. package/dist/react-native/encryption/KeyEncryptionKey.js +4 -0
  1074. package/dist/react-native/encryption/KeyEncryptionKey.js.map +1 -1
  1075. package/dist/react-native/encryption/Serializers/StringSerializer.js +1 -1
  1076. package/dist/react-native/encryption/Serializers/StringSerializer.js.map +1 -1
  1077. package/dist/react-native/extractPartitionKey.js +2 -2
  1078. package/dist/react-native/extractPartitionKey.js.map +1 -1
  1079. package/dist/react-native/globalEndpointManager.d.ts.map +1 -1
  1080. package/dist/react-native/globalEndpointManager.js +36 -23
  1081. package/dist/react-native/globalEndpointManager.js.map +1 -1
  1082. package/dist/react-native/globalPartitionEndpointManager.js +8 -0
  1083. package/dist/react-native/globalPartitionEndpointManager.js.map +1 -1
  1084. package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
  1085. package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
  1086. package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
  1087. package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
  1088. package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
  1089. package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
  1090. package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
  1091. package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
  1092. package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
  1093. package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
  1094. package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
  1095. package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
  1096. package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
  1097. package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
  1098. package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
  1099. package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
  1100. package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
  1101. package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
  1102. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
  1103. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
  1104. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
  1105. package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
  1106. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
  1107. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
  1108. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
  1109. package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
  1110. package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
  1111. package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
  1112. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
  1113. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
  1114. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
  1115. package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
  1116. package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
  1117. package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
  1118. package/dist/react-native/queryExecutionContext/FetchResult.js +4 -0
  1119. package/dist/react-native/queryExecutionContext/FetchResult.js.map +1 -1
  1120. package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
  1121. package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
  1122. package/dist/react-native/queryExecutionContext/documentProducer.js +34 -21
  1123. package/dist/react-native/queryExecutionContext/documentProducer.js.map +1 -1
  1124. package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
  1125. package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
  1126. package/dist/react-native/queryExecutionContext/orderByComparator.js +1 -0
  1127. package/dist/react-native/queryExecutionContext/orderByComparator.js.map +1 -1
  1128. package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
  1129. package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
  1130. package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
  1131. package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
  1132. package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
  1133. package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
  1134. package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
  1135. package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
  1136. package/dist/react-native/queryIterator.js +41 -33
  1137. package/dist/react-native/queryIterator.js.map +1 -1
  1138. package/dist/react-native/queryMetrics/clientSideMetrics.js +2 -1
  1139. package/dist/react-native/queryMetrics/clientSideMetrics.js.map +1 -1
  1140. package/dist/react-native/queryMetrics/queryMetrics.js +14 -1
  1141. package/dist/react-native/queryMetrics/queryMetrics.js.map +1 -1
  1142. package/dist/react-native/queryMetrics/queryPreparationTime.js +5 -1
  1143. package/dist/react-native/queryMetrics/queryPreparationTime.js.map +1 -1
  1144. package/dist/react-native/queryMetrics/runtimeExecutionTimes.js +4 -1
  1145. package/dist/react-native/queryMetrics/runtimeExecutionTimes.js.map +1 -1
  1146. package/dist/react-native/queryMetrics/timeSpan.js +4 -3
  1147. package/dist/react-native/queryMetrics/timeSpan.js.map +1 -1
  1148. package/dist/react-native/request/ErrorResponse.js +19 -0
  1149. package/dist/react-native/request/ErrorResponse.js.map +1 -1
  1150. package/dist/react-native/request/FeedResponse.js +4 -0
  1151. package/dist/react-native/request/FeedResponse.js.map +1 -1
  1152. package/dist/react-native/request/RequestHandler.js +1 -2
  1153. package/dist/react-native/request/RequestHandler.js.map +1 -1
  1154. package/dist/react-native/request/ResourceResponse.js +5 -0
  1155. package/dist/react-native/request/ResourceResponse.js.map +1 -1
  1156. package/dist/react-native/request/TimeoutError.js +1 -1
  1157. package/dist/react-native/request/TimeoutError.js.map +1 -1
  1158. package/dist/react-native/request/hybridSearchQueryResult.js +5 -0
  1159. package/dist/react-native/request/hybridSearchQueryResult.js.map +1 -1
  1160. package/dist/react-native/request/request.js +5 -1
  1161. package/dist/react-native/request/request.js.map +1 -1
  1162. package/dist/react-native/retry/bulkExecutionRetryPolicy.js +5 -2
  1163. package/dist/react-native/retry/bulkExecutionRetryPolicy.js.map +1 -1
  1164. package/dist/react-native/retry/defaultRetryPolicy.d.ts.map +1 -1
  1165. package/dist/react-native/retry/defaultRetryPolicy.js +7 -7
  1166. package/dist/react-native/retry/defaultRetryPolicy.js.map +1 -1
  1167. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
  1168. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
  1169. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js +24 -7
  1170. package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
  1171. package/dist/react-native/retry/resourceThrottleRetryPolicy.js +20 -10
  1172. package/dist/react-native/retry/resourceThrottleRetryPolicy.js.map +1 -1
  1173. package/dist/react-native/retry/retryUtility.d.ts.map +1 -1
  1174. package/dist/react-native/retry/retryUtility.js +5 -5
  1175. package/dist/react-native/retry/retryUtility.js.map +1 -1
  1176. package/dist/react-native/retry/sessionRetryPolicy.js +8 -4
  1177. package/dist/react-native/retry/sessionRetryPolicy.js.map +1 -1
  1178. package/dist/react-native/retry/timeoutFailoverRetryPolicy.js +14 -4
  1179. package/dist/react-native/retry/timeoutFailoverRetryPolicy.js.map +1 -1
  1180. package/dist/react-native/routing/QueryRange.js +4 -0
  1181. package/dist/react-native/routing/QueryRange.js.map +1 -1
  1182. package/dist/react-native/routing/inMemoryCollectionRoutingMap.js +4 -0
  1183. package/dist/react-native/routing/inMemoryCollectionRoutingMap.js.map +1 -1
  1184. package/dist/react-native/routing/partitionKeyRangeCache.js +2 -0
  1185. package/dist/react-native/routing/partitionKeyRangeCache.js.map +1 -1
  1186. package/dist/react-native/routing/smartRoutingMapProvider.js +1 -0
  1187. package/dist/react-native/routing/smartRoutingMapProvider.js.map +1 -1
  1188. package/dist/react-native/session/VectorSessionToken.js +6 -2
  1189. package/dist/react-native/session/VectorSessionToken.js.map +1 -1
  1190. package/dist/react-native/session/sessionContainer.js +5 -3
  1191. package/dist/react-native/session/sessionContainer.js.map +1 -1
  1192. package/dist/react-native/utils/batch.js +15 -4
  1193. package/dist/react-native/utils/batch.js.map +1 -1
  1194. package/dist/react-native/utils/fixedSizePriorityQueue.js +4 -0
  1195. package/dist/react-native/utils/fixedSizePriorityQueue.js.map +1 -1
  1196. package/dist/react-native/utils/hashing/hash.js +1 -1
  1197. package/dist/react-native/utils/hashing/hash.js.map +1 -1
  1198. package/dist/react-native/utils/nonStreamingOrderByMap.js +2 -0
  1199. package/dist/react-native/utils/nonStreamingOrderByMap.js.map +1 -1
  1200. package/package.json +32 -33
@@ -1 +1 @@
1
- {"version":3,"file":"VectorSessionToken.js","sourceRoot":"","sources":["../../../src/session/VectorSessionToken.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Models vector clock bases session token. Session token has the following format:\n * `{Version}#{GlobalLSN}#{RegionId1}={LocalLsn1}#{RegionId2}={LocalLsn2}....#{RegionIdN}={LocalLsnN}`\n * 'Version' captures the configuration number of the partition which returned this session token.\n * 'Version' is incremented everytime topology of the partition is updated (say due to Add/Remove/Failover).\n *\n * The choice of separators '#' and '=' is important. Separators ';' and ',' are used to delimit\n * per-partitionKeyRange session token\n * @hidden\n *\n */\nexport class VectorSessionToken {\n private static readonly SEGMENT_SEPARATOR = \"#\";\n private static readonly REGION_PROGRESS_SEPARATOR = \"=\";\n\n constructor(\n private readonly version: number,\n private readonly globalLsn: number,\n private readonly localLsnByregion: Map<number, string>,\n private readonly sessionToken?: string,\n ) {\n if (!this.sessionToken) {\n const regionAndLocalLsn = [];\n for (const [key, value] of this.localLsnByregion.entries()) {\n regionAndLocalLsn.push(`${key}${VectorSessionToken.REGION_PROGRESS_SEPARATOR}${value}`);\n }\n const regionProgress = regionAndLocalLsn.join(VectorSessionToken.SEGMENT_SEPARATOR);\n if (regionProgress === \"\") {\n this.sessionToken = `${this.version}${VectorSessionToken.SEGMENT_SEPARATOR}${this.globalLsn}`;\n } else {\n this.sessionToken = `${this.version}${VectorSessionToken.SEGMENT_SEPARATOR}${this.globalLsn}${VectorSessionToken.SEGMENT_SEPARATOR}${regionProgress}`;\n }\n }\n }\n\n public static create(sessionToken: string): VectorSessionToken | null {\n const [versionStr, globalLsnStr, ...regionSegments] = sessionToken.split(\n VectorSessionToken.SEGMENT_SEPARATOR,\n );\n\n const version = parseInt(versionStr, 10);\n const globalLsn = parseFloat(globalLsnStr);\n\n if (typeof version !== \"number\" || typeof globalLsn !== \"number\") {\n return null;\n }\n\n const lsnByRegion = new Map<number, string>();\n for (const regionSegment of regionSegments) {\n const [regionIdStr, localLsnStr] = regionSegment.split(\n VectorSessionToken.REGION_PROGRESS_SEPARATOR,\n );\n\n if (!regionIdStr || !localLsnStr) {\n return null;\n }\n\n const regionId = parseInt(regionIdStr, 10);\n let localLsn: string;\n try {\n localLsn = localLsnStr;\n } catch (err: any) {\n // TODO: log error\n return null;\n }\n if (typeof regionId !== \"number\") {\n return null;\n }\n\n lsnByRegion.set(regionId, localLsn);\n }\n\n return new VectorSessionToken(version, globalLsn, lsnByRegion, sessionToken);\n }\n\n public equals(other: VectorSessionToken): boolean {\n return !other\n ? false\n : this.version === other.version &&\n this.globalLsn === other.globalLsn &&\n this.areRegionProgressEqual(other.localLsnByregion);\n }\n\n public merge(other: VectorSessionToken): VectorSessionToken {\n if (other == null) {\n throw new Error(\"other (Vector Session Token) must not be null\");\n }\n\n if (\n this.version === other.version &&\n this.localLsnByregion.size !== other.localLsnByregion.size\n ) {\n throw new Error(\n `Compared session tokens ${this.sessionToken} and ${other.sessionToken} have unexpected regions`,\n );\n }\n\n const [higherVersionSessionToken, lowerVersionSessionToken]: [\n VectorSessionToken,\n VectorSessionToken,\n ] = this.version < other.version ? [other, this] : [this, other];\n\n const highestLocalLsnByRegion = new Map<number, string>();\n\n for (const [regionId, highLocalLsn] of higherVersionSessionToken.localLsnByregion.entries()) {\n const lowLocalLsn = lowerVersionSessionToken.localLsnByregion.get(regionId);\n if (lowLocalLsn) {\n highestLocalLsnByRegion.set(regionId, max(highLocalLsn, lowLocalLsn));\n } else if (this.version === other.version) {\n throw new Error(\n `Compared session tokens have unexpected regions. Session 1: ${this.sessionToken} - Session 2: ${this.sessionToken}`,\n );\n } else {\n highestLocalLsnByRegion.set(regionId, highLocalLsn);\n }\n }\n\n return new VectorSessionToken(\n Math.max(this.version, other.version),\n Math.max(this.globalLsn, other.globalLsn),\n highestLocalLsnByRegion,\n );\n }\n\n public toString(): string | undefined {\n return this.sessionToken;\n }\n\n private areRegionProgressEqual(other: Map<number, string>): boolean {\n if (this.localLsnByregion.size !== other.size) {\n return false;\n }\n\n for (const [regionId, localLsn] of this.localLsnByregion.entries()) {\n const otherLocalLsn = other.get(regionId);\n\n if (localLsn !== otherLocalLsn) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * @hidden\n */\nfunction max(int1: string, int2: string): string {\n // NOTE: This only works for positive numbers\n if (int1.length === int2.length) {\n return int1 > int2 ? int1 : int2;\n } else if (int1.length > int2.length) {\n return int1;\n } else {\n return int2;\n }\n}\n"]}
1
+ {"version":3,"file":"VectorSessionToken.js","sourceRoot":"","sources":["../../../src/session/VectorSessionToken.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Models vector clock bases session token. Session token has the following format:\n * `{Version}#{GlobalLSN}#{RegionId1}={LocalLsn1}#{RegionId2}={LocalLsn2}....#{RegionIdN}={LocalLsnN}`\n * 'Version' captures the configuration number of the partition which returned this session token.\n * 'Version' is incremented everytime topology of the partition is updated (say due to Add/Remove/Failover).\n *\n * The choice of separators '#' and '=' is important. Separators ';' and ',' are used to delimit\n * per-partitionKeyRange session token\n * @hidden\n *\n */\nexport class VectorSessionToken {\n private static readonly SEGMENT_SEPARATOR = \"#\";\n private static readonly REGION_PROGRESS_SEPARATOR = \"=\";\n\n constructor(\n private readonly version: number,\n private readonly globalLsn: number,\n private readonly localLsnByregion: Map<number, string>,\n private readonly sessionToken?: string,\n ) {\n if (!this.sessionToken) {\n const regionAndLocalLsn = [];\n for (const [key, value] of this.localLsnByregion.entries()) {\n regionAndLocalLsn.push(`${key}${VectorSessionToken.REGION_PROGRESS_SEPARATOR}${value}`);\n }\n const regionProgress = regionAndLocalLsn.join(VectorSessionToken.SEGMENT_SEPARATOR);\n if (regionProgress === \"\") {\n this.sessionToken = `${this.version}${VectorSessionToken.SEGMENT_SEPARATOR}${this.globalLsn}`;\n } else {\n this.sessionToken = `${this.version}${VectorSessionToken.SEGMENT_SEPARATOR}${this.globalLsn}${VectorSessionToken.SEGMENT_SEPARATOR}${regionProgress}`;\n }\n }\n }\n\n public static create(sessionToken: string): VectorSessionToken | null {\n const [versionStr, globalLsnStr, ...regionSegments] = sessionToken.split(\n VectorSessionToken.SEGMENT_SEPARATOR,\n );\n\n const version = parseInt(versionStr, 10);\n const globalLsn = parseFloat(globalLsnStr);\n\n if (typeof version !== \"number\" || typeof globalLsn !== \"number\") {\n return null;\n }\n\n const lsnByRegion = new Map<number, string>();\n for (const regionSegment of regionSegments) {\n const [regionIdStr, localLsnStr] = regionSegment.split(\n VectorSessionToken.REGION_PROGRESS_SEPARATOR,\n );\n\n if (!regionIdStr || !localLsnStr) {\n return null;\n }\n\n const regionId = parseInt(regionIdStr, 10);\n let localLsn: string;\n try {\n localLsn = localLsnStr;\n } catch (err: any) {\n // TODO: log error\n return null;\n }\n if (typeof regionId !== \"number\") {\n return null;\n }\n\n lsnByRegion.set(regionId, localLsn);\n }\n\n return new VectorSessionToken(version, globalLsn, lsnByRegion, sessionToken);\n }\n\n public equals(other: VectorSessionToken): boolean {\n return !other\n ? false\n : this.version === other.version &&\n this.globalLsn === other.globalLsn &&\n this.areRegionProgressEqual(other.localLsnByregion);\n }\n\n public merge(other: VectorSessionToken): VectorSessionToken {\n if (other == null) {\n throw new Error(\"other (Vector Session Token) must not be null\");\n }\n\n if (\n this.version === other.version &&\n this.localLsnByregion.size !== other.localLsnByregion.size\n ) {\n throw new Error(\n `Compared session tokens ${this.sessionToken} and ${other.sessionToken} have unexpected regions`,\n );\n }\n\n const [higherVersionSessionToken, lowerVersionSessionToken]: [\n VectorSessionToken,\n VectorSessionToken,\n ] = this.version < other.version ? [other, this] : [this, other];\n\n const highestLocalLsnByRegion = new Map<number, string>();\n\n for (const [regionId, highLocalLsn] of higherVersionSessionToken.localLsnByregion.entries()) {\n const lowLocalLsn = lowerVersionSessionToken.localLsnByregion.get(regionId);\n if (lowLocalLsn) {\n highestLocalLsnByRegion.set(regionId, max(highLocalLsn, lowLocalLsn));\n } else if (this.version === other.version) {\n throw new Error(\n `Compared session tokens have unexpected regions. Session 1: ${this.sessionToken} - Session 2: ${this.sessionToken}`,\n );\n } else {\n highestLocalLsnByRegion.set(regionId, highLocalLsn);\n }\n }\n\n return new VectorSessionToken(\n Math.max(this.version, other.version),\n Math.max(this.globalLsn, other.globalLsn),\n highestLocalLsnByRegion,\n );\n }\n\n public toString(): string | undefined {\n return this.sessionToken;\n }\n\n private areRegionProgressEqual(other: Map<number, string>): boolean {\n if (this.localLsnByregion.size !== other.size) {\n return false;\n }\n\n for (const [regionId, localLsn] of this.localLsnByregion.entries()) {\n const otherLocalLsn = other.get(regionId);\n\n if (localLsn !== otherLocalLsn) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * @hidden\n */\nfunction max(int1: string, int2: string): string {\n // NOTE: This only works for positive numbers\n if (int1.length === int2.length) {\n return int1 > int2 ? int1 : int2;\n } else if (int1.length > int2.length) {\n return int1;\n } else {\n return int2;\n }\n}\n"]}
@@ -5,6 +5,11 @@ import { Constants, getContainerLink, OperationType, trimSlashes } from "../comm
5
5
  import { VectorSessionToken } from "./VectorSessionToken.js";
6
6
  /** @hidden */
7
7
  export class SessionContainer {
8
+ collectionNameToCollectionResourceId;
9
+ collectionResourceIdToSessionTokens;
10
+ static EMPTY_SESSION_TOKEN = "";
11
+ static SESSION_TOKEN_SEPARATOR = ",";
12
+ static SESSION_TOKEN_PARTITION_SPLITTER = ":";
8
13
  constructor(collectionNameToCollectionResourceId = new Map(), collectionResourceIdToSessionTokens = new Map()) {
9
14
  this.collectionNameToCollectionResourceId = collectionNameToCollectionResourceId;
10
15
  this.collectionResourceIdToSessionTokens = collectionResourceIdToSessionTokens;
@@ -126,7 +131,4 @@ export class SessionContainer {
126
131
  return getContainerLink(ownerFullName);
127
132
  }
128
133
  }
129
- SessionContainer.EMPTY_SESSION_TOKEN = "";
130
- SessionContainer.SESSION_TOKEN_SEPARATOR = ",";
131
- SessionContainer.SESSION_TOKEN_PARTITION_SPLITTER = ":";
132
134
  //# sourceMappingURL=sessionContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sessionContainer.js","sourceRoot":"","sources":["../../../src/session/sessionContainer.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,cAAc;AACd,MAAM,OAAO,gBAAgB;IAI3B,YACU,uCAAuC,IAAI,GAAG,EAAkB,EAChE,sCAAsC,IAAI,GAAG,EAGlD;QAJK,yCAAoC,GAApC,oCAAoC,CAA4B;QAChE,wCAAmC,GAAnC,mCAAmC,CAGxC;IACF,CAAC;IAEG,GAAG,CAAC,OAAuB;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,cAAc,GAAG,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;QAC9E,MAAM,iBAAiB,GAAG,IAAI,CAAC,gCAAgC,CAAC,cAAc,CAAC,CAAC;QAChF,OAAO,gBAAgB,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;IAC3E,CAAC;IAEM,MAAM,CAAC,OAAuB;QACnC,IAAI,oBAA4B,CAAC;QACjC,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,cAAc,EAAE,CAAC;YACnB,oBAAoB,GAAG,IAAI,CAAC,oCAAoC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACrF,IAAI,CAAC,oCAAoC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAEM,GAAG,CAAC,OAAuB,EAAE,UAAyB;QAC3D,6EAA6E;QAC7E,IACE,CAAC,UAAU;YACX,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,EACjF,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEjE,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW;YAClC,CAAC,CAAC,OAAO,CAAC,UAAU;YACpB,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC;QAEpE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,aAAa,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACnE,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClE,IAAI,CAAC,oCAAoC,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,yBAAyB,GAAG,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxF,gBAAgB,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,yBAAyB,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,OAAe;QACrC,sIAAsI;QACtI,2EAA2E;QAC3E,uGAAuG;QACvG,qDAAqD;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACvD,CAAC;IAEO,gCAAgC,CACtC,cAAsB;QAEtB,IAAI,iBAAiB,GAAoC,IAAI,CAAC;QAC9D,IAAI,cAAc,IAAI,IAAI,CAAC,oCAAoC,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YACpF,iBAAiB,GAAG,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAC9D,IAAI,CAAC,oCAAoC,CAAC,GAAG,CAAC,cAAc,CAAC,CAC9D,CAAC;QACJ,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEO,MAAM,CAAC,6BAA6B,CAAC,MAAuC;QAClF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,gBAAgB,CAAC,mBAAmB,CAAC;QAC9C,CAAC;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9C,MAAM;gBACJ,KAAK;oBACL,gBAAgB,CAAC,gCAAgC;oBACjD,KAAK,CAAC,QAAQ,EAAE;oBAChB,gBAAgB,CAAC,uBAAuB,CAAC;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAC/B,cAAsB,EACtB,sBAAuD;QAEvD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;QACvF,KAAK,MAAM,aAAa,IAAI,eAAe,EAAE,CAAC;YAC5C,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC,gCAAgC,CAAC,CAAC;YAC7F,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;gBACtD,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtD,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,6DAA6D;IACrD,MAAM,CAAC,mBAAmB,CAChC,YAA0B,EAC1B,aAA4B;QAE5B,IACE,YAAY,KAAK,SAAS,CAAC,IAAI,CAAC,iBAAiB;YACjD,YAAY,KAAK,SAAS,CAAC,IAAI,CAAC,oBAAoB;YACpD,YAAY,KAAK,SAAS,CAAC,IAAI,CAAC,gBAAgB;YAChD,YAAY,KAAK,SAAS,CAAC,IAAI,CAAC,sBAAsB;YACtD,YAAY,KAAK,SAAS,CAAC,IAAI,CAAC,mBAAmB;YACnD,YAAY,KAAK,SAAS,CAAC,IAAI,CAAC,0BAA0B;YAC1D,YAAY,KAAK,SAAS,CAAC,IAAI,CAAC,6BAA6B;YAC7D,CAAC,YAAY,KAAK,SAAS,CAAC,IAAI,CAAC,sBAAsB;gBACrD,aAAa,KAAK,aAAa,CAAC,KAAK,CAAC,EACxC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,gBAAgB,CAAC,OAAuB,EAAE,OAAsB;QACtE,IAAI,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACjE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,gBAAgB,CAAC,aAAuB,CAAC,CAAC;IACnD,CAAC;;AAjKuB,oCAAmB,GAAG,EAAE,CAAC;AACzB,wCAAuB,GAAG,GAAG,CAAC;AAC9B,iDAAgC,GAAG,GAAG,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport atob from \"../utils/atob.js\";\nimport type { ResourceType } from \"../common/index.js\";\nimport { Constants, getContainerLink, OperationType, trimSlashes } from \"../common/index.js\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/index.js\";\nimport type { SessionContext } from \"./SessionContext.js\";\nimport { VectorSessionToken } from \"./VectorSessionToken.js\";\n\n/** @hidden */\nexport class SessionContainer {\n private static readonly EMPTY_SESSION_TOKEN = \"\";\n private static readonly SESSION_TOKEN_SEPARATOR = \",\";\n private static readonly SESSION_TOKEN_PARTITION_SPLITTER = \":\";\n constructor(\n private collectionNameToCollectionResourceId = new Map<string, string>(),\n private collectionResourceIdToSessionTokens = new Map<\n string,\n Map<string, VectorSessionToken>\n >(),\n ) {}\n\n public get(request: SessionContext): string {\n if (!request) {\n throw new Error(\"request cannot be null\");\n }\n const collectionName = getContainerLink(trimSlashes(request.resourceAddress));\n const rangeIdToTokenMap = this.getPartitionKeyRangeIdToTokenMap(collectionName);\n return SessionContainer.getCombinedSessionTokenString(rangeIdToTokenMap);\n }\n\n public remove(request: SessionContext): void {\n let collectionResourceId: string;\n const resourceAddress = trimSlashes(request.resourceAddress);\n const collectionName = getContainerLink(resourceAddress);\n if (collectionName) {\n collectionResourceId = this.collectionNameToCollectionResourceId.get(collectionName);\n this.collectionNameToCollectionResourceId.delete(collectionName);\n }\n if (collectionResourceId !== undefined) {\n this.collectionResourceIdToSessionTokens.delete(collectionResourceId);\n }\n }\n\n public set(request: SessionContext, resHeaders: CosmosHeaders): void {\n // TODO: we check the master logic a few different places. Might not need it.\n if (\n !resHeaders ||\n SessionContainer.isReadingFromMaster(request.resourceType, request.operationType)\n ) {\n return;\n }\n\n const sessionTokenString = resHeaders[Constants.HttpHeaders.SessionToken];\n if (!sessionTokenString) {\n return;\n }\n\n const containerName = this.getContainerName(request, resHeaders);\n\n const ownerId = !request.isNameBased\n ? request.resourceId\n : resHeaders[Constants.HttpHeaders.OwnerId] || request.resourceId;\n\n if (!ownerId) {\n return;\n }\n\n if (containerName && this.validateOwnerID(ownerId)) {\n if (!this.collectionResourceIdToSessionTokens.has(ownerId)) {\n this.collectionResourceIdToSessionTokens.set(ownerId, new Map());\n }\n\n if (!this.collectionNameToCollectionResourceId.has(containerName)) {\n this.collectionNameToCollectionResourceId.set(containerName, ownerId);\n }\n\n const containerSessionContainer = this.collectionResourceIdToSessionTokens.get(ownerId);\n SessionContainer.compareAndSetToken(sessionTokenString, containerSessionContainer);\n }\n }\n\n private validateOwnerID(ownerId: string): boolean {\n // If ownerId contains exactly 8 bytes it represents a unique database+collection identifier. Otherwise it represents another resource\n // The first 4 bytes are the database. The last 4 bytes are the collection.\n // Cosmos rids potentially contain \"-\" which is an invalid character in the browser atob implementation\n // See https://en.wikipedia.org/wiki/Base64#Filenames\n return atob(ownerId.replace(/-/g, \"/\")).length === 8;\n }\n\n private getPartitionKeyRangeIdToTokenMap(\n collectionName: string,\n ): Map<string, VectorSessionToken> {\n let rangeIdToTokenMap: Map<string, VectorSessionToken> = null;\n if (collectionName && this.collectionNameToCollectionResourceId.has(collectionName)) {\n rangeIdToTokenMap = this.collectionResourceIdToSessionTokens.get(\n this.collectionNameToCollectionResourceId.get(collectionName),\n );\n }\n\n return rangeIdToTokenMap;\n }\n\n private static getCombinedSessionTokenString(tokens: Map<string, VectorSessionToken>): string {\n if (!tokens || tokens.size === 0) {\n return SessionContainer.EMPTY_SESSION_TOKEN;\n }\n\n let result = \"\";\n for (const [range, token] of tokens.entries()) {\n result +=\n range +\n SessionContainer.SESSION_TOKEN_PARTITION_SPLITTER +\n token.toString() +\n SessionContainer.SESSION_TOKEN_SEPARATOR;\n }\n return result.slice(0, -1);\n }\n\n private static compareAndSetToken(\n newTokenString: string,\n containerSessionTokens: Map<string, VectorSessionToken>,\n ): void {\n if (!newTokenString) {\n return;\n }\n\n const partitionsParts = newTokenString.split(SessionContainer.SESSION_TOKEN_SEPARATOR);\n for (const partitionPart of partitionsParts) {\n const newTokenParts = partitionPart.split(SessionContainer.SESSION_TOKEN_PARTITION_SPLITTER);\n if (newTokenParts.length !== 2) {\n return;\n }\n\n const range = newTokenParts[0];\n const newToken = VectorSessionToken.create(newTokenParts[1]);\n const tokenForRange = !containerSessionTokens.get(range)\n ? newToken\n : containerSessionTokens.get(range).merge(newToken);\n containerSessionTokens.set(range, tokenForRange);\n }\n }\n\n // TODO: have a assert if the type doesn't mastch known types\n private static isReadingFromMaster(\n resourceType: ResourceType,\n operationType: OperationType,\n ): boolean {\n if (\n resourceType === Constants.Path.OffersPathSegment ||\n resourceType === Constants.Path.DatabasesPathSegment ||\n resourceType === Constants.Path.UsersPathSegment ||\n resourceType === Constants.Path.PermissionsPathSegment ||\n resourceType === Constants.Path.TopologyPathSegment ||\n resourceType === Constants.Path.DatabaseAccountPathSegment ||\n resourceType === Constants.Path.PartitionKeyRangesPathSegment ||\n (resourceType === Constants.Path.CollectionsPathSegment &&\n operationType === OperationType.Query)\n ) {\n return true;\n }\n\n return false;\n }\n\n private getContainerName(request: SessionContext, headers: CosmosHeaders): string {\n let ownerFullName = headers[Constants.HttpHeaders.OwnerFullName];\n if (!ownerFullName) {\n ownerFullName = trimSlashes(request.resourceAddress);\n }\n\n return getContainerLink(ownerFullName as string);\n }\n}\n"]}
1
+ {"version":3,"file":"sessionContainer.js","sourceRoot":"","sources":["../../../src/session/sessionContainer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport atob from \"../utils/atob.js\";\nimport type { ResourceType } from \"../common/index.js\";\nimport { Constants, getContainerLink, OperationType, trimSlashes } from \"../common/index.js\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/index.js\";\nimport type { SessionContext } from \"./SessionContext.js\";\nimport { VectorSessionToken } from \"./VectorSessionToken.js\";\n\n/** @hidden */\nexport class SessionContainer {\n private static readonly EMPTY_SESSION_TOKEN = \"\";\n private static readonly SESSION_TOKEN_SEPARATOR = \",\";\n private static readonly SESSION_TOKEN_PARTITION_SPLITTER = \":\";\n constructor(\n private collectionNameToCollectionResourceId = new Map<string, string>(),\n private collectionResourceIdToSessionTokens = new Map<\n string,\n Map<string, VectorSessionToken>\n >(),\n ) {}\n\n public get(request: SessionContext): string {\n if (!request) {\n throw new Error(\"request cannot be null\");\n }\n const collectionName = getContainerLink(trimSlashes(request.resourceAddress));\n const rangeIdToTokenMap = this.getPartitionKeyRangeIdToTokenMap(collectionName);\n return SessionContainer.getCombinedSessionTokenString(rangeIdToTokenMap);\n }\n\n public remove(request: SessionContext): void {\n let collectionResourceId: string;\n const resourceAddress = trimSlashes(request.resourceAddress);\n const collectionName = getContainerLink(resourceAddress);\n if (collectionName) {\n collectionResourceId = this.collectionNameToCollectionResourceId.get(collectionName);\n this.collectionNameToCollectionResourceId.delete(collectionName);\n }\n if (collectionResourceId !== undefined) {\n this.collectionResourceIdToSessionTokens.delete(collectionResourceId);\n }\n }\n\n public set(request: SessionContext, resHeaders: CosmosHeaders): void {\n // TODO: we check the master logic a few different places. Might not need it.\n if (\n !resHeaders ||\n SessionContainer.isReadingFromMaster(request.resourceType, request.operationType)\n ) {\n return;\n }\n\n const sessionTokenString = resHeaders[Constants.HttpHeaders.SessionToken];\n if (!sessionTokenString) {\n return;\n }\n\n const containerName = this.getContainerName(request, resHeaders);\n\n const ownerId = !request.isNameBased\n ? request.resourceId\n : resHeaders[Constants.HttpHeaders.OwnerId] || request.resourceId;\n\n if (!ownerId) {\n return;\n }\n\n if (containerName && this.validateOwnerID(ownerId)) {\n if (!this.collectionResourceIdToSessionTokens.has(ownerId)) {\n this.collectionResourceIdToSessionTokens.set(ownerId, new Map());\n }\n\n if (!this.collectionNameToCollectionResourceId.has(containerName)) {\n this.collectionNameToCollectionResourceId.set(containerName, ownerId);\n }\n\n const containerSessionContainer = this.collectionResourceIdToSessionTokens.get(ownerId);\n SessionContainer.compareAndSetToken(sessionTokenString, containerSessionContainer);\n }\n }\n\n private validateOwnerID(ownerId: string): boolean {\n // If ownerId contains exactly 8 bytes it represents a unique database+collection identifier. Otherwise it represents another resource\n // The first 4 bytes are the database. The last 4 bytes are the collection.\n // Cosmos rids potentially contain \"-\" which is an invalid character in the browser atob implementation\n // See https://en.wikipedia.org/wiki/Base64#Filenames\n return atob(ownerId.replace(/-/g, \"/\")).length === 8;\n }\n\n private getPartitionKeyRangeIdToTokenMap(\n collectionName: string,\n ): Map<string, VectorSessionToken> {\n let rangeIdToTokenMap: Map<string, VectorSessionToken> = null;\n if (collectionName && this.collectionNameToCollectionResourceId.has(collectionName)) {\n rangeIdToTokenMap = this.collectionResourceIdToSessionTokens.get(\n this.collectionNameToCollectionResourceId.get(collectionName),\n );\n }\n\n return rangeIdToTokenMap;\n }\n\n private static getCombinedSessionTokenString(tokens: Map<string, VectorSessionToken>): string {\n if (!tokens || tokens.size === 0) {\n return SessionContainer.EMPTY_SESSION_TOKEN;\n }\n\n let result = \"\";\n for (const [range, token] of tokens.entries()) {\n result +=\n range +\n SessionContainer.SESSION_TOKEN_PARTITION_SPLITTER +\n token.toString() +\n SessionContainer.SESSION_TOKEN_SEPARATOR;\n }\n return result.slice(0, -1);\n }\n\n private static compareAndSetToken(\n newTokenString: string,\n containerSessionTokens: Map<string, VectorSessionToken>,\n ): void {\n if (!newTokenString) {\n return;\n }\n\n const partitionsParts = newTokenString.split(SessionContainer.SESSION_TOKEN_SEPARATOR);\n for (const partitionPart of partitionsParts) {\n const newTokenParts = partitionPart.split(SessionContainer.SESSION_TOKEN_PARTITION_SPLITTER);\n if (newTokenParts.length !== 2) {\n return;\n }\n\n const range = newTokenParts[0];\n const newToken = VectorSessionToken.create(newTokenParts[1]);\n const tokenForRange = !containerSessionTokens.get(range)\n ? newToken\n : containerSessionTokens.get(range).merge(newToken);\n containerSessionTokens.set(range, tokenForRange);\n }\n }\n\n // TODO: have a assert if the type doesn't mastch known types\n private static isReadingFromMaster(\n resourceType: ResourceType,\n operationType: OperationType,\n ): boolean {\n if (\n resourceType === Constants.Path.OffersPathSegment ||\n resourceType === Constants.Path.DatabasesPathSegment ||\n resourceType === Constants.Path.UsersPathSegment ||\n resourceType === Constants.Path.PermissionsPathSegment ||\n resourceType === Constants.Path.TopologyPathSegment ||\n resourceType === Constants.Path.DatabaseAccountPathSegment ||\n resourceType === Constants.Path.PartitionKeyRangesPathSegment ||\n (resourceType === Constants.Path.CollectionsPathSegment &&\n operationType === OperationType.Query)\n ) {\n return true;\n }\n\n return false;\n }\n\n private getContainerName(request: SessionContext, headers: CosmosHeaders): string {\n let ownerFullName = headers[Constants.HttpHeaders.OwnerFullName];\n if (!ownerFullName) {\n ownerFullName = trimSlashes(request.resourceAddress);\n }\n\n return getContainerLink(ownerFullName as string);\n }\n}\n"]}
@@ -64,7 +64,7 @@ export function prepareOperations(operationInput, definition, options = {}) {
64
64
  }
65
65
  }
66
66
  return {
67
- operation: Object.assign(Object.assign({}, operationInput), { partitionKey: JSON.stringify(partitionKey) }),
67
+ operation: { ...operationInput, partitionKey: JSON.stringify(partitionKey) },
68
68
  partitionKey,
69
69
  };
70
70
  }
@@ -92,17 +92,25 @@ function populateIdsIfNeeded(operationInput, options) {
92
92
  * @hidden
93
93
  */
94
94
  export function splitBatchBasedOnBodySize(originalBatch) {
95
- if ((originalBatch === null || originalBatch === void 0 ? void 0 : originalBatch.operations) === undefined || originalBatch.operations.length < 1)
95
+ if (originalBatch?.operations === undefined || originalBatch.operations.length < 1)
96
96
  return [];
97
97
  let currentBatchSize = calculateObjectSizeInBytes(originalBatch.operations[0]);
98
- let currentBatch = Object.assign(Object.assign({}, originalBatch), { operations: [originalBatch.operations[0]], indexes: [originalBatch.indexes[0]] });
98
+ let currentBatch = {
99
+ ...originalBatch,
100
+ operations: [originalBatch.operations[0]],
101
+ indexes: [originalBatch.indexes[0]],
102
+ };
99
103
  const processedBatches = [];
100
104
  processedBatches.push(currentBatch);
101
105
  for (let index = 1; index < originalBatch.operations.length; index++) {
102
106
  const operation = originalBatch.operations[index];
103
107
  const currentOpSize = calculateObjectSizeInBytes(operation);
104
108
  if (currentBatchSize + currentOpSize > Constants.DefaultMaxBulkRequestBodySizeInBytes) {
105
- currentBatch = Object.assign(Object.assign({}, originalBatch), { operations: [], indexes: [] });
109
+ currentBatch = {
110
+ ...originalBatch,
111
+ operations: [],
112
+ indexes: [],
113
+ };
106
114
  processedBatches.push(currentBatch);
107
115
  currentBatchSize = 0;
108
116
  }
@@ -133,6 +141,9 @@ export function isSuccessStatusCode(statusCode) {
133
141
  return statusCode >= 200 && statusCode <= 299;
134
142
  }
135
143
  export class TaskCompletionSource {
144
+ promise;
145
+ resolveFn;
146
+ rejectFn;
136
147
  constructor() {
137
148
  this.promise = new Promise((resolve, reject) => {
138
149
  this.resolveFn = resolve;
@@ -1 +1 @@
1
- {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/utils/batch.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { JSONObject } from \"../queryExecutionContext/index.js\";\nimport { extractPartitionKeys, undefinedPartitionKey } from \"../extractPartitionKey.js\";\nimport type {\n CosmosDiagnostics,\n CosmosHeaders,\n DiagnosticNodeInternal,\n ErrorResponse,\n RequestOptions,\n StatusCode,\n} from \"../index.js\";\nimport type {\n PartitionKey,\n PartitionKeyDefinition,\n PrimitivePartitionKeyValue,\n} from \"../documents/index.js\";\nimport { NonePartitionKeyLiteral, convertToInternalPartitionKey } from \"../documents/index.js\";\nimport type { PatchRequestBody } from \"./patch.js\";\nimport { assertNotUndefined } from \"./typeChecks.js\";\nimport { bodyFromData } from \"../request/request.js\";\nimport { Constants } from \"../common/constants.js\";\nimport { randomUUID } from \"@azure/core-util\";\nimport type { ItemOperation } from \"../bulk/ItemOperation.js\";\nimport type { BulkResponse } from \"../bulk/index.js\";\nimport type { EncryptionProcessor } from \"../encryption/EncryptionProcessor.js\";\n\nexport type Operation =\n | CreateOperation\n | UpsertOperation\n | ReadOperation\n | DeleteOperation\n | ReplaceOperation\n | BulkPatchOperation;\n\nexport interface Batch {\n min: string;\n max: string;\n rangeId: string;\n indexes: number[];\n operations: Operation[];\n}\n\nexport type BulkOperationResponse = OperationResponse[] & { diagnostics: CosmosDiagnostics };\n\n/**\n * represents response for an operation in bulk with executeBulkOperations API\n */\nexport interface BulkOperationResult {\n /** the original operation input passed */\n operationInput: OperationInput;\n /** response from the backend for the item operation */\n response?: ExtendedOperationResponse;\n /** any exceptions are captured here */\n error?: ErrorResponse;\n}\n\n/**\n * response for a successful operation in bulk with executeBulkOperations API\n */\nexport interface ExtendedOperationResponse extends OperationResponse {\n /** activity id related to the operation */\n activityId?: string;\n /** session Token assigned to the result */\n sessionToken?: string;\n /** headers associated with the operation */\n headers?: CosmosHeaders;\n /** diagnostic details associated with operation */\n diagnostics: CosmosDiagnostics;\n}\n\nexport interface OperationResponse {\n statusCode: number;\n requestCharge: number;\n eTag?: string;\n resourceBody?: JSONObject;\n}\n\n/**\n * Options object used to modify bulk execution.\n * continueOnError (Default value: false) - Continues bulk execution when an operation fails ** NOTE THIS WILL DEFAULT TO TRUE IN the 4.0 RELEASE\n */\nexport interface BulkOptions {\n continueOnError?: boolean;\n}\n\nexport function isKeyInRange(min: string, max: string, key: string): boolean {\n const isAfterMinInclusive = key.localeCompare(min) >= 0;\n const isBeforeMax = key.localeCompare(max) < 0;\n return isAfterMinInclusive && isBeforeMax;\n}\n\nexport interface OperationBase {\n partitionKey?: string;\n ifMatch?: string;\n ifNoneMatch?: string;\n}\n\nexport const BulkOperationType = {\n Create: \"Create\",\n Upsert: \"Upsert\",\n Read: \"Read\",\n Delete: \"Delete\",\n Replace: \"Replace\",\n Patch: \"Patch\",\n} as const;\n\nexport type OperationInput =\n | CreateOperationInput\n | UpsertOperationInput\n | ReadOperationInput\n | DeleteOperationInput\n | ReplaceOperationInput\n | PatchOperationInput;\n\nexport interface CreateOperationInput {\n partitionKey?: PartitionKey;\n ifMatch?: string;\n ifNoneMatch?: string;\n operationType: typeof BulkOperationType.Create;\n resourceBody: JSONObject;\n}\n\nexport interface UpsertOperationInput {\n partitionKey?: PartitionKey;\n ifMatch?: string;\n ifNoneMatch?: string;\n operationType: typeof BulkOperationType.Upsert;\n resourceBody: JSONObject;\n}\n\nexport interface ReadOperationInput {\n partitionKey?: PartitionKey;\n operationType: typeof BulkOperationType.Read;\n id: string;\n}\n\nexport interface DeleteOperationInput {\n partitionKey?: PartitionKey;\n operationType: typeof BulkOperationType.Delete;\n id: string;\n}\n\nexport interface ReplaceOperationInput {\n partitionKey?: PartitionKey;\n ifMatch?: string;\n ifNoneMatch?: string;\n operationType: typeof BulkOperationType.Replace;\n resourceBody: JSONObject;\n id: string;\n}\n\nexport interface PatchOperationInput {\n partitionKey?: PartitionKey;\n ifMatch?: string;\n ifNoneMatch?: string;\n operationType: typeof BulkOperationType.Patch;\n resourceBody: PatchRequestBody;\n id: string;\n}\n\nexport type OperationWithItem = OperationBase & {\n resourceBody: JSONObject;\n};\n\nexport type CreateOperation = OperationWithItem & {\n operationType: typeof BulkOperationType.Create;\n};\n\nexport type UpsertOperation = OperationWithItem & {\n operationType: typeof BulkOperationType.Upsert;\n};\n\nexport type ReadOperation = OperationBase & {\n operationType: typeof BulkOperationType.Read;\n id: string;\n};\n\nexport type DeleteOperation = OperationBase & {\n operationType: typeof BulkOperationType.Delete;\n id: string;\n};\n\nexport type ReplaceOperation = OperationWithItem & {\n operationType: typeof BulkOperationType.Replace;\n id: string;\n};\n\nexport type BulkPatchOperation = OperationBase & {\n operationType: typeof BulkOperationType.Patch;\n id: string;\n};\n\nexport function hasResource(\n operation: Operation,\n): operation is CreateOperation | UpsertOperation | ReplaceOperation {\n return (\n operation.operationType !== \"Patch\" &&\n (operation as OperationWithItem).resourceBody !== undefined\n );\n}\n/**\n * Maps OperationInput to Operation by\n * - generating Ids if needed.\n * - choosing partitionKey which can be used to choose which batch this\n * operation should be part of. The order is -\n * 1. If the operationInput itself has partitionKey field set it is used.\n * 2. Other wise for create/replace/upsert it is extracted from resource body.\n * 3. For read/delete/patch type operations undefined partitionKey is used.\n * - Here one nuance is that, the partitionKey field inside Operation needs to\n * be serialized as a JSON string.\n * @param operationInput - OperationInput\n * @param definition - PartitionKeyDefinition\n * @param options - RequestOptions\n * @returns\n */\nexport function prepareOperations(\n operationInput: OperationInput,\n definition: PartitionKeyDefinition,\n options: RequestOptions = {},\n): {\n operation: Operation;\n partitionKey: PrimitivePartitionKeyValue[];\n} {\n populateIdsIfNeeded(operationInput, options);\n\n let partitionKey: PrimitivePartitionKeyValue[];\n if (Object.prototype.hasOwnProperty.call(operationInput, \"partitionKey\")) {\n if (operationInput.partitionKey === undefined) {\n partitionKey = definition.paths.map(() => NonePartitionKeyLiteral);\n } else {\n partitionKey = convertToInternalPartitionKey(operationInput.partitionKey);\n }\n } else {\n switch (operationInput.operationType) {\n case BulkOperationType.Create:\n case BulkOperationType.Replace:\n case BulkOperationType.Upsert:\n partitionKey = assertNotUndefined(\n extractPartitionKeys(operationInput.resourceBody, definition),\n \"Unexpected undefined Partition Key Found.\",\n );\n break;\n case BulkOperationType.Read:\n case BulkOperationType.Delete:\n case BulkOperationType.Patch:\n partitionKey = undefinedPartitionKey(definition);\n break;\n }\n }\n return {\n operation: { ...operationInput, partitionKey: JSON.stringify(partitionKey) } as Operation,\n partitionKey,\n };\n}\n\n/**\n * For operations requiring Id genrate random uuids.\n * @param operationInput - OperationInput to be checked.\n * @param options - RequestOptions\n */\nfunction populateIdsIfNeeded(operationInput: OperationInput, options: RequestOptions) {\n if (\n operationInput.operationType === BulkOperationType.Create ||\n operationInput.operationType === BulkOperationType.Upsert\n ) {\n if (\n (operationInput.resourceBody.id === undefined || operationInput.resourceBody.id === \"\") &&\n !options.disableAutomaticIdGeneration\n ) {\n operationInput.resourceBody.id = randomUUID();\n }\n }\n}\n\n/**\n * Splits a batch into array of batches based on cumulative size of its operations by making sure\n * cumulative size of an individual batch is not larger than {@link Constants.DefaultMaxBulkRequestBodySizeInBytes}.\n * If a single operation itself is larger than {@link Constants.DefaultMaxBulkRequestBodySizeInBytes}, that\n * operation would be moved into a batch containing only that operation.\n * @param originalBatch - A batch of operations needed to be checked.\n * @returns\n * @hidden\n */\nexport function splitBatchBasedOnBodySize(originalBatch: Batch): Batch[] {\n if (originalBatch?.operations === undefined || originalBatch.operations.length < 1) return [];\n let currentBatchSize = calculateObjectSizeInBytes(originalBatch.operations[0]);\n let currentBatch: Batch = {\n ...originalBatch,\n operations: [originalBatch.operations[0]],\n indexes: [originalBatch.indexes[0]],\n };\n const processedBatches: Batch[] = [];\n processedBatches.push(currentBatch);\n\n for (let index = 1; index < originalBatch.operations.length; index++) {\n const operation = originalBatch.operations[index];\n const currentOpSize = calculateObjectSizeInBytes(operation);\n if (currentBatchSize + currentOpSize > Constants.DefaultMaxBulkRequestBodySizeInBytes) {\n currentBatch = {\n ...originalBatch,\n operations: [],\n indexes: [],\n };\n processedBatches.push(currentBatch);\n currentBatchSize = 0;\n }\n currentBatch.operations.push(operation);\n currentBatch.indexes.push(originalBatch.indexes[index]);\n currentBatchSize += currentOpSize;\n }\n return processedBatches;\n}\n\n/**\n * Calculates size of an JSON object in bytes with utf-8 encoding.\n * @hidden\n */\nexport function calculateObjectSizeInBytes(obj: unknown): number {\n return new TextEncoder().encode(bodyFromData(obj as any)).length;\n}\n\nexport function decorateBatchOperation(\n operation: OperationInput,\n options: RequestOptions = {},\n): Operation {\n if (\n operation.operationType === BulkOperationType.Create ||\n operation.operationType === BulkOperationType.Upsert\n ) {\n if (\n (operation.resourceBody.id === undefined || operation.resourceBody.id === \"\") &&\n !options.disableAutomaticIdGeneration\n ) {\n operation.resourceBody.id = randomUUID();\n }\n }\n return operation as Operation;\n}\n\nexport function isSuccessStatusCode(statusCode: StatusCode): boolean {\n return statusCode >= 200 && statusCode <= 299;\n}\n\nexport type ExecuteCallback = (\n operations: ItemOperation[],\n diagnosticNode: DiagnosticNodeInternal,\n) => Promise<BulkResponse>;\nexport type RetryCallback = (\n operation: ItemOperation,\n diagnosticNode: DiagnosticNodeInternal,\n) => Promise<void>;\n\nexport class TaskCompletionSource<T> {\n private readonly promise: Promise<T>;\n private resolveFn!: (value: T) => void;\n private rejectFn!: (reason?: any) => void;\n\n constructor() {\n this.promise = new Promise<T>((resolve, reject) => {\n this.resolveFn = resolve;\n this.rejectFn = reject;\n });\n }\n\n public get task(): Promise<T> {\n return this.promise;\n }\n\n public setResult(value: T): void {\n this.resolveFn(value);\n }\n\n public setException(error: Error): void {\n this.rejectFn(error);\n }\n}\n\nexport async function encryptOperationInput(\n encryptionProcessor: EncryptionProcessor,\n operation: OperationInput,\n totalPropertiesEncryptedCount: number,\n): Promise<{ operation: OperationInput; totalPropertiesEncryptedCount: number }> {\n if (Object.prototype.hasOwnProperty.call(operation, \"partitionKey\")) {\n const partitionKeyInternal = convertToInternalPartitionKey(operation.partitionKey);\n const { partitionKeyList, encryptedCount } =\n await encryptionProcessor.getEncryptedPartitionKeyValue(partitionKeyInternal);\n operation.partitionKey = partitionKeyList;\n totalPropertiesEncryptedCount += encryptedCount;\n }\n switch (operation.operationType) {\n case BulkOperationType.Create:\n case BulkOperationType.Upsert: {\n const { body, propertiesEncryptedCount } = await encryptionProcessor.encrypt(\n operation.resourceBody,\n );\n operation.resourceBody = body;\n totalPropertiesEncryptedCount += propertiesEncryptedCount;\n break;\n }\n case BulkOperationType.Read:\n case BulkOperationType.Delete:\n if (await encryptionProcessor.isPathEncrypted(\"/id\")) {\n operation.id = await encryptionProcessor.getEncryptedId(operation.id);\n totalPropertiesEncryptedCount++;\n }\n break;\n case BulkOperationType.Replace: {\n if (await encryptionProcessor.isPathEncrypted(\"/id\")) {\n operation.id = await encryptionProcessor.getEncryptedId(operation.id);\n totalPropertiesEncryptedCount++;\n }\n const { body, propertiesEncryptedCount } = await encryptionProcessor.encrypt(\n operation.resourceBody,\n );\n operation.resourceBody = body;\n totalPropertiesEncryptedCount += propertiesEncryptedCount;\n break;\n }\n case BulkOperationType.Patch: {\n if (await encryptionProcessor.isPathEncrypted(\"/id\")) {\n operation.id = await encryptionProcessor.getEncryptedId(operation.id);\n totalPropertiesEncryptedCount++;\n }\n const body = operation.resourceBody;\n const patchRequestBody = Array.isArray(body) ? body : body.operations;\n for (const patchOperation of patchRequestBody) {\n if (\"value\" in patchOperation) {\n if (await encryptionProcessor.isPathEncrypted(patchOperation.path)) {\n patchOperation.value = await encryptionProcessor.encryptProperty(\n patchOperation.path,\n patchOperation.value,\n );\n totalPropertiesEncryptedCount++;\n }\n }\n }\n break;\n }\n }\n return { operation, totalPropertiesEncryptedCount };\n}\n"]}
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/utils/batch.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { JSONObject } from \"../queryExecutionContext/index.js\";\nimport { extractPartitionKeys, undefinedPartitionKey } from \"../extractPartitionKey.js\";\nimport type {\n CosmosDiagnostics,\n CosmosHeaders,\n DiagnosticNodeInternal,\n ErrorResponse,\n RequestOptions,\n StatusCode,\n} from \"../index.js\";\nimport type {\n PartitionKey,\n PartitionKeyDefinition,\n PrimitivePartitionKeyValue,\n} from \"../documents/index.js\";\nimport { NonePartitionKeyLiteral, convertToInternalPartitionKey } from \"../documents/index.js\";\nimport type { PatchRequestBody } from \"./patch.js\";\nimport { assertNotUndefined } from \"./typeChecks.js\";\nimport { bodyFromData } from \"../request/request.js\";\nimport { Constants } from \"../common/constants.js\";\nimport { randomUUID } from \"@azure/core-util\";\nimport type { ItemOperation } from \"../bulk/ItemOperation.js\";\nimport type { BulkResponse } from \"../bulk/index.js\";\nimport type { EncryptionProcessor } from \"../encryption/EncryptionProcessor.js\";\n\nexport type Operation =\n | CreateOperation\n | UpsertOperation\n | ReadOperation\n | DeleteOperation\n | ReplaceOperation\n | BulkPatchOperation;\n\nexport interface Batch {\n min: string;\n max: string;\n rangeId: string;\n indexes: number[];\n operations: Operation[];\n}\n\nexport type BulkOperationResponse = OperationResponse[] & { diagnostics: CosmosDiagnostics };\n\n/**\n * represents response for an operation in bulk with executeBulkOperations API\n */\nexport interface BulkOperationResult {\n /** the original operation input passed */\n operationInput: OperationInput;\n /** response from the backend for the item operation */\n response?: ExtendedOperationResponse;\n /** any exceptions are captured here */\n error?: ErrorResponse;\n}\n\n/**\n * response for a successful operation in bulk with executeBulkOperations API\n */\nexport interface ExtendedOperationResponse extends OperationResponse {\n /** activity id related to the operation */\n activityId?: string;\n /** session Token assigned to the result */\n sessionToken?: string;\n /** headers associated with the operation */\n headers?: CosmosHeaders;\n /** diagnostic details associated with operation */\n diagnostics: CosmosDiagnostics;\n}\n\nexport interface OperationResponse {\n statusCode: number;\n requestCharge: number;\n eTag?: string;\n resourceBody?: JSONObject;\n}\n\n/**\n * Options object used to modify bulk execution.\n * continueOnError (Default value: false) - Continues bulk execution when an operation fails ** NOTE THIS WILL DEFAULT TO TRUE IN the 4.0 RELEASE\n */\nexport interface BulkOptions {\n continueOnError?: boolean;\n}\n\nexport function isKeyInRange(min: string, max: string, key: string): boolean {\n const isAfterMinInclusive = key.localeCompare(min) >= 0;\n const isBeforeMax = key.localeCompare(max) < 0;\n return isAfterMinInclusive && isBeforeMax;\n}\n\nexport interface OperationBase {\n partitionKey?: string;\n ifMatch?: string;\n ifNoneMatch?: string;\n}\n\nexport const BulkOperationType = {\n Create: \"Create\",\n Upsert: \"Upsert\",\n Read: \"Read\",\n Delete: \"Delete\",\n Replace: \"Replace\",\n Patch: \"Patch\",\n} as const;\n\nexport type OperationInput =\n | CreateOperationInput\n | UpsertOperationInput\n | ReadOperationInput\n | DeleteOperationInput\n | ReplaceOperationInput\n | PatchOperationInput;\n\nexport interface CreateOperationInput {\n partitionKey?: PartitionKey;\n ifMatch?: string;\n ifNoneMatch?: string;\n operationType: typeof BulkOperationType.Create;\n resourceBody: JSONObject;\n}\n\nexport interface UpsertOperationInput {\n partitionKey?: PartitionKey;\n ifMatch?: string;\n ifNoneMatch?: string;\n operationType: typeof BulkOperationType.Upsert;\n resourceBody: JSONObject;\n}\n\nexport interface ReadOperationInput {\n partitionKey?: PartitionKey;\n operationType: typeof BulkOperationType.Read;\n id: string;\n}\n\nexport interface DeleteOperationInput {\n partitionKey?: PartitionKey;\n operationType: typeof BulkOperationType.Delete;\n id: string;\n}\n\nexport interface ReplaceOperationInput {\n partitionKey?: PartitionKey;\n ifMatch?: string;\n ifNoneMatch?: string;\n operationType: typeof BulkOperationType.Replace;\n resourceBody: JSONObject;\n id: string;\n}\n\nexport interface PatchOperationInput {\n partitionKey?: PartitionKey;\n ifMatch?: string;\n ifNoneMatch?: string;\n operationType: typeof BulkOperationType.Patch;\n resourceBody: PatchRequestBody;\n id: string;\n}\n\nexport type OperationWithItem = OperationBase & {\n resourceBody: JSONObject;\n};\n\nexport type CreateOperation = OperationWithItem & {\n operationType: typeof BulkOperationType.Create;\n};\n\nexport type UpsertOperation = OperationWithItem & {\n operationType: typeof BulkOperationType.Upsert;\n};\n\nexport type ReadOperation = OperationBase & {\n operationType: typeof BulkOperationType.Read;\n id: string;\n};\n\nexport type DeleteOperation = OperationBase & {\n operationType: typeof BulkOperationType.Delete;\n id: string;\n};\n\nexport type ReplaceOperation = OperationWithItem & {\n operationType: typeof BulkOperationType.Replace;\n id: string;\n};\n\nexport type BulkPatchOperation = OperationBase & {\n operationType: typeof BulkOperationType.Patch;\n id: string;\n};\n\nexport function hasResource(\n operation: Operation,\n): operation is CreateOperation | UpsertOperation | ReplaceOperation {\n return (\n operation.operationType !== \"Patch\" &&\n (operation as OperationWithItem).resourceBody !== undefined\n );\n}\n/**\n * Maps OperationInput to Operation by\n * - generating Ids if needed.\n * - choosing partitionKey which can be used to choose which batch this\n * operation should be part of. The order is -\n * 1. If the operationInput itself has partitionKey field set it is used.\n * 2. Other wise for create/replace/upsert it is extracted from resource body.\n * 3. For read/delete/patch type operations undefined partitionKey is used.\n * - Here one nuance is that, the partitionKey field inside Operation needs to\n * be serialized as a JSON string.\n * @param operationInput - OperationInput\n * @param definition - PartitionKeyDefinition\n * @param options - RequestOptions\n * @returns\n */\nexport function prepareOperations(\n operationInput: OperationInput,\n definition: PartitionKeyDefinition,\n options: RequestOptions = {},\n): {\n operation: Operation;\n partitionKey: PrimitivePartitionKeyValue[];\n} {\n populateIdsIfNeeded(operationInput, options);\n\n let partitionKey: PrimitivePartitionKeyValue[];\n if (Object.prototype.hasOwnProperty.call(operationInput, \"partitionKey\")) {\n if (operationInput.partitionKey === undefined) {\n partitionKey = definition.paths.map(() => NonePartitionKeyLiteral);\n } else {\n partitionKey = convertToInternalPartitionKey(operationInput.partitionKey);\n }\n } else {\n switch (operationInput.operationType) {\n case BulkOperationType.Create:\n case BulkOperationType.Replace:\n case BulkOperationType.Upsert:\n partitionKey = assertNotUndefined(\n extractPartitionKeys(operationInput.resourceBody, definition),\n \"Unexpected undefined Partition Key Found.\",\n );\n break;\n case BulkOperationType.Read:\n case BulkOperationType.Delete:\n case BulkOperationType.Patch:\n partitionKey = undefinedPartitionKey(definition);\n break;\n }\n }\n return {\n operation: { ...operationInput, partitionKey: JSON.stringify(partitionKey) } as Operation,\n partitionKey,\n };\n}\n\n/**\n * For operations requiring Id genrate random uuids.\n * @param operationInput - OperationInput to be checked.\n * @param options - RequestOptions\n */\nfunction populateIdsIfNeeded(operationInput: OperationInput, options: RequestOptions) {\n if (\n operationInput.operationType === BulkOperationType.Create ||\n operationInput.operationType === BulkOperationType.Upsert\n ) {\n if (\n (operationInput.resourceBody.id === undefined || operationInput.resourceBody.id === \"\") &&\n !options.disableAutomaticIdGeneration\n ) {\n operationInput.resourceBody.id = randomUUID();\n }\n }\n}\n\n/**\n * Splits a batch into array of batches based on cumulative size of its operations by making sure\n * cumulative size of an individual batch is not larger than {@link Constants.DefaultMaxBulkRequestBodySizeInBytes}.\n * If a single operation itself is larger than {@link Constants.DefaultMaxBulkRequestBodySizeInBytes}, that\n * operation would be moved into a batch containing only that operation.\n * @param originalBatch - A batch of operations needed to be checked.\n * @returns\n * @hidden\n */\nexport function splitBatchBasedOnBodySize(originalBatch: Batch): Batch[] {\n if (originalBatch?.operations === undefined || originalBatch.operations.length < 1) return [];\n let currentBatchSize = calculateObjectSizeInBytes(originalBatch.operations[0]);\n let currentBatch: Batch = {\n ...originalBatch,\n operations: [originalBatch.operations[0]],\n indexes: [originalBatch.indexes[0]],\n };\n const processedBatches: Batch[] = [];\n processedBatches.push(currentBatch);\n\n for (let index = 1; index < originalBatch.operations.length; index++) {\n const operation = originalBatch.operations[index];\n const currentOpSize = calculateObjectSizeInBytes(operation);\n if (currentBatchSize + currentOpSize > Constants.DefaultMaxBulkRequestBodySizeInBytes) {\n currentBatch = {\n ...originalBatch,\n operations: [],\n indexes: [],\n };\n processedBatches.push(currentBatch);\n currentBatchSize = 0;\n }\n currentBatch.operations.push(operation);\n currentBatch.indexes.push(originalBatch.indexes[index]);\n currentBatchSize += currentOpSize;\n }\n return processedBatches;\n}\n\n/**\n * Calculates size of an JSON object in bytes with utf-8 encoding.\n * @hidden\n */\nexport function calculateObjectSizeInBytes(obj: unknown): number {\n return new TextEncoder().encode(bodyFromData(obj as any)).length;\n}\n\nexport function decorateBatchOperation(\n operation: OperationInput,\n options: RequestOptions = {},\n): Operation {\n if (\n operation.operationType === BulkOperationType.Create ||\n operation.operationType === BulkOperationType.Upsert\n ) {\n if (\n (operation.resourceBody.id === undefined || operation.resourceBody.id === \"\") &&\n !options.disableAutomaticIdGeneration\n ) {\n operation.resourceBody.id = randomUUID();\n }\n }\n return operation as Operation;\n}\n\nexport function isSuccessStatusCode(statusCode: StatusCode): boolean {\n return statusCode >= 200 && statusCode <= 299;\n}\n\nexport type ExecuteCallback = (\n operations: ItemOperation[],\n diagnosticNode: DiagnosticNodeInternal,\n) => Promise<BulkResponse>;\nexport type RetryCallback = (\n operation: ItemOperation,\n diagnosticNode: DiagnosticNodeInternal,\n) => Promise<void>;\n\nexport class TaskCompletionSource<T> {\n private readonly promise: Promise<T>;\n private resolveFn!: (value: T) => void;\n private rejectFn!: (reason?: any) => void;\n\n constructor() {\n this.promise = new Promise<T>((resolve, reject) => {\n this.resolveFn = resolve;\n this.rejectFn = reject;\n });\n }\n\n public get task(): Promise<T> {\n return this.promise;\n }\n\n public setResult(value: T): void {\n this.resolveFn(value);\n }\n\n public setException(error: Error): void {\n this.rejectFn(error);\n }\n}\n\nexport async function encryptOperationInput(\n encryptionProcessor: EncryptionProcessor,\n operation: OperationInput,\n totalPropertiesEncryptedCount: number,\n): Promise<{ operation: OperationInput; totalPropertiesEncryptedCount: number }> {\n if (Object.prototype.hasOwnProperty.call(operation, \"partitionKey\")) {\n const partitionKeyInternal = convertToInternalPartitionKey(operation.partitionKey);\n const { partitionKeyList, encryptedCount } =\n await encryptionProcessor.getEncryptedPartitionKeyValue(partitionKeyInternal);\n operation.partitionKey = partitionKeyList;\n totalPropertiesEncryptedCount += encryptedCount;\n }\n switch (operation.operationType) {\n case BulkOperationType.Create:\n case BulkOperationType.Upsert: {\n const { body, propertiesEncryptedCount } = await encryptionProcessor.encrypt(\n operation.resourceBody,\n );\n operation.resourceBody = body;\n totalPropertiesEncryptedCount += propertiesEncryptedCount;\n break;\n }\n case BulkOperationType.Read:\n case BulkOperationType.Delete:\n if (await encryptionProcessor.isPathEncrypted(\"/id\")) {\n operation.id = await encryptionProcessor.getEncryptedId(operation.id);\n totalPropertiesEncryptedCount++;\n }\n break;\n case BulkOperationType.Replace: {\n if (await encryptionProcessor.isPathEncrypted(\"/id\")) {\n operation.id = await encryptionProcessor.getEncryptedId(operation.id);\n totalPropertiesEncryptedCount++;\n }\n const { body, propertiesEncryptedCount } = await encryptionProcessor.encrypt(\n operation.resourceBody,\n );\n operation.resourceBody = body;\n totalPropertiesEncryptedCount += propertiesEncryptedCount;\n break;\n }\n case BulkOperationType.Patch: {\n if (await encryptionProcessor.isPathEncrypted(\"/id\")) {\n operation.id = await encryptionProcessor.getEncryptedId(operation.id);\n totalPropertiesEncryptedCount++;\n }\n const body = operation.resourceBody;\n const patchRequestBody = Array.isArray(body) ? body : body.operations;\n for (const patchOperation of patchRequestBody) {\n if (\"value\" in patchOperation) {\n if (await encryptionProcessor.isPathEncrypted(patchOperation.path)) {\n patchOperation.value = await encryptionProcessor.encryptProperty(\n patchOperation.path,\n patchOperation.value,\n );\n totalPropertiesEncryptedCount++;\n }\n }\n }\n break;\n }\n }\n return { operation, totalPropertiesEncryptedCount };\n}\n"]}
@@ -2,6 +2,10 @@
2
2
  // Licensed under the MIT License.
3
3
  import PriorityQueue from "priorityqueuejs";
4
4
  export class FixedSizePriorityQueue {
5
+ pq;
6
+ // The compare function should return a positive number if a is greater than b, a negative number if a is less than b, and 0 if a is equal to b.
7
+ compareFn;
8
+ pqMaxSize;
5
9
  constructor(compareFn, pqMaxSize) {
6
10
  this.compareFn = compareFn;
7
11
  this.pq = new PriorityQueue(this.compareFn);
@@ -1 +1 @@
1
- {"version":3,"file":"fixedSizePriorityQueue.js","sourceRoot":"","sources":["../../../src/utils/fixedSizePriorityQueue.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAO,sBAAsB;IAMjC,YAAY,SAAiC,EAAE,SAAiB;QAC9D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,EAAE,GAAG,IAAI,aAAa,CAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,OAAO,CAAC,IAAO;QACpB,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAEM,cAAc;QACnB,MAAM,QAAQ,GAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8GAA8G;IAC9G,wFAAwF;IACjF,OAAO;QACZ,MAAM,SAAS,GAAG,IAAI,sBAAsB,CAC1C,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACrC,IAAI,CAAC,SAAS,CACf,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport PriorityQueue from \"priorityqueuejs\";\n\nexport class FixedSizePriorityQueue<T> {\n private pq: PriorityQueue<T>;\n // The compare function should return a positive number if a is greater than b, a negative number if a is less than b, and 0 if a is equal to b.\n private compareFn: (a: T, b: T) => number;\n private pqMaxSize: number;\n\n constructor(compareFn: (a: T, b: T) => number, pqMaxSize: number) {\n this.compareFn = compareFn;\n this.pq = new PriorityQueue<T>(this.compareFn);\n this.pqMaxSize = pqMaxSize;\n }\n\n public enqueue(item: T): void {\n if (this.pq.size() < this.pqMaxSize) {\n this.pq.enq(item);\n } else {\n const topItem = this.pq.peek();\n if (this.compareFn(topItem, item) > 0) {\n this.pq.deq();\n this.pq.enq(item);\n }\n }\n }\n\n public dequeue(): T {\n return this.pq.deq();\n }\n\n public size(): number {\n return this.pq.size();\n }\n\n public isEmpty(): boolean {\n return this.pq.isEmpty();\n }\n\n public peek(): T {\n return this.pq.peek();\n }\n\n public getTopElements(): T[] {\n const elements: T[] = [];\n while (!this.pq.isEmpty()) {\n elements.unshift(this.pq.deq());\n }\n return elements;\n }\n\n // Create a new instance of FixedSizePriorityQueue with a reversed compare function and the same maximum size.\n // Enqueue all elements from the current priority queue into the reverse priority queue.\n public reverse(): FixedSizePriorityQueue<T> {\n const reversePQ = new FixedSizePriorityQueue<T>(\n (a: T, b: T) => -this.compareFn(a, b),\n this.pqMaxSize,\n );\n while (!this.pq.isEmpty()) {\n reversePQ.enqueue(this.pq.deq());\n }\n return reversePQ;\n }\n}\n"]}
1
+ {"version":3,"file":"fixedSizePriorityQueue.js","sourceRoot":"","sources":["../../../src/utils/fixedSizePriorityQueue.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAO,sBAAsB;IACzB,EAAE,CAAmB;IAC7B,gJAAgJ;IACxI,SAAS,CAAyB;IAClC,SAAS,CAAS;IAE1B,YAAY,SAAiC,EAAE,SAAiB;QAC9D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,EAAE,GAAG,IAAI,aAAa,CAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,OAAO,CAAC,IAAO;QACpB,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAEM,cAAc;QACnB,MAAM,QAAQ,GAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8GAA8G;IAC9G,wFAAwF;IACjF,OAAO;QACZ,MAAM,SAAS,GAAG,IAAI,sBAAsB,CAC1C,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACrC,IAAI,CAAC,SAAS,CACf,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport PriorityQueue from \"priorityqueuejs\";\n\nexport class FixedSizePriorityQueue<T> {\n private pq: PriorityQueue<T>;\n // The compare function should return a positive number if a is greater than b, a negative number if a is less than b, and 0 if a is equal to b.\n private compareFn: (a: T, b: T) => number;\n private pqMaxSize: number;\n\n constructor(compareFn: (a: T, b: T) => number, pqMaxSize: number) {\n this.compareFn = compareFn;\n this.pq = new PriorityQueue<T>(this.compareFn);\n this.pqMaxSize = pqMaxSize;\n }\n\n public enqueue(item: T): void {\n if (this.pq.size() < this.pqMaxSize) {\n this.pq.enq(item);\n } else {\n const topItem = this.pq.peek();\n if (this.compareFn(topItem, item) > 0) {\n this.pq.deq();\n this.pq.enq(item);\n }\n }\n }\n\n public dequeue(): T {\n return this.pq.deq();\n }\n\n public size(): number {\n return this.pq.size();\n }\n\n public isEmpty(): boolean {\n return this.pq.isEmpty();\n }\n\n public peek(): T {\n return this.pq.peek();\n }\n\n public getTopElements(): T[] {\n const elements: T[] = [];\n while (!this.pq.isEmpty()) {\n elements.unshift(this.pq.deq());\n }\n return elements;\n }\n\n // Create a new instance of FixedSizePriorityQueue with a reversed compare function and the same maximum size.\n // Enqueue all elements from the current priority queue into the reverse priority queue.\n public reverse(): FixedSizePriorityQueue<T> {\n const reversePQ = new FixedSizePriorityQueue<T>(\n (a: T, b: T) => -this.compareFn(a, b),\n this.pqMaxSize,\n );\n while (!this.pq.isEmpty()) {\n reversePQ.enqueue(this.pq.deq());\n }\n return reversePQ;\n }\n}\n"]}
@@ -12,7 +12,7 @@ import { hashV2PartitionKey } from "./v2.js";
12
12
  * @returns
13
13
  */
14
14
  export function hashPartitionKey(partitionKey, partitionDefinition) {
15
- const kind = (partitionDefinition === null || partitionDefinition === void 0 ? void 0 : partitionDefinition.kind) || PartitionKeyKind.Hash; // Default value.
15
+ const kind = partitionDefinition?.kind || PartitionKeyKind.Hash; // Default value.
16
16
  const isV2 = partitionDefinition &&
17
17
  partitionDefinition.version &&
18
18
  partitionDefinition.version === PartitionKeyDefinitionVersion.V2;
@@ -1 +1 @@
1
- {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../../src/utils/hashing/hash.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,YAA0C,EAC1C,mBAA2C;IAE3C,MAAM,IAAI,GAAqB,CAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,IAAI,KAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,iBAAiB;IACpG,MAAM,IAAI,GACR,mBAAmB;QACnB,mBAAmB,CAAC,OAAO;QAC3B,mBAAmB,CAAC,OAAO,KAAK,6BAA6B,CAAC,EAAE,CAAC;IACnE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,gBAAgB,CAAC,IAAI;YACxB,OAAO,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACpF,KAAK,gBAAgB,CAAC,SAAS;YAC7B,OAAO,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,kBAAuC,EACvC,kBAA0B;IAE1B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;IAEzC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAC7E,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,CAAC;aAAM,IAAI,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACpE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { PartitionKeyRange } from \"../../client/index.js\";\nimport type { PartitionKeyDefinition, PrimitivePartitionKeyValue } from \"../../documents/index.js\";\nimport { PartitionKeyDefinitionVersion, PartitionKeyKind } from \"../../documents/index.js\";\nimport { isKeyInRange } from \"../batch.js\";\nimport { hashMultiHashPartitionKey } from \"./multiHash.js\";\nimport { hashV1PartitionKey } from \"./v1.js\";\nimport { hashV2PartitionKey } from \"./v2.js\";\n\n/**\n * Generate hash of a PartitonKey based on it PartitionKeyDefinition.\n * @param partitionKey - to be hashed.\n * @param partitionDefinition - container's partitionKey definition\n * @returns\n */\nexport function hashPartitionKey(\n partitionKey: PrimitivePartitionKeyValue[],\n partitionDefinition: PartitionKeyDefinition,\n): string {\n const kind: PartitionKeyKind = partitionDefinition?.kind || PartitionKeyKind.Hash; // Default value.\n const isV2 =\n partitionDefinition &&\n partitionDefinition.version &&\n partitionDefinition.version === PartitionKeyDefinitionVersion.V2;\n switch (kind) {\n case PartitionKeyKind.Hash:\n return isV2 ? hashV2PartitionKey(partitionKey) : hashV1PartitionKey(partitionKey);\n case PartitionKeyKind.MultiHash:\n return hashMultiHashPartitionKey(partitionKey);\n }\n}\n\nexport function binarySearchOnPartitionKeyRanges(\n partitionKeyRanges: PartitionKeyRange[],\n hashedPartitionKey: string,\n): string | undefined {\n let low = 0;\n let high = partitionKeyRanges.length - 1;\n\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const range = partitionKeyRanges[mid];\n\n if (isKeyInRange(range.minInclusive, range.maxExclusive, hashedPartitionKey)) {\n return range.id;\n } else if (hashedPartitionKey.localeCompare(range.minInclusive) < 0) {\n high = mid - 1;\n } else {\n low = mid + 1;\n }\n }\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../../src/utils/hashing/hash.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,YAA0C,EAC1C,mBAA2C;IAE3C,MAAM,IAAI,GAAqB,mBAAmB,EAAE,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,iBAAiB;IACpG,MAAM,IAAI,GACR,mBAAmB;QACnB,mBAAmB,CAAC,OAAO;QAC3B,mBAAmB,CAAC,OAAO,KAAK,6BAA6B,CAAC,EAAE,CAAC;IACnE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,gBAAgB,CAAC,IAAI;YACxB,OAAO,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACpF,KAAK,gBAAgB,CAAC,SAAS;YAC7B,OAAO,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,kBAAuC,EACvC,kBAA0B;IAE1B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;IAEzC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAC7E,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,CAAC;aAAM,IAAI,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACpE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { PartitionKeyRange } from \"../../client/index.js\";\nimport type { PartitionKeyDefinition, PrimitivePartitionKeyValue } from \"../../documents/index.js\";\nimport { PartitionKeyDefinitionVersion, PartitionKeyKind } from \"../../documents/index.js\";\nimport { isKeyInRange } from \"../batch.js\";\nimport { hashMultiHashPartitionKey } from \"./multiHash.js\";\nimport { hashV1PartitionKey } from \"./v1.js\";\nimport { hashV2PartitionKey } from \"./v2.js\";\n\n/**\n * Generate hash of a PartitonKey based on it PartitionKeyDefinition.\n * @param partitionKey - to be hashed.\n * @param partitionDefinition - container's partitionKey definition\n * @returns\n */\nexport function hashPartitionKey(\n partitionKey: PrimitivePartitionKeyValue[],\n partitionDefinition: PartitionKeyDefinition,\n): string {\n const kind: PartitionKeyKind = partitionDefinition?.kind || PartitionKeyKind.Hash; // Default value.\n const isV2 =\n partitionDefinition &&\n partitionDefinition.version &&\n partitionDefinition.version === PartitionKeyDefinitionVersion.V2;\n switch (kind) {\n case PartitionKeyKind.Hash:\n return isV2 ? hashV2PartitionKey(partitionKey) : hashV1PartitionKey(partitionKey);\n case PartitionKeyKind.MultiHash:\n return hashMultiHashPartitionKey(partitionKey);\n }\n}\n\nexport function binarySearchOnPartitionKeyRanges(\n partitionKeyRanges: PartitionKeyRange[],\n hashedPartitionKey: string,\n): string | undefined {\n let low = 0;\n let high = partitionKeyRanges.length - 1;\n\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const range = partitionKeyRanges[mid];\n\n if (isKeyInRange(range.minInclusive, range.maxExclusive, hashedPartitionKey)) {\n return range.id;\n } else if (hashedPartitionKey.localeCompare(range.minInclusive) < 0) {\n high = mid - 1;\n } else {\n low = mid + 1;\n }\n }\n return undefined;\n}\n"]}
@@ -4,6 +4,8 @@
4
4
  * Stores the most favourable distinct result from a set of nonStreamingOrderBy results.
5
5
  */
6
6
  export class NonStreamingOrderByMap {
7
+ map;
8
+ compareFn;
7
9
  constructor(compareFn) {
8
10
  this.compareFn = compareFn;
9
11
  this.map = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"nonStreamingOrderByMap.js","sourceRoot":"","sources":["../../../src/utils/nonStreamingOrderByMap.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAIjC,YAAY,SAAyD;QACnE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAAa,CAAC;IAClC,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,KAAQ;QAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,gDAAgD;YAChD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,oIAAoI;YACpI,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAEzC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD;;OAEG;IACI,oBAAoB;QACzB,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,cAAc,CAAC,IAAmB,EAAE,IAAmB;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAEzB,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Stores the most favourable distinct result from a set of nonStreamingOrderBy results.\n */\nexport class NonStreamingOrderByMap<T> {\n private map: Map<string, T>;\n private compareFn: (a: T | undefined, b: T | undefined) => number;\n\n constructor(compareFn: (a: T | undefined, b: T | undefined) => number) {\n this.compareFn = compareFn;\n this.map = new Map<string, T>();\n }\n\n public set(key: string, value: T): void {\n if (!this.map.has(key)) {\n // If the key is not present in the map, add it.\n this.map.set(key, value);\n } else {\n // If the key is present in the map, compare the similarity score of the new value with the old value. Keep the more favourable one.\n const oldValue = this.map.get(key);\n if (this.replaceResults(oldValue, value)) {\n this.map.set(key, value);\n }\n }\n }\n\n public get(key: string): T | undefined {\n if (!this.map.has(key)) return undefined;\n\n return this.map.get(key);\n }\n /**\n * Returns all the values in the map and resets the map.\n */\n public getAllValuesAndReset(): T[] {\n const res: T[] = [];\n for (const [key, value] of this.map) {\n res.push(value);\n this.map.delete(key);\n }\n return res;\n }\n\n private replaceResults(res1: T | undefined, res2: T | undefined): boolean {\n const res = this.compareFn(res1, res2);\n if (res < 0) return true;\n\n return false;\n }\n\n public size(): number {\n return this.map.size;\n }\n}\n"]}
1
+ {"version":3,"file":"nonStreamingOrderByMap.js","sourceRoot":"","sources":["../../../src/utils/nonStreamingOrderByMap.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACzB,GAAG,CAAiB;IACpB,SAAS,CAAiD;IAElE,YAAY,SAAyD;QACnE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAAa,CAAC;IAClC,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,KAAQ;QAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,gDAAgD;YAChD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,oIAAoI;YACpI,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAEzC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD;;OAEG;IACI,oBAAoB;QACzB,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,cAAc,CAAC,IAAmB,EAAE,IAAmB;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAEzB,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Stores the most favourable distinct result from a set of nonStreamingOrderBy results.\n */\nexport class NonStreamingOrderByMap<T> {\n private map: Map<string, T>;\n private compareFn: (a: T | undefined, b: T | undefined) => number;\n\n constructor(compareFn: (a: T | undefined, b: T | undefined) => number) {\n this.compareFn = compareFn;\n this.map = new Map<string, T>();\n }\n\n public set(key: string, value: T): void {\n if (!this.map.has(key)) {\n // If the key is not present in the map, add it.\n this.map.set(key, value);\n } else {\n // If the key is present in the map, compare the similarity score of the new value with the old value. Keep the more favourable one.\n const oldValue = this.map.get(key);\n if (this.replaceResults(oldValue, value)) {\n this.map.set(key, value);\n }\n }\n }\n\n public get(key: string): T | undefined {\n if (!this.map.has(key)) return undefined;\n\n return this.map.get(key);\n }\n /**\n * Returns all the values in the map and resets the map.\n */\n public getAllValuesAndReset(): T[] {\n const res: T[] = [];\n for (const [key, value] of this.map) {\n res.push(value);\n this.map.delete(key);\n }\n return res;\n }\n\n private replaceResults(res1: T | undefined, res2: T | undefined): boolean {\n const res = this.compareFn(res1, res2);\n if (res < 0) return true;\n\n return false;\n }\n\n public size(): number {\n return this.map.size;\n }\n}\n"]}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ChangeFeedIterator = void 0;
4
- const tslib_1 = require("tslib");
5
4
  const ChangeFeedResponse_js_1 = require("./ChangeFeedResponse.js");
6
5
  const index_js_1 = require("./common/index.js");
7
6
  const diagnostics_js_1 = require("./utils/diagnostics.js");
@@ -11,6 +10,16 @@ const diagnostics_js_1 = require("./utils/diagnostics.js");
11
10
  * Use `Items.changeFeed()` to get an instance of the iterator.
12
11
  */
13
12
  class ChangeFeedIterator {
13
+ clientContext;
14
+ resourceId;
15
+ resourceLink;
16
+ partitionKey;
17
+ changeFeedOptions;
18
+ static IfNoneMatchAllHeaderValue = "*";
19
+ nextIfNoneMatch;
20
+ ifModifiedSince;
21
+ lastStatusCode;
22
+ isPartitionSpecified;
14
23
  /**
15
24
  * @internal
16
25
  */
@@ -52,15 +61,13 @@ class ChangeFeedIterator {
52
61
  /**
53
62
  * Gets an async iterator which will yield pages of results from Azure Cosmos DB.
54
63
  */
55
- getAsyncIterator() {
56
- return tslib_1.__asyncGenerator(this, arguments, function* getAsyncIterator_1() {
57
- do {
58
- const result = yield tslib_1.__await(this.fetchNext());
59
- if (result.count > 0) {
60
- yield yield tslib_1.__await(result);
61
- }
62
- } while (this.hasMoreResults);
63
- });
64
+ async *getAsyncIterator() {
65
+ do {
66
+ const result = await this.fetchNext();
67
+ if (result.count > 0) {
68
+ yield result;
69
+ }
70
+ } while (this.hasMoreResults);
64
71
  }
65
72
  /**
66
73
  * Read feed and retrieves the next page of results in Azure Cosmos DB.
@@ -107,5 +114,4 @@ class ChangeFeedIterator {
107
114
  }
108
115
  }
109
116
  exports.ChangeFeedIterator = ChangeFeedIterator;
110
- ChangeFeedIterator.IfNoneMatchAllHeaderValue = "*";
111
117
  //# sourceMappingURL=ChangeFeedIterator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChangeFeedIterator.js","sourceRoot":"","sources":["../../src/ChangeFeedIterator.ts"],"names":[],"mappings":";;;;AAIA,mEAA6D;AAG7D,gDAAyE;AAKzE,2DAAoF;AAEpF;;;;GAIG;AACH,MAAa,kBAAkB;IAO7B;;OAEG;IACH,YACU,aAA4B,EAC5B,UAAkB,EAClB,YAAoB,EACpB,YAA0B,EAC1B,iBAAoC;QAJpC,kBAAa,GAAb,aAAa,CAAe;QAC5B,eAAU,GAAV,UAAU,CAAQ;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,sBAAiB,GAAjB,iBAAiB,CAAmB;QAE5C,2CAA2C;QAC3C,MAAM,iBAAiB,GAAG,YAAY,KAAK,SAAS,CAAC;QACrD,IAAI,CAAC,oBAAoB,GAAG,iBAAiB,CAAC;QAE9C,IAAI,wBAAwB,GAAG,IAAI,CAAC;QACpC,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAC;YACtD,wBAAwB,GAAG,KAAK,CAAC;QACnC,CAAC;QAED,IAAI,iBAAiB,CAAC,SAAS,EAAE,CAAC;YAChC,wEAAwE;YACxE,yDAAyD;YACzD,uHAAuH;YACvH,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YACjE,wBAAwB,GAAG,KAAK,CAAC;QACnC,CAAC;QAED,IAAI,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC;YACtE,IAAI,CAAC,eAAe,GAAG,kBAAkB,CAAC,yBAAyB,CAAC;QACtE,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,KAAK,sBAAW,CAAC,WAAW,CAAC;IACzD,CAAC;IAED;;OAEG;IACW,gBAAgB;;YAC5B,GAAG,CAAC;gBACF,MAAM,MAAM,GAAG,sBAAM,IAAI,CAAC,SAAS,EAAE,CAAA,CAAC;gBACtC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;oBACrB,4BAAM,MAAM,CAAA,CAAC;gBACf,CAAC;YACH,CAAC,QAAQ,IAAI,CAAC,cAAc,EAAE;QAChC,CAAC;KAAA;IAED;;OAEG;IACI,KAAK,CAAC,SAAS;QACpB,OAAO,IAAA,gCAAe,EAAC,KAAK,EAAE,cAAsC,EAAE,EAAE;YACtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAC5D,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC;YAC1C,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,oBAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACpE,OAAO,QAAQ,CAAC;QAClB,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,cAAsC;QAEtC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAgB,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;QAElF,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC5D,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;QACjE,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;YACxC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;QACjE,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,WAAW,CAAC,eAAe,GAAG;gBAC5B,IAAI,EAAE,oBAAS,CAAC,WAAW,CAAC,WAAW;gBACvC,SAAS,EAAE,IAAI,CAAC,eAAe;aAChC,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,WAAW,CAAC,cAAc,CAAC,oBAAS,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;QAC3F,CAAC;QAED,MAAM,QAAQ,GAAkC,MAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAI;YACrF,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,YAAY,EAAE,uBAAY,CAAC,IAAI;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,WAAW;YACpB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,cAAc;SAC/B,CAAkB,CAAC,CAAC,0EAA0E;QAE/F,OAAO,IAAI,0CAAkB,CAC3B,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC5C,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,OAAO,EAChB,IAAA,0CAAyB,GAAE,CAC5B,CAAC;IACJ,CAAC;;AA1HH,gDA2HC;AA1HyB,4CAAyB,GAAG,GAAG,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/// <reference lib=\"esnext.asynciterable\" />\nimport type { ChangeFeedOptions } from \"./ChangeFeedOptions.js\";\nimport { ChangeFeedResponse } from \"./ChangeFeedResponse.js\";\nimport type { Resource } from \"./client/index.js\";\nimport type { ClientContext } from \"./ClientContext.js\";\nimport { Constants, ResourceType, StatusCodes } from \"./common/index.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport type { PartitionKey } from \"./documents/index.js\";\nimport type { FeedOptions } from \"./request/index.js\";\nimport type { Response } from \"./request/index.js\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"./utils/diagnostics.js\";\n\n/**\n * Provides iterator for change feed.\n *\n * Use `Items.changeFeed()` to get an instance of the iterator.\n */\nexport class ChangeFeedIterator<T> {\n private static readonly IfNoneMatchAllHeaderValue = \"*\";\n private nextIfNoneMatch: string;\n private ifModifiedSince: string;\n private lastStatusCode: number;\n private isPartitionSpecified: boolean;\n\n /**\n * @internal\n */\n constructor(\n private clientContext: ClientContext,\n private resourceId: string,\n private resourceLink: string,\n private partitionKey: PartitionKey,\n private changeFeedOptions: ChangeFeedOptions,\n ) {\n // partition key XOR partition key range id\n const partitionKeyValid = partitionKey !== undefined;\n this.isPartitionSpecified = partitionKeyValid;\n\n let canUseStartFromBeginning = true;\n if (changeFeedOptions.continuation) {\n this.nextIfNoneMatch = changeFeedOptions.continuation;\n canUseStartFromBeginning = false;\n }\n\n if (changeFeedOptions.startTime) {\n // .toUTCString() is platform specific, but most platforms use RFC 1123.\n // In ECMAScript 2018, this was standardized to RFC 1123.\n // See for more info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString\n this.ifModifiedSince = changeFeedOptions.startTime.toUTCString();\n canUseStartFromBeginning = false;\n }\n\n if (canUseStartFromBeginning && !changeFeedOptions.startFromBeginning) {\n this.nextIfNoneMatch = ChangeFeedIterator.IfNoneMatchAllHeaderValue;\n }\n }\n\n /**\n * Gets a value indicating whether there are potentially additional results that can be retrieved.\n *\n * Initially returns true. This value is set based on whether the last execution returned a continuation token.\n *\n * @returns Boolean value representing if whether there are potentially additional results that can be retrieved.\n */\n get hasMoreResults(): boolean {\n return this.lastStatusCode !== StatusCodes.NotModified;\n }\n\n /**\n * Gets an async iterator which will yield pages of results from Azure Cosmos DB.\n */\n public async *getAsyncIterator(): AsyncIterable<ChangeFeedResponse<Array<T & Resource>>> {\n do {\n const result = await this.fetchNext();\n if (result.count > 0) {\n yield result;\n }\n } while (this.hasMoreResults);\n }\n\n /**\n * Read feed and retrieves the next page of results in Azure Cosmos DB.\n */\n public async fetchNext(): Promise<ChangeFeedResponse<Array<T & Resource>>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const response = await this.getFeedResponse(diagnosticNode);\n this.lastStatusCode = response.statusCode;\n this.nextIfNoneMatch = response.headers[Constants.HttpHeaders.ETag];\n return response;\n }, this.clientContext);\n }\n\n private async getFeedResponse(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<ChangeFeedResponse<Array<T & Resource>>> {\n if (!this.isPartitionSpecified) {\n throw new Error(\n \"Container is partitioned, but no partition key or partition key range id was specified.\",\n );\n }\n const feedOptions: FeedOptions = { initialHeaders: {}, useIncrementalFeed: true };\n\n if (typeof this.changeFeedOptions.maxItemCount === \"number\") {\n feedOptions.maxItemCount = this.changeFeedOptions.maxItemCount;\n }\n\n if (this.changeFeedOptions.sessionToken) {\n feedOptions.sessionToken = this.changeFeedOptions.sessionToken;\n }\n\n if (this.nextIfNoneMatch) {\n feedOptions.accessCondition = {\n type: Constants.HttpHeaders.IfNoneMatch,\n condition: this.nextIfNoneMatch,\n };\n }\n\n if (this.ifModifiedSince) {\n feedOptions.initialHeaders[Constants.HttpHeaders.IfModifiedSince] = this.ifModifiedSince;\n }\n\n const response: Response<Array<T & Resource>> = await (this.clientContext.queryFeed<T>({\n path: this.resourceLink,\n resourceType: ResourceType.item,\n resourceId: this.resourceId,\n resultFn: (result) => (result ? result.Documents : []),\n query: undefined,\n options: feedOptions,\n partitionKey: this.partitionKey,\n diagnosticNode: diagnosticNode,\n }) as Promise<any>); // TODO: some funky issues with query feed. Probably need to change it up.\n\n return new ChangeFeedResponse(\n response.result,\n response.result ? response.result.length : 0,\n response.code,\n response.headers,\n getEmptyCosmosDiagnostics(),\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ChangeFeedIterator.js","sourceRoot":"","sources":["../../src/ChangeFeedIterator.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/// <reference lib=\"esnext.asynciterable\" />\nimport type { ChangeFeedOptions } from \"./ChangeFeedOptions.js\";\nimport { ChangeFeedResponse } from \"./ChangeFeedResponse.js\";\nimport type { Resource } from \"./client/index.js\";\nimport type { ClientContext } from \"./ClientContext.js\";\nimport { Constants, ResourceType, StatusCodes } from \"./common/index.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport type { PartitionKey } from \"./documents/index.js\";\nimport type { FeedOptions } from \"./request/index.js\";\nimport type { Response } from \"./request/index.js\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"./utils/diagnostics.js\";\n\n/**\n * Provides iterator for change feed.\n *\n * Use `Items.changeFeed()` to get an instance of the iterator.\n */\nexport class ChangeFeedIterator<T> {\n private static readonly IfNoneMatchAllHeaderValue = \"*\";\n private nextIfNoneMatch: string;\n private ifModifiedSince: string;\n private lastStatusCode: number;\n private isPartitionSpecified: boolean;\n\n /**\n * @internal\n */\n constructor(\n private clientContext: ClientContext,\n private resourceId: string,\n private resourceLink: string,\n private partitionKey: PartitionKey,\n private changeFeedOptions: ChangeFeedOptions,\n ) {\n // partition key XOR partition key range id\n const partitionKeyValid = partitionKey !== undefined;\n this.isPartitionSpecified = partitionKeyValid;\n\n let canUseStartFromBeginning = true;\n if (changeFeedOptions.continuation) {\n this.nextIfNoneMatch = changeFeedOptions.continuation;\n canUseStartFromBeginning = false;\n }\n\n if (changeFeedOptions.startTime) {\n // .toUTCString() is platform specific, but most platforms use RFC 1123.\n // In ECMAScript 2018, this was standardized to RFC 1123.\n // See for more info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString\n this.ifModifiedSince = changeFeedOptions.startTime.toUTCString();\n canUseStartFromBeginning = false;\n }\n\n if (canUseStartFromBeginning && !changeFeedOptions.startFromBeginning) {\n this.nextIfNoneMatch = ChangeFeedIterator.IfNoneMatchAllHeaderValue;\n }\n }\n\n /**\n * Gets a value indicating whether there are potentially additional results that can be retrieved.\n *\n * Initially returns true. This value is set based on whether the last execution returned a continuation token.\n *\n * @returns Boolean value representing if whether there are potentially additional results that can be retrieved.\n */\n get hasMoreResults(): boolean {\n return this.lastStatusCode !== StatusCodes.NotModified;\n }\n\n /**\n * Gets an async iterator which will yield pages of results from Azure Cosmos DB.\n */\n public async *getAsyncIterator(): AsyncIterable<ChangeFeedResponse<Array<T & Resource>>> {\n do {\n const result = await this.fetchNext();\n if (result.count > 0) {\n yield result;\n }\n } while (this.hasMoreResults);\n }\n\n /**\n * Read feed and retrieves the next page of results in Azure Cosmos DB.\n */\n public async fetchNext(): Promise<ChangeFeedResponse<Array<T & Resource>>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const response = await this.getFeedResponse(diagnosticNode);\n this.lastStatusCode = response.statusCode;\n this.nextIfNoneMatch = response.headers[Constants.HttpHeaders.ETag];\n return response;\n }, this.clientContext);\n }\n\n private async getFeedResponse(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<ChangeFeedResponse<Array<T & Resource>>> {\n if (!this.isPartitionSpecified) {\n throw new Error(\n \"Container is partitioned, but no partition key or partition key range id was specified.\",\n );\n }\n const feedOptions: FeedOptions = { initialHeaders: {}, useIncrementalFeed: true };\n\n if (typeof this.changeFeedOptions.maxItemCount === \"number\") {\n feedOptions.maxItemCount = this.changeFeedOptions.maxItemCount;\n }\n\n if (this.changeFeedOptions.sessionToken) {\n feedOptions.sessionToken = this.changeFeedOptions.sessionToken;\n }\n\n if (this.nextIfNoneMatch) {\n feedOptions.accessCondition = {\n type: Constants.HttpHeaders.IfNoneMatch,\n condition: this.nextIfNoneMatch,\n };\n }\n\n if (this.ifModifiedSince) {\n feedOptions.initialHeaders[Constants.HttpHeaders.IfModifiedSince] = this.ifModifiedSince;\n }\n\n const response: Response<Array<T & Resource>> = await (this.clientContext.queryFeed<T>({\n path: this.resourceLink,\n resourceType: ResourceType.item,\n resourceId: this.resourceId,\n resultFn: (result) => (result ? result.Documents : []),\n query: undefined,\n options: feedOptions,\n partitionKey: this.partitionKey,\n diagnosticNode: diagnosticNode,\n }) as Promise<any>); // TODO: some funky issues with query feed. Probably need to change it up.\n\n return new ChangeFeedResponse(\n response.result,\n response.result ? response.result.length : 0,\n response.code,\n response.headers,\n getEmptyCosmosDiagnostics(),\n );\n }\n}\n"]}
@@ -6,6 +6,10 @@ const index_js_1 = require("./common/index.js");
6
6
  * A single response page from the Azure Cosmos DB Change Feed
7
7
  */
8
8
  class ChangeFeedResponse {
9
+ result;
10
+ count;
11
+ statusCode;
12
+ diagnostics;
9
13
  /**
10
14
  * @internal
11
15
  */
@@ -67,6 +71,10 @@ class ChangeFeedResponse {
67
71
  get etag() {
68
72
  return this.headers[index_js_1.Constants.HttpHeaders.ETag];
69
73
  }
74
+ /**
75
+ * Response headers of the response from Azure Cosmos DB
76
+ */
77
+ headers;
70
78
  }
71
79
  exports.ChangeFeedResponse = ChangeFeedResponse;
72
80
  //# sourceMappingURL=ChangeFeedResponse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChangeFeedResponse.js","sourceRoot":"","sources":["../../src/ChangeFeedResponse.ts"],"names":[],"mappings":";;;AAGA,gDAA8C;AAG9C;;GAEG;AACH,MAAa,kBAAkB;IAC7B;;OAEG;IACH;IACE;;OAEG;IACa,MAAS;IACzB;;OAEG;IACa,KAAa;IAC7B;;OAEG;IACa,UAAkB,EAClC,OAAsB,EACN,WAA8B;QAV9B,WAAM,GAAN,MAAM,CAAG;QAIT,UAAK,GAAL,KAAK,CAAQ;QAIb,eAAU,GAAV,UAAU,CAAQ;QAElB,gBAAW,GAAX,WAAW,CAAmB;QAE9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAW,aAAa;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAC9D,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;OAQG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;CAMF;AAvED,gDAuEC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"./CosmosDiagnostics.js\";\nimport { Constants } from \"./common/index.js\";\nimport type { CosmosHeaders } from \"./queryExecutionContext/index.js\";\n\n/**\n * A single response page from the Azure Cosmos DB Change Feed\n */\nexport class ChangeFeedResponse<T> {\n /**\n * @internal\n */\n constructor(\n /**\n * Gets the items returned in the response from Azure Cosmos DB\n */\n public readonly result: T,\n /**\n * Gets the number of items returned in the response from Azure Cosmos DB\n */\n public readonly count: number,\n /**\n * Gets the status code of the response from Azure Cosmos DB\n */\n public readonly statusCode: number,\n headers: CosmosHeaders,\n public readonly diagnostics: CosmosDiagnostics,\n ) {\n this.headers = Object.freeze(headers);\n }\n\n /**\n * Gets the request charge for this request from the Azure Cosmos DB service.\n */\n public get requestCharge(): number {\n const rus = this.headers[Constants.HttpHeaders.RequestCharge];\n return rus ? parseInt(rus, 10) : null;\n }\n\n /**\n * Gets the activity ID for the request from the Azure Cosmos DB service.\n */\n public get activityId(): string {\n return this.headers[Constants.HttpHeaders.ActivityId];\n }\n\n /**\n * Gets the continuation token to be used for continuing enumeration of the Azure Cosmos DB service.\n *\n * This is equivalent to the `etag` property.\n */\n public get continuation(): string {\n return this.etag;\n }\n\n /**\n * Gets the session token for use in session consistency reads from the Azure Cosmos DB service.\n */\n public get sessionToken(): string {\n return this.headers[Constants.HttpHeaders.SessionToken];\n }\n\n /**\n * Gets the entity tag associated with last transaction in the Azure Cosmos DB service,\n * which can be used as If-Non-Match Access condition for ReadFeed REST request or\n * `continuation` property of `ChangeFeedOptions` parameter for\n * `Items.changeFeed()`\n * to get feed changes since the transaction specified by this entity tag.\n *\n * This is equivalent to the `continuation` property.\n */\n public get etag(): string {\n return this.headers[Constants.HttpHeaders.ETag];\n }\n\n /**\n * Response headers of the response from Azure Cosmos DB\n */\n public headers: CosmosHeaders;\n}\n"]}
1
+ {"version":3,"file":"ChangeFeedResponse.js","sourceRoot":"","sources":["../../src/ChangeFeedResponse.ts"],"names":[],"mappings":";;;AAGA,gDAA8C;AAG9C;;GAEG;AACH,MAAa,kBAAkB;IAQX;IAIA;IAIA;IAEA;IAjBlB;;OAEG;IACH;IACE;;OAEG;IACa,MAAS;IACzB;;OAEG;IACa,KAAa;IAC7B;;OAEG;IACa,UAAkB,EAClC,OAAsB,EACN,WAA8B;QAV9B,WAAM,GAAN,MAAM,CAAG;QAIT,UAAK,GAAL,KAAK,CAAQ;QAIb,eAAU,GAAV,UAAU,CAAQ;QAElB,gBAAW,GAAX,WAAW,CAAmB;QAE9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAW,aAAa;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAC9D,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;OAQG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACI,OAAO,CAAgB;CAC/B;AAvED,gDAuEC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"./CosmosDiagnostics.js\";\nimport { Constants } from \"./common/index.js\";\nimport type { CosmosHeaders } from \"./queryExecutionContext/index.js\";\n\n/**\n * A single response page from the Azure Cosmos DB Change Feed\n */\nexport class ChangeFeedResponse<T> {\n /**\n * @internal\n */\n constructor(\n /**\n * Gets the items returned in the response from Azure Cosmos DB\n */\n public readonly result: T,\n /**\n * Gets the number of items returned in the response from Azure Cosmos DB\n */\n public readonly count: number,\n /**\n * Gets the status code of the response from Azure Cosmos DB\n */\n public readonly statusCode: number,\n headers: CosmosHeaders,\n public readonly diagnostics: CosmosDiagnostics,\n ) {\n this.headers = Object.freeze(headers);\n }\n\n /**\n * Gets the request charge for this request from the Azure Cosmos DB service.\n */\n public get requestCharge(): number {\n const rus = this.headers[Constants.HttpHeaders.RequestCharge];\n return rus ? parseInt(rus, 10) : null;\n }\n\n /**\n * Gets the activity ID for the request from the Azure Cosmos DB service.\n */\n public get activityId(): string {\n return this.headers[Constants.HttpHeaders.ActivityId];\n }\n\n /**\n * Gets the continuation token to be used for continuing enumeration of the Azure Cosmos DB service.\n *\n * This is equivalent to the `etag` property.\n */\n public get continuation(): string {\n return this.etag;\n }\n\n /**\n * Gets the session token for use in session consistency reads from the Azure Cosmos DB service.\n */\n public get sessionToken(): string {\n return this.headers[Constants.HttpHeaders.SessionToken];\n }\n\n /**\n * Gets the entity tag associated with last transaction in the Azure Cosmos DB service,\n * which can be used as If-Non-Match Access condition for ReadFeed REST request or\n * `continuation` property of `ChangeFeedOptions` parameter for\n * `Items.changeFeed()`\n * to get feed changes since the transaction specified by this entity tag.\n *\n * This is equivalent to the `continuation` property.\n */\n public get etag(): string {\n return this.headers[Constants.HttpHeaders.ETag];\n }\n\n /**\n * Response headers of the response from Azure Cosmos DB\n */\n public headers: CosmosHeaders;\n}\n"]}