@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
@@ -6,6 +6,10 @@ import { ConsistencyLevel } from "./ConsistencyLevel.js";
6
6
  * Represents a DatabaseAccount in the Azure Cosmos DB database service.
7
7
  */
8
8
  export class DatabaseAccount {
9
+ /** The list of writable locations for a geo-replicated database account. */
10
+ writableLocations = [];
11
+ /** The list of readable locations for a geo-replicated database account. */
12
+ readableLocations = [];
9
13
  /**
10
14
  * The self-link for Databases in the databaseAccount.
11
15
  * @deprecated Use `databasesLink`
@@ -13,6 +17,8 @@ export class DatabaseAccount {
13
17
  get DatabasesLink() {
14
18
  return this.databasesLink;
15
19
  }
20
+ /** The self-link for Databases in the databaseAccount. */
21
+ databasesLink;
16
22
  /**
17
23
  * The self-link for Media in the databaseAccount.
18
24
  * @deprecated Use `mediaLink`
@@ -20,6 +26,8 @@ export class DatabaseAccount {
20
26
  get MediaLink() {
21
27
  return this.mediaLink;
22
28
  }
29
+ /** The self-link for Media in the databaseAccount. */
30
+ mediaLink;
23
31
  /**
24
32
  * Attachment content (media) storage quota in MBs ( Retrieved from gateway ).
25
33
  * @deprecated use `maxMediaStorageUsageInMB`
@@ -27,6 +35,8 @@ export class DatabaseAccount {
27
35
  get MaxMediaStorageUsageInMB() {
28
36
  return this.maxMediaStorageUsageInMB;
29
37
  }
38
+ /** Attachment content (media) storage quota in MBs ( Retrieved from gateway ). */
39
+ maxMediaStorageUsageInMB;
30
40
  /**
31
41
  * Current attachment content (media) usage in MBs (Retrieved from gateway )
32
42
  *
@@ -38,6 +48,13 @@ export class DatabaseAccount {
38
48
  get CurrentMediaStorageUsageInMB() {
39
49
  return this.currentMediaStorageUsageInMB;
40
50
  }
51
+ /**
52
+ * Current attachment content (media) usage in MBs (Retrieved from gateway )
53
+ *
54
+ * Value is returned from cached information updated periodically and is not guaranteed
55
+ * to be real time.
56
+ */
57
+ currentMediaStorageUsageInMB;
41
58
  /**
42
59
  * Gets the UserConsistencyPolicy settings.
43
60
  * @deprecated use `consistencyPolicy`
@@ -45,12 +62,11 @@ export class DatabaseAccount {
45
62
  get ConsistencyPolicy() {
46
63
  return this.consistencyPolicy;
47
64
  }
65
+ /** Gets the UserConsistencyPolicy settings. */
66
+ consistencyPolicy;
67
+ enableMultipleWritableLocations;
48
68
  // TODO: body - any
49
69
  constructor(body, headers) {
50
- /** The list of writable locations for a geo-replicated database account. */
51
- this.writableLocations = [];
52
- /** The list of readable locations for a geo-replicated database account. */
53
- this.readableLocations = [];
54
70
  this.databasesLink = "/dbs/";
55
71
  this.mediaLink = "/media/";
56
72
  this.maxMediaStorageUsageInMB = headers[Constants.HttpHeaders.MaxMediaStorageUsageInMB];
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseAccount.js","sourceRoot":"","sources":["../../../src/documents/DatabaseAccount.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,OAAO,eAAe;IAK1B;;;OAGG;IACH,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAGD;;;OAGG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAGD;;;OAGG;IACH,IAAW,wBAAwB;QACjC,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACvC,CAAC;IAGD;;;;;;;OAOG;IACH,IAAW,4BAA4B;QACrC,OAAO,IAAI,CAAC,4BAA4B,CAAC;IAC3C,CAAC;IAQD;;;OAGG;IACH,IAAW,iBAAiB;QAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAKD,mBAAmB;IACnB,YAAmB,IAA4B,EAAE,OAAsB;QA7DvE,4EAA4E;QAC5D,sBAAiB,GAAe,EAAE,CAAC;QACnD,4EAA4E;QAC5D,sBAAiB,GAAe,EAAE,CAAC;QA2DjD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;QACxF,IAAI,CAAC,4BAA4B,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;QAChG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB;YACjD,CAAC,CAAE,IAAI,CAAC,qBAAqB,CAAC,uBAA4C;YAC1E,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,WAAW,EAAE,CAAC;YACjE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAe,CAAC;QAC3E,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,WAAW,EAAE,CAAC;YACjE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAe,CAAC;QAC3E,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,kCAAkC,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,+BAA+B;gBAClC,IAAI,CAAC,SAAS,CAAC,kCAAkC,CAAC,KAAK,IAAI;oBAC3D,IAAI,CAAC,SAAS,CAAC,kCAAkC,CAAC,KAAK,MAAM,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAC;QAC/C,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants } from \"../common/index.js\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/index.js\";\nimport { ConsistencyLevel } from \"./ConsistencyLevel.js\";\n\n/**\n * Represents a DatabaseAccount in the Azure Cosmos DB database service.\n */\nexport class DatabaseAccount {\n /** The list of writable locations for a geo-replicated database account. */\n public readonly writableLocations: Location[] = [];\n /** The list of readable locations for a geo-replicated database account. */\n public readonly readableLocations: Location[] = [];\n /**\n * The self-link for Databases in the databaseAccount.\n * @deprecated Use `databasesLink`\n */\n public get DatabasesLink(): string {\n return this.databasesLink;\n }\n /** The self-link for Databases in the databaseAccount. */\n public readonly databasesLink: string;\n /**\n * The self-link for Media in the databaseAccount.\n * @deprecated Use `mediaLink`\n */\n public get MediaLink(): string {\n return this.mediaLink;\n }\n /** The self-link for Media in the databaseAccount. */\n public readonly mediaLink: string;\n /**\n * Attachment content (media) storage quota in MBs ( Retrieved from gateway ).\n * @deprecated use `maxMediaStorageUsageInMB`\n */\n public get MaxMediaStorageUsageInMB(): number {\n return this.maxMediaStorageUsageInMB;\n }\n /** Attachment content (media) storage quota in MBs ( Retrieved from gateway ). */\n public readonly maxMediaStorageUsageInMB: number;\n /**\n * Current attachment content (media) usage in MBs (Retrieved from gateway )\n *\n * Value is returned from cached information updated periodically and is not guaranteed\n * to be real time.\n *\n * @deprecated use `currentMediaStorageUsageInMB`\n */\n public get CurrentMediaStorageUsageInMB(): number {\n return this.currentMediaStorageUsageInMB;\n }\n /**\n * Current attachment content (media) usage in MBs (Retrieved from gateway )\n *\n * Value is returned from cached information updated periodically and is not guaranteed\n * to be real time.\n */\n public readonly currentMediaStorageUsageInMB: number;\n /**\n * Gets the UserConsistencyPolicy settings.\n * @deprecated use `consistencyPolicy`\n */\n public get ConsistencyPolicy(): ConsistencyLevel {\n return this.consistencyPolicy;\n }\n /** Gets the UserConsistencyPolicy settings. */\n public readonly consistencyPolicy: ConsistencyLevel;\n public readonly enableMultipleWritableLocations: boolean;\n\n // TODO: body - any\n public constructor(body: { [key: string]: any }, headers: CosmosHeaders) {\n this.databasesLink = \"/dbs/\";\n this.mediaLink = \"/media/\";\n this.maxMediaStorageUsageInMB = headers[Constants.HttpHeaders.MaxMediaStorageUsageInMB];\n this.currentMediaStorageUsageInMB = headers[Constants.HttpHeaders.CurrentMediaStorageUsageInMB];\n this.consistencyPolicy = body.userConsistencyPolicy\n ? (body.userConsistencyPolicy.defaultConsistencyLevel as ConsistencyLevel)\n : ConsistencyLevel.Session;\n if (body[Constants.WritableLocations] && body.id !== \"localhost\") {\n this.writableLocations = body[Constants.WritableLocations] as Location[];\n }\n if (body[Constants.ReadableLocations] && body.id !== \"localhost\") {\n this.readableLocations = body[Constants.ReadableLocations] as Location[];\n }\n if (body[Constants.ENABLE_MULTIPLE_WRITABLE_LOCATIONS]) {\n this.enableMultipleWritableLocations =\n body[Constants.ENABLE_MULTIPLE_WRITABLE_LOCATIONS] === true ||\n body[Constants.ENABLE_MULTIPLE_WRITABLE_LOCATIONS] === \"true\";\n } else {\n this.enableMultipleWritableLocations = false;\n }\n }\n}\n\n/**\n * Used to specify the locations that are available, read is index 1 and write is index 0.\n */\nexport interface Location {\n name: string;\n databaseAccountEndpoint: string;\n unavailable?: boolean;\n lastUnavailabilityTimestampInMs?: number;\n}\n"]}
1
+ {"version":3,"file":"DatabaseAccount.js","sourceRoot":"","sources":["../../../src/documents/DatabaseAccount.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B,4EAA4E;IAC5D,iBAAiB,GAAe,EAAE,CAAC;IACnD,4EAA4E;IAC5D,iBAAiB,GAAe,EAAE,CAAC;IACnD;;;OAGG;IACH,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IACD,0DAA0D;IAC1C,aAAa,CAAS;IACtC;;;OAGG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,sDAAsD;IACtC,SAAS,CAAS;IAClC;;;OAGG;IACH,IAAW,wBAAwB;QACjC,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACvC,CAAC;IACD,kFAAkF;IAClE,wBAAwB,CAAS;IACjD;;;;;;;OAOG;IACH,IAAW,4BAA4B;QACrC,OAAO,IAAI,CAAC,4BAA4B,CAAC;IAC3C,CAAC;IACD;;;;;OAKG;IACa,4BAA4B,CAAS;IACrD;;;OAGG;IACH,IAAW,iBAAiB;QAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IACD,+CAA+C;IAC/B,iBAAiB,CAAmB;IACpC,+BAA+B,CAAU;IAEzD,mBAAmB;IACnB,YAAmB,IAA4B,EAAE,OAAsB;QACrE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;QACxF,IAAI,CAAC,4BAA4B,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;QAChG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB;YACjD,CAAC,CAAE,IAAI,CAAC,qBAAqB,CAAC,uBAA4C;YAC1E,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,WAAW,EAAE,CAAC;YACjE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAe,CAAC;QAC3E,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,WAAW,EAAE,CAAC;YACjE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAe,CAAC;QAC3E,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,kCAAkC,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,+BAA+B;gBAClC,IAAI,CAAC,SAAS,CAAC,kCAAkC,CAAC,KAAK,IAAI;oBAC3D,IAAI,CAAC,SAAS,CAAC,kCAAkC,CAAC,KAAK,MAAM,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAC;QAC/C,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants } from \"../common/index.js\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/index.js\";\nimport { ConsistencyLevel } from \"./ConsistencyLevel.js\";\n\n/**\n * Represents a DatabaseAccount in the Azure Cosmos DB database service.\n */\nexport class DatabaseAccount {\n /** The list of writable locations for a geo-replicated database account. */\n public readonly writableLocations: Location[] = [];\n /** The list of readable locations for a geo-replicated database account. */\n public readonly readableLocations: Location[] = [];\n /**\n * The self-link for Databases in the databaseAccount.\n * @deprecated Use `databasesLink`\n */\n public get DatabasesLink(): string {\n return this.databasesLink;\n }\n /** The self-link for Databases in the databaseAccount. */\n public readonly databasesLink: string;\n /**\n * The self-link for Media in the databaseAccount.\n * @deprecated Use `mediaLink`\n */\n public get MediaLink(): string {\n return this.mediaLink;\n }\n /** The self-link for Media in the databaseAccount. */\n public readonly mediaLink: string;\n /**\n * Attachment content (media) storage quota in MBs ( Retrieved from gateway ).\n * @deprecated use `maxMediaStorageUsageInMB`\n */\n public get MaxMediaStorageUsageInMB(): number {\n return this.maxMediaStorageUsageInMB;\n }\n /** Attachment content (media) storage quota in MBs ( Retrieved from gateway ). */\n public readonly maxMediaStorageUsageInMB: number;\n /**\n * Current attachment content (media) usage in MBs (Retrieved from gateway )\n *\n * Value is returned from cached information updated periodically and is not guaranteed\n * to be real time.\n *\n * @deprecated use `currentMediaStorageUsageInMB`\n */\n public get CurrentMediaStorageUsageInMB(): number {\n return this.currentMediaStorageUsageInMB;\n }\n /**\n * Current attachment content (media) usage in MBs (Retrieved from gateway )\n *\n * Value is returned from cached information updated periodically and is not guaranteed\n * to be real time.\n */\n public readonly currentMediaStorageUsageInMB: number;\n /**\n * Gets the UserConsistencyPolicy settings.\n * @deprecated use `consistencyPolicy`\n */\n public get ConsistencyPolicy(): ConsistencyLevel {\n return this.consistencyPolicy;\n }\n /** Gets the UserConsistencyPolicy settings. */\n public readonly consistencyPolicy: ConsistencyLevel;\n public readonly enableMultipleWritableLocations: boolean;\n\n // TODO: body - any\n public constructor(body: { [key: string]: any }, headers: CosmosHeaders) {\n this.databasesLink = \"/dbs/\";\n this.mediaLink = \"/media/\";\n this.maxMediaStorageUsageInMB = headers[Constants.HttpHeaders.MaxMediaStorageUsageInMB];\n this.currentMediaStorageUsageInMB = headers[Constants.HttpHeaders.CurrentMediaStorageUsageInMB];\n this.consistencyPolicy = body.userConsistencyPolicy\n ? (body.userConsistencyPolicy.defaultConsistencyLevel as ConsistencyLevel)\n : ConsistencyLevel.Session;\n if (body[Constants.WritableLocations] && body.id !== \"localhost\") {\n this.writableLocations = body[Constants.WritableLocations] as Location[];\n }\n if (body[Constants.ReadableLocations] && body.id !== \"localhost\") {\n this.readableLocations = body[Constants.ReadableLocations] as Location[];\n }\n if (body[Constants.ENABLE_MULTIPLE_WRITABLE_LOCATIONS]) {\n this.enableMultipleWritableLocations =\n body[Constants.ENABLE_MULTIPLE_WRITABLE_LOCATIONS] === true ||\n body[Constants.ENABLE_MULTIPLE_WRITABLE_LOCATIONS] === \"true\";\n } else {\n this.enableMultipleWritableLocations = false;\n }\n }\n}\n\n/**\n * Used to specify the locations that are available, read is index 1 and write is index 0.\n */\nexport interface Location {\n name: string;\n databaseAccountEndpoint: string;\n unavailable?: boolean;\n lastUnavailabilityTimestampInMs?: number;\n}\n"]}
@@ -5,9 +5,7 @@ import { NonePartitionKeyLiteral, NullPartitionKeyLiteral } from "./PartitionKey
5
5
  * Builder class for building PartitionKey.
