@azure/cosmos 4.5.0 → 4.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/ChangeFeedIterator.js +17 -11
- package/dist/browser/ChangeFeedIterator.js.map +1 -1
- package/dist/browser/ChangeFeedResponse.js +8 -0
- package/dist/browser/ChangeFeedResponse.js.map +1 -1
- package/dist/browser/ClientContext.js +122 -29
- package/dist/browser/ClientContext.js.map +1 -1
- package/dist/browser/CosmosClient.js +34 -3
- package/dist/browser/CosmosClient.js.map +1 -1
- package/dist/browser/CosmosDiagnostics.js +3 -0
- package/dist/browser/CosmosDiagnostics.js.map +1 -1
- package/dist/browser/PartitionKeyRangeFailoverInfo.js +8 -5
- package/dist/browser/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/browser/bulk/Batcher.js +13 -3
- package/dist/browser/bulk/Batcher.js.map +1 -1
- package/dist/browser/bulk/BulkHelper.js +26 -11
- package/dist/browser/bulk/BulkHelper.js.map +1 -1
- package/dist/browser/bulk/BulkResponse.js +22 -20
- package/dist/browser/bulk/BulkResponse.js.map +1 -1
- package/dist/browser/bulk/CongestionAlgorithm.js +11 -4
- package/dist/browser/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/browser/bulk/HelperPerPartition.js +14 -1
- package/dist/browser/bulk/HelperPerPartition.js.map +1 -1
- package/dist/browser/bulk/ItemOperationContext.js +4 -0
- package/dist/browser/bulk/ItemOperationContext.js.map +1 -1
- package/dist/browser/bulk/Limiter.js +27 -18
- package/dist/browser/bulk/Limiter.js.map +1 -1
- package/dist/browser/bulk/PartitionMetric.js +4 -0
- package/dist/browser/bulk/PartitionMetric.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
- package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
- package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedRange.js +20 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/browser/client/ChangeFeed/CompositeContinuationToken.js +8 -0
- package/dist/browser/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
- package/dist/browser/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/browser/client/ChangeFeed/FeedRange.js +8 -0
- package/dist/browser/client/ChangeFeed/FeedRange.js.map +1 -1
- package/dist/browser/client/ChangeFeed/FeedRangeQueue.js +1 -0
- package/dist/browser/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
- package/dist/browser/client/ChangeFeed/changeFeedUtils.js +5 -5
- package/dist/browser/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/browser/client/ClientUtils.js +1 -1
- package/dist/browser/client/ClientUtils.js.map +1 -1
- package/dist/browser/client/Conflict/Conflict.js +4 -0
- package/dist/browser/client/Conflict/Conflict.js.map +1 -1
- package/dist/browser/client/Conflict/ConflictResponse.js +2 -0
- package/dist/browser/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/browser/client/Conflict/Conflicts.js +2 -0
- package/dist/browser/client/Conflict/Conflicts.js.map +1 -1
- package/dist/browser/client/Container/Container.js +18 -3
- package/dist/browser/client/Container/Container.js.map +1 -1
- package/dist/browser/client/Container/ContainerResponse.js +2 -0
- package/dist/browser/client/Container/ContainerResponse.js.map +1 -1
- package/dist/browser/client/Container/Containers.js +4 -2
- package/dist/browser/client/Container/Containers.js.map +1 -1
- package/dist/browser/client/Database/Database.js +33 -0
- package/dist/browser/client/Database/Database.js.map +1 -1
- package/dist/browser/client/Database/DatabaseResponse.js +2 -0
- package/dist/browser/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/browser/client/Database/Databases.js +3 -0
- package/dist/browser/client/Database/Databases.js.map +1 -1
- package/dist/browser/client/Item/Item.js +4 -0
- package/dist/browser/client/Item/Item.js.map +1 -1
- package/dist/browser/client/Item/ItemResponse.js +2 -0
- package/dist/browser/client/Item/ItemResponse.js.map +1 -1
- package/dist/browser/client/Item/Items.js +3 -0
- package/dist/browser/client/Item/Items.js.map +1 -1
- package/dist/browser/client/Offer/Offer.js +3 -0
- package/dist/browser/client/Offer/Offer.js.map +1 -1
- package/dist/browser/client/Offer/OfferResponse.js +2 -0
- package/dist/browser/client/Offer/OfferResponse.js.map +1 -1
- package/dist/browser/client/Offer/Offers.js +2 -0
- package/dist/browser/client/Offer/Offers.js.map +1 -1
- package/dist/browser/client/Permission/Permission.js +3 -0
- package/dist/browser/client/Permission/Permission.js.map +1 -1
- package/dist/browser/client/Permission/PermissionResponse.js +2 -0
- package/dist/browser/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/browser/client/Permission/Permissions.js +2 -0
- package/dist/browser/client/Permission/Permissions.js.map +1 -1
- package/dist/browser/client/SasToken/SasTokenProperties.js +17 -0
- package/dist/browser/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/browser/client/Script/Scripts.js +5 -0
- package/dist/browser/client/Script/Scripts.js.map +1 -1
- package/dist/browser/client/StoredProcedure/StoredProcedure.js +3 -0
- package/dist/browser/client/StoredProcedure/StoredProcedure.js.map +1 -1
- package/dist/browser/client/StoredProcedure/StoredProcedureResponse.js +4 -0
- package/dist/browser/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/browser/client/StoredProcedure/StoredProcedures.js +2 -0
- package/dist/browser/client/StoredProcedure/StoredProcedures.js.map +1 -1
- package/dist/browser/client/Trigger/Trigger.js +3 -0
- package/dist/browser/client/Trigger/Trigger.js.map +1 -1
- package/dist/browser/client/Trigger/TriggerResponse.js +2 -0
- package/dist/browser/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/browser/client/Trigger/Triggers.js +2 -0
- package/dist/browser/client/Trigger/Triggers.js.map +1 -1
- package/dist/browser/client/User/User.js +9 -0
- package/dist/browser/client/User/User.js.map +1 -1
- package/dist/browser/client/User/UserResponse.js +2 -0
- package/dist/browser/client/User/UserResponse.js.map +1 -1
- package/dist/browser/client/User/Users.js +2 -0
- package/dist/browser/client/User/Users.js.map +1 -1
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
- package/dist/browser/common/constants.js +1 -1
- package/dist/browser/common/constants.js.map +1 -1
- package/dist/browser/diagnostics/CosmosDiagnosticsContext.js +8 -7
- package/dist/browser/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/browser/diagnostics/DiagnosticNodeInternal.js +26 -7
- package/dist/browser/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/browser/diagnostics/DiagnosticWriter.js +1 -3
- package/dist/browser/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/browser/diagnostics/index.js +2 -2
- package/dist/browser/diagnostics/index.js.map +1 -1
- package/dist/browser/documents/DatabaseAccount.js +20 -4
- package/dist/browser/documents/DatabaseAccount.js.map +1 -1
- package/dist/browser/documents/PartitionKey.js +1 -3
- package/dist/browser/documents/PartitionKey.js.map +1 -1
- package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
- package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/browser/encryption/Cache/EncryptionSettingsCache.js +2 -0
- package/dist/browser/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
- package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
- package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/browser/encryption/EncryptionItemQueryIterator.js +24 -27
- package/dist/browser/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
- package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
- package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
- package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
- package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/browser/encryption/EncryptionKeyStoreProvider.js +8 -1
- package/dist/browser/encryption/EncryptionKeyStoreProvider.js.map +1 -1
- package/dist/browser/encryption/EncryptionManager.js +6 -0
- package/dist/browser/encryption/EncryptionManager.js.map +1 -1
- package/dist/browser/encryption/EncryptionProcessor.js +5 -0
- package/dist/browser/encryption/EncryptionProcessor.js.map +1 -1
- package/dist/browser/encryption/EncryptionQueryBuilder.js +2 -0
- package/dist/browser/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/browser/encryption/EncryptionSettingForProperty.js +6 -0
- package/dist/browser/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/browser/encryption/EncryptionSettings.js +6 -3
- package/dist/browser/encryption/EncryptionSettings.js.map +1 -1
- package/dist/browser/encryption/KeyEncryptionKey.js +4 -0
- package/dist/browser/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/browser/encryption/Serializers/StringSerializer.js +1 -1
- package/dist/browser/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/browser/extractPartitionKey.js +2 -2
- package/dist/browser/extractPartitionKey.js.map +1 -1
- package/dist/browser/globalEndpointManager.d.ts.map +1 -1
- package/dist/browser/globalEndpointManager.js +36 -23
- package/dist/browser/globalEndpointManager.js.map +1 -1
- package/dist/browser/globalPartitionEndpointManager.js +8 -0
- package/dist/browser/globalPartitionEndpointManager.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
- package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
- package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
- package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
- package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
- package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
- package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
- package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
- package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
- package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/FetchResult.js +4 -0
- package/dist/browser/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
- package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/browser/queryExecutionContext/documentProducer.js +34 -21
- package/dist/browser/queryExecutionContext/documentProducer.js.map +1 -1
- package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
- package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
- package/dist/browser/queryExecutionContext/orderByComparator.js +1 -0
- package/dist/browser/queryExecutionContext/orderByComparator.js.map +1 -1
- package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
- package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
- package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
- package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
- package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
- package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
- package/dist/browser/queryIterator.js +41 -33
- package/dist/browser/queryIterator.js.map +1 -1
- package/dist/browser/queryMetrics/clientSideMetrics.js +2 -1
- package/dist/browser/queryMetrics/clientSideMetrics.js.map +1 -1
- package/dist/browser/queryMetrics/queryMetrics.js +14 -1
- package/dist/browser/queryMetrics/queryMetrics.js.map +1 -1
- package/dist/browser/queryMetrics/queryPreparationTime.js +5 -1
- package/dist/browser/queryMetrics/queryPreparationTime.js.map +1 -1
- package/dist/browser/queryMetrics/runtimeExecutionTimes.js +4 -1
- package/dist/browser/queryMetrics/runtimeExecutionTimes.js.map +1 -1
- package/dist/browser/queryMetrics/timeSpan.js +4 -3
- package/dist/browser/queryMetrics/timeSpan.js.map +1 -1
- package/dist/browser/request/ErrorResponse.js +19 -0
- package/dist/browser/request/ErrorResponse.js.map +1 -1
- package/dist/browser/request/FeedResponse.js +4 -0
- package/dist/browser/request/FeedResponse.js.map +1 -1
- package/dist/browser/request/RequestHandler.js +1 -2
- package/dist/browser/request/RequestHandler.js.map +1 -1
- package/dist/browser/request/ResourceResponse.js +5 -0
- package/dist/browser/request/ResourceResponse.js.map +1 -1
- package/dist/browser/request/TimeoutError.js +1 -1
- package/dist/browser/request/TimeoutError.js.map +1 -1
- package/dist/browser/request/hybridSearchQueryResult.js +5 -0
- package/dist/browser/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/browser/request/request.js +5 -1
- package/dist/browser/request/request.js.map +1 -1
- package/dist/browser/retry/bulkExecutionRetryPolicy.js +5 -2
- package/dist/browser/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/browser/retry/defaultRetryPolicy.d.ts.map +1 -1
- package/dist/browser/retry/defaultRetryPolicy.js +7 -7
- package/dist/browser/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.js +24 -7
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
- package/dist/browser/retry/resourceThrottleRetryPolicy.js +20 -10
- package/dist/browser/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/browser/retry/retryUtility.d.ts.map +1 -1
- package/dist/browser/retry/retryUtility.js +5 -5
- package/dist/browser/retry/retryUtility.js.map +1 -1
- package/dist/browser/retry/sessionRetryPolicy.js +8 -4
- package/dist/browser/retry/sessionRetryPolicy.js.map +1 -1
- package/dist/browser/retry/timeoutFailoverRetryPolicy.js +14 -4
- package/dist/browser/retry/timeoutFailoverRetryPolicy.js.map +1 -1
- package/dist/browser/routing/QueryRange.js +4 -0
- package/dist/browser/routing/QueryRange.js.map +1 -1
- package/dist/browser/routing/inMemoryCollectionRoutingMap.js +4 -0
- package/dist/browser/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/browser/routing/partitionKeyRangeCache.js +2 -0
- package/dist/browser/routing/partitionKeyRangeCache.js.map +1 -1
- package/dist/browser/routing/smartRoutingMapProvider.js +1 -0
- package/dist/browser/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/browser/session/VectorSessionToken.js +6 -2
- package/dist/browser/session/VectorSessionToken.js.map +1 -1
- package/dist/browser/session/sessionContainer.js +5 -3
- package/dist/browser/session/sessionContainer.js.map +1 -1
- package/dist/browser/utils/batch.js +15 -4
- package/dist/browser/utils/batch.js.map +1 -1
- package/dist/browser/utils/fixedSizePriorityQueue.js +4 -0
- package/dist/browser/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/browser/utils/hashing/hash.js +1 -1
- package/dist/browser/utils/hashing/hash.js.map +1 -1
- package/dist/browser/utils/nonStreamingOrderByMap.js +2 -0
- package/dist/browser/utils/nonStreamingOrderByMap.js.map +1 -1
- package/dist/commonjs/ChangeFeedIterator.js +17 -11
- package/dist/commonjs/ChangeFeedIterator.js.map +1 -1
- package/dist/commonjs/ChangeFeedResponse.js +8 -0
- package/dist/commonjs/ChangeFeedResponse.js.map +1 -1
- package/dist/commonjs/ClientContext.js +122 -29
- package/dist/commonjs/ClientContext.js.map +1 -1
- package/dist/commonjs/CosmosClient.js +34 -3
- package/dist/commonjs/CosmosClient.js.map +1 -1
- package/dist/commonjs/CosmosDiagnostics.js +3 -0
- package/dist/commonjs/CosmosDiagnostics.js.map +1 -1
- package/dist/commonjs/PartitionKeyRangeFailoverInfo.js +8 -5
- package/dist/commonjs/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/commonjs/bulk/Batcher.js +13 -3
- package/dist/commonjs/bulk/Batcher.js.map +1 -1
- package/dist/commonjs/bulk/BulkHelper.js +26 -11
- package/dist/commonjs/bulk/BulkHelper.js.map +1 -1
- package/dist/commonjs/bulk/BulkResponse.js +22 -20
- package/dist/commonjs/bulk/BulkResponse.js.map +1 -1
- package/dist/commonjs/bulk/CongestionAlgorithm.js +11 -4
- package/dist/commonjs/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/commonjs/bulk/HelperPerPartition.js +14 -1
- package/dist/commonjs/bulk/HelperPerPartition.js.map +1 -1
- package/dist/commonjs/bulk/ItemOperationContext.js +4 -0
- package/dist/commonjs/bulk/ItemOperationContext.js.map +1 -1
- package/dist/commonjs/bulk/Limiter.js +27 -18
- package/dist/commonjs/bulk/Limiter.js.map +1 -1
- package/dist/commonjs/bulk/PartitionMetric.js +4 -0
- package/dist/commonjs/bulk/PartitionMetric.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js +20 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js +8 -0
- package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
- package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/FeedRange.js +8 -0
- package/dist/commonjs/client/ChangeFeed/FeedRange.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js +1 -0
- package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js +5 -5
- package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/commonjs/client/ClientUtils.js +1 -1
- package/dist/commonjs/client/ClientUtils.js.map +1 -1
- package/dist/commonjs/client/Conflict/Conflict.js +4 -0
- package/dist/commonjs/client/Conflict/Conflict.js.map +1 -1
- package/dist/commonjs/client/Conflict/ConflictResponse.js +2 -0
- package/dist/commonjs/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/commonjs/client/Conflict/Conflicts.js +2 -0
- package/dist/commonjs/client/Conflict/Conflicts.js.map +1 -1
- package/dist/commonjs/client/Container/Container.js +18 -3
- package/dist/commonjs/client/Container/Container.js.map +1 -1
- package/dist/commonjs/client/Container/ContainerResponse.js +2 -0
- package/dist/commonjs/client/Container/ContainerResponse.js.map +1 -1
- package/dist/commonjs/client/Container/Containers.js +4 -2
- package/dist/commonjs/client/Container/Containers.js.map +1 -1
- package/dist/commonjs/client/Database/Database.js +33 -0
- package/dist/commonjs/client/Database/Database.js.map +1 -1
- package/dist/commonjs/client/Database/DatabaseResponse.js +2 -0
- package/dist/commonjs/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/commonjs/client/Database/Databases.js +3 -0
- package/dist/commonjs/client/Database/Databases.js.map +1 -1
- package/dist/commonjs/client/Item/Item.js +4 -0
- package/dist/commonjs/client/Item/Item.js.map +1 -1
- package/dist/commonjs/client/Item/ItemResponse.js +2 -0
- package/dist/commonjs/client/Item/ItemResponse.js.map +1 -1
- package/dist/commonjs/client/Item/Items.js +3 -0
- package/dist/commonjs/client/Item/Items.js.map +1 -1
- package/dist/commonjs/client/Offer/Offer.js +3 -0
- package/dist/commonjs/client/Offer/Offer.js.map +1 -1
- package/dist/commonjs/client/Offer/OfferResponse.js +2 -0
- package/dist/commonjs/client/Offer/OfferResponse.js.map +1 -1
- package/dist/commonjs/client/Offer/Offers.js +2 -0
- package/dist/commonjs/client/Offer/Offers.js.map +1 -1
- package/dist/commonjs/client/Permission/Permission.js +3 -0
- package/dist/commonjs/client/Permission/Permission.js.map +1 -1
- package/dist/commonjs/client/Permission/PermissionResponse.js +2 -0
- package/dist/commonjs/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/commonjs/client/Permission/Permissions.js +2 -0
- package/dist/commonjs/client/Permission/Permissions.js.map +1 -1
- package/dist/commonjs/client/SasToken/SasTokenProperties.js +17 -0
- package/dist/commonjs/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/commonjs/client/Script/Scripts.js +5 -0
- package/dist/commonjs/client/Script/Scripts.js.map +1 -1
- package/dist/commonjs/client/StoredProcedure/StoredProcedure.js +3 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedure.js.map +1 -1
- package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js +4 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/commonjs/client/StoredProcedure/StoredProcedures.js +2 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedures.js.map +1 -1
- package/dist/commonjs/client/Trigger/Trigger.js +3 -0
- package/dist/commonjs/client/Trigger/Trigger.js.map +1 -1
- package/dist/commonjs/client/Trigger/TriggerResponse.js +2 -0
- package/dist/commonjs/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/commonjs/client/Trigger/Triggers.js +2 -0
- package/dist/commonjs/client/Trigger/Triggers.js.map +1 -1
- package/dist/commonjs/client/User/User.js +9 -0
- package/dist/commonjs/client/User/User.js.map +1 -1
- package/dist/commonjs/client/User/UserResponse.js +2 -0
- package/dist/commonjs/client/User/UserResponse.js.map +1 -1
- package/dist/commonjs/client/User/Users.js +2 -0
- package/dist/commonjs/client/User/Users.js.map +1 -1
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
- package/dist/commonjs/common/constants.js +1 -1
- package/dist/commonjs/common/constants.js.map +1 -1
- package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js +8 -7
- package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js +26 -7
- package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/commonjs/diagnostics/DiagnosticWriter.js +1 -3
- package/dist/commonjs/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/commonjs/diagnostics/index.js +2 -2
- package/dist/commonjs/diagnostics/index.js.map +1 -1
- package/dist/commonjs/documents/DatabaseAccount.js +20 -4
- package/dist/commonjs/documents/DatabaseAccount.js.map +1 -1
- package/dist/commonjs/documents/PartitionKey.js +1 -3
- package/dist/commonjs/documents/PartitionKey.js.map +1 -1
- package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
- package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
- package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
- package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js +2 -0
- package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
- package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
- package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
- package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
- package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionItemQueryIterator.js +24 -27
- package/dist/commonjs/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
- package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
- package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js +8 -1
- package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionManager.js +6 -0
- package/dist/commonjs/encryption/EncryptionManager.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionProcessor.js +5 -0
- package/dist/commonjs/encryption/EncryptionProcessor.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionQueryBuilder.js +2 -0
- package/dist/commonjs/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionSettingForProperty.js +6 -0
- package/dist/commonjs/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionSettings.js +6 -3
- package/dist/commonjs/encryption/EncryptionSettings.js.map +1 -1
- package/dist/commonjs/encryption/KeyEncryptionKey.js +4 -0
- package/dist/commonjs/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/commonjs/encryption/Serializers/StringSerializer.js +1 -1
- package/dist/commonjs/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/commonjs/extractPartitionKey.js +2 -2
- package/dist/commonjs/extractPartitionKey.js.map +1 -1
- package/dist/commonjs/globalEndpointManager.d.ts.map +1 -1
- package/dist/commonjs/globalEndpointManager.js +36 -23
- package/dist/commonjs/globalEndpointManager.js.map +1 -1
- package/dist/commonjs/globalPartitionEndpointManager.js +8 -0
- package/dist/commonjs/globalPartitionEndpointManager.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/FetchResult.js +4 -0
- package/dist/commonjs/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
- package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/documentProducer.js +34 -21
- package/dist/commonjs/queryExecutionContext/documentProducer.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
- package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/orderByComparator.js +1 -0
- package/dist/commonjs/queryExecutionContext/orderByComparator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
- package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
- package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
- package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryIterator.js +41 -33
- package/dist/commonjs/queryIterator.js.map +1 -1
- package/dist/commonjs/queryMetrics/clientSideMetrics.js +2 -1
- package/dist/commonjs/queryMetrics/clientSideMetrics.js.map +1 -1
- package/dist/commonjs/queryMetrics/queryMetrics.js +14 -1
- package/dist/commonjs/queryMetrics/queryMetrics.js.map +1 -1
- package/dist/commonjs/queryMetrics/queryPreparationTime.js +5 -1
- package/dist/commonjs/queryMetrics/queryPreparationTime.js.map +1 -1
- package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js +4 -1
- package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js.map +1 -1
- package/dist/commonjs/queryMetrics/timeSpan.js +4 -3
- package/dist/commonjs/queryMetrics/timeSpan.js.map +1 -1
- package/dist/commonjs/request/ErrorResponse.js +19 -0
- package/dist/commonjs/request/ErrorResponse.js.map +1 -1
- package/dist/commonjs/request/FeedResponse.js +4 -0
- package/dist/commonjs/request/FeedResponse.js.map +1 -1
- package/dist/commonjs/request/RequestHandler.js +1 -2
- package/dist/commonjs/request/RequestHandler.js.map +1 -1
- package/dist/commonjs/request/ResourceResponse.js +5 -0
- package/dist/commonjs/request/ResourceResponse.js.map +1 -1
- package/dist/commonjs/request/TimeoutError.js +1 -1
- package/dist/commonjs/request/TimeoutError.js.map +1 -1
- package/dist/commonjs/request/hybridSearchQueryResult.js +5 -0
- package/dist/commonjs/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/commonjs/request/request.js +5 -1
- package/dist/commonjs/request/request.js.map +1 -1
- package/dist/commonjs/retry/bulkExecutionRetryPolicy.js +5 -2
- package/dist/commonjs/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/defaultRetryPolicy.d.ts.map +1 -1
- package/dist/commonjs/retry/defaultRetryPolicy.js +6 -6
- package/dist/commonjs/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js +24 -7
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/resourceThrottleRetryPolicy.js +20 -10
- package/dist/commonjs/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/retryUtility.d.ts.map +1 -1
- package/dist/commonjs/retry/retryUtility.js +5 -5
- package/dist/commonjs/retry/retryUtility.js.map +1 -1
- package/dist/commonjs/retry/sessionRetryPolicy.js +8 -4
- package/dist/commonjs/retry/sessionRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js +14 -4
- package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js.map +1 -1
- package/dist/commonjs/routing/QueryRange.js +4 -0
- package/dist/commonjs/routing/QueryRange.js.map +1 -1
- package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js +4 -0
- package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/commonjs/routing/partitionKeyRangeCache.js +2 -0
- package/dist/commonjs/routing/partitionKeyRangeCache.js.map +1 -1
- package/dist/commonjs/routing/smartRoutingMapProvider.js +1 -0
- package/dist/commonjs/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/commonjs/session/VectorSessionToken.js +6 -2
- package/dist/commonjs/session/VectorSessionToken.js.map +1 -1
- package/dist/commonjs/session/sessionContainer.js +5 -3
- package/dist/commonjs/session/sessionContainer.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/utils/batch.js +15 -4
- package/dist/commonjs/utils/batch.js.map +1 -1
- package/dist/commonjs/utils/fixedSizePriorityQueue.js +4 -0
- package/dist/commonjs/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/commonjs/utils/hashing/hash.js +1 -1
- package/dist/commonjs/utils/hashing/hash.js.map +1 -1
- package/dist/commonjs/utils/nonStreamingOrderByMap.js +2 -0
- package/dist/commonjs/utils/nonStreamingOrderByMap.js.map +1 -1
- package/dist/esm/ChangeFeedIterator.js +17 -11
- package/dist/esm/ChangeFeedIterator.js.map +1 -1
- package/dist/esm/ChangeFeedResponse.js +8 -0
- package/dist/esm/ChangeFeedResponse.js.map +1 -1
- package/dist/esm/ClientContext.js +122 -29
- package/dist/esm/ClientContext.js.map +1 -1
- package/dist/esm/CosmosClient.js +34 -3
- package/dist/esm/CosmosClient.js.map +1 -1
- package/dist/esm/CosmosDiagnostics.js +3 -0
- package/dist/esm/CosmosDiagnostics.js.map +1 -1
- package/dist/esm/PartitionKeyRangeFailoverInfo.js +8 -5
- package/dist/esm/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/esm/bulk/Batcher.js +13 -3
- package/dist/esm/bulk/Batcher.js.map +1 -1
- package/dist/esm/bulk/BulkHelper.js +26 -11
- package/dist/esm/bulk/BulkHelper.js.map +1 -1
- package/dist/esm/bulk/BulkResponse.js +22 -20
- package/dist/esm/bulk/BulkResponse.js.map +1 -1
- package/dist/esm/bulk/CongestionAlgorithm.js +11 -4
- package/dist/esm/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/esm/bulk/HelperPerPartition.js +14 -1
- package/dist/esm/bulk/HelperPerPartition.js.map +1 -1
- package/dist/esm/bulk/ItemOperationContext.js +4 -0
- package/dist/esm/bulk/ItemOperationContext.js.map +1 -1
- package/dist/esm/bulk/Limiter.js +27 -18
- package/dist/esm/bulk/Limiter.js.map +1 -1
- package/dist/esm/bulk/PartitionMetric.js +4 -0
- package/dist/esm/bulk/PartitionMetric.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
- package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
- package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedRange.js +20 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js +8 -0
- package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
- package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/esm/client/ChangeFeed/FeedRange.js +8 -0
- package/dist/esm/client/ChangeFeed/FeedRange.js.map +1 -1
- package/dist/esm/client/ChangeFeed/FeedRangeQueue.js +1 -0
- package/dist/esm/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
- package/dist/esm/client/ChangeFeed/changeFeedUtils.js +5 -5
- package/dist/esm/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/esm/client/ClientUtils.js +1 -1
- package/dist/esm/client/ClientUtils.js.map +1 -1
- package/dist/esm/client/Conflict/Conflict.js +4 -0
- package/dist/esm/client/Conflict/Conflict.js.map +1 -1
- package/dist/esm/client/Conflict/ConflictResponse.js +2 -0
- package/dist/esm/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/esm/client/Conflict/Conflicts.js +2 -0
- package/dist/esm/client/Conflict/Conflicts.js.map +1 -1
- package/dist/esm/client/Container/Container.js +18 -3
- package/dist/esm/client/Container/Container.js.map +1 -1
- package/dist/esm/client/Container/ContainerResponse.js +2 -0
- package/dist/esm/client/Container/ContainerResponse.js.map +1 -1
- package/dist/esm/client/Container/Containers.js +4 -2
- package/dist/esm/client/Container/Containers.js.map +1 -1
- package/dist/esm/client/Database/Database.js +33 -0
- package/dist/esm/client/Database/Database.js.map +1 -1
- package/dist/esm/client/Database/DatabaseResponse.js +2 -0
- package/dist/esm/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/esm/client/Database/Databases.js +3 -0
- package/dist/esm/client/Database/Databases.js.map +1 -1
- package/dist/esm/client/Item/Item.js +4 -0
- package/dist/esm/client/Item/Item.js.map +1 -1
- package/dist/esm/client/Item/ItemResponse.js +2 -0
- package/dist/esm/client/Item/ItemResponse.js.map +1 -1
- package/dist/esm/client/Item/Items.js +3 -0
- package/dist/esm/client/Item/Items.js.map +1 -1
- package/dist/esm/client/Offer/Offer.js +3 -0
- package/dist/esm/client/Offer/Offer.js.map +1 -1
- package/dist/esm/client/Offer/OfferResponse.js +2 -0
- package/dist/esm/client/Offer/OfferResponse.js.map +1 -1
- package/dist/esm/client/Offer/Offers.js +2 -0
- package/dist/esm/client/Offer/Offers.js.map +1 -1
- package/dist/esm/client/Permission/Permission.js +3 -0
- package/dist/esm/client/Permission/Permission.js.map +1 -1
- package/dist/esm/client/Permission/PermissionResponse.js +2 -0
- package/dist/esm/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/esm/client/Permission/Permissions.js +2 -0
- package/dist/esm/client/Permission/Permissions.js.map +1 -1
- package/dist/esm/client/SasToken/SasTokenProperties.js +17 -0
- package/dist/esm/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/esm/client/Script/Scripts.js +5 -0
- package/dist/esm/client/Script/Scripts.js.map +1 -1
- package/dist/esm/client/StoredProcedure/StoredProcedure.js +3 -0
- package/dist/esm/client/StoredProcedure/StoredProcedure.js.map +1 -1
- package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js +4 -0
- package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/esm/client/StoredProcedure/StoredProcedures.js +2 -0
- package/dist/esm/client/StoredProcedure/StoredProcedures.js.map +1 -1
- package/dist/esm/client/Trigger/Trigger.js +3 -0
- package/dist/esm/client/Trigger/Trigger.js.map +1 -1
- package/dist/esm/client/Trigger/TriggerResponse.js +2 -0
- package/dist/esm/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/esm/client/Trigger/Triggers.js +2 -0
- package/dist/esm/client/Trigger/Triggers.js.map +1 -1
- package/dist/esm/client/User/User.js +9 -0
- package/dist/esm/client/User/User.js.map +1 -1
- package/dist/esm/client/User/UserResponse.js +2 -0
- package/dist/esm/client/User/UserResponse.js.map +1 -1
- package/dist/esm/client/User/Users.js +2 -0
- package/dist/esm/client/User/Users.js.map +1 -1
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
- package/dist/esm/common/constants.js +1 -1
- package/dist/esm/common/constants.js.map +1 -1
- package/dist/esm/diagnostics/CosmosDiagnosticsContext.js +8 -7
- package/dist/esm/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/esm/diagnostics/DiagnosticNodeInternal.js +26 -7
- package/dist/esm/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/esm/diagnostics/DiagnosticWriter.js +1 -3
- package/dist/esm/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/esm/diagnostics/index.js +2 -2
- package/dist/esm/diagnostics/index.js.map +1 -1
- package/dist/esm/documents/DatabaseAccount.js +20 -4
- package/dist/esm/documents/DatabaseAccount.js.map +1 -1
- package/dist/esm/documents/PartitionKey.js +1 -3
- package/dist/esm/documents/PartitionKey.js.map +1 -1
- package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
- package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
- package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
- package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/esm/encryption/Cache/EncryptionSettingsCache.js +2 -0
- package/dist/esm/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
- package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
- package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
- package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
- package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/esm/encryption/EncryptionItemQueryIterator.js +24 -27
- package/dist/esm/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
- package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
- package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
- package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
- package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
- package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
- package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/esm/encryption/EncryptionKeyStoreProvider.js +8 -1
- package/dist/esm/encryption/EncryptionKeyStoreProvider.js.map +1 -1
- package/dist/esm/encryption/EncryptionManager.js +6 -0
- package/dist/esm/encryption/EncryptionManager.js.map +1 -1
- package/dist/esm/encryption/EncryptionProcessor.js +5 -0
- package/dist/esm/encryption/EncryptionProcessor.js.map +1 -1
- package/dist/esm/encryption/EncryptionQueryBuilder.js +2 -0
- package/dist/esm/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/esm/encryption/EncryptionSettingForProperty.js +6 -0
- package/dist/esm/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/esm/encryption/EncryptionSettings.js +6 -3
- package/dist/esm/encryption/EncryptionSettings.js.map +1 -1
- package/dist/esm/encryption/KeyEncryptionKey.js +4 -0
- package/dist/esm/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/esm/encryption/Serializers/StringSerializer.js +1 -1
- package/dist/esm/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/esm/extractPartitionKey.js +2 -2
- package/dist/esm/extractPartitionKey.js.map +1 -1
- package/dist/esm/globalEndpointManager.d.ts.map +1 -1
- package/dist/esm/globalEndpointManager.js +36 -23
- package/dist/esm/globalEndpointManager.js.map +1 -1
- package/dist/esm/globalPartitionEndpointManager.js +8 -0
- package/dist/esm/globalPartitionEndpointManager.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
- package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
- package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
- package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
- package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
- package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
- package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
- package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
- package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
- package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/FetchResult.js +4 -0
- package/dist/esm/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
- package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/esm/queryExecutionContext/documentProducer.js +34 -21
- package/dist/esm/queryExecutionContext/documentProducer.js.map +1 -1
- package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
- package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
- package/dist/esm/queryExecutionContext/orderByComparator.js +1 -0
- package/dist/esm/queryExecutionContext/orderByComparator.js.map +1 -1
- package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
- package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
- package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
- package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
- package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
- package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
- package/dist/esm/queryIterator.js +41 -33
- package/dist/esm/queryIterator.js.map +1 -1
- package/dist/esm/queryMetrics/clientSideMetrics.js +2 -1
- package/dist/esm/queryMetrics/clientSideMetrics.js.map +1 -1
- package/dist/esm/queryMetrics/queryMetrics.js +14 -1
- package/dist/esm/queryMetrics/queryMetrics.js.map +1 -1
- package/dist/esm/queryMetrics/queryPreparationTime.js +5 -1
- package/dist/esm/queryMetrics/queryPreparationTime.js.map +1 -1
- package/dist/esm/queryMetrics/runtimeExecutionTimes.js +4 -1
- package/dist/esm/queryMetrics/runtimeExecutionTimes.js.map +1 -1
- package/dist/esm/queryMetrics/timeSpan.js +4 -3
- package/dist/esm/queryMetrics/timeSpan.js.map +1 -1
- package/dist/esm/request/ErrorResponse.js +19 -0
- package/dist/esm/request/ErrorResponse.js.map +1 -1
- package/dist/esm/request/FeedResponse.js +4 -0
- package/dist/esm/request/FeedResponse.js.map +1 -1
- package/dist/esm/request/RequestHandler.js +1 -2
- package/dist/esm/request/RequestHandler.js.map +1 -1
- package/dist/esm/request/ResourceResponse.js +5 -0
- package/dist/esm/request/ResourceResponse.js.map +1 -1
- package/dist/esm/request/TimeoutError.js +1 -1
- package/dist/esm/request/TimeoutError.js.map +1 -1
- package/dist/esm/request/hybridSearchQueryResult.js +5 -0
- package/dist/esm/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/esm/request/request.js +5 -1
- package/dist/esm/request/request.js.map +1 -1
- package/dist/esm/retry/bulkExecutionRetryPolicy.js +5 -2
- package/dist/esm/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/esm/retry/defaultRetryPolicy.d.ts.map +1 -1
- package/dist/esm/retry/defaultRetryPolicy.js +7 -7
- package/dist/esm/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.js +24 -7
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
- package/dist/esm/retry/resourceThrottleRetryPolicy.js +20 -10
- package/dist/esm/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/esm/retry/retryUtility.d.ts.map +1 -1
- package/dist/esm/retry/retryUtility.js +5 -5
- package/dist/esm/retry/retryUtility.js.map +1 -1
- package/dist/esm/retry/sessionRetryPolicy.js +8 -4
- package/dist/esm/retry/sessionRetryPolicy.js.map +1 -1
- package/dist/esm/retry/timeoutFailoverRetryPolicy.js +14 -4
- package/dist/esm/retry/timeoutFailoverRetryPolicy.js.map +1 -1
- package/dist/esm/routing/QueryRange.js +4 -0
- package/dist/esm/routing/QueryRange.js.map +1 -1
- package/dist/esm/routing/inMemoryCollectionRoutingMap.js +4 -0
- package/dist/esm/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/esm/routing/partitionKeyRangeCache.js +2 -0
- package/dist/esm/routing/partitionKeyRangeCache.js.map +1 -1
- package/dist/esm/routing/smartRoutingMapProvider.js +1 -0
- package/dist/esm/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/esm/session/VectorSessionToken.js +6 -2
- package/dist/esm/session/VectorSessionToken.js.map +1 -1
- package/dist/esm/session/sessionContainer.js +5 -3
- package/dist/esm/session/sessionContainer.js.map +1 -1
- package/dist/esm/utils/batch.js +15 -4
- package/dist/esm/utils/batch.js.map +1 -1
- package/dist/esm/utils/fixedSizePriorityQueue.js +4 -0
- package/dist/esm/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/esm/utils/hashing/hash.js +1 -1
- package/dist/esm/utils/hashing/hash.js.map +1 -1
- package/dist/esm/utils/nonStreamingOrderByMap.js +2 -0
- package/dist/esm/utils/nonStreamingOrderByMap.js.map +1 -1
- package/dist/react-native/ChangeFeedIterator.js +17 -11
- package/dist/react-native/ChangeFeedIterator.js.map +1 -1
- package/dist/react-native/ChangeFeedResponse.js +8 -0
- package/dist/react-native/ChangeFeedResponse.js.map +1 -1
- package/dist/react-native/ClientContext.js +122 -29
- package/dist/react-native/ClientContext.js.map +1 -1
- package/dist/react-native/CosmosClient.js +34 -3
- package/dist/react-native/CosmosClient.js.map +1 -1
- package/dist/react-native/CosmosDiagnostics.js +3 -0
- package/dist/react-native/CosmosDiagnostics.js.map +1 -1
- package/dist/react-native/PartitionKeyRangeFailoverInfo.js +8 -5
- package/dist/react-native/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/react-native/bulk/Batcher.js +13 -3
- package/dist/react-native/bulk/Batcher.js.map +1 -1
- package/dist/react-native/bulk/BulkHelper.js +26 -11
- package/dist/react-native/bulk/BulkHelper.js.map +1 -1
- package/dist/react-native/bulk/BulkResponse.js +22 -20
- package/dist/react-native/bulk/BulkResponse.js.map +1 -1
- package/dist/react-native/bulk/CongestionAlgorithm.js +11 -4
- package/dist/react-native/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/react-native/bulk/HelperPerPartition.js +14 -1
- package/dist/react-native/bulk/HelperPerPartition.js.map +1 -1
- package/dist/react-native/bulk/ItemOperationContext.js +4 -0
- package/dist/react-native/bulk/ItemOperationContext.js.map +1 -1
- package/dist/react-native/bulk/Limiter.js +27 -18
- package/dist/react-native/bulk/Limiter.js.map +1 -1
- package/dist/react-native/bulk/PartitionMetric.js +4 -0
- package/dist/react-native/bulk/PartitionMetric.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js +26 -15
- package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js +16 -8
- package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js +20 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js +8 -0
- package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
- package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/FeedRange.js +8 -0
- package/dist/react-native/client/ChangeFeed/FeedRange.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js +1 -0
- package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/changeFeedUtils.js +5 -5
- package/dist/react-native/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/react-native/client/ClientUtils.js +1 -1
- package/dist/react-native/client/ClientUtils.js.map +1 -1
- package/dist/react-native/client/Conflict/Conflict.js +4 -0
- package/dist/react-native/client/Conflict/Conflict.js.map +1 -1
- package/dist/react-native/client/Conflict/ConflictResponse.js +2 -0
- package/dist/react-native/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/react-native/client/Conflict/Conflicts.js +2 -0
- package/dist/react-native/client/Conflict/Conflicts.js.map +1 -1
- package/dist/react-native/client/Container/Container.js +18 -3
- package/dist/react-native/client/Container/Container.js.map +1 -1
- package/dist/react-native/client/Container/ContainerResponse.js +2 -0
- package/dist/react-native/client/Container/ContainerResponse.js.map +1 -1
- package/dist/react-native/client/Container/Containers.js +4 -2
- package/dist/react-native/client/Container/Containers.js.map +1 -1
- package/dist/react-native/client/Database/Database.js +33 -0
- package/dist/react-native/client/Database/Database.js.map +1 -1
- package/dist/react-native/client/Database/DatabaseResponse.js +2 -0
- package/dist/react-native/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/react-native/client/Database/Databases.js +3 -0
- package/dist/react-native/client/Database/Databases.js.map +1 -1
- package/dist/react-native/client/Item/Item.js +4 -0
- package/dist/react-native/client/Item/Item.js.map +1 -1
- package/dist/react-native/client/Item/ItemResponse.js +2 -0
- package/dist/react-native/client/Item/ItemResponse.js.map +1 -1
- package/dist/react-native/client/Item/Items.js +3 -0
- package/dist/react-native/client/Item/Items.js.map +1 -1
- package/dist/react-native/client/Offer/Offer.js +3 -0
- package/dist/react-native/client/Offer/Offer.js.map +1 -1
- package/dist/react-native/client/Offer/OfferResponse.js +2 -0
- package/dist/react-native/client/Offer/OfferResponse.js.map +1 -1
- package/dist/react-native/client/Offer/Offers.js +2 -0
- package/dist/react-native/client/Offer/Offers.js.map +1 -1
- package/dist/react-native/client/Permission/Permission.js +3 -0
- package/dist/react-native/client/Permission/Permission.js.map +1 -1
- package/dist/react-native/client/Permission/PermissionResponse.js +2 -0
- package/dist/react-native/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/react-native/client/Permission/Permissions.js +2 -0
- package/dist/react-native/client/Permission/Permissions.js.map +1 -1
- package/dist/react-native/client/SasToken/SasTokenProperties.js +17 -0
- package/dist/react-native/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/react-native/client/Script/Scripts.js +5 -0
- package/dist/react-native/client/Script/Scripts.js.map +1 -1
- package/dist/react-native/client/StoredProcedure/StoredProcedure.js +3 -0
- package/dist/react-native/client/StoredProcedure/StoredProcedure.js.map +1 -1
- package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js +4 -0
- package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/react-native/client/StoredProcedure/StoredProcedures.js +2 -0
- package/dist/react-native/client/StoredProcedure/StoredProcedures.js.map +1 -1
- package/dist/react-native/client/Trigger/Trigger.js +3 -0
- package/dist/react-native/client/Trigger/Trigger.js.map +1 -1
- package/dist/react-native/client/Trigger/TriggerResponse.js +2 -0
- package/dist/react-native/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/react-native/client/Trigger/Triggers.js +2 -0
- package/dist/react-native/client/Trigger/Triggers.js.map +1 -1
- package/dist/react-native/client/User/User.js +9 -0
- package/dist/react-native/client/User/User.js.map +1 -1
- package/dist/react-native/client/User/UserResponse.js +2 -0
- package/dist/react-native/client/User/UserResponse.js.map +1 -1
- package/dist/react-native/client/User/Users.js +2 -0
- package/dist/react-native/client/User/Users.js.map +1 -1
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
- package/dist/react-native/common/constants.js +1 -1
- package/dist/react-native/common/constants.js.map +1 -1
- package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js +8 -7
- package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/react-native/diagnostics/DiagnosticNodeInternal.js +26 -7
- package/dist/react-native/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/react-native/diagnostics/DiagnosticWriter.js +1 -3
- package/dist/react-native/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/react-native/diagnostics/index.js +2 -2
- package/dist/react-native/diagnostics/index.js.map +1 -1
- package/dist/react-native/documents/DatabaseAccount.js +20 -4
- package/dist/react-native/documents/DatabaseAccount.js.map +1 -1
- package/dist/react-native/documents/PartitionKey.js +1 -3
- package/dist/react-native/documents/PartitionKey.js.map +1 -1
- package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
- package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
- package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
- package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js +2 -0
- package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
- package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
- package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
- package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
- package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/react-native/encryption/EncryptionItemQueryIterator.js +24 -27
- package/dist/react-native/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
- package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
- package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
- package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
- package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
- package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
- package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/react-native/encryption/EncryptionKeyStoreProvider.js +8 -1
- package/dist/react-native/encryption/EncryptionKeyStoreProvider.js.map +1 -1
- package/dist/react-native/encryption/EncryptionManager.js +6 -0
- package/dist/react-native/encryption/EncryptionManager.js.map +1 -1
- package/dist/react-native/encryption/EncryptionProcessor.js +5 -0
- package/dist/react-native/encryption/EncryptionProcessor.js.map +1 -1
- package/dist/react-native/encryption/EncryptionQueryBuilder.js +2 -0
- package/dist/react-native/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/react-native/encryption/EncryptionSettingForProperty.js +6 -0
- package/dist/react-native/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/react-native/encryption/EncryptionSettings.js +6 -3
- package/dist/react-native/encryption/EncryptionSettings.js.map +1 -1
- package/dist/react-native/encryption/KeyEncryptionKey.js +4 -0
- package/dist/react-native/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/react-native/encryption/Serializers/StringSerializer.js +1 -1
- package/dist/react-native/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/react-native/extractPartitionKey.js +2 -2
- package/dist/react-native/extractPartitionKey.js.map +1 -1
- package/dist/react-native/globalEndpointManager.d.ts.map +1 -1
- package/dist/react-native/globalEndpointManager.js +36 -23
- package/dist/react-native/globalEndpointManager.js.map +1 -1
- package/dist/react-native/globalPartitionEndpointManager.js +8 -0
- package/dist/react-native/globalPartitionEndpointManager.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
- package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
- package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
- package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
- package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
- package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
- package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
- package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
- package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
- package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/FetchResult.js +4 -0
- package/dist/react-native/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
- package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/react-native/queryExecutionContext/documentProducer.js +34 -21
- package/dist/react-native/queryExecutionContext/documentProducer.js.map +1 -1
- package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
- package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
- package/dist/react-native/queryExecutionContext/orderByComparator.js +1 -0
- package/dist/react-native/queryExecutionContext/orderByComparator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
- package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
- package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
- package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
- package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
- package/dist/react-native/queryIterator.js +41 -33
- package/dist/react-native/queryIterator.js.map +1 -1
- package/dist/react-native/queryMetrics/clientSideMetrics.js +2 -1
- package/dist/react-native/queryMetrics/clientSideMetrics.js.map +1 -1
- package/dist/react-native/queryMetrics/queryMetrics.js +14 -1
- package/dist/react-native/queryMetrics/queryMetrics.js.map +1 -1
- package/dist/react-native/queryMetrics/queryPreparationTime.js +5 -1
- package/dist/react-native/queryMetrics/queryPreparationTime.js.map +1 -1
- package/dist/react-native/queryMetrics/runtimeExecutionTimes.js +4 -1
- package/dist/react-native/queryMetrics/runtimeExecutionTimes.js.map +1 -1
- package/dist/react-native/queryMetrics/timeSpan.js +4 -3
- package/dist/react-native/queryMetrics/timeSpan.js.map +1 -1
- package/dist/react-native/request/ErrorResponse.js +19 -0
- package/dist/react-native/request/ErrorResponse.js.map +1 -1
- package/dist/react-native/request/FeedResponse.js +4 -0
- package/dist/react-native/request/FeedResponse.js.map +1 -1
- package/dist/react-native/request/RequestHandler.js +1 -2
- package/dist/react-native/request/RequestHandler.js.map +1 -1
- package/dist/react-native/request/ResourceResponse.js +5 -0
- package/dist/react-native/request/ResourceResponse.js.map +1 -1
- package/dist/react-native/request/TimeoutError.js +1 -1
- package/dist/react-native/request/TimeoutError.js.map +1 -1
- package/dist/react-native/request/hybridSearchQueryResult.js +5 -0
- package/dist/react-native/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/react-native/request/request.js +5 -1
- package/dist/react-native/request/request.js.map +1 -1
- package/dist/react-native/retry/bulkExecutionRetryPolicy.js +5 -2
- package/dist/react-native/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/defaultRetryPolicy.d.ts.map +1 -1
- package/dist/react-native/retry/defaultRetryPolicy.js +7 -7
- package/dist/react-native/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js +24 -7
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/resourceThrottleRetryPolicy.js +20 -10
- package/dist/react-native/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/retryUtility.d.ts.map +1 -1
- package/dist/react-native/retry/retryUtility.js +5 -5
- package/dist/react-native/retry/retryUtility.js.map +1 -1
- package/dist/react-native/retry/sessionRetryPolicy.js +8 -4
- package/dist/react-native/retry/sessionRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/timeoutFailoverRetryPolicy.js +14 -4
- package/dist/react-native/retry/timeoutFailoverRetryPolicy.js.map +1 -1
- package/dist/react-native/routing/QueryRange.js +4 -0
- package/dist/react-native/routing/QueryRange.js.map +1 -1
- package/dist/react-native/routing/inMemoryCollectionRoutingMap.js +4 -0
- package/dist/react-native/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/react-native/routing/partitionKeyRangeCache.js +2 -0
- package/dist/react-native/routing/partitionKeyRangeCache.js.map +1 -1
- package/dist/react-native/routing/smartRoutingMapProvider.js +1 -0
- package/dist/react-native/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/react-native/session/VectorSessionToken.js +6 -2
- package/dist/react-native/session/VectorSessionToken.js.map +1 -1
- package/dist/react-native/session/sessionContainer.js +5 -3
- package/dist/react-native/session/sessionContainer.js.map +1 -1
- package/dist/react-native/utils/batch.js +15 -4
- package/dist/react-native/utils/batch.js.map +1 -1
- package/dist/react-native/utils/fixedSizePriorityQueue.js +4 -0
- package/dist/react-native/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/react-native/utils/hashing/hash.js +1 -1
- package/dist/react-native/utils/hashing/hash.js.map +1 -1
- package/dist/react-native/utils/nonStreamingOrderByMap.js +2 -0
- package/dist/react-native/utils/nonStreamingOrderByMap.js.map +1 -1
- package/package.json +32 -33
|
@@ -12,8 +12,13 @@ const batch_js_1 = require("../utils/batch.js");
|
|
|
12
12
|
* @hidden
|
|
13
13
|
*/
|
|
14
14
|
class BulkResponse {
|
|
15
|
+
statusCode;
|
|
16
|
+
subStatusCode;
|
|
17
|
+
headers;
|
|
18
|
+
operations;
|
|
19
|
+
results = [];
|
|
20
|
+
diagnostics;
|
|
15
21
|
constructor(statusCode, subStatusCode, headers, operations) {
|
|
16
|
-
this.results = [];
|
|
17
22
|
this.statusCode = statusCode;
|
|
18
23
|
this.subStatusCode = subStatusCode;
|
|
19
24
|
this.headers = headers;
|
|
@@ -31,7 +36,6 @@ class BulkResponse {
|
|
|
31
36
|
* static method to create BulkResponse from Response object
|
|
32
37
|
*/
|
|
33
38
|
static fromResponseMessage(responseMessage, operations) {
|
|
34
|
-
var _a;
|
|
35
39
|
// Create and populate the response object
|
|
36
40
|
let bulkResponse = this.populateFromResponse(responseMessage, operations);
|
|
37
41
|
if (!bulkResponse.results || bulkResponse.results.length !== operations.length) {
|
|
@@ -43,7 +47,7 @@ class BulkResponse {
|
|
|
43
47
|
// When the overall response status code is TooManyRequests, propagate the RetryAfter into the individual operations.
|
|
44
48
|
let retryAfterMilliseconds = 0;
|
|
45
49
|
if (responseMessage.code === statusCodes_js_1.StatusCodes.TooManyRequests) {
|
|
46
|
-
const retryAfter =
|
|
50
|
+
const retryAfter = responseMessage.headers?.[constants_js_1.Constants.HttpHeaders.RetryAfterInMs];
|
|
47
51
|
retryAfterMilliseconds = !retryAfter || isNaN(Number(retryAfter)) ? 0 : Number(retryAfter);
|
|
48
52
|
}
|
|
49
53
|
bulkResponse.createAndPopulateResults(operations, retryAfterMilliseconds, responseMessage);
|
|
@@ -51,19 +55,18 @@ class BulkResponse {
|
|
|
51
55
|
return bulkResponse;
|
|
52
56
|
}
|
|
53
57
|
static populateFromResponse(responseMessage, operations) {
|
|
54
|
-
var _a, _b, _c;
|
|
55
58
|
const results = [];
|
|
56
59
|
if (responseMessage.result) {
|
|
57
60
|
for (let i = 0; i < operations.length; i++) {
|
|
58
61
|
const itemResponse = responseMessage.result[i];
|
|
59
|
-
if ((0, batch_js_1.isSuccessStatusCode)(itemResponse
|
|
62
|
+
if ((0, batch_js_1.isSuccessStatusCode)(itemResponse?.statusCode)) {
|
|
60
63
|
const result = {
|
|
61
|
-
statusCode: itemResponse
|
|
62
|
-
eTag: itemResponse
|
|
63
|
-
activityId:
|
|
64
|
-
sessionToken:
|
|
65
|
-
requestCharge: itemResponse
|
|
66
|
-
resourceBody: itemResponse
|
|
64
|
+
statusCode: itemResponse?.statusCode,
|
|
65
|
+
eTag: itemResponse?.eTag,
|
|
66
|
+
activityId: responseMessage.headers?.[constants_js_1.Constants.HttpHeaders.ActivityId],
|
|
67
|
+
sessionToken: responseMessage.headers?.[constants_js_1.Constants.HttpHeaders.SessionToken],
|
|
68
|
+
requestCharge: itemResponse?.requestCharge,
|
|
69
|
+
resourceBody: itemResponse?.resourceBody,
|
|
67
70
|
// diagnostics will be filled in Batcher dispatch to capture the complete diagnostics(e.g. decryption)
|
|
68
71
|
diagnostics: null,
|
|
69
72
|
headers: responseMessage.headers,
|
|
@@ -72,14 +75,14 @@ class BulkResponse {
|
|
|
72
75
|
}
|
|
73
76
|
else {
|
|
74
77
|
const error = new index_js_1.ErrorResponse();
|
|
75
|
-
error.code = itemResponse
|
|
76
|
-
error.substatus = itemResponse
|
|
77
|
-
error.message = itemResponse
|
|
78
|
-
error.requestCharge = itemResponse
|
|
79
|
-
error.body = itemResponse
|
|
78
|
+
error.code = itemResponse?.statusCode;
|
|
79
|
+
error.substatus = itemResponse?.subStatusCode;
|
|
80
|
+
error.message = itemResponse?.message;
|
|
81
|
+
error.requestCharge = itemResponse?.requestCharge;
|
|
82
|
+
error.body = itemResponse?.resourceBody;
|
|
80
83
|
error.headers = responseMessage.headers;
|
|
81
|
-
error.activityId =
|
|
82
|
-
error.retryAfterInMs = itemResponse
|
|
84
|
+
error.activityId = responseMessage.headers?.[constants_js_1.Constants.HttpHeaders.ActivityId];
|
|
85
|
+
error.retryAfterInMs = itemResponse?.retryAfterMilliseconds;
|
|
83
86
|
error.diagnostics = responseMessage.diagnostics;
|
|
84
87
|
results.push(error);
|
|
85
88
|
}
|
|
@@ -104,13 +107,12 @@ class BulkResponse {
|
|
|
104
107
|
}
|
|
105
108
|
createAndPopulateResults(operations, retryAfterInMs, error) {
|
|
106
109
|
this.results = operations.map(() => {
|
|
107
|
-
var _a;
|
|
108
110
|
const errorResponse = new index_js_1.ErrorResponse();
|
|
109
111
|
errorResponse.message = error.message;
|
|
110
112
|
errorResponse.code = this.statusCode;
|
|
111
113
|
errorResponse.substatus = this.subStatusCode;
|
|
112
114
|
errorResponse.retryAfterInMs = retryAfterInMs;
|
|
113
|
-
errorResponse.activityId =
|
|
115
|
+
errorResponse.activityId = this.headers?.[constants_js_1.Constants.HttpHeaders.ActivityId];
|
|
114
116
|
errorResponse.body = error.body;
|
|
115
117
|
errorResponse.diagnostics = error.diagnostics;
|
|
116
118
|
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"]}
|
|
@@ -16,11 +16,18 @@ const constants_js_1 = require("../common/constants.js");
|
|
|
16
16
|
* @hidden
|
|
17
17
|
*/
|
|
18
18
|
class CongestionAlgorithm {
|
|
19
|
+
// The semaphore to control the degree of concurrency.
|
|
20
|
+
limiterQueue;
|
|
21
|
+
// captures metrics upto previous requests for a partition.
|
|
22
|
+
oldPartitionMetric;
|
|
23
|
+
// captures metrics upto current request for a partition.
|
|
24
|
+
partitionMetric;
|
|
25
|
+
// time to wait before adjusting the degree of concurrency.
|
|
26
|
+
congestionWaitTimeInMs = 1000;
|
|
27
|
+
congestionIncreaseFactor = 1;
|
|
28
|
+
congestionDecreaseFactor = 5;
|
|
29
|
+
currentDegreeOfConcurrency;
|
|
19
30
|
constructor(limiterQueue, partitionMetric, oldPartitionMetric) {
|
|
20
|
-
// time to wait before adjusting the degree of concurrency.
|
|
21
|
-
this.congestionWaitTimeInMs = 1000;
|
|
22
|
-
this.congestionIncreaseFactor = 1;
|
|
23
|
-
this.congestionDecreaseFactor = 5;
|
|
24
31
|
this.limiterQueue = limiterQueue;
|
|
25
32
|
this.oldPartitionMetric = oldPartitionMetric;
|
|
26
33
|
this.partitionMetric = partitionMetric;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CongestionAlgorithm.js","sourceRoot":"","sources":["../../../src/bulk/CongestionAlgorithm.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,yDAAmD;AAInD;;;;;;;;;;GAUG;AAEH,MAAa,mBAAmB;
|
|
1
|
+
{"version":3,"file":"CongestionAlgorithm.js","sourceRoot":"","sources":["../../../src/bulk/CongestionAlgorithm.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,yDAAmD;AAInD;;;;;;;;;;GAUG;AAEH,MAAa,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,wBAAS,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;AApED,kDAoEC","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"]}
|
|
@@ -16,8 +16,21 @@ const Limiter_js_1 = require("./Limiter.js");
|
|
|
16
16
|
* @hidden
|
|
17
17
|
*/
|
|
18
18
|
class HelperPerPartition {
|
|
19
|
+
executor;
|
|
20
|
+
retrier;
|
|
21
|
+
currentBatcher;
|
|
22
|
+
lock;
|
|
23
|
+
partitionMetric;
|
|
24
|
+
oldPartitionMetric;
|
|
25
|
+
diagnosticLevel;
|
|
26
|
+
encryptionEnabled;
|
|
27
|
+
encryptionProcessor;
|
|
28
|
+
clientConfigDiagnostics;
|
|
29
|
+
congestionControlAlgorithm;
|
|
30
|
+
dispatchLimiterQueue;
|
|
31
|
+
initialConcurrency = 1;
|
|
32
|
+
processedOperationCountRef;
|
|
19
33
|
constructor(executor, retrier, refreshpartitionKeyRangeCache, diagnosticLevel, encryptionEnabled, clientConfig, encryptionProcessor, processedOperationCountRef) {
|
|
20
|
-
this.initialConcurrency = 1;
|
|
21
34
|
this.executor = executor;
|
|
22
35
|
this.retrier = retrier;
|
|
23
36
|
this.diagnosticLevel = diagnosticLevel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelperPerPartition.js","sourceRoot":"","sources":["../../../src/bulk/HelperPerPartition.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,kEAAkC;AAClC,6DAAuD;AAKvD,6CAAuC;AACvC,qEAA+D;AAC/D,6DAAuD;AAEvD,6CAA4C;AAE5C;;;;GAIG;AAEH,MAAa,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"]}
|
|
@@ -9,6 +9,10 @@ const batch_js_1 = require("../utils/batch.js");
|
|
|
9
9
|
* @hidden
|
|
10
10
|
*/
|
|
11
11
|
class ItemOperationContext {
|
|
12
|
+
pkRangeId;
|
|
13
|
+
retryPolicy;
|
|
14
|
+
diagnosticNode;
|
|
15
|
+
taskCompletionSource;
|
|
12
16
|
constructor(pkRangeId, retryPolicy, diagnosticNode) {
|
|
13
17
|
this.pkRangeId = pkRangeId;
|
|
14
18
|
this.retryPolicy = retryPolicy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemOperationContext.js","sourceRoot":"","sources":["../../../src/bulk/ItemOperationContext.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAKlC,gDAAyD;AAEzD;;;GAGG;AACH,MAAa,oBAAoB;
|
|
1
|
+
{"version":3,"file":"ItemOperationContext.js","sourceRoot":"","sources":["../../../src/bulk/ItemOperationContext.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAKlC,gDAAyD;AAEzD;;;GAGG;AACH,MAAa,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,+BAAoB,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;AAjCD,oDAiCC","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"]}
|
|
@@ -5,18 +5,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.LimiterQueue = void 0;
|
|
6
6
|
const statusCodes_js_1 = require("../common/statusCodes.js");
|
|
7
7
|
class ListNode {
|
|
8
|
+
value;
|
|
9
|
+
next = null;
|
|
10
|
+
prev = null;
|
|
8
11
|
constructor(value) {
|
|
9
|
-
this.next = null;
|
|
10
|
-
this.prev = null;
|
|
11
12
|
this.value = value;
|
|
12
13
|
}
|
|
13
14
|
}
|
|
14
15
|
class DoublyLinkedList {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
this.length = 0;
|
|
19
|
-
}
|
|
16
|
+
head = null;
|
|
17
|
+
tail = null;
|
|
18
|
+
length = 0;
|
|
20
19
|
push(value) {
|
|
21
20
|
const node = new ListNode(value);
|
|
22
21
|
if (!this.head) {
|
|
@@ -74,21 +73,31 @@ function scheduleCallback(fn) {
|
|
|
74
73
|
* any subsequent push() calls will immediately resolve with that value.
|
|
75
74
|
*/
|
|
76
75
|
class LimiterQueue {
|
|
76
|
+
// maximum number of tasks allowed to run concurrently
|
|
77
|
+
concurrency;
|
|
78
|
+
// number of tasks currently executing
|
|
79
|
+
running = 0;
|
|
80
|
+
// doubly linked list to store batchers and resolve/reject functions for dispatch tasks
|
|
81
|
+
tasks = new DoublyLinkedList();
|
|
82
|
+
// boolean flag that indicates whether the queue has been permanently paused
|
|
83
|
+
terminated = false;
|
|
84
|
+
// value to resolve with when the queue is terminated
|
|
85
|
+
terminatedValue;
|
|
86
|
+
// indicates if the processing cycle has been scheduled via the asynchronous scheduler
|
|
87
|
+
scheduled = false;
|
|
88
|
+
// indicates whether the queue is currently in the process of dequeueing and executing tasks
|
|
89
|
+
processing = false;
|
|
90
|
+
// retry callback to retry all the queued operations in case of split/merge error
|
|
91
|
+
retrier;
|
|
92
|
+
// partiton metric for collecting metrics for the requests
|
|
93
|
+
partitionMetric;
|
|
94
|
+
// callback used to refresh the partition key range cache in case of split/merge error
|
|
95
|
+
refreshPartitionKeyRangeCache;
|
|
96
|
+
refreshPKRangeCachePromise = undefined;
|
|
77
97
|
/**
|
|
78
98
|
* Creates a new HighPerformanceQueue.
|
|
79
99
|
*/
|
|
80
100
|
constructor(concurrency, partitionMetric, retrier, refreshPartitionKeyRangeCache) {
|
|
81
|
-
// number of tasks currently executing
|
|
82
|
-
this.running = 0;
|
|
83
|
-
// doubly linked list to store batchers and resolve/reject functions for dispatch tasks
|
|
84
|
-
this.tasks = new DoublyLinkedList();
|
|
85
|
-
// boolean flag that indicates whether the queue has been permanently paused
|
|
86
|
-
this.terminated = false;
|
|
87
|
-
// indicates if the processing cycle has been scheduled via the asynchronous scheduler
|
|
88
|
-
this.scheduled = false;
|
|
89
|
-
// indicates whether the queue is currently in the process of dequeueing and executing tasks
|
|
90
|
-
this.processing = false;
|
|
91
|
-
this.refreshPKRangeCachePromise = undefined;
|
|
92
101
|
this.concurrency = concurrency;
|
|
93
102
|
this.partitionMetric = partitionMetric;
|
|
94
103
|
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":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,6DAAuD;AAevD,MAAM,QAAQ;IACL,KAAK,CAAI;IACT,IAAI,GAAuB,IAAI,CAAC;IAChC,IAAI,GAAuB,IAAI,CAAC;IACvC,YAAY,KAAQ;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAM,gBAAgB;IACb,IAAI,GAAuB,IAAI,CAAC;IAChC,IAAI,GAAuB,IAAI,CAAC;IAChC,MAAM,GAAG,CAAC,CAAC;IAEX,IAAI,CAAC,KAAQ;QAClB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,EAAc;IACtC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC7E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;SAAM,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;QAC9C,YAAY,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,mDAAmD;QACnD,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAa,YAAY;IACvB,sDAAsD;IAC/C,WAAW,CAAS;IAC3B,sCAAsC;IAC9B,OAAO,GAAG,CAAC,CAAC;IACpB,uFAAuF;IAC/E,KAAK,GAAgC,IAAI,gBAAgB,EAAE,CAAC;IACpE,4EAA4E;IACpE,UAAU,GAAG,KAAK,CAAC;IAC3B,qDAAqD;IAC7C,eAAe,CAAM;IAC7B,sFAAsF;IAC9E,SAAS,GAAG,KAAK,CAAC;IAC1B,4FAA4F;IACpF,UAAU,GAAG,KAAK,CAAC;IAC3B,iFAAiF;IACzE,OAAO,CAAgB;IAC/B,0DAA0D;IAClD,eAAe,CAAkB;IACzC,sFAAsF;IACrE,6BAA6B,CAAyC;IAC/E,0BAA0B,GAA8B,SAAS,CAAC;IAC1E;;OAEG;IACH,YACE,WAAmB,EACnB,eAAgC,EAChC,OAAsB,EACtB,6BAAqE;QAErE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,CAAC;IACrE,CAAC;IAED;;;OAGG;IACI,IAAI,CAAC,OAAgB;QAC1B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YACpC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;YAC1E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,aAAa,CACxB,WAAc,EACd,cAAuC;QAEvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;QACnC,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS;gBAAE,MAAM;YACtB,IAAI,WAAW,KAAK,4BAAW,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBACrD,cAAc,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;YACrC,CAAC;YACD,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,WAAW,KAAK,4BAAW,CAAC,IAAI,EAAE,CAAC;YACrC,gGAAgG;YAChG,+GAA+G;YAC/G,gCAAgC;YAChC,IAAI,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBACpC,MAAM,IAAI,CAAC,0BAA0B,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC;gBACrF,MAAM,IAAI,CAAC,0BAA0B,CAAC;YACxC,CAAC;YACD,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QACjE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,gBAAgB,CAAC,GAAG,EAAE;YACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,OAAO;QACb,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACrC,IAAI,CAAC,SAAS;oBAAE,MAAM;gBAEtB,IAAI,CAAC,OAAO,EAAE,CAAC;gBAEf,gCAAgC;gBAChC,IAAI,eAA6B,CAAC;gBAClC,IAAI,CAAC;oBACH,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACrE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,4BAA4B;oBAC5B,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACtB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,SAAS;gBACX,CAAC;gBAED,KAAK,eAAe;oBAClB,iDAAiD;qBAChD,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBACf,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC5B,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACb,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC,CAAC;qBACD,OAAO,CAAC,GAAG,EAAE;oBACZ,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;wBACjF,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,CAAC;gBACH,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,GAAG,CAAC,CAAC;QACnE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,cAAsB;QAC1C,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACxD,kDAAkD;YAClD,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;CACF;AAjKD,oCAiKC","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"]}
|
|
@@ -9,6 +9,10 @@ const semaphore_1 = tslib_1.__importDefault(require("semaphore"));
|
|
|
9
9
|
* Captures the metrics for the requests made for bulk.
|
|
10
10
|
*/
|
|
11
11
|
class PartitionMetric {
|
|
12
|
+
numberOfItemsOperatedOn;
|
|
13
|
+
timeTakenInMs;
|
|
14
|
+
numberOfThrottles;
|
|
15
|
+
semaphore;
|
|
12
16
|
constructor() {
|
|
13
17
|
this.numberOfItemsOperatedOn = 0;
|
|
14
18
|
this.timeTakenInMs = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PartitionMetric.js","sourceRoot":"","sources":["../../../src/bulk/PartitionMetric.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,kEAAkC;AAElC;;GAEG;AACH,MAAa,eAAe;
|
|
1
|
+
{"version":3,"file":"PartitionMetric.js","sourceRoot":"","sources":["../../../src/bulk/PartitionMetric.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,kEAAkC;AAElC;;GAEG;AACH,MAAa,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,IAAA,mBAAS,EAAC,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;AAzBD,0CAyBC","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,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ChangeFeedForEpkRange = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
4
|
// Copyright (c) Microsoft Corporation.
|
|
6
5
|
// Licensed under the MIT License.
|
|
7
6
|
const ChangeFeedRange_js_1 = require("./ChangeFeedRange.js");
|
|
@@ -21,6 +20,20 @@ const ChangeFeedMode_js_1 = require("./ChangeFeedMode.js");
|
|
|
21
20
|
* Use `Items.getChangeFeedIterator()` to get an instance of the iterator.
|
|
22
21
|
*/
|
|
23
22
|
class ChangeFeedForEpkRange {
|
|
23
|
+
clientContext;
|
|
24
|
+
container;
|
|
25
|
+
partitionKeyRangeCache;
|
|
26
|
+
resourceId;
|
|
27
|
+
resourceLink;
|
|
28
|
+
url;
|
|
29
|
+
changeFeedOptions;
|
|
30
|
+
epkRange;
|
|
31
|
+
continuationToken;
|
|
32
|
+
queue;
|
|
33
|
+
startTime;
|
|
34
|
+
isInstantiated;
|
|
35
|
+
rId;
|
|
36
|
+
startFromNow;
|
|
24
37
|
/**
|
|
25
38
|
* @internal
|
|
26
39
|
*/
|
|
@@ -33,9 +46,6 @@ class ChangeFeedForEpkRange {
|
|
|
33
46
|
this.url = url;
|
|
34
47
|
this.changeFeedOptions = changeFeedOptions;
|
|
35
48
|
this.epkRange = epkRange;
|
|
36
|
-
this.generateContinuationToken = () => {
|
|
37
|
-
return JSON.stringify(new CompositeContinuationToken_js_1.CompositeContinuationToken(this.rId, this.queue.returnSnapshot()));
|
|
38
|
-
};
|
|
39
49
|
this.queue = new FeedRangeQueue_js_1.FeedRangeQueue();
|
|
40
50
|
this.continuationToken = changeFeedOptions.continuationToken
|
|
41
51
|
? JSON.parse(changeFeedOptions.continuationToken)
|
|
@@ -124,13 +134,11 @@ class ChangeFeedForEpkRange {
|
|
|
124
134
|
/**
|
|
125
135
|
* Gets an async iterator which will yield change feed results.
|
|
126
136
|
*/
|
|
127
|
-
getAsyncIterator() {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
} while (this.hasMoreResults);
|
|
133
|
-
});
|
|
137
|
+
async *getAsyncIterator() {
|
|
138
|
+
do {
|
|
139
|
+
const result = await this.readNext();
|
|
140
|
+
yield result;
|
|
141
|
+
} while (this.hasMoreResults);
|
|
134
142
|
}
|
|
135
143
|
/**
|
|
136
144
|
* Gets an async iterator which will yield pages of results from Azure Cosmos DB.
|
|
@@ -177,6 +185,9 @@ class ChangeFeedForEpkRange {
|
|
|
177
185
|
return result;
|
|
178
186
|
}, this.clientContext);
|
|
179
187
|
}
|
|
188
|
+
generateContinuationToken = () => {
|
|
189
|
+
return JSON.stringify(new CompositeContinuationToken_js_1.CompositeContinuationToken(this.rId, this.queue.returnSnapshot()));
|
|
190
|
+
};
|
|
180
191
|
/**
|
|
181
192
|
* Read feed and retrieves the next page of results in Azure Cosmos DB.
|
|
182
193
|
*/
|
|
@@ -209,10 +220,10 @@ class ChangeFeedForEpkRange {
|
|
|
209
220
|
return false;
|
|
210
221
|
}
|
|
211
222
|
const feedRangeQueueFirstElement = this.queue.peek();
|
|
212
|
-
return (firstNotModifiedFeedRange.minInclusive ===
|
|
213
|
-
firstNotModifiedFeedRange.maxExclusive ===
|
|
214
|
-
firstNotModifiedFeedRange.epkMinHeader ===
|
|
215
|
-
firstNotModifiedFeedRange.epkMaxHeader ===
|
|
223
|
+
return (firstNotModifiedFeedRange.minInclusive === feedRangeQueueFirstElement?.minInclusive &&
|
|
224
|
+
firstNotModifiedFeedRange.maxExclusive === feedRangeQueueFirstElement?.maxExclusive &&
|
|
225
|
+
firstNotModifiedFeedRange.epkMinHeader === feedRangeQueueFirstElement?.epkMinHeader &&
|
|
226
|
+
firstNotModifiedFeedRange.epkMaxHeader === feedRangeQueueFirstElement?.epkMaxHeader);
|
|
216
227
|
}
|
|
217
228
|
/**
|
|
218
229
|
* Checks whether the current EpkRange is split into multiple ranges or not.
|