@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,10 +6,17 @@ import { startBackgroundTask } from "../utils/time.js";
6
6
  * Class to store encryption keys in unwrapped form and provide an interface for wrapping and unwrapping the keys.
7
7
  */
8
8
  export class EncryptionKeyStoreProvider {
9
+ keyEncryptionKeyResolver;
10
+ cacheTimeToLive;
11
+ RsaOaepEncryptionAlgorithm = "RSA-OAEP";
12
+ // interval for clear cache to run
13
+ cacheRefresher;
14
+ // cache to store the unwrapped encryption key. Key is the path of the encryption key
15
+ unwrappedEncryptionKeyCache;
16
+ providerName;
9
17
  constructor(keyEncryptionKeyResolver, cacheTimeToLive) {
10
18
  this.keyEncryptionKeyResolver = keyEncryptionKeyResolver;
11
19
  this.cacheTimeToLive = cacheTimeToLive;
12
- this.RsaOaepEncryptionAlgorithm = "RSA-OAEP";
13
20
  this.keyEncryptionKeyResolver = keyEncryptionKeyResolver;
14
21
  this.providerName = keyEncryptionKeyResolver.encryptionKeyResolverName;
15
22
  this.unwrappedEncryptionKeyCache = {};
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptionKeyStoreProvider.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionKeyStoreProvider.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD;;GAEG;AACH,MAAM,OAAO,0BAA0B;IAQrC,YACU,wBAA+C,EAC/C,eAAuB;QADvB,6BAAwB,GAAxB,wBAAwB,CAAuB;QAC/C,oBAAe,GAAf,eAAe,CAAQ;QAT1B,+BAA0B,GAAW,UAAU,CAAC;QAWrD,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC,yBAAyB,CAAC;QACvE,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,eAAuB,EACvB,SAAiC,EACjC,GAAW;QAEX,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CACtE,eAAe,EACf,SAAS,EACT,aAAa,CACd,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,eAAuB,EACvB,SAAiC,EACjC,UAAkB;QAElB,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAS,CACvD,eAAe,EACf,SAAS,EACT,UAAU,CACX,CAAC;YACF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,EAAE,CAAC;YACvD,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;YACxD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAS,CACtE,eAAe,EACf,SAAS,EACT,oBAAoB,CACrB,CAAC;YACF,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACjE,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC,KAAK,IAAI,EAAE;YACnD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACnD,IACE,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;oBAClE,IAAI,CAAC,eAAe,EACpB,CAAC;oBACD,OAAO,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC,EAAE,SAAS,CAAC,kCAAkC,CAAC,CAAC;IACnD,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"../common/index.js\";\nimport { startBackgroundTask } from \"../utils/time.js\";\nimport type { EncryptionKeyResolver } from \"./EncryptionKeyResolver/index.js\";\nimport type { KeyEncryptionAlgorithm } from \"./enums/index.js\";\n/**\n * Class to store encryption keys in unwrapped form and provide an interface for wrapping and unwrapping the keys.\n */\nexport class EncryptionKeyStoreProvider {\n public RsaOaepEncryptionAlgorithm: string = \"RSA-OAEP\";\n // interval for clear cache to run\n cacheRefresher: NodeJS.Timeout;\n\n // cache to store the unwrapped encryption key. Key is the path of the encryption key\n public unwrappedEncryptionKeyCache: { [key: string]: [Date, Buffer] };\n public providerName: string;\n constructor(\n private keyEncryptionKeyResolver: EncryptionKeyResolver,\n private cacheTimeToLive: number,\n ) {\n this.keyEncryptionKeyResolver = keyEncryptionKeyResolver;\n this.providerName = keyEncryptionKeyResolver.encryptionKeyResolverName;\n this.unwrappedEncryptionKeyCache = {};\n this.cacheTimeToLive = cacheTimeToLive;\n this.clearCacheOnTtlExpiry();\n }\n\n public async wrapKey(\n encryptionKeyId: string,\n algorithm: KeyEncryptionAlgorithm,\n key: Buffer,\n ): Promise<Buffer> {\n const uInt8ArrayKey = new Uint8Array(key);\n const wrappedEncryptionKey = await this.keyEncryptionKeyResolver.wrapKey(\n encryptionKeyId,\n algorithm,\n uInt8ArrayKey,\n );\n return Buffer.from(wrappedEncryptionKey);\n }\n\n public async unwrapKey(\n encryptionKeyId: string,\n algorithm: KeyEncryptionAlgorithm,\n wrappedKey: Buffer,\n ): Promise<Buffer> {\n if (this.cacheTimeToLive === 0) {\n const res = await this.keyEncryptionKeyResolver.unwrapKey(\n encryptionKeyId,\n algorithm,\n wrappedKey,\n );\n return Buffer.from(res);\n }\n if (!this.unwrappedEncryptionKeyCache[encryptionKeyId]) {\n const wrappedKeyUint8Array = new Uint8Array(wrappedKey);\n const plainEncryptionKey = await this.keyEncryptionKeyResolver.unwrapKey(\n encryptionKeyId,\n algorithm,\n wrappedKeyUint8Array,\n );\n const plainEncryptionKeyBuffer = Buffer.from(plainEncryptionKey);\n this.unwrappedEncryptionKeyCache[encryptionKeyId] = [new Date(), plainEncryptionKeyBuffer];\n }\n return this.unwrappedEncryptionKeyCache[encryptionKeyId][1];\n }\n\n private async clearCacheOnTtlExpiry(): Promise<void> {\n this.cacheRefresher = startBackgroundTask(async () => {\n const now = new Date();\n for (const key in this.unwrappedEncryptionKeyCache) {\n if (\n now.getTime() - this.unwrappedEncryptionKeyCache[key][0].getTime() >\n this.cacheTimeToLive\n ) {\n delete this.unwrappedEncryptionKeyCache[key];\n }\n }\n }, Constants.EncryptionCacheRefreshIntervalInMs);\n }\n}\n"]}
1
+ {"version":3,"file":"EncryptionKeyStoreProvider.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionKeyStoreProvider.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD;;GAEG;AACH,MAAM,OAAO,0BAA0B;IAS3B;IACA;IATH,0BAA0B,GAAW,UAAU,CAAC;IACvD,kCAAkC;IAClC,cAAc,CAAiB;IAE/B,qFAAqF;IAC9E,2BAA2B,CAAoC;IAC/D,YAAY,CAAS;IAC5B,YACU,wBAA+C,EAC/C,eAAuB;QADvB,6BAAwB,GAAxB,wBAAwB,CAAuB;QAC/C,oBAAe,GAAf,eAAe,CAAQ;QAE/B,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC,yBAAyB,CAAC;QACvE,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,eAAuB,EACvB,SAAiC,EACjC,GAAW;QAEX,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CACtE,eAAe,EACf,SAAS,EACT,aAAa,CACd,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,eAAuB,EACvB,SAAiC,EACjC,UAAkB;QAElB,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAS,CACvD,eAAe,EACf,SAAS,EACT,UAAU,CACX,CAAC;YACF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,EAAE,CAAC;YACvD,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;YACxD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAS,CACtE,eAAe,EACf,SAAS,EACT,oBAAoB,CACrB,CAAC;YACF,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACjE,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC,KAAK,IAAI,EAAE;YACnD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACnD,IACE,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;oBAClE,IAAI,CAAC,eAAe,EACpB,CAAC;oBACD,OAAO,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC,EAAE,SAAS,CAAC,kCAAkC,CAAC,CAAC;IACnD,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"../common/index.js\";\nimport { startBackgroundTask } from \"../utils/time.js\";\nimport type { EncryptionKeyResolver } from \"./EncryptionKeyResolver/index.js\";\nimport type { KeyEncryptionAlgorithm } from \"./enums/index.js\";\n/**\n * Class to store encryption keys in unwrapped form and provide an interface for wrapping and unwrapping the keys.\n */\nexport class EncryptionKeyStoreProvider {\n public RsaOaepEncryptionAlgorithm: string = \"RSA-OAEP\";\n // interval for clear cache to run\n cacheRefresher: NodeJS.Timeout;\n\n // cache to store the unwrapped encryption key. Key is the path of the encryption key\n public unwrappedEncryptionKeyCache: { [key: string]: [Date, Buffer] };\n public providerName: string;\n constructor(\n private keyEncryptionKeyResolver: EncryptionKeyResolver,\n private cacheTimeToLive: number,\n ) {\n this.keyEncryptionKeyResolver = keyEncryptionKeyResolver;\n this.providerName = keyEncryptionKeyResolver.encryptionKeyResolverName;\n this.unwrappedEncryptionKeyCache = {};\n this.cacheTimeToLive = cacheTimeToLive;\n this.clearCacheOnTtlExpiry();\n }\n\n public async wrapKey(\n encryptionKeyId: string,\n algorithm: KeyEncryptionAlgorithm,\n key: Buffer,\n ): Promise<Buffer> {\n const uInt8ArrayKey = new Uint8Array(key);\n const wrappedEncryptionKey = await this.keyEncryptionKeyResolver.wrapKey(\n encryptionKeyId,\n algorithm,\n uInt8ArrayKey,\n );\n return Buffer.from(wrappedEncryptionKey);\n }\n\n public async unwrapKey(\n encryptionKeyId: string,\n algorithm: KeyEncryptionAlgorithm,\n wrappedKey: Buffer,\n ): Promise<Buffer> {\n if (this.cacheTimeToLive === 0) {\n const res = await this.keyEncryptionKeyResolver.unwrapKey(\n encryptionKeyId,\n algorithm,\n wrappedKey,\n );\n return Buffer.from(res);\n }\n if (!this.unwrappedEncryptionKeyCache[encryptionKeyId]) {\n const wrappedKeyUint8Array = new Uint8Array(wrappedKey);\n const plainEncryptionKey = await this.keyEncryptionKeyResolver.unwrapKey(\n encryptionKeyId,\n algorithm,\n wrappedKeyUint8Array,\n );\n const plainEncryptionKeyBuffer = Buffer.from(plainEncryptionKey);\n this.unwrappedEncryptionKeyCache[encryptionKeyId] = [new Date(), plainEncryptionKeyBuffer];\n }\n return this.unwrappedEncryptionKeyCache[encryptionKeyId][1];\n }\n\n private async clearCacheOnTtlExpiry(): Promise<void> {\n this.cacheRefresher = startBackgroundTask(async () => {\n const now = new Date();\n for (const key in this.unwrappedEncryptionKeyCache) {\n if (\n now.getTime() - this.unwrappedEncryptionKeyCache[key][0].getTime() >\n this.cacheTimeToLive\n ) {\n delete this.unwrappedEncryptionKeyCache[key];\n }\n }\n }, Constants.EncryptionCacheRefreshIntervalInMs);\n }\n}\n"]}
@@ -11,6 +11,12 @@ import { Constants } from "../common/constants.js";
11
11
  * @hidden
12
12
  */
