@azure/event-hubs 5.12.1-alpha.20240605.1 → 5.12.1

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 (607) hide show
  1. package/README.md +1 -1
  2. package/dist/browser/batchingPartitionChannel.d.ts +94 -0
  3. package/dist/browser/batchingPartitionChannel.d.ts.map +1 -0
  4. package/{dist-esm/src → dist/browser}/batchingPartitionChannel.js +4 -4
  5. package/dist/browser/batchingPartitionChannel.js.map +1 -0
  6. package/dist/browser/connectionContext.d.ts +107 -0
  7. package/dist/browser/connectionContext.d.ts.map +1 -0
  8. package/{dist-esm/src → dist/browser}/connectionContext.js +8 -8
  9. package/dist/browser/connectionContext.js.map +1 -0
  10. package/dist/browser/dataTransformer.d.ts +53 -0
  11. package/dist/browser/dataTransformer.d.ts.map +1 -0
  12. package/{dist-esm/src → dist/browser}/dataTransformer.js +2 -2
  13. package/dist/browser/dataTransformer.js.map +1 -0
  14. package/dist/browser/diagnostics/instrumentEventData.d.ts +28 -0
  15. package/dist/browser/diagnostics/instrumentEventData.d.ts.map +1 -0
  16. package/{dist-esm/src → dist/browser}/diagnostics/instrumentEventData.js +3 -3
  17. package/dist/browser/diagnostics/instrumentEventData.js.map +1 -0
  18. package/dist/browser/diagnostics/tracing.d.ts +19 -0
  19. package/dist/browser/diagnostics/tracing.d.ts.map +1 -0
  20. package/{dist-esm/src → dist/browser}/diagnostics/tracing.js +2 -2
  21. package/dist/browser/diagnostics/tracing.js.map +1 -0
  22. package/dist/browser/eventData.d.ts +295 -0
  23. package/dist/browser/eventData.d.ts.map +1 -0
  24. package/{dist-esm/src → dist/browser}/eventData.js +38 -4
  25. package/dist/browser/eventData.js.map +1 -0
  26. package/dist/browser/eventDataAdapter.d.ts +69 -0
  27. package/dist/browser/eventDataAdapter.d.ts.map +1 -0
  28. package/{dist-esm/src → dist/browser}/eventDataAdapter.js +1 -1
  29. package/dist/browser/eventDataAdapter.js.map +1 -0
  30. package/dist/browser/eventDataBatch.d.ts +225 -0
  31. package/dist/browser/eventDataBatch.d.ts.map +1 -0
  32. package/{dist-esm/src → dist/browser}/eventDataBatch.js +7 -4
  33. package/dist/browser/eventDataBatch.js.map +1 -0
  34. package/dist/browser/eventHubBufferedProducerClient.d.ts +323 -0
  35. package/dist/browser/eventHubBufferedProducerClient.d.ts.map +1 -0
  36. package/{dist-esm/src → dist/browser}/eventHubBufferedProducerClient.js +10 -9
  37. package/dist/browser/eventHubBufferedProducerClient.js.map +1 -0
  38. package/dist/browser/eventHubConsumerClient.d.ts +277 -0
  39. package/dist/browser/eventHubConsumerClient.d.ts.map +1 -0
  40. package/{dist-esm/src → dist/browser}/eventHubConsumerClient.js +12 -12
  41. package/dist/browser/eventHubConsumerClient.js.map +1 -0
  42. package/dist/browser/eventHubConsumerClientModels.d.ts +218 -0
  43. package/dist/browser/eventHubConsumerClientModels.d.ts.map +1 -0
  44. package/dist/browser/eventHubConsumerClientModels.js +4 -0
  45. package/dist/browser/eventHubConsumerClientModels.js.map +1 -0
  46. package/dist/browser/eventHubProducerClient.d.ts +266 -0
  47. package/dist/browser/eventHubProducerClient.d.ts.map +1 -0
  48. package/{dist-esm/src → dist/browser}/eventHubProducerClient.js +12 -10
  49. package/dist/browser/eventHubProducerClient.js.map +1 -0
  50. package/dist/browser/eventHubSender.d.ts +227 -0
  51. package/dist/browser/eventHubSender.d.ts.map +1 -0
  52. package/{dist-esm/src → dist/browser}/eventHubSender.js +11 -10
  53. package/dist/browser/eventHubSender.js.map +1 -0
  54. package/dist/browser/eventPosition.d.ts +73 -0
  55. package/dist/browser/eventPosition.d.ts.map +1 -0
  56. package/{dist-esm/src → dist/browser}/eventPosition.js +1 -1
  57. package/{dist-esm/src → dist/browser}/eventPosition.js.map +1 -1
  58. package/dist/browser/eventProcessor.d.ts +232 -0
  59. package/dist/browser/eventProcessor.d.ts.map +1 -0
  60. package/{dist-esm/src → dist/browser}/eventProcessor.js +18 -18
  61. package/dist/browser/eventProcessor.js.map +1 -0
  62. package/dist/browser/eventhubConnectionConfig.d.ts +96 -0
  63. package/dist/browser/eventhubConnectionConfig.d.ts.map +1 -0
  64. package/{dist-esm/src → dist/browser}/eventhubConnectionConfig.js +2 -2
  65. package/dist/browser/eventhubConnectionConfig.js.map +1 -0
  66. package/dist/browser/impl/awaitableQueue.d.ts +25 -0
  67. package/dist/browser/impl/awaitableQueue.d.ts.map +1 -0
  68. package/{dist-esm/src → dist/browser}/impl/awaitableQueue.js +1 -1
  69. package/{dist-esm/src → dist/browser}/impl/awaitableQueue.js.map +1 -1
  70. package/dist/browser/impl/partitionAssigner.d.ts +29 -0
  71. package/dist/browser/impl/partitionAssigner.d.ts.map +1 -0
  72. package/{dist-esm/src → dist/browser}/impl/partitionAssigner.js +2 -2
  73. package/dist/browser/impl/partitionAssigner.js.map +1 -0
  74. package/dist/browser/impl/partitionGate.d.ts +27 -0
  75. package/dist/browser/impl/partitionGate.d.ts.map +1 -0
  76. package/{dist-esm/src → dist/browser}/impl/partitionGate.js +1 -1
  77. package/{dist-esm/src → dist/browser}/impl/partitionGate.js.map +1 -1
  78. package/dist/browser/impl/partitionKeyToIdMapper.d.ts +6 -0
  79. package/dist/browser/impl/partitionKeyToIdMapper.d.ts.map +1 -0
  80. package/{dist-esm/src → dist/browser}/impl/partitionKeyToIdMapper.js +1 -1
  81. package/{dist-esm/src → dist/browser}/impl/partitionKeyToIdMapper.js.map +1 -1
  82. package/dist/browser/inMemoryCheckpointStore.d.ts +44 -0
  83. package/dist/browser/inMemoryCheckpointStore.d.ts.map +1 -0
  84. package/{dist-esm/src → dist/browser}/inMemoryCheckpointStore.js +3 -3
  85. package/dist/browser/inMemoryCheckpointStore.js.map +1 -0
  86. package/dist/browser/index.d.ts +21 -0
  87. package/dist/browser/index.d.ts.map +1 -0
  88. package/{dist-esm/src → dist/browser}/index.js +9 -9
  89. package/dist/browser/index.js.map +1 -0
  90. package/dist/browser/loadBalancerStrategies/balancedStrategy.d.ts +30 -0
  91. package/dist/browser/loadBalancerStrategies/balancedStrategy.d.ts.map +1 -0
  92. package/{dist-esm/src → dist/browser}/loadBalancerStrategies/balancedStrategy.js +2 -2
  93. package/dist/browser/loadBalancerStrategies/balancedStrategy.js.map +1 -0
  94. package/dist/browser/loadBalancerStrategies/greedyStrategy.d.ts +24 -0
  95. package/dist/browser/loadBalancerStrategies/greedyStrategy.d.ts.map +1 -0
  96. package/{dist-esm/src → dist/browser}/loadBalancerStrategies/greedyStrategy.js +2 -2
  97. package/dist/browser/loadBalancerStrategies/greedyStrategy.js.map +1 -0
  98. package/dist/browser/loadBalancerStrategies/loadBalancingStrategy.d.ts +28 -0
  99. package/dist/browser/loadBalancerStrategies/loadBalancingStrategy.d.ts.map +1 -0
  100. package/{dist-esm/src → dist/browser}/loadBalancerStrategies/loadBalancingStrategy.js +2 -2
  101. package/dist/browser/loadBalancerStrategies/loadBalancingStrategy.js.map +1 -0
  102. package/dist/browser/loadBalancerStrategies/unbalancedStrategy.d.ts +20 -0
  103. package/dist/browser/loadBalancerStrategies/unbalancedStrategy.d.ts.map +1 -0
  104. package/{dist-esm/src → dist/browser}/loadBalancerStrategies/unbalancedStrategy.js +1 -1
  105. package/dist/browser/loadBalancerStrategies/unbalancedStrategy.js.map +1 -0
  106. package/dist/browser/logger.d.ts +37 -0
  107. package/dist/browser/logger.d.ts.map +1 -0
  108. package/{dist-esm/src → dist/browser}/logger.js +1 -1
  109. package/{dist-esm/src → dist/browser}/logger.js.map +1 -1
  110. package/dist/browser/managementClient.d.ts +141 -0
  111. package/dist/browser/managementClient.d.ts.map +1 -0
  112. package/{dist-esm/src → dist/browser}/managementClient.js +7 -7
  113. package/dist/browser/managementClient.js.map +1 -0
  114. package/dist/browser/models/private.d.ts +185 -0
  115. package/dist/browser/models/private.d.ts.map +1 -0
  116. package/{dist-esm/src → dist/browser}/models/private.js +2 -2
  117. package/dist/browser/models/private.js.map +1 -0
  118. package/dist/browser/models/public.d.ts +240 -0
  119. package/dist/browser/models/public.d.ts.map +1 -0
  120. package/{dist-esm/src → dist/browser}/models/public.js +1 -1
  121. package/dist/browser/models/public.js.map +1 -0
  122. package/dist/browser/package.json +3 -0
  123. package/dist/browser/partitionProcessor.d.ts +134 -0
  124. package/dist/browser/partitionProcessor.d.ts.map +1 -0
  125. package/{dist-esm/src → dist/browser}/partitionProcessor.js +2 -2
  126. package/dist/browser/partitionProcessor.js.map +1 -0
  127. package/dist/browser/partitionPump.d.ts +38 -0
  128. package/dist/browser/partitionPump.d.ts.map +1 -0
  129. package/{dist-esm/src → dist/browser}/partitionPump.js +6 -7
  130. package/dist/browser/partitionPump.js.map +1 -0
  131. package/dist/browser/partitionReceiver.d.ts +82 -0
  132. package/dist/browser/partitionReceiver.d.ts.map +1 -0
  133. package/{dist-esm/src → dist/browser}/partitionReceiver.js +15 -12
  134. package/dist/browser/partitionReceiver.js.map +1 -0
  135. package/dist/browser/pumpManager.d.ts +72 -0
  136. package/dist/browser/pumpManager.d.ts.map +1 -0
  137. package/{dist-esm/src → dist/browser}/pumpManager.js +4 -4
  138. package/dist/browser/pumpManager.js.map +1 -0
  139. package/dist/browser/util/connectionStringUtils.d.ts +52 -0
  140. package/dist/browser/util/connectionStringUtils.d.ts.map +1 -0
  141. package/{dist-esm/src → dist/browser}/util/connectionStringUtils.js +1 -1
  142. package/{dist-esm/src → dist/browser}/util/connectionStringUtils.js.map +1 -1
  143. package/dist/browser/util/constants.d.ts +23 -0
  144. package/dist/browser/util/constants.d.ts.map +1 -0
  145. package/{dist-esm/src → dist/browser}/util/constants.js +1 -1
  146. package/{dist-esm/src → dist/browser}/util/constants.js.map +1 -1
  147. package/dist/browser/util/delayWithoutThrow.d.ts +8 -0
  148. package/dist/browser/util/delayWithoutThrow.d.ts.map +1 -0
  149. package/{dist-esm/src → dist/browser}/util/delayWithoutThrow.js +1 -1
  150. package/{dist-esm/src → dist/browser}/util/delayWithoutThrow.js.map +1 -1
  151. package/dist/browser/util/error.d.ts +39 -0
  152. package/dist/browser/util/error.d.ts.map +1 -0
  153. package/{dist-esm/src → dist/browser}/util/error.js +2 -2
  154. package/dist/browser/util/error.js.map +1 -0
  155. package/dist/browser/util/getPromiseParts.d.ts +10 -0
  156. package/dist/browser/util/getPromiseParts.d.ts.map +1 -0
  157. package/{dist-esm/src → dist/browser}/util/getPromiseParts.js +1 -1
  158. package/{dist-esm/src → dist/browser}/util/getPromiseParts.js.map +1 -1
  159. package/dist/browser/util/operationOptions.d.ts +16 -0
  160. package/dist/browser/util/operationOptions.d.ts.map +1 -0
  161. package/dist/browser/util/operationOptions.js +4 -0
  162. package/{dist-esm/src → dist/browser}/util/operationOptions.js.map +1 -1
  163. package/dist/browser/util/parseEndpoint.d.ts +11 -0
  164. package/dist/browser/util/parseEndpoint.d.ts.map +1 -0
  165. package/{dist-esm/src → dist/browser}/util/parseEndpoint.js +1 -1
  166. package/{dist-esm/src → dist/browser}/util/parseEndpoint.js.map +1 -1
  167. package/dist/browser/util/retries.d.ts +6 -0
  168. package/dist/browser/util/retries.d.ts.map +1 -0
  169. package/{dist-esm/src → dist/browser}/util/retries.js +1 -1
  170. package/{dist-esm/src → dist/browser}/util/retries.js.map +1 -1
  171. package/dist/browser/util/runtimeInfo-browser.d.mts.map +1 -0
  172. package/dist/browser/util/runtimeInfo-browser.mjs.map +1 -0
  173. package/dist/browser/util/runtimeInfo.d.ts +6 -0
  174. package/{dist-esm/src/util/runtimeInfo.browser.js → dist/browser/util/runtimeInfo.js} +2 -2
  175. package/dist/browser/util/timerLoop.d.ts +26 -0
  176. package/dist/browser/util/timerLoop.d.ts.map +1 -0
  177. package/{dist-esm/src → dist/browser}/util/timerLoop.js +1 -1
  178. package/{dist-esm/src → dist/browser}/util/timerLoop.js.map +1 -1
  179. package/dist/browser/util/typeGuards.d.ts +8 -0
  180. package/dist/browser/util/typeGuards.d.ts.map +1 -0
  181. package/{dist-esm/src → dist/browser}/util/typeGuards.js +1 -1
  182. package/{dist-esm/src → dist/browser}/util/typeGuards.js.map +1 -1
  183. package/dist/browser/util/utils.d.ts +7 -0
  184. package/dist/browser/util/utils.d.ts.map +1 -0
  185. package/{dist-esm/src → dist/browser}/util/utils.js +1 -1
  186. package/{dist-esm/src → dist/browser}/util/utils.js.map +1 -1
  187. package/dist/browser/withAuth.d.ts +25 -0
  188. package/dist/browser/withAuth.d.ts.map +1 -0
  189. package/{dist-esm/src → dist/browser}/withAuth.js +3 -3
  190. package/dist/browser/withAuth.js.map +1 -0
  191. package/dist/commonjs/batchingPartitionChannel.d.ts +94 -0
  192. package/dist/commonjs/batchingPartitionChannel.d.ts.map +1 -0
  193. package/dist/commonjs/batchingPartitionChannel.js +252 -0
  194. package/dist/commonjs/batchingPartitionChannel.js.map +1 -0
  195. package/dist/commonjs/connectionContext.d.ts +107 -0
  196. package/dist/commonjs/connectionContext.d.ts.map +1 -0
  197. package/dist/commonjs/connectionContext.js +324 -0
  198. package/dist/commonjs/connectionContext.js.map +1 -0
  199. package/dist/commonjs/dataTransformer.d.ts +53 -0
  200. package/dist/commonjs/dataTransformer.d.ts.map +1 -0
  201. package/dist/commonjs/dataTransformer.js +138 -0
  202. package/dist/commonjs/dataTransformer.js.map +1 -0
  203. package/dist/commonjs/diagnostics/instrumentEventData.d.ts +28 -0
  204. package/dist/commonjs/diagnostics/instrumentEventData.d.ts.map +1 -0
  205. package/dist/commonjs/diagnostics/instrumentEventData.js +73 -0
  206. package/dist/commonjs/diagnostics/instrumentEventData.js.map +1 -0
  207. package/dist/commonjs/diagnostics/tracing.d.ts +19 -0
  208. package/dist/commonjs/diagnostics/tracing.d.ts.map +1 -0
  209. package/dist/commonjs/diagnostics/tracing.js +44 -0
  210. package/dist/commonjs/diagnostics/tracing.js.map +1 -0
  211. package/dist/commonjs/eventData.d.ts +295 -0
  212. package/dist/commonjs/eventData.d.ts.map +1 -0
  213. package/dist/commonjs/eventData.js +253 -0
  214. package/dist/commonjs/eventData.js.map +1 -0
  215. package/dist/commonjs/eventDataAdapter.d.ts +69 -0
  216. package/dist/commonjs/eventDataAdapter.d.ts.map +1 -0
  217. package/dist/commonjs/eventDataAdapter.js +38 -0
  218. package/dist/commonjs/eventDataAdapter.js.map +1 -0
  219. package/dist/commonjs/eventDataBatch.d.ts +225 -0
  220. package/dist/commonjs/eventDataBatch.d.ts.map +1 -0
  221. package/dist/commonjs/eventDataBatch.js +254 -0
  222. package/dist/commonjs/eventDataBatch.js.map +1 -0
  223. package/dist/commonjs/eventHubBufferedProducerClient.d.ts +323 -0
  224. package/dist/commonjs/eventHubBufferedProducerClient.d.ts.map +1 -0
  225. package/dist/commonjs/eventHubBufferedProducerClient.js +289 -0
  226. package/dist/commonjs/eventHubBufferedProducerClient.js.map +1 -0
  227. package/dist/commonjs/eventHubConsumerClient.d.ts +277 -0
  228. package/dist/commonjs/eventHubConsumerClient.d.ts.map +1 -0
  229. package/dist/commonjs/eventHubConsumerClient.js +298 -0
  230. package/dist/commonjs/eventHubConsumerClient.js.map +1 -0
  231. package/dist/commonjs/eventHubConsumerClientModels.d.ts +218 -0
  232. package/dist/commonjs/eventHubConsumerClientModels.d.ts.map +1 -0
  233. package/dist/commonjs/eventHubConsumerClientModels.js +5 -0
  234. package/dist/commonjs/eventHubConsumerClientModels.js.map +1 -0
  235. package/dist/commonjs/eventHubProducerClient.d.ts +266 -0
  236. package/dist/commonjs/eventHubProducerClient.d.ts.map +1 -0
  237. package/dist/commonjs/eventHubProducerClient.js +319 -0
  238. package/dist/commonjs/eventHubProducerClient.js.map +1 -0
  239. package/dist/commonjs/eventHubSender.d.ts +227 -0
  240. package/dist/commonjs/eventHubSender.d.ts.map +1 -0
  241. package/dist/commonjs/eventHubSender.js +547 -0
  242. package/dist/commonjs/eventHubSender.js.map +1 -0
  243. package/dist/commonjs/eventPosition.d.ts +73 -0
  244. package/dist/commonjs/eventPosition.d.ts.map +1 -0
  245. package/dist/commonjs/eventPosition.js +128 -0
  246. package/dist/commonjs/eventPosition.js.map +1 -0
  247. package/dist/commonjs/eventProcessor.d.ts +232 -0
  248. package/dist/commonjs/eventProcessor.d.ts.map +1 -0
  249. package/dist/commonjs/eventProcessor.js +371 -0
  250. package/dist/commonjs/eventProcessor.js.map +1 -0
  251. package/dist/commonjs/eventhubConnectionConfig.d.ts +96 -0
  252. package/dist/commonjs/eventhubConnectionConfig.d.ts.map +1 -0
  253. package/dist/commonjs/eventhubConnectionConfig.js +101 -0
  254. package/dist/commonjs/eventhubConnectionConfig.js.map +1 -0
  255. package/dist/commonjs/impl/awaitableQueue.d.ts +25 -0
  256. package/dist/commonjs/impl/awaitableQueue.d.ts.map +1 -0
  257. package/dist/commonjs/impl/awaitableQueue.js +51 -0
  258. package/dist/commonjs/impl/awaitableQueue.js.map +1 -0
  259. package/dist/commonjs/impl/partitionAssigner.d.ts +29 -0
  260. package/dist/commonjs/impl/partitionAssigner.d.ts.map +1 -0
  261. package/dist/commonjs/impl/partitionAssigner.js +58 -0
  262. package/dist/commonjs/impl/partitionAssigner.js.map +1 -0
  263. package/dist/commonjs/impl/partitionGate.d.ts +27 -0
  264. package/dist/commonjs/impl/partitionGate.d.ts.map +1 -0
  265. package/dist/commonjs/impl/partitionGate.js +44 -0
  266. package/dist/commonjs/impl/partitionGate.js.map +1 -0
  267. package/dist/commonjs/impl/partitionKeyToIdMapper.d.ts +6 -0
  268. package/dist/commonjs/impl/partitionKeyToIdMapper.d.ts.map +1 -0
  269. package/dist/commonjs/impl/partitionKeyToIdMapper.js +115 -0
  270. package/dist/commonjs/impl/partitionKeyToIdMapper.js.map +1 -0
  271. package/dist/commonjs/inMemoryCheckpointStore.d.ts +44 -0
  272. package/dist/commonjs/inMemoryCheckpointStore.d.ts.map +1 -0
  273. package/dist/commonjs/inMemoryCheckpointStore.js +96 -0
  274. package/dist/commonjs/inMemoryCheckpointStore.js.map +1 -0
  275. package/dist/commonjs/index.d.ts +21 -0
  276. package/dist/commonjs/index.d.ts.map +1 -0
  277. package/dist/commonjs/index.js +26 -0
  278. package/dist/commonjs/index.js.map +1 -0
  279. package/dist/commonjs/loadBalancerStrategies/balancedStrategy.d.ts +30 -0
  280. package/dist/commonjs/loadBalancerStrategies/balancedStrategy.d.ts.map +1 -0
  281. package/dist/commonjs/loadBalancerStrategies/balancedStrategy.js +43 -0
  282. package/dist/commonjs/loadBalancerStrategies/balancedStrategy.js.map +1 -0
  283. package/dist/commonjs/loadBalancerStrategies/greedyStrategy.d.ts +24 -0
  284. package/dist/commonjs/loadBalancerStrategies/greedyStrategy.d.ts.map +1 -0
  285. package/dist/commonjs/loadBalancerStrategies/greedyStrategy.js +32 -0
  286. package/dist/commonjs/loadBalancerStrategies/greedyStrategy.js.map +1 -0
  287. package/dist/commonjs/loadBalancerStrategies/loadBalancingStrategy.d.ts +28 -0
  288. package/dist/commonjs/loadBalancerStrategies/loadBalancingStrategy.d.ts.map +1 -0
  289. package/dist/commonjs/loadBalancerStrategies/loadBalancingStrategy.js +248 -0
  290. package/dist/commonjs/loadBalancerStrategies/loadBalancingStrategy.js.map +1 -0
  291. package/dist/commonjs/loadBalancerStrategies/unbalancedStrategy.d.ts +20 -0
  292. package/dist/commonjs/loadBalancerStrategies/unbalancedStrategy.d.ts.map +1 -0
  293. package/dist/commonjs/loadBalancerStrategies/unbalancedStrategy.js +26 -0
  294. package/dist/commonjs/loadBalancerStrategies/unbalancedStrategy.js.map +1 -0
  295. package/dist/commonjs/logger.d.ts +37 -0
  296. package/dist/commonjs/logger.d.ts.map +1 -0
  297. package/dist/commonjs/logger.js +65 -0
  298. package/dist/commonjs/logger.js.map +1 -0
  299. package/dist/commonjs/managementClient.d.ts +141 -0
  300. package/dist/commonjs/managementClient.d.ts.map +1 -0
  301. package/dist/commonjs/managementClient.js +274 -0
  302. package/dist/commonjs/managementClient.js.map +1 -0
  303. package/dist/commonjs/models/private.d.ts +185 -0
  304. package/dist/commonjs/models/private.d.ts.map +1 -0
  305. package/dist/commonjs/models/private.js +6 -0
  306. package/dist/commonjs/models/private.js.map +1 -0
  307. package/dist/commonjs/models/public.d.ts +240 -0
  308. package/dist/commonjs/models/public.d.ts.map +1 -0
  309. package/dist/commonjs/models/public.js +21 -0
  310. package/dist/commonjs/models/public.js.map +1 -0
  311. package/dist/commonjs/package.json +3 -0
  312. package/dist/commonjs/partitionProcessor.d.ts +134 -0
  313. package/dist/commonjs/partitionProcessor.d.ts.map +1 -0
  314. package/dist/commonjs/partitionProcessor.js +138 -0
  315. package/dist/commonjs/partitionProcessor.js.map +1 -0
  316. package/dist/commonjs/partitionPump.d.ts +38 -0
  317. package/dist/commonjs/partitionPump.d.ts.map +1 -0
  318. package/dist/commonjs/partitionPump.js +171 -0
  319. package/dist/commonjs/partitionPump.js.map +1 -0
  320. package/dist/commonjs/partitionReceiver.d.ts +82 -0
  321. package/dist/commonjs/partitionReceiver.d.ts.map +1 -0
  322. package/dist/commonjs/partitionReceiver.js +335 -0
  323. package/dist/commonjs/partitionReceiver.js.map +1 -0
  324. package/dist/commonjs/pumpManager.d.ts +72 -0
  325. package/dist/commonjs/pumpManager.d.ts.map +1 -0
  326. package/dist/commonjs/pumpManager.js +122 -0
  327. package/dist/commonjs/pumpManager.js.map +1 -0
  328. package/{types/latest → dist/commonjs}/tsdoc-metadata.json +1 -1
  329. package/dist/commonjs/util/connectionStringUtils.d.ts +52 -0
  330. package/dist/commonjs/util/connectionStringUtils.d.ts.map +1 -0
  331. package/dist/commonjs/util/connectionStringUtils.js +51 -0
  332. package/dist/commonjs/util/connectionStringUtils.js.map +1 -0
  333. package/dist/commonjs/util/constants.d.ts +23 -0
  334. package/dist/commonjs/util/constants.d.ts.map +1 -0
  335. package/dist/commonjs/util/constants.js +28 -0
  336. package/dist/commonjs/util/constants.js.map +1 -0
  337. package/dist/commonjs/util/delayWithoutThrow.d.ts +8 -0
  338. package/dist/commonjs/util/delayWithoutThrow.d.ts.map +1 -0
  339. package/dist/commonjs/util/delayWithoutThrow.js +20 -0
  340. package/dist/commonjs/util/delayWithoutThrow.js.map +1 -0
  341. package/dist/commonjs/util/error.d.ts +39 -0
  342. package/dist/commonjs/util/error.d.ts.map +1 -0
  343. package/dist/commonjs/util/error.js +110 -0
  344. package/dist/commonjs/util/error.js.map +1 -0
  345. package/dist/commonjs/util/getPromiseParts.d.ts +10 -0
  346. package/dist/commonjs/util/getPromiseParts.d.ts.map +1 -0
  347. package/dist/commonjs/util/getPromiseParts.js +23 -0
  348. package/dist/commonjs/util/getPromiseParts.js.map +1 -0
  349. package/dist/commonjs/util/operationOptions.d.ts +16 -0
  350. package/dist/commonjs/util/operationOptions.d.ts.map +1 -0
  351. package/dist/commonjs/util/operationOptions.js +5 -0
  352. package/dist/commonjs/util/operationOptions.js.map +1 -0
  353. package/dist/commonjs/util/parseEndpoint.d.ts +11 -0
  354. package/dist/commonjs/util/parseEndpoint.d.ts.map +1 -0
  355. package/dist/commonjs/util/parseEndpoint.js +20 -0
  356. package/dist/commonjs/util/parseEndpoint.js.map +1 -0
  357. package/dist/commonjs/util/retries.d.ts +6 -0
  358. package/dist/commonjs/util/retries.d.ts.map +1 -0
  359. package/dist/commonjs/util/retries.js +16 -0
  360. package/dist/commonjs/util/retries.js.map +1 -0
  361. package/dist/commonjs/util/runtimeInfo.d.ts +6 -0
  362. package/dist/commonjs/util/runtimeInfo.d.ts.map +1 -0
  363. package/dist/commonjs/util/runtimeInfo.js +15 -0
  364. package/dist/commonjs/util/runtimeInfo.js.map +1 -0
  365. package/dist/commonjs/util/timerLoop.d.ts +26 -0
  366. package/dist/commonjs/util/timerLoop.d.ts.map +1 -0
  367. package/dist/commonjs/util/timerLoop.js +30 -0
  368. package/dist/commonjs/util/timerLoop.js.map +1 -0
  369. package/dist/commonjs/util/typeGuards.d.ts +8 -0
  370. package/dist/commonjs/util/typeGuards.d.ts.map +1 -0
  371. package/dist/commonjs/util/typeGuards.js +15 -0
  372. package/dist/commonjs/util/typeGuards.js.map +1 -0
  373. package/dist/commonjs/util/utils.d.ts +7 -0
  374. package/dist/commonjs/util/utils.d.ts.map +1 -0
  375. package/dist/commonjs/util/utils.js +16 -0
  376. package/dist/commonjs/util/utils.js.map +1 -0
  377. package/dist/commonjs/withAuth.d.ts +25 -0
  378. package/dist/commonjs/withAuth.d.ts.map +1 -0
  379. package/dist/commonjs/withAuth.js +88 -0
  380. package/dist/commonjs/withAuth.js.map +1 -0
  381. package/dist/esm/batchingPartitionChannel.d.ts +94 -0
  382. package/dist/esm/batchingPartitionChannel.d.ts.map +1 -0
  383. package/dist/esm/batchingPartitionChannel.js +248 -0
  384. package/dist/esm/batchingPartitionChannel.js.map +1 -0
  385. package/dist/esm/connectionContext.d.ts +107 -0
  386. package/dist/esm/connectionContext.d.ts.map +1 -0
  387. package/dist/esm/connectionContext.js +320 -0
  388. package/dist/esm/connectionContext.js.map +1 -0
  389. package/dist/esm/dataTransformer.d.ts +53 -0
  390. package/dist/esm/dataTransformer.d.ts.map +1 -0
  391. package/dist/esm/dataTransformer.js +133 -0
  392. package/dist/esm/dataTransformer.js.map +1 -0
  393. package/dist/esm/diagnostics/instrumentEventData.d.ts +28 -0
  394. package/dist/esm/diagnostics/instrumentEventData.d.ts.map +1 -0
  395. package/dist/esm/diagnostics/instrumentEventData.js +68 -0
  396. package/dist/esm/diagnostics/instrumentEventData.js.map +1 -0
  397. package/dist/esm/diagnostics/tracing.d.ts +19 -0
  398. package/dist/esm/diagnostics/tracing.d.ts.map +1 -0
  399. package/dist/esm/diagnostics/tracing.js +40 -0
  400. package/dist/esm/diagnostics/tracing.js.map +1 -0
  401. package/dist/esm/eventData.d.ts +295 -0
  402. package/dist/esm/eventData.d.ts.map +1 -0
  403. package/dist/esm/eventData.js +245 -0
  404. package/dist/esm/eventData.js.map +1 -0
  405. package/dist/esm/eventDataAdapter.d.ts +69 -0
  406. package/dist/esm/eventDataAdapter.d.ts.map +1 -0
  407. package/dist/esm/eventDataAdapter.js +35 -0
  408. package/dist/esm/eventDataAdapter.js.map +1 -0
  409. package/dist/esm/eventDataBatch.d.ts +225 -0
  410. package/dist/esm/eventDataBatch.d.ts.map +1 -0
  411. package/dist/esm/eventDataBatch.js +249 -0
  412. package/dist/esm/eventDataBatch.js.map +1 -0
  413. package/dist/esm/eventHubBufferedProducerClient.d.ts +323 -0
  414. package/dist/esm/eventHubBufferedProducerClient.d.ts.map +1 -0
  415. package/dist/esm/eventHubBufferedProducerClient.js +285 -0
  416. package/dist/esm/eventHubBufferedProducerClient.js.map +1 -0
  417. package/dist/esm/eventHubConsumerClient.d.ts +277 -0
  418. package/dist/esm/eventHubConsumerClient.d.ts.map +1 -0
  419. package/dist/esm/eventHubConsumerClient.js +293 -0
  420. package/dist/esm/eventHubConsumerClient.js.map +1 -0
  421. package/dist/esm/eventHubConsumerClientModels.d.ts +218 -0
  422. package/dist/esm/eventHubConsumerClientModels.d.ts.map +1 -0
  423. package/dist/esm/eventHubConsumerClientModels.js +4 -0
  424. package/dist/esm/eventHubConsumerClientModels.js.map +1 -0
  425. package/dist/esm/eventHubProducerClient.d.ts +266 -0
  426. package/dist/esm/eventHubProducerClient.d.ts.map +1 -0
  427. package/dist/esm/eventHubProducerClient.js +315 -0
  428. package/dist/esm/eventHubProducerClient.js.map +1 -0
  429. package/dist/esm/eventHubSender.d.ts +227 -0
  430. package/dist/esm/eventHubSender.d.ts.map +1 -0
  431. package/dist/esm/eventHubSender.js +541 -0
  432. package/dist/esm/eventHubSender.js.map +1 -0
  433. package/dist/esm/eventPosition.d.ts +73 -0
  434. package/dist/esm/eventPosition.d.ts.map +1 -0
  435. package/dist/esm/eventPosition.js +121 -0
  436. package/dist/esm/eventPosition.js.map +1 -0
  437. package/dist/esm/eventProcessor.d.ts +232 -0
  438. package/dist/esm/eventProcessor.d.ts.map +1 -0
  439. package/dist/esm/eventProcessor.js +367 -0
  440. package/dist/esm/eventProcessor.js.map +1 -0
  441. package/dist/esm/eventhubConnectionConfig.d.ts +96 -0
  442. package/dist/esm/eventhubConnectionConfig.d.ts.map +1 -0
  443. package/dist/esm/eventhubConnectionConfig.js +98 -0
  444. package/dist/esm/eventhubConnectionConfig.js.map +1 -0
  445. package/dist/esm/impl/awaitableQueue.d.ts +25 -0
  446. package/dist/esm/impl/awaitableQueue.d.ts.map +1 -0
  447. package/dist/esm/impl/awaitableQueue.js +47 -0
  448. package/dist/esm/impl/awaitableQueue.js.map +1 -0
  449. package/dist/esm/impl/partitionAssigner.d.ts +29 -0
  450. package/dist/esm/impl/partitionAssigner.d.ts.map +1 -0
  451. package/dist/esm/impl/partitionAssigner.js +54 -0
  452. package/dist/esm/impl/partitionAssigner.js.map +1 -0
  453. package/dist/esm/impl/partitionGate.d.ts +27 -0
  454. package/dist/esm/impl/partitionGate.d.ts.map +1 -0
  455. package/dist/esm/impl/partitionGate.js +40 -0
  456. package/dist/esm/impl/partitionGate.js.map +1 -0
  457. package/dist/esm/impl/partitionKeyToIdMapper.d.ts +6 -0
  458. package/dist/esm/impl/partitionKeyToIdMapper.d.ts.map +1 -0
  459. package/dist/esm/impl/partitionKeyToIdMapper.js +111 -0
  460. package/dist/esm/impl/partitionKeyToIdMapper.js.map +1 -0
  461. package/dist/esm/inMemoryCheckpointStore.d.ts +44 -0
  462. package/dist/esm/inMemoryCheckpointStore.d.ts.map +1 -0
  463. package/dist/esm/inMemoryCheckpointStore.js +92 -0
  464. package/dist/esm/inMemoryCheckpointStore.js.map +1 -0
  465. package/dist/esm/index.d.ts +21 -0
  466. package/dist/esm/index.d.ts.map +1 -0
  467. package/dist/esm/index.js +12 -0
  468. package/dist/esm/index.js.map +1 -0
  469. package/dist/esm/loadBalancerStrategies/balancedStrategy.d.ts +30 -0
  470. package/dist/esm/loadBalancerStrategies/balancedStrategy.d.ts.map +1 -0
  471. package/dist/esm/loadBalancerStrategies/balancedStrategy.js +39 -0
  472. package/dist/esm/loadBalancerStrategies/balancedStrategy.js.map +1 -0
  473. package/dist/esm/loadBalancerStrategies/greedyStrategy.d.ts +24 -0
  474. package/dist/esm/loadBalancerStrategies/greedyStrategy.d.ts.map +1 -0
  475. package/dist/esm/loadBalancerStrategies/greedyStrategy.js +28 -0
  476. package/dist/esm/loadBalancerStrategies/greedyStrategy.js.map +1 -0
  477. package/dist/esm/loadBalancerStrategies/loadBalancingStrategy.d.ts +28 -0
  478. package/dist/esm/loadBalancerStrategies/loadBalancingStrategy.d.ts.map +1 -0
  479. package/dist/esm/loadBalancerStrategies/loadBalancingStrategy.js +245 -0
  480. package/dist/esm/loadBalancerStrategies/loadBalancingStrategy.js.map +1 -0
  481. package/dist/esm/loadBalancerStrategies/unbalancedStrategy.d.ts +20 -0
  482. package/dist/esm/loadBalancerStrategies/unbalancedStrategy.d.ts.map +1 -0
  483. package/dist/esm/loadBalancerStrategies/unbalancedStrategy.js +22 -0
  484. package/dist/esm/loadBalancerStrategies/unbalancedStrategy.js.map +1 -0
  485. package/dist/esm/logger.d.ts +37 -0
  486. package/dist/esm/logger.d.ts.map +1 -0
  487. package/dist/esm/logger.js +56 -0
  488. package/dist/esm/logger.js.map +1 -0
  489. package/dist/esm/managementClient.d.ts +141 -0
  490. package/dist/esm/managementClient.d.ts.map +1 -0
  491. package/dist/esm/managementClient.js +270 -0
  492. package/dist/esm/managementClient.js.map +1 -0
  493. package/dist/esm/models/private.d.ts +185 -0
  494. package/dist/esm/models/private.d.ts.map +1 -0
  495. package/dist/esm/models/private.js +4 -0
  496. package/dist/esm/models/private.js.map +1 -0
  497. package/dist/esm/models/public.d.ts +240 -0
  498. package/dist/esm/models/public.d.ts.map +1 -0
  499. package/dist/esm/models/public.js +18 -0
  500. package/dist/esm/models/public.js.map +1 -0
  501. package/dist/esm/package.json +3 -0
  502. package/dist/esm/partitionProcessor.d.ts +134 -0
  503. package/dist/esm/partitionProcessor.d.ts.map +1 -0
  504. package/dist/esm/partitionProcessor.js +134 -0
  505. package/dist/esm/partitionProcessor.js.map +1 -0
  506. package/dist/esm/partitionPump.d.ts +38 -0
  507. package/dist/esm/partitionPump.d.ts.map +1 -0
  508. package/dist/esm/partitionPump.js +166 -0
  509. package/dist/esm/partitionPump.js.map +1 -0
  510. package/dist/esm/partitionReceiver.d.ts +82 -0
  511. package/dist/esm/partitionReceiver.d.ts.map +1 -0
  512. package/dist/esm/partitionReceiver.js +330 -0
  513. package/dist/esm/partitionReceiver.js.map +1 -0
  514. package/dist/esm/pumpManager.d.ts +72 -0
  515. package/dist/esm/pumpManager.d.ts.map +1 -0
  516. package/dist/esm/pumpManager.js +118 -0
  517. package/dist/esm/pumpManager.js.map +1 -0
  518. package/dist/esm/util/connectionStringUtils.d.ts +52 -0
  519. package/dist/esm/util/connectionStringUtils.d.ts.map +1 -0
  520. package/dist/esm/util/connectionStringUtils.js +48 -0
  521. package/dist/esm/util/connectionStringUtils.js.map +1 -0
  522. package/dist/esm/util/constants.d.ts +23 -0
  523. package/dist/esm/util/constants.d.ts.map +1 -0
  524. package/dist/esm/util/constants.js +25 -0
  525. package/dist/esm/util/constants.js.map +1 -0
  526. package/dist/esm/util/delayWithoutThrow.d.ts +8 -0
  527. package/dist/esm/util/delayWithoutThrow.d.ts.map +1 -0
  528. package/dist/esm/util/delayWithoutThrow.js +17 -0
  529. package/dist/esm/util/delayWithoutThrow.js.map +1 -0
  530. package/dist/esm/util/error.d.ts +39 -0
  531. package/dist/esm/util/error.d.ts.map +1 -0
  532. package/dist/esm/util/error.js +103 -0
  533. package/dist/esm/util/error.js.map +1 -0
  534. package/dist/esm/util/getPromiseParts.d.ts +10 -0
  535. package/dist/esm/util/getPromiseParts.d.ts.map +1 -0
  536. package/dist/esm/util/getPromiseParts.js +20 -0
  537. package/dist/esm/util/getPromiseParts.js.map +1 -0
  538. package/dist/esm/util/operationOptions.d.ts +16 -0
  539. package/dist/esm/util/operationOptions.d.ts.map +1 -0
  540. package/dist/esm/util/operationOptions.js +4 -0
  541. package/dist/esm/util/operationOptions.js.map +1 -0
  542. package/dist/esm/util/parseEndpoint.d.ts +11 -0
  543. package/dist/esm/util/parseEndpoint.d.ts.map +1 -0
  544. package/dist/esm/util/parseEndpoint.js +17 -0
  545. package/dist/esm/util/parseEndpoint.js.map +1 -0
  546. package/dist/esm/util/retries.d.ts +6 -0
  547. package/dist/esm/util/retries.d.ts.map +1 -0
  548. package/dist/esm/util/retries.js +13 -0
  549. package/dist/esm/util/retries.js.map +1 -0
  550. package/dist/esm/util/runtimeInfo.d.ts +6 -0
  551. package/dist/esm/util/runtimeInfo.d.ts.map +1 -0
  552. package/{dist-esm/src → dist/esm}/util/runtimeInfo.js +1 -1
  553. package/{dist-esm/src → dist/esm}/util/runtimeInfo.js.map +1 -1
  554. package/dist/esm/util/timerLoop.d.ts +26 -0
  555. package/dist/esm/util/timerLoop.d.ts.map +1 -0
  556. package/dist/esm/util/timerLoop.js +27 -0
  557. package/dist/esm/util/timerLoop.js.map +1 -0
  558. package/dist/esm/util/typeGuards.d.ts +8 -0
  559. package/dist/esm/util/typeGuards.d.ts.map +1 -0
  560. package/dist/esm/util/typeGuards.js +12 -0
  561. package/dist/esm/util/typeGuards.js.map +1 -0
  562. package/dist/esm/util/utils.d.ts +7 -0
  563. package/dist/esm/util/utils.d.ts.map +1 -0
  564. package/dist/esm/util/utils.js +13 -0
  565. package/dist/esm/util/utils.js.map +1 -0
  566. package/dist/esm/withAuth.d.ts +25 -0
  567. package/dist/esm/withAuth.d.ts.map +1 -0
  568. package/dist/esm/withAuth.js +84 -0
  569. package/dist/esm/withAuth.js.map +1 -0
  570. package/{types/latest → dist}/event-hubs.d.ts +1 -3
  571. package/package.json +84 -76
  572. package/dist/index.js +0 -5369
  573. package/dist/index.js.map +0 -1
  574. package/dist-esm/src/batchingPartitionChannel.js.map +0 -1
  575. package/dist-esm/src/connectionContext.js.map +0 -1
  576. package/dist-esm/src/dataTransformer.js.map +0 -1
  577. package/dist-esm/src/diagnostics/instrumentEventData.js.map +0 -1
  578. package/dist-esm/src/diagnostics/tracing.js.map +0 -1
  579. package/dist-esm/src/eventData.js.map +0 -1
  580. package/dist-esm/src/eventDataAdapter.js.map +0 -1
  581. package/dist-esm/src/eventDataBatch.js.map +0 -1
  582. package/dist-esm/src/eventHubBufferedProducerClient.js.map +0 -1
  583. package/dist-esm/src/eventHubConsumerClient.js.map +0 -1
  584. package/dist-esm/src/eventHubConsumerClientModels.js +0 -4
  585. package/dist-esm/src/eventHubConsumerClientModels.js.map +0 -1
  586. package/dist-esm/src/eventHubProducerClient.js.map +0 -1
  587. package/dist-esm/src/eventHubSender.js.map +0 -1
  588. package/dist-esm/src/eventProcessor.js.map +0 -1
  589. package/dist-esm/src/eventhubConnectionConfig.js.map +0 -1
  590. package/dist-esm/src/impl/partitionAssigner.js.map +0 -1
  591. package/dist-esm/src/inMemoryCheckpointStore.js.map +0 -1
  592. package/dist-esm/src/index.js.map +0 -1
  593. package/dist-esm/src/loadBalancerStrategies/balancedStrategy.js.map +0 -1
  594. package/dist-esm/src/loadBalancerStrategies/greedyStrategy.js.map +0 -1
  595. package/dist-esm/src/loadBalancerStrategies/loadBalancingStrategy.js.map +0 -1
  596. package/dist-esm/src/loadBalancerStrategies/unbalancedStrategy.js.map +0 -1
  597. package/dist-esm/src/managementClient.js.map +0 -1
  598. package/dist-esm/src/models/private.js.map +0 -1
  599. package/dist-esm/src/models/public.js.map +0 -1
  600. package/dist-esm/src/partitionProcessor.js.map +0 -1
  601. package/dist-esm/src/partitionPump.js.map +0 -1
  602. package/dist-esm/src/partitionReceiver.js.map +0 -1
  603. package/dist-esm/src/pumpManager.js.map +0 -1
  604. package/dist-esm/src/util/error.js.map +0 -1
  605. package/dist-esm/src/util/operationOptions.js +0 -4
  606. package/dist-esm/src/util/runtimeInfo.browser.js.map +0 -1
  607. package/dist-esm/src/withAuth.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ import { RetryOptions } from "@azure/core-amqp";
