@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":"EncryptionProcessor.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionSettings } from \"./EncryptionSettings.js\";\nimport type { EncryptionSettingForProperty } from \"./EncryptionSettingForProperty.js\";\nimport type { AeadAes256CbcHmacSha256Algorithm } from \"./AeadAes256CbcHmacSha256Algorithm/index.js\";\nimport type { ContainerDefinition, Database, ItemDefinition } from \"../client/index.js\";\nimport type { PartitionKeyInternal } from \"../documents/index.js\";\nimport type { TypeMarker } from \"./enums/TypeMarker.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport type { ClientEncryptionKeyRequest } from \"./ClientEncryptionKey/index.js\";\nimport type { ClientEncryptionKeyProperties } from \"./ClientEncryptionKey/index.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport {\n Constants,\n ResourceType,\n StatusCodes,\n createDeserializer,\n createSerializer,\n extractPath,\n} from \"../common/index.js\";\nimport type { RequestOptions } from \"../request/index.js\";\nimport { ErrorResponse } from \"../request/index.js\";\nimport { withDiagnostics } from \"../utils/diagnostics.js\";\nimport type { EncryptionManager } from \"./EncryptionManager.js\";\nimport type { JSONValue } from \"../queryExecutionContext/index.js\";\n\nexport class EncryptionProcessor {\n constructor(\n private readonly containerId: string,\n public containerRid: string,\n private readonly database: Database,\n private readonly clientContext: ClientContext,\n private encryptionManager: EncryptionManager,\n ) {}\n\n async encrypt<T extends ItemDefinition>(\n body: T,\n ): Promise<{ body: T; propertiesEncryptedCount: number }> {\n if (!body) {\n throw new ErrorResponse(\"Input body is null or undefined.\");\n }\n let propertiesEncryptedCount = 0;\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return { body, propertiesEncryptedCount };\n for (const pathToEncrypt of encryptionSettings.pathsToEncrypt) {\n const propertyName = pathToEncrypt.slice(1);\n if (!Object.prototype.hasOwnProperty.call(body, propertyName)) {\n continue;\n }\n\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(pathToEncrypt);\n if (!settingForProperty) {\n throw new ErrorResponse(\"Invalid Encryption Setting for the Property: \" + propertyName);\n }\n body[propertyName as keyof T] = await this.encryptToken(\n body[propertyName],\n settingForProperty,\n propertyName === \"id\",\n );\n propertiesEncryptedCount++;\n }\n return { body, propertiesEncryptedCount };\n }\n\n async isPathEncrypted(path: string): Promise<boolean> {\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) return false;\n return true;\n }\n\n async encryptProperty(path: string, value: JSONValue): Promise<any> {\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return value;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) {\n return value;\n }\n\n value = await this.encryptToken(value, settingForProperty, path === \"/id\");\n return value;\n }\n\n async getEncryptedPartitionKeyValue(\n partitionKeyList: PartitionKeyInternal,\n ): Promise<{ partitionKeyList: PartitionKeyInternal; encryptedCount: number }> {\n const encryptionSettings = await this.getEncryptionSetting();\n let encryptedCount = 0;\n if (!encryptionSettings) return { partitionKeyList, encryptedCount };\n const partitionKeyPaths = encryptionSettings.partitionKeyPaths;\n for (let i = 0; i < partitionKeyPaths.length; i++) {\n const partitionKeyPath = extractPath(partitionKeyPaths[i]);\n if (encryptionSettings.pathsToEncrypt.includes(partitionKeyPath)) {\n const settingForProperty =\n encryptionSettings.getEncryptionSettingForProperty(partitionKeyPath);\n partitionKeyList[i] = await this.encryptToken(\n partitionKeyList[i],\n settingForProperty,\n partitionKeyPath === \"/id\",\n );\n encryptedCount++;\n }\n }\n return { partitionKeyList, encryptedCount };\n }\n\n async getEncryptedUrl(id: string): Promise<string> {\n const parts = id.split(\"/\");\n const lastPart = parts[parts.length - 1];\n const encryptedLastPart = await this.getEncryptedId(lastPart);\n parts[parts.length - 1] = encryptedLastPart;\n return parts.join(\"/\");\n }\n\n async getEncryptedId(id: string): Promise<string> {\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return id;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(\"/id\");\n\n if (!settingForProperty) return id;\n id = await this.encryptToken(id, settingForProperty, true);\n return id;\n }\n\n async encryptQueryParameter(\n path: string,\n value: JSONValue,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<JSONValue> {\n if (value === null) {\n return value;\n }\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return value;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) {\n return value;\n }\n return this.encryptToken(value, settingForProperty, isValueId, type);\n }\n\n private async encryptToken(\n valueToEncrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<any> {\n if (typeof valueToEncrypt === \"object\" && valueToEncrypt !== null) {\n for (const key in valueToEncrypt) {\n if (Object.prototype.hasOwnProperty.call(valueToEncrypt, key)) {\n valueToEncrypt[key] = await this.encryptToken(\n valueToEncrypt[key],\n propertySetting,\n isValueId,\n type,\n );\n }\n }\n } else if (Array.isArray(type)) {\n for (let i = 0; i < valueToEncrypt.length; i++) {\n valueToEncrypt[i] = await this.encryptToken(\n valueToEncrypt[i],\n propertySetting,\n isValueId,\n type,\n );\n }\n } else {\n valueToEncrypt = await this.serializeAndEncryptValue(\n valueToEncrypt,\n propertySetting,\n isValueId,\n type,\n );\n }\n return valueToEncrypt;\n }\n\n private async serializeAndEncryptValue(\n valueToEncrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<string> {\n if (valueToEncrypt === null) {\n return valueToEncrypt;\n }\n const [typeMarker, serializer] = createSerializer(valueToEncrypt, type);\n const plainText = serializer.serialize(valueToEncrypt);\n const encryptionAlgorithm = await this.buildEncryptionAlgorithm(propertySetting);\n const cipherText = encryptionAlgorithm.encrypt(plainText);\n if (isValueId) {\n if (typeof valueToEncrypt !== \"string\") {\n throw new ErrorResponse(\"The id should be of string type.\");\n }\n }\n\n const cipherTextWithTypeMarker = Buffer.alloc(cipherText.length + 1);\n cipherTextWithTypeMarker[0] = typeMarker;\n cipherText.forEach((value, index) => {\n cipherTextWithTypeMarker[index + 1] = value;\n });\n let encryptedValue = Buffer.from(cipherTextWithTypeMarker).toString(\"base64\");\n if (isValueId) {\n encryptedValue = encryptedValue.replace(/\\//g, \"_\").replace(/\\+/g, \"-\");\n }\n return encryptedValue;\n }\n\n async decrypt<T extends ItemDefinition>(\n body: T,\n ): Promise<{ body: T; propertiesDecryptedCount: number }> {\n let propertiesDecryptedCount = 0;\n if (body == null) {\n return { body, propertiesDecryptedCount };\n }\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return { body, propertiesDecryptedCount };\n for (const pathToEncrypt of encryptionSettings.pathsToEncrypt) {\n const propertyName = pathToEncrypt.slice(1);\n if (!Object.prototype.hasOwnProperty.call(body, propertyName)) {\n continue;\n }\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(pathToEncrypt);\n if (settingForProperty == null) {\n throw new ErrorResponse(\"Invalid Encryption Setting for the Path: \" + pathToEncrypt);\n }\n\n body[propertyName as keyof T] = await this.decryptToken(\n body[propertyName],\n settingForProperty,\n propertyName === \"id\",\n );\n propertiesDecryptedCount++;\n }\n return { body, propertiesDecryptedCount };\n }\n\n private async decryptToken(\n valueToDecrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n ): Promise<any> {\n if (typeof valueToDecrypt === \"object\") {\n for (const key in valueToDecrypt) {\n if (Object.prototype.hasOwnProperty.call(valueToDecrypt, key)) {\n valueToDecrypt[key] = await this.decryptToken(\n valueToDecrypt[key],\n propertySetting,\n isValueId,\n );\n }\n }\n } else if (Array.isArray(valueToDecrypt)) {\n for (let i = 0; i < valueToDecrypt.length; i++) {\n valueToDecrypt[i] = await this.decryptToken(valueToDecrypt[i], propertySetting, isValueId);\n }\n } else {\n valueToDecrypt = await this.deserializeAndDecryptValue(\n valueToDecrypt,\n propertySetting,\n isValueId,\n );\n }\n return valueToDecrypt;\n }\n\n private async deserializeAndDecryptValue(\n valueToDecrypt: string,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n ): Promise<any> {\n if (isValueId) {\n valueToDecrypt = valueToDecrypt.replace(/_/g, \"/\").replace(/-/g, \"+\");\n }\n const cipherTextWithTypeMarker = Buffer.from(valueToDecrypt, \"base64\");\n if (cipherTextWithTypeMarker === null) {\n return null;\n }\n\n let cipherText = Buffer.alloc(cipherTextWithTypeMarker.length - 1);\n cipherText = Buffer.from(cipherTextWithTypeMarker.slice(1));\n\n const encryptionAlgorithm = await this.buildEncryptionAlgorithm(propertySetting);\n const plainText = encryptionAlgorithm.decrypt(cipherText);\n if (plainText === null) {\n throw new ErrorResponse(\"returned null plain text\");\n }\n\n const serializer = createDeserializer(cipherTextWithTypeMarker[0] as TypeMarker);\n return serializer.deserialize(plainText);\n }\n\n async getEncryptionSetting(forceRefresh?: boolean): Promise<EncryptionSettings> {\n const key = this.database._rid + \"/\" + this.containerRid;\n const encryptionSetting = this.encryptionManager.encryptionSettingsCache.get(key);\n if (forceRefresh || !encryptionSetting) {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = `/dbs/${this.database.id}/colls/${this.containerId}`;\n const id = `dbs/${this.database.id}/colls/${this.containerId}`;\n const response = await this.clientContext.read<ContainerDefinition>({\n path,\n resourceType: ResourceType.container,\n resourceId: id,\n diagnosticNode,\n });\n if (!response || !response.result) {\n throw new ErrorResponse(\"Failed to fetch container definition\");\n }\n const containerRid = response.result._rid;\n const clientEncryptionPolicy = response.result.clientEncryptionPolicy;\n const partitionKeyPaths = response.result.partitionKey.paths;\n const updatedEncryptionSetting =\n await this.encryptionManager.encryptionSettingsCache.create(\n key,\n containerRid,\n partitionKeyPaths,\n clientEncryptionPolicy,\n );\n return updatedEncryptionSetting;\n }, this.clientContext);\n }\n return encryptionSetting;\n }\n\n private async buildEncryptionAlgorithm(\n propertySetting: EncryptionSettingForProperty,\n ): Promise<AeadAes256CbcHmacSha256Algorithm> {\n const key = `${this.database._rid}/${propertySetting.encryptionKeyId}`;\n let clientEncryptionKeyProperties =\n this.encryptionManager.clientEncryptionKeyPropertiesCache.get(key);\n if (!clientEncryptionKeyProperties) {\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n );\n }\n try {\n // the buildEncryptionAlgorithm will build ProtectedDEK which calls unwrapKey using the masterKey configured in\n // KeyEncryptionKey(created before creating Protected DEK)\n // we get wrapped key and key wrap metadata info from clientEncryptionKeyProperties.\n return await propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n );\n } catch (err) {\n if (err.statusCode !== StatusCodes.Forbidden) throw err;\n // if access to key is revoked, and in case there's stale value in cache\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n );\n\n try {\n // This will succeed after if client has rewrapped CEK and gateway cache has updated value.\n return await propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n true,\n );\n } catch (retryErr) {\n if (retryErr.statusCode !== StatusCodes.Forbidden) throw retryErr;\n\n // in case there's stale value in gateway cache. get fresh value from backend\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n clientEncryptionKeyProperties.etag,\n );\n return propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n );\n }\n }\n }\n\n private async fetchClientEncryptionKey(\n cekId: string,\n cekEtag?: string,\n ): Promise<ClientEncryptionKeyProperties> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = `/dbs/${this.database.id}/clientencryptionkeys/${cekId}`;\n const id = `dbs/${this.database.id}/clientencryptionkeys/${cekId}`;\n const options: RequestOptions = {};\n if (cekEtag) {\n options.accessCondition = {\n type: Constants.HttpHeaders.IfNoneMatch,\n condition: cekEtag,\n };\n }\n options.databaseRid = this.database._rid;\n const response = await this.clientContext.read<ClientEncryptionKeyRequest>({\n path: path,\n resourceType: ResourceType.clientencryptionkey,\n resourceId: id,\n options: options,\n diagnosticNode,\n });\n if (!response) {\n throw new ErrorResponse(`Failed to fetch client encryption key ${cekId}`);\n }\n if (response.code === StatusCodes.NotModified) {\n throw new ErrorResponse(\n `The Client Encryption Key with key id: ${cekId} on database: ${this.database.id} needs to be rewrapped with a valid Key Encryption Key using rewrapClientEncryptionKey. The Key Encryption Key used to wrap the Client Encryption Key has been revoked`,\n );\n }\n const clientEncryptionKeyProperties: ClientEncryptionKeyProperties = {\n id: response.result.id,\n encryptionAlgorithm: response.result.encryptionAlgorithm,\n wrappedDataEncryptionKey: new Uint8Array(\n Buffer.from(response.result.wrappedDataEncryptionKey, \"base64\"),\n ),\n encryptionKeyWrapMetadata: response.result.keyWrapMetadata,\n etag: response.result._etag,\n };\n const key = this.database._rid + \"/\" + cekId;\n this.encryptionManager.clientEncryptionKeyPropertiesCache.set(\n key,\n clientEncryptionKeyProperties,\n );\n return clientEncryptionKeyProperties;\n }, this.clientContext);\n }\n}\n"]}
1
+ {"version":3,"file":"EncryptionProcessor.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionSettings } from \"./EncryptionSettings.js\";\nimport type { EncryptionSettingForProperty } from \"./EncryptionSettingForProperty.js\";\nimport type { AeadAes256CbcHmacSha256Algorithm } from \"./AeadAes256CbcHmacSha256Algorithm/index.js\";\nimport type { ContainerDefinition, Database, ItemDefinition } from \"../client/index.js\";\nimport type { PartitionKeyInternal } from \"../documents/index.js\";\nimport type { TypeMarker } from \"./enums/TypeMarker.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport type { ClientEncryptionKeyRequest } from \"./ClientEncryptionKey/index.js\";\nimport type { ClientEncryptionKeyProperties } from \"./ClientEncryptionKey/index.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport {\n Constants,\n ResourceType,\n StatusCodes,\n createDeserializer,\n createSerializer,\n extractPath,\n} from \"../common/index.js\";\nimport type { RequestOptions } from \"../request/index.js\";\nimport { ErrorResponse } from \"../request/index.js\";\nimport { withDiagnostics } from \"../utils/diagnostics.js\";\nimport type { EncryptionManager } from \"./EncryptionManager.js\";\nimport type { JSONValue } from \"../queryExecutionContext/index.js\";\n\nexport class EncryptionProcessor {\n constructor(\n private readonly containerId: string,\n public containerRid: string,\n private readonly database: Database,\n private readonly clientContext: ClientContext,\n private encryptionManager: EncryptionManager,\n ) {}\n\n async encrypt<T extends ItemDefinition>(\n body: T,\n ): Promise<{ body: T; propertiesEncryptedCount: number }> {\n if (!body) {\n throw new ErrorResponse(\"Input body is null or undefined.\");\n }\n let propertiesEncryptedCount = 0;\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return { body, propertiesEncryptedCount };\n for (const pathToEncrypt of encryptionSettings.pathsToEncrypt) {\n const propertyName = pathToEncrypt.slice(1);\n if (!Object.prototype.hasOwnProperty.call(body, propertyName)) {\n continue;\n }\n\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(pathToEncrypt);\n if (!settingForProperty) {\n throw new ErrorResponse(\"Invalid Encryption Setting for the Property: \" + propertyName);\n }\n body[propertyName as keyof T] = await this.encryptToken(\n body[propertyName],\n settingForProperty,\n propertyName === \"id\",\n );\n propertiesEncryptedCount++;\n }\n return { body, propertiesEncryptedCount };\n }\n\n async isPathEncrypted(path: string): Promise<boolean> {\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) return false;\n return true;\n }\n\n async encryptProperty(path: string, value: JSONValue): Promise<any> {\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return value;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) {\n return value;\n }\n\n value = await this.encryptToken(value, settingForProperty, path === \"/id\");\n return value;\n }\n\n async getEncryptedPartitionKeyValue(\n partitionKeyList: PartitionKeyInternal,\n ): Promise<{ partitionKeyList: PartitionKeyInternal; encryptedCount: number }> {\n const encryptionSettings = await this.getEncryptionSetting();\n let encryptedCount = 0;\n if (!encryptionSettings) return { partitionKeyList, encryptedCount };\n const partitionKeyPaths = encryptionSettings.partitionKeyPaths;\n for (let i = 0; i < partitionKeyPaths.length; i++) {\n const partitionKeyPath = extractPath(partitionKeyPaths[i]);\n if (encryptionSettings.pathsToEncrypt.includes(partitionKeyPath)) {\n const settingForProperty =\n encryptionSettings.getEncryptionSettingForProperty(partitionKeyPath);\n partitionKeyList[i] = await this.encryptToken(\n partitionKeyList[i],\n settingForProperty,\n partitionKeyPath === \"/id\",\n );\n encryptedCount++;\n }\n }\n return { partitionKeyList, encryptedCount };\n }\n\n async getEncryptedUrl(id: string): Promise<string> {\n const parts = id.split(\"/\");\n const lastPart = parts[parts.length - 1];\n const encryptedLastPart = await this.getEncryptedId(lastPart);\n parts[parts.length - 1] = encryptedLastPart;\n return parts.join(\"/\");\n }\n\n async getEncryptedId(id: string): Promise<string> {\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return id;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(\"/id\");\n\n if (!settingForProperty) return id;\n id = await this.encryptToken(id, settingForProperty, true);\n return id;\n }\n\n async encryptQueryParameter(\n path: string,\n value: JSONValue,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<JSONValue> {\n if (value === null) {\n return value;\n }\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return value;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) {\n return value;\n }\n return this.encryptToken(value, settingForProperty, isValueId, type);\n }\n\n private async encryptToken(\n valueToEncrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<any> {\n if (typeof valueToEncrypt === \"object\" && valueToEncrypt !== null) {\n for (const key in valueToEncrypt) {\n if (Object.prototype.hasOwnProperty.call(valueToEncrypt, key)) {\n valueToEncrypt[key] = await this.encryptToken(\n valueToEncrypt[key],\n propertySetting,\n isValueId,\n type,\n );\n }\n }\n } else if (Array.isArray(type)) {\n for (let i = 0; i < valueToEncrypt.length; i++) {\n valueToEncrypt[i] = await this.encryptToken(\n valueToEncrypt[i],\n propertySetting,\n isValueId,\n type,\n );\n }\n } else {\n valueToEncrypt = await this.serializeAndEncryptValue(\n valueToEncrypt,\n propertySetting,\n isValueId,\n type,\n );\n }\n return valueToEncrypt;\n }\n\n private async serializeAndEncryptValue(\n valueToEncrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<string> {\n if (valueToEncrypt === null) {\n return valueToEncrypt;\n }\n const [typeMarker, serializer] = createSerializer(valueToEncrypt, type);\n const plainText = serializer.serialize(valueToEncrypt);\n const encryptionAlgorithm = await this.buildEncryptionAlgorithm(propertySetting);\n const cipherText = encryptionAlgorithm.encrypt(plainText);\n if (isValueId) {\n if (typeof valueToEncrypt !== \"string\") {\n throw new ErrorResponse(\"The id should be of string type.\");\n }\n }\n\n const cipherTextWithTypeMarker = Buffer.alloc(cipherText.length + 1);\n cipherTextWithTypeMarker[0] = typeMarker;\n cipherText.forEach((value, index) => {\n cipherTextWithTypeMarker[index + 1] = value;\n });\n let encryptedValue = Buffer.from(cipherTextWithTypeMarker).toString(\"base64\");\n if (isValueId) {\n encryptedValue = encryptedValue.replace(/\\//g, \"_\").replace(/\\+/g, \"-\");\n }\n return encryptedValue;\n }\n\n async decrypt<T extends ItemDefinition>(\n body: T,\n ): Promise<{ body: T; propertiesDecryptedCount: number }> {\n let propertiesDecryptedCount = 0;\n if (body == null) {\n return { body, propertiesDecryptedCount };\n }\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return { body, propertiesDecryptedCount };\n for (const pathToEncrypt of encryptionSettings.pathsToEncrypt) {\n const propertyName = pathToEncrypt.slice(1);\n if (!Object.prototype.hasOwnProperty.call(body, propertyName)) {\n continue;\n }\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(pathToEncrypt);\n if (settingForProperty == null) {\n throw new ErrorResponse(\"Invalid Encryption Setting for the Path: \" + pathToEncrypt);\n }\n\n body[propertyName as keyof T] = await this.decryptToken(\n body[propertyName],\n settingForProperty,\n propertyName === \"id\",\n );\n propertiesDecryptedCount++;\n }\n return { body, propertiesDecryptedCount };\n }\n\n private async decryptToken(\n valueToDecrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n ): Promise<any> {\n if (typeof valueToDecrypt === \"object\") {\n for (const key in valueToDecrypt) {\n if (Object.prototype.hasOwnProperty.call(valueToDecrypt, key)) {\n valueToDecrypt[key] = await this.decryptToken(\n valueToDecrypt[key],\n propertySetting,\n isValueId,\n );\n }\n }\n } else if (Array.isArray(valueToDecrypt)) {\n for (let i = 0; i < valueToDecrypt.length; i++) {\n valueToDecrypt[i] = await this.decryptToken(valueToDecrypt[i], propertySetting, isValueId);\n }\n } else {\n valueToDecrypt = await this.deserializeAndDecryptValue(\n valueToDecrypt,\n propertySetting,\n isValueId,\n );\n }\n return valueToDecrypt;\n }\n\n private async deserializeAndDecryptValue(\n valueToDecrypt: string,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n ): Promise<any> {\n if (isValueId) {\n valueToDecrypt = valueToDecrypt.replace(/_/g, \"/\").replace(/-/g, \"+\");\n }\n const cipherTextWithTypeMarker = Buffer.from(valueToDecrypt, \"base64\");\n if (cipherTextWithTypeMarker === null) {\n return null;\n }\n\n let cipherText = Buffer.alloc(cipherTextWithTypeMarker.length - 1);\n cipherText = Buffer.from(cipherTextWithTypeMarker.slice(1));\n\n const encryptionAlgorithm = await this.buildEncryptionAlgorithm(propertySetting);\n const plainText = encryptionAlgorithm.decrypt(cipherText);\n if (plainText === null) {\n throw new ErrorResponse(\"returned null plain text\");\n }\n\n const serializer = createDeserializer(cipherTextWithTypeMarker[0] as TypeMarker);\n return serializer.deserialize(plainText);\n }\n\n async getEncryptionSetting(forceRefresh?: boolean): Promise<EncryptionSettings> {\n const key = this.database._rid + \"/\" + this.containerRid;\n const encryptionSetting = this.encryptionManager.encryptionSettingsCache.get(key);\n if (forceRefresh || !encryptionSetting) {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = `/dbs/${this.database.id}/colls/${this.containerId}`;\n const id = `dbs/${this.database.id}/colls/${this.containerId}`;\n const response = await this.clientContext.read<ContainerDefinition>({\n path,\n resourceType: ResourceType.container,\n resourceId: id,\n diagnosticNode,\n });\n if (!response || !response.result) {\n throw new ErrorResponse(\"Failed to fetch container definition\");\n }\n const containerRid = response.result._rid;\n const clientEncryptionPolicy = response.result.clientEncryptionPolicy;\n const partitionKeyPaths = response.result.partitionKey.paths;\n const updatedEncryptionSetting =\n await this.encryptionManager.encryptionSettingsCache.create(\n key,\n containerRid,\n partitionKeyPaths,\n clientEncryptionPolicy,\n );\n return updatedEncryptionSetting;\n }, this.clientContext);\n }\n return encryptionSetting;\n }\n\n private async buildEncryptionAlgorithm(\n propertySetting: EncryptionSettingForProperty,\n ): Promise<AeadAes256CbcHmacSha256Algorithm> {\n const key = `${this.database._rid}/${propertySetting.encryptionKeyId}`;\n let clientEncryptionKeyProperties =\n this.encryptionManager.clientEncryptionKeyPropertiesCache.get(key);\n if (!clientEncryptionKeyProperties) {\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n );\n }\n try {\n // the buildEncryptionAlgorithm will build ProtectedDEK which calls unwrapKey using the masterKey configured in\n // KeyEncryptionKey(created before creating Protected DEK)\n // we get wrapped key and key wrap metadata info from clientEncryptionKeyProperties.\n return await propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n );\n } catch (err) {\n if (err.statusCode !== StatusCodes.Forbidden) throw err;\n // if access to key is revoked, and in case there's stale value in cache\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n );\n\n try {\n // This will succeed after if client has rewrapped CEK and gateway cache has updated value.\n return await propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n true,\n );\n } catch (retryErr) {\n if (retryErr.statusCode !== StatusCodes.Forbidden) throw retryErr;\n\n // in case there's stale value in gateway cache. get fresh value from backend\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n clientEncryptionKeyProperties.etag,\n );\n return propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n );\n }\n }\n }\n\n private async fetchClientEncryptionKey(\n cekId: string,\n cekEtag?: string,\n ): Promise<ClientEncryptionKeyProperties> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = `/dbs/${this.database.id}/clientencryptionkeys/${cekId}`;\n const id = `dbs/${this.database.id}/clientencryptionkeys/${cekId}`;\n const options: RequestOptions = {};\n if (cekEtag) {\n options.accessCondition = {\n type: Constants.HttpHeaders.IfNoneMatch,\n condition: cekEtag,\n };\n }\n options.databaseRid = this.database._rid;\n const response = await this.clientContext.read<ClientEncryptionKeyRequest>({\n path: path,\n resourceType: ResourceType.clientencryptionkey,\n resourceId: id,\n options: options,\n diagnosticNode,\n });\n if (!response) {\n throw new ErrorResponse(`Failed to fetch client encryption key ${cekId}`);\n }\n if (response.code === StatusCodes.NotModified) {\n throw new ErrorResponse(\n `The Client Encryption Key with key id: ${cekId} on database: ${this.database.id} needs to be rewrapped with a valid Key Encryption Key using rewrapClientEncryptionKey. The Key Encryption Key used to wrap the Client Encryption Key has been revoked`,\n );\n }\n const clientEncryptionKeyProperties: ClientEncryptionKeyProperties = {\n id: response.result.id,\n encryptionAlgorithm: response.result.encryptionAlgorithm,\n wrappedDataEncryptionKey: new Uint8Array(\n Buffer.from(response.result.wrappedDataEncryptionKey, \"base64\"),\n ),\n encryptionKeyWrapMetadata: response.result.keyWrapMetadata,\n etag: response.result._etag,\n };\n const key = this.database._rid + \"/\" + cekId;\n this.encryptionManager.clientEncryptionKeyPropertiesCache.set(\n key,\n clientEncryptionKeyProperties,\n );\n return clientEncryptionKeyProperties;\n }, this.clientContext);\n }\n}\n"]}
@@ -6,6 +6,8 @@ import { CosmosEncryptedNumberType } from "./CosmosEncryptedNumber.js";
6
6
  * Represents a builder class for building encrypted parameters in parametrized query.
