@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.
- package/dist/browser/ChangeFeedIterator.js +17 -11
- package/dist/browser/ChangeFeedIterator.js.map +1 -1
- package/dist/browser/ChangeFeedResponse.js +8 -0
- package/dist/browser/ChangeFeedResponse.js.map +1 -1
- package/dist/browser/ClientContext.js +122 -29
- package/dist/browser/ClientContext.js.map +1 -1
- package/dist/browser/CosmosClient.js +34 -3
- package/dist/browser/CosmosClient.js.map +1 -1
- package/dist/browser/CosmosDiagnostics.js +3 -0
- package/dist/browser/CosmosDiagnostics.js.map +1 -1
- package/dist/browser/PartitionKeyRangeFailoverInfo.js +8 -5
- package/dist/browser/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/browser/bulk/Batcher.js +13 -3
- package/dist/browser/bulk/Batcher.js.map +1 -1
- package/dist/browser/bulk/BulkHelper.js +26 -11
- package/dist/browser/bulk/BulkHelper.js.map +1 -1
- package/dist/browser/bulk/BulkResponse.js +22 -20
- package/dist/browser/bulk/BulkResponse.js.map +1 -1
- package/dist/browser/bulk/CongestionAlgorithm.js +11 -4
- package/dist/browser/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/browser/bulk/HelperPerPartition.js +14 -1
- package/dist/browser/bulk/HelperPerPartition.js.map +1 -1
- package/dist/browser/bulk/ItemOperationContext.js +4 -0
- package/dist/browser/bulk/ItemOperationContext.js.map +1 -1
- package/dist/browser/bulk/Limiter.js +27 -18
- package/dist/browser/bulk/Limiter.js.map +1 -1
- package/dist/browser/bulk/PartitionMetric.js +4 -0
- package/dist/browser/bulk/PartitionMetric.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
- package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
- package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedRange.js +20 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/browser/client/ChangeFeed/CompositeContinuationToken.js +8 -0
- package/dist/browser/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
- package/dist/browser/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/browser/client/ChangeFeed/FeedRange.js +8 -0
- package/dist/browser/client/ChangeFeed/FeedRange.js.map +1 -1
- package/dist/browser/client/ChangeFeed/FeedRangeQueue.js +1 -0
- package/dist/browser/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
- package/dist/browser/client/ChangeFeed/changeFeedUtils.js +5 -5
- package/dist/browser/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/browser/client/ClientUtils.js +1 -1
- package/dist/browser/client/ClientUtils.js.map +1 -1
- package/dist/browser/client/Conflict/Conflict.js +4 -0
- package/dist/browser/client/Conflict/Conflict.js.map +1 -1
- package/dist/browser/client/Conflict/ConflictResponse.js +2 -0
- package/dist/browser/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/browser/client/Conflict/Conflicts.js +2 -0
- package/dist/browser/client/Conflict/Conflicts.js.map +1 -1
- package/dist/browser/client/Container/Container.js +18 -3
- package/dist/browser/client/Container/Container.js.map +1 -1
- package/dist/browser/client/Container/ContainerResponse.js +2 -0
- package/dist/browser/client/Container/ContainerResponse.js.map +1 -1
- package/dist/browser/client/Container/Containers.js +4 -2
- package/dist/browser/client/Container/Containers.js.map +1 -1
- package/dist/browser/client/Database/Database.js +33 -0
- package/dist/browser/client/Database/Database.js.map +1 -1
- package/dist/browser/client/Database/DatabaseResponse.js +2 -0
- package/dist/browser/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/browser/client/Database/Databases.js +3 -0
- package/dist/browser/client/Database/Databases.js.map +1 -1
- package/dist/browser/client/Item/Item.js +4 -0
- package/dist/browser/client/Item/Item.js.map +1 -1
- package/dist/browser/client/Item/ItemResponse.js +2 -0
- package/dist/browser/client/Item/ItemResponse.js.map +1 -1
- package/dist/browser/client/Item/Items.js +3 -0
- package/dist/browser/client/Item/Items.js.map +1 -1
- package/dist/browser/client/Offer/Offer.js +3 -0
- package/dist/browser/client/Offer/Offer.js.map +1 -1
- package/dist/browser/client/Offer/OfferResponse.js +2 -0
- package/dist/browser/client/Offer/OfferResponse.js.map +1 -1
- package/dist/browser/client/Offer/Offers.js +2 -0
- package/dist/browser/client/Offer/Offers.js.map +1 -1
- package/dist/browser/client/Permission/Permission.js +3 -0
- package/dist/browser/client/Permission/Permission.js.map +1 -1
- package/dist/browser/client/Permission/PermissionResponse.js +2 -0
- package/dist/browser/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/browser/client/Permission/Permissions.js +2 -0
- package/dist/browser/client/Permission/Permissions.js.map +1 -1
- package/dist/browser/client/SasToken/SasTokenProperties.js +17 -0
- package/dist/browser/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/browser/client/Script/Scripts.js +5 -0
- package/dist/browser/client/Script/Scripts.js.map +1 -1
- package/dist/browser/client/StoredProcedure/StoredProcedure.js +3 -0
- package/dist/browser/client/StoredProcedure/StoredProcedure.js.map +1 -1
- package/dist/browser/client/StoredProcedure/StoredProcedureResponse.js +4 -0
- package/dist/browser/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/browser/client/StoredProcedure/StoredProcedures.js +2 -0
- package/dist/browser/client/StoredProcedure/StoredProcedures.js.map +1 -1
- package/dist/browser/client/Trigger/Trigger.js +3 -0
- package/dist/browser/client/Trigger/Trigger.js.map +1 -1
- package/dist/browser/client/Trigger/TriggerResponse.js +2 -0
- package/dist/browser/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/browser/client/Trigger/Triggers.js +2 -0
- package/dist/browser/client/Trigger/Triggers.js.map +1 -1
- package/dist/browser/client/User/User.js +9 -0
- package/dist/browser/client/User/User.js.map +1 -1
- package/dist/browser/client/User/UserResponse.js +2 -0
- package/dist/browser/client/User/UserResponse.js.map +1 -1
- package/dist/browser/client/User/Users.js +2 -0
- package/dist/browser/client/User/Users.js.map +1 -1
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
- package/dist/browser/common/constants.js +1 -1
- package/dist/browser/common/constants.js.map +1 -1
- package/dist/browser/diagnostics/CosmosDiagnosticsContext.js +8 -7
- package/dist/browser/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/browser/diagnostics/DiagnosticNodeInternal.js +26 -7
- package/dist/browser/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/browser/diagnostics/DiagnosticWriter.js +1 -3
- package/dist/browser/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/browser/diagnostics/index.js +2 -2
- package/dist/browser/diagnostics/index.js.map +1 -1
- package/dist/browser/documents/DatabaseAccount.js +20 -4
- package/dist/browser/documents/DatabaseAccount.js.map +1 -1
- package/dist/browser/documents/PartitionKey.js +1 -3
- package/dist/browser/documents/PartitionKey.js.map +1 -1
- package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
- package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/browser/encryption/Cache/EncryptionSettingsCache.js +2 -0
- package/dist/browser/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
- package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
- package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/browser/encryption/EncryptionItemQueryIterator.js +24 -27
- package/dist/browser/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
- package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
- package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
- package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
- package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/browser/encryption/EncryptionKeyStoreProvider.js +8 -1
- package/dist/browser/encryption/EncryptionKeyStoreProvider.js.map +1 -1
- package/dist/browser/encryption/EncryptionManager.js +6 -0
- package/dist/browser/encryption/EncryptionManager.js.map +1 -1
- package/dist/browser/encryption/EncryptionProcessor.js +5 -0
- package/dist/browser/encryption/EncryptionProcessor.js.map +1 -1
- package/dist/browser/encryption/EncryptionQueryBuilder.js +2 -0
- package/dist/browser/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/browser/encryption/EncryptionSettingForProperty.js +6 -0
- package/dist/browser/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/browser/encryption/EncryptionSettings.js +6 -3
- package/dist/browser/encryption/EncryptionSettings.js.map +1 -1
- package/dist/browser/encryption/KeyEncryptionKey.js +4 -0
- package/dist/browser/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/browser/encryption/Serializers/StringSerializer.js +1 -1
- package/dist/browser/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/browser/extractPartitionKey.js +2 -2
- package/dist/browser/extractPartitionKey.js.map +1 -1
- package/dist/browser/globalEndpointManager.d.ts.map +1 -1
- package/dist/browser/globalEndpointManager.js +36 -23
- package/dist/browser/globalEndpointManager.js.map +1 -1
- package/dist/browser/globalPartitionEndpointManager.js +8 -0
- package/dist/browser/globalPartitionEndpointManager.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
- package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
- package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
- package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
- package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
- package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
- package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
- package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
- package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
- package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/FetchResult.js +4 -0
- package/dist/browser/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
- package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/browser/queryExecutionContext/documentProducer.js +34 -21
- package/dist/browser/queryExecutionContext/documentProducer.js.map +1 -1
- package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
- package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
- package/dist/browser/queryExecutionContext/orderByComparator.js +1 -0
- package/dist/browser/queryExecutionContext/orderByComparator.js.map +1 -1
- package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
- package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
- package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
- package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
- package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
- package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
- package/dist/browser/queryIterator.js +41 -33
- package/dist/browser/queryIterator.js.map +1 -1
- package/dist/browser/queryMetrics/clientSideMetrics.js +2 -1
- package/dist/browser/queryMetrics/clientSideMetrics.js.map +1 -1
- package/dist/browser/queryMetrics/queryMetrics.js +14 -1
- package/dist/browser/queryMetrics/queryMetrics.js.map +1 -1
- package/dist/browser/queryMetrics/queryPreparationTime.js +5 -1
- package/dist/browser/queryMetrics/queryPreparationTime.js.map +1 -1
- package/dist/browser/queryMetrics/runtimeExecutionTimes.js +4 -1
- package/dist/browser/queryMetrics/runtimeExecutionTimes.js.map +1 -1
- package/dist/browser/queryMetrics/timeSpan.js +4 -3
- package/dist/browser/queryMetrics/timeSpan.js.map +1 -1
- package/dist/browser/request/ErrorResponse.js +19 -0
- package/dist/browser/request/ErrorResponse.js.map +1 -1
- package/dist/browser/request/FeedResponse.js +4 -0
- package/dist/browser/request/FeedResponse.js.map +1 -1
- package/dist/browser/request/RequestHandler.js +1 -2
- package/dist/browser/request/RequestHandler.js.map +1 -1
- package/dist/browser/request/ResourceResponse.js +5 -0
- package/dist/browser/request/ResourceResponse.js.map +1 -1
- package/dist/browser/request/TimeoutError.js +1 -1
- package/dist/browser/request/TimeoutError.js.map +1 -1
- package/dist/browser/request/hybridSearchQueryResult.js +5 -0
- package/dist/browser/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/browser/request/request.js +5 -1
- package/dist/browser/request/request.js.map +1 -1
- package/dist/browser/retry/bulkExecutionRetryPolicy.js +5 -2
- package/dist/browser/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/browser/retry/defaultRetryPolicy.d.ts.map +1 -1
- package/dist/browser/retry/defaultRetryPolicy.js +7 -7
- package/dist/browser/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.js +24 -7
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
- package/dist/browser/retry/resourceThrottleRetryPolicy.js +20 -10
- package/dist/browser/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/browser/retry/retryUtility.d.ts.map +1 -1
- package/dist/browser/retry/retryUtility.js +5 -5
- package/dist/browser/retry/retryUtility.js.map +1 -1
- package/dist/browser/retry/sessionRetryPolicy.js +8 -4
- package/dist/browser/retry/sessionRetryPolicy.js.map +1 -1
- package/dist/browser/retry/timeoutFailoverRetryPolicy.js +14 -4
- package/dist/browser/retry/timeoutFailoverRetryPolicy.js.map +1 -1
- package/dist/browser/routing/QueryRange.js +4 -0
- package/dist/browser/routing/QueryRange.js.map +1 -1
- package/dist/browser/routing/inMemoryCollectionRoutingMap.js +4 -0
- package/dist/browser/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/browser/routing/partitionKeyRangeCache.js +2 -0
- package/dist/browser/routing/partitionKeyRangeCache.js.map +1 -1
- package/dist/browser/routing/smartRoutingMapProvider.js +1 -0
- package/dist/browser/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/browser/session/VectorSessionToken.js +6 -2
- package/dist/browser/session/VectorSessionToken.js.map +1 -1
- package/dist/browser/session/sessionContainer.js +5 -3
- package/dist/browser/session/sessionContainer.js.map +1 -1
- package/dist/browser/utils/batch.js +15 -4
- package/dist/browser/utils/batch.js.map +1 -1
- package/dist/browser/utils/fixedSizePriorityQueue.js +4 -0
- package/dist/browser/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/browser/utils/hashing/hash.js +1 -1
- package/dist/browser/utils/hashing/hash.js.map +1 -1
- package/dist/browser/utils/nonStreamingOrderByMap.js +2 -0
- package/dist/browser/utils/nonStreamingOrderByMap.js.map +1 -1
- package/dist/commonjs/ChangeFeedIterator.js +17 -11
- package/dist/commonjs/ChangeFeedIterator.js.map +1 -1
- package/dist/commonjs/ChangeFeedResponse.js +8 -0
- package/dist/commonjs/ChangeFeedResponse.js.map +1 -1
- package/dist/commonjs/ClientContext.js +122 -29
- package/dist/commonjs/ClientContext.js.map +1 -1
- package/dist/commonjs/CosmosClient.js +34 -3
- package/dist/commonjs/CosmosClient.js.map +1 -1
- package/dist/commonjs/CosmosDiagnostics.js +3 -0
- package/dist/commonjs/CosmosDiagnostics.js.map +1 -1
- package/dist/commonjs/PartitionKeyRangeFailoverInfo.js +8 -5
- package/dist/commonjs/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/commonjs/bulk/Batcher.js +13 -3
- package/dist/commonjs/bulk/Batcher.js.map +1 -1
- package/dist/commonjs/bulk/BulkHelper.js +26 -11
- package/dist/commonjs/bulk/BulkHelper.js.map +1 -1
- package/dist/commonjs/bulk/BulkResponse.js +22 -20
- package/dist/commonjs/bulk/BulkResponse.js.map +1 -1
- package/dist/commonjs/bulk/CongestionAlgorithm.js +11 -4
- package/dist/commonjs/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/commonjs/bulk/HelperPerPartition.js +14 -1
- package/dist/commonjs/bulk/HelperPerPartition.js.map +1 -1
- package/dist/commonjs/bulk/ItemOperationContext.js +4 -0
- package/dist/commonjs/bulk/ItemOperationContext.js.map +1 -1
- package/dist/commonjs/bulk/Limiter.js +27 -18
- package/dist/commonjs/bulk/Limiter.js.map +1 -1
- package/dist/commonjs/bulk/PartitionMetric.js +4 -0
- package/dist/commonjs/bulk/PartitionMetric.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js +20 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js +8 -0
- package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
- package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/FeedRange.js +8 -0
- package/dist/commonjs/client/ChangeFeed/FeedRange.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js +1 -0
- package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js +5 -5
- package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/commonjs/client/ClientUtils.js +1 -1
- package/dist/commonjs/client/ClientUtils.js.map +1 -1
- package/dist/commonjs/client/Conflict/Conflict.js +4 -0
- package/dist/commonjs/client/Conflict/Conflict.js.map +1 -1
- package/dist/commonjs/client/Conflict/ConflictResponse.js +2 -0
- package/dist/commonjs/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/commonjs/client/Conflict/Conflicts.js +2 -0
- package/dist/commonjs/client/Conflict/Conflicts.js.map +1 -1
- package/dist/commonjs/client/Container/Container.js +18 -3
- package/dist/commonjs/client/Container/Container.js.map +1 -1
- package/dist/commonjs/client/Container/ContainerResponse.js +2 -0
- package/dist/commonjs/client/Container/ContainerResponse.js.map +1 -1
- package/dist/commonjs/client/Container/Containers.js +4 -2
- package/dist/commonjs/client/Container/Containers.js.map +1 -1
- package/dist/commonjs/client/Database/Database.js +33 -0
- package/dist/commonjs/client/Database/Database.js.map +1 -1
- package/dist/commonjs/client/Database/DatabaseResponse.js +2 -0
- package/dist/commonjs/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/commonjs/client/Database/Databases.js +3 -0
- package/dist/commonjs/client/Database/Databases.js.map +1 -1
- package/dist/commonjs/client/Item/Item.js +4 -0
- package/dist/commonjs/client/Item/Item.js.map +1 -1
- package/dist/commonjs/client/Item/ItemResponse.js +2 -0
- package/dist/commonjs/client/Item/ItemResponse.js.map +1 -1
- package/dist/commonjs/client/Item/Items.js +3 -0
- package/dist/commonjs/client/Item/Items.js.map +1 -1
- package/dist/commonjs/client/Offer/Offer.js +3 -0
- package/dist/commonjs/client/Offer/Offer.js.map +1 -1
- package/dist/commonjs/client/Offer/OfferResponse.js +2 -0
- package/dist/commonjs/client/Offer/OfferResponse.js.map +1 -1
- package/dist/commonjs/client/Offer/Offers.js +2 -0
- package/dist/commonjs/client/Offer/Offers.js.map +1 -1
- package/dist/commonjs/client/Permission/Permission.js +3 -0
- package/dist/commonjs/client/Permission/Permission.js.map +1 -1
- package/dist/commonjs/client/Permission/PermissionResponse.js +2 -0
- package/dist/commonjs/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/commonjs/client/Permission/Permissions.js +2 -0
- package/dist/commonjs/client/Permission/Permissions.js.map +1 -1
- package/dist/commonjs/client/SasToken/SasTokenProperties.js +17 -0
- package/dist/commonjs/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/commonjs/client/Script/Scripts.js +5 -0
- package/dist/commonjs/client/Script/Scripts.js.map +1 -1
- package/dist/commonjs/client/StoredProcedure/StoredProcedure.js +3 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedure.js.map +1 -1
- package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js +4 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/commonjs/client/StoredProcedure/StoredProcedures.js +2 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedures.js.map +1 -1
- package/dist/commonjs/client/Trigger/Trigger.js +3 -0
- package/dist/commonjs/client/Trigger/Trigger.js.map +1 -1
- package/dist/commonjs/client/Trigger/TriggerResponse.js +2 -0
- package/dist/commonjs/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/commonjs/client/Trigger/Triggers.js +2 -0
- package/dist/commonjs/client/Trigger/Triggers.js.map +1 -1
- package/dist/commonjs/client/User/User.js +9 -0
- package/dist/commonjs/client/User/User.js.map +1 -1
- package/dist/commonjs/client/User/UserResponse.js +2 -0
- package/dist/commonjs/client/User/UserResponse.js.map +1 -1
- package/dist/commonjs/client/User/Users.js +2 -0
- package/dist/commonjs/client/User/Users.js.map +1 -1
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
- package/dist/commonjs/common/constants.js +1 -1
- package/dist/commonjs/common/constants.js.map +1 -1
- package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js +8 -7
- package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js +26 -7
- package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/commonjs/diagnostics/DiagnosticWriter.js +1 -3
- package/dist/commonjs/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/commonjs/diagnostics/index.js +2 -2
- package/dist/commonjs/diagnostics/index.js.map +1 -1
- package/dist/commonjs/documents/DatabaseAccount.js +20 -4
- package/dist/commonjs/documents/DatabaseAccount.js.map +1 -1
- package/dist/commonjs/documents/PartitionKey.js +1 -3
- package/dist/commonjs/documents/PartitionKey.js.map +1 -1
- package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
- package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
- package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
- package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js +2 -0
- package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
- package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
- package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
- package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
- package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionItemQueryIterator.js +24 -27
- package/dist/commonjs/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
- package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
- package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js +8 -1
- package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionManager.js +6 -0
- package/dist/commonjs/encryption/EncryptionManager.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionProcessor.js +5 -0
- package/dist/commonjs/encryption/EncryptionProcessor.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionQueryBuilder.js +2 -0
- package/dist/commonjs/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionSettingForProperty.js +6 -0
- package/dist/commonjs/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionSettings.js +6 -3
- package/dist/commonjs/encryption/EncryptionSettings.js.map +1 -1
- package/dist/commonjs/encryption/KeyEncryptionKey.js +4 -0
- package/dist/commonjs/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/commonjs/encryption/Serializers/StringSerializer.js +1 -1
- package/dist/commonjs/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/commonjs/extractPartitionKey.js +2 -2
- package/dist/commonjs/extractPartitionKey.js.map +1 -1
- package/dist/commonjs/globalEndpointManager.d.ts.map +1 -1
- package/dist/commonjs/globalEndpointManager.js +36 -23
- package/dist/commonjs/globalEndpointManager.js.map +1 -1
- package/dist/commonjs/globalPartitionEndpointManager.js +8 -0
- package/dist/commonjs/globalPartitionEndpointManager.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/FetchResult.js +4 -0
- package/dist/commonjs/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
- package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/documentProducer.js +34 -21
- package/dist/commonjs/queryExecutionContext/documentProducer.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
- package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/orderByComparator.js +1 -0
- package/dist/commonjs/queryExecutionContext/orderByComparator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
- package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
- package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
- package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryIterator.js +41 -33
- package/dist/commonjs/queryIterator.js.map +1 -1
- package/dist/commonjs/queryMetrics/clientSideMetrics.js +2 -1
- package/dist/commonjs/queryMetrics/clientSideMetrics.js.map +1 -1
- package/dist/commonjs/queryMetrics/queryMetrics.js +14 -1
- package/dist/commonjs/queryMetrics/queryMetrics.js.map +1 -1
- package/dist/commonjs/queryMetrics/queryPreparationTime.js +5 -1
- package/dist/commonjs/queryMetrics/queryPreparationTime.js.map +1 -1
- package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js +4 -1
- package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js.map +1 -1
- package/dist/commonjs/queryMetrics/timeSpan.js +4 -3
- package/dist/commonjs/queryMetrics/timeSpan.js.map +1 -1
- package/dist/commonjs/request/ErrorResponse.js +19 -0
- package/dist/commonjs/request/ErrorResponse.js.map +1 -1
- package/dist/commonjs/request/FeedResponse.js +4 -0
- package/dist/commonjs/request/FeedResponse.js.map +1 -1
- package/dist/commonjs/request/RequestHandler.js +1 -2
- package/dist/commonjs/request/RequestHandler.js.map +1 -1
- package/dist/commonjs/request/ResourceResponse.js +5 -0
- package/dist/commonjs/request/ResourceResponse.js.map +1 -1
- package/dist/commonjs/request/TimeoutError.js +1 -1
- package/dist/commonjs/request/TimeoutError.js.map +1 -1
- package/dist/commonjs/request/hybridSearchQueryResult.js +5 -0
- package/dist/commonjs/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/commonjs/request/request.js +5 -1
- package/dist/commonjs/request/request.js.map +1 -1
- package/dist/commonjs/retry/bulkExecutionRetryPolicy.js +5 -2
- package/dist/commonjs/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/defaultRetryPolicy.d.ts.map +1 -1
- package/dist/commonjs/retry/defaultRetryPolicy.js +6 -6
- package/dist/commonjs/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js +24 -7
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/resourceThrottleRetryPolicy.js +20 -10
- package/dist/commonjs/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/retryUtility.d.ts.map +1 -1
- package/dist/commonjs/retry/retryUtility.js +5 -5
- package/dist/commonjs/retry/retryUtility.js.map +1 -1
- package/dist/commonjs/retry/sessionRetryPolicy.js +8 -4
- package/dist/commonjs/retry/sessionRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js +14 -4
- package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js.map +1 -1
- package/dist/commonjs/routing/QueryRange.js +4 -0
- package/dist/commonjs/routing/QueryRange.js.map +1 -1
- package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js +4 -0
- package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/commonjs/routing/partitionKeyRangeCache.js +2 -0
- package/dist/commonjs/routing/partitionKeyRangeCache.js.map +1 -1
- package/dist/commonjs/routing/smartRoutingMapProvider.js +1 -0
- package/dist/commonjs/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/commonjs/session/VectorSessionToken.js +6 -2
- package/dist/commonjs/session/VectorSessionToken.js.map +1 -1
- package/dist/commonjs/session/sessionContainer.js +5 -3
- package/dist/commonjs/session/sessionContainer.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/utils/batch.js +15 -4
- package/dist/commonjs/utils/batch.js.map +1 -1
- package/dist/commonjs/utils/fixedSizePriorityQueue.js +4 -0
- package/dist/commonjs/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/commonjs/utils/hashing/hash.js +1 -1
- package/dist/commonjs/utils/hashing/hash.js.map +1 -1
- package/dist/commonjs/utils/nonStreamingOrderByMap.js +2 -0
- package/dist/commonjs/utils/nonStreamingOrderByMap.js.map +1 -1
- package/dist/esm/ChangeFeedIterator.js +17 -11
- package/dist/esm/ChangeFeedIterator.js.map +1 -1
- package/dist/esm/ChangeFeedResponse.js +8 -0
- package/dist/esm/ChangeFeedResponse.js.map +1 -1
- package/dist/esm/ClientContext.js +122 -29
- package/dist/esm/ClientContext.js.map +1 -1
- package/dist/esm/CosmosClient.js +34 -3
- package/dist/esm/CosmosClient.js.map +1 -1
- package/dist/esm/CosmosDiagnostics.js +3 -0
- package/dist/esm/CosmosDiagnostics.js.map +1 -1
- package/dist/esm/PartitionKeyRangeFailoverInfo.js +8 -5
- package/dist/esm/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/esm/bulk/Batcher.js +13 -3
- package/dist/esm/bulk/Batcher.js.map +1 -1
- package/dist/esm/bulk/BulkHelper.js +26 -11
- package/dist/esm/bulk/BulkHelper.js.map +1 -1
- package/dist/esm/bulk/BulkResponse.js +22 -20
- package/dist/esm/bulk/BulkResponse.js.map +1 -1
- package/dist/esm/bulk/CongestionAlgorithm.js +11 -4
- package/dist/esm/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/esm/bulk/HelperPerPartition.js +14 -1
- package/dist/esm/bulk/HelperPerPartition.js.map +1 -1
- package/dist/esm/bulk/ItemOperationContext.js +4 -0
- package/dist/esm/bulk/ItemOperationContext.js.map +1 -1
- package/dist/esm/bulk/Limiter.js +27 -18
- package/dist/esm/bulk/Limiter.js.map +1 -1
- package/dist/esm/bulk/PartitionMetric.js +4 -0
- package/dist/esm/bulk/PartitionMetric.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
- package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
- package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedRange.js +20 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js +8 -0
- package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
- package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/esm/client/ChangeFeed/FeedRange.js +8 -0
- package/dist/esm/client/ChangeFeed/FeedRange.js.map +1 -1
- package/dist/esm/client/ChangeFeed/FeedRangeQueue.js +1 -0
- package/dist/esm/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
- package/dist/esm/client/ChangeFeed/changeFeedUtils.js +5 -5
- package/dist/esm/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/esm/client/ClientUtils.js +1 -1
- package/dist/esm/client/ClientUtils.js.map +1 -1
- package/dist/esm/client/Conflict/Conflict.js +4 -0
- package/dist/esm/client/Conflict/Conflict.js.map +1 -1
- package/dist/esm/client/Conflict/ConflictResponse.js +2 -0
- package/dist/esm/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/esm/client/Conflict/Conflicts.js +2 -0
- package/dist/esm/client/Conflict/Conflicts.js.map +1 -1
- package/dist/esm/client/Container/Container.js +18 -3
- package/dist/esm/client/Container/Container.js.map +1 -1
- package/dist/esm/client/Container/ContainerResponse.js +2 -0
- package/dist/esm/client/Container/ContainerResponse.js.map +1 -1
- package/dist/esm/client/Container/Containers.js +4 -2
- package/dist/esm/client/Container/Containers.js.map +1 -1
- package/dist/esm/client/Database/Database.js +33 -0
- package/dist/esm/client/Database/Database.js.map +1 -1
- package/dist/esm/client/Database/DatabaseResponse.js +2 -0
- package/dist/esm/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/esm/client/Database/Databases.js +3 -0
- package/dist/esm/client/Database/Databases.js.map +1 -1
- package/dist/esm/client/Item/Item.js +4 -0
- package/dist/esm/client/Item/Item.js.map +1 -1
- package/dist/esm/client/Item/ItemResponse.js +2 -0
- package/dist/esm/client/Item/ItemResponse.js.map +1 -1
- package/dist/esm/client/Item/Items.js +3 -0
- package/dist/esm/client/Item/Items.js.map +1 -1
- package/dist/esm/client/Offer/Offer.js +3 -0
- package/dist/esm/client/Offer/Offer.js.map +1 -1
- package/dist/esm/client/Offer/OfferResponse.js +2 -0
- package/dist/esm/client/Offer/OfferResponse.js.map +1 -1
- package/dist/esm/client/Offer/Offers.js +2 -0
- package/dist/esm/client/Offer/Offers.js.map +1 -1
- package/dist/esm/client/Permission/Permission.js +3 -0
- package/dist/esm/client/Permission/Permission.js.map +1 -1
- package/dist/esm/client/Permission/PermissionResponse.js +2 -0
- package/dist/esm/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/esm/client/Permission/Permissions.js +2 -0
- package/dist/esm/client/Permission/Permissions.js.map +1 -1
- package/dist/esm/client/SasToken/SasTokenProperties.js +17 -0
- package/dist/esm/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/esm/client/Script/Scripts.js +5 -0
- package/dist/esm/client/Script/Scripts.js.map +1 -1
- package/dist/esm/client/StoredProcedure/StoredProcedure.js +3 -0
- package/dist/esm/client/StoredProcedure/StoredProcedure.js.map +1 -1
- package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js +4 -0
- package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/esm/client/StoredProcedure/StoredProcedures.js +2 -0
- package/dist/esm/client/StoredProcedure/StoredProcedures.js.map +1 -1
- package/dist/esm/client/Trigger/Trigger.js +3 -0
- package/dist/esm/client/Trigger/Trigger.js.map +1 -1
- package/dist/esm/client/Trigger/TriggerResponse.js +2 -0
- package/dist/esm/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/esm/client/Trigger/Triggers.js +2 -0
- package/dist/esm/client/Trigger/Triggers.js.map +1 -1
- package/dist/esm/client/User/User.js +9 -0
- package/dist/esm/client/User/User.js.map +1 -1
- package/dist/esm/client/User/UserResponse.js +2 -0
- package/dist/esm/client/User/UserResponse.js.map +1 -1
- package/dist/esm/client/User/Users.js +2 -0
- package/dist/esm/client/User/Users.js.map +1 -1
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
- package/dist/esm/common/constants.js +1 -1
- package/dist/esm/common/constants.js.map +1 -1
- package/dist/esm/diagnostics/CosmosDiagnosticsContext.js +8 -7
- package/dist/esm/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/esm/diagnostics/DiagnosticNodeInternal.js +26 -7
- package/dist/esm/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/esm/diagnostics/DiagnosticWriter.js +1 -3
- package/dist/esm/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/esm/diagnostics/index.js +2 -2
- package/dist/esm/diagnostics/index.js.map +1 -1
- package/dist/esm/documents/DatabaseAccount.js +20 -4
- package/dist/esm/documents/DatabaseAccount.js.map +1 -1
- package/dist/esm/documents/PartitionKey.js +1 -3
- package/dist/esm/documents/PartitionKey.js.map +1 -1
- package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
- package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
- package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
- package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/esm/encryption/Cache/EncryptionSettingsCache.js +2 -0
- package/dist/esm/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
- package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
- package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
- package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
- package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/esm/encryption/EncryptionItemQueryIterator.js +24 -27
- package/dist/esm/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
- package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
- package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
- package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
- package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
- package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
- package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/esm/encryption/EncryptionKeyStoreProvider.js +8 -1
- package/dist/esm/encryption/EncryptionKeyStoreProvider.js.map +1 -1
- package/dist/esm/encryption/EncryptionManager.js +6 -0
- package/dist/esm/encryption/EncryptionManager.js.map +1 -1
- package/dist/esm/encryption/EncryptionProcessor.js +5 -0
- package/dist/esm/encryption/EncryptionProcessor.js.map +1 -1
- package/dist/esm/encryption/EncryptionQueryBuilder.js +2 -0
- package/dist/esm/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/esm/encryption/EncryptionSettingForProperty.js +6 -0
- package/dist/esm/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/esm/encryption/EncryptionSettings.js +6 -3
- package/dist/esm/encryption/EncryptionSettings.js.map +1 -1
- package/dist/esm/encryption/KeyEncryptionKey.js +4 -0
- package/dist/esm/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/esm/encryption/Serializers/StringSerializer.js +1 -1
- package/dist/esm/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/esm/extractPartitionKey.js +2 -2
- package/dist/esm/extractPartitionKey.js.map +1 -1
- package/dist/esm/globalEndpointManager.d.ts.map +1 -1
- package/dist/esm/globalEndpointManager.js +36 -23
- package/dist/esm/globalEndpointManager.js.map +1 -1
- package/dist/esm/globalPartitionEndpointManager.js +8 -0
- package/dist/esm/globalPartitionEndpointManager.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
- package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
- package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
- package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
- package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
- package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
- package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
- package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
- package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
- package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/FetchResult.js +4 -0
- package/dist/esm/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
- package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/esm/queryExecutionContext/documentProducer.js +34 -21
- package/dist/esm/queryExecutionContext/documentProducer.js.map +1 -1
- package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
- package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
- package/dist/esm/queryExecutionContext/orderByComparator.js +1 -0
- package/dist/esm/queryExecutionContext/orderByComparator.js.map +1 -1
- package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
- package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
- package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
- package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
- package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
- package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
- package/dist/esm/queryIterator.js +41 -33
- package/dist/esm/queryIterator.js.map +1 -1
- package/dist/esm/queryMetrics/clientSideMetrics.js +2 -1
- package/dist/esm/queryMetrics/clientSideMetrics.js.map +1 -1
- package/dist/esm/queryMetrics/queryMetrics.js +14 -1
- package/dist/esm/queryMetrics/queryMetrics.js.map +1 -1
- package/dist/esm/queryMetrics/queryPreparationTime.js +5 -1
- package/dist/esm/queryMetrics/queryPreparationTime.js.map +1 -1
- package/dist/esm/queryMetrics/runtimeExecutionTimes.js +4 -1
- package/dist/esm/queryMetrics/runtimeExecutionTimes.js.map +1 -1
- package/dist/esm/queryMetrics/timeSpan.js +4 -3
- package/dist/esm/queryMetrics/timeSpan.js.map +1 -1
- package/dist/esm/request/ErrorResponse.js +19 -0
- package/dist/esm/request/ErrorResponse.js.map +1 -1
- package/dist/esm/request/FeedResponse.js +4 -0
- package/dist/esm/request/FeedResponse.js.map +1 -1
- package/dist/esm/request/RequestHandler.js +1 -2
- package/dist/esm/request/RequestHandler.js.map +1 -1
- package/dist/esm/request/ResourceResponse.js +5 -0
- package/dist/esm/request/ResourceResponse.js.map +1 -1
- package/dist/esm/request/TimeoutError.js +1 -1
- package/dist/esm/request/TimeoutError.js.map +1 -1
- package/dist/esm/request/hybridSearchQueryResult.js +5 -0
- package/dist/esm/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/esm/request/request.js +5 -1
- package/dist/esm/request/request.js.map +1 -1
- package/dist/esm/retry/bulkExecutionRetryPolicy.js +5 -2
- package/dist/esm/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/esm/retry/defaultRetryPolicy.d.ts.map +1 -1
- package/dist/esm/retry/defaultRetryPolicy.js +7 -7
- package/dist/esm/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.js +24 -7
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
- package/dist/esm/retry/resourceThrottleRetryPolicy.js +20 -10
- package/dist/esm/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/esm/retry/retryUtility.d.ts.map +1 -1
- package/dist/esm/retry/retryUtility.js +5 -5
- package/dist/esm/retry/retryUtility.js.map +1 -1
- package/dist/esm/retry/sessionRetryPolicy.js +8 -4
- package/dist/esm/retry/sessionRetryPolicy.js.map +1 -1
- package/dist/esm/retry/timeoutFailoverRetryPolicy.js +14 -4
- package/dist/esm/retry/timeoutFailoverRetryPolicy.js.map +1 -1
- package/dist/esm/routing/QueryRange.js +4 -0
- package/dist/esm/routing/QueryRange.js.map +1 -1
- package/dist/esm/routing/inMemoryCollectionRoutingMap.js +4 -0
- package/dist/esm/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/esm/routing/partitionKeyRangeCache.js +2 -0
- package/dist/esm/routing/partitionKeyRangeCache.js.map +1 -1
- package/dist/esm/routing/smartRoutingMapProvider.js +1 -0
- package/dist/esm/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/esm/session/VectorSessionToken.js +6 -2
- package/dist/esm/session/VectorSessionToken.js.map +1 -1
- package/dist/esm/session/sessionContainer.js +5 -3
- package/dist/esm/session/sessionContainer.js.map +1 -1
- package/dist/esm/utils/batch.js +15 -4
- package/dist/esm/utils/batch.js.map +1 -1
- package/dist/esm/utils/fixedSizePriorityQueue.js +4 -0
- package/dist/esm/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/esm/utils/hashing/hash.js +1 -1
- package/dist/esm/utils/hashing/hash.js.map +1 -1
- package/dist/esm/utils/nonStreamingOrderByMap.js +2 -0
- package/dist/esm/utils/nonStreamingOrderByMap.js.map +1 -1
- package/dist/react-native/ChangeFeedIterator.js +17 -11
- package/dist/react-native/ChangeFeedIterator.js.map +1 -1
- package/dist/react-native/ChangeFeedResponse.js +8 -0
- package/dist/react-native/ChangeFeedResponse.js.map +1 -1
- package/dist/react-native/ClientContext.js +122 -29
- package/dist/react-native/ClientContext.js.map +1 -1
- package/dist/react-native/CosmosClient.js +34 -3
- package/dist/react-native/CosmosClient.js.map +1 -1
- package/dist/react-native/CosmosDiagnostics.js +3 -0
- package/dist/react-native/CosmosDiagnostics.js.map +1 -1
- package/dist/react-native/PartitionKeyRangeFailoverInfo.js +8 -5
- package/dist/react-native/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/react-native/bulk/Batcher.js +13 -3
- package/dist/react-native/bulk/Batcher.js.map +1 -1
- package/dist/react-native/bulk/BulkHelper.js +26 -11
- package/dist/react-native/bulk/BulkHelper.js.map +1 -1
- package/dist/react-native/bulk/BulkResponse.js +22 -20
- package/dist/react-native/bulk/BulkResponse.js.map +1 -1
- package/dist/react-native/bulk/CongestionAlgorithm.js +11 -4
- package/dist/react-native/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/react-native/bulk/HelperPerPartition.js +14 -1
- package/dist/react-native/bulk/HelperPerPartition.js.map +1 -1
- package/dist/react-native/bulk/ItemOperationContext.js +4 -0
- package/dist/react-native/bulk/ItemOperationContext.js.map +1 -1
- package/dist/react-native/bulk/Limiter.js +27 -18
- package/dist/react-native/bulk/Limiter.js.map +1 -1
- package/dist/react-native/bulk/PartitionMetric.js +4 -0
- package/dist/react-native/bulk/PartitionMetric.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
- package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
- package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js +20 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js +8 -0
- package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
- package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/FeedRange.js +8 -0
- package/dist/react-native/client/ChangeFeed/FeedRange.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js +1 -0
- package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/changeFeedUtils.js +5 -5
- package/dist/react-native/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/react-native/client/ClientUtils.js +1 -1
- package/dist/react-native/client/ClientUtils.js.map +1 -1
- package/dist/react-native/client/Conflict/Conflict.js +4 -0
- package/dist/react-native/client/Conflict/Conflict.js.map +1 -1
- package/dist/react-native/client/Conflict/ConflictResponse.js +2 -0
- package/dist/react-native/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/react-native/client/Conflict/Conflicts.js +2 -0
- package/dist/react-native/client/Conflict/Conflicts.js.map +1 -1
- package/dist/react-native/client/Container/Container.js +18 -3
- package/dist/react-native/client/Container/Container.js.map +1 -1
- package/dist/react-native/client/Container/ContainerResponse.js +2 -0
- package/dist/react-native/client/Container/ContainerResponse.js.map +1 -1
- package/dist/react-native/client/Container/Containers.js +4 -2
- package/dist/react-native/client/Container/Containers.js.map +1 -1
- package/dist/react-native/client/Database/Database.js +33 -0
- package/dist/react-native/client/Database/Database.js.map +1 -1
- package/dist/react-native/client/Database/DatabaseResponse.js +2 -0
- package/dist/react-native/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/react-native/client/Database/Databases.js +3 -0
- package/dist/react-native/client/Database/Databases.js.map +1 -1
- package/dist/react-native/client/Item/Item.js +4 -0
- package/dist/react-native/client/Item/Item.js.map +1 -1
- package/dist/react-native/client/Item/ItemResponse.js +2 -0
- package/dist/react-native/client/Item/ItemResponse.js.map +1 -1
- package/dist/react-native/client/Item/Items.js +3 -0
- package/dist/react-native/client/Item/Items.js.map +1 -1
- package/dist/react-native/client/Offer/Offer.js +3 -0
- package/dist/react-native/client/Offer/Offer.js.map +1 -1
- package/dist/react-native/client/Offer/OfferResponse.js +2 -0
- package/dist/react-native/client/Offer/OfferResponse.js.map +1 -1
- package/dist/react-native/client/Offer/Offers.js +2 -0
- package/dist/react-native/client/Offer/Offers.js.map +1 -1
- package/dist/react-native/client/Permission/Permission.js +3 -0
- package/dist/react-native/client/Permission/Permission.js.map +1 -1
- package/dist/react-native/client/Permission/PermissionResponse.js +2 -0
- package/dist/react-native/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/react-native/client/Permission/Permissions.js +2 -0
- package/dist/react-native/client/Permission/Permissions.js.map +1 -1
- package/dist/react-native/client/SasToken/SasTokenProperties.js +17 -0
- package/dist/react-native/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/react-native/client/Script/Scripts.js +5 -0
- package/dist/react-native/client/Script/Scripts.js.map +1 -1
- package/dist/react-native/client/StoredProcedure/StoredProcedure.js +3 -0
- package/dist/react-native/client/StoredProcedure/StoredProcedure.js.map +1 -1
- package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js +4 -0
- package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/react-native/client/StoredProcedure/StoredProcedures.js +2 -0
- package/dist/react-native/client/StoredProcedure/StoredProcedures.js.map +1 -1
- package/dist/react-native/client/Trigger/Trigger.js +3 -0
- package/dist/react-native/client/Trigger/Trigger.js.map +1 -1
- package/dist/react-native/client/Trigger/TriggerResponse.js +2 -0
- package/dist/react-native/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/react-native/client/Trigger/Triggers.js +2 -0
- package/dist/react-native/client/Trigger/Triggers.js.map +1 -1
- package/dist/react-native/client/User/User.js +9 -0
- package/dist/react-native/client/User/User.js.map +1 -1
- package/dist/react-native/client/User/UserResponse.js +2 -0
- package/dist/react-native/client/User/UserResponse.js.map +1 -1
- package/dist/react-native/client/User/Users.js +2 -0
- package/dist/react-native/client/User/Users.js.map +1 -1
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
- package/dist/react-native/common/constants.js +1 -1
- package/dist/react-native/common/constants.js.map +1 -1
- package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js +8 -7
- package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/react-native/diagnostics/DiagnosticNodeInternal.js +26 -7
- package/dist/react-native/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/react-native/diagnostics/DiagnosticWriter.js +1 -3
- package/dist/react-native/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/react-native/diagnostics/index.js +2 -2
- package/dist/react-native/diagnostics/index.js.map +1 -1
- package/dist/react-native/documents/DatabaseAccount.js +20 -4
- package/dist/react-native/documents/DatabaseAccount.js.map +1 -1
- package/dist/react-native/documents/PartitionKey.js +1 -3
- package/dist/react-native/documents/PartitionKey.js.map +1 -1
- package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
- package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
- package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
- package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js +2 -0
- package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
- package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
- package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
- package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
- package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/react-native/encryption/EncryptionItemQueryIterator.js +24 -27
- package/dist/react-native/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
- package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
- package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
- package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
- package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
- package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
- package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/react-native/encryption/EncryptionKeyStoreProvider.js +8 -1
- package/dist/react-native/encryption/EncryptionKeyStoreProvider.js.map +1 -1
- package/dist/react-native/encryption/EncryptionManager.js +6 -0
- package/dist/react-native/encryption/EncryptionManager.js.map +1 -1
- package/dist/react-native/encryption/EncryptionProcessor.js +5 -0
- package/dist/react-native/encryption/EncryptionProcessor.js.map +1 -1
- package/dist/react-native/encryption/EncryptionQueryBuilder.js +2 -0
- package/dist/react-native/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/react-native/encryption/EncryptionSettingForProperty.js +6 -0
- package/dist/react-native/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/react-native/encryption/EncryptionSettings.js +6 -3
- package/dist/react-native/encryption/EncryptionSettings.js.map +1 -1
- package/dist/react-native/encryption/KeyEncryptionKey.js +4 -0
- package/dist/react-native/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/react-native/encryption/Serializers/StringSerializer.js +1 -1
- package/dist/react-native/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/react-native/extractPartitionKey.js +2 -2
- package/dist/react-native/extractPartitionKey.js.map +1 -1
- package/dist/react-native/globalEndpointManager.d.ts.map +1 -1
- package/dist/react-native/globalEndpointManager.js +36 -23
- package/dist/react-native/globalEndpointManager.js.map +1 -1
- package/dist/react-native/globalPartitionEndpointManager.js +8 -0
- package/dist/react-native/globalPartitionEndpointManager.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
- package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
- package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
- package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
- package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
- package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
- package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
- package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
- package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
- package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/FetchResult.js +4 -0
- package/dist/react-native/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
- package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/react-native/queryExecutionContext/documentProducer.js +34 -21
- package/dist/react-native/queryExecutionContext/documentProducer.js.map +1 -1
- package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
- package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
- package/dist/react-native/queryExecutionContext/orderByComparator.js +1 -0
- package/dist/react-native/queryExecutionContext/orderByComparator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
- package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
- package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
- package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
- package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
- package/dist/react-native/queryIterator.js +41 -33
- package/dist/react-native/queryIterator.js.map +1 -1
- package/dist/react-native/queryMetrics/clientSideMetrics.js +2 -1
- package/dist/react-native/queryMetrics/clientSideMetrics.js.map +1 -1
- package/dist/react-native/queryMetrics/queryMetrics.js +14 -1
- package/dist/react-native/queryMetrics/queryMetrics.js.map +1 -1
- package/dist/react-native/queryMetrics/queryPreparationTime.js +5 -1
- package/dist/react-native/queryMetrics/queryPreparationTime.js.map +1 -1
- package/dist/react-native/queryMetrics/runtimeExecutionTimes.js +4 -1
- package/dist/react-native/queryMetrics/runtimeExecutionTimes.js.map +1 -1
- package/dist/react-native/queryMetrics/timeSpan.js +4 -3
- package/dist/react-native/queryMetrics/timeSpan.js.map +1 -1
- package/dist/react-native/request/ErrorResponse.js +19 -0
- package/dist/react-native/request/ErrorResponse.js.map +1 -1
- package/dist/react-native/request/FeedResponse.js +4 -0
- package/dist/react-native/request/FeedResponse.js.map +1 -1
- package/dist/react-native/request/RequestHandler.js +1 -2
- package/dist/react-native/request/RequestHandler.js.map +1 -1
- package/dist/react-native/request/ResourceResponse.js +5 -0
- package/dist/react-native/request/ResourceResponse.js.map +1 -1
- package/dist/react-native/request/TimeoutError.js +1 -1
- package/dist/react-native/request/TimeoutError.js.map +1 -1
- package/dist/react-native/request/hybridSearchQueryResult.js +5 -0
- package/dist/react-native/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/react-native/request/request.js +5 -1
- package/dist/react-native/request/request.js.map +1 -1
- package/dist/react-native/retry/bulkExecutionRetryPolicy.js +5 -2
- package/dist/react-native/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/defaultRetryPolicy.d.ts.map +1 -1
- package/dist/react-native/retry/defaultRetryPolicy.js +7 -7
- package/dist/react-native/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js +24 -7
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/resourceThrottleRetryPolicy.js +20 -10
- package/dist/react-native/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/retryUtility.d.ts.map +1 -1
- package/dist/react-native/retry/retryUtility.js +5 -5
- package/dist/react-native/retry/retryUtility.js.map +1 -1
- package/dist/react-native/retry/sessionRetryPolicy.js +8 -4
- package/dist/react-native/retry/sessionRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/timeoutFailoverRetryPolicy.js +14 -4
- package/dist/react-native/retry/timeoutFailoverRetryPolicy.js.map +1 -1
- package/dist/react-native/routing/QueryRange.js +4 -0
- package/dist/react-native/routing/QueryRange.js.map +1 -1
- package/dist/react-native/routing/inMemoryCollectionRoutingMap.js +4 -0
- package/dist/react-native/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/react-native/routing/partitionKeyRangeCache.js +2 -0
- package/dist/react-native/routing/partitionKeyRangeCache.js.map +1 -1
- package/dist/react-native/routing/smartRoutingMapProvider.js +1 -0
- package/dist/react-native/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/react-native/session/VectorSessionToken.js +6 -2
- package/dist/react-native/session/VectorSessionToken.js.map +1 -1
- package/dist/react-native/session/sessionContainer.js +5 -3
- package/dist/react-native/session/sessionContainer.js.map +1 -1
- package/dist/react-native/utils/batch.js +15 -4
- package/dist/react-native/utils/batch.js.map +1 -1
- package/dist/react-native/utils/fixedSizePriorityQueue.js +4 -0
- package/dist/react-native/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/react-native/utils/hashing/hash.js +1 -1
- package/dist/react-native/utils/hashing/hash.js.map +1 -1
- package/dist/react-native/utils/nonStreamingOrderByMap.js +2 -0
- package/dist/react-native/utils/nonStreamingOrderByMap.js.map +1 -1
- package/package.json +32 -33
package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureKeyVaultEncryptionKeyResolver.js","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAKlC,wDAAiD;AACjD,qDAAuD;AACvD,gDAA8D;AAE9D;;GAEG;AACH,MAAa,kCAAkC;
|
|
1
|
+
{"version":3,"file":"AzureKeyVaultEncryptionKeyResolver.js","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { TokenCredential } from \"@azure/core-auth\";\nimport type { EncryptionKeyResolver } from \"./EncryptionKeyResolver.js\";\nimport type { KeyWrapAlgorithm } from \"@azure/keyvault-keys\";\nimport { KeyClient } from \"@azure/keyvault-keys\";\nimport { ErrorResponse } from \"../../request/index.js\";\nimport { EncryptionKeyResolverName } from \"../enums/index.js\";\n\n/**\n * Implementation of EncryptionKeyResolver that uses Azure Key Vault for customer managed keys.\n */\nexport class AzureKeyVaultEncryptionKeyResolver implements EncryptionKeyResolver {\n private credentials: TokenCredential;\n\n constructor(credentials: TokenCredential) {\n this.credentials = credentials;\n }\n /**\n * Name of the resolver to use for client side encryption.\n * Currently only AzureKeyVault implementation is supported.\n */\n public encryptionKeyResolverName = EncryptionKeyResolverName.AzureKeyVault;\n /**\n * wraps the given key using the specified key encryption key path and algorithm.\n * @param encryptionKeyId - path to the customer managed key to be used for wrapping. For Azure Key Vault, this is url of the key in the vault.\n * @param algorithm - algorithm to be used for wrapping.\n * @param unwrappedKey - dek to be wrapped.\n * @returns wrapped DEK.\n */\n public async wrapKey(\n encryptionKeyId: string,\n algorithm: string,\n unwrappedKey: Uint8Array,\n ): Promise<Uint8Array> {\n try {\n const origin = this.getOrigin(encryptionKeyId);\n const keyClient = new KeyClient(origin, this.credentials);\n const [keyName, keyVersion] = this.getKeyDetails(encryptionKeyId);\n const cryptographyClient = keyClient.getCryptographyClient(keyName, {\n keyVersion: keyVersion,\n });\n const res = await cryptographyClient.wrapKey(algorithm as KeyWrapAlgorithm, unwrappedKey);\n if (!res || !res.result) {\n throw new ErrorResponse(`Failed to wrap key: ${res}`);\n }\n return res.result;\n } catch (e) {\n throw new ErrorResponse(`Failed to wrap key: ${e.message}`);\n }\n }\n /**\n * Unwraps the given wrapped key using the specified key encryption key path and algorithm.\n * @param encryptionKeyId - path to the customer managed key to be used for unwrapping. For Azure Key Vault, this is url of the key in the vault.\n * @param algorithm - algorithm to be used for unwrapping.\n * @param wrappedKey - wrapped DEK.\n * @returns unwrapped DEK.\n */\n public async unwrapKey(\n encryptionKeyId: string,\n algorithm: string,\n wrappedKey: Uint8Array,\n ): Promise<Uint8Array> {\n try {\n const origin = this.getOrigin(encryptionKeyId);\n const keyClient = new KeyClient(origin, this.credentials);\n const [keyName, keyVersion] = this.getKeyDetails(encryptionKeyId);\n const cryptographyClient = keyClient.getCryptographyClient(keyName, {\n keyVersion: keyVersion,\n });\n const res = await cryptographyClient.unwrapKey(algorithm as KeyWrapAlgorithm, wrappedKey);\n if (!res || !res.result) {\n throw new ErrorResponse(`Failed to wrap key: ${res}`);\n }\n return res.result;\n } catch (e) {\n throw new ErrorResponse(`Failed to unwrap key: ${e.message}`);\n }\n }\n // TODO: improve this method to extract key name and version from the url\n private getKeyDetails(encryptionKeyId: string): [string, string] {\n let url;\n try {\n url = new URL(encryptionKeyId);\n const parts = url.pathname.split(\"/\");\n if (parts.length < 4 || parts.length > 5) {\n throw new ErrorResponse(\n `Invalid key url: ${encryptionKeyId}. Key url must be in the format https://<vault>.vault.azure.net/keys/<key-name>/<key-version>`,\n );\n }\n if (parts.length === 4 || parts.length === 5) {\n return [parts[2], parts[3]];\n }\n } catch (e) {\n throw new ErrorResponse(\n `Invalid key url: ${encryptionKeyId}. Key url must be in the format https://<vault>.vault.azure.net/keys/<key-name>/<key-version>. Error: ${e.message}`,\n );\n }\n }\n\n private getOrigin(encryptionKeyId: string): string {\n try {\n const url = new URL(encryptionKeyId);\n return url.origin;\n } catch (e) {\n throw new ErrorResponse(\n `Invalid key url: ${encryptionKeyId}. Key url must be in the format https://<vault>.vault.azure.net/keys/<key-name>/<key-version>. Error: ${e.message}`,\n );\n }\n }\n}\n"]}
|
|
@@ -9,10 +9,17 @@ const time_js_1 = require("../utils/time.js");
|
|
|
9
9
|
* Class to store encryption keys in unwrapped form and provide an interface for wrapping and unwrapping the keys.
|
|
10
10
|
*/
|
|
11
11
|
class EncryptionKeyStoreProvider {
|
|
12
|
+
keyEncryptionKeyResolver;
|
|
13
|
+
cacheTimeToLive;
|
|
14
|
+
RsaOaepEncryptionAlgorithm = "RSA-OAEP";
|
|
15
|
+
// interval for clear cache to run
|
|
16
|
+
cacheRefresher;
|
|
17
|
+
// cache to store the unwrapped encryption key. Key is the path of the encryption key
|
|
18
|
+
unwrappedEncryptionKeyCache;
|
|
19
|
+
providerName;
|
|
12
20
|
constructor(keyEncryptionKeyResolver, cacheTimeToLive) {
|
|
13
21
|
this.keyEncryptionKeyResolver = keyEncryptionKeyResolver;
|
|
14
22
|
this.cacheTimeToLive = cacheTimeToLive;
|
|
15
|
-
this.RsaOaepEncryptionAlgorithm = "RSA-OAEP";
|
|
16
23
|
this.keyEncryptionKeyResolver = keyEncryptionKeyResolver;
|
|
17
24
|
this.providerName = keyEncryptionKeyResolver.encryptionKeyResolverName;
|
|
18
25
|
this.unwrappedEncryptionKeyCache = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionKeyStoreProvider.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionKeyStoreProvider.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,iDAA+C;AAC/C,8CAAuD;AAGvD;;GAEG;AACH,MAAa,0BAA0B;
|
|
1
|
+
{"version":3,"file":"EncryptionKeyStoreProvider.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionKeyStoreProvider.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,iDAA+C;AAC/C,8CAAuD;AAGvD;;GAEG;AACH,MAAa,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,IAAA,6BAAmB,EAAC,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,oBAAS,CAAC,kCAAkC,CAAC,CAAC;IACnD,CAAC;CACF;AAxED,gEAwEC","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"]}
|
|
@@ -14,6 +14,12 @@ const constants_js_1 = require("../common/constants.js");
|
|
|
14
14
|
* @hidden
|
|
15
15
|
*/
|
|
16
16
|
class EncryptionManager {
|
|
17
|
+
cacheTimeToLive;
|
|
18
|
+
encryptionKeyStoreProvider;
|
|
19
|
+
protectedDataEncryptionKeyCache;
|
|
20
|
+
keyEncryptionKeyCache;
|
|
21
|
+
encryptionSettingsCache;
|
|
22
|
+
clientEncryptionKeyPropertiesCache;
|
|
17
23
|
constructor(encryptionKeyResolver, cacheTimeToLive) {
|
|
18
24
|
this.cacheTimeToLive =
|
|
19
25
|
cacheTimeToLive !== undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionManager.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionManager.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,mGAA6F;AAC7F,+EAAyE;AACzE,mFAA6E;AAC7E,yGAAmG;AACnG,mFAA6E;AAC7E,yDAAmD;AAEnD;;;GAGG;AACH,MAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"EncryptionManager.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionManager.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,mGAA6F;AAC7F,+EAAyE;AACzE,mFAA6E;AAC7E,yGAAmG;AACnG,mFAA6E;AAC7E,yDAAmD;AAEnD;;;GAGG;AACH,MAAa,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,wBAAS,CAAC,yCAAyC,CAAC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAI,CAAC,0BAA0B,GAAG,IAAI,0DAA0B,CAC9D,qBAAqB,EACrB,YAAY,CACb,CAAC;QACF,IAAI,CAAC,+BAA+B,GAAG,IAAI,oEAA+B,CAAC,YAAY,CAAC,CAAC;QACzF,IAAI,CAAC,qBAAqB,GAAG,IAAI,gDAAqB,EAAE,CAAC;QACzD,IAAI,CAAC,uBAAuB,GAAG,IAAI,oDAAuB,EAAE,CAAC;QAC7D,IAAI,CAAC,kCAAkC,GAAG,IAAI,0EAAkC,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;AA/BD,8CA+BC","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"]}
|
|
@@ -7,6 +7,11 @@ const index_js_1 = require("../common/index.js");
|
|
|
7
7
|
const index_js_2 = require("../request/index.js");
|
|
8
8
|
const diagnostics_js_1 = require("../utils/diagnostics.js");
|
|
9
9
|
class EncryptionProcessor {
|
|
10
|
+
containerId;
|
|
11
|
+
containerRid;
|
|
12
|
+
database;
|
|
13
|
+
clientContext;
|
|
14
|
+
encryptionManager;
|
|
10
15
|
constructor(containerId, containerRid, database, clientContext, encryptionManager) {
|
|
11
16
|
this.containerId = containerId;
|
|
12
17
|
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"]}
|
|
@@ -9,6 +9,8 @@ const CosmosEncryptedNumber_js_1 = require("./CosmosEncryptedNumber.js");
|
|
|
9
9
|
* Represents a builder class for building encrypted parameters in parametrized query.
|
|
10
10
|
*/
|
|
11
11
|
class EncryptionQueryBuilder {
|
|
12
|
+
query;
|
|
13
|
+
parameters;
|
|
12
14
|
constructor(query) {
|
|
13
15
|
this.query = query;
|
|
14
16
|
this.parameters = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionQueryBuilder.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionQueryBuilder.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AASlC,yDAAmD;AACnD,yEAA8F;AAO9F;;GAEG;AACH,MAAa,sBAAsB;
|
|
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"]}
|
|
@@ -9,6 +9,12 @@ const index_js_1 = require("./AeadAes256CbcHmacSha256Algorithm/index.js");
|
|
|
9
9
|
* @hidden
|
|
10
10
|
*/
|
|
11
11
|
class EncryptionSettingForProperty {
|
|
12
|
+
// client encryption key id.
|
|
13
|
+
encryptionKeyId;
|
|
14
|
+
// encryption type - Deterministic/Randomized.
|
|
15
|
+
encryptionType;
|
|
16
|
+
// encryption algorithm - AEAD_AES_256_CBC_HMAC_SHA256
|
|
17
|
+
encryptionAlgorithm;
|
|
12
18
|
constructor(clientEncryptionIncludedPath) {
|
|
13
19
|
this.encryptionKeyId = clientEncryptionIncludedPath.clientEncryptionKeyId;
|
|
14
20
|
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,0EAA+F;AAI/F;;;GAGG;AACH,MAAa,4BAA4B;
|
|
1
|
+
{"version":3,"file":"EncryptionSettingForProperty.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionSettingForProperty.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAKlC,0EAA+F;AAI/F;;;GAGG;AACH,MAAa,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,2CAAgC,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;AApDD,oEAoDC","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"]}
|
|
@@ -9,11 +9,14 @@ exports.EncryptionSettings = void 0;
|
|
|
9
9
|
* @hidden
|
|
10
10
|
*/
|
|
11
11
|
class EncryptionSettings {
|
|
12
|
+
id; // databaseRid + '/' + containerRid
|
|
13
|
+
containerRid;
|
|
14
|
+
partitionKeyPaths;
|
|
15
|
+
pathsToEncrypt = [];
|
|
16
|
+
// key is property path
|
|
17
|
+
encryptionSettingForProperties = {};
|
|
12
18
|
// getContainerRid
|
|
13
19
|
constructor(id, containerRid, partitionKeyPaths) {
|
|
14
|
-
this.pathsToEncrypt = [];
|
|
15
|
-
// key is property path
|
|
16
|
-
this.encryptionSettingForProperties = {};
|
|
17
20
|
this.id = id;
|
|
18
21
|
this.containerRid = containerRid;
|
|
19
22
|
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,MAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"EncryptionSettings.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionSettings.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC;;;;GAIG;AACH,MAAa,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;AA7BD,gDA6BC","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"]}
|
|
@@ -9,6 +9,10 @@ const KeyEncryptionAlgorithm_js_1 = require("./enums/KeyEncryptionAlgorithm.js")
|
|
|
9
9
|
* and provides interface to wrap and unwrap the key.
|
|
10
10
|
*/
|
|
11
11
|
class KeyEncryptionKey {
|
|
12
|
+
encryptionAlgorithm;
|
|
13
|
+
name;
|
|
14
|
+
path;
|
|
15
|
+
keyStoreProvider;
|
|
12
16
|
constructor(name, path, keyStoreProvider) {
|
|
13
17
|
this.name = name;
|
|
14
18
|
this.path = path;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyEncryptionKey.js","sourceRoot":"","sources":["../../../src/encryption/KeyEncryptionKey.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,iFAA2E;AAE3E;;;GAGG;AACH,MAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"KeyEncryptionKey.js","sourceRoot":"","sources":["../../../src/encryption/KeyEncryptionKey.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,iFAA2E;AAE3E;;;GAGG;AACH,MAAa,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,kDAAsB,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;AA/BD,4CA+BC","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"]}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.StringSerializer = void 0;
|
|
6
6
|
class StringSerializer {
|
|
7
|
+
static characterEncoding = "utf-8";
|
|
7
8
|
deserialize(bytes) {
|
|
8
9
|
return bytes.toString(StringSerializer.characterEncoding);
|
|
9
10
|
}
|
|
@@ -12,5 +13,4 @@ class StringSerializer {
|
|
|
12
13
|
}
|
|
13
14
|
}
|
|
14
15
|
exports.StringSerializer = StringSerializer;
|
|
15
|
-
StringSerializer.characterEncoding = "utf-8";
|
|
16
16
|
//# 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,MAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"StringSerializer.js","sourceRoot":"","sources":["../../../../src/encryption/Serializers/StringSerializer.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAIlC,MAAa,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;;AATH,4CAUC","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"]}
|
|
@@ -82,11 +82,11 @@ function extractPartitionKey(path, obj) {
|
|
|
82
82
|
* @hidden
|
|
83
83
|
*/
|
|
84
84
|
function undefinedPartitionKey(partitionKeyDefinition) {
|
|
85
|
-
if (partitionKeyDefinition
|
|
85
|
+
if (partitionKeyDefinition?.systemKey) {
|
|
86
86
|
return [];
|
|
87
87
|
}
|
|
88
88
|
else {
|
|
89
|
-
return partitionKeyDefinition
|
|
89
|
+
return partitionKeyDefinition?.paths.map(() => index_js_2.NonePartitionKeyLiteral);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractPartitionKey.js","sourceRoot":"","sources":["../../src/extractPartitionKey.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"extractPartitionKey.js","sourceRoot":"","sources":["../../src/extractPartitionKey.ts"],"names":[],"mappings":";;AAgCA,oDA6CC;AAyBD,sDAQC;AAKD,gEAUC;AA1HD,0CAAmD;AACnD,gDAA8C;AAO9C,mDAI8B;AAC9B,gEAAuE;AAEvE,4DAAqE;AAGrE,MAAM,MAAM,GAAgB,IAAA,2BAAkB,EAAC,qBAAqB,CAAC,CAAC;AAEtE;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAClC,QAAiB,EACjB,sBAA+C;IAE/C,IACE,CAAC,sBAAsB;QACvB,CAAC,sBAAsB,CAAC,KAAK;QAC7B,sBAAsB,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EACxC,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC3D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IACE,sBAAsB,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QACzC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,6CAA0B,EAC9D,CAAC;QACD,MAAM,UAAU,GAAG,mBAAmB,CAAC,6CAA0B,EAAE,QAAQ,CAAC,CAAC;QAC7E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,sBAAsB,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBAC9C,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YAClD,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,IAAI,UAAU,KAAK,kCAAuB,IAAI,UAAU,KAAK,kCAAuB,EAAE,CAAC;YAC5F,IAAI,sBAAsB,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBAC9C,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,sBAAsB,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,aAAa,GAAiC,EAAE,CAAC;IACvD,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE;QACpD,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YAClD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,GAAY;IACrD,MAAM,SAAS,GAAa,IAAA,oBAAS,EAAC,IAAI,CAAC,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;YAC3D,GAAG,GAAI,GAA+B,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,SAAS,CAAC;YAChB,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QACnF,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,GAAG,KAAK,kCAAuB,EAAE,CAAC;QAC3C,OAAO,kCAAuB,CAAC;IACjC,CAAC;SAAM,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,kCAAuB,CAAC,EAAE,CAAC;QAChG,OAAO,kCAAuB,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CACnC,sBAA8C;IAE9C,IAAI,sBAAsB,EAAE,SAAS,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,OAAO,sBAAsB,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,kCAAuB,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,0BAA0B,CAC9C,cAAsC,EACtC,SAAoB,EACpB,YAA0B;IAE1B,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,sBAAsB,GAAG,MAAM,IAAA,2CAA0B,EAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC3F,YAAY,GAAG,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,IAAA,wCAA6B,EAAC,YAAY,CAAC,CAAC;AACrD,CAAC","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;
|
|
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"}
|
|
@@ -13,16 +13,33 @@ const checkURL_js_1 = require("./utils/checkURL.js");
|
|
|
13
13
|
* This internal class implements the logic for endpoint management for geo-replicated database accounts.
|
|
14
14
|
*/
|
|
15
15
|
class GlobalEndpointManager {
|
|
16
|
+
readDatabaseAccount;
|
|
17
|
+
/**
|
|
18
|
+
* The endpoint used to create the client instance.
|
|
19
|
+
*/
|
|
20
|
+
defaultEndpoint;
|
|
21
|
+
/**
|
|
22
|
+
* Flag to enable/disable automatic redirecting of requests based on read/write operations.
|
|
23
|
+
*/
|
|
24
|
+
enableEndpointDiscovery;
|
|
25
|
+
isRefreshing;
|
|
26
|
+
options;
|
|
27
|
+
/**
|
|
28
|
+
* List of azure regions to be used as preferred locations for read requests.
|
|
29
|
+
*/
|
|
30
|
+
preferredLocations;
|
|
31
|
+
writeableLocations = [];
|
|
32
|
+
readableLocations = [];
|
|
33
|
+
unavailableReadableLocations = [];
|
|
34
|
+
unavailableWriteableLocations = [];
|
|
35
|
+
enableMultipleWriteLocations;
|
|
36
|
+
preferredLocationsCount;
|
|
16
37
|
/**
|
|
17
38
|
* @param options - The document client instance.
|
|
18
39
|
* @internal
|
|
19
40
|
*/
|
|
20
41
|
constructor(options, readDatabaseAccount) {
|
|
21
42
|
this.readDatabaseAccount = readDatabaseAccount;
|
|
22
|
-
this.writeableLocations = [];
|
|
23
|
-
this.readableLocations = [];
|
|
24
|
-
this.unavailableReadableLocations = [];
|
|
25
|
-
this.unavailableWriteableLocations = [];
|
|
26
43
|
this.options = options;
|
|
27
44
|
this.defaultEndpoint = options.endpoint;
|
|
28
45
|
this.enableEndpointDiscovery = options.connectionPolicy.enableEndpointDiscovery;
|
|
@@ -154,18 +171,18 @@ class GlobalEndpointManager {
|
|
|
154
171
|
}
|
|
155
172
|
}
|
|
156
173
|
refreshEndpoints(databaseAccount) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const existingLocation = this.readableLocations.find((loc) => loc.name === location.name);
|
|
165
|
-
if (!existingLocation) {
|
|
166
|
-
this.readableLocations.push(location);
|
|
174
|
+
const oldWritableLocations = this.writeableLocations;
|
|
175
|
+
const oldReadableLocations = this.readableLocations;
|
|
176
|
+
function merge(loc, oldList) {
|
|
177
|
+
const prev = oldList.find((o) => o.name === loc.name);
|
|
178
|
+
if (prev) {
|
|
179
|
+
loc.unavailable = prev.unavailable;
|
|
180
|
+
loc.lastUnavailabilityTimestampInMs = prev.lastUnavailabilityTimestampInMs;
|
|
167
181
|
}
|
|
182
|
+
return loc;
|
|
168
183
|
}
|
|
184
|
+
this.writeableLocations = databaseAccount.writableLocations.map((loc) => merge({ ...loc }, oldWritableLocations));
|
|
185
|
+
this.readableLocations = databaseAccount.readableLocations.map((loc) => merge({ ...loc }, oldReadableLocations));
|
|
169
186
|
}
|
|
170
187
|
refreshStaleUnavailableLocations() {
|
|
171
188
|
const now = Date.now();
|
|
@@ -182,21 +199,17 @@ class GlobalEndpointManager {
|
|
|
182
199
|
*/
|
|
183
200
|
updateLocation(now, unavailableLocations, allLocations) {
|
|
184
201
|
for (const location of unavailableLocations) {
|
|
185
|
-
const
|
|
186
|
-
if (
|
|
187
|
-
now -
|
|
202
|
+
const unavailableLocation = allLocations.find((loc) => loc.name === location.name);
|
|
203
|
+
if (unavailableLocation &&
|
|
204
|
+
now - unavailableLocation.lastUnavailabilityTimestampInMs >
|
|
188
205
|
constants_js_1.Constants.LocationUnavailableExpirationTimeInMs) {
|
|
189
|
-
|
|
206
|
+
unavailableLocation.unavailable = false;
|
|
190
207
|
}
|
|
191
208
|
}
|
|
192
209
|
}
|
|
193
210
|
cleanUnavailableLocationList(now, unavailableLocations) {
|
|
194
211
|
return unavailableLocations.filter((loc) => {
|
|
195
|
-
|
|
196
|
-
now - loc.lastUnavailabilityTimestampInMs >= constants_js_1.Constants.LocationUnavailableExpirationTimeInMs) {
|
|
197
|
-
return false;
|
|
198
|
-
}
|
|
199
|
-
return true;
|
|
212
|
+
return (now - loc.lastUnavailabilityTimestampInMs < constants_js_1.Constants.LocationUnavailableExpirationTimeInMs);
|
|
200
213
|
});
|
|
201
214
|
}
|
|
202
215
|
/**
|