13
13
  export class EncryptionManager {
14
+ cacheTimeToLive;
15
+ encryptionKeyStoreProvider;
16
+ protectedDataEncryptionKeyCache;
17
+ keyEncryptionKeyCache;
18
+ encryptionSettingsCache;
19
+ clientEncryptionKeyPropertiesCache;
14
20
  constructor(encryptionKeyResolver, cacheTimeToLive) {
15
21
  this.cacheTimeToLive =
16
22
  cacheTimeToLive !== undefined
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptionManager.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionManager.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,kCAAkC,EAAE,MAAM,+CAA+C,CAAC;AACnG,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAQ5B,YAAY,qBAA4C,EAAE,eAAwB;QAChF,IAAI,CAAC,eAAe;YAClB,eAAe,KAAK,SAAS;gBAC3B,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,SAAS,CAAC,yCAAyC,CAAC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAI,CAAC,0BAA0B,GAAG,IAAI,0BAA0B,CAC9D,qBAAqB,EACrB,YAAY,CACb,CAAC;QACF,IAAI,CAAC,+BAA+B,GAAG,IAAI,+BAA+B,CAAC,YAAY,CAAC,CAAC;QACzF,IAAI,CAAC,qBAAqB,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACzD,IAAI,CAAC,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC7D,IAAI,CAAC,kCAAkC,GAAG,IAAI,kCAAkC,EAAE,CAAC;IACrF,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,MAAM,qBAAqB,GAAG,IAAI,CAAC;QACnC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,CAAC;IAC9D,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ProtectedDataEncryptionKeyCache } from \"./Cache/ProtectedDataEncryptionKeyCache.js\";\nimport { KeyEncryptionKeyCache } from \"./Cache/KeyEncryptionKeyCache.js\";\nimport { EncryptionSettingsCache } from \"./Cache/EncryptionSettingsCache.js\";\nimport { ClientEncryptionKeyPropertiesCache } from \"./Cache/ClientEncryptionKeyPropertiesCache.js\";\nimport { EncryptionKeyStoreProvider } from \"./EncryptionKeyStoreProvider.js\";\nimport { Constants } from \"../common/constants.js\";\nimport type { EncryptionKeyResolver } from \"./EncryptionKeyResolver/index.js\";\n/**\n * Cache manager for encryption related caches.\n * @hidden\n */\nexport class EncryptionManager {\n public cacheTimeToLive: number;\n public encryptionKeyStoreProvider: EncryptionKeyStoreProvider;\n public protectedDataEncryptionKeyCache: ProtectedDataEncryptionKeyCache;\n public keyEncryptionKeyCache: KeyEncryptionKeyCache;\n public encryptionSettingsCache: EncryptionSettingsCache;\n public clientEncryptionKeyPropertiesCache: ClientEncryptionKeyPropertiesCache;\n\n constructor(encryptionKeyResolver: EncryptionKeyResolver, cacheTimeToLive?: number) {\n this.cacheTimeToLive =\n cacheTimeToLive !== undefined\n ? cacheTimeToLive\n : Constants.DefaultEncryptionCacheTimeToLiveInSeconds;\n const cacheTtlInMs = this.getCacheTTlInMs();\n this.encryptionKeyStoreProvider = new EncryptionKeyStoreProvider(\n encryptionKeyResolver,\n cacheTtlInMs,\n );\n this.protectedDataEncryptionKeyCache = new ProtectedDataEncryptionKeyCache(cacheTtlInMs);\n this.keyEncryptionKeyCache = new KeyEncryptionKeyCache();\n this.encryptionSettingsCache = new EncryptionSettingsCache();\n this.clientEncryptionKeyPropertiesCache = new ClientEncryptionKeyPropertiesCache();\n }\n\n /**\n * Converts the EncryptionTimeToLive instance to a number (milliseconds).\n */\n private getCacheTTlInMs(): number {\n const millisecondsPerSecond = 1000;\n return Number(this.cacheTimeToLive * millisecondsPerSecond);\n }\n}\n"]}
1
+ {"version":3,"file":"EncryptionManager.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionManager.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,kCAAkC,EAAE,MAAM,+CAA+C,CAAC;AACnG,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACrB,eAAe,CAAS;IACxB,0BAA0B,CAA6B;IACvD,+BAA+B,CAAkC;IACjE,qBAAqB,CAAwB;IAC7C,uBAAuB,CAA0B;IACjD,kCAAkC,CAAqC;IAE9E,YAAY,qBAA4C,EAAE,eAAwB;QAChF,IAAI,CAAC,eAAe;YAClB,eAAe,KAAK,SAAS;gBAC3B,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,SAAS,CAAC,yCAAyC,CAAC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAI,CAAC,0BAA0B,GAAG,IAAI,0BAA0B,CAC9D,qBAAqB,EACrB,YAAY,CACb,CAAC;QACF,IAAI,CAAC,+BAA+B,GAAG,IAAI,+BAA+B,CAAC,YAAY,CAAC,CAAC;QACzF,IAAI,CAAC,qBAAqB,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACzD,IAAI,CAAC,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC7D,IAAI,CAAC,kCAAkC,GAAG,IAAI,kCAAkC,EAAE,CAAC;IACrF,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,MAAM,qBAAqB,GAAG,IAAI,CAAC;QACnC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,CAAC;IAC9D,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ProtectedDataEncryptionKeyCache } from \"./Cache/ProtectedDataEncryptionKeyCache.js\";\nimport { KeyEncryptionKeyCache } from \"./Cache/KeyEncryptionKeyCache.js\";\nimport { EncryptionSettingsCache } from \"./Cache/EncryptionSettingsCache.js\";\nimport { ClientEncryptionKeyPropertiesCache } from \"./Cache/ClientEncryptionKeyPropertiesCache.js\";\nimport { EncryptionKeyStoreProvider } from \"./EncryptionKeyStoreProvider.js\";\nimport { Constants } from \"../common/constants.js\";\nimport type { EncryptionKeyResolver } from \"./EncryptionKeyResolver/index.js\";\n/**\n * Cache manager for encryption related caches.\n * @hidden\n */\nexport class EncryptionManager {\n public cacheTimeToLive: number;\n public encryptionKeyStoreProvider: EncryptionKeyStoreProvider;\n public protectedDataEncryptionKeyCache: ProtectedDataEncryptionKeyCache;\n public keyEncryptionKeyCache: KeyEncryptionKeyCache;\n public encryptionSettingsCache: EncryptionSettingsCache;\n public clientEncryptionKeyPropertiesCache: ClientEncryptionKeyPropertiesCache;\n\n constructor(encryptionKeyResolver: EncryptionKeyResolver, cacheTimeToLive?: number) {\n this.cacheTimeToLive =\n cacheTimeToLive !== undefined\n ? cacheTimeToLive\n : Constants.DefaultEncryptionCacheTimeToLiveInSeconds;\n const cacheTtlInMs = this.getCacheTTlInMs();\n this.encryptionKeyStoreProvider = new EncryptionKeyStoreProvider(\n encryptionKeyResolver,\n cacheTtlInMs,\n );\n this.protectedDataEncryptionKeyCache = new ProtectedDataEncryptionKeyCache(cacheTtlInMs);\n this.keyEncryptionKeyCache = new KeyEncryptionKeyCache();\n this.encryptionSettingsCache = new EncryptionSettingsCache();\n this.clientEncryptionKeyPropertiesCache = new ClientEncryptionKeyPropertiesCache();\n }\n\n /**\n * Converts the EncryptionTimeToLive instance to a number (milliseconds).\n */\n private getCacheTTlInMs(): number {\n const millisecondsPerSecond = 1000;\n return Number(this.cacheTimeToLive * millisecondsPerSecond);\n }\n}\n"]}
@@ -4,6 +4,11 @@ import { Constants, ResourceType, StatusCodes, createDeserializer, createSeriali
4
4
  import { ErrorResponse } from "../request/index.js";
5
5
  import { withDiagnostics } from "../utils/diagnostics.js";
6
6
  export class EncryptionProcessor {
7
+ containerId;
8
+ containerRid;
9
+ database;
10
+ clientContext;
11
+ encryptionManager;
7
12
  constructor(containerId, containerRid, database, clientContext, encryptionManager) {
8
13
  this.containerId = containerId;
9
14
  this.containerRid = containerRid;
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptionProcessor.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionSettings } from \"./EncryptionSettings.js\";\nimport type { EncryptionSettingForProperty } from \"./EncryptionSettingForProperty.js\";\nimport type { AeadAes256CbcHmacSha256Algorithm } from \"./AeadAes256CbcHmacSha256Algorithm/index.js\";\nimport type { ContainerDefinition, Database, ItemDefinition } from \"../client/index.js\";\nimport type { PartitionKeyInternal } from \"../documents/index.js\";\nimport type { TypeMarker } from \"./enums/TypeMarker.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport type { ClientEncryptionKeyRequest } from \"./ClientEncryptionKey/index.js\";\nimport type { ClientEncryptionKeyProperties } from \"./ClientEncryptionKey/index.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport {\n Constants,\n ResourceType,\n StatusCodes,\n createDeserializer,\n createSerializer,\n extractPath,\n} from \"../common/index.js\";\nimport type { RequestOptions } from \"../request/index.js\";\nimport { ErrorResponse } from \"../request/index.js\";\nimport { withDiagnostics } from \"../utils/diagnostics.js\";\nimport type { EncryptionManager } from \"./EncryptionManager.js\";\nimport type { JSONValue } from \"../queryExecutionContext/index.js\";\n\nexport class EncryptionProcessor {\n constructor(\n private readonly containerId: string,\n public containerRid: string,\n private readonly database: Database,\n private readonly clientContext: ClientContext,\n private encryptionManager: EncryptionManager,\n ) {}\n\n async encrypt<T extends ItemDefinition>(\n body: T,\n ): Promise<{ body: T; propertiesEncryptedCount: number }> {\n if (!body) {\n throw new ErrorResponse(\"Input body is null or undefined.\");\n }\n let propertiesEncryptedCount = 0;\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return { body, propertiesEncryptedCount };\n for (const pathToEncrypt of encryptionSettings.pathsToEncrypt) {\n const propertyName = pathToEncrypt.slice(1);\n if (!Object.prototype.hasOwnProperty.call(body, propertyName)) {\n continue;\n }\n\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(pathToEncrypt);\n if (!settingForProperty) {\n throw new ErrorResponse(\"Invalid Encryption Setting for the Property: \" + propertyName);\n }\n body[propertyName as keyof T] = await this.encryptToken(\n body[propertyName],\n settingForProperty,\n propertyName === \"id\",\n );\n propertiesEncryptedCount++;\n }\n return { body, propertiesEncryptedCount };\n }\n\n async isPathEncrypted(path: string): Promise<boolean> {\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) return false;\n return true;\n }\n\n async encryptProperty(path: string, value: JSONValue): Promise<any> {\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return value;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) {\n return value;\n }\n\n value = await this.encryptToken(value, settingForProperty, path === \"/id\");\n return value;\n }\n\n async getEncryptedPartitionKeyValue(\n partitionKeyList: PartitionKeyInternal,\n ): Promise<{ partitionKeyList: PartitionKeyInternal; encryptedCount: number }> {\n const encryptionSettings = await this.getEncryptionSetting();\n let encryptedCount = 0;\n if (!encryptionSettings) return { partitionKeyList, encryptedCount };\n const partitionKeyPaths = encryptionSettings.partitionKeyPaths;\n for (let i = 0; i < partitionKeyPaths.length; i++) {\n const partitionKeyPath = extractPath(partitionKeyPaths[i]);\n if (encryptionSettings.pathsToEncrypt.includes(partitionKeyPath)) {\n const settingForProperty =\n encryptionSettings.getEncryptionSettingForProperty(partitionKeyPath);\n partitionKeyList[i] = await this.encryptToken(\n partitionKeyList[i],\n settingForProperty,\n partitionKeyPath === \"/id\",\n );\n encryptedCount++;\n }\n }\n return { partitionKeyList, encryptedCount };\n }\n\n async getEncryptedUrl(id: string): Promise<string> {\n const parts = id.split(\"/\");\n const lastPart = parts[parts.length - 1];\n const encryptedLastPart = await this.getEncryptedId(lastPart);\n parts[parts.length - 1] = encryptedLastPart;\n return parts.join(\"/\");\n }\n\n async getEncryptedId(id: string): Promise<string> {\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return id;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(\"/id\");\n\n if (!settingForProperty) return id;\n id = await this.encryptToken(id, settingForProperty, true);\n return id;\n }\n\n async encryptQueryParameter(\n path: string,\n value: JSONValue,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<JSONValue> {\n if (value === null) {\n return value;\n }\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return value;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) {\n return value;\n }\n return this.encryptToken(value, settingForProperty, isValueId, type);\n }\n\n private async encryptToken(\n valueToEncrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<any> {\n if (typeof valueToEncrypt === \"object\" && valueToEncrypt !== null) {\n for (const key in valueToEncrypt) {\n if (Object.prototype.hasOwnProperty.call(valueToEncrypt, key)) {\n valueToEncrypt[key] = await this.encryptToken(\n valueToEncrypt[key],\n propertySetting,\n isValueId,\n type,\n );\n }\n }\n } else if (Array.isArray(type)) {\n for (let i = 0; i < valueToEncrypt.length; i++) {\n valueToEncrypt[i] = await this.encryptToken(\n valueToEncrypt[i],\n propertySetting,\n isValueId,\n type,\n );\n }\n } else {\n valueToEncrypt = await this.serializeAndEncryptValue(\n valueToEncrypt,\n propertySetting,\n isValueId,\n type,\n );\n }\n return valueToEncrypt;\n }\n\n private async serializeAndEncryptValue(\n valueToEncrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<string> {\n if (valueToEncrypt === null) {\n return valueToEncrypt;\n }\n const [typeMarker, serializer] = createSerializer(valueToEncrypt, type);\n const plainText = serializer.serialize(valueToEncrypt);\n const encryptionAlgorithm = await this.buildEncryptionAlgorithm(propertySetting);\n const cipherText = encryptionAlgorithm.encrypt(plainText);\n if (isValueId) {\n if (typeof valueToEncrypt !== \"string\") {\n throw new ErrorResponse(\"The id should be of string type.\");\n }\n }\n\n const cipherTextWithTypeMarker = Buffer.alloc(cipherText.length + 1);\n cipherTextWithTypeMarker[0] = typeMarker;\n cipherText.forEach((value, index) => {\n cipherTextWithTypeMarker[index + 1] = value;\n });\n let encryptedValue = Buffer.from(cipherTextWithTypeMarker).toString(\"base64\");\n if (isValueId) {\n encryptedValue = encryptedValue.replace(/\\//g, \"_\").replace(/\\+/g, \"-\");\n }\n return encryptedValue;\n }\n\n async decrypt<T extends ItemDefinition>(\n body: T,\n ): Promise<{ body: T; propertiesDecryptedCount: number }> {\n let propertiesDecryptedCount = 0;\n if (body == null) {\n return { body, propertiesDecryptedCount };\n }\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return { body, propertiesDecryptedCount };\n for (const pathToEncrypt of encryptionSettings.pathsToEncrypt) {\n const propertyName = pathToEncrypt.slice(1);\n if (!Object.prototype.hasOwnProperty.call(body, propertyName)) {\n continue;\n }\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(pathToEncrypt);\n if (settingForProperty == null) {\n throw new ErrorResponse(\"Invalid Encryption Setting for the Path: \" + pathToEncrypt);\n }\n\n body[propertyName as keyof T] = await this.decryptToken(\n body[propertyName],\n settingForProperty,\n propertyName === \"id\",\n );\n propertiesDecryptedCount++;\n }\n return { body, propertiesDecryptedCount };\n }\n\n private async decryptToken(\n valueToDecrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n ): Promise<any> {\n if (typeof valueToDecrypt === \"object\") {\n for (const key in valueToDecrypt) {\n if (Object.prototype.hasOwnProperty.call(valueToDecrypt, key)) {\n valueToDecrypt[key] = await this.decryptToken(\n valueToDecrypt[key],\n propertySetting,\n isValueId,\n );\n }\n }\n } else if (Array.isArray(valueToDecrypt)) {\n for (let i = 0; i < valueToDecrypt.length; i++) {\n valueToDecrypt[i] = await this.decryptToken(valueToDecrypt[i], propertySetting, isValueId);\n }\n } else {\n valueToDecrypt = await this.deserializeAndDecryptValue(\n valueToDecrypt,\n propertySetting,\n isValueId,\n );\n }\n return valueToDecrypt;\n }\n\n private async deserializeAndDecryptValue(\n valueToDecrypt: string,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n ): Promise<any> {\n if (isValueId) {\n valueToDecrypt = valueToDecrypt.replace(/_/g, \"/\").replace(/-/g, \"+\");\n }\n const cipherTextWithTypeMarker = Buffer.from(valueToDecrypt, \"base64\");\n if (cipherTextWithTypeMarker === null) {\n return null;\n }\n\n let cipherText = Buffer.alloc(cipherTextWithTypeMarker.length - 1);\n cipherText = Buffer.from(cipherTextWithTypeMarker.slice(1));\n\n const encryptionAlgorithm = await this.buildEncryptionAlgorithm(propertySetting);\n const plainText = encryptionAlgorithm.decrypt(cipherText);\n if (plainText === null) {\n throw new ErrorResponse(\"returned null plain text\");\n }\n\n const serializer = createDeserializer(cipherTextWithTypeMarker[0] as TypeMarker);\n return serializer.deserialize(plainText);\n }\n\n async getEncryptionSetting(forceRefresh?: boolean): Promise<EncryptionSettings> {\n const key = this.database._rid + \"/\" + this.containerRid;\n const encryptionSetting = this.encryptionManager.encryptionSettingsCache.get(key);\n if (forceRefresh || !encryptionSetting) {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = `/dbs/${this.database.id}/colls/${this.containerId}`;\n const id = `dbs/${this.database.id}/colls/${this.containerId}`;\n const response = await this.clientContext.read<ContainerDefinition>({\n path,\n resourceType: ResourceType.container,\n resourceId: id,\n diagnosticNode,\n });\n if (!response || !response.result) {\n throw new ErrorResponse(\"Failed to fetch container definition\");\n }\n const containerRid = response.result._rid;\n const clientEncryptionPolicy = response.result.clientEncryptionPolicy;\n const partitionKeyPaths = response.result.partitionKey.paths;\n const updatedEncryptionSetting =\n await this.encryptionManager.encryptionSettingsCache.create(\n key,\n containerRid,\n partitionKeyPaths,\n clientEncryptionPolicy,\n );\n return updatedEncryptionSetting;\n }, this.clientContext);\n }\n return encryptionSetting;\n }\n\n private async buildEncryptionAlgorithm(\n propertySetting: EncryptionSettingForProperty,\n ): Promise<AeadAes256CbcHmacSha256Algorithm> {\n const key = `${this.database._rid}/${propertySetting.encryptionKeyId}`;\n let clientEncryptionKeyProperties =\n this.encryptionManager.clientEncryptionKeyPropertiesCache.get(key);\n if (!clientEncryptionKeyProperties) {\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n );\n }\n try {\n // the buildEncryptionAlgorithm will build ProtectedDEK which calls unwrapKey using the masterKey configured in\n // KeyEncryptionKey(created before creating Protected DEK)\n // we get wrapped key and key wrap metadata info from clientEncryptionKeyProperties.\n return await propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n );\n } catch (err) {\n if (err.statusCode !== StatusCodes.Forbidden) throw err;\n // if access to key is revoked, and in case there's stale value in cache\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n );\n\n try {\n // This will succeed after if client has rewrapped CEK and gateway cache has updated value.\n return await propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n true,\n );\n } catch (retryErr) {\n if (retryErr.statusCode !== StatusCodes.Forbidden) throw retryErr;\n\n // in case there's stale value in gateway cache. get fresh value from backend\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n clientEncryptionKeyProperties.etag,\n );\n return propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n );\n }\n }\n }\n\n private async fetchClientEncryptionKey(\n cekId: string,\n cekEtag?: string,\n ): Promise<ClientEncryptionKeyProperties> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = `/dbs/${this.database.id}/clientencryptionkeys/${cekId}`;\n const id = `dbs/${this.database.id}/clientencryptionkeys/${cekId}`;\n const options: RequestOptions = {};\n if (cekEtag) {\n options.accessCondition = {\n type: Constants.HttpHeaders.IfNoneMatch,\n condition: cekEtag,\n };\n }\n options.databaseRid = this.database._rid;\n const response = await this.clientContext.read<ClientEncryptionKeyRequest>({\n path: path,\n resourceType: ResourceType.clientencryptionkey,\n resourceId: id,\n options: options,\n diagnosticNode,\n });\n if (!response) {\n throw new ErrorResponse(`Failed to fetch client encryption key ${cekId}`);\n }\n if (response.code === StatusCodes.NotModified) {\n throw new ErrorResponse(\n `The Client Encryption Key with key id: ${cekId} on database: ${this.database.id} needs to be rewrapped with a valid Key Encryption Key using rewrapClientEncryptionKey. The Key Encryption Key used to wrap the Client Encryption Key has been revoked`,\n );\n }\n const clientEncryptionKeyProperties: ClientEncryptionKeyProperties = {\n id: response.result.id,\n encryptionAlgorithm: response.result.encryptionAlgorithm,\n wrappedDataEncryptionKey: new Uint8Array(\n Buffer.from(response.result.wrappedDataEncryptionKey, \"base64\"),\n ),\n encryptionKeyWrapMetadata: response.result.keyWrapMetadata,\n etag: response.result._etag,\n };\n const key = this.database._rid + \"/\" + cekId;\n this.encryptionManager.clientEncryptionKeyPropertiesCache.set(\n key,\n clientEncryptionKeyProperties,\n );\n return clientEncryptionKeyProperties;\n }, this.clientContext);\n }\n}\n"]}
1
+ {"version":3,"file":"EncryptionProcessor.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionSettings } from \"./EncryptionSettings.js\";\nimport type { EncryptionSettingForProperty } from \"./EncryptionSettingForProperty.js\";\nimport type { AeadAes256CbcHmacSha256Algorithm } from \"./AeadAes256CbcHmacSha256Algorithm/index.js\";\nimport type { ContainerDefinition, Database, ItemDefinition } from \"../client/index.js\";\nimport type { PartitionKeyInternal } from \"../documents/index.js\";\nimport type { TypeMarker } from \"./enums/TypeMarker.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport type { ClientEncryptionKeyRequest } from \"./ClientEncryptionKey/index.js\";\nimport type { ClientEncryptionKeyProperties } from \"./ClientEncryptionKey/index.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport {\n Constants,\n ResourceType,\n StatusCodes,\n createDeserializer,\n createSerializer,\n extractPath,\n} from \"../common/index.js\";\nimport type { RequestOptions } from \"../request/index.js\";\nimport { ErrorResponse } from \"../request/index.js\";\nimport { withDiagnostics } from \"../utils/diagnostics.js\";\nimport type { EncryptionManager } from \"./EncryptionManager.js\";\nimport type { JSONValue } from \"../queryExecutionContext/index.js\";\n\nexport class EncryptionProcessor {\n constructor(\n private readonly containerId: string,\n public containerRid: string,\n private readonly database: Database,\n private readonly clientContext: ClientContext,\n private encryptionManager: EncryptionManager,\n ) {}\n\n async encrypt<T extends ItemDefinition>(\n body: T,\n ): Promise<{ body: T; propertiesEncryptedCount: number }> {\n if (!body) {\n throw new ErrorResponse(\"Input body is null or undefined.\");\n }\n let propertiesEncryptedCount = 0;\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return { body, propertiesEncryptedCount };\n for (const pathToEncrypt of encryptionSettings.pathsToEncrypt) {\n const propertyName = pathToEncrypt.slice(1);\n if (!Object.prototype.hasOwnProperty.call(body, propertyName)) {\n continue;\n }\n\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(pathToEncrypt);\n if (!settingForProperty) {\n throw new ErrorResponse(\"Invalid Encryption Setting for the Property: \" + propertyName);\n }\n body[propertyName as keyof T] = await this.encryptToken(\n body[propertyName],\n settingForProperty,\n propertyName === \"id\",\n );\n propertiesEncryptedCount++;\n }\n return { body, propertiesEncryptedCount };\n }\n\n async isPathEncrypted(path: string): Promise<boolean> {\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) return false;\n return true;\n }\n\n async encryptProperty(path: string, value: JSONValue): Promise<any> {\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return value;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) {\n return value;\n }\n\n value = await this.encryptToken(value, settingForProperty, path === \"/id\");\n return value;\n }\n\n async getEncryptedPartitionKeyValue(\n partitionKeyList: PartitionKeyInternal,\n ): Promise<{ partitionKeyList: PartitionKeyInternal; encryptedCount: number }> {\n const encryptionSettings = await this.getEncryptionSetting();\n let encryptedCount = 0;\n if (!encryptionSettings) return { partitionKeyList, encryptedCount };\n const partitionKeyPaths = encryptionSettings.partitionKeyPaths;\n for (let i = 0; i < partitionKeyPaths.length; i++) {\n const partitionKeyPath = extractPath(partitionKeyPaths[i]);\n if (encryptionSettings.pathsToEncrypt.includes(partitionKeyPath)) {\n const settingForProperty =\n encryptionSettings.getEncryptionSettingForProperty(partitionKeyPath);\n partitionKeyList[i] = await this.encryptToken(\n partitionKeyList[i],\n settingForProperty,\n partitionKeyPath === \"/id\",\n );\n encryptedCount++;\n }\n }\n return { partitionKeyList, encryptedCount };\n }\n\n async getEncryptedUrl(id: string): Promise<string> {\n const parts = id.split(\"/\");\n const lastPart = parts[parts.length - 1];\n const encryptedLastPart = await this.getEncryptedId(lastPart);\n parts[parts.length - 1] = encryptedLastPart;\n return parts.join(\"/\");\n }\n\n async getEncryptedId(id: string): Promise<string> {\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return id;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(\"/id\");\n\n if (!settingForProperty) return id;\n id = await this.encryptToken(id, settingForProperty, true);\n return id;\n }\n\n async encryptQueryParameter(\n path: string,\n value: JSONValue,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<JSONValue> {\n if (value === null) {\n return value;\n }\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return value;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) {\n return value;\n }\n return this.encryptToken(value, settingForProperty, isValueId, type);\n }\n\n private async encryptToken(\n valueToEncrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<any> {\n if (typeof valueToEncrypt === \"object\" && valueToEncrypt !== null) {\n for (const key in valueToEncrypt) {\n if (Object.prototype.hasOwnProperty.call(valueToEncrypt, key)) {\n valueToEncrypt[key] = await this.encryptToken(\n valueToEncrypt[key],\n propertySetting,\n isValueId,\n type,\n );\n }\n }\n } else if (Array.isArray(type)) {\n for (let i = 0; i < valueToEncrypt.length; i++) {\n valueToEncrypt[i] = await this.encryptToken(\n valueToEncrypt[i],\n propertySetting,\n isValueId,\n type,\n );\n }\n } else {\n valueToEncrypt = await this.serializeAndEncryptValue(\n valueToEncrypt,\n propertySetting,\n isValueId,\n type,\n );\n }\n return valueToEncrypt;\n }\n\n private async serializeAndEncryptValue(\n valueToEncrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<string> {\n if (valueToEncrypt === null) {\n return valueToEncrypt;\n }\n const [typeMarker, serializer] = createSerializer(valueToEncrypt, type);\n const plainText = serializer.serialize(valueToEncrypt);\n const encryptionAlgorithm = await this.buildEncryptionAlgorithm(propertySetting);\n const cipherText = encryptionAlgorithm.encrypt(plainText);\n if (isValueId) {\n if (typeof valueToEncrypt !== \"string\") {\n throw new ErrorResponse(\"The id should be of string type.\");\n }\n }\n\n const cipherTextWithTypeMarker = Buffer.alloc(cipherText.length + 1);\n cipherTextWithTypeMarker[0] = typeMarker;\n cipherText.forEach((value, index) => {\n cipherTextWithTypeMarker[index + 1] = value;\n });\n let encryptedValue = Buffer.from(cipherTextWithTypeMarker).toString(\"base64\");\n if (isValueId) {\n encryptedValue = encryptedValue.replace(/\\//g, \"_\").replace(/\\+/g, \"-\");\n }\n return encryptedValue;\n }\n\n async decrypt<T extends ItemDefinition>(\n body: T,\n ): Promise<{ body: T; propertiesDecryptedCount: number }> {\n let propertiesDecryptedCount = 0;\n if (body == null) {\n return { body, propertiesDecryptedCount };\n }\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return { body, propertiesDecryptedCount };\n for (const pathToEncrypt of encryptionSettings.pathsToEncrypt) {\n const propertyName = pathToEncrypt.slice(1);\n if (!Object.prototype.hasOwnProperty.call(body, propertyName)) {\n continue;\n }\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(pathToEncrypt);\n if (settingForProperty == null) {\n throw new ErrorResponse(\"Invalid Encryption Setting for the Path: \" + pathToEncrypt);\n }\n\n body[propertyName as keyof T] = await this.decryptToken(\n body[propertyName],\n settingForProperty,\n propertyName === \"id\",\n );\n propertiesDecryptedCount++;\n }\n return { body, propertiesDecryptedCount };\n }\n\n private async decryptToken(\n valueToDecrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n ): Promise<any> {\n if (typeof valueToDecrypt === \"object\") {\n for (const key in valueToDecrypt) {\n if (Object.prototype.hasOwnProperty.call(valueToDecrypt, key)) {\n valueToDecrypt[key] = await this.decryptToken(\n valueToDecrypt[key],\n propertySetting,\n isValueId,\n );\n }\n }\n } else if (Array.isArray(valueToDecrypt)) {\n for (let i = 0; i < valueToDecrypt.length; i++) {\n valueToDecrypt[i] = await this.decryptToken(valueToDecrypt[i], propertySetting, isValueId);\n }\n } else {\n valueToDecrypt = await this.deserializeAndDecryptValue(\n valueToDecrypt,\n propertySetting,\n isValueId,\n );\n }\n return valueToDecrypt;\n }\n\n private async deserializeAndDecryptValue(\n valueToDecrypt: string,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n ): Promise<any> {\n if (isValueId) {\n valueToDecrypt = valueToDecrypt.replace(/_/g, \"/\").replace(/-/g, \"+\");\n }\n const cipherTextWithTypeMarker = Buffer.from(valueToDecrypt, \"base64\");\n if (cipherTextWithTypeMarker === null) {\n return null;\n }\n\n let cipherText = Buffer.alloc(cipherTextWithTypeMarker.length - 1);\n cipherText = Buffer.from(cipherTextWithTypeMarker.slice(1));\n\n const encryptionAlgorithm = await this.buildEncryptionAlgorithm(propertySetting);\n const plainText = encryptionAlgorithm.decrypt(cipherText);\n if (plainText === null) {\n throw new ErrorResponse(\"returned null plain text\");\n }\n\n const serializer = createDeserializer(cipherTextWithTypeMarker[0] as TypeMarker);\n return serializer.deserialize(plainText);\n }\n\n async getEncryptionSetting(forceRefresh?: boolean): Promise<EncryptionSettings> {\n const key = this.database._rid + \"/\" + this.containerRid;\n const encryptionSetting = this.encryptionManager.encryptionSettingsCache.get(key);\n if (forceRefresh || !encryptionSetting) {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = `/dbs/${this.database.id}/colls/${this.containerId}`;\n const id = `dbs/${this.database.id}/colls/${this.containerId}`;\n const response = await this.clientContext.read<ContainerDefinition>({\n path,\n resourceType: ResourceType.container,\n resourceId: id,\n diagnosticNode,\n });\n if (!response || !response.result) {\n throw new ErrorResponse(\"Failed to fetch container definition\");\n }\n const containerRid = response.result._rid;\n const clientEncryptionPolicy = response.result.clientEncryptionPolicy;\n const partitionKeyPaths = response.result.partitionKey.paths;\n const updatedEncryptionSetting =\n await this.encryptionManager.encryptionSettingsCache.create(\n key,\n containerRid,\n partitionKeyPaths,\n clientEncryptionPolicy,\n );\n return updatedEncryptionSetting;\n }, this.clientContext);\n }\n return encryptionSetting;\n }\n\n private async buildEncryptionAlgorithm(\n propertySetting: EncryptionSettingForProperty,\n ): Promise<AeadAes256CbcHmacSha256Algorithm> {\n const key = `${this.database._rid}/${propertySetting.encryptionKeyId}`;\n let clientEncryptionKeyProperties =\n this.encryptionManager.clientEncryptionKeyPropertiesCache.get(key);\n if (!clientEncryptionKeyProperties) {\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n );\n }\n try {\n // the buildEncryptionAlgorithm will build ProtectedDEK which calls unwrapKey using the masterKey configured in\n // KeyEncryptionKey(created before creating Protected DEK)\n // we get wrapped key and key wrap metadata info from clientEncryptionKeyProperties.\n return await propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n );\n } catch (err) {\n if (err.statusCode !== StatusCodes.Forbidden) throw err;\n // if access to key is revoked, and in case there's stale value in cache\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n );\n\n try {\n // This will succeed after if client has rewrapped CEK and gateway cache has updated value.\n return await propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n true,\n );\n } catch (retryErr) {\n if (retryErr.statusCode !== StatusCodes.Forbidden) throw retryErr;\n\n // in case there's stale value in gateway cache. get fresh value from backend\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n clientEncryptionKeyProperties.etag,\n );\n return propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n );\n }\n }\n }\n\n private async fetchClientEncryptionKey(\n cekId: string,\n cekEtag?: string,\n ): Promise<ClientEncryptionKeyProperties> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = `/dbs/${this.database.id}/clientencryptionkeys/${cekId}`;\n const id = `dbs/${this.database.id}/clientencryptionkeys/${cekId}`;\n const options: RequestOptions = {};\n if (cekEtag) {\n options.accessCondition = {\n type: Constants.HttpHeaders.IfNoneMatch,\n condition: cekEtag,\n };\n }\n options.databaseRid = this.database._rid;\n const response = await this.clientContext.read<ClientEncryptionKeyRequest>({\n path: path,\n resourceType: ResourceType.clientencryptionkey,\n resourceId: id,\n options: options,\n diagnosticNode,\n });\n if (!response) {\n throw new ErrorResponse(`Failed to fetch client encryption key ${cekId}`);\n }\n if (response.code === StatusCodes.NotModified) {\n throw new ErrorResponse(\n `The Client Encryption Key with key id: ${cekId} on database: ${this.database.id} needs to be rewrapped with a valid Key Encryption Key using rewrapClientEncryptionKey. The Key Encryption Key used to wrap the Client Encryption Key has been revoked`,\n );\n }\n const clientEncryptionKeyProperties: ClientEncryptionKeyProperties = {\n id: response.result.id,\n encryptionAlgorithm: response.result.encryptionAlgorithm,\n wrappedDataEncryptionKey: new Uint8Array(\n Buffer.from(response.result.wrappedDataEncryptionKey, \"base64\"),\n ),\n encryptionKeyWrapMetadata: response.result.keyWrapMetadata,\n etag: response.result._etag,\n };\n const key = this.database._rid + \"/\" + cekId;\n this.encryptionManager.clientEncryptionKeyPropertiesCache.set(\n key,\n clientEncryptionKeyProperties,\n );\n return clientEncryptionKeyProperties;\n }, this.clientContext);\n }\n}\n"]}
@@ -6,6 +6,8 @@ import { CosmosEncryptedNumberType } from "./CosmosEncryptedNumber.js";
6
6
  * Represents a builder class for building encrypted parameters in parametrized query.
