@azure/service-bus 7.10.0-beta.2 → 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/dist/browser/connectionContext.js +1 -2
- package/dist/browser/connectionContext.js.map +1 -1
- package/dist/browser/constructorHelpers.js +3 -4
- package/dist/browser/constructorHelpers.js.map +1 -1
- package/dist/browser/core/autoLockRenewer.js +9 -5
- package/dist/browser/core/autoLockRenewer.js.map +1 -1
- package/dist/browser/core/batchingReceiver.js +26 -18
- package/dist/browser/core/batchingReceiver.js.map +1 -1
- package/dist/browser/core/linkEntity.js +74 -13
- package/dist/browser/core/linkEntity.js.map +1 -1
- package/dist/browser/core/managementClient.js +48 -48
- package/dist/browser/core/managementClient.js.map +1 -1
- package/dist/browser/core/messageReceiver.js +41 -14
- package/dist/browser/core/messageReceiver.js.map +1 -1
- package/dist/browser/core/messageSender.js +33 -10
- package/dist/browser/core/messageSender.js.map +1 -1
- package/dist/browser/core/receiverHelper.js +3 -2
- package/dist/browser/core/receiverHelper.js.map +1 -1
- package/dist/browser/core/shared.js +11 -4
- package/dist/browser/core/shared.js.map +1 -1
- package/dist/browser/core/streamingReceiver.js +74 -43
- package/dist/browser/core/streamingReceiver.js.map +1 -1
- package/dist/browser/diagnostics/instrumentServiceBusMessage.js +16 -8
- package/dist/browser/diagnostics/instrumentServiceBusMessage.js.map +1 -1
- package/dist/browser/receivers/receiver.js +68 -23
- package/dist/browser/receivers/receiver.js.map +1 -1
- package/dist/browser/receivers/receiverCommon.js +36 -21
- package/dist/browser/receivers/receiverCommon.js.map +1 -1
- package/dist/browser/receivers/sessionReceiver.js +69 -29
- package/dist/browser/receivers/sessionReceiver.js.map +1 -1
- package/dist/browser/sender.js +33 -11
- package/dist/browser/sender.js.map +1 -1
- package/dist/browser/serializers/queueResourceSerializer.js +9 -1
- package/dist/browser/serializers/queueResourceSerializer.js.map +1 -1
- package/dist/browser/serializers/ruleResourceSerializer.js +1 -2
- package/dist/browser/serializers/ruleResourceSerializer.js.map +1 -1
- package/dist/browser/serviceBusAtomManagementClient.js +181 -228
- package/dist/browser/serviceBusAtomManagementClient.js.map +1 -1
- package/dist/browser/serviceBusClient.js +31 -22
- package/dist/browser/serviceBusClient.js.map +1 -1
- package/dist/browser/serviceBusError.js +21 -1
- package/dist/browser/serviceBusError.js.map +1 -1
- package/dist/browser/serviceBusMessage.js +208 -13
- package/dist/browser/serviceBusMessage.js.map +1 -1
- package/dist/browser/serviceBusMessageBatch.js +32 -8
- package/dist/browser/serviceBusMessageBatch.js.map +1 -1
- package/dist/browser/serviceBusRuleManager.js +39 -15
- package/dist/browser/serviceBusRuleManager.js.map +1 -1
- package/dist/browser/session/messageSession.js +130 -25
- package/dist/browser/session/messageSession.js.map +1 -1
- package/dist/browser/util/atomXmlHelper.js +4 -5
- package/dist/browser/util/atomXmlHelper.js.map +1 -1
- package/dist/browser/util/compat/httpHeaders.js +1 -0
- package/dist/browser/util/compat/httpHeaders.js.map +1 -1
- package/dist/browser/util/constants.js +1 -1
- package/dist/browser/util/constants.js.map +1 -1
- package/dist/browser/util/sasServiceClientCredentials.js +8 -0
- package/dist/browser/util/sasServiceClientCredentials.js.map +1 -1
- package/dist/browser/util/semaphore.js +6 -2
- package/dist/browser/util/semaphore.js.map +1 -1
- package/dist/browser/util/utils.js +5 -7
- package/dist/browser/util/utils.js.map +1 -1
- package/dist/commonjs/connectionContext.js +1 -2
- package/dist/commonjs/connectionContext.js.map +1 -1
- package/dist/commonjs/constructorHelpers.js +3 -4
- package/dist/commonjs/constructorHelpers.js.map +1 -1
- package/dist/commonjs/core/autoLockRenewer.js +9 -5
- package/dist/commonjs/core/autoLockRenewer.js.map +1 -1
- package/dist/commonjs/core/batchingReceiver.js +26 -18
- package/dist/commonjs/core/batchingReceiver.js.map +1 -1
- package/dist/commonjs/core/linkEntity.js +74 -13
- package/dist/commonjs/core/linkEntity.js.map +1 -1
- package/dist/commonjs/core/managementClient.js +48 -48
- package/dist/commonjs/core/managementClient.js.map +1 -1
- package/dist/commonjs/core/messageReceiver.js +41 -14
- package/dist/commonjs/core/messageReceiver.js.map +1 -1
- package/dist/commonjs/core/messageSender.js +33 -10
- package/dist/commonjs/core/messageSender.js.map +1 -1
- package/dist/commonjs/core/receiverHelper.js +3 -2
- package/dist/commonjs/core/receiverHelper.js.map +1 -1
- package/dist/commonjs/core/shared.js +11 -4
- package/dist/commonjs/core/shared.js.map +1 -1
- package/dist/commonjs/core/streamingReceiver.js +74 -43
- package/dist/commonjs/core/streamingReceiver.js.map +1 -1
- package/dist/commonjs/diagnostics/instrumentServiceBusMessage.js +16 -8
- package/dist/commonjs/diagnostics/instrumentServiceBusMessage.js.map +1 -1
- package/dist/commonjs/receivers/receiver.js +68 -23
- package/dist/commonjs/receivers/receiver.js.map +1 -1
- package/dist/commonjs/receivers/receiverCommon.js +36 -21
- package/dist/commonjs/receivers/receiverCommon.js.map +1 -1
- package/dist/commonjs/receivers/sessionReceiver.js +69 -29
- package/dist/commonjs/receivers/sessionReceiver.js.map +1 -1
- package/dist/commonjs/sender.js +33 -11
- package/dist/commonjs/sender.js.map +1 -1
- package/dist/commonjs/serializers/queueResourceSerializer.js +9 -1
- package/dist/commonjs/serializers/queueResourceSerializer.js.map +1 -1
- package/dist/commonjs/serializers/ruleResourceSerializer.js +1 -2
- package/dist/commonjs/serializers/ruleResourceSerializer.js.map +1 -1
- package/dist/commonjs/serviceBusAtomManagementClient.js +181 -227
- package/dist/commonjs/serviceBusAtomManagementClient.js.map +1 -1
- package/dist/commonjs/serviceBusClient.js +31 -22
- package/dist/commonjs/serviceBusClient.js.map +1 -1
- package/dist/commonjs/serviceBusError.js +21 -1
- package/dist/commonjs/serviceBusError.js.map +1 -1
- package/dist/commonjs/serviceBusMessage.js +208 -12
- package/dist/commonjs/serviceBusMessage.js.map +1 -1
- package/dist/commonjs/serviceBusMessageBatch.js +32 -8
- package/dist/commonjs/serviceBusMessageBatch.js.map +1 -1
- package/dist/commonjs/serviceBusRuleManager.js +39 -15
- package/dist/commonjs/serviceBusRuleManager.js.map +1 -1
- package/dist/commonjs/session/messageSession.js +130 -25
- package/dist/commonjs/session/messageSession.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +11 -11
- package/dist/commonjs/util/atomXmlHelper.js +4 -5
- package/dist/commonjs/util/atomXmlHelper.js.map +1 -1
- package/dist/commonjs/util/compat/httpHeaders.js +1 -0
- package/dist/commonjs/util/compat/httpHeaders.js.map +1 -1
- package/dist/commonjs/util/constants.js +1 -1
- package/dist/commonjs/util/constants.js.map +1 -1
- package/dist/commonjs/util/runtimeInfo.js +2 -2
- package/dist/commonjs/util/runtimeInfo.js.map +1 -1
- package/dist/commonjs/util/sasServiceClientCredentials.js +8 -0
- package/dist/commonjs/util/sasServiceClientCredentials.js.map +1 -1
- package/dist/commonjs/util/semaphore.js +6 -2
- package/dist/commonjs/util/semaphore.js.map +1 -1
- package/dist/commonjs/util/utils.js +5 -7
- package/dist/commonjs/util/utils.js.map +1 -1
- package/dist/esm/connectionContext.js +1 -2
- package/dist/esm/connectionContext.js.map +1 -1
- package/dist/esm/constructorHelpers.js +3 -4
- package/dist/esm/constructorHelpers.js.map +1 -1
- package/dist/esm/core/autoLockRenewer.js +9 -5
- package/dist/esm/core/autoLockRenewer.js.map +1 -1
- package/dist/esm/core/batchingReceiver.js +26 -18
- package/dist/esm/core/batchingReceiver.js.map +1 -1
- package/dist/esm/core/linkEntity.js +74 -13
- package/dist/esm/core/linkEntity.js.map +1 -1
- package/dist/esm/core/managementClient.js +48 -48
- package/dist/esm/core/managementClient.js.map +1 -1
- package/dist/esm/core/messageReceiver.js +41 -14
- package/dist/esm/core/messageReceiver.js.map +1 -1
- package/dist/esm/core/messageSender.js +33 -10
- package/dist/esm/core/messageSender.js.map +1 -1
- package/dist/esm/core/receiverHelper.js +3 -2
- package/dist/esm/core/receiverHelper.js.map +1 -1
- package/dist/esm/core/shared.js +11 -4
- package/dist/esm/core/shared.js.map +1 -1
- package/dist/esm/core/streamingReceiver.js +74 -43
- package/dist/esm/core/streamingReceiver.js.map +1 -1
- package/dist/esm/diagnostics/instrumentServiceBusMessage.js +16 -8
- package/dist/esm/diagnostics/instrumentServiceBusMessage.js.map +1 -1
- package/dist/esm/receivers/receiver.js +68 -23
- package/dist/esm/receivers/receiver.js.map +1 -1
- package/dist/esm/receivers/receiverCommon.js +36 -21
- package/dist/esm/receivers/receiverCommon.js.map +1 -1
- package/dist/esm/receivers/sessionReceiver.js +69 -29
- package/dist/esm/receivers/sessionReceiver.js.map +1 -1
- package/dist/esm/sender.js +33 -11
- package/dist/esm/sender.js.map +1 -1
- package/dist/esm/serializers/queueResourceSerializer.js +9 -1
- package/dist/esm/serializers/queueResourceSerializer.js.map +1 -1
- package/dist/esm/serializers/ruleResourceSerializer.js +1 -2
- package/dist/esm/serializers/ruleResourceSerializer.js.map +1 -1
- package/dist/esm/serviceBusAtomManagementClient.js +181 -228
- package/dist/esm/serviceBusAtomManagementClient.js.map +1 -1
- package/dist/esm/serviceBusClient.js +31 -22
- package/dist/esm/serviceBusClient.js.map +1 -1
- package/dist/esm/serviceBusError.js +21 -1
- package/dist/esm/serviceBusError.js.map +1 -1
- package/dist/esm/serviceBusMessage.js +208 -13
- package/dist/esm/serviceBusMessage.js.map +1 -1
- package/dist/esm/serviceBusMessageBatch.js +32 -8
- package/dist/esm/serviceBusMessageBatch.js.map +1 -1
- package/dist/esm/serviceBusRuleManager.js +39 -15
- package/dist/esm/serviceBusRuleManager.js.map +1 -1
- package/dist/esm/session/messageSession.js +130 -25
- package/dist/esm/session/messageSession.js.map +1 -1
- package/dist/esm/util/atomXmlHelper.js +4 -5
- package/dist/esm/util/atomXmlHelper.js.map +1 -1
- package/dist/esm/util/compat/httpHeaders.js +1 -0
- package/dist/esm/util/compat/httpHeaders.js.map +1 -1
- package/dist/esm/util/constants.js +1 -1
- package/dist/esm/util/constants.js.map +1 -1
- package/dist/esm/util/runtimeInfo.js +1 -1
- package/dist/esm/util/runtimeInfo.js.map +1 -1
- package/dist/esm/util/sasServiceClientCredentials.js +8 -0
- package/dist/esm/util/sasServiceClientCredentials.js.map +1 -1
- package/dist/esm/util/semaphore.js +6 -2
- package/dist/esm/util/semaphore.js.map +1 -1
- package/dist/esm/util/utils.js +5 -7
- package/dist/esm/util/utils.js.map +1 -1
- package/dist/react-native/connectionContext.js +1 -2
- package/dist/react-native/connectionContext.js.map +1 -1
- package/dist/react-native/constructorHelpers.js +3 -4
- package/dist/react-native/constructorHelpers.js.map +1 -1
- package/dist/react-native/core/autoLockRenewer.js +9 -5
- package/dist/react-native/core/autoLockRenewer.js.map +1 -1
- package/dist/react-native/core/batchingReceiver.js +26 -18
- package/dist/react-native/core/batchingReceiver.js.map +1 -1
- package/dist/react-native/core/linkEntity.js +74 -13
- package/dist/react-native/core/linkEntity.js.map +1 -1
- package/dist/react-native/core/managementClient.js +48 -48
- package/dist/react-native/core/managementClient.js.map +1 -1
- package/dist/react-native/core/messageReceiver.js +41 -14
- package/dist/react-native/core/messageReceiver.js.map +1 -1
- package/dist/react-native/core/messageSender.js +33 -10
- package/dist/react-native/core/messageSender.js.map +1 -1
- package/dist/react-native/core/receiverHelper.js +3 -2
- package/dist/react-native/core/receiverHelper.js.map +1 -1
- package/dist/react-native/core/shared.js +11 -4
- package/dist/react-native/core/shared.js.map +1 -1
- package/dist/react-native/core/streamingReceiver.js +74 -43
- package/dist/react-native/core/streamingReceiver.js.map +1 -1
- package/dist/react-native/diagnostics/instrumentServiceBusMessage.js +16 -8
- package/dist/react-native/diagnostics/instrumentServiceBusMessage.js.map +1 -1
- package/dist/react-native/receivers/receiver.js +68 -23
- package/dist/react-native/receivers/receiver.js.map +1 -1
- package/dist/react-native/receivers/receiverCommon.js +36 -21
- package/dist/react-native/receivers/receiverCommon.js.map +1 -1
- package/dist/react-native/receivers/sessionReceiver.js +69 -29
- package/dist/react-native/receivers/sessionReceiver.js.map +1 -1
- package/dist/react-native/sender.js +33 -11
- package/dist/react-native/sender.js.map +1 -1
- package/dist/react-native/serializers/queueResourceSerializer.js +9 -1
- package/dist/react-native/serializers/queueResourceSerializer.js.map +1 -1
- package/dist/react-native/serializers/ruleResourceSerializer.js +1 -2
- package/dist/react-native/serializers/ruleResourceSerializer.js.map +1 -1
- package/dist/react-native/serviceBusAtomManagementClient.js +181 -228
- package/dist/react-native/serviceBusAtomManagementClient.js.map +1 -1
- package/dist/react-native/serviceBusClient.js +31 -22
- package/dist/react-native/serviceBusClient.js.map +1 -1
- package/dist/react-native/serviceBusError.js +21 -1
- package/dist/react-native/serviceBusError.js.map +1 -1
- package/dist/react-native/serviceBusMessage.js +208 -13
- package/dist/react-native/serviceBusMessage.js.map +1 -1
- package/dist/react-native/serviceBusMessageBatch.js +32 -8
- package/dist/react-native/serviceBusMessageBatch.js.map +1 -1
- package/dist/react-native/serviceBusRuleManager.js +39 -15
- package/dist/react-native/serviceBusRuleManager.js.map +1 -1
- package/dist/react-native/session/messageSession.js +130 -25
- package/dist/react-native/session/messageSession.js.map +1 -1
- package/dist/react-native/util/atomXmlHelper.js +4 -5
- package/dist/react-native/util/atomXmlHelper.js.map +1 -1
- package/dist/react-native/util/compat/httpHeaders.js +1 -0
- package/dist/react-native/util/compat/httpHeaders.js.map +1 -1
- package/dist/react-native/util/constants.js +1 -1
- package/dist/react-native/util/constants.js.map +1 -1
- package/dist/react-native/util/sasServiceClientCredentials.js +8 -0
- package/dist/react-native/util/sasServiceClientCredentials.js.map +1 -1
- package/dist/react-native/util/semaphore.js +6 -2
- package/dist/react-native/util/semaphore.js.map +1 -1
- package/dist/react-native/util/utils.js +5 -7
- package/dist/react-native/util/utils.js.map +1 -1
- package/package.json +38 -38
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receiverCommon.js","sourceRoot":"","sources":["../../../src/receivers/receiverCommon.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAMlC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAMjE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D,OAAO,EACL,SAAS,EACT,wBAAwB,EACxB,KAAK,EACL,SAAS,EACT,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AAExG;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAG1C;IACC,IACE,QAAQ;QACR,QAAQ,CAAC,cAAc,YAAY,QAAQ;QAC3C,QAAQ,CAAC,YAAY,YAAY,QAAQ,EACzC,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAiB,kBAAkB,CACvC,QAAqD,EACrD,OAA8B;;QAE9B,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,cAAM,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA,CAAC;YAE5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,oBAAM,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAC;QACpB,CAAC;IACH,CAAC;CAAA;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAA+C,EAC/C,cAAgC,cAAc;IAE9C,OAAO,KAAK,EAAE,IAAsB,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,0DAA0D,CAAC,CAAC;QACxF,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA8B,EAC9B,OAA0B,EAC1B,UAAkB,EAClB,YAAsC;IAEtC,cAAc,CAAC,OAAO,CACpB,2CAA2C,EAC3C,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,SAAS,CAClB,CAAC;IACF,MAAM,cAAc,GAAG,uCAAuC,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,SAAS,GAAsB,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,OAAO,aAAa,CAAC,QAAQ,CAC3B,6BAA6B,EAC7B,EAAE,EACF,GAAG,EAAE,CACH,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;QACpE,YAAY;KACb,CAAC,kBAEF,SAAS,IACN,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAElF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,OAA8B,EAC9B,OAA0B,EAC1B,UAAkB,EAClB,kBAA0F,EAC1F,YAAsC;IAEtC,cAAc,CAAC,OAAO,CACpB,2CAA2C,EAC3C,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,SAAS,CAClB,CAAC;IACF,MAAM,cAAc,GAAG,uCAAuC,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,SAAS,GAAsB,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,OAAO,aAAa,CAAC,QAAQ,CAC3B,4BAA4B,EAC5B,EAAE,EACF,GAAG,EAAE,CACH,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE;QACnE,kBAAkB;QAClB,YAAY;KACb,CAAC,kBAEF,SAAS,IACN,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAElF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,OAA8B,EAC9B,OAA0B,EAC1B,UAAkB,EAClB,kBAA0F,EAC1F,YAAsC;IAEtC,cAAc,CAAC,OAAO,CACpB,0CAA0C,EAC1C,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,SAAS,CAClB,CAAC;IACF,MAAM,cAAc,GAAG,uCAAuC,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,SAAS,GAAsB,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,OAAO,aAAa,CAAC,QAAQ,CAC3B,0BAA0B,EAC1B,EAAE,EACF,GAAG,EAAE,CACH,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE;QACjE,YAAY;QACZ,kBAAkB;KACnB,CAAC,kBAEF,SAAS,IACN,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAElF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA8B,EAC9B,OAA0B,EAC1B,UAAkB,EAClB,kBAEa,EACb,YAAsC;IAEtC,cAAc,CAAC,OAAO,CACpB,8CAA8C,EAC9C,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,SAAS,CAClB,CAAC;IAEF,MAAM,wBAAwB,qBACzB,kBAAkB,CACtB,CAAC;IAEF,uEAAuE;IACvE,OAAO,wBAAwB,CAAC,0BAA0B,CAAC;IAC3D,OAAO,wBAAwB,CAAC,gBAAgB,CAAC;IAEjD,MAAM,wBAAwB,GAA6B;QACzD,kBAAkB,EAAE,wBAAwB;QAC5C,gBAAgB,EAAE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,gBAAgB;QACtD,qBAAqB,EAAE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,0BAA0B;QACrE,YAAY;KACb,CAAC;IAEF,MAAM,cAAc,GAAG,uCAAuC,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,SAAS,GAAsB,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhF,OAAO,aAAa,CAAC,QAAQ,CAC3B,+BAA+B,EAC/B,EAAE,EACF,GAAG,EAAE,CACH,aAAa,CACX,OAAO,EACP,eAAe,CAAC,UAAU,EAC1B,OAAO,EACP,UAAU,EACV,wBAAwB,CACzB,kBAED,SAAS,IACN,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAElF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA8B,EAC9B,SAA0B,EAC1B,OAA0B,EAC1B,UAAkB,EAClB,OAAiC,EACjC,0BAAyD,sBAAsB;IAE/E,OAAO,KAAK,CAAC;QACX,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,SAAS,EAAE,GAAG,EAAE;YACd,OAAO,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACnF,CAAC;QACD,aAAa,EAAE,kBAAkB,CAAC,iBAAiB;QACnD,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;QACjC,YAAY,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY;KACpC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAA8B,EAC9B,SAA0B,EAC1B,OAA0B,EAC1B,UAAkB,EAClB,OAAiC;IAEjC,MAAM,iBAAiB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjD,MAAM,QAAQ,GAAG,iBAAiB;QAChC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAChF,MAAM,kBAAkB,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC;IAE1C,IAAI,KAAwB,CAAC;IAC7B,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QACpC,KAAK,GAAG,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC;SAAM,IACL,CAAC,iBAAiB;QAClB,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACjC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAC5B,CAAC;QACD,KAAK,GAAG,wBAAwB,CAAC;YAC/B,WAAW,EACT,aAAa,SAAS,2DAA2D;gBACjF,8BAA8B;YAChC,SAAS,EAAE,wBAAwB,CAAC,oBAAoB;SACzD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,cAAc,CAAC,QAAQ,CACrB,KAAK,EACL,6DAA6D,EAC7D,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,SAAS,CAClB,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;IAED,yCAAyC;IACzC,mGAAmG;IACnG,gJAAgJ;IAChJ,IAAI,iBAAiB,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC9F,OAAO,OAAO;aACX,mBAAmB,CAAC,UAAU,CAAC;aAC/B,uBAAuB,CAAC,OAAO,CAAC,SAAU,EAAE,SAAS,kCACjD,OAAO,KACV,kBAAkB,EAClB,SAAS,EAAE,OAAO,CAAC,SAAS,IAC5B;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,MAAM,wBAAwB,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,QAAS,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACxE,MAAM,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAUD;;GAEG;AACH,SAAS,cAAc,CACrB,YAAoB,EACpB,cAAsB,EACtB,iBAAyB,EACzB,IAAe;IAEf,IAAI,IAAI,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,gBAAgB,GACpB,cAAc,GAAG,GAAG;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC;QAE5E,MAAM,cAAc,GAAG,gBAAgB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAyB,EACzB,UAAwB,KAAK;IAE7B,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC;IAC3B,CAAC;IACD,kCAAkC;IAClC,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,IAAI,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QAC9F,MAAM,CAAC,YAAY,CAAC,cAAc,GAAG,SAAS,CAAC,uCAAuC,CAAC;IACzF,CAAC;IACD;IACE,kCAAkC;IAClC,MAAM,CAAC,YAAY,CAAC,iBAAiB,IAAI,SAAS;QAClD,MAAM,CAAC,YAAY,CAAC,iBAAiB,GAAG,CAAC,EACzC,CAAC;QACD,MAAM,CAAC,YAAY,CAAC,iBAAiB,GAAG,SAAS,CAAC,sCAAsC,CAAC;IAC3F,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;IAC7C,CAAC;IAED,qFAAqF;IACrF,gCAAgC;IAChC,OAAO,IAAI,EAAE,CAAC;QACZ,EAAE,cAAc,CAAC;QAEjB,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,2DAA2D;YAC3D,4EAA4E;YAC5E,sBAAsB;YACtB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC;gBACvE,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,8EAA8E;YAC9E,yFAAyF;YACzF,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,GAAG,EACH,GAAG,IAAI,CAAC,SAAS,gCAAgC,cAAc,6CAA6C,EAC5G,IAAI,CAAC,WAAW,CACjB,CAAC;YAEF,MAAM,SAAS,GAAG,cAAc,CAC9B,cAAc,EACd,MAAM,CAAC,YAAY,CAAC,cAAc,EAClC,MAAM,CAAC,YAAY,CAAC,iBAAiB,EACrC,MAAM,CAAC,YAAY,CAAC,IAAI,CACzB,CAAC;YACF,MAAM,CAAC,OAAO,CACZ,6CAA6C,EAC7C,MAAM,CAAC,YAAY,EACnB,SAAS,EACT,MAAM,CAAC,aAAa,CACrB,CAAC;YACF,MAAM,KAAK,CAAC,SAAS,EAAE;gBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,aAAa,EAAE,6CAA6C;aAC7D,CAAC,CAAC;YAEH,SAAS;QACX,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { MessageHandlers, ProcessErrorArgs } from \"../models.js\";\nimport type { ServiceBusReceiver } from \"./receiver.js\";\nimport type { OperationOptionsBase } from \"../modelsToBeSharedWithEventHubs.js\";\nimport type { createServiceBusLogger, ServiceBusLogger } from \"../log.js\";\nimport { logger, receiverLogger } from \"../log.js\";\nimport { translateServiceBusError } from \"../serviceBusError.js\";\nimport type {\n DeadLetterOptions,\n ServiceBusMessageImpl,\n ServiceBusReceivedMessage,\n} from \"../serviceBusMessage.js\";\nimport { DispositionType } from \"../serviceBusMessage.js\";\nimport type { DispositionStatusOptions } from \"../core/managementClient.js\";\nimport type { ConnectionContext } from \"../connectionContext.js\";\nimport type { RetryConfig, RetryOptions } from \"@azure/core-amqp\";\nimport {\n Constants,\n ErrorNameConditionMapper,\n retry,\n RetryMode,\n RetryOperationType,\n} from \"@azure/core-amqp\";\nimport { MessageAlreadySettled } from \"../util/errors.js\";\nimport { delay, isDefined } from \"@azure/core-util\";\nimport type { TracingSpanLink } from \"@azure/core-tracing\";\nimport { toSpanOptions, tracingClient } from \"../diagnostics/tracing.js\";\nimport { extractSpanContextFromServiceBusMessage } from \"../diagnostics/instrumentServiceBusMessage.js\";\n\n/**\n * @internal\n */\nexport function assertValidMessageHandlers(handlers: {\n processMessage?: unknown;\n processError?: unknown;\n}): void {\n if (\n handlers &&\n handlers.processMessage instanceof Function &&\n handlers.processError instanceof Function\n ) {\n return;\n }\n\n throw new TypeError('Invalid \"MessageHandlers\" provided.');\n}\n\n/**\n * @internal\n */\nexport async function* getMessageIterator(\n receiver: Pick<ServiceBusReceiver, \"receiveMessages\">,\n options?: OperationOptionsBase,\n): AsyncIterableIterator<ServiceBusReceivedMessage> {\n while (true) {\n const messages = await receiver.receiveMessages(1, options);\n\n if (messages.length === 0) {\n continue;\n }\n\n yield messages[0];\n }\n}\n\n/**\n * @internal\n */\nexport function wrapProcessErrorHandler(\n handlers: Pick<MessageHandlers, \"processError\">,\n loggerParam: ServiceBusLogger = receiverLogger,\n): MessageHandlers[\"processError\"] {\n return async (args: ProcessErrorArgs) => {\n try {\n args.error = translateServiceBusError(args.error);\n await handlers.processError(args);\n } catch (err: any) {\n loggerParam.logError(err, `An error was thrown from the user's processError handler`);\n }\n };\n}\n\n/**\n * @internal\n *\n */\nexport function completeMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Completing the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n return tracingClient.withSpan(\n \"ServicebusReceiver.complete\",\n {},\n () =>\n settleMessage(message, DispositionType.complete, context, entityPath, {\n retryOptions,\n }),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n *\n */\nexport function abandonMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n propertiesToModify: { [key: string]: number | boolean | string | Date | null } | undefined,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Abandoning the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n return tracingClient.withSpan(\n \"ServicebusReceiver.abandon\",\n {},\n () =>\n settleMessage(message, DispositionType.abandon, context, entityPath, {\n propertiesToModify,\n retryOptions,\n }),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n *\n */\nexport function deferMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n propertiesToModify: { [key: string]: number | boolean | string | Date | null } | undefined,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Deferring the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n return tracingClient.withSpan(\n \"ServiceBusReceiver.defer\",\n {},\n () =>\n settleMessage(message, DispositionType.defer, context, entityPath, {\n retryOptions,\n propertiesToModify,\n }),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n *\n */\nexport function deadLetterMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n propertiesToModify:\n | (DeadLetterOptions & { [key: string]: number | boolean | string | Date | null })\n | undefined,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Deadlettering the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n\n const actualPropertiesToModify: Partial<DeadLetterOptions> = {\n ...propertiesToModify,\n };\n\n // these two fields are handled specially and don't need to be in here.\n delete actualPropertiesToModify.deadLetterErrorDescription;\n delete actualPropertiesToModify.deadLetterReason;\n\n const dispositionStatusOptions: DispositionStatusOptions = {\n propertiesToModify: actualPropertiesToModify,\n deadLetterReason: propertiesToModify?.deadLetterReason,\n deadLetterDescription: propertiesToModify?.deadLetterErrorDescription,\n retryOptions,\n };\n\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n\n return tracingClient.withSpan(\n \"ServiceBusReceiver.deadLetter\",\n {},\n () =>\n settleMessage(\n message,\n DispositionType.deadletter,\n context,\n entityPath,\n dispositionStatusOptions,\n ),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n */\nexport function settleMessage(\n message: ServiceBusMessageImpl,\n operation: DispositionType,\n context: ConnectionContext,\n entityPath: string,\n options: DispositionStatusOptions,\n _settleMessageOperation: typeof settleMessageOperation = settleMessageOperation,\n): Promise<void> {\n return retry({\n connectionId: context.connectionId,\n operation: () => {\n return _settleMessageOperation(message, operation, context, entityPath, options);\n },\n operationType: RetryOperationType.messageSettlement,\n abortSignal: options?.abortSignal,\n retryOptions: options?.retryOptions,\n });\n}\n\n/**\n * @internal\n *\n * NOTE: it's tempting to make this method non-async. However, doing so makes it too easy\n * to throw exceptions that will not be \"catchable\" by people chaining to the returned Promise\n * since we can throw exceptions outside of the Promise's scope.\n */\nexport async function settleMessageOperation(\n message: ServiceBusMessageImpl,\n operation: DispositionType,\n context: ConnectionContext,\n entityPath: string,\n options: DispositionStatusOptions,\n): Promise<void> {\n const isDeferredMessage = !message.delivery.link;\n const receiver = isDeferredMessage\n ? undefined\n : context.getReceiverFromCache(message.delivery.link.name, message.sessionId);\n const associatedLinkName = receiver?.name;\n\n let error: Error | undefined;\n if (message.delivery.remote_settled) {\n error = new Error(MessageAlreadySettled);\n } else if (\n !isDeferredMessage &&\n (!receiver || !receiver.isOpen()) &&\n isDefined(message.sessionId)\n ) {\n error = translateServiceBusError({\n description:\n `Failed to ${operation} the message as the AMQP link with which the message was ` +\n `received is no longer alive.`,\n condition: ErrorNameConditionMapper.SessionLockLostError,\n });\n }\n\n if (error) {\n receiverLogger.logError(\n error,\n \"[%s] An error occurred when settling a message with id '%s'\",\n context.connectionId,\n message.messageId,\n );\n throw error;\n }\n\n // Message Settlement with managementLink\n // 1. If the received message is deferred as such messages can only be settled using managementLink\n // 2. If the associated receiver link is not available. This does not apply to messages from sessions as we need a lock on the session to do so.\n if (isDeferredMessage || ((!receiver || !receiver.isOpen()) && !isDefined(message.sessionId))) {\n return context\n .getManagementClient(entityPath)\n .updateDispositionStatus(message.lockToken!, operation, {\n ...options,\n associatedLinkName,\n sessionId: message.sessionId,\n })\n .catch((err) => {\n throw translateServiceBusError(err);\n });\n }\n\n return receiver!.settleMessage(message, operation, options).catch((err) => {\n throw translateServiceBusError(err);\n });\n}\n\n/** @internal */\nexport interface RetryForeverArgs<T> {\n retryConfig: RetryConfig<T>;\n onError: (err: Error) => void;\n logger: ReturnType<typeof createServiceBusLogger>;\n logPrefix: string;\n}\n\n/**\n * Calculates delay between retries, in milliseconds.\n */\nfunction calculateDelay(\n attemptCount: number,\n retryDelayInMs: number,\n maxRetryDelayInMs: number,\n mode: RetryMode,\n): number {\n if (mode === RetryMode.Exponential) {\n const boundedRandDelta =\n retryDelayInMs * 0.8 +\n Math.floor(Math.random() * (retryDelayInMs * 1.2 - retryDelayInMs * 0.8));\n\n const incrementDelta = boundedRandDelta * (Math.pow(2, attemptCount) - 1);\n return Math.min(incrementDelta, maxRetryDelayInMs);\n }\n\n return retryDelayInMs;\n}\n\n/**\n * Retry infinitely until success, reporting in between retry attempts.\n *\n * This function will only stop retrying if:\n * - args.retryConfig.operation resolves successfully\n * - args.retryConfig.operation rejects with an `AbortError`\n *\n * @internal\n */\nexport async function retryForever<T>(\n args: RetryForeverArgs<T>,\n retryFn: typeof retry = retry,\n): Promise<T> {\n let numRetryCycles = 0;\n const config = args.retryConfig;\n if (!config.retryOptions) {\n config.retryOptions = {};\n }\n // eslint-disable-next-line eqeqeq\n if (config.retryOptions.retryDelayInMs == undefined || config.retryOptions.retryDelayInMs < 0) {\n config.retryOptions.retryDelayInMs = Constants.defaultDelayBetweenOperationRetriesInMs;\n }\n if (\n // eslint-disable-next-line eqeqeq\n config.retryOptions.maxRetryDelayInMs == undefined ||\n config.retryOptions.maxRetryDelayInMs < 0\n ) {\n config.retryOptions.maxRetryDelayInMs = Constants.defaultMaxDelayForExponentialRetryInMs;\n }\n if (!config.retryOptions.mode) {\n config.retryOptions.mode = RetryMode.Fixed;\n }\n\n // The retries are broken up into cycles, giving the user some control over how often\n // we actually attempt to retry.\n while (true) {\n ++numRetryCycles;\n\n try {\n return await retryFn(args.retryConfig);\n } catch (err: any) {\n // if the user aborts the operation we're immediately done.\n // AbortError is also thrown by linkEntity.init() if the connection has been\n // permanently closed.\n if (err.name === \"AbortError\") {\n logger.warning(`${args.logPrefix} AbortError caught, ending retries.`);\n throw err;\n }\n\n // we only report the error here - this avoids spamming the user with too many\n // redundant reports of errors while still providing them incremental status on failures.\n try {\n args.onError(err);\n } catch (error: any) {\n logger.error(\"args.onerror has thrown\", error);\n }\n\n args.logger.logError(\n err,\n `${args.logPrefix} Error thrown in retry cycle ${numRetryCycles}, restarting retry cycle with retry options`,\n args.retryConfig,\n );\n\n const delayInMs = calculateDelay(\n numRetryCycles,\n config.retryOptions.retryDelayInMs,\n config.retryOptions.maxRetryDelayInMs,\n config.retryOptions.mode,\n );\n logger.verbose(\n \"[%s] Sleeping for %d milliseconds for '%s'.\",\n config.connectionId,\n delayInMs,\n config.operationType,\n );\n await delay(delayInMs, {\n abortSignal: config.abortSignal,\n abortErrorMsg: \"Retry cycle has been cancelled by the user.\",\n });\n\n continue;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"receiverCommon.js","sourceRoot":"","sources":["../../../src/receivers/receiverCommon.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { MessageHandlers, ProcessErrorArgs } from \"../models.js\";\nimport type { ServiceBusReceiver } from \"./receiver.js\";\nimport type { OperationOptionsBase } from \"../modelsToBeSharedWithEventHubs.js\";\nimport type { createServiceBusLogger, ServiceBusLogger } from \"../log.js\";\nimport { logger, receiverLogger } from \"../log.js\";\nimport { translateServiceBusError } from \"../serviceBusError.js\";\nimport type {\n DeadLetterOptions,\n ServiceBusMessageImpl,\n ServiceBusReceivedMessage,\n} from \"../serviceBusMessage.js\";\nimport { DispositionType } from \"../serviceBusMessage.js\";\nimport type { DispositionStatusOptions } from \"../core/managementClient.js\";\nimport type { ConnectionContext } from \"../connectionContext.js\";\nimport type { RetryConfig, RetryOptions } from \"@azure/core-amqp\";\nimport {\n Constants,\n ErrorNameConditionMapper,\n retry,\n RetryMode,\n RetryOperationType,\n} from \"@azure/core-amqp\";\nimport { MessageAlreadySettled } from \"../util/errors.js\";\nimport { delay, isDefined } from \"@azure/core-util\";\nimport type { TracingSpanLink } from \"@azure/core-tracing\";\nimport { toSpanOptions, tracingClient } from \"../diagnostics/tracing.js\";\nimport { extractSpanContextFromServiceBusMessage } from \"../diagnostics/instrumentServiceBusMessage.js\";\n\n/**\n * @internal\n */\nexport function assertValidMessageHandlers(handlers: {\n processMessage?: unknown;\n processError?: unknown;\n}): void {\n if (\n handlers &&\n handlers.processMessage instanceof Function &&\n handlers.processError instanceof Function\n ) {\n return;\n }\n\n throw new TypeError('Invalid \"MessageHandlers\" provided.');\n}\n\n/**\n * @internal\n */\nexport async function* getMessageIterator(\n receiver: Pick<ServiceBusReceiver, \"receiveMessages\">,\n options?: OperationOptionsBase,\n): AsyncIterableIterator<ServiceBusReceivedMessage> {\n while (true) {\n const messages = await receiver.receiveMessages(1, options);\n\n if (messages.length === 0) {\n continue;\n }\n\n yield messages[0];\n }\n}\n\n/**\n * @internal\n */\nexport function wrapProcessErrorHandler(\n handlers: Pick<MessageHandlers, \"processError\">,\n loggerParam: ServiceBusLogger = receiverLogger,\n): MessageHandlers[\"processError\"] {\n return async (args: ProcessErrorArgs) => {\n try {\n args.error = translateServiceBusError(args.error);\n await handlers.processError(args);\n } catch (err: any) {\n loggerParam.logError(err, `An error was thrown from the user's processError handler`);\n }\n };\n}\n\n/**\n * @internal\n *\n */\nexport function completeMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Completing the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n return tracingClient.withSpan(\n \"ServicebusReceiver.complete\",\n {},\n () =>\n settleMessage(message, DispositionType.complete, context, entityPath, {\n retryOptions,\n }),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n *\n */\nexport function abandonMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n propertiesToModify: { [key: string]: number | boolean | string | Date | null } | undefined,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Abandoning the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n return tracingClient.withSpan(\n \"ServicebusReceiver.abandon\",\n {},\n () =>\n settleMessage(message, DispositionType.abandon, context, entityPath, {\n propertiesToModify,\n retryOptions,\n }),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n *\n */\nexport function deferMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n propertiesToModify: { [key: string]: number | boolean | string | Date | null } | undefined,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Deferring the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n return tracingClient.withSpan(\n \"ServiceBusReceiver.defer\",\n {},\n () =>\n settleMessage(message, DispositionType.defer, context, entityPath, {\n retryOptions,\n propertiesToModify,\n }),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n *\n */\nexport function deadLetterMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n propertiesToModify:\n | (DeadLetterOptions & { [key: string]: number | boolean | string | Date | null })\n | undefined,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Deadlettering the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n\n const actualPropertiesToModify: Partial<DeadLetterOptions> = {\n ...propertiesToModify,\n };\n\n // these two fields are handled specially and don't need to be in here.\n delete actualPropertiesToModify.deadLetterErrorDescription;\n delete actualPropertiesToModify.deadLetterReason;\n\n const dispositionStatusOptions: DispositionStatusOptions = {\n propertiesToModify: actualPropertiesToModify,\n deadLetterReason: propertiesToModify?.deadLetterReason,\n deadLetterDescription: propertiesToModify?.deadLetterErrorDescription,\n retryOptions,\n };\n\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n\n return tracingClient.withSpan(\n \"ServiceBusReceiver.deadLetter\",\n {},\n () =>\n settleMessage(\n message,\n DispositionType.deadletter,\n context,\n entityPath,\n dispositionStatusOptions,\n ),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n */\nexport function settleMessage(\n message: ServiceBusMessageImpl,\n operation: DispositionType,\n context: ConnectionContext,\n entityPath: string,\n options: DispositionStatusOptions,\n _settleMessageOperation: typeof settleMessageOperation = settleMessageOperation,\n): Promise<void> {\n return retry({\n connectionId: context.connectionId,\n operation: () => {\n return _settleMessageOperation(message, operation, context, entityPath, options);\n },\n operationType: RetryOperationType.messageSettlement,\n abortSignal: options?.abortSignal,\n retryOptions: options?.retryOptions,\n });\n}\n\n/**\n * @internal\n *\n * NOTE: it's tempting to make this method non-async. However, doing so makes it too easy\n * to throw exceptions that will not be \"catchable\" by people chaining to the returned Promise\n * since we can throw exceptions outside of the Promise's scope.\n */\nexport async function settleMessageOperation(\n message: ServiceBusMessageImpl,\n operation: DispositionType,\n context: ConnectionContext,\n entityPath: string,\n options: DispositionStatusOptions,\n): Promise<void> {\n const isDeferredMessage = !message.delivery.link;\n const receiver = isDeferredMessage\n ? undefined\n : context.getReceiverFromCache(message.delivery.link.name, message.sessionId);\n const associatedLinkName = receiver?.name;\n\n let error: Error | undefined;\n if (message.delivery.remote_settled) {\n error = new Error(MessageAlreadySettled);\n } else if (\n !isDeferredMessage &&\n (!receiver || !receiver.isOpen()) &&\n isDefined(message.sessionId)\n ) {\n error = translateServiceBusError({\n description:\n `Failed to ${operation} the message as the AMQP link with which the message was ` +\n `received is no longer alive.`,\n condition: ErrorNameConditionMapper.SessionLockLostError,\n });\n }\n\n if (error) {\n receiverLogger.logError(\n error,\n \"[%s] An error occurred when settling a message with id '%s'\",\n context.connectionId,\n message.messageId,\n );\n throw error;\n }\n\n // Message Settlement with managementLink\n // 1. If the received message is deferred as such messages can only be settled using managementLink\n // 2. If the associated receiver link is not available. This does not apply to messages from sessions as we need a lock on the session to do so.\n if (isDeferredMessage || ((!receiver || !receiver.isOpen()) && !isDefined(message.sessionId))) {\n return context\n .getManagementClient(entityPath)\n .updateDispositionStatus(message.lockToken!, operation, {\n ...options,\n associatedLinkName,\n sessionId: message.sessionId,\n })\n .catch((err) => {\n throw translateServiceBusError(err);\n });\n }\n\n return receiver!.settleMessage(message, operation, options).catch((err) => {\n throw translateServiceBusError(err);\n });\n}\n\n/** @internal */\nexport interface RetryForeverArgs<T> {\n retryConfig: RetryConfig<T>;\n onError: (err: Error) => void;\n logger: ReturnType<typeof createServiceBusLogger>;\n logPrefix: string;\n}\n\n/**\n * Calculates delay between retries, in milliseconds.\n */\nfunction calculateDelay(\n attemptCount: number,\n retryDelayInMs: number,\n maxRetryDelayInMs: number,\n mode: RetryMode,\n): number {\n if (mode === RetryMode.Exponential) {\n const boundedRandDelta =\n retryDelayInMs * 0.8 +\n Math.floor(Math.random() * (retryDelayInMs * 1.2 - retryDelayInMs * 0.8));\n\n const incrementDelta = boundedRandDelta * (Math.pow(2, attemptCount) - 1);\n return Math.min(incrementDelta, maxRetryDelayInMs);\n }\n\n return retryDelayInMs;\n}\n\n/**\n * Retry infinitely until success, reporting in between retry attempts.\n *\n * This function will only stop retrying if:\n * - args.retryConfig.operation resolves successfully\n * - args.retryConfig.operation rejects with an `AbortError`\n *\n * @internal\n */\nexport async function retryForever<T>(\n args: RetryForeverArgs<T>,\n retryFn: typeof retry = retry,\n): Promise<T> {\n let numRetryCycles = 0;\n const config = args.retryConfig;\n if (!config.retryOptions) {\n config.retryOptions = {};\n }\n // eslint-disable-next-line eqeqeq\n if (config.retryOptions.retryDelayInMs == undefined || config.retryOptions.retryDelayInMs < 0) {\n config.retryOptions.retryDelayInMs = Constants.defaultDelayBetweenOperationRetriesInMs;\n }\n if (\n // eslint-disable-next-line eqeqeq\n config.retryOptions.maxRetryDelayInMs == undefined ||\n config.retryOptions.maxRetryDelayInMs < 0\n ) {\n config.retryOptions.maxRetryDelayInMs = Constants.defaultMaxDelayForExponentialRetryInMs;\n }\n if (!config.retryOptions.mode) {\n config.retryOptions.mode = RetryMode.Fixed;\n }\n\n // The retries are broken up into cycles, giving the user some control over how often\n // we actually attempt to retry.\n while (true) {\n ++numRetryCycles;\n\n try {\n return await retryFn(args.retryConfig);\n } catch (err: any) {\n // if the user aborts the operation we're immediately done.\n // AbortError is also thrown by linkEntity.init() if the connection has been\n // permanently closed.\n if (err.name === \"AbortError\") {\n logger.warning(`${args.logPrefix} AbortError caught, ending retries.`);\n throw err;\n }\n\n // we only report the error here - this avoids spamming the user with too many\n // redundant reports of errors while still providing them incremental status on failures.\n try {\n args.onError(err);\n } catch (error: any) {\n logger.error(\"args.onerror has thrown\", error);\n }\n\n args.logger.logError(\n err,\n `${args.logPrefix} Error thrown in retry cycle ${numRetryCycles}, restarting retry cycle with retry options`,\n args.retryConfig,\n );\n\n const delayInMs = calculateDelay(\n numRetryCycles,\n config.retryOptions.retryDelayInMs,\n config.retryOptions.maxRetryDelayInMs,\n config.retryOptions.mode,\n );\n logger.verbose(\n \"[%s] Sleeping for %d milliseconds for '%s'.\",\n config.connectionId,\n delayInMs,\n config.operationType,\n );\n await delay(delayInMs, {\n abortSignal: config.abortSignal,\n abortErrorMsg: \"Retry cycle has been cancelled by the user.\",\n });\n\n continue;\n }\n }\n}\n"]}
|
|
@@ -12,6 +12,19 @@ import { translateServiceBusError } from "../serviceBusError.js";
|
|
|
12
12
|
* @internal
|
|
13
13
|
*/
|
|
14
14
|
export class ServiceBusSessionReceiverImpl {
|
|
15
|
+
_messageSession;
|
|
16
|
+
_context;
|
|
17
|
+
entityPath;
|
|
18
|
+
receiveMode;
|
|
19
|
+
_skipParsingBodyAsJson;
|
|
20
|
+
_skipConvertingDate;
|
|
21
|
+
_retryOptions;
|
|
22
|
+
sessionId;
|
|
23
|
+
identifier;
|
|
24
|
+
/**
|
|
25
|
+
* Denotes if close() was called on this receiver
|
|
26
|
+
*/
|
|
27
|
+
_isClosed = false;
|
|
15
28
|
get logPrefix() {
|
|
16
29
|
return `[${this._context.connectionId}|session:${this.entityPath}]`;
|
|
17
30
|
}
|
|
@@ -28,10 +41,6 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
28
41
|
this._skipParsingBodyAsJson = _skipParsingBodyAsJson;
|
|
29
42
|
this._skipConvertingDate = _skipConvertingDate;
|
|
30
43
|
this._retryOptions = _retryOptions;
|
|
31
|
-
/**
|
|
32
|
-
* Denotes if close() was called on this receiver
|
|
33
|
-
*/
|
|
34
|
-
this._isClosed = false;
|
|
35
44
|
throwErrorIfConnectionClosed(_context);
|
|
36
45
|
this.sessionId = _messageSession.sessionId;
|
|
37
46
|
this.identifier = _messageSession.identifier;
|
|
@@ -98,11 +107,16 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
98
107
|
*/
|
|
99
108
|
async renewSessionLock(options) {
|
|
100
109
|
this._throwIfReceiverOrConnectionClosed();
|
|
101
|
-
return tracingClient.withSpan("ServiceBusSessionReceiver.renewSessionLock", options
|
|
110
|
+
return tracingClient.withSpan("ServiceBusSessionReceiver.renewSessionLock", options ?? {}, (updatedOptions) => {
|
|
102
111
|
const renewSessionLockOperationPromise = async () => {
|
|
103
112
|
this._messageSession.sessionLockedUntilUtc = await this._context
|
|
104
113
|
.getManagementClient(this.entityPath)
|
|
105
|
-
.renewSessionLock(this.sessionId,
|
|
114
|
+
.renewSessionLock(this.sessionId, {
|
|
115
|
+
...updatedOptions,
|
|
116
|
+
associatedLinkName: this._messageSession.name,
|
|
117
|
+
requestName: "renewSessionLock",
|
|
118
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
119
|
+
});
|
|
106
120
|
return this._messageSession.sessionLockedUntilUtc;
|
|
107
121
|
};
|
|
108
122
|
const config = {
|
|
@@ -110,7 +124,7 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
110
124
|
connectionId: this._context.connectionId,
|
|
111
125
|
operationType: RetryOperationType.management,
|
|
112
126
|
retryOptions: this._retryOptions,
|
|
113
|
-
abortSignal: options
|
|
127
|
+
abortSignal: options?.abortSignal,
|
|
114
128
|
};
|
|
115
129
|
return retry(config);
|
|
116
130
|
});
|
|
@@ -125,11 +139,16 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
125
139
|
*/
|
|
126
140
|
async setSessionState(state, options = {}) {
|
|
127
141
|
this._throwIfReceiverOrConnectionClosed();
|
|
128
|
-
return tracingClient.withSpan("ServiceBusSessionReceiver.setSessionState", options
|
|
142
|
+
return tracingClient.withSpan("ServiceBusSessionReceiver.setSessionState", options ?? {}, (updatedOptions) => {
|
|
129
143
|
const setSessionStateOperationPromise = async () => {
|
|
130
144
|
await this._context
|
|
131
145
|
.getManagementClient(this.entityPath)
|
|
132
|
-
.setSessionState(this.sessionId, state,
|
|
146
|
+
.setSessionState(this.sessionId, state, {
|
|
147
|
+
...updatedOptions,
|
|
148
|
+
associatedLinkName: this._messageSession.name,
|
|
149
|
+
requestName: "setState",
|
|
150
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
151
|
+
});
|
|
133
152
|
return;
|
|
134
153
|
};
|
|
135
154
|
const config = {
|
|
@@ -137,7 +156,7 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
137
156
|
connectionId: this._context.connectionId,
|
|
138
157
|
operationType: RetryOperationType.management,
|
|
139
158
|
retryOptions: this._retryOptions,
|
|
140
|
-
abortSignal: options
|
|
159
|
+
abortSignal: options?.abortSignal,
|
|
141
160
|
};
|
|
142
161
|
return retry(config);
|
|
143
162
|
});
|
|
@@ -152,26 +171,37 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
152
171
|
*/
|
|
153
172
|
async getSessionState(options = {}) {
|
|
154
173
|
this._throwIfReceiverOrConnectionClosed();
|
|
155
|
-
return tracingClient.withSpan("ServiceBusSessionReceiver.getSessionState", options
|
|
174
|
+
return tracingClient.withSpan("ServiceBusSessionReceiver.getSessionState", options ?? {}, (updatedOptions) => {
|
|
156
175
|
const getSessionStateOperationPromise = async () => {
|
|
157
176
|
return this._context
|
|
158
177
|
.getManagementClient(this.entityPath)
|
|
159
|
-
.getSessionState(this.sessionId,
|
|
178
|
+
.getSessionState(this.sessionId, {
|
|
179
|
+
...updatedOptions,
|
|
180
|
+
associatedLinkName: this._messageSession.name,
|
|
181
|
+
requestName: "getState",
|
|
182
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
183
|
+
});
|
|
160
184
|
};
|
|
161
185
|
const config = {
|
|
162
186
|
operation: getSessionStateOperationPromise,
|
|
163
187
|
connectionId: this._context.connectionId,
|
|
164
188
|
operationType: RetryOperationType.management,
|
|
165
189
|
retryOptions: this._retryOptions,
|
|
166
|
-
abortSignal: options
|
|
190
|
+
abortSignal: options?.abortSignal,
|
|
167
191
|
};
|
|
168
192
|
return retry(config);
|
|
169
193
|
});
|
|
170
194
|
}
|
|
171
195
|
async peekMessages(maxMessageCount, options = {}) {
|
|
172
|
-
var _a;
|
|
173
196
|
this._throwIfReceiverOrConnectionClosed();
|
|
174
|
-
const managementRequestOptions =
|
|
197
|
+
const managementRequestOptions = {
|
|
198
|
+
...options,
|
|
199
|
+
associatedLinkName: this._messageSession.name,
|
|
200
|
+
requestName: "peekMessages",
|
|
201
|
+
timeoutInMs: this._retryOptions?.timeoutInMs,
|
|
202
|
+
skipParsingBodyAsJson: this._skipParsingBodyAsJson,
|
|
203
|
+
skipConvertingDate: this._skipConvertingDate,
|
|
204
|
+
};
|
|
175
205
|
// omitMessageBody is available at runtime, but only exported in experimental subpath
|
|
176
206
|
const { fromSequenceNumber, omitMessageBody } = options;
|
|
177
207
|
const peekOperationPromise = async () => {
|
|
@@ -191,7 +221,7 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
191
221
|
connectionId: this._context.connectionId,
|
|
192
222
|
operationType: RetryOperationType.management,
|
|
193
223
|
retryOptions: this._retryOptions,
|
|
194
|
-
abortSignal: options
|
|
224
|
+
abortSignal: options?.abortSignal,
|
|
195
225
|
};
|
|
196
226
|
return retry(config);
|
|
197
227
|
}
|
|
@@ -205,7 +235,14 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
205
235
|
const receiveDeferredMessagesOperationPromise = async () => {
|
|
206
236
|
const deferredMessages = await this._context
|
|
207
237
|
.getManagementClient(this.entityPath)
|
|
208
|
-
.receiveDeferredMessages(deferredSequenceNumbers, this.receiveMode, this.sessionId,
|
|
238
|
+
.receiveDeferredMessages(deferredSequenceNumbers, this.receiveMode, this.sessionId, {
|
|
239
|
+
...options,
|
|
240
|
+
associatedLinkName: this._messageSession.name,
|
|
241
|
+
requestName: "receiveDeferredMessages",
|
|
242
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
243
|
+
skipParsingBodyAsJson: this._skipParsingBodyAsJson,
|
|
244
|
+
skipConvertingDate: this._skipConvertingDate,
|
|
245
|
+
});
|
|
209
246
|
return deferredMessages;
|
|
210
247
|
};
|
|
211
248
|
const config = {
|
|
@@ -213,7 +250,7 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
213
250
|
connectionId: this._context.connectionId,
|
|
214
251
|
operationType: RetryOperationType.management,
|
|
215
252
|
retryOptions: this._retryOptions,
|
|
216
|
-
abortSignal: options
|
|
253
|
+
abortSignal: options?.abortSignal,
|
|
217
254
|
};
|
|
218
255
|
return retry(config);
|
|
219
256
|
}
|
|
@@ -222,28 +259,33 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
222
259
|
const deleteMessagesOperationPromise = () => {
|
|
223
260
|
return this._context
|
|
224
261
|
.getManagementClient(this.entityPath)
|
|
225
|
-
.deleteMessages(options.maxMessageCount, options
|
|
262
|
+
.deleteMessages(options.maxMessageCount, options?.beforeEnqueueTime, this.sessionId, {
|
|
263
|
+
...options,
|
|
264
|
+
associatedLinkName: this._messageSession.name,
|
|
265
|
+
requestName: "deleteMessages",
|
|
266
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
267
|
+
});
|
|
226
268
|
};
|
|
227
269
|
const config = {
|
|
228
270
|
operation: deleteMessagesOperationPromise,
|
|
229
271
|
connectionId: this._context.connectionId,
|
|
230
272
|
operationType: RetryOperationType.management,
|
|
231
273
|
retryOptions: this._retryOptions,
|
|
232
|
-
abortSignal: options
|
|
274
|
+
abortSignal: options?.abortSignal,
|
|
233
275
|
};
|
|
234
276
|
return retry(config);
|
|
235
277
|
}
|
|
236
278
|
async purgeMessages(options) {
|
|
237
279
|
let deletedCount = await this.deleteMessages({
|
|
238
280
|
maxMessageCount: MaxDeleteMessageCount,
|
|
239
|
-
beforeEnqueueTime: options
|
|
281
|
+
beforeEnqueueTime: options?.beforeEnqueueTime,
|
|
240
282
|
});
|
|
241
283
|
if (deletedCount === MaxDeleteMessageCount) {
|
|
242
284
|
let batchCount = MaxDeleteMessageCount;
|
|
243
285
|
while (batchCount === MaxDeleteMessageCount) {
|
|
244
286
|
batchCount = await this.deleteMessages({
|
|
245
287
|
maxMessageCount: MaxDeleteMessageCount,
|
|
246
|
-
beforeEnqueueTime: options
|
|
288
|
+
beforeEnqueueTime: options?.beforeEnqueueTime,
|
|
247
289
|
});
|
|
248
290
|
deletedCount += batchCount;
|
|
249
291
|
}
|
|
@@ -259,8 +301,7 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
259
301
|
throw new TypeError(InvalidMaxMessageCountError);
|
|
260
302
|
}
|
|
261
303
|
const receiveBatchOperationPromise = async () => {
|
|
262
|
-
|
|
263
|
-
const receivedMessages = await this._messageSession.receiveMessages(maxMessageCount, (_a = options === null || options === void 0 ? void 0 : options.maxWaitTimeInMs) !== null && _a !== void 0 ? _a : Constants.defaultOperationTimeoutInMs, defaultMaxTimeAfterFirstMessageForBatchingMs, options !== null && options !== void 0 ? options : {});
|
|
304
|
+
const receivedMessages = await this._messageSession.receiveMessages(maxMessageCount, options?.maxWaitTimeInMs ?? Constants.defaultOperationTimeoutInMs, defaultMaxTimeAfterFirstMessageForBatchingMs, options ?? {});
|
|
264
305
|
return receivedMessages;
|
|
265
306
|
};
|
|
266
307
|
const config = {
|
|
@@ -268,7 +309,7 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
268
309
|
connectionId: this._context.connectionId,
|
|
269
310
|
operationType: RetryOperationType.receiveMessage,
|
|
270
311
|
retryOptions: this._retryOptions,
|
|
271
|
-
abortSignal: options
|
|
312
|
+
abortSignal: options?.abortSignal,
|
|
272
313
|
};
|
|
273
314
|
return retry(config).catch((err) => {
|
|
274
315
|
throw translateServiceBusError(err);
|
|
@@ -277,15 +318,14 @@ export class ServiceBusSessionReceiverImpl {
|
|
|
277
318
|
subscribe(handlers, options) {
|
|
278
319
|
// TODO - receiverOptions for subscribe??
|
|
279
320
|
assertValidMessageHandlers(handlers);
|
|
280
|
-
options = options
|
|
321
|
+
options = options ?? {};
|
|
281
322
|
const processError = wrapProcessErrorHandler(handlers);
|
|
282
323
|
this._registerMessageHandler(async (message) => {
|
|
283
|
-
return tracingClient.withSpan("SessionReceiver.process", options
|
|
324
|
+
return tracingClient.withSpan("SessionReceiver.process", options ?? {}, () => handlers.processMessage(message), toProcessingSpanOptions(message, this, this._context.config, "process"));
|
|
284
325
|
}, processError, options);
|
|
285
326
|
return {
|
|
286
327
|
close: async () => {
|
|
287
|
-
|
|
288
|
-
return (_a = this._messageSession) === null || _a === void 0 ? void 0 : _a.receiverHelper.suspend();
|
|
328
|
+
return this._messageSession?.receiverHelper.suspend();
|
|
289
329
|
},
|
|
290
330
|
};
|
|
291
331
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionReceiver.js","sourceRoot":"","sources":["../../../src/receivers/sessionReceiver.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAgBlC,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,gCAAgC,EAChC,gCAAgC,EAChC,qCAAqC,EACrC,qCAAqC,GACtC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,4CAA4C,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAIpG,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAGlG,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,IAAI,MAAM,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAkEjE;;GAEG;AACH,MAAM,OAAO,6BAA6B;IASxC,IAAY,SAAS;QACnB,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,YAAY,IAAI,CAAC,UAAU,GAAG,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,YACU,eAA+B,EAC/B,QAA2B,EAC5B,UAAkB,EAClB,WAA4C,EAC3C,sBAA+B,EAC/B,mBAA4B,EAC5B,gBAA8B,EAAE;QANhC,oBAAe,GAAf,eAAe,CAAgB;QAC/B,aAAQ,GAAR,QAAQ,CAAmB;QAC5B,eAAU,GAAV,UAAU,CAAQ;QAClB,gBAAW,GAAX,WAAW,CAAiC;QAC3C,2BAAsB,GAAtB,sBAAsB,CAAS;QAC/B,wBAAmB,GAAnB,mBAAmB,CAAS;QAC5B,kBAAa,GAAb,aAAa,CAAmB;QArB1C;;WAEG;QACK,cAAS,GAAY,KAAK,CAAC;QAoBjC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;IAC/C,CAAC;IAEO,kCAAkC;QACxC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,YAAY,GAAG,yBAAyB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAChF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;gBACtC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC;gBAC3D,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,SAAS,GAAc;gBAC3B,SAAS,EAAE,wBAAwB,CAAC,oBAAoB;gBACxD,WAAW,EAAE,uDAAuD,IAAI,CAAC,SAAS,EAAE;aACrF,CAAC;YACF,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEO,wBAAwB;QAC9B,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;YAChC,MAAM,YAAY,GAAG,2BAA2B,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAClF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YACtC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC;YAClE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,CACL,IAAI,CAAC,SAAS;YACd,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACzD,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAC/B,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,IAAW,qBAAqB;QAC9B,OAAO,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC;IACpD,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,gBAAgB,CAAC,OAA8B;QACnD,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAE1C,OAAO,aAAa,CAAC,QAAQ,CAC3B,4CAA4C,EAC5C,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,EACb,CAAC,cAAc,EAAE,EAAE;YACjB,MAAM,gCAAgC,GAAG,KAAK,IAAmB,EAAE;gBACjE,IAAI,CAAC,eAAgB,CAAC,qBAAqB,GAAG,MAAM,IAAI,CAAC,QAAQ;qBAC9D,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;qBACpC,gBAAgB,CAAC,IAAI,CAAC,SAAS,kCAC3B,cAAc,KACjB,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAC7C,WAAW,EAAE,kBAAkB,EAC/B,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,IAC3C,CAAC;gBACL,OAAO,IAAI,CAAC,eAAgB,CAAC,qBAAsB,CAAC;YACtD,CAAC,CAAC;YACF,MAAM,MAAM,GAAsB;gBAChC,SAAS,EAAE,gCAAgC;gBAC3C,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;gBACxC,aAAa,EAAE,kBAAkB,CAAC,UAAU;gBAC5C,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;aAClC,CAAC;YACF,OAAO,KAAK,CAAO,MAAM,CAAC,CAAC;QAC7B,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CAAC,KAAc,EAAE,UAAgC,EAAE;QACtE,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAE1C,OAAO,aAAa,CAAC,QAAQ,CAC3B,2CAA2C,EAC3C,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,EACb,CAAC,cAAc,EAAE,EAAE;YACjB,MAAM,+BAA+B,GAAG,KAAK,IAAmB,EAAE;gBAChE,MAAM,IAAI,CAAC,QAAQ;qBAChB,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;qBACpC,eAAe,CAAC,IAAI,CAAC,SAAU,EAAE,KAAK,kCAClC,cAAc,KACjB,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAC7C,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,IAC3C,CAAC;gBACL,OAAO;YACT,CAAC,CAAC;YACF,MAAM,MAAM,GAAsB;gBAChC,SAAS,EAAE,+BAA+B;gBAC1C,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;gBACxC,aAAa,EAAE,kBAAkB,CAAC,UAAU;gBAC5C,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;aAClC,CAAC;YACF,OAAO,KAAK,CAAO,MAAM,CAAC,CAAC;QAC7B,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CAAC,UAAgC,EAAE;QACtD,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAE1C,OAAO,aAAa,CAAC,QAAQ,CAC3B,2CAA2C,EAC3C,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,EACb,CAAC,cAAc,EAAE,EAAE;YACjB,MAAM,+BAA+B,GAAG,KAAK,IAAkB,EAAE;gBAC/D,OAAO,IAAI,CAAC,QAAQ;qBACjB,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;qBACpC,eAAe,CAAC,IAAI,CAAC,SAAS,kCAC1B,cAAc,KACjB,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAC7C,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,IAC3C,CAAC;YACP,CAAC,CAAC;YACF,MAAM,MAAM,GAAqB;gBAC/B,SAAS,EAAE,+BAA+B;gBAC1C,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;gBACxC,aAAa,EAAE,kBAAkB,CAAC,UAAU;gBAC5C,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;aAClC,CAAC;YACF,OAAO,KAAK,CAAM,MAAM,CAAC,CAAC;QAC5B,CAAC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,eAAuB,EACvB,UAA+B,EAAE;;QAEjC,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAE1C,MAAM,wBAAwB,mCACzB,OAAO,KACV,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAC7C,WAAW,EAAE,cAAc,EAC3B,WAAW,EAAE,MAAA,IAAI,CAAC,aAAa,0CAAE,WAAW,EAC5C,qBAAqB,EAAE,IAAI,CAAC,sBAAsB,EAClD,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,GAC7C,CAAC;QACF,qFAAqF;QACrF,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,OAE/C,CAAC;QACF,MAAM,oBAAoB,GAAG,KAAK,IAA0C,EAAE;YAC5E,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC,QAAQ;qBACjB,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;qBACpC,oBAAoB,CACnB,kBAAkB,EAClB,eAAe,EACf,IAAI,CAAC,SAAS,EACd,eAAe,EACf,wBAAwB,CACzB,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,QAAQ;qBACjB,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;qBACpC,qBAAqB,CACpB,IAAI,CAAC,SAAS,EACd,eAAe,EACf,eAAe,EACf,wBAAwB,CACzB,CAAC;YACN,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,MAAM,GAA6C;YACvD,SAAS,EAAE,oBAAoB;YAC/B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;YACxC,aAAa,EAAE,kBAAkB,CAAC,UAAU;YAC5C,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;SAClC,CAAC;QACF,OAAO,KAAK,CAA8B,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,eAA8B,EAC9B,UAAgC,EAAE;QAElC,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,gCAAgC,CAC9B,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,iBAAiB,EACjB,eAAe,CAChB,CAAC;QACF,gCAAgC,CAC9B,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,iBAAiB,EACjB,eAAe,CAChB,CAAC;QAEF,MAAM,uBAAuB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;YAC5D,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACtB,MAAM,uCAAuC,GAAG,KAAK,IAEnD,EAAE;YACF,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ;iBACzC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;iBACpC,uBAAuB,CAAC,uBAAuB,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,kCAC7E,OAAO,KACV,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAC7C,WAAW,EAAE,yBAAyB,EACtC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,EAC3C,qBAAqB,EAAE,IAAI,CAAC,sBAAsB,EAClD,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,IAC5C,CAAC;YACL,OAAO,gBAAgB,CAAC;QAC1B,CAAC,CAAC;QACF,MAAM,MAAM,GAA6C;YACvD,SAAS,EAAE,uCAAuC;YAClD,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;YACxC,aAAa,EAAE,kBAAkB,CAAC,UAAU;YAC5C,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;SAClC,CAAC;QACF,OAAO,KAAK,CAA8B,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAA8B;QACjD,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAE1C,MAAM,8BAA8B,GAAG,GAAoB,EAAE;YAC3D,OAAO,IAAI,CAAC,QAAQ;iBACjB,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;iBACpC,cAAc,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB,EAAE,IAAI,CAAC,SAAS,kCAC9E,OAAO,KACV,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAC7C,WAAW,EAAE,gBAAgB,EAC7B,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,IAC3C,CAAC;QACP,CAAC,CAAC;QACF,MAAM,MAAM,GAAwB;YAClC,SAAS,EAAE,8BAA8B;YACzC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;YACxC,aAAa,EAAE,kBAAkB,CAAC,UAAU;YAC5C,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;SAClC,CAAC;QACF,OAAO,KAAK,CAAS,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA8B;QAChD,IAAI,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;YAC3C,eAAe,EAAE,qBAAqB;YACtC,iBAAiB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB;SAC9C,CAAC,CAAC;QACH,IAAI,YAAY,KAAK,qBAAqB,EAAE,CAAC;YAC3C,IAAI,UAAU,GAAG,qBAAqB,CAAC;YACvC,OAAO,UAAU,KAAK,qBAAqB,EAAE,CAAC;gBAC5C,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;oBACrC,eAAe,EAAE,qBAAqB;oBACtC,iBAAiB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB;iBAC9C,CAAC,CAAC;gBACH,YAAY,IAAI,UAAU,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,eAAuB,EACvB,OAAgC;QAEhC,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,gCAAgC,CAC9B,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,iBAAiB,EACjB,eAAe,CAChB,CAAC;QACF,qCAAqC,CACnC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,iBAAiB,EACjB,eAAe,EACf,QAAQ,CACT,CAAC;QAEF,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,4BAA4B,GAAG,KAAK,IAA0C,EAAE;;YACpF,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,eAAgB,CAAC,eAAe,CAClE,eAAe,EACf,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,mCAAI,SAAS,CAAC,2BAA2B,EACjE,4CAA4C,EAC5C,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CACd,CAAC;YAEF,OAAO,gBAAgB,CAAC;QAC1B,CAAC,CAAC;QACF,MAAM,MAAM,GAA6C;YACvD,SAAS,EAAE,4BAA4B;YACvC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;YACxC,aAAa,EAAE,kBAAkB,CAAC,cAAc;YAChD,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;SAClC,CAAC;QACF,OAAO,KAAK,CAA8B,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9D,MAAM,wBAAwB,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CACP,QAAyB,EACzB,OAA0B;QAI1B,yCAAyC;QACzC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAErC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;QAExB,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAEvD,IAAI,CAAC,uBAAuB,CAC1B,KAAK,EAAE,OAA8B,EAAE,EAAE;YACvC,OAAO,aAAa,CAAC,QAAQ,CAC3B,yBAAyB,EACzB,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,EACb,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EACtC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CACxE,CAAC;QACJ,CAAC,EACD,YAAY,EACZ,OAAO,CACR,CAAC;QAEF,OAAO;YACL,KAAK,EAAE,KAAK,IAAmB,EAAE;;gBAC/B,OAAO,MAAA,IAAI,CAAC,eAAe,0CAAE,cAAc,CAAC,OAAO,EAAE,CAAC;YACxD,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACK,uBAAuB,CAC7B,SAAoB,EACpB,OAAgB,EAChB,OAAyB;QAEzB,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC1C,gCAAgC,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACjE,gCAAgC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7D,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACpC,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC;gBACN,KAAK,EAAE,GAAG;gBACV,WAAW,EAAE,SAAS;gBACtB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI;gBAClD,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kBAAkB,CAChB,OAAmC;QAEnC,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAkC;QACtD,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,qCAAqC,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,OAAgC,CAAC;QACjD,OAAO,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,OAAkC,EAClC,kBAA+E;QAE/E,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,qCAAqC,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,OAAgC,CAAC;QACjD,OAAO,cAAc,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,EACf,kBAAkB,EAClB,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,OAAkC,EAClC,kBAA+E;QAE/E,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,qCAAqC,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,OAAgC,CAAC;QACjD,OAAO,YAAY,CACjB,OAAO,EACP,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,EACf,kBAAkB,EAClB,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,OAAkC,EAClC,OAAwF;QAExF,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,qCAAqC,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,OAAgC,CAAC;QACjD,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,QAAQ,CACb,GAAG,EACH,uEAAuE,EACvE,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CACf,CAAC;YACF,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,oBAAoB;QAC1B,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC;IACjF,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ConnectionContext } from \"../connectionContext.js\";\nimport type {\n MessageHandlers,\n ReceiveMessagesOptions,\n ServiceBusReceivedMessage,\n} from \"../index.js\";\nimport type {\n PeekMessagesOptions,\n GetMessageIteratorOptions,\n SubscribeOptions,\n DeleteMessagesOptions,\n PurgeMessagesOptions,\n} from \"../models.js\";\nimport type { MessageSession } from \"../session/messageSession.js\";\nimport {\n getAlreadyReceivingErrorMsg,\n getReceiverClosedErrorMsg,\n InvalidMaxMessageCountError,\n throwErrorIfConnectionClosed,\n throwTypeErrorIfParameterMissing,\n throwTypeErrorIfParameterNotLong,\n throwErrorIfInvalidOperationOnMessage,\n throwTypeErrorIfParameterTypeMismatch,\n} from \"../util/errors.js\";\nimport type { OnError, OnMessage } from \"../core/messageReceiver.js\";\nimport {\n abandonMessage,\n assertValidMessageHandlers,\n completeMessage,\n deadLetterMessage,\n deferMessage,\n getMessageIterator,\n wrapProcessErrorHandler,\n} from \"./receiverCommon.js\";\nimport type { ServiceBusReceiver } from \"./receiver.js\";\nimport { defaultMaxTimeAfterFirstMessageForBatchingMs, MaxDeleteMessageCount } from \"./receiver.js\";\nimport type Long from \"long\";\nimport type { ServiceBusMessageImpl, DeadLetterOptions } from \"../serviceBusMessage.js\";\nimport type { RetryConfig, RetryOptions } from \"@azure/core-amqp\";\nimport { Constants, RetryOperationType, retry, ErrorNameConditionMapper } from \"@azure/core-amqp\";\nimport type { OperationOptionsBase } from \"../modelsToBeSharedWithEventHubs.js\";\nimport type { AmqpError } from \"rhea-promise\";\nimport { toProcessingSpanOptions } from \"../diagnostics/instrumentServiceBusMessage.js\";\nimport { tracingClient } from \"../diagnostics/tracing.js\";\nimport { receiverLogger as logger } from \"../log.js\";\nimport { translateServiceBusError } from \"../serviceBusError.js\";\n\n/**\n *A receiver that handles sessions, including renewing the session lock.\n */\nexport interface ServiceBusSessionReceiver extends ServiceBusReceiver {\n /**\n * The session ID.\n */\n readonly sessionId: string;\n\n /**\n * The time in UTC until which the session is locked.\n * Every time `renewSessionLock()` is called, this time gets updated to current time plus the lock\n * duration as specified during the Queue/Subscription creation.\n *\n * Will return undefined until a AMQP receiver link has been successfully set up for the session.\n *\n * @readonly\n */\n readonly sessionLockedUntilUtc: Date;\n\n /**\n * Streams messages to message handlers.\n * @param handlers - A handler that gets called for messages and errors.\n * @param options - Options for subscribe.\n * @returns An object that can be closed, sending any remaining messages to `handlers` and\n * stopping new messages from arriving.\n */\n subscribe(\n handlers: MessageHandlers,\n options?: SubscribeOptions,\n ): {\n /**\n * Causes the subscriber to stop receiving new messages.\n */\n close(): Promise<void>;\n };\n\n /**\n * Renews the lock on the session.\n */\n renewSessionLock(options?: OperationOptionsBase): Promise<Date>;\n\n /**\n * Gets the state of the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param options - Options bag to pass an abort signal or tracing options.\n * @returns The state of that session\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while retrieving session state.\n */\n getSessionState(options?: OperationOptionsBase): Promise<any>;\n\n /**\n * Sets the state on the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param state - The state that needs to be set.\n * @param options - Options bag to pass an abort signal or tracing options.\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while setting the session state.\n *\n */\n setSessionState(state: any, options?: OperationOptionsBase): Promise<void>;\n}\n\n/**\n * @internal\n */\nexport class ServiceBusSessionReceiverImpl implements ServiceBusSessionReceiver {\n public sessionId: string;\n public identifier: string;\n\n /**\n * Denotes if close() was called on this receiver\n */\n private _isClosed: boolean = false;\n\n private get logPrefix(): string {\n return `[${this._context.connectionId}|session:${this.entityPath}]`;\n }\n\n /**\n * @internal\n * @throws Error if the underlying connection is closed.\n * @throws Error if an open receiver is already existing for given sessionId.\n */\n constructor(\n private _messageSession: MessageSession,\n private _context: ConnectionContext,\n public entityPath: string,\n public receiveMode: \"peekLock\" | \"receiveAndDelete\",\n private _skipParsingBodyAsJson: boolean,\n private _skipConvertingDate: boolean,\n private _retryOptions: RetryOptions = {},\n ) {\n throwErrorIfConnectionClosed(_context);\n this.sessionId = _messageSession.sessionId;\n this.identifier = _messageSession.identifier;\n }\n\n private _throwIfReceiverOrConnectionClosed(): void {\n throwErrorIfConnectionClosed(this._context);\n if (this.isClosed) {\n if (this._isClosed) {\n const errorMessage = getReceiverClosedErrorMsg(this.entityPath, this.sessionId);\n const error = new Error(errorMessage);\n logger.logError(error, `${this.logPrefix} already closed`);\n throw error;\n }\n const amqpError: AmqpError = {\n condition: ErrorNameConditionMapper.SessionLockLostError,\n description: `The session lock has expired on the session with id ${this.sessionId}`,\n };\n throw translateServiceBusError(amqpError);\n }\n }\n\n private _throwIfAlreadyReceiving(): void {\n if (this._isReceivingMessages()) {\n const errorMessage = getAlreadyReceivingErrorMsg(this.entityPath, this.sessionId);\n const error = new Error(errorMessage);\n logger.logError(error, `${this.logPrefix} is already receiving.`);\n throw error;\n }\n }\n\n public get isClosed(): boolean {\n return (\n this._isClosed ||\n !this._context.messageSessions[this._messageSession.name] ||\n !this._messageSession.isOpen()\n );\n }\n\n /**\n * The time in UTC until which the session is locked.\n * Every time `renewSessionLock()` is called, this time gets updated to current time plus the lock\n * duration as specified during the Queue/Subscription creation.\n *\n * When the lock on the session expires\n * - The current receiver can no longer be used to receive more messages.\n * Create a new receiver using `ServiceBusClient.acceptSession()` or `ServiceBusClient.acceptNextSession()`.\n * - Messages that were received in `peekLock` mode with this receiver but not yet settled\n * will land back in the Queue/Subscription with their delivery count incremented.\n *\n * @readonly\n */\n public get sessionLockedUntilUtc(): Date {\n return this._messageSession.sessionLockedUntilUtc;\n }\n\n /**\n * Renews the lock on the session for the duration as specified during the Queue/Subscription\n * creation. You can check the `sessionLockedUntilUtc` property for the time when the lock expires.\n *\n * When the lock on the session expires\n * - The current receiver can no longer be used to receive mode messages.\n * Create a new receiver using `ServiceBusClient.acceptSession()` or `ServiceBusClient.acceptNextSession()`.\n * - Messages that were received in `peekLock` mode with this receiver but not yet settled\n * will land back in the Queue/Subscription with their delivery count incremented.\n *\n * @param options - Options bag to pass an abort signal or tracing options.\n * @returns New lock token expiry date and time in UTC format.\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while renewing session lock.\n */\n async renewSessionLock(options?: OperationOptionsBase): Promise<Date> {\n this._throwIfReceiverOrConnectionClosed();\n\n return tracingClient.withSpan(\n \"ServiceBusSessionReceiver.renewSessionLock\",\n options ?? {},\n (updatedOptions) => {\n const renewSessionLockOperationPromise = async (): Promise<Date> => {\n this._messageSession!.sessionLockedUntilUtc = await this._context\n .getManagementClient(this.entityPath)\n .renewSessionLock(this.sessionId, {\n ...updatedOptions,\n associatedLinkName: this._messageSession.name,\n requestName: \"renewSessionLock\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n return this._messageSession!.sessionLockedUntilUtc!;\n };\n const config: RetryConfig<Date> = {\n operation: renewSessionLockOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<Date>(config);\n },\n );\n }\n\n /**\n * Sets the state on the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param state - The state that needs to be set.\n * @param options - Options bag to pass an abort signal or tracing options.\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while setting the session state.\n */\n async setSessionState(state: unknown, options: OperationOptionsBase = {}): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n\n return tracingClient.withSpan(\n \"ServiceBusSessionReceiver.setSessionState\",\n options ?? {},\n (updatedOptions) => {\n const setSessionStateOperationPromise = async (): Promise<void> => {\n await this._context\n .getManagementClient(this.entityPath)\n .setSessionState(this.sessionId!, state, {\n ...updatedOptions,\n associatedLinkName: this._messageSession.name,\n requestName: \"setState\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n return;\n };\n const config: RetryConfig<void> = {\n operation: setSessionStateOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<void>(config);\n },\n );\n }\n\n /**\n * Gets the state of the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param options - Options bag to pass an abort signal or tracing options.\n * @returns The state of that session\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while retrieving session state.\n */\n async getSessionState(options: OperationOptionsBase = {}): Promise<any> {\n this._throwIfReceiverOrConnectionClosed();\n\n return tracingClient.withSpan(\n \"ServiceBusSessionReceiver.getSessionState\",\n options ?? {},\n (updatedOptions) => {\n const getSessionStateOperationPromise = async (): Promise<any> => {\n return this._context\n .getManagementClient(this.entityPath)\n .getSessionState(this.sessionId, {\n ...updatedOptions,\n associatedLinkName: this._messageSession.name,\n requestName: \"getState\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n };\n const config: RetryConfig<any> = {\n operation: getSessionStateOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<any>(config);\n },\n );\n }\n\n async peekMessages(\n maxMessageCount: number,\n options: PeekMessagesOptions = {},\n ): Promise<ServiceBusReceivedMessage[]> {\n this._throwIfReceiverOrConnectionClosed();\n\n const managementRequestOptions = {\n ...options,\n associatedLinkName: this._messageSession.name,\n requestName: \"peekMessages\",\n timeoutInMs: this._retryOptions?.timeoutInMs,\n skipParsingBodyAsJson: this._skipParsingBodyAsJson,\n skipConvertingDate: this._skipConvertingDate,\n };\n // omitMessageBody is available at runtime, but only exported in experimental subpath\n const { fromSequenceNumber, omitMessageBody } = options as PeekMessagesOptions & {\n omitMessageBody: boolean;\n };\n const peekOperationPromise = async (): Promise<ServiceBusReceivedMessage[]> => {\n if (fromSequenceNumber !== undefined) {\n return this._context\n .getManagementClient(this.entityPath)\n .peekBySequenceNumber(\n fromSequenceNumber,\n maxMessageCount,\n this.sessionId,\n omitMessageBody,\n managementRequestOptions,\n );\n } else {\n return this._context\n .getManagementClient(this.entityPath)\n .peekMessagesBySession(\n this.sessionId,\n maxMessageCount,\n omitMessageBody,\n managementRequestOptions,\n );\n }\n };\n\n const config: RetryConfig<ServiceBusReceivedMessage[]> = {\n operation: peekOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<ServiceBusReceivedMessage[]>(config);\n }\n\n async receiveDeferredMessages(\n sequenceNumbers: Long | Long[],\n options: OperationOptionsBase = {},\n ): Promise<ServiceBusReceivedMessage[]> {\n this._throwIfReceiverOrConnectionClosed();\n throwTypeErrorIfParameterMissing(\n this._context.connectionId,\n \"sequenceNumbers\",\n sequenceNumbers,\n );\n throwTypeErrorIfParameterNotLong(\n this._context.connectionId,\n \"sequenceNumbers\",\n sequenceNumbers,\n );\n\n const deferredSequenceNumbers = Array.isArray(sequenceNumbers)\n ? sequenceNumbers\n : [sequenceNumbers];\n const receiveDeferredMessagesOperationPromise = async (): Promise<\n ServiceBusReceivedMessage[]\n > => {\n const deferredMessages = await this._context\n .getManagementClient(this.entityPath)\n .receiveDeferredMessages(deferredSequenceNumbers, this.receiveMode, this.sessionId, {\n ...options,\n associatedLinkName: this._messageSession.name,\n requestName: \"receiveDeferredMessages\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n skipParsingBodyAsJson: this._skipParsingBodyAsJson,\n skipConvertingDate: this._skipConvertingDate,\n });\n return deferredMessages;\n };\n const config: RetryConfig<ServiceBusReceivedMessage[]> = {\n operation: receiveDeferredMessagesOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<ServiceBusReceivedMessage[]>(config);\n }\n\n async deleteMessages(options: DeleteMessagesOptions): Promise<number> {\n this._throwIfReceiverOrConnectionClosed();\n\n const deleteMessagesOperationPromise = (): Promise<number> => {\n return this._context\n .getManagementClient(this.entityPath)\n .deleteMessages(options.maxMessageCount, options?.beforeEnqueueTime, this.sessionId, {\n ...options,\n associatedLinkName: this._messageSession.name,\n requestName: \"deleteMessages\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n };\n const config: RetryConfig<number> = {\n operation: deleteMessagesOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<number>(config);\n }\n\n async purgeMessages(options?: PurgeMessagesOptions): Promise<number> {\n let deletedCount = await this.deleteMessages({\n maxMessageCount: MaxDeleteMessageCount,\n beforeEnqueueTime: options?.beforeEnqueueTime,\n });\n if (deletedCount === MaxDeleteMessageCount) {\n let batchCount = MaxDeleteMessageCount;\n while (batchCount === MaxDeleteMessageCount) {\n batchCount = await this.deleteMessages({\n maxMessageCount: MaxDeleteMessageCount,\n beforeEnqueueTime: options?.beforeEnqueueTime,\n });\n deletedCount += batchCount;\n }\n }\n return deletedCount;\n }\n\n async receiveMessages(\n maxMessageCount: number,\n options?: ReceiveMessagesOptions,\n ): Promise<ServiceBusReceivedMessage[]> {\n this._throwIfReceiverOrConnectionClosed();\n this._throwIfAlreadyReceiving();\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 receiveBatchOperationPromise = async (): Promise<ServiceBusReceivedMessage[]> => {\n const receivedMessages = await this._messageSession!.receiveMessages(\n maxMessageCount,\n options?.maxWaitTimeInMs ?? Constants.defaultOperationTimeoutInMs,\n defaultMaxTimeAfterFirstMessageForBatchingMs,\n options ?? {},\n );\n\n return receivedMessages;\n };\n const config: RetryConfig<ServiceBusReceivedMessage[]> = {\n operation: receiveBatchOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.receiveMessage,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<ServiceBusReceivedMessage[]>(config).catch((err) => {\n throw translateServiceBusError(err);\n });\n }\n\n subscribe(\n handlers: MessageHandlers,\n options?: SubscribeOptions,\n ): {\n close(): Promise<void>;\n } {\n // TODO - receiverOptions for subscribe??\n assertValidMessageHandlers(handlers);\n\n options = options ?? {};\n\n const processError = wrapProcessErrorHandler(handlers);\n\n this._registerMessageHandler(\n async (message: ServiceBusMessageImpl) => {\n return tracingClient.withSpan(\n \"SessionReceiver.process\",\n options ?? {},\n () => handlers.processMessage(message),\n toProcessingSpanOptions(message, this, this._context.config, \"process\"),\n );\n },\n processError,\n options,\n );\n\n return {\n close: async (): Promise<void> => {\n return this._messageSession?.receiverHelper.suspend();\n },\n };\n }\n\n /**\n * Registers handlers to deal with the incoming stream of messages over an AMQP receiver link\n * from a Queue/Subscription.\n * To stop receiving messages, call `close()` on the SessionReceiver.\n *\n * Throws an error if there is another receive operation in progress on the same receiver. If you\n * are not sure whether there is another receive operation running, check the `isReceivingMessages`\n * property on the receiver.\n *\n * @param onMessage - Handler for processing each incoming message.\n * @param onError - Handler for any error that occurs while receiving or processing messages.\n * @param options - Options to control whether messages should be automatically completed\n * or if the lock on the session should be automatically renewed. You can control the\n * maximum number of messages that should be concurrently processed. You can\n * also provide a timeout in milliseconds to denote the amount of time to wait for a new message\n * before closing the receiver.\n *\n * @throws Error if the underlying connection or receiver is closed.\n * @throws Error if the receiver is already in state of receiving messages.\n * @throws `ServiceBusError` if the service returns an error while receiving messages. These are bubbled up to be handled by user provided `onError` handler.\n */\n private _registerMessageHandler(\n onMessage: OnMessage,\n onError: OnError,\n options: SubscribeOptions,\n ): void {\n this._throwIfReceiverOrConnectionClosed();\n this._throwIfAlreadyReceiving();\n const connId = this._context.connectionId;\n throwTypeErrorIfParameterMissing(connId, \"onMessage\", onMessage);\n throwTypeErrorIfParameterMissing(connId, \"onError\", onError);\n if (typeof onMessage !== \"function\") {\n throw new TypeError(\"The parameter 'onMessage' must be of type 'function'.\");\n }\n if (typeof onError !== \"function\") {\n throw new TypeError(\"The parameter 'onError' must be of type 'function'.\");\n }\n\n try {\n this._messageSession.subscribe(onMessage, onError, options);\n } catch (err: any) {\n onError({\n error: err,\n errorSource: \"receive\",\n entityPath: this.entityPath,\n fullyQualifiedNamespace: this._context.config.host,\n identifier: this.identifier,\n });\n }\n }\n\n getMessageIterator(\n options?: GetMessageIteratorOptions,\n ): AsyncIterableIterator<ServiceBusReceivedMessage> {\n return getMessageIterator(this, options);\n }\n\n async completeMessage(message: ServiceBusReceivedMessage): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return completeMessage(msgImpl, this._context, this.entityPath, this._retryOptions);\n }\n\n async abandonMessage(\n message: ServiceBusReceivedMessage,\n propertiesToModify?: { [key: string]: number | boolean | string | Date | null },\n ): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return abandonMessage(\n msgImpl,\n this._context,\n this.entityPath,\n propertiesToModify,\n this._retryOptions,\n );\n }\n\n async deferMessage(\n message: ServiceBusReceivedMessage,\n propertiesToModify?: { [key: string]: number | boolean | string | Date | null },\n ): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return deferMessage(\n msgImpl,\n this._context,\n this.entityPath,\n propertiesToModify,\n this._retryOptions,\n );\n }\n\n async deadLetterMessage(\n message: ServiceBusReceivedMessage,\n options?: DeadLetterOptions & { [key: string]: number | boolean | string | Date | null },\n ): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return deadLetterMessage(msgImpl, this._context, this.entityPath, options, this._retryOptions);\n }\n\n async renewMessageLock(): Promise<Date> {\n throw new Error(\"Renewing message lock is an invalid operation when working with sessions.\");\n }\n\n async close(): Promise<void> {\n try {\n await this._messageSession.close();\n } catch (err: any) {\n logger.logError(\n err,\n \"%s An error occurred while closing the SessionReceiver for session %s\",\n this.logPrefix,\n this.sessionId,\n );\n throw err;\n } finally {\n this._isClosed = true;\n }\n }\n\n /**\n * Indicates whether the receiver is currently receiving messages or not.\n * When this returns true, new `registerMessageHandler()` or `receiveMessages()` calls cannot be made.\n */\n private _isReceivingMessages(): boolean {\n return this._messageSession ? this._messageSession.isReceivingMessages : false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sessionReceiver.js","sourceRoot":"","sources":["../../../src/receivers/sessionReceiver.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ConnectionContext } from \"../connectionContext.js\";\nimport type {\n MessageHandlers,\n ReceiveMessagesOptions,\n ServiceBusReceivedMessage,\n} from \"../index.js\";\nimport type {\n PeekMessagesOptions,\n GetMessageIteratorOptions,\n SubscribeOptions,\n DeleteMessagesOptions,\n PurgeMessagesOptions,\n} from \"../models.js\";\nimport type { MessageSession } from \"../session/messageSession.js\";\nimport {\n getAlreadyReceivingErrorMsg,\n getReceiverClosedErrorMsg,\n InvalidMaxMessageCountError,\n throwErrorIfConnectionClosed,\n throwTypeErrorIfParameterMissing,\n throwTypeErrorIfParameterNotLong,\n throwErrorIfInvalidOperationOnMessage,\n throwTypeErrorIfParameterTypeMismatch,\n} from \"../util/errors.js\";\nimport type { OnError, OnMessage } from \"../core/messageReceiver.js\";\nimport {\n abandonMessage,\n assertValidMessageHandlers,\n completeMessage,\n deadLetterMessage,\n deferMessage,\n getMessageIterator,\n wrapProcessErrorHandler,\n} from \"./receiverCommon.js\";\nimport type { ServiceBusReceiver } from \"./receiver.js\";\nimport { defaultMaxTimeAfterFirstMessageForBatchingMs, MaxDeleteMessageCount } from \"./receiver.js\";\nimport type Long from \"long\";\nimport type { ServiceBusMessageImpl, DeadLetterOptions } from \"../serviceBusMessage.js\";\nimport type { RetryConfig, RetryOptions } from \"@azure/core-amqp\";\nimport { Constants, RetryOperationType, retry, ErrorNameConditionMapper } from \"@azure/core-amqp\";\nimport type { OperationOptionsBase } from \"../modelsToBeSharedWithEventHubs.js\";\nimport type { AmqpError } from \"rhea-promise\";\nimport { toProcessingSpanOptions } from \"../diagnostics/instrumentServiceBusMessage.js\";\nimport { tracingClient } from \"../diagnostics/tracing.js\";\nimport { receiverLogger as logger } from \"../log.js\";\nimport { translateServiceBusError } from \"../serviceBusError.js\";\n\n/**\n *A receiver that handles sessions, including renewing the session lock.\n */\nexport interface ServiceBusSessionReceiver extends ServiceBusReceiver {\n /**\n * The session ID.\n */\n readonly sessionId: string;\n\n /**\n * The time in UTC until which the session is locked.\n * Every time `renewSessionLock()` is called, this time gets updated to current time plus the lock\n * duration as specified during the Queue/Subscription creation.\n *\n * Will return undefined until a AMQP receiver link has been successfully set up for the session.\n *\n * @readonly\n */\n readonly sessionLockedUntilUtc: Date;\n\n /**\n * Streams messages to message handlers.\n * @param handlers - A handler that gets called for messages and errors.\n * @param options - Options for subscribe.\n * @returns An object that can be closed, sending any remaining messages to `handlers` and\n * stopping new messages from arriving.\n */\n subscribe(\n handlers: MessageHandlers,\n options?: SubscribeOptions,\n ): {\n /**\n * Causes the subscriber to stop receiving new messages.\n */\n close(): Promise<void>;\n };\n\n /**\n * Renews the lock on the session.\n */\n renewSessionLock(options?: OperationOptionsBase): Promise<Date>;\n\n /**\n * Gets the state of the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param options - Options bag to pass an abort signal or tracing options.\n * @returns The state of that session\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while retrieving session state.\n */\n getSessionState(options?: OperationOptionsBase): Promise<any>;\n\n /**\n * Sets the state on the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param state - The state that needs to be set.\n * @param options - Options bag to pass an abort signal or tracing options.\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while setting the session state.\n *\n */\n setSessionState(state: any, options?: OperationOptionsBase): Promise<void>;\n}\n\n/**\n * @internal\n */\nexport class ServiceBusSessionReceiverImpl implements ServiceBusSessionReceiver {\n public sessionId: string;\n public identifier: string;\n\n /**\n * Denotes if close() was called on this receiver\n */\n private _isClosed: boolean = false;\n\n private get logPrefix(): string {\n return `[${this._context.connectionId}|session:${this.entityPath}]`;\n }\n\n /**\n * @internal\n * @throws Error if the underlying connection is closed.\n * @throws Error if an open receiver is already existing for given sessionId.\n */\n constructor(\n private _messageSession: MessageSession,\n private _context: ConnectionContext,\n public entityPath: string,\n public receiveMode: \"peekLock\" | \"receiveAndDelete\",\n private _skipParsingBodyAsJson: boolean,\n private _skipConvertingDate: boolean,\n private _retryOptions: RetryOptions = {},\n ) {\n throwErrorIfConnectionClosed(_context);\n this.sessionId = _messageSession.sessionId;\n this.identifier = _messageSession.identifier;\n }\n\n private _throwIfReceiverOrConnectionClosed(): void {\n throwErrorIfConnectionClosed(this._context);\n if (this.isClosed) {\n if (this._isClosed) {\n const errorMessage = getReceiverClosedErrorMsg(this.entityPath, this.sessionId);\n const error = new Error(errorMessage);\n logger.logError(error, `${this.logPrefix} already closed`);\n throw error;\n }\n const amqpError: AmqpError = {\n condition: ErrorNameConditionMapper.SessionLockLostError,\n description: `The session lock has expired on the session with id ${this.sessionId}`,\n };\n throw translateServiceBusError(amqpError);\n }\n }\n\n private _throwIfAlreadyReceiving(): void {\n if (this._isReceivingMessages()) {\n const errorMessage = getAlreadyReceivingErrorMsg(this.entityPath, this.sessionId);\n const error = new Error(errorMessage);\n logger.logError(error, `${this.logPrefix} is already receiving.`);\n throw error;\n }\n }\n\n public get isClosed(): boolean {\n return (\n this._isClosed ||\n !this._context.messageSessions[this._messageSession.name] ||\n !this._messageSession.isOpen()\n );\n }\n\n /**\n * The time in UTC until which the session is locked.\n * Every time `renewSessionLock()` is called, this time gets updated to current time plus the lock\n * duration as specified during the Queue/Subscription creation.\n *\n * When the lock on the session expires\n * - The current receiver can no longer be used to receive more messages.\n * Create a new receiver using `ServiceBusClient.acceptSession()` or `ServiceBusClient.acceptNextSession()`.\n * - Messages that were received in `peekLock` mode with this receiver but not yet settled\n * will land back in the Queue/Subscription with their delivery count incremented.\n *\n * @readonly\n */\n public get sessionLockedUntilUtc(): Date {\n return this._messageSession.sessionLockedUntilUtc;\n }\n\n /**\n * Renews the lock on the session for the duration as specified during the Queue/Subscription\n * creation. You can check the `sessionLockedUntilUtc` property for the time when the lock expires.\n *\n * When the lock on the session expires\n * - The current receiver can no longer be used to receive mode messages.\n * Create a new receiver using `ServiceBusClient.acceptSession()` or `ServiceBusClient.acceptNextSession()`.\n * - Messages that were received in `peekLock` mode with this receiver but not yet settled\n * will land back in the Queue/Subscription with their delivery count incremented.\n *\n * @param options - Options bag to pass an abort signal or tracing options.\n * @returns New lock token expiry date and time in UTC format.\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while renewing session lock.\n */\n async renewSessionLock(options?: OperationOptionsBase): Promise<Date> {\n this._throwIfReceiverOrConnectionClosed();\n\n return tracingClient.withSpan(\n \"ServiceBusSessionReceiver.renewSessionLock\",\n options ?? {},\n (updatedOptions) => {\n const renewSessionLockOperationPromise = async (): Promise<Date> => {\n this._messageSession!.sessionLockedUntilUtc = await this._context\n .getManagementClient(this.entityPath)\n .renewSessionLock(this.sessionId, {\n ...updatedOptions,\n associatedLinkName: this._messageSession.name,\n requestName: \"renewSessionLock\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n return this._messageSession!.sessionLockedUntilUtc!;\n };\n const config: RetryConfig<Date> = {\n operation: renewSessionLockOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<Date>(config);\n },\n );\n }\n\n /**\n * Sets the state on the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param state - The state that needs to be set.\n * @param options - Options bag to pass an abort signal or tracing options.\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while setting the session state.\n */\n async setSessionState(state: unknown, options: OperationOptionsBase = {}): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n\n return tracingClient.withSpan(\n \"ServiceBusSessionReceiver.setSessionState\",\n options ?? {},\n (updatedOptions) => {\n const setSessionStateOperationPromise = async (): Promise<void> => {\n await this._context\n .getManagementClient(this.entityPath)\n .setSessionState(this.sessionId!, state, {\n ...updatedOptions,\n associatedLinkName: this._messageSession.name,\n requestName: \"setState\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n return;\n };\n const config: RetryConfig<void> = {\n operation: setSessionStateOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<void>(config);\n },\n );\n }\n\n /**\n * Gets the state of the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param options - Options bag to pass an abort signal or tracing options.\n * @returns The state of that session\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while retrieving session state.\n */\n async getSessionState(options: OperationOptionsBase = {}): Promise<any> {\n this._throwIfReceiverOrConnectionClosed();\n\n return tracingClient.withSpan(\n \"ServiceBusSessionReceiver.getSessionState\",\n options ?? {},\n (updatedOptions) => {\n const getSessionStateOperationPromise = async (): Promise<any> => {\n return this._context\n .getManagementClient(this.entityPath)\n .getSessionState(this.sessionId, {\n ...updatedOptions,\n associatedLinkName: this._messageSession.name,\n requestName: \"getState\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n };\n const config: RetryConfig<any> = {\n operation: getSessionStateOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<any>(config);\n },\n );\n }\n\n async peekMessages(\n maxMessageCount: number,\n options: PeekMessagesOptions = {},\n ): Promise<ServiceBusReceivedMessage[]> {\n this._throwIfReceiverOrConnectionClosed();\n\n const managementRequestOptions = {\n ...options,\n associatedLinkName: this._messageSession.name,\n requestName: \"peekMessages\",\n timeoutInMs: this._retryOptions?.timeoutInMs,\n skipParsingBodyAsJson: this._skipParsingBodyAsJson,\n skipConvertingDate: this._skipConvertingDate,\n };\n // omitMessageBody is available at runtime, but only exported in experimental subpath\n const { fromSequenceNumber, omitMessageBody } = options as PeekMessagesOptions & {\n omitMessageBody: boolean;\n };\n const peekOperationPromise = async (): Promise<ServiceBusReceivedMessage[]> => {\n if (fromSequenceNumber !== undefined) {\n return this._context\n .getManagementClient(this.entityPath)\n .peekBySequenceNumber(\n fromSequenceNumber,\n maxMessageCount,\n this.sessionId,\n omitMessageBody,\n managementRequestOptions,\n );\n } else {\n return this._context\n .getManagementClient(this.entityPath)\n .peekMessagesBySession(\n this.sessionId,\n maxMessageCount,\n omitMessageBody,\n managementRequestOptions,\n );\n }\n };\n\n const config: RetryConfig<ServiceBusReceivedMessage[]> = {\n operation: peekOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<ServiceBusReceivedMessage[]>(config);\n }\n\n async receiveDeferredMessages(\n sequenceNumbers: Long | Long[],\n options: OperationOptionsBase = {},\n ): Promise<ServiceBusReceivedMessage[]> {\n this._throwIfReceiverOrConnectionClosed();\n throwTypeErrorIfParameterMissing(\n this._context.connectionId,\n \"sequenceNumbers\",\n sequenceNumbers,\n );\n throwTypeErrorIfParameterNotLong(\n this._context.connectionId,\n \"sequenceNumbers\",\n sequenceNumbers,\n );\n\n const deferredSequenceNumbers = Array.isArray(sequenceNumbers)\n ? sequenceNumbers\n : [sequenceNumbers];\n const receiveDeferredMessagesOperationPromise = async (): Promise<\n ServiceBusReceivedMessage[]\n > => {\n const deferredMessages = await this._context\n .getManagementClient(this.entityPath)\n .receiveDeferredMessages(deferredSequenceNumbers, this.receiveMode, this.sessionId, {\n ...options,\n associatedLinkName: this._messageSession.name,\n requestName: \"receiveDeferredMessages\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n skipParsingBodyAsJson: this._skipParsingBodyAsJson,\n skipConvertingDate: this._skipConvertingDate,\n });\n return deferredMessages;\n };\n const config: RetryConfig<ServiceBusReceivedMessage[]> = {\n operation: receiveDeferredMessagesOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<ServiceBusReceivedMessage[]>(config);\n }\n\n async deleteMessages(options: DeleteMessagesOptions): Promise<number> {\n this._throwIfReceiverOrConnectionClosed();\n\n const deleteMessagesOperationPromise = (): Promise<number> => {\n return this._context\n .getManagementClient(this.entityPath)\n .deleteMessages(options.maxMessageCount, options?.beforeEnqueueTime, this.sessionId, {\n ...options,\n associatedLinkName: this._messageSession.name,\n requestName: \"deleteMessages\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n };\n const config: RetryConfig<number> = {\n operation: deleteMessagesOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<number>(config);\n }\n\n async purgeMessages(options?: PurgeMessagesOptions): Promise<number> {\n let deletedCount = await this.deleteMessages({\n maxMessageCount: MaxDeleteMessageCount,\n beforeEnqueueTime: options?.beforeEnqueueTime,\n });\n if (deletedCount === MaxDeleteMessageCount) {\n let batchCount = MaxDeleteMessageCount;\n while (batchCount === MaxDeleteMessageCount) {\n batchCount = await this.deleteMessages({\n maxMessageCount: MaxDeleteMessageCount,\n beforeEnqueueTime: options?.beforeEnqueueTime,\n });\n deletedCount += batchCount;\n }\n }\n return deletedCount;\n }\n\n async receiveMessages(\n maxMessageCount: number,\n options?: ReceiveMessagesOptions,\n ): Promise<ServiceBusReceivedMessage[]> {\n this._throwIfReceiverOrConnectionClosed();\n this._throwIfAlreadyReceiving();\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 receiveBatchOperationPromise = async (): Promise<ServiceBusReceivedMessage[]> => {\n const receivedMessages = await this._messageSession!.receiveMessages(\n maxMessageCount,\n options?.maxWaitTimeInMs ?? Constants.defaultOperationTimeoutInMs,\n defaultMaxTimeAfterFirstMessageForBatchingMs,\n options ?? {},\n );\n\n return receivedMessages;\n };\n const config: RetryConfig<ServiceBusReceivedMessage[]> = {\n operation: receiveBatchOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.receiveMessage,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<ServiceBusReceivedMessage[]>(config).catch((err) => {\n throw translateServiceBusError(err);\n });\n }\n\n subscribe(\n handlers: MessageHandlers,\n options?: SubscribeOptions,\n ): {\n close(): Promise<void>;\n } {\n // TODO - receiverOptions for subscribe??\n assertValidMessageHandlers(handlers);\n\n options = options ?? {};\n\n const processError = wrapProcessErrorHandler(handlers);\n\n this._registerMessageHandler(\n async (message: ServiceBusMessageImpl) => {\n return tracingClient.withSpan(\n \"SessionReceiver.process\",\n options ?? {},\n () => handlers.processMessage(message),\n toProcessingSpanOptions(message, this, this._context.config, \"process\"),\n );\n },\n processError,\n options,\n );\n\n return {\n close: async (): Promise<void> => {\n return this._messageSession?.receiverHelper.suspend();\n },\n };\n }\n\n /**\n * Registers handlers to deal with the incoming stream of messages over an AMQP receiver link\n * from a Queue/Subscription.\n * To stop receiving messages, call `close()` on the SessionReceiver.\n *\n * Throws an error if there is another receive operation in progress on the same receiver. If you\n * are not sure whether there is another receive operation running, check the `isReceivingMessages`\n * property on the receiver.\n *\n * @param onMessage - Handler for processing each incoming message.\n * @param onError - Handler for any error that occurs while receiving or processing messages.\n * @param options - Options to control whether messages should be automatically completed\n * or if the lock on the session should be automatically renewed. You can control the\n * maximum number of messages that should be concurrently processed. You can\n * also provide a timeout in milliseconds to denote the amount of time to wait for a new message\n * before closing the receiver.\n *\n * @throws Error if the underlying connection or receiver is closed.\n * @throws Error if the receiver is already in state of receiving messages.\n * @throws `ServiceBusError` if the service returns an error while receiving messages. These are bubbled up to be handled by user provided `onError` handler.\n */\n private _registerMessageHandler(\n onMessage: OnMessage,\n onError: OnError,\n options: SubscribeOptions,\n ): void {\n this._throwIfReceiverOrConnectionClosed();\n this._throwIfAlreadyReceiving();\n const connId = this._context.connectionId;\n throwTypeErrorIfParameterMissing(connId, \"onMessage\", onMessage);\n throwTypeErrorIfParameterMissing(connId, \"onError\", onError);\n if (typeof onMessage !== \"function\") {\n throw new TypeError(\"The parameter 'onMessage' must be of type 'function'.\");\n }\n if (typeof onError !== \"function\") {\n throw new TypeError(\"The parameter 'onError' must be of type 'function'.\");\n }\n\n try {\n this._messageSession.subscribe(onMessage, onError, options);\n } catch (err: any) {\n onError({\n error: err,\n errorSource: \"receive\",\n entityPath: this.entityPath,\n fullyQualifiedNamespace: this._context.config.host,\n identifier: this.identifier,\n });\n }\n }\n\n getMessageIterator(\n options?: GetMessageIteratorOptions,\n ): AsyncIterableIterator<ServiceBusReceivedMessage> {\n return getMessageIterator(this, options);\n }\n\n async completeMessage(message: ServiceBusReceivedMessage): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return completeMessage(msgImpl, this._context, this.entityPath, this._retryOptions);\n }\n\n async abandonMessage(\n message: ServiceBusReceivedMessage,\n propertiesToModify?: { [key: string]: number | boolean | string | Date | null },\n ): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return abandonMessage(\n msgImpl,\n this._context,\n this.entityPath,\n propertiesToModify,\n this._retryOptions,\n );\n }\n\n async deferMessage(\n message: ServiceBusReceivedMessage,\n propertiesToModify?: { [key: string]: number | boolean | string | Date | null },\n ): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return deferMessage(\n msgImpl,\n this._context,\n this.entityPath,\n propertiesToModify,\n this._retryOptions,\n );\n }\n\n async deadLetterMessage(\n message: ServiceBusReceivedMessage,\n options?: DeadLetterOptions & { [key: string]: number | boolean | string | Date | null },\n ): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return deadLetterMessage(msgImpl, this._context, this.entityPath, options, this._retryOptions);\n }\n\n async renewMessageLock(): Promise<Date> {\n throw new Error(\"Renewing message lock is an invalid operation when working with sessions.\");\n }\n\n async close(): Promise<void> {\n try {\n await this._messageSession.close();\n } catch (err: any) {\n logger.logError(\n err,\n \"%s An error occurred while closing the SessionReceiver for session %s\",\n this.logPrefix,\n this.sessionId,\n );\n throw err;\n } finally {\n this._isClosed = true;\n }\n }\n\n /**\n * Indicates whether the receiver is currently receiving messages or not.\n * When this returns true, new `registerMessageHandler()` or `receiveMessages()` calls cannot be made.\n */\n private _isReceivingMessages(): boolean {\n return this._messageSession ? this._messageSession.isReceivingMessages : false;\n }\n}\n"]}
|
package/dist/esm/sender.js
CHANGED
|
@@ -12,6 +12,16 @@ import { instrumentMessage } from "./diagnostics/instrumentServiceBusMessage.js"
|
|
|
12
12
|
* @internal
|
|
13
13
|
*/
|
|
14
14
|
export class ServiceBusSenderImpl {
|
|
15
|
+
_context;
|
|
16
|
+
_entityPath;
|
|
17
|
+
identifier;
|
|
18
|
+
_retryOptions;
|
|
19
|
+
/**
|
|
20
|
+
* Denotes if close() was called on this sender
|
|
21
|
+
*/
|
|
22
|
+
_isClosed = false;
|
|
23
|
+
_sender;
|
|
24
|
+
entityPath;
|
|
15
25
|
get logPrefix() {
|
|
16
26
|
return `[${this._context.connectionId}|sender:${this.entityPath}]`;
|
|
17
27
|
}
|
|
@@ -22,10 +32,6 @@ export class ServiceBusSenderImpl {
|
|
|
22
32
|
constructor(_context, _entityPath, retryOptions = {}, identifier) {
|
|
23
33
|
this._context = _context;
|
|
24
34
|
this._entityPath = _entityPath;
|
|
25
|
-
/**
|
|
26
|
-
* Denotes if close() was called on this sender
|
|
27
|
-
*/
|
|
28
|
-
this._isClosed = false;
|
|
29
35
|
throwErrorIfConnectionClosed(_context);
|
|
30
36
|
this.entityPath = _entityPath;
|
|
31
37
|
this.identifier = ensureValidIdentifier(this.entityPath, identifier);
|
|
@@ -51,9 +57,12 @@ export class ServiceBusSenderImpl {
|
|
|
51
57
|
// Case 1: Single message
|
|
52
58
|
throwIfNotValidServiceBusMessage(messages, errorInvalidMessageTypeSingleOrArray);
|
|
53
59
|
const originalMessage = messages;
|
|
54
|
-
const { message, spanContext } = instrumentMessage(originalMessage, options
|
|
60
|
+
const { message, spanContext } = instrumentMessage(originalMessage, options ?? {}, this.entityPath, this._context.config.host, "publish");
|
|
55
61
|
const spanLinks = spanContext ? [{ tracingContext: spanContext }] : [];
|
|
56
|
-
return tracingClient.withSpan("ServiceBusSender.send", options
|
|
62
|
+
return tracingClient.withSpan("ServiceBusSender.send", options ?? {}, (updatedOptions) => this._sender.send(message, updatedOptions), {
|
|
63
|
+
spanLinks,
|
|
64
|
+
...toSpanOptions({ entityPath: this.entityPath, host: this._context.config.host }, "publish", "client"),
|
|
65
|
+
});
|
|
57
66
|
}
|
|
58
67
|
let batch;
|
|
59
68
|
if (isServiceBusMessageBatch(messages)) {
|
|
@@ -76,7 +85,10 @@ export class ServiceBusSenderImpl {
|
|
|
76
85
|
tracingContext,
|
|
77
86
|
};
|
|
78
87
|
});
|
|
79
|
-
return tracingClient.withSpan("ServiceBusSender.send", options
|
|
88
|
+
return tracingClient.withSpan("ServiceBusSender.send", options ?? {}, (updatedOptions) => this._sender.sendBatch(batch, updatedOptions), {
|
|
89
|
+
spanLinks,
|
|
90
|
+
...toSpanOptions({ entityPath: this.entityPath, host: this._context.config.host }, "publish", "client"),
|
|
91
|
+
});
|
|
80
92
|
}
|
|
81
93
|
async createMessageBatch(options) {
|
|
82
94
|
this._throwIfSenderOrConnectionClosed();
|
|
@@ -94,14 +106,19 @@ export class ServiceBusSenderImpl {
|
|
|
94
106
|
const scheduleMessageOperationPromise = async () => {
|
|
95
107
|
return this._context
|
|
96
108
|
.getManagementClient(this._entityPath)
|
|
97
|
-
.scheduleMessages(scheduledEnqueueTimeUtc, messagesToSchedule,
|
|
109
|
+
.scheduleMessages(scheduledEnqueueTimeUtc, messagesToSchedule, {
|
|
110
|
+
...options,
|
|
111
|
+
associatedLinkName: this._sender.name,
|
|
112
|
+
requestName: "scheduleMessages",
|
|
113
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
114
|
+
});
|
|
98
115
|
};
|
|
99
116
|
const config = {
|
|
100
117
|
operation: scheduleMessageOperationPromise,
|
|
101
118
|
connectionId: this._context.connectionId,
|
|
102
119
|
operationType: RetryOperationType.management,
|
|
103
120
|
retryOptions: this._retryOptions,
|
|
104
|
-
abortSignal: options
|
|
121
|
+
abortSignal: options?.abortSignal,
|
|
105
122
|
};
|
|
106
123
|
return retry(config);
|
|
107
124
|
}
|
|
@@ -115,14 +132,19 @@ export class ServiceBusSenderImpl {
|
|
|
115
132
|
const cancelSchedulesMessagesOperationPromise = async () => {
|
|
116
133
|
return this._context
|
|
117
134
|
.getManagementClient(this._entityPath)
|
|
118
|
-
.cancelScheduledMessages(sequenceNumbersToCancel,
|
|
135
|
+
.cancelScheduledMessages(sequenceNumbersToCancel, {
|
|
136
|
+
...options,
|
|
137
|
+
associatedLinkName: this._sender.name,
|
|
138
|
+
requestName: "cancelScheduledMessages",
|
|
139
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
140
|
+
});
|
|
119
141
|
};
|
|
120
142
|
const config = {
|
|
121
143
|
operation: cancelSchedulesMessagesOperationPromise,
|
|
122
144
|
connectionId: this._context.connectionId,
|
|
123
145
|
operationType: RetryOperationType.management,
|
|
124
146
|
retryOptions: this._retryOptions,
|
|
125
|
-
abortSignal: options
|
|
147
|
+
abortSignal: options?.abortSignal,
|
|
126
148
|
};
|
|
127
149
|
return retry(config);
|
|
128
150
|
}
|