6
6
  */
7
7
  export class PartitionKeyBuilder {
8
- constructor() {
9
- this.values = [];
10
- }
8
+ values = [];
11
9
  addValue(value) {
12
10
  this.values.push(value);
13
11
  return this;
@@ -1 +1 @@
1
- {"version":3,"file":"PartitionKey.js","sourceRoot":"","sources":["../../../src/documents/PartitionKey.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAkC7F;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAAhC;QACW,WAAM,GAAiC,EAAE,CAAC;IAgBrD,CAAC;IAfQ,QAAQ,CAAC,KAAgC;QAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACM,YAAY;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACM,YAAY;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACM,KAAK;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { NonePartitionKeyLiteral, NullPartitionKeyLiteral } from \"./PartitionKeyInternal.js\";\n\n/**\n * PartitionKey of a container.\n * @remarks\n * - PartitionKeyDefinition is no longer part of PartitionKey. So please use PartitionKeyDefinition\n * type directly where appropriate.\n */\nexport type PartitionKey = PrimitivePartitionKeyValue | PrimitivePartitionKeyValue[];\n\n/**\n * A primitive Partition Key value.\n */\nexport type PrimitivePartitionKeyValue =\n | string\n | number\n | boolean\n | NullPartitionKeyType\n | NonePartitionKeyType;\n\n/**\n * The returned object represents a partition key value that allows creating and accessing items\n * with a null value for the partition key.\n */\nexport type NullPartitionKeyType = null;\n\n/**\n * The returned object represents a partition key value that allows creating and accessing items\n * without a value for partition key\n */\nexport type NonePartitionKeyType = {\n [K in any]: never;\n};\n\n/**\n * Builder class for building PartitionKey.\n */\nexport class PartitionKeyBuilder {\n readonly values: PrimitivePartitionKeyValue[] = [];\n public addValue(value: string | boolean | number): PartitionKeyBuilder {\n this.values.push(value);\n return this;\n }\n public addNullValue(): PartitionKeyBuilder {\n this.values.push(NullPartitionKeyLiteral);\n return this;\n }\n public addNoneValue(): PartitionKeyBuilder {\n this.values.push(NonePartitionKeyLiteral);\n return this;\n }\n public build(): PartitionKey {\n return [...this.values];\n }\n}\n"]}
1
+ {"version":3,"file":"PartitionKey.js","sourceRoot":"","sources":["../../../src/documents/PartitionKey.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAkC7F;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACrB,MAAM,GAAiC,EAAE,CAAC;IAC5C,QAAQ,CAAC,KAAgC;QAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACM,YAAY;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACM,YAAY;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACM,KAAK;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { NonePartitionKeyLiteral, NullPartitionKeyLiteral } from \"./PartitionKeyInternal.js\";\n\n/**\n * PartitionKey of a container.\n * @remarks\n * - PartitionKeyDefinition is no longer part of PartitionKey. So please use PartitionKeyDefinition\n * type directly where appropriate.\n */\nexport type PartitionKey = PrimitivePartitionKeyValue | PrimitivePartitionKeyValue[];\n\n/**\n * A primitive Partition Key value.\n */\nexport type PrimitivePartitionKeyValue =\n | string\n | number\n | boolean\n | NullPartitionKeyType\n | NonePartitionKeyType;\n\n/**\n * The returned object represents a partition key value that allows creating and accessing items\n * with a null value for the partition key.\n */\nexport type NullPartitionKeyType = null;\n\n/**\n * The returned object represents a partition key value that allows creating and accessing items\n * without a value for partition key\n */\nexport type NonePartitionKeyType = {\n [K in any]: never;\n};\n\n/**\n * Builder class for building PartitionKey.\n */\nexport class PartitionKeyBuilder {\n readonly values: PrimitivePartitionKeyValue[] = [];\n public addValue(value: string | boolean | number): PartitionKeyBuilder {\n this.values.push(value);\n return this;\n }\n public addNullValue(): PartitionKeyBuilder {\n this.values.push(NullPartitionKeyLiteral);\n return this;\n }\n public addNoneValue(): PartitionKeyBuilder {\n this.values.push(NonePartitionKeyLiteral);\n return this;\n }\n public build(): PartitionKey {\n return [...this.values];\n }\n}\n"]}
@@ -3,9 +3,15 @@
3
3
  import { EncryptionType } from "../enums/index.js";
4
4
  import { createCipheriv, randomBytes, createHmac, createDecipheriv } from "node:crypto";
5
5
  export class AeadAes256CbcHmacSha256Algorithm {
6
+ algoVersion = 0x1;
7
+ blockSizeInBytes = 16;
8
+ encryptionType;
9
+ dataEncryptionKey;
10
+ version;
11
+ versionSize;
12
+ keySizeInBytes;
13
+ minimumCipherTextLength;
6
14
  constructor(dataEncryptionKey, encryptionType) {
7
- this.algoVersion = 0x1;
8
- this.blockSizeInBytes = 16;
9
15
  this.dataEncryptionKey = dataEncryptionKey;
10
16
  this.encryptionType = encryptionType;
11
17
  this.version = Buffer.from([this.algoVersion]);
@@ -1 +1 @@
1
- {"version":3,"file":"AeadAes256CbcHmacSha256Algorithm.js","sourceRoot":"","sources":["../../../../src/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { EncryptionType } from \"../enums/index.js\";\nimport { createCipheriv, randomBytes, createHmac, createDecipheriv } from \"node:crypto\";\nimport { DataEncryptionKey } from \"../EncryptionKey/index.js\";\n\nexport class AeadAes256CbcHmacSha256Algorithm {\n private algoVersion = 0x1;\n private blockSizeInBytes = 16;\n private encryptionType: EncryptionType;\n private dataEncryptionKey: DataEncryptionKey;\n private version: Buffer;\n private versionSize: Buffer;\n private keySizeInBytes: number;\n private minimumCipherTextLength: number;\n\n constructor(dataEncryptionKey: DataEncryptionKey, encryptionType: EncryptionType) {\n this.dataEncryptionKey = dataEncryptionKey;\n this.encryptionType = encryptionType;\n this.version = Buffer.from([this.algoVersion]);\n this.versionSize = Buffer.from([1]);\n this.keySizeInBytes = 32;\n this.minimumCipherTextLength = 1 + 2 * this.blockSizeInBytes + this.keySizeInBytes;\n }\n\n public encrypt(plainTextBuffer: Buffer): Buffer {\n let iv: Buffer;\n // create initialization vector\n if (this.encryptionType === EncryptionType.RANDOMIZED) {\n iv = randomBytes(16);\n } else {\n const ivHmac = createHmac(\"sha256\", this.dataEncryptionKey.ivKeyBuffer);\n ivHmac.update(plainTextBuffer);\n iv = ivHmac.digest().slice(0, this.blockSizeInBytes);\n }\n // create cipher text\n const cipher = createCipheriv(\"aes-256-cbc\", this.dataEncryptionKey.encryptionKeyBuffer, iv);\n const cipherTextBuffer = Buffer.concat([cipher.update(plainTextBuffer), cipher.final()]);\n const authTagBuffer = this.generateAuthenticationTag(iv, cipherTextBuffer);\n return Buffer.concat([Buffer.from([this.algoVersion]), authTagBuffer, iv, cipherTextBuffer]);\n }\n\n public decrypt(cipherTextBuffer: Buffer): Buffer {\n if (cipherTextBuffer.length < this.minimumCipherTextLength) {\n throw new Error(\"Invalid cipher text length\");\n }\n if (cipherTextBuffer[0] !== this.algoVersion) {\n throw new Error(\"Invalid cipher text version\");\n }\n const authTagStartIndex = 1;\n const authTagLength = this.keySizeInBytes;\n const ivStartIndex = authTagStartIndex + authTagLength;\n const ivLength = this.blockSizeInBytes;\n const cipherTextStartIndex = ivStartIndex + ivLength;\n const cipherTextLength = cipherTextBuffer.length - cipherTextStartIndex;\n\n const authenticationTag = cipherTextBuffer.slice(\n authTagStartIndex,\n authTagStartIndex + authTagLength,\n );\n const iv = cipherTextBuffer.slice(ivStartIndex, ivStartIndex + ivLength);\n const cipherText = cipherTextBuffer.slice(\n cipherTextStartIndex,\n cipherTextStartIndex + cipherTextLength,\n );\n\n this.validateAuthenticationTag(authenticationTag, iv, cipherText);\n\n const decipher = createDecipheriv(\n \"aes-256-cbc\",\n this.dataEncryptionKey.encryptionKeyBuffer,\n iv,\n );\n const decrypted = decipher.update(cipherText);\n const result = Buffer.concat([decrypted, decipher.final()]);\n return result;\n }\n\n private generateAuthenticationTag(iv: Buffer, cipherTextBuffer: Buffer): Buffer {\n const hmac = createHmac(\"sha256\", this.dataEncryptionKey.macKeyBuffer);\n const buffer = Buffer.concat([this.version, iv, cipherTextBuffer, this.versionSize]);\n return hmac.update(buffer).digest();\n }\n private validateAuthenticationTag(authenticationTag: Buffer, iv: Buffer, cipherText: Buffer) {\n const expectedAuthTag = this.generateAuthenticationTag(iv, cipherText);\n if (!authenticationTag.equals(expectedAuthTag)) {\n throw new Error(\"Invalid authentication tag\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"AeadAes256CbcHmacSha256Algorithm.js","sourceRoot":"","sources":["../../../../src/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { EncryptionType } from \"../enums/index.js\";\nimport { createCipheriv, randomBytes, createHmac, createDecipheriv } from \"node:crypto\";\nimport { DataEncryptionKey } from \"../EncryptionKey/index.js\";\n\nexport class AeadAes256CbcHmacSha256Algorithm {\n private algoVersion = 0x1;\n private blockSizeInBytes = 16;\n private encryptionType: EncryptionType;\n private dataEncryptionKey: DataEncryptionKey;\n private version: Buffer;\n private versionSize: Buffer;\n private keySizeInBytes: number;\n private minimumCipherTextLength: number;\n\n constructor(dataEncryptionKey: DataEncryptionKey, encryptionType: EncryptionType) {\n this.dataEncryptionKey = dataEncryptionKey;\n this.encryptionType = encryptionType;\n this.version = Buffer.from([this.algoVersion]);\n this.versionSize = Buffer.from([1]);\n this.keySizeInBytes = 32;\n this.minimumCipherTextLength = 1 + 2 * this.blockSizeInBytes + this.keySizeInBytes;\n }\n\n public encrypt(plainTextBuffer: Buffer): Buffer {\n let iv: Buffer;\n // create initialization vector\n if (this.encryptionType === EncryptionType.RANDOMIZED) {\n iv = randomBytes(16);\n } else {\n const ivHmac = createHmac(\"sha256\", this.dataEncryptionKey.ivKeyBuffer);\n ivHmac.update(plainTextBuffer);\n iv = ivHmac.digest().slice(0, this.blockSizeInBytes);\n }\n // create cipher text\n const cipher = createCipheriv(\"aes-256-cbc\", this.dataEncryptionKey.encryptionKeyBuffer, iv);\n const cipherTextBuffer = Buffer.concat([cipher.update(plainTextBuffer), cipher.final()]);\n const authTagBuffer = this.generateAuthenticationTag(iv, cipherTextBuffer);\n return Buffer.concat([Buffer.from([this.algoVersion]), authTagBuffer, iv, cipherTextBuffer]);\n }\n\n public decrypt(cipherTextBuffer: Buffer): Buffer {\n if (cipherTextBuffer.length < this.minimumCipherTextLength) {\n throw new Error(\"Invalid cipher text length\");\n }\n if (cipherTextBuffer[0] !== this.algoVersion) {\n throw new Error(\"Invalid cipher text version\");\n }\n const authTagStartIndex = 1;\n const authTagLength = this.keySizeInBytes;\n const ivStartIndex = authTagStartIndex + authTagLength;\n const ivLength = this.blockSizeInBytes;\n const cipherTextStartIndex = ivStartIndex + ivLength;\n const cipherTextLength = cipherTextBuffer.length - cipherTextStartIndex;\n\n const authenticationTag = cipherTextBuffer.slice(\n authTagStartIndex,\n authTagStartIndex + authTagLength,\n );\n const iv = cipherTextBuffer.slice(ivStartIndex, ivStartIndex + ivLength);\n const cipherText = cipherTextBuffer.slice(\n cipherTextStartIndex,\n cipherTextStartIndex + cipherTextLength,\n );\n\n this.validateAuthenticationTag(authenticationTag, iv, cipherText);\n\n const decipher = createDecipheriv(\n \"aes-256-cbc\",\n this.dataEncryptionKey.encryptionKeyBuffer,\n iv,\n );\n const decrypted = decipher.update(cipherText);\n const result = Buffer.concat([decrypted, decipher.final()]);\n return result;\n }\n\n private generateAuthenticationTag(iv: Buffer, cipherTextBuffer: Buffer): Buffer {\n const hmac = createHmac(\"sha256\", this.dataEncryptionKey.macKeyBuffer);\n const buffer = Buffer.concat([this.version, iv, cipherTextBuffer, this.versionSize]);\n return hmac.update(buffer).digest();\n }\n private validateAuthenticationTag(authenticationTag: Buffer, iv: Buffer, cipherText: Buffer) {\n const expectedAuthTag = this.generateAuthenticationTag(iv, cipherText);\n if (!authenticationTag.equals(expectedAuthTag)) {\n throw new Error(\"Invalid authentication tag\");\n }\n }\n}\n"]}
@@ -6,6 +6,8 @@
6
6
  * @hidden
7
7
  */
8
8
  export class ClientEncryptionKeyPropertiesCache {
9
+ // key is database rid + '/'+ clientEncryptionKeyId
10
+ clientEncryptionKeyPropertiesCache;
9
11
  constructor() {
10
12
  this.clientEncryptionKeyPropertiesCache = new Map();
11
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClientEncryptionKeyPropertiesCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/ClientEncryptionKeyPropertiesCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;GAIG;AAEH,MAAM,OAAO,kCAAkC;IAI7C;QACE,IAAI,CAAC,kCAAkC,GAAG,IAAI,GAAG,EAAyC,CAAC;IAC7F,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IACM,GAAG,CAAC,GAAW,EAAE,6BAA4D;QAClF,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;IAClF,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ClientEncryptionKeyProperties } from \"../ClientEncryptionKey/index.js\";\n\n/**\n * The cache used to store the properties of the client encryption key\n * see {@link ClientEncryptionKeyProperties}\n * @hidden\n */\n\nexport class ClientEncryptionKeyPropertiesCache {\n // key is database rid + '/'+ clientEncryptionKeyId\n private clientEncryptionKeyPropertiesCache: Map<string, ClientEncryptionKeyProperties>;\n\n public constructor() {\n this.clientEncryptionKeyPropertiesCache = new Map<string, ClientEncryptionKeyProperties>();\n }\n\n public get(key: string): ClientEncryptionKeyProperties | undefined {\n return this.clientEncryptionKeyPropertiesCache.get(key);\n }\n public set(key: string, clientEncryptionKeyProperties: ClientEncryptionKeyProperties): void {\n this.clientEncryptionKeyPropertiesCache.set(key, clientEncryptionKeyProperties);\n }\n}\n"]}
1
+ {"version":3,"file":"ClientEncryptionKeyPropertiesCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/ClientEncryptionKeyPropertiesCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;GAIG;AAEH,MAAM,OAAO,kCAAkC;IAC7C,mDAAmD;IAC3C,kCAAkC,CAA6C;IAEvF;QACE,IAAI,CAAC,kCAAkC,GAAG,IAAI,GAAG,EAAyC,CAAC;IAC7F,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IACM,GAAG,CAAC,GAAW,EAAE,6BAA4D;QAClF,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;IAClF,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ClientEncryptionKeyProperties } from \"../ClientEncryptionKey/index.js\";\n\n/**\n * The cache used to store the properties of the client encryption key\n * see {@link ClientEncryptionKeyProperties}\n * @hidden\n */\n\nexport class ClientEncryptionKeyPropertiesCache {\n // key is database rid + '/'+ clientEncryptionKeyId\n private clientEncryptionKeyPropertiesCache: Map<string, ClientEncryptionKeyProperties>;\n\n public constructor() {\n this.clientEncryptionKeyPropertiesCache = new Map<string, ClientEncryptionKeyProperties>();\n }\n\n public get(key: string): ClientEncryptionKeyProperties | undefined {\n return this.clientEncryptionKeyPropertiesCache.get(key);\n }\n public set(key: string, clientEncryptionKeyProperties: ClientEncryptionKeyProperties): void {\n this.clientEncryptionKeyPropertiesCache.set(key, clientEncryptionKeyProperties);\n }\n}\n"]}
@@ -8,6 +8,8 @@ import { EncryptionSettingForProperty } from "../EncryptionSettingForProperty.js
8
8
  * @hidden
9
9
  */
10
10
  export class EncryptionSettingsCache {
11
+ // key is databaseRid + '/' + containerRid
12
+ cache;
11
13
  constructor() {
12
14
  this.cache = new Map();
13
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptionSettingsCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/EncryptionSettingsCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAIlC;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,EAAU,EACV,YAAoB,EACpB,iBAA2B,EAC3B,sBAA8C;QAE9C,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;QACvF,IAAI,CAAC,sBAAsB;YAAE,OAAO;QAEpC,KAAK,MAAM,YAAY,IAAI,sBAAsB,CAAC,aAAa,EAAE,CAAC;YAChE,MAAM,4BAA4B,GAAG,IAAI,4BAA4B,CAAC,YAAY,CAAC,CAAC;YACpF,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1D,kBAAkB,CAAC,+BAA+B,CAChD,YAAY,CAAC,IAAI,EACjB,4BAA4B,CAC7B,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACjC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,kBAAsC;QAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ClientEncryptionPolicy } from \"../ClientEncryptionPolicy.js\";\nimport { EncryptionSettings } from \"../EncryptionSettings.js\";\nimport { EncryptionSettingForProperty } from \"../EncryptionSettingForProperty.js\";\n/**\n * The cache used to store encryption settings for a container.\n * see {@link EncryptionSettings}\n * @hidden\n */\nexport class EncryptionSettingsCache {\n // key is databaseRid + '/' + containerRid\n private cache: Map<string, EncryptionSettings>;\n\n public constructor() {\n this.cache = new Map<string, EncryptionSettings>();\n }\n\n public async create(\n id: string,\n containerRid: string,\n partitionKeyPaths: string[],\n clientEncryptionPolicy: ClientEncryptionPolicy,\n ): Promise<EncryptionSettings> {\n const encryptionSettings = new EncryptionSettings(id, containerRid, partitionKeyPaths);\n if (!clientEncryptionPolicy) return;\n\n for (const includedPath of clientEncryptionPolicy.includedPaths) {\n const encryptionSettingForProperty = new EncryptionSettingForProperty(includedPath);\n encryptionSettings.pathsToEncrypt.push(includedPath.path);\n encryptionSettings.setEncryptionSettingForProperty(\n includedPath.path,\n encryptionSettingForProperty,\n );\n }\n this.set(id, encryptionSettings);\n return encryptionSettings;\n }\n\n public get(key: string): EncryptionSettings | undefined {\n return this.cache.get(key);\n }\n\n public set(key: string, encryptionSettings: EncryptionSettings): void {\n this.cache.set(key, encryptionSettings);\n }\n}\n"]}
1
+ {"version":3,"file":"EncryptionSettingsCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/EncryptionSettingsCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAClC,0CAA0C;IAClC,KAAK,CAAkC;IAE/C;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,EAAU,EACV,YAAoB,EACpB,iBAA2B,EAC3B,sBAA8C;QAE9C,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;QACvF,IAAI,CAAC,sBAAsB;YAAE,OAAO;QAEpC,KAAK,MAAM,YAAY,IAAI,sBAAsB,CAAC,aAAa,EAAE,CAAC;YAChE,MAAM,4BAA4B,GAAG,IAAI,4BAA4B,CAAC,YAAY,CAAC,CAAC;YACpF,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1D,kBAAkB,CAAC,+BAA+B,CAChD,YAAY,CAAC,IAAI,EACjB,4BAA4B,CAC7B,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACjC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,kBAAsC;QAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ClientEncryptionPolicy } from \"../ClientEncryptionPolicy.js\";\nimport { EncryptionSettings } from \"../EncryptionSettings.js\";\nimport { EncryptionSettingForProperty } from \"../EncryptionSettingForProperty.js\";\n/**\n * The cache used to store encryption settings for a container.\n * see {@link EncryptionSettings}\n * @hidden\n */\nexport class EncryptionSettingsCache {\n // key is databaseRid + '/' + containerRid\n private cache: Map<string, EncryptionSettings>;\n\n public constructor() {\n this.cache = new Map<string, EncryptionSettings>();\n }\n\n public async create(\n id: string,\n containerRid: string,\n partitionKeyPaths: string[],\n clientEncryptionPolicy: ClientEncryptionPolicy,\n ): Promise<EncryptionSettings> {\n const encryptionSettings = new EncryptionSettings(id, containerRid, partitionKeyPaths);\n if (!clientEncryptionPolicy) return;\n\n for (const includedPath of clientEncryptionPolicy.includedPaths) {\n const encryptionSettingForProperty = new EncryptionSettingForProperty(includedPath);\n encryptionSettings.pathsToEncrypt.push(includedPath.path);\n encryptionSettings.setEncryptionSettingForProperty(\n includedPath.path,\n encryptionSettingForProperty,\n );\n }\n this.set(id, encryptionSettings);\n return encryptionSettings;\n }\n\n public get(key: string): EncryptionSettings | undefined {\n return this.cache.get(key);\n }\n\n public set(key: string, encryptionSettings: EncryptionSettings): void {\n this.cache.set(key, encryptionSettings);\n }\n}\n"]}
@@ -7,6 +7,8 @@ import { KeyEncryptionKey } from "../KeyEncryptionKey.js";
7
7
  * @hidden
