@azure/cosmos 4.5.0 → 4.6.0
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/README.md +32 -0
- package/dist/browser/ChangeFeedIterator.js +17 -11
- package/dist/browser/ChangeFeedIterator.js.map +1 -1
- package/dist/browser/ChangeFeedResponse.js +8 -0
- package/dist/browser/ChangeFeedResponse.js.map +1 -1
- package/dist/browser/ClientContext.d.ts.map +1 -1
- package/dist/browser/ClientContext.js +232 -48
- package/dist/browser/ClientContext.js.map +1 -1
- package/dist/browser/CosmosClient.d.ts +13 -0
- package/dist/browser/CosmosClient.d.ts.map +1 -1
- package/dist/browser/CosmosClient.js +53 -6
- package/dist/browser/CosmosClient.js.map +1 -1
- package/dist/browser/CosmosClientOptions.d.ts.map +1 -1
- package/dist/browser/CosmosClientOptions.js.map +1 -1
- package/dist/browser/CosmosDiagnostics.d.ts +4 -0
- package/dist/browser/CosmosDiagnostics.d.ts.map +1 -1
- package/dist/browser/CosmosDiagnostics.js +3 -0
- package/dist/browser/CosmosDiagnostics.js.map +1 -1
- package/dist/browser/GlobalEndpointManagerOptions.d.ts +2 -0
- package/dist/browser/GlobalEndpointManagerOptions.d.ts.map +1 -0
- package/dist/browser/GlobalEndpointManagerOptions.js +2 -0
- package/dist/browser/GlobalEndpointManagerOptions.js.map +1 -0
- package/dist/browser/PartitionKeyRangeFailoverInfo.js +8 -5
- package/dist/browser/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/browser/bulk/Batcher.js +13 -3
- package/dist/browser/bulk/Batcher.js.map +1 -1
- package/dist/browser/bulk/BulkHelper.js +26 -11
- package/dist/browser/bulk/BulkHelper.js.map +1 -1
- package/dist/browser/bulk/BulkResponse.js +22 -20
- package/dist/browser/bulk/BulkResponse.js.map +1 -1
- package/dist/browser/bulk/CongestionAlgorithm.js +11 -4
- package/dist/browser/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/browser/bulk/HelperPerPartition.js +14 -1
- package/dist/browser/bulk/HelperPerPartition.js.map +1 -1
- package/dist/browser/bulk/ItemOperationContext.js +4 -0
- package/dist/browser/bulk/ItemOperationContext.js.map +1 -1
- package/dist/browser/bulk/Limiter.js +27 -18
- package/dist/browser/bulk/Limiter.js.map +1 -1
- package/dist/browser/bulk/PartitionMetric.js +4 -0
- package/dist/browser/bulk/PartitionMetric.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.d.ts.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js +29 -15
- package/dist/browser/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.d.ts.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js +19 -8
- package/dist/browser/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts +5 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorOptions.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedRange.js +20 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
- package/dist/browser/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/browser/client/ChangeFeed/CompositeContinuationToken.js +8 -0
- package/dist/browser/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/browser/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
- package/dist/browser/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/browser/client/ChangeFeed/FeedRange.js +8 -0
- package/dist/browser/client/ChangeFeed/FeedRange.js.map +1 -1
- package/dist/browser/client/ChangeFeed/FeedRangeQueue.js +1 -0
- package/dist/browser/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
- package/dist/browser/client/ChangeFeed/InternalChangeFeedOptions.d.ts +1 -0
- package/dist/browser/client/ChangeFeed/InternalChangeFeedOptions.d.ts.map +1 -1
- package/dist/browser/client/ChangeFeed/InternalChangeFeedOptions.js.map +1 -1
- package/dist/browser/client/ChangeFeed/changeFeedUtils.d.ts.map +1 -1
- package/dist/browser/client/ChangeFeed/changeFeedUtils.js +6 -5
- package/dist/browser/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/browser/client/ClientUtils.js +1 -1
- package/dist/browser/client/ClientUtils.js.map +1 -1
- package/dist/browser/client/Conflict/Conflict.js +4 -0
- package/dist/browser/client/Conflict/Conflict.js.map +1 -1
- package/dist/browser/client/Conflict/ConflictResponse.js +2 -0
- package/dist/browser/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/browser/client/Conflict/Conflicts.js +2 -0
- package/dist/browser/client/Conflict/Conflicts.js.map +1 -1
- package/dist/browser/client/Container/Container.js +18 -3
- package/dist/browser/client/Container/Container.js.map +1 -1
- package/dist/browser/client/Container/ContainerResponse.js +2 -0
- package/dist/browser/client/Container/ContainerResponse.js.map +1 -1
- package/dist/browser/client/Container/Containers.js +4 -2
- package/dist/browser/client/Container/Containers.js.map +1 -1
- package/dist/browser/client/Database/Database.js +33 -0
- package/dist/browser/client/Database/Database.js.map +1 -1
- package/dist/browser/client/Database/DatabaseResponse.js +2 -0
- package/dist/browser/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/browser/client/Database/Databases.js +3 -0
- package/dist/browser/client/Database/Databases.js.map +1 -1
- package/dist/browser/client/Item/Item.js +4 -0
- package/dist/browser/client/Item/Item.js.map +1 -1
- package/dist/browser/client/Item/ItemResponse.js +2 -0
- package/dist/browser/client/Item/ItemResponse.js.map +1 -1
- package/dist/browser/client/Item/Items.d.ts.map +1 -1
- package/dist/browser/client/Item/Items.js +8 -0
- package/dist/browser/client/Item/Items.js.map +1 -1
- package/dist/browser/client/Offer/Offer.js +3 -0
- package/dist/browser/client/Offer/Offer.js.map +1 -1
- package/dist/browser/client/Offer/OfferResponse.js +2 -0
- package/dist/browser/client/Offer/OfferResponse.js.map +1 -1
- package/dist/browser/client/Offer/Offers.js +2 -0
- package/dist/browser/client/Offer/Offers.js.map +1 -1
- package/dist/browser/client/Permission/Permission.js +3 -0
- package/dist/browser/client/Permission/Permission.js.map +1 -1
- package/dist/browser/client/Permission/PermissionResponse.js +2 -0
- package/dist/browser/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/browser/client/Permission/Permissions.js +2 -0
- package/dist/browser/client/Permission/Permissions.js.map +1 -1
- package/dist/browser/client/SasToken/SasTokenProperties.js +17 -0
- package/dist/browser/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/browser/client/Script/Scripts.js +5 -0
- package/dist/browser/client/Script/Scripts.js.map +1 -1
- package/dist/browser/client/StoredProcedure/StoredProcedure.js +3 -0
- package/dist/browser/client/StoredProcedure/StoredProcedure.js.map +1 -1
- package/dist/browser/client/StoredProcedure/StoredProcedureResponse.js +4 -0
- package/dist/browser/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/browser/client/StoredProcedure/StoredProcedures.js +2 -0
- package/dist/browser/client/StoredProcedure/StoredProcedures.js.map +1 -1
- package/dist/browser/client/Trigger/Trigger.js +3 -0
- package/dist/browser/client/Trigger/Trigger.js.map +1 -1
- package/dist/browser/client/Trigger/TriggerResponse.js +2 -0
- package/dist/browser/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/browser/client/Trigger/Triggers.js +2 -0
- package/dist/browser/client/Trigger/Triggers.js.map +1 -1
- package/dist/browser/client/User/User.js +9 -0
- package/dist/browser/client/User/User.js.map +1 -1
- package/dist/browser/client/User/UserResponse.js +2 -0
- package/dist/browser/client/User/UserResponse.js.map +1 -1
- package/dist/browser/client/User/Users.js +2 -0
- package/dist/browser/client/User/Users.js.map +1 -1
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
- package/dist/browser/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
- package/dist/browser/common/constants.d.ts +4 -0
- package/dist/browser/common/constants.d.ts.map +1 -1
- package/dist/browser/common/constants.js +5 -1
- package/dist/browser/common/constants.js.map +1 -1
- package/dist/browser/common/helper.d.ts +6 -0
- package/dist/browser/common/helper.d.ts.map +1 -1
- package/dist/browser/common/helper.js +9 -1
- package/dist/browser/common/helper.js.map +1 -1
- package/dist/browser/common/platform.d.ts +1 -0
- package/dist/browser/common/platform.d.ts.map +1 -1
- package/dist/browser/common/platform.js +1 -3
- package/dist/browser/common/platform.js.map +1 -1
- package/dist/browser/diagnostics/CosmosDiagnosticsContext.js +8 -7
- package/dist/browser/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/browser/diagnostics/DiagnosticNodeInternal.d.ts +1 -0
- package/dist/browser/diagnostics/DiagnosticNodeInternal.d.ts.map +1 -1
- package/dist/browser/diagnostics/DiagnosticNodeInternal.js +26 -7
- package/dist/browser/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/browser/diagnostics/DiagnosticWriter.js +1 -3
- package/dist/browser/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/browser/diagnostics/index.js +2 -2
- package/dist/browser/diagnostics/index.js.map +1 -1
- package/dist/browser/documents/ConnectionPolicy.d.ts +10 -4
- package/dist/browser/documents/ConnectionPolicy.d.ts.map +1 -1
- package/dist/browser/documents/ConnectionPolicy.js +2 -2
- package/dist/browser/documents/ConnectionPolicy.js.map +1 -1
- package/dist/browser/documents/DatabaseAccount.d.ts +4 -0
- package/dist/browser/documents/DatabaseAccount.d.ts.map +1 -1
- package/dist/browser/documents/DatabaseAccount.js +29 -4
- package/dist/browser/documents/DatabaseAccount.js.map +1 -1
- package/dist/browser/documents/PartitionKey.js +1 -3
- package/dist/browser/documents/PartitionKey.js.map +1 -1
- package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
- package/dist/browser/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/browser/encryption/Cache/EncryptionSettingsCache.js +2 -0
- package/dist/browser/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
- package/dist/browser/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
- package/dist/browser/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/browser/encryption/EncryptionItemQueryIterator.js +24 -27
- package/dist/browser/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
- package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
- package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
- package/dist/browser/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
- package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/browser/encryption/EncryptionKeyStoreProvider.js +8 -1
- package/dist/browser/encryption/EncryptionKeyStoreProvider.js.map +1 -1
- package/dist/browser/encryption/EncryptionManager.js +6 -0
- package/dist/browser/encryption/EncryptionManager.js.map +1 -1
- package/dist/browser/encryption/EncryptionProcessor.js +5 -0
- package/dist/browser/encryption/EncryptionProcessor.js.map +1 -1
- package/dist/browser/encryption/EncryptionQueryBuilder.js +2 -0
- package/dist/browser/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/browser/encryption/EncryptionSettingForProperty.js +6 -0
- package/dist/browser/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/browser/encryption/EncryptionSettings.js +6 -3
- package/dist/browser/encryption/EncryptionSettings.js.map +1 -1
- package/dist/browser/encryption/KeyEncryptionKey.js +4 -0
- package/dist/browser/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/browser/encryption/Serializers/StringSerializer.js +1 -1
- package/dist/browser/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/browser/extractPartitionKey.js +2 -2
- package/dist/browser/extractPartitionKey.js.map +1 -1
- package/dist/browser/globalEndpointManager.d.ts +8 -0
- package/dist/browser/globalEndpointManager.d.ts.map +1 -1
- package/dist/browser/globalEndpointManager.js +104 -29
- package/dist/browser/globalEndpointManager.js.map +1 -1
- package/dist/browser/globalPartitionEndpointManager.d.ts +0 -2
- package/dist/browser/globalPartitionEndpointManager.d.ts.map +1 -1
- package/dist/browser/globalPartitionEndpointManager.js +19 -7
- package/dist/browser/globalPartitionEndpointManager.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
- package/dist/browser/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
- package/dist/browser/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
- package/dist/browser/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
- package/dist/browser/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
- package/dist/browser/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
- package/dist/browser/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
- package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
- package/dist/browser/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
- package/dist/browser/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
- package/dist/browser/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/browser/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/browser/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
- package/dist/browser/queryExecutionContext/FetchResult.js +4 -0
- package/dist/browser/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
- package/dist/browser/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/browser/queryExecutionContext/documentProducer.js +34 -21
- package/dist/browser/queryExecutionContext/documentProducer.js.map +1 -1
- package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
- package/dist/browser/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
- package/dist/browser/queryExecutionContext/orderByComparator.js +1 -0
- package/dist/browser/queryExecutionContext/orderByComparator.js.map +1 -1
- package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
- package/dist/browser/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
- package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/browser/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
- package/dist/browser/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
- package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
- package/dist/browser/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
- package/dist/browser/queryIterator.js +41 -33
- package/dist/browser/queryIterator.js.map +1 -1
- package/dist/browser/queryMetrics/clientSideMetrics.js +2 -1
- package/dist/browser/queryMetrics/clientSideMetrics.js.map +1 -1
- package/dist/browser/queryMetrics/queryMetrics.js +14 -1
- package/dist/browser/queryMetrics/queryMetrics.js.map +1 -1
- package/dist/browser/queryMetrics/queryPreparationTime.js +5 -1
- package/dist/browser/queryMetrics/queryPreparationTime.js.map +1 -1
- package/dist/browser/queryMetrics/runtimeExecutionTimes.js +4 -1
- package/dist/browser/queryMetrics/runtimeExecutionTimes.js.map +1 -1
- package/dist/browser/queryMetrics/timeSpan.js +4 -3
- package/dist/browser/queryMetrics/timeSpan.js.map +1 -1
- package/dist/browser/request/ErrorResponse.js +19 -0
- package/dist/browser/request/ErrorResponse.js.map +1 -1
- package/dist/browser/request/FeedResponse.js +4 -0
- package/dist/browser/request/FeedResponse.js.map +1 -1
- package/dist/browser/request/RequestHandler.js +3 -4
- package/dist/browser/request/RequestHandler.js.map +1 -1
- package/dist/browser/request/ResourceResponse.js +5 -0
- package/dist/browser/request/ResourceResponse.js.map +1 -1
- package/dist/browser/request/SharedOptions.d.ts +5 -0
- package/dist/browser/request/SharedOptions.d.ts.map +1 -1
- package/dist/browser/request/SharedOptions.js.map +1 -1
- package/dist/browser/request/TimeoutError.js +1 -1
- package/dist/browser/request/TimeoutError.js.map +1 -1
- package/dist/browser/request/hybridSearchQueryResult.js +5 -0
- package/dist/browser/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/browser/request/request.js +5 -1
- package/dist/browser/request/request.js.map +1 -1
- package/dist/browser/retry/bulkExecutionRetryPolicy.js +5 -2
- package/dist/browser/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/browser/retry/defaultRetryPolicy.d.ts.map +1 -1
- package/dist/browser/retry/defaultRetryPolicy.js +7 -7
- package/dist/browser/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.js +24 -7
- package/dist/browser/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
- package/dist/browser/retry/resourceThrottleRetryPolicy.js +20 -10
- package/dist/browser/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/browser/retry/retryUtility.d.ts.map +1 -1
- package/dist/browser/retry/retryUtility.js +22 -8
- package/dist/browser/retry/retryUtility.js.map +1 -1
- package/dist/browser/retry/sessionRetryPolicy.js +8 -4
- package/dist/browser/retry/sessionRetryPolicy.js.map +1 -1
- package/dist/browser/retry/timeoutFailoverRetryPolicy.d.ts +1 -2
- package/dist/browser/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
- package/dist/browser/retry/timeoutFailoverRetryPolicy.js +17 -7
- package/dist/browser/retry/timeoutFailoverRetryPolicy.js.map +1 -1
- package/dist/browser/routing/QueryRange.js +4 -0
- package/dist/browser/routing/QueryRange.js.map +1 -1
- package/dist/browser/routing/inMemoryCollectionRoutingMap.js +4 -0
- package/dist/browser/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/browser/routing/partitionKeyRangeCache.js +2 -0
- package/dist/browser/routing/partitionKeyRangeCache.js.map +1 -1
- package/dist/browser/routing/smartRoutingMapProvider.js +1 -0
- package/dist/browser/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/browser/session/VectorSessionToken.js +6 -2
- package/dist/browser/session/VectorSessionToken.js.map +1 -1
- package/dist/browser/session/sessionContainer.js +5 -3
- package/dist/browser/session/sessionContainer.js.map +1 -1
- package/dist/browser/utils/batch.js +15 -4
- package/dist/browser/utils/batch.js.map +1 -1
- package/dist/browser/utils/encode.d.ts +1 -1
- package/dist/browser/utils/encode.d.ts.map +1 -1
- package/dist/browser/utils/encode.js.map +1 -1
- package/dist/browser/utils/fixedSizePriorityQueue.js +4 -0
- package/dist/browser/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/browser/utils/hashing/hash.js +1 -1
- package/dist/browser/utils/hashing/hash.js.map +1 -1
- package/dist/browser/utils/nonStreamingOrderByMap.js +2 -0
- package/dist/browser/utils/nonStreamingOrderByMap.js.map +1 -1
- package/dist/commonjs/ChangeFeedIterator.js +17 -11
- package/dist/commonjs/ChangeFeedIterator.js.map +1 -1
- package/dist/commonjs/ChangeFeedResponse.js +8 -0
- package/dist/commonjs/ChangeFeedResponse.js.map +1 -1
- package/dist/commonjs/ClientContext.d.ts.map +1 -1
- package/dist/commonjs/ClientContext.js +232 -48
- package/dist/commonjs/ClientContext.js.map +1 -1
- package/dist/commonjs/CosmosClient.d.ts +13 -0
- package/dist/commonjs/CosmosClient.d.ts.map +1 -1
- package/dist/commonjs/CosmosClient.js +53 -6
- package/dist/commonjs/CosmosClient.js.map +1 -1
- package/dist/commonjs/CosmosClientOptions.d.ts.map +1 -1
- package/dist/commonjs/CosmosClientOptions.js.map +1 -1
- package/dist/commonjs/CosmosDiagnostics.d.ts +4 -0
- package/dist/commonjs/CosmosDiagnostics.d.ts.map +1 -1
- package/dist/commonjs/CosmosDiagnostics.js +3 -0
- package/dist/commonjs/CosmosDiagnostics.js.map +1 -1
- package/dist/commonjs/GlobalEndpointManagerOptions.d.ts +2 -0
- package/dist/commonjs/GlobalEndpointManagerOptions.d.ts.map +1 -0
- package/dist/commonjs/GlobalEndpointManagerOptions.js +3 -0
- package/dist/commonjs/GlobalEndpointManagerOptions.js.map +1 -0
- package/dist/commonjs/PartitionKeyRangeFailoverInfo.js +8 -5
- package/dist/commonjs/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/commonjs/bulk/Batcher.js +13 -3
- package/dist/commonjs/bulk/Batcher.js.map +1 -1
- package/dist/commonjs/bulk/BulkHelper.js +26 -11
- package/dist/commonjs/bulk/BulkHelper.js.map +1 -1
- package/dist/commonjs/bulk/BulkResponse.js +22 -20
- package/dist/commonjs/bulk/BulkResponse.js.map +1 -1
- package/dist/commonjs/bulk/CongestionAlgorithm.js +11 -4
- package/dist/commonjs/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/commonjs/bulk/HelperPerPartition.js +14 -1
- package/dist/commonjs/bulk/HelperPerPartition.js.map +1 -1
- package/dist/commonjs/bulk/ItemOperationContext.js +4 -0
- package/dist/commonjs/bulk/ItemOperationContext.js.map +1 -1
- package/dist/commonjs/bulk/Limiter.js +27 -18
- package/dist/commonjs/bulk/Limiter.js.map +1 -1
- package/dist/commonjs/bulk/PartitionMetric.js +4 -0
- package/dist/commonjs/bulk/PartitionMetric.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.d.ts.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js +29 -15
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.d.ts.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js +19 -8
- package/dist/commonjs/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts +5 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorOptions.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js +20 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
- package/dist/commonjs/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js +8 -0
- package/dist/commonjs/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
- package/dist/commonjs/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/FeedRange.js +8 -0
- package/dist/commonjs/client/ChangeFeed/FeedRange.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js +1 -0
- package/dist/commonjs/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/InternalChangeFeedOptions.d.ts +1 -0
- package/dist/commonjs/client/ChangeFeed/InternalChangeFeedOptions.d.ts.map +1 -1
- package/dist/commonjs/client/ChangeFeed/InternalChangeFeedOptions.js.map +1 -1
- package/dist/commonjs/client/ChangeFeed/changeFeedUtils.d.ts.map +1 -1
- package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js +6 -5
- package/dist/commonjs/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/commonjs/client/ClientUtils.js +1 -1
- package/dist/commonjs/client/ClientUtils.js.map +1 -1
- package/dist/commonjs/client/Conflict/Conflict.js +4 -0
- package/dist/commonjs/client/Conflict/Conflict.js.map +1 -1
- package/dist/commonjs/client/Conflict/ConflictResponse.js +2 -0
- package/dist/commonjs/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/commonjs/client/Conflict/Conflicts.js +2 -0
- package/dist/commonjs/client/Conflict/Conflicts.js.map +1 -1
- package/dist/commonjs/client/Container/Container.js +18 -3
- package/dist/commonjs/client/Container/Container.js.map +1 -1
- package/dist/commonjs/client/Container/ContainerResponse.js +2 -0
- package/dist/commonjs/client/Container/ContainerResponse.js.map +1 -1
- package/dist/commonjs/client/Container/Containers.js +4 -2
- package/dist/commonjs/client/Container/Containers.js.map +1 -1
- package/dist/commonjs/client/Database/Database.js +33 -0
- package/dist/commonjs/client/Database/Database.js.map +1 -1
- package/dist/commonjs/client/Database/DatabaseResponse.js +2 -0
- package/dist/commonjs/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/commonjs/client/Database/Databases.js +3 -0
- package/dist/commonjs/client/Database/Databases.js.map +1 -1
- package/dist/commonjs/client/Item/Item.js +4 -0
- package/dist/commonjs/client/Item/Item.js.map +1 -1
- package/dist/commonjs/client/Item/ItemResponse.js +2 -0
- package/dist/commonjs/client/Item/ItemResponse.js.map +1 -1
- package/dist/commonjs/client/Item/Items.d.ts.map +1 -1
- package/dist/commonjs/client/Item/Items.js +8 -0
- package/dist/commonjs/client/Item/Items.js.map +1 -1
- package/dist/commonjs/client/Offer/Offer.js +3 -0
- package/dist/commonjs/client/Offer/Offer.js.map +1 -1
- package/dist/commonjs/client/Offer/OfferResponse.js +2 -0
- package/dist/commonjs/client/Offer/OfferResponse.js.map +1 -1
- package/dist/commonjs/client/Offer/Offers.js +2 -0
- package/dist/commonjs/client/Offer/Offers.js.map +1 -1
- package/dist/commonjs/client/Permission/Permission.js +3 -0
- package/dist/commonjs/client/Permission/Permission.js.map +1 -1
- package/dist/commonjs/client/Permission/PermissionResponse.js +2 -0
- package/dist/commonjs/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/commonjs/client/Permission/Permissions.js +2 -0
- package/dist/commonjs/client/Permission/Permissions.js.map +1 -1
- package/dist/commonjs/client/SasToken/SasTokenProperties.js +17 -0
- package/dist/commonjs/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/commonjs/client/Script/Scripts.js +5 -0
- package/dist/commonjs/client/Script/Scripts.js.map +1 -1
- package/dist/commonjs/client/StoredProcedure/StoredProcedure.js +3 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedure.js.map +1 -1
- package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js +4 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/commonjs/client/StoredProcedure/StoredProcedures.js +2 -0
- package/dist/commonjs/client/StoredProcedure/StoredProcedures.js.map +1 -1
- package/dist/commonjs/client/Trigger/Trigger.js +3 -0
- package/dist/commonjs/client/Trigger/Trigger.js.map +1 -1
- package/dist/commonjs/client/Trigger/TriggerResponse.js +2 -0
- package/dist/commonjs/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/commonjs/client/Trigger/Triggers.js +2 -0
- package/dist/commonjs/client/Trigger/Triggers.js.map +1 -1
- package/dist/commonjs/client/User/User.js +9 -0
- package/dist/commonjs/client/User/User.js.map +1 -1
- package/dist/commonjs/client/User/UserResponse.js +2 -0
- package/dist/commonjs/client/User/UserResponse.js.map +1 -1
- package/dist/commonjs/client/User/Users.js +2 -0
- package/dist/commonjs/client/User/Users.js.map +1 -1
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
- package/dist/commonjs/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
- package/dist/commonjs/common/constants.d.ts +4 -0
- package/dist/commonjs/common/constants.d.ts.map +1 -1
- package/dist/commonjs/common/constants.js +6 -2
- package/dist/commonjs/common/constants.js.map +1 -1
- package/dist/commonjs/common/helper.d.ts +6 -0
- package/dist/commonjs/common/helper.d.ts.map +1 -1
- package/dist/commonjs/common/helper.js +9 -0
- package/dist/commonjs/common/helper.js.map +1 -1
- package/dist/commonjs/common/platform.d.ts +1 -0
- package/dist/commonjs/common/platform.d.ts.map +1 -1
- package/dist/commonjs/common/platform.js +1 -3
- package/dist/commonjs/common/platform.js.map +1 -1
- package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js +8 -7
- package/dist/commonjs/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/commonjs/diagnostics/DiagnosticNodeInternal.d.ts +1 -0
- package/dist/commonjs/diagnostics/DiagnosticNodeInternal.d.ts.map +1 -1
- package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js +26 -7
- package/dist/commonjs/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/commonjs/diagnostics/DiagnosticWriter.js +1 -3
- package/dist/commonjs/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/commonjs/diagnostics/index.js +2 -2
- package/dist/commonjs/diagnostics/index.js.map +1 -1
- package/dist/commonjs/documents/ConnectionPolicy.d.ts +10 -4
- package/dist/commonjs/documents/ConnectionPolicy.d.ts.map +1 -1
- package/dist/commonjs/documents/ConnectionPolicy.js +2 -2
- package/dist/commonjs/documents/ConnectionPolicy.js.map +1 -1
- package/dist/commonjs/documents/DatabaseAccount.d.ts +4 -0
- package/dist/commonjs/documents/DatabaseAccount.d.ts.map +1 -1
- package/dist/commonjs/documents/DatabaseAccount.js +29 -4
- package/dist/commonjs/documents/DatabaseAccount.js.map +1 -1
- package/dist/commonjs/documents/PartitionKey.js +1 -3
- package/dist/commonjs/documents/PartitionKey.js.map +1 -1
- package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
- package/dist/commonjs/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
- package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
- package/dist/commonjs/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js +2 -0
- package/dist/commonjs/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
- package/dist/commonjs/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
- package/dist/commonjs/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
- package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
- package/dist/commonjs/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionItemQueryIterator.js +24 -27
- package/dist/commonjs/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
- package/dist/commonjs/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
- package/dist/commonjs/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
- package/dist/commonjs/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js +8 -1
- package/dist/commonjs/encryption/EncryptionKeyStoreProvider.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionManager.js +6 -0
- package/dist/commonjs/encryption/EncryptionManager.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionProcessor.js +5 -0
- package/dist/commonjs/encryption/EncryptionProcessor.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionQueryBuilder.js +2 -0
- package/dist/commonjs/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionSettingForProperty.js +6 -0
- package/dist/commonjs/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/commonjs/encryption/EncryptionSettings.js +6 -3
- package/dist/commonjs/encryption/EncryptionSettings.js.map +1 -1
- package/dist/commonjs/encryption/KeyEncryptionKey.js +4 -0
- package/dist/commonjs/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/commonjs/encryption/Serializers/StringSerializer.js +1 -1
- package/dist/commonjs/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/commonjs/extractPartitionKey.js +2 -2
- package/dist/commonjs/extractPartitionKey.js.map +1 -1
- package/dist/commonjs/globalEndpointManager.d.ts +8 -0
- package/dist/commonjs/globalEndpointManager.d.ts.map +1 -1
- package/dist/commonjs/globalEndpointManager.js +104 -29
- package/dist/commonjs/globalEndpointManager.js.map +1 -1
- package/dist/commonjs/globalPartitionEndpointManager.d.ts +0 -2
- package/dist/commonjs/globalPartitionEndpointManager.d.ts.map +1 -1
- package/dist/commonjs/globalPartitionEndpointManager.js +19 -7
- package/dist/commonjs/globalPartitionEndpointManager.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
- package/dist/commonjs/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
- package/dist/commonjs/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
- package/dist/commonjs/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/commonjs/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/FetchResult.js +4 -0
- package/dist/commonjs/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
- package/dist/commonjs/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/documentProducer.js +34 -21
- package/dist/commonjs/queryExecutionContext/documentProducer.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
- package/dist/commonjs/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/orderByComparator.js +1 -0
- package/dist/commonjs/queryExecutionContext/orderByComparator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
- package/dist/commonjs/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/commonjs/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
- package/dist/commonjs/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
- package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
- package/dist/commonjs/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
- package/dist/commonjs/queryIterator.js +41 -33
- package/dist/commonjs/queryIterator.js.map +1 -1
- package/dist/commonjs/queryMetrics/clientSideMetrics.js +2 -1
- package/dist/commonjs/queryMetrics/clientSideMetrics.js.map +1 -1
- package/dist/commonjs/queryMetrics/queryMetrics.js +14 -1
- package/dist/commonjs/queryMetrics/queryMetrics.js.map +1 -1
- package/dist/commonjs/queryMetrics/queryPreparationTime.js +5 -1
- package/dist/commonjs/queryMetrics/queryPreparationTime.js.map +1 -1
- package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js +4 -1
- package/dist/commonjs/queryMetrics/runtimeExecutionTimes.js.map +1 -1
- package/dist/commonjs/queryMetrics/timeSpan.js +4 -3
- package/dist/commonjs/queryMetrics/timeSpan.js.map +1 -1
- package/dist/commonjs/request/ErrorResponse.js +19 -0
- package/dist/commonjs/request/ErrorResponse.js.map +1 -1
- package/dist/commonjs/request/FeedResponse.js +4 -0
- package/dist/commonjs/request/FeedResponse.js.map +1 -1
- package/dist/commonjs/request/RequestHandler.js +3 -4
- package/dist/commonjs/request/RequestHandler.js.map +1 -1
- package/dist/commonjs/request/ResourceResponse.js +5 -0
- package/dist/commonjs/request/ResourceResponse.js.map +1 -1
- package/dist/commonjs/request/SharedOptions.d.ts +5 -0
- package/dist/commonjs/request/SharedOptions.d.ts.map +1 -1
- package/dist/commonjs/request/SharedOptions.js.map +1 -1
- package/dist/commonjs/request/TimeoutError.js +1 -1
- package/dist/commonjs/request/TimeoutError.js.map +1 -1
- package/dist/commonjs/request/hybridSearchQueryResult.js +5 -0
- package/dist/commonjs/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/commonjs/request/request.js +5 -1
- package/dist/commonjs/request/request.js.map +1 -1
- package/dist/commonjs/retry/bulkExecutionRetryPolicy.js +5 -2
- package/dist/commonjs/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/defaultRetryPolicy.d.ts.map +1 -1
- package/dist/commonjs/retry/defaultRetryPolicy.js +6 -6
- package/dist/commonjs/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js +24 -7
- package/dist/commonjs/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/resourceThrottleRetryPolicy.js +20 -10
- package/dist/commonjs/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/retryUtility.d.ts.map +1 -1
- package/dist/commonjs/retry/retryUtility.js +22 -8
- package/dist/commonjs/retry/retryUtility.js.map +1 -1
- package/dist/commonjs/retry/sessionRetryPolicy.js +8 -4
- package/dist/commonjs/retry/sessionRetryPolicy.js.map +1 -1
- package/dist/commonjs/retry/timeoutFailoverRetryPolicy.d.ts +1 -2
- package/dist/commonjs/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
- package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js +17 -7
- package/dist/commonjs/retry/timeoutFailoverRetryPolicy.js.map +1 -1
- package/dist/commonjs/routing/QueryRange.js +4 -0
- package/dist/commonjs/routing/QueryRange.js.map +1 -1
- package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js +4 -0
- package/dist/commonjs/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/commonjs/routing/partitionKeyRangeCache.js +2 -0
- package/dist/commonjs/routing/partitionKeyRangeCache.js.map +1 -1
- package/dist/commonjs/routing/smartRoutingMapProvider.js +1 -0
- package/dist/commonjs/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/commonjs/session/VectorSessionToken.js +6 -2
- package/dist/commonjs/session/VectorSessionToken.js.map +1 -1
- package/dist/commonjs/session/sessionContainer.js +5 -3
- package/dist/commonjs/session/sessionContainer.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/utils/batch.js +15 -4
- package/dist/commonjs/utils/batch.js.map +1 -1
- package/dist/commonjs/utils/encode.d.ts +1 -1
- package/dist/commonjs/utils/encode.d.ts.map +1 -1
- package/dist/commonjs/utils/encode.js.map +1 -1
- package/dist/commonjs/utils/fixedSizePriorityQueue.js +4 -0
- package/dist/commonjs/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/commonjs/utils/hashing/hash.js +1 -1
- package/dist/commonjs/utils/hashing/hash.js.map +1 -1
- package/dist/commonjs/utils/nonStreamingOrderByMap.js +2 -0
- package/dist/commonjs/utils/nonStreamingOrderByMap.js.map +1 -1
- package/dist/esm/ChangeFeedIterator.js +17 -11
- package/dist/esm/ChangeFeedIterator.js.map +1 -1
- package/dist/esm/ChangeFeedResponse.js +8 -0
- package/dist/esm/ChangeFeedResponse.js.map +1 -1
- package/dist/esm/ClientContext.d.ts.map +1 -1
- package/dist/esm/ClientContext.js +232 -48
- package/dist/esm/ClientContext.js.map +1 -1
- package/dist/esm/CosmosClient.d.ts +13 -0
- package/dist/esm/CosmosClient.d.ts.map +1 -1
- package/dist/esm/CosmosClient.js +53 -6
- package/dist/esm/CosmosClient.js.map +1 -1
- package/dist/esm/CosmosClientOptions.d.ts.map +1 -1
- package/dist/esm/CosmosClientOptions.js.map +1 -1
- package/dist/esm/CosmosDiagnostics.d.ts +4 -0
- package/dist/esm/CosmosDiagnostics.d.ts.map +1 -1
- package/dist/esm/CosmosDiagnostics.js +3 -0
- package/dist/esm/CosmosDiagnostics.js.map +1 -1
- package/dist/esm/GlobalEndpointManagerOptions.d.ts +2 -0
- package/dist/esm/GlobalEndpointManagerOptions.d.ts.map +1 -0
- package/dist/esm/GlobalEndpointManagerOptions.js +2 -0
- package/dist/esm/GlobalEndpointManagerOptions.js.map +1 -0
- package/dist/esm/PartitionKeyRangeFailoverInfo.js +8 -5
- package/dist/esm/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/esm/bulk/Batcher.js +13 -3
- package/dist/esm/bulk/Batcher.js.map +1 -1
- package/dist/esm/bulk/BulkHelper.js +26 -11
- package/dist/esm/bulk/BulkHelper.js.map +1 -1
- package/dist/esm/bulk/BulkResponse.js +22 -20
- package/dist/esm/bulk/BulkResponse.js.map +1 -1
- package/dist/esm/bulk/CongestionAlgorithm.js +11 -4
- package/dist/esm/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/esm/bulk/HelperPerPartition.js +14 -1
- package/dist/esm/bulk/HelperPerPartition.js.map +1 -1
- package/dist/esm/bulk/ItemOperationContext.js +4 -0
- package/dist/esm/bulk/ItemOperationContext.js.map +1 -1
- package/dist/esm/bulk/Limiter.js +27 -18
- package/dist/esm/bulk/Limiter.js.map +1 -1
- package/dist/esm/bulk/PartitionMetric.js +4 -0
- package/dist/esm/bulk/PartitionMetric.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.d.ts.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js +29 -15
- package/dist/esm/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.d.ts.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js +19 -8
- package/dist/esm/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts +5 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorOptions.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedRange.js +20 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
- package/dist/esm/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js +8 -0
- package/dist/esm/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
- package/dist/esm/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/esm/client/ChangeFeed/FeedRange.js +8 -0
- package/dist/esm/client/ChangeFeed/FeedRange.js.map +1 -1
- package/dist/esm/client/ChangeFeed/FeedRangeQueue.js +1 -0
- package/dist/esm/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
- package/dist/esm/client/ChangeFeed/InternalChangeFeedOptions.d.ts +1 -0
- package/dist/esm/client/ChangeFeed/InternalChangeFeedOptions.d.ts.map +1 -1
- package/dist/esm/client/ChangeFeed/InternalChangeFeedOptions.js.map +1 -1
- package/dist/esm/client/ChangeFeed/changeFeedUtils.d.ts.map +1 -1
- package/dist/esm/client/ChangeFeed/changeFeedUtils.js +6 -5
- package/dist/esm/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/esm/client/ClientUtils.js +1 -1
- package/dist/esm/client/ClientUtils.js.map +1 -1
- package/dist/esm/client/Conflict/Conflict.js +4 -0
- package/dist/esm/client/Conflict/Conflict.js.map +1 -1
- package/dist/esm/client/Conflict/ConflictResponse.js +2 -0
- package/dist/esm/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/esm/client/Conflict/Conflicts.js +2 -0
- package/dist/esm/client/Conflict/Conflicts.js.map +1 -1
- package/dist/esm/client/Container/Container.js +18 -3
- package/dist/esm/client/Container/Container.js.map +1 -1
- package/dist/esm/client/Container/ContainerResponse.js +2 -0
- package/dist/esm/client/Container/ContainerResponse.js.map +1 -1
- package/dist/esm/client/Container/Containers.js +4 -2
- package/dist/esm/client/Container/Containers.js.map +1 -1
- package/dist/esm/client/Database/Database.js +33 -0
- package/dist/esm/client/Database/Database.js.map +1 -1
- package/dist/esm/client/Database/DatabaseResponse.js +2 -0
- package/dist/esm/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/esm/client/Database/Databases.js +3 -0
- package/dist/esm/client/Database/Databases.js.map +1 -1
- package/dist/esm/client/Item/Item.js +4 -0
- package/dist/esm/client/Item/Item.js.map +1 -1
- package/dist/esm/client/Item/ItemResponse.js +2 -0
- package/dist/esm/client/Item/ItemResponse.js.map +1 -1
- package/dist/esm/client/Item/Items.d.ts.map +1 -1
- package/dist/esm/client/Item/Items.js +8 -0
- package/dist/esm/client/Item/Items.js.map +1 -1
- package/dist/esm/client/Offer/Offer.js +3 -0
- package/dist/esm/client/Offer/Offer.js.map +1 -1
- package/dist/esm/client/Offer/OfferResponse.js +2 -0
- package/dist/esm/client/Offer/OfferResponse.js.map +1 -1
- package/dist/esm/client/Offer/Offers.js +2 -0
- package/dist/esm/client/Offer/Offers.js.map +1 -1
- package/dist/esm/client/Permission/Permission.js +3 -0
- package/dist/esm/client/Permission/Permission.js.map +1 -1
- package/dist/esm/client/Permission/PermissionResponse.js +2 -0
- package/dist/esm/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/esm/client/Permission/Permissions.js +2 -0
- package/dist/esm/client/Permission/Permissions.js.map +1 -1
- package/dist/esm/client/SasToken/SasTokenProperties.js +17 -0
- package/dist/esm/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/esm/client/Script/Scripts.js +5 -0
- package/dist/esm/client/Script/Scripts.js.map +1 -1
- package/dist/esm/client/StoredProcedure/StoredProcedure.js +3 -0
- package/dist/esm/client/StoredProcedure/StoredProcedure.js.map +1 -1
- package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js +4 -0
- package/dist/esm/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/esm/client/StoredProcedure/StoredProcedures.js +2 -0
- package/dist/esm/client/StoredProcedure/StoredProcedures.js.map +1 -1
- package/dist/esm/client/Trigger/Trigger.js +3 -0
- package/dist/esm/client/Trigger/Trigger.js.map +1 -1
- package/dist/esm/client/Trigger/TriggerResponse.js +2 -0
- package/dist/esm/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/esm/client/Trigger/Triggers.js +2 -0
- package/dist/esm/client/Trigger/Triggers.js.map +1 -1
- package/dist/esm/client/User/User.js +9 -0
- package/dist/esm/client/User/User.js.map +1 -1
- package/dist/esm/client/User/UserResponse.js +2 -0
- package/dist/esm/client/User/UserResponse.js.map +1 -1
- package/dist/esm/client/User/Users.js +2 -0
- package/dist/esm/client/User/Users.js.map +1 -1
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
- package/dist/esm/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
- package/dist/esm/common/constants.d.ts +4 -0
- package/dist/esm/common/constants.d.ts.map +1 -1
- package/dist/esm/common/constants.js +5 -1
- package/dist/esm/common/constants.js.map +1 -1
- package/dist/esm/common/helper.d.ts +6 -0
- package/dist/esm/common/helper.d.ts.map +1 -1
- package/dist/esm/common/helper.js +9 -1
- package/dist/esm/common/helper.js.map +1 -1
- package/dist/esm/common/platform.d.ts +1 -0
- package/dist/esm/common/platform.d.ts.map +1 -1
- package/dist/esm/common/platform.js +1 -3
- package/dist/esm/common/platform.js.map +1 -1
- package/dist/esm/diagnostics/CosmosDiagnosticsContext.js +8 -7
- package/dist/esm/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/esm/diagnostics/DiagnosticNodeInternal.d.ts +1 -0
- package/dist/esm/diagnostics/DiagnosticNodeInternal.d.ts.map +1 -1
- package/dist/esm/diagnostics/DiagnosticNodeInternal.js +26 -7
- package/dist/esm/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/esm/diagnostics/DiagnosticWriter.js +1 -3
- package/dist/esm/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/esm/diagnostics/index.js +2 -2
- package/dist/esm/diagnostics/index.js.map +1 -1
- package/dist/esm/documents/ConnectionPolicy.d.ts +10 -4
- package/dist/esm/documents/ConnectionPolicy.d.ts.map +1 -1
- package/dist/esm/documents/ConnectionPolicy.js +2 -2
- package/dist/esm/documents/ConnectionPolicy.js.map +1 -1
- package/dist/esm/documents/DatabaseAccount.d.ts +4 -0
- package/dist/esm/documents/DatabaseAccount.d.ts.map +1 -1
- package/dist/esm/documents/DatabaseAccount.js +29 -4
- package/dist/esm/documents/DatabaseAccount.js.map +1 -1
- package/dist/esm/documents/PartitionKey.js +1 -3
- package/dist/esm/documents/PartitionKey.js.map +1 -1
- package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
- package/dist/esm/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
- package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
- package/dist/esm/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/esm/encryption/Cache/EncryptionSettingsCache.js +2 -0
- package/dist/esm/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
- package/dist/esm/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
- package/dist/esm/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
- package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
- package/dist/esm/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/esm/encryption/EncryptionItemQueryIterator.js +24 -27
- package/dist/esm/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
- package/dist/esm/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
- package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
- package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
- package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
- package/dist/esm/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
- package/dist/esm/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/esm/encryption/EncryptionKeyStoreProvider.js +8 -1
- package/dist/esm/encryption/EncryptionKeyStoreProvider.js.map +1 -1
- package/dist/esm/encryption/EncryptionManager.js +6 -0
- package/dist/esm/encryption/EncryptionManager.js.map +1 -1
- package/dist/esm/encryption/EncryptionProcessor.js +5 -0
- package/dist/esm/encryption/EncryptionProcessor.js.map +1 -1
- package/dist/esm/encryption/EncryptionQueryBuilder.js +2 -0
- package/dist/esm/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/esm/encryption/EncryptionSettingForProperty.js +6 -0
- package/dist/esm/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/esm/encryption/EncryptionSettings.js +6 -3
- package/dist/esm/encryption/EncryptionSettings.js.map +1 -1
- package/dist/esm/encryption/KeyEncryptionKey.js +4 -0
- package/dist/esm/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/esm/encryption/Serializers/StringSerializer.js +1 -1
- package/dist/esm/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/esm/extractPartitionKey.js +2 -2
- package/dist/esm/extractPartitionKey.js.map +1 -1
- package/dist/esm/globalEndpointManager.d.ts +8 -0
- package/dist/esm/globalEndpointManager.d.ts.map +1 -1
- package/dist/esm/globalEndpointManager.js +104 -29
- package/dist/esm/globalEndpointManager.js.map +1 -1
- package/dist/esm/globalPartitionEndpointManager.d.ts +0 -2
- package/dist/esm/globalPartitionEndpointManager.d.ts.map +1 -1
- package/dist/esm/globalPartitionEndpointManager.js +19 -7
- package/dist/esm/globalPartitionEndpointManager.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
- package/dist/esm/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
- package/dist/esm/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
- package/dist/esm/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
- package/dist/esm/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
- package/dist/esm/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
- package/dist/esm/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
- package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
- package/dist/esm/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
- package/dist/esm/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
- package/dist/esm/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/esm/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/esm/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
- package/dist/esm/queryExecutionContext/FetchResult.js +4 -0
- package/dist/esm/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
- package/dist/esm/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/esm/queryExecutionContext/documentProducer.js +34 -21
- package/dist/esm/queryExecutionContext/documentProducer.js.map +1 -1
- package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
- package/dist/esm/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
- package/dist/esm/queryExecutionContext/orderByComparator.js +1 -0
- package/dist/esm/queryExecutionContext/orderByComparator.js.map +1 -1
- package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
- package/dist/esm/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
- package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/esm/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
- package/dist/esm/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
- package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
- package/dist/esm/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
- package/dist/esm/queryIterator.js +41 -33
- package/dist/esm/queryIterator.js.map +1 -1
- package/dist/esm/queryMetrics/clientSideMetrics.js +2 -1
- package/dist/esm/queryMetrics/clientSideMetrics.js.map +1 -1
- package/dist/esm/queryMetrics/queryMetrics.js +14 -1
- package/dist/esm/queryMetrics/queryMetrics.js.map +1 -1
- package/dist/esm/queryMetrics/queryPreparationTime.js +5 -1
- package/dist/esm/queryMetrics/queryPreparationTime.js.map +1 -1
- package/dist/esm/queryMetrics/runtimeExecutionTimes.js +4 -1
- package/dist/esm/queryMetrics/runtimeExecutionTimes.js.map +1 -1
- package/dist/esm/queryMetrics/timeSpan.js +4 -3
- package/dist/esm/queryMetrics/timeSpan.js.map +1 -1
- package/dist/esm/request/ErrorResponse.js +19 -0
- package/dist/esm/request/ErrorResponse.js.map +1 -1
- package/dist/esm/request/FeedResponse.js +4 -0
- package/dist/esm/request/FeedResponse.js.map +1 -1
- package/dist/esm/request/RequestHandler.js +3 -4
- package/dist/esm/request/RequestHandler.js.map +1 -1
- package/dist/esm/request/ResourceResponse.js +5 -0
- package/dist/esm/request/ResourceResponse.js.map +1 -1
- package/dist/esm/request/SharedOptions.d.ts +5 -0
- package/dist/esm/request/SharedOptions.d.ts.map +1 -1
- package/dist/esm/request/SharedOptions.js.map +1 -1
- package/dist/esm/request/TimeoutError.js +1 -1
- package/dist/esm/request/TimeoutError.js.map +1 -1
- package/dist/esm/request/hybridSearchQueryResult.js +5 -0
- package/dist/esm/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/esm/request/request.js +5 -1
- package/dist/esm/request/request.js.map +1 -1
- package/dist/esm/retry/bulkExecutionRetryPolicy.js +5 -2
- package/dist/esm/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/esm/retry/defaultRetryPolicy.d.ts.map +1 -1
- package/dist/esm/retry/defaultRetryPolicy.js +7 -7
- package/dist/esm/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.js +24 -7
- package/dist/esm/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
- package/dist/esm/retry/resourceThrottleRetryPolicy.js +20 -10
- package/dist/esm/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/esm/retry/retryUtility.d.ts.map +1 -1
- package/dist/esm/retry/retryUtility.js +22 -8
- package/dist/esm/retry/retryUtility.js.map +1 -1
- package/dist/esm/retry/sessionRetryPolicy.js +8 -4
- package/dist/esm/retry/sessionRetryPolicy.js.map +1 -1
- package/dist/esm/retry/timeoutFailoverRetryPolicy.d.ts +1 -2
- package/dist/esm/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
- package/dist/esm/retry/timeoutFailoverRetryPolicy.js +17 -7
- package/dist/esm/retry/timeoutFailoverRetryPolicy.js.map +1 -1
- package/dist/esm/routing/QueryRange.js +4 -0
- package/dist/esm/routing/QueryRange.js.map +1 -1
- package/dist/esm/routing/inMemoryCollectionRoutingMap.js +4 -0
- package/dist/esm/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/esm/routing/partitionKeyRangeCache.js +2 -0
- package/dist/esm/routing/partitionKeyRangeCache.js.map +1 -1
- package/dist/esm/routing/smartRoutingMapProvider.js +1 -0
- package/dist/esm/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/esm/session/VectorSessionToken.js +6 -2
- package/dist/esm/session/VectorSessionToken.js.map +1 -1
- package/dist/esm/session/sessionContainer.js +5 -3
- package/dist/esm/session/sessionContainer.js.map +1 -1
- package/dist/esm/utils/batch.js +15 -4
- package/dist/esm/utils/batch.js.map +1 -1
- package/dist/esm/utils/encode.d.ts +1 -1
- package/dist/esm/utils/encode.d.ts.map +1 -1
- package/dist/esm/utils/encode.js.map +1 -1
- package/dist/esm/utils/fixedSizePriorityQueue.js +4 -0
- package/dist/esm/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/esm/utils/hashing/hash.js +1 -1
- package/dist/esm/utils/hashing/hash.js.map +1 -1
- package/dist/esm/utils/nonStreamingOrderByMap.js +2 -0
- package/dist/esm/utils/nonStreamingOrderByMap.js.map +1 -1
- package/dist/react-native/ChangeFeedIterator.js +17 -11
- package/dist/react-native/ChangeFeedIterator.js.map +1 -1
- package/dist/react-native/ChangeFeedResponse.js +8 -0
- package/dist/react-native/ChangeFeedResponse.js.map +1 -1
- package/dist/react-native/ClientContext.d.ts.map +1 -1
- package/dist/react-native/ClientContext.js +232 -48
- package/dist/react-native/ClientContext.js.map +1 -1
- package/dist/react-native/CosmosClient.d.ts +13 -0
- package/dist/react-native/CosmosClient.d.ts.map +1 -1
- package/dist/react-native/CosmosClient.js +53 -6
- package/dist/react-native/CosmosClient.js.map +1 -1
- package/dist/react-native/CosmosClientOptions.d.ts.map +1 -1
- package/dist/react-native/CosmosClientOptions.js.map +1 -1
- package/dist/react-native/CosmosDiagnostics.d.ts +4 -0
- package/dist/react-native/CosmosDiagnostics.d.ts.map +1 -1
- package/dist/react-native/CosmosDiagnostics.js +3 -0
- package/dist/react-native/CosmosDiagnostics.js.map +1 -1
- package/dist/react-native/GlobalEndpointManagerOptions.d.ts +2 -0
- package/dist/react-native/GlobalEndpointManagerOptions.d.ts.map +1 -0
- package/dist/react-native/GlobalEndpointManagerOptions.js +2 -0
- package/dist/react-native/GlobalEndpointManagerOptions.js.map +1 -0
- package/dist/react-native/PartitionKeyRangeFailoverInfo.js +8 -5
- package/dist/react-native/PartitionKeyRangeFailoverInfo.js.map +1 -1
- package/dist/react-native/bulk/Batcher.js +13 -3
- package/dist/react-native/bulk/Batcher.js.map +1 -1
- package/dist/react-native/bulk/BulkHelper.js +26 -11
- package/dist/react-native/bulk/BulkHelper.js.map +1 -1
- package/dist/react-native/bulk/BulkResponse.js +22 -20
- package/dist/react-native/bulk/BulkResponse.js.map +1 -1
- package/dist/react-native/bulk/CongestionAlgorithm.js +11 -4
- package/dist/react-native/bulk/CongestionAlgorithm.js.map +1 -1
- package/dist/react-native/bulk/HelperPerPartition.js +14 -1
- package/dist/react-native/bulk/HelperPerPartition.js.map +1 -1
- package/dist/react-native/bulk/ItemOperationContext.js +4 -0
- package/dist/react-native/bulk/ItemOperationContext.js.map +1 -1
- package/dist/react-native/bulk/Limiter.js +27 -18
- package/dist/react-native/bulk/Limiter.js.map +1 -1
- package/dist/react-native/bulk/PartitionMetric.js +4 -0
- package/dist/react-native/bulk/PartitionMetric.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.d.ts.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js +29 -15
- package/dist/react-native/client/ChangeFeed/ChangeFeedForEpkRange.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.d.ts.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js +19 -8
- package/dist/react-native/client/ChangeFeed/ChangeFeedForPartitionKey.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js +12 -9
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorBuilder.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts +5 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorOptions.d.ts.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorOptions.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js +9 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedIteratorResponse.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedPolicy.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js +20 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedRange.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedRetentionTimeSpan.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromBeginning.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromContinuation.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js +1 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromNow.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js +2 -0
- package/dist/react-native/client/ChangeFeed/ChangeFeedStartFromTime.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js +8 -0
- package/dist/react-native/client/ChangeFeed/CompositeContinuationToken.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js +12 -0
- package/dist/react-native/client/ChangeFeed/ContinuationTokenForPartitionKey.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/FeedRange.js +8 -0
- package/dist/react-native/client/ChangeFeed/FeedRange.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js +1 -0
- package/dist/react-native/client/ChangeFeed/FeedRangeQueue.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/InternalChangeFeedOptions.d.ts +1 -0
- package/dist/react-native/client/ChangeFeed/InternalChangeFeedOptions.d.ts.map +1 -1
- package/dist/react-native/client/ChangeFeed/InternalChangeFeedOptions.js.map +1 -1
- package/dist/react-native/client/ChangeFeed/changeFeedUtils.d.ts.map +1 -1
- package/dist/react-native/client/ChangeFeed/changeFeedUtils.js +6 -5
- package/dist/react-native/client/ChangeFeed/changeFeedUtils.js.map +1 -1
- package/dist/react-native/client/ClientUtils.js +1 -1
- package/dist/react-native/client/ClientUtils.js.map +1 -1
- package/dist/react-native/client/Conflict/Conflict.js +4 -0
- package/dist/react-native/client/Conflict/Conflict.js.map +1 -1
- package/dist/react-native/client/Conflict/ConflictResponse.js +2 -0
- package/dist/react-native/client/Conflict/ConflictResponse.js.map +1 -1
- package/dist/react-native/client/Conflict/Conflicts.js +2 -0
- package/dist/react-native/client/Conflict/Conflicts.js.map +1 -1
- package/dist/react-native/client/Container/Container.js +18 -3
- package/dist/react-native/client/Container/Container.js.map +1 -1
- package/dist/react-native/client/Container/ContainerResponse.js +2 -0
- package/dist/react-native/client/Container/ContainerResponse.js.map +1 -1
- package/dist/react-native/client/Container/Containers.js +4 -2
- package/dist/react-native/client/Container/Containers.js.map +1 -1
- package/dist/react-native/client/Database/Database.js +33 -0
- package/dist/react-native/client/Database/Database.js.map +1 -1
- package/dist/react-native/client/Database/DatabaseResponse.js +2 -0
- package/dist/react-native/client/Database/DatabaseResponse.js.map +1 -1
- package/dist/react-native/client/Database/Databases.js +3 -0
- package/dist/react-native/client/Database/Databases.js.map +1 -1
- package/dist/react-native/client/Item/Item.js +4 -0
- package/dist/react-native/client/Item/Item.js.map +1 -1
- package/dist/react-native/client/Item/ItemResponse.js +2 -0
- package/dist/react-native/client/Item/ItemResponse.js.map +1 -1
- package/dist/react-native/client/Item/Items.d.ts.map +1 -1
- package/dist/react-native/client/Item/Items.js +8 -0
- package/dist/react-native/client/Item/Items.js.map +1 -1
- package/dist/react-native/client/Offer/Offer.js +3 -0
- package/dist/react-native/client/Offer/Offer.js.map +1 -1
- package/dist/react-native/client/Offer/OfferResponse.js +2 -0
- package/dist/react-native/client/Offer/OfferResponse.js.map +1 -1
- package/dist/react-native/client/Offer/Offers.js +2 -0
- package/dist/react-native/client/Offer/Offers.js.map +1 -1
- package/dist/react-native/client/Permission/Permission.js +3 -0
- package/dist/react-native/client/Permission/Permission.js.map +1 -1
- package/dist/react-native/client/Permission/PermissionResponse.js +2 -0
- package/dist/react-native/client/Permission/PermissionResponse.js.map +1 -1
- package/dist/react-native/client/Permission/Permissions.js +2 -0
- package/dist/react-native/client/Permission/Permissions.js.map +1 -1
- package/dist/react-native/client/SasToken/SasTokenProperties.js +17 -0
- package/dist/react-native/client/SasToken/SasTokenProperties.js.map +1 -1
- package/dist/react-native/client/Script/Scripts.js +5 -0
- package/dist/react-native/client/Script/Scripts.js.map +1 -1
- package/dist/react-native/client/StoredProcedure/StoredProcedure.js +3 -0
- package/dist/react-native/client/StoredProcedure/StoredProcedure.js.map +1 -1
- package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js +4 -0
- package/dist/react-native/client/StoredProcedure/StoredProcedureResponse.js.map +1 -1
- package/dist/react-native/client/StoredProcedure/StoredProcedures.js +2 -0
- package/dist/react-native/client/StoredProcedure/StoredProcedures.js.map +1 -1
- package/dist/react-native/client/Trigger/Trigger.js +3 -0
- package/dist/react-native/client/Trigger/Trigger.js.map +1 -1
- package/dist/react-native/client/Trigger/TriggerResponse.js +2 -0
- package/dist/react-native/client/Trigger/TriggerResponse.js.map +1 -1
- package/dist/react-native/client/Trigger/Triggers.js +2 -0
- package/dist/react-native/client/Trigger/Triggers.js.map +1 -1
- package/dist/react-native/client/User/User.js +9 -0
- package/dist/react-native/client/User/User.js.map +1 -1
- package/dist/react-native/client/User/UserResponse.js +2 -0
- package/dist/react-native/client/User/UserResponse.js.map +1 -1
- package/dist/react-native/client/User/Users.js +2 -0
- package/dist/react-native/client/User/Users.js.map +1 -1
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js +3 -0
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunction.js.map +1 -1
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js +2 -0
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctionResponse.js.map +1 -1
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js +2 -0
- package/dist/react-native/client/UserDefinedFunction/UserDefinedFunctions.js.map +1 -1
- package/dist/react-native/common/constants.d.ts +4 -0
- package/dist/react-native/common/constants.d.ts.map +1 -1
- package/dist/react-native/common/constants.js +5 -1
- package/dist/react-native/common/constants.js.map +1 -1
- package/dist/react-native/common/helper.d.ts +6 -0
- package/dist/react-native/common/helper.d.ts.map +1 -1
- package/dist/react-native/common/helper.js +9 -1
- package/dist/react-native/common/helper.js.map +1 -1
- package/dist/react-native/common/platform.d.ts +1 -0
- package/dist/react-native/common/platform.d.ts.map +1 -1
- package/dist/react-native/common/platform.js +1 -3
- package/dist/react-native/common/platform.js.map +1 -1
- package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js +8 -7
- package/dist/react-native/diagnostics/CosmosDiagnosticsContext.js.map +1 -1
- package/dist/react-native/diagnostics/DiagnosticNodeInternal.d.ts +1 -0
- package/dist/react-native/diagnostics/DiagnosticNodeInternal.d.ts.map +1 -1
- package/dist/react-native/diagnostics/DiagnosticNodeInternal.js +26 -7
- package/dist/react-native/diagnostics/DiagnosticNodeInternal.js.map +1 -1
- package/dist/react-native/diagnostics/DiagnosticWriter.js +1 -3
- package/dist/react-native/diagnostics/DiagnosticWriter.js.map +1 -1
- package/dist/react-native/diagnostics/index.js +2 -2
- package/dist/react-native/diagnostics/index.js.map +1 -1
- package/dist/react-native/documents/ConnectionPolicy.d.ts +10 -4
- package/dist/react-native/documents/ConnectionPolicy.d.ts.map +1 -1
- package/dist/react-native/documents/ConnectionPolicy.js +2 -2
- package/dist/react-native/documents/ConnectionPolicy.js.map +1 -1
- package/dist/react-native/documents/DatabaseAccount.d.ts +4 -0
- package/dist/react-native/documents/DatabaseAccount.d.ts.map +1 -1
- package/dist/react-native/documents/DatabaseAccount.js +29 -4
- package/dist/react-native/documents/DatabaseAccount.js.map +1 -1
- package/dist/react-native/documents/PartitionKey.js +1 -3
- package/dist/react-native/documents/PartitionKey.js.map +1 -1
- package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js +8 -2
- package/dist/react-native/encryption/AeadAes256CbcHmacSha256Algorithm/AeadAes256CbcHmacSha256Algorithm.js.map +1 -1
- package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js +2 -0
- package/dist/react-native/encryption/Cache/ClientEncryptionKeyPropertiesCache.js.map +1 -1
- package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js +2 -0
- package/dist/react-native/encryption/Cache/EncryptionSettingsCache.js.map +1 -1
- package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js +2 -0
- package/dist/react-native/encryption/Cache/KeyEncryptionKeyCache.js.map +1 -1
- package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js +5 -0
- package/dist/react-native/encryption/Cache/ProtectedDataEncryptionKeyCache.js.map +1 -1
- package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js +2 -0
- package/dist/react-native/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.js.map +1 -1
- package/dist/react-native/encryption/EncryptionItemQueryIterator.js +24 -27
- package/dist/react-native/encryption/EncryptionItemQueryIterator.js.map +1 -1
- package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js +7 -2
- package/dist/react-native/encryption/EncryptionKey/DataEncryptionKey.js.map +1 -1
- package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts +0 -1
- package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.d.ts.map +1 -1
- package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js +2 -0
- package/dist/react-native/encryption/EncryptionKey/ProtectedDataEncryptionKey.js.map +1 -1
- package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js +6 -5
- package/dist/react-native/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map +1 -1
- package/dist/react-native/encryption/EncryptionKeyStoreProvider.js +8 -1
- package/dist/react-native/encryption/EncryptionKeyStoreProvider.js.map +1 -1
- package/dist/react-native/encryption/EncryptionManager.js +6 -0
- package/dist/react-native/encryption/EncryptionManager.js.map +1 -1
- package/dist/react-native/encryption/EncryptionProcessor.js +5 -0
- package/dist/react-native/encryption/EncryptionProcessor.js.map +1 -1
- package/dist/react-native/encryption/EncryptionQueryBuilder.js +2 -0
- package/dist/react-native/encryption/EncryptionQueryBuilder.js.map +1 -1
- package/dist/react-native/encryption/EncryptionSettingForProperty.js +6 -0
- package/dist/react-native/encryption/EncryptionSettingForProperty.js.map +1 -1
- package/dist/react-native/encryption/EncryptionSettings.js +6 -3
- package/dist/react-native/encryption/EncryptionSettings.js.map +1 -1
- package/dist/react-native/encryption/KeyEncryptionKey.js +4 -0
- package/dist/react-native/encryption/KeyEncryptionKey.js.map +1 -1
- package/dist/react-native/encryption/Serializers/StringSerializer.js +1 -1
- package/dist/react-native/encryption/Serializers/StringSerializer.js.map +1 -1
- package/dist/react-native/extractPartitionKey.js +2 -2
- package/dist/react-native/extractPartitionKey.js.map +1 -1
- package/dist/react-native/globalEndpointManager.d.ts +8 -0
- package/dist/react-native/globalEndpointManager.d.ts.map +1 -1
- package/dist/react-native/globalEndpointManager.js +104 -29
- package/dist/react-native/globalEndpointManager.js.map +1 -1
- package/dist/react-native/globalPartitionEndpointManager.d.ts +0 -2
- package/dist/react-native/globalPartitionEndpointManager.d.ts.map +1 -1
- package/dist/react-native/globalPartitionEndpointManager.js +19 -7
- package/dist/react-native/globalPartitionEndpointManager.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js +2 -0
- package/dist/react-native/queryExecutionContext/Aggregators/AverageAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/CountAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/MakeListAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/MakeSetAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js +2 -0
- package/dist/react-native/queryExecutionContext/Aggregators/MaxAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js +2 -0
- package/dist/react-native/queryExecutionContext/Aggregators/MinAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/StaticValueAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js +1 -0
- package/dist/react-native/queryExecutionContext/Aggregators/SumAggregator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js +5 -3
- package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js +6 -3
- package/dist/react-native/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js +23 -7
- package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js +14 -6
- package/dist/react-native/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js +3 -0
- package/dist/react-native/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js +2 -0
- package/dist/react-native/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js +2 -0
- package/dist/react-native/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js +2 -0
- package/dist/react-native/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.js.map +1 -1
- package/dist/react-native/queryExecutionContext/FetchResult.js +4 -0
- package/dist/react-native/queryExecutionContext/FetchResult.js.map +1 -1
- package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js +14 -2
- package/dist/react-native/queryExecutionContext/defaultQueryExecutionContext.js.map +1 -1
- package/dist/react-native/queryExecutionContext/documentProducer.js +34 -21
- package/dist/react-native/queryExecutionContext/documentProducer.js.map +1 -1
- package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js +41 -27
- package/dist/react-native/queryExecutionContext/hybridQueryExecutionContext.js.map +1 -1
- package/dist/react-native/queryExecutionContext/orderByComparator.js +1 -0
- package/dist/react-native/queryExecutionContext/orderByComparator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js +1 -0
- package/dist/react-native/queryExecutionContext/orderByDocumentProducerComparator.js.map +1 -1
- package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js +1 -0
- package/dist/react-native/queryExecutionContext/orderByQueryExecutionContext.js.map +1 -1
- package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js +20 -2
- package/dist/react-native/queryExecutionContext/parallelQueryExecutionContextBase.js.map +1 -1
- package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js +14 -4
- package/dist/react-native/queryExecutionContext/pipelinedQueryExecutionContext.js.map +1 -1
- package/dist/react-native/queryIterator.js +41 -33
- package/dist/react-native/queryIterator.js.map +1 -1
- package/dist/react-native/queryMetrics/clientSideMetrics.js +2 -1
- package/dist/react-native/queryMetrics/clientSideMetrics.js.map +1 -1
- package/dist/react-native/queryMetrics/queryMetrics.js +14 -1
- package/dist/react-native/queryMetrics/queryMetrics.js.map +1 -1
- package/dist/react-native/queryMetrics/queryPreparationTime.js +5 -1
- package/dist/react-native/queryMetrics/queryPreparationTime.js.map +1 -1
- package/dist/react-native/queryMetrics/runtimeExecutionTimes.js +4 -1
- package/dist/react-native/queryMetrics/runtimeExecutionTimes.js.map +1 -1
- package/dist/react-native/queryMetrics/timeSpan.js +4 -3
- package/dist/react-native/queryMetrics/timeSpan.js.map +1 -1
- package/dist/react-native/request/ErrorResponse.js +19 -0
- package/dist/react-native/request/ErrorResponse.js.map +1 -1
- package/dist/react-native/request/FeedResponse.js +4 -0
- package/dist/react-native/request/FeedResponse.js.map +1 -1
- package/dist/react-native/request/RequestHandler.js +3 -4
- package/dist/react-native/request/RequestHandler.js.map +1 -1
- package/dist/react-native/request/ResourceResponse.js +5 -0
- package/dist/react-native/request/ResourceResponse.js.map +1 -1
- package/dist/react-native/request/SharedOptions.d.ts +5 -0
- package/dist/react-native/request/SharedOptions.d.ts.map +1 -1
- package/dist/react-native/request/SharedOptions.js.map +1 -1
- package/dist/react-native/request/TimeoutError.js +1 -1
- package/dist/react-native/request/TimeoutError.js.map +1 -1
- package/dist/react-native/request/hybridSearchQueryResult.js +5 -0
- package/dist/react-native/request/hybridSearchQueryResult.js.map +1 -1
- package/dist/react-native/request/request.js +5 -1
- package/dist/react-native/request/request.js.map +1 -1
- package/dist/react-native/retry/bulkExecutionRetryPolicy.js +5 -2
- package/dist/react-native/retry/bulkExecutionRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/defaultRetryPolicy.d.ts.map +1 -1
- package/dist/react-native/retry/defaultRetryPolicy.js +7 -7
- package/dist/react-native/retry/defaultRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.d.ts +3 -2
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.d.ts.map +1 -1
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js +24 -7
- package/dist/react-native/retry/endpointDiscoveryRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/resourceThrottleRetryPolicy.js +20 -10
- package/dist/react-native/retry/resourceThrottleRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/retryUtility.d.ts.map +1 -1
- package/dist/react-native/retry/retryUtility.js +22 -8
- package/dist/react-native/retry/retryUtility.js.map +1 -1
- package/dist/react-native/retry/sessionRetryPolicy.js +8 -4
- package/dist/react-native/retry/sessionRetryPolicy.js.map +1 -1
- package/dist/react-native/retry/timeoutFailoverRetryPolicy.d.ts +1 -2
- package/dist/react-native/retry/timeoutFailoverRetryPolicy.d.ts.map +1 -1
- package/dist/react-native/retry/timeoutFailoverRetryPolicy.js +17 -7
- package/dist/react-native/retry/timeoutFailoverRetryPolicy.js.map +1 -1
- package/dist/react-native/routing/QueryRange.js +4 -0
- package/dist/react-native/routing/QueryRange.js.map +1 -1
- package/dist/react-native/routing/inMemoryCollectionRoutingMap.js +4 -0
- package/dist/react-native/routing/inMemoryCollectionRoutingMap.js.map +1 -1
- package/dist/react-native/routing/partitionKeyRangeCache.js +2 -0
- package/dist/react-native/routing/partitionKeyRangeCache.js.map +1 -1
- package/dist/react-native/routing/smartRoutingMapProvider.js +1 -0
- package/dist/react-native/routing/smartRoutingMapProvider.js.map +1 -1
- package/dist/react-native/session/VectorSessionToken.js +6 -2
- package/dist/react-native/session/VectorSessionToken.js.map +1 -1
- package/dist/react-native/session/sessionContainer.js +5 -3
- package/dist/react-native/session/sessionContainer.js.map +1 -1
- package/dist/react-native/utils/batch.js +15 -4
- package/dist/react-native/utils/batch.js.map +1 -1
- package/dist/react-native/utils/encode.d.ts +1 -1
- package/dist/react-native/utils/encode.d.ts.map +1 -1
- package/dist/react-native/utils/encode.js.map +1 -1
- package/dist/react-native/utils/fixedSizePriorityQueue.js +4 -0
- package/dist/react-native/utils/fixedSizePriorityQueue.js.map +1 -1
- package/dist/react-native/utils/hashing/hash.js +1 -1
- package/dist/react-native/utils/hashing/hash.js.map +1 -1
- package/dist/react-native/utils/nonStreamingOrderByMap.js +2 -0
- package/dist/react-native/utils/nonStreamingOrderByMap.js.map +1 -1
- package/package.json +33 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientEncryptionKeyPropertiesCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/ClientEncryptionKeyPropertiesCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;GAIG;AAEH,MAAM,OAAO,kCAAkC;
|
|
1
|
+
{"version":3,"file":"ClientEncryptionKeyPropertiesCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/ClientEncryptionKeyPropertiesCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC;;;;GAIG;AAEH,MAAM,OAAO,kCAAkC;IAC7C,mDAAmD;IAC3C,kCAAkC,CAA6C;IAEvF;QACE,IAAI,CAAC,kCAAkC,GAAG,IAAI,GAAG,EAAyC,CAAC;IAC7F,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IACM,GAAG,CAAC,GAAW,EAAE,6BAA4D;QAClF,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;IAClF,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ClientEncryptionKeyProperties } from \"../ClientEncryptionKey/index.js\";\n\n/**\n * The cache used to store the properties of the client encryption key\n * see {@link ClientEncryptionKeyProperties}\n * @hidden\n */\n\nexport class ClientEncryptionKeyPropertiesCache {\n // key is database rid + '/'+ clientEncryptionKeyId\n private clientEncryptionKeyPropertiesCache: Map<string, ClientEncryptionKeyProperties>;\n\n public constructor() {\n this.clientEncryptionKeyPropertiesCache = new Map<string, ClientEncryptionKeyProperties>();\n }\n\n public get(key: string): ClientEncryptionKeyProperties | undefined {\n return this.clientEncryptionKeyPropertiesCache.get(key);\n }\n public set(key: string, clientEncryptionKeyProperties: ClientEncryptionKeyProperties): void {\n this.clientEncryptionKeyPropertiesCache.set(key, clientEncryptionKeyProperties);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionSettingsCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/EncryptionSettingsCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;
|
|
1
|
+
{"version":3,"file":"EncryptionSettingsCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/EncryptionSettingsCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAClC,0CAA0C;IAClC,KAAK,CAAkC;IAE/C;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,EAAU,EACV,YAAoB,EACpB,iBAA2B,EAC3B,sBAA8C;QAE9C,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;QACvF,IAAI,CAAC,sBAAsB;YAAE,OAAO;QAEpC,KAAK,MAAM,YAAY,IAAI,sBAAsB,CAAC,aAAa,EAAE,CAAC;YAChE,MAAM,4BAA4B,GAAG,IAAI,4BAA4B,CAAC,YAAY,CAAC,CAAC;YACpF,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1D,kBAAkB,CAAC,+BAA+B,CAChD,YAAY,CAAC,IAAI,EACjB,4BAA4B,CAC7B,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACjC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,kBAAsC;QAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ClientEncryptionPolicy } from \"../ClientEncryptionPolicy.js\";\nimport { EncryptionSettings } from \"../EncryptionSettings.js\";\nimport { EncryptionSettingForProperty } from \"../EncryptionSettingForProperty.js\";\n/**\n * The cache used to store encryption settings for a container.\n * see {@link EncryptionSettings}\n * @hidden\n */\nexport class EncryptionSettingsCache {\n // key is databaseRid + '/' + containerRid\n private cache: Map<string, EncryptionSettings>;\n\n public constructor() {\n this.cache = new Map<string, EncryptionSettings>();\n }\n\n public async create(\n id: string,\n containerRid: string,\n partitionKeyPaths: string[],\n clientEncryptionPolicy: ClientEncryptionPolicy,\n ): Promise<EncryptionSettings> {\n const encryptionSettings = new EncryptionSettings(id, containerRid, partitionKeyPaths);\n if (!clientEncryptionPolicy) return;\n\n for (const includedPath of clientEncryptionPolicy.includedPaths) {\n const encryptionSettingForProperty = new EncryptionSettingForProperty(includedPath);\n encryptionSettings.pathsToEncrypt.push(includedPath.path);\n encryptionSettings.setEncryptionSettingForProperty(\n includedPath.path,\n encryptionSettingForProperty,\n );\n }\n this.set(id, encryptionSettings);\n return encryptionSettings;\n }\n\n public get(key: string): EncryptionSettings | undefined {\n return this.cache.get(key);\n }\n\n public set(key: string, encryptionSettings: EncryptionSettings): void {\n this.cache.set(key, encryptionSettings);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyEncryptionKeyCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/KeyEncryptionKeyCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;
|
|
1
|
+
{"version":3,"file":"KeyEncryptionKeyCache.js","sourceRoot":"","sources":["../../../../src/encryption/Cache/KeyEncryptionKeyCache.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAChC,sCAAsC;IAC/B,KAAK,CAAgC;IAE5C;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IACnD,CAAC;IAEM,WAAW,CAChB,IAAY,EACZ,IAAY,EACZ,gBAA4C;QAE5C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACzC,IAAI,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;YACtE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,GAAG,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACO,GAAG,CAAC,GAAW,EAAE,gBAAkC;QACzD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IACxC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionKeyStoreProvider } from \"../EncryptionKeyStoreProvider.js\";\nimport { KeyEncryptionKey } from \"../KeyEncryptionKey.js\";\n\n/**\n * The cache used to store the key encryption keys.\n * see {@link KeyEncryptionKey}\n * @hidden\n */\nexport class KeyEncryptionKeyCache {\n // key is JSON.stringify([name, path])\n public cache: Map<string, KeyEncryptionKey>;\n\n constructor() {\n this.cache = new Map<string, KeyEncryptionKey>();\n }\n\n public getOrCreate(\n name: string,\n path: string,\n keyStoreProvider: EncryptionKeyStoreProvider,\n ): KeyEncryptionKey {\n const key = JSON.stringify([name, path]);\n let keyEncryptionKey = this.get(key);\n if (!keyEncryptionKey) {\n keyEncryptionKey = new KeyEncryptionKey(name, path, keyStoreProvider);\n this.set(key, keyEncryptionKey);\n }\n return keyEncryptionKey;\n }\n\n private get(key: string): KeyEncryptionKey | undefined {\n return this.cache.get(key);\n }\n private set(key: string, keyEncryptionKey: KeyEncryptionKey): void {\n this.cache.set(key, keyEncryptionKey);\n }\n}\n"]}
|
|
@@ -7,5 +7,7 @@ export class ClientEncryptionKeyResponse extends ResourceResponse {
|
|
|
7
7
|
super(resource, headers, statusCode, diagnostics);
|
|
8
8
|
this.clientEncryptionKeyProperties = clientEncryptionKeyProperties;
|
|
9
9
|
}
|
|
10
|
+
/** Properties of the client encryption key */
|
|
11
|
+
clientEncryptionKeyProperties;
|
|
10
12
|
}
|
|
11
13
|
//# sourceMappingURL=ClientEncryptionKeyResponse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientEncryptionKeyResponse.js","sourceRoot":"","sources":["../../../../src/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAIrE,yDAAyD;AACzD,MAAM,OAAO,2BAA4B,SAAQ,gBAA0B;IACzE,YACE,QAAkB,EAClB,OAAsB,EACtB,UAAkB,EAClB,6BAA4D,EAC5D,WAA8B;QAE9B,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAClD,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,CAAC;IACrE,CAAC;
|
|
1
|
+
{"version":3,"file":"ClientEncryptionKeyResponse.js","sourceRoot":"","sources":["../../../../src/encryption/ClientEncryptionKey/ClientEncryptionKeyResponse.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAIrE,yDAAyD;AACzD,MAAM,OAAO,2BAA4B,SAAQ,gBAA0B;IACzE,YACE,QAAkB,EAClB,OAAsB,EACtB,UAAkB,EAClB,6BAA4D,EAC5D,WAA8B;QAE9B,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAClD,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,CAAC;IACrE,CAAC;IACD,8CAA8C;IAC9B,6BAA6B,CAAgC;CAC9E","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CosmosDiagnostics } from \"../../CosmosDiagnostics.js\";\nimport { CosmosHeaders } from \"../../queryExecutionContext/index.js\";\nimport { ResourceResponse } from \"../../request/ResourceResponse.js\";\nimport { Resource } from \"../../client/Resource.js\";\nimport { ClientEncryptionKeyProperties } from \"./ClientEncryptionKeyProperties.js\";\n\n/** Response object for ClientEncryptionKey operations */\nexport class ClientEncryptionKeyResponse extends ResourceResponse<Resource> {\n constructor(\n resource: Resource,\n headers: CosmosHeaders,\n statusCode: number,\n clientEncryptionKeyProperties: ClientEncryptionKeyProperties,\n diagnostics: CosmosDiagnostics,\n ) {\n super(resource, headers, statusCode, diagnostics);\n this.clientEncryptionKeyProperties = clientEncryptionKeyProperties;\n }\n /** Properties of the client encryption key */\n public readonly clientEncryptionKeyProperties: ClientEncryptionKeyProperties;\n}\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
-
import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tslib";
|
|
4
3
|
import { Constants, ResourceType } from "../common/constants.js";
|
|
5
4
|
import { DiagnosticNodeInternal, DiagnosticNodeType, } from "../diagnostics/DiagnosticNodeInternal.js";
|
|
6
5
|
import { QueryIterator } from "../queryIterator.js";
|
|
@@ -11,6 +10,9 @@ import { withDiagnostics } from "../utils/diagnostics.js";
|
|
|
11
10
|
* extends @see {@link QueryIterator}
|
|
12
11
|
*/
|
|
13
12
|
export class EncryptionItemQueryIterator extends QueryIterator {
|
|
13
|
+
container;
|
|
14
|
+
encryptionClientContext;
|
|
15
|
+
encryptionOptions;
|
|
14
16
|
constructor(clientContext, query, options, fetchFunctions, container) {
|
|
15
17
|
super(clientContext, query, options, fetchFunctions, container.url, ResourceType.item);
|
|
16
18
|
this.container = container;
|
|
@@ -20,36 +22,32 @@ export class EncryptionItemQueryIterator extends QueryIterator {
|
|
|
20
22
|
/**
|
|
21
23
|
* Gets an async iterator that will yield results until completion.
|
|
22
24
|
*/
|
|
23
|
-
getAsyncIterator() {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
resource = body;
|
|
40
|
-
count += propertiesDecryptedCount;
|
|
41
|
-
}
|
|
42
|
-
diagnosticNode.endEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation, count);
|
|
25
|
+
async *getAsyncIterator() {
|
|
26
|
+
let response;
|
|
27
|
+
const diagnosticNode = new DiagnosticNodeInternal(this.encryptionClientContext.diagnosticLevel, DiagnosticNodeType.CLIENT_REQUEST_NODE, null);
|
|
28
|
+
try {
|
|
29
|
+
response = yield* QueryIterator.prototype.getAsyncIteratorInternal.call(this, diagnosticNode);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);
|
|
33
|
+
}
|
|
34
|
+
if (response?.resources?.length > 0) {
|
|
35
|
+
let count = 0;
|
|
36
|
+
diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);
|
|
37
|
+
for (let resource of response.resources) {
|
|
38
|
+
const { body, propertiesDecryptedCount } = await this.container.encryptionProcessor.decrypt(resource);
|
|
39
|
+
resource = body;
|
|
40
|
+
count += propertiesDecryptedCount;
|
|
43
41
|
}
|
|
44
|
-
|
|
45
|
-
}
|
|
42
|
+
diagnosticNode.endEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation, count);
|
|
43
|
+
}
|
|
44
|
+
yield response;
|
|
46
45
|
}
|
|
47
46
|
/**
|
|
48
47
|
* Fetch all pages for the query and return a single FeedResponse.
|
|
49
48
|
*/
|
|
50
49
|
async fetchAll() {
|
|
51
50
|
return withDiagnostics(async (diagnosticNode) => {
|
|
52
|
-
var _a;
|
|
53
51
|
let response;
|
|
54
52
|
try {
|
|
55
53
|
response = await QueryIterator.prototype.fetchAllInternal.call(this, diagnosticNode);
|
|
@@ -57,7 +55,7 @@ export class EncryptionItemQueryIterator extends QueryIterator {
|
|
|
57
55
|
catch (error) {
|
|
58
56
|
await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);
|
|
59
57
|
}
|
|
60
|
-
if (
|
|
58
|
+
if (response?.resources?.length > 0) {
|
|
61
59
|
let count = 0;
|
|
62
60
|
diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);
|
|
63
61
|
for (let resource of response.resources) {
|
|
@@ -75,7 +73,6 @@ export class EncryptionItemQueryIterator extends QueryIterator {
|
|
|
75
73
|
*/
|
|
76
74
|
async fetchNext() {
|
|
77
75
|
return withDiagnostics(async (diagnosticNode) => {
|
|
78
|
-
var _a;
|
|
79
76
|
let response;
|
|
80
77
|
try {
|
|
81
78
|
response = await QueryIterator.prototype.fetchNextInternal.call(this, diagnosticNode);
|
|
@@ -83,7 +80,7 @@ export class EncryptionItemQueryIterator extends QueryIterator {
|
|
|
83
80
|
catch (error) {
|
|
84
81
|
await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);
|
|
85
82
|
}
|
|
86
|
-
if (
|
|
83
|
+
if (response?.resources?.length > 0) {
|
|
87
84
|
let count = 0;
|
|
88
85
|
diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);
|
|
89
86
|
for (let resource of response.resources) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionItemQueryIterator.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionItemQueryIterator.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC
|
|
1
|
+
{"version":3,"file":"EncryptionItemQueryIterator.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionItemQueryIterator.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,OAAO,2BAAkC,SAAQ,aAAmB;IAChE,SAAS,CAAY;IACrB,uBAAuB,CAAgB;IACvC,iBAAiB,CAAc;IAEvC,YACE,aAA4B,EAC5B,KAA4B,EAC5B,OAAoB,EACpB,cAA+D,EAC/D,SAAoB;QAEpB,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,uBAAuB,GAAG,aAAa,CAAC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;IACnC,CAAC;IAED;;OAEG;IACa,KAAK,CAAC,CAAC,gBAAgB;QACrC,IAAI,QAA4B,CAAC;QACjC,MAAM,cAAc,GAAG,IAAI,sBAAsB,CAC/C,IAAI,CAAC,uBAAuB,CAAC,eAAe,EAC5C,kBAAkB,CAAC,mBAAmB,EACtC,IAAI,CACL,CAAC;QACF,IAAI,CAAC;YACH,QAAQ,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAChG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC,0CAA0C,CAAC,KAAK,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,cAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;YAC5F,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACxC,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,GACtC,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC7D,QAAQ,GAAG,IAAI,CAAC;gBAChB,KAAK,IAAI,wBAAwB,CAAC;YACpC,CAAC;YACD,cAAc,CAAC,wBAAwB,CACrC,SAAS,CAAC,UAAU,CAAC,2BAA2B,EAChD,KAAK,CACN,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,CAAC;IACjB,CAAC;IAED;;OAEG;IACa,KAAK,CAAC,QAAQ;QAC5B,OAAO,eAAe,CAAC,KAAK,EAAE,cAAsC,EAAE,EAAE;YACtE,IAAI,QAA4B,CAAC;YACjC,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACvF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,SAAS,CAAC,0CAA0C,CAAC,KAAK,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,cAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;gBAC5F,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACxC,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,GACtC,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC7D,QAAQ,GAAG,IAAI,CAAC;oBAChB,KAAK,IAAI,wBAAwB,CAAC;gBACpC,CAAC;gBACD,cAAc,CAAC,wBAAwB,CACrC,SAAS,CAAC,UAAU,CAAC,2BAA2B,EAChD,KAAK,CACN,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACa,KAAK,CAAC,SAAS;QAC7B,OAAO,eAAe,CAAC,KAAK,EAAE,cAAsC,EAAE,EAAE;YACtE,IAAI,QAA4B,CAAC;YACjC,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACxF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,SAAS,CAAC,0CAA0C,CAAC,KAAK,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,cAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;gBAC5F,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACxC,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,GACtC,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC7D,QAAQ,GAAG,IAAI,CAAC;oBAChB,KAAK,IAAI,wBAAwB,CAAC;gBACpC,CAAC;gBACD,cAAc,CAAC,wBAAwB,CACrC,SAAS,CAAC,UAAU,CAAC,2BAA2B,EAChD,KAAK,CACN,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACnC,CAAC;IACD;;OAEG;IACa,KAAK,CAAC,IAAI,CAAC,cAAsC;QAC/D,0DAA0D;QAC1D,MAAM,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE,CAAC;QACpD,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1D,MAAM,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAChE,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Container } from \"../client/index.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport { Constants, ResourceType } from \"../common/constants.js\";\nimport {\n DiagnosticNodeInternal,\n DiagnosticNodeType,\n} from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport type { SqlQuerySpec, FetchFunctionCallback } from \"../queryExecutionContext/index.js\";\nimport { QueryIterator } from \"../queryIterator.js\";\nimport type { FeedOptions, FeedResponse } from \"../request/index.js\";\nimport { withDiagnostics } from \"../utils/diagnostics.js\";\n\n/**\n * @internal\n * Provides the iterator for handling encrypted items in the Azure Cosmos DB database service.\n * extends @see {@link QueryIterator}\n */\nexport class EncryptionItemQueryIterator<Item> extends QueryIterator<Item> {\n private container: Container;\n private encryptionClientContext: ClientContext;\n private encryptionOptions: FeedOptions;\n\n constructor(\n clientContext: ClientContext,\n query: SqlQuerySpec | string,\n options: FeedOptions,\n fetchFunctions: FetchFunctionCallback | FetchFunctionCallback[],\n container: Container,\n ) {\n super(clientContext, query, options, fetchFunctions, container.url, ResourceType.item);\n this.container = container;\n this.encryptionClientContext = clientContext;\n this.encryptionOptions = options;\n }\n\n /**\n * Gets an async iterator that will yield results until completion.\n */\n public override async *getAsyncIterator(): AsyncIterable<FeedResponse<Item>> {\n let response: FeedResponse<Item>;\n const diagnosticNode = new DiagnosticNodeInternal(\n this.encryptionClientContext.diagnosticLevel,\n DiagnosticNodeType.CLIENT_REQUEST_NODE,\n null,\n );\n try {\n response = yield* QueryIterator.prototype.getAsyncIteratorInternal.call(this, diagnosticNode);\n } catch (error) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n if (response?.resources?.length > 0) {\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);\n for (let resource of response.resources) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(resource);\n resource = body;\n count += propertiesDecryptedCount;\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n }\n yield response;\n }\n\n /**\n * Fetch all pages for the query and return a single FeedResponse.\n */\n public override async fetchAll(): Promise<FeedResponse<Item>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n let response: FeedResponse<Item>;\n try {\n response = await QueryIterator.prototype.fetchAllInternal.call(this, diagnosticNode);\n } catch (error) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n if (response?.resources?.length > 0) {\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);\n for (let resource of response.resources) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(resource);\n resource = body;\n count += propertiesDecryptedCount;\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n }\n return response;\n }, this.encryptionClientContext);\n }\n\n /**\n * Retrieve the next batch from the feed.\n */\n public override async fetchNext(): Promise<FeedResponse<Item>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n let response: FeedResponse<Item>;\n try {\n response = await QueryIterator.prototype.fetchNextInternal.call(this, diagnosticNode);\n } catch (error) {\n await this.container.throwIfRequestNeedsARetryPostPolicyRefresh(error);\n }\n if (response?.resources?.length > 0) {\n let count = 0;\n diagnosticNode.beginEncryptionDiagnostics(Constants.Encryption.DiagnosticsDecryptOperation);\n for (let resource of response.resources) {\n const { body, propertiesDecryptedCount } =\n await this.container.encryptionProcessor.decrypt(resource);\n resource = body;\n count += propertiesDecryptedCount;\n }\n diagnosticNode.endEncryptionDiagnostics(\n Constants.Encryption.DiagnosticsDecryptOperation,\n count,\n );\n }\n return response;\n }, this.encryptionClientContext);\n }\n /**\n * @internal\n */\n public override async init(diagnosticNode: DiagnosticNodeInternal): Promise<void> {\n // Ensure encryption is initialized and set rid in options\n await this.container.checkAndInitializeEncryption();\n this.encryptionOptions.containerRid = this.container._rid;\n await QueryIterator.prototype.init.call(this, diagnosticNode);\n }\n}\n"]}
|
|
@@ -9,7 +9,6 @@ import type { KeyEncryptionKey } from "../KeyEncryptionKey.js";
|
|
|
9
9
|
export declare class ProtectedDataEncryptionKey extends DataEncryptionKey {
|
|
10
10
|
keyEncryptionKey: KeyEncryptionKey;
|
|
11
11
|
encryptedValue: Buffer;
|
|
12
|
-
name: string;
|
|
13
12
|
constructor(name: string, keyEncryptionKey: KeyEncryptionKey, rawKey: Buffer, encryptedKey: Buffer);
|
|
14
13
|
}
|
|
15
14
|
//# sourceMappingURL=ProtectedDataEncryptionKey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtectedDataEncryptionKey.d.ts","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKey/ProtectedDataEncryptionKey.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;;;;GAKG;AACH,qBAAa,0BAA2B,SAAQ,iBAAiB;IACxD,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,cAAc,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ProtectedDataEncryptionKey.d.ts","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKey/ProtectedDataEncryptionKey.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;;;;GAKG;AACH,qBAAa,0BAA2B,SAAQ,iBAAiB;IACxD,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,cAAc,EAAE,MAAM,CAAC;gBAG5B,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM;CAOvB"}
|
|
@@ -8,6 +8,8 @@ import { DataEncryptionKey } from "./DataEncryptionKey.js";
|
|
|
8
8
|
* @hidden
|
|
9
9
|
*/
|
|
10
10
|
export class ProtectedDataEncryptionKey extends DataEncryptionKey {
|
|
11
|
+
keyEncryptionKey;
|
|
12
|
+
encryptedValue;
|
|
11
13
|
constructor(name, keyEncryptionKey, rawKey, encryptedKey) {
|
|
12
14
|
super(rawKey, name);
|
|
13
15
|
this.name = name;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtectedDataEncryptionKey.js","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKey/ProtectedDataEncryptionKey.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D;;;;;GAKG;AACH,MAAM,OAAO,0BAA2B,SAAQ,iBAAiB;
|
|
1
|
+
{"version":3,"file":"ProtectedDataEncryptionKey.js","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKey/ProtectedDataEncryptionKey.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D;;;;;GAKG;AACH,MAAM,OAAO,0BAA2B,SAAQ,iBAAiB;IACxD,gBAAgB,CAAmB;IAEnC,cAAc,CAAS;IAE9B,YACE,IAAY,EACZ,gBAAkC,EAClC,MAAc,EACd,YAAoB;QAEpB,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;IACrC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DataEncryptionKey } from \"./DataEncryptionKey.js\";\nimport type { KeyEncryptionKey } from \"../KeyEncryptionKey.js\";\n\n/**\n * A wrapper class around `DataEncryptionKey` that stores it in a protected form.\n * The `ProtectedDataEncryptionKey` class extends `DataEncryptionKey` and holds both the raw key and its encrypted form.\n * It also includes information about the `KeyEncryptionKey` used to encrypt the data encryption key.\n * @hidden\n */\nexport class ProtectedDataEncryptionKey extends DataEncryptionKey {\n public keyEncryptionKey: KeyEncryptionKey;\n\n public encryptedValue: Buffer;\n\n public constructor(\n name: string,\n keyEncryptionKey: KeyEncryptionKey,\n rawKey: Buffer,\n encryptedKey: Buffer,\n ) {\n super(rawKey, name);\n this.name = name;\n this.keyEncryptionKey = keyEncryptionKey;\n this.encryptedValue = encryptedKey;\n }\n}\n"]}
|
|
@@ -7,14 +7,15 @@ import { EncryptionKeyResolverName } from "../enums/index.js";
|
|
|
7
7
|
* Implementation of EncryptionKeyResolver that uses Azure Key Vault for customer managed keys.
|
|
8
8
|
*/
|
|
9
9
|
export class AzureKeyVaultEncryptionKeyResolver {
|
|
10
|
+
credentials;
|
|
10
11
|
constructor(credentials) {
|
|
11
|
-
/**
|
|
12
|
-
* Name of the resolver to use for client side encryption.
|
|
13
|
-
* Currently only AzureKeyVault implementation is supported.
|
|
14
|
-
*/
|
|
15
|
-
this.encryptionKeyResolverName = EncryptionKeyResolverName.AzureKeyVault;
|
|
16
12
|
this.credentials = credentials;
|
|
17
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Name of the resolver to use for client side encryption.
|
|
16
|
+
* Currently only AzureKeyVault implementation is supported.
|
|
17
|
+
*/
|
|
18
|
+
encryptionKeyResolverName = EncryptionKeyResolverName.AzureKeyVault;
|
|
18
19
|
/**
|
|
19
20
|
* wraps the given key using the specified key encryption key path and algorithm.
|
|
20
21
|
* @param encryptionKeyId - path to the customer managed key to be used for wrapping. For Azure Key Vault, this is url of the key in the vault.
|
package/dist/browser/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureKeyVaultEncryptionKeyResolver.js","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;GAEG;AACH,MAAM,OAAO,kCAAkC;
|
|
1
|
+
{"version":3,"file":"AzureKeyVaultEncryptionKeyResolver.js","sourceRoot":"","sources":["../../../../src/encryption/EncryptionKeyResolver/AzureKeyVaultEncryptionKeyResolver.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { TokenCredential } from \"@azure/core-auth\";\nimport type { EncryptionKeyResolver } from \"./EncryptionKeyResolver.js\";\nimport type { KeyWrapAlgorithm } from \"@azure/keyvault-keys\";\nimport { KeyClient } from \"@azure/keyvault-keys\";\nimport { ErrorResponse } from \"../../request/index.js\";\nimport { EncryptionKeyResolverName } from \"../enums/index.js\";\n\n/**\n * Implementation of EncryptionKeyResolver that uses Azure Key Vault for customer managed keys.\n */\nexport class AzureKeyVaultEncryptionKeyResolver implements EncryptionKeyResolver {\n private credentials: TokenCredential;\n\n constructor(credentials: TokenCredential) {\n this.credentials = credentials;\n }\n /**\n * Name of the resolver to use for client side encryption.\n * Currently only AzureKeyVault implementation is supported.\n */\n public encryptionKeyResolverName = EncryptionKeyResolverName.AzureKeyVault;\n /**\n * wraps the given key using the specified key encryption key path and algorithm.\n * @param encryptionKeyId - path to the customer managed key to be used for wrapping. For Azure Key Vault, this is url of the key in the vault.\n * @param algorithm - algorithm to be used for wrapping.\n * @param unwrappedKey - dek to be wrapped.\n * @returns wrapped DEK.\n */\n public async wrapKey(\n encryptionKeyId: string,\n algorithm: string,\n unwrappedKey: Uint8Array,\n ): Promise<Uint8Array> {\n try {\n const origin = this.getOrigin(encryptionKeyId);\n const keyClient = new KeyClient(origin, this.credentials);\n const [keyName, keyVersion] = this.getKeyDetails(encryptionKeyId);\n const cryptographyClient = keyClient.getCryptographyClient(keyName, {\n keyVersion: keyVersion,\n });\n const res = await cryptographyClient.wrapKey(algorithm as KeyWrapAlgorithm, unwrappedKey);\n if (!res || !res.result) {\n throw new ErrorResponse(`Failed to wrap key: ${res}`);\n }\n return res.result;\n } catch (e) {\n throw new ErrorResponse(`Failed to wrap key: ${e.message}`);\n }\n }\n /**\n * Unwraps the given wrapped key using the specified key encryption key path and algorithm.\n * @param encryptionKeyId - path to the customer managed key to be used for unwrapping. For Azure Key Vault, this is url of the key in the vault.\n * @param algorithm - algorithm to be used for unwrapping.\n * @param wrappedKey - wrapped DEK.\n * @returns unwrapped DEK.\n */\n public async unwrapKey(\n encryptionKeyId: string,\n algorithm: string,\n wrappedKey: Uint8Array,\n ): Promise<Uint8Array> {\n try {\n const origin = this.getOrigin(encryptionKeyId);\n const keyClient = new KeyClient(origin, this.credentials);\n const [keyName, keyVersion] = this.getKeyDetails(encryptionKeyId);\n const cryptographyClient = keyClient.getCryptographyClient(keyName, {\n keyVersion: keyVersion,\n });\n const res = await cryptographyClient.unwrapKey(algorithm as KeyWrapAlgorithm, wrappedKey);\n if (!res || !res.result) {\n throw new ErrorResponse(`Failed to wrap key: ${res}`);\n }\n return res.result;\n } catch (e) {\n throw new ErrorResponse(`Failed to unwrap key: ${e.message}`);\n }\n }\n // TODO: improve this method to extract key name and version from the url\n private getKeyDetails(encryptionKeyId: string): [string, string] {\n let url;\n try {\n url = new URL(encryptionKeyId);\n const parts = url.pathname.split(\"/\");\n if (parts.length < 4 || parts.length > 5) {\n throw new ErrorResponse(\n `Invalid key url: ${encryptionKeyId}. Key url must be in the format https://<vault>.vault.azure.net/keys/<key-name>/<key-version>`,\n );\n }\n if (parts.length === 4 || parts.length === 5) {\n return [parts[2], parts[3]];\n }\n } catch (e) {\n throw new ErrorResponse(\n `Invalid key url: ${encryptionKeyId}. Key url must be in the format https://<vault>.vault.azure.net/keys/<key-name>/<key-version>. Error: ${e.message}`,\n );\n }\n }\n\n private getOrigin(encryptionKeyId: string): string {\n try {\n const url = new URL(encryptionKeyId);\n return url.origin;\n } catch (e) {\n throw new ErrorResponse(\n `Invalid key url: ${encryptionKeyId}. Key url must be in the format https://<vault>.vault.azure.net/keys/<key-name>/<key-version>. Error: ${e.message}`,\n );\n }\n }\n}\n"]}
|
|
@@ -6,10 +6,17 @@ import { startBackgroundTask } from "../utils/time.js";
|
|
|
6
6
|
* Class to store encryption keys in unwrapped form and provide an interface for wrapping and unwrapping the keys.
|
|
7
7
|
*/
|
|
8
8
|
export class EncryptionKeyStoreProvider {
|
|
9
|
+
keyEncryptionKeyResolver;
|
|
10
|
+
cacheTimeToLive;
|
|
11
|
+
RsaOaepEncryptionAlgorithm = "RSA-OAEP";
|
|
12
|
+
// interval for clear cache to run
|
|
13
|
+
cacheRefresher;
|
|
14
|
+
// cache to store the unwrapped encryption key. Key is the path of the encryption key
|
|
15
|
+
unwrappedEncryptionKeyCache;
|
|
16
|
+
providerName;
|
|
9
17
|
constructor(keyEncryptionKeyResolver, cacheTimeToLive) {
|
|
10
18
|
this.keyEncryptionKeyResolver = keyEncryptionKeyResolver;
|
|
11
19
|
this.cacheTimeToLive = cacheTimeToLive;
|
|
12
|
-
this.RsaOaepEncryptionAlgorithm = "RSA-OAEP";
|
|
13
20
|
this.keyEncryptionKeyResolver = keyEncryptionKeyResolver;
|
|
14
21
|
this.providerName = keyEncryptionKeyResolver.encryptionKeyResolverName;
|
|
15
22
|
this.unwrappedEncryptionKeyCache = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionKeyStoreProvider.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionKeyStoreProvider.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD;;GAEG;AACH,MAAM,OAAO,0BAA0B;
|
|
1
|
+
{"version":3,"file":"EncryptionKeyStoreProvider.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionKeyStoreProvider.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD;;GAEG;AACH,MAAM,OAAO,0BAA0B;IAS3B;IACA;IATH,0BAA0B,GAAW,UAAU,CAAC;IACvD,kCAAkC;IAClC,cAAc,CAAiB;IAE/B,qFAAqF;IAC9E,2BAA2B,CAAoC;IAC/D,YAAY,CAAS;IAC5B,YACU,wBAA+C,EAC/C,eAAuB;QADvB,6BAAwB,GAAxB,wBAAwB,CAAuB;QAC/C,oBAAe,GAAf,eAAe,CAAQ;QAE/B,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC,yBAAyB,CAAC;QACvE,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,eAAuB,EACvB,SAAiC,EACjC,GAAW;QAEX,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CACtE,eAAe,EACf,SAAS,EACT,aAAa,CACd,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,eAAuB,EACvB,SAAiC,EACjC,UAAkB;QAElB,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAS,CACvD,eAAe,EACf,SAAS,EACT,UAAU,CACX,CAAC;YACF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,EAAE,CAAC;YACvD,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;YACxD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAS,CACtE,eAAe,EACf,SAAS,EACT,oBAAoB,CACrB,CAAC;YACF,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACjE,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC,KAAK,IAAI,EAAE;YACnD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACnD,IACE,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;oBAClE,IAAI,CAAC,eAAe,EACpB,CAAC;oBACD,OAAO,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC,EAAE,SAAS,CAAC,kCAAkC,CAAC,CAAC;IACnD,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"../common/index.js\";\nimport { startBackgroundTask } from \"../utils/time.js\";\nimport type { EncryptionKeyResolver } from \"./EncryptionKeyResolver/index.js\";\nimport type { KeyEncryptionAlgorithm } from \"./enums/index.js\";\n/**\n * Class to store encryption keys in unwrapped form and provide an interface for wrapping and unwrapping the keys.\n */\nexport class EncryptionKeyStoreProvider {\n public RsaOaepEncryptionAlgorithm: string = \"RSA-OAEP\";\n // interval for clear cache to run\n cacheRefresher: NodeJS.Timeout;\n\n // cache to store the unwrapped encryption key. Key is the path of the encryption key\n public unwrappedEncryptionKeyCache: { [key: string]: [Date, Buffer] };\n public providerName: string;\n constructor(\n private keyEncryptionKeyResolver: EncryptionKeyResolver,\n private cacheTimeToLive: number,\n ) {\n this.keyEncryptionKeyResolver = keyEncryptionKeyResolver;\n this.providerName = keyEncryptionKeyResolver.encryptionKeyResolverName;\n this.unwrappedEncryptionKeyCache = {};\n this.cacheTimeToLive = cacheTimeToLive;\n this.clearCacheOnTtlExpiry();\n }\n\n public async wrapKey(\n encryptionKeyId: string,\n algorithm: KeyEncryptionAlgorithm,\n key: Buffer,\n ): Promise<Buffer> {\n const uInt8ArrayKey = new Uint8Array(key);\n const wrappedEncryptionKey = await this.keyEncryptionKeyResolver.wrapKey(\n encryptionKeyId,\n algorithm,\n uInt8ArrayKey,\n );\n return Buffer.from(wrappedEncryptionKey);\n }\n\n public async unwrapKey(\n encryptionKeyId: string,\n algorithm: KeyEncryptionAlgorithm,\n wrappedKey: Buffer,\n ): Promise<Buffer> {\n if (this.cacheTimeToLive === 0) {\n const res = await this.keyEncryptionKeyResolver.unwrapKey(\n encryptionKeyId,\n algorithm,\n wrappedKey,\n );\n return Buffer.from(res);\n }\n if (!this.unwrappedEncryptionKeyCache[encryptionKeyId]) {\n const wrappedKeyUint8Array = new Uint8Array(wrappedKey);\n const plainEncryptionKey = await this.keyEncryptionKeyResolver.unwrapKey(\n encryptionKeyId,\n algorithm,\n wrappedKeyUint8Array,\n );\n const plainEncryptionKeyBuffer = Buffer.from(plainEncryptionKey);\n this.unwrappedEncryptionKeyCache[encryptionKeyId] = [new Date(), plainEncryptionKeyBuffer];\n }\n return this.unwrappedEncryptionKeyCache[encryptionKeyId][1];\n }\n\n private async clearCacheOnTtlExpiry(): Promise<void> {\n this.cacheRefresher = startBackgroundTask(async () => {\n const now = new Date();\n for (const key in this.unwrappedEncryptionKeyCache) {\n if (\n now.getTime() - this.unwrappedEncryptionKeyCache[key][0].getTime() >\n this.cacheTimeToLive\n ) {\n delete this.unwrappedEncryptionKeyCache[key];\n }\n }\n }, Constants.EncryptionCacheRefreshIntervalInMs);\n }\n}\n"]}
|
|
@@ -11,6 +11,12 @@ import { Constants } from "../common/constants.js";
|
|
|
11
11
|
* @hidden
|
|
12
12
|
*/
|
|
13
13
|
export class EncryptionManager {
|
|
14
|
+
cacheTimeToLive;
|
|
15
|
+
encryptionKeyStoreProvider;
|
|
16
|
+
protectedDataEncryptionKeyCache;
|
|
17
|
+
keyEncryptionKeyCache;
|
|
18
|
+
encryptionSettingsCache;
|
|
19
|
+
clientEncryptionKeyPropertiesCache;
|
|
14
20
|
constructor(encryptionKeyResolver, cacheTimeToLive) {
|
|
15
21
|
this.cacheTimeToLive =
|
|
16
22
|
cacheTimeToLive !== undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionManager.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionManager.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,kCAAkC,EAAE,MAAM,+CAA+C,CAAC;AACnG,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD;;;GAGG;AACH,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"EncryptionManager.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionManager.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,kCAAkC,EAAE,MAAM,+CAA+C,CAAC;AACnG,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACrB,eAAe,CAAS;IACxB,0BAA0B,CAA6B;IACvD,+BAA+B,CAAkC;IACjE,qBAAqB,CAAwB;IAC7C,uBAAuB,CAA0B;IACjD,kCAAkC,CAAqC;IAE9E,YAAY,qBAA4C,EAAE,eAAwB;QAChF,IAAI,CAAC,eAAe;YAClB,eAAe,KAAK,SAAS;gBAC3B,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,SAAS,CAAC,yCAAyC,CAAC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAI,CAAC,0BAA0B,GAAG,IAAI,0BAA0B,CAC9D,qBAAqB,EACrB,YAAY,CACb,CAAC;QACF,IAAI,CAAC,+BAA+B,GAAG,IAAI,+BAA+B,CAAC,YAAY,CAAC,CAAC;QACzF,IAAI,CAAC,qBAAqB,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACzD,IAAI,CAAC,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC7D,IAAI,CAAC,kCAAkC,GAAG,IAAI,kCAAkC,EAAE,CAAC;IACrF,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,MAAM,qBAAqB,GAAG,IAAI,CAAC;QACnC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,CAAC;IAC9D,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ProtectedDataEncryptionKeyCache } from \"./Cache/ProtectedDataEncryptionKeyCache.js\";\nimport { KeyEncryptionKeyCache } from \"./Cache/KeyEncryptionKeyCache.js\";\nimport { EncryptionSettingsCache } from \"./Cache/EncryptionSettingsCache.js\";\nimport { ClientEncryptionKeyPropertiesCache } from \"./Cache/ClientEncryptionKeyPropertiesCache.js\";\nimport { EncryptionKeyStoreProvider } from \"./EncryptionKeyStoreProvider.js\";\nimport { Constants } from \"../common/constants.js\";\nimport type { EncryptionKeyResolver } from \"./EncryptionKeyResolver/index.js\";\n/**\n * Cache manager for encryption related caches.\n * @hidden\n */\nexport class EncryptionManager {\n public cacheTimeToLive: number;\n public encryptionKeyStoreProvider: EncryptionKeyStoreProvider;\n public protectedDataEncryptionKeyCache: ProtectedDataEncryptionKeyCache;\n public keyEncryptionKeyCache: KeyEncryptionKeyCache;\n public encryptionSettingsCache: EncryptionSettingsCache;\n public clientEncryptionKeyPropertiesCache: ClientEncryptionKeyPropertiesCache;\n\n constructor(encryptionKeyResolver: EncryptionKeyResolver, cacheTimeToLive?: number) {\n this.cacheTimeToLive =\n cacheTimeToLive !== undefined\n ? cacheTimeToLive\n : Constants.DefaultEncryptionCacheTimeToLiveInSeconds;\n const cacheTtlInMs = this.getCacheTTlInMs();\n this.encryptionKeyStoreProvider = new EncryptionKeyStoreProvider(\n encryptionKeyResolver,\n cacheTtlInMs,\n );\n this.protectedDataEncryptionKeyCache = new ProtectedDataEncryptionKeyCache(cacheTtlInMs);\n this.keyEncryptionKeyCache = new KeyEncryptionKeyCache();\n this.encryptionSettingsCache = new EncryptionSettingsCache();\n this.clientEncryptionKeyPropertiesCache = new ClientEncryptionKeyPropertiesCache();\n }\n\n /**\n * Converts the EncryptionTimeToLive instance to a number (milliseconds).\n */\n private getCacheTTlInMs(): number {\n const millisecondsPerSecond = 1000;\n return Number(this.cacheTimeToLive * millisecondsPerSecond);\n }\n}\n"]}
|
|
@@ -4,6 +4,11 @@ import { Constants, ResourceType, StatusCodes, createDeserializer, createSeriali
|
|
|
4
4
|
import { ErrorResponse } from "../request/index.js";
|
|
5
5
|
import { withDiagnostics } from "../utils/diagnostics.js";
|
|
6
6
|
export class EncryptionProcessor {
|
|
7
|
+
containerId;
|
|
8
|
+
containerRid;
|
|
9
|
+
database;
|
|
10
|
+
clientContext;
|
|
11
|
+
encryptionManager;
|
|
7
12
|
constructor(containerId, containerRid, database, clientContext, encryptionManager) {
|
|
8
13
|
this.containerId = containerId;
|
|
9
14
|
this.containerRid = containerRid;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionProcessor.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionSettings } from \"./EncryptionSettings.js\";\nimport type { EncryptionSettingForProperty } from \"./EncryptionSettingForProperty.js\";\nimport type { AeadAes256CbcHmacSha256Algorithm } from \"./AeadAes256CbcHmacSha256Algorithm/index.js\";\nimport type { ContainerDefinition, Database, ItemDefinition } from \"../client/index.js\";\nimport type { PartitionKeyInternal } from \"../documents/index.js\";\nimport type { TypeMarker } from \"./enums/TypeMarker.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport type { ClientEncryptionKeyRequest } from \"./ClientEncryptionKey/index.js\";\nimport type { ClientEncryptionKeyProperties } from \"./ClientEncryptionKey/index.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport {\n Constants,\n ResourceType,\n StatusCodes,\n createDeserializer,\n createSerializer,\n extractPath,\n} from \"../common/index.js\";\nimport type { RequestOptions } from \"../request/index.js\";\nimport { ErrorResponse } from \"../request/index.js\";\nimport { withDiagnostics } from \"../utils/diagnostics.js\";\nimport type { EncryptionManager } from \"./EncryptionManager.js\";\nimport type { JSONValue } from \"../queryExecutionContext/index.js\";\n\nexport class EncryptionProcessor {\n constructor(\n private readonly containerId: string,\n public containerRid: string,\n private readonly database: Database,\n private readonly clientContext: ClientContext,\n private encryptionManager: EncryptionManager,\n ) {}\n\n async encrypt<T extends ItemDefinition>(\n body: T,\n ): Promise<{ body: T; propertiesEncryptedCount: number }> {\n if (!body) {\n throw new ErrorResponse(\"Input body is null or undefined.\");\n }\n let propertiesEncryptedCount = 0;\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return { body, propertiesEncryptedCount };\n for (const pathToEncrypt of encryptionSettings.pathsToEncrypt) {\n const propertyName = pathToEncrypt.slice(1);\n if (!Object.prototype.hasOwnProperty.call(body, propertyName)) {\n continue;\n }\n\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(pathToEncrypt);\n if (!settingForProperty) {\n throw new ErrorResponse(\"Invalid Encryption Setting for the Property: \" + propertyName);\n }\n body[propertyName as keyof T] = await this.encryptToken(\n body[propertyName],\n settingForProperty,\n propertyName === \"id\",\n );\n propertiesEncryptedCount++;\n }\n return { body, propertiesEncryptedCount };\n }\n\n async isPathEncrypted(path: string): Promise<boolean> {\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) return false;\n return true;\n }\n\n async encryptProperty(path: string, value: JSONValue): Promise<any> {\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return value;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) {\n return value;\n }\n\n value = await this.encryptToken(value, settingForProperty, path === \"/id\");\n return value;\n }\n\n async getEncryptedPartitionKeyValue(\n partitionKeyList: PartitionKeyInternal,\n ): Promise<{ partitionKeyList: PartitionKeyInternal; encryptedCount: number }> {\n const encryptionSettings = await this.getEncryptionSetting();\n let encryptedCount = 0;\n if (!encryptionSettings) return { partitionKeyList, encryptedCount };\n const partitionKeyPaths = encryptionSettings.partitionKeyPaths;\n for (let i = 0; i < partitionKeyPaths.length; i++) {\n const partitionKeyPath = extractPath(partitionKeyPaths[i]);\n if (encryptionSettings.pathsToEncrypt.includes(partitionKeyPath)) {\n const settingForProperty =\n encryptionSettings.getEncryptionSettingForProperty(partitionKeyPath);\n partitionKeyList[i] = await this.encryptToken(\n partitionKeyList[i],\n settingForProperty,\n partitionKeyPath === \"/id\",\n );\n encryptedCount++;\n }\n }\n return { partitionKeyList, encryptedCount };\n }\n\n async getEncryptedUrl(id: string): Promise<string> {\n const parts = id.split(\"/\");\n const lastPart = parts[parts.length - 1];\n const encryptedLastPart = await this.getEncryptedId(lastPart);\n parts[parts.length - 1] = encryptedLastPart;\n return parts.join(\"/\");\n }\n\n async getEncryptedId(id: string): Promise<string> {\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return id;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(\"/id\");\n\n if (!settingForProperty) return id;\n id = await this.encryptToken(id, settingForProperty, true);\n return id;\n }\n\n async encryptQueryParameter(\n path: string,\n value: JSONValue,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<JSONValue> {\n if (value === null) {\n return value;\n }\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return value;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) {\n return value;\n }\n return this.encryptToken(value, settingForProperty, isValueId, type);\n }\n\n private async encryptToken(\n valueToEncrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<any> {\n if (typeof valueToEncrypt === \"object\" && valueToEncrypt !== null) {\n for (const key in valueToEncrypt) {\n if (Object.prototype.hasOwnProperty.call(valueToEncrypt, key)) {\n valueToEncrypt[key] = await this.encryptToken(\n valueToEncrypt[key],\n propertySetting,\n isValueId,\n type,\n );\n }\n }\n } else if (Array.isArray(type)) {\n for (let i = 0; i < valueToEncrypt.length; i++) {\n valueToEncrypt[i] = await this.encryptToken(\n valueToEncrypt[i],\n propertySetting,\n isValueId,\n type,\n );\n }\n } else {\n valueToEncrypt = await this.serializeAndEncryptValue(\n valueToEncrypt,\n propertySetting,\n isValueId,\n type,\n );\n }\n return valueToEncrypt;\n }\n\n private async serializeAndEncryptValue(\n valueToEncrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<string> {\n if (valueToEncrypt === null) {\n return valueToEncrypt;\n }\n const [typeMarker, serializer] = createSerializer(valueToEncrypt, type);\n const plainText = serializer.serialize(valueToEncrypt);\n const encryptionAlgorithm = await this.buildEncryptionAlgorithm(propertySetting);\n const cipherText = encryptionAlgorithm.encrypt(plainText);\n if (isValueId) {\n if (typeof valueToEncrypt !== \"string\") {\n throw new ErrorResponse(\"The id should be of string type.\");\n }\n }\n\n const cipherTextWithTypeMarker = Buffer.alloc(cipherText.length + 1);\n cipherTextWithTypeMarker[0] = typeMarker;\n cipherText.forEach((value, index) => {\n cipherTextWithTypeMarker[index + 1] = value;\n });\n let encryptedValue = Buffer.from(cipherTextWithTypeMarker).toString(\"base64\");\n if (isValueId) {\n encryptedValue = encryptedValue.replace(/\\//g, \"_\").replace(/\\+/g, \"-\");\n }\n return encryptedValue;\n }\n\n async decrypt<T extends ItemDefinition>(\n body: T,\n ): Promise<{ body: T; propertiesDecryptedCount: number }> {\n let propertiesDecryptedCount = 0;\n if (body == null) {\n return { body, propertiesDecryptedCount };\n }\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return { body, propertiesDecryptedCount };\n for (const pathToEncrypt of encryptionSettings.pathsToEncrypt) {\n const propertyName = pathToEncrypt.slice(1);\n if (!Object.prototype.hasOwnProperty.call(body, propertyName)) {\n continue;\n }\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(pathToEncrypt);\n if (settingForProperty == null) {\n throw new ErrorResponse(\"Invalid Encryption Setting for the Path: \" + pathToEncrypt);\n }\n\n body[propertyName as keyof T] = await this.decryptToken(\n body[propertyName],\n settingForProperty,\n propertyName === \"id\",\n );\n propertiesDecryptedCount++;\n }\n return { body, propertiesDecryptedCount };\n }\n\n private async decryptToken(\n valueToDecrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n ): Promise<any> {\n if (typeof valueToDecrypt === \"object\") {\n for (const key in valueToDecrypt) {\n if (Object.prototype.hasOwnProperty.call(valueToDecrypt, key)) {\n valueToDecrypt[key] = await this.decryptToken(\n valueToDecrypt[key],\n propertySetting,\n isValueId,\n );\n }\n }\n } else if (Array.isArray(valueToDecrypt)) {\n for (let i = 0; i < valueToDecrypt.length; i++) {\n valueToDecrypt[i] = await this.decryptToken(valueToDecrypt[i], propertySetting, isValueId);\n }\n } else {\n valueToDecrypt = await this.deserializeAndDecryptValue(\n valueToDecrypt,\n propertySetting,\n isValueId,\n );\n }\n return valueToDecrypt;\n }\n\n private async deserializeAndDecryptValue(\n valueToDecrypt: string,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n ): Promise<any> {\n if (isValueId) {\n valueToDecrypt = valueToDecrypt.replace(/_/g, \"/\").replace(/-/g, \"+\");\n }\n const cipherTextWithTypeMarker = Buffer.from(valueToDecrypt, \"base64\");\n if (cipherTextWithTypeMarker === null) {\n return null;\n }\n\n let cipherText = Buffer.alloc(cipherTextWithTypeMarker.length - 1);\n cipherText = Buffer.from(cipherTextWithTypeMarker.slice(1));\n\n const encryptionAlgorithm = await this.buildEncryptionAlgorithm(propertySetting);\n const plainText = encryptionAlgorithm.decrypt(cipherText);\n if (plainText === null) {\n throw new ErrorResponse(\"returned null plain text\");\n }\n\n const serializer = createDeserializer(cipherTextWithTypeMarker[0] as TypeMarker);\n return serializer.deserialize(plainText);\n }\n\n async getEncryptionSetting(forceRefresh?: boolean): Promise<EncryptionSettings> {\n const key = this.database._rid + \"/\" + this.containerRid;\n const encryptionSetting = this.encryptionManager.encryptionSettingsCache.get(key);\n if (forceRefresh || !encryptionSetting) {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = `/dbs/${this.database.id}/colls/${this.containerId}`;\n const id = `dbs/${this.database.id}/colls/${this.containerId}`;\n const response = await this.clientContext.read<ContainerDefinition>({\n path,\n resourceType: ResourceType.container,\n resourceId: id,\n diagnosticNode,\n });\n if (!response || !response.result) {\n throw new ErrorResponse(\"Failed to fetch container definition\");\n }\n const containerRid = response.result._rid;\n const clientEncryptionPolicy = response.result.clientEncryptionPolicy;\n const partitionKeyPaths = response.result.partitionKey.paths;\n const updatedEncryptionSetting =\n await this.encryptionManager.encryptionSettingsCache.create(\n key,\n containerRid,\n partitionKeyPaths,\n clientEncryptionPolicy,\n );\n return updatedEncryptionSetting;\n }, this.clientContext);\n }\n return encryptionSetting;\n }\n\n private async buildEncryptionAlgorithm(\n propertySetting: EncryptionSettingForProperty,\n ): Promise<AeadAes256CbcHmacSha256Algorithm> {\n const key = `${this.database._rid}/${propertySetting.encryptionKeyId}`;\n let clientEncryptionKeyProperties =\n this.encryptionManager.clientEncryptionKeyPropertiesCache.get(key);\n if (!clientEncryptionKeyProperties) {\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n );\n }\n try {\n // the buildEncryptionAlgorithm will build ProtectedDEK which calls unwrapKey using the masterKey configured in\n // KeyEncryptionKey(created before creating Protected DEK)\n // we get wrapped key and key wrap metadata info from clientEncryptionKeyProperties.\n return await propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n );\n } catch (err) {\n if (err.statusCode !== StatusCodes.Forbidden) throw err;\n // if access to key is revoked, and in case there's stale value in cache\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n );\n\n try {\n // This will succeed after if client has rewrapped CEK and gateway cache has updated value.\n return await propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n true,\n );\n } catch (retryErr) {\n if (retryErr.statusCode !== StatusCodes.Forbidden) throw retryErr;\n\n // in case there's stale value in gateway cache. get fresh value from backend\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n clientEncryptionKeyProperties.etag,\n );\n return propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n );\n }\n }\n }\n\n private async fetchClientEncryptionKey(\n cekId: string,\n cekEtag?: string,\n ): Promise<ClientEncryptionKeyProperties> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = `/dbs/${this.database.id}/clientencryptionkeys/${cekId}`;\n const id = `dbs/${this.database.id}/clientencryptionkeys/${cekId}`;\n const options: RequestOptions = {};\n if (cekEtag) {\n options.accessCondition = {\n type: Constants.HttpHeaders.IfNoneMatch,\n condition: cekEtag,\n };\n }\n options.databaseRid = this.database._rid;\n const response = await this.clientContext.read<ClientEncryptionKeyRequest>({\n path: path,\n resourceType: ResourceType.clientencryptionkey,\n resourceId: id,\n options: options,\n diagnosticNode,\n });\n if (!response) {\n throw new ErrorResponse(`Failed to fetch client encryption key ${cekId}`);\n }\n if (response.code === StatusCodes.NotModified) {\n throw new ErrorResponse(\n `The Client Encryption Key with key id: ${cekId} on database: ${this.database.id} needs to be rewrapped with a valid Key Encryption Key using rewrapClientEncryptionKey. The Key Encryption Key used to wrap the Client Encryption Key has been revoked`,\n );\n }\n const clientEncryptionKeyProperties: ClientEncryptionKeyProperties = {\n id: response.result.id,\n encryptionAlgorithm: response.result.encryptionAlgorithm,\n wrappedDataEncryptionKey: new Uint8Array(\n Buffer.from(response.result.wrappedDataEncryptionKey, \"base64\"),\n ),\n encryptionKeyWrapMetadata: response.result.keyWrapMetadata,\n etag: response.result._etag,\n };\n const key = this.database._rid + \"/\" + cekId;\n this.encryptionManager.clientEncryptionKeyPropertiesCache.set(\n key,\n clientEncryptionKeyProperties,\n );\n return clientEncryptionKeyProperties;\n }, this.clientContext);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"EncryptionProcessor.js","sourceRoot":"","sources":["../../../src/encryption/EncryptionProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { EncryptionSettings } from \"./EncryptionSettings.js\";\nimport type { EncryptionSettingForProperty } from \"./EncryptionSettingForProperty.js\";\nimport type { AeadAes256CbcHmacSha256Algorithm } from \"./AeadAes256CbcHmacSha256Algorithm/index.js\";\nimport type { ContainerDefinition, Database, ItemDefinition } from \"../client/index.js\";\nimport type { PartitionKeyInternal } from \"../documents/index.js\";\nimport type { TypeMarker } from \"./enums/TypeMarker.js\";\nimport type { ClientContext } from \"../ClientContext.js\";\nimport type { ClientEncryptionKeyRequest } from \"./ClientEncryptionKey/index.js\";\nimport type { ClientEncryptionKeyProperties } from \"./ClientEncryptionKey/index.js\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal.js\";\nimport {\n Constants,\n ResourceType,\n StatusCodes,\n createDeserializer,\n createSerializer,\n extractPath,\n} from \"../common/index.js\";\nimport type { RequestOptions } from \"../request/index.js\";\nimport { ErrorResponse } from \"../request/index.js\";\nimport { withDiagnostics } from \"../utils/diagnostics.js\";\nimport type { EncryptionManager } from \"./EncryptionManager.js\";\nimport type { JSONValue } from \"../queryExecutionContext/index.js\";\n\nexport class EncryptionProcessor {\n constructor(\n private readonly containerId: string,\n public containerRid: string,\n private readonly database: Database,\n private readonly clientContext: ClientContext,\n private encryptionManager: EncryptionManager,\n ) {}\n\n async encrypt<T extends ItemDefinition>(\n body: T,\n ): Promise<{ body: T; propertiesEncryptedCount: number }> {\n if (!body) {\n throw new ErrorResponse(\"Input body is null or undefined.\");\n }\n let propertiesEncryptedCount = 0;\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return { body, propertiesEncryptedCount };\n for (const pathToEncrypt of encryptionSettings.pathsToEncrypt) {\n const propertyName = pathToEncrypt.slice(1);\n if (!Object.prototype.hasOwnProperty.call(body, propertyName)) {\n continue;\n }\n\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(pathToEncrypt);\n if (!settingForProperty) {\n throw new ErrorResponse(\"Invalid Encryption Setting for the Property: \" + propertyName);\n }\n body[propertyName as keyof T] = await this.encryptToken(\n body[propertyName],\n settingForProperty,\n propertyName === \"id\",\n );\n propertiesEncryptedCount++;\n }\n return { body, propertiesEncryptedCount };\n }\n\n async isPathEncrypted(path: string): Promise<boolean> {\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) return false;\n return true;\n }\n\n async encryptProperty(path: string, value: JSONValue): Promise<any> {\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return value;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) {\n return value;\n }\n\n value = await this.encryptToken(value, settingForProperty, path === \"/id\");\n return value;\n }\n\n async getEncryptedPartitionKeyValue(\n partitionKeyList: PartitionKeyInternal,\n ): Promise<{ partitionKeyList: PartitionKeyInternal; encryptedCount: number }> {\n const encryptionSettings = await this.getEncryptionSetting();\n let encryptedCount = 0;\n if (!encryptionSettings) return { partitionKeyList, encryptedCount };\n const partitionKeyPaths = encryptionSettings.partitionKeyPaths;\n for (let i = 0; i < partitionKeyPaths.length; i++) {\n const partitionKeyPath = extractPath(partitionKeyPaths[i]);\n if (encryptionSettings.pathsToEncrypt.includes(partitionKeyPath)) {\n const settingForProperty =\n encryptionSettings.getEncryptionSettingForProperty(partitionKeyPath);\n partitionKeyList[i] = await this.encryptToken(\n partitionKeyList[i],\n settingForProperty,\n partitionKeyPath === \"/id\",\n );\n encryptedCount++;\n }\n }\n return { partitionKeyList, encryptedCount };\n }\n\n async getEncryptedUrl(id: string): Promise<string> {\n const parts = id.split(\"/\");\n const lastPart = parts[parts.length - 1];\n const encryptedLastPart = await this.getEncryptedId(lastPart);\n parts[parts.length - 1] = encryptedLastPart;\n return parts.join(\"/\");\n }\n\n async getEncryptedId(id: string): Promise<string> {\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return id;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(\"/id\");\n\n if (!settingForProperty) return id;\n id = await this.encryptToken(id, settingForProperty, true);\n return id;\n }\n\n async encryptQueryParameter(\n path: string,\n value: JSONValue,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<JSONValue> {\n if (value === null) {\n return value;\n }\n path = extractPath(path);\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return value;\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(path);\n if (!settingForProperty) {\n return value;\n }\n return this.encryptToken(value, settingForProperty, isValueId, type);\n }\n\n private async encryptToken(\n valueToEncrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<any> {\n if (typeof valueToEncrypt === \"object\" && valueToEncrypt !== null) {\n for (const key in valueToEncrypt) {\n if (Object.prototype.hasOwnProperty.call(valueToEncrypt, key)) {\n valueToEncrypt[key] = await this.encryptToken(\n valueToEncrypt[key],\n propertySetting,\n isValueId,\n type,\n );\n }\n }\n } else if (Array.isArray(type)) {\n for (let i = 0; i < valueToEncrypt.length; i++) {\n valueToEncrypt[i] = await this.encryptToken(\n valueToEncrypt[i],\n propertySetting,\n isValueId,\n type,\n );\n }\n } else {\n valueToEncrypt = await this.serializeAndEncryptValue(\n valueToEncrypt,\n propertySetting,\n isValueId,\n type,\n );\n }\n return valueToEncrypt;\n }\n\n private async serializeAndEncryptValue(\n valueToEncrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n type?: TypeMarker,\n ): Promise<string> {\n if (valueToEncrypt === null) {\n return valueToEncrypt;\n }\n const [typeMarker, serializer] = createSerializer(valueToEncrypt, type);\n const plainText = serializer.serialize(valueToEncrypt);\n const encryptionAlgorithm = await this.buildEncryptionAlgorithm(propertySetting);\n const cipherText = encryptionAlgorithm.encrypt(plainText);\n if (isValueId) {\n if (typeof valueToEncrypt !== \"string\") {\n throw new ErrorResponse(\"The id should be of string type.\");\n }\n }\n\n const cipherTextWithTypeMarker = Buffer.alloc(cipherText.length + 1);\n cipherTextWithTypeMarker[0] = typeMarker;\n cipherText.forEach((value, index) => {\n cipherTextWithTypeMarker[index + 1] = value;\n });\n let encryptedValue = Buffer.from(cipherTextWithTypeMarker).toString(\"base64\");\n if (isValueId) {\n encryptedValue = encryptedValue.replace(/\\//g, \"_\").replace(/\\+/g, \"-\");\n }\n return encryptedValue;\n }\n\n async decrypt<T extends ItemDefinition>(\n body: T,\n ): Promise<{ body: T; propertiesDecryptedCount: number }> {\n let propertiesDecryptedCount = 0;\n if (body == null) {\n return { body, propertiesDecryptedCount };\n }\n const encryptionSettings = await this.getEncryptionSetting();\n if (!encryptionSettings) return { body, propertiesDecryptedCount };\n for (const pathToEncrypt of encryptionSettings.pathsToEncrypt) {\n const propertyName = pathToEncrypt.slice(1);\n if (!Object.prototype.hasOwnProperty.call(body, propertyName)) {\n continue;\n }\n const settingForProperty = encryptionSettings.getEncryptionSettingForProperty(pathToEncrypt);\n if (settingForProperty == null) {\n throw new ErrorResponse(\"Invalid Encryption Setting for the Path: \" + pathToEncrypt);\n }\n\n body[propertyName as keyof T] = await this.decryptToken(\n body[propertyName],\n settingForProperty,\n propertyName === \"id\",\n );\n propertiesDecryptedCount++;\n }\n return { body, propertiesDecryptedCount };\n }\n\n private async decryptToken(\n valueToDecrypt: any,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n ): Promise<any> {\n if (typeof valueToDecrypt === \"object\") {\n for (const key in valueToDecrypt) {\n if (Object.prototype.hasOwnProperty.call(valueToDecrypt, key)) {\n valueToDecrypt[key] = await this.decryptToken(\n valueToDecrypt[key],\n propertySetting,\n isValueId,\n );\n }\n }\n } else if (Array.isArray(valueToDecrypt)) {\n for (let i = 0; i < valueToDecrypt.length; i++) {\n valueToDecrypt[i] = await this.decryptToken(valueToDecrypt[i], propertySetting, isValueId);\n }\n } else {\n valueToDecrypt = await this.deserializeAndDecryptValue(\n valueToDecrypt,\n propertySetting,\n isValueId,\n );\n }\n return valueToDecrypt;\n }\n\n private async deserializeAndDecryptValue(\n valueToDecrypt: string,\n propertySetting: EncryptionSettingForProperty,\n isValueId: boolean,\n ): Promise<any> {\n if (isValueId) {\n valueToDecrypt = valueToDecrypt.replace(/_/g, \"/\").replace(/-/g, \"+\");\n }\n const cipherTextWithTypeMarker = Buffer.from(valueToDecrypt, \"base64\");\n if (cipherTextWithTypeMarker === null) {\n return null;\n }\n\n let cipherText = Buffer.alloc(cipherTextWithTypeMarker.length - 1);\n cipherText = Buffer.from(cipherTextWithTypeMarker.slice(1));\n\n const encryptionAlgorithm = await this.buildEncryptionAlgorithm(propertySetting);\n const plainText = encryptionAlgorithm.decrypt(cipherText);\n if (plainText === null) {\n throw new ErrorResponse(\"returned null plain text\");\n }\n\n const serializer = createDeserializer(cipherTextWithTypeMarker[0] as TypeMarker);\n return serializer.deserialize(plainText);\n }\n\n async getEncryptionSetting(forceRefresh?: boolean): Promise<EncryptionSettings> {\n const key = this.database._rid + \"/\" + this.containerRid;\n const encryptionSetting = this.encryptionManager.encryptionSettingsCache.get(key);\n if (forceRefresh || !encryptionSetting) {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = `/dbs/${this.database.id}/colls/${this.containerId}`;\n const id = `dbs/${this.database.id}/colls/${this.containerId}`;\n const response = await this.clientContext.read<ContainerDefinition>({\n path,\n resourceType: ResourceType.container,\n resourceId: id,\n diagnosticNode,\n });\n if (!response || !response.result) {\n throw new ErrorResponse(\"Failed to fetch container definition\");\n }\n const containerRid = response.result._rid;\n const clientEncryptionPolicy = response.result.clientEncryptionPolicy;\n const partitionKeyPaths = response.result.partitionKey.paths;\n const updatedEncryptionSetting =\n await this.encryptionManager.encryptionSettingsCache.create(\n key,\n containerRid,\n partitionKeyPaths,\n clientEncryptionPolicy,\n );\n return updatedEncryptionSetting;\n }, this.clientContext);\n }\n return encryptionSetting;\n }\n\n private async buildEncryptionAlgorithm(\n propertySetting: EncryptionSettingForProperty,\n ): Promise<AeadAes256CbcHmacSha256Algorithm> {\n const key = `${this.database._rid}/${propertySetting.encryptionKeyId}`;\n let clientEncryptionKeyProperties =\n this.encryptionManager.clientEncryptionKeyPropertiesCache.get(key);\n if (!clientEncryptionKeyProperties) {\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n );\n }\n try {\n // the buildEncryptionAlgorithm will build ProtectedDEK which calls unwrapKey using the masterKey configured in\n // KeyEncryptionKey(created before creating Protected DEK)\n // we get wrapped key and key wrap metadata info from clientEncryptionKeyProperties.\n return await propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n );\n } catch (err) {\n if (err.statusCode !== StatusCodes.Forbidden) throw err;\n // if access to key is revoked, and in case there's stale value in cache\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n );\n\n try {\n // This will succeed after if client has rewrapped CEK and gateway cache has updated value.\n return await propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n true,\n );\n } catch (retryErr) {\n if (retryErr.statusCode !== StatusCodes.Forbidden) throw retryErr;\n\n // in case there's stale value in gateway cache. get fresh value from backend\n clientEncryptionKeyProperties = await this.fetchClientEncryptionKey(\n propertySetting.encryptionKeyId,\n clientEncryptionKeyProperties.etag,\n );\n return propertySetting.buildEncryptionAlgorithm(\n clientEncryptionKeyProperties,\n this.encryptionManager,\n );\n }\n }\n }\n\n private async fetchClientEncryptionKey(\n cekId: string,\n cekEtag?: string,\n ): Promise<ClientEncryptionKeyProperties> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = `/dbs/${this.database.id}/clientencryptionkeys/${cekId}`;\n const id = `dbs/${this.database.id}/clientencryptionkeys/${cekId}`;\n const options: RequestOptions = {};\n if (cekEtag) {\n options.accessCondition = {\n type: Constants.HttpHeaders.IfNoneMatch,\n condition: cekEtag,\n };\n }\n options.databaseRid = this.database._rid;\n const response = await this.clientContext.read<ClientEncryptionKeyRequest>({\n path: path,\n resourceType: ResourceType.clientencryptionkey,\n resourceId: id,\n options: options,\n diagnosticNode,\n });\n if (!response) {\n throw new ErrorResponse(`Failed to fetch client encryption key ${cekId}`);\n }\n if (response.code === StatusCodes.NotModified) {\n throw new ErrorResponse(\n `The Client Encryption Key with key id: ${cekId} on database: ${this.database.id} needs to be rewrapped with a valid Key Encryption Key using rewrapClientEncryptionKey. The Key Encryption Key used to wrap the Client Encryption Key has been revoked`,\n );\n }\n const clientEncryptionKeyProperties: ClientEncryptionKeyProperties = {\n id: response.result.id,\n encryptionAlgorithm: response.result.encryptionAlgorithm,\n wrappedDataEncryptionKey: new Uint8Array(\n Buffer.from(response.result.wrappedDataEncryptionKey, \"base64\"),\n ),\n encryptionKeyWrapMetadata: response.result.keyWrapMetadata,\n etag: response.result._etag,\n };\n const key = this.database._rid + \"/\" + cekId;\n this.encryptionManager.clientEncryptionKeyPropertiesCache.set(\n key,\n clientEncryptionKeyProperties,\n );\n return clientEncryptionKeyProperties;\n }, this.clientContext);\n }\n}\n"]}
|
|
@@ -6,6 +6,8 @@ import { CosmosEncryptedNumberType } from "./CosmosEncryptedNumber.js";
|
|
|
6
6
|
* Represents a builder class for building encrypted parameters in parametrized query.
|
|
7
7
|
*/
|
|
8
8
|
export class EncryptionQueryBuilder {
|
|
9
|
+
query;
|
|
10
|
+
parameters;
|
|
9
11
|
constructor(query) {
|
|
10
12
|
this.query = query;
|
|
11
13
|
this.parameters = [];
|