7
7
  */
8
8
  export class EncryptionQueryBuilder {
9
+ query;
10
+ parameters;
9
11
  constructor(query) {
10
12
  this.query = query;
11
13
  this.parameters = [];
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptionQueryBuilder.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionQueryBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n SqlQuerySpec,\n SqlParameter,\n JSONArray,\n JSONObject,\n JSONValue,\n} from \"../queryExecutionContext/index.js\";\nimport { TypeMarker } from \"./enums/TypeMarker.js\";\nimport { CosmosEncryptedNumber, CosmosEncryptedNumberType } from \"./CosmosEncryptedNumber.js\";\n\nexport interface EncryptionSqlParameter extends SqlParameter {\n type?: TypeMarker;\n path: string;\n}\n\n/**\n * Represents a builder class for building encrypted parameters in parametrized query.\n */\nexport class EncryptionQueryBuilder {\n private query: string;\n private parameters?: EncryptionSqlParameter[];\n\n constructor(query: string) {\n this.query = query;\n this.parameters = [];\n }\n /**\n * Adds parameter to query\n */\n public addParameter(\n name: string,\n value: boolean | string | null | JSONArray | JSONObject | Date | CosmosEncryptedNumber,\n path: string,\n ): void {\n if (value === null) {\n this.parameters.push({ name: name, value: null, path: path });\n return;\n }\n switch (true) {\n case typeof value === \"boolean\":\n this.parameters.push({\n name,\n value,\n type: TypeMarker.Boolean,\n path,\n });\n break;\n case typeof value === \"string\":\n this.parameters.push({\n name,\n value,\n type: TypeMarker.String,\n path,\n });\n break;\n case value instanceof Date: {\n const date = value.toISOString();\n this.parameters.push({\n name: name,\n value: date,\n type: TypeMarker.String,\n path: path,\n });\n break;\n }\n case isCosmosEncryptedNumber(value): {\n const num = value.value;\n if (value.numberType === CosmosEncryptedNumberType.Integer) {\n this.parameters.push({\n name,\n value: num,\n type: TypeMarker.Long,\n path,\n });\n } else if (value.numberType === CosmosEncryptedNumberType.Float) {\n this.parameters.push({\n name,\n value: num,\n type: TypeMarker.Double,\n path,\n });\n }\n break;\n }\n case Array.isArray(value):\n this.parameters.push({ name, value, path });\n break;\n case typeof value === \"object\":\n this.parameters.push({ name, value, path });\n break;\n default:\n throw new Error(`Unsupported parameter type for parameter \"${name}\": ${typeof value}`);\n }\n }\n\n /** Adds unencrypted parameter to query */\n public addUnencryptedParameter(name: string, value: JSONValue, path: string): void {\n this.parameters.push({ name: name, value: value, path: path });\n }\n\n /*\n * @internal\n */\n public toEncryptionSqlQuerySpec(): SqlQuerySpec {\n return {\n query: this.query,\n parameters: this.parameters,\n };\n }\n}\n\nfunction isCosmosEncryptedNumber(val: any): val is CosmosEncryptedNumber {\n return (\n val !== null &&\n typeof val === \"object\" &&\n typeof val.value === \"number\" &&\n typeof val.numberType === \"string\" &&\n (val.numberType === CosmosEncryptedNumberType.Integer ||\n val.numberType === CosmosEncryptedNumberType.Float)\n );\n}\n"]}
1
+ {"version":3,"file":"EncryptionQueryBuilder.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionQueryBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n SqlQuerySpec,\n SqlParameter,\n JSONArray,\n JSONObject,\n JSONValue,\n} from \"../queryExecutionContext/index.js\";\nimport { TypeMarker } from \"./enums/TypeMarker.js\";\nimport { CosmosEncryptedNumber, CosmosEncryptedNumberType } from \"./CosmosEncryptedNumber.js\";\n\nexport interface EncryptionSqlParameter extends SqlParameter {\n type?: TypeMarker;\n path: string;\n}\n\n/**\n * Represents a builder class for building encrypted parameters in parametrized query.\n */\nexport class EncryptionQueryBuilder {\n private query: string;\n private parameters?: EncryptionSqlParameter[];\n\n constructor(query: string) {\n this.query = query;\n this.parameters = [];\n }\n /**\n * Adds parameter to query\n */\n public addParameter(\n name: string,\n value: boolean | string | null | JSONArray | JSONObject | Date | CosmosEncryptedNumber,\n path: string,\n ): void {\n if (value === null) {\n this.parameters.push({ name: name, value: null, path: path });\n return;\n }\n switch (true) {\n case typeof value === \"boolean\":\n this.parameters.push({\n name,\n value,\n type: TypeMarker.Boolean,\n path,\n });\n break;\n case typeof value === \"string\":\n this.parameters.push({\n name,\n value,\n type: TypeMarker.String,\n path,\n });\n break;\n case value instanceof Date: {\n const date = value.toISOString();\n this.parameters.push({\n name: name,\n value: date,\n type: TypeMarker.String,\n path: path,\n });\n break;\n }\n case isCosmosEncryptedNumber(value): {\n const num = value.value;\n if (value.numberType === CosmosEncryptedNumberType.Integer) {\n this.parameters.push({\n name,\n value: num,\n type: TypeMarker.Long,\n path,\n });\n } else if (value.numberType === CosmosEncryptedNumberType.Float) {\n this.parameters.push({\n name,\n value: num,\n type: TypeMarker.Double,\n path,\n });\n }\n break;\n }\n case Array.isArray(value):\n this.parameters.push({ name, value, path });\n break;\n case typeof value === \"object\":\n this.parameters.push({ name, value, path });\n break;\n default:\n throw new Error(`Unsupported parameter type for parameter \"${name}\": ${typeof value}`);\n }\n }\n\n /** Adds unencrypted parameter to query */\n public addUnencryptedParameter(name: string, value: JSONValue, path: string): void {\n this.parameters.push({ name: name, value: value, path: path });\n }\n\n /*\n * @internal\n */\n public toEncryptionSqlQuerySpec(): SqlQuerySpec {\n return {\n query: this.query,\n parameters: this.parameters,\n };\n }\n}\n\nfunction isCosmosEncryptedNumber(val: any): val is CosmosEncryptedNumber {\n return (\n val !== null &&\n typeof val === \"object\" &&\n typeof val.value === \"number\" &&\n typeof val.numberType === \"string\" &&\n (val.numberType === CosmosEncryptedNumberType.Integer ||\n val.numberType === CosmosEncryptedNumberType.Float)\n );\n}\n"]}
@@ -6,6 +6,12 @@ import { AeadAes256CbcHmacSha256Algorithm } from "./AeadAes256CbcHmacSha256Algor
6
6
  * @hidden