7
7
  */
8
8
  export class EncryptionQueryBuilder {
9
+ query;
10
+ parameters;
9
11
  constructor(query) {
10
12
  this.query = query;
11
13
  this.parameters = [];
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptionQueryBuilder.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionQueryBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n SqlQuerySpec,\n SqlParameter,\n JSONArray,\n JSONObject,\n JSONValue,\n} from \"../queryExecutionContext/index.js\";\nimport { TypeMarker } from \"./enums/TypeMarker.js\";\nimport { CosmosEncryptedNumber, CosmosEncryptedNumberType } from \"./CosmosEncryptedNumber.js\";\n\nexport interface EncryptionSqlParameter extends SqlParameter {\n type?: TypeMarker;\n path: string;\n}\n\n/**\n * Represents a builder class for building encrypted parameters in parametrized query.\n */\nexport class EncryptionQueryBuilder {\n private query: string;\n private parameters?: EncryptionSqlParameter[];\n\n constructor(query: string) {\n this.query = query;\n this.parameters = [];\n }\n /**\n * Adds parameter to query\n */\n public addParameter(\n name: string,\n value: boolean | string | null | JSONArray | JSONObject | Date | CosmosEncryptedNumber,\n path: string,\n ): void {\n if (value === null) {\n this.parameters.push({ name: name, value: null, path: path });\n return;\n }\n switch (true) {\n case typeof value === \"boolean\":\n this.parameters.push({\n name,\n value,\n type: TypeMarker.Boolean,\n path,\n });\n break;\n case typeof value === \"string\":\n this.parameters.push({\n name,\n value,\n type: TypeMarker.String,\n path,\n });\n break;\n case value instanceof Date: {\n const date = value.toISOString();\n this.parameters.push({\n name: name,\n value: date,\n type: TypeMarker.String,\n path: path,\n });\n break;\n }\n case isCosmosEncryptedNumber(value): {\n const num = value.value;\n if (value.numberType === CosmosEncryptedNumberType.Integer) {\n this.parameters.push({\n name,\n value: num,\n type: TypeMarker.Long,\n path,\n });\n } else if (value.numberType === CosmosEncryptedNumberType.Float) {\n this.parameters.push({\n name,\n value: num,\n type: TypeMarker.Double,\n path,\n });\n }\n break;\n }\n case Array.isArray(value):\n this.parameters.push({ name, value, path });\n break;\n case typeof value === \"object\":\n this.parameters.push({ name, value, path });\n break;\n default:\n throw new Error(`Unsupported parameter type for parameter \"${name}\": ${typeof value}`);\n }\n }\n\n /** Adds unencrypted parameter to query */\n public addUnencryptedParameter(name: string, value: JSONValue, path: string): void {\n this.parameters.push({ name: name, value: value, path: path });\n }\n\n /*\n * @internal\n */\n public toEncryptionSqlQuerySpec(): SqlQuerySpec {\n return {\n query: this.query,\n parameters: this.parameters,\n };\n }\n}\n\nfunction isCosmosEncryptedNumber(val: any): val is CosmosEncryptedNumber {\n return (\n val !== null &&\n typeof val === \"object\" &&\n typeof val.value === \"number\" &&\n typeof val.numberType === \"string\" &&\n (val.numberType === CosmosEncryptedNumberType.Integer ||\n val.numberType === CosmosEncryptedNumberType.Float)\n );\n}\n"]}
1
+ {"version":3,"file":"EncryptionQueryBuilder.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionQueryBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n SqlQuerySpec,\n SqlParameter,\n JSONArray,\n JSONObject,\n JSONValue,\n} from \"../queryExecutionContext/index.js\";\nimport { TypeMarker } from \"./enums/TypeMarker.js\";\nimport { CosmosEncryptedNumber, CosmosEncryptedNumberType } from \"./CosmosEncryptedNumber.js\";\n\nexport interface EncryptionSqlParameter extends SqlParameter {\n type?: TypeMarker;\n path: string;\n}\n\n/**\n * Represents a builder class for building encrypted parameters in parametrized query.\n */\nexport class EncryptionQueryBuilder {\n private query: string;\n private parameters?: EncryptionSqlParameter[];\n\n constructor(query: string) {\n this.query = query;\n this.parameters = [];\n }\n /**\n * Adds parameter to query\n */\n public addParameter(\n name: string,\n value: boolean | string | null | JSONArray | JSONObject | Date | CosmosEncryptedNumber,\n path: string,\n ): void {\n if (value === null) {\n this.parameters.push({ name: name, value: null, path: path });\n return;\n }\n switch (true) {\n case typeof value === \"boolean\":\n this.parameters.push({\n name,\n value,\n type: TypeMarker.Boolean,\n path,\n });\n break;\n case typeof value === \"string\":\n this.parameters.push({\n name,\n value,\n type: TypeMarker.String,\n path,\n });\n break;\n case value instanceof Date: {\n const date = value.toISOString();\n this.parameters.push({\n name: name,\n value: date,\n type: TypeMarker.String,\n path: path,\n });\n break;\n }\n case isCosmosEncryptedNumber(value): {\n const num = value.value;\n if (value.numberType === CosmosEncryptedNumberType.Integer) {\n this.parameters.push({\n name,\n value: num,\n type: TypeMarker.Long,\n path,\n });\n } else if (value.numberType === CosmosEncryptedNumberType.Float) {\n this.parameters.push({\n name,\n value: num,\n type: TypeMarker.Double,\n path,\n });\n }\n break;\n }\n case Array.isArray(value):\n this.parameters.push({ name, value, path });\n break;\n case typeof value === \"object\":\n this.parameters.push({ name, value, path });\n break;\n default:\n throw new Error(`Unsupported parameter type for parameter \"${name}\": ${typeof value}`);\n }\n }\n\n /** Adds unencrypted parameter to query */\n public addUnencryptedParameter(name: string, value: JSONValue, path: string): void {\n this.parameters.push({ name: name, value: value, path: path });\n }\n\n /*\n * @internal\n */\n public toEncryptionSqlQuerySpec(): SqlQuerySpec {\n return {\n query: this.query,\n parameters: this.parameters,\n };\n }\n}\n\nfunction isCosmosEncryptedNumber(val: any): val is CosmosEncryptedNumber {\n return (\n val !== null &&\n typeof val === \"object\" &&\n typeof val.value === \"number\" &&\n typeof val.numberType === \"string\" &&\n (val.numberType === CosmosEncryptedNumberType.Integer ||\n val.numberType === CosmosEncryptedNumberType.Float)\n );\n}\n"]}
@@ -6,6 +6,12 @@ import { AeadAes256CbcHmacSha256Algorithm } from "./AeadAes256CbcHmacSha256Algor
6
6
  * @hidden
