@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CosmosClient.js","sourceRoot":"","sources":["../../src/CosmosClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Database, Databases } from \"./client/Database/index.js\";\nimport { Offer, Offers } from \"./client/Offer/index.js\";\nimport { ClientContext } from \"./ClientContext.js\";\nimport { parseConnectionString } from \"./common/index.js\";\nimport { Constants } from \"./common/constants.js\";\nimport { getUserAgent } from \"./common/platform.js\";\nimport type { CosmosClientOptions } from \"./CosmosClientOptions.js\";\nimport type { ClientConfigDiagnostic } from \"./CosmosDiagnostics.js\";\nimport {\n determineDiagnosticLevel,\n getDiagnosticLevelFromEnvironment,\n} from \"./diagnostics/index.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport { DiagnosticNodeType } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport type { DatabaseAccount } from \"./documents/index.js\";\nimport { defaultConnectionPolicy } from \"./documents/index.js\";\nimport { EncryptionManager } from \"./encryption/EncryptionManager.js\";\nimport { GlobalEndpointManager } from \"./globalEndpointManager.js\";\nimport type { RequestOptions } from \"./request/index.js\";\nimport { ResourceResponse } from \"./request/index.js\";\nimport { checkURL } from \"./utils/checkURL.js\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"./utils/diagnostics.js\";\nimport { GlobalPartitionEndpointManager } from \"./globalPartitionEndpointManager.js\";\n\n/**\n * Provides a client-side logical representation of the Azure Cosmos DB database account.\n * This client is used to configure and execute requests in the Azure Cosmos DB database service.\n * @example Instantiate a client and create a new database\n * ```ts snippet:CosmosClientCreate\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n * ```\n * @example Instantiate a client with custom Connection Policy\n * ```ts snippet:CosmosClientWithConnectionPolicy\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({\n * endpoint,\n * key,\n * connectionPolicy: {\n * requestTimeout: 10000,\n * },\n * });\n * ```\n */\nexport class CosmosClient {\n /**\n * Used for creating new databases, or querying/reading all databases.\n *\n * Use `.database(id)` to read, replace, or delete a specific, existing database by id.\n *\n * @example Create a new database\n * ```ts snippet:CosmosClientDatabases\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n * const { resource: databaseDefinition, database } = await client.databases.create({\n * id: \"<name here>\",\n * });\n * ```\n */\n public readonly databases: Databases;\n /**\n * Used for querying & reading all offers.\n *\n * Use `.offer(id)` to read, or replace existing offers.\n */\n public readonly offers: Offers;\n private clientContext: ClientContext;\n private endpointRefresher: NodeJS.Timeout;\n /**\n * @internal\n */\n private encryptionManager: EncryptionManager;\n /** @internal */\n private globalPartitionEndpointManager: GlobalPartitionEndpointManager;\n /**\n * Creates a new {@link CosmosClient} object from a connection string. Your database connection string can be found in the Azure Portal\n */\n constructor(connectionString: string);\n /**\n * Creates a new {@link CosmosClient} object. See {@link CosmosClientOptions} for more details on what options you can use.\n * @param options - bag of options; require at least endpoint and auth to be configured\n */\n constructor(options: CosmosClientOptions);\n constructor(optionsOrConnectionString: string | CosmosClientOptions) {\n if (typeof optionsOrConnectionString === \"string\") {\n optionsOrConnectionString = parseConnectionString(optionsOrConnectionString);\n } else if (optionsOrConnectionString.connectionString) {\n const { endpoint, key } = parseConnectionString(optionsOrConnectionString.connectionString);\n optionsOrConnectionString.endpoint = endpoint;\n optionsOrConnectionString.key = key;\n }\n\n const endpoint = checkURL(optionsOrConnectionString.endpoint);\n if (!endpoint) {\n throw new Error(\"Invalid endpoint specified\");\n }\n\n if (optionsOrConnectionString.clientEncryptionOptions) {\n if (!optionsOrConnectionString.clientEncryptionOptions.keyEncryptionKeyResolver) {\n throw new Error(\n \"KeyEncryptionKeyResolver needs to be provided to enable client-side encryption.\",\n );\n }\n if (\n optionsOrConnectionString.clientEncryptionOptions.encryptionKeyTimeToLiveInSeconds &&\n optionsOrConnectionString.clientEncryptionOptions.encryptionKeyTimeToLiveInSeconds < 60\n ) {\n throw new Error(\"EncryptionKeyTimeToLiveInSeconds needs to be >= 60 seconds.\");\n }\n this.encryptionManager = new EncryptionManager(\n optionsOrConnectionString.clientEncryptionOptions.keyEncryptionKeyResolver,\n optionsOrConnectionString.clientEncryptionOptions.encryptionKeyTimeToLiveInSeconds,\n );\n }\n\n const clientConfig: ClientConfigDiagnostic =\n this.initializeClientConfigDiagnostic(optionsOrConnectionString);\n\n optionsOrConnectionString.connectionPolicy = Object.assign(\n {},\n defaultConnectionPolicy,\n optionsOrConnectionString.connectionPolicy,\n );\n\n optionsOrConnectionString.defaultHeaders = optionsOrConnectionString.defaultHeaders || {};\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.CacheControl] = \"no-cache\";\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.Version] =\n Constants.CurrentVersion;\n if (optionsOrConnectionString.consistencyLevel !== undefined) {\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.ConsistencyLevel] =\n optionsOrConnectionString.consistencyLevel;\n }\n\n if (optionsOrConnectionString.throughputBucket !== undefined) {\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.ThroughputBucket] =\n optionsOrConnectionString.throughputBucket;\n }\n\n const userAgent = getUserAgent(optionsOrConnectionString);\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.UserAgent] = userAgent;\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.CustomUserAgent] = userAgent;\n\n const globalEndpointManager = new GlobalEndpointManager(\n optionsOrConnectionString,\n async (diagnosticNode: DiagnosticNodeInternal, opts: RequestOptions) =>\n this.getDatabaseAccountInternal(diagnosticNode, opts),\n );\n\n if (\n optionsOrConnectionString.connectionPolicy.enablePartitionLevelFailover ||\n optionsOrConnectionString.connectionPolicy.enablePartitionLevelCircuitBreaker\n ) {\n if (!optionsOrConnectionString.connectionPolicy.enableEndpointDiscovery) {\n throw new Error(\n \"enableEndpointDiscovery must be set to true to use partition level failover or circuit breaker.\",\n );\n }\n this.globalPartitionEndpointManager = new GlobalPartitionEndpointManager(\n optionsOrConnectionString,\n globalEndpointManager,\n );\n }\n\n this.clientContext = new ClientContext(\n optionsOrConnectionString,\n globalEndpointManager,\n clientConfig,\n determineDiagnosticLevel(\n optionsOrConnectionString.diagnosticLevel,\n getDiagnosticLevelFromEnvironment(),\n ),\n this.globalPartitionEndpointManager,\n );\n if (\n optionsOrConnectionString.connectionPolicy?.enableEndpointDiscovery &&\n optionsOrConnectionString.connectionPolicy?.enableBackgroundEndpointRefreshing\n ) {\n this.backgroundRefreshEndpointList(\n globalEndpointManager,\n optionsOrConnectionString.connectionPolicy.endpointRefreshRateInMs ||\n defaultConnectionPolicy.endpointRefreshRateInMs,\n );\n }\n\n this.databases = new Databases(this, this.clientContext, this.encryptionManager);\n this.offers = new Offers(this, this.clientContext);\n }\n\n private initializeClientConfigDiagnostic(\n optionsOrConnectionString: CosmosClientOptions,\n ): ClientConfigDiagnostic {\n return {\n endpoint: optionsOrConnectionString.endpoint,\n resourceTokensConfigured: optionsOrConnectionString.resourceTokens !== undefined,\n tokenProviderConfigured: optionsOrConnectionString.tokenProvider !== undefined,\n aadCredentialsConfigured: optionsOrConnectionString.aadCredentials !== undefined,\n connectionPolicyConfigured: optionsOrConnectionString.connectionPolicy !== undefined,\n consistencyLevel: optionsOrConnectionString.consistencyLevel,\n defaultHeaders: optionsOrConnectionString.defaultHeaders,\n agentConfigured: optionsOrConnectionString.agent !== undefined,\n userAgentSuffix: optionsOrConnectionString.userAgentSuffix,\n diagnosticLevel: optionsOrConnectionString.diagnosticLevel,\n pluginsConfigured: optionsOrConnectionString.plugins !== undefined,\n sDKVersion: Constants.SDKVersion,\n };\n }\n\n /**\n * Get information about the current {@link DatabaseAccount} (including which regions are supported, etc.)\n */\n public async getDatabaseAccount(\n options?: RequestOptions,\n ): Promise<ResourceResponse<DatabaseAccount>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.getDatabaseAccountInternal(diagnosticNode, options);\n }, this.clientContext);\n }\n\n /**\n * @hidden\n */\n public async getDatabaseAccountInternal(\n diagnosticNode: DiagnosticNodeInternal,\n options?: RequestOptions,\n ): Promise<ResourceResponse<DatabaseAccount>> {\n const response = await this.clientContext.getDatabaseAccount(diagnosticNode, options);\n return new ResourceResponse<DatabaseAccount>(\n response.result,\n response.headers,\n response.code,\n getEmptyCosmosDiagnostics(),\n response.substatus,\n );\n }\n\n /**\n * Gets the currently used write endpoint url. Useful for troubleshooting purposes.\n *\n * The url may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public async getWriteEndpoint(): Promise<string> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.clientContext.getWriteEndpoint(diagnosticNode);\n }, this.clientContext);\n }\n\n /**\n * Gets the currently used read endpoint. Useful for troubleshooting purposes.\n *\n * The url may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public async getReadEndpoint(): Promise<string> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.clientContext.getReadEndpoint(diagnosticNode);\n }, this.clientContext);\n }\n\n /**\n * Gets the known write endpoints. Useful for troubleshooting purposes.\n *\n * The urls may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public getWriteEndpoints(): Promise<readonly string[]> {\n return this.clientContext.getWriteEndpoints();\n }\n\n /**\n * Gets the currently used read endpoint. Useful for troubleshooting purposes.\n *\n * The url may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public getReadEndpoints(): Promise<readonly string[]> {\n return this.clientContext.getReadEndpoints();\n }\n\n /**\n * Used for reading, updating, or deleting a existing database by id or accessing containers belonging to that database.\n *\n * This does not make a network call. Use `.read` to get info about the database after getting the {@link Database} object.\n *\n * @param id - The id of the database.\n * @example Create a new container off of an existing database\n * ```ts snippet:CosmosClientDatabaseCreateContainer\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n * const container = client.database(\"<database id>\").containers.create({\n * id: \"<name here>\",\n * });\n * ```\n *\n * @example Delete an existing database\n * ```ts snippet:CosmosClientDatabaseDelete\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n * await client.database(\"<id here>\").delete();\n * ```\n */\n public database(id: string): Database {\n return new Database(this, id, this.clientContext, this.encryptionManager);\n }\n\n /**\n * Used for reading, or updating a existing offer by id.\n * @param id - The id of the offer.\n */\n public offer(id: string): Offer {\n return new Offer(this, id, this.clientContext);\n }\n\n /**\n * Clears background endpoint refresher. Use client.dispose() when destroying the CosmosClient within another process.\n */\n public dispose(): void {\n clearTimeout(this.endpointRefresher);\n if (this.clientContext.enableEncryption) {\n clearTimeout(this.encryptionManager.encryptionKeyStoreProvider.cacheRefresher);\n clearTimeout(this.encryptionManager.protectedDataEncryptionKeyCache.cacheRefresher);\n }\n if (this.globalPartitionEndpointManager) {\n this.globalPartitionEndpointManager.dispose();\n }\n }\n\n private async backgroundRefreshEndpointList(\n globalEndpointManager: GlobalEndpointManager,\n refreshRate: number,\n ) {\n this.endpointRefresher = setInterval(() => {\n try {\n return withDiagnostics(\n async (diagnosticNode: DiagnosticNodeInternal) => {\n return globalEndpointManager.refreshEndpointList(diagnosticNode);\n },\n this.clientContext,\n DiagnosticNodeType.BACKGROUND_REFRESH_THREAD,\n );\n } catch (e: any) {\n console.warn(\"Failed to refresh endpoints\", e);\n }\n }, refreshRate);\n if (this.endpointRefresher.unref && typeof this.endpointRefresher.unref === \"function\") {\n this.endpointRefresher.unref();\n }\n }\n\n /**\n * Update the host framework. If provided host framework will be used to generate the defualt SDK user agent.\n * @param hostFramework - A custom string.\n * @internal\n */\n public async updateHostFramework(hostFramework: string): Promise<void> {\n this.clientContext.refreshUserAgent(hostFramework);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CosmosClient.js","sourceRoot":"","sources":["../../src/CosmosClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Database, Databases } from \"./client/Database/index.js\";\nimport { Offer, Offers } from \"./client/Offer/index.js\";\nimport { ClientContext } from \"./ClientContext.js\";\nimport { parseConnectionString } from \"./common/index.js\";\nimport { Constants } from \"./common/constants.js\";\nimport { getUserAgent } from \"./common/platform.js\";\nimport type { CosmosClientOptions } from \"./CosmosClientOptions.js\";\nimport type { ClientConfigDiagnostic } from \"./CosmosDiagnostics.js\";\nimport {\n determineDiagnosticLevel,\n getDiagnosticLevelFromEnvironment,\n} from \"./diagnostics/index.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport { DiagnosticNodeType } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport type { DatabaseAccount } from \"./documents/index.js\";\nimport { defaultConnectionPolicy } from \"./documents/index.js\";\nimport { EncryptionManager } from \"./encryption/EncryptionManager.js\";\nimport { GlobalEndpointManager } from \"./globalEndpointManager.js\";\nimport type { RequestOptions } from \"./request/index.js\";\nimport { ResourceResponse } from \"./request/index.js\";\nimport { checkURL } from \"./utils/checkURL.js\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"./utils/diagnostics.js\";\nimport { GlobalPartitionEndpointManager } from \"./globalPartitionEndpointManager.js\";\n\n/**\n * Provides a client-side logical representation of the Azure Cosmos DB database account.\n * This client is used to configure and execute requests in the Azure Cosmos DB database service.\n * @example Instantiate a client and create a new database\n * ```ts snippet:CosmosClientCreate\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n * ```\n * @example Instantiate a client with custom Connection Policy\n * ```ts snippet:CosmosClientWithConnectionPolicy\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({\n * endpoint,\n * key,\n * connectionPolicy: {\n * requestTimeout: 10000,\n * },\n * });\n * ```\n */\nexport class CosmosClient {\n /**\n * Used for creating new databases, or querying/reading all databases.\n *\n * Use `.database(id)` to read, replace, or delete a specific, existing database by id.\n *\n * @example Create a new database\n * ```ts snippet:CosmosClientDatabases\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n * const { resource: databaseDefinition, database } = await client.databases.create({\n * id: \"<name here>\",\n * });\n * ```\n */\n public readonly databases: Databases;\n /**\n * Used for querying & reading all offers.\n *\n * Use `.offer(id)` to read, or replace existing offers.\n */\n public readonly offers: Offers;\n private clientContext: ClientContext;\n private endpointRefresher: NodeJS.Timeout;\n /**\n * @internal\n */\n private encryptionManager: EncryptionManager;\n /** @internal */\n private globalPartitionEndpointManager: GlobalPartitionEndpointManager;\n /**\n * Creates a new {@link CosmosClient} object from a connection string. Your database connection string can be found in the Azure Portal\n */\n constructor(connectionString: string);\n /**\n * Creates a new {@link CosmosClient} object. See {@link CosmosClientOptions} for more details on what options you can use.\n * @param options - bag of options; require at least endpoint and auth to be configured\n */\n constructor(options: CosmosClientOptions);\n constructor(optionsOrConnectionString: string | CosmosClientOptions) {\n if (typeof optionsOrConnectionString === \"string\") {\n optionsOrConnectionString = parseConnectionString(optionsOrConnectionString);\n } else if (optionsOrConnectionString.connectionString) {\n const { endpoint, key } = parseConnectionString(optionsOrConnectionString.connectionString);\n optionsOrConnectionString.endpoint = endpoint;\n optionsOrConnectionString.key = key;\n }\n\n const endpoint = checkURL(optionsOrConnectionString.endpoint);\n if (!endpoint) {\n throw new Error(\"Invalid endpoint specified\");\n }\n\n if (optionsOrConnectionString.clientEncryptionOptions) {\n if (!optionsOrConnectionString.clientEncryptionOptions.keyEncryptionKeyResolver) {\n throw new Error(\n \"KeyEncryptionKeyResolver needs to be provided to enable client-side encryption.\",\n );\n }\n if (\n optionsOrConnectionString.clientEncryptionOptions.encryptionKeyTimeToLiveInSeconds &&\n optionsOrConnectionString.clientEncryptionOptions.encryptionKeyTimeToLiveInSeconds < 60\n ) {\n throw new Error(\"EncryptionKeyTimeToLiveInSeconds needs to be >= 60 seconds.\");\n }\n this.encryptionManager = new EncryptionManager(\n optionsOrConnectionString.clientEncryptionOptions.keyEncryptionKeyResolver,\n optionsOrConnectionString.clientEncryptionOptions.encryptionKeyTimeToLiveInSeconds,\n );\n }\n\n const clientConfig: ClientConfigDiagnostic =\n this.initializeClientConfigDiagnostic(optionsOrConnectionString);\n\n optionsOrConnectionString.connectionPolicy = Object.assign(\n {},\n defaultConnectionPolicy,\n optionsOrConnectionString.connectionPolicy,\n );\n\n optionsOrConnectionString.defaultHeaders = optionsOrConnectionString.defaultHeaders || {};\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.CacheControl] = \"no-cache\";\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.Version] =\n Constants.CurrentVersion;\n if (optionsOrConnectionString.consistencyLevel !== undefined) {\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.ConsistencyLevel] =\n optionsOrConnectionString.consistencyLevel;\n }\n\n if (optionsOrConnectionString.throughputBucket !== undefined) {\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.ThroughputBucket] =\n optionsOrConnectionString.throughputBucket;\n }\n\n const userAgent = getUserAgent(optionsOrConnectionString);\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.UserAgent] = userAgent;\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.CustomUserAgent] = userAgent;\n\n const globalEndpointManager = new GlobalEndpointManager(\n optionsOrConnectionString,\n async (diagnosticNode: DiagnosticNodeInternal, opts: RequestOptions) =>\n this.getDatabaseAccountInternal(diagnosticNode, opts),\n );\n\n if (\n optionsOrConnectionString.connectionPolicy.enablePartitionLevelFailover ||\n optionsOrConnectionString.connectionPolicy.enablePartitionLevelCircuitBreaker\n ) {\n if (!optionsOrConnectionString.connectionPolicy.enableEndpointDiscovery) {\n throw new Error(\n \"enableEndpointDiscovery must be set to true to use partition level failover or circuit breaker.\",\n );\n }\n this.globalPartitionEndpointManager = new GlobalPartitionEndpointManager(\n optionsOrConnectionString,\n globalEndpointManager,\n );\n }\n\n this.clientContext = new ClientContext(\n optionsOrConnectionString,\n globalEndpointManager,\n clientConfig,\n determineDiagnosticLevel(\n optionsOrConnectionString.diagnosticLevel,\n getDiagnosticLevelFromEnvironment(),\n ),\n this.globalPartitionEndpointManager,\n );\n if (\n optionsOrConnectionString.connectionPolicy?.enableEndpointDiscovery &&\n optionsOrConnectionString.connectionPolicy?.enableBackgroundEndpointRefreshing\n ) {\n this.backgroundRefreshEndpointList(\n globalEndpointManager,\n optionsOrConnectionString.connectionPolicy.endpointRefreshRateInMs ||\n defaultConnectionPolicy.endpointRefreshRateInMs,\n );\n }\n\n this.databases = new Databases(this, this.clientContext, this.encryptionManager);\n this.offers = new Offers(this, this.clientContext);\n }\n\n private initializeClientConfigDiagnostic(\n optionsOrConnectionString: CosmosClientOptions,\n ): ClientConfigDiagnostic {\n return {\n endpoint: optionsOrConnectionString.endpoint,\n resourceTokensConfigured: optionsOrConnectionString.resourceTokens !== undefined,\n tokenProviderConfigured: optionsOrConnectionString.tokenProvider !== undefined,\n aadCredentialsConfigured: optionsOrConnectionString.aadCredentials !== undefined,\n connectionPolicyConfigured: optionsOrConnectionString.connectionPolicy !== undefined,\n consistencyLevel: optionsOrConnectionString.consistencyLevel,\n defaultHeaders: optionsOrConnectionString.defaultHeaders,\n agentConfigured: optionsOrConnectionString.agent !== undefined,\n userAgentSuffix: optionsOrConnectionString.userAgentSuffix,\n diagnosticLevel: optionsOrConnectionString.diagnosticLevel,\n pluginsConfigured: optionsOrConnectionString.plugins !== undefined,\n sDKVersion: Constants.SDKVersion,\n };\n }\n\n /**\n * Get information about the current {@link DatabaseAccount} (including which regions are supported, etc.)\n */\n public async getDatabaseAccount(\n options?: RequestOptions,\n ): Promise<ResourceResponse<DatabaseAccount>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.getDatabaseAccountInternal(diagnosticNode, options);\n }, this.clientContext);\n }\n\n /**\n * @hidden\n */\n public async getDatabaseAccountInternal(\n diagnosticNode: DiagnosticNodeInternal,\n options?: RequestOptions,\n ): Promise<ResourceResponse<DatabaseAccount>> {\n const response = await this.clientContext.getDatabaseAccount(diagnosticNode, options);\n return new ResourceResponse<DatabaseAccount>(\n response.result,\n response.headers,\n response.code,\n getEmptyCosmosDiagnostics(),\n response.substatus,\n );\n }\n\n /**\n * Gets the currently used write endpoint url. Useful for troubleshooting purposes.\n *\n * The url may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public async getWriteEndpoint(): Promise<string> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.clientContext.getWriteEndpoint(diagnosticNode);\n }, this.clientContext);\n }\n\n /**\n * Gets the currently used read endpoint. Useful for troubleshooting purposes.\n *\n * The url may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public async getReadEndpoint(): Promise<string> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.clientContext.getReadEndpoint(diagnosticNode);\n }, this.clientContext);\n }\n\n /**\n * Gets the known write endpoints. Useful for troubleshooting purposes.\n *\n * The urls may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public getWriteEndpoints(): Promise<readonly string[]> {\n return this.clientContext.getWriteEndpoints();\n }\n\n /**\n * Gets the currently used read endpoint. Useful for troubleshooting purposes.\n *\n * The url may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public getReadEndpoints(): Promise<readonly string[]> {\n return this.clientContext.getReadEndpoints();\n }\n\n /**\n * Used for reading, updating, or deleting a existing database by id or accessing containers belonging to that database.\n *\n * This does not make a network call. Use `.read` to get info about the database after getting the {@link Database} object.\n *\n * @param id - The id of the database.\n * @example Create a new container off of an existing database\n * ```ts snippet:CosmosClientDatabaseCreateContainer\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n * const container = client.database(\"<database id>\").containers.create({\n * id: \"<name here>\",\n * });\n * ```\n *\n * @example Delete an existing database\n * ```ts snippet:CosmosClientDatabaseDelete\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n * await client.database(\"<id here>\").delete();\n * ```\n */\n public database(id: string): Database {\n return new Database(this, id, this.clientContext, this.encryptionManager);\n }\n\n /**\n * Used for reading, or updating a existing offer by id.\n * @param id - The id of the offer.\n */\n public offer(id: string): Offer {\n return new Offer(this, id, this.clientContext);\n }\n\n /**\n * Clears background endpoint refresher. Use client.dispose() when destroying the CosmosClient within another process.\n */\n public dispose(): void {\n clearTimeout(this.endpointRefresher);\n if (this.clientContext.enableEncryption) {\n clearTimeout(this.encryptionManager.encryptionKeyStoreProvider.cacheRefresher);\n clearTimeout(this.encryptionManager.protectedDataEncryptionKeyCache.cacheRefresher);\n }\n if (this.globalPartitionEndpointManager) {\n this.globalPartitionEndpointManager.dispose();\n }\n }\n\n private async backgroundRefreshEndpointList(\n globalEndpointManager: GlobalEndpointManager,\n refreshRate: number,\n ) {\n this.endpointRefresher = setInterval(() => {\n try {\n return withDiagnostics(\n async (diagnosticNode: DiagnosticNodeInternal) => {\n return globalEndpointManager.refreshEndpointList(diagnosticNode);\n },\n this.clientContext,\n DiagnosticNodeType.BACKGROUND_REFRESH_THREAD,\n );\n } catch (e: any) {\n console.warn(\"Failed to refresh endpoints\", e);\n }\n }, refreshRate);\n if (this.endpointRefresher.unref && typeof this.endpointRefresher.unref === \"function\") {\n this.endpointRefresher.unref();\n }\n }\n\n /**\n * Update the host framework. If provided host framework will be used to generate the defualt SDK user agent.\n * @param hostFramework - A custom string.\n * @internal\n */\n public async updateHostFramework(hostFramework: string): Promise<void> {\n this.clientContext.refreshUserAgent(hostFramework);\n }\n}\n"]}
|
|
@@ -26,6 +26,9 @@ exports.getRootNode = getRootNode;
|
|
|
26
26
|
* 3. clientConfig - Captures information related to how client was configured during initialization.
|
|
27
27
|
*/
|
|
28
28
|
class CosmosDiagnostics {
|
|
29
|
+
clientSideRequestStatistics;
|
|
30
|
+
diagnosticNode;
|
|
31
|
+
clientConfig;
|
|
29
32
|
/**
|
|
30
33
|
* @internal
|
|
31
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CosmosDiagnostics.js","sourceRoot":"","sources":["../../src/CosmosDiagnostics.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAuOlC,kCAGC;AAnOD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"CosmosDiagnostics.js","sourceRoot":"","sources":["../../src/CosmosDiagnostics.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAuOlC,kCAGC;AAnOD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,iBAAiB;IACZ,2BAA2B,CAA8B;IACzD,cAAc,CAAiB;IAC/B,YAAY,CAA0B;IACtD;;OAEG;IACH,YACE,2BAAwD,EACxD,cAA+B,EAC/B,YAAqC;QAErC,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QAC/D,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAhBD,8CAgBC;AAsID;;GAEG;AACH,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,6EAAuD,CAAA;IACvD,wEAAkD,CAAA;IAClD,4DAAsC,CAAA;IACtC,yDAAmC,CAAA;IACnC,2DAAqC,CAAA;AACvC,CAAC,EANW,kBAAkB,kCAAlB,kBAAkB,QAM7B;AA4CD,SAAgB,WAAW,CAAC,IAA4B;IACtD,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;QAC5C,OAAO,IAAI,CAAC;AACnB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { OperationType, ResourceType } from \"./common/index.js\";\nimport type { CosmosDbDiagnosticLevel } from \"./diagnostics/CosmosDbDiagnosticLevel.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport type { ConsistencyLevel } from \"./documents/index.js\";\n\n/**\n * * This is a Cosmos Diagnostic type that holds collected diagnostic information during a client operations. ie. Item.read(), Container.create().\n * It has three members -\n * 1. `clientSideRequestStatistics` member contains aggregate diagnostic information, including -\n * - metadata lookups. Here all the server requests, apart from the final intended resource are considered as metadata calls.\n * i.e. for item.read(id), if the client makes server call to discover endpoints it would be considered as metadata call.\n * - retries\n * - endpoints contacted.\n * - request, response payload stats.\n * - gatewayStatistics - Information corresponding to main operation. For example during Item.read(), the client might perform many operations\n * i.e. metadata lookup etc, but gatewayStatistics represents the diagnostics information for actual read operation.\n *\n * 2. diagnosticNode - Is a tree like structure which captures detailed diagnostic information. By default it is disabled, and is intended to be\n * used only for debugging on non production environments. The kind of details captured in diagnosticNode is controlled by `CosmosDbDiagnosticLevel`.\n * - CosmosDbDiagnosticLevel.info - Is default value. In this level only clientSideRequestStatistics are captured. Is is meant for production environments.\n * - CosmosDbDiagnosticLevel.debug - Captures diagnosticNode and clientConfig. No request and response payloads are captured. Is not meant to be used\n * in production environment.\n * - CosmosDbDiagnosticLevel.debug-unsafe - In addition to data captured in CosmosDbDiagnosticLevel.debug, also captures request and response payloads.\n * Is not meant to be used in production environment.\n * 3. clientConfig - Captures information related to how client was configured during initialization.\n */\nexport class CosmosDiagnostics {\n public readonly clientSideRequestStatistics: ClientSideRequestStatistics;\n public readonly diagnosticNode: DiagnosticNode;\n public readonly clientConfig?: ClientConfigDiagnostic;\n /**\n * @internal\n */\n constructor(\n clientSideRequestStatistics: ClientSideRequestStatistics,\n diagnosticNode?: DiagnosticNode,\n clientConfig?: ClientConfigDiagnostic,\n ) {\n this.clientSideRequestStatistics = clientSideRequestStatistics;\n this.diagnosticNode = diagnosticNode;\n this.clientConfig = clientConfig;\n }\n}\n\n/**\n * This type holds information related to initialization of `CosmosClient`\n */\nexport type ClientConfigDiagnostic = {\n /**\n * End point configured during client initialization.\n */\n endpoint: string;\n /**\n * True if `resourceTokens` was supplied during client initialization.\n */\n resourceTokensConfigured: boolean;\n /**\n * True if `tokenProvider` was supplied during client initialization.\n */\n tokenProviderConfigured: boolean;\n /**\n * True if `aadCredentials` was supplied during client initialization.\n */\n aadCredentialsConfigured: boolean;\n /**\n * True if `connectionPolicy` was supplied during client initialization.\n */\n connectionPolicyConfigured: boolean;\n /**\n * `consistencyLevel` supplied during client initialization.\n */\n consistencyLevel?: keyof typeof ConsistencyLevel;\n /**\n * `defaultHeaders` supplied during client initialization.\n */\n defaultHeaders?: { [key: string]: any };\n /**\n * True if `connectionPolicy` were supplied during client initialization.\n */\n agentConfigured: boolean;\n /**\n * `userAgentSuffix` supplied during client initialization.\n */\n userAgentSuffix: string;\n /**\n * `diagnosticLevel` supplied during client initialization.\n */\n diagnosticLevel?: CosmosDbDiagnosticLevel;\n /**\n * True if `plugins` were supplied during client initialization.\n */\n pluginsConfigured: boolean;\n /**\n * SDK version\n */\n sDKVersion: string;\n};\n\n/**\n * This type contains diagnostic information regarding all metadata request to server during an CosmosDB client operation.\n */\nexport type MetadataLookUpDiagnostics = {\n metadataLookups: MetadataLookUpDiagnostic[];\n};\n\n/**\n * This type captures diagnostic information regarding retries attempt during an CosmosDB client operation.\n */\nexport type RetryDiagnostics = {\n failedAttempts: FailedRequestAttemptDiagnostic[];\n};\n\nexport type GatewayStatistics = {\n /**\n * This is the activityId for request, made to server for fetching the requested resource. (As opposed to other potential meta data requests)\n */\n activityId?: string;\n /*\n * The correlated activity ID is added in the header of every request made to the backend for a query. This aids in troubleshooting by linking all\n * requests associated with a particular query.\n */\n correlatedActivityId?: string;\n startTimeUTCInMs: number;\n durationInMs: number;\n operationType?: OperationType;\n resourceType?: ResourceType;\n statusCode?: number;\n subStatusCode?: number;\n requestCharge?: number;\n requestPayloadLengthInBytes: number;\n responsePayloadLengthInBytes: number;\n};\n\n/**\n * This type contains diagnostic information regarding a single metadata request to server.\n */\nexport interface MetadataLookUpDiagnostic {\n activityId: string;\n startTimeUTCInMs: number;\n durationInMs: number;\n operationType?: OperationType;\n resourceType?: ResourceType;\n metaDataType: MetadataLookUpType;\n requestPayloadLengthInBytes: number;\n responsePayloadLengthInBytes: number;\n}\n\n/**\n * This type captures diagnostic information regarding a failed request to server api.\n */\nexport interface FailedRequestAttemptDiagnostic {\n attemptNumber: number;\n activityId: string;\n startTimeUTCInMs: number;\n durationInMs: number;\n operationType?: OperationType;\n resourceType?: ResourceType;\n statusCode: number;\n substatusCode?: number;\n requestPayloadLengthInBytes: number;\n responsePayloadLengthInBytes: number;\n}\n\n/**\n * @hidden\n * Represents the diagnostics information for encryption operations.\n */\nexport interface EncryptionDiagnostics {\n /** shows start time, duration and properties count for encryption*/\n encryptContent: Record<string, any>;\n /** shows start time, duration and properties count for decryption*/\n decryptContent: Record<string, any>;\n /** represents total processing duration for encryption/decryption*/\n processingDurationInMs: number;\n}\n\n/**\n * This is enum for Type of Metadata lookups possible.\n */\nexport enum MetadataLookUpType {\n PartitionKeyRangeLookUp = \"PARTITION_KEY_RANGE_LOOK_UP\",\n DatabaseAccountLookUp = \"DATABASE_ACCOUNT_LOOK_UP\",\n QueryPlanLookUp = \"QUERY_PLAN_LOOK_UP\",\n DatabaseLookUp = \"DATABASE_LOOK_UP\",\n ContainerLookUp = \"CONTAINER_LOOK_UP\",\n}\n\n/**\n * This is a collection type for all client side diagnostic information.\n */\nexport type ClientSideRequestStatistics = {\n /**\n * This is the UTC timestamp for start of client operation.\n */\n requestStartTimeUTCInMs: number;\n /**\n * This is the duration in milli seconds taken by client operation.\n */\n requestDurationInMs: number;\n /**\n * This is the list of Location Endpoints contacted during the client operation.\n */\n locationEndpointsContacted: string[];\n /**\n * This field captures diagnostic information for retries happened during client operation.\n */\n retryDiagnostics: RetryDiagnostics;\n /**\n * This field captures diagnostic information for meta data lookups happened during client operation.\n */\n metadataDiagnostics: MetadataLookUpDiagnostics;\n /**\n * These are the statistics for main point look operation.\n */\n gatewayStatistics: GatewayStatistics[];\n /**\n * This is the cumulated Request Payload Length n bytes, this includes metadata calls along with the main operation.\n */\n totalRequestPayloadLengthInBytes: number;\n /**\n * This is the cumulated Response Payload Length n bytes, this includes metadata calls along with the main operation.\n */\n totalResponsePayloadLengthInBytes: number;\n /**\n * This field captures diagnostic information for encryption/decryption happened during CRUD operation if encryption is enabled.\n */\n encryptionDiagnostics?: EncryptionDiagnostics;\n};\n\nexport function getRootNode(node: DiagnosticNodeInternal): DiagnosticNodeInternal {\n if (node.parent) return getRootNode(node.parent);\n else return node;\n}\n\n/**\n * Represents a tree like structure, for capturing diagnostic information.\n */\nexport interface DiagnosticNode {\n id: string;\n nodeType: string;\n children: DiagnosticNode[];\n data: { [key: string]: any };\n startTimeUTCInMs: number;\n durationInMs: number;\n}\n"]}
|
|
@@ -12,15 +12,18 @@ const semaphore_1 = tslib_1.__importDefault(require("semaphore"));
|
|
|
12
12
|
* It tracks the current endpoint, failed endpoints, and the number of consecutive read/write request failures.
|
|
13
13
|
*/
|
|
14
14
|
class PartitionKeyRangeFailoverInfo {
|
|
15
|
+
failedEndPoints = [];
|
|
16
|
+
currentEndPoint;
|
|
17
|
+
consecutiveReadRequestFailureCount = 0;
|
|
18
|
+
consecutiveWriteRequestFailureCount = 0;
|
|
19
|
+
firstRequestFailureTime = Date.now();
|
|
20
|
+
lastRequestFailureTime = Date.now();
|
|
21
|
+
failureCountSemaphore;
|
|
22
|
+
tryMoveNextLocationSemaphore;
|
|
15
23
|
/**
|
|
16
24
|
* @internal
|
|
17
25
|
*/
|
|
18
26
|
constructor(currentEndpoint) {
|
|
19
|
-
this.failedEndPoints = [];
|
|
20
|
-
this.consecutiveReadRequestFailureCount = 0;
|
|
21
|
-
this.consecutiveWriteRequestFailureCount = 0;
|
|
22
|
-
this.firstRequestFailureTime = Date.now();
|
|
23
|
-
this.lastRequestFailureTime = Date.now();
|
|
24
27
|
this.currentEndPoint = currentEndpoint;
|
|
25
28
|
this.failureCountSemaphore = (0, semaphore_1.default)(1);
|
|
26
29
|
this.tryMoveNextLocationSemaphore = (0, semaphore_1.default)(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PartitionKeyRangeFailoverInfo.js","sourceRoot":"","sources":["../../src/PartitionKeyRangeFailoverInfo.ts"],"names":[],"mappings":";;;;AAAA,uCAAuC;AACvC,kCAAkC;AAClC,yCAA+D;AAC/D,kEAAkC;AAElC;;;;GAIG;AACH,MAAa,6BAA6B;
|
|
1
|
+
{"version":3,"file":"PartitionKeyRangeFailoverInfo.js","sourceRoot":"","sources":["../../src/PartitionKeyRangeFailoverInfo.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants, DiagnosticNodeInternal } from \"./index.js\";\nimport semaphore from \"semaphore\";\n\n/**\n * @hidden\n * This class manages the failover information for partition key ranges in Cosmos DB.\n * It tracks the current endpoint, failed endpoints, and the number of consecutive read/write request failures.\n */\nexport class PartitionKeyRangeFailoverInfo {\n private failedEndPoints: string[] = [];\n private currentEndPoint: string;\n\n private consecutiveReadRequestFailureCount: number = 0;\n private consecutiveWriteRequestFailureCount: number = 0;\n private firstRequestFailureTime: number = Date.now();\n private lastRequestFailureTime: number = Date.now();\n\n private failureCountSemaphore: semaphore.Semaphore;\n private tryMoveNextLocationSemaphore: semaphore.Semaphore;\n\n /**\n * @internal\n */\n constructor(currentEndpoint: string) {\n this.currentEndPoint = currentEndpoint;\n this.failureCountSemaphore = semaphore(1);\n this.tryMoveNextLocationSemaphore = semaphore(1);\n }\n\n /**\n * Checks if the circuit breaker can trigger a partition failover based on the failure counts.\n * Returns true if the number of consecutive failures exceeds the defined thresholds for read or write requests.\n */\n public async canCircuitBreakerTriggerPartitionFailOver(\n isReadOnlyRequest: boolean,\n ): Promise<boolean> {\n const { consecutiveReadRequestFailureCount, consecutiveWriteRequestFailureCount } =\n await this.snapshotConsecutiveRequestFailureCount();\n\n return isReadOnlyRequest\n ? consecutiveReadRequestFailureCount > Constants.ReadRequestFailureCountThreshold\n : consecutiveWriteRequestFailureCount > Constants.WriteRequestFailureCountThreshold;\n }\n\n /**\n * Increments the failure counts for read or write requests and updates the timestamps.\n * If the time since the last failure exceeds the reset window, it resets the failure counts.\n */\n public async incrementRequestFailureCounts(\n isReadOnlyRequest: boolean,\n currentTimeInMilliseconds: number,\n ): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.failureCountSemaphore.take(async () => {\n try {\n const { lastRequestFailureTime } = await this.snapshotPartitionFailoverTimestamps();\n\n if (\n currentTimeInMilliseconds - lastRequestFailureTime >\n Constants.ConsecutiveFailureCountResetIntervalInMS\n ) {\n this.consecutiveReadRequestFailureCount = 0;\n this.consecutiveWriteRequestFailureCount = 0;\n }\n\n if (isReadOnlyRequest) {\n this.consecutiveReadRequestFailureCount++;\n } else {\n this.consecutiveWriteRequestFailureCount++;\n }\n this.lastRequestFailureTime = currentTimeInMilliseconds;\n return resolve();\n } catch (error) {\n reject(error);\n } finally {\n // Release the semaphore lock\n this.failureCountSemaphore.leave();\n }\n });\n });\n }\n\n /**\n * Returns a snapshot of the first and last request failure timestamps.\n * This method is used to retrieve the current state of failure timestamps without modifying them.\n */\n public async snapshotPartitionFailoverTimestamps(): Promise<{\n firstRequestFailureTime: number;\n lastRequestFailureTime: number;\n }> {\n return {\n firstRequestFailureTime: this.firstRequestFailureTime,\n lastRequestFailureTime: this.lastRequestFailureTime,\n };\n }\n\n /**\n * Attempts to move to the next available location for the partition key range.\n * If the current endpoint is the same as the failed endpoint, it tries to find a new endpoint\n * from the provided list of endpoints. If a new endpoint is found, it updates the current endpoint\n * and returns true. If no new endpoint is found, it returns false.\n */\n public async tryMoveNextLocation(\n endPoints: readonly string[],\n failedEndPoint: string,\n diagnosticNode: DiagnosticNodeInternal,\n partitionKeyRangeId: string,\n ): Promise<boolean> {\n if (failedEndPoint !== this.currentEndPoint) {\n return true;\n }\n return new Promise((resolve, reject) => {\n this.tryMoveNextLocationSemaphore.take(() => {\n try {\n for (const endpoint of endPoints) {\n if (this.currentEndPoint === endpoint) {\n continue;\n }\n\n if (this.failedEndPoints.includes(endpoint)) {\n continue;\n }\n\n this.failedEndPoints.push(failedEndPoint);\n this.currentEndPoint = endpoint;\n return resolve(true);\n }\n diagnosticNode.addData({\n partitionKeyRangeFailoverInfo: `PartitionKeyRangeId: ${partitionKeyRangeId}, failedLocations: ${this.failedEndPoints}, newLocation: ${this.currentEndPoint}`,\n });\n return resolve(false);\n } catch (err) {\n reject(err);\n } finally {\n this.tryMoveNextLocationSemaphore.leave();\n }\n });\n });\n }\n\n /** Returns the current endpoint being used for partition key range operations.*/\n public getCurrentEndPoint(): string {\n return this.currentEndPoint;\n }\n\n /**\n * Returns a snapshot of the current consecutive request failure counts for read and write requests.\n * This method is used to retrieve the current state of failure counts without modifying them.\n */\n private async snapshotConsecutiveRequestFailureCount(): Promise<{\n consecutiveReadRequestFailureCount: number;\n consecutiveWriteRequestFailureCount: number;\n }> {\n return {\n consecutiveReadRequestFailureCount: this.consecutiveReadRequestFailureCount,\n consecutiveWriteRequestFailureCount: this.consecutiveWriteRequestFailureCount,\n };\n }\n}\n"]}
|
|
@@ -15,6 +15,17 @@ const time_js_1 = require("../utils/time.js");
|
|
|
15
15
|
* @hidden
|
|
16
16
|
*/
|
|
17
17
|
class Batcher {
|
|
18
|
+
batchOperationsList;
|
|
19
|
+
currentSize;
|
|
20
|
+
toBeDispatched;
|
|
21
|
+
executor;
|
|
22
|
+
retrier;
|
|
23
|
+
diagnosticLevel;
|
|
24
|
+
encryptionEnabled;
|
|
25
|
+
encryptionProcessor;
|
|
26
|
+
clientConfigDiagnostics;
|
|
27
|
+
limiter;
|
|
28
|
+
processedOperationCountRef;
|
|
18
29
|
constructor(limiter, executor, retrier, diagnosticLevel, encryptionEnabled, clientConfig, encryptionProcessor, processedOperationCountRef) {
|
|
19
30
|
this.limiter = limiter;
|
|
20
31
|
this.batchOperationsList = [];
|
|
@@ -62,7 +73,6 @@ class Batcher {
|
|
|
62
73
|
* Handles retries for failed operations and updates the ordered response.
|
|
63
74
|
*/
|
|
64
75
|
async dispatch(partitionMetric) {
|
|
65
|
-
var _a, _b;
|
|
66
76
|
this.toBeDispatched = true;
|
|
67
77
|
const startTime = (0, time_js_1.getCurrentTimestampInMs)();
|
|
68
78
|
const diagnosticNode = new DiagnosticNodeInternal_js_1.DiagnosticNodeInternal(this.diagnosticLevel, DiagnosticNodeInternal_js_1.DiagnosticNodeType.BATCH_REQUEST, null);
|
|
@@ -70,10 +80,10 @@ class Batcher {
|
|
|
70
80
|
const response = await this.executor(this.batchOperationsList, diagnosticNode);
|
|
71
81
|
const hasThrottles = 1;
|
|
72
82
|
const noThrottle = 0;
|
|
73
|
-
const numThrottle =
|
|
83
|
+
const numThrottle = response?.results?.some((result) => "code" in result && result.code === statusCodes_js_1.StatusCodes.TooManyRequests)
|
|
74
84
|
? hasThrottles
|
|
75
85
|
: noThrottle;
|
|
76
|
-
const splitOrMerge =
|
|
86
|
+
const splitOrMerge = response?.results?.some((result) => "code" in result && result.code === statusCodes_js_1.StatusCodes.Gone)
|
|
77
87
|
? true
|
|
78
88
|
: false;
|
|
79
89
|
if (splitOrMerge) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Batcher.js","sourceRoot":"","sources":["../../../src/bulk/Batcher.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"../common/constants.js\";\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport type { CosmosDbDiagnosticLevel } from \"../diagnostics/CosmosDbDiagnosticLevel.js\";\nimport {\n DiagnosticNodeInternal,\n DiagnosticNodeType,\n} from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { EncryptionProcessor } from \"../encryption/EncryptionProcessor.js\";\nimport type { ClientConfigDiagnostic } from \"../index.js\";\nimport { ErrorResponse } from \"../index.js\";\nimport type { ExecuteCallback, RetryCallback, BulkOperationResult } from \"../utils/batch.js\";\nimport { calculateObjectSizeInBytes } from \"../utils/batch.js\";\nimport { getCurrentTimestampInMs } from \"../utils/time.js\";\nimport type { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { ItemOperation } from \"./index.js\";\nimport type { LimiterQueue } from \"./Limiter.js\";\n\n/**\n * Maintains a batch of operations and dispatches it as a unit of work.\n * Execution of the request is done by the @see {@link ExecuteCallback} and retry is done by the @see {@link RetryCallback}.\n * @hidden\n */\n\nexport class Batcher {\n private batchOperationsList: ItemOperation[];\n private currentSize: number;\n private toBeDispatched: boolean;\n private readonly executor: ExecuteCallback;\n private readonly retrier: RetryCallback;\n private readonly diagnosticLevel: CosmosDbDiagnosticLevel;\n private readonly encryptionEnabled: boolean;\n private readonly encryptionProcessor: EncryptionProcessor;\n private readonly clientConfigDiagnostics: ClientConfigDiagnostic;\n private readonly limiter: LimiterQueue;\n private processedOperationCountRef: { count: number };\n\n constructor(\n limiter: LimiterQueue,\n executor: ExecuteCallback,\n retrier: RetryCallback,\n diagnosticLevel: CosmosDbDiagnosticLevel,\n encryptionEnabled: boolean,\n clientConfig: ClientConfigDiagnostic,\n encryptionProcessor: EncryptionProcessor,\n processedOperationCountRef: { count: number },\n ) {\n this.limiter = limiter;\n this.batchOperationsList = [];\n this.executor = executor;\n this.retrier = retrier;\n this.diagnosticLevel = diagnosticLevel;\n this.encryptionEnabled = encryptionEnabled;\n this.encryptionProcessor = encryptionProcessor;\n this.clientConfigDiagnostics = clientConfig;\n this.currentSize = 0;\n this.toBeDispatched = false;\n this.processedOperationCountRef = processedOperationCountRef;\n }\n\n /**\n * Attempts to add an operation to the current batch.\n * Returns false if the batch is full or already dispatched.\n */\n public tryAdd(operation: ItemOperation): boolean {\n if (this.toBeDispatched) {\n return false;\n }\n if (!operation) {\n throw new ErrorResponse(\"Operation is not defined\");\n }\n if (!operation.operationContext) {\n throw new ErrorResponse(\"Operation context is not defined\");\n }\n if (this.batchOperationsList.length === Constants.MaxBulkOperationsCount) {\n return false;\n }\n const currentOperationSize = calculateObjectSizeInBytes(operation.operationInput);\n if (\n this.batchOperationsList.length > 0 &&\n this.currentSize + currentOperationSize > Constants.DefaultMaxBulkRequestBodySizeInBytes\n ) {\n return false;\n }\n\n this.currentSize += currentOperationSize;\n this.batchOperationsList.push(operation);\n return true;\n }\n\n public isEmpty(): boolean {\n return this.batchOperationsList.length === 0;\n }\n\n /**\n * Dispatches the current batch of operations.\n * Handles retries for failed operations and updates the ordered response.\n */\n public async dispatch(partitionMetric: PartitionMetric): Promise<void> {\n this.toBeDispatched = true;\n const startTime = getCurrentTimestampInMs();\n const diagnosticNode = new DiagnosticNodeInternal(\n this.diagnosticLevel,\n DiagnosticNodeType.BATCH_REQUEST,\n null,\n );\n try {\n const response = await this.executor(this.batchOperationsList, diagnosticNode);\n\n const hasThrottles = 1;\n const noThrottle = 0;\n const numThrottle = response?.results?.some(\n (result) => \"code\" in result && result.code === StatusCodes.TooManyRequests,\n )\n ? hasThrottles\n : noThrottle;\n const splitOrMerge = response?.results?.some(\n (result) => \"code\" in result && result.code === StatusCodes.Gone,\n )\n ? true\n : false;\n if (splitOrMerge) {\n await this.limiter.pauseAndClear(StatusCodes.Gone, diagnosticNode);\n }\n partitionMetric.add(\n this.batchOperationsList.length,\n getCurrentTimestampInMs() - startTime,\n numThrottle,\n );\n for (let i = 0; i < response.operations.length; i++) {\n const operation = response.operations[i];\n const bulkOperationResult = response.results[i];\n if (bulkOperationResult instanceof ErrorResponse) {\n const shouldRetry = await operation.operationContext.retryPolicy.shouldRetry(\n bulkOperationResult,\n operation.operationContext.diagnosticNode,\n );\n if (shouldRetry) {\n await this.retrier(operation, operation.operationContext.diagnosticNode);\n continue;\n }\n }\n try {\n if (this.encryptionEnabled && bulkOperationResult.resourceBody) {\n operation.operationContext.diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n );\n const { body: decryptedBody, propertiesDecryptedCount } =\n await this.encryptionProcessor.decrypt(bulkOperationResult.resourceBody);\n bulkOperationResult.resourceBody = decryptedBody;\n operation.operationContext.diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n propertiesDecryptedCount,\n );\n }\n } catch (error) {\n // if decryption fails after successful write operation, fail the operation with internal server error\n if (operation.operationInput.operationType !== \"Read\") {\n const decryptionError = new ErrorResponse(\n `Item ${operation.operationInput.operationType} operation was successful but response decryption failed: + ${error.message}`,\n );\n decryptionError.code = StatusCodes.ServiceUnavailable;\n throw decryptionError;\n }\n }\n operation.operationContext.addDiagnosticChild(diagnosticNode);\n bulkOperationResult.diagnostics = operation.operationContext.diagnosticNode.toDiagnostic(\n this.clientConfigDiagnostics,\n );\n const bulkItemResponse: BulkOperationResult = {\n operationInput: operation.unencryptedOperationInput,\n };\n if (bulkOperationResult instanceof ErrorResponse) {\n bulkItemResponse.error = bulkOperationResult;\n } else {\n bulkItemResponse.response = bulkOperationResult;\n }\n operation.operationContext.complete(bulkItemResponse);\n this.processedOperationCountRef.count++;\n }\n } catch (error) {\n // Mark all operations in the batch as failed\n for (const operation of this.batchOperationsList) {\n const response: BulkOperationResult = {\n operationInput: operation.operationInput,\n error: Object.assign(new ErrorResponse(error.message), {\n code: StatusCodes.InternalServerError,\n diagnostics: operation.operationContext.diagnosticNode.toDiagnostic(\n this.clientConfigDiagnostics,\n ),\n }),\n };\n operation.operationContext.fail(response);\n this.processedOperationCountRef.count++;\n }\n } finally {\n // Clean up batch state\n this.batchOperationsList = [];\n }\n }\n\n public getOperations(): ItemOperation[] {\n return this.batchOperationsList;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Batcher.js","sourceRoot":"","sources":["../../../src/bulk/Batcher.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"../common/constants.js\";\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport type { CosmosDbDiagnosticLevel } from \"../diagnostics/CosmosDbDiagnosticLevel.js\";\nimport {\n DiagnosticNodeInternal,\n DiagnosticNodeType,\n} from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { EncryptionProcessor } from \"../encryption/EncryptionProcessor.js\";\nimport type { ClientConfigDiagnostic } from \"../index.js\";\nimport { ErrorResponse } from \"../index.js\";\nimport type { ExecuteCallback, RetryCallback, BulkOperationResult } from \"../utils/batch.js\";\nimport { calculateObjectSizeInBytes } from \"../utils/batch.js\";\nimport { getCurrentTimestampInMs } from \"../utils/time.js\";\nimport type { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { ItemOperation } from \"./index.js\";\nimport type { LimiterQueue } from \"./Limiter.js\";\n\n/**\n * Maintains a batch of operations and dispatches it as a unit of work.\n * Execution of the request is done by the @see {@link ExecuteCallback} and retry is done by the @see {@link RetryCallback}.\n * @hidden\n */\n\nexport class Batcher {\n private batchOperationsList: ItemOperation[];\n private currentSize: number;\n private toBeDispatched: boolean;\n private readonly executor: ExecuteCallback;\n private readonly retrier: RetryCallback;\n private readonly diagnosticLevel: CosmosDbDiagnosticLevel;\n private readonly encryptionEnabled: boolean;\n private readonly encryptionProcessor: EncryptionProcessor;\n private readonly clientConfigDiagnostics: ClientConfigDiagnostic;\n private readonly limiter: LimiterQueue;\n private processedOperationCountRef: { count: number };\n\n constructor(\n limiter: LimiterQueue,\n executor: ExecuteCallback,\n retrier: RetryCallback,\n diagnosticLevel: CosmosDbDiagnosticLevel,\n encryptionEnabled: boolean,\n clientConfig: ClientConfigDiagnostic,\n encryptionProcessor: EncryptionProcessor,\n processedOperationCountRef: { count: number },\n ) {\n this.limiter = limiter;\n this.batchOperationsList = [];\n this.executor = executor;\n this.retrier = retrier;\n this.diagnosticLevel = diagnosticLevel;\n this.encryptionEnabled = encryptionEnabled;\n this.encryptionProcessor = encryptionProcessor;\n this.clientConfigDiagnostics = clientConfig;\n this.currentSize = 0;\n this.toBeDispatched = false;\n this.processedOperationCountRef = processedOperationCountRef;\n }\n\n /**\n * Attempts to add an operation to the current batch.\n * Returns false if the batch is full or already dispatched.\n */\n public tryAdd(operation: ItemOperation): boolean {\n if (this.toBeDispatched) {\n return false;\n }\n if (!operation) {\n throw new ErrorResponse(\"Operation is not defined\");\n }\n if (!operation.operationContext) {\n throw new ErrorResponse(\"Operation context is not defined\");\n }\n if (this.batchOperationsList.length === Constants.MaxBulkOperationsCount) {\n return false;\n }\n const currentOperationSize = calculateObjectSizeInBytes(operation.operationInput);\n if (\n this.batchOperationsList.length > 0 &&\n this.currentSize + currentOperationSize > Constants.DefaultMaxBulkRequestBodySizeInBytes\n ) {\n return false;\n }\n\n this.currentSize += currentOperationSize;\n this.batchOperationsList.push(operation);\n return true;\n }\n\n public isEmpty(): boolean {\n return this.batchOperationsList.length === 0;\n }\n\n /**\n * Dispatches the current batch of operations.\n * Handles retries for failed operations and updates the ordered response.\n */\n public async dispatch(partitionMetric: PartitionMetric): Promise<void> {\n this.toBeDispatched = true;\n const startTime = getCurrentTimestampInMs();\n const diagnosticNode = new DiagnosticNodeInternal(\n this.diagnosticLevel,\n DiagnosticNodeType.BATCH_REQUEST,\n null,\n );\n try {\n const response = await this.executor(this.batchOperationsList, diagnosticNode);\n\n const hasThrottles = 1;\n const noThrottle = 0;\n const numThrottle = response?.results?.some(\n (result) => \"code\" in result && result.code === StatusCodes.TooManyRequests,\n )\n ? hasThrottles\n : noThrottle;\n const splitOrMerge = response?.results?.some(\n (result) => \"code\" in result && result.code === StatusCodes.Gone,\n )\n ? true\n : false;\n if (splitOrMerge) {\n await this.limiter.pauseAndClear(StatusCodes.Gone, diagnosticNode);\n }\n partitionMetric.add(\n this.batchOperationsList.length,\n getCurrentTimestampInMs() - startTime,\n numThrottle,\n );\n for (let i = 0; i < response.operations.length; i++) {\n const operation = response.operations[i];\n const bulkOperationResult = response.results[i];\n if (bulkOperationResult instanceof ErrorResponse) {\n const shouldRetry = await operation.operationContext.retryPolicy.shouldRetry(\n bulkOperationResult,\n operation.operationContext.diagnosticNode,\n );\n if (shouldRetry) {\n await this.retrier(operation, operation.operationContext.diagnosticNode);\n continue;\n }\n }\n try {\n if (this.encryptionEnabled && bulkOperationResult.resourceBody) {\n operation.operationContext.diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n );\n const { body: decryptedBody, propertiesDecryptedCount } =\n await this.encryptionProcessor.decrypt(bulkOperationResult.resourceBody);\n bulkOperationResult.resourceBody = decryptedBody;\n operation.operationContext.diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n propertiesDecryptedCount,\n );\n }\n } catch (error) {\n // if decryption fails after successful write operation, fail the operation with internal server error\n if (operation.operationInput.operationType !== \"Read\") {\n const decryptionError = new ErrorResponse(\n `Item ${operation.operationInput.operationType} operation was successful but response decryption failed: + ${error.message}`,\n );\n decryptionError.code = StatusCodes.ServiceUnavailable;\n throw decryptionError;\n }\n }\n operation.operationContext.addDiagnosticChild(diagnosticNode);\n bulkOperationResult.diagnostics = operation.operationContext.diagnosticNode.toDiagnostic(\n this.clientConfigDiagnostics,\n );\n const bulkItemResponse: BulkOperationResult = {\n operationInput: operation.unencryptedOperationInput,\n };\n if (bulkOperationResult instanceof ErrorResponse) {\n bulkItemResponse.error = bulkOperationResult;\n } else {\n bulkItemResponse.response = bulkOperationResult;\n }\n operation.operationContext.complete(bulkItemResponse);\n this.processedOperationCountRef.count++;\n }\n } catch (error) {\n // Mark all operations in the batch as failed\n for (const operation of this.batchOperationsList) {\n const response: BulkOperationResult = {\n operationInput: operation.operationInput,\n error: Object.assign(new ErrorResponse(error.message), {\n code: StatusCodes.InternalServerError,\n diagnostics: operation.operationContext.diagnosticNode.toDiagnostic(\n this.clientConfigDiagnostics,\n ),\n }),\n };\n operation.operationContext.fail(response);\n this.processedOperationCountRef.count++;\n }\n } finally {\n // Clean up batch state\n this.batchOperationsList = [];\n }\n }\n\n public getOperations(): ItemOperation[] {\n return this.batchOperationsList;\n }\n}\n"]}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
// Licensed under the MIT License.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.BulkHelper = void 0;
|
|
6
|
-
const tslib_1 = require("tslib");
|
|
7
6
|
const ClientUtils_js_1 = require("../client/ClientUtils.js");
|
|
8
7
|
const constants_js_1 = require("../common/constants.js");
|
|
9
8
|
const helper_js_1 = require("../common/helper.js");
|
|
@@ -27,15 +26,25 @@ const index_js_2 = require("./index.js");
|
|
|
27
26
|
* @hidden
|
|
28
27
|
*/
|
|
29
28
|
class BulkHelper {
|
|
29
|
+
container;
|
|
30
|
+
clientContext;
|
|
31
|
+
partitionKeyRangeCache;
|
|
32
|
+
helpersByPartitionKeyRangeId;
|
|
33
|
+
options;
|
|
34
|
+
partitionKeyDefinition;
|
|
35
|
+
partitionKeyDefinitionPromise;
|
|
36
|
+
isCancelled;
|
|
37
|
+
processedOperationCountRef = { count: 0 };
|
|
38
|
+
operationPromisesList = [];
|
|
39
|
+
congestionControlTimer;
|
|
40
|
+
congestionControlDelayInMs = 1000;
|
|
41
|
+
staleRidError;
|
|
42
|
+
operationsPerSleep = 100; // Number of operations to add per sleep
|
|
43
|
+
intervalForPartialBatchInMs = 1000; // Sleep interval before adding partial batch to dispatch queue
|
|
30
44
|
/**
|
|
31
45
|
* @internal
|
|
32
46
|
*/
|
|
33
47
|
constructor(container, clientContext, partitionKeyRangeCache, options) {
|
|
34
|
-
this.processedOperationCountRef = { count: 0 };
|
|
35
|
-
this.operationPromisesList = [];
|
|
36
|
-
this.congestionControlDelayInMs = 1000;
|
|
37
|
-
this.operationsPerSleep = 100; // Number of operations to add per sleep
|
|
38
|
-
this.intervalForPartialBatchInMs = 1000; // Sleep interval before adding partial batch to dispatch queue
|
|
39
48
|
this.container = container;
|
|
40
49
|
this.clientContext = clientContext;
|
|
41
50
|
this.partitionKeyRangeCache = partitionKeyRangeCache;
|
|
@@ -90,9 +99,12 @@ class BulkHelper {
|
|
|
90
99
|
// Formatting result: if an error is present, removing the stack trace details.
|
|
91
100
|
const formattedResults = bulkOperationResults.map((result) => {
|
|
92
101
|
if (result && result.error) {
|
|
93
|
-
const
|
|
94
|
-
const trimmedError =
|
|
95
|
-
return
|
|
102
|
+
const { stack, ...otherProps } = result.error;
|
|
103
|
+
const trimmedError = { message: result.error.message, ...otherProps };
|
|
104
|
+
return {
|
|
105
|
+
...result,
|
|
106
|
+
error: trimmedError,
|
|
107
|
+
};
|
|
96
108
|
}
|
|
97
109
|
return result;
|
|
98
110
|
});
|
|
@@ -186,7 +198,7 @@ class BulkHelper {
|
|
|
186
198
|
operationInput: unencryptedOperation,
|
|
187
199
|
error: Object.assign(new index_js_1.ErrorResponse(operationError.message), {
|
|
188
200
|
code: statusCodes_js_1.StatusCodes.InternalServerError,
|
|
189
|
-
diagnostics: diagnosticNode
|
|
201
|
+
diagnostics: diagnosticNode?.toDiagnostic(this.clientContext.getClientConfig()),
|
|
190
202
|
}),
|
|
191
203
|
};
|
|
192
204
|
context.fail(response);
|
|
@@ -254,7 +266,10 @@ class BulkHelper {
|
|
|
254
266
|
}
|
|
255
267
|
prepareOperation(operationInput) {
|
|
256
268
|
operationInput.partitionKey = (0, PartitionKeyInternal_js_1.convertToInternalPartitionKey)(operationInput.partitionKey);
|
|
257
|
-
return
|
|
269
|
+
return {
|
|
270
|
+
...operationInput,
|
|
271
|
+
partitionKey: JSON.stringify(operationInput.partitionKey),
|
|
272
|
+
};
|
|
258
273
|
}
|
|
259
274
|
async reBatchOperation(operation, diagnosticNode) {
|
|
260
275
|
const partitionKeyRangeId = await this.resolvePartitionKeyRangeId(operation.operationInput, diagnosticNode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkHelper.js","sourceRoot":"","sources":["../../../src/bulk/BulkHelper.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { RequestOptions } from \"../request/RequestOptions.js\";\nimport { readPartitionKeyDefinition } from \"../client/ClientUtils.js\";\nimport type { Container } from \"../client/index.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport { Constants, ResourceType } from \"../common/constants.js\";\nimport { sleep, copyObject, getPathFromLink } from \"../common/helper.js\";\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport {\n DiagnosticNodeInternal,\n DiagnosticNodeType,\n} from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { PartitionKeyDefinition } from \"../documents/PartitionKeyDefinition.js\";\nimport { convertToInternalPartitionKey } from \"../documents/PartitionKeyInternal.js\";\nimport { ErrorResponse } from \"../index.js\";\nimport { BulkExecutionRetryPolicy } from \"../retry/bulkExecutionRetryPolicy.js\";\nimport { ResourceThrottleRetryPolicy } from \"../retry/resourceThrottleRetryPolicy.js\";\nimport type { RetryPolicy } from \"../retry/RetryPolicy.js\";\nimport type { PartitionKeyRangeCache } from \"../routing/partitionKeyRangeCache.js\";\nimport type { BulkOperationResult, OperationInput, Operation } from \"../utils/batch.js\";\nimport { encryptOperationInput, isKeyInRange } from \"../utils/batch.js\";\nimport { addDiagnosticChild } from \"../utils/diagnostics.js\";\nimport { hashPartitionKey } from \"../utils/hashing/hash.js\";\nimport { HelperPerPartition } from \"./HelperPerPartition.js\";\nimport type { ItemOperation } from \"./index.js\";\nimport { ItemOperationContext, BulkResponse } from \"./index.js\";\n\n/**\n * BulkHelper for bulk operations in a container.\n * It maintains one @see {@link HelperPerPartition} for each Partition Key Range, which allows independent execution of requests. Queue based limiters @see {@link LimiterQueue}\n * rate limit requestsbat the helper / Partition Key Range level, this means that we can send parallel and independent requests to different Partition Key Ranges, but for the same Range, requests\n * will be limited. Two callback implementations define how a particular request should be executed, and how operations should be retried. When the helper dispatches a batch\n * the batch will create a request and call the execute callback (executeRequest), if conditions are met, it might call the retry callback (reBatchOperation).\n * @hidden\n */\n\nexport class BulkHelper {\n private readonly container: Container;\n private readonly clientContext: ClientContext;\n private readonly partitionKeyRangeCache: PartitionKeyRangeCache;\n private readonly helpersByPartitionKeyRangeId: Map<string, HelperPerPartition>;\n private options: RequestOptions;\n private partitionKeyDefinition: PartitionKeyDefinition;\n private partitionKeyDefinitionPromise: Promise<PartitionKeyDefinition>;\n private isCancelled: boolean;\n private processedOperationCountRef: { count: number } = { count: 0 };\n private operationPromisesList: Promise<BulkOperationResult>[] = [];\n private congestionControlTimer: NodeJS.Timeout;\n private readonly congestionControlDelayInMs: number = 1000;\n private staleRidError: ErrorResponse | undefined;\n private readonly operationsPerSleep: number = 100; // Number of operations to add per sleep\n private readonly intervalForPartialBatchInMs: number = 1000; // Sleep interval before adding partial batch to dispatch queue\n\n /**\n * @internal\n */\n constructor(\n container: Container,\n clientContext: ClientContext,\n partitionKeyRangeCache: PartitionKeyRangeCache,\n options: RequestOptions,\n ) {\n this.container = container;\n this.clientContext = clientContext;\n this.partitionKeyRangeCache = partitionKeyRangeCache;\n this.helpersByPartitionKeyRangeId = new Map();\n this.options = options;\n this.executeRequest = this.executeRequest.bind(this);\n this.reBatchOperation = this.reBatchOperation.bind(this);\n this.refreshPartitionKeyRangeCache = this.refreshPartitionKeyRangeCache.bind(this);\n this.isCancelled = false;\n this.runCongestionControlTimer();\n }\n\n /**\n * adds operation(s) to the helper\n * @param operationInput - bulk operation or list of bulk operations\n */\n async execute(operationInput: OperationInput[]): Promise<BulkOperationResult[]> {\n const addOperationPromises: Promise<void>[] = [];\n const minimalPause = 0; // minimal pause (0 ms) inserted periodically during processing.\n try {\n for (let i = 0; i < operationInput.length; i++) {\n // After every 100 operations,sleep of 0 ms is added to allow the event loop to process any pending\n // callbacks/tasks such as fetching partition key definition and dispatching batches from queue. This helps\n // to prevent blocking and improves overall responsiveness.\n if (i % this.operationsPerSleep === 0) {\n await sleep(minimalPause);\n }\n addOperationPromises.push(this.addOperation(operationInput[i], i));\n }\n await Promise.allSettled(addOperationPromises);\n\n // After processing all operations via addOperation, it's possible that the current batch in each helper is not completely full.\n // In such cases, addPartialBatchToQueue is called to ensure that all the operations are added to the dispatch queue.\n // while loop below waits until the count of processed operations equals the number of input operations. This is necessary because\n // some operations might fail and then again get added to current batch for retry.\n while (this.processedOperationCountRef.count < operationInput.length) {\n this.helpersByPartitionKeyRangeId.forEach((helper) => {\n helper.addPartialBatchToQueue();\n });\n // Pause for 1000 ms to give pending operations chance to accumulate into a batch to avoid sending multiple small batches.\n await sleep(this.intervalForPartialBatchInMs);\n }\n } finally {\n if (this.congestionControlTimer) {\n clearInterval(this.congestionControlTimer);\n }\n }\n const settledResults = await Promise.allSettled(this.operationPromisesList);\n if (this.isCancelled && this.staleRidError) {\n throw this.staleRidError;\n }\n\n const bulkOperationResults = settledResults.map((result) =>\n result.status === \"fulfilled\" ? result.value : result.reason,\n );\n\n // Formatting result: if an error is present, removing the stack trace details.\n const formattedResults = bulkOperationResults.map((result) => {\n if (result && result.error) {\n const { stack, ...otherProps } = result.error;\n const trimmedError = { message: result.error.message, ...otherProps };\n return {\n ...result,\n error: trimmedError,\n };\n }\n return result;\n });\n return formattedResults;\n }\n\n private async addOperation(operation: OperationInput, idx: number): Promise<void> {\n if (this.isCancelled) {\n return;\n }\n if (!operation) {\n this.operationPromisesList[idx] = Promise.resolve({\n operationInput: operation,\n error: Object.assign(new ErrorResponse(\"Operation cannot be null or undefined.\"), {\n code: StatusCodes.InternalServerError,\n }),\n });\n return;\n }\n\n // Checks for id and partition key in input body\n if (\n operation.operationType === \"Create\" ||\n operation.operationType === \"Upsert\" ||\n operation.operationType === \"Replace\"\n ) {\n if (!operation.resourceBody.id) {\n this.operationPromisesList[idx] = Promise.resolve({\n operationInput: operation,\n error: Object.assign(\n new ErrorResponse(\n `Operation resource body must have an 'id' for ${operation.operationType} operations.`,\n ),\n { code: StatusCodes.InternalServerError },\n ),\n });\n this.processedOperationCountRef.count++;\n return;\n }\n }\n if (operation.partitionKey === undefined) {\n this.operationPromisesList[idx] = Promise.resolve({\n operationInput: operation,\n error: Object.assign(\n new ErrorResponse(`PartitionKey is required for ${operation.operationType} operations.`),\n { code: StatusCodes.InternalServerError },\n ),\n });\n this.processedOperationCountRef.count++;\n return;\n }\n\n let operationError: Error | undefined;\n let diagnosticNode: DiagnosticNodeInternal;\n let unencryptedOperation: OperationInput;\n let partitionKeyRangeId: string;\n try {\n diagnosticNode = new DiagnosticNodeInternal(\n this.clientContext.diagnosticLevel,\n DiagnosticNodeType.CLIENT_REQUEST_NODE,\n null,\n );\n // Ensure partition key definition is available.\n if (!this.partitionKeyDefinition) {\n if (!this.partitionKeyDefinitionPromise) {\n this.partitionKeyDefinitionPromise = (async () => {\n try {\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n this.partitionKeyDefinition = partitionKeyDefinition;\n return partitionKeyDefinition;\n } finally {\n this.partitionKeyDefinitionPromise = null;\n }\n })();\n }\n await this.partitionKeyDefinitionPromise;\n }\n unencryptedOperation = copyObject(operation);\n // If encryption is enabled, encrypt the operation input.\n if (this.clientContext.enableEncryption) {\n operation = copyObject(operation);\n await this.container.checkAndInitializeEncryption();\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsEncryptOperation);\n const { operation: encryptedOp, totalPropertiesEncryptedCount } =\n await encryptOperationInput(this.container.encryptionProcessor, operation, 0);\n operation = encryptedOp;\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n totalPropertiesEncryptedCount,\n );\n }\n // Resolve the partition key range id.\n partitionKeyRangeId = await this.resolvePartitionKeyRangeId(operation, diagnosticNode);\n } catch (error) {\n operationError = error;\n }\n\n // Get helper & context.\n const helperForPartition = this.getHelperForPKRange(partitionKeyRangeId);\n const retryPolicy = this.getRetryPolicy();\n const context = new ItemOperationContext(partitionKeyRangeId, retryPolicy, diagnosticNode);\n const itemOperation: ItemOperation = {\n unencryptedOperationInput: unencryptedOperation,\n operationInput: operation,\n operationContext: context,\n };\n\n // Assign the promise (ensuring position matches input order)\n this.operationPromisesList[idx] = context.operationPromise;\n\n if (operationError) {\n const response: BulkOperationResult = {\n operationInput: unencryptedOperation,\n error: Object.assign(new ErrorResponse(operationError.message), {\n code: StatusCodes.InternalServerError,\n diagnostics: diagnosticNode?.toDiagnostic(this.clientContext.getClientConfig()),\n }),\n };\n context.fail(response);\n this.processedOperationCountRef.count++;\n return;\n }\n // Add the operation to the helper.\n return helperForPartition.add(itemOperation);\n }\n\n private async resolvePartitionKeyRangeId(\n operation: OperationInput,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<string> {\n const partitionKeyRanges = (\n await this.partitionKeyRangeCache.onCollectionRoutingMap(this.container.url, diagnosticNode)\n ).getOrderedParitionKeyRanges();\n\n const partitionKey = convertToInternalPartitionKey(operation.partitionKey);\n\n const hashedKey = hashPartitionKey(partitionKey, this.partitionKeyDefinition);\n\n const matchingRange = partitionKeyRanges.find((range) =>\n isKeyInRange(range.minInclusive, range.maxExclusive, hashedKey),\n );\n\n if (!matchingRange) {\n throw new Error(\"No matching partition key range found for the operation.\");\n }\n return matchingRange.id;\n }\n\n private getRetryPolicy(): RetryPolicy {\n const nextRetryPolicy = new ResourceThrottleRetryPolicy(this.clientContext.getRetryOptions());\n return new BulkExecutionRetryPolicy(nextRetryPolicy);\n }\n\n private async executeRequest(\n operations: ItemOperation[],\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<BulkResponse> {\n if (this.isCancelled) {\n throw new ErrorResponse(\"Bulk execution cancelled due to a previous error.\");\n }\n if (!operations.length) return;\n const pkRangeId = operations[0].operationContext.pkRangeId;\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const requestBody: Operation[] = [];\n for (const itemOperation of operations) {\n requestBody.push(this.prepareOperation(itemOperation.operationInput));\n }\n if (!this.options.containerRid) {\n this.options.containerRid = this.container._rid;\n }\n try {\n const response = await addDiagnosticChild(\n async (childNode: DiagnosticNodeInternal) =>\n this.clientContext.bulk({\n body: requestBody,\n partitionKeyRangeId: pkRangeId,\n path: path,\n resourceId: this.container.url,\n options: this.options,\n diagnosticNode: childNode,\n }),\n diagnosticNode,\n DiagnosticNodeType.BATCH_REQUEST,\n );\n if (!response) {\n throw new ErrorResponse(\"Failed to fetch bulk response.\");\n }\n return BulkResponse.fromResponseMessage(response, operations);\n } catch (error) {\n if (this.clientContext.enableEncryption) {\n try {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n } catch (err) {\n await this.cancelExecution(err);\n return BulkResponse.createEmptyResponse(operations, 0, 0, {});\n }\n }\n return BulkResponse.fromResponseMessage(error, operations);\n }\n }\n\n private prepareOperation(operationInput: OperationInput): Operation {\n operationInput.partitionKey = convertToInternalPartitionKey(operationInput.partitionKey);\n return {\n ...operationInput,\n partitionKey: JSON.stringify(operationInput.partitionKey),\n } as Operation;\n }\n\n private async reBatchOperation(\n operation: ItemOperation,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<void> {\n const partitionKeyRangeId = await this.resolvePartitionKeyRangeId(\n operation.operationInput,\n diagnosticNode,\n );\n operation.operationContext.updatePKRangeId(partitionKeyRangeId);\n const helper = this.getHelperForPKRange(partitionKeyRangeId);\n await helper.add(operation);\n }\n\n private async cancelExecution(error: ErrorResponse): Promise<void> {\n this.isCancelled = true;\n this.staleRidError = error;\n for (const helper of this.helpersByPartitionKeyRangeId.values()) {\n await helper.dispose();\n }\n this.helpersByPartitionKeyRangeId.clear();\n }\n\n private getHelperForPKRange(pkRangeId: string): HelperPerPartition {\n if (this.helpersByPartitionKeyRangeId.has(pkRangeId)) {\n return this.helpersByPartitionKeyRangeId.get(pkRangeId);\n }\n\n const newHelper = new HelperPerPartition(\n this.executeRequest,\n this.reBatchOperation,\n this.refreshPartitionKeyRangeCache,\n this.clientContext.diagnosticLevel,\n this.clientContext.enableEncryption,\n this.clientContext.getClientConfig(),\n this.container.encryptionProcessor,\n this.processedOperationCountRef,\n );\n this.helpersByPartitionKeyRangeId.set(pkRangeId, newHelper);\n return newHelper;\n }\n\n private runCongestionControlTimer(): void {\n this.congestionControlTimer = setInterval(() => {\n this.helpersByPartitionKeyRangeId.forEach((helper) => {\n helper.runCongestionAlgorithm();\n });\n }, this.congestionControlDelayInMs);\n }\n\n private async refreshPartitionKeyRangeCache(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<void> {\n await this.partitionKeyRangeCache.onCollectionRoutingMap(\n this.container.url,\n diagnosticNode,\n true,\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BulkHelper.js","sourceRoot":"","sources":["../../../src/bulk/BulkHelper.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { RequestOptions } from \"../request/RequestOptions.js\";\nimport { readPartitionKeyDefinition } from \"../client/ClientUtils.js\";\nimport type { Container } from \"../client/index.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport { Constants, ResourceType } from \"../common/constants.js\";\nimport { sleep, copyObject, getPathFromLink } from \"../common/helper.js\";\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport {\n DiagnosticNodeInternal,\n DiagnosticNodeType,\n} from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { PartitionKeyDefinition } from \"../documents/PartitionKeyDefinition.js\";\nimport { convertToInternalPartitionKey } from \"../documents/PartitionKeyInternal.js\";\nimport { ErrorResponse } from \"../index.js\";\nimport { BulkExecutionRetryPolicy } from \"../retry/bulkExecutionRetryPolicy.js\";\nimport { ResourceThrottleRetryPolicy } from \"../retry/resourceThrottleRetryPolicy.js\";\nimport type { RetryPolicy } from \"../retry/RetryPolicy.js\";\nimport type { PartitionKeyRangeCache } from \"../routing/partitionKeyRangeCache.js\";\nimport type { BulkOperationResult, OperationInput, Operation } from \"../utils/batch.js\";\nimport { encryptOperationInput, isKeyInRange } from \"../utils/batch.js\";\nimport { addDiagnosticChild } from \"../utils/diagnostics.js\";\nimport { hashPartitionKey } from \"../utils/hashing/hash.js\";\nimport { HelperPerPartition } from \"./HelperPerPartition.js\";\nimport type { ItemOperation } from \"./index.js\";\nimport { ItemOperationContext, BulkResponse } from \"./index.js\";\n\n/**\n * BulkHelper for bulk operations in a container.\n * It maintains one @see {@link HelperPerPartition} for each Partition Key Range, which allows independent execution of requests. Queue based limiters @see {@link LimiterQueue}\n * rate limit requestsbat the helper / Partition Key Range level, this means that we can send parallel and independent requests to different Partition Key Ranges, but for the same Range, requests\n * will be limited. Two callback implementations define how a particular request should be executed, and how operations should be retried. When the helper dispatches a batch\n * the batch will create a request and call the execute callback (executeRequest), if conditions are met, it might call the retry callback (reBatchOperation).\n * @hidden\n */\n\nexport class BulkHelper {\n private readonly container: Container;\n private readonly clientContext: ClientContext;\n private readonly partitionKeyRangeCache: PartitionKeyRangeCache;\n private readonly helpersByPartitionKeyRangeId: Map<string, HelperPerPartition>;\n private options: RequestOptions;\n private partitionKeyDefinition: PartitionKeyDefinition;\n private partitionKeyDefinitionPromise: Promise<PartitionKeyDefinition>;\n private isCancelled: boolean;\n private processedOperationCountRef: { count: number } = { count: 0 };\n private operationPromisesList: Promise<BulkOperationResult>[] = [];\n private congestionControlTimer: NodeJS.Timeout;\n private readonly congestionControlDelayInMs: number = 1000;\n private staleRidError: ErrorResponse | undefined;\n private readonly operationsPerSleep: number = 100; // Number of operations to add per sleep\n private readonly intervalForPartialBatchInMs: number = 1000; // Sleep interval before adding partial batch to dispatch queue\n\n /**\n * @internal\n */\n constructor(\n container: Container,\n clientContext: ClientContext,\n partitionKeyRangeCache: PartitionKeyRangeCache,\n options: RequestOptions,\n ) {\n this.container = container;\n this.clientContext = clientContext;\n this.partitionKeyRangeCache = partitionKeyRangeCache;\n this.helpersByPartitionKeyRangeId = new Map();\n this.options = options;\n this.executeRequest = this.executeRequest.bind(this);\n this.reBatchOperation = this.reBatchOperation.bind(this);\n this.refreshPartitionKeyRangeCache = this.refreshPartitionKeyRangeCache.bind(this);\n this.isCancelled = false;\n this.runCongestionControlTimer();\n }\n\n /**\n * adds operation(s) to the helper\n * @param operationInput - bulk operation or list of bulk operations\n */\n async execute(operationInput: OperationInput[]): Promise<BulkOperationResult[]> {\n const addOperationPromises: Promise<void>[] = [];\n const minimalPause = 0; // minimal pause (0 ms) inserted periodically during processing.\n try {\n for (let i = 0; i < operationInput.length; i++) {\n // After every 100 operations,sleep of 0 ms is added to allow the event loop to process any pending\n // callbacks/tasks such as fetching partition key definition and dispatching batches from queue. This helps\n // to prevent blocking and improves overall responsiveness.\n if (i % this.operationsPerSleep === 0) {\n await sleep(minimalPause);\n }\n addOperationPromises.push(this.addOperation(operationInput[i], i));\n }\n await Promise.allSettled(addOperationPromises);\n\n // After processing all operations via addOperation, it's possible that the current batch in each helper is not completely full.\n // In such cases, addPartialBatchToQueue is called to ensure that all the operations are added to the dispatch queue.\n // while loop below waits until the count of processed operations equals the number of input operations. This is necessary because\n // some operations might fail and then again get added to current batch for retry.\n while (this.processedOperationCountRef.count < operationInput.length) {\n this.helpersByPartitionKeyRangeId.forEach((helper) => {\n helper.addPartialBatchToQueue();\n });\n // Pause for 1000 ms to give pending operations chance to accumulate into a batch to avoid sending multiple small batches.\n await sleep(this.intervalForPartialBatchInMs);\n }\n } finally {\n if (this.congestionControlTimer) {\n clearInterval(this.congestionControlTimer);\n }\n }\n const settledResults = await Promise.allSettled(this.operationPromisesList);\n if (this.isCancelled && this.staleRidError) {\n throw this.staleRidError;\n }\n\n const bulkOperationResults = settledResults.map((result) =>\n result.status === \"fulfilled\" ? result.value : result.reason,\n );\n\n // Formatting result: if an error is present, removing the stack trace details.\n const formattedResults = bulkOperationResults.map((result) => {\n if (result && result.error) {\n const { stack, ...otherProps } = result.error;\n const trimmedError = { message: result.error.message, ...otherProps };\n return {\n ...result,\n error: trimmedError,\n };\n }\n return result;\n });\n return formattedResults;\n }\n\n private async addOperation(operation: OperationInput, idx: number): Promise<void> {\n if (this.isCancelled) {\n return;\n }\n if (!operation) {\n this.operationPromisesList[idx] = Promise.resolve({\n operationInput: operation,\n error: Object.assign(new ErrorResponse(\"Operation cannot be null or undefined.\"), {\n code: StatusCodes.InternalServerError,\n }),\n });\n return;\n }\n\n // Checks for id and partition key in input body\n if (\n operation.operationType === \"Create\" ||\n operation.operationType === \"Upsert\" ||\n operation.operationType === \"Replace\"\n ) {\n if (!operation.resourceBody.id) {\n this.operationPromisesList[idx] = Promise.resolve({\n operationInput: operation,\n error: Object.assign(\n new ErrorResponse(\n `Operation resource body must have an 'id' for ${operation.operationType} operations.`,\n ),\n { code: StatusCodes.InternalServerError },\n ),\n });\n this.processedOperationCountRef.count++;\n return;\n }\n }\n if (operation.partitionKey === undefined) {\n this.operationPromisesList[idx] = Promise.resolve({\n operationInput: operation,\n error: Object.assign(\n new ErrorResponse(`PartitionKey is required for ${operation.operationType} operations.`),\n { code: StatusCodes.InternalServerError },\n ),\n });\n this.processedOperationCountRef.count++;\n return;\n }\n\n let operationError: Error | undefined;\n let diagnosticNode: DiagnosticNodeInternal;\n let unencryptedOperation: OperationInput;\n let partitionKeyRangeId: string;\n try {\n diagnosticNode = new DiagnosticNodeInternal(\n this.clientContext.diagnosticLevel,\n DiagnosticNodeType.CLIENT_REQUEST_NODE,\n null,\n );\n // Ensure partition key definition is available.\n if (!this.partitionKeyDefinition) {\n if (!this.partitionKeyDefinitionPromise) {\n this.partitionKeyDefinitionPromise = (async () => {\n try {\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n this.partitionKeyDefinition = partitionKeyDefinition;\n return partitionKeyDefinition;\n } finally {\n this.partitionKeyDefinitionPromise = null;\n }\n })();\n }\n await this.partitionKeyDefinitionPromise;\n }\n unencryptedOperation = copyObject(operation);\n // If encryption is enabled, encrypt the operation input.\n if (this.clientContext.enableEncryption) {\n operation = copyObject(operation);\n await this.container.checkAndInitializeEncryption();\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsEncryptOperation);\n const { operation: encryptedOp, totalPropertiesEncryptedCount } =\n await encryptOperationInput(this.container.encryptionProcessor, operation, 0);\n operation = encryptedOp;\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n totalPropertiesEncryptedCount,\n );\n }\n // Resolve the partition key range id.\n partitionKeyRangeId = await this.resolvePartitionKeyRangeId(operation, diagnosticNode);\n } catch (error) {\n operationError = error;\n }\n\n // Get helper & context.\n const helperForPartition = this.getHelperForPKRange(partitionKeyRangeId);\n const retryPolicy = this.getRetryPolicy();\n const context = new ItemOperationContext(partitionKeyRangeId, retryPolicy, diagnosticNode);\n const itemOperation: ItemOperation = {\n unencryptedOperationInput: unencryptedOperation,\n operationInput: operation,\n operationContext: context,\n };\n\n // Assign the promise (ensuring position matches input order)\n this.operationPromisesList[idx] = context.operationPromise;\n\n if (operationError) {\n const response: BulkOperationResult = {\n operationInput: unencryptedOperation,\n error: Object.assign(new ErrorResponse(operationError.message), {\n code: StatusCodes.InternalServerError,\n diagnostics: diagnosticNode?.toDiagnostic(this.clientContext.getClientConfig()),\n }),\n };\n context.fail(response);\n this.processedOperationCountRef.count++;\n return;\n }\n // Add the operation to the helper.\n return helperForPartition.add(itemOperation);\n }\n\n private async resolvePartitionKeyRangeId(\n operation: OperationInput,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<string> {\n const partitionKeyRanges = (\n await this.partitionKeyRangeCache.onCollectionRoutingMap(this.container.url, diagnosticNode)\n ).getOrderedParitionKeyRanges();\n\n const partitionKey = convertToInternalPartitionKey(operation.partitionKey);\n\n const hashedKey = hashPartitionKey(partitionKey, this.partitionKeyDefinition);\n\n const matchingRange = partitionKeyRanges.find((range) =>\n isKeyInRange(range.minInclusive, range.maxExclusive, hashedKey),\n );\n\n if (!matchingRange) {\n throw new Error(\"No matching partition key range found for the operation.\");\n }\n return matchingRange.id;\n }\n\n private getRetryPolicy(): RetryPolicy {\n const nextRetryPolicy = new ResourceThrottleRetryPolicy(this.clientContext.getRetryOptions());\n return new BulkExecutionRetryPolicy(nextRetryPolicy);\n }\n\n private async executeRequest(\n operations: ItemOperation[],\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<BulkResponse> {\n if (this.isCancelled) {\n throw new ErrorResponse(\"Bulk execution cancelled due to a previous error.\");\n }\n if (!operations.length) return;\n const pkRangeId = operations[0].operationContext.pkRangeId;\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const requestBody: Operation[] = [];\n for (const itemOperation of operations) {\n requestBody.push(this.prepareOperation(itemOperation.operationInput));\n }\n if (!this.options.containerRid) {\n this.options.containerRid = this.container._rid;\n }\n try {\n const response = await addDiagnosticChild(\n async (childNode: DiagnosticNodeInternal) =>\n this.clientContext.bulk({\n body: requestBody,\n partitionKeyRangeId: pkRangeId,\n path: path,\n resourceId: this.container.url,\n options: this.options,\n diagnosticNode: childNode,\n }),\n diagnosticNode,\n DiagnosticNodeType.BATCH_REQUEST,\n );\n if (!response) {\n throw new ErrorResponse(\"Failed to fetch bulk response.\");\n }\n return BulkResponse.fromResponseMessage(response, operations);\n } catch (error) {\n if (this.clientContext.enableEncryption) {\n try {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n } catch (err) {\n await this.cancelExecution(err);\n return BulkResponse.createEmptyResponse(operations, 0, 0, {});\n }\n }\n return BulkResponse.fromResponseMessage(error, operations);\n }\n }\n\n private prepareOperation(operationInput: OperationInput): Operation {\n operationInput.partitionKey = convertToInternalPartitionKey(operationInput.partitionKey);\n return {\n ...operationInput,\n partitionKey: JSON.stringify(operationInput.partitionKey),\n } as Operation;\n }\n\n private async reBatchOperation(\n operation: ItemOperation,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<void> {\n const partitionKeyRangeId = await this.resolvePartitionKeyRangeId(\n operation.operationInput,\n diagnosticNode,\n );\n operation.operationContext.updatePKRangeId(partitionKeyRangeId);\n const helper = this.getHelperForPKRange(partitionKeyRangeId);\n await helper.add(operation);\n }\n\n private async cancelExecution(error: ErrorResponse): Promise<void> {\n this.isCancelled = true;\n this.staleRidError = error;\n for (const helper of this.helpersByPartitionKeyRangeId.values()) {\n await helper.dispose();\n }\n this.helpersByPartitionKeyRangeId.clear();\n }\n\n private getHelperForPKRange(pkRangeId: string): HelperPerPartition {\n if (this.helpersByPartitionKeyRangeId.has(pkRangeId)) {\n return this.helpersByPartitionKeyRangeId.get(pkRangeId);\n }\n\n const newHelper = new HelperPerPartition(\n this.executeRequest,\n this.reBatchOperation,\n this.refreshPartitionKeyRangeCache,\n this.clientContext.diagnosticLevel,\n this.clientContext.enableEncryption,\n this.clientContext.getClientConfig(),\n this.container.encryptionProcessor,\n this.processedOperationCountRef,\n );\n this.helpersByPartitionKeyRangeId.set(pkRangeId, newHelper);\n return newHelper;\n }\n\n private runCongestionControlTimer(): void {\n this.congestionControlTimer = setInterval(() => {\n this.helpersByPartitionKeyRangeId.forEach((helper) => {\n helper.runCongestionAlgorithm();\n });\n }, this.congestionControlDelayInMs);\n }\n\n private async refreshPartitionKeyRangeCache(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<void> {\n await this.partitionKeyRangeCache.onCollectionRoutingMap(\n this.container.url,\n diagnosticNode,\n true,\n );\n }\n}\n"]}
|