7
7
  */
8
8
  export class EncryptionSettingForProperty {
9
+ // client encryption key id.
10
+ encryptionKeyId;
11
+ // encryption type - Deterministic/Randomized.
12
+ encryptionType;
13
+ // encryption algorithm - AEAD_AES_256_CBC_HMAC_SHA256
14
+ encryptionAlgorithm;
9
15
  constructor(clientEncryptionIncludedPath) {
10
16
  this.encryptionKeyId = clientEncryptionIncludedPath.clientEncryptionKeyId;
11
17
  this.encryptionType = clientEncryptionIncludedPath.encryptionType;
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptionSettingForProperty.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionSettingForProperty.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AAI/F;;;GAGG;AACH,MAAM,OAAO,4BAA4B;IAQvC,YAAY,4BAA0D;QACpE,IAAI,CAAC,eAAe,GAAG,4BAA4B,CAAC,qBAAqB,CAAC;QAC1E,IAAI,CAAC,cAAc,GAAG,4BAA4B,CAAC,cAAc,CAAC;QAClE,IAAI,CAAC,mBAAmB,GAAG,4BAA4B,CAAC,mBAAmB,CAAC;IAC9E,CAAC;IAEM,KAAK,CAAC,wBAAwB,CACnC,6BAA4D,EAC5D,iBAAoC,EACpC,YAAsB;QAEtB,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAC3E,6BAA6B,EAC7B,iBAAiB,EACjB,YAAY,CACb,CAAC;QACF,MAAM,mBAAmB,GAAG,IAAI,gCAAgC,CAC9D,0BAA0B,EAC1B,IAAI,CAAC,cAAc,CACpB,CAAC;QAEF,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAC3C,6BAA4D,EAC5D,iBAAoC,EACpC,YAAsB;QAEtB,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,WAAW,CAC1E,6BAA6B,CAAC,yBAAyB,CAAC,IAAI,EAC5D,6BAA6B,CAAC,yBAAyB,CAAC,KAAK,EAC7D,iBAAiB,CAAC,0BAA0B,CAC7C,CAAC;QACF,MAAM,0BAA0B,GAC9B,MAAM,iBAAiB,CAAC,+BAA+B,CAAC,WAAW,CACjE,IAAI,CAAC,eAAe,EACpB,gBAAgB,EAChB,6BAA6B,CAAC,wBAAwB,EACtD,YAAY,CACb,CAAC;QAEJ,OAAO,0BAA0B,CAAC;IACpC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ClientEncryptionIncludedPath } from \"./ClientEncryptionIncludedPath.js\";\nimport type { ClientEncryptionKeyProperties } from \"./ClientEncryptionKey/index.js\";\nimport type { EncryptionAlgorithm, EncryptionType } from \"./enums/index.js\";\nimport { AeadAes256CbcHmacSha256Algorithm } from \"./AeadAes256CbcHmacSha256Algorithm/index.js\";\nimport type { ProtectedDataEncryptionKey } from \"./EncryptionKey/index.js\";\nimport type { EncryptionManager } from \"./EncryptionManager.js\";\n\n/**\n * Represents the encryption setting for a specific property in an item.\n * @hidden\n */\nexport class EncryptionSettingForProperty {\n // client encryption key id.\n encryptionKeyId: string;\n // encryption type - Deterministic/Randomized.\n encryptionType: EncryptionType;\n // encryption algorithm - AEAD_AES_256_CBC_HMAC_SHA256\n encryptionAlgorithm: EncryptionAlgorithm;\n\n constructor(clientEncryptionIncludedPath: ClientEncryptionIncludedPath) {\n this.encryptionKeyId = clientEncryptionIncludedPath.clientEncryptionKeyId;\n this.encryptionType = clientEncryptionIncludedPath.encryptionType;\n this.encryptionAlgorithm = clientEncryptionIncludedPath.encryptionAlgorithm;\n }\n\n public async buildEncryptionAlgorithm(\n clientEncryptionKeyProperties: ClientEncryptionKeyProperties,\n encryptionManager: EncryptionManager,\n forceRefresh?: boolean,\n ): Promise<AeadAes256CbcHmacSha256Algorithm> {\n const protectedDataEncryptionKey = await this.buildProtectedDataEncryptionKey(\n clientEncryptionKeyProperties,\n encryptionManager,\n forceRefresh,\n );\n const encryptionAlgorithm = new AeadAes256CbcHmacSha256Algorithm(\n protectedDataEncryptionKey,\n this.encryptionType,\n );\n\n return encryptionAlgorithm;\n }\n\n private async buildProtectedDataEncryptionKey(\n clientEncryptionKeyProperties: ClientEncryptionKeyProperties,\n encryptionManager: EncryptionManager,\n forceRefresh?: boolean,\n ): Promise<ProtectedDataEncryptionKey> {\n const keyEncryptionKey = encryptionManager.keyEncryptionKeyCache.getOrCreate(\n clientEncryptionKeyProperties.encryptionKeyWrapMetadata.name,\n clientEncryptionKeyProperties.encryptionKeyWrapMetadata.value,\n encryptionManager.encryptionKeyStoreProvider,\n );\n const protectedDataEncryptionKey =\n await encryptionManager.protectedDataEncryptionKeyCache.getOrCreate(\n this.encryptionKeyId,\n keyEncryptionKey,\n clientEncryptionKeyProperties.wrappedDataEncryptionKey,\n forceRefresh,\n );\n\n return protectedDataEncryptionKey;\n }\n}\n"]}
1
+ {"version":3,"file":"EncryptionSettingForProperty.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionSettingForProperty.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AAI/F;;;GAGG;AACH,MAAM,OAAO,4BAA4B;IACvC,4BAA4B;IAC5B,eAAe,CAAS;IACxB,8CAA8C;IAC9C,cAAc,CAAiB;IAC/B,sDAAsD;IACtD,mBAAmB,CAAsB;IAEzC,YAAY,4BAA0D;QACpE,IAAI,CAAC,eAAe,GAAG,4BAA4B,CAAC,qBAAqB,CAAC;QAC1E,IAAI,CAAC,cAAc,GAAG,4BAA4B,CAAC,cAAc,CAAC;QAClE,IAAI,CAAC,mBAAmB,GAAG,4BAA4B,CAAC,mBAAmB,CAAC;IAC9E,CAAC;IAEM,KAAK,CAAC,wBAAwB,CACnC,6BAA4D,EAC5D,iBAAoC,EACpC,YAAsB;QAEtB,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAC3E,6BAA6B,EAC7B,iBAAiB,EACjB,YAAY,CACb,CAAC;QACF,MAAM,mBAAmB,GAAG,IAAI,gCAAgC,CAC9D,0BAA0B,EAC1B,IAAI,CAAC,cAAc,CACpB,CAAC;QAEF,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAC3C,6BAA4D,EAC5D,iBAAoC,EACpC,YAAsB;QAEtB,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,WAAW,CAC1E,6BAA6B,CAAC,yBAAyB,CAAC,IAAI,EAC5D,6BAA6B,CAAC,yBAAyB,CAAC,KAAK,EAC7D,iBAAiB,CAAC,0BAA0B,CAC7C,CAAC;QACF,MAAM,0BAA0B,GAC9B,MAAM,iBAAiB,CAAC,+BAA+B,CAAC,WAAW,CACjE,IAAI,CAAC,eAAe,EACpB,gBAAgB,EAChB,6BAA6B,CAAC,wBAAwB,EACtD,YAAY,CACb,CAAC;QAEJ,OAAO,0BAA0B,CAAC;IACpC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ClientEncryptionIncludedPath } from \"./ClientEncryptionIncludedPath.js\";\nimport type { ClientEncryptionKeyProperties } from \"./ClientEncryptionKey/index.js\";\nimport type { EncryptionAlgorithm, EncryptionType } from \"./enums/index.js\";\nimport { AeadAes256CbcHmacSha256Algorithm } from \"./AeadAes256CbcHmacSha256Algorithm/index.js\";\nimport type { ProtectedDataEncryptionKey } from \"./EncryptionKey/index.js\";\nimport type { EncryptionManager } from \"./EncryptionManager.js\";\n\n/**\n * Represents the encryption setting for a specific property in an item.\n * @hidden\n */\nexport class EncryptionSettingForProperty {\n // client encryption key id.\n encryptionKeyId: string;\n // encryption type - Deterministic/Randomized.\n encryptionType: EncryptionType;\n // encryption algorithm - AEAD_AES_256_CBC_HMAC_SHA256\n encryptionAlgorithm: EncryptionAlgorithm;\n\n constructor(clientEncryptionIncludedPath: ClientEncryptionIncludedPath) {\n this.encryptionKeyId = clientEncryptionIncludedPath.clientEncryptionKeyId;\n this.encryptionType = clientEncryptionIncludedPath.encryptionType;\n this.encryptionAlgorithm = clientEncryptionIncludedPath.encryptionAlgorithm;\n }\n\n public async buildEncryptionAlgorithm(\n clientEncryptionKeyProperties: ClientEncryptionKeyProperties,\n encryptionManager: EncryptionManager,\n forceRefresh?: boolean,\n ): Promise<AeadAes256CbcHmacSha256Algorithm> {\n const protectedDataEncryptionKey = await this.buildProtectedDataEncryptionKey(\n clientEncryptionKeyProperties,\n encryptionManager,\n forceRefresh,\n );\n const encryptionAlgorithm = new AeadAes256CbcHmacSha256Algorithm(\n protectedDataEncryptionKey,\n this.encryptionType,\n );\n\n return encryptionAlgorithm;\n }\n\n private async buildProtectedDataEncryptionKey(\n clientEncryptionKeyProperties: ClientEncryptionKeyProperties,\n encryptionManager: EncryptionManager,\n forceRefresh?: boolean,\n ): Promise<ProtectedDataEncryptionKey> {\n const keyEncryptionKey = encryptionManager.keyEncryptionKeyCache.getOrCreate(\n clientEncryptionKeyProperties.encryptionKeyWrapMetadata.name,\n clientEncryptionKeyProperties.encryptionKeyWrapMetadata.value,\n encryptionManager.encryptionKeyStoreProvider,\n );\n const protectedDataEncryptionKey =\n await encryptionManager.protectedDataEncryptionKeyCache.getOrCreate(\n this.encryptionKeyId,\n keyEncryptionKey,\n clientEncryptionKeyProperties.wrappedDataEncryptionKey,\n forceRefresh,\n );\n\n return protectedDataEncryptionKey;\n }\n}\n"]}
@@ -6,11 +6,14 @@
6
6
  * @hidden