7
7
  */
8
8
  export class EncryptionSettingForProperty {
9
+ // client encryption key id.
10
+ encryptionKeyId;
11
+ // encryption type - Deterministic/Randomized.
12
+ encryptionType;
13
+ // encryption algorithm - AEAD_AES_256_CBC_HMAC_SHA256
14
+ encryptionAlgorithm;
9
15
  constructor(clientEncryptionIncludedPath) {
10
16
  this.encryptionKeyId = clientEncryptionIncludedPath.clientEncryptionKeyId;
11
17
  this.encryptionType = clientEncryptionIncludedPath.encryptionType;
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptionSettingForProperty.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionSettingForProperty.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AAI/F;;;GAGG;AACH,MAAM,OAAO,4BAA4B;IAQvC,YAAY,4BAA0D;QACpE,IAAI,CAAC,eAAe,GAAG,4BAA4B,CAAC,qBAAqB,CAAC;QAC1E,IAAI,CAAC,cAAc,GAAG,4BAA4B,CAAC,cAAc,CAAC;QAClE,IAAI,CAAC,mBAAmB,GAAG,4BAA4B,CAAC,mBAAmB,CAAC;IAC9E,CAAC;IAEM,KAAK,CAAC,wBAAwB,CACnC,6BAA4D,EAC5D,iBAAoC,EACpC,YAAsB;QAEtB,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAC3E,6BAA6B,EAC7B,iBAAiB,EACjB,YAAY,CACb,CAAC;QACF,MAAM,mBAAmB,GAAG,IAAI,gCAAgC,CAC9D,0BAA0B,EAC1B,IAAI,CAAC,cAAc,CACpB,CAAC;QAEF,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAC3C,6BAA4D,EAC5D,iBAAoC,EACpC,YAAsB;QAEtB,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,WAAW,CAC1E,6BAA6B,CAAC,yBAAyB,CAAC,IAAI,EAC5D,6BAA6B,CAAC,yBAAyB,CAAC,KAAK,EAC7D,iBAAiB,CAAC,0BAA0B,CAC7C,CAAC;QACF,MAAM,0BAA0B,GAC9B,MAAM,iBAAiB,CAAC,+BAA+B,CAAC,WAAW,CACjE,IAAI,CAAC,eAAe,EACpB,gBAAgB,EAChB,6BAA6B,CAAC,wBAAwB,EACtD,YAAY,CACb,CAAC;QAEJ,OAAO,0BAA0B,CAAC;IACpC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ClientEncryptionIncludedPath } from \"./ClientEncryptionIncludedPath.js\";\nimport type { ClientEncryptionKeyProperties } from \"./ClientEncryptionKey/index.js\";\nimport type { EncryptionAlgorithm, EncryptionType } from \"./enums/index.js\";\nimport { AeadAes256CbcHmacSha256Algorithm } from \"./AeadAes256CbcHmacSha256Algorithm/index.js\";\nimport type { ProtectedDataEncryptionKey } from \"./EncryptionKey/index.js\";\nimport type { EncryptionManager } from \"./EncryptionManager.js\";\n\n/**\n * Represents the encryption setting for a specific property in an item.\n * @hidden\n */\nexport class EncryptionSettingForProperty {\n // client encryption key id.\n encryptionKeyId: string;\n // encryption type - Deterministic/Randomized.\n encryptionType: EncryptionType;\n // encryption algorithm - AEAD_AES_256_CBC_HMAC_SHA256\n encryptionAlgorithm: EncryptionAlgorithm;\n\n constructor(clientEncryptionIncludedPath: ClientEncryptionIncludedPath) {\n this.encryptionKeyId = clientEncryptionIncludedPath.clientEncryptionKeyId;\n this.encryptionType = clientEncryptionIncludedPath.encryptionType;\n this.encryptionAlgorithm = clientEncryptionIncludedPath.encryptionAlgorithm;\n }\n\n public async buildEncryptionAlgorithm(\n clientEncryptionKeyProperties: ClientEncryptionKeyProperties,\n encryptionManager: EncryptionManager,\n forceRefresh?: boolean,\n ): Promise<AeadAes256CbcHmacSha256Algorithm> {\n const protectedDataEncryptionKey = await this.buildProtectedDataEncryptionKey(\n clientEncryptionKeyProperties,\n encryptionManager,\n forceRefresh,\n );\n const encryptionAlgorithm = new AeadAes256CbcHmacSha256Algorithm(\n protectedDataEncryptionKey,\n this.encryptionType,\n );\n\n return encryptionAlgorithm;\n }\n\n private async buildProtectedDataEncryptionKey(\n clientEncryptionKeyProperties: ClientEncryptionKeyProperties,\n encryptionManager: EncryptionManager,\n forceRefresh?: boolean,\n ): Promise<ProtectedDataEncryptionKey> {\n const keyEncryptionKey = encryptionManager.keyEncryptionKeyCache.getOrCreate(\n clientEncryptionKeyProperties.encryptionKeyWrapMetadata.name,\n clientEncryptionKeyProperties.encryptionKeyWrapMetadata.value,\n encryptionManager.encryptionKeyStoreProvider,\n );\n const protectedDataEncryptionKey =\n await encryptionManager.protectedDataEncryptionKeyCache.getOrCreate(\n this.encryptionKeyId,\n keyEncryptionKey,\n clientEncryptionKeyProperties.wrappedDataEncryptionKey,\n forceRefresh,\n );\n\n return protectedDataEncryptionKey;\n }\n}\n"]}
1
+ {"version":3,"file":"EncryptionSettingForProperty.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionSettingForProperty.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AAI/F;;;GAGG;AACH,MAAM,OAAO,4BAA4B;IACvC,4BAA4B;IAC5B,eAAe,CAAS;IACxB,8CAA8C;IAC9C,cAAc,CAAiB;IAC/B,sDAAsD;IACtD,mBAAmB,CAAsB;IAEzC,YAAY,4BAA0D;QACpE,IAAI,CAAC,eAAe,GAAG,4BAA4B,CAAC,qBAAqB,CAAC;QAC1E,IAAI,CAAC,cAAc,GAAG,4BAA4B,CAAC,cAAc,CAAC;QAClE,IAAI,CAAC,mBAAmB,GAAG,4BAA4B,CAAC,mBAAmB,CAAC;IAC9E,CAAC;IAEM,KAAK,CAAC,wBAAwB,CACnC,6BAA4D,EAC5D,iBAAoC,EACpC,YAAsB;QAEtB,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAC3E,6BAA6B,EAC7B,iBAAiB,EACjB,YAAY,CACb,CAAC;QACF,MAAM,mBAAmB,GAAG,IAAI,gCAAgC,CAC9D,0BAA0B,EAC1B,IAAI,CAAC,cAAc,CACpB,CAAC;QAEF,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAC3C,6BAA4D,EAC5D,iBAAoC,EACpC,YAAsB;QAEtB,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,WAAW,CAC1E,6BAA6B,CAAC,yBAAyB,CAAC,IAAI,EAC5D,6BAA6B,CAAC,yBAAyB,CAAC,KAAK,EAC7D,iBAAiB,CAAC,0BAA0B,CAC7C,CAAC;QACF,MAAM,0BAA0B,GAC9B,MAAM,iBAAiB,CAAC,+BAA+B,CAAC,WAAW,CACjE,IAAI,CAAC,eAAe,EACpB,gBAAgB,EAChB,6BAA6B,CAAC,wBAAwB,EACtD,YAAY,CACb,CAAC;QAEJ,OAAO,0BAA0B,CAAC;IACpC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ClientEncryptionIncludedPath } from \"./ClientEncryptionIncludedPath.js\";\nimport type { ClientEncryptionKeyProperties } from \"./ClientEncryptionKey/index.js\";\nimport type { EncryptionAlgorithm, EncryptionType } from \"./enums/index.js\";\nimport { AeadAes256CbcHmacSha256Algorithm } from \"./AeadAes256CbcHmacSha256Algorithm/index.js\";\nimport type { ProtectedDataEncryptionKey } from \"./EncryptionKey/index.js\";\nimport type { EncryptionManager } from \"./EncryptionManager.js\";\n\n/**\n * Represents the encryption setting for a specific property in an item.\n * @hidden\n */\nexport class EncryptionSettingForProperty {\n // client encryption key id.\n encryptionKeyId: string;\n // encryption type - Deterministic/Randomized.\n encryptionType: EncryptionType;\n // encryption algorithm - AEAD_AES_256_CBC_HMAC_SHA256\n encryptionAlgorithm: EncryptionAlgorithm;\n\n constructor(clientEncryptionIncludedPath: ClientEncryptionIncludedPath) {\n this.encryptionKeyId = clientEncryptionIncludedPath.clientEncryptionKeyId;\n this.encryptionType = clientEncryptionIncludedPath.encryptionType;\n this.encryptionAlgorithm = clientEncryptionIncludedPath.encryptionAlgorithm;\n }\n\n public async buildEncryptionAlgorithm(\n clientEncryptionKeyProperties: ClientEncryptionKeyProperties,\n encryptionManager: EncryptionManager,\n forceRefresh?: boolean,\n ): Promise<AeadAes256CbcHmacSha256Algorithm> {\n const protectedDataEncryptionKey = await this.buildProtectedDataEncryptionKey(\n clientEncryptionKeyProperties,\n encryptionManager,\n forceRefresh,\n );\n const encryptionAlgorithm = new AeadAes256CbcHmacSha256Algorithm(\n protectedDataEncryptionKey,\n this.encryptionType,\n );\n\n return encryptionAlgorithm;\n }\n\n private async buildProtectedDataEncryptionKey(\n clientEncryptionKeyProperties: ClientEncryptionKeyProperties,\n encryptionManager: EncryptionManager,\n forceRefresh?: boolean,\n ): Promise<ProtectedDataEncryptionKey> {\n const keyEncryptionKey = encryptionManager.keyEncryptionKeyCache.getOrCreate(\n clientEncryptionKeyProperties.encryptionKeyWrapMetadata.name,\n clientEncryptionKeyProperties.encryptionKeyWrapMetadata.value,\n encryptionManager.encryptionKeyStoreProvider,\n );\n const protectedDataEncryptionKey =\n await encryptionManager.protectedDataEncryptionKeyCache.getOrCreate(\n this.encryptionKeyId,\n keyEncryptionKey,\n clientEncryptionKeyProperties.wrappedDataEncryptionKey,\n forceRefresh,\n );\n\n return protectedDataEncryptionKey;\n }\n}\n"]}
@@ -6,11 +6,14 @@
6
6
  * @hidden
