@azure/service-bus 7.10.0-beta.1 → 7.10.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +114 -57
- package/dist/browser/connectionContext.d.ts +109 -0
- package/dist/browser/connectionContext.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/connectionContext.js +9 -9
- package/dist/browser/connectionContext.js.map +1 -0
- package/dist/browser/constructorHelpers.d.ts +79 -0
- package/dist/browser/constructorHelpers.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/constructorHelpers.js +5 -5
- package/dist/browser/constructorHelpers.js.map +1 -0
- package/dist/browser/core/autoLockRenewer.d.ts +58 -0
- package/dist/browser/core/autoLockRenewer.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/core/autoLockRenewer.js +12 -8
- package/dist/browser/core/autoLockRenewer.js.map +1 -0
- package/dist/browser/core/batchingReceiver.d.ts +120 -0
- package/dist/browser/core/batchingReceiver.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/core/batchingReceiver.js +23 -13
- package/dist/browser/core/batchingReceiver.js.map +1 -0
- package/dist/browser/core/linkEntity.d.ts +192 -0
- package/dist/browser/core/linkEntity.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/core/linkEntity.js +77 -14
- package/dist/browser/core/linkEntity.js.map +1 -0
- package/dist/browser/core/managementClient.d.ts +312 -0
- package/dist/browser/core/managementClient.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/core/managementClient.js +37 -33
- package/dist/browser/core/managementClient.js.map +1 -0
- package/dist/browser/core/messageReceiver.d.ts +147 -0
- package/dist/browser/core/messageReceiver.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/core/messageReceiver.js +36 -14
- package/dist/browser/core/messageReceiver.js.map +1 -0
- package/dist/browser/core/messageSender.d.ts +93 -0
- package/dist/browser/core/messageSender.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/core/messageSender.js +36 -12
- package/dist/browser/core/messageSender.js.map +1 -0
- package/dist/browser/core/receiverHelper.d.ts +45 -0
- package/dist/browser/core/receiverHelper.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/core/receiverHelper.js +6 -5
- package/dist/browser/core/receiverHelper.js.map +1 -0
- package/dist/browser/core/shared.d.ts +34 -0
- package/dist/browser/core/shared.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/core/shared.js +3 -3
- package/dist/browser/core/shared.js.map +1 -0
- package/dist/browser/core/streamingReceiver.d.ts +142 -0
- package/dist/browser/core/streamingReceiver.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/core/streamingReceiver.js +73 -36
- package/dist/browser/core/streamingReceiver.js.map +1 -0
- package/dist/browser/dataTransformer.d.ts +77 -0
- package/dist/browser/dataTransformer.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/dataTransformer.js +2 -2
- package/dist/browser/dataTransformer.js.map +1 -0
- package/dist/browser/diagnostics/instrumentServiceBusMessage.d.ts +50 -0
- package/dist/browser/diagnostics/instrumentServiceBusMessage.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/diagnostics/instrumentServiceBusMessage.js +2 -2
- package/dist/browser/diagnostics/instrumentServiceBusMessage.js.map +1 -0
- package/dist/browser/diagnostics/tracing.d.ts +21 -0
- package/dist/browser/diagnostics/tracing.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/diagnostics/tracing.js +2 -2
- package/dist/browser/diagnostics/tracing.js.map +1 -0
- package/dist/browser/experimental/index.d.ts +10 -0
- package/dist/browser/experimental/index.d.ts.map +1 -0
- package/dist/browser/experimental/index.js +4 -0
- package/dist/browser/experimental/index.js.map +1 -0
- package/dist/browser/index.d.ts +26 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/index.js +5 -5
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/log.d.ts +70 -0
- package/dist/browser/log.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/log.js +1 -1
- package/dist/browser/log.js.map +1 -0
- package/dist/browser/models.d.ts +328 -0
- package/dist/browser/models.d.ts.map +1 -0
- package/dist/browser/models.js +4 -0
- package/dist/browser/models.js.map +1 -0
- package/dist/browser/modelsToBeSharedWithEventHubs.d.ts +18 -0
- package/dist/browser/modelsToBeSharedWithEventHubs.d.ts.map +1 -0
- package/dist/browser/modelsToBeSharedWithEventHubs.js +4 -0
- package/dist/browser/modelsToBeSharedWithEventHubs.js.map +1 -0
- package/dist/browser/package.json +3 -0
- package/dist/browser/receivers/receiver.d.ts +299 -0
- package/dist/browser/receivers/receiver.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/receivers/receiver.js +40 -22
- package/dist/browser/receivers/receiver.js.map +1 -0
- package/dist/browser/receivers/receiverCommon.d.ts +81 -0
- package/dist/browser/receivers/receiverCommon.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/receivers/receiverCommon.js +7 -8
- package/dist/browser/receivers/receiverCommon.js.map +1 -0
- package/dist/browser/receivers/sessionReceiver.d.ts +189 -0
- package/dist/browser/receivers/sessionReceiver.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/receivers/sessionReceiver.js +32 -24
- package/dist/browser/receivers/sessionReceiver.js.map +1 -0
- package/dist/browser/sender.d.ts +125 -0
- package/dist/browser/sender.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/sender.js +19 -13
- package/dist/browser/sender.js.map +1 -0
- package/dist/browser/serializers/namespaceResourceSerializer.d.ts +46 -0
- package/dist/browser/serializers/namespaceResourceSerializer.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serializers/namespaceResourceSerializer.js +3 -3
- package/dist/browser/serializers/namespaceResourceSerializer.js.map +1 -0
- package/dist/browser/serializers/queueResourceSerializer.d.ts +461 -0
- package/dist/browser/serializers/queueResourceSerializer.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serializers/queueResourceSerializer.js +4 -4
- package/dist/browser/serializers/queueResourceSerializer.js.map +1 -0
- package/dist/browser/serializers/ruleResourceSerializer.d.ts +135 -0
- package/dist/browser/serializers/ruleResourceSerializer.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serializers/ruleResourceSerializer.js +4 -4
- package/dist/browser/serializers/ruleResourceSerializer.js.map +1 -0
- package/dist/browser/serializers/subscriptionResourceSerializer.d.ts +396 -0
- package/dist/browser/serializers/subscriptionResourceSerializer.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serializers/subscriptionResourceSerializer.js +5 -5
- package/dist/browser/serializers/subscriptionResourceSerializer.js.map +1 -0
- package/dist/browser/serializers/topicResourceSerializer.d.ts +335 -0
- package/dist/browser/serializers/topicResourceSerializer.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serializers/topicResourceSerializer.js +4 -4
- package/dist/browser/serializers/topicResourceSerializer.js.map +1 -0
- package/dist/browser/serviceBusAtomManagementClient.d.ts +652 -0
- package/dist/browser/serviceBusAtomManagementClient.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serviceBusAtomManagementClient.js +78 -109
- package/dist/browser/serviceBusAtomManagementClient.js.map +1 -0
- package/dist/browser/serviceBusClient.d.ts +231 -0
- package/dist/browser/serviceBusClient.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serviceBusClient.js +24 -11
- package/dist/browser/serviceBusClient.js.map +1 -0
- package/dist/browser/serviceBusError.d.ts +119 -0
- package/dist/browser/serviceBusError.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serviceBusError.js +21 -1
- package/dist/browser/serviceBusError.js.map +1 -0
- package/dist/browser/serviceBusMessage.d.ts +529 -0
- package/dist/browser/serviceBusMessage.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serviceBusMessage.js +193 -5
- package/dist/browser/serviceBusMessage.js.map +1 -0
- package/dist/browser/serviceBusMessageBatch.d.ts +153 -0
- package/dist/browser/serviceBusMessageBatch.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serviceBusMessageBatch.js +37 -13
- package/dist/browser/serviceBusMessageBatch.js.map +1 -0
- package/dist/browser/serviceBusRuleManager.d.ts +103 -0
- package/dist/browser/serviceBusRuleManager.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serviceBusRuleManager.js +16 -13
- package/dist/browser/serviceBusRuleManager.js.map +1 -0
- package/dist/browser/session/messageSession.d.ts +236 -0
- package/dist/browser/session/messageSession.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/session/messageSession.js +145 -30
- package/dist/browser/session/messageSession.js.map +1 -0
- package/dist/browser/util/atomXmlHelper.d.ts +56 -0
- package/dist/browser/util/atomXmlHelper.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/util/atomXmlHelper.js +7 -7
- package/dist/browser/util/atomXmlHelper.js.map +1 -0
- package/dist/browser/util/compat/compatibility.d.ts +109 -0
- package/dist/browser/util/compat/compatibility.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/util/compat/compatibility.js +2 -2
- package/dist/browser/util/compat/compatibility.js.map +1 -0
- package/dist/browser/util/compat/httpHeaders.d.ts +136 -0
- package/dist/browser/util/compat/httpHeaders.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/util/compat/httpHeaders.js +2 -1
- package/dist/browser/util/compat/httpHeaders.js.map +1 -0
- package/dist/browser/util/compat/index.d.ts +3 -0
- package/dist/browser/util/compat/index.d.ts.map +1 -0
- package/dist/browser/util/compat/index.js +5 -0
- package/dist/browser/util/compat/index.js.map +1 -0
- package/dist/browser/util/connectionStringUtils.d.ts +53 -0
- package/dist/browser/util/connectionStringUtils.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/util/connectionStringUtils.js +8 -2
- package/dist/browser/util/connectionStringUtils.js.map +1 -0
- package/dist/browser/util/constants.d.ts +322 -0
- package/dist/browser/util/constants.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/util/constants.js +3 -3
- package/{dist-esm/src → dist/browser}/util/constants.js.map +1 -1
- package/dist/browser/util/crypto-browser.d.mts.map +1 -0
- package/dist/browser/util/crypto-browser.mjs.map +1 -0
- package/dist/browser/util/crypto.d.ts +5 -0
- package/{dist-esm/src/util/crypto.browser.js → dist/browser/util/crypto.js} +2 -4
- package/dist/browser/util/errors.d.ts +130 -0
- package/dist/browser/util/errors.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/util/errors.js +4 -4
- package/dist/browser/util/errors.js.map +1 -0
- package/dist/browser/util/parseUrl-browser.d.mts.map +1 -0
- package/dist/browser/util/parseUrl-browser.mjs.map +1 -0
- package/dist/browser/util/parseUrl.d.ts +5 -0
- package/{dist-esm/src/util/parseUrl.browser.js → dist/browser/util/parseUrl.js} +1 -3
- package/dist/browser/util/runtimeInfo-browser.d.mts.map +1 -0
- package/dist/browser/util/runtimeInfo-browser.mjs.map +1 -0
- package/dist/browser/util/runtimeInfo.d.ts +7 -0
- package/{dist-esm/src/util/runtimeInfo.browser.js → dist/browser/util/runtimeInfo.js} +2 -2
- package/dist/browser/util/sasServiceClientCredentials.d.ts +31 -0
- package/dist/browser/util/sasServiceClientCredentials.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/util/sasServiceClientCredentials.js +9 -3
- package/dist/browser/util/sasServiceClientCredentials.js.map +1 -0
- package/dist/browser/util/semaphore.d.ts +38 -0
- package/dist/browser/util/semaphore.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/util/semaphore.js +7 -3
- package/dist/browser/util/semaphore.js.map +1 -0
- package/dist/browser/util/typeGuards.d.ts +8 -0
- package/dist/browser/util/typeGuards.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/util/typeGuards.js +2 -2
- package/dist/browser/util/typeGuards.js.map +1 -0
- package/dist/browser/util/utils.d.ts +247 -0
- package/dist/browser/util/utils.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/util/utils.js +5 -7
- package/dist/browser/util/utils.js.map +1 -0
- package/dist/commonjs/connectionContext.d.ts +109 -0
- package/dist/commonjs/connectionContext.d.ts.map +1 -0
- package/dist/commonjs/connectionContext.js +358 -0
- package/dist/commonjs/connectionContext.js.map +1 -0
- package/dist/commonjs/constructorHelpers.d.ts +79 -0
- package/dist/commonjs/constructorHelpers.d.ts.map +1 -0
- package/dist/commonjs/constructorHelpers.js +103 -0
- package/dist/commonjs/constructorHelpers.js.map +1 -0
- package/dist/commonjs/core/autoLockRenewer.d.ts +58 -0
- package/dist/commonjs/core/autoLockRenewer.d.ts.map +1 -0
- package/dist/commonjs/core/autoLockRenewer.js +178 -0
- package/dist/commonjs/core/autoLockRenewer.js.map +1 -0
- package/dist/commonjs/core/batchingReceiver.d.ts +120 -0
- package/dist/commonjs/core/batchingReceiver.d.ts.map +1 -0
- package/dist/commonjs/core/batchingReceiver.js +405 -0
- package/dist/commonjs/core/batchingReceiver.js.map +1 -0
- package/dist/commonjs/core/linkEntity.d.ts +192 -0
- package/dist/commonjs/core/linkEntity.d.ts.map +1 -0
- package/dist/commonjs/core/linkEntity.js +344 -0
- package/dist/commonjs/core/linkEntity.js.map +1 -0
- package/dist/commonjs/core/managementClient.d.ts +312 -0
- package/dist/commonjs/core/managementClient.d.ts.map +1 -0
- package/dist/commonjs/core/managementClient.js +1078 -0
- package/dist/commonjs/core/managementClient.js.map +1 -0
- package/dist/commonjs/core/messageReceiver.d.ts +147 -0
- package/dist/commonjs/core/messageReceiver.d.ts.map +1 -0
- package/dist/commonjs/core/messageReceiver.js +169 -0
- package/dist/commonjs/core/messageReceiver.js.map +1 -0
- package/dist/commonjs/core/messageSender.d.ts +93 -0
- package/dist/commonjs/core/messageSender.d.ts.map +1 -0
- package/dist/commonjs/core/messageSender.js +307 -0
- package/dist/commonjs/core/messageSender.js.map +1 -0
- package/dist/commonjs/core/receiverHelper.d.ts +45 -0
- package/dist/commonjs/core/receiverHelper.d.ts.map +1 -0
- package/dist/commonjs/core/receiverHelper.js +123 -0
- package/dist/commonjs/core/receiverHelper.js.map +1 -0
- package/dist/commonjs/core/shared.d.ts +34 -0
- package/dist/commonjs/core/shared.d.ts.map +1 -0
- package/dist/commonjs/core/shared.js +70 -0
- package/dist/commonjs/core/shared.js.map +1 -0
- package/dist/commonjs/core/streamingReceiver.d.ts +142 -0
- package/dist/commonjs/core/streamingReceiver.d.ts.map +1 -0
- package/dist/commonjs/core/streamingReceiver.js +526 -0
- package/dist/commonjs/core/streamingReceiver.js.map +1 -0
- package/dist/commonjs/dataTransformer.d.ts +77 -0
- package/dist/commonjs/dataTransformer.d.ts.map +1 -0
- package/dist/commonjs/dataTransformer.js +169 -0
- package/dist/commonjs/dataTransformer.js.map +1 -0
- package/dist/commonjs/diagnostics/instrumentServiceBusMessage.d.ts +50 -0
- package/dist/commonjs/diagnostics/instrumentServiceBusMessage.d.ts.map +1 -0
- package/dist/commonjs/diagnostics/instrumentServiceBusMessage.js +107 -0
- package/dist/commonjs/diagnostics/instrumentServiceBusMessage.js.map +1 -0
- package/dist/commonjs/diagnostics/tracing.d.ts +21 -0
- package/dist/commonjs/diagnostics/tracing.d.ts.map +1 -0
- package/dist/commonjs/diagnostics/tracing.js +41 -0
- package/dist/commonjs/diagnostics/tracing.js.map +1 -0
- package/dist/commonjs/experimental/index.d.ts +10 -0
- package/dist/commonjs/experimental/index.d.ts.map +1 -0
- package/dist/commonjs/experimental/index.js +5 -0
- package/dist/commonjs/experimental/index.js.map +1 -0
- package/dist/commonjs/index.d.ts +26 -0
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +22 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/log.d.ts +70 -0
- package/dist/commonjs/log.d.ts.map +1 -0
- package/dist/commonjs/log.js +94 -0
- package/dist/commonjs/log.js.map +1 -0
- package/dist/commonjs/models.d.ts +328 -0
- package/dist/commonjs/models.d.ts.map +1 -0
- package/dist/commonjs/models.js +5 -0
- package/dist/commonjs/models.js.map +1 -0
- package/dist/commonjs/modelsToBeSharedWithEventHubs.d.ts +18 -0
- package/dist/commonjs/modelsToBeSharedWithEventHubs.d.ts.map +1 -0
- package/dist/commonjs/modelsToBeSharedWithEventHubs.js +5 -0
- package/dist/commonjs/modelsToBeSharedWithEventHubs.js.map +1 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/commonjs/receivers/receiver.d.ts +299 -0
- package/dist/commonjs/receivers/receiver.d.ts.map +1 -0
- package/dist/commonjs/receivers/receiver.js +383 -0
- package/dist/commonjs/receivers/receiver.js.map +1 -0
- package/dist/commonjs/receivers/receiverCommon.d.ts +81 -0
- package/dist/commonjs/receivers/receiverCommon.d.ts.map +1 -0
- package/dist/commonjs/receivers/receiverCommon.js +269 -0
- package/dist/commonjs/receivers/receiverCommon.js.map +1 -0
- package/dist/commonjs/receivers/sessionReceiver.d.ts +189 -0
- package/dist/commonjs/receivers/sessionReceiver.d.ts.map +1 -0
- package/dist/commonjs/receivers/sessionReceiver.js +432 -0
- package/dist/commonjs/receivers/sessionReceiver.js.map +1 -0
- package/dist/commonjs/sender.d.ts +125 -0
- package/dist/commonjs/sender.d.ts.map +1 -0
- package/dist/commonjs/sender.js +191 -0
- package/dist/commonjs/sender.js.map +1 -0
- package/dist/commonjs/serializers/namespaceResourceSerializer.d.ts +46 -0
- package/dist/commonjs/serializers/namespaceResourceSerializer.d.ts.map +1 -0
- package/dist/commonjs/serializers/namespaceResourceSerializer.js +39 -0
- package/dist/commonjs/serializers/namespaceResourceSerializer.js.map +1 -0
- package/dist/commonjs/serializers/queueResourceSerializer.d.ts +461 -0
- package/dist/commonjs/serializers/queueResourceSerializer.d.ts.map +1 -0
- package/dist/commonjs/serializers/queueResourceSerializer.js +107 -0
- package/dist/commonjs/serializers/queueResourceSerializer.js.map +1 -0
- package/dist/commonjs/serializers/ruleResourceSerializer.d.ts +135 -0
- package/dist/commonjs/serializers/ruleResourceSerializer.d.ts.map +1 -0
- package/dist/commonjs/serializers/ruleResourceSerializer.js +287 -0
- package/dist/commonjs/serializers/ruleResourceSerializer.js.map +1 -0
- package/dist/commonjs/serializers/subscriptionResourceSerializer.d.ts +396 -0
- package/dist/commonjs/serializers/subscriptionResourceSerializer.d.ts.map +1 -0
- package/dist/commonjs/serializers/subscriptionResourceSerializer.js +103 -0
- package/dist/commonjs/serializers/subscriptionResourceSerializer.js.map +1 -0
- package/dist/commonjs/serializers/topicResourceSerializer.d.ts +335 -0
- package/dist/commonjs/serializers/topicResourceSerializer.d.ts.map +1 -0
- package/dist/commonjs/serializers/topicResourceSerializer.js +97 -0
- package/dist/commonjs/serializers/topicResourceSerializer.js.map +1 -0
- package/dist/commonjs/serviceBusAtomManagementClient.d.ts +652 -0
- package/dist/commonjs/serviceBusAtomManagementClient.d.ts.map +1 -0
- package/dist/commonjs/serviceBusAtomManagementClient.js +1648 -0
- package/dist/commonjs/serviceBusAtomManagementClient.js.map +1 -0
- package/dist/commonjs/serviceBusClient.d.ts +231 -0
- package/dist/commonjs/serviceBusClient.d.ts.map +1 -0
- package/dist/commonjs/serviceBusClient.js +221 -0
- package/dist/commonjs/serviceBusClient.js.map +1 -0
- package/dist/commonjs/serviceBusError.d.ts +119 -0
- package/dist/commonjs/serviceBusError.d.ts.map +1 -0
- package/dist/commonjs/serviceBusError.js +109 -0
- package/dist/commonjs/serviceBusError.js.map +1 -0
- package/dist/commonjs/serviceBusMessage.d.ts +529 -0
- package/dist/commonjs/serviceBusMessage.d.ts.map +1 -0
- package/dist/commonjs/serviceBusMessage.js +611 -0
- package/dist/commonjs/serviceBusMessage.js.map +1 -0
- package/dist/commonjs/serviceBusMessageBatch.d.ts +153 -0
- package/dist/commonjs/serviceBusMessageBatch.d.ts.map +1 -0
- package/dist/commonjs/serviceBusMessageBatch.js +196 -0
- package/dist/commonjs/serviceBusMessageBatch.js.map +1 -0
- package/dist/commonjs/serviceBusRuleManager.d.ts +103 -0
- package/dist/commonjs/serviceBusRuleManager.d.ts.map +1 -0
- package/dist/commonjs/serviceBusRuleManager.js +153 -0
- package/dist/commonjs/serviceBusRuleManager.js.map +1 -0
- package/dist/commonjs/session/messageSession.d.ts +236 -0
- package/dist/commonjs/session/messageSession.d.ts.map +1 -0
- package/dist/commonjs/session/messageSession.js +759 -0
- package/dist/commonjs/session/messageSession.js.map +1 -0
- package/dist/commonjs/tsdoc-metadata.json +11 -0
- package/dist/commonjs/util/atomXmlHelper.d.ts +56 -0
- package/dist/commonjs/util/atomXmlHelper.d.ts.map +1 -0
- package/dist/commonjs/util/atomXmlHelper.js +386 -0
- package/dist/commonjs/util/atomXmlHelper.js.map +1 -0
- package/dist/commonjs/util/compat/compatibility.d.ts +109 -0
- package/dist/commonjs/util/compat/compatibility.d.ts.map +1 -0
- package/dist/commonjs/util/compat/compatibility.js +30 -0
- package/dist/commonjs/util/compat/compatibility.js.map +1 -0
- package/dist/commonjs/util/compat/httpHeaders.d.ts +136 -0
- package/dist/commonjs/util/compat/httpHeaders.d.ts.map +1 -0
- package/dist/commonjs/util/compat/httpHeaders.js +157 -0
- package/dist/commonjs/util/compat/httpHeaders.js.map +1 -0
- package/dist/commonjs/util/compat/index.d.ts +3 -0
- package/dist/commonjs/util/compat/index.d.ts.map +1 -0
- package/dist/commonjs/util/compat/index.js +8 -0
- package/dist/commonjs/util/compat/index.js.map +1 -0
- package/dist/commonjs/util/connectionStringUtils.d.ts +53 -0
- package/dist/commonjs/util/connectionStringUtils.d.ts.map +1 -0
- package/dist/commonjs/util/connectionStringUtils.js +51 -0
- package/dist/commonjs/util/connectionStringUtils.js.map +1 -0
- package/dist/commonjs/util/constants.d.ts +322 -0
- package/dist/commonjs/util/constants.d.ts.map +1 -0
- package/dist/commonjs/util/constants.js +327 -0
- package/dist/commonjs/util/constants.js.map +1 -0
- package/dist/commonjs/util/crypto.d.ts +5 -0
- package/dist/commonjs/util/crypto.d.ts.map +1 -0
- package/dist/commonjs/util/crypto.js +15 -0
- package/dist/commonjs/util/crypto.js.map +1 -0
- package/dist/commonjs/util/errors.d.ts +130 -0
- package/dist/commonjs/util/errors.d.ts.map +1 -0
- package/dist/commonjs/util/errors.js +236 -0
- package/dist/commonjs/util/errors.js.map +1 -0
- package/dist/commonjs/util/parseUrl.d.ts +5 -0
- package/dist/commonjs/util/parseUrl.d.ts.map +1 -0
- package/dist/commonjs/util/parseUrl.js +13 -0
- package/dist/commonjs/util/parseUrl.js.map +1 -0
- package/dist/commonjs/util/runtimeInfo.d.ts +7 -0
- package/dist/commonjs/util/runtimeInfo.d.ts.map +1 -0
- package/dist/commonjs/util/runtimeInfo.js +24 -0
- package/dist/commonjs/util/runtimeInfo.js.map +1 -0
- package/dist/commonjs/util/sasServiceClientCredentials.d.ts +31 -0
- package/dist/commonjs/util/sasServiceClientCredentials.d.ts.map +1 -0
- package/dist/commonjs/util/sasServiceClientCredentials.js +56 -0
- package/dist/commonjs/util/sasServiceClientCredentials.js.map +1 -0
- package/dist/commonjs/util/semaphore.d.ts +38 -0
- package/dist/commonjs/util/semaphore.d.ts.map +1 -0
- package/dist/commonjs/util/semaphore.js +85 -0
- package/dist/commonjs/util/semaphore.js.map +1 -0
- package/dist/commonjs/util/typeGuards.d.ts +8 -0
- package/dist/commonjs/util/typeGuards.d.ts.map +1 -0
- package/dist/commonjs/util/typeGuards.js +15 -0
- package/dist/commonjs/util/typeGuards.js.map +1 -0
- package/dist/commonjs/util/utils.d.ts +247 -0
- package/dist/commonjs/util/utils.d.ts.map +1 -0
- package/dist/commonjs/util/utils.js +524 -0
- package/dist/commonjs/util/utils.js.map +1 -0
- package/dist/esm/connectionContext.d.ts +109 -0
- package/dist/esm/connectionContext.d.ts.map +1 -0
- package/dist/esm/connectionContext.js +355 -0
- package/dist/esm/connectionContext.js.map +1 -0
- package/dist/esm/constructorHelpers.d.ts +79 -0
- package/dist/esm/constructorHelpers.d.ts.map +1 -0
- package/dist/esm/constructorHelpers.js +96 -0
- package/dist/esm/constructorHelpers.js.map +1 -0
- package/dist/esm/core/autoLockRenewer.d.ts +58 -0
- package/dist/esm/core/autoLockRenewer.d.ts.map +1 -0
- package/dist/esm/core/autoLockRenewer.js +174 -0
- package/dist/esm/core/autoLockRenewer.js.map +1 -0
- package/dist/esm/core/batchingReceiver.d.ts +120 -0
- package/dist/esm/core/batchingReceiver.d.ts.map +1 -0
- package/dist/esm/core/batchingReceiver.js +399 -0
- package/dist/esm/core/batchingReceiver.js.map +1 -0
- package/dist/esm/core/linkEntity.d.ts +192 -0
- package/dist/esm/core/linkEntity.d.ts.map +1 -0
- package/dist/esm/core/linkEntity.js +340 -0
- package/dist/esm/core/linkEntity.js.map +1 -0
- package/dist/esm/core/managementClient.d.ts +312 -0
- package/dist/esm/core/managementClient.d.ts.map +1 -0
- package/dist/esm/core/managementClient.js +1072 -0
- package/dist/esm/core/managementClient.js.map +1 -0
- package/dist/esm/core/messageReceiver.d.ts +147 -0
- package/dist/esm/core/messageReceiver.d.ts.map +1 -0
- package/dist/esm/core/messageReceiver.js +165 -0
- package/dist/esm/core/messageReceiver.js.map +1 -0
- package/dist/esm/core/messageSender.d.ts +93 -0
- package/dist/esm/core/messageSender.d.ts.map +1 -0
- package/dist/esm/core/messageSender.js +303 -0
- package/dist/esm/core/messageSender.js.map +1 -0
- package/dist/esm/core/receiverHelper.d.ts +45 -0
- package/dist/esm/core/receiverHelper.d.ts.map +1 -0
- package/dist/esm/core/receiverHelper.js +119 -0
- package/dist/esm/core/receiverHelper.js.map +1 -0
- package/dist/esm/core/shared.d.ts +34 -0
- package/dist/esm/core/shared.d.ts.map +1 -0
- package/dist/esm/core/shared.js +66 -0
- package/dist/esm/core/shared.js.map +1 -0
- package/dist/esm/core/streamingReceiver.d.ts +142 -0
- package/dist/esm/core/streamingReceiver.d.ts.map +1 -0
- package/dist/esm/core/streamingReceiver.js +522 -0
- package/dist/esm/core/streamingReceiver.js.map +1 -0
- package/dist/esm/dataTransformer.d.ts +77 -0
- package/dist/esm/dataTransformer.d.ts.map +1 -0
- package/dist/esm/dataTransformer.js +163 -0
- package/dist/esm/dataTransformer.js.map +1 -0
- package/dist/esm/diagnostics/instrumentServiceBusMessage.d.ts +50 -0
- package/dist/esm/diagnostics/instrumentServiceBusMessage.d.ts.map +1 -0
- package/dist/esm/diagnostics/instrumentServiceBusMessage.js +101 -0
- package/dist/esm/diagnostics/instrumentServiceBusMessage.js.map +1 -0
- package/dist/esm/diagnostics/tracing.d.ts +21 -0
- package/dist/esm/diagnostics/tracing.d.ts.map +1 -0
- package/dist/esm/diagnostics/tracing.js +37 -0
- package/dist/esm/diagnostics/tracing.js.map +1 -0
- package/dist/esm/experimental/index.d.ts +10 -0
- package/dist/esm/experimental/index.d.ts.map +1 -0
- package/dist/esm/experimental/index.js +4 -0
- package/dist/esm/experimental/index.js.map +1 -0
- package/dist/esm/index.d.ts +26 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/log.d.ts +70 -0
- package/dist/esm/log.d.ts.map +1 -0
- package/dist/esm/log.js +89 -0
- package/dist/esm/log.js.map +1 -0
- package/dist/esm/models.d.ts +328 -0
- package/dist/esm/models.d.ts.map +1 -0
- package/dist/esm/models.js +4 -0
- package/dist/esm/models.js.map +1 -0
- package/dist/esm/modelsToBeSharedWithEventHubs.d.ts +18 -0
- package/dist/esm/modelsToBeSharedWithEventHubs.d.ts.map +1 -0
- package/dist/esm/modelsToBeSharedWithEventHubs.js +4 -0
- package/dist/esm/modelsToBeSharedWithEventHubs.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/receivers/receiver.d.ts +299 -0
- package/dist/esm/receivers/receiver.d.ts.map +1 -0
- package/dist/esm/receivers/receiver.js +379 -0
- package/dist/esm/receivers/receiver.js.map +1 -0
- package/dist/esm/receivers/receiverCommon.d.ts +81 -0
- package/dist/esm/receivers/receiverCommon.d.ts.map +1 -0
- package/dist/esm/receivers/receiverCommon.js +257 -0
- package/dist/esm/receivers/receiverCommon.js.map +1 -0
- package/dist/esm/receivers/sessionReceiver.d.ts +189 -0
- package/dist/esm/receivers/sessionReceiver.d.ts.map +1 -0
- package/dist/esm/receivers/sessionReceiver.js +428 -0
- package/dist/esm/receivers/sessionReceiver.js.map +1 -0
- package/dist/esm/sender.d.ts +125 -0
- package/dist/esm/sender.d.ts.map +1 -0
- package/dist/esm/sender.js +186 -0
- package/dist/esm/sender.js.map +1 -0
- package/dist/esm/serializers/namespaceResourceSerializer.d.ts +46 -0
- package/dist/esm/serializers/namespaceResourceSerializer.d.ts.map +1 -0
- package/dist/esm/serializers/namespaceResourceSerializer.js +34 -0
- package/dist/esm/serializers/namespaceResourceSerializer.js.map +1 -0
- package/dist/esm/serializers/queueResourceSerializer.d.ts +461 -0
- package/dist/esm/serializers/queueResourceSerializer.d.ts.map +1 -0
- package/dist/esm/serializers/queueResourceSerializer.js +99 -0
- package/dist/esm/serializers/queueResourceSerializer.js.map +1 -0
- package/dist/esm/serializers/ruleResourceSerializer.d.ts +135 -0
- package/dist/esm/serializers/ruleResourceSerializer.d.ts.map +1 -0
- package/dist/esm/serializers/ruleResourceSerializer.js +278 -0
- package/dist/esm/serializers/ruleResourceSerializer.js.map +1 -0
- package/dist/esm/serializers/subscriptionResourceSerializer.d.ts +396 -0
- package/dist/esm/serializers/subscriptionResourceSerializer.d.ts.map +1 -0
- package/dist/esm/serializers/subscriptionResourceSerializer.js +95 -0
- package/dist/esm/serializers/subscriptionResourceSerializer.js.map +1 -0
- package/dist/esm/serializers/topicResourceSerializer.d.ts +335 -0
- package/dist/esm/serializers/topicResourceSerializer.d.ts.map +1 -0
- package/dist/esm/serializers/topicResourceSerializer.js +89 -0
- package/dist/esm/serializers/topicResourceSerializer.js.map +1 -0
- package/dist/esm/serviceBusAtomManagementClient.d.ts +652 -0
- package/dist/esm/serviceBusAtomManagementClient.d.ts.map +1 -0
- package/dist/esm/serviceBusAtomManagementClient.js +1643 -0
- package/dist/esm/serviceBusAtomManagementClient.js.map +1 -0
- package/dist/esm/serviceBusClient.d.ts +231 -0
- package/dist/esm/serviceBusClient.d.ts.map +1 -0
- package/dist/esm/serviceBusClient.js +216 -0
- package/dist/esm/serviceBusClient.js.map +1 -0
- package/dist/esm/serviceBusError.d.ts +119 -0
- package/dist/esm/serviceBusError.d.ts.map +1 -0
- package/dist/esm/serviceBusError.js +103 -0
- package/dist/esm/serviceBusError.js.map +1 -0
- package/dist/esm/serviceBusMessage.d.ts +529 -0
- package/dist/esm/serviceBusMessage.d.ts.map +1 -0
- package/dist/esm/serviceBusMessage.js +598 -0
- package/dist/esm/serviceBusMessage.js.map +1 -0
- package/dist/esm/serviceBusMessageBatch.d.ts +153 -0
- package/dist/esm/serviceBusMessageBatch.d.ts.map +1 -0
- package/dist/esm/serviceBusMessageBatch.js +192 -0
- package/dist/esm/serviceBusMessageBatch.js.map +1 -0
- package/dist/esm/serviceBusRuleManager.d.ts +103 -0
- package/dist/esm/serviceBusRuleManager.d.ts.map +1 -0
- package/dist/esm/serviceBusRuleManager.js +149 -0
- package/dist/esm/serviceBusRuleManager.js.map +1 -0
- package/dist/esm/session/messageSession.d.ts +236 -0
- package/dist/esm/session/messageSession.d.ts.map +1 -0
- package/dist/esm/session/messageSession.js +755 -0
- package/dist/esm/session/messageSession.js.map +1 -0
- package/dist/esm/util/atomXmlHelper.d.ts +56 -0
- package/dist/esm/util/atomXmlHelper.d.ts.map +1 -0
- package/dist/esm/util/atomXmlHelper.js +378 -0
- package/dist/esm/util/atomXmlHelper.js.map +1 -0
- package/dist/esm/util/compat/compatibility.d.ts +109 -0
- package/dist/esm/util/compat/compatibility.d.ts.map +1 -0
- package/dist/esm/util/compat/compatibility.js +27 -0
- package/dist/esm/util/compat/compatibility.js.map +1 -0
- package/dist/esm/util/compat/httpHeaders.d.ts +136 -0
- package/dist/esm/util/compat/httpHeaders.d.ts.map +1 -0
- package/dist/esm/util/compat/httpHeaders.js +152 -0
- package/dist/esm/util/compat/httpHeaders.js.map +1 -0
- package/dist/esm/util/compat/index.d.ts +3 -0
- package/dist/esm/util/compat/index.d.ts.map +1 -0
- package/dist/esm/util/compat/index.js +5 -0
- package/dist/esm/util/compat/index.js.map +1 -0
- package/dist/esm/util/connectionStringUtils.d.ts +53 -0
- package/dist/esm/util/connectionStringUtils.d.ts.map +1 -0
- package/dist/esm/util/connectionStringUtils.js +48 -0
- package/dist/esm/util/connectionStringUtils.js.map +1 -0
- package/dist/esm/util/constants.d.ts +322 -0
- package/dist/esm/util/constants.d.ts.map +1 -0
- package/dist/esm/util/constants.js +324 -0
- package/dist/esm/util/constants.js.map +1 -0
- package/dist/esm/util/crypto.d.ts +5 -0
- package/dist/esm/util/crypto.d.ts.map +1 -0
- package/{dist-esm/src → dist/esm}/util/crypto.js +1 -3
- package/dist/esm/util/crypto.js.map +1 -0
- package/dist/esm/util/errors.d.ts +130 -0
- package/dist/esm/util/errors.d.ts.map +1 -0
- package/dist/esm/util/errors.js +220 -0
- package/dist/esm/util/errors.js.map +1 -0
- package/dist/esm/util/parseUrl.d.ts +5 -0
- package/dist/esm/util/parseUrl.d.ts.map +1 -0
- package/{dist-esm/src → dist/esm}/util/parseUrl.js +0 -6
- package/dist/esm/util/parseUrl.js.map +1 -0
- package/dist/esm/util/runtimeInfo.d.ts +7 -0
- package/dist/esm/util/runtimeInfo.d.ts.map +1 -0
- package/{dist-esm/src → dist/esm}/util/runtimeInfo.js +2 -2
- package/dist/esm/util/runtimeInfo.js.map +1 -0
- package/dist/esm/util/sasServiceClientCredentials.d.ts +31 -0
- package/dist/esm/util/sasServiceClientCredentials.d.ts.map +1 -0
- package/dist/esm/util/sasServiceClientCredentials.js +52 -0
- package/dist/esm/util/sasServiceClientCredentials.js.map +1 -0
- package/dist/esm/util/semaphore.d.ts +38 -0
- package/dist/esm/util/semaphore.d.ts.map +1 -0
- package/dist/esm/util/semaphore.js +81 -0
- package/dist/esm/util/semaphore.js.map +1 -0
- package/dist/esm/util/typeGuards.d.ts +8 -0
- package/dist/esm/util/typeGuards.d.ts.map +1 -0
- package/dist/esm/util/typeGuards.js +12 -0
- package/dist/esm/util/typeGuards.js.map +1 -0
- package/dist/esm/util/utils.d.ts +247 -0
- package/dist/esm/util/utils.d.ts.map +1 -0
- package/dist/esm/util/utils.js +496 -0
- package/dist/esm/util/utils.js.map +1 -0
- package/dist/react-native/connectionContext.d.ts +109 -0
- package/dist/react-native/connectionContext.d.ts.map +1 -0
- package/dist/react-native/connectionContext.js +355 -0
- package/dist/react-native/connectionContext.js.map +1 -0
- package/dist/react-native/constructorHelpers.d.ts +79 -0
- package/dist/react-native/constructorHelpers.d.ts.map +1 -0
- package/dist/react-native/constructorHelpers.js +96 -0
- package/dist/react-native/constructorHelpers.js.map +1 -0
- package/dist/react-native/core/autoLockRenewer.d.ts +58 -0
- package/dist/react-native/core/autoLockRenewer.d.ts.map +1 -0
- package/dist/react-native/core/autoLockRenewer.js +174 -0
- package/dist/react-native/core/autoLockRenewer.js.map +1 -0
- package/dist/react-native/core/batchingReceiver.d.ts +120 -0
- package/dist/react-native/core/batchingReceiver.d.ts.map +1 -0
- package/dist/react-native/core/batchingReceiver.js +399 -0
- package/dist/react-native/core/batchingReceiver.js.map +1 -0
- package/dist/react-native/core/linkEntity.d.ts +192 -0
- package/dist/react-native/core/linkEntity.d.ts.map +1 -0
- package/dist/react-native/core/linkEntity.js +340 -0
- package/dist/react-native/core/linkEntity.js.map +1 -0
- package/dist/react-native/core/managementClient.d.ts +312 -0
- package/dist/react-native/core/managementClient.d.ts.map +1 -0
- package/dist/react-native/core/managementClient.js +1072 -0
- package/dist/react-native/core/managementClient.js.map +1 -0
- package/dist/react-native/core/messageReceiver.d.ts +147 -0
- package/dist/react-native/core/messageReceiver.d.ts.map +1 -0
- package/dist/react-native/core/messageReceiver.js +165 -0
- package/dist/react-native/core/messageReceiver.js.map +1 -0
- package/dist/react-native/core/messageSender.d.ts +93 -0
- package/dist/react-native/core/messageSender.d.ts.map +1 -0
- package/dist/react-native/core/messageSender.js +303 -0
- package/dist/react-native/core/messageSender.js.map +1 -0
- package/dist/react-native/core/receiverHelper.d.ts +45 -0
- package/dist/react-native/core/receiverHelper.d.ts.map +1 -0
- package/dist/react-native/core/receiverHelper.js +119 -0
- package/dist/react-native/core/receiverHelper.js.map +1 -0
- package/dist/react-native/core/shared.d.ts +34 -0
- package/dist/react-native/core/shared.d.ts.map +1 -0
- package/dist/react-native/core/shared.js +66 -0
- package/dist/react-native/core/shared.js.map +1 -0
- package/dist/react-native/core/streamingReceiver.d.ts +142 -0
- package/dist/react-native/core/streamingReceiver.d.ts.map +1 -0
- package/dist/react-native/core/streamingReceiver.js +522 -0
- package/dist/react-native/core/streamingReceiver.js.map +1 -0
- package/dist/react-native/dataTransformer.d.ts +77 -0
- package/dist/react-native/dataTransformer.d.ts.map +1 -0
- package/dist/react-native/dataTransformer.js +163 -0
- package/dist/react-native/dataTransformer.js.map +1 -0
- package/dist/react-native/diagnostics/instrumentServiceBusMessage.d.ts +50 -0
- package/dist/react-native/diagnostics/instrumentServiceBusMessage.d.ts.map +1 -0
- package/dist/react-native/diagnostics/instrumentServiceBusMessage.js +101 -0
- package/dist/react-native/diagnostics/instrumentServiceBusMessage.js.map +1 -0
- package/dist/react-native/diagnostics/tracing.d.ts +21 -0
- package/dist/react-native/diagnostics/tracing.d.ts.map +1 -0
- package/dist/react-native/diagnostics/tracing.js +37 -0
- package/dist/react-native/diagnostics/tracing.js.map +1 -0
- package/dist/react-native/experimental/index.d.ts +10 -0
- package/dist/react-native/experimental/index.d.ts.map +1 -0
- package/dist/react-native/experimental/index.js +4 -0
- package/dist/react-native/experimental/index.js.map +1 -0
- package/dist/react-native/index.d.ts +26 -0
- package/dist/react-native/index.d.ts.map +1 -0
- package/dist/react-native/index.js +10 -0
- package/dist/react-native/index.js.map +1 -0
- package/dist/react-native/log.d.ts +70 -0
- package/dist/react-native/log.d.ts.map +1 -0
- package/dist/react-native/log.js +89 -0
- package/dist/react-native/log.js.map +1 -0
- package/dist/react-native/models.d.ts +328 -0
- package/dist/react-native/models.d.ts.map +1 -0
- package/dist/react-native/models.js +4 -0
- package/dist/react-native/models.js.map +1 -0
- package/dist/react-native/modelsToBeSharedWithEventHubs.d.ts +18 -0
- package/dist/react-native/modelsToBeSharedWithEventHubs.d.ts.map +1 -0
- package/dist/react-native/modelsToBeSharedWithEventHubs.js +4 -0
- package/dist/react-native/modelsToBeSharedWithEventHubs.js.map +1 -0
- package/dist/react-native/package.json +3 -0
- package/dist/react-native/receivers/receiver.d.ts +299 -0
- package/dist/react-native/receivers/receiver.d.ts.map +1 -0
- package/dist/react-native/receivers/receiver.js +379 -0
- package/dist/react-native/receivers/receiver.js.map +1 -0
- package/dist/react-native/receivers/receiverCommon.d.ts +81 -0
- package/dist/react-native/receivers/receiverCommon.d.ts.map +1 -0
- package/dist/react-native/receivers/receiverCommon.js +257 -0
- package/dist/react-native/receivers/receiverCommon.js.map +1 -0
- package/dist/react-native/receivers/sessionReceiver.d.ts +189 -0
- package/dist/react-native/receivers/sessionReceiver.d.ts.map +1 -0
- package/dist/react-native/receivers/sessionReceiver.js +428 -0
- package/dist/react-native/receivers/sessionReceiver.js.map +1 -0
- package/dist/react-native/sender.d.ts +125 -0
- package/dist/react-native/sender.d.ts.map +1 -0
- package/dist/react-native/sender.js +186 -0
- package/dist/react-native/sender.js.map +1 -0
- package/dist/react-native/serializers/namespaceResourceSerializer.d.ts +46 -0
- package/dist/react-native/serializers/namespaceResourceSerializer.d.ts.map +1 -0
- package/dist/react-native/serializers/namespaceResourceSerializer.js +34 -0
- package/dist/react-native/serializers/namespaceResourceSerializer.js.map +1 -0
- package/dist/react-native/serializers/queueResourceSerializer.d.ts +461 -0
- package/dist/react-native/serializers/queueResourceSerializer.d.ts.map +1 -0
- package/dist/react-native/serializers/queueResourceSerializer.js +99 -0
- package/dist/react-native/serializers/queueResourceSerializer.js.map +1 -0
- package/dist/react-native/serializers/ruleResourceSerializer.d.ts +135 -0
- package/dist/react-native/serializers/ruleResourceSerializer.d.ts.map +1 -0
- package/dist/react-native/serializers/ruleResourceSerializer.js +278 -0
- package/dist/react-native/serializers/ruleResourceSerializer.js.map +1 -0
- package/dist/react-native/serializers/subscriptionResourceSerializer.d.ts +396 -0
- package/dist/react-native/serializers/subscriptionResourceSerializer.d.ts.map +1 -0
- package/dist/react-native/serializers/subscriptionResourceSerializer.js +95 -0
- package/dist/react-native/serializers/subscriptionResourceSerializer.js.map +1 -0
- package/dist/react-native/serializers/topicResourceSerializer.d.ts +335 -0
- package/dist/react-native/serializers/topicResourceSerializer.d.ts.map +1 -0
- package/dist/react-native/serializers/topicResourceSerializer.js +89 -0
- package/dist/react-native/serializers/topicResourceSerializer.js.map +1 -0
- package/dist/react-native/serviceBusAtomManagementClient.d.ts +652 -0
- package/dist/react-native/serviceBusAtomManagementClient.d.ts.map +1 -0
- package/dist/react-native/serviceBusAtomManagementClient.js +1643 -0
- package/dist/react-native/serviceBusAtomManagementClient.js.map +1 -0
- package/dist/react-native/serviceBusClient.d.ts +231 -0
- package/dist/react-native/serviceBusClient.d.ts.map +1 -0
- package/dist/react-native/serviceBusClient.js +216 -0
- package/dist/react-native/serviceBusClient.js.map +1 -0
- package/dist/react-native/serviceBusError.d.ts +119 -0
- package/dist/react-native/serviceBusError.d.ts.map +1 -0
- package/dist/react-native/serviceBusError.js +103 -0
- package/dist/react-native/serviceBusError.js.map +1 -0
- package/dist/react-native/serviceBusMessage.d.ts +529 -0
- package/dist/react-native/serviceBusMessage.d.ts.map +1 -0
- package/dist/react-native/serviceBusMessage.js +598 -0
- package/dist/react-native/serviceBusMessage.js.map +1 -0
- package/dist/react-native/serviceBusMessageBatch.d.ts +153 -0
- package/dist/react-native/serviceBusMessageBatch.d.ts.map +1 -0
- package/dist/react-native/serviceBusMessageBatch.js +192 -0
- package/dist/react-native/serviceBusMessageBatch.js.map +1 -0
- package/dist/react-native/serviceBusRuleManager.d.ts +103 -0
- package/dist/react-native/serviceBusRuleManager.d.ts.map +1 -0
- package/dist/react-native/serviceBusRuleManager.js +149 -0
- package/dist/react-native/serviceBusRuleManager.js.map +1 -0
- package/dist/react-native/session/messageSession.d.ts +236 -0
- package/dist/react-native/session/messageSession.d.ts.map +1 -0
- package/dist/react-native/session/messageSession.js +755 -0
- package/dist/react-native/session/messageSession.js.map +1 -0
- package/dist/react-native/util/atomXmlHelper.d.ts +56 -0
- package/dist/react-native/util/atomXmlHelper.d.ts.map +1 -0
- package/dist/react-native/util/atomXmlHelper.js +378 -0
- package/dist/react-native/util/atomXmlHelper.js.map +1 -0
- package/dist/react-native/util/compat/compatibility.d.ts +109 -0
- package/dist/react-native/util/compat/compatibility.d.ts.map +1 -0
- package/dist/react-native/util/compat/compatibility.js +27 -0
- package/dist/react-native/util/compat/compatibility.js.map +1 -0
- package/dist/react-native/util/compat/httpHeaders.d.ts +136 -0
- package/dist/react-native/util/compat/httpHeaders.d.ts.map +1 -0
- package/dist/react-native/util/compat/httpHeaders.js +152 -0
- package/dist/react-native/util/compat/httpHeaders.js.map +1 -0
- package/dist/react-native/util/compat/index.d.ts +3 -0
- package/dist/react-native/util/compat/index.d.ts.map +1 -0
- package/dist/react-native/util/compat/index.js +5 -0
- package/dist/react-native/util/compat/index.js.map +1 -0
- package/dist/react-native/util/connectionStringUtils.d.ts +53 -0
- package/dist/react-native/util/connectionStringUtils.d.ts.map +1 -0
- package/dist/react-native/util/connectionStringUtils.js +48 -0
- package/dist/react-native/util/connectionStringUtils.js.map +1 -0
- package/dist/react-native/util/constants.d.ts +322 -0
- package/dist/react-native/util/constants.d.ts.map +1 -0
- package/dist/react-native/util/constants.js +324 -0
- package/dist/react-native/util/constants.js.map +1 -0
- package/dist/react-native/util/crypto.d.ts +5 -0
- package/dist/react-native/util/crypto.d.ts.map +1 -0
- package/dist/react-native/util/crypto.js +11 -0
- package/dist/react-native/util/crypto.js.map +1 -0
- package/dist/react-native/util/errors.d.ts +130 -0
- package/dist/react-native/util/errors.d.ts.map +1 -0
- package/dist/react-native/util/errors.js +220 -0
- package/dist/react-native/util/errors.js.map +1 -0
- package/dist/react-native/util/parseUrl.d.ts +5 -0
- package/dist/react-native/util/parseUrl.d.ts.map +1 -0
- package/dist/react-native/util/parseUrl.js +9 -0
- package/dist/react-native/util/parseUrl.js.map +1 -0
- package/dist/react-native/util/runtimeInfo-react-native.d.mts.map +1 -0
- package/dist/react-native/util/runtimeInfo-react-native.mjs.map +1 -0
- package/dist/react-native/util/runtimeInfo.d.ts +7 -0
- package/{dist-esm/src/util/runtimeInfo.native.js → dist/react-native/util/runtimeInfo.js} +3 -3
- package/dist/react-native/util/sasServiceClientCredentials.d.ts +31 -0
- package/dist/react-native/util/sasServiceClientCredentials.d.ts.map +1 -0
- package/dist/react-native/util/sasServiceClientCredentials.js +52 -0
- package/dist/react-native/util/sasServiceClientCredentials.js.map +1 -0
- package/dist/react-native/util/semaphore.d.ts +38 -0
- package/dist/react-native/util/semaphore.d.ts.map +1 -0
- package/dist/react-native/util/semaphore.js +81 -0
- package/dist/react-native/util/semaphore.js.map +1 -0
- package/dist/react-native/util/typeGuards.d.ts +8 -0
- package/dist/react-native/util/typeGuards.d.ts.map +1 -0
- package/dist/react-native/util/typeGuards.js +12 -0
- package/dist/react-native/util/typeGuards.js.map +1 -0
- package/dist/react-native/util/utils.d.ts +247 -0
- package/dist/react-native/util/utils.d.ts.map +1 -0
- package/dist/react-native/util/utils.js +496 -0
- package/dist/react-native/util/utils.js.map +1 -0
- package/package.json +123 -104
- package/dist/index.js +0 -10438
- package/dist/index.js.map +0 -1
- package/dist-esm/src/connectionContext.js.map +0 -1
- package/dist-esm/src/constructorHelpers.js.map +0 -1
- package/dist-esm/src/core/autoLockRenewer.js.map +0 -1
- package/dist-esm/src/core/batchingReceiver.js.map +0 -1
- package/dist-esm/src/core/linkEntity.js.map +0 -1
- package/dist-esm/src/core/managementClient.js.map +0 -1
- package/dist-esm/src/core/messageReceiver.js.map +0 -1
- package/dist-esm/src/core/messageSender.js.map +0 -1
- package/dist-esm/src/core/receiverHelper.js.map +0 -1
- package/dist-esm/src/core/shared.js.map +0 -1
- package/dist-esm/src/core/streamingReceiver.js.map +0 -1
- package/dist-esm/src/dataTransformer.js.map +0 -1
- package/dist-esm/src/diagnostics/instrumentServiceBusMessage.js.map +0 -1
- package/dist-esm/src/diagnostics/tracing.js.map +0 -1
- package/dist-esm/src/index.js.map +0 -1
- package/dist-esm/src/log.js.map +0 -1
- package/dist-esm/src/models.js +0 -4
- package/dist-esm/src/models.js.map +0 -1
- package/dist-esm/src/modelsToBeSharedWithEventHubs.js +0 -4
- package/dist-esm/src/modelsToBeSharedWithEventHubs.js.map +0 -1
- package/dist-esm/src/receivers/receiver.js.map +0 -1
- package/dist-esm/src/receivers/receiverCommon.js.map +0 -1
- package/dist-esm/src/receivers/sessionReceiver.js.map +0 -1
- package/dist-esm/src/sender.js.map +0 -1
- package/dist-esm/src/serializers/namespaceResourceSerializer.js.map +0 -1
- package/dist-esm/src/serializers/queueResourceSerializer.js.map +0 -1
- package/dist-esm/src/serializers/ruleResourceSerializer.js.map +0 -1
- package/dist-esm/src/serializers/subscriptionResourceSerializer.js.map +0 -1
- package/dist-esm/src/serializers/topicResourceSerializer.js.map +0 -1
- package/dist-esm/src/serviceBusAtomManagementClient.js.map +0 -1
- package/dist-esm/src/serviceBusClient.js.map +0 -1
- package/dist-esm/src/serviceBusError.js.map +0 -1
- package/dist-esm/src/serviceBusMessage.js.map +0 -1
- package/dist-esm/src/serviceBusMessageBatch.js.map +0 -1
- package/dist-esm/src/serviceBusRuleManager.js.map +0 -1
- package/dist-esm/src/session/messageSession.js.map +0 -1
- package/dist-esm/src/util/atomXmlHelper.js.map +0 -1
- package/dist-esm/src/util/compat/compatibility.js.map +0 -1
- package/dist-esm/src/util/compat/httpHeaders.js.map +0 -1
- package/dist-esm/src/util/compat/index.js +0 -5
- package/dist-esm/src/util/compat/index.js.map +0 -1
- package/dist-esm/src/util/connectionStringUtils.js.map +0 -1
- package/dist-esm/src/util/crypto.browser.js.map +0 -1
- package/dist-esm/src/util/crypto.js.map +0 -1
- package/dist-esm/src/util/errors.js.map +0 -1
- package/dist-esm/src/util/parseUrl.browser.js.map +0 -1
- package/dist-esm/src/util/parseUrl.js.map +0 -1
- package/dist-esm/src/util/runtimeInfo.browser.js.map +0 -1
- package/dist-esm/src/util/runtimeInfo.js.map +0 -1
- package/dist-esm/src/util/runtimeInfo.native.js.map +0 -1
- package/dist-esm/src/util/sasServiceClientCredentials.js.map +0 -1
- package/dist-esm/src/util/semaphore.js.map +0 -1
- package/dist-esm/src/util/typeGuards.js.map +0 -1
- package/dist-esm/src/util/utils.js.map +0 -1
- package/types/latest/service-bus-beta.d.ts +0 -3197
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connectionContext.js","sourceRoot":"","sources":["../../src/connectionContext.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { connectionLogger as logger } from \"./log\";\nimport { packageJsonInfo } from \"./util/constants\";\nimport {\n ConnectionConfig,\n ConnectionContextBase,\n CreateConnectionContextBaseParameters,\n SasTokenProvider,\n} from \"@azure/core-amqp\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { ServiceBusClientOptions } from \"./constructorHelpers\";\nimport {\n AmqpError,\n Connection,\n ConnectionError,\n ConnectionEvents,\n EventContext,\n OnAmqpEvent,\n} from \"rhea-promise\";\nimport { MessageSender } from \"./core/messageSender\";\nimport { MessageSession } from \"./session/messageSession\";\nimport { MessageReceiver } from \"./core/messageReceiver\";\nimport { ManagementClient } from \"./core/managementClient\";\nimport { formatUserAgentPrefix } from \"./util/utils\";\nimport { getRuntimeInfo } from \"./util/runtimeInfo\";\nimport { NonSessionReceiverType, ReceiverType } from \"./core/linkEntity\";\nimport { ServiceBusError } from \"./serviceBusError\";\n\n/**\n * @internal\n * Provides contextual information like the underlying amqp connection, cbs session, management session,\n * tokenCredential, senders, receivers, etc. about the ServiceBus client.\n */\nexport interface ConnectionContext extends ConnectionContextBase {\n /**\n * The credential to be used for Authentication.\n * Default value: SasTokenProvider.\n */\n tokenCredential: SasTokenProvider | TokenCredential;\n /**\n * A map of active Service Bus Senders with sender name as key.\n */\n senders: { [name: string]: MessageSender };\n /**\n * A map of active Service Bus receivers for non session enabled queues/subscriptions\n * with receiver name as key.\n */\n messageReceivers: { [name: string]: MessageReceiver };\n /**\n * A map of active Service Bus receivers for session enabled queues/subscriptions\n * with receiver name as key.\n */\n messageSessions: { [name: string]: MessageSession };\n /**\n * A map of ManagementClient instances for operations over the $management link\n * with key as the entity path.\n */\n managementClients: { [name: string]: ManagementClient };\n /**\n * Function returning a promise that resolves once the connectionContext is ready to open an AMQP link.\n * ConnectionContext will be ready to open an AMQP link when:\n * - The AMQP connection is already open on both sides.\n * - The AMQP connection has been closed or disconnected. In this case, a new AMQP connection is expected\n * to be created first.\n * An AMQP link cannot be opened if the AMQP connection\n * is in the process of closing or disconnecting.\n */\n readyToOpenLink(): Promise<void>;\n /**\n * Fetches the receiver from the cache in ConnectionContext based on the receiverName given.\n * Useful for when a message needs to be settled or have its lock renewed.\n *\n * TODO: Track the right receiver on the message instead of the ConnectionContext to remove\n * the need for this helper.\n */\n getReceiverFromCache(\n receiverName: string,\n sessionId?: string,\n ): MessageReceiver | MessageSession | undefined;\n /**\n * Gets the management client for given entity path from the cache\n * Creates one if none exists in the cache\n */\n getManagementClient(entityPath: string): ManagementClient;\n /**\n * Indicates whether the connection is in the process of closing.\n * When this returns `true`, a `disconnected` event will be received\n * after the connection is closed.\n */\n isConnectionClosing(): boolean;\n}\n\n/**\n * Describes the members on the ConnectionContext that are only\n * used by it internally.\n * @hidden\n * @internal\n */\nexport interface ConnectionContextInternalMembers extends ConnectionContext {\n /**\n * Resolves once the context's connection emits a `disconnected` event.\n */\n waitForDisconnectedEvent(): Promise<void>;\n /**\n * Resolves once the connection has finished being reset.\n * Connections are reset as part of reacting to a `disconnected` event.\n */\n waitForConnectionReset(): Promise<void>;\n}\n\n/**\n * @internal\n * Helper type to get the names of all the functions on an object.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype FunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T];\n/**\n * @internal\n * Helper type to get the types of all the functions on an object.\n */\ntype FunctionProperties<T> = Pick<T, FunctionPropertyNames<T>>;\n/**\n * @internal\n * Helper type to get the types of all the functions on ConnectionContext\n * and the internal methods from ConnectionContextInternalMembers.\n * Note that this excludes the functions that ConnectionContext inherits.\n * Each function also has its `this` type set as `ConnectionContext`.\n */\ntype ConnectionContextMethods = Omit<\n FunctionProperties<ConnectionContextInternalMembers>,\n FunctionPropertyNames<ConnectionContextBase>\n> &\n ThisType<ConnectionContextInternalMembers>;\n\n/**\n * @internal\n * Helper method to call onDetached on the non-sessions batching and streaming receivers from the connection context upon seeing an error.\n */\nasync function callOnDetachedOnReceivers(\n connectionContext: ConnectionContext,\n contextOrConnectionError: Error | ConnectionError | AmqpError | undefined,\n receiverType: NonSessionReceiverType,\n): Promise<void[]> {\n const detachCalls: Promise<void>[] = [];\n\n // Iterating over non-sessions batching and streaming receivers\n for (const receiverName of Object.keys(connectionContext.messageReceivers)) {\n const receiver = connectionContext.messageReceivers[receiverName];\n if (receiver && receiver.receiverType === receiverType) {\n logger.verbose(\n \"[%s] calling detached on %s receiver '%s'.\",\n connectionContext.connection.id,\n receiver.receiverType,\n receiver.name,\n );\n detachCalls.push(\n receiver.onDetached(contextOrConnectionError).catch((err) => {\n logger.logError(\n err,\n \"[%s] An error occurred while calling onDetached() on the %s receiver '%s'\",\n connectionContext.connection.id,\n receiver.receiverType,\n receiver.name,\n );\n }),\n );\n }\n }\n return Promise.all(detachCalls);\n}\n\n/**\n * @internal\n * Helper method to call onDetached on the session receivers from the connection context upon seeing an error.\n */\nasync function callOnDetachedOnSessionReceivers(\n connectionContext: ConnectionContext,\n contextOrConnectionError: Error | ConnectionError | AmqpError | undefined,\n): Promise<void[]> {\n const getSessionError = (sessionId: string, entityPath: string): ServiceBusError => {\n const sessionInfo =\n `The receiver for session \"${sessionId}\" in \"${entityPath}\" has been closed and can no longer be used. ` +\n `Please create a new receiver using the \"acceptSession\" or \"acceptNextSession\" method on the ServiceBusClient.`;\n\n const errorMessage =\n contextOrConnectionError == null\n ? `Unknown error occurred on the AMQP connection while receiving messages. ` + sessionInfo\n : `Error occurred on the AMQP connection while receiving messages. ` +\n sessionInfo +\n `\\nMore info - \\n${contextOrConnectionError}`;\n\n const error = new ServiceBusError(errorMessage, \"SessionLockLost\");\n error.retryable = false;\n return error;\n };\n\n const detachCalls: Promise<void>[] = [];\n\n for (const receiverName of Object.keys(connectionContext.messageSessions)) {\n const receiver = connectionContext.messageSessions[receiverName];\n logger.verbose(\n \"[%s] calling detached on %s receiver(sessions).\",\n connectionContext.connection.id,\n receiver.name,\n );\n detachCalls.push(\n receiver.onDetached(getSessionError(receiver.sessionId, receiver.entityPath)).catch((err) => {\n logger.logError(\n err,\n \"[%s] An error occurred while calling onDetached() on the session receiver(sessions) '%s'\",\n connectionContext.connection.id,\n receiver.name,\n );\n }),\n );\n }\n\n return Promise.all(detachCalls);\n}\n\n/**\n * @internal\n * Helper method to get the number of receivers of specified type from the connectionContext.\n */\nfunction getNumberOfReceivers(\n connectionContext: Pick<ConnectionContext, \"messageReceivers\" | \"messageSessions\">,\n receiverType: ReceiverType,\n): number {\n if (receiverType === \"session\") {\n const receivers = connectionContext.messageSessions;\n return Object.keys(receivers).length;\n }\n const receivers = connectionContext.messageReceivers;\n const receiverNames = Object.keys(receivers);\n const count = receiverNames.reduce(\n (acc, name) => (receivers[name].receiverType === receiverType ? ++acc : acc),\n 0,\n );\n return count;\n}\n\n/**\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ConnectionContext {\n export function create(\n config: ConnectionConfig,\n tokenCredential: SasTokenProvider | TokenCredential,\n options?: ServiceBusClientOptions,\n ): ConnectionContext {\n if (!options) options = {};\n const userAgent = `${formatUserAgentPrefix(\n options.userAgentOptions?.userAgentPrefix,\n )} ${getRuntimeInfo()}`;\n const parameters: CreateConnectionContextBaseParameters = {\n config: config,\n // re-enabling this will be a post-GA discussion similar to event-hubs.\n // dataTransformer: options.dataTransformer,\n isEntityPathRequired: false,\n connectionProperties: {\n product: \"MSJSClient\",\n userAgent,\n version: packageJsonInfo.version,\n },\n };\n // Let us create the base context and then add ServiceBus specific ConnectionContext properties.\n const connectionContext = ConnectionContextBase.create(parameters) as ConnectionContext;\n connectionContext.tokenCredential = tokenCredential;\n connectionContext.senders = {};\n connectionContext.messageReceivers = {};\n connectionContext.messageSessions = {};\n connectionContext.managementClients = {};\n\n let waitForConnectionRefreshResolve: () => void;\n let waitForConnectionRefreshPromise: Promise<void> | undefined;\n Object.assign<ConnectionContext, ConnectionContextMethods>(connectionContext, {\n isConnectionClosing() {\n // When the connection is not open, but the remote end is open,\n // then the rhea connection is in the process of terminating.\n return Boolean(!this.connection.isOpen() && this.connection.isRemoteOpen());\n },\n async readyToOpenLink() {\n logger.verbose(\n `[${this.connectionId}] Waiting until the connection is ready to open link.`,\n );\n // Check that the connection isn't in the process of closing.\n // This can happen when the idle timeout has been reached but\n // the underlying socket is waiting to be destroyed.\n if (this.isConnectionClosing()) {\n logger.verbose(\n `[${this.connectionId}] Connection is closing, waiting for disconnected event`,\n );\n // Wait for the disconnected event that indicates the underlying socket has closed.\n await this.waitForDisconnectedEvent();\n }\n\n // Wait for the connection to be reset.\n await this.waitForConnectionReset();\n logger.verbose(`[${this.connectionId}] Connection is ready to open link.`);\n },\n waitForDisconnectedEvent() {\n return new Promise((resolve) => {\n logger.verbose(\n `[${this.connectionId}] Attempting to reinitialize connection` +\n ` but the connection is in the process of closing.` +\n ` Waiting for the disconnect event before continuing.`,\n );\n this.connection.once(ConnectionEvents.disconnected, resolve);\n });\n },\n waitForConnectionReset() {\n // Check if the connection is currently in the process of disconnecting.\n if (waitForConnectionRefreshPromise) {\n logger.verbose(`[${this.connectionId}] Waiting for connection reset`);\n return waitForConnectionRefreshPromise;\n }\n\n logger.verbose(\n `[${this.connectionId}] Connection not waiting to be reset. Resolving immediately.`,\n );\n return Promise.resolve();\n },\n getReceiverFromCache(\n receiverName: string,\n sessionId?: string,\n ): MessageReceiver | MessageSession | undefined {\n if (sessionId != null && this.messageSessions[receiverName]) {\n return this.messageSessions[receiverName];\n }\n\n if (this.messageReceivers[receiverName]) {\n return this.messageReceivers[receiverName];\n }\n\n let existingReceivers = \"\";\n if (sessionId != null) {\n for (const messageSessionName of Object.keys(this.messageSessions)) {\n if (this.messageSessions[messageSessionName].sessionId === sessionId) {\n existingReceivers = this.messageSessions[messageSessionName].name;\n break;\n }\n }\n } else {\n existingReceivers +=\n (existingReceivers ? \", \" : \"\") + Object.keys(this.messageReceivers).join(\",\");\n }\n\n logger.verbose(\n \"[%s] Failed to find receiver '%s' among existing receivers: %s\",\n this.connectionId,\n receiverName,\n existingReceivers,\n );\n return;\n },\n getManagementClient(entityPath: string): ManagementClient {\n if (!this.managementClients[entityPath]) {\n this.managementClients[entityPath] = new ManagementClient(this, entityPath, {\n address: `${entityPath}/$management`,\n });\n }\n return this.managementClients[entityPath];\n },\n });\n\n // Define listeners to be added to the connection object for\n // \"connection_open\" and \"connection_error\" events.\n const onConnectionOpen: OnAmqpEvent = () => {\n connectionContext.wasConnectionCloseCalled = false;\n logger.verbose(\n \"[%s] setting 'wasConnectionCloseCalled' property of connection context to %s.\",\n connectionContext.connection.id,\n connectionContext.wasConnectionCloseCalled,\n );\n };\n\n const disconnected: OnAmqpEvent = async (context: EventContext) => {\n if (waitForConnectionRefreshPromise) {\n return;\n }\n\n waitForConnectionRefreshPromise = new Promise((resolve) => {\n waitForConnectionRefreshResolve = resolve;\n });\n\n const connectionError =\n context.connection && context.connection.error ? context.connection.error : undefined;\n if (connectionError) {\n logger.logError(\n connectionError,\n \"[%s] Error (context.connection.error) occurred on the amqp connection\",\n connectionContext.connection.id,\n );\n }\n const contextError = context.error;\n if (contextError) {\n logger.logError(\n contextError,\n \"[%s] Error (context.error) occurred on the amqp connection\",\n connectionContext.connection.id,\n );\n }\n const state: Readonly<{\n wasConnectionCloseCalled: boolean;\n numSenders: number;\n numReceivers: number;\n }> = {\n wasConnectionCloseCalled: connectionContext.wasConnectionCloseCalled,\n numSenders: Object.keys(connectionContext.senders).length,\n numReceivers:\n Object.keys(connectionContext.messageReceivers).length +\n Object.keys(connectionContext.messageSessions).length,\n };\n\n // Clear internal map maintained by rhea to avoid reconnecting of old links once the\n // connection is back up.\n connectionContext.connection.removeAllSessions();\n\n // Close the cbs session to ensure all the event handlers are released.\n await connectionContext.cbsSession.close();\n\n // Close the management sessions to ensure all the event handlers are released.\n for (const entityPath of Object.keys(connectionContext.managementClients)) {\n await connectionContext.managementClients[entityPath].close();\n }\n\n if (state.wasConnectionCloseCalled) {\n // Do Nothing\n } else {\n // Calling onDetached on sender\n if (state.numSenders) {\n // We don't do recovery for the sender:\n // Because we don't want to keep the sender active all the time\n // and the \"next\" send call would bear the burden of creating the link.\n // Call onDetached() on sender so that it can gracefully shutdown\n // by cleaning up the timers and closing the links.\n // We don't call onDetached for sender after `refreshConnection()`\n // because any new send calls that potentially initialize links would also get affected if called later.\n logger.verbose(\n `[${connectionContext.connection.id}] connection.close() was not called from the sdk and there were ${state.numSenders} ` +\n `senders. We should not reconnect.`,\n );\n const detachCalls: Promise<void>[] = [];\n for (const senderName of Object.keys(connectionContext.senders)) {\n const sender = connectionContext.senders[senderName];\n if (sender) {\n logger.verbose(\n \"[%s] calling detached on sender '%s'.\",\n connectionContext.connection.id,\n sender.name,\n );\n detachCalls.push(\n sender.onDetached().catch((err) => {\n logger.logError(\n err,\n \"[%s] An error occurred while calling onDetached() the sender '%s'\",\n connectionContext.connection.id,\n sender.name,\n );\n }),\n );\n }\n }\n await Promise.all(detachCalls);\n }\n\n // Calling onDetached on batching receivers for the same reasons as sender\n const numBatchingReceivers = getNumberOfReceivers(connectionContext, \"batching\");\n if (numBatchingReceivers) {\n logger.verbose(\n `[${connectionContext.connection.id}] connection.close() was not called from the sdk and there were ${numBatchingReceivers} ` +\n `batching receivers. We should not reconnect.`,\n );\n\n // Call onDetached() on receivers so that batching receivers it can gracefully close any ongoing batch operation\n await callOnDetachedOnReceivers(\n connectionContext,\n connectionError || contextError,\n \"batching\",\n );\n }\n\n // Calling onDetached on session receivers\n const numSessionReceivers = getNumberOfReceivers(connectionContext, \"session\");\n if (numSessionReceivers) {\n logger.verbose(\n `[${connectionContext.connection.id}] connection.close() was not called from the sdk and there were ${numSessionReceivers} ` +\n `session receivers. We should close them.`,\n );\n\n await callOnDetachedOnSessionReceivers(\n connectionContext,\n connectionError || contextError,\n );\n }\n }\n await refreshConnection();\n waitForConnectionRefreshResolve();\n waitForConnectionRefreshPromise = undefined;\n // The connection should always be brought back up if the sdk did not call connection.close()\n // and there was at least one receiver link on the connection before it went down.\n logger.verbose(\"[%s] state: %O\", connectionContext.connectionId, state);\n\n // Calling onDetached on streaming receivers\n const numStreamingReceivers = getNumberOfReceivers(connectionContext, \"streaming\");\n if (!state.wasConnectionCloseCalled && numStreamingReceivers) {\n logger.verbose(\n `[${connectionContext.connection.id}] connection.close() was not called from the sdk and there were ${numStreamingReceivers} ` +\n `streaming receivers. We should reconnect.`,\n );\n\n // Calling `onDetached()` on streaming receivers after the refreshConnection() since `onDetached()` would\n // recover the streaming receivers and that would only be possible after the connection is refreshed.\n //\n // This is different from the batching receiver since `onDetached()` for the batching receiver would\n // return the outstanding messages and close the receive link.\n await callOnDetachedOnReceivers(\n connectionContext,\n connectionError || contextError,\n \"streaming\",\n );\n }\n };\n\n const protocolError: OnAmqpEvent = async (context: EventContext) => {\n if (context.connection && context.connection.error) {\n logger.logError(\n context.connection.error,\n \"[%s] Error (context.connection.error) occurred on the amqp connection\",\n connectionContext.connection.id,\n );\n }\n if (context.error) {\n logger.logError(\n context.error,\n \"[%s] Error (context.error) occurred on the amqp connection\",\n connectionContext.connection.id,\n );\n }\n };\n\n const error: OnAmqpEvent = async (context: EventContext) => {\n if (context.connection && context.connection.error) {\n logger.logError(\n context.connection.error,\n \"[%s] Error (context.connection.error) occurred on the amqp connection\",\n connectionContext.connection.id,\n );\n }\n if (context.error) {\n logger.logError(\n context.error,\n \"[%s] Error (context.error) occurred on the amqp connection\",\n connectionContext.connection.id,\n );\n }\n };\n\n async function refreshConnection(): Promise<void> {\n const originalConnectionId = connectionContext.connectionId;\n try {\n await cleanConnectionContext();\n } catch (err: any) {\n logger.logError(\n err,\n `[${connectionContext.connectionId}] There was an error closing the connection before reconnecting`,\n );\n }\n // Create a new connection, id, locks, and cbs client.\n connectionContext.refreshConnection();\n addConnectionListeners(connectionContext.connection);\n logger.verbose(\n `The connection \"${originalConnectionId}\" has been updated to \"${connectionContext.connectionId}\".`,\n );\n }\n\n function addConnectionListeners(connection: Connection): void {\n // Add listeners on the connection object.\n connection.on(ConnectionEvents.connectionOpen, onConnectionOpen);\n connection.on(ConnectionEvents.disconnected, disconnected);\n connection.on(ConnectionEvents.protocolError, protocolError);\n connection.on(ConnectionEvents.error, error);\n }\n\n async function cleanConnectionContext(): Promise<void> {\n // Remove listeners from the connection object.\n connectionContext.connection.removeListener(\n ConnectionEvents.connectionOpen,\n onConnectionOpen,\n );\n connectionContext.connection.removeListener(ConnectionEvents.disconnected, disconnected);\n connectionContext.connection.removeListener(ConnectionEvents.protocolError, protocolError);\n connectionContext.connection.removeListener(ConnectionEvents.error, error);\n // Close the connection\n await connectionContext.connection.close();\n }\n\n addConnectionListeners(connectionContext.connection);\n\n logger.verbose(\"[%s] Created connection context successfully.\", connectionContext.connectionId);\n\n return connectionContext;\n }\n\n /**\n * Closes the AMQP connection created by this ServiceBusClient along with AMQP links for\n * sender/receivers created by the queue/topic/subscription clients created by this\n * ServiceBusClient.\n * Once closed,\n * - the clients created by this ServiceBusClient cannot be used to send/receive messages anymore.\n * - this ServiceBusClient cannot be used to create any new queues/topics/subscriptions clients.\n */\n export async function close(context: ConnectionContext): Promise<void> {\n const logPrefix = `[${context.connectionId}]`;\n\n try {\n logger.verbose(`${logPrefix} Permanently closing the amqp connection on the client.`);\n\n const senderNames = Object.keys(context.senders);\n const messageReceiverNames = Object.keys(context.messageReceivers);\n const messageSessionNames = Object.keys(context.messageSessions);\n const managementClientsEntityPaths = Object.keys(context.managementClients);\n logger.verbose(\n `${logPrefix} Permanently closing all the senders(${senderNames.length}), MessageReceivers(${messageReceiverNames.length}), MessageSessions(${messageSessionNames.length}), and ManagementClients(${managementClientsEntityPaths.length}).`,\n );\n await Promise.all([\n ...senderNames.map((n) => context.senders[n].close()),\n ...messageReceiverNames.map((n) => context.messageReceivers[n].close()),\n ...messageSessionNames.map((n) => context.messageSessions[n].close()),\n ...managementClientsEntityPaths.map((p) => context.managementClients[p].close()),\n ]);\n\n logger.verbose(`${logPrefix} Permanently closing cbsSession`);\n await context.cbsSession.close();\n\n logger.verbose(`${logPrefix} Permanently closing internal connection`);\n await context.connection.close();\n context.wasConnectionCloseCalled = true;\n logger.verbose(`[${logPrefix} Permanently closed the amqp connection on the client.`);\n } catch (err: any) {\n const errObj = err instanceof Error ? err : new Error(JSON.stringify(err));\n logger.logError(err, `${logPrefix} An error occurred while closing the connection`);\n throw errObj;\n }\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constructorHelpers.js","sourceRoot":"","sources":["../../src/constructorHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n ConnectionConfig,\n createSasTokenProvider,\n RetryOptions,\n SasTokenProvider,\n WebSocketOptions,\n} from \"@azure/core-amqp\";\nimport {\n isNamedKeyCredential,\n isSASCredential,\n NamedKeyCredential,\n SASCredential,\n TokenCredential,\n} from \"@azure/core-auth\";\nimport { ConnectionContext } from \"./connectionContext\";\nimport { UserAgentPolicyOptions } from \"@azure/core-rest-pipeline\";\nimport {\n parseServiceBusConnectionString,\n ServiceBusConnectionStringProperties,\n} from \"./util/connectionStringUtils\";\n\n/**\n * Describes the options that can be provided while creating the ServiceBusClient.\n *\n * - `webSocketOptions` : Options to configure the channelling of the AMQP connection over Web Sockets.\n * - `websocket` : The WebSocket constructor used to create an AMQP connection if you choose to make the connection\n * over a WebSocket.\n * - `webSocketConstructorOptions` : Options to pass to the Websocket constructor when you choose to make the connection\n * over a WebSocket.\n * - `retryOptions` : The retry options for all the operations on the client.\n * - `maxRetries` : The number of times the operation can be retried in case of a retryable error.\n * - `maxRetryDelayInMs`: The maximum delay between retries. Applicable only when performing exponential retries.\n * - `mode`: Which retry mode to apply, specified by the `RetryMode` enum. Options are `Exponential` and `Fixed`. Defaults to `Fixed`.\n * - `retryDelayInMs`: Amount of time to wait in milliseconds before making the next attempt. When `mode` is set to `Exponential`,\n * this is used to compute the exponentially increasing delays between retries. Default: 30000 milliseconds.\n * - `timeoutInMs`: Amount of time in milliseconds to wait before the operation times out. This will trigger a retry if there are any\n * retry attempts remaining. Minimum value: 60000 milliseconds.\n */\nexport interface ServiceBusClientOptions {\n /**\n * ID to identify this client. This can be used to correlate logs and exceptions.\n */\n identifier?: string;\n /**\n * A custom endpoint to use when connecting to the Service Bus service.\n * This can be useful when your network does not allow connecting to the\n * standard Azure Service Bus endpoint address, but does allow connecting\n * through an intermediary.\n *\n * Example: \"https://my.custom.endpoint:100/\"\n */\n customEndpointAddress?: string;\n /**\n * Retry policy options that determine the mode, number of retries, retry interval etc.\n */\n retryOptions?: RetryOptions;\n /**\n * Options to configure the channelling of the AMQP connection over Web Sockets.\n */\n webSocketOptions?: WebSocketOptions;\n /**\n * Options for adding user agent details to outgoing requests.\n */\n userAgentOptions?: UserAgentPolicyOptions;\n}\n\n// TODO: extract parseEndpoint and setCustomEndpointAddress into core-amqp\n// ConnectionConfig so that it can be shared between Event Hubs and Service Bus\n/**\n * Parses the host, hostname, and port from an endpoint.\n * @param endpoint - And endpoint to parse.\n * @internal\n */\nexport function parseEndpoint(endpoint: string): { host: string; hostname: string; port?: string } {\n const hostMatch = endpoint.match(/.*:\\/\\/([^/]*)/);\n if (!hostMatch) {\n throw new TypeError(`Invalid endpoint missing host: ${endpoint}`);\n }\n\n const [, host] = hostMatch;\n const [hostname, port] = host.split(\":\");\n\n return { host, hostname, port };\n}\n/**\n * Updates the provided ConnectionConfig to use the custom endpoint address.\n * @param config - An existing connection configuration to be updated.\n * @param customEndpointAddress - The custom endpoint address to use.\n */\nfunction setCustomEndpointAddress(config: ConnectionConfig, customEndpointAddress: string): void {\n // The amqpHostname should match the host prior to using the custom endpoint.\n config.amqpHostname = config.host;\n const { hostname, port } = parseEndpoint(customEndpointAddress);\n // Since we specify the port separately, set host to the customEndpointAddress hostname.\n config.host = hostname;\n if (port) {\n config.port = parseInt(port, 10);\n }\n}\n\n/**\n * @internal\n *\n */\nexport function createConnectionContext(\n connectionString: string,\n credential: SasTokenProvider | TokenCredential,\n options: ServiceBusClientOptions,\n): ConnectionContext {\n const config = ConnectionConfig.create(connectionString);\n\n config.webSocket = options?.webSocketOptions?.webSocket;\n config.webSocketEndpointPath = \"$servicebus/websocket\";\n config.webSocketConstructorOptions = options?.webSocketOptions?.webSocketConstructorOptions;\n\n if (options?.customEndpointAddress) {\n setCustomEndpointAddress(config, options.customEndpointAddress);\n }\n\n return ConnectionContext.create(config, credential, options);\n}\n\n/**\n * @internal\n */\nexport function createConnectionContextForConnectionString(\n connectionString: string,\n options: ServiceBusClientOptions = {},\n): ConnectionContext {\n const parsed = parseServiceBusConnectionString(connectionString) as Required<\n | Pick<ServiceBusConnectionStringProperties, \"sharedAccessKey\" | \"sharedAccessKeyName\">\n | Pick<ServiceBusConnectionStringProperties, \"sharedAccessSignature\">\n >;\n const sasTokenProvider = createSasTokenProvider(parsed);\n return createConnectionContext(connectionString, sasTokenProvider, options);\n}\n\n/**\n *\n * @internal\n */\nexport function createConnectionContextForCredential(\n credential: TokenCredential | NamedKeyCredential | SASCredential,\n host: string,\n options: ServiceBusClientOptions = {},\n): ConnectionContext {\n if (typeof host !== \"string\") {\n throw new TypeError(\"`host` parameter is not a string\");\n }\n\n let tokenProvider: TokenCredential | SasTokenProvider;\n\n // host, credential and options based constructor was invoked\n if (!host.endsWith(\"/\")) {\n host += \"/\";\n }\n if (isNamedKeyCredential(credential) || isSASCredential(credential)) {\n tokenProvider = createSasTokenProvider(credential);\n } else {\n tokenProvider = credential;\n }\n const connectionString = `Endpoint=sb://${host};SharedAccessKeyName=defaultKeyName;SharedAccessKey=defaultKeyValue;`;\n return createConnectionContext(connectionString, tokenProvider, options);\n}\n\n/**\n * Parses a connection string and extracts the EntityPath named entity out.\n * @param connectionString - An entity specific Service Bus connection string.\n * @internal\n */\nexport function getEntityNameFromConnectionString(connectionString: string): string {\n const entityPathMatch = connectionString.match(/^.+EntityPath=(.+?);{0,1}$/);\n\n if (entityPathMatch != null && entityPathMatch.length === 2) {\n return entityPathMatch[1];\n } else {\n throw new Error(\"No entity name present in the connection string\");\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autoLockRenewer.js","sourceRoot":"","sources":["../../../src/core/autoLockRenewer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { ConnectionContext } from \"../connectionContext\";\nimport { receiverLogger as logger } from \"../log\";\nimport { ServiceBusMessageImpl } from \"../serviceBusMessage\";\nimport { calculateRenewAfterDuration } from \"../util/utils\";\nimport { LinkEntity } from \"./linkEntity\";\nimport { OnErrorNoContext } from \"./messageReceiver\";\n\n/**\n * @internal\n */\nexport type RenewableMessageProperties = Readonly<\n Pick<ServiceBusMessageImpl, \"lockToken\" | \"messageId\">\n> &\n // updated when we renew the lock\n Pick<ServiceBusMessageImpl, \"lockedUntilUtc\">;\n\n/**\n * @internal\n */\ntype MinimalLink = Pick<LinkEntity<any>, \"name\" | \"logPrefix\" | \"entityPath\">;\n\n/**\n * Tracks locks for messages, renewing until a configurable duration.\n *\n * @internal\n */\nexport class LockRenewer {\n /**\n * A map of link names to individual maps for each\n * link that map a message ID to its auto-renewal timer.\n */\n private _messageRenewLockTimers = new Map<string, Map<string, NodeJS.Timeout | undefined>>();\n\n // just here for make unit testing a bit easier.\n private _calculateRenewAfterDuration: typeof calculateRenewAfterDuration;\n\n constructor(\n private _context: Pick<ConnectionContext, \"getManagementClient\">,\n private _maxAutoRenewDurationInMs: number,\n ) {\n this._calculateRenewAfterDuration = calculateRenewAfterDuration;\n }\n\n /**\n * Creates an AutoLockRenewer.\n *\n * @param linkEntity - Your link entity instance (probably 'this')\n * @param context - The connection context for your link entity (probably 'this._context')\n * @param options - The ReceiveOptions passed through to your message receiver.\n * @returns if the lock mode is peek lock (or if is unspecified, thus defaulting to peekLock)\n * and the options.maxAutoLockRenewalDurationInMs is greater than 0..Otherwise, returns undefined.\n */\n static create(\n context: Pick<ConnectionContext, \"getManagementClient\">,\n maxAutoRenewLockDurationInMs: number,\n receiveMode: \"peekLock\" | \"receiveAndDelete\",\n ): LockRenewer | undefined {\n if (receiveMode !== \"peekLock\") {\n return undefined;\n }\n\n if (maxAutoRenewLockDurationInMs <= 0) {\n return undefined;\n }\n\n return new LockRenewer(context, maxAutoRenewLockDurationInMs);\n }\n\n /**\n * Cancels all pending lock renewals for messages on given link and removes all entries from our internal cache.\n */\n stopAll(linkEntity: MinimalLink): void {\n logger.verbose(\n `${linkEntity.logPrefix} Clearing message renew lock timers for all the active messages.`,\n );\n\n const messagesForLink = this._messageRenewLockTimers.get(linkEntity.name);\n\n if (messagesForLink == null) {\n return;\n }\n\n for (const messageId of messagesForLink.keys()) {\n this._stopAndRemoveById(linkEntity, messagesForLink, messageId);\n }\n\n this._messageRenewLockTimers.delete(linkEntity.name);\n }\n\n /**\n * Stops lock renewal for a single message.\n *\n * @param bMessage - The message whose lock renewal we will stop.\n */\n stop(linkEntity: MinimalLink, bMessage: RenewableMessageProperties): void {\n const messageId = bMessage.messageId as string;\n\n const messagesForLink = this._messageRenewLockTimers.get(linkEntity.name);\n\n if (messagesForLink == null) {\n return;\n }\n\n this._stopAndRemoveById(linkEntity, messagesForLink, messageId);\n }\n\n /**\n * Starts lock renewal for a single message.\n *\n * @param bMessage - The message whose lock renewal we will start.\n */\n start(\n linkEntity: MinimalLink,\n bMessage: RenewableMessageProperties,\n onError: OnErrorNoContext,\n ): void {\n try {\n const logPrefix = linkEntity.logPrefix;\n\n if (bMessage.lockToken == null) {\n throw new Error(\n `Can't start auto lock renewal for message with message id '${bMessage.messageId}' since it does not have a lock token.`,\n );\n }\n\n const lockToken = bMessage.lockToken;\n const linkMessageMap = this._getOrCreateMapForLink(linkEntity);\n // - We need to renew locks before they expire by looking at bMessage.lockedUntilUtc.\n // - This autorenewal needs to happen **NO MORE** than maxAutoRenewDurationInMs\n // - We should be able to clear the renewal timer when the user's message handler\n // is done (whether it succeeds or fails).\n // Setting the messageId with undefined value in the linkMessageMap because we\n // track state by checking the presence of messageId in the map. It is removed from the map\n // when an attempt is made to settle the message (either by the user or by the sdk) OR\n // when the execution of user's message handler completes.\n linkMessageMap.set(bMessage.messageId as string, undefined);\n\n logger.verbose(\n `${logPrefix} message with id '${\n bMessage.messageId\n }' is locked until ${bMessage.lockedUntilUtc!.toString()}.`,\n );\n const totalAutoLockRenewDuration = Date.now() + this._maxAutoRenewDurationInMs;\n const totalAutoLockRenewDurationDate = new Date(totalAutoLockRenewDuration);\n logger.verbose(\n `${logPrefix} Total autolockrenew duration for message with id '${\n bMessage.messageId\n }' is: ${totalAutoLockRenewDurationDate.toString()}`,\n );\n\n const autoRenewLockTask = (): void => {\n const renewalNeededToMaintainLock =\n // if the lock expires _after_ our max auto-renew duration there's no reason to\n // spin up an auto-renewer - it's already held for the duration.\n totalAutoLockRenewDurationDate > bMessage.lockedUntilUtc!;\n\n if (!renewalNeededToMaintainLock) {\n logger.verbose(\n `${logPrefix} Autolockrenew not needed as message's lockedUntilUtc ${bMessage.lockedUntilUtc} is after the total autolockrenew duration ${totalAutoLockRenewDurationDate} for message with messageId '${bMessage.messageId}'. Hence we will stop the autoLockRenewTask.`,\n );\n this.stop(linkEntity, bMessage);\n } else if (Date.now() >= totalAutoLockRenewDuration) {\n // once we've exceeded the max amount of time we'll renew we can stop.\n logger.verbose(\n `${logPrefix} Current time ${new Date()} exceeds the total autolockrenew duration ${totalAutoLockRenewDurationDate} for message with messageId '${\n bMessage.messageId\n }'. Hence we will stop the autoLockRenewTask.`,\n );\n this.stop(linkEntity, bMessage);\n } else {\n if (linkMessageMap.has(bMessage.messageId as string)) {\n // TODO: We can run into problems with clock skew between the client and the server.\n // It would be better to calculate the duration based on the \"lockDuration\" property\n // of the queue. However, we do not have the management plane of the client ready for\n // now. Hence we rely on the lockedUntilUtc property on the message set by ServiceBus.\n const amount = this._calculateRenewAfterDuration(bMessage.lockedUntilUtc!);\n\n logger.verbose(\n `${logPrefix} Sleeping for ${amount} milliseconds while renewing the lock for message with id '${bMessage.messageId}'`,\n );\n // Setting the value of the messageId to the actual timer. This will be cleared when\n // an attempt is made to settle the message (either by the user or by the sdk) OR\n // when the execution of user's message handler completes.\n const autoRenewTimer = setTimeout(async () => {\n try {\n logger.verbose(\n `${logPrefix} Attempting to renew the lock for message with id '${bMessage.messageId}'.`,\n );\n\n bMessage.lockedUntilUtc = await this._context\n .getManagementClient(linkEntity.entityPath)\n .renewLock(lockToken, {\n associatedLinkName: linkEntity.name,\n });\n logger.verbose(\n `${logPrefix} Successfully renewed the lock for message with id '${bMessage.messageId}'. Starting next auto-lock-renew cycle for message.`,\n );\n\n autoRenewLockTask();\n } catch (err: any) {\n logger.logError(\n err,\n `${logPrefix} An error occurred while auto renewing the message lock '${bMessage.lockToken}' for message with id '${bMessage.messageId}'`,\n );\n onError(err);\n }\n }, amount);\n\n // Prevent the active Timer from keeping the Node.js event loop active.\n if (typeof autoRenewTimer.unref === \"function\") {\n autoRenewTimer.unref();\n }\n\n linkMessageMap.set(bMessage.messageId as string, autoRenewTimer);\n } else {\n logger.verbose(\n `${logPrefix} Looks like the message lock renew timer has already been cleared for message with id '${bMessage.messageId}'.`,\n );\n }\n }\n };\n\n // start\n autoRenewLockTask();\n } catch (err: any) {\n onError(err);\n }\n }\n\n private _getOrCreateMapForLink(linkEntity: MinimalLink): Map<string, NodeJS.Timeout | undefined> {\n if (!this._messageRenewLockTimers.has(linkEntity.name)) {\n this._messageRenewLockTimers.set(\n linkEntity.name,\n new Map<string, NodeJS.Timeout | undefined>(),\n );\n }\n\n return this._messageRenewLockTimers.get(linkEntity.name)!;\n }\n\n private _stopAndRemoveById(\n linkEntity: MinimalLink,\n linkMessageMap: Map<string, NodeJS.Timeout | undefined>,\n messageId: string | undefined,\n ): void {\n if (messageId == null) {\n throw new Error(\"Failed to stop auto lock renewal - no message ID\");\n }\n\n // TODO: messageId doesn't actually need to be unique. Perhaps we should use lockToken\n // instead?\n if (linkMessageMap.has(messageId)) {\n clearTimeout(linkMessageMap.get(messageId) as NodeJS.Timeout);\n logger.verbose(\n `${linkEntity.logPrefix} Cleared the message renew lock timer for message with id '${messageId}'.`,\n );\n linkMessageMap.delete(messageId);\n }\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batchingReceiver.js","sourceRoot":"","sources":["../../../src/core/batchingReceiver.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { receiverLogger as logger } from \"../log\";\nimport {\n AmqpError,\n EventContext,\n OnAmqpEvent,\n ReceiverEvents,\n SessionEvents,\n Receiver as RheaPromiseReceiver,\n Session,\n} from \"rhea-promise\";\nimport { ServiceBusMessageImpl } from \"../serviceBusMessage\";\nimport { MessageReceiver, OnAmqpEventAsPromise, ReceiveOptions } from \"./messageReceiver\";\nimport { ConnectionContext } from \"../connectionContext\";\nimport { throwErrorIfConnectionClosed } from \"../util/errors\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { checkAndRegisterWithAbortSignal } from \"../util/utils\";\nimport { receiveDrainTimeoutInMs } from \"../util/constants\";\nimport { OperationOptionsBase } from \"../modelsToBeSharedWithEventHubs\";\nimport { toProcessingSpanOptions } from \"../diagnostics/instrumentServiceBusMessage\";\nimport { ReceiveMode } from \"../models\";\nimport { ServiceBusError, translateServiceBusError } from \"../serviceBusError\";\nimport { tracingClient } from \"../diagnostics/tracing\";\n\n/**\n * Describes the batching receiver where the user can receive a specified number of messages for\n * a predefined time.\n * @internal\n */\nexport class BatchingReceiver extends MessageReceiver {\n /**\n * Instantiate a new BatchingReceiver.\n *\n * @param identifier - name to identify this receiver.\n * @param connectionContext - The client entity context.\n * @param options - Options for how you'd like to connect.\n */\n constructor(\n identifier: string,\n connectionContext: ConnectionContext,\n entityPath: string,\n options: ReceiveOptions,\n ) {\n super(identifier, connectionContext, entityPath, \"batching\", options);\n\n this._batchingReceiverLite = new BatchingReceiverLite(\n connectionContext,\n entityPath,\n async (abortSignal?: AbortSignalLike): Promise<MinimalReceiver | undefined> => {\n let lastError: Error | AmqpError | undefined;\n\n const rcvrOptions = this._createReceiverOptions(false, {\n onError: (context) => {\n lastError = context?.receiver?.error;\n },\n onSessionError: (context) => {\n lastError = context?.session?.error;\n },\n onClose: async () => {\n /** Nothing to do here - the next call will just fail so they'll get an appropriate error from somewhere else. */\n },\n onSessionClose: async () => {\n /** Nothing to do here - the next call will just fail so they'll get an appropriate error from somewhere else. */\n },\n onMessage: async () => {\n /** Nothing to do here - we don't add credits initially so we don't need to worry about handling any messages.*/\n },\n });\n\n await this._init(rcvrOptions, abortSignal);\n\n if (lastError != null) {\n throw lastError;\n }\n\n return this.link;\n },\n this.receiveMode,\n options.skipParsingBodyAsJson ?? false,\n options.skipConvertingDate ?? false,\n );\n }\n\n private _batchingReceiverLite: BatchingReceiverLite;\n\n get isReceivingMessages(): boolean {\n return this._batchingReceiverLite.isReceivingMessages;\n }\n\n /**\n * To be called when connection is disconnected to gracefully close ongoing receive request.\n * @param connectionError - The connection error if any.\n */\n async onDetached(connectionError?: AmqpError | Error): Promise<void> {\n await this.closeLink();\n\n if (connectionError == null) {\n connectionError = new Error(\n \"Unknown error occurred on the AMQP connection while receiving messages.\",\n );\n }\n\n this._batchingReceiverLite.terminate(connectionError);\n }\n\n /**\n * Receives a batch of messages from a ServiceBus Queue/Topic.\n * @param maxMessageCount - The maximum number of messages to receive.\n * In Peeklock mode, this number is capped at 2047 due to constraints of the underlying buffer.\n * @param maxWaitTimeInMs - The total wait time in milliseconds until which the receiver will attempt to receive specified number of messages.\n * @param maxTimeAfterFirstMessageInMs - The total amount of time to wait after the first message\n * has been received. Defaults to 1 second.\n * If this time elapses before the `maxMessageCount` is reached, then messages collected till then will be returned to the user.\n * @returns A promise that resolves with an array of Message objects.\n */\n async receive(\n maxMessageCount: number,\n maxWaitTimeInMs: number,\n maxTimeAfterFirstMessageInMs: number,\n options: OperationOptionsBase,\n ): Promise<ServiceBusMessageImpl[]> {\n throwErrorIfConnectionClosed(this._context);\n try {\n const messages = await this._batchingReceiverLite.receiveMessages({\n maxMessageCount,\n maxWaitTimeInMs,\n maxTimeAfterFirstMessageInMs,\n ...options,\n });\n\n if (this._lockRenewer) {\n for (const message of messages) {\n this._lockRenewer.start(this, message, (_error) => {\n // the auto lock renewer already logs this in a detailed way. So this hook is mainly here\n // to potentially forward the error to the user (which we're not doing yet)\n });\n }\n }\n\n return messages;\n } catch (error: any) {\n logger.logError(error, \"[%s] Rejecting receiveMessages()\", this.logPrefix);\n throw error;\n }\n }\n\n static create(\n clientId: string,\n context: ConnectionContext,\n entityPath: string,\n options: ReceiveOptions,\n ): BatchingReceiver {\n throwErrorIfConnectionClosed(context);\n const bReceiver = new BatchingReceiver(clientId, context, entityPath, options);\n context.messageReceivers[bReceiver.name] = bReceiver;\n return bReceiver;\n }\n\n protected removeLinkFromContext(): void {\n delete this._context.messageReceivers[this.name];\n }\n}\n\n/**\n * Gets a function that returns the smaller of the two timeouts,\n * taking into account elapsed time from when getRemainingWaitTimeInMsFn\n * was called.\n *\n * @param maxWaitTimeInMs - Maximum time to wait for the first message\n * @param maxTimeAfterFirstMessageInMs - Maximum time to wait after the first message before completing the receive.\n *\n * @internal\n */\nexport function getRemainingWaitTimeInMsFn(\n maxWaitTimeInMs: number,\n maxTimeAfterFirstMessageInMs: number,\n): () => number {\n const startTimeMs = Date.now();\n\n return () => {\n const remainingTimeMs = maxWaitTimeInMs - (Date.now() - startTimeMs);\n\n if (remainingTimeMs < 0) {\n return 0;\n }\n\n return Math.min(remainingTimeMs, maxTimeAfterFirstMessageInMs);\n };\n}\n\n/**\n * Useful interface that mimics EventEmitter without requiring us to actually\n * import the events definition (which is annoying with browsers).\n *\n * @internal\n */\ntype EventEmitterLike<T extends RheaPromiseReceiver | Session> = Pick<\n T,\n \"once\" | \"removeListener\" | \"on\"\n>;\n\n/**\n * The bare minimum needed to receive messages for batched\n * message receiving.\n *\n * @internal\n */\nexport type MinimalReceiver = Pick<\n RheaPromiseReceiver,\n \"name\" | \"isOpen\" | \"credit\" | \"addCredit\" | \"drain\" | \"drainCredit\" | \"close\"\n> &\n EventEmitterLike<RheaPromiseReceiver> & {\n session: EventEmitterLike<Session>;\n } & {\n connection: {\n id: string;\n };\n };\n\n/**\n * @internal\n */\ntype MessageAndDelivery = Pick<EventContext, \"message\" | \"delivery\">;\n\n/**\n * @internal\n */\ninterface ReceiveMessageArgs extends OperationOptionsBase {\n maxMessageCount: number;\n maxWaitTimeInMs: number;\n maxTimeAfterFirstMessageInMs: number;\n}\n\n/**\n * The internals of a batching receiver minus anything that would require us to hold onto a client entity context\n * or a receiver on a permanent basis.\n *\n * Usable with both session and non-session receivers.\n *\n * @internal\n */\nexport class BatchingReceiverLite {\n // testing hook\n private _drainTimeoutInMs: number = receiveDrainTimeoutInMs;\n constructor(\n private _connectionContext: ConnectionContext,\n public entityPath: string,\n private _getCurrentReceiver: (\n abortSignal?: AbortSignalLike,\n ) => Promise<MinimalReceiver | undefined>,\n private _receiveMode: ReceiveMode,\n _skipParsingBodyAsJson: boolean,\n _skipConvertingDate: boolean,\n ) {\n this._createServiceBusMessage = (context: MessageAndDelivery) => {\n return new ServiceBusMessageImpl(\n context.message!,\n context.delivery!,\n true,\n this._receiveMode,\n _skipParsingBodyAsJson,\n _skipConvertingDate,\n );\n };\n\n this._getRemainingWaitTimeInMsFn = (\n maxWaitTimeInMs: number,\n maxTimeAfterFirstMessageInMs: number,\n ) => getRemainingWaitTimeInMsFn(maxWaitTimeInMs, maxTimeAfterFirstMessageInMs);\n\n this.isReceivingMessages = false;\n }\n\n private _createServiceBusMessage: (\n context: Pick<EventContext, \"message\" | \"delivery\">,\n ) => ServiceBusMessageImpl;\n\n private _getRemainingWaitTimeInMsFn: typeof getRemainingWaitTimeInMsFn;\n private _closeHandler: ((connectionError?: AmqpError | Error) => void) | undefined;\n private _finalAction: (() => void) | undefined;\n\n isReceivingMessages: boolean;\n\n /**\n * Receives a set of messages,\n *\n * @internal\n * @hidden\n */\n public async receiveMessages(args: ReceiveMessageArgs): Promise<ServiceBusMessageImpl[]> {\n try {\n this.isReceivingMessages = true;\n const receiver = await this._getCurrentReceiver(args.abortSignal);\n\n if (receiver == null) {\n // (was somehow closed in between the init() and the return)\n throw new ServiceBusError(\"Link closed before receiving messages.\", \"GeneralError\");\n }\n\n const messages = await new Promise<ServiceBusMessageImpl[]>((resolve, reject) =>\n this._receiveMessagesImpl(receiver, args, resolve, reject),\n );\n return tracingClient.withSpan(\n \"BatchingReceiverLite.process\",\n args,\n () => messages,\n toProcessingSpanOptions(messages, this, this._connectionContext.config, \"process\"),\n );\n } finally {\n this._closeHandler = undefined;\n this.isReceivingMessages = false;\n }\n }\n\n /**\n * Closes the receiver (optionally with an error), cancelling any current operations.\n *\n * @param connectionError - An optional error (rhea doesn't always deliver one for certain disconnection events)\n */\n terminate(connectionError?: Error | AmqpError): void {\n if (this._closeHandler) {\n this._closeHandler(connectionError);\n this._closeHandler = undefined;\n }\n }\n\n private async tryDrainReceiver(\n receiver: MinimalReceiver,\n loggingPrefix: string,\n remainingWaitTimeInMs: number,\n abortSignal?: AbortSignalLike,\n ): Promise<void> {\n if (!receiver.isOpen() || receiver.credit <= 0) {\n return;\n }\n let drainTimedout: boolean = false;\n let drainTimer: ReturnType<typeof setTimeout>;\n const timeToWaitInMs = Math.max(this._drainTimeoutInMs, remainingWaitTimeInMs);\n const drainPromise = new Promise<void>((resolve) => {\n function drainListener() {\n logger.verbose(`${loggingPrefix} Receiver has been drained.`);\n clearTimeout(drainTimer);\n resolve();\n }\n function removeListeners() {\n abortSignal?.removeEventListener(\"abort\", onAbort);\n receiver.removeListener(ReceiverEvents.receiverDrained, drainListener);\n }\n function onAbort() {\n removeListeners();\n clearTimeout(drainTimer);\n resolve();\n }\n\n drainTimer = setTimeout(() => {\n drainTimedout = true;\n removeListeners();\n resolve();\n }, timeToWaitInMs);\n receiver.once(ReceiverEvents.receiverDrained, drainListener);\n abortSignal?.addEventListener(\"abort\", onAbort);\n });\n\n receiver.drainCredit();\n logger.verbose(\n `${loggingPrefix} Draining leftover credits(${receiver.credit}), waiting for event_drained event, or timing out after ${timeToWaitInMs} milliseconds...`,\n );\n await drainPromise;\n if (drainTimedout) {\n logger.warning(\n `${loggingPrefix} Time out after ${timeToWaitInMs} milliseconds when draining credits. Closing receiver...`,\n );\n // Close the receiver link since we have not received the receiver drain event\n // to prevent out-of-sync state between local and remote\n await receiver.close();\n }\n\n // Turn off draining.\n receiver.drain = false;\n }\n\n private _receiveMessagesImpl(\n receiver: MinimalReceiver,\n args: ReceiveMessageArgs,\n origResolve: (messages: ServiceBusMessageImpl[]) => void,\n origReject: (err: Error | AmqpError) => void,\n ): void {\n const getRemainingWaitTimeInMs = this._getRemainingWaitTimeInMsFn(\n args.maxWaitTimeInMs,\n args.maxTimeAfterFirstMessageInMs,\n );\n\n const brokeredMessages: ServiceBusMessageImpl[] = [];\n const loggingPrefix = `[${receiver.connection.id}|r:${receiver.name}]`;\n\n let totalWaitTimer: NodeJS.Timeout | undefined;\n // eslint-disable-next-line prefer-const\n let cleanupBeforeResolveOrReject: () => void;\n\n const rejectAfterCleanup = (err: Error | AmqpError): void => {\n cleanupBeforeResolveOrReject();\n origReject(err);\n };\n\n const resolveImmediately = (result: ServiceBusMessageImpl[]): void => {\n cleanupBeforeResolveOrReject();\n origResolve(result);\n };\n\n const resolveAfterPendingMessageCallbacks = (result: ServiceBusMessageImpl[]): void => {\n // NOTE: through rhea-promise, most of our event handlers are made asynchronous by calling setTimeout(emit).\n // However, a small set (*error and drain) execute immediately. This can lead to a situation where the logical\n // ordering of events is correct but the execution order is incorrect because the events are not all getting\n // put into the task queue the same way.\n // setTimeout() ensures that we resolve _after_ any already-queued onMessage handlers that may\n // be waiting in the task queue.\n setTimeout(() => {\n cleanupBeforeResolveOrReject();\n origResolve(result);\n });\n };\n\n const onError: OnAmqpEvent = (context: EventContext) => {\n const eventType = context.session?.error != null ? \"session_error\" : \"receiver_error\";\n let error = context.session?.error || context.receiver?.error;\n\n if (error) {\n error = translateServiceBusError(error);\n logger.logError(error, `${loggingPrefix} '${eventType}' event occurred. Received an error`);\n } else {\n error = new ServiceBusError(\"An error occurred while receiving messages.\", \"GeneralError\");\n }\n rejectAfterCleanup(error);\n };\n\n this._closeHandler = (error?: AmqpError | Error): void => {\n if (\n // no error, just closing. Go ahead and return what we have.\n error == null ||\n // Return the collected messages if in ReceiveAndDelete mode because otherwise they are lost forever\n (this._receiveMode === \"receiveAndDelete\" && brokeredMessages.length)\n ) {\n logger.verbose(\n `${loggingPrefix} Closing. Resolving with ${brokeredMessages.length} messages.`,\n );\n return resolveAfterPendingMessageCallbacks(brokeredMessages);\n }\n\n rejectAfterCleanup(translateServiceBusError(error));\n };\n\n let abortSignalCleanupFunction: (() => void) | undefined = undefined;\n\n // Final action to be performed after\n // - maxMessageCount is reached or\n // - maxWaitTime is passed or\n // - newMessageWaitTimeoutInSeconds is passed since the last message was received\n this._finalAction = async (): Promise<void> => {\n if (receiver.drain) {\n // If a drain is already in process then we should let it complete. Some messages might still be in flight, but they will\n // arrive before the drain completes.\n logger.verbose(`${loggingPrefix} Already draining.`);\n return;\n }\n\n const remainingWaitTimeInMs = getRemainingWaitTimeInMs();\n await this.tryDrainReceiver(receiver, loggingPrefix, remainingWaitTimeInMs, args.abortSignal);\n logger.verbose(\n `${loggingPrefix} Resolving receiveMessages() with ${brokeredMessages.length} messages.`,\n );\n resolveImmediately(brokeredMessages);\n };\n\n // Action to be performed on the \"message\" event.\n const onReceiveMessage: OnAmqpEventAsPromise = async (context: EventContext) => {\n // TODO: this appears to be aggravating a bug that we need to look into more deeply.\n // The same timeout+drain sequence should work fine for receiveAndDelete but it appears\n // to cause problems.\n if (this._receiveMode === \"peekLock\") {\n if (brokeredMessages.length === 0) {\n // We'll now remove the old timer (which was the overall `maxWaitTimeMs` timer)\n // and replace it with another timer that is a (probably) much shorter interval.\n //\n // This allows the user to get access to received messages earlier and also gives us\n // a chance to have fewer messages internally that could get lost if the user's\n // app crashes.\n if (totalWaitTimer) clearTimeout(totalWaitTimer);\n const remainingWaitTimeInMs = getRemainingWaitTimeInMs();\n totalWaitTimer = setTimeout(() => {\n logger.verbose(\n `${loggingPrefix} Batching, waited for ${remainingWaitTimeInMs} milliseconds after receiving the first message.`,\n );\n this._finalAction!();\n }, remainingWaitTimeInMs);\n }\n }\n\n try {\n const data: ServiceBusMessageImpl = this._createServiceBusMessage(context);\n brokeredMessages.push(data);\n\n // NOTE: we used to actually \"lose\" any extra messages. At this point I've fixed the areas that were causing us to receive\n // extra messages but if this bug arises in some other way it's better to return the message than it would be to let it be\n // silently dropped on the floor.\n if (brokeredMessages.length > args.maxMessageCount) {\n logger.warning(\n `More messages arrived than expected: ${args.maxMessageCount} vs ${brokeredMessages.length}`,\n );\n }\n } catch (err: any) {\n const errObj = err instanceof Error ? err : new Error(JSON.stringify(err));\n logger.logError(\n err,\n `${loggingPrefix} Received an error while converting AmqpMessage to ServiceBusMessage`,\n );\n rejectAfterCleanup(errObj);\n }\n if (brokeredMessages.length >= args.maxMessageCount) {\n this._finalAction!();\n }\n };\n\n const onClose: OnAmqpEventAsPromise = async (context: EventContext) => {\n const type = context.session?.error != null ? \"session_closed\" : \"receiver_closed\";\n const error = context.session?.error || context.receiver?.error;\n\n if (error) {\n logger.logError(error, `${loggingPrefix} '${type}' event occurred. The associated error`);\n }\n };\n\n cleanupBeforeResolveOrReject = (): void => {\n if (receiver != null) {\n receiver.removeListener(ReceiverEvents.receiverError, onError);\n receiver.removeListener(ReceiverEvents.message, onReceiveMessage);\n receiver.session.removeListener(SessionEvents.sessionError, onError);\n receiver.removeListener(ReceiverEvents.receiverClose, onClose);\n receiver.session.removeListener(SessionEvents.sessionClose, onClose);\n }\n\n if (totalWaitTimer) {\n clearTimeout(totalWaitTimer);\n }\n\n if (abortSignalCleanupFunction) {\n abortSignalCleanupFunction();\n }\n abortSignalCleanupFunction = undefined;\n };\n\n abortSignalCleanupFunction = checkAndRegisterWithAbortSignal((err) => {\n if (receiver.drain) {\n // If a drain is already in process and we cancel, the link state may be out of sync\n // with remote. Reset the link so that we will have fresh start.\n receiver.close();\n }\n rejectAfterCleanup(err);\n }, args.abortSignal);\n\n // By adding credit here, we let the service know that at max we can handle `maxMessageCount`\n // number of messages concurrently. We will return the user an array of messages that can\n // be of size upto maxMessageCount. Then the user needs to accordingly dispose\n // (complete/abandon/defer/deadletter) the messages from the array.\n const creditToAdd = args.maxMessageCount - receiver.credit;\n logger.verbose(\n `${loggingPrefix} Ensure enough credit for receiving ${args.maxMessageCount} messages. Current: ${receiver.credit}. To add: ${creditToAdd}.`,\n );\n\n if (creditToAdd > 0) {\n receiver.addCredit(creditToAdd);\n }\n\n logger.verbose(\n `${loggingPrefix} Setting the wait timer for ${args.maxWaitTimeInMs} milliseconds.`,\n );\n\n totalWaitTimer = setTimeout(() => {\n logger.verbose(\n `${loggingPrefix} Batching, waited for max wait time ${args.maxWaitTimeInMs} milliseconds.`,\n );\n this._finalAction!();\n }, args.maxWaitTimeInMs);\n\n receiver.on(ReceiverEvents.message, onReceiveMessage);\n receiver.on(ReceiverEvents.receiverError, onError);\n receiver.on(ReceiverEvents.receiverClose, onClose);\n\n receiver.session.on(SessionEvents.sessionError, onError);\n receiver.session.on(SessionEvents.sessionClose, onClose);\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"linkEntity.js","sourceRoot":"","sources":["../../../src/core/linkEntity.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n Constants,\n TokenType,\n defaultCancellableLock,\n RequestResponseLink,\n StandardAbortMessage,\n isSasTokenProvider,\n} from \"@azure/core-amqp\";\nimport { AccessToken } from \"@azure/core-auth\";\nimport { ConnectionContext } from \"../connectionContext\";\nimport {\n AwaitableSender,\n AwaitableSenderOptions,\n generate_uuid,\n Receiver,\n ReceiverOptions,\n SenderOptions,\n} from \"rhea-promise\";\nimport { getUniqueName } from \"../util/utils\";\nimport { AbortError, AbortSignalLike } from \"@azure/abort-controller\";\nimport { ServiceBusLogger } from \"../log\";\nimport { ServiceBusError } from \"../serviceBusError\";\n\n/**\n * @internal\n * Options passed to the constructor of LinkEntity\n */\nexport interface LinkEntityOptions {\n /**\n * The client entity address in one of the following forms:\n */\n address?: string;\n /**\n * The client entity token audience in one of the following forms:\n */\n audience?: string;\n}\n\n/**\n * A simple grouping of the sender and receiver options. Only used\n * with the ManagementClient today.\n *\n * @internal\n */\nexport interface RequestResponseLinkOptions {\n senderOptions: SenderOptions;\n receiverOptions: ReceiverOptions;\n name?: string;\n}\n\n/**\n * @internal\n */\nexport type NonSessionReceiverType =\n | \"batching\" // batching receiver\n | \"streaming\"; // streaming receiver\n\n/**\n * @internal\n */\nexport type ReceiverType = NonSessionReceiverType | \"session\"; // message session\n\n/**\n * @internal\n */\ntype LinkOptionsT<LinkT extends Receiver | AwaitableSender | RequestResponseLink> =\n LinkT extends Receiver\n ? ReceiverOptions\n : LinkT extends AwaitableSender\n ? AwaitableSenderOptions\n : LinkT extends RequestResponseLink\n ? RequestResponseLinkOptions\n : never;\n\n/**\n * @internal\n */\ntype LinkTypeT<LinkT extends Receiver | AwaitableSender | RequestResponseLink> =\n LinkT extends Receiver\n ? ReceiverType\n : LinkT extends AwaitableSender\n ? \"sender\" // sender\n : LinkT extends RequestResponseLink\n ? \"mgmt\" // management link\n : never;\n\n/**\n * @internal\n * Describes the base class for entities like MessageSender, MessageReceiver and Management client.\n */\nexport abstract class LinkEntity<LinkT extends Receiver | AwaitableSender | RequestResponseLink> {\n /**\n * The unique name for the entity in the format:\n * `${name of the entity}-${guid}`.\n */\n name: string;\n /**\n * The client entity address in one of the following forms:\n *\n * **Sender**\n * - `\"<queue-name>\"`.\n * - `\"<topic-name>\"`.\n *\n * **Receiver**\n * - `\"<queue-name>\"`.\n * - `\"<topic-name>\"`.\n *\n * **ManagementClient**\n * -`\"$management\"`.\n */\n address: string;\n /**\n * The client entity token audience in one of the following forms:\n *\n * **Sender**\n * - `\"sb://<yournamespace>.servicebus.windows.net/<queue-name>\"`\n * - `\"sb://<yournamespace>.servicebus.windows.net/<topic-name>\"`\n *\n * **Receiver**\n * - `\"sb://<yournamespace>.servicebus.windows.net/<queue-name>\"`\n * - `\"sb://<yournamespace>.servicebus.windows.net/<topic-name>\"`\n *\n * **ManagementClient**\n * - `\"sb://<your-namespace>.servicebus.windows.net/<queue-name>/$management\"`.\n * - `\"sb://<your-namespace>.servicebus.windows.net/<topic-name>/$management\"`.\n */\n audience: string;\n /**\n * Provides relevant information about the amqp connection,\n * cbs and $management sessions, token provider, sender and receivers.\n */\n protected _context: ConnectionContext;\n /**\n * The token renewal timer that keeps track of when\n * the Client Entity is due for token renewal.\n */\n private _tokenRenewalTimer?: NodeJS.Timeout;\n /**\n * Indicates token timeout\n */\n protected _tokenTimeout?: number;\n\n /**\n * The actual rhea link (of type Receiver or AwaitableSender) or RequestResponseLink\n */\n private _link?: LinkT;\n\n /**\n * The log prefix for any log messages.\n */\n private _logPrefix: string;\n\n public get logPrefix(): string {\n return this._logPrefix;\n }\n\n /**\n * Indicates that close() has been called on this link and\n * that it should not be allowed to reopen.\n */\n private _wasClosedPermanently: boolean = false;\n\n /**\n * A lock that ensures that opening and closing this\n * link properly cooperate.\n */\n private _openLock: string = `linkEntity-${generate_uuid()}`;\n\n /**\n * Creates a new ClientEntity instance.\n * @param baseName - The base name to use for the link. A unique ID will be appended to this.\n * @param entityPath - The entity path (ex: 'your-queue')\n * @param context - The connection context.\n * @param options - Options that can be provided while creating the LinkEntity.\n */\n constructor(\n public readonly baseName: string,\n public readonly entityPath: string,\n context: ConnectionContext,\n private _linkType: LinkTypeT<LinkT>,\n private _logger: ServiceBusLogger,\n options?: LinkEntityOptions,\n ) {\n if (!options) options = {};\n this._context = context;\n this.address = options.address || \"\";\n this.audience = options.audience || \"\";\n this.name = getUniqueName(baseName);\n this._logPrefix = `[${context.connectionId}|${this._linkType}:${this.name}]`;\n }\n\n /**\n * Determines whether the AMQP link is open. If open then returns true else returns false.\n */\n isOpen(): boolean {\n const result: boolean = this._link ? this._link.isOpen() : false;\n this._logger.verbose(`${this._logPrefix} is open? ${result}`);\n return result;\n }\n\n /**\n * Initializes this LinkEntity, setting this._link with the result of `createRheaLink`, which\n * is implemented by child classes.\n *\n * @returns A Promise that resolves when the link has been properly initialized\n * @throws `AbortError` if the link has been closed via 'close'\n */\n async initLink(options: LinkOptionsT<LinkT>, abortSignal?: AbortSignalLike): Promise<void> {\n // we'll check that the connection isn't in the process of recycling (and if so, wait for it to complete)\n await this._context.readyToOpenLink();\n\n this._logger.verbose(\n `${this._logPrefix} Attempting to acquire lock token ${this._openLock} for initializing link`,\n );\n return defaultCancellableLock.acquire(\n this._openLock,\n () => {\n this._logger.verbose(\n `${this._logPrefix} Lock ${this._openLock} acquired for initializing link`,\n );\n return this._initLinkImpl(options, abortSignal);\n },\n {\n abortSignal: abortSignal,\n timeoutInMs: Constants.defaultOperationTimeoutInMs,\n },\n );\n }\n\n private async _initLinkImpl(\n options: LinkOptionsT<LinkT>,\n abortSignal?: AbortSignalLike,\n ): Promise<void> {\n const checkAborted = (): void => {\n if (abortSignal?.aborted) {\n throw new AbortError(StandardAbortMessage);\n }\n };\n\n const connectionId = this._context.connectionId;\n checkAborted();\n\n if (options.name) {\n this.name = options.name;\n this._logPrefix = `[${connectionId}|${this._linkType}:${this.name}]`;\n }\n\n if (this._wasClosedPermanently) {\n this._logger.verbose(`${this._logPrefix} Link has been permanently closed. Not reopening.`);\n throw new AbortError(`Link has been permanently closed. Not reopening.`);\n }\n\n if (this.isOpen()) {\n this._logger.verbose(`${this._logPrefix} Link is already open. Returning.`);\n return;\n }\n\n this._logger.verbose(\n `${this._logPrefix} Is not open and is not currently connecting. Opening.`,\n );\n\n try {\n await this._negotiateClaim({\n abortSignal,\n setTokenRenewal: false,\n timeoutInMs: Constants.defaultOperationTimeoutInMs,\n });\n\n checkAborted();\n this.checkIfConnectionReady();\n\n this._logger.verbose(`${this._logPrefix} Creating with options %O`, options);\n this._link = await this.createRheaLink(options);\n checkAborted();\n\n this._ensureTokenRenewal();\n\n this._logger.verbose(`${this._logPrefix} Link has been created.`);\n } catch (err: any) {\n this._logger.logError(err, `${this._logPrefix} Error thrown when creating the link`);\n await this.closeLinkImpl();\n throw err;\n }\n }\n\n /**\n * Clears token renewal for current link, removes current LinkEntity instance from cache,\n * and closes the underlying AMQP link.\n * Once closed, this instance of LinkEntity is not meant to be re-used.\n */\n async close(): Promise<void> {\n // Set the flag to indicate that this instance of LinkEntity is not meant to be re-used.\n this._wasClosedPermanently = true;\n\n this._logger.verbose(`${this.logPrefix} permanently closing this link.`);\n\n this.removeLinkFromContext();\n\n await this.closeLink();\n this._logger.verbose(`${this.logPrefix} permanently closed this link.`);\n }\n\n /**\n * NOTE: This method should be implemented by any child classes to actually create the underlying\n * Rhea link (AwaitableSender or Receiver or RequestResponseLink)\n *\n */\n protected abstract createRheaLink(_options: LinkOptionsT<LinkT>): Promise<LinkT>;\n\n /**\n * Clears this link from context's link cache.\n */\n protected abstract removeLinkFromContext(): void;\n\n /**\n * Closes the internally held rhea link, stops the token renewal timer and sets\n * the this._link field to undefined.\n */\n protected closeLink(): Promise<void> {\n this._logger.verbose(\n `${this._logPrefix} Attempting to acquire lock token ${this._openLock} for closing link`,\n );\n return defaultCancellableLock.acquire(\n this._openLock,\n () => {\n this._logger.verbose(`${this._logPrefix} Lock ${this._openLock} acquired for closing link`);\n return this.closeLinkImpl();\n },\n { abortSignal: undefined, timeoutInMs: undefined },\n );\n }\n\n private async closeLinkImpl(): Promise<void> {\n this._logger.verbose(`${this._logPrefix} closeLinkImpl() called`);\n\n clearTimeout(this._tokenRenewalTimer as NodeJS.Timeout);\n this._tokenRenewalTimer = undefined;\n\n if (this._link) {\n try {\n const link = this._link;\n this._link = undefined;\n\n // This should take care of closing the link and it's underlying session. This should also\n // remove them from the internal map.\n await link.close();\n this._logger.verbose(`${this._logPrefix} closed.`);\n } catch (err: any) {\n this._logger.logError(err, `${this._logPrefix} An error occurred while closing the link`);\n }\n }\n }\n\n /**\n * Provides the current type of the ClientEntity.\n * @returns The entity type.\n */\n private get _type(): string {\n let result = \"LinkEntity\";\n if ((this as any).constructor && (this as any).constructor.name) {\n result = (this as any).constructor.name;\n }\n return result;\n }\n\n protected get wasClosedPermanently(): boolean {\n return this._wasClosedPermanently;\n }\n\n protected get link(): LinkT | undefined {\n return this._link;\n }\n\n /**\n * Negotiates the cbs claim for the ClientEntity.\n * @param setTokenRenewal - Set the token renewal timer. Default false.\n */\n private async _negotiateClaim({\n abortSignal,\n setTokenRenewal,\n timeoutInMs,\n }: {\n setTokenRenewal: boolean;\n abortSignal: AbortSignalLike | undefined;\n timeoutInMs: number;\n }): Promise<void> {\n this._logger.verbose(`${this._logPrefix} negotiateclaim() has been called`);\n\n // Wait for the connectionContext to be ready to open the link.\n this.checkIfConnectionReady();\n\n // Acquire the lock and establish a cbs session if it does not exist on the connection.\n // Although node.js is single threaded, we need a locking mechanism to ensure that a\n // race condition does not happen while creating a shared resource (in this case the\n // cbs session, since we want to have exactly 1 cbs session per connection).\n this._logger.verbose(\n \"%s Acquiring cbs lock: '%s' for creating the cbs session while creating the %s: \" +\n \"'%s' with address: '%s'.\",\n this.logPrefix,\n this._context.cbsSession.cbsLock,\n this._type,\n this.name,\n this.address,\n );\n\n const startTime = Date.now();\n if (!this._context.cbsSession.isOpen()) {\n await defaultCancellableLock.acquire(\n this._context.cbsSession.cbsLock,\n () => {\n this.checkIfConnectionReady();\n return this._context.cbsSession.init({ abortSignal, timeoutInMs });\n },\n {\n abortSignal,\n timeoutInMs: timeoutInMs - (Date.now() - startTime),\n },\n );\n }\n\n let tokenObject: AccessToken;\n let tokenType: TokenType;\n if (isSasTokenProvider(this._context.tokenCredential)) {\n tokenObject = await this._context.tokenCredential.getToken(this.audience);\n tokenType = TokenType.CbsTokenTypeSas;\n\n // renew sas token in every 45 minutes\n this._tokenTimeout = (3600 - 900) * 1000;\n } else {\n const aadToken = await this._context.tokenCredential.getToken(Constants.aadServiceBusScope);\n if (!aadToken) {\n throw new Error(`Failed to get token from the provided \"TokenCredential\" object`);\n }\n tokenObject = aadToken;\n tokenType = TokenType.CbsTokenTypeJwt;\n this._tokenTimeout = tokenObject.expiresOnTimestamp - Date.now() - 2 * 60 * 1000;\n }\n this._logger.verbose(\n \"%s %s: calling negotiateClaim for audience '%s'.\",\n this.logPrefix,\n this._type,\n this.audience,\n );\n // Acquire the lock to negotiate the CBS claim.\n this._logger.verbose(\n \"%s Acquiring cbs lock: '%s' for cbs auth for %s: '%s' with address '%s'.\",\n this.logPrefix,\n this._context.negotiateClaimLock,\n this._type,\n this.name,\n this.address,\n );\n if (!tokenObject) {\n throw new Error(\"Token cannot be null\");\n }\n await defaultCancellableLock.acquire(\n this._context.negotiateClaimLock,\n () => {\n this.checkIfConnectionReady();\n return this._context.cbsSession.negotiateClaim(\n this.audience,\n tokenObject.token,\n tokenType,\n {\n abortSignal,\n timeoutInMs: timeoutInMs - (Date.now() - startTime),\n },\n );\n },\n {\n abortSignal,\n timeoutInMs: timeoutInMs - (Date.now() - startTime),\n },\n );\n this._logger.verbose(\n \"%s Negotiated claim for %s '%s' with with address: %s\",\n this.logPrefix,\n this._type,\n this.name,\n this.address,\n );\n if (setTokenRenewal) {\n this._ensureTokenRenewal();\n }\n }\n\n /**\n * Checks to see if the connection is in a \"reopening\" state. If it is\n * we need to _not_ use it otherwise we'll trigger some race conditions\n * within rhea (for instance, errors about _process not being defined).\n */\n private checkIfConnectionReady(): void {\n if (!this._context.isConnectionClosing()) {\n return;\n }\n\n this._logger.verbose(\n `${this._logPrefix} Connection is reopening, aborting link initialization.`,\n );\n const err = new ServiceBusError(\n \"Connection is reopening, aborting link initialization.\",\n \"GeneralError\",\n );\n err.retryable = true;\n throw err;\n }\n\n /**\n * Ensures that the token is renewed within the predefined renewal margin.\n */\n private _ensureTokenRenewal(): void {\n if (!this._tokenTimeout) {\n return;\n }\n // Clear the existing token renewal timer.\n // This scenario can happen if the connection goes down and is brought back up\n // before the `nextRenewalTimeout` was reached.\n if (this._tokenRenewalTimer) {\n clearTimeout(this._tokenRenewalTimer);\n }\n this._tokenRenewalTimer = setTimeout(async () => {\n try {\n await this._negotiateClaim({\n setTokenRenewal: true,\n abortSignal: undefined,\n timeoutInMs: Constants.defaultOperationTimeoutInMs,\n });\n } catch (err: any) {\n this._logger.logError(\n err,\n \"%s %s '%s' with address %s, an error occurred while renewing the token\",\n this.logPrefix,\n this._type,\n this.name,\n this.address,\n );\n }\n }, this._tokenTimeout);\n this._logger.verbose(\n \"%s %s '%s' with address %s, has next token renewal in %d milliseconds @(%s).\",\n this.logPrefix,\n this._type,\n this.name,\n this.address,\n this._tokenTimeout,\n new Date(Date.now() + this._tokenTimeout).toString(),\n );\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"managementClient.js","sourceRoot":"","sources":["../../../src/core/managementClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport Long from \"long\";\nimport {\n EventContext,\n ReceiverOptions,\n message as RheaMessageUtil,\n SenderOptions,\n generate_uuid,\n string_to_uuid,\n types,\n Typed,\n ReceiverEvents,\n Message as RheaMessage,\n} from \"rhea-promise\";\nimport {\n ConditionErrorNameMapper,\n Constants,\n defaultCancellableLock,\n MessagingError,\n RequestResponseLink,\n SendRequestOptions,\n RetryOptions,\n AmqpAnnotatedMessage,\n} from \"@azure/core-amqp\";\nimport { ConnectionContext } from \"../connectionContext\";\nimport {\n DispositionType,\n ServiceBusReceivedMessage,\n ServiceBusMessage,\n ServiceBusMessageImpl,\n toRheaMessage,\n fromRheaMessage,\n updateScheduledTime,\n updateMessageId,\n} from \"../serviceBusMessage\";\nimport { LinkEntity, RequestResponseLinkOptions } from \"./linkEntity\";\nimport { managementClientLogger, receiverLogger, senderLogger, ServiceBusLogger } from \"../log\";\nimport { toBuffer, waitForSendable } from \"../util/utils\";\nimport {\n InvalidMaxMessageCountError,\n throwErrorIfConnectionClosed,\n throwTypeErrorIfParameterIsEmptyString,\n throwTypeErrorIfParameterMissing,\n throwTypeErrorIfParameterNotLong,\n throwTypeErrorIfParameterTypeMismatch,\n} from \"../util/errors\";\nimport { max32BitNumber } from \"../util/constants\";\nimport { Buffer } from \"buffer\";\nimport { OperationOptionsBase } from \"./../modelsToBeSharedWithEventHubs\";\nimport { AbortController, AbortSignalLike } from \"@azure/abort-controller\";\nimport { ReceiveMode } from \"../models\";\nimport { translateServiceBusError } from \"../serviceBusError\";\nimport { defaultDataTransformer, tryToJsonDecode } from \"../dataTransformer\";\nimport { delay, isDefined, isObjectWithProperties } from \"@azure/core-util\";\nimport {\n RuleProperties,\n SqlRuleAction,\n SqlRuleFilter,\n} from \"../serializers/ruleResourceSerializer\";\nimport { ListRequestOptions } from \"../serviceBusAtomManagementClient\";\n\n/**\n * @internal\n */\nexport interface SendManagementRequestOptions extends SendRequestOptions {\n /**\n * The name of the sender or receiver link associated with the managmenet operations.\n * This is used for service side optimization.\n */\n associatedLinkName?: string;\n /**\n * Option to disable the client from running JSON.parse() on the message body when receiving the message.\n * Not applicable if the message was sent with AMQP body type value or sequence. Use this option when you\n * prefer to work directly with the bytes present in the message body than have the client attempt to parse it.\n */\n skipParsingBodyAsJson?: boolean;\n /**\n * Whether to skip converting Date type on properties of message annotations\n * or application properties into numbers when receiving the message. By\n * default, properties of Date type is converted into UNIX epoch number for\n * compatibility.\n */\n skipConvertingDate?: boolean;\n}\n\n/**\n * Represents the correlation filter expression.\n * A CorrelationRuleFilter holds a set of conditions that are matched against user and system properties\n * of incoming messages from a Subscription.\n */\nexport interface CorrelationRuleFilter {\n /**\n * Value to be matched with the `correlationId` property of the incoming message.\n */\n correlationId?: string;\n /**\n * Value to be matched with the `messageId` property of the incoming message.\n */\n messageId?: string;\n /**\n * Value to be matched with the `to` property of the incoming message.\n */\n to?: string;\n /**\n * Value to be matched with the `replyTo` property of the incoming message.\n */\n replyTo?: string;\n /**\n * Value to be matched with the `subject` property of the incoming message.\n */\n subject?: string;\n /**\n * Value to be matched with the `sessionId` property of the incoming message.\n */\n sessionId?: string;\n /**\n * Value to be matched with the `replyToSessionId` property of the incoming message.\n */\n replyToSessionId?: string;\n /**\n * Value to be matched with the `contentType` property of the incoming message.\n */\n contentType?: string;\n /**\n * Value to be matched with the user properties of the incoming message.\n */\n applicationProperties?: { [key: string]: string | number | boolean | Date };\n}\n\n/**\n * @internal\n */\nconst sqlRuleProperties = [\"sqlExpression\"];\n\nfunction isSqlRuleFilter(obj: unknown): obj is SqlRuleFilter {\n if (obj) {\n return sqlRuleProperties.some((validProperty) => isObjectWithProperties(obj, [validProperty]));\n }\n\n return false;\n}\n\n/**\n * @internal\n */\nconst correlationProperties = [\n \"correlationId\",\n \"messageId\",\n \"to\",\n \"replyTo\",\n \"subject\",\n \"sessionId\",\n \"replyToSessionId\",\n \"contentType\",\n \"applicationProperties\",\n];\n\nfunction isCorrelationRuleFilter(obj: unknown): obj is CorrelationRuleFilter {\n if (obj) {\n return correlationProperties.some((validProperty) =>\n isObjectWithProperties(obj, [validProperty]),\n );\n }\n\n return false;\n}\n\n/**\n * @internal\n * Options to set when updating the disposition status\n */\nexport interface DispositionStatusOptions extends OperationOptionsBase {\n /**\n * A map of Service Bus brokered message properties\n * to modify.\n */\n propertiesToModify?: { [key: string]: any };\n /**\n * The deadletter reason. May be set if disposition status\n * is set to suspended.\n */\n deadLetterReason?: string;\n /**\n * The deadletter description. May be set if disposition status\n * is set to suspended.\n */\n deadLetterDescription?: string;\n /**\n * This should only be provided if `session` is enabled for a Queue or Topic.\n */\n sessionId?: string;\n /**\n * Retry options.\n */\n retryOptions: RetryOptions | undefined;\n}\n\n/**\n * @internal\n * Options passed to the constructor of ManagementClient\n */\nexport interface ManagementClientOptions {\n address?: string;\n audience?: string;\n}\n\n/**\n * @internal\n * Describes the ServiceBus Management Client that talks\n * to the $management endpoint over AMQP connection.\n */\nexport class ManagementClient extends LinkEntity<RequestResponseLink> {\n /**\n * The reply to Guid for the management client.\n */\n replyTo: string = generate_uuid();\n /**\n * Provides the sequence number of the last peeked message.\n */\n private _lastPeekedSequenceNumber: Long = Long.ZERO;\n /**\n * lock token for init operation\n */\n private _initLock: string = `initMgmtLink-${generate_uuid()}`;\n /**\n * Instantiates the management client.\n * @param context - The connection context\n * @param entityPath - The name/path of the entity (queue/topic/subscription name)\n * for which the management request needs to be made.\n * @param options - Options to be provided for creating the\n * \"$management\" client.\n */\n constructor(context: ConnectionContext, entityPath: string, options?: ManagementClientOptions) {\n super(`${entityPath}/$management`, entityPath, context, \"mgmt\", managementClientLogger, {\n address: options && options.address ? options.address : Constants.management,\n audience:\n options && options.audience\n ? options.audience\n : `${context.config.endpoint}${entityPath}/$management`,\n });\n this._context = context;\n }\n\n /**\n * initialize link with unique this.replyTo address.\n * @param options -\n * @returns updated options bag that has adjusted `timeoutInMs` to account for init time\n */\n private async initWithUniqueReplyTo(\n options: SendManagementRequestOptions = {},\n ): Promise<SendManagementRequestOptions> {\n const retryTimeoutInMs = options.timeoutInMs ?? Constants.defaultOperationTimeoutInMs;\n const initOperationStartTime = Date.now();\n return defaultCancellableLock.acquire(\n this._initLock,\n async () => {\n managementClientLogger.verbose(\n `${this.logPrefix} lock acquired for initializing replyTo address and link`,\n );\n if (!this.isOpen()) {\n this.replyTo = generate_uuid();\n managementClientLogger.verbose(\n `${this.logPrefix} new replyTo address: ${this.replyTo} generated`,\n );\n }\n const { abortSignal } = options ?? {};\n const aborter = new AbortController();\n const { signal } = new AbortController([\n aborter.signal,\n ...(abortSignal ? [abortSignal] : []),\n ]);\n\n if (!this.isOpen()) {\n await Promise.race([\n this._init(signal),\n delay(retryTimeoutInMs, { abortSignal: aborter.signal }).then(() => {\n throw {\n name: \"OperationTimeoutError\",\n message: \"The management request timed out. Please try again later.\",\n };\n }),\n ]).finally(() => aborter.abort());\n }\n\n // time taken by the init operation\n const timeTakenByInit = Date.now() - initOperationStartTime;\n return {\n ...options,\n // Left over time\n timeoutInMs: retryTimeoutInMs - timeTakenByInit,\n };\n },\n {\n abortSignal: options.abortSignal,\n timeoutInMs: retryTimeoutInMs,\n },\n );\n }\n\n private async _init(abortSignal?: AbortSignalLike): Promise<void> {\n throwErrorIfConnectionClosed(this._context);\n try {\n const rxopt: ReceiverOptions = {\n source: { address: this.address },\n name: this.replyTo,\n target: { address: this.replyTo },\n onSessionError: (context: EventContext) => {\n const sbError = translateServiceBusError(context.session!.error!);\n managementClientLogger.logError(\n sbError,\n `${this.logPrefix} An error occurred on the session for request/response links for $management`,\n );\n },\n };\n const sropt: SenderOptions = {\n target: { address: this.address },\n onError: (context: EventContext) => {\n const ehError = translateServiceBusError(context.sender!.error!);\n managementClientLogger.logError(\n ehError,\n `${this.logPrefix} An error occurred on the $management sender link`,\n );\n },\n };\n\n // Even if multiple parallel requests reach here, the initLink secures a lock\n // to ensure there won't be multiple initializations\n await this.initLink(\n {\n senderOptions: sropt,\n receiverOptions: rxopt,\n },\n abortSignal,\n );\n } catch (err: any) {\n const translatedError = translateServiceBusError(err);\n managementClientLogger.logError(\n translatedError,\n `${this.logPrefix} An error occurred while establishing the $management links`,\n );\n throw translatedError;\n }\n }\n\n protected async createRheaLink(\n // eslint-disable-next-line @azure/azure-sdk/ts-naming-options\n options: RequestResponseLinkOptions,\n ): Promise<RequestResponseLink> {\n const rheaLink = await RequestResponseLink.create(\n this._context.connection,\n options.senderOptions,\n options.receiverOptions,\n );\n // Attach listener for the `receiver_error` events to log the errors.\n\n // \"message\" event listener is added in core-amqp.\n // \"rhea\" doesn't allow setting only the \"onError\" handler in the options if it is not accompanied by an \"onMessage\" handler.\n // Hence, not passing onError handler in the receiver options, adding a handler below.\n rheaLink.receiver.on(ReceiverEvents.receiverError, (context: EventContext) => {\n const ehError = translateServiceBusError(context.receiver!.error!);\n managementClientLogger.logError(\n ehError,\n `${this.logPrefix} An error occurred on the $management receiver link`,\n );\n });\n return rheaLink;\n }\n\n /**\n * Given array of typed values, returns the element in given index\n */\n private _safelyGetTypedValueFromArray(data: Typed[], index: number): any {\n return Array.isArray(data) && data.length > index && data[index]\n ? data[index].value\n : undefined;\n }\n\n private _decodeApplicationPropertiesMap(\n obj: Typed,\n ): Record<string, string | number | boolean | Date> {\n if (!types.is_map(obj)) {\n throw new Error(\"object to decode is not of Map types\");\n }\n const array = obj.value as Array<Typed>;\n const result: Record<string, string | number | boolean | Date> = {};\n for (let i = 0; i < array.length; i += 2) {\n const key = array[i].value as string;\n result[key] = array[i + 1].value as string | number | boolean | Date;\n }\n\n return result;\n }\n\n private async _makeManagementRequest(\n request: RheaMessage,\n internalLogger: ServiceBusLogger,\n sendRequestOptions: SendManagementRequestOptions = {},\n ): Promise<RheaMessage> {\n if (request.message_id === undefined) {\n request.message_id = generate_uuid();\n }\n\n try {\n const { timeoutInMs } = sendRequestOptions;\n await waitForSendable(\n internalLogger,\n this.logPrefix,\n this.name,\n timeoutInMs ?? Constants.defaultOperationTimeoutInMs,\n this.link?.sender,\n this.link?.session?.outgoing?.available(),\n );\n\n return await this.link!.sendRequest(request, sendRequestOptions);\n } catch (err: any) {\n const translatedError = translateServiceBusError(err);\n internalLogger.logError(\n translatedError,\n \"%s An error occurred during send on management request-response link with address '%s'\",\n this.logPrefix,\n this.address,\n );\n throw translatedError;\n }\n }\n\n /**\n * Closes the AMQP management session to the ServiceBus namespace for this client,\n * returning a promise that will be resolved when disconnection is completed.\n */\n async close(): Promise<void> {\n try {\n // Always clear the timeout, as the isOpen check may report\n // false without ever having cleared the timeout otherwise.\n\n // NOTE: management link currently doesn't have a separate concept of \"detaching\" like\n // the other links do. When we add handling of this (via the onDetached call, like other links)\n // we can change this back to closeLink(\"permanent\").\n await this.closeLink();\n managementClientLogger.verbose(\"Successfully closed the management session.\");\n } catch (err: any) {\n managementClientLogger.logError(\n err,\n `${this.logPrefix} An error occurred while closing the management session`,\n );\n throw err;\n }\n }\n\n /**\n * Fetches the next batch of active messages. The first call to `peek()` fetches the first\n * active message for this client. Each subsequent call fetches the subsequent message in the\n * entity.\n *\n * Unlike a `received` message, `peeked` message will not have lock token associated with it,\n * and hence it cannot be `Completed/Abandoned/Deferred/Deadlettered/Renewed`. This method will\n * also fetch even Deferred messages (but not Deadlettered message).\n *\n * @param messageCount - The number of messages to retrieve. Default value `1`.\n * @param omitMessageBody - Whether to omit message body when peeking. Default value `false`.\n */\n async peek(\n messageCount: number,\n omitMessageBody?: boolean,\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<ServiceBusReceivedMessage[]> {\n throwErrorIfConnectionClosed(this._context);\n return this.peekBySequenceNumber(\n this._lastPeekedSequenceNumber.add(1),\n messageCount,\n undefined,\n omitMessageBody,\n options,\n );\n }\n\n /**\n * Fetches the next batch of active messages in the current MessageSession. The first call to\n * `peek()` fetches the first active message for this client. Each subsequent call fetches the\n * subsequent message in the entity.\n *\n * Unlike a `received` message, `peeked` message will not have lock token associated with it,\n * and hence it cannot be `Completed/Abandoned/Deferred/Deadlettered/Renewed`. This method will\n * also fetch even Deferred messages (but not Deadlettered message).\n *\n * @param sessionId - The sessionId from which messages need to be peeked.\n * @param messageCount - The number of messages to retrieve. Default value `1`.\n * @param omitMessageBody - Whether to omit message body when peeking Default value `false`.\n */\n async peekMessagesBySession(\n sessionId: string,\n messageCount: number,\n omitMessageBody?: boolean,\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<ServiceBusReceivedMessage[]> {\n throwErrorIfConnectionClosed(this._context);\n return this.peekBySequenceNumber(\n this._lastPeekedSequenceNumber.add(1),\n messageCount,\n sessionId,\n omitMessageBody,\n options,\n );\n }\n\n /**\n * Peeks the desired number of messages from the specified sequence number.\n *\n * @param fromSequenceNumber - The sequence number from where to read the message.\n * @param messageCount - The number of messages to retrieve. Default value `1`.\n * @param sessionId - The sessionId from which messages need to be peeked.\n * @param omitMessageBody - Whether to omit message body when peeking. Default value `false`.\n */\n async peekBySequenceNumber(\n fromSequenceNumber: Long,\n maxMessageCount: number,\n sessionId?: string,\n omitMessageBody?: boolean,\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<ServiceBusReceivedMessage[]> {\n throwErrorIfConnectionClosed(this._context);\n const connId = this._context.connectionId;\n\n // Checks for fromSequenceNumber\n throwTypeErrorIfParameterMissing(connId, \"fromSequenceNumber\", fromSequenceNumber);\n throwTypeErrorIfParameterNotLong(connId, \"fromSequenceNumber\", fromSequenceNumber);\n\n // Checks for maxMessageCount\n throwTypeErrorIfParameterMissing(\n this._context.connectionId,\n \"maxMessageCount\",\n maxMessageCount,\n );\n throwTypeErrorIfParameterTypeMismatch(\n this._context.connectionId,\n \"maxMessageCount\",\n maxMessageCount,\n \"number\",\n );\n\n if (isNaN(maxMessageCount) || maxMessageCount < 1) {\n throw new TypeError(InvalidMaxMessageCountError);\n }\n\n const messageList: ServiceBusReceivedMessage[] = [];\n try {\n const messageBody: any = {};\n messageBody[Constants.fromSequenceNumber] = types.wrap_long(\n Buffer.from(fromSequenceNumber.toBytesBE()),\n );\n messageBody[Constants.messageCount] = types.wrap_int(maxMessageCount!);\n if (isDefined(sessionId)) {\n messageBody[Constants.sessionIdMapKey] = sessionId;\n }\n if (isDefined(omitMessageBody)) {\n const omitMessageBodyKey = \"omit-message-body\"; // TODO: Service Bus specific. Put it somewhere\n messageBody[omitMessageBodyKey] = types.wrap_boolean(omitMessageBody);\n }\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n const request: RheaMessage = {\n body: messageBody,\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.peekMessage,\n },\n };\n if (updatedOptions?.associatedLinkName) {\n request.application_properties![Constants.associatedLinkName] =\n updatedOptions?.associatedLinkName;\n }\n request.application_properties![Constants.trackingId] = generate_uuid();\n\n // TODO: it'd be nice to attribute this peek request to the actual receiver that made it. So have them pass in a\n // log prefix rather than just falling back to the management links.\n receiverLogger.verbose(\n \"%s Peek by sequence number request body: %O.\",\n this.logPrefix,\n request.body,\n );\n\n const result = await this._makeManagementRequest(request, receiverLogger, updatedOptions);\n if (result.application_properties!.statusCode !== 204) {\n const messages = result.body.messages as { message: Buffer }[];\n for (const msg of messages) {\n const decodedMessage = RheaMessageUtil.decode(msg.message);\n const message = fromRheaMessage(decodedMessage as any, {\n skipParsingBodyAsJson: updatedOptions?.skipParsingBodyAsJson ?? false,\n skipConvertingDate: updatedOptions?.skipConvertingDate ?? false,\n });\n messageList.push(message);\n this._lastPeekedSequenceNumber = message.sequenceNumber!;\n }\n }\n } catch (err: any) {\n const error = translateServiceBusError(err) as MessagingError;\n receiverLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the request to peek messages to $management endpoint`,\n );\n // statusCode == 404 then do not throw\n if (error.code !== ConditionErrorNameMapper[\"com.microsoft:message-not-found\"]) {\n throw error;\n }\n }\n return messageList;\n }\n\n /**\n * Renews the lock on the message. The lock will be renewed based on the setting specified on\n * the queue.\n *\n * When a message is received in `PeekLock` mode, the message is locked on the server for this\n * receiver instance for a duration as specified during the Queue/Subscription creation\n * (LockDuration). If processing of the message requires longer than this duration, the\n * lock needs to be renewed. For each renewal, it resets the time the message is locked by the\n * LockDuration set on the Entity.\n *\n * @param lockToken - Lock token of the message\n * @param options - Options that can be set while sending the request.\n * @returns New lock token expiry date and time in UTC format.\n */\n // eslint-disable-next-line @azure/azure-sdk/ts-naming-options\n async renewLock(lockToken: string, options?: SendManagementRequestOptions): Promise<Date> {\n throwErrorIfConnectionClosed(this._context);\n if (!options) options = {};\n if (options.timeoutInMs == null) options.timeoutInMs = 5000;\n\n try {\n const messageBody: any = {};\n\n messageBody[Constants.lockTokens] = types.wrap_array(\n [string_to_uuid(lockToken)],\n 0x98,\n undefined,\n );\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n const request: RheaMessage = {\n body: messageBody,\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.renewLock,\n },\n };\n request.application_properties![Constants.trackingId] = generate_uuid();\n if (updatedOptions.associatedLinkName) {\n request.application_properties![Constants.associatedLinkName] =\n updatedOptions.associatedLinkName;\n }\n receiverLogger.verbose(\n \"[%s] Renew message Lock request: %O.\",\n this._context.connectionId,\n request,\n );\n const result = await this._makeManagementRequest(request, receiverLogger, {\n abortSignal: updatedOptions?.abortSignal,\n requestName: \"renewLock\",\n });\n const lockedUntilUtc = new Date(result.body.expirations[0]);\n return lockedUntilUtc;\n } catch (err: any) {\n const error = translateServiceBusError(err);\n receiverLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the renew lock request to $management endpoint`,\n );\n throw error;\n }\n }\n\n /**\n * Schedules an array of messages to appear on Service Bus at a later time.\n *\n * @param scheduledEnqueueTimeUtc - The UTC time at which the messages should be enqueued.\n * @param messages - An array of messages that needs to be scheduled.\n * @returns The sequence numbers of messages that were scheduled.\n */\n async scheduleMessages(\n scheduledEnqueueTimeUtc: Date,\n messages: ServiceBusMessage[] | AmqpAnnotatedMessage[],\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<Long[]> {\n throwErrorIfConnectionClosed(this._context);\n if (!messages.length) {\n return [];\n }\n const messageBody: any[] = [];\n for (let i = 0; i < messages.length; i++) {\n const item = messages[i];\n\n try {\n const rheaMessage = toRheaMessage(item, defaultDataTransformer);\n updateMessageId(rheaMessage, rheaMessage.message_id || generate_uuid());\n updateScheduledTime(rheaMessage, scheduledEnqueueTimeUtc);\n\n const entry: {\n message: Buffer;\n [\"message-id\"]: ServiceBusMessage[\"messageId\"];\n [\"partition-key\"]?: ServiceBusMessage[\"partitionKey\"];\n [Constants.sessionIdMapKey]?: string | undefined;\n } = {\n message: RheaMessageUtil.encode(rheaMessage),\n \"message-id\": rheaMessage.message_id,\n };\n\n if (rheaMessage.group_id) {\n entry[Constants.sessionIdMapKey] = rheaMessage.group_id;\n }\n\n if (rheaMessage.message_annotations?.[Constants.partitionKey]) {\n entry[\"partition-key\"] = rheaMessage.message_annotations[Constants.partitionKey];\n }\n\n // Will be required later for implementing Transactions\n // if (item.viaPartitionKey) {\n // entry[\"via-partition-key\"] = item.viaPartitionKey;\n // }\n\n const wrappedEntry = types.wrap_map(entry);\n messageBody.push(wrappedEntry);\n } catch (err: any) {\n const error = translateServiceBusError(err);\n senderLogger.logError(\n error,\n `${this.logPrefix} An error occurred while encoding the item at position ${i} in the messages array`,\n );\n throw error;\n }\n }\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n try {\n const request: RheaMessage = {\n body: { messages: messageBody },\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.scheduleMessage,\n },\n };\n if (updatedOptions?.associatedLinkName) {\n request.application_properties![Constants.associatedLinkName] =\n updatedOptions?.associatedLinkName;\n }\n request.application_properties![Constants.trackingId] = generate_uuid();\n senderLogger.verbose(\"%s Schedule messages request body: %O.\", this.logPrefix, request.body);\n const result = await this._makeManagementRequest(request, senderLogger, updatedOptions);\n const sequenceNumbers = result.body[Constants.sequenceNumbers];\n const sequenceNumbersAsLong = [];\n for (let i = 0; i < sequenceNumbers.length; i++) {\n if (typeof sequenceNumbers[i] === \"number\") {\n sequenceNumbersAsLong.push(Long.fromNumber(sequenceNumbers[i]));\n } else {\n sequenceNumbersAsLong.push(Long.fromBytesBE(sequenceNumbers[i]));\n }\n }\n return sequenceNumbersAsLong;\n } catch (err: any) {\n const error = translateServiceBusError(err);\n senderLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the request to schedule messages to $management endpoint`,\n );\n throw error;\n }\n }\n\n /**\n * Cancels an array of messages that were scheduled.\n * @param sequenceNumbers - An Array of sequence numbers of the message to be cancelled.\n */\n async cancelScheduledMessages(\n sequenceNumbers: Long[],\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<void> {\n throwErrorIfConnectionClosed(this._context);\n if (!sequenceNumbers.length) {\n return;\n }\n const messageBody: any = {};\n messageBody[Constants.sequenceNumbers] = [];\n for (let i = 0; i < sequenceNumbers.length; i++) {\n const sequenceNumber = sequenceNumbers[i];\n try {\n messageBody[Constants.sequenceNumbers].push(Buffer.from(sequenceNumber.toBytesBE()));\n } catch (err: any) {\n const error = translateServiceBusError(err);\n senderLogger.logError(\n error,\n `${this.logPrefix} An error occurred while encoding the item at position ${i} in the sequenceNumbers array`,\n );\n throw error;\n }\n }\n\n try {\n messageBody[Constants.sequenceNumbers] = types.wrap_array(\n messageBody[Constants.sequenceNumbers],\n 0x81,\n undefined,\n );\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n const request: RheaMessage = {\n body: messageBody,\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.cancelScheduledMessage,\n },\n };\n\n if (updatedOptions?.associatedLinkName) {\n request.application_properties![Constants.associatedLinkName] =\n updatedOptions?.associatedLinkName;\n }\n request.application_properties![Constants.trackingId] = generate_uuid();\n senderLogger.verbose(\n \"%s Cancel scheduled messages request body: %O.\",\n this.logPrefix,\n request.body,\n );\n\n await this._makeManagementRequest(request, senderLogger, updatedOptions);\n return;\n } catch (err: any) {\n const error = translateServiceBusError(err);\n senderLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the request to cancel the scheduled message to $management endpoint`,\n );\n throw error;\n }\n }\n\n /**\n * Receives a list of deferred messages identified by `sequenceNumbers`.\n *\n * @param sequenceNumbers - A list containing the sequence numbers to receive.\n * @param receiveMode - The mode in which the receiver was created.\n * @returns a list of messages identified by the given sequenceNumbers or an empty list if no messages are found.\n * - Throws an error if the messages have not been deferred.\n */\n async receiveDeferredMessages(\n sequenceNumbers: Long[],\n receiveMode: ReceiveMode,\n sessionId?: string,\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<ServiceBusMessageImpl[]> {\n throwErrorIfConnectionClosed(this._context);\n\n if (!sequenceNumbers.length) {\n return [];\n }\n\n const messageList: ServiceBusMessageImpl[] = [];\n const messageBody: any = {};\n messageBody[Constants.sequenceNumbers] = [];\n for (let i = 0; i < sequenceNumbers.length; i++) {\n const sequenceNumber = sequenceNumbers[i];\n try {\n messageBody[Constants.sequenceNumbers].push(Buffer.from(sequenceNumber.toBytesBE()));\n } catch (err: any) {\n const error = translateServiceBusError(err);\n receiverLogger.logError(\n error,\n `${this.logPrefix} An error occurred while encoding the item at position ${i} in the sequenceNumbers array`,\n );\n throw error;\n }\n }\n\n try {\n messageBody[Constants.sequenceNumbers] = types.wrap_array(\n messageBody[Constants.sequenceNumbers],\n 0x81,\n undefined,\n );\n const receiverSettleMode: number = receiveMode === \"receiveAndDelete\" ? 0 : 1;\n messageBody[Constants.receiverSettleMode] = types.wrap_uint(receiverSettleMode);\n if (sessionId != null) {\n messageBody[Constants.sessionIdMapKey] = sessionId;\n }\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n const request: RheaMessage = {\n body: messageBody,\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.receiveBySequenceNumber,\n },\n };\n if (updatedOptions?.associatedLinkName) {\n request.application_properties![Constants.associatedLinkName] =\n updatedOptions?.associatedLinkName;\n }\n request.application_properties![Constants.trackingId] = generate_uuid();\n receiverLogger.verbose(\n \"%s Receive deferred messages request body: %O.\",\n this.logPrefix,\n request.body,\n );\n\n const result = await this._makeManagementRequest(request, receiverLogger, updatedOptions);\n const messages = result.body.messages as {\n message: Buffer;\n \"lock-token\": Buffer;\n }[];\n for (const msg of messages) {\n const decodedMessage = RheaMessageUtil.decode(msg.message);\n const message = new ServiceBusMessageImpl(\n decodedMessage as any,\n { tag: msg[\"lock-token\"] } as any,\n false,\n receiveMode,\n updatedOptions?.skipParsingBodyAsJson ?? false,\n false,\n );\n messageList.push(message);\n }\n return messageList;\n } catch (err: any) {\n const error = translateServiceBusError(err);\n receiverLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the request to receive deferred messages to $management endpoint`,\n );\n throw error;\n }\n }\n\n private async _deleteMessages(\n messageCount: number,\n enqueueTimeUtcOlderThan: Date,\n sessionId?: string,\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<number> {\n try {\n const messageBody: any = {};\n messageBody[Constants.messageCount] = types.wrap_int(messageCount);\n messageBody[Constants.enqueuedTimeUtc] = enqueueTimeUtcOlderThan;\n if (isDefined(sessionId)) {\n messageBody[Constants.sessionIdMapKey] = sessionId;\n }\n\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n const request: RheaMessage = {\n body: messageBody,\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.deleteMessages,\n },\n };\n if (updatedOptions?.associatedLinkName) {\n request.application_properties![Constants.associatedLinkName] =\n updatedOptions?.associatedLinkName;\n }\n request.application_properties![Constants.trackingId] = generate_uuid();\n receiverLogger.verbose(\"%s delete messages request body: %O.\", this.logPrefix, request.body);\n\n const result = await this._makeManagementRequest(request, receiverLogger, updatedOptions);\n if (result.application_properties!.statusCode === 200) {\n return result.body[\"message-count\"];\n } else if (\n result.application_properties!.statusCode === 204 &&\n result.application_properties!.errorCondition === \"com.microsoft:message-not-found\"\n ) {\n return 0;\n } else {\n throw new Error(\n `Unexpected response with status code of ${result.application_properties!.statusCode}`,\n );\n }\n } catch (err: any) {\n const error = translateServiceBusError(err) as MessagingError;\n receiverLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the request to delete messages to $management endpoint`,\n );\n throw error;\n }\n }\n\n /**\n * Delete messages. If no option is specified, all messages will be deleted.\n *\n * @param messageCount - number of messages to delete in a batch.\n * @param enqueueTimeUtcOlderThan - Delete messages whose enqueue time (UTC) are older than this.\n * @returns number of messages deleted.\n */\n async deleteMessages(\n messageCount: number,\n enqueueTimeUtcOlderThan?: Date,\n sessionId?: string,\n options: OperationOptionsBase & SendManagementRequestOptions = {},\n ): Promise<number> {\n throwTypeErrorIfParameterMissing(this._context.connectionId, \"messageCount\", messageCount);\n throwTypeErrorIfParameterTypeMismatch(\n this._context.connectionId,\n \"messageCount\",\n messageCount,\n \"number\",\n );\n\n if (isNaN(messageCount) || messageCount < 1) {\n throw new TypeError(\"'messageCount' must be a number greater than 0.\");\n }\n\n enqueueTimeUtcOlderThan ??= new Date();\n\n return this._deleteMessages(messageCount, enqueueTimeUtcOlderThan, sessionId, options);\n }\n\n /**\n * Updates the disposition status of deferred messages.\n *\n * @param lockTokens - Message lock tokens to update disposition status.\n * @param dispositionStatus - The disposition status to be set\n * @param options - Optional parameters that can be provided while updating the disposition status.\n */\n async updateDispositionStatus(\n lockToken: string,\n dispositionType: DispositionType,\n // TODO: mgmt link retry<> will come in the next PR.\n options?: Omit<DispositionStatusOptions, \"retryOptions\"> & SendManagementRequestOptions,\n ): Promise<void> {\n throwErrorIfConnectionClosed(this._context);\n if (!options) options = {};\n try {\n let dispositionStatus: \"completed\" | \"defered\" | \"suspended\" | \"abandoned\";\n\n if (dispositionType === DispositionType.abandon) dispositionStatus = \"abandoned\";\n else if (dispositionType === DispositionType.complete) dispositionStatus = \"completed\";\n else if (dispositionType === DispositionType.defer) dispositionStatus = \"defered\";\n else if (dispositionType === DispositionType.deadletter) dispositionStatus = \"suspended\";\n else throw new Error(`Provided \"dispositionType\" - ${dispositionType} is invalid`);\n\n const messageBody: any = {};\n const lockTokenBuffer: Buffer[] = [];\n lockTokenBuffer.push(string_to_uuid(lockToken));\n messageBody[Constants.lockTokens] = types.wrap_array(lockTokenBuffer, 0x98, undefined);\n messageBody[Constants.dispositionStatus] = dispositionStatus;\n if (options.deadLetterDescription != null) {\n messageBody[Constants.deadLetterDescription] = options.deadLetterDescription;\n }\n if (options.deadLetterReason != null) {\n messageBody[Constants.deadLetterReason] = options.deadLetterReason;\n }\n if (options.propertiesToModify != null) {\n messageBody[Constants.propertiesToModify] = options.propertiesToModify;\n }\n if (options.sessionId != null) {\n messageBody[Constants.sessionIdMapKey] = options.sessionId;\n }\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n const request: RheaMessage = {\n body: messageBody,\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.updateDisposition,\n },\n };\n if (updatedOptions.associatedLinkName) {\n request.application_properties![Constants.associatedLinkName] =\n updatedOptions.associatedLinkName;\n }\n request.application_properties![Constants.trackingId] = generate_uuid();\n receiverLogger.verbose(\n \"%s Update disposition status request body: %O.\",\n this.logPrefix,\n request.body,\n );\n await this._makeManagementRequest(request, receiverLogger, updatedOptions);\n } catch (err: any) {\n const error = translateServiceBusError(err);\n receiverLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the request to update disposition status to $management endpoint`,\n );\n throw error;\n }\n }\n\n /**\n * Renews the lock for the specified session.\n *\n * @param sessionId - Id of the session for which the lock needs to be renewed\n * @param options - Options that can be set while sending the request.\n * @returns New lock token expiry date and time in UTC format.\n */\n async renewSessionLock(\n sessionId: string,\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<Date> {\n throwErrorIfConnectionClosed(this._context);\n try {\n const messageBody: any = {};\n messageBody[Constants.sessionIdMapKey] = sessionId;\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n const request: RheaMessage = {\n body: messageBody,\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.renewSessionLock,\n },\n };\n request.application_properties![Constants.trackingId] = generate_uuid();\n if (updatedOptions?.associatedLinkName) {\n request.application_properties![Constants.associatedLinkName] =\n updatedOptions?.associatedLinkName;\n }\n receiverLogger.verbose(\n \"%s Renew Session Lock request body: %O.\",\n this.logPrefix,\n request.body,\n );\n const result = await this._makeManagementRequest(request, receiverLogger, updatedOptions);\n const lockedUntilUtc = new Date(result.body.expiration);\n receiverLogger.verbose(\n \"%s Lock for session '%s' will expire at %s.\",\n this.logPrefix,\n sessionId,\n lockedUntilUtc.toString(),\n );\n return lockedUntilUtc;\n } catch (err: any) {\n const error = translateServiceBusError(err);\n receiverLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the renew lock request to $management endpoint`,\n );\n throw error;\n }\n }\n\n /**\n * Sets the state of the specified session.\n *\n * @param sessionId - The session for which the state needs to be set\n * @param state - The state that needs to be set.\n */\n async setSessionState(\n sessionId: string,\n state: unknown,\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<void> {\n throwErrorIfConnectionClosed(this._context);\n\n try {\n const messageBody: any = {};\n messageBody[Constants.sessionIdMapKey] = sessionId;\n messageBody[\"session-state\"] = toBuffer(state);\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n const request: RheaMessage = {\n body: messageBody,\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.setSessionState,\n },\n };\n if (updatedOptions?.associatedLinkName) {\n request.application_properties![Constants.associatedLinkName] =\n updatedOptions?.associatedLinkName;\n }\n request.application_properties![Constants.trackingId] = generate_uuid();\n receiverLogger.verbose(\n \"%s Set Session state request body: %O.\",\n this.logPrefix,\n request.body,\n );\n await this._makeManagementRequest(request, receiverLogger, updatedOptions);\n } catch (err: any) {\n const error = translateServiceBusError(err);\n receiverLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the renew lock request to $management endpoint`,\n );\n throw error;\n }\n }\n\n /**\n * Gets the state of the specified session.\n *\n * @param sessionId - The session for which the state needs to be retrieved.\n * @returns The state of that session\n */\n async getSessionState(\n sessionId: string,\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<any> {\n throwErrorIfConnectionClosed(this._context);\n try {\n const messageBody: any = {};\n messageBody[Constants.sessionIdMapKey] = sessionId;\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n const request: RheaMessage = {\n body: messageBody,\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.getSessionState,\n },\n };\n if (updatedOptions?.associatedLinkName) {\n request.application_properties![Constants.associatedLinkName] =\n updatedOptions?.associatedLinkName;\n }\n request.application_properties![Constants.trackingId] = generate_uuid();\n receiverLogger.verbose(\n \"%s Get session state request body: %O.\",\n this.logPrefix,\n request.body,\n );\n const result = await this._makeManagementRequest(request, receiverLogger, updatedOptions);\n return result.body[\"session-state\"]\n ? tryToJsonDecode(result.body[\"session-state\"])\n : result.body[\"session-state\"];\n } catch (err: any) {\n const error = translateServiceBusError(err);\n receiverLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the renew lock request to $management endpoint`,\n );\n throw error;\n }\n }\n\n /**\n * Lists the sessions on the ServiceBus Queue/Topic.\n * @param lastUpdateTime - Filter to include only sessions updated after a given time.\n * @param skip - The number of sessions to skip\n * @param top - Maximum numer of sessions.\n * @returns A list of session ids.\n */\n async listMessageSessions(\n skip: number,\n top: number,\n lastUpdatedTime?: Date,\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<string[]> {\n throwErrorIfConnectionClosed(this._context);\n const defaultLastUpdatedTimeForListingSessions: number = 259200000; // 3 * 24 * 3600 * 1000\n if (typeof skip !== \"number\") {\n throw new Error(\"'skip' is a required parameter and must be of type 'number'.\");\n }\n if (typeof top !== \"number\") {\n throw new Error(\"'top' is a required parameter and must be of type 'number'.\");\n }\n if (lastUpdatedTime && !(lastUpdatedTime instanceof Date)) {\n throw new Error(\"'lastUpdatedTime' must be of type 'Date'.\");\n }\n if (!lastUpdatedTime) {\n lastUpdatedTime = new Date(Date.now() - defaultLastUpdatedTimeForListingSessions);\n }\n try {\n const messageBody: any = {};\n messageBody[\"last-updated-time\"] = lastUpdatedTime;\n messageBody[\"skip\"] = types.wrap_int(skip);\n messageBody[\"top\"] = types.wrap_int(top);\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n const request: RheaMessage = {\n body: messageBody,\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.enumerateSessions,\n },\n };\n request.application_properties![Constants.trackingId] = generate_uuid();\n managementClientLogger.verbose(\n \"%s List sessions request body: %O.\",\n this.logPrefix,\n request.body,\n );\n const response = await this._makeManagementRequest(\n request,\n managementClientLogger,\n updatedOptions,\n );\n\n return (response && response.body && response.body[\"sessions-ids\"]) || [];\n } catch (err: any) {\n const error = translateServiceBusError(err);\n managementClientLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the renew lock request to $management endpoint`,\n );\n throw error;\n }\n }\n\n /**\n * Get all the rules on the Subscription.\n * @returns A list of rules.\n */\n async getRules(\n options?: ListRequestOptions & OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<RuleProperties[]> {\n throwErrorIfConnectionClosed(this._context);\n try {\n const updatedOptions = (await this.initWithUniqueReplyTo(options)) as ListRequestOptions &\n OperationOptionsBase &\n SendManagementRequestOptions;\n const request: RheaMessage = {\n body: {\n top: updatedOptions?.maxCount\n ? types.wrap_int(updatedOptions.maxCount)\n : types.wrap_int(max32BitNumber),\n skip: updatedOptions?.skip ? types.wrap_int(updatedOptions.skip) : types.wrap_int(0),\n },\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.enumerateRules,\n },\n };\n request.application_properties![Constants.trackingId] = generate_uuid();\n\n managementClientLogger.verbose(\n \"%s Get rules request body: %O.\",\n this.logPrefix,\n request.body,\n );\n const response = await this._makeManagementRequest(\n request,\n managementClientLogger,\n updatedOptions,\n );\n if (\n response.application_properties!.statusCode === 204 ||\n !response.body ||\n !Array.isArray(response.body.rules)\n ) {\n return [];\n }\n\n // Reference: https://docs.microsoft.com/azure/service-bus-messaging/service-bus-amqp-request-response#response-11\n const result: { \"rule-description\": Typed }[] = response.body.rules || [];\n const rules: RuleProperties[] = [];\n result.forEach((x) => {\n const ruleDescriptor = x[\"rule-description\"];\n let filter: SqlRuleFilter | CorrelationRuleFilter;\n\n // We use the first three elements of the `ruleDescriptor.value` to get filter, action, name\n if (\n !ruleDescriptor ||\n !ruleDescriptor.descriptor ||\n ruleDescriptor.descriptor.value !== Constants.descriptorCodes.ruleDescriptionList ||\n !Array.isArray(ruleDescriptor.value) ||\n ruleDescriptor.value.length < 3\n ) {\n return;\n }\n\n const filtersRawData: Typed = ruleDescriptor.value[0];\n const actionsRawData: Typed = ruleDescriptor.value[1];\n let sqlRuleAction: SqlRuleAction;\n if (\n actionsRawData.descriptor.value === Constants.descriptorCodes.sqlRuleActionList &&\n Array.isArray(actionsRawData.value) &&\n actionsRawData.value.length\n ) {\n sqlRuleAction = {\n sqlExpression: this._safelyGetTypedValueFromArray(actionsRawData.value, 0),\n };\n } else {\n sqlRuleAction = {};\n }\n\n switch (filtersRawData.descriptor.value) {\n case Constants.descriptorCodes.trueFilterList:\n filter = {\n sqlExpression: \"1=1\",\n };\n break;\n case Constants.descriptorCodes.falseFilterList:\n filter = {\n sqlExpression: \"1=0\",\n };\n break;\n case Constants.descriptorCodes.sqlFilterList:\n filter = {\n sqlExpression: this._safelyGetTypedValueFromArray(filtersRawData.value, 0),\n };\n break;\n case Constants.descriptorCodes.correlationFilterList:\n filter = {\n correlationId: this._safelyGetTypedValueFromArray(filtersRawData.value, 0),\n messageId: this._safelyGetTypedValueFromArray(filtersRawData.value, 1),\n to: this._safelyGetTypedValueFromArray(filtersRawData.value, 2),\n replyTo: this._safelyGetTypedValueFromArray(filtersRawData.value, 3),\n subject: this._safelyGetTypedValueFromArray(filtersRawData.value, 4),\n sessionId: this._safelyGetTypedValueFromArray(filtersRawData.value, 5),\n replyToSessionId: this._safelyGetTypedValueFromArray(filtersRawData.value, 6),\n contentType: this._safelyGetTypedValueFromArray(filtersRawData.value, 7),\n applicationProperties:\n Array.isArray(filtersRawData.value) &&\n filtersRawData.value.length > 8 &&\n filtersRawData.value[8]\n ? this._decodeApplicationPropertiesMap(filtersRawData.value[8])\n : undefined,\n };\n break;\n default:\n throw new Error(\n `${this.logPrefix} Found unexpected descriptor code for the filter: ${filtersRawData.descriptor.value}`,\n );\n }\n\n const rule: RuleProperties = {\n name: ruleDescriptor.value[2].value,\n filter,\n action: sqlRuleAction,\n };\n rules.push(rule);\n });\n\n return rules;\n } catch (err: any) {\n const error = translateServiceBusError(err);\n managementClientLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the get rules request to $management endpoint`,\n );\n throw error;\n }\n }\n\n /**\n * Removes the rule on the Subscription identified by the given rule name.\n */\n async removeRule(\n ruleName: string,\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<void> {\n throwErrorIfConnectionClosed(this._context);\n throwTypeErrorIfParameterMissing(this._context.connectionId, \"ruleName\", ruleName);\n ruleName = String(ruleName);\n throwTypeErrorIfParameterIsEmptyString(this._context.connectionId, \"ruleName\", ruleName);\n\n try {\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n const request: RheaMessage = {\n body: {\n \"rule-name\": types.wrap_string(ruleName),\n },\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.removeRule,\n },\n };\n request.application_properties![Constants.trackingId] = generate_uuid();\n\n managementClientLogger.verbose(\n \"%s Remove Rule request body: %O.\",\n this.logPrefix,\n request.body,\n );\n await this._makeManagementRequest(request, managementClientLogger, updatedOptions);\n } catch (err: any) {\n const error = translateServiceBusError(err);\n managementClientLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the remove rule request to $management endpoint`,\n );\n throw error;\n }\n }\n\n /**\n * Adds a rule on the subscription as defined by the given rule name, filter and action\n * @param ruleName - Name of the rule\n * @param filter - A Boolean, SQL expression or a Correlation filter\n * @param sqlRuleActionExpression - Action to perform if the message satisfies the filtering expression\n */\n async addRule(\n ruleName: string,\n filter: SqlRuleFilter | CorrelationRuleFilter,\n sqlRuleActionExpression?: string,\n options?: OperationOptionsBase & SendManagementRequestOptions,\n ): Promise<void> {\n throwErrorIfConnectionClosed(this._context);\n\n throwTypeErrorIfParameterMissing(this._context.connectionId, \"ruleName\", ruleName);\n ruleName = String(ruleName);\n throwTypeErrorIfParameterIsEmptyString(this._context.connectionId, \"ruleName\", ruleName);\n\n throwTypeErrorIfParameterMissing(this._context.connectionId, \"filter\", filter);\n if (!isSqlRuleFilter(filter) && !isCorrelationRuleFilter(filter)) {\n throw new TypeError(\n `The parameter \"filter\" should implement either the SqlRuleFilter or the CorrelationRuleFilter interface.`,\n );\n }\n\n try {\n const ruleDescription: any = {};\n if (isSqlRuleFilter(filter)) {\n ruleDescription[\"sql-filter\"] = {\n expression: filter.sqlExpression,\n };\n } else {\n ruleDescription[\"correlation-filter\"] = {\n \"correlation-id\": filter.correlationId,\n \"message-id\": filter.messageId,\n to: filter.to,\n \"reply-to\": filter.replyTo,\n label: filter.subject,\n \"session-id\": filter.sessionId,\n \"reply-to-session-id\": filter.replyToSessionId,\n \"content-type\": filter.contentType,\n properties: filter.applicationProperties,\n };\n }\n\n if (sqlRuleActionExpression !== undefined) {\n ruleDescription[\"sql-rule-action\"] = {\n expression: String(sqlRuleActionExpression),\n };\n }\n const updatedOptions = await this.initWithUniqueReplyTo(options);\n const request: RheaMessage = {\n body: {\n \"rule-name\": types.wrap_string(ruleName),\n \"rule-description\": types.wrap_map(ruleDescription),\n },\n reply_to: this.replyTo,\n application_properties: {\n operation: Constants.operations.addRule,\n },\n };\n request.application_properties![Constants.trackingId] = generate_uuid();\n\n managementClientLogger.verbose(\"%s Add Rule request body: %O.\", this.logPrefix, request.body);\n await this._makeManagementRequest(request, managementClientLogger, updatedOptions);\n } catch (err: any) {\n const error = translateServiceBusError(err);\n managementClientLogger.logError(\n error,\n `${this.logPrefix} An error occurred while sending the Add rule request to $management endpoint`,\n );\n throw error;\n }\n }\n\n protected removeLinkFromContext(): void {\n delete this._context.managementClients[this.name];\n }\n}\n\n/**\n * Converts an AmqpAnnotatedMessage or ServiceBusMessage into a properly formatted\n * message for sending to the mgmt link for scheduling.\n *\n * @internal\n * @hidden\n */\nexport function toScheduleableMessage(\n item: ServiceBusMessage | AmqpAnnotatedMessage,\n scheduledEnqueueTimeUtc: Date,\n): Record<string, unknown> {\n const rheaMessage = toRheaMessage(item, defaultDataTransformer);\n updateMessageId(rheaMessage, rheaMessage.message_id || generate_uuid());\n updateScheduledTime(rheaMessage, scheduledEnqueueTimeUtc);\n\n const entry: Record<string, unknown> = {\n message: RheaMessageUtil.encode(rheaMessage),\n \"message-id\": rheaMessage.message_id,\n };\n\n rheaMessage.message_annotations = {\n ...rheaMessage.message_annotations,\n [Constants.scheduledEnqueueTime]: scheduledEnqueueTimeUtc,\n };\n\n if (rheaMessage.group_id) {\n entry[Constants.sessionIdMapKey] = rheaMessage.group_id;\n }\n\n const partitionKey =\n rheaMessage.message_annotations && rheaMessage.message_annotations[Constants.partitionKey];\n\n if (partitionKey) {\n entry[\"partition-key\"] = partitionKey;\n }\n return entry;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"messageReceiver.js","sourceRoot":"","sources":["../../../src/core/messageReceiver.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n Constants,\n ErrorNameConditionMapper,\n MessagingError,\n RetryOptions,\n} from \"@azure/core-amqp\";\nimport { AmqpError, EventContext, OnAmqpEvent, Receiver, ReceiverOptions } from \"rhea-promise\";\nimport { receiverLogger as logger } from \"../log\";\nimport { LinkEntity, ReceiverType } from \"./linkEntity\";\nimport { ConnectionContext } from \"../connectionContext\";\nimport { DispositionType, ServiceBusMessageImpl } from \"../serviceBusMessage\";\nimport { getUniqueName } from \"../util/utils\";\nimport { ProcessErrorArgs, ReceiveMode, SubscribeOptions } from \"../models\";\nimport { DispositionStatusOptions } from \"./managementClient\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport {\n onMessageSettled,\n DeferredPromiseAndTimer,\n ReceiverHandlers,\n createReceiverOptions,\n} from \"./shared\";\nimport { LockRenewer } from \"./autoLockRenewer\";\nimport { translateServiceBusError } from \"../serviceBusError\";\n\n/**\n * @internal\n */\nexport interface OnAmqpEventAsPromise extends OnAmqpEvent {\n (context: EventContext): Promise<void>;\n}\n\n/**\n * @internal\n */\nexport interface ReceiveOptions extends SubscribeOptions {\n /**\n * The mode in which messages should be received.\n */\n receiveMode: ReceiveMode;\n /**\n * Retry policy options that determine the mode, number of retries, retry interval etc.\n */\n retryOptions?: RetryOptions;\n\n /**\n * A LockAutoRenewer that will automatically renew locks based on user specified interval.\n * This will be set if the user has chosen peekLock mode _and_ they've set a positive\n * maxAutoRenewLockDurationInMs value when they created their receiver.\n */\n lockRenewer: LockRenewer | undefined;\n /**\n * Option to disable the client from running JSON.parse() on the message body when receiving the message.\n * Not applicable if the message was sent with AMQP body type value or sequence. Use this option when you\n * prefer to work directly with the bytes present in the message body than have the client attempt to parse it.\n */\n skipParsingBodyAsJson: boolean;\n\n /**\n * Whether to skip converting Date type on properties of message annotations\n * or application properties into numbers when receiving the message. By\n * default, properties of Date type is converted into UNIX epoch number for\n * compatibility.\n */\n skipConvertingDate: boolean;\n}\n\n/**\n * Describes the signature of the message handler passed to `registerMessageHandler` method.\n * @internal\n */\nexport interface OnMessage {\n /**\n * Handler for processing each incoming message.\n */\n (message: ServiceBusMessageImpl): Promise<void>;\n}\n\n/**\n * Describes the signature of the error handler passed to `registerMessageHandler` method.\n *\n * @internal\n */\nexport interface OnError {\n /**\n * Handler for any error that occurs while receiving or processing messages.\n *\n * NOTE: if this signature changes make sure you reflect those same changes in the\n * `OnErrorNoContext` definition below.\n */\n (args: ProcessErrorArgs): Promise<void>;\n}\n\n/**\n * An onError method but without the context property. Used when wrapping OnError\n * with an implicit ProcessErrorContext. Used by LockRenewer.\n *\n * @internal\n */\nexport interface OnErrorNoContext {\n (error: MessagingError | Error): void;\n}\n\n/**\n * @internal\n * Describes the MessageReceiver that will receive messages from ServiceBus.\n */\nexport abstract class MessageReceiver extends LinkEntity<Receiver> {\n /**\n * The type of receiver: \"batching\" or \"streaming\".\n */\n receiverType: ReceiverType;\n /**\n * The mode in which messages should be received.\n * Default: ReceiveMode.peekLock\n */\n receiveMode: ReceiveMode;\n /**\n * Indicates whether `Message.complete()` should be called\n * automatically after the message processing is complete while receiving messages with handlers.\n * Default: false.\n */\n autoComplete: boolean;\n /**\n * Maintains a map of deliveries that\n * are being actively disposed. It acts as a store for correlating the responses received for\n * active dispositions.\n */\n protected _deliveryDispositionMap: Map<number, DeferredPromiseAndTimer> = new Map<\n number,\n DeferredPromiseAndTimer\n >();\n\n /**\n * A lock renewer that handles message lock auto-renewal. This is undefined unless the user\n * has activated autolock renewal via ReceiveOptions. A single auto lock renewer is shared\n * for all links for a `ServiceBusReceiver` instance.\n */\n protected _lockRenewer: LockRenewer | undefined;\n\n constructor(\n public identifier: string,\n context: ConnectionContext,\n entityPath: string,\n receiverType: ReceiverType,\n options: Omit<ReceiveOptions, \"maxConcurrentCalls\">,\n ) {\n super(entityPath, entityPath, context, receiverType, logger, {\n address: entityPath,\n audience: `${context.config.endpoint}${entityPath}`,\n });\n\n this.receiverType = receiverType;\n this.receiveMode = options.receiveMode || \"peekLock\";\n\n // If explicitly set to false then autoComplete is false else true (default).\n this.autoComplete =\n options.autoCompleteMessages === false ? options.autoCompleteMessages : true;\n this._lockRenewer = options.lockRenewer;\n }\n\n /**\n * Creates the options that need to be specified while creating an AMQP receiver link.\n */\n protected _createReceiverOptions(\n useNewName: boolean,\n handlers: ReceiverHandlers,\n ): ReceiverOptions {\n const rcvrOptions: ReceiverOptions = createReceiverOptions(\n useNewName ? getUniqueName(this.baseName) : this.name,\n this.receiveMode,\n {\n address: this.address,\n },\n this.identifier,\n {\n onSettled: (context: EventContext) => {\n return onMessageSettled(this.logPrefix, context.delivery, this._deliveryDispositionMap);\n },\n ...handlers,\n },\n );\n\n return rcvrOptions;\n }\n\n /**\n * Creates a new AMQP receiver under a new AMQP session.\n */\n protected async _init(options: ReceiverOptions, abortSignal?: AbortSignalLike): Promise<void> {\n try {\n await this.initLink(options, abortSignal);\n\n // It is possible for someone to close the receiver and then start it again.\n // Thus make sure that the receiver is present in the client cache.\n this._context.messageReceivers[this.name] = this as any;\n } catch (err: any) {\n const translatedError = translateServiceBusError(err);\n logger.logError(\n translatedError,\n \"%s An error occured while creating the receiver\",\n this.logPrefix,\n );\n\n // Fix the unhelpful error messages for the OperationTimeoutError that comes from `rhea-promise`.\n if ((translatedError as MessagingError).code === \"OperationTimeoutError\") {\n translatedError.message =\n \"Failed to create a receiver within allocated time and retry attempts.\";\n }\n\n throw translatedError;\n }\n }\n\n protected createRheaLink(\n options: ReceiverOptions,\n _abortSignal?: AbortSignalLike,\n ): Promise<Receiver> {\n return this._context.connection.createReceiver(options);\n }\n\n /**\n * React to receiver being detached due to given error.\n * You may want to set up retries to recover the broken link and/or report error to user.\n * @param error - The error accompanying the receiver/session error or connection disconnected events\n */\n abstract onDetached(error?: AmqpError | Error): Promise<void>;\n\n /**\n * Clears lock renewal timers on all active messages, clears token remewal for current receiver,\n * removes current MessageReceiver instance from cache, and closes the underlying AMQP receiver.\n * @returns Promise<void>.\n */\n async close(): Promise<void> {\n this._lockRenewer?.stopAll(this);\n await super.close();\n }\n\n /**\n * Settles the message with the specified disposition.\n * @param message - The ServiceBus Message that needs to be settled.\n * @param operation - The disposition type.\n * @param options - Optional parameters that can be provided while disposing the message.\n */\n async settleMessage(\n message: ServiceBusMessageImpl,\n operation: DispositionType,\n options: DispositionStatusOptions,\n ): Promise<any> {\n return new Promise((resolve, reject) => {\n if (operation.match(/^(complete|abandon|defer|deadletter)$/) == null) {\n return reject(new Error(`operation: '${operation}' is not a valid operation.`));\n }\n this._lockRenewer?.stop(this, message);\n const delivery = message.delivery;\n const timer = setTimeout(() => {\n this._deliveryDispositionMap.delete(delivery.id);\n\n logger.verbose(\n \"%s Disposition for delivery id: %d, did not complete in %d milliseconds. \" +\n \"Hence rejecting the promise with timeout error.\",\n this.logPrefix,\n delivery.id,\n Constants.defaultOperationTimeoutInMs,\n );\n\n const e: AmqpError = {\n condition: ErrorNameConditionMapper.ServiceUnavailableError,\n description:\n \"Operation to settle the message has timed out. The disposition of the \" +\n \"message may or may not be successful\",\n };\n return reject(translateServiceBusError(e));\n }, options.retryOptions?.timeoutInMs ?? Constants.defaultOperationTimeoutInMs);\n this._deliveryDispositionMap.set(delivery.id, {\n resolve: resolve,\n reject: reject,\n timer: timer,\n });\n if (operation === DispositionType.complete) {\n delivery.accept();\n } else if (operation === DispositionType.abandon) {\n const params: any = {\n undeliverable_here: false,\n };\n if (options.propertiesToModify) params.message_annotations = options.propertiesToModify;\n delivery.modified(params);\n } else if (operation === DispositionType.defer) {\n const params: any = {\n undeliverable_here: true,\n };\n if (options.propertiesToModify) params.message_annotations = options.propertiesToModify;\n delivery.modified(params);\n } else if (operation === DispositionType.deadletter) {\n const error: AmqpError = {\n condition: Constants.deadLetterName,\n info: {\n ...options.propertiesToModify,\n DeadLetterReason: options.deadLetterReason,\n DeadLetterErrorDescription: options.deadLetterDescription,\n },\n };\n delivery.reject(error);\n }\n });\n }\n}\n"]}
|