7
7
  */
8
8
  export class EncryptionSettings {
9
+ id; // databaseRid + '/' + containerRid
10
+ containerRid;
11
+ partitionKeyPaths;
12
+ pathsToEncrypt = [];
13
+ // key is property path
14
+ encryptionSettingForProperties = {};
9
15
  // getContainerRid
10
16
  constructor(id, containerRid, partitionKeyPaths) {
11
- this.pathsToEncrypt = [];
12
- // key is property path
13
- this.encryptionSettingForProperties = {};
14
17
  this.id = id;
15
18
  this.containerRid = containerRid;
16
19
  this.partitionKeyPaths = partitionKeyPaths;
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptionSettings.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionSettings.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAY7B,kBAAkB;IAClB,YAAmB,EAAU,EAAE,YAAoB,EAAE,iBAA2B;QANzE,mBAAc,GAAa,EAAE,CAAC;QAErC,uBAAuB;QACf,mCAA8B,GAAoD,EAAE,CAAC;QAI3F,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAEM,+BAA+B,CACpC,GAAW,EACX,4BAA0D;QAE1D,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,GAAG,4BAA4B,CAAC;IAC1E,CAAC;IAEM,+BAA+B,CAAC,YAAoB;QACzD,OAAO,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionSettingForProperty } from \"./EncryptionSettingForProperty.js\";\n\n/**\n * stores partitionKeyPaths, all the pathsToEncrypt, and encryption settings (cekId, encryption type, and algorithm) for each property.\n * see {@link EncryptionSettingForProperty}\n * @hidden\n */\nexport class EncryptionSettings {\n public id: string; // databaseRid + '/' + containerRid\n\n public containerRid: string;\n\n public partitionKeyPaths: string[];\n\n public pathsToEncrypt: string[] = [];\n\n // key is property path\n private encryptionSettingForProperties: { [key: string]: EncryptionSettingForProperty } = {};\n\n // getContainerRid\n public constructor(id: string, containerRid: string, partitionKeyPaths: string[]) {\n this.id = id;\n this.containerRid = containerRid;\n this.partitionKeyPaths = partitionKeyPaths;\n }\n\n public setEncryptionSettingForProperty(\n key: string,\n encryptionSettingForProperty: EncryptionSettingForProperty,\n ): void {\n this.encryptionSettingForProperties[key] = encryptionSettingForProperty;\n }\n\n public getEncryptionSettingForProperty(propertyName: string): EncryptionSettingForProperty {\n return this.encryptionSettingForProperties[propertyName];\n }\n}\n"]}
1
+ {"version":3,"file":"EncryptionSettings.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionSettings.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IACtB,EAAE,CAAS,CAAC,mCAAmC;IAE/C,YAAY,CAAS;IAErB,iBAAiB,CAAW;IAE5B,cAAc,GAAa,EAAE,CAAC;IAErC,uBAAuB;IACf,8BAA8B,GAAoD,EAAE,CAAC;IAE7F,kBAAkB;IAClB,YAAmB,EAAU,EAAE,YAAoB,EAAE,iBAA2B;QAC9E,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAEM,+BAA+B,CACpC,GAAW,EACX,4BAA0D;QAE1D,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,GAAG,4BAA4B,CAAC;IAC1E,CAAC;IAEM,+BAA+B,CAAC,YAAoB;QACzD,OAAO,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionSettingForProperty } from \"./EncryptionSettingForProperty.js\";\n\n/**\n * stores partitionKeyPaths, all the pathsToEncrypt, and encryption settings (cekId, encryption type, and algorithm) for each property.\n * see {@link EncryptionSettingForProperty}\n * @hidden\n */\nexport class EncryptionSettings {\n public id: string; // databaseRid + '/' + containerRid\n\n public containerRid: string;\n\n public partitionKeyPaths: string[];\n\n public pathsToEncrypt: string[] = [];\n\n // key is property path\n private encryptionSettingForProperties: { [key: string]: EncryptionSettingForProperty } = {};\n\n // getContainerRid\n public constructor(id: string, containerRid: string, partitionKeyPaths: string[]) {\n this.id = id;\n this.containerRid = containerRid;\n this.partitionKeyPaths = partitionKeyPaths;\n }\n\n public setEncryptionSettingForProperty(\n key: string,\n encryptionSettingForProperty: EncryptionSettingForProperty,\n ): void {\n this.encryptionSettingForProperties[key] = encryptionSettingForProperty;\n }\n\n public getEncryptionSettingForProperty(propertyName: string): EncryptionSettingForProperty {\n return this.encryptionSettingForProperties[propertyName];\n }\n}\n"]}
@@ -6,6 +6,10 @@ import { KeyEncryptionAlgorithm } from "./enums/KeyEncryptionAlgorithm.js";
6
6
  * and provides interface to wrap and unwrap the key.
7
7
  */