7
7
  */
8
8
  export class EncryptionSettings {
9
+ id; // databaseRid + '/' + containerRid
10
+ containerRid;
11
+ partitionKeyPaths;
12
+ pathsToEncrypt = [];
13
+ // key is property path
14
+ encryptionSettingForProperties = {};
9
15
  // getContainerRid
10
16
  constructor(id, containerRid, partitionKeyPaths) {
11
- this.pathsToEncrypt = [];
12
- // key is property path
13
- this.encryptionSettingForProperties = {};
14
17
  this.id = id;
15
18
  this.containerRid = containerRid;
16
19
  this.partitionKeyPaths = partitionKeyPaths;
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptionSettings.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionSettings.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAY7B,kBAAkB;IAClB,YAAmB,EAAU,EAAE,YAAoB,EAAE,iBAA2B;QANzE,mBAAc,GAAa,EAAE,CAAC;QAErC,uBAAuB;QACf,mCAA8B,GAAoD,EAAE,CAAC;QAI3F,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAEM,+BAA+B,CACpC,GAAW,EACX,4BAA0D;QAE1D,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,GAAG,4BAA4B,CAAC;IAC1E,CAAC;IAEM,+BAA+B,CAAC,YAAoB;QACzD,OAAO,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionSettingForProperty } from \"./EncryptionSettingForProperty.js\";\n\n/**\n * stores partitionKeyPaths, all the pathsToEncrypt, and encryption settings (cekId, encryption type, and algorithm) for each property.\n * see {@link EncryptionSettingForProperty}\n * @hidden\n */\nexport class EncryptionSettings {\n public id: string; // databaseRid + '/' + containerRid\n\n public containerRid: string;\n\n public partitionKeyPaths: string[];\n\n public pathsToEncrypt: string[] = [];\n\n // key is property path\n private encryptionSettingForProperties: { [key: string]: EncryptionSettingForProperty } = {};\n\n // getContainerRid\n public constructor(id: string, containerRid: string, partitionKeyPaths: string[]) {\n this.id = id;\n this.containerRid = containerRid;\n this.partitionKeyPaths = partitionKeyPaths;\n }\n\n public setEncryptionSettingForProperty(\n key: string,\n encryptionSettingForProperty: EncryptionSettingForProperty,\n ): void {\n this.encryptionSettingForProperties[key] = encryptionSettingForProperty;\n }\n\n public getEncryptionSettingForProperty(propertyName: string): EncryptionSettingForProperty {\n return this.encryptionSettingForProperties[propertyName];\n }\n}\n"]}
1
+ {"version":3,"file":"EncryptionSettings.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionSettings.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IACtB,EAAE,CAAS,CAAC,mCAAmC;IAE/C,YAAY,CAAS;IAErB,iBAAiB,CAAW;IAE5B,cAAc,GAAa,EAAE,CAAC;IAErC,uBAAuB;IACf,8BAA8B,GAAoD,EAAE,CAAC;IAE7F,kBAAkB;IAClB,YAAmB,EAAU,EAAE,YAAoB,EAAE,iBAA2B;QAC9E,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAEM,+BAA+B,CACpC,GAAW,EACX,4BAA0D;QAE1D,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,GAAG,4BAA4B,CAAC;IAC1E,CAAC;IAEM,+BAA+B,CAAC,YAAoB;QACzD,OAAO,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionSettingForProperty } from \"./EncryptionSettingForProperty.js\";\n\n/**\n * stores partitionKeyPaths, all the pathsToEncrypt, and encryption settings (cekId, encryption type, and algorithm) for each property.\n * see {@link EncryptionSettingForProperty}\n * @hidden\n */\nexport class EncryptionSettings {\n public id: string; // databaseRid + '/' + containerRid\n\n public containerRid: string;\n\n public partitionKeyPaths: string[];\n\n public pathsToEncrypt: string[] = [];\n\n // key is property path\n private encryptionSettingForProperties: { [key: string]: EncryptionSettingForProperty } = {};\n\n // getContainerRid\n public constructor(id: string, containerRid: string, partitionKeyPaths: string[]) {\n this.id = id;\n this.containerRid = containerRid;\n this.partitionKeyPaths = partitionKeyPaths;\n }\n\n public setEncryptionSettingForProperty(\n key: string,\n encryptionSettingForProperty: EncryptionSettingForProperty,\n ): void {\n this.encryptionSettingForProperties[key] = encryptionSettingForProperty;\n }\n\n public getEncryptionSettingForProperty(propertyName: string): EncryptionSettingForProperty {\n return this.encryptionSettingForProperties[propertyName];\n }\n}\n"]}
@@ -6,6 +6,10 @@ import { KeyEncryptionAlgorithm } from "./enums/KeyEncryptionAlgorithm.js";
6
6
  * and provides interface to wrap and unwrap the key.