2
+ /**
3
+ * @internal
4
+ */
5
+ export declare function getRetryAttemptTimeoutInMs(retryOptions?: RetryOptions): number;
6
+ //# sourceMappingURL=retries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retries.d.ts","sourceRoot":"","sources":["../../../src/util/retries.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,YAAY,GAAE,YAAiB,GAAG,MAAM,CAKlF"}
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { Constants } from "@azure/core-amqp";
4
4
  /**
5
5
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"retries.js","sourceRoot":"","sources":["../../../src/util/retries.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAgB,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,eAA6B,EAAE;IACxE,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;IACrC,OAAO,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9D,CAAC,CAAC,SAAS,CAAC,2BAA2B;QACvC,CAAC,CAAC,WAAW,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Constants, RetryOptions } from \"@azure/core-amqp\";\n\n/**\n * @internal\n */\nexport function getRetryAttemptTimeoutInMs(retryOptions: RetryOptions = {}): number {\n const { timeoutInMs } = retryOptions;\n return typeof timeoutInMs !== \"number\" || !isFinite(timeoutInMs)\n ? Constants.defaultOperationTimeoutInMs\n : timeoutInMs;\n}\n"]}
1
+ {"version":3,"file":"retries.js","sourceRoot":"","sources":["../../../src/util/retries.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAgB,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,eAA6B,EAAE;IACxE,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;IACrC,OAAO,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9D,CAAC,CAAC,SAAS,CAAC,2BAA2B;QACvC,CAAC,CAAC,WAAW,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants, RetryOptions } from \"@azure/core-amqp\";\n\n/**\n * @internal\n */\nexport function getRetryAttemptTimeoutInMs(retryOptions: RetryOptions = {}): number {\n const { timeoutInMs } = retryOptions;\n return typeof timeoutInMs !== \"number\" || !isFinite(timeoutInMs)\n ? Constants.defaultOperationTimeoutInMs\n : timeoutInMs;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeInfo-browser.d.mts","sourceRoot":"","sources":["../../../src/util/runtimeInfo-browser.mts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeInfo-browser.mjs","sourceRoot":"","sources":["../../../src/util/runtimeInfo-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAYlC;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,4BAA4B,cAAc,EAAE,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,OAAO,SAAS,CAAC,UAAU,CAAC;AAC9B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ninterface Window {}\ndeclare let self: Window & typeof globalThis & { navigator: Navigator };\n\ninterface Navigator {\n /**\n * Returns a string representing the browser version info.\n */\n appVersion: string;\n}\n\n/**\n * Returns information about the platform this function is being run on.\n * @internal\n */\nexport function getRuntimeInfo(): string {\n return `BROWSER-VERSION; Browser ${getReleaseInfo()}`;\n}\n\nfunction getReleaseInfo(): string {\n if (typeof self === \"undefined\") {\n return \"\";\n }\n\n const navigator = self.navigator;\n return navigator.appVersion;\n}\n"]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Returns information about the platform this function is being run on.
3
+ * @internal
4
+ */
5
+ export declare function getRuntimeInfo(): string;
6
+ //# sourceMappingURL=runtimeInfo-browser.d.mts.map
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  /**
4
4
  * Returns information about the platform this function is being run on.
5
5
  * @internal
@@ -14,4 +14,4 @@ function getReleaseInfo() {
14
14
  const navigator = self.navigator;
15
15
  return navigator.appVersion;
16
16
  }
17
- //# sourceMappingURL=runtimeInfo.browser.js.map
17
+ //# sourceMappingURL=runtimeInfo-browser.mjs.map
@@ -0,0 +1,26 @@
1
+ /**
2
+ * A timer loop is a loop over multiple instances of a promise every specific
3
+ * time interval. It is different from `setInterval` in that it waits until the
4
+ * promise is settled before it goes to the next iteration.
5
+ * */
6
+ export interface TimerLoop {
7
+ /**
8
+ * Starts the timer loop. If the loop is already running, the loop will be
9
+ * restarted.
10
+ */
11
+ start: () => void;
12
+ /**
13
+ * Stops the timer loop. If the loop is not running, it is a no-op.
14
+ */
15
+ stop: () => void;
16
+ /**
17
+ * Whether the loop is running.
18
+ */
19
+ isRunning: boolean;
20
+ }
21
+ /**
22
+ * Creates a timer loop with the given timeout and task.
23
+ * @internal
24
+ */
25
+ export declare function createTimerLoop(timeoutInMs: number, createTask: () => Promise<unknown>): TimerLoop;
26
+ //# sourceMappingURL=timerLoop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timerLoop.d.ts","sourceRoot":"","sources":["../../../src/util/timerLoop.ts"],"names":[],"mappings":"AAGA;;;;KAIK;AACL,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GACjC,SAAS,CAuBX"}
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  /**
4
4
  * Creates a timer loop with the given timeout and task.
5
5
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"timerLoop.js","sourceRoot":"","sources":["../../../src/util/timerLoop.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAuBlC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,UAAkC;IAElC,IAAI,KAAoC,CAAC;IACzC,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,GAAG,EAAE;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CACH,UAAU,EAAE;iBACT,KAAK,CAAC,GAAG,EAAE;gBACV,kCAAkC;YACpC,CAAC,CAAC;iBACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,WAAW,CACZ,CAAC;YACF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;QACD,SAAS,EAAE,KAAK;KACjB,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * A timer loop is a loop over multiple instances of a promise every specific\n * time interval. It is different from `setInterval` in that it waits until the\n * promise is settled before it goes to the next iteration.\n * */\nexport interface TimerLoop {\n /**\n * Starts the timer loop. If the loop is already running, the loop will be\n * restarted.\n */\n start: () => void;\n /**\n * Stops the timer loop. If the loop is not running, it is a no-op.\n */\n stop: () => void;\n /**\n * Whether the loop is running.\n */\n isRunning: boolean;\n}\n\n/**\n * Creates a timer loop with the given timeout and task.\n * @internal\n */\nexport function createTimerLoop(\n timeoutInMs: number,\n createTask: () => Promise<unknown>,\n): TimerLoop {\n let token: ReturnType<typeof setTimeout>;\n const loop = {\n start: () => {\n clearTimeout(token);\n token = setTimeout(\n () =>\n createTask()\n .catch(() => {\n /** eats up any unhandled error */\n })\n .finally(loop.start),\n timeoutInMs,\n );\n loop.isRunning = true;\n },\n stop: () => {\n clearTimeout(token);\n loop.isRunning = false;\n },\n isRunning: false,\n };\n return loop;\n}\n"]}
1
+ {"version":3,"file":"timerLoop.js","sourceRoot":"","sources":["../../../src/util/timerLoop.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAuBlC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,UAAkC;IAElC,IAAI,KAAoC,CAAC;IACzC,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,GAAG,EAAE;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CACH,UAAU,EAAE;iBACT,KAAK,CAAC,GAAG,EAAE;gBACV,kCAAkC;YACpC,CAAC,CAAC;iBACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,WAAW,CACZ,CAAC;YACF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;QACD,SAAS,EAAE,KAAK;KACjB,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A timer loop is a loop over multiple instances of a promise every specific\n * time interval. It is different from `setInterval` in that it waits until the\n * promise is settled before it goes to the next iteration.\n * */\nexport interface TimerLoop {\n /**\n * Starts the timer loop. If the loop is already running, the loop will be\n * restarted.\n */\n start: () => void;\n /**\n * Stops the timer loop. If the loop is not running, it is a no-op.\n */\n stop: () => void;\n /**\n * Whether the loop is running.\n */\n isRunning: boolean;\n}\n\n/**\n * Creates a timer loop with the given timeout and task.\n * @internal\n */\nexport function createTimerLoop(\n timeoutInMs: number,\n createTask: () => Promise<unknown>,\n): TimerLoop {\n let token: ReturnType<typeof setTimeout>;\n const loop = {\n start: () => {\n clearTimeout(token);\n token = setTimeout(\n () =>\n createTask()\n .catch(() => {\n /** eats up any unhandled error */\n })\n .finally(loop.start),\n timeoutInMs,\n );\n loop.isRunning = true;\n },\n stop: () => {\n clearTimeout(token);\n loop.isRunning = false;\n },\n isRunning: false,\n };\n return loop;\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import { NamedKeyCredential, SASCredential, TokenCredential } from "@azure/core-auth";
2
+ /**
3
+ * Typeguard that checks if the input is a credential type the clients accept.
4
+ * @param thing - Any object.
5
+ * @internal
6
+ */
7
+ export declare function isCredential(thing: unknown): thing is TokenCredential | NamedKeyCredential | SASCredential;
8
+ //# sourceMappingURL=typeGuards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["../../../src/util/typeGuards.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,eAAe,EAIhB,MAAM,kBAAkB,CAAC;AAE1B;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,eAAe,GAAG,kBAAkB,GAAG,aAAa,CAE/D"}
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { isNamedKeyCredential, isSASCredential, isTokenCredential, } from "@azure/core-auth";
4
4
  /**
5
5
  * Typeguard that checks if the input is a credential type the clients accept.
@@ -1 +1 @@
1
- {"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../src/util/typeGuards.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAIL,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAc;IAEd,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC3F,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n NamedKeyCredential,\n SASCredential,\n TokenCredential,\n isNamedKeyCredential,\n isSASCredential,\n isTokenCredential,\n} from \"@azure/core-auth\";\n\n/**\n * Typeguard that checks if the input is a credential type the clients accept.\n * @param thing - Any object.\n * @internal\n */\nexport function isCredential(\n thing: unknown,\n): thing is TokenCredential | NamedKeyCredential | SASCredential {\n return isTokenCredential(thing) || isNamedKeyCredential(thing) || isSASCredential(thing);\n}\n"]}
1
+ {"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../src/util/typeGuards.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAIL,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAc;IAEd,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC3F,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n NamedKeyCredential,\n SASCredential,\n TokenCredential,\n isNamedKeyCredential,\n isSASCredential,\n isTokenCredential,\n} from \"@azure/core-auth\";\n\n/**\n * Typeguard that checks if the input is a credential type the clients accept.\n * @param thing - Any object.\n * @internal\n */\nexport function isCredential(\n thing: unknown,\n): thing is TokenCredential | NamedKeyCredential | SASCredential {\n return isTokenCredential(thing) || isNamedKeyCredential(thing) || isSASCredential(thing);\n}\n"]}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Returns a random name by appending a guid to the input string as follows:
3
+ * `{name}-{uuid}`.
4
+ * @internal
5
+ */
6
+ export declare function getRandomName(prefix?: string): string;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/util/utils.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrD"}
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { randomUUID } from "@azure/core-util";
4
4
  /**
5
5
  * Returns a random name by appending a guid to the input string as follows:
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/util/utils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { randomUUID } from \"@azure/core-util\";\n\n/**\n * Returns a random name by appending a guid to the input string as follows:\n * `{name}-{uuid}`.\n * @internal\n */\nexport function getRandomName(prefix?: string): string {\n const str = randomUUID();\n return prefix ? `${prefix}-${str}` : str;\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/util/utils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID } from \"@azure/core-util\";\n\n/**\n * Returns a random name by appending a guid to the input string as follows:\n * `{name}-{uuid}`.\n * @internal\n */\nexport function getRandomName(prefix?: string): string {\n const str = randomUUID();\n return prefix ? `${prefix}-${str}` : str;\n}\n"]}
@@ -0,0 +1,25 @@
1
+ import { CbsClient } from "@azure/core-amqp";
2
+ import { AbortSignalLike } from "@azure/abort-controller";
3
+ import { ConnectionContext } from "./connectionContext.js";
4
+ import { TimerLoop } from "./util/timerLoop.js";
5
+ import { SimpleLogger } from "./logger.js";
6
+ /**
7
+ *
8
+ * @param callback - The callback to be executed after the token is obtained.
9
+ * @param context - The connection context.
10
+ * @param audience - The audience for which the token is needed.
11
+ * @param timeoutInMs - The timeout in milliseconds.
12
+ * @param logger - The logger to be used for logging.
13
+ * @returns A TimerLoop that keeps the token refreshed.
14
+ * @internal
15
+ */
16
+ export declare function withAuth(callback: () => Promise<void>, context: ConnectionContext, audience: string, timeoutInMs: number, logger: SimpleLogger, options: {
17
+ abortSignal?: AbortSignalLike;
18
+ }): Promise<TimerLoop>;
19
+ /**
20
+ * @internal
21
+ */
22
+ export declare function openCbsSession(client: CbsClient, timeoutAfterStartTime: number, { abortSignal }?: {
23
+ abortSignal?: AbortSignalLike;
24
+ }): Promise<void>;
25
+ //# sourceMappingURL=withAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withAuth.d.ts","sourceRoot":"","sources":["../../src/withAuth.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,SAAS,EAEV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAmB,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAU,MAAM,aAAa,CAAC;AAEnD;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC7B,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE;IACP,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B,GACA,OAAO,CAAC,SAAS,CAAC,CAoBpB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,qBAAqB,EAAE,MAAM,EAC7B,EAAE,WAAW,EAAE,GAAE;IAAE,WAAW,CAAC,EAAE,eAAe,CAAA;CAAO,GACtD,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -1,8 +1,8 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { Constants, TokenType, defaultCancellableLock, isSasTokenProvider, } from "@azure/core-amqp";
4
- import { createTimerLoop } from "./util/timerLoop";
5
- import { logObj } from "./logger";
4
+ import { createTimerLoop } from "./util/timerLoop.js";
5
+ import { logObj } from "./logger.js";
6
6
  /**
7
7
  *
8
8
  * @param callback - The callback to be executed after the token is obtained.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withAuth.js","sourceRoot":"","sources":["../../src/withAuth.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n Constants,\n TokenType,\n defaultCancellableLock,\n isSasTokenProvider,\n SasTokenProvider,\n CbsClient,\n CbsResponse,\n} from \"@azure/core-amqp\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AccessToken, TokenCredential } from \"@azure/core-auth\";\nimport { ConnectionContext } from \"./connectionContext.js\";\nimport { createTimerLoop, TimerLoop } from \"./util/timerLoop.js\";\nimport { SimpleLogger, logObj } from \"./logger.js\";\n\n/**\n *\n * @param callback - The callback to be executed after the token is obtained.\n * @param context - The connection context.\n * @param audience - The audience for which the token is needed.\n * @param timeoutInMs - The timeout in milliseconds.\n * @param logger - The logger to be used for logging.\n * @returns A TimerLoop that keeps the token refreshed.\n * @internal\n */\nexport async function withAuth(\n callback: () => Promise<void>,\n context: ConnectionContext,\n audience: string,\n timeoutInMs: number,\n logger: SimpleLogger,\n options: {\n abortSignal?: AbortSignalLike;\n },\n): Promise<TimerLoop> {\n const info = await getTokenInfo(context.tokenCredential, audience);\n await setupClaimNegotiation(context, audience, info, timeoutInMs, logger, options);\n await callback();\n async function createTask(): Promise<void> {\n try {\n const info2 = await getTokenInfo(context.tokenCredential, audience);\n await setupClaimNegotiation(context, audience, info2, timeoutInMs, logger, options);\n logger.verbose(\n `next token renewal is in ${info2.timeToLiveInMs} milliseconds @(${new Date(\n Date.now() + info2.timeToLiveInMs,\n ).toString()}).`,\n );\n } catch (err) {\n logger.verbose(`an error occurred while renewing the token: ${logObj(err)}`);\n }\n }\n const loop = createTimerLoop(info.timeToLiveInMs, createTask);\n loop.start();\n return loop;\n}\n\n/**\n * @internal\n */\nexport async function openCbsSession(\n client: CbsClient,\n timeoutAfterStartTime: number,\n { abortSignal }: { abortSignal?: AbortSignalLike } = {},\n): Promise<void> {\n return defaultCancellableLock.acquire(\n client.cbsLock,\n () =>\n client.init({\n abortSignal,\n timeoutInMs: timeoutAfterStartTime - Date.now(),\n }),\n {\n abortSignal,\n timeoutInMs: timeoutAfterStartTime - Date.now(),\n },\n );\n}\n\n/**\n * A representation of an access token.\n * @internal\n */\ninterface TokenInfo {\n /** The access token */\n token: AccessToken;\n /** The type of the token */\n type: TokenType;\n /** The time duration after which the token should be refreshed */\n timeToLiveInMs: number;\n}\n\nasync function getAadToken(cred: TokenCredential): Promise<TokenInfo> {\n const token = await cred.getToken(Constants.aadEventHubsScope);\n if (!token) {\n throw new Error(`Failed to get token from the provided \"TokenCredential\" object`);\n }\n return {\n token,\n type: TokenType.CbsTokenTypeJwt,\n timeToLiveInMs: token.expiresOnTimestamp - Date.now() - 2 * 60 * 1000,\n };\n}\n\nasync function getSharedKeyBasedToken(\n cred: SasTokenProvider,\n audience: string,\n): Promise<TokenInfo> {\n return {\n token: await cred.getToken(audience),\n type: TokenType.CbsTokenTypeSas,\n timeToLiveInMs: 45 * 60 * 1000,\n };\n}\n\nasync function getTokenInfo(\n cred: SasTokenProvider | TokenCredential,\n audience: string,\n): Promise<TokenInfo> {\n return isSasTokenProvider(cred) ? getSharedKeyBasedToken(cred, audience) : getAadToken(cred);\n}\n\nfunction negotiateClaim(\n { token, type }: TokenInfo,\n audience: string,\n cbsSession: CbsClient,\n timeoutAfterStartTime: number,\n lock: string,\n abortSignal?: AbortSignalLike,\n): Promise<CbsResponse> {\n return defaultCancellableLock.acquire(\n lock,\n () =>\n cbsSession.negotiateClaim(audience, token.token, type, {\n abortSignal,\n timeoutInMs: timeoutAfterStartTime - Date.now(),\n }),\n {\n abortSignal,\n timeoutInMs: timeoutAfterStartTime - Date.now(),\n },\n );\n}\n\nasync function setupClaimNegotiation(\n context: ConnectionContext,\n audience: string,\n info: TokenInfo,\n timeoutInMs: number,\n logger: SimpleLogger,\n {\n abortSignal,\n }: {\n abortSignal?: AbortSignalLike;\n },\n): Promise<void> {\n const startTime = Date.now();\n logger.verbose(\n `acquiring cbs lock: '${context.cbsSession.cbsLock}' for creating the cbs session`,\n );\n\n await openCbsSession(context.cbsSession, timeoutInMs + startTime, { abortSignal });\n logger.verbose(`acquiring cbs lock: '${context.negotiateClaimLock}' for cbs auth`);\n await negotiateClaim(\n info,\n audience,\n context.cbsSession,\n timeoutInMs + startTime,\n context.negotiateClaimLock,\n abortSignal,\n );\n logger.verbose(\"claim negotiation succeeded\");\n}\n"]}
@@ -0,0 +1,94 @@
1
+ import { AmqpAnnotatedMessage } from "@azure/core-amqp";
2
+ import { EventData, EventHubBufferedProducerClientOptions, EventHubProducerClient, OperationOptions } from "./index.js";
3
+ import { AbortSignalLike } from "@azure/abort-controller";
4
+ export interface BatchingPartitionChannelProps {
5
+ loopAbortSignal: AbortSignalLike;
6
+ maxBufferSize: number;
7
+ maxWaitTimeInMs: number;
8
+ partitionId: string;
9
+ producer: EventHubProducerClient;
10
+ /**
11
+ * The handler to call once a batch has successfully published.
12
+ */
13
+ onSendEventsSuccessHandler?: EventHubBufferedProducerClientOptions["onSendEventsSuccessHandler"];
14
+ /**
15
+ * The handler to call when a batch fails to publish.
16
+ */
17
+ onSendEventsErrorHandler: EventHubBufferedProducerClientOptions["onSendEventsErrorHandler"];
18
+ }
19
+ /**
20
+ * The `BatchingPartitionChannel` is responsible for accepting enqueued events
21
+ * and optimally batching and sending them to an Event Hub.
22
+ * @internal
23
+ */
24
+ export declare class BatchingPartitionChannel {
25
+ private _eventQueue;
26
+ private _batchedEvents;
27
+ private _bufferCount;
28
+ private _readyQueue;
29
+ private _flushState;
30
+ private _isRunning;
31
+ private _lastBatchCreationTime;
32
+ private _loopAbortSignal;
33
+ private _maxBufferSize;
34
+ private _maxWaitTimeInMs;
35
+ private _onSendEventsErrorHandler;
36
+ private _onSendEventsSuccessHandler?;
37
+ private _partitionId;
38
+ private _producer;
39
+ constructor({ loopAbortSignal, maxBufferSize, maxWaitTimeInMs, onSendEventsErrorHandler, onSendEventsSuccessHandler, partitionId, producer, }: BatchingPartitionChannelProps);
40
+ getCurrentBufferedCount(): number;
41
+ enqueueEvent(event: EventData | AmqpAnnotatedMessage): Promise<void>;
42
+ /**
43
+ * Sets the flush state so that no new events can be enqueued until
44
+ * all the currently buffered events are sent to the Event Hub.
45
+ *
46
+ * Returns a promise that resolves once flushing is complete.
47
+ */
48
+ flush(_options?: OperationOptions): Promise<void>;
49
+ /**
50
+ * Returns a promise that resolves once there is room for events to be added
51
+ * to the buffer.
52
+ */
53
+ private _ready;
54
+ /**
55
+ * Starts the loop that creates batches and sends them to the Event Hub.
56
+ *
57
+ * The loop will run until the `_loopAbortSignal` is aborted.
58
+ */
59
+ private _startPublishLoop;
60
+ /**
61
+ * Helper method that returns an `EventDataBatch`.
62
+ * This also has the side effects of
63
+ * - keeping track of batch creation time: needed for maxWaitTime calculations.
64
+ * - clearing reference to batched events.
65
+ * - incrementing the readiness: creating a new batch indicates the buffer
66
+ * should have room, so we can resolve some pending `ready()` calls.
67
+ */
68
+ private _createBatch;
69
+ /**
70
+ * This method will resolve as many pending `ready()` calls as it can
71
+ * based on how much space remains in the buffer.
72
+ *
73
+ * If the channel is currently flushing, this is a no-op. This prevents
74
+ * `enqueueEvent` calls from adding the event to the buffer until flushing
75
+ * completes.
76
+ */
77
+ private _incrementReadiness;
78
+ /**
79
+ * Calls the user-provided `onSendEventsSuccessHandler` with the events
80
+ * that were successfully sent.
81
+ */
82
+ private _reportSuccess;
83
+ /**
84
+ * Calls the user-provided `onSendEventsErrorHandler` with an error and the events
85
+ * that were not successfully sent.
86
+ */
87
+ private _reportFailure;
88
+ /**
89
+ * Updates the channel's flush state once the size of the
90
+ * event buffer has decreased to 0.
91
+ */
92
+ private _updateFlushState;
93
+ }
94
+ //# sourceMappingURL=batchingPartitionChannel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchingPartitionChannel.d.ts","sourceRoot":"","sources":["../../src/batchingPartitionChannel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAS,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACL,SAAS,EAET,qCAAqC,EACrC,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM1D,MAAM,WAAW,6BAA6B;IAC5C,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,sBAAsB,CAAC;IACjC;;OAEG;IACH,0BAA0B,CAAC,EAAE,qCAAqC,CAAC,4BAA4B,CAAC,CAAC;IACjG;;OAEG;IACH,wBAAwB,EAAE,qCAAqC,CAAC,0BAA0B,CAAC,CAAC;CAC7F;AAED;;;;GAIG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,WAAW,CAA0D;IAC7E,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,WAAW,CAGX;IACR,OAAO,CAAC,WAAW,CAIjB;IACF,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,sBAAsB,CAAa;IAC3C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,yBAAyB,CAAoE;IACrG,OAAO,CAAC,2BAA2B,CAAC,CAAsE;IAE1G,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAyB;gBAE9B,EACV,eAAe,EACf,aAAa,EACb,eAAe,EACf,wBAAwB,EACxB,0BAA0B,EAC1B,WAAW,EACX,QAAQ,GACT,EAAE,6BAA6B;IAUhC,uBAAuB,IAAI,MAAM;IAI3B,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB1E;;;;;OAKG;IACG,KAAK,CAAC,QAAQ,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3D;;;OAGG;IACH,OAAO,CAAC,MAAM;IAmBd;;;;OAIG;YACW,iBAAiB;IAuF/B;;;;;;;OAOG;YACW,YAAY;IAU1B;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAmBtB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAW1B"}
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.BatchingPartitionChannel = void 0;
6
+ const core_amqp_1 = require("@azure/core-amqp");
7
+ const core_util_1 = require("@azure/core-util");
8
+ const awaitableQueue_js_1 = require("./impl/awaitableQueue.js");
9
+ const getPromiseParts_js_1 = require("./util/getPromiseParts.js");
10
+ const logger_js_1 = require("./logger.js");
11
+ const core_util_2 = require("@azure/core-util");
12
+ /**
13
+ * The `BatchingPartitionChannel` is responsible for accepting enqueued events
14
+ * and optimally batching and sending them to an Event Hub.
15
+ * @internal
16
+ */
17
+ class BatchingPartitionChannel {
18
+ constructor({ loopAbortSignal, maxBufferSize, maxWaitTimeInMs, onSendEventsErrorHandler, onSendEventsSuccessHandler, partitionId, producer, }) {
19
+ this._eventQueue = new awaitableQueue_js_1.AwaitableQueue();
20
+ this._batchedEvents = [];
21
+ this._bufferCount = 0;
22
+ this._readyQueue = [];
23
+ this._flushState = {
24
+ isFlushing: false,
25
+ };
26
+ this._isRunning = false;
27
+ this._lastBatchCreationTime = 0;
28
+ this._loopAbortSignal = loopAbortSignal;
29
+ this._maxBufferSize = maxBufferSize;
30
+ this._maxWaitTimeInMs = maxWaitTimeInMs;
31
+ this._onSendEventsErrorHandler = onSendEventsErrorHandler;
32
+ this._onSendEventsSuccessHandler = onSendEventsSuccessHandler;
33
+ this._partitionId = partitionId;
34
+ this._producer = producer;
35
+ }
36
+ getCurrentBufferedCount() {
37
+ return this._bufferCount;
38
+ }
39
+ async enqueueEvent(event) {
40
+ await this._ready();
41
+ this._eventQueue.push(event);
42
+ this._bufferCount++;
43
+ if (!this._isRunning) {
44
+ this._isRunning = true;
45
+ this._startPublishLoop().catch((e) => {
46
+ logger_js_1.logger.error(`The following error occured during batch creation or sending: ${JSON.stringify(e, undefined, " ")}`);
47
+ });
48
+ }
49
+ }
50
+ /**
51
+ * Sets the flush state so that no new events can be enqueued until
52
+ * all the currently buffered events are sent to the Event Hub.
53
+ *
54
+ * Returns a promise that resolves once flushing is complete.
55
+ */
56
+ async flush(_options = {}) {
57
+ const state = this._flushState;
58
+ if (state.isFlushing) {
59
+ return state.currentPromise;
60
+ }
61
+ if (this.getCurrentBufferedCount() === 0) {
62
+ return Promise.resolve();
63
+ }
64
+ const { promise, resolve } = (0, getPromiseParts_js_1.getPromiseParts)();
65
+ this._flushState = { isFlushing: true, currentPromise: promise, resolve };
66
+ return promise;
67
+ }
68
+ /**
69
+ * Returns a promise that resolves once there is room for events to be added
70
+ * to the buffer.
71
+ */
72
+ _ready() {
73
+ const currentBufferedCount = this.getCurrentBufferedCount();
74
+ // If the buffer isn't full and we don't have any pending `ready()` calls,
75
+ // then it's safe to return right away.
76
+ if (currentBufferedCount < this._maxBufferSize &&
77
+ !this._readyQueue.length &&
78
+ !this._flushState.isFlushing) {
79
+ return Promise.resolve();
80
+ }
81
+ const { promise: readyPromise, reject, resolve } = (0, getPromiseParts_js_1.getPromiseParts)();
82
+ this._readyQueue.push({ resolve, reject });
83
+ return readyPromise;
84
+ }
85
+ /**
86
+ * Starts the loop that creates batches and sends them to the Event Hub.
87
+ *
88
+ * The loop will run until the `_loopAbortSignal` is aborted.
89
+ */
90
+ async _startPublishLoop() {
91
+ let batch;
92
+ // `eventToAddToBatch` is used to keep track of an event that has been removed
93
+ // from the queue, but has not yet been added to a batch.
94
+ // This prevents losing an event if a `sendBatch` or `createBatch` call fails
95
+ // before the event is added to a batch.
96
+ let eventToAddToBatch;
97
+ while (!this._loopAbortSignal.aborted) {
98
+ try {
99
+ if (!(0, core_util_1.isDefined)(batch)) {
100
+ batch = await this._createBatch();
101
+ }
102
+ const timeSinceLastBatchCreation = Date.now() - this._lastBatchCreationTime;
103
+ const maximumTimeToWaitForEvent = batch.count
104
+ ? Math.max(this._maxWaitTimeInMs - timeSinceLastBatchCreation, 0)
105
+ : this._maxWaitTimeInMs;
106
+ const event = eventToAddToBatch !== null && eventToAddToBatch !== void 0 ? eventToAddToBatch : (await (0, core_util_2.cancelablePromiseRace)([
107
+ (abortOptions) => this._eventQueue.shift(abortOptions),
108
+ (abortOptions) => (0, core_amqp_1.delay)(maximumTimeToWaitForEvent, abortOptions.abortSignal, abortOptions.abortErrorMsg),
109
+ ], { abortSignal: this._loopAbortSignal }));
110
+ if (!event) {
111
+ // We didn't receive an event within the allotted time.
112
+ // Send the existing batch if it has events in it.
113
+ if (batch.count) {
114
+ await this._producer.sendBatch(batch);
115
+ this._reportSuccess();
116
+ batch = await this._createBatch();
117
+ }
118
+ continue;
119
+ }
120
+ else if (!eventToAddToBatch) {
121
+ eventToAddToBatch = event;
122
+ }
123
+ const didAdd = batch.tryAdd(event);
124
+ if (didAdd) {
125
+ // This event will definitely make it to one of the user-provided handlers
126
+ // since it was added to a batch.
127
+ // Store it so we can return it in a handler later.
128
+ this._batchedEvents.push(event);
129
+ // Clear reference to existing event since it has been added to the batch.
130
+ eventToAddToBatch = undefined;
131
+ }
132
+ if (didAdd && batch.count >= this._maxBufferSize) {
133
+ // Whenever batch.count exceeds the max count of buffered events, send the batch.
134
+ await this._producer.sendBatch(batch);
135
+ this._reportSuccess();
136
+ batch = await this._createBatch();
137
+ }
138
+ else if (!didAdd && batch.count) {
139
+ // If the event wasn't able to be added and the current batch isn't empty,
140
+ // attempt to send the current batch and add the event to a new batch.
141
+ await this._producer.sendBatch(batch);
142
+ this._reportSuccess();
143
+ batch = await this._createBatch();
144
+ }
145
+ if (!didAdd && !batch.tryAdd(event)) {
146
+ // TODO: Report MaxMesageSizeExceeded error. Mimic service's error.
147
+ this._reportFailure(new Error("Placeholder for max message size exceeded"), event);
148
+ }
149
+ else if (!didAdd) {
150
+ // Handles the case where the event _was_ successfull added to the new batch.
151
+ this._batchedEvents.push(event);
152
+ }
153
+ // Clear reference to existing event since it has been added to the batch.
154
+ eventToAddToBatch = undefined;
155
+ }
156
+ catch (err) {
157
+ if (!(0, core_util_1.isObjectWithProperties)(err, ["name"]) || err.name !== "AbortError") {
158
+ this._reportFailure(err);
159
+ batch = undefined;
160
+ this._batchedEvents = [];
161
+ }
162
+ }
163
+ }
164
+ }
165
+ /**
166
+ * Helper method that returns an `EventDataBatch`.
167
+ * This also has the side effects of
168
+ * - keeping track of batch creation time: needed for maxWaitTime calculations.
169
+ * - clearing reference to batched events.
170
+ * - incrementing the readiness: creating a new batch indicates the buffer
171
+ * should have room, so we can resolve some pending `ready()` calls.
172
+ */
173
+ async _createBatch() {
174
+ this._lastBatchCreationTime = Date.now();
175
+ this._batchedEvents = [];
176
+ const batch = await this._producer.createBatch({
177
+ partitionId: this._partitionId,
178
+ });
179
+ this._incrementReadiness();
180
+ return batch;
181
+ }
182
+ /**
183
+ * This method will resolve as many pending `ready()` calls as it can
184
+ * based on how much space remains in the buffer.
185
+ *
186
+ * If the channel is currently flushing, this is a no-op. This prevents
187
+ * `enqueueEvent` calls from adding the event to the buffer until flushing
188
+ * completes.
189
+ */
190
+ _incrementReadiness() {
191
+ var _a;
192
+ if (this._flushState.isFlushing) {
193
+ return;
194
+ }
195
+ const currentBufferedCount = this.getCurrentBufferedCount();
196
+ const num = Math.min(this._maxBufferSize - currentBufferedCount, this._readyQueue.length);
197
+ for (let i = 0; i < num; i++) {
198
+ (_a = this._readyQueue.shift()) === null || _a === void 0 ? void 0 : _a.resolve();
199
+ }
200
+ }
201
+ /**
202
+ * Calls the user-provided `onSendEventsSuccessHandler` with the events
203
+ * that were successfully sent.
204
+ */
205
+ _reportSuccess() {
206
+ var _a;
207
+ this._bufferCount = this._bufferCount - this._batchedEvents.length;
208
+ this._updateFlushState();
209
+ try {
210
+ (_a = this._onSendEventsSuccessHandler) === null || _a === void 0 ? void 0 : _a.call(this, {
211
+ events: this._batchedEvents,
212
+ partitionId: this._partitionId,
213
+ });
214
+ }
215
+ catch (e) {
216
+ logger_js_1.logger.error(`The following error occurred in the onSendEventsSuccessHandler: ${JSON.stringify(e, undefined, " ")}`);
217
+ }
218
+ }
219
+ /**
220
+ * Calls the user-provided `onSendEventsErrorHandler` with an error and the events
221
+ * that were not successfully sent.
222
+ */
223
+ _reportFailure(err, event) {
224
+ this._bufferCount = this._bufferCount - (event ? 1 : this._batchedEvents.length);
225
+ this._updateFlushState();
226
+ try {
227
+ this._onSendEventsErrorHandler({
228
+ error: err,
229
+ events: event ? [event] : this._batchedEvents,
230
+ partitionId: this._partitionId,
231
+ });
232
+ }
233
+ catch (e) {
234
+ logger_js_1.logger.error(`The following error occurred in the onSendEventsErrorHandler: ${JSON.stringify(e, undefined, " ")}`);
235
+ }
236
+ }
237
+ /**
238
+ * Updates the channel's flush state once the size of the
239
+ * event buffer has decreased to 0.
240
+ */
241
+ _updateFlushState() {
242
+ const state = this._flushState;
243
+ if (!state.isFlushing || this.getCurrentBufferedCount() !== 0) {
244
+ return;
245
+ }
246
+ state.resolve();
247
+ this._flushState = { isFlushing: false };
248
+ this._incrementReadiness();
249
+ }
250
+ }
251
+ exports.BatchingPartitionChannel = BatchingPartitionChannel;
252
+ //# sourceMappingURL=batchingPartitionChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchingPartitionChannel.js","sourceRoot":"","sources":["../../src/batchingPartitionChannel.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AmqpAnnotatedMessage, delay } from \"@azure/core-amqp\";\nimport {\n EventData,\n EventDataBatch,\n EventHubBufferedProducerClientOptions,\n EventHubProducerClient,\n OperationOptions,\n} from \"./index.js\";\nimport { isDefined, isObjectWithProperties, AbortOptions } from \"@azure/core-util\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AwaitableQueue } from \"./impl/awaitableQueue.js\";\nimport { getPromiseParts } from \"./util/getPromiseParts.js\";\nimport { logger } from \"./logger.js\";\nimport { cancelablePromiseRace } from \"@azure/core-util\";\n\nexport interface BatchingPartitionChannelProps {\n loopAbortSignal: AbortSignalLike;\n maxBufferSize: number;\n maxWaitTimeInMs: number;\n partitionId: string;\n producer: EventHubProducerClient;\n /**\n * The handler to call once a batch has successfully published.\n */\n onSendEventsSuccessHandler?: EventHubBufferedProducerClientOptions[\"onSendEventsSuccessHandler\"];\n /**\n * The handler to call when a batch fails to publish.\n */\n onSendEventsErrorHandler: EventHubBufferedProducerClientOptions[\"onSendEventsErrorHandler\"];\n}\n\n/**\n * The `BatchingPartitionChannel` is responsible for accepting enqueued events\n * and optimally batching and sending them to an Event Hub.\n * @internal\n */\nexport class BatchingPartitionChannel {\n private _eventQueue = new AwaitableQueue<EventData | AmqpAnnotatedMessage>();\n private _batchedEvents: Array<EventData | AmqpAnnotatedMessage> = [];\n private _bufferCount: number = 0;\n private _readyQueue: Array<{\n resolve: (value: void) => void;\n reject: (reason?: any) => void;\n }> = [];\n private _flushState:\n | { isFlushing: false }\n | { isFlushing: true; currentPromise: Promise<void>; resolve: () => void } = {\n isFlushing: false,\n };\n private _isRunning: boolean = false;\n private _lastBatchCreationTime: number = 0;\n private _loopAbortSignal: AbortSignalLike;\n private _maxBufferSize: number;\n private _maxWaitTimeInMs: number;\n private _onSendEventsErrorHandler: EventHubBufferedProducerClientOptions[\"onSendEventsErrorHandler\"];\n private _onSendEventsSuccessHandler?: EventHubBufferedProducerClientOptions[\"onSendEventsSuccessHandler\"];\n\n private _partitionId: string;\n private _producer: EventHubProducerClient;\n\n constructor({\n loopAbortSignal,\n maxBufferSize,\n maxWaitTimeInMs,\n onSendEventsErrorHandler,\n onSendEventsSuccessHandler,\n partitionId,\n producer,\n }: BatchingPartitionChannelProps) {\n this._loopAbortSignal = loopAbortSignal;\n this._maxBufferSize = maxBufferSize;\n this._maxWaitTimeInMs = maxWaitTimeInMs;\n this._onSendEventsErrorHandler = onSendEventsErrorHandler;\n this._onSendEventsSuccessHandler = onSendEventsSuccessHandler;\n this._partitionId = partitionId;\n this._producer = producer;\n }\n\n getCurrentBufferedCount(): number {\n return this._bufferCount;\n }\n\n async enqueueEvent(event: EventData | AmqpAnnotatedMessage): Promise<void> {\n await this._ready();\n this._eventQueue.push(event);\n this._bufferCount++;\n\n if (!this._isRunning) {\n this._isRunning = true;\n this._startPublishLoop().catch((e) => {\n logger.error(\n `The following error occured during batch creation or sending: ${JSON.stringify(\n e,\n undefined,\n \" \",\n )}`,\n );\n });\n }\n }\n\n /**\n * Sets the flush state so that no new events can be enqueued until\n * all the currently buffered events are sent to the Event Hub.\n *\n * Returns a promise that resolves once flushing is complete.\n */\n async flush(_options: OperationOptions = {}): Promise<void> {\n const state = this._flushState;\n if (state.isFlushing) {\n return state.currentPromise;\n }\n\n if (this.getCurrentBufferedCount() === 0) {\n return Promise.resolve();\n }\n\n const { promise, resolve } = getPromiseParts<void>();\n this._flushState = { isFlushing: true, currentPromise: promise, resolve };\n\n return promise;\n }\n\n /**\n * Returns a promise that resolves once there is room for events to be added\n * to the buffer.\n */\n private _ready(): Promise<void> {\n const currentBufferedCount = this.getCurrentBufferedCount();\n\n // If the buffer isn't full and we don't have any pending `ready()` calls,\n // then it's safe to return right away.\n if (\n currentBufferedCount < this._maxBufferSize &&\n !this._readyQueue.length &&\n !this._flushState.isFlushing\n ) {\n return Promise.resolve();\n }\n\n const { promise: readyPromise, reject, resolve } = getPromiseParts<void>();\n this._readyQueue.push({ resolve, reject });\n\n return readyPromise;\n }\n\n /**\n * Starts the loop that creates batches and sends them to the Event Hub.\n *\n * The loop will run until the `_loopAbortSignal` is aborted.\n */\n private async _startPublishLoop() {\n let batch: EventDataBatch | undefined;\n // `eventToAddToBatch` is used to keep track of an event that has been removed\n // from the queue, but has not yet been added to a batch.\n // This prevents losing an event if a `sendBatch` or `createBatch` call fails\n // before the event is added to a batch.\n let eventToAddToBatch: EventData | AmqpAnnotatedMessage | undefined;\n while (!this._loopAbortSignal.aborted) {\n try {\n if (!isDefined(batch)) {\n batch = await this._createBatch();\n }\n const timeSinceLastBatchCreation = Date.now() - this._lastBatchCreationTime;\n const maximumTimeToWaitForEvent = batch.count\n ? Math.max(this._maxWaitTimeInMs - timeSinceLastBatchCreation, 0)\n : this._maxWaitTimeInMs;\n\n const event =\n eventToAddToBatch ??\n (await cancelablePromiseRace<[EventData | AmqpAnnotatedMessage, void]>(\n [\n (abortOptions: AbortOptions) => this._eventQueue.shift(abortOptions),\n (abortOptions: AbortOptions) =>\n delay<void>(\n maximumTimeToWaitForEvent,\n abortOptions.abortSignal,\n abortOptions.abortErrorMsg,\n ),\n ],\n { abortSignal: this._loopAbortSignal },\n ));\n\n if (!event) {\n // We didn't receive an event within the allotted time.\n // Send the existing batch if it has events in it.\n if (batch.count) {\n await this._producer.sendBatch(batch);\n this._reportSuccess();\n batch = await this._createBatch();\n }\n continue;\n } else if (!eventToAddToBatch) {\n eventToAddToBatch = event;\n }\n\n const didAdd = batch.tryAdd(event);\n if (didAdd) {\n // This event will definitely make it to one of the user-provided handlers\n // since it was added to a batch.\n // Store it so we can return it in a handler later.\n this._batchedEvents.push(event);\n // Clear reference to existing event since it has been added to the batch.\n eventToAddToBatch = undefined;\n }\n\n if (didAdd && batch.count >= this._maxBufferSize) {\n // Whenever batch.count exceeds the max count of buffered events, send the batch.\n await this._producer.sendBatch(batch);\n this._reportSuccess();\n batch = await this._createBatch();\n } else if (!didAdd && batch.count) {\n // If the event wasn't able to be added and the current batch isn't empty,\n // attempt to send the current batch and add the event to a new batch.\n await this._producer.sendBatch(batch);\n this._reportSuccess();\n batch = await this._createBatch();\n }\n\n if (!didAdd && !batch.tryAdd(event)) {\n // TODO: Report MaxMesageSizeExceeded error. Mimic service's error.\n this._reportFailure(new Error(\"Placeholder for max message size exceeded\"), event);\n } else if (!didAdd) {\n // Handles the case where the event _was_ successfull added to the new batch.\n this._batchedEvents.push(event);\n }\n // Clear reference to existing event since it has been added to the batch.\n eventToAddToBatch = undefined;\n } catch (err: any) {\n if (!isObjectWithProperties(err, [\"name\"]) || err.name !== \"AbortError\") {\n this._reportFailure(err);\n batch = undefined;\n this._batchedEvents = [];\n }\n }\n }\n }\n\n /**\n * Helper method that returns an `EventDataBatch`.\n * This also has the side effects of\n * - keeping track of batch creation time: needed for maxWaitTime calculations.\n * - clearing reference to batched events.\n * - incrementing the readiness: creating a new batch indicates the buffer\n * should have room, so we can resolve some pending `ready()` calls.\n */\n private async _createBatch(): Promise<EventDataBatch> {\n this._lastBatchCreationTime = Date.now();\n this._batchedEvents = [];\n const batch = await this._producer.createBatch({\n partitionId: this._partitionId,\n });\n this._incrementReadiness();\n return batch;\n }\n\n /**\n * This method will resolve as many pending `ready()` calls as it can\n * based on how much space remains in the buffer.\n *\n * If the channel is currently flushing, this is a no-op. This prevents\n * `enqueueEvent` calls from adding the event to the buffer until flushing\n * completes.\n */\n private _incrementReadiness() {\n if (this._flushState.isFlushing) {\n return;\n }\n const currentBufferedCount = this.getCurrentBufferedCount();\n const num = Math.min(this._maxBufferSize - currentBufferedCount, this._readyQueue.length);\n for (let i = 0; i < num; i++) {\n this._readyQueue.shift()?.resolve();\n }\n }\n\n /**\n * Calls the user-provided `onSendEventsSuccessHandler` with the events\n * that were successfully sent.\n */\n private _reportSuccess() {\n this._bufferCount = this._bufferCount - this._batchedEvents.length;\n this._updateFlushState();\n try {\n this._onSendEventsSuccessHandler?.({\n events: this._batchedEvents,\n partitionId: this._partitionId,\n });\n } catch (e: unknown) {\n logger.error(\n `The following error occurred in the onSendEventsSuccessHandler: ${JSON.stringify(\n e,\n undefined,\n \" \",\n )}`,\n );\n }\n }\n\n /**\n * Calls the user-provided `onSendEventsErrorHandler` with an error and the events\n * that were not successfully sent.\n */\n private _reportFailure(err: any, event?: EventData | AmqpAnnotatedMessage) {\n this._bufferCount = this._bufferCount - (event ? 1 : this._batchedEvents.length);\n this._updateFlushState();\n try {\n this._onSendEventsErrorHandler({\n error: err,\n events: event ? [event] : this._batchedEvents,\n partitionId: this._partitionId,\n });\n } catch (e: unknown) {\n logger.error(\n `The following error occurred in the onSendEventsErrorHandler: ${JSON.stringify(\n e,\n undefined,\n \" \",\n )}`,\n );\n }\n }\n\n /**\n * Updates the channel's flush state once the size of the\n * event buffer has decreased to 0.\n */\n private _updateFlushState() {\n const state = this._flushState;\n if (!state.isFlushing || this.getCurrentBufferedCount() !== 0) {\n return;\n }\n\n state.resolve();\n\n this._flushState = { isFlushing: false };\n this._incrementReadiness();\n }\n}\n"]}