8
8
  */
9
9
  export class KeyEncryptionKeyCache {
10
+ // key is JSON.stringify([name, path])
11
+ cache;
10
12
  constructor() {
11
13
  this.cache = new Map();
12
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"KeyEncryptionKeyCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/KeyEncryptionKeyCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAIhC;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IACnD,CAAC;IAEM,WAAW,CAChB,IAAY,EACZ,IAAY,EACZ,gBAA4C;QAE5C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACzC,IAAI,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;YACtE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,GAAG,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACO,GAAG,CAAC,GAAW,EAAE,gBAAkC;QACzD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IACxC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionKeyStoreProvider } from \"../EncryptionKeyStoreProvider.js\";\nimport { KeyEncryptionKey } from \"../KeyEncryptionKey.js\";\n\n/**\n * The cache used to store the key encryption keys.\n * see {@link KeyEncryptionKey}\n * @hidden\n */\nexport class KeyEncryptionKeyCache {\n // key is JSON.stringify([name, path])\n public cache: Map<string, KeyEncryptionKey>;\n\n constructor() {\n this.cache = new Map<string, KeyEncryptionKey>();\n }\n\n public getOrCreate(\n name: string,\n path: string,\n keyStoreProvider: EncryptionKeyStoreProvider,\n ): KeyEncryptionKey {\n const key = JSON.stringify([name, path]);\n let keyEncryptionKey = this.get(key);\n if (!keyEncryptionKey) {\n keyEncryptionKey = new KeyEncryptionKey(name, path, keyStoreProvider);\n this.set(key, keyEncryptionKey);\n }\n return keyEncryptionKey;\n }\n\n private get(key: string): KeyEncryptionKey | undefined {\n return this.cache.get(key);\n }\n private set(key: string, keyEncryptionKey: KeyEncryptionKey): void {\n this.cache.set(key, keyEncryptionKey);\n }\n}\n"]}
1
+ {"version":3,"file":"KeyEncryptionKeyCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/KeyEncryptionKeyCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAChC,sCAAsC;IAC/B,KAAK,CAAgC;IAE5C;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IACnD,CAAC;IAEM,WAAW,CAChB,IAAY,EACZ,IAAY,EACZ,gBAA4C;QAE5C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACzC,IAAI,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;YACtE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,GAAG,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACO,GAAG,CAAC,GAAW,EAAE,gBAAkC;QACzD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IACxC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionKeyStoreProvider } from \"../EncryptionKeyStoreProvider.js\";\nimport { KeyEncryptionKey } from \"../KeyEncryptionKey.js\";\n\n/**\n * The cache used to store the key encryption keys.\n * see {@link KeyEncryptionKey}\n * @hidden\n */\nexport class KeyEncryptionKeyCache {\n // key is JSON.stringify([name, path])\n public cache: Map<string, KeyEncryptionKey>;\n\n constructor() {\n this.cache = new Map<string, KeyEncryptionKey>();\n }\n\n public getOrCreate(\n name: string,\n path: string,\n keyStoreProvider: EncryptionKeyStoreProvider,\n ): KeyEncryptionKey {\n const key = JSON.stringify([name, path]);\n let keyEncryptionKey = this.get(key);\n if (!keyEncryptionKey) {\n keyEncryptionKey = new KeyEncryptionKey(name, path, keyStoreProvider);\n this.set(key, keyEncryptionKey);\n }\n return keyEncryptionKey;\n }\n\n private get(key: string): KeyEncryptionKey | undefined {\n return this.cache.get(key);\n }\n private set(key: string, keyEncryptionKey: KeyEncryptionKey): void {\n this.cache.set(key, keyEncryptionKey);\n }\n}\n"]}
@@ -10,6 +10,11 @@ import { startBackgroundTask } from "../../utils/time.js";
10
10
  * @hidden