7
7
  */
8
8
  export class KeyEncryptionKey {
9
+ encryptionAlgorithm;
10
+ name;
11
+ path;
12
+ keyStoreProvider;
9
13
  constructor(name, path, keyStoreProvider) {
10
14
  this.name = name;
11
15
  this.path = path;
@@ -1 +1 @@
1
- {"version":3,"file":"KeyEncryptionKey.js","sourceRoot":"","sources":["../../../src/encryption/KeyEncryptionKey.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAS3B,YAAY,IAAY,EAAE,IAAY,EAAE,gBAA4C;QAClF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,mBAAmB,GAAG,sBAAsB,CAAC,QAAQ,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,sBAA8B;QAC3D,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,mBAAmB,EACxB,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,oBAA4B;QAC3D,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,mBAAmB,EACxB,oBAAoB,CACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KeyEncryptionAlgorithm } from \"./enums/KeyEncryptionAlgorithm.js\";\nimport type { EncryptionKeyStoreProvider } from \"./EncryptionKeyStoreProvider.js\";\n/**\n * A wrapper class containing the info about the key-protecting key stored in an external key provider\n * and provides interface to wrap and unwrap the key.\n */\nexport class KeyEncryptionKey {\n private encryptionAlgorithm: KeyEncryptionAlgorithm;\n\n public name: string;\n\n public path: string;\n\n public keyStoreProvider: EncryptionKeyStoreProvider;\n\n constructor(name: string, path: string, keyStoreProvider: EncryptionKeyStoreProvider) {\n this.name = name;\n this.path = path;\n this.keyStoreProvider = keyStoreProvider;\n this.encryptionAlgorithm = KeyEncryptionAlgorithm.RSA_OAEP;\n }\n\n public async wrapEncryptionKey(plainTextEncryptionKey: Buffer): Promise<Buffer> {\n return this.keyStoreProvider.wrapKey(\n this.path,\n this.encryptionAlgorithm,\n plainTextEncryptionKey,\n );\n }\n\n public async unwrapEncryptionKey(wrappedEncryptionKey: Buffer): Promise<Buffer> {\n return this.keyStoreProvider.unwrapKey(\n this.path,\n this.encryptionAlgorithm,\n wrappedEncryptionKey,\n );\n }\n}\n"]}
1
+ {"version":3,"file":"KeyEncryptionKey.js","sourceRoot":"","sources":["../../../src/encryption/KeyEncryptionKey.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,mBAAmB,CAAyB;IAE7C,IAAI,CAAS;IAEb,IAAI,CAAS;IAEb,gBAAgB,CAA6B;IAEpD,YAAY,IAAY,EAAE,IAAY,EAAE,gBAA4C;QAClF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,mBAAmB,GAAG,sBAAsB,CAAC,QAAQ,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,sBAA8B;QAC3D,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,mBAAmB,EACxB,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,oBAA4B;QAC3D,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,mBAAmB,EACxB,oBAAoB,CACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KeyEncryptionAlgorithm } from \"./enums/KeyEncryptionAlgorithm.js\";\nimport type { EncryptionKeyStoreProvider } from \"./EncryptionKeyStoreProvider.js\";\n/**\n * A wrapper class containing the info about the key-protecting key stored in an external key provider\n * and provides interface to wrap and unwrap the key.\n */\nexport class KeyEncryptionKey {\n private encryptionAlgorithm: KeyEncryptionAlgorithm;\n\n public name: string;\n\n public path: string;\n\n public keyStoreProvider: EncryptionKeyStoreProvider;\n\n constructor(name: string, path: string, keyStoreProvider: EncryptionKeyStoreProvider) {\n this.name = name;\n this.path = path;\n this.keyStoreProvider = keyStoreProvider;\n this.encryptionAlgorithm = KeyEncryptionAlgorithm.RSA_OAEP;\n }\n\n public async wrapEncryptionKey(plainTextEncryptionKey: Buffer): Promise<Buffer> {\n return this.keyStoreProvider.wrapKey(\n this.path,\n this.encryptionAlgorithm,\n plainTextEncryptionKey,\n );\n }\n\n public async unwrapEncryptionKey(wrappedEncryptionKey: Buffer): Promise<Buffer> {\n return this.keyStoreProvider.unwrapKey(\n this.path,\n this.encryptionAlgorithm,\n wrappedEncryptionKey,\n );\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
3
  export class StringSerializer {
4
+ static characterEncoding = "utf-8";
4
5
  deserialize(bytes) {
5
6
  return bytes.toString(StringSerializer.characterEncoding);
6
7
  }
@@ -8,5 +9,4 @@ export class StringSerializer {
8
9
  return Buffer.from(value, StringSerializer.characterEncoding);
9
10
  }
10
11
  }
11
- StringSerializer.characterEncoding = "utf-8";
12
12
  //# sourceMappingURL=StringSerializer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StringSerializer.js","sourceRoot":"","sources":["../../../../src/encryption/Serializers/StringSerializer.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,MAAM,OAAO,gBAAgB;IAG3B,WAAW,CAAC,KAAa;QACvB,OAAO,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAChE,CAAC;;AARc,kCAAiB,GAAmB,OAAO,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Serializer } from \"./Serializer.js\";\n\nexport class StringSerializer implements Serializer {\n private static characterEncoding: BufferEncoding = \"utf-8\";\n\n deserialize(bytes: Buffer): string {\n return bytes.toString(StringSerializer.characterEncoding);\n }\n\n serialize(value: string): Buffer {\n return Buffer.from(value, StringSerializer.characterEncoding);\n }\n}\n"]}
1
+ {"version":3,"file":"StringSerializer.js","sourceRoot":"","sources":["../../../../src/encryption/Serializers/StringSerializer.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAC,iBAAiB,GAAmB,OAAO,CAAC;IAE3D,WAAW,CAAC,KAAa;QACvB,OAAO,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAChE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Serializer } from \"./Serializer.js\";\n\nexport class StringSerializer implements Serializer {\n private static characterEncoding: BufferEncoding = \"utf-8\";\n\n deserialize(bytes: Buffer): string {\n return bytes.toString(StringSerializer.characterEncoding);\n }\n\n serialize(value: string): Buffer {\n return Buffer.from(value, StringSerializer.characterEncoding);\n }\n}\n"]}
@@ -77,11 +77,11 @@ function extractPartitionKey(path, obj) {
77
77
  * @hidden
78
78
  */
79
79
  export function undefinedPartitionKey(partitionKeyDefinition) {
80
- if (partitionKeyDefinition === null || partitionKeyDefinition === void 0 ? void 0 : partitionKeyDefinition.systemKey) {
80
+ if (partitionKeyDefinition?.systemKey) {
81
81
  return [];
82
82
  }
83
83
  else {
84
- return partitionKeyDefinition === null || partitionKeyDefinition === void 0 ? void 0 : partitionKeyDefinition.paths.map(() => NonePartitionKeyLiteral);
84
+ return partitionKeyDefinition?.paths.map(() => NonePartitionKeyLiteral);
85
85
  }
86
86
  }
87
87
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"extractPartitionKey.js","sourceRoot":"","sources":["../../src/extractPartitionKey.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\nimport { parsePath } from \"./common/index.js\";\nimport type {\n PartitionKey,\n PartitionKeyDefinition,\n PartitionKeyInternal,\n PrimitivePartitionKeyValue,\n} from \"./documents/index.js\";\nimport {\n convertToInternalPartitionKey,\n NonePartitionKeyLiteral,\n NullPartitionKeyLiteral,\n} from \"./documents/index.js\";\nimport { DEFAULT_PARTITION_KEY_PATH } from \"./common/partitionKeys.js\";\nimport type { Container } from \"./client/index.js\";\nimport { readPartitionKeyDefinition } from \"./client/ClientUtils.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\n\nconst logger: AzureLogger = createClientLogger(\"extractPartitionKey\");\n\n/**\n * Function to extract PartitionKey based on {@link PartitionKeyDefinition}\n * from an object.\n * Retuns\n * 1. PartitionKeyInternal[] if extraction is successful.\n * 2. undefined if either {@link partitionKeyDefinition} is not well formed\n * or an unsupported partitionkey type is encountered.\n * @hidden\n */\nexport function extractPartitionKeys(\n document: unknown,\n partitionKeyDefinition?: PartitionKeyDefinition,\n): PartitionKeyInternal | undefined {\n if (\n !partitionKeyDefinition ||\n !partitionKeyDefinition.paths ||\n partitionKeyDefinition.paths.length <= 0\n ) {\n logger.error(\"Unexpected Partition Key Definition Found.\");\n return undefined;\n }\n\n if (\n partitionKeyDefinition.paths.length === 1 &&\n partitionKeyDefinition.paths[0] === DEFAULT_PARTITION_KEY_PATH\n ) {\n const defaultKey = extractPartitionKey(DEFAULT_PARTITION_KEY_PATH, document);\n if (defaultKey === undefined) {\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n logger.warning(\"Unsupported PartitionKey found.\");\n return undefined;\n } else if (defaultKey === NullPartitionKeyLiteral || defaultKey === NonePartitionKeyLiteral) {\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n }\n return [defaultKey];\n }\n\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n const partitionKeys: PrimitivePartitionKeyValue[] = [];\n partitionKeyDefinition.paths.forEach((path: string) => {\n const obj = extractPartitionKey(path, document);\n if (obj === undefined) {\n logger.warning(\"Unsupported PartitionKey found.\");\n return undefined;\n }\n partitionKeys.push(obj);\n });\n return partitionKeys;\n}\n\nfunction extractPartitionKey(path: string, obj: unknown): any {\n const pathParts: string[] = parsePath(path);\n for (const part of pathParts) {\n if (typeof obj === \"object\" && obj !== null && part in obj) {\n obj = (obj as Record<string, unknown>)[part];\n } else {\n obj = undefined;\n break;\n }\n }\n if (typeof obj === \"string\" || typeof obj === \"number\" || typeof obj === \"boolean\") {\n return obj;\n } else if (obj === NullPartitionKeyLiteral) {\n return NullPartitionKeyLiteral;\n } else if (obj === undefined || JSON.stringify(obj) === JSON.stringify(NonePartitionKeyLiteral)) {\n return NonePartitionKeyLiteral;\n }\n return undefined;\n}\n\n/**\n * @hidden\n */\nexport function undefinedPartitionKey(\n partitionKeyDefinition: PartitionKeyDefinition,\n): PartitionKeyInternal {\n if (partitionKeyDefinition?.systemKey) {\n return [];\n } else {\n return partitionKeyDefinition?.paths.map(() => NonePartitionKeyLiteral);\n }\n}\n\n/**\n * @hidden\n */\nexport async function setPartitionKeyIfUndefined(\n diagnosticNode: DiagnosticNodeInternal,\n container: Container,\n partitionKey: PartitionKey,\n): Promise<PartitionKeyInternal> {\n if (partitionKey === undefined) {\n const partitionKeyDefinition = await readPartitionKeyDefinition(diagnosticNode, container);\n partitionKey = undefinedPartitionKey(partitionKeyDefinition);\n }\n return convertToInternalPartitionKey(partitionKey);\n}\n"]}
1
+ {"version":3,"file":"extractPartitionKey.js","sourceRoot":"","sources":["../../src/extractPartitionKey.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\nimport { parsePath } from \"./common/index.js\";\nimport type {\n PartitionKey,\n PartitionKeyDefinition,\n PartitionKeyInternal,\n PrimitivePartitionKeyValue,\n} from \"./documents/index.js\";\nimport {\n convertToInternalPartitionKey,\n NonePartitionKeyLiteral,\n NullPartitionKeyLiteral,\n} from \"./documents/index.js\";\nimport { DEFAULT_PARTITION_KEY_PATH } from \"./common/partitionKeys.js\";\nimport type { Container } from \"./client/index.js\";\nimport { readPartitionKeyDefinition } from \"./client/ClientUtils.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\n\nconst logger: AzureLogger = createClientLogger(\"extractPartitionKey\");\n\n/**\n * Function to extract PartitionKey based on {@link PartitionKeyDefinition}\n * from an object.\n * Retuns\n * 1. PartitionKeyInternal[] if extraction is successful.\n * 2. undefined if either {@link partitionKeyDefinition} is not well formed\n * or an unsupported partitionkey type is encountered.\n * @hidden\n */\nexport function extractPartitionKeys(\n document: unknown,\n partitionKeyDefinition?: PartitionKeyDefinition,\n): PartitionKeyInternal | undefined {\n if (\n !partitionKeyDefinition ||\n !partitionKeyDefinition.paths ||\n partitionKeyDefinition.paths.length <= 0\n ) {\n logger.error(\"Unexpected Partition Key Definition Found.\");\n return undefined;\n }\n\n if (\n partitionKeyDefinition.paths.length === 1 &&\n partitionKeyDefinition.paths[0] === DEFAULT_PARTITION_KEY_PATH\n ) {\n const defaultKey = extractPartitionKey(DEFAULT_PARTITION_KEY_PATH, document);\n if (defaultKey === undefined) {\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n logger.warning(\"Unsupported PartitionKey found.\");\n return undefined;\n } else if (defaultKey === NullPartitionKeyLiteral || defaultKey === NonePartitionKeyLiteral) {\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n }\n return [defaultKey];\n }\n\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n const partitionKeys: PrimitivePartitionKeyValue[] = [];\n partitionKeyDefinition.paths.forEach((path: string) => {\n const obj = extractPartitionKey(path, document);\n if (obj === undefined) {\n logger.warning(\"Unsupported PartitionKey found.\");\n return undefined;\n }\n partitionKeys.push(obj);\n });\n return partitionKeys;\n}\n\nfunction extractPartitionKey(path: string, obj: unknown): any {\n const pathParts: string[] = parsePath(path);\n for (const part of pathParts) {\n if (typeof obj === \"object\" && obj !== null && part in obj) {\n obj = (obj as Record<string, unknown>)[part];\n } else {\n obj = undefined;\n break;\n }\n }\n if (typeof obj === \"string\" || typeof obj === \"number\" || typeof obj === \"boolean\") {\n return obj;\n } else if (obj === NullPartitionKeyLiteral) {\n return NullPartitionKeyLiteral;\n } else if (obj === undefined || JSON.stringify(obj) === JSON.stringify(NonePartitionKeyLiteral)) {\n return NonePartitionKeyLiteral;\n }\n return undefined;\n}\n\n/**\n * @hidden\n */\nexport function undefinedPartitionKey(\n partitionKeyDefinition: PartitionKeyDefinition,\n): PartitionKeyInternal {\n if (partitionKeyDefinition?.systemKey) {\n return [];\n } else {\n return partitionKeyDefinition?.paths.map(() => NonePartitionKeyLiteral);\n }\n}\n\n/**\n * @hidden\n */\nexport async function setPartitionKeyIfUndefined(\n diagnosticNode: DiagnosticNodeInternal,\n container: Container,\n partitionKey: PartitionKey,\n): Promise<PartitionKeyInternal> {\n if (partitionKey === undefined) {\n const partitionKeyDefinition = await readPartitionKeyDefinition(diagnosticNode, container);\n partitionKey = undefinedPartitionKey(partitionKeyDefinition);\n }\n return convertToInternalPartitionKey(partitionKey);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"globalEndpointManager.d.ts","sourceRoot":"","sources":["../../src/globalEndpointManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,MAAM,mBAAmB,CAAC;AAE/E,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAKtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAItF;;;GAGG;AACH,qBAAa,qBAAqB;IA4B9B,OAAO,CAAC,mBAAmB;IA3B7B;;OAEG;IACH,OAAO,CAAC,eAAe,CAAS;IAChC;;OAEG;IACI,uBAAuB,EAAE,OAAO,CAAC;IACxC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,OAAO,CAAsB;IACrC;;OAEG;IACH,OAAO,CAAC,kBAAkB,CAAW;IACrC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,4BAA4B,CAAkB;IACtD,OAAO,CAAC,6BAA6B,CAAkB;IACvD,OAAO,CAAC,4BAA4B,CAAU;IAEvC,uBAAuB,EAAE,MAAM,CAAC;IAoBvC;;OAEG;IACU,eAAe,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrF;;OAEG;IACU,gBAAgB,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAIlD,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAIhE;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAIpD,qCAAqC,CAChD,cAAc,EAAE,sBAAsB,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAUH,sCAAsC,CACjD,cAAc,EAAE,sBAAsB,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAYT,4BAA4B,CACjC,YAAY,CAAC,EAAE,YAAY,EAC3B,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO;IAcG,sBAAsB,CACjC,cAAc,EAAE,sBAAsB,EACtC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,yBAAyB,GAAE,MAAU,GACpC,OAAO,CAAC,MAAM,CAAC;IAyElB;;;;;OAKG;IACU,mBAAmB,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvF,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,gCAAgC;IAexC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,4BAA4B;IAYpC;;;;OAIG;YACW,iCAAiC;IAuC/C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CA4BrC"}
1
+ {"version":3,"file":"globalEndpointManager.d.ts","sourceRoot":"","sources":["../../src/globalEndpointManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,MAAM,mBAAmB,CAAC;AAE/E,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAKtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAItF;;;GAGG;AACH,qBAAa,qBAAqB;IA4B9B,OAAO,CAAC,mBAAmB;IA3B7B;;OAEG;IACH,OAAO,CAAC,eAAe,CAAS;IAChC;;OAEG;IACI,uBAAuB,EAAE,OAAO,CAAC;IACxC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,OAAO,CAAsB;IACrC;;OAEG;IACH,OAAO,CAAC,kBAAkB,CAAW;IACrC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,4BAA4B,CAAkB;IACtD,OAAO,CAAC,6BAA6B,CAAkB;IACvD,OAAO,CAAC,4BAA4B,CAAU;IAEvC,uBAAuB,EAAE,MAAM,CAAC;IAoBvC;;OAEG;IACU,eAAe,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrF;;OAEG;IACU,gBAAgB,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAIlD,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAIhE;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAIpD,qCAAqC,CAChD,cAAc,EAAE,sBAAsB,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAUH,sCAAsC,CACjD,cAAc,EAAE,sBAAsB,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAYT,4BAA4B,CACjC,YAAY,CAAC,EAAE,YAAY,EAC3B,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO;IAcG,sBAAsB,CACjC,cAAc,EAAE,sBAAsB,EACtC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,yBAAyB,GAAE,MAAU,GACpC,OAAO,CAAC,MAAM,CAAC;IAyElB;;;;;OAKG;IACU,mBAAmB,CAAC,cAAc,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvF,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,gCAAgC;IAexC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,4BAA4B;IAQpC;;;;OAIG;YACW,iCAAiC;IAuC/C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CA4BrC"}
@@ -10,16 +10,33 @@ import { normalizeEndpoint } from "./utils/checkURL.js";
10
10
  * This internal class implements the logic for endpoint management for geo-replicated database accounts.
11
11
  */
12
12
  export class GlobalEndpointManager {
13
+ readDatabaseAccount;
14
+ /**
15
+ * The endpoint used to create the client instance.
16
+ */
17
+ defaultEndpoint;
18
+ /**
19
+ * Flag to enable/disable automatic redirecting of requests based on read/write operations.
20
+ */
21
+ enableEndpointDiscovery;
22
+ isRefreshing;
23
+ options;
24
+ /**
25
+ * List of azure regions to be used as preferred locations for read requests.
26
+ */
27
+ preferredLocations;
28
+ writeableLocations = [];
29
+ readableLocations = [];
30
+ unavailableReadableLocations = [];
31
+ unavailableWriteableLocations = [];
32
+ enableMultipleWriteLocations;
33
+ preferredLocationsCount;
13
34
  /**
14
35
  * @param options - The document client instance.
15
36
  * @internal
16
37
  */
17
38
  constructor(options, readDatabaseAccount) {
18
39
  this.readDatabaseAccount = readDatabaseAccount;
19
- this.writeableLocations = [];
20
- this.readableLocations = [];
21
- this.unavailableReadableLocations = [];
22
- this.unavailableWriteableLocations = [];
23
40
  this.options = options;
24
41
  this.defaultEndpoint = options.endpoint;
25
42
  this.enableEndpointDiscovery = options.connectionPolicy.enableEndpointDiscovery;
@@ -151,18 +168,18 @@ export class GlobalEndpointManager {
151
168
  }
152
169
  }
153
170
  refreshEndpoints(databaseAccount) {
154
- for (const location of databaseAccount.writableLocations) {
155
- const existingLocation = this.writeableLocations.find((loc) => loc.name === location.name);
156
- if (!existingLocation) {
157
- this.writeableLocations.push(location);
158
- }
159
- }
160
- for (const location of databaseAccount.readableLocations) {
161
- const existingLocation = this.readableLocations.find((loc) => loc.name === location.name);
162
- if (!existingLocation) {
163
- this.readableLocations.push(location);
171
+ const oldWritableLocations = this.writeableLocations;
172
+ const oldReadableLocations = this.readableLocations;
173
+ function merge(loc, oldList) {
174
+ const prev = oldList.find((o) => o.name === loc.name);
175
+ if (prev) {
176
+ loc.unavailable = prev.unavailable;
177
+ loc.lastUnavailabilityTimestampInMs = prev.lastUnavailabilityTimestampInMs;
164
178
  }
179
+ return loc;
165
180
  }
181
+ this.writeableLocations = databaseAccount.writableLocations.map((loc) => merge({ ...loc }, oldWritableLocations));
182
+ this.readableLocations = databaseAccount.readableLocations.map((loc) => merge({ ...loc }, oldReadableLocations));
166
183
  }
167
184
  refreshStaleUnavailableLocations() {
168
185
  const now = Date.now();
@@ -179,21 +196,17 @@ export class GlobalEndpointManager {
179
196
  */
180
197
  updateLocation(now, unavailableLocations, allLocations) {
181
198
  for (const location of unavailableLocations) {
182
- const unavaialableLocation = allLocations.find((loc) => loc.name === location.name);
183
- if (unavaialableLocation &&
184
- now - unavaialableLocation.lastUnavailabilityTimestampInMs >
199
+ const unavailableLocation = allLocations.find((loc) => loc.name === location.name);
200
+ if (unavailableLocation &&
201
+ now - unavailableLocation.lastUnavailabilityTimestampInMs >
185
202
  Constants.LocationUnavailableExpirationTimeInMs) {
186
- unavaialableLocation.unavailable = false;
203
+ unavailableLocation.unavailable = false;
187
204
  }
188
205
  }
189
206
  }
190
207
  cleanUnavailableLocationList(now, unavailableLocations) {
191
208
  return unavailableLocations.filter((loc) => {
192
- if (loc &&
193
- now - loc.lastUnavailabilityTimestampInMs >= Constants.LocationUnavailableExpirationTimeInMs) {
194
- return false;
195
- }
196
- return true;
209
+ return (now - loc.lastUnavailabilityTimestampInMs < Constants.LocationUnavailableExpirationTimeInMs);
197
210
  });
198
211
  }
199
212
  /**