@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.
Files changed (254) hide show
  1. package/dist/browser/connectionContext.js +1 -2
  2. package/dist/browser/connectionContext.js.map +1 -1
  3. package/dist/browser/constructorHelpers.js +3 -4
  4. package/dist/browser/constructorHelpers.js.map +1 -1
  5. package/dist/browser/core/autoLockRenewer.js +9 -5
  6. package/dist/browser/core/autoLockRenewer.js.map +1 -1
  7. package/dist/browser/core/batchingReceiver.js +26 -18
  8. package/dist/browser/core/batchingReceiver.js.map +1 -1
  9. package/dist/browser/core/linkEntity.js +74 -13
  10. package/dist/browser/core/linkEntity.js.map +1 -1
  11. package/dist/browser/core/managementClient.js +48 -48
  12. package/dist/browser/core/managementClient.js.map +1 -1
  13. package/dist/browser/core/messageReceiver.js +41 -14
  14. package/dist/browser/core/messageReceiver.js.map +1 -1
  15. package/dist/browser/core/messageSender.js +33 -10
  16. package/dist/browser/core/messageSender.js.map +1 -1
  17. package/dist/browser/core/receiverHelper.js +3 -2
  18. package/dist/browser/core/receiverHelper.js.map +1 -1
  19. package/dist/browser/core/shared.js +11 -4
  20. package/dist/browser/core/shared.js.map +1 -1
  21. package/dist/browser/core/streamingReceiver.js +74 -43
  22. package/dist/browser/core/streamingReceiver.js.map +1 -1
  23. package/dist/browser/diagnostics/instrumentServiceBusMessage.js +16 -8
  24. package/dist/browser/diagnostics/instrumentServiceBusMessage.js.map +1 -1
  25. package/dist/browser/receivers/receiver.js +68 -23
  26. package/dist/browser/receivers/receiver.js.map +1 -1
  27. package/dist/browser/receivers/receiverCommon.js +36 -21
  28. package/dist/browser/receivers/receiverCommon.js.map +1 -1
  29. package/dist/browser/receivers/sessionReceiver.js +69 -29
  30. package/dist/browser/receivers/sessionReceiver.js.map +1 -1
  31. package/dist/browser/sender.js +33 -11
  32. package/dist/browser/sender.js.map +1 -1
  33. package/dist/browser/serializers/queueResourceSerializer.js +9 -1
  34. package/dist/browser/serializers/queueResourceSerializer.js.map +1 -1
  35. package/dist/browser/serializers/ruleResourceSerializer.js +1 -2
  36. package/dist/browser/serializers/ruleResourceSerializer.js.map +1 -1
  37. package/dist/browser/serviceBusAtomManagementClient.js +181 -228
  38. package/dist/browser/serviceBusAtomManagementClient.js.map +1 -1
  39. package/dist/browser/serviceBusClient.js +31 -22
  40. package/dist/browser/serviceBusClient.js.map +1 -1
  41. package/dist/browser/serviceBusError.js +21 -1
  42. package/dist/browser/serviceBusError.js.map +1 -1
  43. package/dist/browser/serviceBusMessage.js +208 -13
  44. package/dist/browser/serviceBusMessage.js.map +1 -1
  45. package/dist/browser/serviceBusMessageBatch.js +32 -8
  46. package/dist/browser/serviceBusMessageBatch.js.map +1 -1
  47. package/dist/browser/serviceBusRuleManager.js +39 -15
  48. package/dist/browser/serviceBusRuleManager.js.map +1 -1
  49. package/dist/browser/session/messageSession.js +130 -25
  50. package/dist/browser/session/messageSession.js.map +1 -1
  51. package/dist/browser/util/atomXmlHelper.js +4 -5
  52. package/dist/browser/util/atomXmlHelper.js.map +1 -1
  53. package/dist/browser/util/compat/httpHeaders.js +1 -0
  54. package/dist/browser/util/compat/httpHeaders.js.map +1 -1
  55. package/dist/browser/util/constants.js +1 -1
  56. package/dist/browser/util/constants.js.map +1 -1
  57. package/dist/browser/util/sasServiceClientCredentials.js +8 -0
  58. package/dist/browser/util/sasServiceClientCredentials.js.map +1 -1
  59. package/dist/browser/util/semaphore.js +6 -2
  60. package/dist/browser/util/semaphore.js.map +1 -1
  61. package/dist/browser/util/utils.js +5 -7
  62. package/dist/browser/util/utils.js.map +1 -1
  63. package/dist/commonjs/connectionContext.js +1 -2
  64. package/dist/commonjs/connectionContext.js.map +1 -1
  65. package/dist/commonjs/constructorHelpers.js +3 -4
  66. package/dist/commonjs/constructorHelpers.js.map +1 -1
  67. package/dist/commonjs/core/autoLockRenewer.js +9 -5
  68. package/dist/commonjs/core/autoLockRenewer.js.map +1 -1
  69. package/dist/commonjs/core/batchingReceiver.js +26 -18
  70. package/dist/commonjs/core/batchingReceiver.js.map +1 -1
  71. package/dist/commonjs/core/linkEntity.js +74 -13
  72. package/dist/commonjs/core/linkEntity.js.map +1 -1
  73. package/dist/commonjs/core/managementClient.js +48 -48
  74. package/dist/commonjs/core/managementClient.js.map +1 -1
  75. package/dist/commonjs/core/messageReceiver.js +41 -14
  76. package/dist/commonjs/core/messageReceiver.js.map +1 -1
  77. package/dist/commonjs/core/messageSender.js +33 -10
  78. package/dist/commonjs/core/messageSender.js.map +1 -1
  79. package/dist/commonjs/core/receiverHelper.js +3 -2
  80. package/dist/commonjs/core/receiverHelper.js.map +1 -1
  81. package/dist/commonjs/core/shared.js +11 -4
  82. package/dist/commonjs/core/shared.js.map +1 -1
  83. package/dist/commonjs/core/streamingReceiver.js +74 -43
  84. package/dist/commonjs/core/streamingReceiver.js.map +1 -1
  85. package/dist/commonjs/diagnostics/instrumentServiceBusMessage.js +16 -8
  86. package/dist/commonjs/diagnostics/instrumentServiceBusMessage.js.map +1 -1
  87. package/dist/commonjs/receivers/receiver.js +68 -23
  88. package/dist/commonjs/receivers/receiver.js.map +1 -1
  89. package/dist/commonjs/receivers/receiverCommon.js +36 -21
  90. package/dist/commonjs/receivers/receiverCommon.js.map +1 -1
  91. package/dist/commonjs/receivers/sessionReceiver.js +69 -29
  92. package/dist/commonjs/receivers/sessionReceiver.js.map +1 -1
  93. package/dist/commonjs/sender.js +33 -11
  94. package/dist/commonjs/sender.js.map +1 -1
  95. package/dist/commonjs/serializers/queueResourceSerializer.js +9 -1
  96. package/dist/commonjs/serializers/queueResourceSerializer.js.map +1 -1
  97. package/dist/commonjs/serializers/ruleResourceSerializer.js +1 -2
  98. package/dist/commonjs/serializers/ruleResourceSerializer.js.map +1 -1
  99. package/dist/commonjs/serviceBusAtomManagementClient.js +181 -227
  100. package/dist/commonjs/serviceBusAtomManagementClient.js.map +1 -1
  101. package/dist/commonjs/serviceBusClient.js +31 -22
  102. package/dist/commonjs/serviceBusClient.js.map +1 -1
  103. package/dist/commonjs/serviceBusError.js +21 -1
  104. package/dist/commonjs/serviceBusError.js.map +1 -1
  105. package/dist/commonjs/serviceBusMessage.js +208 -12
  106. package/dist/commonjs/serviceBusMessage.js.map +1 -1
  107. package/dist/commonjs/serviceBusMessageBatch.js +32 -8
  108. package/dist/commonjs/serviceBusMessageBatch.js.map +1 -1
  109. package/dist/commonjs/serviceBusRuleManager.js +39 -15
  110. package/dist/commonjs/serviceBusRuleManager.js.map +1 -1
  111. package/dist/commonjs/session/messageSession.js +130 -25
  112. package/dist/commonjs/session/messageSession.js.map +1 -1
  113. package/dist/commonjs/tsdoc-metadata.json +11 -11
  114. package/dist/commonjs/util/atomXmlHelper.js +4 -5
  115. package/dist/commonjs/util/atomXmlHelper.js.map +1 -1
  116. package/dist/commonjs/util/compat/httpHeaders.js +1 -0
  117. package/dist/commonjs/util/compat/httpHeaders.js.map +1 -1
  118. package/dist/commonjs/util/constants.js +1 -1
  119. package/dist/commonjs/util/constants.js.map +1 -1
  120. package/dist/commonjs/util/runtimeInfo.js +2 -2
  121. package/dist/commonjs/util/runtimeInfo.js.map +1 -1
  122. package/dist/commonjs/util/sasServiceClientCredentials.js +8 -0
  123. package/dist/commonjs/util/sasServiceClientCredentials.js.map +1 -1
  124. package/dist/commonjs/util/semaphore.js +6 -2
  125. package/dist/commonjs/util/semaphore.js.map +1 -1
  126. package/dist/commonjs/util/utils.js +5 -7
  127. package/dist/commonjs/util/utils.js.map +1 -1
  128. package/dist/esm/connectionContext.js +1 -2
  129. package/dist/esm/connectionContext.js.map +1 -1
  130. package/dist/esm/constructorHelpers.js +3 -4
  131. package/dist/esm/constructorHelpers.js.map +1 -1
  132. package/dist/esm/core/autoLockRenewer.js +9 -5
  133. package/dist/esm/core/autoLockRenewer.js.map +1 -1
  134. package/dist/esm/core/batchingReceiver.js +26 -18
  135. package/dist/esm/core/batchingReceiver.js.map +1 -1
  136. package/dist/esm/core/linkEntity.js +74 -13
  137. package/dist/esm/core/linkEntity.js.map +1 -1
  138. package/dist/esm/core/managementClient.js +48 -48
  139. package/dist/esm/core/managementClient.js.map +1 -1
  140. package/dist/esm/core/messageReceiver.js +41 -14
  141. package/dist/esm/core/messageReceiver.js.map +1 -1
  142. package/dist/esm/core/messageSender.js +33 -10
  143. package/dist/esm/core/messageSender.js.map +1 -1
  144. package/dist/esm/core/receiverHelper.js +3 -2
  145. package/dist/esm/core/receiverHelper.js.map +1 -1
  146. package/dist/esm/core/shared.js +11 -4
  147. package/dist/esm/core/shared.js.map +1 -1
  148. package/dist/esm/core/streamingReceiver.js +74 -43
  149. package/dist/esm/core/streamingReceiver.js.map +1 -1
  150. package/dist/esm/diagnostics/instrumentServiceBusMessage.js +16 -8
  151. package/dist/esm/diagnostics/instrumentServiceBusMessage.js.map +1 -1
  152. package/dist/esm/receivers/receiver.js +68 -23
  153. package/dist/esm/receivers/receiver.js.map +1 -1
  154. package/dist/esm/receivers/receiverCommon.js +36 -21
  155. package/dist/esm/receivers/receiverCommon.js.map +1 -1
  156. package/dist/esm/receivers/sessionReceiver.js +69 -29
  157. package/dist/esm/receivers/sessionReceiver.js.map +1 -1
  158. package/dist/esm/sender.js +33 -11
  159. package/dist/esm/sender.js.map +1 -1
  160. package/dist/esm/serializers/queueResourceSerializer.js +9 -1
  161. package/dist/esm/serializers/queueResourceSerializer.js.map +1 -1
  162. package/dist/esm/serializers/ruleResourceSerializer.js +1 -2
  163. package/dist/esm/serializers/ruleResourceSerializer.js.map +1 -1
  164. package/dist/esm/serviceBusAtomManagementClient.js +181 -228
  165. package/dist/esm/serviceBusAtomManagementClient.js.map +1 -1
  166. package/dist/esm/serviceBusClient.js +31 -22
  167. package/dist/esm/serviceBusClient.js.map +1 -1
  168. package/dist/esm/serviceBusError.js +21 -1
  169. package/dist/esm/serviceBusError.js.map +1 -1
  170. package/dist/esm/serviceBusMessage.js +208 -13
  171. package/dist/esm/serviceBusMessage.js.map +1 -1
  172. package/dist/esm/serviceBusMessageBatch.js +32 -8
  173. package/dist/esm/serviceBusMessageBatch.js.map +1 -1
  174. package/dist/esm/serviceBusRuleManager.js +39 -15
  175. package/dist/esm/serviceBusRuleManager.js.map +1 -1
  176. package/dist/esm/session/messageSession.js +130 -25
  177. package/dist/esm/session/messageSession.js.map +1 -1
  178. package/dist/esm/util/atomXmlHelper.js +4 -5
  179. package/dist/esm/util/atomXmlHelper.js.map +1 -1
  180. package/dist/esm/util/compat/httpHeaders.js +1 -0
  181. package/dist/esm/util/compat/httpHeaders.js.map +1 -1
  182. package/dist/esm/util/constants.js +1 -1
  183. package/dist/esm/util/constants.js.map +1 -1
  184. package/dist/esm/util/runtimeInfo.js +1 -1
  185. package/dist/esm/util/runtimeInfo.js.map +1 -1
  186. package/dist/esm/util/sasServiceClientCredentials.js +8 -0
  187. package/dist/esm/util/sasServiceClientCredentials.js.map +1 -1
  188. package/dist/esm/util/semaphore.js +6 -2
  189. package/dist/esm/util/semaphore.js.map +1 -1
  190. package/dist/esm/util/utils.js +5 -7
  191. package/dist/esm/util/utils.js.map +1 -1
  192. package/dist/react-native/connectionContext.js +1 -2
  193. package/dist/react-native/connectionContext.js.map +1 -1
  194. package/dist/react-native/constructorHelpers.js +3 -4
  195. package/dist/react-native/constructorHelpers.js.map +1 -1
  196. package/dist/react-native/core/autoLockRenewer.js +9 -5
  197. package/dist/react-native/core/autoLockRenewer.js.map +1 -1
  198. package/dist/react-native/core/batchingReceiver.js +26 -18
  199. package/dist/react-native/core/batchingReceiver.js.map +1 -1
  200. package/dist/react-native/core/linkEntity.js +74 -13
  201. package/dist/react-native/core/linkEntity.js.map +1 -1
  202. package/dist/react-native/core/managementClient.js +48 -48
  203. package/dist/react-native/core/managementClient.js.map +1 -1
  204. package/dist/react-native/core/messageReceiver.js +41 -14
  205. package/dist/react-native/core/messageReceiver.js.map +1 -1
  206. package/dist/react-native/core/messageSender.js +33 -10
  207. package/dist/react-native/core/messageSender.js.map +1 -1
  208. package/dist/react-native/core/receiverHelper.js +3 -2
  209. package/dist/react-native/core/receiverHelper.js.map +1 -1
  210. package/dist/react-native/core/shared.js +11 -4
  211. package/dist/react-native/core/shared.js.map +1 -1
  212. package/dist/react-native/core/streamingReceiver.js +74 -43
  213. package/dist/react-native/core/streamingReceiver.js.map +1 -1
  214. package/dist/react-native/diagnostics/instrumentServiceBusMessage.js +16 -8
  215. package/dist/react-native/diagnostics/instrumentServiceBusMessage.js.map +1 -1
  216. package/dist/react-native/receivers/receiver.js +68 -23
  217. package/dist/react-native/receivers/receiver.js.map +1 -1
  218. package/dist/react-native/receivers/receiverCommon.js +36 -21
  219. package/dist/react-native/receivers/receiverCommon.js.map +1 -1
  220. package/dist/react-native/receivers/sessionReceiver.js +69 -29
  221. package/dist/react-native/receivers/sessionReceiver.js.map +1 -1
  222. package/dist/react-native/sender.js +33 -11
  223. package/dist/react-native/sender.js.map +1 -1
  224. package/dist/react-native/serializers/queueResourceSerializer.js +9 -1
  225. package/dist/react-native/serializers/queueResourceSerializer.js.map +1 -1
  226. package/dist/react-native/serializers/ruleResourceSerializer.js +1 -2
  227. package/dist/react-native/serializers/ruleResourceSerializer.js.map +1 -1
  228. package/dist/react-native/serviceBusAtomManagementClient.js +181 -228
  229. package/dist/react-native/serviceBusAtomManagementClient.js.map +1 -1
  230. package/dist/react-native/serviceBusClient.js +31 -22
  231. package/dist/react-native/serviceBusClient.js.map +1 -1
  232. package/dist/react-native/serviceBusError.js +21 -1
  233. package/dist/react-native/serviceBusError.js.map +1 -1
  234. package/dist/react-native/serviceBusMessage.js +208 -13
  235. package/dist/react-native/serviceBusMessage.js.map +1 -1
  236. package/dist/react-native/serviceBusMessageBatch.js +32 -8
  237. package/dist/react-native/serviceBusMessageBatch.js.map +1 -1
  238. package/dist/react-native/serviceBusRuleManager.js +39 -15
  239. package/dist/react-native/serviceBusRuleManager.js.map +1 -1
  240. package/dist/react-native/session/messageSession.js +130 -25
  241. package/dist/react-native/session/messageSession.js.map +1 -1
  242. package/dist/react-native/util/atomXmlHelper.js +4 -5
  243. package/dist/react-native/util/atomXmlHelper.js.map +1 -1
  244. package/dist/react-native/util/compat/httpHeaders.js +1 -0
  245. package/dist/react-native/util/compat/httpHeaders.js.map +1 -1
  246. package/dist/react-native/util/constants.js +1 -1
  247. package/dist/react-native/util/constants.js.map +1 -1
  248. package/dist/react-native/util/sasServiceClientCredentials.js +8 -0
  249. package/dist/react-native/util/sasServiceClientCredentials.js.map +1 -1
  250. package/dist/react-native/util/semaphore.js +6 -2
  251. package/dist/react-native/util/semaphore.js.map +1 -1
  252. package/dist/react-native/util/utils.js +5 -7
  253. package/dist/react-native/util/utils.js.map +1 -1
  254. package/package.json +38 -38
