@azure/cosmos 4.5.0-alpha.20250717.1 → 4.5.0-alpha.20250729.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.d.ts.map +1 -1
- package/dist/browser/CosmosClient.js +37 -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.d.ts.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js +20 -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.d.ts.map +1 -1
- package/dist/browser/client/Item/Items.js +12 -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/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.d.ts.map +1 -1
- package/dist/browser/encryption/EncryptionKeyStoreProvider.js +10 -2
- 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.js +21 -4
- package/dist/browser/globalEndpointManager.js.map +1 -1
- package/dist/browser/globalPartitionEndpointManager.d.ts.map +1 -1
- package/dist/browser/globalPartitionEndpointManager.js +16 -9
- 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.d.ts.map +1 -1
- package/dist/browser/request/request.js +8 -4
- 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.js +4 -3
- package/dist/browser/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.js +11 -2
- 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.js +2 -3
- 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.d.ts.map +1 -1
- package/dist/browser/retry/timeoutFailoverRetryPolicy.js +17 -7
- 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/browser/utils/time.d.ts +8 -0
- package/dist/browser/utils/time.d.ts.map +1 -1
- package/dist/browser/utils/time.js +19 -0
- package/dist/browser/utils/time.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.d.ts.map +1 -1
- package/dist/commonjs/CosmosClient.js +37 -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.d.ts.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js +20 -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.d.ts.map +1 -1
- package/dist/commonjs/client/Item/Items.js +12 -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/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.d.ts.map +1 -1
- package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js +7 -1
- 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.d.ts.map +1 -1
- package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js +10 -2
- 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.js +21 -4
- package/dist/commonjs/globalEndpointManager.js.map +1 -1
- package/dist/commonjs/globalPartitionEndpointManager.d.ts.map +1 -1
- package/dist/commonjs/globalPartitionEndpointManager.js +16 -9
- 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.d.ts.map +1 -1
- package/dist/commonjs/request/request.js +8 -4
- 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.js +4 -3
- package/dist/commonjs/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js +11 -2
- 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.js +2 -3
- 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.d.ts.map +1 -1
- package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js +17 -7
- 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 +11 -11
- 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/commonjs/utils/time.d.ts +8 -0
- package/dist/commonjs/utils/time.d.ts.map +1 -1
- package/dist/commonjs/utils/time.js +20 -0
- package/dist/commonjs/utils/time.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.d.ts.map +1 -1
- package/dist/esm/CosmosClient.js +37 -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.d.ts.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js +20 -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.d.ts.map +1 -1
- package/dist/esm/client/Item/Items.js +12 -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/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.d.ts.map +1 -1
- package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js +7 -1
- 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.d.ts.map +1 -1
- package/dist/esm/encryption/EncryptionKeyStoreProvider.js +10 -2
- 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.js +21 -4
- package/dist/esm/globalEndpointManager.js.map +1 -1
- package/dist/esm/globalPartitionEndpointManager.d.ts.map +1 -1
- package/dist/esm/globalPartitionEndpointManager.js +16 -9
- 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.d.ts.map +1 -1
- package/dist/esm/request/request.js +8 -4
- 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.js +4 -3
- package/dist/esm/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.js +11 -2
- 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.js +2 -3
- 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.d.ts.map +1 -1
- package/dist/esm/retry/timeoutFailoverRetryPolicy.js +17 -7
- 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/esm/utils/time.d.ts +8 -0
- package/dist/esm/utils/time.d.ts.map +1 -1
- package/dist/esm/utils/time.js +19 -0
- package/dist/esm/utils/time.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.d.ts.map +1 -1
- package/dist/react-native/CosmosClient.js +37 -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.d.ts.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js +20 -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.d.ts.map +1 -1
- package/dist/react-native/client/Item/Items.js +12 -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/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.d.ts.map +1 -1
- package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js +7 -1
- 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.d.ts.map +1 -1
- package/dist/react-native/encryption/EncryptionKeyStoreProvider.js +10 -2
- 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.js +21 -4
- package/dist/react-native/globalEndpointManager.js.map +1 -1
- package/dist/react-native/globalPartitionEndpointManager.d.ts.map +1 -1
- package/dist/react-native/globalPartitionEndpointManager.js +16 -9
- 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.d.ts.map +1 -1
- package/dist/react-native/request/request.js +8 -4
- 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.js +4 -3
- package/dist/react-native/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js +11 -2
- 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.js +2 -3
- 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.d.ts.map +1 -1
- package/dist/react-native/retry/timeoutFailoverRetryPolicy.js +17 -7
- 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/dist/react-native/utils/time.d.ts +8 -0
- package/dist/react-native/utils/time.d.ts.map +1 -1
- package/dist/react-native/utils/time.js +19 -0
- package/dist/react-native/utils/time.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,8 +9,13 @@ import { isSuccessStatusCode } from "../utils/batch.js";
|
|
|
9
9
|
* @hidden
|
|
10
10
|
*/
|
|
11
11
|
export class BulkResponse {
|
|
12
|
+
statusCode;
|
|
13
|
+
subStatusCode;
|
|
14
|
+
headers;
|
|
15
|
+
operations;
|
|
16
|
+
results = [];
|
|
17
|
+
diagnostics;
|
|
12
18
|
constructor(statusCode, subStatusCode, headers, operations) {
|
|
13
|
-
this.results = [];
|
|
14
19
|
this.statusCode = statusCode;
|
|
15
20
|
this.subStatusCode = subStatusCode;
|
|
16
21
|
this.headers = headers;
|
|
@@ -28,7 +33,6 @@ export class BulkResponse {
|
|
|
28
33
|
* static method to create BulkResponse from Response object
|
|
29
34
|
*/
|
|
30
35
|
static fromResponseMessage(responseMessage, operations) {
|
|
31
|
-
var _a;
|
|
32
36
|
// Create and populate the response object
|
|
33
37
|
let bulkResponse = this.populateFromResponse(responseMessage, operations);
|
|
34
38
|
if (!bulkResponse.results || bulkResponse.results.length !== operations.length) {
|
|
@@ -40,7 +44,7 @@ export class BulkResponse {
|
|
|
40
44
|
// When the overall response status code is TooManyRequests, propagate the RetryAfter into the individual operations.
|
|
41
45
|
let retryAfterMilliseconds = 0;
|
|
42
46
|
if (responseMessage.code === StatusCodes.TooManyRequests) {
|
|
43
|
-
const retryAfter =
|
|
47
|
+
const retryAfter = responseMessage.headers?.[Constants.HttpHeaders.RetryAfterInMs];
|
|
44
48
|
retryAfterMilliseconds = !retryAfter || isNaN(Number(retryAfter)) ? 0 : Number(retryAfter);
|
|
45
49
|
}
|
|
46
50
|
bulkResponse.createAndPopulateResults(operations, retryAfterMilliseconds, responseMessage);
|
|
@@ -48,19 +52,18 @@ export class BulkResponse {
|
|
|
48
52
|
return bulkResponse;
|
|
49
53
|
}
|
|
50
54
|
static populateFromResponse(responseMessage, operations) {
|
|
51
|
-
var _a, _b, _c;
|
|
52
55
|
const results = [];
|
|
53
56
|
if (responseMessage.result) {
|
|
54
57
|
for (let i = 0; i < operations.length; i++) {
|
|
55
58
|
const itemResponse = responseMessage.result[i];
|
|
56
|
-
if (isSuccessStatusCode(itemResponse
|
|
59
|
+
if (isSuccessStatusCode(itemResponse?.statusCode)) {
|
|
57
60
|
const result = {
|
|
58
|
-
statusCode: itemResponse
|
|
59
|
-
eTag: itemResponse
|
|
60
|
-
activityId:
|
|
61
|
-
sessionToken:
|
|
62
|
-
requestCharge: itemResponse
|
|
63
|
-
resourceBody: itemResponse
|
|
61
|
+
statusCode: itemResponse?.statusCode,
|
|
62
|
+
eTag: itemResponse?.eTag,
|
|
63
|
+
activityId: responseMessage.headers?.[Constants.HttpHeaders.ActivityId],
|
|
64
|
+
sessionToken: responseMessage.headers?.[Constants.HttpHeaders.SessionToken],
|
|
65
|
+
requestCharge: itemResponse?.requestCharge,
|
|
66
|
+
resourceBody: itemResponse?.resourceBody,
|
|
64
67
|
// diagnostics will be filled in Batcher dispatch to capture the complete diagnostics(e.g. decryption)
|
|
65
68
|
diagnostics: null,
|
|
66
69
|
headers: responseMessage.headers,
|
|
@@ -69,14 +72,14 @@ export class BulkResponse {
|
|
|
69
72
|
}
|
|
70
73
|
else {
|
|
71
74
|
const error = new ErrorResponse();
|
|
72
|
-
error.code = itemResponse
|
|
73
|
-
error.substatus = itemResponse
|
|
74
|
-
error.message = itemResponse
|
|
75
|
-
error.requestCharge = itemResponse
|
|
76
|
-
error.body = itemResponse
|
|
75
|
+
error.code = itemResponse?.statusCode;
|
|
76
|
+
error.substatus = itemResponse?.subStatusCode;
|
|
77
|
+
error.message = itemResponse?.message;
|
|
78
|
+
error.requestCharge = itemResponse?.requestCharge;
|
|
79
|
+
error.body = itemResponse?.resourceBody;
|
|
77
80
|
error.headers = responseMessage.headers;
|
|
78
|
-
error.activityId =
|
|
79
|
-
error.retryAfterInMs = itemResponse
|
|
81
|
+
error.activityId = responseMessage.headers?.[Constants.HttpHeaders.ActivityId];
|
|
82
|
+
error.retryAfterInMs = itemResponse?.retryAfterMilliseconds;
|
|
80
83
|
error.diagnostics = responseMessage.diagnostics;
|
|
81
84
|
results.push(error);
|
|
82
85
|
}
|
|
@@ -101,13 +104,12 @@ export class BulkResponse {
|
|
|
101
104
|
}
|
|
102
105
|
createAndPopulateResults(operations, retryAfterInMs, error) {
|
|
103
106
|
this.results = operations.map(() => {
|
|
104
|
-
var _a;
|
|
105
107
|
const errorResponse = new ErrorResponse();
|
|
106
108
|
errorResponse.message = error.message;
|
|
107
109
|
errorResponse.code = this.statusCode;
|
|
108
110
|
errorResponse.substatus = this.subStatusCode;
|
|
109
111
|
errorResponse.retryAfterInMs = retryAfterInMs;
|
|
110
|
-
errorResponse.activityId =
|
|
112
|
+
errorResponse.activityId = this.headers?.[Constants.HttpHeaders.ActivityId];
|
|
111
113
|
errorResponse.body = error.body;
|
|
112
114
|
errorResponse.diagnostics = error.diagnostics;
|
|
113
115
|
errorResponse.headers = this.headers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkResponse.js","sourceRoot":"","sources":["../../../src/bulk/BulkResponse.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, SubStatusCodes } from \"../common/statusCodes.js\";\nimport type { CosmosDiagnostics, Response } from \"../index.js\";\nimport { ErrorResponse } from \"../index.js\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/headerUtils.js\";\nimport type { StatusCode, SubStatusCode } from \"../request/StatusCodes.js\";\nimport type { ExtendedOperationResponse } from \"../utils/batch.js\";\nimport { isSuccessStatusCode } from \"../utils/batch.js\";\nimport type { ItemOperation } from \"./index.js\";\n\n/**\n * Represents a batch response for bulk request.\n * @hidden\n */\n\nexport class BulkResponse {\n statusCode: StatusCode;\n subStatusCode: SubStatusCode;\n headers: CosmosHeaders;\n operations: ItemOperation[];\n results: (ExtendedOperationResponse | ErrorResponse)[] = [];\n diagnostics: CosmosDiagnostics;\n\n constructor(\n statusCode: StatusCode,\n subStatusCode: SubStatusCode,\n headers: CosmosHeaders,\n operations: ItemOperation[],\n ) {\n this.statusCode = statusCode;\n this.subStatusCode = subStatusCode;\n this.headers = headers;\n this.operations = operations;\n }\n\n /**\n * Generate empty response object\n */\n static createEmptyResponse(\n operations: ItemOperation[],\n statusCode: StatusCode,\n subStatusCode: SubStatusCode,\n headers: CosmosHeaders,\n ): BulkResponse {\n const bulkResponse = new BulkResponse(statusCode, subStatusCode, headers, operations);\n bulkResponse.createAndPopulateResults(operations, 0, new ErrorResponse());\n return bulkResponse;\n }\n\n /**\n * static method to create BulkResponse from Response object\n */\n static fromResponseMessage(\n responseMessage: Response<any>,\n operations: ItemOperation[],\n ): BulkResponse {\n // Create and populate the response object\n let bulkResponse = this.populateFromResponse(responseMessage, operations);\n\n if (!bulkResponse.results || bulkResponse.results.length !== operations.length) {\n // Server should be guaranteeing number of results equal to operations when\n // batch request is successful - so fail as InternalServerError if this is not the case.\n if (isSuccessStatusCode(responseMessage.code)) {\n bulkResponse = new BulkResponse(\n StatusCodes.InternalServerError,\n SubStatusCodes.Unknown,\n responseMessage.headers,\n operations,\n );\n }\n\n // When the overall response status code is TooManyRequests, propagate the RetryAfter into the individual operations.\n let retryAfterMilliseconds = 0;\n\n if (responseMessage.code === StatusCodes.TooManyRequests) {\n const retryAfter = responseMessage.headers?.[Constants.HttpHeaders.RetryAfterInMs];\n retryAfterMilliseconds = !retryAfter || isNaN(Number(retryAfter)) ? 0 : Number(retryAfter);\n }\n\n bulkResponse.createAndPopulateResults(\n operations,\n retryAfterMilliseconds,\n responseMessage as ErrorResponse,\n );\n }\n return bulkResponse;\n }\n\n private static populateFromResponse(\n responseMessage: Response<any>,\n operations: ItemOperation[],\n ): BulkResponse {\n const results: (ExtendedOperationResponse | ErrorResponse)[] = [];\n\n if (responseMessage.result) {\n for (let i = 0; i < operations.length; i++) {\n const itemResponse = responseMessage.result[i];\n\n if (isSuccessStatusCode(itemResponse?.statusCode)) {\n const result: ExtendedOperationResponse = {\n statusCode: itemResponse?.statusCode,\n eTag: itemResponse?.eTag,\n activityId: responseMessage.headers?.[Constants.HttpHeaders.ActivityId],\n sessionToken: responseMessage.headers?.[Constants.HttpHeaders.SessionToken],\n requestCharge: itemResponse?.requestCharge,\n resourceBody: itemResponse?.resourceBody,\n // diagnostics will be filled in Batcher dispatch to capture the complete diagnostics(e.g. decryption)\n diagnostics: null,\n headers: responseMessage.headers,\n };\n results.push(result);\n } else {\n const error: ErrorResponse = new ErrorResponse();\n error.code = itemResponse?.statusCode;\n error.substatus = itemResponse?.subStatusCode;\n error.message = itemResponse?.message;\n error.requestCharge = itemResponse?.requestCharge;\n error.body = itemResponse?.resourceBody;\n error.headers = responseMessage.headers;\n error.activityId = responseMessage.headers?.[Constants.HttpHeaders.ActivityId];\n error.retryAfterInMs = itemResponse?.retryAfterMilliseconds;\n error.diagnostics = responseMessage.diagnostics;\n results.push(error);\n }\n }\n }\n let statusCode = responseMessage.code;\n let subStatusCode = responseMessage.substatus;\n\n if (responseMessage.code === StatusCodes.MultiStatus) {\n for (const result of results) {\n if (\n result instanceof ErrorResponse &&\n result.statusCode !== StatusCodes.FailedDependency &&\n result.statusCode >= StatusCodes.BadRequest\n ) {\n statusCode = typeof result.code === \"number\" ? result.code : Number(result.code);\n subStatusCode = result.substatus;\n break;\n }\n }\n }\n\n const bulkResponse = new BulkResponse(\n statusCode,\n subStatusCode,\n responseMessage.headers,\n operations,\n );\n bulkResponse.results = results;\n return bulkResponse;\n }\n\n private createAndPopulateResults(\n operations: ItemOperation[],\n retryAfterInMs: number,\n error: ErrorResponse,\n ): void {\n this.results = operations.map(() => {\n const errorResponse = new ErrorResponse();\n errorResponse.message = error.message;\n errorResponse.code = this.statusCode;\n errorResponse.substatus = this.subStatusCode;\n errorResponse.retryAfterInMs = retryAfterInMs;\n errorResponse.activityId = this.headers?.[Constants.HttpHeaders.ActivityId];\n errorResponse.body = error.body;\n errorResponse.diagnostics = error.diagnostics;\n errorResponse.headers = this.headers;\n errorResponse.requestCharge = error.requestCharge;\n return errorResponse;\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BulkResponse.js","sourceRoot":"","sources":["../../../src/bulk/BulkResponse.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, SubStatusCodes } from \"../common/statusCodes.js\";\nimport type { CosmosDiagnostics, Response } from \"../index.js\";\nimport { ErrorResponse } from \"../index.js\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/headerUtils.js\";\nimport type { StatusCode, SubStatusCode } from \"../request/StatusCodes.js\";\nimport type { ExtendedOperationResponse } from \"../utils/batch.js\";\nimport { isSuccessStatusCode } from \"../utils/batch.js\";\nimport type { ItemOperation } from \"./index.js\";\n\n/**\n * Represents a batch response for bulk request.\n * @hidden\n */\n\nexport class BulkResponse {\n statusCode: StatusCode;\n subStatusCode: SubStatusCode;\n headers: CosmosHeaders;\n operations: ItemOperation[];\n results: (ExtendedOperationResponse | ErrorResponse)[] = [];\n diagnostics: CosmosDiagnostics;\n\n constructor(\n statusCode: StatusCode,\n subStatusCode: SubStatusCode,\n headers: CosmosHeaders,\n operations: ItemOperation[],\n ) {\n this.statusCode = statusCode;\n this.subStatusCode = subStatusCode;\n this.headers = headers;\n this.operations = operations;\n }\n\n /**\n * Generate empty response object\n */\n static createEmptyResponse(\n operations: ItemOperation[],\n statusCode: StatusCode,\n subStatusCode: SubStatusCode,\n headers: CosmosHeaders,\n ): BulkResponse {\n const bulkResponse = new BulkResponse(statusCode, subStatusCode, headers, operations);\n bulkResponse.createAndPopulateResults(operations, 0, new ErrorResponse());\n return bulkResponse;\n }\n\n /**\n * static method to create BulkResponse from Response object\n */\n static fromResponseMessage(\n responseMessage: Response<any>,\n operations: ItemOperation[],\n ): BulkResponse {\n // Create and populate the response object\n let bulkResponse = this.populateFromResponse(responseMessage, operations);\n\n if (!bulkResponse.results || bulkResponse.results.length !== operations.length) {\n // Server should be guaranteeing number of results equal to operations when\n // batch request is successful - so fail as InternalServerError if this is not the case.\n if (isSuccessStatusCode(responseMessage.code)) {\n bulkResponse = new BulkResponse(\n StatusCodes.InternalServerError,\n SubStatusCodes.Unknown,\n responseMessage.headers,\n operations,\n );\n }\n\n // When the overall response status code is TooManyRequests, propagate the RetryAfter into the individual operations.\n let retryAfterMilliseconds = 0;\n\n if (responseMessage.code === StatusCodes.TooManyRequests) {\n const retryAfter = responseMessage.headers?.[Constants.HttpHeaders.RetryAfterInMs];\n retryAfterMilliseconds = !retryAfter || isNaN(Number(retryAfter)) ? 0 : Number(retryAfter);\n }\n\n bulkResponse.createAndPopulateResults(\n operations,\n retryAfterMilliseconds,\n responseMessage as ErrorResponse,\n );\n }\n return bulkResponse;\n }\n\n private static populateFromResponse(\n responseMessage: Response<any>,\n operations: ItemOperation[],\n ): BulkResponse {\n const results: (ExtendedOperationResponse | ErrorResponse)[] = [];\n\n if (responseMessage.result) {\n for (let i = 0; i < operations.length; i++) {\n const itemResponse = responseMessage.result[i];\n\n if (isSuccessStatusCode(itemResponse?.statusCode)) {\n const result: ExtendedOperationResponse = {\n statusCode: itemResponse?.statusCode,\n eTag: itemResponse?.eTag,\n activityId: responseMessage.headers?.[Constants.HttpHeaders.ActivityId],\n sessionToken: responseMessage.headers?.[Constants.HttpHeaders.SessionToken],\n requestCharge: itemResponse?.requestCharge,\n resourceBody: itemResponse?.resourceBody,\n // diagnostics will be filled in Batcher dispatch to capture the complete diagnostics(e.g. decryption)\n diagnostics: null,\n headers: responseMessage.headers,\n };\n results.push(result);\n } else {\n const error: ErrorResponse = new ErrorResponse();\n error.code = itemResponse?.statusCode;\n error.substatus = itemResponse?.subStatusCode;\n error.message = itemResponse?.message;\n error.requestCharge = itemResponse?.requestCharge;\n error.body = itemResponse?.resourceBody;\n error.headers = responseMessage.headers;\n error.activityId = responseMessage.headers?.[Constants.HttpHeaders.ActivityId];\n error.retryAfterInMs = itemResponse?.retryAfterMilliseconds;\n error.diagnostics = responseMessage.diagnostics;\n results.push(error);\n }\n }\n }\n let statusCode = responseMessage.code;\n let subStatusCode = responseMessage.substatus;\n\n if (responseMessage.code === StatusCodes.MultiStatus) {\n for (const result of results) {\n if (\n result instanceof ErrorResponse &&\n result.statusCode !== StatusCodes.FailedDependency &&\n result.statusCode >= StatusCodes.BadRequest\n ) {\n statusCode = typeof result.code === \"number\" ? result.code : Number(result.code);\n subStatusCode = result.substatus;\n break;\n }\n }\n }\n\n const bulkResponse = new BulkResponse(\n statusCode,\n subStatusCode,\n responseMessage.headers,\n operations,\n );\n bulkResponse.results = results;\n return bulkResponse;\n }\n\n private createAndPopulateResults(\n operations: ItemOperation[],\n retryAfterInMs: number,\n error: ErrorResponse,\n ): void {\n this.results = operations.map(() => {\n const errorResponse = new ErrorResponse();\n errorResponse.message = error.message;\n errorResponse.code = this.statusCode;\n errorResponse.substatus = this.subStatusCode;\n errorResponse.retryAfterInMs = retryAfterInMs;\n errorResponse.activityId = this.headers?.[Constants.HttpHeaders.ActivityId];\n errorResponse.body = error.body;\n errorResponse.diagnostics = error.diagnostics;\n errorResponse.headers = this.headers;\n errorResponse.requestCharge = error.requestCharge;\n return errorResponse;\n });\n }\n}\n"]}
|
|
@@ -13,11 +13,18 @@ import { Constants } from "../common/constants.js";
|
|
|
13
13
|
* @hidden
|
|
14
14
|
*/
|
|
15
15
|
export class CongestionAlgorithm {
|
|
16
|
+
// The semaphore to control the degree of concurrency.
|
|
17
|
+
limiterQueue;
|
|
18
|
+
// captures metrics upto previous requests for a partition.
|
|
19
|
+
oldPartitionMetric;
|
|
20
|
+
// captures metrics upto current request for a partition.
|
|
21
|
+
partitionMetric;
|
|
22
|
+
// time to wait before adjusting the degree of concurrency.
|
|
23
|
+
congestionWaitTimeInMs = 1000;
|
|
24
|
+
congestionIncreaseFactor = 1;
|
|
25
|
+
congestionDecreaseFactor = 5;
|
|
26
|
+
currentDegreeOfConcurrency;
|
|
16
27
|
constructor(limiterQueue, partitionMetric, oldPartitionMetric) {
|
|
17
|
-
// time to wait before adjusting the degree of concurrency.
|
|
18
|
-
this.congestionWaitTimeInMs = 1000;
|
|
19
|
-
this.congestionIncreaseFactor = 1;
|
|
20
|
-
this.congestionDecreaseFactor = 5;
|
|
21
28
|
this.limiterQueue = limiterQueue;
|
|
22
29
|
this.oldPartitionMetric = oldPartitionMetric;
|
|
23
30
|
this.partitionMetric = partitionMetric;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CongestionAlgorithm.js","sourceRoot":"","sources":["../../../src/bulk/CongestionAlgorithm.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD;;;;;;;;;;GAUG;AAEH,MAAM,OAAO,mBAAmB;
|
|
1
|
+
{"version":3,"file":"CongestionAlgorithm.js","sourceRoot":"","sources":["../../../src/bulk/CongestionAlgorithm.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD;;;;;;;;;;GAUG;AAEH,MAAM,OAAO,mBAAmB;IAC9B,sDAAsD;IAC9C,YAAY,CAAe;IACnC,2DAA2D;IACnD,kBAAkB,CAAkB;IAC5C,yDAAyD;IACjD,eAAe,CAAkB;IACzC,2DAA2D;IACnD,sBAAsB,GAAW,IAAI,CAAC;IACtC,wBAAwB,GAAW,CAAC,CAAC;IACrC,wBAAwB,GAAW,CAAC,CAAC;IACrC,0BAA0B,CAAS;IAE3C,YACE,YAA0B,EAC1B,eAAgC,EAChC,kBAAmC;QAEnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,0BAA0B,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,GAAG;QACD,MAAM,eAAe,GACnB,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;QAE7E,IAAI,eAAe,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACnD,MAAM,YAAY,GAChB,IAAI,CAAC,eAAe,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;YACrF,MAAM,gBAAgB,GACpB,IAAI,CAAC,eAAe,CAAC,uBAAuB;gBAC5C,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC;YAElD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;YAC7E,4EAA4E;YAC5E,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC;YACD,4GAA4G;YAC5G,IAAI,gBAAgB,GAAG,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,mBAAmB;QACzB,2DAA2D;QAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAC5B,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,GAAG,CAAC,CAAC,CAChD,CAAC;QACF,IAAI,CAAC,0BAA0B,IAAI,aAAa,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAClE,oFAAoF;QACpF,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC;IACtC,CAAC;IAEO,mBAAmB;QACzB,IACE,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,wBAAwB;YAC/D,SAAS,CAAC,0BAA0B,EACpC,CAAC;YACD,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,wBAAwB,CAAC;YACjE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"../common/constants.js\";\nimport type { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { LimiterQueue } from \"./Limiter.js\";\n\n/**\n * This class implements a congestion control algorithm which dynamically adjusts the degree\n * of concurrency based on the throttling and number of processed items.\n * For example, if it sees any throttling in requests from the last time the algorithm ran, it will decrease the\n * degree of concurrency (either by a factor of 5 or half the current degree of concurrency, whichever is smaller)\n * and increase the wait time to run the algorithm again by 1 second.\n * If it sees no throttling and the number of items processed increased, it will increase the degree of concurrency\n * (by a factor of 1) which cannot exceed the max degree of concurrency (Min(20, concurrency set by user)).\n * It uses the @see {@link PartitionMetric} to capture the metrics.\n * @hidden\n */\n\nexport class CongestionAlgorithm {\n // The semaphore to control the degree of concurrency.\n private limiterQueue: LimiterQueue;\n // captures metrics upto previous requests for a partition.\n private oldPartitionMetric: PartitionMetric;\n // captures metrics upto current request for a partition.\n private partitionMetric: PartitionMetric;\n // time to wait before adjusting the degree of concurrency.\n private congestionWaitTimeInMs: number = 1000;\n private congestionIncreaseFactor: number = 1;\n private congestionDecreaseFactor: number = 5;\n private currentDegreeOfConcurrency: number;\n\n constructor(\n limiterQueue: LimiterQueue,\n partitionMetric: PartitionMetric,\n oldPartitionMetric: PartitionMetric,\n ) {\n this.limiterQueue = limiterQueue;\n this.oldPartitionMetric = oldPartitionMetric;\n this.partitionMetric = partitionMetric;\n this.currentDegreeOfConcurrency = 1;\n }\n\n run(): void {\n const elapsedTimeInMs =\n this.partitionMetric.timeTakenInMs - this.oldPartitionMetric.timeTakenInMs;\n\n if (elapsedTimeInMs >= this.congestionWaitTimeInMs) {\n const diffThrottle =\n this.partitionMetric.numberOfThrottles - this.oldPartitionMetric.numberOfThrottles;\n const changeItemsCount =\n this.partitionMetric.numberOfItemsOperatedOn -\n this.oldPartitionMetric.numberOfItemsOperatedOn;\n\n this.oldPartitionMetric.add(changeItemsCount, elapsedTimeInMs, diffThrottle);\n // if the number of throttles increased, decrease the degree of concurrency.\n if (diffThrottle > 0) {\n this.decreaseConcurrency();\n }\n // if there's no throttling and the number of items processed increased, increase the degree of concurrency.\n if (changeItemsCount > 0 && diffThrottle === 0) {\n this.increaseConcurrency();\n }\n }\n }\n\n private decreaseConcurrency(): void {\n // decrease should not lead the degree of concurrency as 0.\n const decreaseCount = Math.min(\n this.congestionDecreaseFactor,\n Math.floor(this.currentDegreeOfConcurrency / 2),\n );\n this.currentDegreeOfConcurrency -= decreaseCount;\n this.limiterQueue.setConcurrency(this.currentDegreeOfConcurrency);\n // In case of throttling increase the wait time to adjust the degree of concurrency.\n this.congestionWaitTimeInMs += 1000;\n }\n\n private increaseConcurrency(): void {\n if (\n this.currentDegreeOfConcurrency + this.congestionIncreaseFactor <=\n Constants.BulkMaxDegreeOfConcurrency\n ) {\n this.currentDegreeOfConcurrency += this.congestionIncreaseFactor;\n this.limiterQueue.setConcurrency(this.currentDegreeOfConcurrency);\n }\n }\n}\n"]}
|
|
@@ -12,8 +12,21 @@ import { LimiterQueue } from "./Limiter.js";
|
|
|
12
12
|
* @hidden
|
|
13
13
|
*/
|
|
14
14
|
export class HelperPerPartition {
|
|
15
|
+
executor;
|
|
16
|
+
retrier;
|
|
17
|
+
currentBatcher;
|
|
18
|
+
lock;
|
|
19
|
+
partitionMetric;
|
|
20
|
+
oldPartitionMetric;
|
|
21
|
+
diagnosticLevel;
|
|
22
|
+
encryptionEnabled;
|
|
23
|
+
encryptionProcessor;
|
|
24
|
+
clientConfigDiagnostics;
|
|
25
|
+
congestionControlAlgorithm;
|
|
26
|
+
dispatchLimiterQueue;
|
|
27
|
+
initialConcurrency = 1;
|
|
28
|
+
processedOperationCountRef;
|
|
15
29
|
constructor(executor, retrier, refreshpartitionKeyRangeCache, diagnosticLevel, encryptionEnabled, clientConfig, encryptionProcessor, processedOperationCountRef) {
|
|
16
|
-
this.initialConcurrency = 1;
|
|
17
30
|
this.executor = executor;
|
|
18
31
|
this.retrier = retrier;
|
|
19
32
|
this.diagnosticLevel = diagnosticLevel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelperPerPartition.js","sourceRoot":"","sources":["../../../src/bulk/HelperPerPartition.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;GAIG;AAEH,MAAM,OAAO,kBAAkB;
|
|
1
|
+
{"version":3,"file":"HelperPerPartition.js","sourceRoot":"","sources":["../../../src/bulk/HelperPerPartition.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport semaphore from \"semaphore\";\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport type { CosmosDbDiagnosticLevel } from \"../diagnostics/CosmosDbDiagnosticLevel.js\";\nimport type { EncryptionProcessor } from \"../encryption/EncryptionProcessor.js\";\nimport type { ClientConfigDiagnostic, DiagnosticNodeInternal } from \"../index.js\";\nimport type { ExecuteCallback, RetryCallback, BulkOperationResult } from \"../utils/batch.js\";\nimport { Batcher } from \"./Batcher.js\";\nimport { CongestionAlgorithm } from \"./CongestionAlgorithm.js\";\nimport { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { ItemOperation } from \"./index.js\";\nimport { LimiterQueue } from \"./Limiter.js\";\n\n/**\n * Handles operations batching and queuing for dispatch. Fills batches efficiently. There is always one batch at a time being filled. When the batch is full, it is added to the\n * dispatch queue and a new batch is created.\n * @hidden\n */\n\nexport class HelperPerPartition {\n private readonly executor: ExecuteCallback;\n private readonly retrier: RetryCallback;\n private currentBatcher: Batcher;\n private readonly lock: semaphore.Semaphore;\n private readonly partitionMetric: PartitionMetric;\n private readonly oldPartitionMetric: PartitionMetric;\n private readonly diagnosticLevel: CosmosDbDiagnosticLevel;\n private readonly encryptionEnabled: boolean;\n private readonly encryptionProcessor: EncryptionProcessor;\n private readonly clientConfigDiagnostics: ClientConfigDiagnostic;\n private readonly congestionControlAlgorithm: CongestionAlgorithm;\n private readonly dispatchLimiterQueue: LimiterQueue;\n private initialConcurrency: number = 1;\n private processedOperationCountRef: { count: number };\n\n constructor(\n executor: ExecuteCallback,\n retrier: RetryCallback,\n refreshpartitionKeyRangeCache: (diagnosticNode: DiagnosticNodeInternal) => Promise<void>,\n diagnosticLevel: CosmosDbDiagnosticLevel,\n encryptionEnabled: boolean,\n clientConfig: ClientConfigDiagnostic,\n encryptionProcessor: EncryptionProcessor,\n processedOperationCountRef: { count: number },\n ) {\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.oldPartitionMetric = new PartitionMetric();\n this.partitionMetric = new PartitionMetric();\n this.processedOperationCountRef = processedOperationCountRef;\n this.lock = semaphore(1);\n this.dispatchLimiterQueue = new LimiterQueue(\n this.initialConcurrency,\n this.partitionMetric,\n this.retrier,\n refreshpartitionKeyRangeCache,\n );\n this.congestionControlAlgorithm = new CongestionAlgorithm(\n this.dispatchLimiterQueue,\n this.partitionMetric,\n this.oldPartitionMetric,\n );\n this.currentBatcher = this.createBatcher();\n }\n\n /**\n * Enqueues an operation into the current batch.\n * If the operation does not fit because the batch is full, the full batch is enqueued in the dispatch queue\n * and a new batch is created. The promise resolves when the operation has been successfully added.\n */\n async add(operation: ItemOperation): Promise<void> {\n return new Promise((resolve, reject) => {\n this.lock.take(() => {\n try {\n // If the current batch is full, move it to the dispatch queue until the operation fits.\n while (!this.currentBatcher.tryAdd(operation)) {\n const fullBatch = this.getBatchToQueueAndCreate();\n if (fullBatch) {\n this.dispatchLimiterQueue.push(fullBatch);\n }\n }\n // At this point the operation was added.\n resolve();\n } catch (err) {\n const response: BulkOperationResult = {\n operationInput: operation.unencryptedOperationInput,\n error: Object.assign(new Error(err.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 reject(err);\n } finally {\n this.lock.leave();\n }\n });\n });\n }\n\n /**\n * @returns the batch to be dispatched and creates a new one\n */\n private getBatchToQueueAndCreate(): Batcher {\n if (this.currentBatcher.isEmpty()) return null;\n const previousBatcher = this.currentBatcher;\n this.currentBatcher = this.createBatcher();\n return previousBatcher;\n }\n\n /**\n * In case there are leftover operations that did not fill a full batch,\n * dispatchUnfilledBatch will add those operations as a batch in the dispatch queue.\n */\n addPartialBatchToQueue(): void {\n this.lock.take(() => {\n try {\n if (!this.currentBatcher.isEmpty()) {\n const batch = this.currentBatcher;\n this.currentBatcher = this.createBatcher();\n this.dispatchLimiterQueue.push(batch);\n }\n } finally {\n this.lock.leave();\n }\n });\n }\n\n private createBatcher(): Batcher {\n return new Batcher(\n this.dispatchLimiterQueue,\n this.executor,\n this.retrier,\n this.diagnosticLevel,\n this.encryptionEnabled,\n this.clientConfigDiagnostics,\n this.encryptionProcessor,\n this.processedOperationCountRef,\n );\n }\n /**\n * Runs congestion algo for a partition.\n * Controlled by a single timer for all the partitions.\n */\n public runCongestionAlgorithm(): void {\n this.congestionControlAlgorithm.run();\n }\n\n /**\n * Empties the dispatch queue and clears the current batch.\n * This is used in case of stale container Rid detected for encryption operations\n */\n public async dispose(): Promise<void> {\n await this.dispatchLimiterQueue.pauseAndClear(null);\n this.currentBatcher = undefined;\n }\n}\n"]}
|
|
@@ -6,6 +6,10 @@ import { TaskCompletionSource } from "../utils/batch.js";
|
|
|
6
6
|
* @hidden
|
|
7
7
|
*/
|
|
8
8
|
export class ItemOperationContext {
|
|
9
|
+
pkRangeId;
|
|
10
|
+
retryPolicy;
|
|
11
|
+
diagnosticNode;
|
|
12
|
+
taskCompletionSource;
|
|
9
13
|
constructor(pkRangeId, retryPolicy, diagnosticNode) {
|
|
10
14
|
this.pkRangeId = pkRangeId;
|
|
11
15
|
this.retryPolicy = retryPolicy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemOperationContext.js","sourceRoot":"","sources":["../../../src/bulk/ItemOperationContext.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,oBAAoB;
|
|
1
|
+
{"version":3,"file":"ItemOperationContext.js","sourceRoot":"","sources":["../../../src/bulk/ItemOperationContext.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAC/B,SAAS,CAAS;IAClB,WAAW,CAAc;IACzB,cAAc,CAAyB;IACtB,oBAAoB,CAA4C;IAEjF,YAAY,SAAiB,EAAE,WAAwB,EAAE,cAAsC;QAC7F,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,EAAuB,CAAC;IAC9E,CAAC;IAED,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,kBAAkB,CAAC,cAAsC;QACvD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1F,cAAc,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC;IAED,eAAe,CAAC,SAAiB;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,MAA2B;QAClC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,KAA0B;QAC7B,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { RetryPolicy } from \"../retry/RetryPolicy.js\";\nimport type { BulkOperationResult } from \"../utils/batch.js\";\nimport { TaskCompletionSource } from \"../utils/batch.js\";\n\n/**\n * Context for a particular @see {@link ItemOperation}.\n * @hidden\n */\nexport class ItemOperationContext {\n pkRangeId: string;\n retryPolicy: RetryPolicy;\n diagnosticNode: DiagnosticNodeInternal;\n private readonly taskCompletionSource: TaskCompletionSource<BulkOperationResult>;\n\n constructor(pkRangeId: string, retryPolicy: RetryPolicy, diagnosticNode: DiagnosticNodeInternal) {\n this.pkRangeId = pkRangeId;\n this.retryPolicy = retryPolicy;\n this.diagnosticNode = diagnosticNode;\n this.taskCompletionSource = new TaskCompletionSource<BulkOperationResult>();\n }\n\n public get operationPromise(): Promise<BulkOperationResult> {\n return this.taskCompletionSource.task;\n }\n\n addDiagnosticChild(diagnosticNode: DiagnosticNodeInternal): void {\n this.diagnosticNode.addBulkChildNode(diagnosticNode, this.diagnosticNode.diagnosticLevel);\n diagnosticNode.updateTimestamp();\n }\n\n updatePKRangeId(pkRangeId: string): void {\n this.pkRangeId = pkRangeId;\n }\n\n complete(result: BulkOperationResult): void {\n this.taskCompletionSource.setResult(result);\n }\n\n fail(error: BulkOperationResult): void {\n this.taskCompletionSource.setException(error.error);\n }\n}\n"]}
|
|
@@ -2,18 +2,17 @@
|
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
import { StatusCodes } from "../common/statusCodes.js";
|
|
4
4
|
class ListNode {
|
|
5
|
+
value;
|
|
6
|
+
next = null;
|
|
7
|
+
prev = null;
|
|
5
8
|
constructor(value) {
|
|
6
|
-
this.next = null;
|
|
7
|
-
this.prev = null;
|
|
8
9
|
this.value = value;
|
|
9
10
|
}
|
|
10
11
|
}
|
|
11
12
|
class DoublyLinkedList {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
this.length = 0;
|
|
16
|
-
}
|
|
13
|
+
head = null;
|
|
14
|
+
tail = null;
|
|
15
|
+
length = 0;
|
|
17
16
|
push(value) {
|
|
18
17
|
const node = new ListNode(value);
|
|
19
18
|
if (!this.head) {
|
|
@@ -71,21 +70,31 @@ function scheduleCallback(fn) {
|
|
|
71
70
|
* any subsequent push() calls will immediately resolve with that value.
|
|
72
71
|
*/
|
|
73
72
|
export class LimiterQueue {
|
|
73
|
+
// maximum number of tasks allowed to run concurrently
|
|
74
|
+
concurrency;
|
|
75
|
+
// number of tasks currently executing
|
|
76
|
+
running = 0;
|
|
77
|
+
// doubly linked list to store batchers and resolve/reject functions for dispatch tasks
|
|
78
|
+
tasks = new DoublyLinkedList();
|
|
79
|
+
// boolean flag that indicates whether the queue has been permanently paused
|
|
80
|
+
terminated = false;
|
|
81
|
+
// value to resolve with when the queue is terminated
|
|
82
|
+
terminatedValue;
|
|
83
|
+
// indicates if the processing cycle has been scheduled via the asynchronous scheduler
|
|
84
|
+
scheduled = false;
|
|
85
|
+
// indicates whether the queue is currently in the process of dequeueing and executing tasks
|
|
86
|
+
processing = false;
|
|
87
|
+
// retry callback to retry all the queued operations in case of split/merge error
|
|
88
|
+
retrier;
|
|
89
|
+
// partiton metric for collecting metrics for the requests
|
|
90
|
+
partitionMetric;
|
|
91
|
+
// callback used to refresh the partition key range cache in case of split/merge error
|
|
92
|
+
refreshPartitionKeyRangeCache;
|
|
93
|
+
refreshPKRangeCachePromise = undefined;
|
|
74
94
|
/**
|
|
75
95
|
* Creates a new HighPerformanceQueue.
|
|
76
96
|
*/
|
|
77
97
|
constructor(concurrency, partitionMetric, retrier, refreshPartitionKeyRangeCache) {
|
|
78
|
-
// number of tasks currently executing
|
|
79
|
-
this.running = 0;
|
|
80
|
-
// doubly linked list to store batchers and resolve/reject functions for dispatch tasks
|
|
81
|
-
this.tasks = new DoublyLinkedList();
|
|
82
|
-
// boolean flag that indicates whether the queue has been permanently paused
|
|
83
|
-
this.terminated = false;
|
|
84
|
-
// indicates if the processing cycle has been scheduled via the asynchronous scheduler
|
|
85
|
-
this.scheduled = false;
|
|
86
|
-
// indicates whether the queue is currently in the process of dequeueing and executing tasks
|
|
87
|
-
this.processing = false;
|
|
88
|
-
this.refreshPKRangeCachePromise = undefined;
|
|
89
98
|
this.concurrency = concurrency;
|
|
90
99
|
this.partitionMetric = partitionMetric;
|
|
91
100
|
this.retrier = retrier;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Limiter.js","sourceRoot":"","sources":["../../../src/bulk/Limiter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { RetryCallback } from \"../utils/batch.js\";\nimport type { Batcher } from \"./Batcher.js\";\nimport type { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { ItemOperation } from \"./ItemOperation.js\";\n\nexport type Task<T = any> = () => Promise<T>;\n\ninterface QueueItem {\n batcher: Batcher;\n resolve: (value: any) => void;\n reject: (reason?: any) => void;\n}\n\nclass ListNode<T> {\n public value: T;\n public next: ListNode<T> | null = null;\n public prev: ListNode<T> | null = null;\n constructor(value: T) {\n this.value = value;\n }\n}\n\nclass DoublyLinkedList<T> {\n public head: ListNode<T> | null = null;\n public tail: ListNode<T> | null = null;\n public length = 0;\n\n public push(value: T): void {\n const node = new ListNode(value);\n if (!this.head) {\n this.head = this.tail = node;\n } else {\n this.tail!.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n this.length++;\n }\n\n public shift(): T | null {\n if (!this.head) return null;\n const value = this.head.value;\n this.head = this.head.next;\n if (this.head) {\n this.head.prev = null;\n } else {\n this.tail = null;\n }\n this.length--;\n return value;\n }\n\n public clear(): void {\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n public isEmpty(): boolean {\n return this.length === 0;\n }\n}\n\n/**\n * Returns a function that will schedule the given callback using the best available method.\n */\nfunction scheduleCallback(fn: () => void): void {\n if (typeof process !== \"undefined\" && typeof process.nextTick === \"function\") {\n process.nextTick(fn);\n } else if (typeof setImmediate === \"function\") {\n setImmediate(fn);\n } else {\n // eslint-disable-next-line promise/catch-or-return\n Promise.resolve().then(fn);\n }\n}\n\n/**\n * HighPerformanceQueue processes tasks concurrently.\n * If pauseAndClear() is called, it permanently halts processing,\n * clears queued tasks (resolving them with a custom value), and\n * any subsequent push() calls will immediately resolve with that value.\n */\nexport class LimiterQueue {\n // maximum number of tasks allowed to run concurrently\n public concurrency: number;\n // number of tasks currently executing\n private running = 0;\n // doubly linked list to store batchers and resolve/reject functions for dispatch tasks\n private tasks: DoublyLinkedList<QueueItem> = new DoublyLinkedList();\n // boolean flag that indicates whether the queue has been permanently paused\n private terminated = false;\n // value to resolve with when the queue is terminated\n private terminatedValue: any;\n // indicates if the processing cycle has been scheduled via the asynchronous scheduler\n private scheduled = false;\n // indicates whether the queue is currently in the process of dequeueing and executing tasks\n private processing = false;\n // retry callback to retry all the queued operations in case of split/merge error\n private retrier: RetryCallback;\n // partiton metric for collecting metrics for the requests\n private partitionMetric: PartitionMetric;\n // callback used to refresh the partition key range cache in case of split/merge error\n private readonly refreshPartitionKeyRangeCache: (diagnosticNode: any) => Promise<void>;\n private refreshPKRangeCachePromise: Promise<void> | undefined = undefined;\n /**\n * Creates a new HighPerformanceQueue.\n */\n constructor(\n concurrency: number,\n partitionMetric: PartitionMetric,\n retrier: RetryCallback,\n refreshPartitionKeyRangeCache: (diagnosticNode: any) => Promise<void>,\n ) {\n this.concurrency = concurrency;\n this.partitionMetric = partitionMetric;\n this.retrier = retrier;\n this.refreshPartitionKeyRangeCache = refreshPartitionKeyRangeCache;\n }\n\n /**\n * Enqueue a task and return a Promise that resolves or rejects when the task completes.\n * If the queue has been terminated via pauseAndClear, the promise resolves immediately with the terminated value.\n */\n public push(batcher: Batcher): Promise<any> {\n if (this.terminated) {\n const ops = batcher.getOperations();\n ops.forEach((op) => this.retrier(op, op.operationContext.diagnosticNode));\n return Promise.resolve(this.terminatedValue);\n }\n return new Promise<any>((resolve, reject) => {\n this.tasks.push({ batcher, resolve, reject });\n this.scheduleProcess();\n });\n }\n\n /**\n * Permanently pauses processing and clears the queue.\n * All queued tasks and subsequent push() calls will immediately resolve with the provided custom value.\n */\n public async pauseAndClear<T = any>(\n customValue: T,\n diagnosticNode?: DiagnosticNodeInternal,\n ): Promise<void> {\n this.terminated = true;\n this.terminatedValue = customValue;\n const operationsList: ItemOperation[] = [];\n while (!this.tasks.isEmpty()) {\n const queueItem = this.tasks.shift();\n if (!queueItem) break;\n if (customValue === StatusCodes.Gone) {\n const operations = queueItem.batcher.getOperations();\n operationsList.push(...operations);\n }\n queueItem.resolve(customValue);\n }\n if (customValue === StatusCodes.Gone) {\n // Multiple requests could result in 410 error for one partition based on degree of concurrency.\n // The refreshPKRangeCachePromise is added to ensure that only one refreshPartitionKeyRangeCache() call is made\n // to backend for one partition.\n if (this.refreshPKRangeCachePromise) {\n await this.refreshPKRangeCachePromise;\n } else {\n this.refreshPKRangeCachePromise = this.refreshPartitionKeyRangeCache(diagnosticNode);\n await this.refreshPKRangeCachePromise;\n }\n for (const operation of operationsList) {\n await this.retrier(operation, operation.operationContext.diagnosticNode);\n }\n }\n }\n\n /**\n * Schedules the processing loop using the best available asynchronous scheduler.\n */\n private scheduleProcess(): void {\n if (this.scheduled || this.processing || this.terminated) return;\n this.scheduled = true;\n scheduleCallback(() => {\n this.scheduled = false;\n this.process();\n });\n }\n\n /**\n * Processes tasks up to the concurrency limit.\n */\n private process(): void {\n if (this.terminated) return;\n this.processing = true;\n\n try {\n while (!this.terminated && this.running < this.concurrency && !this.tasks.isEmpty()) {\n const queueItem = this.tasks.shift();\n if (!queueItem) break;\n\n this.running++;\n\n // Handle synchronous exceptions\n let dispatchPromise: Promise<any>;\n try {\n dispatchPromise = queueItem.batcher.dispatch(this.partitionMetric);\n } catch (err) {\n // Handle synchronous errors\n queueItem.reject(err);\n this.running--;\n continue;\n }\n\n void dispatchPromise\n // eslint-disable-next-line promise/always-return\n .then((result) => {\n queueItem.resolve(result);\n })\n .catch((err) => {\n queueItem.reject(err);\n })\n .finally(() => {\n this.running--;\n if (!this.terminated && this.running < this.concurrency && !this.tasks.isEmpty()) {\n this.scheduleProcess();\n }\n });\n }\n } catch (err) {\n console.error(\"Unexpected error in task queue processing:\", err);\n } finally {\n this.processing = false;\n }\n }\n\n /**\n * Dynamically updates the concurrency limit.\n */\n public setConcurrency(newConcurrency: number): void {\n if (newConcurrency < 1) {\n throw new Error(\"Concurrency must be at least 1\");\n }\n this.concurrency = newConcurrency;\n if (!this.terminated && this.running < this.concurrency) {\n // Use the scheduleCallback helper for consistency\n this.scheduleProcess();\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Limiter.js","sourceRoot":"","sources":["../../../src/bulk/Limiter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { RetryCallback } from \"../utils/batch.js\";\nimport type { Batcher } from \"./Batcher.js\";\nimport type { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { ItemOperation } from \"./ItemOperation.js\";\n\nexport type Task<T = any> = () => Promise<T>;\n\ninterface QueueItem {\n batcher: Batcher;\n resolve: (value: any) => void;\n reject: (reason?: any) => void;\n}\n\nclass ListNode<T> {\n public value: T;\n public next: ListNode<T> | null = null;\n public prev: ListNode<T> | null = null;\n constructor(value: T) {\n this.value = value;\n }\n}\n\nclass DoublyLinkedList<T> {\n public head: ListNode<T> | null = null;\n public tail: ListNode<T> | null = null;\n public length = 0;\n\n public push(value: T): void {\n const node = new ListNode(value);\n if (!this.head) {\n this.head = this.tail = node;\n } else {\n this.tail!.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n this.length++;\n }\n\n public shift(): T | null {\n if (!this.head) return null;\n const value = this.head.value;\n this.head = this.head.next;\n if (this.head) {\n this.head.prev = null;\n } else {\n this.tail = null;\n }\n this.length--;\n return value;\n }\n\n public clear(): void {\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n public isEmpty(): boolean {\n return this.length === 0;\n }\n}\n\n/**\n * Returns a function that will schedule the given callback using the best available method.\n */\nfunction scheduleCallback(fn: () => void): void {\n if (typeof process !== \"undefined\" && typeof process.nextTick === \"function\") {\n process.nextTick(fn);\n } else if (typeof setImmediate === \"function\") {\n setImmediate(fn);\n } else {\n // eslint-disable-next-line promise/catch-or-return\n Promise.resolve().then(fn);\n }\n}\n\n/**\n * HighPerformanceQueue processes tasks concurrently.\n * If pauseAndClear() is called, it permanently halts processing,\n * clears queued tasks (resolving them with a custom value), and\n * any subsequent push() calls will immediately resolve with that value.\n */\nexport class LimiterQueue {\n // maximum number of tasks allowed to run concurrently\n public concurrency: number;\n // number of tasks currently executing\n private running = 0;\n // doubly linked list to store batchers and resolve/reject functions for dispatch tasks\n private tasks: DoublyLinkedList<QueueItem> = new DoublyLinkedList();\n // boolean flag that indicates whether the queue has been permanently paused\n private terminated = false;\n // value to resolve with when the queue is terminated\n private terminatedValue: any;\n // indicates if the processing cycle has been scheduled via the asynchronous scheduler\n private scheduled = false;\n // indicates whether the queue is currently in the process of dequeueing and executing tasks\n private processing = false;\n // retry callback to retry all the queued operations in case of split/merge error\n private retrier: RetryCallback;\n // partiton metric for collecting metrics for the requests\n private partitionMetric: PartitionMetric;\n // callback used to refresh the partition key range cache in case of split/merge error\n private readonly refreshPartitionKeyRangeCache: (diagnosticNode: any) => Promise<void>;\n private refreshPKRangeCachePromise: Promise<void> | undefined = undefined;\n /**\n * Creates a new HighPerformanceQueue.\n */\n constructor(\n concurrency: number,\n partitionMetric: PartitionMetric,\n retrier: RetryCallback,\n refreshPartitionKeyRangeCache: (diagnosticNode: any) => Promise<void>,\n ) {\n this.concurrency = concurrency;\n this.partitionMetric = partitionMetric;\n this.retrier = retrier;\n this.refreshPartitionKeyRangeCache = refreshPartitionKeyRangeCache;\n }\n\n /**\n * Enqueue a task and return a Promise that resolves or rejects when the task completes.\n * If the queue has been terminated via pauseAndClear, the promise resolves immediately with the terminated value.\n */\n public push(batcher: Batcher): Promise<any> {\n if (this.terminated) {\n const ops = batcher.getOperations();\n ops.forEach((op) => this.retrier(op, op.operationContext.diagnosticNode));\n return Promise.resolve(this.terminatedValue);\n }\n return new Promise<any>((resolve, reject) => {\n this.tasks.push({ batcher, resolve, reject });\n this.scheduleProcess();\n });\n }\n\n /**\n * Permanently pauses processing and clears the queue.\n * All queued tasks and subsequent push() calls will immediately resolve with the provided custom value.\n */\n public async pauseAndClear<T = any>(\n customValue: T,\n diagnosticNode?: DiagnosticNodeInternal,\n ): Promise<void> {\n this.terminated = true;\n this.terminatedValue = customValue;\n const operationsList: ItemOperation[] = [];\n while (!this.tasks.isEmpty()) {\n const queueItem = this.tasks.shift();\n if (!queueItem) break;\n if (customValue === StatusCodes.Gone) {\n const operations = queueItem.batcher.getOperations();\n operationsList.push(...operations);\n }\n queueItem.resolve(customValue);\n }\n if (customValue === StatusCodes.Gone) {\n // Multiple requests could result in 410 error for one partition based on degree of concurrency.\n // The refreshPKRangeCachePromise is added to ensure that only one refreshPartitionKeyRangeCache() call is made\n // to backend for one partition.\n if (this.refreshPKRangeCachePromise) {\n await this.refreshPKRangeCachePromise;\n } else {\n this.refreshPKRangeCachePromise = this.refreshPartitionKeyRangeCache(diagnosticNode);\n await this.refreshPKRangeCachePromise;\n }\n for (const operation of operationsList) {\n await this.retrier(operation, operation.operationContext.diagnosticNode);\n }\n }\n }\n\n /**\n * Schedules the processing loop using the best available asynchronous scheduler.\n */\n private scheduleProcess(): void {\n if (this.scheduled || this.processing || this.terminated) return;\n this.scheduled = true;\n scheduleCallback(() => {\n this.scheduled = false;\n this.process();\n });\n }\n\n /**\n * Processes tasks up to the concurrency limit.\n */\n private process(): void {\n if (this.terminated) return;\n this.processing = true;\n\n try {\n while (!this.terminated && this.running < this.concurrency && !this.tasks.isEmpty()) {\n const queueItem = this.tasks.shift();\n if (!queueItem) break;\n\n this.running++;\n\n // Handle synchronous exceptions\n let dispatchPromise: Promise<any>;\n try {\n dispatchPromise = queueItem.batcher.dispatch(this.partitionMetric);\n } catch (err) {\n // Handle synchronous errors\n queueItem.reject(err);\n this.running--;\n continue;\n }\n\n void dispatchPromise\n // eslint-disable-next-line promise/always-return\n .then((result) => {\n queueItem.resolve(result);\n })\n .catch((err) => {\n queueItem.reject(err);\n })\n .finally(() => {\n this.running--;\n if (!this.terminated && this.running < this.concurrency && !this.tasks.isEmpty()) {\n this.scheduleProcess();\n }\n });\n }\n } catch (err) {\n console.error(\"Unexpected error in task queue processing:\", err);\n } finally {\n this.processing = false;\n }\n }\n\n /**\n * Dynamically updates the concurrency limit.\n */\n public setConcurrency(newConcurrency: number): void {\n if (newConcurrency < 1) {\n throw new Error(\"Concurrency must be at least 1\");\n }\n this.concurrency = newConcurrency;\n if (!this.terminated && this.running < this.concurrency) {\n // Use the scheduleCallback helper for consistency\n this.scheduleProcess();\n }\n }\n}\n"]}
|
|
@@ -5,6 +5,10 @@ import semaphore from "semaphore";
|
|
|
5
5
|
* Captures the metrics for the requests made for bulk.
|
|
6
6
|
*/
|
|
7
7
|
export class PartitionMetric {
|
|
8
|
+
numberOfItemsOperatedOn;
|
|
9
|
+
timeTakenInMs;
|
|
10
|
+
numberOfThrottles;
|
|
11
|
+
semaphore;
|
|
8
12
|
constructor() {
|
|
9
13
|
this.numberOfItemsOperatedOn = 0;
|
|
10
14
|
this.timeTakenInMs = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PartitionMetric.js","sourceRoot":"","sources":["../../../src/bulk/PartitionMetric.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC;;GAEG;AACH,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"PartitionMetric.js","sourceRoot":"","sources":["../../../src/bulk/PartitionMetric.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B,uBAAuB,CAAS;IAChC,aAAa,CAAS;IACtB,iBAAiB,CAAS;IAClB,SAAS,CAAsB;IAEvC;QACE,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,WAAmB,EAAE,aAAqB,EAAE,cAAsB;QACpE,wFAAwF;QACxF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC;gBACH,IAAI,CAAC,uBAAuB,IAAI,WAAW,CAAC;gBAC5C,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC;gBACpC,IAAI,CAAC,iBAAiB,IAAI,cAAc,CAAC;YAC3C,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport semaphore from \"semaphore\";\n\n/**\n * Captures the metrics for the requests made for bulk.\n */\nexport class PartitionMetric {\n numberOfItemsOperatedOn: number;\n timeTakenInMs: number;\n numberOfThrottles: number;\n private semaphore: semaphore.Semaphore;\n\n constructor() {\n this.numberOfItemsOperatedOn = 0;\n this.timeTakenInMs = 0;\n this.numberOfThrottles = 0;\n this.semaphore = semaphore(1);\n }\n\n add(numberOfDoc: number, timeTakenInMs: number, numOfThrottles: number): void {\n // these operations should be atomic as multiple dispatch could be updating these values\n this.semaphore.take(() => {\n try {\n this.numberOfItemsOperatedOn += numberOfDoc;\n this.timeTakenInMs += timeTakenInMs;\n this.numberOfThrottles += numOfThrottles;\n } finally {\n this.semaphore.leave();\n }\n });\n }\n}\n"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __asyncGenerator, __await } from "tslib";
|
|
2
1
|
// Copyright (c) Microsoft Corporation.
|
|
3
2
|
// Licensed under the MIT License.
|
|
4
3
|
import { ChangeFeedRange } from "./ChangeFeedRange.js";
|
|
@@ -18,6 +17,20 @@ import { ChangeFeedMode } from "./ChangeFeedMode.js";
|
|
|
18
17
|
* Use `Items.getChangeFeedIterator()` to get an instance of the iterator.
|
|
19
18
|
*/
|
|
20
19
|
export class ChangeFeedForEpkRange {
|
|
20
|
+
clientContext;
|
|
21
|
+
container;
|
|
22
|
+
partitionKeyRangeCache;
|
|
23
|
+
resourceId;
|
|
24
|
+
resourceLink;
|
|
25
|
+
url;
|
|
26
|
+
changeFeedOptions;
|
|
27
|
+
epkRange;
|
|
28
|
+
continuationToken;
|
|
29
|
+
queue;
|
|
30
|
+
startTime;
|
|
31
|
+
isInstantiated;
|
|
32
|
+
rId;
|
|
33
|
+
startFromNow;
|
|
21
34
|
/**
|
|
22
35
|
* @internal
|
|
23
36
|
*/
|
|
@@ -30,9 +43,6 @@ export class ChangeFeedForEpkRange {
|
|
|
30
43
|
this.url = url;
|
|
31
44
|
this.changeFeedOptions = changeFeedOptions;
|
|
32
45
|
this.epkRange = epkRange;
|
|
33
|
-
this.generateContinuationToken = () => {
|
|
34
|
-
return JSON.stringify(new CompositeContinuationToken(this.rId, this.queue.returnSnapshot()));
|
|
35
|
-
};
|
|
36
46
|
this.queue = new FeedRangeQueue();
|
|
37
47
|
this.continuationToken = changeFeedOptions.continuationToken
|
|
38
48
|
? JSON.parse(changeFeedOptions.continuationToken)
|
|
@@ -121,13 +131,11 @@ export class ChangeFeedForEpkRange {
|
|
|
121
131
|
/**
|
|
122
132
|
* Gets an async iterator which will yield change feed results.
|
|
123
133
|
*/
|
|
124
|
-
getAsyncIterator() {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
} while (this.hasMoreResults);
|
|
130
|
-
});
|
|
134
|
+
async *getAsyncIterator() {
|
|
135
|
+
do {
|
|
136
|
+
const result = await this.readNext();
|
|
137
|
+
yield result;
|
|
138
|
+
} while (this.hasMoreResults);
|
|
131
139
|
}
|
|
132
140
|
/**
|
|
133
141
|
* Gets an async iterator which will yield pages of results from Azure Cosmos DB.
|
|
@@ -174,6 +182,9 @@ export class ChangeFeedForEpkRange {
|
|
|
174
182
|
return result;
|
|
175
183
|
}, this.clientContext);
|
|
176
184
|
}
|
|
185
|
+
generateContinuationToken = () => {
|
|
186
|
+
return JSON.stringify(new CompositeContinuationToken(this.rId, this.queue.returnSnapshot()));
|
|
187
|
+
};
|
|
177
188
|
/**
|
|
178
189
|
* Read feed and retrieves the next page of results in Azure Cosmos DB.
|
|
179
190
|
*/
|
|
@@ -206,10 +217,10 @@ export class ChangeFeedForEpkRange {
|
|
|
206
217
|
return false;
|
|
207
218
|
}
|
|
208
219
|
const feedRangeQueueFirstElement = this.queue.peek();
|
|
209
|
-
return (firstNotModifiedFeedRange.minInclusive ===
|
|
210
|
-
firstNotModifiedFeedRange.maxExclusive ===
|
|
211
|
-
firstNotModifiedFeedRange.epkMinHeader ===
|
|
212
|
-
firstNotModifiedFeedRange.epkMaxHeader ===
|
|
220
|
+
return (firstNotModifiedFeedRange.minInclusive === feedRangeQueueFirstElement?.minInclusive &&
|
|
221
|
+
firstNotModifiedFeedRange.maxExclusive === feedRangeQueueFirstElement?.maxExclusive &&
|
|
222
|
+
firstNotModifiedFeedRange.epkMinHeader === feedRangeQueueFirstElement?.epkMinHeader &&
|
|
223
|
+
firstNotModifiedFeedRange.epkMaxHeader === feedRangeQueueFirstElement?.epkMaxHeader);
|
|
213
224
|
}
|
|
214
225
|
/**
|
|
215
226
|
* Checks whether the current EpkRange is split into multiple ranges or not.
|