8
8
  export class KeyEncryptionKey {
9
+ encryptionAlgorithm;
10
+ name;
11
+ path;
12
+ keyStoreProvider;
9
13
  constructor(name, path, keyStoreProvider) {
10
14
  this.name = name;
11
15
  this.path = path;
@@ -1 +1 @@
1
- {"version":3,"file":"KeyEncryptionKey.js","sourceRoot":"","sources":["../../../src/encryption/KeyEncryptionKey.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAS3B,YAAY,IAAY,EAAE,IAAY,EAAE,gBAA4C;QAClF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,mBAAmB,GAAG,sBAAsB,CAAC,QAAQ,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,sBAA8B;QAC3D,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,mBAAmB,EACxB,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,oBAA4B;QAC3D,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,mBAAmB,EACxB,oBAAoB,CACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KeyEncryptionAlgorithm } from \"./enums/KeyEncryptionAlgorithm.js\";\nimport type { EncryptionKeyStoreProvider } from \"./EncryptionKeyStoreProvider.js\";\n/**\n * A wrapper class containing the info about the key-protecting key stored in an external key provider\n * and provides interface to wrap and unwrap the key.\n */\nexport class KeyEncryptionKey {\n private encryptionAlgorithm: KeyEncryptionAlgorithm;\n\n public name: string;\n\n public path: string;\n\n public keyStoreProvider: EncryptionKeyStoreProvider;\n\n constructor(name: string, path: string, keyStoreProvider: EncryptionKeyStoreProvider) {\n this.name = name;\n this.path = path;\n this.keyStoreProvider = keyStoreProvider;\n this.encryptionAlgorithm = KeyEncryptionAlgorithm.RSA_OAEP;\n }\n\n public async wrapEncryptionKey(plainTextEncryptionKey: Buffer): Promise<Buffer> {\n return this.keyStoreProvider.wrapKey(\n this.path,\n this.encryptionAlgorithm,\n plainTextEncryptionKey,\n );\n }\n\n public async unwrapEncryptionKey(wrappedEncryptionKey: Buffer): Promise<Buffer> {\n return this.keyStoreProvider.unwrapKey(\n this.path,\n this.encryptionAlgorithm,\n wrappedEncryptionKey,\n );\n }\n}\n"]}
1
+ {"version":3,"file":"KeyEncryptionKey.js","sourceRoot":"","sources":["../../../src/encryption/KeyEncryptionKey.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,mBAAmB,CAAyB;IAE7C,IAAI,CAAS;IAEb,IAAI,CAAS;IAEb,gBAAgB,CAA6B;IAEpD,YAAY,IAAY,EAAE,IAAY,EAAE,gBAA4C;QAClF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,mBAAmB,GAAG,sBAAsB,CAAC,QAAQ,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,sBAA8B;QAC3D,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,mBAAmB,EACxB,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,oBAA4B;QAC3D,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,mBAAmB,EACxB,oBAAoB,CACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KeyEncryptionAlgorithm } from \"./enums/KeyEncryptionAlgorithm.js\";\nimport type { EncryptionKeyStoreProvider } from \"./EncryptionKeyStoreProvider.js\";\n/**\n * A wrapper class containing the info about the key-protecting key stored in an external key provider\n * and provides interface to wrap and unwrap the key.\n */\nexport class KeyEncryptionKey {\n private encryptionAlgorithm: KeyEncryptionAlgorithm;\n\n public name: string;\n\n public path: string;\n\n public keyStoreProvider: EncryptionKeyStoreProvider;\n\n constructor(name: string, path: string, keyStoreProvider: EncryptionKeyStoreProvider) {\n this.name = name;\n this.path = path;\n this.keyStoreProvider = keyStoreProvider;\n this.encryptionAlgorithm = KeyEncryptionAlgorithm.RSA_OAEP;\n }\n\n public async wrapEncryptionKey(plainTextEncryptionKey: Buffer): Promise<Buffer> {\n return this.keyStoreProvider.wrapKey(\n this.path,\n this.encryptionAlgorithm,\n plainTextEncryptionKey,\n );\n }\n\n public async unwrapEncryptionKey(wrappedEncryptionKey: Buffer): Promise<Buffer> {\n return this.keyStoreProvider.unwrapKey(\n this.path,\n this.encryptionAlgorithm,\n wrappedEncryptionKey,\n );\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
3
  export class StringSerializer {
4
+ static characterEncoding = "utf-8";
4
5
  deserialize(bytes) {
5
6
  return bytes.toString(StringSerializer.characterEncoding);
6
7
  }
@@ -8,5 +9,4 @@ export class StringSerializer {
8
9
  return Buffer.from(value, StringSerializer.characterEncoding);
9
10
  }
10
11
  }
11
- StringSerializer.characterEncoding = "utf-8";
12
12
  //# sourceMappingURL=StringSerializer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StringSerializer.js","sourceRoot":"","sources":["../../../../src/encryption/Serializers/StringSerializer.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,MAAM,OAAO,gBAAgB;IAG3B,WAAW,CAAC,KAAa;QACvB,OAAO,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAChE,CAAC;;AARc,kCAAiB,GAAmB,OAAO,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Serializer } from \"./Serializer.js\";\n\nexport class StringSerializer implements Serializer {\n private static characterEncoding: BufferEncoding = \"utf-8\";\n\n deserialize(bytes: Buffer): string {\n return bytes.toString(StringSerializer.characterEncoding);\n }\n\n serialize(value: string): Buffer {\n return Buffer.from(value, StringSerializer.characterEncoding);\n }\n}\n"]}
1
+ {"version":3,"file":"StringSerializer.js","sourceRoot":"","sources":["../../../../src/encryption/Serializers/StringSerializer.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAC,iBAAiB,GAAmB,OAAO,CAAC;IAE3D,WAAW,CAAC,KAAa;QACvB,OAAO,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAChE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Serializer } from \"./Serializer.js\";\n\nexport class StringSerializer implements Serializer {\n private static characterEncoding: BufferEncoding = \"utf-8\";\n\n deserialize(bytes: Buffer): string {\n return bytes.toString(StringSerializer.characterEncoding);\n }\n\n serialize(value: string): Buffer {\n return Buffer.from(value, StringSerializer.characterEncoding);\n }\n}\n"]}
@@ -77,11 +77,11 @@ function extractPartitionKey(path, obj) {
77
77
  * @hidden
78
78
  */
79
79
  export function undefinedPartitionKey(partitionKeyDefinition) {
80
- if (partitionKeyDefinition === null || partitionKeyDefinition === void 0 ? void 0 : partitionKeyDefinition.systemKey) {
80
+ if (partitionKeyDefinition?.systemKey) {
81
81
  return [];
82
82
  }
83
83
  else {
84
- return partitionKeyDefinition === null || partitionKeyDefinition === void 0 ? void 0 : partitionKeyDefinition.paths.map(() => NonePartitionKeyLiteral);
84
+ return partitionKeyDefinition?.paths.map(() => NonePartitionKeyLiteral);
85
85
  }
86
86
  }
87
87
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"extractPartitionKey.js","sourceRoot":"","sources":["../../src/extractPartitionKey.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\nimport { parsePath } from \"./common/index.js\";\nimport type {\n PartitionKey,\n PartitionKeyDefinition,\n PartitionKeyInternal,\n PrimitivePartitionKeyValue,\n} from \"./documents/index.js\";\nimport {\n convertToInternalPartitionKey,\n NonePartitionKeyLiteral,\n NullPartitionKeyLiteral,\n} from \"./documents/index.js\";\nimport { DEFAULT_PARTITION_KEY_PATH } from \"./common/partitionKeys.js\";\nimport type { Container } from \"./client/index.js\";\nimport { readPartitionKeyDefinition } from \"./client/ClientUtils.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\n\nconst logger: AzureLogger = createClientLogger(\"extractPartitionKey\");\n\n/**\n * Function to extract PartitionKey based on {@link PartitionKeyDefinition}\n * from an object.\n * Retuns\n * 1. PartitionKeyInternal[] if extraction is successful.\n * 2. undefined if either {@link partitionKeyDefinition} is not well formed\n * or an unsupported partitionkey type is encountered.\n * @hidden\n */\nexport function extractPartitionKeys(\n document: unknown,\n partitionKeyDefinition?: PartitionKeyDefinition,\n): PartitionKeyInternal | undefined {\n if (\n !partitionKeyDefinition ||\n !partitionKeyDefinition.paths ||\n partitionKeyDefinition.paths.length <= 0\n ) {\n logger.error(\"Unexpected Partition Key Definition Found.\");\n return undefined;\n }\n\n if (\n partitionKeyDefinition.paths.length === 1 &&\n partitionKeyDefinition.paths[0] === DEFAULT_PARTITION_KEY_PATH\n ) {\n const defaultKey = extractPartitionKey(DEFAULT_PARTITION_KEY_PATH, document);\n if (defaultKey === undefined) {\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n logger.warning(\"Unsupported PartitionKey found.\");\n return undefined;\n } else if (defaultKey === NullPartitionKeyLiteral || defaultKey === NonePartitionKeyLiteral) {\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n }\n return [defaultKey];\n }\n\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n const partitionKeys: PrimitivePartitionKeyValue[] = [];\n partitionKeyDefinition.paths.forEach((path: string) => {\n const obj = extractPartitionKey(path, document);\n if (obj === undefined) {\n logger.warning(\"Unsupported PartitionKey found.\");\n return undefined;\n }\n partitionKeys.push(obj);\n });\n return partitionKeys;\n}\n\nfunction extractPartitionKey(path: string, obj: unknown): any {\n const pathParts: string[] = parsePath(path);\n for (const part of pathParts) {\n if (typeof obj === \"object\" && obj !== null && part in obj) {\n obj = (obj as Record<string, unknown>)[part];\n } else {\n obj = undefined;\n break;\n }\n }\n if (typeof obj === \"string\" || typeof obj === \"number\" || typeof obj === \"boolean\") {\n return obj;\n } else if (obj === NullPartitionKeyLiteral) {\n return NullPartitionKeyLiteral;\n } else if (obj === undefined || JSON.stringify(obj) === JSON.stringify(NonePartitionKeyLiteral)) {\n return NonePartitionKeyLiteral;\n }\n return undefined;\n}\n\n/**\n * @hidden\n */\nexport function undefinedPartitionKey(\n partitionKeyDefinition: PartitionKeyDefinition,\n): PartitionKeyInternal {\n if (partitionKeyDefinition?.systemKey) {\n return [];\n } else {\n return partitionKeyDefinition?.paths.map(() => NonePartitionKeyLiteral);\n }\n}\n\n/**\n * @hidden\n */\nexport async function setPartitionKeyIfUndefined(\n diagnosticNode: DiagnosticNodeInternal,\n container: Container,\n partitionKey: PartitionKey,\n): Promise<PartitionKeyInternal> {\n if (partitionKey === undefined) {\n const partitionKeyDefinition = await readPartitionKeyDefinition(diagnosticNode, container);\n partitionKey = undefinedPartitionKey(partitionKeyDefinition);\n }\n return convertToInternalPartitionKey(partitionKey);\n}\n"]}
1
+ {"version":3,"file":"extractPartitionKey.js","sourceRoot":"","sources":["../../src/extractPartitionKey.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\nimport { parsePath } from \"./common/index.js\";\nimport type {\n PartitionKey,\n PartitionKeyDefinition,\n PartitionKeyInternal,\n PrimitivePartitionKeyValue,\n} from \"./documents/index.js\";\nimport {\n convertToInternalPartitionKey,\n NonePartitionKeyLiteral,\n NullPartitionKeyLiteral,\n} from \"./documents/index.js\";\nimport { DEFAULT_PARTITION_KEY_PATH } from \"./common/partitionKeys.js\";\nimport type { Container } from \"./client/index.js\";\nimport { readPartitionKeyDefinition } from \"./client/ClientUtils.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\n\nconst logger: AzureLogger = createClientLogger(\"extractPartitionKey\");\n\n/**\n * Function to extract PartitionKey based on {@link PartitionKeyDefinition}\n * from an object.\n * Retuns\n * 1. PartitionKeyInternal[] if extraction is successful.\n * 2. undefined if either {@link partitionKeyDefinition} is not well formed\n * or an unsupported partitionkey type is encountered.\n * @hidden\n */\nexport function extractPartitionKeys(\n document: unknown,\n partitionKeyDefinition?: PartitionKeyDefinition,\n): PartitionKeyInternal | undefined {\n if (\n !partitionKeyDefinition ||\n !partitionKeyDefinition.paths ||\n partitionKeyDefinition.paths.length <= 0\n ) {\n logger.error(\"Unexpected Partition Key Definition Found.\");\n return undefined;\n }\n\n if (\n partitionKeyDefinition.paths.length === 1 &&\n partitionKeyDefinition.paths[0] === DEFAULT_PARTITION_KEY_PATH\n ) {\n const defaultKey = extractPartitionKey(DEFAULT_PARTITION_KEY_PATH, document);\n if (defaultKey === undefined) {\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n logger.warning(\"Unsupported PartitionKey found.\");\n return undefined;\n } else if (defaultKey === NullPartitionKeyLiteral || defaultKey === NonePartitionKeyLiteral) {\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n }\n return [defaultKey];\n }\n\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n const partitionKeys: PrimitivePartitionKeyValue[] = [];\n partitionKeyDefinition.paths.forEach((path: string) => {\n const obj = extractPartitionKey(path, document);\n if (obj === undefined) {\n logger.warning(\"Unsupported PartitionKey found.\");\n return undefined;\n }\n partitionKeys.push(obj);\n });\n return partitionKeys;\n}\n\nfunction extractPartitionKey(path: string, obj: unknown): any {\n const pathParts: string[] = parsePath(path);\n for (const part of pathParts) {\n if (typeof obj === \"object\" && obj !== null && part in obj) {\n obj = (obj as Record<string, unknown>)[part];\n } else {\n obj = undefined;\n break;\n }\n }\n if (typeof obj === \"string\" || typeof obj === \"number\" || typeof obj === \"boolean\") {\n return obj;\n } else if (obj === NullPartitionKeyLiteral) {\n return NullPartitionKeyLiteral;\n } else if (obj === undefined || JSON.stringify(obj) === JSON.stringify(NonePartitionKeyLiteral)) {\n return NonePartitionKeyLiteral;\n }\n return undefined;\n}\n\n/**\n * @hidden\n */\nexport function undefinedPartitionKey(\n partitionKeyDefinition: PartitionKeyDefinition,\n): PartitionKeyInternal {\n if (partitionKeyDefinition?.systemKey) {\n return [];\n } else {\n return partitionKeyDefinition?.paths.map(() => NonePartitionKeyLiteral);\n }\n}\n\n/**\n * @hidden\n */\nexport async function setPartitionKeyIfUndefined(\n diagnosticNode: DiagnosticNodeInternal,\n container: Container,\n partitionKey: PartitionKey,\n): Promise<PartitionKeyInternal> {\n if (partitionKey === undefined) {\n const partitionKeyDefinition = await readPartitionKeyDefinition(diagnosticNode, container);\n partitionKey = undefinedPartitionKey(partitionKeyDefinition);\n }\n return convertToInternalPartitionKey(partitionKey);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"globalEndpointManager.d.ts","sourceRoot":"","sources":["../../src/globalEndpointManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,MAAM,mBAAmB,CAAC;AAE/E,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAKtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAItF;;;GAGG;AACH,qBAAa,qBAAqB;IA4B9B,OAAO,CAAC,mBAAmB;IA3B7B;;OAEG;IACH,OAAO,CAAC,eAAe,CAAS;IAChC;;OAEG;IACI,uBAAuB,EAAE,OAAO,CAAC;IACxC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,OAAO,CAAsB;IACrC;;OAEG;IACH,OAAO,CAAC,kBAAkB,CAAW;IACrC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,4BAA4B,CAAkB;IACtD,OAAO,CAAC,6BAA6B,CAAkB;IACvD,OAAO,CAAC,4BAA4B,CAAU;IAEvC,uBAAuB,EAAE,MAAM,CAAC;IAoBvC;;OAEG;IACU,eAAe,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrF;;OAEG;IACU,gBAAgB,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAIlD,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAIhE;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAIpD,qCAAqC,CAChD,cAAc,EAAE,sBAAsB,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAUH,sCAAsC,CACjD,cAAc,EAAE,sBAAsB,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAYT,4BAA4B,CACjC,YAAY,CAAC,EAAE,YAAY,EAC3B,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO;IAcG,sBAAsB,CACjC,cAAc,EAAE,sBAAsB,EACtC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,yBAAyB,GAAE,MAAU,GACpC,OAAO,CAAC,MAAM,CAAC;IAyElB;;;;;OAKG;IACU,mBAAmB,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvF,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,gCAAgC;IAexC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,4BAA4B;IAYpC;;;;OAIG;YACW,iCAAiC;IAuC/C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CA4BrC"}
1
+ {"version":3,"file":"globalEndpointManager.d.ts","sourceRoot":"","sources":["../../src/globalEndpointManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,MAAM,mBAAmB,CAAC;AAE/E,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAKtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAItF;;;GAGG;AACH,qBAAa,qBAAqB;IA4B9B,OAAO,CAAC,mBAAmB;IA3B7B;;OAEG;IACH,OAAO,CAAC,eAAe,CAAS;IAChC;;OAEG;IACI,uBAAuB,EAAE,OAAO,CAAC;IACxC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,OAAO,CAAsB;IACrC;;OAEG;IACH,OAAO,CAAC,kBAAkB,CAAW;IACrC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,4BAA4B,CAAkB;IACtD,OAAO,CAAC,6BAA6B,CAAkB;IACvD,OAAO,CAAC,4BAA4B,CAAU;IAEvC,uBAAuB,EAAE,MAAM,CAAC;IAoBvC;;OAEG;IACU,eAAe,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrF;;OAEG;IACU,gBAAgB,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAIlD,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAIhE;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAIpD,qCAAqC,CAChD,cAAc,EAAE,sBAAsB,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAUH,sCAAsC,CACjD,cAAc,EAAE,sBAAsB,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAYT,4BAA4B,CACjC,YAAY,CAAC,EAAE,YAAY,EAC3B,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO;IAcG,sBAAsB,CACjC,cAAc,EAAE,sBAAsB,EACtC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,yBAAyB,GAAE,MAAU,GACpC,OAAO,CAAC,MAAM,CAAC;IAyElB;;;;;OAKG;IACU,mBAAmB,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvF,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,gCAAgC;IAexC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,4BAA4B;IAQpC;;;;OAIG;YACW,iCAAiC;IAuC/C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CA4BrC"}
@@ -10,16 +10,33 @@ import { normalizeEndpoint } from "./utils/checkURL.js";
10
10
  * This internal class implements the logic for endpoint management for geo-replicated database accounts.
11
11
  */
12
12
  export class GlobalEndpointManager {
13
+ readDatabaseAccount;
14
+ /**
15
+ * The endpoint used to create the client instance.
16
+ */
17
+ defaultEndpoint;
18
+ /**
19
+ * Flag to enable/disable automatic redirecting of requests based on read/write operations.
20
+ */
21
+ enableEndpointDiscovery;
22
+ isRefreshing;
23
+ options;
24
+ /**
25
+ * List of azure regions to be used as preferred locations for read requests.
26
+ */
27
+ preferredLocations;
28
+ writeableLocations = [];
29
+ readableLocations = [];
30
+ unavailableReadableLocations = [];
31
+ unavailableWriteableLocations = [];
32
+ enableMultipleWriteLocations;
33
+ preferredLocationsCount;
13
34
  /**
14
35
  * @param options - The document client instance.
15
36
  * @internal
16
37
  */
17
38
  constructor(options, readDatabaseAccount) {
18
39
  this.readDatabaseAccount = readDatabaseAccount;
19
- this.writeableLocations = [];
20
- this.readableLocations = [];
21
- this.unavailableReadableLocations = [];
22
- this.unavailableWriteableLocations = [];
23
40
  this.options = options;
24
41
  this.defaultEndpoint = options.endpoint;
25
42
  this.enableEndpointDiscovery = options.connectionPolicy.enableEndpointDiscovery;
@@ -151,18 +168,18 @@ export class GlobalEndpointManager {
151
168
  }
152
169
  }
153
170
  refreshEndpoints(databaseAccount) {
154
- for (const location of databaseAccount.writableLocations) {
155
- const existingLocation = this.writeableLocations.find((loc) => loc.name === location.name);
156
- if (!existingLocation) {
157
- this.writeableLocations.push(location);
158
- }
159
- }
160
- for (const location of databaseAccount.readableLocations) {
161
- const existingLocation = this.readableLocations.find((loc) => loc.name === location.name);
162
- if (!existingLocation) {
163
- this.readableLocations.push(location);
171
+ const oldWritableLocations = this.writeableLocations;
172
+ const oldReadableLocations = this.readableLocations;
173
+ function merge(loc, oldList) {
174
+ const prev = oldList.find((o) => o.name === loc.name);
175
+ if (prev) {
176
+ loc.unavailable = prev.unavailable;
177
+ loc.lastUnavailabilityTimestampInMs = prev.lastUnavailabilityTimestampInMs;
164
178
  }
179
+ return loc;
165
180
  }
181
+ this.writeableLocations = databaseAccount.writableLocations.map((loc) => merge({ ...loc }, oldWritableLocations));
182
+ this.readableLocations = databaseAccount.readableLocations.map((loc) => merge({ ...loc }, oldReadableLocations));
166
183
  }
167
184
  refreshStaleUnavailableLocations() {
168
185
  const now = Date.now();
@@ -179,21 +196,17 @@ export class GlobalEndpointManager {
179
196
  */
180
197
  updateLocation(now, unavailableLocations, allLocations) {
181
198
  for (const location of unavailableLocations) {
182
- const unavaialableLocation = allLocations.find((loc) => loc.name === location.name);
183
- if (unavaialableLocation &&
184
- now - unavaialableLocation.lastUnavailabilityTimestampInMs >
199
+ const unavailableLocation = allLocations.find((loc) => loc.name === location.name);
200
+ if (unavailableLocation &&
201
+ now - unavailableLocation.lastUnavailabilityTimestampInMs >
185
202
  Constants.LocationUnavailableExpirationTimeInMs) {
186
- unavaialableLocation.unavailable = false;
203
+ unavailableLocation.unavailable = false;
187
204
  }
188
205
  }
189
206
  }
190
207
  cleanUnavailableLocationList(now, unavailableLocations) {
191
208
  return unavailableLocations.filter((loc) => {
192
- if (loc &&
193
- now - loc.lastUnavailabilityTimestampInMs >= Constants.LocationUnavailableExpirationTimeInMs) {
194
- return false;
195
- }
196
- return true;
209
+ return (now - loc.lastUnavailabilityTimestampInMs < Constants.LocationUnavailableExpirationTimeInMs);
197
210
  });
198
211
  }
199
212
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"globalEndpointManager.js","sourceRoot":"","sources":["../../src/globalEndpointManager.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { OperationType, ResourceType, isReadRequest } from \"./common/index.js\";\nimport type { CosmosClientOptions } from \"./CosmosClientOptions.js\";\nimport type { Location, DatabaseAccount } from \"./documents/index.js\";\nimport type { RequestOptions } from \"./index.js\";\nimport { Constants } from \"./common/constants.js\";\nimport type { ResourceResponse } from \"./request/index.js\";\nimport { MetadataLookUpType } from \"./CosmosDiagnostics.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport { withMetadataDiagnostics } from \"./utils/diagnostics.js\";\nimport { normalizeEndpoint } from \"./utils/checkURL.js\";\n\n/**\n * @hidden\n * This internal class implements the logic for endpoint management for geo-replicated database accounts.\n */\nexport class GlobalEndpointManager {\n /**\n * The endpoint used to create the client instance.\n */\n private defaultEndpoint: string;\n /**\n * Flag to enable/disable automatic redirecting of requests based on read/write operations.\n */\n public enableEndpointDiscovery: boolean;\n private isRefreshing: boolean;\n private options: CosmosClientOptions;\n /**\n * List of azure regions to be used as preferred locations for read requests.\n */\n private preferredLocations: string[];\n private writeableLocations: Location[] = [];\n private readableLocations: Location[] = [];\n private unavailableReadableLocations: Location[] = [];\n private unavailableWriteableLocations: Location[] = [];\n private enableMultipleWriteLocations: boolean;\n\n public preferredLocationsCount: number;\n /**\n * @param options - The document client instance.\n * @internal\n */\n constructor(\n options: CosmosClientOptions,\n private readDatabaseAccount: (\n diagnosticNode: DiagnosticNodeInternal,\n opts: RequestOptions,\n ) => Promise<ResourceResponse<DatabaseAccount>>,\n ) {\n this.options = options;\n this.defaultEndpoint = options.endpoint;\n this.enableEndpointDiscovery = options.connectionPolicy.enableEndpointDiscovery;\n this.isRefreshing = false;\n this.preferredLocations = this.options.connectionPolicy.preferredLocations;\n this.preferredLocationsCount = this.preferredLocations ? this.preferredLocations.length : 0;\n }\n\n /**\n * Gets the current read endpoint from the endpoint cache.\n */\n public async getReadEndpoint(diagnosticNode: DiagnosticNodeInternal): Promise<string> {\n return this.resolveServiceEndpoint(diagnosticNode, ResourceType.item, OperationType.Read);\n }\n\n /**\n * Gets the current write endpoint from the endpoint cache.\n */\n public async getWriteEndpoint(diagnosticNode: DiagnosticNodeInternal): Promise<string> {\n return this.resolveServiceEndpoint(diagnosticNode, ResourceType.item, OperationType.Replace);\n }\n\n public async getReadEndpoints(): Promise<ReadonlyArray<string>> {\n return this.readableLocations.map((loc) => loc.databaseAccountEndpoint);\n }\n\n public async getWriteEndpoints(): Promise<ReadonlyArray<string>> {\n return this.writeableLocations.map((loc) => loc.databaseAccountEndpoint);\n }\n\n /**\n * Gets the read locations from the endpoint cache.\n */\n public async getReadLocations(): Promise<ReadonlyArray<Location>> {\n return this.readableLocations;\n }\n\n public async markCurrentLocationUnavailableForRead(\n diagnosticNode: DiagnosticNodeInternal,\n endpoint: string,\n ): Promise<void> {\n await this.refreshEndpointList(diagnosticNode);\n const location = this.readableLocations.find((loc) => loc.databaseAccountEndpoint === endpoint);\n if (location) {\n location.unavailable = true;\n location.lastUnavailabilityTimestampInMs = Date.now();\n this.unavailableReadableLocations.push(location);\n }\n }\n\n public async markCurrentLocationUnavailableForWrite(\n diagnosticNode: DiagnosticNodeInternal,\n endpoint: string,\n ): Promise<void> {\n await this.refreshEndpointList(diagnosticNode);\n const location = this.writeableLocations.find(\n (loc) => loc.databaseAccountEndpoint === endpoint,\n );\n if (location) {\n location.unavailable = true;\n location.lastUnavailabilityTimestampInMs = Date.now();\n this.unavailableWriteableLocations.push(location);\n }\n }\n\n public canUseMultipleWriteLocations(\n resourceType?: ResourceType,\n operationType?: OperationType,\n ): boolean {\n let canUse =\n this.options.connectionPolicy.useMultipleWriteLocations && this.enableMultipleWriteLocations;\n\n if (resourceType) {\n canUse =\n canUse &&\n (resourceType === ResourceType.item ||\n (resourceType === ResourceType.sproc && operationType === OperationType.Execute));\n }\n\n return canUse;\n }\n\n public async resolveServiceEndpoint(\n diagnosticNode: DiagnosticNodeInternal,\n resourceType: ResourceType,\n operationType: OperationType,\n startServiceEndpointIndex: number = 0, // Represents the starting index for selecting servers.\n ): Promise<string> {\n // If endpoint discovery is disabled, always use the user provided endpoint\n\n if (!this.options.connectionPolicy.enableEndpointDiscovery) {\n diagnosticNode.addData({ readFromCache: true }, \"default_endpoint\");\n diagnosticNode.recordEndpointResolution(this.defaultEndpoint);\n return this.defaultEndpoint;\n }\n\n // If getting the database account, always use the user provided endpoint\n if (resourceType === ResourceType.none) {\n diagnosticNode.addData({ readFromCache: true }, \"none_resource\");\n diagnosticNode.recordEndpointResolution(this.defaultEndpoint);\n return this.defaultEndpoint;\n }\n\n if (this.readableLocations.length === 0 || this.writeableLocations.length === 0) {\n const resourceResponse = await withMetadataDiagnostics(\n async (metadataNode: DiagnosticNodeInternal) => {\n return this.readDatabaseAccount(metadataNode, {\n urlConnection: this.defaultEndpoint,\n });\n },\n diagnosticNode,\n MetadataLookUpType.DatabaseAccountLookUp,\n );\n\n this.writeableLocations = resourceResponse.resource.writableLocations;\n this.readableLocations = resourceResponse.resource.readableLocations;\n this.enableMultipleWriteLocations = resourceResponse.resource.enableMultipleWritableLocations;\n }\n\n const locations = isReadRequest(operationType)\n ? this.readableLocations\n : this.writeableLocations;\n\n let location;\n // If we have preferred locations, try each one in order and use the first available one\n if (\n this.preferredLocations &&\n this.preferredLocations.length > 0 &&\n startServiceEndpointIndex < this.preferredLocations.length\n ) {\n for (let i = startServiceEndpointIndex; i < this.preferredLocations.length; i++) {\n const preferredLocation = this.preferredLocations[i];\n location = locations.find(\n (loc) =>\n loc.unavailable !== true &&\n normalizeEndpoint(loc.name) === normalizeEndpoint(preferredLocation),\n );\n if (location) {\n break;\n }\n }\n }\n\n // If no preferred locations or one did not match, just grab the first one that is available\n if (!location) {\n const startIndexValid =\n startServiceEndpointIndex >= 0 && startServiceEndpointIndex < locations.length;\n const locationsToSearch = startIndexValid\n ? locations.slice(startServiceEndpointIndex)\n : locations;\n location = locationsToSearch.find((loc) => {\n return loc.unavailable !== true;\n });\n }\n\n location = location ? location : { name: \"\", databaseAccountEndpoint: this.defaultEndpoint };\n diagnosticNode.recordEndpointResolution(location.databaseAccountEndpoint);\n return location.databaseAccountEndpoint;\n }\n\n /**\n * Refreshes the endpoint list by clearning stale unavailability and then\n * retrieving the writable and readable locations from the geo-replicated database account\n * and then updating the locations cache.\n * We skip the refreshing if enableEndpointDiscovery is set to False\n */\n public async refreshEndpointList(diagnosticNode: DiagnosticNodeInternal): Promise<void> {\n if (!this.isRefreshing && this.enableEndpointDiscovery) {\n this.isRefreshing = true;\n const databaseAccount = await this.getDatabaseAccountFromAnyEndpoint(diagnosticNode);\n if (databaseAccount) {\n this.refreshStaleUnavailableLocations();\n this.refreshEndpoints(databaseAccount);\n }\n this.isRefreshing = false;\n }\n }\n\n private refreshEndpoints(databaseAccount: DatabaseAccount): void {\n for (const location of databaseAccount.writableLocations) {\n const existingLocation = this.writeableLocations.find((loc) => loc.name === location.name);\n if (!existingLocation) {\n this.writeableLocations.push(location);\n }\n }\n for (const location of databaseAccount.readableLocations) {\n const existingLocation = this.readableLocations.find((loc) => loc.name === location.name);\n if (!existingLocation) {\n this.readableLocations.push(location);\n }\n }\n }\n\n private refreshStaleUnavailableLocations(): void {\n const now = Date.now();\n this.updateLocation(now, this.unavailableReadableLocations, this.readableLocations);\n this.unavailableReadableLocations = this.cleanUnavailableLocationList(\n now,\n this.unavailableReadableLocations,\n );\n\n this.updateLocation(now, this.unavailableWriteableLocations, this.writeableLocations);\n this.unavailableWriteableLocations = this.cleanUnavailableLocationList(\n now,\n this.unavailableWriteableLocations,\n );\n }\n\n /**\n * update the locationUnavailability to undefined if the location is available again\n * @param now - current time\n * @param unavailableLocations - list of unavailable locations\n * @param allLocations - list of all locations\n */\n private updateLocation(\n now: number,\n unavailableLocations: Location[],\n allLocations: Location[],\n ): void {\n for (const location of unavailableLocations) {\n const unavaialableLocation = allLocations.find((loc) => loc.name === location.name);\n if (\n unavaialableLocation &&\n now - unavaialableLocation.lastUnavailabilityTimestampInMs >\n Constants.LocationUnavailableExpirationTimeInMs\n ) {\n unavaialableLocation.unavailable = false;\n }\n }\n }\n\n private cleanUnavailableLocationList(now: number, unavailableLocations: Location[]): Location[] {\n return unavailableLocations.filter((loc) => {\n if (\n loc &&\n now - loc.lastUnavailabilityTimestampInMs >= Constants.LocationUnavailableExpirationTimeInMs\n ) {\n return false;\n }\n return true;\n });\n }\n\n /**\n * Gets the database account first by using the default endpoint, and if that doesn't returns\n * use the endpoints for the preferred locations in the order they are specified to get\n * the database account.\n */\n private async getDatabaseAccountFromAnyEndpoint(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<DatabaseAccount> {\n try {\n const options = { urlConnection: this.defaultEndpoint };\n const { resource: databaseAccount } = await this.readDatabaseAccount(diagnosticNode, options);\n return databaseAccount;\n // If for any reason(non - globaldb related), we are not able to get the database\n // account from the above call to readDatabaseAccount,\n // we would try to get this information from any of the preferred locations that the user\n // might have specified (by creating a locational endpoint)\n // and keeping eating the exception until we get the database account and return None at the end,\n // if we are not able to get that info from any endpoints\n } catch (err: any) {\n // TODO: Tracing\n }\n\n if (this.preferredLocations) {\n for (const location of this.preferredLocations) {\n try {\n const locationalEndpoint = GlobalEndpointManager.getLocationalEndpoint(\n this.defaultEndpoint,\n location,\n );\n const options = { urlConnection: locationalEndpoint };\n const { resource: databaseAccount } = await this.readDatabaseAccount(\n diagnosticNode,\n options,\n );\n if (databaseAccount) {\n return databaseAccount;\n }\n } catch (err: any) {\n // TODO: Tracing\n }\n }\n }\n }\n\n /**\n * Gets the locational endpoint using the location name passed to it using the default endpoint.\n *\n * @param defaultEndpoint - The default endpoint to use for the endpoint.\n * @param locationName - The location name for the azure region like \"East US\".\n */\n private static getLocationalEndpoint(defaultEndpoint: string, locationName: string): string {\n // For defaultEndpoint like 'https://contoso.documents.azure.com:443/' parse it to generate URL format\n // This defaultEndpoint should be global endpoint(and cannot be a locational endpoint)\n // and we agreed to document that\n const endpointUrl = new URL(defaultEndpoint);\n\n // hostname attribute in endpointUrl will return 'contoso.documents.azure.com'\n if (endpointUrl.hostname) {\n const hostnameParts = endpointUrl.hostname.toString().toLowerCase().split(\".\");\n if (hostnameParts) {\n // globalDatabaseAccountName will return 'contoso'\n const globalDatabaseAccountName = hostnameParts[0];\n\n // Prepare the locationalDatabaseAccountName as contoso-EastUS for location_name 'East US'\n const locationalDatabaseAccountName =\n globalDatabaseAccountName + \"-\" + locationName.replace(\" \", \"\");\n\n // Replace 'contoso' with 'contoso-EastUS' and\n // return locationalEndpoint as https://contoso-EastUS.documents.azure.com:443/\n const locationalEndpoint = defaultEndpoint\n .toLowerCase()\n .replace(globalDatabaseAccountName, locationalDatabaseAccountName);\n return locationalEndpoint;\n }\n }\n\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"globalEndpointManager.js","sourceRoot":"","sources":["../../src/globalEndpointManager.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAI/E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IA4BtB;IA3BV;;OAEG;IACK,eAAe,CAAS;IAChC;;OAEG;IACI,uBAAuB,CAAU;IAChC,YAAY,CAAU;IACtB,OAAO,CAAsB;IACrC;;OAEG;IACK,kBAAkB,CAAW;IAC7B,kBAAkB,GAAe,EAAE,CAAC;IACpC,iBAAiB,GAAe,EAAE,CAAC;IACnC,4BAA4B,GAAe,EAAE,CAAC;IAC9C,6BAA6B,GAAe,EAAE,CAAC;IAC/C,4BAA4B,CAAU;IAEvC,uBAAuB,CAAS;IACvC;;;OAGG;IACH,YACE,OAA4B,EACpB,mBAGuC;QAHvC,wBAAmB,GAAnB,mBAAmB,CAGoB;QAE/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;QAChF,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;QAC3E,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,cAAsC;QACjE,OAAO,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAAC,cAAsC;QAClE,OAAO,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/F,CAAC;IAEM,KAAK,CAAC,gBAAgB;QAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC1E,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB;QAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,qCAAqC,CAChD,cAAsC,EACtC,QAAgB;QAEhB,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,uBAAuB,KAAK,QAAQ,CAAC,CAAC;QAChG,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5B,QAAQ,CAAC,+BAA+B,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtD,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,sCAAsC,CACjD,cAAsC,EACtC,QAAgB;QAEhB,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAC3C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,uBAAuB,KAAK,QAAQ,CAClD,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5B,QAAQ,CAAC,+BAA+B,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtD,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAEM,4BAA4B,CACjC,YAA2B,EAC3B,aAA6B;QAE7B,IAAI,MAAM,GACR,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,yBAAyB,IAAI,IAAI,CAAC,4BAA4B,CAAC;QAE/F,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM;gBACJ,MAAM;oBACN,CAAC,YAAY,KAAK,YAAY,CAAC,IAAI;wBACjC,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK,IAAI,aAAa,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACxF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,sBAAsB,CACjC,cAAsC,EACtC,YAA0B,EAC1B,aAA4B,EAC5B,4BAAoC,CAAC;QAErC,2EAA2E;QAE3E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,CAAC;YAC3D,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;YACpE,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QAED,yEAAyE;QACzE,IAAI,YAAY,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;YACvC,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;YACjE,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChF,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CACpD,KAAK,EAAE,YAAoC,EAAE,EAAE;gBAC7C,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;oBAC5C,aAAa,EAAE,IAAI,CAAC,eAAe;iBACpC,CAAC,CAAC;YACL,CAAC,EACD,cAAc,EACd,kBAAkB,CAAC,qBAAqB,CACzC,CAAC;YAEF,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACtE,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACrE,IAAI,CAAC,4BAA4B,GAAG,gBAAgB,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QAChG,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,iBAAiB;YACxB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAE5B,IAAI,QAAQ,CAAC;QACb,wFAAwF;QACxF,IACE,IAAI,CAAC,kBAAkB;YACvB,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;YAClC,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAC1D,CAAC;YACD,KAAK,IAAI,CAAC,GAAG,yBAAyB,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChF,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBACrD,QAAQ,GAAG,SAAS,CAAC,IAAI,CACvB,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,WAAW,KAAK,IAAI;oBACxB,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,iBAAiB,CAAC,iBAAiB,CAAC,CACvE,CAAC;gBACF,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,4FAA4F;QAC5F,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,eAAe,GACnB,yBAAyB,IAAI,CAAC,IAAI,yBAAyB,GAAG,SAAS,CAAC,MAAM,CAAC;YACjF,MAAM,iBAAiB,GAAG,eAAe;gBACvC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,yBAAyB,CAAC;gBAC5C,CAAC,CAAC,SAAS,CAAC;YACd,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACxC,OAAO,GAAG,CAAC,WAAW,KAAK,IAAI,CAAC;YAClC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7F,cAAc,CAAC,wBAAwB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QAC1E,OAAO,QAAQ,CAAC,uBAAuB,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,mBAAmB,CAAC,cAAsC;QACrE,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACvD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,cAAc,CAAC,CAAC;YACrF,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,gCAAgC,EAAE,CAAC;gBACxC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,eAAgC;QACvD,MAAM,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACrD,MAAM,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAEpD,SAAS,KAAK,CAAC,GAAa,EAAE,OAAmB;YAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,IAAI,EAAE,CAAC;gBACT,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gBACnC,GAAG,CAAC,+BAA+B,GAAG,IAAI,CAAC,+BAA+B,CAAC;YAC7E,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACtE,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,oBAAoB,CAAC,CACxC,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACrE,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,oBAAoB,CAAC,CACxC,CAAC;IACJ,CAAC;IAEO,gCAAgC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACpF,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CACnE,GAAG,EACH,IAAI,CAAC,4BAA4B,CAClC,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtF,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,4BAA4B,CACpE,GAAG,EACH,IAAI,CAAC,6BAA6B,CACnC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,cAAc,CACpB,GAAW,EACX,oBAAgC,EAChC,YAAwB;QAExB,KAAK,MAAM,QAAQ,IAAI,oBAAoB,EAAE,CAAC;YAC5C,MAAM,mBAAmB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnF,IACE,mBAAmB;gBACnB,GAAG,GAAG,mBAAmB,CAAC,+BAA+B;oBACvD,SAAS,CAAC,qCAAqC,EACjD,CAAC;gBACD,mBAAmB,CAAC,WAAW,GAAG,KAAK,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAEO,4BAA4B,CAAC,GAAW,EAAE,oBAAgC;QAChF,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YACzC,OAAO,CACL,GAAG,GAAG,GAAG,CAAC,+BAA+B,GAAG,SAAS,CAAC,qCAAqC,CAC5F,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,iCAAiC,CAC7C,cAAsC;QAEtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;YACxD,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAC9F,OAAO,eAAe,CAAC;YACvB,iFAAiF;YACjF,sDAAsD;YACtD,yFAAyF;YACzF,2DAA2D;YAC3D,iGAAiG;YACjG,yDAAyD;QAC3D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,gBAAgB;QAClB,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC/C,IAAI,CAAC;oBACH,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,qBAAqB,CACpE,IAAI,CAAC,eAAe,EACpB,QAAQ,CACT,CAAC;oBACF,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;oBACtD,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAClE,cAAc,EACd,OAAO,CACR,CAAC;oBACF,IAAI,eAAe,EAAE,CAAC;wBACpB,OAAO,eAAe,CAAC;oBACzB,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,gBAAgB;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,qBAAqB,CAAC,eAAuB,EAAE,YAAoB;QAChF,sGAAsG;QACtG,sFAAsF;QACtF,iCAAiC;QACjC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;QAE7C,8EAA8E;QAC9E,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/E,IAAI,aAAa,EAAE,CAAC;gBAClB,kDAAkD;gBAClD,MAAM,yBAAyB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAEnD,0FAA0F;gBAC1F,MAAM,6BAA6B,GACjC,yBAAyB,GAAG,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAElE,8CAA8C;gBAC9C,+EAA+E;gBAC/E,MAAM,kBAAkB,GAAG,eAAe;qBACvC,WAAW,EAAE;qBACb,OAAO,CAAC,yBAAyB,EAAE,6BAA6B,CAAC,CAAC;gBACrE,OAAO,kBAAkB,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { OperationType, ResourceType, isReadRequest } from \"./common/index.js\";\nimport type { CosmosClientOptions } from \"./CosmosClientOptions.js\";\nimport type { Location, DatabaseAccount } from \"./documents/index.js\";\nimport type { RequestOptions } from \"./index.js\";\nimport { Constants } from \"./common/constants.js\";\nimport type { ResourceResponse } from \"./request/index.js\";\nimport { MetadataLookUpType } from \"./CosmosDiagnostics.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport { withMetadataDiagnostics } from \"./utils/diagnostics.js\";\nimport { normalizeEndpoint } from \"./utils/checkURL.js\";\n\n/**\n * @hidden\n * This internal class implements the logic for endpoint management for geo-replicated database accounts.\n */\nexport class GlobalEndpointManager {\n /**\n * The endpoint used to create the client instance.\n */\n private defaultEndpoint: string;\n /**\n * Flag to enable/disable automatic redirecting of requests based on read/write operations.\n */\n public enableEndpointDiscovery: boolean;\n private isRefreshing: boolean;\n private options: CosmosClientOptions;\n /**\n * List of azure regions to be used as preferred locations for read requests.\n */\n private preferredLocations: string[];\n private writeableLocations: Location[] = [];\n private readableLocations: Location[] = [];\n private unavailableReadableLocations: Location[] = [];\n private unavailableWriteableLocations: Location[] = [];\n private enableMultipleWriteLocations: boolean;\n\n public preferredLocationsCount: number;\n /**\n * @param options - The document client instance.\n * @internal\n */\n constructor(\n options: CosmosClientOptions,\n private readDatabaseAccount: (\n diagnosticNode: DiagnosticNodeInternal,\n opts: RequestOptions,\n ) => Promise<ResourceResponse<DatabaseAccount>>,\n ) {\n this.options = options;\n this.defaultEndpoint = options.endpoint;\n this.enableEndpointDiscovery = options.connectionPolicy.enableEndpointDiscovery;\n this.isRefreshing = false;\n this.preferredLocations = this.options.connectionPolicy.preferredLocations;\n this.preferredLocationsCount = this.preferredLocations ? this.preferredLocations.length : 0;\n }\n\n /**\n * Gets the current read endpoint from the endpoint cache.\n */\n public async getReadEndpoint(diagnosticNode: DiagnosticNodeInternal): Promise<string> {\n return this.resolveServiceEndpoint(diagnosticNode, ResourceType.item, OperationType.Read);\n }\n\n /**\n * Gets the current write endpoint from the endpoint cache.\n */\n public async getWriteEndpoint(diagnosticNode: DiagnosticNodeInternal): Promise<string> {\n return this.resolveServiceEndpoint(diagnosticNode, ResourceType.item, OperationType.Replace);\n }\n\n public async getReadEndpoints(): Promise<ReadonlyArray<string>> {\n return this.readableLocations.map((loc) => loc.databaseAccountEndpoint);\n }\n\n public async getWriteEndpoints(): Promise<ReadonlyArray<string>> {\n return this.writeableLocations.map((loc) => loc.databaseAccountEndpoint);\n }\n\n /**\n * Gets the read locations from the endpoint cache.\n */\n public async getReadLocations(): Promise<ReadonlyArray<Location>> {\n return this.readableLocations;\n }\n\n public async markCurrentLocationUnavailableForRead(\n diagnosticNode: DiagnosticNodeInternal,\n endpoint: string,\n ): Promise<void> {\n await this.refreshEndpointList(diagnosticNode);\n const location = this.readableLocations.find((loc) => loc.databaseAccountEndpoint === endpoint);\n if (location) {\n location.unavailable = true;\n location.lastUnavailabilityTimestampInMs = Date.now();\n this.unavailableReadableLocations.push(location);\n }\n }\n\n public async markCurrentLocationUnavailableForWrite(\n diagnosticNode: DiagnosticNodeInternal,\n endpoint: string,\n ): Promise<void> {\n await this.refreshEndpointList(diagnosticNode);\n const location = this.writeableLocations.find(\n (loc) => loc.databaseAccountEndpoint === endpoint,\n );\n if (location) {\n location.unavailable = true;\n location.lastUnavailabilityTimestampInMs = Date.now();\n this.unavailableWriteableLocations.push(location);\n }\n }\n\n public canUseMultipleWriteLocations(\n resourceType?: ResourceType,\n operationType?: OperationType,\n ): boolean {\n let canUse =\n this.options.connectionPolicy.useMultipleWriteLocations && this.enableMultipleWriteLocations;\n\n if (resourceType) {\n canUse =\n canUse &&\n (resourceType === ResourceType.item ||\n (resourceType === ResourceType.sproc && operationType === OperationType.Execute));\n }\n\n return canUse;\n }\n\n public async resolveServiceEndpoint(\n diagnosticNode: DiagnosticNodeInternal,\n resourceType: ResourceType,\n operationType: OperationType,\n startServiceEndpointIndex: number = 0, // Represents the starting index for selecting servers.\n ): Promise<string> {\n // If endpoint discovery is disabled, always use the user provided endpoint\n\n if (!this.options.connectionPolicy.enableEndpointDiscovery) {\n diagnosticNode.addData({ readFromCache: true }, \"default_endpoint\");\n diagnosticNode.recordEndpointResolution(this.defaultEndpoint);\n return this.defaultEndpoint;\n }\n\n // If getting the database account, always use the user provided endpoint\n if (resourceType === ResourceType.none) {\n diagnosticNode.addData({ readFromCache: true }, \"none_resource\");\n diagnosticNode.recordEndpointResolution(this.defaultEndpoint);\n return this.defaultEndpoint;\n }\n\n if (this.readableLocations.length === 0 || this.writeableLocations.length === 0) {\n const resourceResponse = await withMetadataDiagnostics(\n async (metadataNode: DiagnosticNodeInternal) => {\n return this.readDatabaseAccount(metadataNode, {\n urlConnection: this.defaultEndpoint,\n });\n },\n diagnosticNode,\n MetadataLookUpType.DatabaseAccountLookUp,\n );\n\n this.writeableLocations = resourceResponse.resource.writableLocations;\n this.readableLocations = resourceResponse.resource.readableLocations;\n this.enableMultipleWriteLocations = resourceResponse.resource.enableMultipleWritableLocations;\n }\n\n const locations = isReadRequest(operationType)\n ? this.readableLocations\n : this.writeableLocations;\n\n let location;\n // If we have preferred locations, try each one in order and use the first available one\n if (\n this.preferredLocations &&\n this.preferredLocations.length > 0 &&\n startServiceEndpointIndex < this.preferredLocations.length\n ) {\n for (let i = startServiceEndpointIndex; i < this.preferredLocations.length; i++) {\n const preferredLocation = this.preferredLocations[i];\n location = locations.find(\n (loc) =>\n loc.unavailable !== true &&\n normalizeEndpoint(loc.name) === normalizeEndpoint(preferredLocation),\n );\n if (location) {\n break;\n }\n }\n }\n\n // If no preferred locations or one did not match, just grab the first one that is available\n if (!location) {\n const startIndexValid =\n startServiceEndpointIndex >= 0 && startServiceEndpointIndex < locations.length;\n const locationsToSearch = startIndexValid\n ? locations.slice(startServiceEndpointIndex)\n : locations;\n location = locationsToSearch.find((loc) => {\n return loc.unavailable !== true;\n });\n }\n\n location = location ? location : { name: \"\", databaseAccountEndpoint: this.defaultEndpoint };\n diagnosticNode.recordEndpointResolution(location.databaseAccountEndpoint);\n return location.databaseAccountEndpoint;\n }\n\n /**\n * Refreshes the endpoint list by clearning stale unavailability and then\n * retrieving the writable and readable locations from the geo-replicated database account\n * and then updating the locations cache.\n * We skip the refreshing if enableEndpointDiscovery is set to False\n */\n public async refreshEndpointList(diagnosticNode: DiagnosticNodeInternal): Promise<void> {\n if (!this.isRefreshing && this.enableEndpointDiscovery) {\n this.isRefreshing = true;\n const databaseAccount = await this.getDatabaseAccountFromAnyEndpoint(diagnosticNode);\n if (databaseAccount) {\n this.refreshStaleUnavailableLocations();\n this.refreshEndpoints(databaseAccount);\n }\n this.isRefreshing = false;\n }\n }\n\n private refreshEndpoints(databaseAccount: DatabaseAccount): void {\n const oldWritableLocations = this.writeableLocations;\n const oldReadableLocations = this.readableLocations;\n\n function merge(loc: Location, oldList: Location[]): Location {\n const prev = oldList.find((o) => o.name === loc.name);\n if (prev) {\n loc.unavailable = prev.unavailable;\n loc.lastUnavailabilityTimestampInMs = prev.lastUnavailabilityTimestampInMs;\n }\n return loc;\n }\n\n this.writeableLocations = databaseAccount.writableLocations.map((loc) =>\n merge({ ...loc }, oldWritableLocations),\n );\n this.readableLocations = databaseAccount.readableLocations.map((loc) =>\n merge({ ...loc }, oldReadableLocations),\n );\n }\n\n private refreshStaleUnavailableLocations(): void {\n const now = Date.now();\n this.updateLocation(now, this.unavailableReadableLocations, this.readableLocations);\n this.unavailableReadableLocations = this.cleanUnavailableLocationList(\n now,\n this.unavailableReadableLocations,\n );\n\n this.updateLocation(now, this.unavailableWriteableLocations, this.writeableLocations);\n this.unavailableWriteableLocations = this.cleanUnavailableLocationList(\n now,\n this.unavailableWriteableLocations,\n );\n }\n\n /**\n * update the locationUnavailability to undefined if the location is available again\n * @param now - current time\n * @param unavailableLocations - list of unavailable locations\n * @param allLocations - list of all locations\n */\n private updateLocation(\n now: number,\n unavailableLocations: Location[],\n allLocations: Location[],\n ): void {\n for (const location of unavailableLocations) {\n const unavailableLocation = allLocations.find((loc) => loc.name === location.name);\n if (\n unavailableLocation &&\n now - unavailableLocation.lastUnavailabilityTimestampInMs >\n Constants.LocationUnavailableExpirationTimeInMs\n ) {\n unavailableLocation.unavailable = false;\n }\n }\n }\n\n private cleanUnavailableLocationList(now: number, unavailableLocations: Location[]): Location[] {\n return unavailableLocations.filter((loc) => {\n return (\n now - loc.lastUnavailabilityTimestampInMs < Constants.LocationUnavailableExpirationTimeInMs\n );\n });\n }\n\n /**\n * Gets the database account first by using the default endpoint, and if that doesn't returns\n * use the endpoints for the preferred locations in the order they are specified to get\n * the database account.\n */\n private async getDatabaseAccountFromAnyEndpoint(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<DatabaseAccount> {\n try {\n const options = { urlConnection: this.defaultEndpoint };\n const { resource: databaseAccount } = await this.readDatabaseAccount(diagnosticNode, options);\n return databaseAccount;\n // If for any reason(non - globaldb related), we are not able to get the database\n // account from the above call to readDatabaseAccount,\n // we would try to get this information from any of the preferred locations that the user\n // might have specified (by creating a locational endpoint)\n // and keeping eating the exception until we get the database account and return None at the end,\n // if we are not able to get that info from any endpoints\n } catch (err: any) {\n // TODO: Tracing\n }\n\n if (this.preferredLocations) {\n for (const location of this.preferredLocations) {\n try {\n const locationalEndpoint = GlobalEndpointManager.getLocationalEndpoint(\n this.defaultEndpoint,\n location,\n );\n const options = { urlConnection: locationalEndpoint };\n const { resource: databaseAccount } = await this.readDatabaseAccount(\n diagnosticNode,\n options,\n );\n if (databaseAccount) {\n return databaseAccount;\n }\n } catch (err: any) {\n // TODO: Tracing\n }\n }\n }\n }\n\n /**\n * Gets the locational endpoint using the location name passed to it using the default endpoint.\n *\n * @param defaultEndpoint - The default endpoint to use for the endpoint.\n * @param locationName - The location name for the azure region like \"East US\".\n */\n private static getLocationalEndpoint(defaultEndpoint: string, locationName: string): string {\n // For defaultEndpoint like 'https://contoso.documents.azure.com:443/' parse it to generate URL format\n // This defaultEndpoint should be global endpoint(and cannot be a locational endpoint)\n // and we agreed to document that\n const endpointUrl = new URL(defaultEndpoint);\n\n // hostname attribute in endpointUrl will return 'contoso.documents.azure.com'\n if (endpointUrl.hostname) {\n const hostnameParts = endpointUrl.hostname.toString().toLowerCase().split(\".\");\n if (hostnameParts) {\n // globalDatabaseAccountName will return 'contoso'\n const globalDatabaseAccountName = hostnameParts[0];\n\n // Prepare the locationalDatabaseAccountName as contoso-EastUS for location_name 'East US'\n const locationalDatabaseAccountName =\n globalDatabaseAccountName + \"-\" + locationName.replace(\" \", \"\");\n\n // Replace 'contoso' with 'contoso-EastUS' and\n // return locationalEndpoint as https://contoso-EastUS.documents.azure.com:443/\n const locationalEndpoint = defaultEndpoint\n .toLowerCase()\n .replace(globalDatabaseAccountName, locationalDatabaseAccountName);\n return locationalEndpoint;\n }\n }\n\n return null;\n }\n}\n"]}
@@ -11,6 +11,14 @@ import { assertNotUndefined } from "./utils/typeChecks.js";
11
11
  * This class is used to failover single partitions to different regions.
12
12
  */
13
13
  export class GlobalPartitionEndpointManager {
14
+ globalEndpointManager;
15
+ partitionKeyRangeToLocationForWrite;
16
+ partitionKeyRangeToLocationForReadAndWrite;
17
+ enablePartitionLevelFailover;
18
+ enablePartitionLevelCircuitBreaker;
19
+ preferredLocations;
20
+ preferredLocationsCount;
21
+ circuitBreakerFailbackBackgroundRefresher;
14
22
  /**
15
23
  * @internal
16
24
  */