11
11
  */
12
12
  export class ProtectedDataEncryptionKeyCache {
13
+ cacheTimeToLive;
14
+ // key is JSON.stringify([encryptionKeyId, keyEncryptionKey.name, keyEncryptionKey.path, encryptedValue.toString("hex")])
15
+ cache;
16
+ // interval for clear cache to run
17
+ cacheRefresher;
13
18
  constructor(cacheTimeToLive) {
14
19
  this.cacheTimeToLive = cacheTimeToLive;
15
20
  this.cache = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"ProtectedDataEncryptionKeyCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/ProtectedDataEncryptionKeyCache.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomBytes } from \"node:crypto\";\nimport { ProtectedDataEncryptionKey } from \"../EncryptionKey/ProtectedDataEncryptionKey.js\";\nimport type { KeyEncryptionKey } from \"../KeyEncryptionKey.js\";\nimport { Constants } from \"../../common/index.js\";\nimport { startBackgroundTask } from \"../../utils/time.js\";\n\n/**\n * The cache used to store the protected data encryption key.\n * see {@link ProtectedDataEncryptionKey}\n * @hidden\n */\nexport class ProtectedDataEncryptionKeyCache {\n // key is JSON.stringify([encryptionKeyId, keyEncryptionKey.name, keyEncryptionKey.path, encryptedValue.toString(\"hex\")])\n private cache: Map<string, [Date, ProtectedDataEncryptionKey]>;\n // interval for clear cache to run\n cacheRefresher: NodeJS.Timeout;\n\n constructor(private cacheTimeToLive: number) {\n this.cache = new Map<string, [Date, ProtectedDataEncryptionKey]>();\n this.clearCacheOnTtlExpiry();\n }\n\n public get(key: string): ProtectedDataEncryptionKey | undefined {\n if (!this.cache.has(key)) {\n return undefined;\n }\n return this.cache.get(key)[1];\n }\n\n private set(key: string, protectedDataEncryptionKey: ProtectedDataEncryptionKey): void {\n if (this.cacheTimeToLive === 0) {\n return;\n }\n this.cache.set(key, [new Date(), protectedDataEncryptionKey]);\n }\n\n private async clearCacheOnTtlExpiry(): Promise<void> {\n this.cacheRefresher = startBackgroundTask(async () => {\n const now = new Date();\n for (const key of this.cache.keys()) {\n if (now.getTime() - this.cache.get(key)[0].getTime() > this.cacheTimeToLive) {\n this.cache.delete(key);\n }\n }\n }, Constants.EncryptionCacheRefreshIntervalInMs);\n }\n\n private async createProtectedDataEncryptionKey(\n name: string,\n keyEncryptionKey: KeyEncryptionKey,\n encryptedValue?: Buffer,\n ): Promise<ProtectedDataEncryptionKey> {\n let rawKey: Buffer;\n let encryptedKey: Buffer;\n if (encryptedValue) {\n rawKey = await keyEncryptionKey.unwrapEncryptionKey(encryptedValue);\n encryptedKey = encryptedValue;\n } else {\n rawKey = this.generateColumnEncryptionKey();\n encryptedKey = await keyEncryptionKey.wrapEncryptionKey(rawKey);\n }\n const newKey = new ProtectedDataEncryptionKey(name, keyEncryptionKey, rawKey, encryptedKey);\n if (this.cacheTimeToLive !== 0) {\n const key = JSON.stringify([\n name,\n keyEncryptionKey.name,\n keyEncryptionKey.path,\n encryptedKey.toString(\"hex\"),\n ]);\n this.set(key, newKey);\n }\n return newKey;\n }\n\n public async getOrCreate(\n name: string,\n keyEncryptionKey: KeyEncryptionKey,\n encryptedValue?: Uint8Array,\n forceRefresh?: boolean,\n ): Promise<ProtectedDataEncryptionKey> {\n const encryptedValueBuffer = encryptedValue ? Buffer.from(encryptedValue) : undefined;\n if (this.cacheTimeToLive === 0 || forceRefresh) {\n return this.createProtectedDataEncryptionKey(name, keyEncryptionKey, encryptedValueBuffer);\n }\n\n if (encryptedValueBuffer) {\n const key = JSON.stringify([\n name,\n keyEncryptionKey.name,\n keyEncryptionKey.path,\n encryptedValueBuffer.toString(\"hex\"),\n ]);\n const protectedDataEncryptionKey = this.get(key);\n if (protectedDataEncryptionKey) {\n return protectedDataEncryptionKey;\n }\n }\n return this.createProtectedDataEncryptionKey(name, keyEncryptionKey, encryptedValueBuffer);\n }\n\n private generateColumnEncryptionKey(): Buffer {\n return randomBytes(32);\n }\n}\n"]}