@@ -1 +1 @@
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"]}
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"]}
@@ -15,6 +15,19 @@ const serviceBusError_js_1 = require("../serviceBusError.js");
15
15
  * @internal
16
16
  */
17
17
  class ServiceBusSessionReceiverImpl {
18
+ _messageSession;
19
+ _context;
20
+ entityPath;
21
+ receiveMode;
22
+ _skipParsingBodyAsJson;
23
+ _skipConvertingDate;
24
+ _retryOptions;
25
+ sessionId;
26
+ identifier;
27
+ /**
28
+ * Denotes if close() was called on this receiver
29
+ */
30
+ _isClosed = false;
18
31
  get logPrefix() {
19
32
  return `[${this._context.connectionId}|session:${this.entityPath}]`;
20
33
  }
@@ -31,10 +44,6 @@ class ServiceBusSessionReceiverImpl {
31
44
  this._skipParsingBodyAsJson = _skipParsingBodyAsJson;
32
45
  this._skipConvertingDate = _skipConvertingDate;
33
46
  this._retryOptions = _retryOptions;
34
- /**
35
- * Denotes if close() was called on this receiver
36
- */
37
- this._isClosed = false;
38
47
  (0, errors_js_1.throwErrorIfConnectionClosed)(_context);
39
48
  this.sessionId = _messageSession.sessionId;
40
49
  this.identifier = _messageSession.identifier;
@@ -101,11 +110,16 @@ class ServiceBusSessionReceiverImpl {
101
110
  */
102
111
  async renewSessionLock(options) {
103
112
  this._throwIfReceiverOrConnectionClosed();
104
- return tracing_js_1.tracingClient.withSpan("ServiceBusSessionReceiver.renewSessionLock", options !== null && options !== void 0 ? options : {}, (updatedOptions) => {
113
+ return tracing_js_1.tracingClient.withSpan("ServiceBusSessionReceiver.renewSessionLock", options ?? {}, (updatedOptions) => {
105
114
  const renewSessionLockOperationPromise = async () => {
106
115
  this._messageSession.sessionLockedUntilUtc = await this._context
107
116
  .getManagementClient(this.entityPath)
108
- .renewSessionLock(this.sessionId, Object.assign(Object.assign({}, updatedOptions), { associatedLinkName: this._messageSession.name, requestName: "renewSessionLock", timeoutInMs: this._retryOptions.timeoutInMs }));
117
+ .renewSessionLock(this.sessionId, {
118
+ ...updatedOptions,
119
+ associatedLinkName: this._messageSession.name,
120
+ requestName: "renewSessionLock",
121
+ timeoutInMs: this._retryOptions.timeoutInMs,
122
+ });
109
123
  return this._messageSession.sessionLockedUntilUtc;
110
124
  };
111
125
  const config = {
@@ -113,7 +127,7 @@ class ServiceBusSessionReceiverImpl {
113
127
  connectionId: this._context.connectionId,
114
128
  operationType: core_amqp_1.RetryOperationType.management,
115
129
  retryOptions: this._retryOptions,
116
- abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,
130
+ abortSignal: options?.abortSignal,
117
131
  };
118
132
  return (0, core_amqp_1.retry)(config);
119
133
  });
@@ -128,11 +142,16 @@ class ServiceBusSessionReceiverImpl {
128
142
  */
129
143
  async setSessionState(state, options = {}) {
130
144
  this._throwIfReceiverOrConnectionClosed();
131
- return tracing_js_1.tracingClient.withSpan("ServiceBusSessionReceiver.setSessionState", options !== null && options !== void 0 ? options : {}, (updatedOptions) => {
145
+ return tracing_js_1.tracingClient.withSpan("ServiceBusSessionReceiver.setSessionState", options ?? {}, (updatedOptions) => {
132
146
  const setSessionStateOperationPromise = async () => {
133
147
  await this._context
134
148
  .getManagementClient(this.entityPath)
135
- .setSessionState(this.sessionId, state, Object.assign(Object.assign({}, updatedOptions), { associatedLinkName: this._messageSession.name, requestName: "setState", timeoutInMs: this._retryOptions.timeoutInMs }));
149
+ .setSessionState(this.sessionId, state, {
150
+ ...updatedOptions,
151
+ associatedLinkName: this._messageSession.name,
152
+ requestName: "setState",
153
+ timeoutInMs: this._retryOptions.timeoutInMs,
154
+ });
136
155
  return;
137
156
  };
138
157
  const config = {
@@ -140,7 +159,7 @@ class ServiceBusSessionReceiverImpl {
140
159
  connectionId: this._context.connectionId,
141
160
  operationType: core_amqp_1.RetryOperationType.management,
142
161
  retryOptions: this._retryOptions,
143
- abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,
162
+ abortSignal: options?.abortSignal,
144
163
  };
145
164
  return (0, core_amqp_1.retry)(config);
146
165
  });
@@ -155,26 +174,37 @@ class ServiceBusSessionReceiverImpl {
155
174
  */
156
175
  async getSessionState(options = {}) {
157
176
  this._throwIfReceiverOrConnectionClosed();
158
- return tracing_js_1.tracingClient.withSpan("ServiceBusSessionReceiver.getSessionState", options !== null && options !== void 0 ? options : {}, (updatedOptions) => {
177
+ return tracing_js_1.tracingClient.withSpan("ServiceBusSessionReceiver.getSessionState", options ?? {}, (updatedOptions) => {
159
178
  const getSessionStateOperationPromise = async () => {
160
179
  return this._context
161
180
  .getManagementClient(this.entityPath)
162
- .getSessionState(this.sessionId, Object.assign(Object.assign({}, updatedOptions), { associatedLinkName: this._messageSession.name, requestName: "getState", timeoutInMs: this._retryOptions.timeoutInMs }));
181
+ .getSessionState(this.sessionId, {
182
+ ...updatedOptions,
183
+ associatedLinkName: this._messageSession.name,
184
+ requestName: "getState",
185
+ timeoutInMs: this._retryOptions.timeoutInMs,
186
+ });
163
187
  };
164
188
  const config = {
165
189
  operation: getSessionStateOperationPromise,
166
190
  connectionId: this._context.connectionId,
167
191
  operationType: core_amqp_1.RetryOperationType.management,
168
192
  retryOptions: this._retryOptions,
169
- abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,
193
+ abortSignal: options?.abortSignal,
170
194
  };
171
195
  return (0, core_amqp_1.retry)(config);
172
196
  });
173
197
  }
174
198
  async peekMessages(maxMessageCount, options = {}) {
175
- var _a;
176
199
  this._throwIfReceiverOrConnectionClosed();
177
- const managementRequestOptions = Object.assign(Object.assign({}, options), { associatedLinkName: this._messageSession.name, requestName: "peekMessages", timeoutInMs: (_a = this._retryOptions) === null || _a === void 0 ? void 0 : _a.timeoutInMs, skipParsingBodyAsJson: this._skipParsingBodyAsJson, skipConvertingDate: this._skipConvertingDate });
200
+ const managementRequestOptions = {
201
+ ...options,
202
+ associatedLinkName: this._messageSession.name,
203
+ requestName: "peekMessages",
204
+ timeoutInMs: this._retryOptions?.timeoutInMs,
205
+ skipParsingBodyAsJson: this._skipParsingBodyAsJson,
206
+ skipConvertingDate: this._skipConvertingDate,
207
+ };
178
208
  // omitMessageBody is available at runtime, but only exported in experimental subpath
179
209
  const { fromSequenceNumber, omitMessageBody } = options;
180
210
  const peekOperationPromise = async () => {
@@ -194,7 +224,7 @@ class ServiceBusSessionReceiverImpl {
194
224
  connectionId: this._context.connectionId,
195
225
  operationType: core_amqp_1.RetryOperationType.management,
196
226
  retryOptions: this._retryOptions,
197
- abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,
227
+ abortSignal: options?.abortSignal,
198
228
  };
199
229
  return (0, core_amqp_1.retry)(config);
200
230
  }
@@ -208,7 +238,14 @@ class ServiceBusSessionReceiverImpl {
208
238
  const receiveDeferredMessagesOperationPromise = async () => {
209
239
  const deferredMessages = await this._context
210
240
  .getManagementClient(this.entityPath)
211
- .receiveDeferredMessages(deferredSequenceNumbers, this.receiveMode, this.sessionId, Object.assign(Object.assign({}, options), { associatedLinkName: this._messageSession.name, requestName: "receiveDeferredMessages", timeoutInMs: this._retryOptions.timeoutInMs, skipParsingBodyAsJson: this._skipParsingBodyAsJson, skipConvertingDate: this._skipConvertingDate }));
241
+ .receiveDeferredMessages(deferredSequenceNumbers, this.receiveMode, this.sessionId, {
242
+ ...options,
243
+ associatedLinkName: this._messageSession.name,
244
+ requestName: "receiveDeferredMessages",
245
+ timeoutInMs: this._retryOptions.timeoutInMs,
246
+ skipParsingBodyAsJson: this._skipParsingBodyAsJson,
247
+ skipConvertingDate: this._skipConvertingDate,
248
+ });
212
249
  return deferredMessages;
213
250
  };
214
251
  const config = {
@@ -216,7 +253,7 @@ class ServiceBusSessionReceiverImpl {
216
253
  connectionId: this._context.connectionId,
217
254
  operationType: core_amqp_1.RetryOperationType.management,
218
255
  retryOptions: this._retryOptions,
219
- abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,
256
+ abortSignal: options?.abortSignal,
220
257
  };
221
258
  return (0, core_amqp_1.retry)(config);
222
259
  }
@@ -225,28 +262,33 @@ class ServiceBusSessionReceiverImpl {
225
262
  const deleteMessagesOperationPromise = () => {
226
263
  return this._context
227
264
  .getManagementClient(this.entityPath)
228
- .deleteMessages(options.maxMessageCount, options === null || options === void 0 ? void 0 : options.beforeEnqueueTime, this.sessionId, Object.assign(Object.assign({}, options), { associatedLinkName: this._messageSession.name, requestName: "deleteMessages", timeoutInMs: this._retryOptions.timeoutInMs }));
265
+ .deleteMessages(options.maxMessageCount, options?.beforeEnqueueTime, this.sessionId, {
266
+ ...options,
267
+ associatedLinkName: this._messageSession.name,
268
+ requestName: "deleteMessages",
269
+ timeoutInMs: this._retryOptions.timeoutInMs,
270
+ });
229
271
  };
230
272
  const config = {
231
273
  operation: deleteMessagesOperationPromise,
232
274
  connectionId: this._context.connectionId,
233
275
  operationType: core_amqp_1.RetryOperationType.management,
234
276
  retryOptions: this._retryOptions,
235
- abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,
277
+ abortSignal: options?.abortSignal,
236
278
  };
237
279
  return (0, core_amqp_1.retry)(config);
238
280
  }
239
281
  async purgeMessages(options) {
240
282
  let deletedCount = await this.deleteMessages({
241
283
  maxMessageCount: receiver_js_1.MaxDeleteMessageCount,
242
- beforeEnqueueTime: options === null || options === void 0 ? void 0 : options.beforeEnqueueTime,
284
+ beforeEnqueueTime: options?.beforeEnqueueTime,
243
285
  });
244
286
  if (deletedCount === receiver_js_1.MaxDeleteMessageCount) {
245
287
  let batchCount = receiver_js_1.MaxDeleteMessageCount;
246
288
  while (batchCount === receiver_js_1.MaxDeleteMessageCount) {
247
289
  batchCount = await this.deleteMessages({
248
290
  maxMessageCount: receiver_js_1.MaxDeleteMessageCount,
249
- beforeEnqueueTime: options === null || options === void 0 ? void 0 : options.beforeEnqueueTime,
291
+ beforeEnqueueTime: options?.beforeEnqueueTime,
250
292
  });
251
293
  deletedCount += batchCount;
252
294
  }
@@ -262,8 +304,7 @@ class ServiceBusSessionReceiverImpl {
262
304
  throw new TypeError(errors_js_1.InvalidMaxMessageCountError);
263
305
  }
264
306
  const receiveBatchOperationPromise = async () => {
265
- var _a;
266
- const receivedMessages = await this._messageSession.receiveMessages(maxMessageCount, (_a = options === null || options === void 0 ? void 0 : options.maxWaitTimeInMs) !== null && _a !== void 0 ? _a : core_amqp_1.Constants.defaultOperationTimeoutInMs, receiver_js_1.defaultMaxTimeAfterFirstMessageForBatchingMs, options !== null && options !== void 0 ? options : {});
307
+ const receivedMessages = await this._messageSession.receiveMessages(maxMessageCount, options?.maxWaitTimeInMs ?? core_amqp_1.Constants.defaultOperationTimeoutInMs, receiver_js_1.defaultMaxTimeAfterFirstMessageForBatchingMs, options ?? {});
267
308
  return receivedMessages;
268
309
  };
269
310
  const config = {
@@ -271,7 +312,7 @@ class ServiceBusSessionReceiverImpl {
271
312
  connectionId: this._context.connectionId,
272
313
  operationType: core_amqp_1.RetryOperationType.receiveMessage,
273
314
  retryOptions: this._retryOptions,
274
- abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,
315
+ abortSignal: options?.abortSignal,
275
316
  };
276
317
  return (0, core_amqp_1.retry)(config).catch((err) => {
277
318
  throw (0, serviceBusError_js_1.translateServiceBusError)(err);
@@ -280,15 +321,14 @@ class ServiceBusSessionReceiverImpl {
280
321
  subscribe(handlers, options) {
281
322
  // TODO - receiverOptions for subscribe??
282
323
  (0, receiverCommon_js_1.assertValidMessageHandlers)(handlers);
283
- options = options !== null && options !== void 0 ? options : {};
324
+ options = options ?? {};
284
325
  const processError = (0, receiverCommon_js_1.wrapProcessErrorHandler)(handlers);
285
326
  this._registerMessageHandler(async (message) => {
286
- return tracing_js_1.tracingClient.withSpan("SessionReceiver.process", options !== null && options !== void 0 ? options : {}, () => handlers.processMessage(message), (0, instrumentServiceBusMessage_js_1.toProcessingSpanOptions)(message, this, this._context.config, "process"));
327
+ return tracing_js_1.tracingClient.withSpan("SessionReceiver.process", options ?? {}, () => handlers.processMessage(message), (0, instrumentServiceBusMessage_js_1.toProcessingSpanOptions)(message, this, this._context.config, "process"));
287
328
  }, processError, options);
288
329
  return {
289
330
  close: async () => {
290
- var _a;
291
- return (_a = this._messageSession) === null || _a === void 0 ? void 0 : _a.receiverHelper.suspend();
331
+ return this._messageSession?.receiverHelper.suspend();
292
332
  },
293
333
  };
294
334
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sessionReceiver.js","sourceRoot":"","sources":["../../../src/receivers/sessionReceiver.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAgBlC,iDAS2B;AAE3B,2DAQ6B;AAE7B,+CAAoG;AAIpG,gDAAkG;AAGlG,kGAAwF;AACxF,0DAA0D;AAC1D,sCAAqD;AACrD,8DAAiE;AAkEjE;;GAEG;AACH,MAAa,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,IAAA,wCAA4B,EAAC,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,IAAA,wCAA4B,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,YAAY,GAAG,IAAA,qCAAyB,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAChF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;gBACtC,uBAAM,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,oCAAwB,CAAC,oBAAoB;gBACxD,WAAW,EAAE,uDAAuD,IAAI,CAAC,SAAS,EAAE;aACrF,CAAC;YACF,MAAM,IAAA,6CAAwB,EAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEO,wBAAwB;QAC9B,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;YAChC,MAAM,YAAY,GAAG,IAAA,uCAA2B,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAClF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YACtC,uBAAM,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,0BAAa,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,8BAAkB,CAAC,UAAU;gBAC5C,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;aAClC,CAAC;YACF,OAAO,IAAA,iBAAK,EAAO,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,0BAAa,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,8BAAkB,CAAC,UAAU;gBAC5C,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;aAClC,CAAC;YACF,OAAO,IAAA,iBAAK,EAAO,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,0BAAa,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,8BAAkB,CAAC,UAAU;gBAC5C,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;aAClC,CAAC;YACF,OAAO,IAAA,iBAAK,EAAM,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,8BAAkB,CAAC,UAAU;YAC5C,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;SAClC,CAAC;QACF,OAAO,IAAA,iBAAK,EAA8B,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,eAA8B,EAC9B,UAAgC,EAAE;QAElC,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,IAAA,4CAAgC,EAC9B,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,iBAAiB,EACjB,eAAe,CAChB,CAAC;QACF,IAAA,4CAAgC,EAC9B,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,8BAAkB,CAAC,UAAU;YAC5C,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;SAClC,CAAC;QACF,OAAO,IAAA,iBAAK,EAA8B,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,8BAAkB,CAAC,UAAU;YAC5C,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;SAClC,CAAC;QACF,OAAO,IAAA,iBAAK,EAAS,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA8B;QAChD,IAAI,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;YAC3C,eAAe,EAAE,mCAAqB;YACtC,iBAAiB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB;SAC9C,CAAC,CAAC;QACH,IAAI,YAAY,KAAK,mCAAqB,EAAE,CAAC;YAC3C,IAAI,UAAU,GAAG,mCAAqB,CAAC;YACvC,OAAO,UAAU,KAAK,mCAAqB,EAAE,CAAC;gBAC5C,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;oBACrC,eAAe,EAAE,mCAAqB;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,IAAA,4CAAgC,EAC9B,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,iBAAiB,EACjB,eAAe,CAChB,CAAC;QACF,IAAA,iDAAqC,EACnC,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,uCAA2B,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,qBAAS,CAAC,2BAA2B,EACjE,0DAA4C,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,8BAAkB,CAAC,cAAc;YAChD,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;SAClC,CAAC;QACF,OAAO,IAAA,iBAAK,EAA8B,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9D,MAAM,IAAA,6CAAwB,EAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CACP,QAAyB,EACzB,OAA0B;QAI1B,yCAAyC;QACzC,IAAA,8CAA0B,EAAC,QAAQ,CAAC,CAAC;QAErC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;QAExB,MAAM,YAAY,GAAG,IAAA,2CAAuB,EAAC,QAAQ,CAAC,CAAC;QAEvD,IAAI,CAAC,uBAAuB,CAC1B,KAAK,EAAE,OAA8B,EAAE,EAAE;YACvC,OAAO,0BAAa,CAAC,QAAQ,CAC3B,yBAAyB,EACzB,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,EACb,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EACtC,IAAA,wDAAuB,EAAC,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,IAAA,4CAAgC,EAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACjE,IAAA,4CAAgC,EAAC,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,IAAA,sCAAkB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAkC;QACtD,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,IAAA,iDAAqC,EAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,OAAgC,CAAC;QACjD,OAAO,IAAA,mCAAe,EAAC,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,IAAA,iDAAqC,EAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,OAAgC,CAAC;QACjD,OAAO,IAAA,kCAAc,EACnB,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,IAAA,iDAAqC,EAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,OAAgC,CAAC;QACjD,OAAO,IAAA,gCAAY,EACjB,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,IAAA,iDAAqC,EAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,OAAgC,CAAC;QACjD,OAAO,IAAA,qCAAiB,EAAC,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,uBAAM,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;AAriBD,sEAqiBC","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"]}
@@ -16,6 +16,16 @@ const instrumentServiceBusMessage_js_1 = require("./diagnostics/instrumentServic
16
16
  * @internal
17
17
  */
18
18
  class ServiceBusSenderImpl {
19
+ _context;
20
+ _entityPath;
21
+ identifier;
22
+ _retryOptions;
23
+ /**
24
+ * Denotes if close() was called on this sender
25
+ */
26
+ _isClosed = false;
27
+ _sender;
28
+ entityPath;
19
29
  get logPrefix() {
20
30
  return `[${this._context.connectionId}|sender:${this.entityPath}]`;
21
31
  }
@@ -26,10 +36,6 @@ class ServiceBusSenderImpl {
26
36
  constructor(_context, _entityPath, retryOptions = {}, identifier) {
27
37
  this._context = _context;
28
38
  this._entityPath = _entityPath;
29
- /**
30
- * Denotes if close() was called on this sender
31
- */
32
- this._isClosed = false;
33
39
  (0, errors_js_1.throwErrorIfConnectionClosed)(_context);
34
40
  this.entityPath = _entityPath;
35
41
  this.identifier = (0, utils_js_1.ensureValidIdentifier)(this.entityPath, identifier);
@@ -55,9 +61,12 @@ class ServiceBusSenderImpl {
55
61
  // Case 1: Single message
56
62
  (0, errors_js_1.throwIfNotValidServiceBusMessage)(messages, errors_js_1.errorInvalidMessageTypeSingleOrArray);
57
63
  const originalMessage = messages;
58
- const { message, spanContext } = (0, instrumentServiceBusMessage_js_1.instrumentMessage)(originalMessage, options !== null && options !== void 0 ? options : {}, this.entityPath, this._context.config.host, "publish");
64
+ const { message, spanContext } = (0, instrumentServiceBusMessage_js_1.instrumentMessage)(originalMessage, options ?? {}, this.entityPath, this._context.config.host, "publish");
59
65
  const spanLinks = spanContext ? [{ tracingContext: spanContext }] : [];
60
- return tracing_js_1.tracingClient.withSpan("ServiceBusSender.send", options !== null && options !== void 0 ? options : {}, (updatedOptions) => this._sender.send(message, updatedOptions), Object.assign({ spanLinks }, (0, tracing_js_1.toSpanOptions)({ entityPath: this.entityPath, host: this._context.config.host }, "publish", "client")));
66
+ return tracing_js_1.tracingClient.withSpan("ServiceBusSender.send", options ?? {}, (updatedOptions) => this._sender.send(message, updatedOptions), {
67
+ spanLinks,
68
+ ...(0, tracing_js_1.toSpanOptions)({ entityPath: this.entityPath, host: this._context.config.host }, "publish", "client"),
69
+ });
61
70
  }
62
71
  let batch;
63
72
  if (isServiceBusMessageBatch(messages)) {
@@ -80,7 +89,10 @@ class ServiceBusSenderImpl {
80
89
  tracingContext,
81
90
  };
82
91
  });
83
- return tracing_js_1.tracingClient.withSpan("ServiceBusSender.send", options !== null && options !== void 0 ? options : {}, (updatedOptions) => this._sender.sendBatch(batch, updatedOptions), Object.assign({ spanLinks }, (0, tracing_js_1.toSpanOptions)({ entityPath: this.entityPath, host: this._context.config.host }, "publish", "client")));
92
+ return tracing_js_1.tracingClient.withSpan("ServiceBusSender.send", options ?? {}, (updatedOptions) => this._sender.sendBatch(batch, updatedOptions), {
93
+ spanLinks,
94
+ ...(0, tracing_js_1.toSpanOptions)({ entityPath: this.entityPath, host: this._context.config.host }, "publish", "client"),
95
+ });
84
96
  }
85
97
  async createMessageBatch(options) {
86
98
  this._throwIfSenderOrConnectionClosed();
@@ -98,14 +110,19 @@ class ServiceBusSenderImpl {
98
110
  const scheduleMessageOperationPromise = async () => {
99
111
  return this._context
100
112
  .getManagementClient(this._entityPath)
101
- .scheduleMessages(scheduledEnqueueTimeUtc, messagesToSchedule, Object.assign(Object.assign({}, options), { associatedLinkName: this._sender.name, requestName: "scheduleMessages", timeoutInMs: this._retryOptions.timeoutInMs }));
113
+ .scheduleMessages(scheduledEnqueueTimeUtc, messagesToSchedule, {
114
+ ...options,
115
+ associatedLinkName: this._sender.name,
116
+ requestName: "scheduleMessages",
117
+ timeoutInMs: this._retryOptions.timeoutInMs,
118
+ });
102
119
  };
103
120
  const config = {
104
121
  operation: scheduleMessageOperationPromise,
105
122
  connectionId: this._context.connectionId,
106
123
  operationType: core_amqp_1.RetryOperationType.management,
107
124
  retryOptions: this._retryOptions,
108
- abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,
125
+ abortSignal: options?.abortSignal,
109
126
  };
110
127
  return (0, core_amqp_1.retry)(config);
111
128
  }
@@ -119,14 +136,19 @@ class ServiceBusSenderImpl {
119
136
  const cancelSchedulesMessagesOperationPromise = async () => {
120
137
  return this._context
121
138
  .getManagementClient(this._entityPath)
122
- .cancelScheduledMessages(sequenceNumbersToCancel, Object.assign(Object.assign({}, options), { associatedLinkName: this._sender.name, requestName: "cancelScheduledMessages", timeoutInMs: this._retryOptions.timeoutInMs }));
139
+ .cancelScheduledMessages(sequenceNumbersToCancel, {
140
+ ...options,
141
+ associatedLinkName: this._sender.name,
142
+ requestName: "cancelScheduledMessages",
143
+ timeoutInMs: this._retryOptions.timeoutInMs,
144
+ });
123
145
  };
124
146
  const config = {
125
147
  operation: cancelSchedulesMessagesOperationPromise,
126
148
  connectionId: this._context.connectionId,
127
149
  operationType: core_amqp_1.RetryOperationType.management,
128
150
  retryOptions: this._retryOptions,
129
- abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,
151
+ abortSignal: options?.abortSignal,
130
152
  };
131
153
  return (0, core_amqp_1.retry)(config);
132
154
  }