@azure/cosmos 4.9.2 → 4.9.3
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/common/constants.js +1 -1
- package/dist/browser/common/constants.js.map +1 -1
- package/dist/browser/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.d.ts +2 -1
- package/dist/browser/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.d.ts.map +1 -1
- package/dist/browser/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.js +6 -5
- package/dist/browser/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.js.map +1 -1
- package/dist/commonjs/ChangeFeedIterator.js +6 -0
- package/dist/commonjs/ChangeFeedIterator.js.map +2 -2
- package/dist/commonjs/ChangeFeedOptions.js +1 -0
- package/dist/commonjs/ChangeFeedOptions.js.map +1 -1
- package/dist/commonjs/ChangeFeedResponse.js +5 -0
- package/dist/commonjs/ChangeFeedResponse.js.map +2 -2
- package/dist/commonjs/ClientContext.js +6 -0
- package/dist/commonjs/ClientContext.js.map +2 -2
- package/dist/commonjs/CosmosClient.js +1 -0
- package/dist/commonjs/CosmosClient.js.map +1 -1
- package/dist/commonjs/CosmosClientOptions.js +1 -0
- package/dist/commonjs/CosmosClientOptions.js.map +1 -1
- package/dist/commonjs/CosmosDiagnostics.js +1 -0
- package/dist/commonjs/CosmosDiagnostics.js.map +1 -1
- package/dist/commonjs/GlobalEndpointManagerOptions.js +1 -0
- package/dist/commonjs/GlobalEndpointManagerOptions.js.map +1 -1
- package/dist/commonjs/PartitionKeyRangeFailoverInfo.js +1 -0
- package/dist/commonjs/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/commonjs/auth.js +1 -0
- package/dist/commonjs/auth.js.map +1 -1
- package/dist/commonjs/bulk/Batcher.js +1 -0
- package/dist/commonjs/bulk/Batcher.js.map +1 -1
- package/dist/commonjs/bulk/BulkHelper.js +1 -0
- package/dist/commonjs/bulk/BulkHelper.js.map +1 -1
- package/dist/commonjs/bulk/BulkResponse.js +1 -0
- package/dist/commonjs/bulk/BulkResponse.js.map +1 -1
- package/dist/commonjs/bulk/CongestionAlgorithm.js +1 -0
- package/dist/commonjs/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/commonjs/bulk/HelperPerPartition.js +1 -0
- package/dist/commonjs/bulk/HelperPerPartition.js.map +1 -1
- package/dist/commonjs/bulk/ItemOperation.js +1 -0
- package/dist/commonjs/bulk/ItemOperation.js.map +1 -1
- package/dist/commonjs/bulk/ItemOperationContext.js +1 -0
- package/dist/commonjs/bulk/ItemOperationContext.js.map +1 -1
- package/dist/commonjs/bulk/Limiter.js +1 -0
- package/dist/commonjs/bulk/Limiter.js.map +1 -1
- package/dist/commonjs/bulk/PartitionMetric.js +1 -0
- package/dist/commonjs/bulk/PartitionMetric.js.map +1 -1
- package/dist/commonjs/bulk/index.js +1 -0
- package/dist/commonjs/bulk/index.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedEnums.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedEnums.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js +9 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js.map +2 -2
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js +7 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +2 -2
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js +5 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +2 -2
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorOptions.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorOptions.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js +6 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +2 -2
- package/dist/commonjs/client/ChangeFeed/ChangeFeedMode.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedMode.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/ChangeFeedPullModelIterator.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedPullModelIterator.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js +1 -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/ChangeFeedStartFrom.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFrom.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 +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js +1 -0
- package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/FeedRange.js +1 -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/InternalChangeFeedOptions.js +1 -0
- package/dist/commonjs/client/ChangeFeed/InternalChangeFeedOptions.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/buildChangeFeedIterator.js +1 -0
- package/dist/commonjs/client/ChangeFeed/buildChangeFeedIterator.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js +1 -0
- package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/index.js +1 -0
- package/dist/commonjs/client/ChangeFeed/index.js.map +1 -1
- package/dist/commonjs/client/ClientUtils.js +1 -0
- package/dist/commonjs/client/ClientUtils.js.map +1 -1
- package/dist/commonjs/client/Conflict/Conflict.js +5 -0
- package/dist/commonjs/client/Conflict/Conflict.js.map +2 -2
- package/dist/commonjs/client/Conflict/ConflictDefinition.js +1 -0
- package/dist/commonjs/client/Conflict/ConflictDefinition.js.map +1 -1
- package/dist/commonjs/client/Conflict/ConflictResolutionMode.js +1 -0
- package/dist/commonjs/client/Conflict/ConflictResolutionMode.js.map +1 -1
- package/dist/commonjs/client/Conflict/ConflictResolutionPolicy.js +1 -0
- package/dist/commonjs/client/Conflict/ConflictResolutionPolicy.js.map +1 -1
- package/dist/commonjs/client/Conflict/ConflictResponse.js +1 -0
- package/dist/commonjs/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/commonjs/client/Conflict/Conflicts.js +3 -0
- package/dist/commonjs/client/Conflict/Conflicts.js.map +2 -2
- package/dist/commonjs/client/Conflict/index.js +1 -0
- package/dist/commonjs/client/Conflict/index.js.map +1 -1
- package/dist/commonjs/client/Container/Container.js +5 -0
- package/dist/commonjs/client/Container/Container.js.map +2 -2
- package/dist/commonjs/client/Container/ContainerDefinition.js +1 -0
- package/dist/commonjs/client/Container/ContainerDefinition.js.map +1 -1
- package/dist/commonjs/client/Container/ContainerRequest.js +1 -0
- package/dist/commonjs/client/Container/ContainerRequest.js.map +1 -1
- package/dist/commonjs/client/Container/ContainerResponse.js +1 -0
- package/dist/commonjs/client/Container/ContainerResponse.js.map +1 -1
- package/dist/commonjs/client/Container/Containers.js +4 -0
- package/dist/commonjs/client/Container/Containers.js.map +2 -2
- package/dist/commonjs/client/Container/PartitionKeyRange.js +1 -0
- package/dist/commonjs/client/Container/PartitionKeyRange.js.map +1 -1
- package/dist/commonjs/client/Container/UniqueKeyPolicy.js +1 -0
- package/dist/commonjs/client/Container/UniqueKeyPolicy.js.map +1 -1
- package/dist/commonjs/client/Container/index.js +1 -0
- package/dist/commonjs/client/Container/index.js.map +1 -1
- package/dist/commonjs/client/Database/Database.js +5 -0
- package/dist/commonjs/client/Database/Database.js.map +2 -2
- package/dist/commonjs/client/Database/DatabaseDefinition.js +1 -0
- package/dist/commonjs/client/Database/DatabaseDefinition.js.map +1 -1
- package/dist/commonjs/client/Database/DatabaseRequest.js +1 -0
- package/dist/commonjs/client/Database/DatabaseRequest.js.map +1 -1
- package/dist/commonjs/client/Database/DatabaseResponse.js +1 -0
- package/dist/commonjs/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/commonjs/client/Database/Databases.js +4 -0
- package/dist/commonjs/client/Database/Databases.js.map +2 -2
- package/dist/commonjs/client/Database/index.js +1 -0
- package/dist/commonjs/client/Database/index.js.map +1 -1
- package/dist/commonjs/client/Item/Item.js +4 -0
- package/dist/commonjs/client/Item/Item.js.map +2 -2
- package/dist/commonjs/client/Item/ItemDefinition.js +1 -0
- package/dist/commonjs/client/Item/ItemDefinition.js.map +1 -1
- package/dist/commonjs/client/Item/ItemResponse.js +1 -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 +2 -2
- package/dist/commonjs/client/Item/index.js +1 -0
- package/dist/commonjs/client/Item/index.js.map +1 -1
- package/dist/commonjs/client/Offer/Offer.js +4 -0
- package/dist/commonjs/client/Offer/Offer.js.map +2 -2
- package/dist/commonjs/client/Offer/OfferDefinition.js +1 -0
- package/dist/commonjs/client/Offer/OfferDefinition.js.map +1 -1
- package/dist/commonjs/client/Offer/OfferResponse.js +1 -0
- package/dist/commonjs/client/Offer/OfferResponse.js.map +1 -1
- package/dist/commonjs/client/Offer/Offers.js +3 -0
- package/dist/commonjs/client/Offer/Offers.js.map +2 -2
- package/dist/commonjs/client/Offer/index.js +1 -0
- package/dist/commonjs/client/Offer/index.js.map +1 -1
- package/dist/commonjs/client/Permission/Permission.js +4 -0
- package/dist/commonjs/client/Permission/Permission.js.map +2 -2
- package/dist/commonjs/client/Permission/PermissionBody.js +1 -0
- package/dist/commonjs/client/Permission/PermissionBody.js.map +1 -1
- package/dist/commonjs/client/Permission/PermissionDefinition.js +1 -0
- package/dist/commonjs/client/Permission/PermissionDefinition.js.map +1 -1
- package/dist/commonjs/client/Permission/PermissionResponse.js +1 -0
- package/dist/commonjs/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/commonjs/client/Permission/Permissions.js +3 -0
- package/dist/commonjs/client/Permission/Permissions.js.map +2 -2
- package/dist/commonjs/client/Permission/index.js +1 -0
- package/dist/commonjs/client/Permission/index.js.map +1 -1
- package/dist/commonjs/client/Resource.js +1 -0
- package/dist/commonjs/client/Resource.js.map +1 -1
- package/dist/commonjs/client/SasToken/PermissionScopeValues.js +1 -0
- package/dist/commonjs/client/SasToken/PermissionScopeValues.js.map +1 -1
- package/dist/commonjs/client/SasToken/SasTokenProperties.js +1 -0
- package/dist/commonjs/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/commonjs/client/Script/Scripts.js +3 -0
- package/dist/commonjs/client/Script/Scripts.js.map +2 -2
- package/dist/commonjs/client/StoredProcedure/StoredProcedure.js +4 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedure.js.map +2 -2
- package/dist/commonjs/client/StoredProcedure/StoredProcedureDefinition.js +1 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedureDefinition.js.map +1 -1
- package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js +1 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/commonjs/client/StoredProcedure/StoredProcedures.js +3 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedures.js.map +2 -2
- package/dist/commonjs/client/StoredProcedure/index.js +1 -0
- package/dist/commonjs/client/StoredProcedure/index.js.map +1 -1
- package/dist/commonjs/client/Trigger/Trigger.js +4 -0
- package/dist/commonjs/client/Trigger/Trigger.js.map +2 -2
- package/dist/commonjs/client/Trigger/TriggerDefinition.js +1 -0
- package/dist/commonjs/client/Trigger/TriggerDefinition.js.map +1 -1
- package/dist/commonjs/client/Trigger/TriggerResponse.js +1 -0
- package/dist/commonjs/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/commonjs/client/Trigger/Triggers.js +3 -0
- package/dist/commonjs/client/Trigger/Triggers.js.map +2 -2
- package/dist/commonjs/client/Trigger/index.js +1 -0
- package/dist/commonjs/client/Trigger/index.js.map +1 -1
- package/dist/commonjs/client/User/User.js +4 -0
- package/dist/commonjs/client/User/User.js.map +2 -2
- package/dist/commonjs/client/User/UserDefinition.js +1 -0
- package/dist/commonjs/client/User/UserDefinition.js.map +1 -1
- package/dist/commonjs/client/User/UserResponse.js +1 -0
- package/dist/commonjs/client/User/UserResponse.js.map +1 -1
- package/dist/commonjs/client/User/Users.js +3 -0
- package/dist/commonjs/client/User/Users.js.map +2 -2
- package/dist/commonjs/client/User/index.js +1 -0
- package/dist/commonjs/client/User/index.js.map +1 -1
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js +4 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js.map +2 -2
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionDefinition.js +1 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionDefinition.js.map +1 -1
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js +1 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js +3 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js.map +2 -2
- package/dist/commonjs/client/UserDefinedFunction/index.js +1 -0
- package/dist/commonjs/client/UserDefinedFunction/index.js.map +1 -1
- package/dist/commonjs/client/index.js +1 -0
- package/dist/commonjs/client/index.js.map +1 -1
- package/dist/commonjs/common/constants.js +2 -1
- package/dist/commonjs/common/constants.js.map +2 -2
- package/dist/commonjs/common/helper.js +1 -0
- package/dist/commonjs/common/helper.js.map +1 -1
- package/dist/commonjs/common/index.js +1 -0
- package/dist/commonjs/common/index.js.map +1 -1
- package/dist/commonjs/common/logger.js +1 -0
- package/dist/commonjs/common/logger.js.map +1 -1
- package/dist/commonjs/common/partitionKeys.js +1 -0
- package/dist/commonjs/common/partitionKeys.js.map +1 -1
- package/dist/commonjs/common/platform.js +1 -0
- package/dist/commonjs/common/platform.js.map +1 -1
- package/dist/commonjs/common/statusCodes.js +1 -0
- package/dist/commonjs/common/statusCodes.js.map +1 -1
- package/dist/commonjs/common/uriFactory.js +1 -0
- package/dist/commonjs/common/uriFactory.js.map +1 -1
- package/dist/commonjs/diagnostics/CosmosDbDiagnosticLevel.js +1 -0
- package/dist/commonjs/diagnostics/CosmosDbDiagnosticLevel.js.map +1 -1
- package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js +1 -0
- package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/commonjs/diagnostics/DiagnosticFormatter.js +1 -0
- package/dist/commonjs/diagnostics/DiagnosticFormatter.js.map +1 -1
- package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js +1 -0
- package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/commonjs/diagnostics/DiagnosticWriter.js +1 -0
- package/dist/commonjs/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/commonjs/diagnostics/diagnosticLevelComparator.js +1 -0
- package/dist/commonjs/diagnostics/diagnosticLevelComparator.js.map +1 -1
- package/dist/commonjs/diagnostics/index.js +1 -0
- package/dist/commonjs/diagnostics/index.js.map +1 -1
- package/dist/commonjs/documents/ComputedProperty.js +1 -0
- package/dist/commonjs/documents/ComputedProperty.js.map +1 -1
- package/dist/commonjs/documents/ConnectionMode.js +1 -0
- package/dist/commonjs/documents/ConnectionMode.js.map +1 -1
- package/dist/commonjs/documents/ConnectionPolicy.js +1 -0
- package/dist/commonjs/documents/ConnectionPolicy.js.map +1 -1
- package/dist/commonjs/documents/ConsistencyLevel.js +1 -0
- package/dist/commonjs/documents/ConsistencyLevel.js.map +1 -1
- package/dist/commonjs/documents/ContinuationToken/CompositeQueryContinuationToken.js +1 -0
- package/dist/commonjs/documents/ContinuationToken/CompositeQueryContinuationToken.js.map +1 -1
- package/dist/commonjs/documents/ContinuationToken/OrderByQueryContinuationToken.js +1 -0
- package/dist/commonjs/documents/ContinuationToken/OrderByQueryContinuationToken.js.map +1 -1
- package/dist/commonjs/documents/ContinuationToken/PartitionRangeUpdate.js +1 -0
- package/dist/commonjs/documents/ContinuationToken/PartitionRangeUpdate.js.map +1 -1
- package/dist/commonjs/documents/DataType.js +1 -0
- package/dist/commonjs/documents/DataType.js.map +1 -1
- package/dist/commonjs/documents/DatabaseAccount.js +1 -0
- package/dist/commonjs/documents/DatabaseAccount.js.map +1 -1
- package/dist/commonjs/documents/Document.js +1 -0
- package/dist/commonjs/documents/Document.js.map +1 -1
- package/dist/commonjs/documents/FullTextPolicy.js +1 -0
- package/dist/commonjs/documents/FullTextPolicy.js.map +1 -1
- package/dist/commonjs/documents/GeospatialType.js +1 -0
- package/dist/commonjs/documents/GeospatialType.js.map +1 -1
- package/dist/commonjs/documents/IndexKind.js +1 -0
- package/dist/commonjs/documents/IndexKind.js.map +1 -1
- package/dist/commonjs/documents/IndexingMode.js +1 -0
- package/dist/commonjs/documents/IndexingMode.js.map +1 -1
- package/dist/commonjs/documents/IndexingPolicy.js +1 -0
- package/dist/commonjs/documents/IndexingPolicy.js.map +1 -1
- package/dist/commonjs/documents/PartitionKey.js +1 -0
- package/dist/commonjs/documents/PartitionKey.js.map +1 -1
- package/dist/commonjs/documents/PartitionKeyDefinition.js +1 -0
- package/dist/commonjs/documents/PartitionKeyDefinition.js.map +1 -1
- package/dist/commonjs/documents/PartitionKeyDefinitionVersion.js +1 -0
- package/dist/commonjs/documents/PartitionKeyDefinitionVersion.js.map +1 -1
- package/dist/commonjs/documents/PartitionKeyInternal.js +1 -0
- package/dist/commonjs/documents/PartitionKeyInternal.js.map +1 -1
- package/dist/commonjs/documents/PartitionKeyKind.js +1 -0
- package/dist/commonjs/documents/PartitionKeyKind.js.map +1 -1
- package/dist/commonjs/documents/PermissionMode.js +1 -0
- package/dist/commonjs/documents/PermissionMode.js.map +1 -1
- package/dist/commonjs/documents/PriorityLevel.js +1 -0
- package/dist/commonjs/documents/PriorityLevel.js.map +1 -1
- package/dist/commonjs/documents/TriggerOperation.js +1 -0
- package/dist/commonjs/documents/TriggerOperation.js.map +1 -1
- package/dist/commonjs/documents/TriggerType.js +1 -0
- package/dist/commonjs/documents/TriggerType.js.map +1 -1
- package/dist/commonjs/documents/UserDefinedFunctionType.js +1 -0
- package/dist/commonjs/documents/UserDefinedFunctionType.js.map +1 -1
- package/dist/commonjs/documents/VectorEmbeddingPolicy.js +1 -0
- package/dist/commonjs/documents/VectorEmbeddingPolicy.js.map +1 -1
- package/dist/commonjs/documents/index.js +1 -0
- package/dist/commonjs/documents/index.js.map +1 -1
- package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +1 -0
- package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
- package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/index.js +1 -0
- package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/index.js.map +1 -1
- package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +1 -0
- package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js +1 -0
- package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js +1 -0
- package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js +2 -0
- package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +2 -2
- package/dist/commonjs/encryption/ClientEncryptionIncludedPath.js +1 -0
- package/dist/commonjs/encryption/ClientEncryptionIncludedPath.js.map +1 -1
- package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyProperties.js +1 -0
- package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyProperties.js.map +1 -1
- package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyRequest.js +1 -0
- package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyRequest.js.map +1 -1
- package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +1 -0
- package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/commonjs/encryption/ClientEncryptionKey/index.js +1 -0
- package/dist/commonjs/encryption/ClientEncryptionKey/index.js.map +1 -1
- package/dist/commonjs/encryption/ClientEncryptionOptions.js +1 -0
- package/dist/commonjs/encryption/ClientEncryptionOptions.js.map +1 -1
- package/dist/commonjs/encryption/ClientEncryptionPolicy.js +1 -0
- package/dist/commonjs/encryption/ClientEncryptionPolicy.js.map +1 -1
- package/dist/commonjs/encryption/CosmosEncryptedNumber.js +1 -0
- package/dist/commonjs/encryption/CosmosEncryptedNumber.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionItemQueryIterator.js +1 -0
- package/dist/commonjs/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js +1 -0
- package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +1 -0
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKey/index.js +1 -0
- package/dist/commonjs/encryption/EncryptionKey/index.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +1 -0
- package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKeyResolver/EncryptionKeyResolver.js +1 -0
- package/dist/commonjs/encryption/EncryptionKeyResolver/EncryptionKeyResolver.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKeyResolver/index.js +1 -0
- package/dist/commonjs/encryption/EncryptionKeyResolver/index.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js +3 -0
- package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js.map +2 -2
- package/dist/commonjs/encryption/EncryptionKeyWrapMetadata.js +1 -0
- package/dist/commonjs/encryption/EncryptionKeyWrapMetadata.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionManager.js +1 -0
- package/dist/commonjs/encryption/EncryptionManager.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionProcessor.js +6 -0
- package/dist/commonjs/encryption/EncryptionProcessor.js.map +2 -2
- package/dist/commonjs/encryption/EncryptionQueryBuilder.js +1 -0
- package/dist/commonjs/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionSettingForProperty.js +1 -0
- package/dist/commonjs/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionSettings.js +1 -0
- package/dist/commonjs/encryption/EncryptionSettings.js.map +1 -1
- package/dist/commonjs/encryption/KeyEncryptionKey.js +1 -0
- package/dist/commonjs/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/commonjs/encryption/Serializers/BooleanSerializer.js +1 -0
- package/dist/commonjs/encryption/Serializers/BooleanSerializer.js.map +1 -1
- package/dist/commonjs/encryption/Serializers/FloatSerializer.js +1 -0
- package/dist/commonjs/encryption/Serializers/FloatSerializer.js.map +1 -1
- package/dist/commonjs/encryption/Serializers/NumberSerializer.js +1 -0
- package/dist/commonjs/encryption/Serializers/NumberSerializer.js.map +1 -1
- package/dist/commonjs/encryption/Serializers/Serializer.js +1 -0
- package/dist/commonjs/encryption/Serializers/Serializer.js.map +1 -1
- package/dist/commonjs/encryption/Serializers/StringSerializer.js +1 -0
- package/dist/commonjs/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/commonjs/encryption/Serializers/index.js +1 -0
- package/dist/commonjs/encryption/Serializers/index.js.map +1 -1
- package/dist/commonjs/encryption/enums/EncryptionAlgorithm.js +1 -0
- package/dist/commonjs/encryption/enums/EncryptionAlgorithm.js.map +1 -1
- package/dist/commonjs/encryption/enums/EncryptionKeyResolverName.js +1 -0
- package/dist/commonjs/encryption/enums/EncryptionKeyResolverName.js.map +1 -1
- package/dist/commonjs/encryption/enums/EncryptionType.js +1 -0
- package/dist/commonjs/encryption/enums/EncryptionType.js.map +1 -1
- package/dist/commonjs/encryption/enums/KeyEncryptionAlgorithm.js +1 -0
- package/dist/commonjs/encryption/enums/KeyEncryptionAlgorithm.js.map +1 -1
- package/dist/commonjs/encryption/enums/TypeMarker.js +1 -0
- package/dist/commonjs/encryption/enums/TypeMarker.js.map +1 -1
- package/dist/commonjs/encryption/enums/index.js +1 -0
- package/dist/commonjs/encryption/enums/index.js.map +1 -1
- package/dist/commonjs/encryption/index.js +1 -0
- package/dist/commonjs/encryption/index.js.map +1 -1
- package/dist/commonjs/extractPartitionKey.js +1 -0
- package/dist/commonjs/extractPartitionKey.js.map +1 -1
- package/dist/commonjs/globalEndpointManager.js +2 -0
- package/dist/commonjs/globalEndpointManager.js.map +2 -2
- package/dist/commonjs/globalPartitionEndpointManager.js +2 -0
- package/dist/commonjs/globalPartitionEndpointManager.js.map +2 -2
- package/dist/commonjs/index.js +1 -0
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/plugins/Plugin.js +1 -0
- package/dist/commonjs/plugins/Plugin.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/Aggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/Aggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js +1 -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 +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js +1 -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/Aggregators/index.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/index.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/ContinuationTokenManager/BaseContinuationTokenManager.js +1 -0
- package/dist/commonjs/queryExecutionContext/ContinuationTokenManager/BaseContinuationTokenManager.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/ContinuationTokenManager/ContinuationTokenManagerFactory.js +1 -0
- package/dist/commonjs/queryExecutionContext/ContinuationTokenManager/ContinuationTokenManagerFactory.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/ContinuationTokenManager/OrderByQueryContinuationTokenManager.js +1 -0
- package/dist/commonjs/queryExecutionContext/ContinuationTokenManager/OrderByQueryContinuationTokenManager.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/ContinuationTokenManager/ParallelQueryContinuationTokenManager.js +1 -0
- package/dist/commonjs/queryExecutionContext/ContinuationTokenManager/ParallelQueryContinuationTokenManager.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/ContinuationTokenParser.js +1 -0
- package/dist/commonjs/queryExecutionContext/ContinuationTokenParser.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/CosmosHeaders.js +1 -0
- package/dist/commonjs/queryExecutionContext/CosmosHeaders.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +3 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +3 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +5 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +6 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +4 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +3 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/EndpointComponent/emptyGroup.js +1 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/emptyGroup.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/ExecutionContext.js +1 -0
- package/dist/commonjs/queryExecutionContext/ExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/FetchResult.js +1 -0
- package/dist/commonjs/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/LegacyFetchImplementation.js +3 -0
- package/dist/commonjs/queryExecutionContext/LegacyFetchImplementation.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/PartitionRangeManager.js +1 -0
- package/dist/commonjs/queryExecutionContext/PartitionRangeManager.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/PartitionRangeUtils.js +1 -0
- package/dist/commonjs/queryExecutionContext/PartitionRangeUtils.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/QueryControlFetchImplementation.js +3 -0
- package/dist/commonjs/queryExecutionContext/QueryControlFetchImplementation.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/QueryValidationHelper.js +1 -0
- package/dist/commonjs/queryExecutionContext/QueryValidationHelper.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/SqlQuerySpec.js +1 -0
- package/dist/commonjs/queryExecutionContext/SqlQuerySpec.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js +1 -0
- package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/documentProducer.js +2 -0
- package/dist/commonjs/queryExecutionContext/documentProducer.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/headerUtils.js +1 -0
- package/dist/commonjs/queryExecutionContext/headerUtils.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js +8 -0
- package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/index.js +1 -0
- package/dist/commonjs/queryExecutionContext/index.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/nonStreamingOrderByResponse.js +1 -0
- package/dist/commonjs/queryExecutionContext/nonStreamingOrderByResponse.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/nonStreamingOrderByResult.js +1 -0
- package/dist/commonjs/queryExecutionContext/nonStreamingOrderByResult.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/orderByComparator.js +2 -0
- package/dist/commonjs/queryExecutionContext/orderByComparator.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js +2 -0
- package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContext.js +1 -0
- package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js +10 -0
- package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/parallelQueryResult.js +1 -0
- package/dist/commonjs/queryExecutionContext/parallelQueryResult.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js +8 -0
- package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/FilterStrategy.js +1 -0
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/FilterStrategy.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.d.ts +2 -1
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.d.ts.map +1 -1
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.js +6 -4
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.js.map +3 -3
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/ParallelQueryRangeStrategy.js +1 -0
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/ParallelQueryRangeStrategy.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/RidSkipCountFilter.js +2 -0
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/RidSkipCountFilter.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/TargetPartitionRangeManager.js +1 -0
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/TargetPartitionRangeManager.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/TargetPartitionRangeStrategy.js +1 -0
- package/dist/commonjs/queryExecutionContext/queryFilteringStrategy/TargetPartitionRangeStrategy.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/queryProcessingStrategy/OrderByQueryProcessingStrategy.js +2 -0
- package/dist/commonjs/queryExecutionContext/queryProcessingStrategy/OrderByQueryProcessingStrategy.js.map +2 -2
- package/dist/commonjs/queryExecutionContext/queryProcessingStrategy/ParallelQueryProcessingStrategy.js +1 -0
- package/dist/commonjs/queryExecutionContext/queryProcessingStrategy/ParallelQueryProcessingStrategy.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/queryProcessingStrategy/QueryProcessingStrategy.js +1 -0
- package/dist/commonjs/queryExecutionContext/queryProcessingStrategy/QueryProcessingStrategy.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/queryRangeMapping.js +1 -0
- package/dist/commonjs/queryExecutionContext/queryRangeMapping.js.map +1 -1
- package/dist/commonjs/queryIterator.js +7 -0
- package/dist/commonjs/queryIterator.js.map +2 -2
- package/dist/commonjs/queryMetrics/clientSideMetrics.js +2 -0
- package/dist/commonjs/queryMetrics/clientSideMetrics.js.map +2 -2
- package/dist/commonjs/queryMetrics/index.js +1 -0
- package/dist/commonjs/queryMetrics/index.js.map +1 -1
- package/dist/commonjs/queryMetrics/queryMetrics.js +14 -0
- package/dist/commonjs/queryMetrics/queryMetrics.js.map +2 -2
- package/dist/commonjs/queryMetrics/queryMetricsConstants.js +1 -0
- package/dist/commonjs/queryMetrics/queryMetricsConstants.js.map +1 -1
- package/dist/commonjs/queryMetrics/queryMetricsUtils.js +1 -0
- package/dist/commonjs/queryMetrics/queryMetricsUtils.js.map +1 -1
- package/dist/commonjs/queryMetrics/queryPreparationTime.js +5 -0
- package/dist/commonjs/queryMetrics/queryPreparationTime.js.map +2 -2
- package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js +4 -0
- package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js.map +2 -2
- package/dist/commonjs/queryMetrics/timeSpan.js +1 -0
- package/dist/commonjs/queryMetrics/timeSpan.js.map +1 -1
- package/dist/commonjs/request/ErrorResponse.js +1 -0
- package/dist/commonjs/request/ErrorResponse.js.map +1 -1
- package/dist/commonjs/request/FeedOptions.js +1 -0
- package/dist/commonjs/request/FeedOptions.js.map +1 -1
- package/dist/commonjs/request/FeedResponse.js +5 -0
- package/dist/commonjs/request/FeedResponse.js.map +2 -2
- package/dist/commonjs/request/RequestContext.js +1 -0
- package/dist/commonjs/request/RequestContext.js.map +1 -1
- package/dist/commonjs/request/RequestHandler.js +1 -0
- package/dist/commonjs/request/RequestHandler.js.map +1 -1
- package/dist/commonjs/request/RequestOptions.js +1 -0
- package/dist/commonjs/request/RequestOptions.js.map +1 -1
- package/dist/commonjs/request/ResourceResponse.js +6 -0
- package/dist/commonjs/request/ResourceResponse.js.map +2 -2
- package/dist/commonjs/request/Response.js +1 -0
- package/dist/commonjs/request/Response.js.map +1 -1
- package/dist/commonjs/request/SharedOptions.js +1 -0
- package/dist/commonjs/request/SharedOptions.js.map +1 -1
- package/dist/commonjs/request/StatusCodes.js +1 -0
- package/dist/commonjs/request/StatusCodes.js.map +1 -1
- package/dist/commonjs/request/TimeoutError.js +1 -0
- package/dist/commonjs/request/TimeoutError.js.map +1 -1
- package/dist/commonjs/request/defaultAgent.js +1 -0
- package/dist/commonjs/request/defaultAgent.js.map +1 -1
- package/dist/commonjs/request/globalStatistics.js +1 -0
- package/dist/commonjs/request/globalStatistics.js.map +1 -1
- package/dist/commonjs/request/hybridSearchQueryResult.js +1 -0
- package/dist/commonjs/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/commonjs/request/index.js +1 -0
- package/dist/commonjs/request/index.js.map +1 -1
- package/dist/commonjs/request/request.js +1 -0
- package/dist/commonjs/request/request.js.map +1 -1
- package/dist/commonjs/retry/RetryContext.js +1 -0
- package/dist/commonjs/retry/RetryContext.js.map +1 -1
- package/dist/commonjs/retry/RetryPolicy.js +1 -0
- package/dist/commonjs/retry/RetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/bulkExecutionRetryPolicy.js +1 -0
- package/dist/commonjs/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/defaultRetryPolicy.js +2 -0
- package/dist/commonjs/retry/defaultRetryPolicy.js.map +2 -2
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js +5 -0
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js.map +2 -2
- package/dist/commonjs/retry/index.js +1 -0
- package/dist/commonjs/retry/index.js.map +1 -1
- package/dist/commonjs/retry/resourceThrottleRetryPolicy.js +1 -0
- package/dist/commonjs/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/retryOptions.js +1 -0
- package/dist/commonjs/retry/retryOptions.js.map +1 -1
- package/dist/commonjs/retry/retryUtility.js +1 -0
- package/dist/commonjs/retry/retryUtility.js.map +1 -1
- package/dist/commonjs/retry/sessionRetryPolicy.js +5 -0
- package/dist/commonjs/retry/sessionRetryPolicy.js.map +2 -2
- package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js +8 -0
- package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js.map +2 -2
- package/dist/commonjs/routing/CollectionRoutingMapFactory.js +1 -0
- package/dist/commonjs/routing/CollectionRoutingMapFactory.js.map +1 -1
- package/dist/commonjs/routing/QueryRange.js +1 -0
- package/dist/commonjs/routing/QueryRange.js.map +1 -1
- package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js +1 -0
- package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/commonjs/routing/index.js +1 -0
- package/dist/commonjs/routing/index.js.map +1 -1
- package/dist/commonjs/routing/partitionKeyRangeCache.js +2 -0
- package/dist/commonjs/routing/partitionKeyRangeCache.js.map +2 -2
- package/dist/commonjs/routing/smartRoutingMapProvider.js +1 -0
- package/dist/commonjs/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/commonjs/session/SessionContext.js +1 -0
- package/dist/commonjs/session/SessionContext.js.map +1 -1
- package/dist/commonjs/session/VectorSessionToken.js +5 -0
- package/dist/commonjs/session/VectorSessionToken.js.map +2 -2
- package/dist/commonjs/session/sessionContainer.js +3 -0
- package/dist/commonjs/session/sessionContainer.js.map +2 -2
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/utils/SasToken.js +1 -0
- package/dist/commonjs/utils/SasToken.js.map +1 -1
- package/dist/commonjs/utils/atob.js +1 -0
- package/dist/commonjs/utils/atob.js.map +1 -1
- package/dist/commonjs/utils/batch.js +1 -0
- package/dist/commonjs/utils/batch.js.map +1 -1
- package/dist/commonjs/utils/cachedClient.js +1 -0
- package/dist/commonjs/utils/cachedClient.js.map +1 -1
- package/dist/commonjs/utils/checkURL.js +1 -0
- package/dist/commonjs/utils/checkURL.js.map +1 -1
- package/dist/commonjs/utils/diagnostics.js +1 -0
- package/dist/commonjs/utils/diagnostics.js.map +1 -1
- package/dist/commonjs/utils/digest.js +1 -0
- package/dist/commonjs/utils/digest.js.map +1 -1
- package/dist/commonjs/utils/encode.js +1 -0
- package/dist/commonjs/utils/encode.js.map +1 -1
- package/dist/commonjs/utils/envUtils.js +1 -0
- package/dist/commonjs/utils/envUtils.js.map +1 -1
- package/dist/commonjs/utils/fixedSizePriorityQueue.js +1 -0
- package/dist/commonjs/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/commonjs/utils/globalCrypto.js +1 -0
- package/dist/commonjs/utils/globalCrypto.js.map +1 -1
- package/dist/commonjs/utils/hashObject.js +1 -0
- package/dist/commonjs/utils/hashObject.js.map +1 -1
- package/dist/commonjs/utils/hashing/encoding/number.js +1 -0
- package/dist/commonjs/utils/hashing/encoding/number.js.map +1 -1
- package/dist/commonjs/utils/hashing/encoding/prefix.js +1 -0
- package/dist/commonjs/utils/hashing/encoding/prefix.js.map +1 -1
- package/dist/commonjs/utils/hashing/encoding/string.js +1 -0
- package/dist/commonjs/utils/hashing/encoding/string.js.map +1 -1
- package/dist/commonjs/utils/hashing/hash.js +1 -0
- package/dist/commonjs/utils/hashing/hash.js.map +1 -1
- package/dist/commonjs/utils/hashing/multiHash.js +1 -0
- package/dist/commonjs/utils/hashing/multiHash.js.map +1 -1
- package/dist/commonjs/utils/hashing/murmurHash.js +1 -0
- package/dist/commonjs/utils/hashing/murmurHash.js.map +1 -1
- package/dist/commonjs/utils/hashing/v1.js +1 -0
- package/dist/commonjs/utils/hashing/v1.js.map +1 -1
- package/dist/commonjs/utils/hashing/v2.js +1 -0
- package/dist/commonjs/utils/hashing/v2.js.map +1 -1
- package/dist/commonjs/utils/headers.js +1 -0
- package/dist/commonjs/utils/headers.js.map +1 -1
- package/dist/commonjs/utils/hmac.js +1 -0
- package/dist/commonjs/utils/hmac.js.map +1 -1
- package/dist/commonjs/utils/nonStreamingOrderByMap.js +1 -0
- package/dist/commonjs/utils/nonStreamingOrderByMap.js.map +1 -1
- package/dist/commonjs/utils/offers.js +1 -0
- package/dist/commonjs/utils/offers.js.map +1 -1
- package/dist/commonjs/utils/patch.js +1 -0
- package/dist/commonjs/utils/patch.js.map +1 -1
- package/dist/commonjs/utils/strings.js +1 -0
- package/dist/commonjs/utils/strings.js.map +1 -1
- package/dist/commonjs/utils/supportedQueryFeaturesBuilder.js +1 -0
- package/dist/commonjs/utils/supportedQueryFeaturesBuilder.js.map +1 -1
- package/dist/commonjs/utils/time.js +1 -0
- package/dist/commonjs/utils/time.js.map +1 -1
- package/dist/commonjs/utils/tracing.js +1 -0
- package/dist/commonjs/utils/tracing.js.map +1 -1
- package/dist/commonjs/utils/typeChecks.js +1 -0
- package/dist/commonjs/utils/typeChecks.js.map +1 -1
- package/dist/commonjs/utils/types.js +1 -0
- package/dist/commonjs/utils/types.js.map +1 -1
- package/dist/commonjs/utils/uint8.js +1 -0
- package/dist/commonjs/utils/uint8.js.map +1 -1
- package/dist/esm/common/constants.js +1 -1
- package/dist/esm/common/constants.js.map +1 -1
- package/dist/esm/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.d.ts +2 -1
- package/dist/esm/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.d.ts.map +1 -1
- package/dist/esm/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.js +6 -5
- package/dist/esm/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.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/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.d.ts +2 -1
- package/dist/react-native/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.d.ts.map +1 -1
- package/dist/react-native/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.js +6 -5
- package/dist/react-native/queryExecutionContext/queryFilteringStrategy/OrderByQueryRangeStrategy.js.map +1 -1
- package/package.json +8 -8
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../src/ClientContext.ts"],
|
|
4
4
|
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, Pipeline } from \"@azure/core-rest-pipeline\";\nimport { bearerTokenAuthenticationPolicy, createEmptyPipeline } from \"@azure/core-rest-pipeline\";\nimport type { PartitionKeyRange } from \"./client/Container/PartitionKeyRange.js\";\nimport type { Resource } from \"./client/Resource.js\";\nimport { Constants, HTTPMethod, OperationType, ResourceType } from \"./common/constants.js\";\nimport { getIdFromLink, getPathFromLink, parseLink } from \"./common/helper.js\";\nimport { StatusCodes, SubStatusCodes } from \"./common/statusCodes.js\";\nimport type { Agent, CosmosClientOptions } from \"./CosmosClientOptions.js\";\nimport type { ConnectionPolicy, PartitionKey } from \"./documents/index.js\";\nimport {\n ConsistencyLevel,\n DatabaseAccount,\n convertToInternalPartitionKey,\n} from \"./documents/index.js\";\nimport type { GlobalEndpointManager } from \"./globalEndpointManager.js\";\nimport type { PluginConfig } from \"./plugins/Plugin.js\";\nimport { PluginOn, executePlugins } from \"./plugins/Plugin.js\";\nimport type { FetchFunctionCallback, SqlQuerySpec } from \"./queryExecutionContext/index.js\";\nimport type { CosmosHeaders } from \"./queryExecutionContext/CosmosHeaders.js\";\nimport { QueryIterator } from \"./queryIterator.js\";\nimport type { ErrorResponse } from \"./request/index.js\";\nimport type { FeedOptions, RequestOptions, Response } from \"./request/index.js\";\nimport type { PartitionedQueryExecutionInfo } from \"./request/ErrorResponse.js\";\nimport { getHeaders } from \"./request/request.js\";\nimport type { RequestContext } from \"./request/RequestContext.js\";\nimport { RequestHandler } from \"./request/RequestHandler.js\";\nimport { SessionContainer } from \"./session/sessionContainer.js\";\nimport type { SessionContext } from \"./session/SessionContext.js\";\nimport type { BulkOptions } from \"./utils/batch.js\";\nimport { sanitizeEndpoint } from \"./utils/checkURL.js\";\nimport { supportedQueryFeaturesBuilder } from \"./utils/supportedQueryFeaturesBuilder.js\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\nimport type { ClientConfigDiagnostic, CosmosDiagnostics } from \"./CosmosDiagnostics.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport type { DiagnosticWriter } from \"./diagnostics/DiagnosticWriter.js\";\nimport { LogDiagnosticWriter, NoOpDiagnosticWriter } from \"./diagnostics/DiagnosticWriter.js\";\nimport type { DiagnosticFormatter } from \"./diagnostics/DiagnosticFormatter.js\";\nimport { DefaultDiagnosticFormatter } from \"./diagnostics/DiagnosticFormatter.js\";\nimport { CosmosDbDiagnosticLevel } from \"./diagnostics/CosmosDbDiagnosticLevel.js\";\nimport { randomUUID } from \"@azure/core-util\";\nimport { getUserAgent } from \"./common/platform.js\";\nimport type { GlobalPartitionEndpointManager } from \"./globalPartitionEndpointManager.js\";\nimport type { RetryOptions } from \"./retry/retryOptions.js\";\nimport { PartitionKeyRangeCache } from \"./routing/partitionKeyRangeCache.js\";\nimport {\n AAD_DEFAULT_SCOPE,\n AAD_AUTH_PREFIX,\n AAD_RESOURCE_NOT_FOUND_ERROR,\n} from \"./common/constants.js\";\n\nconst logger: AzureLogger = createClientLogger(\"ClientContext\");\n\nconst QueryJsonContentType = \"application/query+json\";\nconst HttpHeaders = Constants.HttpHeaders;\n/**\n * @hidden\n */\nexport class ClientContext {\n private readonly sessionContainer: SessionContainer;\n private connectionPolicy: ConnectionPolicy;\n private pipeline: Pipeline;\n private diagnosticWriter: DiagnosticWriter;\n private diagnosticFormatter: DiagnosticFormatter;\n public partitionKeyDefinitionCache: { [containerUrl: string]: any }; // TODO: PartitionKeyDefinitionCache\n /** @internal */\n public partitionKeyRangeCache: PartitionKeyRangeCache;\n /** boolean flag to support operations with client-side encryption */\n public enableEncryption: boolean = false;\n\n public constructor(\n private cosmosClientOptions: CosmosClientOptions,\n private globalEndpointManager: GlobalEndpointManager,\n private clientConfig: ClientConfigDiagnostic,\n public diagnosticLevel: CosmosDbDiagnosticLevel,\n private globalPartitionEndpointManager?: GlobalPartitionEndpointManager,\n ) {\n if (cosmosClientOptions.clientEncryptionOptions) {\n this.enableEncryption = true;\n }\n this.connectionPolicy = cosmosClientOptions.connectionPolicy;\n this.sessionContainer = new SessionContainer();\n this.partitionKeyDefinitionCache = {};\n this.pipeline = null;\n if (cosmosClientOptions.aadCredentials) {\n this.pipeline = createEmptyPipeline();\n const hrefEndpoint = sanitizeEndpoint(cosmosClientOptions.endpoint);\n\n // Use custom AAD scope if provided, otherwise use account-based scope\n const accountScope = `${hrefEndpoint}/.default`;\n const primaryScope = cosmosClientOptions.aadScope || accountScope;\n const fallbackScope = AAD_DEFAULT_SCOPE;\n\n this.pipeline.addPolicy(\n bearerTokenAuthenticationPolicy({\n credential: cosmosClientOptions.aadCredentials,\n scopes: primaryScope,\n challengeCallbacks: {\n async authorizeRequest({ request, getAccessToken }) {\n try {\n const tokenResponse = await getAccessToken([primaryScope], {});\n\n const authorizationToken = `${AAD_AUTH_PREFIX}${tokenResponse.token}`;\n request.headers.set(Constants.HttpHeaders.Authorization, authorizationToken);\n } catch (error: any) {\n // If no custom scope is provided and we get AADSTS500011 error,\n // fallback to the default Cosmos scope\n if (\n !cosmosClientOptions.aadScope &&\n error?.message?.includes(AAD_RESOURCE_NOT_FOUND_ERROR)\n ) {\n try {\n const fallbackTokenResponse = await getAccessToken([fallbackScope], {});\n const authorizationToken = `${AAD_AUTH_PREFIX}${fallbackTokenResponse.token}`;\n request.headers.set(Constants.HttpHeaders.Authorization, authorizationToken);\n } catch (fallbackError) {\n // If fallback also fails, throw the original error\n throw error;\n }\n } else {\n // If custom scope is provided or error is not AADSTS500011, throw the original error\n throw error;\n }\n }\n },\n },\n }),\n );\n }\n this.initializeDiagnosticSettings(diagnosticLevel);\n this.partitionKeyRangeCache = new PartitionKeyRangeCache(this);\n }\n\n /** @hidden */\n public async read<T>({\n path,\n resourceType,\n resourceId,\n options = {},\n partitionKey,\n diagnosticNode,\n partitionKeyRangeId,\n }: {\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n diagnosticNode: DiagnosticNodeInternal;\n partitionKeyRangeId?: string;\n }): Promise<Response<T & Resource>> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.get,\n path,\n operationType: OperationType.Read,\n resourceId,\n options,\n resourceType,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Read,\n resourceType,\n });\n\n request.headers = await this.buildHeaders(request);\n request.partitionKeyRangeId = partitionKeyRangeId;\n if (resourceType === ResourceType.clientencryptionkey) {\n request.headers[HttpHeaders.AllowCachedReadsHeader] = true;\n if (options.databaseRid) {\n request.headers[HttpHeaders.DatabaseRidHeader] = options.databaseRid;\n }\n }\n this.applySessionToken(request);\n\n // read will use ReadEndpoint since it uses GET operation\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpointInternal({\n diagnosticNode: diagnosticNode,\n resourceType: request.resourceType,\n operationType: request.operationType,\n startServiceEndpointIndex: 0,\n excludedLocations: options?.excludedLocations,\n });\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Read, response.headers);\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n public async queryFeed<T>({\n path,\n resourceType,\n resourceId,\n resultFn,\n query,\n options,\n diagnosticNode,\n partitionKeyRangeId,\n partitionKey,\n startEpk,\n endEpk,\n correlatedActivityId,\n }: {\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n resultFn: (result: { [key: string]: any }) => any[];\n query: SqlQuerySpec | string;\n options: FeedOptions;\n diagnosticNode: DiagnosticNodeInternal;\n partitionKeyRangeId?: string;\n partitionKey?: PartitionKey;\n startEpk?: string | undefined;\n endEpk?: string | undefined;\n correlatedActivityId?: string;\n }): Promise<Response<T & Resource>> {\n // Query operations will use ReadEndpoint even though it uses\n // GET(for queryFeed) and POST(for regular query operations)\n\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.get,\n path,\n operationType: OperationType.Query,\n partitionKeyRangeId,\n resourceId,\n resourceType,\n options,\n body: query,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Query,\n resourceType,\n });\n const requestId = randomUUID();\n if (query !== undefined) {\n request.method = HTTPMethod.post;\n }\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpointInternal({\n diagnosticNode: diagnosticNode,\n resourceType: request.resourceType,\n operationType: request.operationType,\n startServiceEndpointIndex: 0,\n excludedLocations: options?.excludedLocations,\n });\n request.headers = await this.buildHeaders(request);\n\n if (startEpk !== undefined && endEpk !== undefined) {\n request.headers[HttpHeaders.StartEpk] = startEpk;\n request.headers[HttpHeaders.EndEpk] = endEpk;\n request.headers[HttpHeaders.ReadFeedKeyType] = \"EffectivePartitionKeyRange\";\n }\n\n if (query !== undefined) {\n if (correlatedActivityId !== undefined) {\n request.headers[HttpHeaders.CorrelatedActivityId] = correlatedActivityId;\n }\n request.headers[HttpHeaders.IsQuery] = \"true\";\n request.headers[HttpHeaders.ContentType] = QueryJsonContentType;\n if (typeof query === \"string\") {\n request.body = { query }; // Converts query text to query object.\n }\n }\n this.applySessionToken(request);\n logger.info(\n \"query \" +\n requestId +\n \" started\" +\n (request.partitionKeyRangeId ? \" pkrid: \" + request.partitionKeyRangeId : \"\"),\n );\n logger.verbose(request);\n const start = Date.now();\n const response = await RequestHandler.request(request, diagnosticNode);\n logger.info(\"query \" + requestId + \" finished - \" + (Date.now() - start) + \"ms\");\n this.captureSessionToken(undefined, path, OperationType.Query, response.headers);\n return this.processQueryFeedResponse(response, !!query, resultFn);\n }\n\n public async getQueryPlan(\n path: string,\n resourceType: ResourceType,\n resourceId: string,\n query: SqlQuerySpec | string,\n options: FeedOptions = {},\n diagnosticNode: DiagnosticNodeInternal,\n correlatedActivityId?: string,\n ): Promise<Response<PartitionedQueryExecutionInfo>> {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.post,\n path,\n operationType: OperationType.Read,\n resourceId,\n resourceType,\n options,\n body: query,\n };\n diagnosticNode.addData({\n operationType: OperationType.Read,\n resourceType,\n });\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpointInternal({\n diagnosticNode: diagnosticNode,\n resourceType: request.resourceType,\n operationType: request.operationType,\n startServiceEndpointIndex: 0,\n excludedLocations: options?.excludedLocations,\n });\n request.headers = await this.buildHeaders(request);\n if (correlatedActivityId !== undefined) {\n request.headers[HttpHeaders.CorrelatedActivityId] = correlatedActivityId;\n }\n request.headers[HttpHeaders.IsQueryPlan] = \"True\";\n request.headers[HttpHeaders.QueryVersion] = \"1.4\";\n request.headers[HttpHeaders.ContentType] = QueryJsonContentType;\n request.headers[HttpHeaders.SupportedQueryFeatures] = supportedQueryFeaturesBuilder(options);\n\n if (typeof query === \"string\") {\n request.body = { query }; // Converts query text to query object.\n }\n\n this.applySessionToken(request);\n const response = await RequestHandler.request(request, diagnosticNode);\n this.captureSessionToken(undefined, path, OperationType.Query, response.headers);\n return response as any;\n }\n\n public queryPartitionKeyRanges(\n collectionLink: string,\n query?: string | SqlQuerySpec,\n options?: FeedOptions,\n ): QueryIterator<PartitionKeyRange> {\n const path = getPathFromLink(collectionLink, ResourceType.pkranges);\n const id = getIdFromLink(collectionLink);\n const cb: FetchFunctionCallback = async (diagNode, innerOptions) => {\n const response = await this.queryFeed({\n path,\n resourceType: ResourceType.pkranges,\n resourceId: id,\n resultFn: (result) => result.PartitionKeyRanges,\n query,\n options: innerOptions,\n diagnosticNode: diagNode,\n });\n return response;\n };\n return new QueryIterator<PartitionKeyRange>(this, query, options, cb);\n }\n\n public async delete<T>({\n path,\n resourceType,\n resourceId,\n options = {},\n partitionKey,\n method = HTTPMethod.delete,\n diagnosticNode,\n partitionKeyRangeId,\n }: {\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n method?: HTTPMethod;\n diagnosticNode: DiagnosticNodeInternal;\n partitionKeyRangeId?: string;\n }): Promise<Response<T & Resource>> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: method,\n operationType: OperationType.Delete,\n path,\n resourceType,\n options,\n resourceId,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Delete,\n resourceType,\n });\n request.headers = await this.buildHeaders(request);\n request.partitionKeyRangeId = partitionKeyRangeId;\n this.applySessionToken(request);\n // deleteResource will use WriteEndpoint since it uses DELETE operation\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpointInternal({\n diagnosticNode: diagnosticNode,\n resourceType: request.resourceType,\n operationType: request.operationType,\n startServiceEndpointIndex: 0,\n excludedLocations: options?.excludedLocations,\n });\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n if (parseLink(path).type !== \"colls\") {\n this.captureSessionToken(undefined, path, OperationType.Delete, response.headers);\n } else {\n this.clearSessionToken(path);\n }\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n public async patch<T>({\n body,\n path,\n resourceType,\n resourceId,\n options = {},\n partitionKey,\n diagnosticNode,\n partitionKeyRangeId,\n }: {\n body: any;\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n diagnosticNode: DiagnosticNodeInternal;\n partitionKeyRangeId?: string;\n }): Promise<Response<T & Resource>> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.patch,\n operationType: OperationType.Patch,\n path,\n resourceType,\n body,\n resourceId,\n options,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Patch,\n resourceType,\n });\n request.headers = await this.buildHeaders(request);\n request.partitionKeyRangeId = partitionKeyRangeId;\n this.applySessionToken(request);\n\n // patch will use WriteEndpoint\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpointInternal({\n diagnosticNode: diagnosticNode,\n resourceType: request.resourceType,\n operationType: request.operationType,\n startServiceEndpointIndex: 0,\n excludedLocations: options?.excludedLocations,\n });\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Patch, response.headers);\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n public async create<T, U = T>({\n body,\n path,\n resourceType,\n resourceId,\n diagnosticNode,\n options = {},\n partitionKey,\n partitionKeyRangeId,\n }: {\n body: T;\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n diagnosticNode: DiagnosticNodeInternal;\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n partitionKeyRangeId?: string;\n }): Promise<Response<T & U & Resource>> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.post,\n operationType: OperationType.Create,\n path,\n resourceType,\n resourceId,\n body,\n options,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Create,\n resourceType,\n });\n request.headers = await this.buildHeaders(request);\n request.partitionKeyRangeId = partitionKeyRangeId;\n // create will use WriteEndpoint since it uses POST operation\n this.applySessionToken(request);\n\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpointInternal({\n diagnosticNode: diagnosticNode,\n resourceType: request.resourceType,\n operationType: request.operationType,\n startServiceEndpointIndex: 0,\n excludedLocations: options?.excludedLocations,\n });\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Create, response.headers);\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n private processQueryFeedResponse(\n res: Response<any>,\n isQuery: boolean,\n resultFn: (result: { [key: string]: any }) => any[],\n ): Response<any> {\n if (isQuery) {\n return {\n result: resultFn(res.result),\n headers: res.headers,\n code: res.code,\n };\n } else {\n const newResult = resultFn(res.result).map((body: any) => body);\n return {\n result: newResult,\n headers: res.headers,\n code: res.code,\n };\n }\n }\n\n private applySessionToken(requestContext: RequestContext): void {\n const request = this.getSessionParams(requestContext.path);\n\n if (requestContext.headers && requestContext.headers[HttpHeaders.SessionToken]) {\n return;\n }\n\n const sessionConsistency: ConsistencyLevel = requestContext.headers[\n HttpHeaders.ConsistencyLevel\n ] as ConsistencyLevel;\n if (!sessionConsistency) {\n return;\n }\n\n if (sessionConsistency !== ConsistencyLevel.Session) {\n return;\n }\n\n if (request.resourceAddress) {\n const sessionToken = this.sessionContainer.get(request);\n if (sessionToken) {\n requestContext.headers[HttpHeaders.SessionToken] = sessionToken;\n }\n }\n }\n\n public async replace<T>({\n body,\n path,\n resourceType,\n resourceId,\n options = {},\n partitionKey,\n diagnosticNode,\n partitionKeyRangeId,\n }: {\n body: any;\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n diagnosticNode: DiagnosticNodeInternal;\n partitionKeyRangeId?: string;\n }): Promise<Response<T & Resource>> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.put,\n operationType: OperationType.Replace,\n path,\n resourceType,\n body,\n resourceId,\n options,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Replace,\n resourceType,\n });\n request.headers = await this.buildHeaders(request);\n request.partitionKeyRangeId = partitionKeyRangeId;\n this.applySessionToken(request);\n\n // replace will use WriteEndpoint since it uses PUT operation\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpointInternal({\n diagnosticNode: diagnosticNode,\n resourceType: request.resourceType,\n operationType: request.operationType,\n startServiceEndpointIndex: 0,\n excludedLocations: options?.excludedLocations,\n });\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Replace, response.headers);\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n public async upsert<T, U = T>({\n body,\n path,\n resourceType,\n resourceId,\n options = {},\n partitionKey,\n diagnosticNode,\n partitionKeyRangeId,\n }: {\n body: T;\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n diagnosticNode: DiagnosticNodeInternal;\n partitionKeyRangeId?: string;\n }): Promise<Response<T & U & Resource>> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.post,\n operationType: OperationType.Upsert,\n path,\n resourceType,\n body,\n resourceId,\n options,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Upsert,\n resourceType,\n });\n request.headers = await this.buildHeaders(request);\n request.partitionKeyRangeId = partitionKeyRangeId;\n request.headers[HttpHeaders.IsUpsert] = true;\n this.applySessionToken(request);\n\n // upsert will use WriteEndpoint since it uses POST operation\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpointInternal({\n diagnosticNode: diagnosticNode,\n resourceType: request.resourceType,\n operationType: request.operationType,\n startServiceEndpointIndex: 0,\n excludedLocations: options?.excludedLocations,\n });\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Upsert, response.headers);\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n public async execute<T>({\n sprocLink,\n params,\n options = {},\n partitionKey,\n diagnosticNode,\n partitionKeyRangeId,\n }: {\n sprocLink: string;\n params?: any[];\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n diagnosticNode: DiagnosticNodeInternal;\n partitionKeyRangeId?: string;\n }): Promise<Response<T>> {\n // Accept a single parameter or an array of parameters.\n // Didn't add type annotation for this because we should legacy this behavior\n if (params !== null && params !== undefined && !Array.isArray(params)) {\n params = [params];\n }\n const path = getPathFromLink(sprocLink);\n const id = getIdFromLink(sprocLink);\n\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.post,\n operationType: OperationType.Execute,\n path,\n resourceType: ResourceType.sproc,\n options,\n resourceId: id,\n body: params,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Execute,\n resourceType: ResourceType.sproc,\n });\n request.headers = await this.buildHeaders(request);\n request.partitionKeyRangeId = partitionKeyRangeId;\n // executeStoredProcedure will use WriteEndpoint since it uses POST operation\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpointInternal({\n diagnosticNode: diagnosticNode,\n resourceType: request.resourceType,\n operationType: request.operationType,\n startServiceEndpointIndex: 0,\n excludedLocations: options?.excludedLocations,\n });\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n return response;\n }\n\n /**\n * Gets the Database account information.\n * @param options - `urlConnection` in the options is the endpoint url whose database account needs to be retrieved.\n * If not present, current client's url will be used.\n */\n public async getDatabaseAccount(\n diagnosticNode: DiagnosticNodeInternal,\n options: RequestOptions = {},\n ): Promise<Response<DatabaseAccount>> {\n const endpoint = options.urlConnection || this.cosmosClientOptions.endpoint;\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n endpoint,\n method: HTTPMethod.get,\n operationType: OperationType.Read,\n path: \"\",\n resourceType: ResourceType.none,\n options,\n };\n diagnosticNode.addData({\n operationType: OperationType.Read,\n resourceType: ResourceType.none,\n });\n request.headers = await this.buildHeaders(request);\n // await options.beforeOperation({ endpoint, request, headers: requestHeaders });\n const { result, headers, code, substatus, diagnostics } = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n\n const databaseAccount = new DatabaseAccount(result, headers);\n return {\n result: databaseAccount,\n headers,\n diagnostics,\n code: code,\n substatus: substatus,\n };\n }\n\n public getWriteEndpoint(diagnosticNode: DiagnosticNodeInternal): Promise<string> {\n return this.globalEndpointManager.getWriteEndpoint(diagnosticNode);\n }\n\n public getReadEndpoint(diagnosticNode: DiagnosticNodeInternal): Promise<string> {\n return this.globalEndpointManager.getReadEndpoint(diagnosticNode);\n }\n\n public getWriteEndpoints(): Promise<readonly string[]> {\n return this.globalEndpointManager.getWriteEndpoints();\n }\n\n public getReadEndpoints(): Promise<readonly string[]> {\n return this.globalEndpointManager.getReadEndpoints();\n }\n\n public async batch<T>({\n body,\n path,\n partitionKey,\n resourceId,\n options = {},\n diagnosticNode,\n partitionKeyRangeId,\n }: {\n body: T;\n path: string;\n partitionKey: PartitionKey;\n resourceId: string;\n options?: RequestOptions;\n diagnosticNode: DiagnosticNodeInternal;\n partitionKeyRangeId?: string;\n }): Promise<Response<any>> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.post,\n operationType: OperationType.Batch,\n path,\n body,\n resourceType: ResourceType.item,\n resourceId,\n options,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Batch,\n resourceType: ResourceType.item,\n });\n request.headers = await this.buildHeaders(request);\n request.partitionKeyRangeId = partitionKeyRangeId;\n request.headers[HttpHeaders.IsBatchRequest] = true;\n request.headers[HttpHeaders.IsBatchAtomic] = true;\n\n this.applySessionToken(request);\n\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpointInternal({\n diagnosticNode: diagnosticNode,\n resourceType: request.resourceType,\n operationType: request.operationType,\n startServiceEndpointIndex: 0,\n excludedLocations: options?.excludedLocations,\n });\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Batch, response.headers);\n response.diagnostics = diagnosticNode.toDiagnostic(this.getClientConfig());\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n public async bulk<T>({\n body,\n path,\n partitionKeyRangeId,\n resourceId,\n bulkOptions = {},\n options = {},\n diagnosticNode,\n }: {\n body: T;\n path: string;\n partitionKeyRangeId: string;\n resourceId: string;\n bulkOptions?: BulkOptions;\n options?: RequestOptions;\n diagnosticNode: DiagnosticNodeInternal;\n }): Promise<Response<any>> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.post,\n operationType: OperationType.Batch,\n path,\n body,\n resourceType: ResourceType.item,\n resourceId,\n options,\n };\n diagnosticNode.addData({\n operationType: OperationType.Batch,\n resourceType: ResourceType.item,\n });\n request.headers = await this.buildHeaders(request);\n request.partitionKeyRangeId = partitionKeyRangeId;\n request.headers[HttpHeaders.IsBatchRequest] = true;\n request.headers[HttpHeaders.PartitionKeyRangeID] = partitionKeyRangeId;\n request.headers[HttpHeaders.IsBatchAtomic] = false;\n request.headers[HttpHeaders.BatchContinueOnError] = bulkOptions.continueOnError ?? true;\n this.applySessionToken(request);\n\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpointInternal({\n diagnosticNode: diagnosticNode,\n resourceType: request.resourceType,\n operationType: request.operationType,\n startServiceEndpointIndex: 0,\n excludedLocations: options?.excludedLocations,\n });\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Batch, response.headers);\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n private captureSessionToken(\n err: ErrorResponse,\n path: string,\n operationType: OperationType,\n resHeaders: CosmosHeaders,\n ): void {\n const request = this.getSessionParams(path);\n request.operationType = operationType;\n if (\n !err ||\n (!this.isMasterResource(request.resourceType) &&\n (err.code === StatusCodes.PreconditionFailed ||\n err.code === StatusCodes.Conflict ||\n (err.code === StatusCodes.NotFound &&\n err.substatus !== SubStatusCodes.ReadSessionNotAvailable)))\n ) {\n this.sessionContainer.set(request, resHeaders);\n }\n }\n\n public clearSessionToken(path: string): void {\n const request = this.getSessionParams(path);\n this.sessionContainer.remove(request);\n }\n\n public recordDiagnostics(diagnostic: CosmosDiagnostics): void {\n const formatted = this.diagnosticFormatter.format(diagnostic);\n this.diagnosticWriter.write(formatted);\n }\n\n public initializeDiagnosticSettings(diagnosticLevel: CosmosDbDiagnosticLevel): void {\n this.diagnosticFormatter = new DefaultDiagnosticFormatter();\n switch (diagnosticLevel) {\n case CosmosDbDiagnosticLevel.info:\n this.diagnosticWriter = new NoOpDiagnosticWriter();\n break;\n default:\n this.diagnosticWriter = new LogDiagnosticWriter();\n }\n }\n\n // TODO: move\n private getSessionParams(resourceLink: string): SessionContext {\n const resourceId: string = null;\n let resourceAddress: string = null;\n const parserOutput = parseLink(resourceLink);\n\n resourceAddress = parserOutput.objectBody.self;\n\n const resourceType = parserOutput.type;\n return {\n resourceId,\n resourceAddress,\n resourceType,\n isNameBased: true,\n };\n }\n\n private isMasterResource(resourceType: string): boolean {\n if (\n resourceType === Constants.Path.OffersPathSegment ||\n resourceType === Constants.Path.DatabasesPathSegment ||\n resourceType === Constants.Path.UsersPathSegment ||\n resourceType === Constants.Path.PermissionsPathSegment ||\n resourceType === Constants.Path.TopologyPathSegment ||\n resourceType === Constants.Path.DatabaseAccountPathSegment ||\n resourceType === Constants.Path.PartitionKeyRangesPathSegment ||\n resourceType === Constants.Path.CollectionsPathSegment\n ) {\n return true;\n }\n\n return false;\n }\n\n private buildHeaders(requestContext: RequestContext): Promise<CosmosHeaders> {\n return getHeaders({\n clientOptions: this.cosmosClientOptions,\n defaultHeaders: {\n ...this.cosmosClientOptions.defaultHeaders,\n ...requestContext.options.initialHeaders,\n },\n verb: requestContext.method,\n path: requestContext.path,\n resourceId: requestContext.resourceId,\n resourceType: requestContext.resourceType,\n options: requestContext.options,\n partitionKeyRangeId: requestContext.partitionKeyRangeId,\n useMultipleWriteLocations: this.connectionPolicy.useMultipleWriteLocations,\n partitionKey:\n requestContext.partitionKey !== undefined\n ? convertToInternalPartitionKey(requestContext.partitionKey)\n : undefined, // TODO: Move this check from here to PartitionKey\n operationType: requestContext.operationType,\n });\n }\n\n /**\n * Returns collection of properties which are derived from the context for Request Creation.\n * These properties have client wide scope, as opposed to request specific scope.\n * @returns\n */\n private getContextDerivedPropsForRequestCreation(): {\n globalEndpointManager: GlobalEndpointManager;\n connectionPolicy: ConnectionPolicy;\n requestAgent: Agent;\n client?: ClientContext;\n pipeline?: Pipeline;\n plugins: PluginConfig[];\n httpClient?: HttpClient;\n globalPartitionEndpointManager?: GlobalPartitionEndpointManager;\n } {\n return {\n globalEndpointManager: this.globalEndpointManager,\n requestAgent: this.cosmosClientOptions.agent,\n connectionPolicy: this.connectionPolicy,\n client: this,\n plugins: this.cosmosClientOptions.plugins,\n pipeline: this.pipeline,\n httpClient: this.cosmosClientOptions.httpClient,\n globalPartitionEndpointManager: this.globalPartitionEndpointManager,\n };\n }\n\n public getClientConfig(): ClientConfigDiagnostic {\n return this.clientConfig;\n }\n\n /**\n * @internal\n */\n public refreshUserAgent(hostFramework: string): void {\n const updatedUserAgent = getUserAgent(this.cosmosClientOptions, hostFramework);\n this.cosmosClientOptions.defaultHeaders[Constants.HttpHeaders.UserAgent] = updatedUserAgent;\n this.cosmosClientOptions.defaultHeaders[Constants.HttpHeaders.CustomUserAgent] =\n updatedUserAgent;\n }\n\n /**\n * @internal\n */\n public getRetryOptions(): RetryOptions {\n return this.connectionPolicy.retryOptions;\n }\n\n /**\n * @internal\n */\n public isPartitionLevelFailOverEnabled(): boolean {\n return (\n this.globalEndpointManager.lastKnownPPAFEnabled ||\n this.globalEndpointManager.lastKnownPPCBEnabled\n );\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_constants"]
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../src/CosmosClient.ts"],
|
|
4
4
|
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Database, Databases } from \"./client/Database/index.js\";\nimport { Offer, Offers } from \"./client/Offer/index.js\";\nimport { ClientContext } from \"./ClientContext.js\";\nimport { parseConnectionString } from \"./common/index.js\";\nimport { Constants } from \"./common/constants.js\";\nimport { getUserAgent } from \"./common/platform.js\";\nimport type { CosmosClientOptions } from \"./CosmosClientOptions.js\";\nimport type { ClientConfigDiagnostic } from \"./CosmosDiagnostics.js\";\nimport {\n determineDiagnosticLevel,\n getDiagnosticLevelFromEnvironment,\n} from \"./diagnostics/index.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport { DiagnosticNodeType } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport type { DatabaseAccount } from \"./documents/index.js\";\nimport { defaultConnectionPolicy } from \"./documents/index.js\";\nimport { EncryptionManager } from \"./encryption/EncryptionManager.js\";\nimport { GlobalEndpointManager } from \"./globalEndpointManager.js\";\nimport type { RequestOptions } from \"./request/index.js\";\nimport { ResourceResponse } from \"./request/index.js\";\nimport { checkURL } from \"./utils/checkURL.js\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"./utils/diagnostics.js\";\nimport { GlobalPartitionEndpointManager } from \"./globalPartitionEndpointManager.js\";\n\n/**\n * Provides a client-side logical representation of the Azure Cosmos DB database account.\n * This client is used to configure and execute requests in the Azure Cosmos DB database service.\n * @example Instantiate a client and create a new database\n * ```ts snippet:CosmosClientCreate\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n * ```\n * @example Instantiate a client with custom Connection Policy\n * ```ts snippet:CosmosClientWithConnectionPolicy\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({\n * endpoint,\n * key,\n * connectionPolicy: {\n * requestTimeout: 10000,\n * },\n * });\n * ```\n * @example Instantiate a client with AAD authentication and custom scope\n * ```ts snippet:CosmosClientWithAADScope\n * import { DefaultAzureCredential } from \"@azure/identity\";\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const aadCredentials = new DefaultAzureCredential();\n * const client = new CosmosClient({\n * endpoint,\n * aadCredentials,\n * aadScope: \"https://cosmos.azure.com/.default\", // Optional custom scope\n * });\n * ```\n */\nexport class CosmosClient {\n /**\n * Used for creating new databases, or querying/reading all databases.\n *\n * Use `.database(id)` to read, replace, or delete a specific, existing database by id.\n *\n * @example Create a new database\n * ```ts snippet:CosmosClientDatabases\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n * const { resource: databaseDefinition, database } = await client.databases.create({\n * id: \"<name here>\",\n * });\n * ```\n */\n public readonly databases: Databases;\n /**\n * Used for querying & reading all offers.\n *\n * Use `.offer(id)` to read, or replace existing offers.\n */\n public readonly offers: Offers;\n private clientContext: ClientContext;\n private endpointRefresher: NodeJS.Timeout;\n /**\n * @internal\n */\n private encryptionManager: EncryptionManager;\n /** @internal */\n private globalPartitionEndpointManager: GlobalPartitionEndpointManager;\n /**\n * Creates a new {@link CosmosClient} object from a connection string. Your database connection string can be found in the Azure Portal\n */\n constructor(connectionString: string);\n /**\n * Creates a new {@link CosmosClient} object. See {@link CosmosClientOptions} for more details on what options you can use.\n * @param options - bag of options; require at least endpoint and auth to be configured\n */\n constructor(options: CosmosClientOptions);\n constructor(optionsOrConnectionString: string | CosmosClientOptions) {\n if (typeof optionsOrConnectionString === \"string\") {\n optionsOrConnectionString = parseConnectionString(optionsOrConnectionString);\n } else if (optionsOrConnectionString.connectionString) {\n const { endpoint, key } = parseConnectionString(optionsOrConnectionString.connectionString);\n optionsOrConnectionString.endpoint = endpoint;\n optionsOrConnectionString.key = key;\n }\n\n const endpoint = checkURL(optionsOrConnectionString.endpoint);\n if (!endpoint) {\n throw new Error(\"Invalid endpoint specified\");\n }\n\n if (optionsOrConnectionString.clientEncryptionOptions) {\n if (!optionsOrConnectionString.clientEncryptionOptions.keyEncryptionKeyResolver) {\n throw new Error(\n \"KeyEncryptionKeyResolver needs to be provided to enable client-side encryption.\",\n );\n }\n if (\n optionsOrConnectionString.clientEncryptionOptions.encryptionKeyTimeToLiveInSeconds &&\n optionsOrConnectionString.clientEncryptionOptions.encryptionKeyTimeToLiveInSeconds < 60\n ) {\n throw new Error(\"EncryptionKeyTimeToLiveInSeconds needs to be >= 60 seconds.\");\n }\n this.encryptionManager = new EncryptionManager(\n optionsOrConnectionString.clientEncryptionOptions.keyEncryptionKeyResolver,\n optionsOrConnectionString.clientEncryptionOptions.encryptionKeyTimeToLiveInSeconds,\n );\n }\n\n const clientConfig: ClientConfigDiagnostic =\n this.initializeClientConfigDiagnostic(optionsOrConnectionString);\n\n optionsOrConnectionString.connectionPolicy = Object.assign(\n {},\n defaultConnectionPolicy,\n optionsOrConnectionString.connectionPolicy,\n );\n\n // If endpoint discovery is disabled, automatically disable partition level features\n if (!optionsOrConnectionString.connectionPolicy.enableEndpointDiscovery) {\n optionsOrConnectionString.connectionPolicy.enablePartitionLevelFailover = false;\n optionsOrConnectionString.connectionPolicy.enablePartitionLevelCircuitBreaker = false;\n }\n\n optionsOrConnectionString.defaultHeaders = optionsOrConnectionString.defaultHeaders || {};\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.CacheControl] = \"no-cache\";\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.Version] =\n Constants.CurrentVersion;\n if (optionsOrConnectionString.consistencyLevel !== undefined) {\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.ConsistencyLevel] =\n optionsOrConnectionString.consistencyLevel;\n }\n\n if (optionsOrConnectionString.throughputBucket !== undefined) {\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.ThroughputBucket] =\n optionsOrConnectionString.throughputBucket;\n }\n\n const userAgent = getUserAgent(optionsOrConnectionString);\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.UserAgent] = userAgent;\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.CustomUserAgent] = userAgent;\n\n const globalEndpointManager = new GlobalEndpointManager(\n optionsOrConnectionString,\n async (diagnosticNode: DiagnosticNodeInternal, opts: RequestOptions) =>\n this.getDatabaseAccountInternal(diagnosticNode, opts),\n );\n\n if (\n optionsOrConnectionString.connectionPolicy.enablePartitionLevelFailover ||\n optionsOrConnectionString.connectionPolicy.enablePartitionLevelCircuitBreaker\n ) {\n this.globalPartitionEndpointManager = new GlobalPartitionEndpointManager(\n optionsOrConnectionString,\n globalEndpointManager,\n );\n\n globalEndpointManager.onEnablePartitionLevelFailoverConfigChanged = (isEnabled: boolean) => {\n this.globalPartitionEndpointManager?.changeCircuitBreakerFailbackLoop(isEnabled);\n };\n }\n\n this.clientContext = new ClientContext(\n optionsOrConnectionString,\n globalEndpointManager,\n clientConfig,\n determineDiagnosticLevel(\n optionsOrConnectionString.diagnosticLevel,\n getDiagnosticLevelFromEnvironment(),\n ),\n this.globalPartitionEndpointManager,\n );\n if (\n optionsOrConnectionString.connectionPolicy?.enableEndpointDiscovery &&\n optionsOrConnectionString.connectionPolicy?.enableBackgroundEndpointRefreshing\n ) {\n this.backgroundRefreshEndpointList(\n globalEndpointManager,\n optionsOrConnectionString.connectionPolicy.endpointRefreshRateInMs ||\n defaultConnectionPolicy.endpointRefreshRateInMs,\n );\n }\n\n this.databases = new Databases(this, this.clientContext, this.encryptionManager);\n this.offers = new Offers(this, this.clientContext);\n }\n\n private initializeClientConfigDiagnostic(\n optionsOrConnectionString: CosmosClientOptions,\n ): ClientConfigDiagnostic {\n return {\n endpoint: optionsOrConnectionString.endpoint,\n resourceTokensConfigured: optionsOrConnectionString.resourceTokens !== undefined,\n tokenProviderConfigured: optionsOrConnectionString.tokenProvider !== undefined,\n aadCredentialsConfigured: optionsOrConnectionString.aadCredentials !== undefined,\n connectionPolicyConfigured: optionsOrConnectionString.connectionPolicy !== undefined,\n consistencyLevel: optionsOrConnectionString.consistencyLevel,\n defaultHeaders: optionsOrConnectionString.defaultHeaders,\n agentConfigured: optionsOrConnectionString.agent !== undefined,\n userAgentSuffix: optionsOrConnectionString.userAgentSuffix,\n diagnosticLevel: optionsOrConnectionString.diagnosticLevel,\n pluginsConfigured: optionsOrConnectionString.plugins !== undefined,\n sDKVersion: Constants.SDKVersion,\n aadScopeOverride: optionsOrConnectionString.aadScope !== undefined,\n };\n }\n\n /**\n * Get information about the current {@link DatabaseAccount} (including which regions are supported, etc.)\n */\n public async getDatabaseAccount(\n options?: RequestOptions,\n ): Promise<ResourceResponse<DatabaseAccount>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.getDatabaseAccountInternal(diagnosticNode, options);\n }, this.clientContext);\n }\n\n /**\n * @hidden\n */\n public async getDatabaseAccountInternal(\n diagnosticNode: DiagnosticNodeInternal,\n options?: RequestOptions,\n ): Promise<ResourceResponse<DatabaseAccount>> {\n const response = await this.clientContext.getDatabaseAccount(diagnosticNode, options);\n return new ResourceResponse<DatabaseAccount>(\n response.result,\n response.headers,\n response.code,\n getEmptyCosmosDiagnostics(),\n response.substatus,\n );\n }\n\n /**\n * Gets the currently used write endpoint url. Useful for troubleshooting purposes.\n *\n * The url may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public async getWriteEndpoint(): Promise<string> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.clientContext.getWriteEndpoint(diagnosticNode);\n }, this.clientContext);\n }\n\n /**\n * Gets the currently used read endpoint. Useful for troubleshooting purposes.\n *\n * The url may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public async getReadEndpoint(): Promise<string> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.clientContext.getReadEndpoint(diagnosticNode);\n }, this.clientContext);\n }\n\n /**\n * Gets the known write endpoints. Useful for troubleshooting purposes.\n *\n * The urls may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public getWriteEndpoints(): Promise<readonly string[]> {\n return this.clientContext.getWriteEndpoints();\n }\n\n /**\n * Gets the currently used read endpoint. Useful for troubleshooting purposes.\n *\n * The url may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public getReadEndpoints(): Promise<readonly string[]> {\n return this.clientContext.getReadEndpoints();\n }\n\n /**\n * Used for reading, updating, or deleting a existing database by id or accessing containers belonging to that database.\n *\n * This does not make a network call. Use `.read` to get info about the database after getting the {@link Database} object.\n *\n * @param id - The id of the database.\n * @example Create a new container off of an existing database\n * ```ts snippet:CosmosClientDatabaseCreateContainer\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n * const container = client.database(\"<database id>\").containers.create({\n * id: \"<name here>\",\n * });\n * ```\n *\n * @example Delete an existing database\n * ```ts snippet:CosmosClientDatabaseDelete\n * import { CosmosClient } from \"@azure/cosmos\";\n *\n * const endpoint = \"https://your-account.documents.azure.com\";\n * const key = \"<database account masterkey>\";\n * const client = new CosmosClient({ endpoint, key });\n * await client.database(\"<id here>\").delete();\n * ```\n */\n public database(id: string): Database {\n return new Database(this, id, this.clientContext, this.encryptionManager);\n }\n\n /**\n * Used for reading, or updating a existing offer by id.\n * @param id - The id of the offer.\n */\n public offer(id: string): Offer {\n return new Offer(this, id, this.clientContext);\n }\n\n /**\n * Clears background endpoint refresher. Use client.dispose() when destroying the CosmosClient within another process.\n */\n public dispose(): void {\n clearTimeout(this.endpointRefresher);\n if (this.clientContext.enableEncryption) {\n clearTimeout(this.encryptionManager.encryptionKeyStoreProvider.cacheRefresher);\n clearTimeout(this.encryptionManager.protectedDataEncryptionKeyCache.cacheRefresher);\n }\n if (this.globalPartitionEndpointManager) {\n this.globalPartitionEndpointManager.dispose();\n }\n }\n\n private async backgroundRefreshEndpointList(\n globalEndpointManager: GlobalEndpointManager,\n refreshRate: number,\n ) {\n this.endpointRefresher = setInterval(() => {\n try {\n return withDiagnostics(\n async (diagnosticNode: DiagnosticNodeInternal) => {\n return globalEndpointManager.refreshEndpointList(diagnosticNode);\n },\n this.clientContext,\n DiagnosticNodeType.BACKGROUND_REFRESH_THREAD,\n );\n } catch (e: any) {\n console.warn(\"Failed to refresh endpoints\", e);\n }\n }, refreshRate);\n if (this.endpointRefresher.unref && typeof this.endpointRefresher.unref === \"function\") {\n this.endpointRefresher.unref();\n }\n }\n\n /**\n * Update the host framework. If provided host framework will be used to generate the defualt SDK user agent.\n * @param hostFramework - A custom string.\n * @internal\n */\n public async updateHostFramework(hostFramework: string): Promise<void> {\n this.clientContext.refreshUserAgent(hostFramework);\n }\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,sBAAoC;AACpC,mBAA8B;AAC9B,2BAA8B;AAC9B,oBAAsC;AACtC,uBAA0B;AAC1B,sBAA6B;AAG7B,yBAGO;AAEP,oCAAmC;AAEnC,uBAAwC;AACxC,+BAAkC;AAClC,mCAAsC;AAEtC,qBAAiC;AACjC,sBAAyB;AACzB,IAAAA,sBAA2D;AAC3D,4CAA+C;AAyCxC,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA,EACR;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA;AAAA,EAEA;AAAA,EAUR,YAAY,2BAAyD;AACnE,QAAI,OAAO,8BAA8B,UAAU;AACjD,sCAA4B,qCAAsB,yBAAyB;AAAA,IAC7E,WAAW,0BAA0B,kBAAkB;AACrD,YAAM,EAAE,UAAAC,WAAU,IAAI,QAAI,qCAAsB,0BAA0B,gBAAgB;AAC1F,gCAA0B,WAAWA;AACrC,gCAA0B,MAAM;AAAA,IAClC;AAEA,UAAM,eAAW,0BAAS,0BAA0B,QAAQ;AAC5D,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAEA,QAAI,0BAA0B,yBAAyB;AACrD,UAAI,CAAC,0BAA0B,wBAAwB,0BAA0B;AAC/E,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,UACE,0BAA0B,wBAAwB,oCAClD,0BAA0B,wBAAwB,mCAAmC,IACrF;AACA,cAAM,IAAI,MAAM,6DAA6D;AAAA,MAC/E;AACA,WAAK,oBAAoB,IAAI;AAAA,QAC3B,0BAA0B,wBAAwB;AAAA,QAClD,0BAA0B,wBAAwB;AAAA,MACpD;AAAA,IACF;AAEA,UAAM,eACJ,KAAK,iCAAiC,yBAAyB;AAEjE,8BAA0B,mBAAmB,OAAO;AAAA,MAClD,CAAC;AAAA,MACD;AAAA,MACA,0BAA0B;AAAA,IAC5B;AAGA,QAAI,CAAC,0BAA0B,iBAAiB,yBAAyB;AACvE,gCAA0B,iBAAiB,+BAA+B;AAC1E,gCAA0B,iBAAiB,qCAAqC;AAAA,IAClF;AAEA,8BAA0B,iBAAiB,0BAA0B,kBAAkB,CAAC;AACxF,8BAA0B,eAAe,2BAAU,YAAY,YAAY,IAAI;AAC/E,8BAA0B,eAAe,2BAAU,YAAY,OAAO,IACpE,2BAAU;AACZ,QAAI,0BAA0B,qBAAqB,QAAW;AAC5D,gCAA0B,eAAe,2BAAU,YAAY,gBAAgB,IAC7E,0BAA0B;AAAA,IAC9B;AAEA,QAAI,0BAA0B,qBAAqB,QAAW;AAC5D,gCAA0B,eAAe,2BAAU,YAAY,gBAAgB,IAC7E,0BAA0B;AAAA,IAC9B;AAEA,UAAM,gBAAY,8BAAa,yBAAyB;AACxD,8BAA0B,eAAe,2BAAU,YAAY,SAAS,IAAI;AAC5E,8BAA0B,eAAe,2BAAU,YAAY,eAAe,IAAI;AAElF,UAAM,wBAAwB,IAAI;AAAA,MAChC;AAAA,MACA,OAAO,gBAAwC,SAC7C,KAAK,2BAA2B,gBAAgB,IAAI;AAAA,IACxD;AAEA,QACE,0BAA0B,iBAAiB,gCAC3C,0BAA0B,iBAAiB,oCAC3C;AACA,WAAK,iCAAiC,IAAI;AAAA,QACxC;AAAA,QACA;AAAA,MACF;AAEA,4BAAsB,8CAA8C,CAAC,cAAuB;AAC1F,aAAK,gCAAgC,iCAAiC,SAAS;AAAA,MACjF;AAAA,IACF;AAEA,SAAK,gBAAgB,IAAI;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,UACA;AAAA,QACE,0BAA0B;AAAA,YAC1B,sDAAkC;AAAA,MACpC;AAAA,MACA,KAAK;AAAA,IACP;AACA,QACE,0BAA0B,kBAAkB,2BAC5C,0BAA0B,kBAAkB,oCAC5C;AACA,WAAK;AAAA,QACH;AAAA,QACA,0BAA0B,iBAAiB,2BACzC,yCAAwB;AAAA,MAC5B;AAAA,IACF;AAEA,SAAK,YAAY,IAAI,0BAAU,MAAM,KAAK,eAAe,KAAK,iBAAiB;AAC/E,SAAK,SAAS,IAAI,oBAAO,MAAM,KAAK,aAAa;AAAA,EACnD;AAAA,EAEQ,iCACN,2BACwB;AACxB,WAAO;AAAA,MACL,UAAU,0BAA0B;AAAA,MACpC,0BAA0B,0BAA0B,mBAAmB;AAAA,MACvE,yBAAyB,0BAA0B,kBAAkB;AAAA,MACrE,0BAA0B,0BAA0B,mBAAmB;AAAA,MACvE,4BAA4B,0BAA0B,qBAAqB;AAAA,MAC3E,kBAAkB,0BAA0B;AAAA,MAC5C,gBAAgB,0BAA0B;AAAA,MAC1C,iBAAiB,0BAA0B,UAAU;AAAA,MACrD,iBAAiB,0BAA0B;AAAA,MAC3C,iBAAiB,0BAA0B;AAAA,MAC3C,mBAAmB,0BAA0B,YAAY;AAAA,MACzD,YAAY,2BAAU;AAAA,MACtB,kBAAkB,0BAA0B,aAAa;AAAA,IAC3D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,mBACX,SAC4C;AAC5C,eAAO,qCAAgB,OAAO,mBAA2C;AACvE,aAAO,KAAK,2BAA2B,gBAAgB,OAAO;AAAA,IAChE,GAAG,KAAK,aAAa;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,2BACX,gBACA,SAC4C;AAC5C,UAAM,WAAW,MAAM,KAAK,cAAc,mBAAmB,gBAAgB,OAAO;AACpF,WAAO,IAAI;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,UACT,+CAA0B;AAAA,MAC1B,SAAS;AAAA,IACX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,mBAAoC;AAC/C,eAAO,qCAAgB,OAAO,mBAA2C;AACvE,aAAO,KAAK,cAAc,iBAAiB,cAAc;AAAA,IAC3D,GAAG,KAAK,aAAa;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,kBAAmC;AAC9C,eAAO,qCAAgB,OAAO,mBAA2C;AACvE,aAAO,KAAK,cAAc,gBAAgB,cAAc;AAAA,IAC1D,GAAG,KAAK,aAAa;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,oBAAgD;AACrD,WAAO,KAAK,cAAc,kBAAkB;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,mBAA+C;AACpD,WAAO,KAAK,cAAc,iBAAiB;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8BO,SAAS,IAAsB;AACpC,WAAO,IAAI,yBAAS,MAAM,IAAI,KAAK,eAAe,KAAK,iBAAiB;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,MAAM,IAAmB;AAC9B,WAAO,IAAI,mBAAM,MAAM,IAAI,KAAK,aAAa;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA,EAKO,UAAgB;AACrB,iBAAa,KAAK,iBAAiB;AACnC,QAAI,KAAK,cAAc,kBAAkB;AACvC,mBAAa,KAAK,kBAAkB,2BAA2B,cAAc;AAC7E,mBAAa,KAAK,kBAAkB,gCAAgC,cAAc;AAAA,IACpF;AACA,QAAI,KAAK,gCAAgC;AACvC,WAAK,+BAA+B,QAAQ;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,MAAc,8BACZ,uBACA,aACA;AACA,SAAK,oBAAoB,YAAY,MAAM;AACzC,UAAI;AACF,mBAAO;AAAA,UACL,OAAO,mBAA2C;AAChD,mBAAO,sBAAsB,oBAAoB,cAAc;AAAA,UACjE;AAAA,UACA,KAAK;AAAA,UACL,iDAAmB;AAAA,QACrB;AAAA,MACF,SAAS,GAAQ;AACf,gBAAQ,KAAK,+BAA+B,CAAC;AAAA,MAC/C;AAAA,IACF,GAAG,WAAW;AACd,QAAI,KAAK,kBAAkB,SAAS,OAAO,KAAK,kBAAkB,UAAU,YAAY;AACtF,WAAK,kBAAkB,MAAM;AAAA,IAC/B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,oBAAoB,eAAsC;AACrE,SAAK,cAAc,iBAAiB,aAAa;AAAA,EACnD;AACF;",
|
|
6
6
|
"names": ["import_diagnostics", "endpoint"]
|
|
@@ -13,3 +13,4 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
13
13
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
14
|
var CosmosClientOptions_exports = {};
|
|
15
15
|
module.exports = __toCommonJS(CosmosClientOptions_exports);
|
|
16
|
+
//# sourceMappingURL=CosmosClientOptions.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../src/CosmosClientOptions.ts"],
|
|
4
4
|
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { TokenCredential } from \"@azure/core-auth\";\nimport type { TokenProvider } from \"./auth.js\";\nimport type { PermissionDefinition } from \"./client/index.js\";\nimport type { ConnectionPolicy, ConsistencyLevel } from \"./documents/index.js\";\nimport type { PluginConfig } from \"./plugins/Plugin.js\";\nimport type { CosmosHeaders } from \"./queryExecutionContext/CosmosHeaders.js\";\nimport type { CosmosDbDiagnosticLevel } from \"./diagnostics/CosmosDbDiagnosticLevel.js\";\nimport type { HttpClient } from \"@azure/core-rest-pipeline\";\nimport type { ClientEncryptionOptions } from \"./encryption/ClientEncryptionOptions.js\";\n\n// We expose our own Agent interface to avoid taking a dependency on and leaking node types. This interface should mirror the node Agent interface\nexport interface Agent {\n maxFreeSockets: number;\n maxSockets: number;\n sockets: any;\n requests: any;\n destroy(): void;\n}\n\nexport interface CosmosClientOptions {\n /** The service endpoint to use to create the client. */\n endpoint?: string;\n /** The account master or readonly key */\n key?: string;\n /** An object that contains resources tokens.\n * Keys for the object are resource Ids and values are the resource tokens.\n */\n resourceTokens?: { [resourcePath: string]: string };\n /** A user supplied function for resolving header authorization tokens.\n * Allows users to generating their own auth tokens, potentially using a separate service\n */\n tokenProvider?: TokenProvider;\n /** AAD token from `@azure/identity`\n * Obtain a credential object by creating an `@azure/identity` credential object\n * We will then use your credential object and a scope URL (your cosmos db endpoint)\n * to authenticate requests to Cosmos\n */\n aadCredentials?: TokenCredential;\n /**\n * @internal\n * Optional custom AAD scope to override the default account-based scope for authentication.\n * If not provided, the default scope will be constructed from the endpoint URL.\n * When provided, no fallback mechanism will be applied if authentication fails.\n */\n aadScope?: string;\n /** An array of {@link Permission} objects. */\n permissionFeed?: PermissionDefinition[];\n /** An instance of {@link ConnectionPolicy} class.\n * This parameter is optional and the default connectionPolicy will be used if omitted.\n */\n connectionPolicy?: ConnectionPolicy;\n /** An optional parameter that represents the consistency level.\n * It can take any value from {@link ConsistencyLevel}.\n */\n consistencyLevel?: keyof typeof ConsistencyLevel;\n defaultHeaders?: CosmosHeaders;\n /** An optional custom http(s) Agent to be used in NodeJS environments\n * Use an agent such as https://github.com/TooTallNate/node-proxy-agent if you need to connect to Cosmos via a proxy\n */\n agent?: Agent;\n /** An optional custom `HttpClient` shape to customize how requests are made by the HTTP pipeline.\n * See `@azure/core-rest-pipeline` for details on how to implement this interface. */\n httpClient?: HttpClient;\n /** A custom string to append to the default SDK user agent. */\n userAgentSuffix?: string;\n diagnosticLevel?: CosmosDbDiagnosticLevel;\n /** encryption policy for operations involving encryption\n * must be set on the client if using client-side encryption\n * @see {@link ClientEncryptionOptions}\n */\n clientEncryptionOptions?: ClientEncryptionOptions;\n /** @internal */\n plugins?: PluginConfig[];\n\n /** An optional parameter to set throughput bucket number. This value can be overridden at request level\n * For more information, visit [Cosmos DB throughput Bucketing](https://aka.ms/cosmosdb-bucketing).\n */\n throughputBucket?: number;\n\n /** An optional parameter that represents the connection string. Your database connection string can be found in the Azure Portal. */\n connectionString?: string;\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../src/CosmosDiagnostics.ts"],
|
|
4
4
|
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { OperationType, ResourceType } from \"./common/index.js\";\nimport type { CosmosDbDiagnosticLevel } from \"./diagnostics/CosmosDbDiagnosticLevel.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\nimport type { ConsistencyLevel } from \"./documents/index.js\";\n\n/**\n * * This is a Cosmos Diagnostic type that holds collected diagnostic information during a client operations. ie. Item.read(), Container.create().\n * It has three members -\n * 1. `clientSideRequestStatistics` member contains aggregate diagnostic information, including -\n * - metadata lookups. Here all the server requests, apart from the final intended resource are considered as metadata calls.\n * i.e. for item.read(id), if the client makes server call to discover endpoints it would be considered as metadata call.\n * - retries\n * - endpoints contacted.\n * - request, response payload stats.\n * - gatewayStatistics - Information corresponding to main operation. For example during Item.read(), the client might perform many operations\n * i.e. metadata lookup etc, but gatewayStatistics represents the diagnostics information for actual read operation.\n *\n * 2. diagnosticNode - Is a tree like structure which captures detailed diagnostic information. By default it is disabled, and is intended to be\n * used only for debugging on non production environments. The kind of details captured in diagnosticNode is controlled by `CosmosDbDiagnosticLevel`.\n * - CosmosDbDiagnosticLevel.info - Is default value. In this level only clientSideRequestStatistics are captured. Is is meant for production environments.\n * - CosmosDbDiagnosticLevel.debug - Captures diagnosticNode and clientConfig. No request and response payloads are captured. Is not meant to be used\n * in production environment.\n * - CosmosDbDiagnosticLevel.debug-unsafe - In addition to data captured in CosmosDbDiagnosticLevel.debug, also captures request and response payloads.\n * Is not meant to be used in production environment.\n * 3. clientConfig - Captures information related to how client was configured during initialization.\n */\nexport class CosmosDiagnostics {\n public readonly clientSideRequestStatistics: ClientSideRequestStatistics;\n public readonly diagnosticNode: DiagnosticNode;\n public readonly clientConfig?: ClientConfigDiagnostic;\n /**\n * @internal\n */\n constructor(\n clientSideRequestStatistics: ClientSideRequestStatistics,\n diagnosticNode?: DiagnosticNode,\n clientConfig?: ClientConfigDiagnostic,\n ) {\n this.clientSideRequestStatistics = clientSideRequestStatistics;\n this.diagnosticNode = diagnosticNode;\n this.clientConfig = clientConfig;\n }\n}\n\n/**\n * This type holds information related to initialization of `CosmosClient`\n */\nexport type ClientConfigDiagnostic = {\n /**\n * End point configured during client initialization.\n */\n endpoint: string;\n /**\n * True if `resourceTokens` was supplied during client initialization.\n */\n resourceTokensConfigured: boolean;\n /**\n * True if `tokenProvider` was supplied during client initialization.\n */\n tokenProviderConfigured: boolean;\n /**\n * True if `aadCredentials` was supplied during client initialization.\n */\n aadCredentialsConfigured: boolean;\n /**\n * True if `connectionPolicy` was supplied during client initialization.\n */\n connectionPolicyConfigured: boolean;\n /**\n * `consistencyLevel` supplied during client initialization.\n */\n consistencyLevel?: keyof typeof ConsistencyLevel;\n /**\n * `defaultHeaders` supplied during client initialization.\n */\n defaultHeaders?: { [key: string]: any };\n /**\n * True if `connectionPolicy` were supplied during client initialization.\n */\n agentConfigured: boolean;\n /**\n * `userAgentSuffix` supplied during client initialization.\n */\n userAgentSuffix: string;\n /**\n * `diagnosticLevel` supplied during client initialization.\n */\n diagnosticLevel?: CosmosDbDiagnosticLevel;\n /**\n * True if `plugins` were supplied during client initialization.\n */\n pluginsConfigured: boolean;\n /**\n * SDK version\n */\n sDKVersion: string;\n /**\n * True if `aadScope` were supplied during client initialization.\n */\n aadScopeOverride?: boolean;\n};\n\n/**\n * This type contains diagnostic information regarding all metadata request to server during an CosmosDB client operation.\n */\nexport type MetadataLookUpDiagnostics = {\n metadataLookups: MetadataLookUpDiagnostic[];\n};\n\n/**\n * This type captures diagnostic information regarding retries attempt during an CosmosDB client operation.\n */\nexport type RetryDiagnostics = {\n failedAttempts: FailedRequestAttemptDiagnostic[];\n};\n\nexport type GatewayStatistics = {\n /**\n * This is the activityId for request, made to server for fetching the requested resource. (As opposed to other potential meta data requests)\n */\n activityId?: string;\n /*\n * The correlated activity ID is added in the header of every request made to the backend for a query. This aids in troubleshooting by linking all\n * requests associated with a particular query.\n */\n correlatedActivityId?: string;\n startTimeUTCInMs: number;\n durationInMs: number;\n operationType?: OperationType;\n resourceType?: ResourceType;\n statusCode?: number;\n subStatusCode?: number;\n requestCharge?: number;\n requestPayloadLengthInBytes: number;\n responsePayloadLengthInBytes: number;\n};\n\n/**\n * This type contains diagnostic information regarding a single metadata request to server.\n */\nexport interface MetadataLookUpDiagnostic {\n activityId: string;\n startTimeUTCInMs: number;\n durationInMs: number;\n operationType?: OperationType;\n resourceType?: ResourceType;\n metaDataType: MetadataLookUpType;\n requestPayloadLengthInBytes: number;\n responsePayloadLengthInBytes: number;\n}\n\n/**\n * This type captures diagnostic information regarding a failed request to server api.\n */\nexport interface FailedRequestAttemptDiagnostic {\n attemptNumber: number;\n activityId: string;\n startTimeUTCInMs: number;\n durationInMs: number;\n operationType?: OperationType;\n resourceType?: ResourceType;\n statusCode: number;\n substatusCode?: number;\n requestPayloadLengthInBytes: number;\n responsePayloadLengthInBytes: number;\n}\n\n/**\n * @hidden\n * Represents the diagnostics information for encryption operations.\n */\nexport interface EncryptionDiagnostics {\n /** shows start time, duration and properties count for encryption*/\n encryptContent: Record<string, any>;\n /** shows start time, duration and properties count for decryption*/\n decryptContent: Record<string, any>;\n /** represents total processing duration for encryption/decryption*/\n processingDurationInMs: number;\n}\n\n/**\n * This is enum for Type of Metadata lookups possible.\n */\nexport enum MetadataLookUpType {\n PartitionKeyRangeLookUp = \"PARTITION_KEY_RANGE_LOOK_UP\",\n DatabaseAccountLookUp = \"DATABASE_ACCOUNT_LOOK_UP\",\n QueryPlanLookUp = \"QUERY_PLAN_LOOK_UP\",\n DatabaseLookUp = \"DATABASE_LOOK_UP\",\n ContainerLookUp = \"CONTAINER_LOOK_UP\",\n}\n\n/**\n * This is a collection type for all client side diagnostic information.\n */\nexport type ClientSideRequestStatistics = {\n /**\n * This is the UTC timestamp for start of client operation.\n */\n requestStartTimeUTCInMs: number;\n /**\n * This is the duration in milli seconds taken by client operation.\n */\n requestDurationInMs: number;\n /**\n * This is the list of Location Endpoints contacted during the client operation.\n */\n locationEndpointsContacted: string[];\n /**\n * This field captures diagnostic information for retries happened during client operation.\n */\n retryDiagnostics: RetryDiagnostics;\n /**\n * This field captures diagnostic information for meta data lookups happened during client operation.\n */\n metadataDiagnostics: MetadataLookUpDiagnostics;\n /**\n * These are the statistics for main point look operation.\n */\n gatewayStatistics: GatewayStatistics[];\n /**\n * This is the cumulated Request Payload Length n bytes, this includes metadata calls along with the main operation.\n */\n totalRequestPayloadLengthInBytes: number;\n /**\n * This is the cumulated Response Payload Length n bytes, this includes metadata calls along with the main operation.\n */\n totalResponsePayloadLengthInBytes: number;\n /**\n * This field captures diagnostic information for encryption/decryption happened during CRUD operation if encryption is enabled.\n */\n encryptionDiagnostics?: EncryptionDiagnostics;\n};\n\nexport function getRootNode(node: DiagnosticNodeInternal): DiagnosticNodeInternal {\n if (node.parent) return getRootNode(node.parent);\n else return node;\n}\n\n/**\n * Represents a tree like structure, for capturing diagnostic information.\n */\nexport interface DiagnosticNode {\n id: string;\n nodeType: string;\n children: DiagnosticNode[];\n data: { [key: string]: any };\n startTimeUTCInMs: number;\n durationInMs: number;\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BO,MAAM,kBAAkB;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAIhB,YACE,6BACA,gBACA,cACA;AACA,SAAK,8BAA8B;AACnC,SAAK,iBAAiB;AACtB,SAAK,eAAe;AAAA,EACtB;AACF;AA6IO,IAAK,qBAAL,kBAAKA,wBAAL;AACL,EAAAA,oBAAA,6BAA0B;AAC1B,EAAAA,oBAAA,2BAAwB;AACxB,EAAAA,oBAAA,qBAAkB;AAClB,EAAAA,oBAAA,oBAAiB;AACjB,EAAAA,oBAAA,qBAAkB;AALR,SAAAA;AAAA,GAAA;AAkDL,SAAS,YAAY,MAAsD;AAChF,MAAI,KAAK,OAAQ,QAAO,YAAY,KAAK,MAAM;AAAA,MAC1C,QAAO;AACd;",
|
|
6
6
|
"names": ["MetadataLookUpType"]
|
|
@@ -13,3 +13,4 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
13
13
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
14
|
var GlobalEndpointManagerOptions_exports = {};
|
|
15
15
|
module.exports = __toCommonJS(GlobalEndpointManagerOptions_exports);
|
|
16
|
+
//# sourceMappingURL=GlobalEndpointManagerOptions.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../src/GlobalEndpointManagerOptions.ts"],
|
|
4
4
|
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ResourceType, OperationType } from \"./common/index.js\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal.js\";\n\n/**\n * @internal\n */\nexport interface ResolveServiceEndpointOptions {\n diagnosticNode: DiagnosticNodeInternal;\n resourceType: ResourceType;\n operationType: OperationType;\n /**\n * This is to indicate the starting index for selecting servers.\n */\n startServiceEndpointIndex: number;\n /**\n * Excludes one or more Azure regions for the operation.\n * <p>This option is only applied when enableEndPointDiscovery is set to true.</p>\n */\n excludedLocations?: string[];\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../src/PartitionKeyRangeFailoverInfo.ts"],
|
|
4
4
|
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"./index.js\";\nimport { Constants } from \"./index.js\";\nimport semaphore from \"semaphore\";\n\n/**\n * @hidden\n * This class manages the failover information for partition key ranges in Cosmos DB.\n * It tracks the current endpoint, failed endpoints, and the number of consecutive read/write request failures.\n */\nexport class PartitionKeyRangeFailoverInfo {\n private failedEndPoints: string[] = [];\n private currentEndPoint: string;\n\n private consecutiveReadRequestFailureCount: number = 0;\n private consecutiveWriteRequestFailureCount: number = 0;\n private firstRequestFailureTime: number = Date.now();\n private lastRequestFailureTime: number = Date.now();\n\n private failureCountSemaphore: semaphore.Semaphore;\n private tryMoveNextLocationSemaphore: semaphore.Semaphore;\n\n /**\n * @internal\n */\n constructor(currentEndpoint: string) {\n this.currentEndPoint = currentEndpoint;\n this.failureCountSemaphore = semaphore(1);\n this.tryMoveNextLocationSemaphore = semaphore(1);\n }\n\n /**\n * Checks if the circuit breaker can trigger a partition failover based on the failure counts.\n * Returns true if the number of consecutive failures exceeds the defined thresholds for read or write requests.\n */\n public async canCircuitBreakerTriggerPartitionFailOver(\n isReadOnlyRequest: boolean,\n ): Promise<boolean> {\n const { consecutiveReadRequestFailureCount, consecutiveWriteRequestFailureCount } =\n await this.snapshotConsecutiveRequestFailureCount();\n\n return isReadOnlyRequest\n ? consecutiveReadRequestFailureCount > Constants.ReadRequestFailureCountThreshold\n : consecutiveWriteRequestFailureCount > Constants.WriteRequestFailureCountThreshold;\n }\n\n /**\n * Increments the failure counts for read or write requests and updates the timestamps.\n * If the time since the last failure exceeds the reset window, it resets the failure counts.\n */\n public async incrementRequestFailureCounts(\n isReadOnlyRequest: boolean,\n currentTimeInMilliseconds: number,\n ): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.failureCountSemaphore.take(async () => {\n try {\n const { lastRequestFailureTime } = await this.snapshotPartitionFailoverTimestamps();\n\n if (\n currentTimeInMilliseconds - lastRequestFailureTime >\n Constants.ConsecutiveFailureCountResetIntervalInMS\n ) {\n this.consecutiveReadRequestFailureCount = 0;\n this.consecutiveWriteRequestFailureCount = 0;\n }\n\n if (isReadOnlyRequest) {\n this.consecutiveReadRequestFailureCount++;\n } else {\n this.consecutiveWriteRequestFailureCount++;\n }\n this.lastRequestFailureTime = currentTimeInMilliseconds;\n return resolve();\n } catch (error) {\n reject(error);\n } finally {\n // Release the semaphore lock\n this.failureCountSemaphore.leave();\n }\n });\n });\n }\n\n /**\n * Returns a snapshot of the first and last request failure timestamps.\n * This method is used to retrieve the current state of failure timestamps without modifying them.\n */\n public async snapshotPartitionFailoverTimestamps(): Promise<{\n firstRequestFailureTime: number;\n lastRequestFailureTime: number;\n }> {\n return {\n firstRequestFailureTime: this.firstRequestFailureTime,\n lastRequestFailureTime: this.lastRequestFailureTime,\n };\n }\n\n /**\n * Attempts to move to the next available location for the partition key range.\n * If the current endpoint is the same as the failed endpoint, it tries to find a new endpoint\n * from the provided list of endpoints. If a new endpoint is found, it updates the current endpoint\n * and returns true. If no new endpoint is found, it returns false.\n */\n public async tryMoveNextLocation(\n endPoints: readonly string[],\n failedEndPoint: string,\n diagnosticNode: DiagnosticNodeInternal,\n partitionKeyRangeId: string,\n ): Promise<boolean> {\n if (failedEndPoint !== this.currentEndPoint) {\n return true;\n }\n return new Promise((resolve, reject) => {\n this.tryMoveNextLocationSemaphore.take(() => {\n try {\n for (const endpoint of endPoints) {\n if (this.currentEndPoint === endpoint) {\n continue;\n }\n\n if (this.failedEndPoints.includes(endpoint)) {\n continue;\n }\n\n this.failedEndPoints.push(failedEndPoint);\n this.currentEndPoint = endpoint;\n return resolve(true);\n }\n diagnosticNode.addData({\n partitionKeyRangeFailoverInfo: `PartitionKeyRangeId: ${partitionKeyRangeId}, failedLocations: ${this.failedEndPoints}, newLocation: ${this.currentEndPoint}`,\n });\n return resolve(false);\n } catch (err) {\n reject(err);\n } finally {\n this.tryMoveNextLocationSemaphore.leave();\n }\n });\n });\n }\n\n /** Returns the current endpoint being used for partition key range operations.*/\n public getCurrentEndPoint(): string {\n return this.currentEndPoint;\n }\n\n /**\n * Returns a snapshot of the current consecutive request failure counts for read and write requests.\n * This method is used to retrieve the current state of failure counts without modifying them.\n */\n private async snapshotConsecutiveRequestFailureCount(): Promise<{\n consecutiveReadRequestFailureCount: number;\n consecutiveWriteRequestFailureCount: number;\n }> {\n return {\n consecutiveReadRequestFailureCount: this.consecutiveReadRequestFailureCount,\n consecutiveWriteRequestFailureCount: this.consecutiveWriteRequestFailureCount,\n };\n }\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAA0B;AAC1B,uBAAsB;AAOf,MAAM,8BAA8B;AAAA,EACjC,kBAA4B,CAAC;AAAA,EAC7B;AAAA,EAEA,qCAA6C;AAAA,EAC7C,sCAA8C;AAAA,EAC9C,0BAAkC,KAAK,IAAI;AAAA,EAC3C,yBAAiC,KAAK,IAAI;AAAA,EAE1C;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKR,YAAY,iBAAyB;AACnC,SAAK,kBAAkB;AACvB,SAAK,4BAAwB,iBAAAA,SAAU,CAAC;AACxC,SAAK,mCAA+B,iBAAAA,SAAU,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAa,0CACX,mBACkB;AAClB,UAAM,EAAE,oCAAoC,oCAAoC,IAC9E,MAAM,KAAK,uCAAuC;AAEpD,WAAO,oBACH,qCAAqC,uBAAU,mCAC/C,sCAAsC,uBAAU;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAa,8BACX,mBACA,2BACe;AACf,WAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC5C,WAAK,sBAAsB,KAAK,YAAY;AAC1C,YAAI;AACF,gBAAM,EAAE,uBAAuB,IAAI,MAAM,KAAK,oCAAoC;AAElF,cACE,4BAA4B,yBAC5B,uBAAU,0CACV;AACA,iBAAK,qCAAqC;AAC1C,iBAAK,sCAAsC;AAAA,UAC7C;AAEA,cAAI,mBAAmB;AACrB,iBAAK;AAAA,UACP,OAAO;AACL,iBAAK;AAAA,UACP;AACA,eAAK,yBAAyB;AAC9B,iBAAO,QAAQ;AAAA,QACjB,SAAS,OAAO;AACd,iBAAO,KAAK;AAAA,QACd,UAAE;AAEA,eAAK,sBAAsB,MAAM;AAAA,QACnC;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAa,sCAGV;AACD,WAAO;AAAA,MACL,yBAAyB,KAAK;AAAA,MAC9B,wBAAwB,KAAK;AAAA,IAC/B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,oBACX,WACA,gBACA,gBACA,qBACkB;AAClB,QAAI,mBAAmB,KAAK,iBAAiB;AAC3C,aAAO;AAAA,IACT;AACA,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,WAAK,6BAA6B,KAAK,MAAM;AAC3C,YAAI;AACF,qBAAW,YAAY,WAAW;AAChC,gBAAI,KAAK,oBAAoB,UAAU;AACrC;AAAA,YACF;AAEA,gBAAI,KAAK,gBAAgB,SAAS,QAAQ,GAAG;AAC3C;AAAA,YACF;AAEA,iBAAK,gBAAgB,KAAK,cAAc;AACxC,iBAAK,kBAAkB;AACvB,mBAAO,QAAQ,IAAI;AAAA,UACrB;AACA,yBAAe,QAAQ;AAAA,YACrB,+BAA+B,wBAAwB,mBAAmB,sBAAsB,KAAK,eAAe,kBAAkB,KAAK,eAAe;AAAA,UAC5J,CAAC;AACD,iBAAO,QAAQ,KAAK;AAAA,QACtB,SAAS,KAAK;AACZ,iBAAO,GAAG;AAAA,QACZ,UAAE;AACA,eAAK,6BAA6B,MAAM;AAAA,QAC1C;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA;AAAA,EAGO,qBAA6B;AAClC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,yCAGX;AACD,WAAO;AAAA,MACL,oCAAoC,KAAK;AAAA,MACzC,qCAAqC,KAAK;AAAA,IAC5C;AAAA,EACF;AACF;",
|
|
6
6
|
"names": ["semaphore"]
|
package/dist/commonjs/auth.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../src/auth.ts"],
|
|
4
4
|
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { generateHeaders } from \"./utils/headers.js\";\nimport type { HTTPMethod } from \"./common/index.js\";\nimport {\n Constants,\n getResourceIdFromPath,\n ResourceType,\n trimSlashFromLeftAndRight,\n} from \"./common/index.js\";\nimport type { CosmosClientOptions } from \"./CosmosClientOptions.js\";\nimport type { CosmosHeaders } from \"./queryExecutionContext/index.js\";\n\n/** @hidden */\nexport interface RequestInfo {\n verb: HTTPMethod;\n path: string;\n resourceId: string;\n resourceType: ResourceType;\n headers: CosmosHeaders;\n}\n\nexport type TokenProvider = (requestInfo: RequestInfo) => Promise<string>;\n\n/**\n * @hidden\n */\nexport async function setAuthorizationHeader(\n clientOptions: CosmosClientOptions,\n verb: HTTPMethod,\n path: string,\n resourceId: string,\n resourceType: ResourceType,\n headers: CosmosHeaders,\n): Promise<void> {\n if (clientOptions.permissionFeed) {\n clientOptions.resourceTokens = {};\n for (const permission of clientOptions.permissionFeed) {\n const id = getResourceIdFromPath(permission.resource);\n if (!id) {\n throw new Error(`authorization error: ${id} \\\n is an invalid resourceId in permissionFeed`);\n }\n\n clientOptions.resourceTokens[id] = (permission as any)._token; // TODO: any\n }\n }\n\n if (clientOptions.key) {\n await setAuthorizationTokenHeaderUsingMasterKey(\n verb,\n resourceId,\n resourceType,\n headers,\n clientOptions.key,\n );\n } else if (clientOptions.resourceTokens) {\n headers[Constants.HttpHeaders.Authorization] = encodeURIComponent(\n getAuthorizationTokenUsingResourceTokens(clientOptions.resourceTokens, path, resourceId),\n );\n } else if (clientOptions.tokenProvider) {\n headers[Constants.HttpHeaders.Authorization] = encodeURIComponent(\n await clientOptions.tokenProvider({ verb, path, resourceId, resourceType, headers }),\n );\n }\n}\n\n/**\n * The default function for setting header token using the masterKey\n * @hidden\n */\nexport async function setAuthorizationTokenHeaderUsingMasterKey(\n verb: HTTPMethod,\n resourceId: string,\n resourceType: ResourceType,\n headers: CosmosHeaders,\n masterKey: string,\n): Promise<void> {\n // TODO This should live in cosmos-sign\n if (resourceType === ResourceType.offer) {\n resourceId = resourceId && resourceId.toLowerCase();\n }\n headers = Object.assign(\n headers,\n await generateHeaders(masterKey, verb, resourceType, resourceId),\n );\n}\n\n/**\n * @hidden\n */\n// TODO: Resource tokens\nexport function getAuthorizationTokenUsingResourceTokens(\n resourceTokens: { [resourceId: string]: string },\n path: string,\n resourceId: string,\n): string {\n if (resourceTokens && Object.keys(resourceTokens).length > 0) {\n // For database account access(through getDatabaseAccount API), path and resourceId are \"\",\n // so in this case we return the first token to be used for creating the auth header as the\n // service will accept any token in this case\n if (!path && !resourceId) {\n return resourceTokens[Object.keys(resourceTokens)[0]];\n }\n\n // If we have exact resource token for the path use it\n if (resourceId && resourceTokens[resourceId]) {\n return resourceTokens[resourceId];\n }\n\n // minimum valid path /dbs\n if (!path || path.length < 4) {\n // TODO: This should throw an error\n return null;\n }\n\n path = trimSlashFromLeftAndRight(path);\n const pathSegments = (path && path.split(\"/\")) || [];\n\n // Item path\n if (pathSegments.length === 6) {\n // Look for a container token matching the item path\n const containerPath = pathSegments.slice(0, 4).map(decodeURIComponent).join(\"/\");\n if (resourceTokens[containerPath]) {\n return resourceTokens[containerPath];\n }\n }\n\n // TODO remove in v4: This is legacy behavior that lets someone use a resource token pointing ONLY at an ID\n // It was used when _rid was exposed by the SDK, but now that we are using user provided ids it is not needed\n // However removing it now would be a breaking change\n // if it's an incomplete path like /dbs/db1/colls/, start from the parent resource\n let index = pathSegments.length % 2 === 0 ? pathSegments.length - 1 : pathSegments.length - 2;\n for (; index > 0; index -= 2) {\n const id = decodeURI(pathSegments[index]);\n if (resourceTokens[id]) {\n return resourceTokens[id];\n }\n }\n }\n\n // TODO: This should throw an error\n return null;\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qBAAgC;AAEhC,oBAKO;AAkBP,eAAsB,uBACpB,eACA,MACA,MACA,YACA,cACA,SACe;AACf,MAAI,cAAc,gBAAgB;AAChC,kBAAc,iBAAiB,CAAC;AAChC,eAAW,cAAc,cAAc,gBAAgB;AACrD,YAAM,SAAK,qCAAsB,WAAW,QAAQ;AACpD,UAAI,CAAC,IAAI;AACP,cAAM,IAAI,MAAM,wBAAwB,EAAE,uEACmB;AAAA,MAC/D;AAEA,oBAAc,eAAe,EAAE,IAAK,WAAmB;AAAA,IACzD;AAAA,EACF;AAEA,MAAI,cAAc,KAAK;AACrB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAChB;AAAA,EACF,WAAW,cAAc,gBAAgB;AACvC,YAAQ,wBAAU,YAAY,aAAa,IAAI;AAAA,MAC7C,yCAAyC,cAAc,gBAAgB,MAAM,UAAU;AAAA,IACzF;AAAA,EACF,WAAW,cAAc,eAAe;AACtC,YAAQ,wBAAU,YAAY,aAAa,IAAI;AAAA,MAC7C,MAAM,cAAc,cAAc,EAAE,MAAM,MAAM,YAAY,cAAc,QAAQ,CAAC;AAAA,IACrF;AAAA,EACF;AACF;AAMA,eAAsB,0CACpB,MACA,YACA,cACA,SACA,WACe;AAEf,MAAI,iBAAiB,2BAAa,OAAO;AACvC,iBAAa,cAAc,WAAW,YAAY;AAAA,EACpD;AACA,YAAU,OAAO;AAAA,IACf;AAAA,IACA,UAAM,gCAAgB,WAAW,MAAM,cAAc,UAAU;AAAA,EACjE;AACF;AAMO,SAAS,yCACd,gBACA,MACA,YACQ;AACR,MAAI,kBAAkB,OAAO,KAAK,cAAc,EAAE,SAAS,GAAG;AAI5D,QAAI,CAAC,QAAQ,CAAC,YAAY;AACxB,aAAO,eAAe,OAAO,KAAK,cAAc,EAAE,CAAC,CAAC;AAAA,IACtD;AAGA,QAAI,cAAc,eAAe,UAAU,GAAG;AAC5C,aAAO,eAAe,UAAU;AAAA,IAClC;AAGA,QAAI,CAAC,QAAQ,KAAK,SAAS,GAAG;AAE5B,aAAO;AAAA,IACT;AAEA,eAAO,yCAA0B,IAAI;AACrC,UAAM,eAAgB,QAAQ,KAAK,MAAM,GAAG,KAAM,CAAC;AAGnD,QAAI,aAAa,WAAW,GAAG;AAE7B,YAAM,gBAAgB,aAAa,MAAM,GAAG,CAAC,EAAE,IAAI,kBAAkB,EAAE,KAAK,GAAG;AAC/E,UAAI,eAAe,aAAa,GAAG;AACjC,eAAO,eAAe,aAAa;AAAA,MACrC;AAAA,IACF;AAMA,QAAI,QAAQ,aAAa,SAAS,MAAM,IAAI,aAAa,SAAS,IAAI,aAAa,SAAS;AAC5F,WAAO,QAAQ,GAAG,SAAS,GAAG;AAC5B,YAAM,KAAK,UAAU,aAAa,KAAK,CAAC;AACxC,UAAI,eAAe,EAAE,GAAG;AACtB,eAAO,eAAe,EAAE;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAGA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../src/bulk/Batcher.ts"],
|
|
4
4
|
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"../common/constants.js\";\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport type { CosmosDbDiagnosticLevel } from \"../diagnostics/CosmosDbDiagnosticLevel.js\";\nimport {\n DiagnosticNodeInternal,\n DiagnosticNodeType,\n} from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { EncryptionProcessor } from \"../encryption/EncryptionProcessor.js\";\nimport type { ClientConfigDiagnostic } from \"../index.js\";\nimport { ErrorResponse } from \"../index.js\";\nimport type { ExecuteCallback, RetryCallback, BulkOperationResult } from \"../utils/batch.js\";\nimport { calculateObjectSizeInBytes } from \"../utils/batch.js\";\nimport { getCurrentTimestampInMs } from \"../utils/time.js\";\nimport type { PartitionMetric } from \"./PartitionMetric.js\";\nimport type { ItemOperation } from \"./index.js\";\nimport type { LimiterQueue } from \"./Limiter.js\";\n\n/**\n * Maintains a batch of operations and dispatches it as a unit of work.\n * Execution of the request is done by the @see {@link ExecuteCallback} and retry is done by the @see {@link RetryCallback}.\n * @hidden\n */\n\nexport class Batcher {\n private batchOperationsList: ItemOperation[];\n private currentSize: number;\n private toBeDispatched: boolean;\n private readonly executor: ExecuteCallback;\n private readonly retrier: RetryCallback;\n private readonly diagnosticLevel: CosmosDbDiagnosticLevel;\n private readonly encryptionEnabled: boolean;\n private readonly encryptionProcessor: EncryptionProcessor;\n private readonly clientConfigDiagnostics: ClientConfigDiagnostic;\n private readonly limiter: LimiterQueue;\n private processedOperationCountRef: { count: number };\n\n constructor(\n limiter: LimiterQueue,\n executor: ExecuteCallback,\n retrier: RetryCallback,\n diagnosticLevel: CosmosDbDiagnosticLevel,\n encryptionEnabled: boolean,\n clientConfig: ClientConfigDiagnostic,\n encryptionProcessor: EncryptionProcessor,\n processedOperationCountRef: { count: number },\n ) {\n this.limiter = limiter;\n this.batchOperationsList = [];\n this.executor = executor;\n this.retrier = retrier;\n this.diagnosticLevel = diagnosticLevel;\n this.encryptionEnabled = encryptionEnabled;\n this.encryptionProcessor = encryptionProcessor;\n this.clientConfigDiagnostics = clientConfig;\n this.currentSize = 0;\n this.toBeDispatched = false;\n this.processedOperationCountRef = processedOperationCountRef;\n }\n\n /**\n * Attempts to add an operation to the current batch.\n * Returns false if the batch is full or already dispatched.\n */\n public tryAdd(operation: ItemOperation): boolean {\n if (this.toBeDispatched) {\n return false;\n }\n if (!operation) {\n throw new ErrorResponse(\"Operation is not defined\");\n }\n if (!operation.operationContext) {\n throw new ErrorResponse(\"Operation context is not defined\");\n }\n if (this.batchOperationsList.length === Constants.MaxBulkOperationsCount) {\n return false;\n }\n const currentOperationSize = calculateObjectSizeInBytes(operation.operationInput);\n if (\n this.batchOperationsList.length > 0 &&\n this.currentSize + currentOperationSize > Constants.DefaultMaxBulkRequestBodySizeInBytes\n ) {\n return false;\n }\n\n this.currentSize += currentOperationSize;\n this.batchOperationsList.push(operation);\n return true;\n }\n\n public isEmpty(): boolean {\n return this.batchOperationsList.length === 0;\n }\n\n /**\n * Dispatches the current batch of operations.\n * Handles retries for failed operations and updates the ordered response.\n */\n public async dispatch(partitionMetric: PartitionMetric): Promise<void> {\n this.toBeDispatched = true;\n const startTime = getCurrentTimestampInMs();\n const diagnosticNode = new DiagnosticNodeInternal(\n this.diagnosticLevel,\n DiagnosticNodeType.BATCH_REQUEST,\n null,\n );\n try {\n const response = await this.executor(this.batchOperationsList, diagnosticNode);\n\n const hasThrottles = 1;\n const noThrottle = 0;\n const numThrottle = response?.results?.some(\n (result) => \"code\" in result && result.code === StatusCodes.TooManyRequests,\n )\n ? hasThrottles\n : noThrottle;\n const splitOrMerge = response?.results?.some(\n (result) => \"code\" in result && result.code === StatusCodes.Gone,\n )\n ? true\n : false;\n if (splitOrMerge) {\n await this.limiter.pauseAndClear(StatusCodes.Gone, diagnosticNode);\n }\n partitionMetric.add(\n this.batchOperationsList.length,\n getCurrentTimestampInMs() - startTime,\n numThrottle,\n );\n for (let i = 0; i < response.operations.length; i++) {\n const operation = response.operations[i];\n const bulkOperationResult = response.results[i];\n if (bulkOperationResult instanceof ErrorResponse) {\n const shouldRetry = await operation.operationContext.retryPolicy.shouldRetry(\n bulkOperationResult,\n operation.operationContext.diagnosticNode,\n );\n if (shouldRetry) {\n await this.retrier(operation, operation.operationContext.diagnosticNode);\n continue;\n }\n }\n try {\n if (this.encryptionEnabled && bulkOperationResult.resourceBody) {\n operation.operationContext.diagnosticNode.beginEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n );\n const { body: decryptedBody, propertiesDecryptedCount } =\n await this.encryptionProcessor.decrypt(bulkOperationResult.resourceBody);\n bulkOperationResult.resourceBody = decryptedBody;\n operation.operationContext.diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n propertiesDecryptedCount,\n );\n }\n } catch (error) {\n // if decryption fails after successful write operation, fail the operation with internal server error\n if (operation.operationInput.operationType !== \"Read\") {\n const decryptionError = new ErrorResponse(\n `Item ${operation.operationInput.operationType} operation was successful but response decryption failed: + ${error.message}`,\n );\n decryptionError.code = StatusCodes.ServiceUnavailable;\n throw decryptionError;\n }\n }\n operation.operationContext.addDiagnosticChild(diagnosticNode);\n bulkOperationResult.diagnostics = operation.operationContext.diagnosticNode.toDiagnostic(\n this.clientConfigDiagnostics,\n );\n const bulkItemResponse: BulkOperationResult = {\n operationInput: operation.unencryptedOperationInput,\n };\n if (bulkOperationResult instanceof ErrorResponse) {\n bulkItemResponse.error = bulkOperationResult;\n } else {\n bulkItemResponse.response = bulkOperationResult;\n }\n operation.operationContext.complete(bulkItemResponse);\n this.processedOperationCountRef.count++;\n }\n } catch (error) {\n // Mark all operations in the batch as failed\n for (const operation of this.batchOperationsList) {\n const response: BulkOperationResult = {\n operationInput: operation.operationInput,\n error: Object.assign(new ErrorResponse(error.message), {\n code: StatusCodes.InternalServerError,\n diagnostics: operation.operationContext.diagnosticNode.toDiagnostic(\n this.clientConfigDiagnostics,\n ),\n }),\n };\n operation.operationContext.fail(response);\n this.processedOperationCountRef.count++;\n }\n } finally {\n // Clean up batch state\n this.batchOperationsList = [];\n }\n }\n\n public getOperations(): ItemOperation[] {\n return this.batchOperationsList;\n }\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../src/bulk/BulkHelper.ts"],
|
|
4
4
|
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { RequestOptions } from \"../request/RequestOptions.js\";\nimport { readPartitionKeyDefinition } from \"../client/ClientUtils.js\";\nimport type { Container } from \"../client/index.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport { Constants, ResourceType } from \"../common/constants.js\";\nimport { sleep, copyObject, getPathFromLink } from \"../common/helper.js\";\nimport { StatusCodes } from \"../common/statusCodes.js\";\nimport {\n DiagnosticNodeInternal,\n DiagnosticNodeType,\n} from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { PartitionKeyDefinition } from \"../documents/PartitionKeyDefinition.js\";\nimport { convertToInternalPartitionKey } from \"../documents/PartitionKeyInternal.js\";\nimport { ErrorResponse } from \"../index.js\";\nimport { BulkExecutionRetryPolicy } from \"../retry/bulkExecutionRetryPolicy.js\";\nimport { ResourceThrottleRetryPolicy } from \"../retry/resourceThrottleRetryPolicy.js\";\nimport type { RetryPolicy } from \"../retry/RetryPolicy.js\";\nimport type { PartitionKeyRangeCache } from \"../routing/partitionKeyRangeCache.js\";\nimport type { BulkOperationResult, OperationInput, Operation } from \"../utils/batch.js\";\nimport { encryptOperationInput, isKeyInRange } from \"../utils/batch.js\";\nimport { addDiagnosticChild } from \"../utils/diagnostics.js\";\nimport { hashPartitionKey } from \"../utils/hashing/hash.js\";\nimport { HelperPerPartition } from \"./HelperPerPartition.js\";\nimport type { ItemOperation } from \"./index.js\";\nimport { ItemOperationContext, BulkResponse } from \"./index.js\";\n\n/**\n * BulkHelper for bulk operations in a container.\n * It maintains one @see {@link HelperPerPartition} for each Partition Key Range, which allows independent execution of requests. Queue based limiters @see {@link LimiterQueue}\n * rate limit requestsbat the helper / Partition Key Range level, this means that we can send parallel and independent requests to different Partition Key Ranges, but for the same Range, requests\n * will be limited. Two callback implementations define how a particular request should be executed, and how operations should be retried. When the helper dispatches a batch\n * the batch will create a request and call the execute callback (executeRequest), if conditions are met, it might call the retry callback (reBatchOperation).\n * @hidden\n */\n\nexport class BulkHelper {\n private readonly container: Container;\n private readonly clientContext: ClientContext;\n private readonly partitionKeyRangeCache: PartitionKeyRangeCache;\n private readonly helpersByPartitionKeyRangeId: Map<string, HelperPerPartition>;\n private options: RequestOptions;\n private partitionKeyDefinition: PartitionKeyDefinition;\n private partitionKeyDefinitionPromise: Promise<PartitionKeyDefinition>;\n private isCancelled: boolean;\n private processedOperationCountRef: { count: number } = { count: 0 };\n private operationPromisesList: Promise<BulkOperationResult>[] = [];\n private congestionControlTimer: NodeJS.Timeout;\n private readonly congestionControlDelayInMs: number = 1000;\n private staleRidError: ErrorResponse | undefined;\n private readonly operationsPerSleep: number = 100; // Number of operations to add per sleep\n private readonly intervalForPartialBatchInMs: number = 1000; // Sleep interval before adding partial batch to dispatch queue\n\n /**\n * @internal\n */\n constructor(\n container: Container,\n clientContext: ClientContext,\n partitionKeyRangeCache: PartitionKeyRangeCache,\n options: RequestOptions,\n ) {\n this.container = container;\n this.clientContext = clientContext;\n this.partitionKeyRangeCache = partitionKeyRangeCache;\n this.helpersByPartitionKeyRangeId = new Map();\n this.options = options;\n this.executeRequest = this.executeRequest.bind(this);\n this.reBatchOperation = this.reBatchOperation.bind(this);\n this.refreshPartitionKeyRangeCache = this.refreshPartitionKeyRangeCache.bind(this);\n this.isCancelled = false;\n this.runCongestionControlTimer();\n }\n\n /**\n * adds operation(s) to the helper\n * @param operationInput - bulk operation or list of bulk operations\n */\n async execute(operationInput: OperationInput[]): Promise<BulkOperationResult[]> {\n const addOperationPromises: Promise<void>[] = [];\n const minimalPause = 0; // minimal pause (0 ms) inserted periodically during processing.\n try {\n for (let i = 0; i < operationInput.length; i++) {\n // After every 100 operations,sleep of 0 ms is added to allow the event loop to process any pending\n // callbacks/tasks such as fetching partition key definition and dispatching batches from queue. This helps\n // to prevent blocking and improves overall responsiveness.\n if (i % this.operationsPerSleep === 0) {\n await sleep(minimalPause);\n }\n addOperationPromises.push(this.addOperation(operationInput[i], i));\n }\n await Promise.allSettled(addOperationPromises);\n\n // After processing all operations via addOperation, it's possible that the current batch in each helper is not completely full.\n // In such cases, addPartialBatchToQueue is called to ensure that all the operations are added to the dispatch queue.\n // while loop below waits until the count of processed operations equals the number of input operations. This is necessary because\n // some operations might fail and then again get added to current batch for retry.\n while (this.processedOperationCountRef.count < operationInput.length) {\n this.helpersByPartitionKeyRangeId.forEach((helper) => {\n helper.addPartialBatchToQueue();\n });\n // Pause for 1000 ms to give pending operations chance to accumulate into a batch to avoid sending multiple small batches.\n await sleep(this.intervalForPartialBatchInMs);\n }\n } finally {\n if (this.congestionControlTimer) {\n clearInterval(this.congestionControlTimer);\n }\n }\n const settledResults = await Promise.allSettled(this.operationPromisesList);\n if (this.isCancelled && this.staleRidError) {\n throw this.staleRidError;\n }\n\n const bulkOperationResults = settledResults.map((result) =>\n result.status === \"fulfilled\" ? result.value : result.reason,\n );\n\n // Formatting result: if an error is present, removing the stack trace details.\n const formattedResults = bulkOperationResults.map((result) => {\n if (result && result.error) {\n const { stack, ...otherProps } = result.error;\n const trimmedError = { message: result.error.message, ...otherProps };\n return {\n ...result,\n error: trimmedError,\n };\n }\n return result;\n });\n return formattedResults;\n }\n\n private async addOperation(operation: OperationInput, idx: number): Promise<void> {\n if (this.isCancelled) {\n return;\n }\n if (!operation) {\n this.operationPromisesList[idx] = Promise.resolve({\n operationInput: operation,\n error: Object.assign(new ErrorResponse(\"Operation cannot be null or undefined.\"), {\n code: StatusCodes.InternalServerError,\n }),\n });\n return;\n }\n\n // Checks for id and partition key in input body\n if (\n operation.operationType === \"Create\" ||\n operation.operationType === \"Upsert\" ||\n operation.operationType === \"Replace\"\n ) {\n if (!operation.resourceBody.id) {\n this.operationPromisesList[idx] = Promise.resolve({\n operationInput: operation,\n error: Object.assign(\n new ErrorResponse(\n `Operation resource body must have an 'id' for ${operation.operationType} operations.`,\n ),\n { code: StatusCodes.InternalServerError },\n ),\n });\n this.processedOperationCountRef.count++;\n return;\n }\n }\n if (operation.partitionKey === undefined) {\n this.operationPromisesList[idx] = Promise.resolve({\n operationInput: operation,\n error: Object.assign(\n new ErrorResponse(`PartitionKey is required for ${operation.operationType} operations.`),\n { code: StatusCodes.InternalServerError },\n ),\n });\n this.processedOperationCountRef.count++;\n return;\n }\n\n let operationError: Error | undefined;\n let diagnosticNode: DiagnosticNodeInternal;\n let unencryptedOperation: OperationInput;\n let partitionKeyRangeId: string;\n try {\n diagnosticNode = new DiagnosticNodeInternal(\n this.clientContext.diagnosticLevel,\n DiagnosticNodeType.CLIENT_REQUEST_NODE,\n null,\n );\n // Ensure partition key definition is available.\n if (!this.partitionKeyDefinition) {\n if (!this.partitionKeyDefinitionPromise) {\n this.partitionKeyDefinitionPromise = (async () => {\n try {\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n this.partitionKeyDefinition = partitionKeyDefinition;\n return partitionKeyDefinition;\n } finally {\n this.partitionKeyDefinitionPromise = null;\n }\n })();\n }\n await this.partitionKeyDefinitionPromise;\n }\n unencryptedOperation = copyObject(operation);\n // If encryption is enabled, encrypt the operation input.\n if (this.clientContext.enableEncryption) {\n operation = copyObject(operation);\n await this.container.checkAndInitializeEncryption();\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsEncryptOperation);\n const { operation: encryptedOp, totalPropertiesEncryptedCount } =\n await encryptOperationInput(this.container.encryptionProcessor, operation, 0);\n operation = encryptedOp;\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsEncryptOperation,\n totalPropertiesEncryptedCount,\n );\n }\n // Resolve the partition key range id.\n partitionKeyRangeId = await this.resolvePartitionKeyRangeId(operation, diagnosticNode);\n } catch (error) {\n operationError = error;\n }\n\n // Get helper & context.\n const helperForPartition = this.getHelperForPKRange(partitionKeyRangeId);\n const retryPolicy = this.getRetryPolicy();\n const context = new ItemOperationContext(partitionKeyRangeId, retryPolicy, diagnosticNode);\n const itemOperation: ItemOperation = {\n unencryptedOperationInput: unencryptedOperation,\n operationInput: operation,\n operationContext: context,\n };\n\n // Assign the promise (ensuring position matches input order)\n this.operationPromisesList[idx] = context.operationPromise;\n\n if (operationError) {\n const response: BulkOperationResult = {\n operationInput: unencryptedOperation,\n error: Object.assign(new ErrorResponse(operationError.message), {\n code: StatusCodes.InternalServerError,\n diagnostics: diagnosticNode?.toDiagnostic(this.clientContext.getClientConfig()),\n }),\n };\n context.fail(response);\n this.processedOperationCountRef.count++;\n return;\n }\n // Add the operation to the helper.\n return helperForPartition.add(itemOperation);\n }\n\n private async resolvePartitionKeyRangeId(\n operation: OperationInput,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<string> {\n const partitionKeyRanges = (\n await this.partitionKeyRangeCache.onCollectionRoutingMap(this.container.url, diagnosticNode)\n ).getOrderedParitionKeyRanges();\n\n const partitionKey = convertToInternalPartitionKey(operation.partitionKey);\n\n const hashedKey = hashPartitionKey(partitionKey, this.partitionKeyDefinition);\n\n const matchingRange = partitionKeyRanges.find((range) =>\n isKeyInRange(range.minInclusive, range.maxExclusive, hashedKey),\n );\n\n if (!matchingRange) {\n throw new Error(\"No matching partition key range found for the operation.\");\n }\n return matchingRange.id;\n }\n\n private getRetryPolicy(): RetryPolicy {\n const nextRetryPolicy = new ResourceThrottleRetryPolicy(this.clientContext.getRetryOptions());\n return new BulkExecutionRetryPolicy(nextRetryPolicy);\n }\n\n private async executeRequest(\n operations: ItemOperation[],\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<BulkResponse> {\n if (this.isCancelled) {\n throw new ErrorResponse(\"Bulk execution cancelled due to a previous error.\");\n }\n if (!operations.length) return;\n const pkRangeId = operations[0].operationContext.pkRangeId;\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const requestBody: Operation[] = [];\n for (const itemOperation of operations) {\n requestBody.push(this.prepareOperation(itemOperation.operationInput));\n }\n if (!this.options.containerRid) {\n this.options.containerRid = this.container._rid;\n }\n try {\n const response = await addDiagnosticChild(\n async (childNode: DiagnosticNodeInternal) =>\n this.clientContext.bulk({\n body: requestBody,\n partitionKeyRangeId: pkRangeId,\n path: path,\n resourceId: this.container.url,\n options: this.options,\n diagnosticNode: childNode,\n }),\n diagnosticNode,\n DiagnosticNodeType.BATCH_REQUEST,\n );\n if (!response) {\n throw new ErrorResponse(\"Failed to fetch bulk response.\");\n }\n return BulkResponse.fromResponseMessage(response, operations);\n } catch (error) {\n if (this.clientContext.enableEncryption) {\n try {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n } catch (err) {\n await this.cancelExecution(err);\n return BulkResponse.createEmptyResponse(operations, 0, 0, {});\n }\n }\n return BulkResponse.fromResponseMessage(error, operations);\n }\n }\n\n private prepareOperation(operationInput: OperationInput): Operation {\n operationInput.partitionKey = convertToInternalPartitionKey(operationInput.partitionKey);\n return {\n ...operationInput,\n partitionKey: JSON.stringify(operationInput.partitionKey),\n } as Operation;\n }\n\n private async reBatchOperation(\n operation: ItemOperation,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<void> {\n const partitionKeyRangeId = await this.resolvePartitionKeyRangeId(\n operation.operationInput,\n diagnosticNode,\n );\n operation.operationContext.updatePKRangeId(partitionKeyRangeId);\n const helper = this.getHelperForPKRange(partitionKeyRangeId);\n await helper.add(operation);\n }\n\n private async cancelExecution(error: ErrorResponse): Promise<void> {\n this.isCancelled = true;\n this.staleRidError = error;\n for (const helper of this.helpersByPartitionKeyRangeId.values()) {\n await helper.dispose();\n }\n this.helpersByPartitionKeyRangeId.clear();\n }\n\n private getHelperForPKRange(pkRangeId: string): HelperPerPartition {\n if (this.helpersByPartitionKeyRangeId.has(pkRangeId)) {\n return this.helpersByPartitionKeyRangeId.get(pkRangeId);\n }\n\n const newHelper = new HelperPerPartition(\n this.executeRequest,\n this.reBatchOperation,\n this.refreshPartitionKeyRangeCache,\n this.clientContext.diagnosticLevel,\n this.clientContext.enableEncryption,\n this.clientContext.getClientConfig(),\n this.container.encryptionProcessor,\n this.processedOperationCountRef,\n );\n this.helpersByPartitionKeyRangeId.set(pkRangeId, newHelper);\n return newHelper;\n }\n\n private runCongestionControlTimer(): void {\n this.congestionControlTimer = setInterval(() => {\n this.helpersByPartitionKeyRangeId.forEach((helper) => {\n helper.runCongestionAlgorithm();\n });\n }, this.congestionControlDelayInMs);\n }\n\n private async refreshPartitionKeyRangeCache(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<void> {\n await this.partitionKeyRangeCache.onCollectionRoutingMap(\n this.container.url,\n diagnosticNode,\n true,\n );\n }\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../src/bulk/BulkResponse.ts"],
|
|
4
4
|
"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"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,uBAA0B;AAC1B,yBAA4C;AAE5C,eAA8B;AAI9B,mBAAoC;AAQ7B,MAAM,aAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAyD,CAAC;AAAA,EAC1D;AAAA,EAEA,YACE,YACA,eACA,SACA,YACA;AACA,SAAK,aAAa;AAClB,SAAK,gBAAgB;AACrB,SAAK,UAAU;AACf,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,oBACL,YACA,YACA,eACA,SACc;AACd,UAAM,eAAe,IAAI,aAAa,YAAY,eAAe,SAAS,UAAU;AACpF,iBAAa,yBAAyB,YAAY,GAAG,IAAI,uBAAc,CAAC;AACxE,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,oBACL,iBACA,YACc;AAEd,QAAI,eAAe,KAAK,qBAAqB,iBAAiB,UAAU;AAExE,QAAI,CAAC,aAAa,WAAW,aAAa,QAAQ,WAAW,WAAW,QAAQ;AAG9E,cAAI,kCAAoB,gBAAgB,IAAI,GAAG;AAC7C,uBAAe,IAAI;AAAA,UACjB,+BAAY;AAAA,UACZ,kCAAe;AAAA,UACf,gBAAgB;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAGA,UAAI,yBAAyB;AAE7B,UAAI,gBAAgB,SAAS,+BAAY,iBAAiB;AACxD,cAAM,aAAa,gBAAgB,UAAU,2BAAU,YAAY,cAAc;AACjF,iCAAyB,CAAC,cAAc,MAAM,OAAO,UAAU,CAAC,IAAI,IAAI,OAAO,UAAU;AAAA,MAC3F;AAEA,mBAAa;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAe,qBACb,iBACA,YACc;AACd,UAAM,UAAyD,CAAC;AAEhE,QAAI,gBAAgB,QAAQ;AAC1B,eAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,cAAM,eAAe,gBAAgB,OAAO,CAAC;AAE7C,gBAAI,kCAAoB,cAAc,UAAU,GAAG;AACjD,gBAAM,SAAoC;AAAA,YACxC,YAAY,cAAc;AAAA,YAC1B,MAAM,cAAc;AAAA,YACpB,YAAY,gBAAgB,UAAU,2BAAU,YAAY,UAAU;AAAA,YACtE,cAAc,gBAAgB,UAAU,2BAAU,YAAY,YAAY;AAAA,YAC1E,eAAe,cAAc;AAAA,YAC7B,cAAc,cAAc;AAAA;AAAA,YAE5B,aAAa;AAAA,YACb,SAAS,gBAAgB;AAAA,UAC3B;AACA,kBAAQ,KAAK,MAAM;AAAA,QACrB,OAAO;AACL,gBAAM,QAAuB,IAAI,uBAAc;AAC/C,gBAAM,OAAO,cAAc;AAC3B,gBAAM,YAAY,cAAc;AAChC,gBAAM,UAAU,cAAc;AAC9B,gBAAM,gBAAgB,cAAc;AACpC,gBAAM,OAAO,cAAc;AAC3B,gBAAM,UAAU,gBAAgB;AAChC,gBAAM,aAAa,gBAAgB,UAAU,2BAAU,YAAY,UAAU;AAC7E,gBAAM,iBAAiB,cAAc;AACrC,gBAAM,cAAc,gBAAgB;AACpC,kBAAQ,KAAK,KAAK;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AACA,QAAI,aAAa,gBAAgB;AACjC,QAAI,gBAAgB,gBAAgB;AAEpC,QAAI,gBAAgB,SAAS,+BAAY,aAAa;AACpD,iBAAW,UAAU,SAAS;AAC5B,YACE,kBAAkB,0BAClB,OAAO,eAAe,+BAAY,oBAClC,OAAO,cAAc,+BAAY,YACjC;AACA,uBAAa,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO,OAAO,OAAO,IAAI;AAC/E,0BAAgB,OAAO;AACvB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,eAAe,IAAI;AAAA,MACvB;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB;AAAA,IACF;AACA,iBAAa,UAAU;AACvB,WAAO;AAAA,EACT;AAAA,EAEQ,yBACN,YACA,gBACA,OACM;AACN,SAAK,UAAU,WAAW,IAAI,MAAM;AAClC,YAAM,gBAAgB,IAAI,uBAAc;AACxC,oBAAc,UAAU,MAAM;AAC9B,oBAAc,OAAO,KAAK;AAC1B,oBAAc,YAAY,KAAK;AAC/B,oBAAc,iBAAiB;AAC/B,oBAAc,aAAa,KAAK,UAAU,2BAAU,YAAY,UAAU;AAC1E,oBAAc,OAAO,MAAM;AAC3B,oBAAc,cAAc,MAAM;AAClC,oBAAc,UAAU,KAAK;AAC7B,oBAAc,gBAAgB,MAAM;AACpC,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../src/bulk/CongestionAlgorithm.ts"],
|
|
4
4
|
"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"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,uBAA0B;AAgBnB,MAAM,oBAAoB;AAAA;AAAA,EAEvB;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA,yBAAiC;AAAA,EACjC,2BAAmC;AAAA,EACnC,2BAAmC;AAAA,EACnC;AAAA,EAER,YACE,cACA,iBACA,oBACA;AACA,SAAK,eAAe;AACpB,SAAK,qBAAqB;AAC1B,SAAK,kBAAkB;AACvB,SAAK,6BAA6B;AAAA,EACpC;AAAA,EAEA,MAAY;AACV,UAAM,kBACJ,KAAK,gBAAgB,gBAAgB,KAAK,mBAAmB;AAE/D,QAAI,mBAAmB,KAAK,wBAAwB;AAClD,YAAM,eACJ,KAAK,gBAAgB,oBAAoB,KAAK,mBAAmB;AACnE,YAAM,mBACJ,KAAK,gBAAgB,0BACrB,KAAK,mBAAmB;AAE1B,WAAK,mBAAmB,IAAI,kBAAkB,iBAAiB,YAAY;AAE3E,UAAI,eAAe,GAAG;AACpB,aAAK,oBAAoB;AAAA,MAC3B;AAEA,UAAI,mBAAmB,KAAK,iBAAiB,GAAG;AAC9C,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,sBAA4B;AAElC,UAAM,gBAAgB,KAAK;AAAA,MACzB,KAAK;AAAA,MACL,KAAK,MAAM,KAAK,6BAA6B,CAAC;AAAA,IAChD;AACA,SAAK,8BAA8B;AACnC,SAAK,aAAa,eAAe,KAAK,0BAA0B;AAEhE,SAAK,0BAA0B;AAAA,EACjC;AAAA,EAEQ,sBAA4B;AAClC,QACE,KAAK,6BAA6B,KAAK,4BACvC,2BAAU,4BACV;AACA,WAAK,8BAA8B,KAAK;AACxC,WAAK,aAAa,eAAe,KAAK,0BAA0B;AAAA,IAClE;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../src/bulk/HelperPerPartition.ts"],
|
|
4
4
|
"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"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["semaphore"]
|