1
+ {"version":3,"file":"ProtectedDataEncryptionKeyCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/ProtectedDataEncryptionKeyCache.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomBytes } from \"node:crypto\";\nimport { ProtectedDataEncryptionKey } from \"../EncryptionKey/ProtectedDataEncryptionKey.js\";\nimport type { KeyEncryptionKey } from \"../KeyEncryptionKey.js\";\nimport { Constants } from \"../../common/index.js\";\nimport { startBackgroundTask } from \"../../utils/time.js\";\n\n/**\n * The cache used to store the protected data encryption key.\n * see {@link ProtectedDataEncryptionKey}\n * @hidden\n */\nexport class ProtectedDataEncryptionKeyCache {\n // key is JSON.stringify([encryptionKeyId, keyEncryptionKey.name, keyEncryptionKey.path, encryptedValue.toString(\"hex\")])\n private cache: Map<string, [Date, ProtectedDataEncryptionKey]>;\n // interval for clear cache to run\n cacheRefresher: NodeJS.Timeout;\n\n constructor(private cacheTimeToLive: number) {\n this.cache = new Map<string, [Date, ProtectedDataEncryptionKey]>();\n this.clearCacheOnTtlExpiry();\n }\n\n public get(key: string): ProtectedDataEncryptionKey | undefined {\n if (!this.cache.has(key)) {\n return undefined;\n }\n return this.cache.get(key)[1];\n }\n\n private set(key: string, protectedDataEncryptionKey: ProtectedDataEncryptionKey): void {\n if (this.cacheTimeToLive === 0) {\n return;\n }\n this.cache.set(key, [new Date(), protectedDataEncryptionKey]);\n }\n\n private async clearCacheOnTtlExpiry(): Promise<void> {\n this.cacheRefresher = startBackgroundTask(async () => {\n const now = new Date();\n for (const key of this.cache.keys()) {\n if (now.getTime() - this.cache.get(key)[0].getTime() > this.cacheTimeToLive) {\n this.cache.delete(key);\n }\n }\n }, Constants.EncryptionCacheRefreshIntervalInMs);\n }\n\n private async createProtectedDataEncryptionKey(\n name: string,\n keyEncryptionKey: KeyEncryptionKey,\n encryptedValue?: Buffer,\n ): Promise<ProtectedDataEncryptionKey> {\n let rawKey: Buffer;\n let encryptedKey: Buffer;\n if (encryptedValue) {\n rawKey = await keyEncryptionKey.unwrapEncryptionKey(encryptedValue);\n encryptedKey = encryptedValue;\n } else {\n rawKey = this.generateColumnEncryptionKey();\n encryptedKey = await keyEncryptionKey.wrapEncryptionKey(rawKey);\n }\n const newKey = new ProtectedDataEncryptionKey(name, keyEncryptionKey, rawKey, encryptedKey);\n if (this.cacheTimeToLive !== 0) {\n const key = JSON.stringify([\n name,\n keyEncryptionKey.name,\n keyEncryptionKey.path,\n encryptedKey.toString(\"hex\"),\n ]);\n this.set(key, newKey);\n }\n return newKey;\n }\n\n public async getOrCreate(\n name: string,\n keyEncryptionKey: KeyEncryptionKey,\n encryptedValue?: Uint8Array,\n forceRefresh?: boolean,\n ): Promise<ProtectedDataEncryptionKey> {\n const encryptedValueBuffer = encryptedValue ? Buffer.from(encryptedValue) : undefined;\n if (this.cacheTimeToLive === 0 || forceRefresh) {\n return this.createProtectedDataEncryptionKey(name, keyEncryptionKey, encryptedValueBuffer);\n }\n\n if (encryptedValueBuffer) {\n const key = JSON.stringify([\n name,\n keyEncryptionKey.name,\n keyEncryptionKey.path,\n encryptedValueBuffer.toString(\"hex\"),\n ]);\n const protectedDataEncryptionKey = this.get(key);\n if (protectedDataEncryptionKey) {\n return protectedDataEncryptionKey;\n }\n }\n return this.createProtectedDataEncryptionKey(name, keyEncryptionKey, encryptedValueBuffer);\n }\n\n private generateColumnEncryptionKey(): Buffer {\n return randomBytes(32);\n }\n}\n"]}
@@ -7,5 +7,7 @@ export class ClientEncryptionKeyResponse extends ResourceResponse {
7
7
  super(resource, headers, statusCode, diagnostics);
8
8
  this.clientEncryptionKeyProperties = clientEncryptionKeyProperties;
9
9
  }
10
+ /** Properties of the client encryption key */
11
+ clientEncryptionKeyProperties;
10
12
  }
11
13
  //# sourceMappingURL=ClientEncryptionKeyResponse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientEncryptionKeyResponse.js","sourceRoot":"","sources":["../../../../src/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAIrE,yDAAyD;AACzD,MAAM,OAAO,2BAA4B,SAAQ,gBAA0B;IACzE,YACE,QAAkB,EAClB,OAAsB,EACtB,UAAkB,EAClB,6BAA4D,EAC5D,WAA8B;QAE9B,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAClD,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,CAAC;IACrE,CAAC;CAGF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CosmosDiagnostics } from \"../../CosmosDiagnostics.js\";\nimport { CosmosHeaders } from \"../../queryExecutionContext/index.js\";\nimport { ResourceResponse } from \"../../request/ResourceResponse.js\";\nimport { Resource } from \"../../client/Resource.js\";\nimport { ClientEncryptionKeyProperties } from \"./ClientEncryptionKeyProperties.js\";\n\n/** Response object for ClientEncryptionKey operations */\nexport class ClientEncryptionKeyResponse extends ResourceResponse<Resource> {\n constructor(\n resource: Resource,\n headers: CosmosHeaders,\n statusCode: number,\n clientEncryptionKeyProperties: ClientEncryptionKeyProperties,\n diagnostics: CosmosDiagnostics,\n ) {\n super(resource, headers, statusCode, diagnostics);\n this.clientEncryptionKeyProperties = clientEncryptionKeyProperties;\n }\n /** Properties of the client encryption key */\n public readonly clientEncryptionKeyProperties: ClientEncryptionKeyProperties;\n}\n"]}
1
+ {"version":3,"file":"ClientEncryptionKeyResponse.js","sourceRoot":"","sources":["../../../../src/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAIrE,yDAAyD;AACzD,MAAM,OAAO,2BAA4B,SAAQ,gBAA0B;IACzE,YACE,QAAkB,EAClB,OAAsB,EACtB,UAAkB,EAClB,6BAA4D,EAC5D,WAA8B;QAE9B,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAClD,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,CAAC;IACrE,CAAC;IACD,8CAA8C;IAC9B,6BAA6B,CAAgC;CAC9E","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CosmosDiagnostics } from \"../../CosmosDiagnostics.js\";\nimport { CosmosHeaders } from \"../../queryExecutionContext/index.js\";\nimport { ResourceResponse } from \"../../request/ResourceResponse.js\";\nimport { Resource } from \"../../client/Resource.js\";\nimport { ClientEncryptionKeyProperties } from \"./ClientEncryptionKeyProperties.js\";\n\n/** Response object for ClientEncryptionKey operations */\nexport class ClientEncryptionKeyResponse extends ResourceResponse<Resource> {\n constructor(\n resource: Resource,\n headers: CosmosHeaders,\n statusCode: number,\n clientEncryptionKeyProperties: ClientEncryptionKeyProperties,\n diagnostics: CosmosDiagnostics,\n ) {\n super(resource, headers, statusCode, diagnostics);\n this.clientEncryptionKeyProperties = clientEncryptionKeyProperties;\n }\n /** Properties of the client encryption key */\n public readonly clientEncryptionKeyProperties: ClientEncryptionKeyProperties;\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
- import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tslib";
4
3
  import { Constants, ResourceType } from "../common/constants.js";
5
4
  import { DiagnosticNodeInternal, DiagnosticNodeType, } from "../diagnostics/DiagnosticNodeInternal.js";
6
5
  import { QueryIterator } from "../queryIterator.js";
@@ -11,6 +10,9 @@ import { withDiagnostics } from "../utils/diagnostics.js";
11
10
  * extends @see {@link QueryIterator}
12
11
  */
13
12
  export class EncryptionItemQueryIterator extends QueryIterator {
13
+ container;
14
+ encryptionClientContext;
15
+ encryptionOptions;
14
16
  constructor(clientContext, query, options, fetchFunctions, container) {
15
17
  super(clientContext, query, options, fetchFunctions, container.url, ResourceType.item);
16
18
  this.container = container;
@@ -20,36 +22,32 @@ export class EncryptionItemQueryIterator extends QueryIterator {
20
22
  /**
21
23
  * Gets an async iterator that will yield results until completion.
22
24
  */
23
- getAsyncIterator() {
24
- return __asyncGenerator(this, arguments, function* getAsyncIterator_1() {
25
- var _a;
26
- let response;
27
- const diagnosticNode = new DiagnosticNodeInternal(this.encryptionClientContext.diagnosticLevel, DiagnosticNodeType.CLIENT_REQUEST_NODE, null);
28
- try {
29
- response = yield __await(yield* __asyncDelegator(__asyncValues(QueryIterator.prototype.getAsyncIteratorInternal.call(this, diagnosticNode))));
30
- }
31
- catch (error) {
32
- yield __await(this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error));
33
- }
34
- if (((_a = response === null || response === void 0 ? void 0 : response.resources) === null || _a === void 0 ? void 0 : _a.length) > 0) {
35
- let count = 0;
36
- diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);
37
- for (let resource of response.resources) {
38
- const { body, propertiesDecryptedCount } = yield __await(this.container.encryptionProcessor.decrypt(resource));
39
- resource = body;
40
- count += propertiesDecryptedCount;
41
- }
42
- diagnosticNode.endEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation, count);
25
+ async *getAsyncIterator() {
26
+ let response;
27
+ const diagnosticNode = new DiagnosticNodeInternal(this.encryptionClientContext.diagnosticLevel, DiagnosticNodeType.CLIENT_REQUEST_NODE, null);
28
+ try {
29
+ response = yield* QueryIterator.prototype.getAsyncIteratorInternal.call(this, diagnosticNode);
30
+ }
31
+ catch (error) {
32
+ await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);
33
+ }
34
+ if (response?.resources?.length > 0) {
35
+ let count = 0;
36
+ diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);
37
+ for (let resource of response.resources) {
38
+ const { body, propertiesDecryptedCount } = await this.container.encryptionProcessor.decrypt(resource);
39
+ resource = body;
40
+ count += propertiesDecryptedCount;
43
41
  }
44
- yield yield __await(response);
45
- });
42
+ diagnosticNode.endEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation, count);
43
+ }
44
+ yield response;
46
45
  }
47
46
  /**
48
47
  * Fetch all pages for the query and return a single FeedResponse.
49
48
  */
50
49
  async fetchAll() {
51
50
  return withDiagnostics(async (diagnosticNode) => {
52
- var _a;
53
51
  let response;
54
52
  try {
55
53
  response = await QueryIterator.prototype.fetchAllInternal.call(this, diagnosticNode);
@@ -57,7 +55,7 @@ export class EncryptionItemQueryIterator extends QueryIterator {
57
55
  catch (error) {
58
56
  await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);
59
57
  }
60
- if (((_a = response === null || response === void 0 ? void 0 : response.resources) === null || _a === void 0 ? void 0 : _a.length) > 0) {
58
+ if (response?.resources?.length > 0) {
61
59
  let count = 0;
62
60
  diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);
63
61
  for (let resource of response.resources) {
@@ -75,7 +73,6 @@ export class EncryptionItemQueryIterator extends QueryIterator {
75
73
  */
76
74
  async fetchNext() {
77
75
  return withDiagnostics(async (diagnosticNode) => {
78
- var _a;
79
76
  let response;
80
77
  try {
81
78
  response = await QueryIterator.prototype.fetchNextInternal.call(this, diagnosticNode);
@@ -83,7 +80,7 @@ export class EncryptionItemQueryIterator extends QueryIterator {
83
80
  catch (error) {
84
81
  await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);
85
82
  }
86
- if (((_a = response === null || response === void 0 ? void 0 : response.resources) === null || _a === void 0 ? void 0 : _a.length) > 0) {
83
+ if (response?.resources?.length > 0) {
87
84
  let count = 0;
88
85
  diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);
89
86
  for (let resource of response.resources) {
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptionItemQueryIterator.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionItemQueryIterator.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Container } from \"../client/index.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport { Constants, ResourceType } from \"../common/constants.js\";\nimport {\n DiagnosticNodeInternal,\n DiagnosticNodeType,\n} from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { SqlQuerySpec, FetchFunctionCallback } from \"../queryExecutionContext/index.js\";\nimport { QueryIterator } from \"../queryIterator.js\";\nimport type { FeedOptions, FeedResponse } from \"../request/index.js\";\nimport { withDiagnostics } from \"../utils/diagnostics.js\";\n\n/**\n * @internal\n * Provides the iterator for handling encrypted items in the Azure Cosmos DB database service.\n * extends @see {@link QueryIterator}\n */\nexport class EncryptionItemQueryIterator<Item> extends QueryIterator<Item> {\n private container: Container;\n private encryptionClientContext: ClientContext;\n private encryptionOptions: FeedOptions;\n\n constructor(\n clientContext: ClientContext,\n query: SqlQuerySpec | string,\n options: FeedOptions,\n fetchFunctions: FetchFunctionCallback | FetchFunctionCallback[],\n container: Container,\n ) {\n super(clientContext, query, options, fetchFunctions, container.url, ResourceType.item);\n this.container = container;\n this.encryptionClientContext = clientContext;\n this.encryptionOptions = options;\n }\n\n /**\n * Gets an async iterator that will yield results until completion.\n */\n public override async *getAsyncIterator(): AsyncIterable<FeedResponse<Item>> {\n let response: FeedResponse<Item>;\n const diagnosticNode = new DiagnosticNodeInternal(\n this.encryptionClientContext.diagnosticLevel,\n DiagnosticNodeType.CLIENT_REQUEST_NODE,\n null,\n );\n try {\n response = yield* QueryIterator.prototype.getAsyncIteratorInternal.call(this, diagnosticNode);\n } catch (error) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n if (response?.resources?.length > 0) {\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);\n for (let resource of response.resources) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(resource);\n resource = body;\n count += propertiesDecryptedCount;\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n }\n yield response;\n }\n\n /**\n * Fetch all pages for the query and return a single FeedResponse.\n */\n public override async fetchAll(): Promise<FeedResponse<Item>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n let response: FeedResponse<Item>;\n try {\n response = await QueryIterator.prototype.fetchAllInternal.call(this, diagnosticNode);\n } catch (error) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n if (response?.resources?.length > 0) {\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);\n for (let resource of response.resources) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(resource);\n resource = body;\n count += propertiesDecryptedCount;\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n }\n return response;\n }, this.encryptionClientContext);\n }\n\n /**\n * Retrieve the next batch from the feed.\n */\n public override async fetchNext(): Promise<FeedResponse<Item>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n let response: FeedResponse<Item>;\n try {\n response = await QueryIterator.prototype.fetchNextInternal.call(this, diagnosticNode);\n } catch (error) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n if (response?.resources?.length > 0) {\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);\n for (let resource of response.resources) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(resource);\n resource = body;\n count += propertiesDecryptedCount;\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n }\n return response;\n }, this.encryptionClientContext);\n }\n /**\n * @internal\n */\n public override async init(diagnosticNode: DiagnosticNodeInternal): Promise<void> {\n // Ensure encryption is initialized and set rid in options\n await this.container.checkAndInitializeEncryption();\n this.encryptionOptions.containerRid = this.container._rid;\n await QueryIterator.prototype.init.call(this, diagnosticNode);\n }\n}\n"]}
1
+ {"version":3,"file":"EncryptionItemQueryIterator.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionItemQueryIterator.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Container } from \"../client/index.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport { Constants, ResourceType } from \"../common/constants.js\";\nimport {\n DiagnosticNodeInternal,\n DiagnosticNodeType,\n} from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { SqlQuerySpec, FetchFunctionCallback } from \"../queryExecutionContext/index.js\";\nimport { QueryIterator } from \"../queryIterator.js\";\nimport type { FeedOptions, FeedResponse } from \"../request/index.js\";\nimport { withDiagnostics } from \"../utils/diagnostics.js\";\n\n/**\n * @internal\n * Provides the iterator for handling encrypted items in the Azure Cosmos DB database service.\n * extends @see {@link QueryIterator}\n */\nexport class EncryptionItemQueryIterator<Item> extends QueryIterator<Item> {\n private container: Container;\n private encryptionClientContext: ClientContext;\n private encryptionOptions: FeedOptions;\n\n constructor(\n clientContext: ClientContext,\n query: SqlQuerySpec | string,\n options: FeedOptions,\n fetchFunctions: FetchFunctionCallback | FetchFunctionCallback[],\n container: Container,\n ) {\n super(clientContext, query, options, fetchFunctions, container.url, ResourceType.item);\n this.container = container;\n this.encryptionClientContext = clientContext;\n this.encryptionOptions = options;\n }\n\n /**\n * Gets an async iterator that will yield results until completion.\n */\n public override async *getAsyncIterator(): AsyncIterable<FeedResponse<Item>> {\n let response: FeedResponse<Item>;\n const diagnosticNode = new DiagnosticNodeInternal(\n this.encryptionClientContext.diagnosticLevel,\n DiagnosticNodeType.CLIENT_REQUEST_NODE,\n null,\n );\n try {\n response = yield* QueryIterator.prototype.getAsyncIteratorInternal.call(this, diagnosticNode);\n } catch (error) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n if (response?.resources?.length > 0) {\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);\n for (let resource of response.resources) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(resource);\n resource = body;\n count += propertiesDecryptedCount;\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n }\n yield response;\n }\n\n /**\n * Fetch all pages for the query and return a single FeedResponse.\n */\n public override async fetchAll(): Promise<FeedResponse<Item>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n let response: FeedResponse<Item>;\n try {\n response = await QueryIterator.prototype.fetchAllInternal.call(this, diagnosticNode);\n } catch (error) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n if (response?.resources?.length > 0) {\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);\n for (let resource of response.resources) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(resource);\n resource = body;\n count += propertiesDecryptedCount;\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n }\n return response;\n }, this.encryptionClientContext);\n }\n\n /**\n * Retrieve the next batch from the feed.\n */\n public override async fetchNext(): Promise<FeedResponse<Item>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n let response: FeedResponse<Item>;\n try {\n response = await QueryIterator.prototype.fetchNextInternal.call(this, diagnosticNode);\n } catch (error) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n if (response?.resources?.length > 0) {\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);\n for (let resource of response.resources) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(resource);\n resource = body;\n count += propertiesDecryptedCount;\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n }\n return response;\n }, this.encryptionClientContext);\n }\n /**\n * @internal\n */\n public override async init(diagnosticNode: DiagnosticNodeInternal): Promise<void> {\n // Ensure encryption is initialized and set rid in options\n await this.container.checkAndInitializeEncryption();\n this.encryptionOptions.containerRid = this.container._rid;\n await QueryIterator.prototype.init.call(this, diagnosticNode);\n }\n}\n"]}
@@ -2,9 +2,14 @@
2
2
  // Licensed under the MIT License.
3
3
  import { createHmac } from "node:crypto";
4
4
  export class DataEncryptionKey {
5
+ rootKeyBuffer;
6
+ keySizeInBits = 256;
7
+ keySizeInBytes = this.keySizeInBits / 8;
8
+ encryptionKeyBuffer;
9
+ macKeyBuffer;
10
+ ivKeyBuffer;
11
+ name;
5
12
  constructor(rootKey, name) {
6
- this.keySizeInBits = 256;
7
- this.keySizeInBytes = this.keySizeInBits / 8;
8
13
  if (rootKey.length !== this.keySizeInBytes) {
9
14
  throw new Error("Invalid root key size");
10
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DataEncryptionKey.js","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKey/DataEncryptionKey.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,OAAgB,iBAAiB;IAUrC,YAAY,OAAe,EAAE,IAAY;QARjC,kBAAa,GAAG,GAAG,CAAC;QACpB,mBAAc,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAQ9C,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,MAAM,iBAAiB,GAAG,kHAAkH,IAAI,CAAC,aAAa,EAAE,CAAC;QACjK,MAAM,UAAU,GAAG,2GAA2G,IAAI,CAAC,aAAa,EAAE,CAAC;QACnJ,MAAM,SAAS,GAAG,0GAA0G,IAAI,CAAC,aAAa,EAAE,CAAC;QAEjJ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACzF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3E,CAAC;IAEO,iBAAiB,CAAC,SAAiB,EAAE,GAAW;QACtD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createHmac } from \"node:crypto\";\n\nexport abstract class DataEncryptionKey {\n private rootKeyBuffer: Buffer;\n private keySizeInBits = 256;\n private keySizeInBytes = this.keySizeInBits / 8;\n\n public encryptionKeyBuffer: Buffer;\n public macKeyBuffer: Buffer;\n public ivKeyBuffer: Buffer;\n public name: string;\n\n constructor(rootKey: Buffer, name: string) {\n if (rootKey.length !== this.keySizeInBytes) {\n throw new Error(\"Invalid root key size\");\n }\n this.rootKeyBuffer = rootKey;\n this.name = name;\n\n const encryptionKeySalt = `Microsoft SQL Server cell encryption key with encryption algorithm:AEAD_AES_256_CBC_HMAC_SHA256 and key length:${this.keySizeInBits}`;\n const macKeySalt = `Microsoft SQL Server cell MAC key with encryption algorithm:AEAD_AES_256_CBC_HMAC_SHA256 and key length:${this.keySizeInBits}`;\n const ivKeySalt = `Microsoft SQL Server cell IV key with encryption algorithm:AEAD_AES_256_CBC_HMAC_SHA256 and key length:${this.keySizeInBits}`;\n\n this.encryptionKeyBuffer = this.getHmacWithSha256(encryptionKeySalt, this.rootKeyBuffer);\n this.macKeyBuffer = this.getHmacWithSha256(macKeySalt, this.rootKeyBuffer);\n this.ivKeyBuffer = this.getHmacWithSha256(ivKeySalt, this.rootKeyBuffer);\n }\n\n private getHmacWithSha256(plainText: string, key: Buffer): Buffer {\n const hmac = createHmac(\"sha256\", key);\n hmac.update(Buffer.from(plainText, \"utf16le\"));\n return hmac.digest();\n }\n}\n"]}
1
+ {"version":3,"file":"DataEncryptionKey.js","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKey/DataEncryptionKey.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,OAAgB,iBAAiB;IAC7B,aAAa,CAAS;IACtB,aAAa,GAAG,GAAG,CAAC;IACpB,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IAEzC,mBAAmB,CAAS;IAC5B,YAAY,CAAS;IACrB,WAAW,CAAS;IACpB,IAAI,CAAS;IAEpB,YAAY,OAAe,EAAE,IAAY;QACvC,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,MAAM,iBAAiB,GAAG,kHAAkH,IAAI,CAAC,aAAa,EAAE,CAAC;QACjK,MAAM,UAAU,GAAG,2GAA2G,IAAI,CAAC,aAAa,EAAE,CAAC;QACnJ,MAAM,SAAS,GAAG,0GAA0G,IAAI,CAAC,aAAa,EAAE,CAAC;QAEjJ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACzF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3E,CAAC;IAEO,iBAAiB,CAAC,SAAiB,EAAE,GAAW;QACtD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createHmac } from \"node:crypto\";\n\nexport abstract class DataEncryptionKey {\n private rootKeyBuffer: Buffer;\n private keySizeInBits = 256;\n private keySizeInBytes = this.keySizeInBits / 8;\n\n public encryptionKeyBuffer: Buffer;\n public macKeyBuffer: Buffer;\n public ivKeyBuffer: Buffer;\n public name: string;\n\n constructor(rootKey: Buffer, name: string) {\n if (rootKey.length !== this.keySizeInBytes) {\n throw new Error(\"Invalid root key size\");\n }\n this.rootKeyBuffer = rootKey;\n this.name = name;\n\n const encryptionKeySalt = `Microsoft SQL Server cell encryption key with encryption algorithm:AEAD_AES_256_CBC_HMAC_SHA256 and key length:${this.keySizeInBits}`;\n const macKeySalt = `Microsoft SQL Server cell MAC key with encryption algorithm:AEAD_AES_256_CBC_HMAC_SHA256 and key length:${this.keySizeInBits}`;\n const ivKeySalt = `Microsoft SQL Server cell IV key with encryption algorithm:AEAD_AES_256_CBC_HMAC_SHA256 and key length:${this.keySizeInBits}`;\n\n this.encryptionKeyBuffer = this.getHmacWithSha256(encryptionKeySalt, this.rootKeyBuffer);\n this.macKeyBuffer = this.getHmacWithSha256(macKeySalt, this.rootKeyBuffer);\n this.ivKeyBuffer = this.getHmacWithSha256(ivKeySalt, this.rootKeyBuffer);\n }\n\n private getHmacWithSha256(plainText: string, key: Buffer): Buffer {\n const hmac = createHmac(\"sha256\", key);\n hmac.update(Buffer.from(plainText, \"utf16le\"));\n return hmac.digest();\n }\n}\n"]}
@@ -9,7 +9,6 @@ import type { KeyEncryptionKey } from "../KeyEncryptionKey.js";
9
9
  export declare class ProtectedDataEncryptionKey extends DataEncryptionKey {
10
10
  keyEncryptionKey: KeyEncryptionKey;
11
11
  encryptedValue: Buffer;
12
- name: string;
13
12
  constructor(name: string, keyEncryptionKey: KeyEncryptionKey, rawKey: Buffer, encryptedKey: Buffer);
14
13
  }
15
14
  //# sourceMappingURL=ProtectedDataEncryptionKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProtectedDataEncryptionKey.d.ts","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKey/ProtectedDataEncryptionKey.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;;;;GAKG;AACH,qBAAa,0BAA2B,SAAQ,iBAAiB;IACxD,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,cAAc,EAAE,MAAM,CAAC;IAEvB,IAAI,EAAE,MAAM,CAAC;gBAGlB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM;CAOvB"}
1
+ {"version":3,"file":"ProtectedDataEncryptionKey.d.ts","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKey/ProtectedDataEncryptionKey.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;;;;GAKG;AACH,qBAAa,0BAA2B,SAAQ,iBAAiB;IACxD,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,cAAc,EAAE,MAAM,CAAC;gBAG5B,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM;CAOvB"}
@@ -8,6 +8,8 @@ import { DataEncryptionKey } from "./DataEncryptionKey.js";
8
8
  * @hidden
9
9
  */
10
10
  export class ProtectedDataEncryptionKey extends DataEncryptionKey {
11
+ keyEncryptionKey;
12
+ encryptedValue;
11
13
  constructor(name, keyEncryptionKey, rawKey, encryptedKey) {
12
14
  super(rawKey, name);
13
15
  this.name = name;
@@ -1 +1 @@
1
- {"version":3,"file":"ProtectedDataEncryptionKey.js","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKey/ProtectedDataEncryptionKey.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D;;;;;GAKG;AACH,MAAM,OAAO,0BAA2B,SAAQ,iBAAiB;IAO/D,YACE,IAAY,EACZ,gBAAkC,EAClC,MAAc,EACd,YAAoB;QAEpB,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;IACrC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DataEncryptionKey } from \"./DataEncryptionKey.js\";\nimport type { KeyEncryptionKey } from \"../KeyEncryptionKey.js\";\n\n/**\n * A wrapper class around `DataEncryptionKey` that stores it in a protected form.\n * The `ProtectedDataEncryptionKey` class extends `DataEncryptionKey` and holds both the raw key and its encrypted form.\n * It also includes information about the `KeyEncryptionKey` used to encrypt the data encryption key.\n * @hidden\n */\nexport class ProtectedDataEncryptionKey extends DataEncryptionKey {\n public keyEncryptionKey: KeyEncryptionKey;\n\n public encryptedValue: Buffer;\n\n public name: string;\n\n public constructor(\n name: string,\n keyEncryptionKey: KeyEncryptionKey,\n rawKey: Buffer,\n encryptedKey: Buffer,\n ) {\n super(rawKey, name);\n this.name = name;\n this.keyEncryptionKey = keyEncryptionKey;\n this.encryptedValue = encryptedKey;\n }\n}\n"]}
1
+ {"version":3,"file":"ProtectedDataEncryptionKey.js","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKey/ProtectedDataEncryptionKey.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D;;;;;GAKG;AACH,MAAM,OAAO,0BAA2B,SAAQ,iBAAiB;IACxD,gBAAgB,CAAmB;IAEnC,cAAc,CAAS;IAE9B,YACE,IAAY,EACZ,gBAAkC,EAClC,MAAc,EACd,YAAoB;QAEpB,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;IACrC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DataEncryptionKey } from \"./DataEncryptionKey.js\";\nimport type { KeyEncryptionKey } from \"../KeyEncryptionKey.js\";\n\n/**\n * A wrapper class around `DataEncryptionKey` that stores it in a protected form.\n * The `ProtectedDataEncryptionKey` class extends `DataEncryptionKey` and holds both the raw key and its encrypted form.\n * It also includes information about the `KeyEncryptionKey` used to encrypt the data encryption key.\n * @hidden\n */\nexport class ProtectedDataEncryptionKey extends DataEncryptionKey {\n public keyEncryptionKey: KeyEncryptionKey;\n\n public encryptedValue: Buffer;\n\n public constructor(\n name: string,\n keyEncryptionKey: KeyEncryptionKey,\n rawKey: Buffer,\n encryptedKey: Buffer,\n ) {\n super(rawKey, name);\n this.name = name;\n this.keyEncryptionKey = keyEncryptionKey;\n this.encryptedValue = encryptedKey;\n }\n}\n"]}
@@ -7,14 +7,15 @@ import { EncryptionKeyResolverName } from "../enums/index.js";
7
7
  * Implementation of EncryptionKeyResolver that uses Azure Key Vault for customer managed keys.
8
8
  */
9
9
  export class AzureKeyVaultEncryptionKeyResolver {
10
+ credentials;
10
11
  constructor(credentials) {
11
- /**
12
- * Name of the resolver to use for client side encryption.
13
- * Currently only AzureKeyVault implementation is supported.
14
- */
15
- this.encryptionKeyResolverName = EncryptionKeyResolverName.AzureKeyVault;
16
12
  this.credentials = credentials;
17
13
  }
14
+ /**
15
+ * Name of the resolver to use for client side encryption.
16
+ * Currently only AzureKeyVault implementation is supported.
17
+ */
18
+ encryptionKeyResolverName = EncryptionKeyResolverName.AzureKeyVault;
18
19
  /**
19
20
  * wraps the given key using the specified key encryption key path and algorithm.
20
21
  * @param encryptionKeyId - path to the customer managed key to be used for wrapping. For Azure Key Vault, this is url of the key in the vault.
@@ -1 +1 @@
1
- {"version":3,"file":"AzureKeyVaultEncryptionKeyResolver.js","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { TokenCredential } from \"@azure/core-auth\";\nimport type { EncryptionKeyResolver } from \"./EncryptionKeyResolver.js\";\nimport type { KeyWrapAlgorithm } from \"@azure/keyvault-keys\";\nimport { KeyClient } from \"@azure/keyvault-keys\";\nimport { ErrorResponse } from \"../../request/index.js\";\nimport { EncryptionKeyResolverName } from \"../enums/index.js\";\n\n/**\n * Implementation of EncryptionKeyResolver that uses Azure Key Vault for customer managed keys.\n */\nexport class AzureKeyVaultEncryptionKeyResolver implements EncryptionKeyResolver {\n private credentials: TokenCredential;\n\n constructor(credentials: TokenCredential) {\n this.credentials = credentials;\n }\n /**\n * Name of the resolver to use for client side encryption.\n * Currently only AzureKeyVault implementation is supported.\n */\n public encryptionKeyResolverName = EncryptionKeyResolverName.AzureKeyVault;\n /**\n * wraps the given key using the specified key encryption key path and algorithm.\n * @param encryptionKeyId - path to the customer managed key to be used for wrapping. For Azure Key Vault, this is url of the key in the vault.\n * @param algorithm - algorithm to be used for wrapping.\n * @param unwrappedKey - dek to be wrapped.\n * @returns wrapped DEK.\n */\n public async wrapKey(\n encryptionKeyId: string,\n algorithm: string,\n unwrappedKey: Uint8Array,\n ): Promise<Uint8Array> {\n try {\n const origin = this.getOrigin(encryptionKeyId);\n const keyClient = new KeyClient(origin, this.credentials);\n const [keyName, keyVersion] = this.getKeyDetails(encryptionKeyId);\n const cryptographyClient = keyClient.getCryptographyClient(keyName, {\n keyVersion: keyVersion,\n });\n const res = await cryptographyClient.wrapKey(algorithm as KeyWrapAlgorithm, unwrappedKey);\n if (!res || !res.result) {\n throw new ErrorResponse(`Failed to wrap key: ${res}`);\n }\n return res.result;\n } catch (e) {\n throw new ErrorResponse(`Failed to wrap key: ${e.message}`);\n }\n }\n /**\n * Unwraps the given wrapped key using the specified key encryption key path and algorithm.\n * @param encryptionKeyId - path to the customer managed key to be used for unwrapping. For Azure Key Vault, this is url of the key in the vault.\n * @param algorithm - algorithm to be used for unwrapping.\n * @param wrappedKey - wrapped DEK.\n * @returns unwrapped DEK.\n */\n public async unwrapKey(\n encryptionKeyId: string,\n algorithm: string,\n wrappedKey: Uint8Array,\n ): Promise<Uint8Array> {\n try {\n const origin = this.getOrigin(encryptionKeyId);\n const keyClient = new KeyClient(origin, this.credentials);\n const [keyName, keyVersion] = this.getKeyDetails(encryptionKeyId);\n const cryptographyClient = keyClient.getCryptographyClient(keyName, {\n keyVersion: keyVersion,\n });\n const res = await cryptographyClient.unwrapKey(algorithm as KeyWrapAlgorithm, wrappedKey);\n if (!res || !res.result) {\n throw new ErrorResponse(`Failed to wrap key: ${res}`);\n }\n return res.result;\n } catch (e) {\n throw new ErrorResponse(`Failed to unwrap key: ${e.message}`);\n }\n }\n // TODO: improve this method to extract key name and version from the url\n private getKeyDetails(encryptionKeyId: string): [string, string] {\n let url;\n try {\n url = new URL(encryptionKeyId);\n const parts = url.pathname.split(\"/\");\n if (parts.length < 4 || parts.length > 5) {\n throw new ErrorResponse(\n `Invalid key url: ${encryptionKeyId}. Key url must be in the format https://<vault>.vault.azure.net/keys/<key-name>/<key-version>`,\n );\n }\n if (parts.length === 4 || parts.length === 5) {\n return [parts[2], parts[3]];\n }\n } catch (e) {\n throw new ErrorResponse(\n `Invalid key url: ${encryptionKeyId}. Key url must be in the format https://<vault>.vault.azure.net/keys/<key-name>/<key-version>. Error: ${e.message}`,\n );\n }\n }\n\n private getOrigin(encryptionKeyId: string): string {\n try {\n const url = new URL(encryptionKeyId);\n return url.origin;\n } catch (e) {\n throw new ErrorResponse(\n `Invalid key url: ${encryptionKeyId}. Key url must be in the format https://<vault>.vault.azure.net/keys/<key-name>/<key-version>. Error: ${e.message}`,\n );\n }\n }\n}\n"]}
1
+ {"version":3,"file":"AzureKeyVaultEncryptionKeyResolver.js","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { TokenCredential } from \"@azure/core-auth\";\nimport type { EncryptionKeyResolver } from \"./EncryptionKeyResolver.js\";\nimport type { KeyWrapAlgorithm } from \"@azure/keyvault-keys\";\nimport { KeyClient } from \"@azure/keyvault-keys\";\nimport { ErrorResponse } from \"../../request/index.js\";\nimport { EncryptionKeyResolverName } from \"../enums/index.js\";\n\n/**\n * Implementation of EncryptionKeyResolver that uses Azure Key Vault for customer managed keys.\n */\nexport class AzureKeyVaultEncryptionKeyResolver implements EncryptionKeyResolver {\n private credentials: TokenCredential;\n\n constructor(credentials: TokenCredential) {\n this.credentials = credentials;\n }\n /**\n * Name of the resolver to use for client side encryption.\n * Currently only AzureKeyVault implementation is supported.\n */\n public encryptionKeyResolverName = EncryptionKeyResolverName.AzureKeyVault;\n /**\n * wraps the given key using the specified key encryption key path and algorithm.\n * @param encryptionKeyId - path to the customer managed key to be used for wrapping. For Azure Key Vault, this is url of the key in the vault.\n * @param algorithm - algorithm to be used for wrapping.\n * @param unwrappedKey - dek to be wrapped.\n * @returns wrapped DEK.\n */\n public async wrapKey(\n encryptionKeyId: string,\n algorithm: string,\n unwrappedKey: Uint8Array,\n ): Promise<Uint8Array> {\n try {\n const origin = this.getOrigin(encryptionKeyId);\n const keyClient = new KeyClient(origin, this.credentials);\n const [keyName, keyVersion] = this.getKeyDetails(encryptionKeyId);\n const cryptographyClient = keyClient.getCryptographyClient(keyName, {\n keyVersion: keyVersion,\n });\n const res = await cryptographyClient.wrapKey(algorithm as KeyWrapAlgorithm, unwrappedKey);\n if (!res || !res.result) {\n throw new ErrorResponse(`Failed to wrap key: ${res}`);\n }\n return res.result;\n } catch (e) {\n throw new ErrorResponse(`Failed to wrap key: ${e.message}`);\n }\n }\n /**\n * Unwraps the given wrapped key using the specified key encryption key path and algorithm.\n * @param encryptionKeyId - path to the customer managed key to be used for unwrapping. For Azure Key Vault, this is url of the key in the vault.\n * @param algorithm - algorithm to be used for unwrapping.\n * @param wrappedKey - wrapped DEK.\n * @returns unwrapped DEK.\n */\n public async unwrapKey(\n encryptionKeyId: string,\n algorithm: string,\n wrappedKey: Uint8Array,\n ): Promise<Uint8Array> {\n try {\n const origin = this.getOrigin(encryptionKeyId);\n const keyClient = new KeyClient(origin, this.credentials);\n const [keyName, keyVersion] = this.getKeyDetails(encryptionKeyId);\n const cryptographyClient = keyClient.getCryptographyClient(keyName, {\n keyVersion: keyVersion,\n });\n const res = await cryptographyClient.unwrapKey(algorithm as KeyWrapAlgorithm, wrappedKey);\n if (!res || !res.result) {\n throw new ErrorResponse(`Failed to wrap key: ${res}`);\n }\n return res.result;\n } catch (e) {\n throw new ErrorResponse(`Failed to unwrap key: ${e.message}`);\n }\n }\n // TODO: improve this method to extract key name and version from the url\n private getKeyDetails(encryptionKeyId: string): [string, string] {\n let url;\n try {\n url = new URL(encryptionKeyId);\n const parts = url.pathname.split(\"/\");\n if (parts.length < 4 || parts.length > 5) {\n throw new ErrorResponse(\n `Invalid key url: ${encryptionKeyId}. Key url must be in the format https://<vault>.vault.azure.net/keys/<key-name>/<key-version>`,\n );\n }\n if (parts.length === 4 || parts.length === 5) {\n return [parts[2], parts[3]];\n }\n } catch (e) {\n throw new ErrorResponse(\n `Invalid key url: ${encryptionKeyId}. Key url must be in the format https://<vault>.vault.azure.net/keys/<key-name>/<key-version>. Error: ${e.message}`,\n );\n }\n }\n\n private getOrigin(encryptionKeyId: string): string {\n try {\n const url = new URL(encryptionKeyId);\n return url.origin;\n } catch (e) {\n throw new ErrorResponse(\n `Invalid key url: ${encryptionKeyId}. Key url must be in the format https://<vault>.vault.azure.net/keys/<key-name>/<key-version>. Error: ${e.message}`,\n );\n }\n }\n}\n"]}