@azure/core-amqp 4.4.0-beta.1 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/LICENSE +3 -3
  2. package/README.md +3 -5
  3. package/dist/browser/ConnectionContextBase.js +1 -1
  4. package/dist/browser/ConnectionContextBase.js.map +1 -1
  5. package/dist/browser/amqpAnnotatedMessage.d.ts +1 -1
  6. package/dist/browser/amqpAnnotatedMessage.js +1 -2
  7. package/dist/browser/amqpAnnotatedMessage.js.map +1 -1
  8. package/dist/browser/auth/token.js +1 -1
  9. package/dist/browser/auth/token.js.map +1 -1
  10. package/dist/browser/auth/tokenProvider.d.ts +1 -1
  11. package/dist/browser/auth/tokenProvider.js +2 -2
  12. package/dist/browser/auth/tokenProvider.js.map +1 -1
  13. package/dist/browser/cbs.d.ts +3 -3
  14. package/dist/browser/cbs.js +2 -2
  15. package/dist/browser/cbs.js.map +1 -1
  16. package/dist/browser/connectionConfig/connectionConfig.d.ts +1 -1
  17. package/dist/browser/connectionConfig/connectionConfig.js +29 -10
  18. package/dist/browser/connectionConfig/connectionConfig.js.map +1 -1
  19. package/dist/browser/errors.d.ts +3 -1
  20. package/dist/browser/errors.js +3 -1
  21. package/dist/browser/errors.js.map +1 -1
  22. package/dist/browser/index.d.ts +0 -1
  23. package/dist/browser/index.js +1 -2
  24. package/dist/browser/index.js.map +1 -1
  25. package/dist/browser/internals.js +1 -1
  26. package/dist/browser/internals.js.map +1 -1
  27. package/dist/browser/log.js +1 -1
  28. package/dist/browser/log.js.map +1 -1
  29. package/dist/browser/messageHeader.d.ts +1 -1
  30. package/dist/browser/messageHeader.js +1 -1
  31. package/dist/browser/messageHeader.js.map +1 -1
  32. package/dist/browser/messageProperties.d.ts +1 -2
  33. package/dist/browser/messageProperties.js +1 -1
  34. package/dist/browser/messageProperties.js.map +1 -1
  35. package/dist/browser/requestResponseLink.d.ts +2 -2
  36. package/dist/browser/requestResponseLink.js +3 -3
  37. package/dist/browser/requestResponseLink.js.map +1 -1
  38. package/dist/browser/retry.d.ts +1 -1
  39. package/dist/browser/retry.js +5 -12
  40. package/dist/browser/retry.js.map +1 -1
  41. package/dist/browser/util/checkNetworkConnection-browser.mjs.map +1 -1
  42. package/dist/browser/util/checkNetworkConnection.common.d.ts +6 -0
  43. package/dist/browser/util/checkNetworkConnection.common.js +10 -0
  44. package/dist/browser/util/checkNetworkConnection.common.js.map +1 -0
  45. package/dist/browser/util/checkNetworkConnection.d.ts +1 -5
  46. package/dist/browser/util/checkNetworkConnection.js +2 -8
  47. package/dist/browser/util/constants.d.ts +0 -1
  48. package/dist/browser/util/constants.js +1 -2
  49. package/dist/browser/util/constants.js.map +1 -1
  50. package/dist/browser/util/hmacSha256-browser.mjs.map +1 -1
  51. package/dist/browser/util/hmacSha256.common.d.ts +2 -0
  52. package/dist/browser/util/hmacSha256.common.js +11 -0
  53. package/dist/browser/util/hmacSha256.common.js.map +1 -0
  54. package/dist/browser/util/hmacSha256.d.ts +1 -16
  55. package/dist/browser/util/hmacSha256.js +2 -9
  56. package/dist/browser/util/lock.d.ts +1 -1
  57. package/dist/browser/util/lock.js +1 -1
  58. package/dist/browser/util/lock.js.map +1 -1
  59. package/dist/browser/util/runtimeInfo-browser.mjs.map +1 -1
  60. package/dist/browser/util/runtimeInfo.js +1 -1
  61. package/dist/browser/util/typeGuards.d.ts +1 -1
  62. package/dist/browser/util/typeGuards.js +1 -1
  63. package/dist/browser/util/typeGuards.js.map +1 -1
  64. package/dist/browser/util/utils.d.ts +3 -3
  65. package/dist/browser/util/utils.js +1 -1
  66. package/dist/browser/util/utils.js.map +1 -1
  67. package/dist/commonjs/ConnectionContextBase.js +1 -1
  68. package/dist/commonjs/ConnectionContextBase.js.map +1 -1
  69. package/dist/commonjs/amqpAnnotatedMessage.d.ts +1 -1
  70. package/dist/commonjs/amqpAnnotatedMessage.js +1 -2
  71. package/dist/commonjs/amqpAnnotatedMessage.js.map +1 -1
  72. package/dist/commonjs/auth/token.js +1 -1
  73. package/dist/commonjs/auth/token.js.map +1 -1
  74. package/dist/commonjs/auth/tokenProvider.d.ts +1 -1
  75. package/dist/commonjs/auth/tokenProvider.js +3 -3
  76. package/dist/commonjs/auth/tokenProvider.js.map +1 -1
  77. package/dist/commonjs/cbs.d.ts +3 -3
  78. package/dist/commonjs/cbs.js +1 -1
  79. package/dist/commonjs/cbs.js.map +1 -1
  80. package/dist/commonjs/connectionConfig/connectionConfig.d.ts +1 -1
  81. package/dist/commonjs/connectionConfig/connectionConfig.js +31 -12
  82. package/dist/commonjs/connectionConfig/connectionConfig.js.map +1 -1
  83. package/dist/commonjs/errors.d.ts +3 -1
  84. package/dist/commonjs/errors.js +7 -5
  85. package/dist/commonjs/errors.js.map +1 -1
  86. package/dist/commonjs/index.d.ts +0 -1
  87. package/dist/commonjs/index.js +1 -2
  88. package/dist/commonjs/index.js.map +1 -1
  89. package/dist/commonjs/internals.js +1 -1
  90. package/dist/commonjs/internals.js.map +1 -1
  91. package/dist/commonjs/log.js +3 -3
  92. package/dist/commonjs/log.js.map +1 -1
  93. package/dist/commonjs/messageHeader.d.ts +1 -1
  94. package/dist/commonjs/messageHeader.js +1 -1
  95. package/dist/commonjs/messageHeader.js.map +1 -1
  96. package/dist/commonjs/messageProperties.d.ts +1 -2
  97. package/dist/commonjs/messageProperties.js +1 -1
  98. package/dist/commonjs/messageProperties.js.map +1 -1
  99. package/dist/commonjs/requestResponseLink.d.ts +2 -2
  100. package/dist/commonjs/requestResponseLink.js +4 -4
  101. package/dist/commonjs/requestResponseLink.js.map +1 -1
  102. package/dist/commonjs/retry.d.ts +1 -1
  103. package/dist/commonjs/retry.js +7 -14
  104. package/dist/commonjs/retry.js.map +1 -1
  105. package/dist/commonjs/tsdoc-metadata.json +1 -1
  106. package/dist/commonjs/util/checkNetworkConnection.common.d.ts +6 -0
  107. package/dist/commonjs/util/checkNetworkConnection.common.js +13 -0
  108. package/dist/commonjs/util/checkNetworkConnection.common.js.map +1 -0
  109. package/dist/commonjs/util/checkNetworkConnection.js +2 -3
  110. package/dist/commonjs/util/checkNetworkConnection.js.map +1 -1
  111. package/dist/commonjs/util/constants.d.ts +0 -1
  112. package/dist/commonjs/util/constants.js +1 -2
  113. package/dist/commonjs/util/constants.js.map +1 -1
  114. package/dist/commonjs/util/hmacSha256.common.d.ts +2 -0
  115. package/dist/commonjs/util/hmacSha256.common.js +14 -0
  116. package/dist/commonjs/util/hmacSha256.common.js.map +1 -0
  117. package/dist/commonjs/util/hmacSha256.js +2 -3
  118. package/dist/commonjs/util/hmacSha256.js.map +1 -1
  119. package/dist/commonjs/util/lock.d.ts +1 -1
  120. package/dist/commonjs/util/lock.js +1 -1
  121. package/dist/commonjs/util/lock.js.map +1 -1
  122. package/dist/commonjs/util/runtimeInfo.js +3 -4
  123. package/dist/commonjs/util/runtimeInfo.js.map +1 -1
  124. package/dist/commonjs/util/typeGuards.d.ts +1 -1
  125. package/dist/commonjs/util/typeGuards.js +2 -3
  126. package/dist/commonjs/util/typeGuards.js.map +1 -1
  127. package/dist/commonjs/util/utils.d.ts +3 -3
  128. package/dist/commonjs/util/utils.js +10 -10
  129. package/dist/commonjs/util/utils.js.map +1 -1
  130. package/dist/esm/ConnectionContextBase.js +1 -1
  131. package/dist/esm/ConnectionContextBase.js.map +1 -1
  132. package/dist/esm/amqpAnnotatedMessage.d.ts +1 -1
  133. package/dist/esm/amqpAnnotatedMessage.js +1 -2
  134. package/dist/esm/amqpAnnotatedMessage.js.map +1 -1
  135. package/dist/esm/auth/token.js +1 -1
  136. package/dist/esm/auth/token.js.map +1 -1
  137. package/dist/esm/auth/tokenProvider.d.ts +1 -1
  138. package/dist/esm/auth/tokenProvider.js +2 -2
  139. package/dist/esm/auth/tokenProvider.js.map +1 -1
  140. package/dist/esm/cbs.d.ts +3 -3
  141. package/dist/esm/cbs.js +2 -2
  142. package/dist/esm/cbs.js.map +1 -1
  143. package/dist/esm/connectionConfig/connectionConfig.d.ts +1 -1
  144. package/dist/esm/connectionConfig/connectionConfig.js +29 -10
  145. package/dist/esm/connectionConfig/connectionConfig.js.map +1 -1
  146. package/dist/esm/errors.d.ts +3 -1
  147. package/dist/esm/errors.js +3 -1
  148. package/dist/esm/errors.js.map +1 -1
  149. package/dist/esm/index.d.ts +0 -1
  150. package/dist/esm/index.js +1 -2
  151. package/dist/esm/index.js.map +1 -1
  152. package/dist/esm/internals.js +1 -1
  153. package/dist/esm/internals.js.map +1 -1
  154. package/dist/esm/log.js +1 -1
  155. package/dist/esm/log.js.map +1 -1
  156. package/dist/esm/messageHeader.d.ts +1 -1
  157. package/dist/esm/messageHeader.js +1 -1
  158. package/dist/esm/messageHeader.js.map +1 -1
  159. package/dist/esm/messageProperties.d.ts +1 -2
  160. package/dist/esm/messageProperties.js +1 -1
  161. package/dist/esm/messageProperties.js.map +1 -1
  162. package/dist/esm/requestResponseLink.d.ts +2 -2
  163. package/dist/esm/requestResponseLink.js +3 -3
  164. package/dist/esm/requestResponseLink.js.map +1 -1
  165. package/dist/esm/retry.d.ts +1 -1
  166. package/dist/esm/retry.js +5 -12
  167. package/dist/esm/retry.js.map +1 -1
  168. package/dist/esm/util/checkNetworkConnection.common.d.ts +6 -0
  169. package/dist/esm/util/checkNetworkConnection.common.js +10 -0
  170. package/dist/esm/util/checkNetworkConnection.common.js.map +1 -0
  171. package/dist/esm/util/checkNetworkConnection.js +1 -1
  172. package/dist/esm/util/checkNetworkConnection.js.map +1 -1
  173. package/dist/esm/util/constants.d.ts +0 -1
  174. package/dist/esm/util/constants.js +1 -2
  175. package/dist/esm/util/constants.js.map +1 -1
  176. package/dist/esm/util/hmacSha256.common.d.ts +2 -0
  177. package/dist/esm/util/hmacSha256.common.js +11 -0
  178. package/dist/esm/util/hmacSha256.common.js.map +1 -0
  179. package/dist/esm/util/hmacSha256.js +1 -1
  180. package/dist/esm/util/hmacSha256.js.map +1 -1
  181. package/dist/esm/util/lock.d.ts +1 -1
  182. package/dist/esm/util/lock.js +1 -1
  183. package/dist/esm/util/lock.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/typeGuards.d.ts +1 -1
  187. package/dist/esm/util/typeGuards.js +1 -1
  188. package/dist/esm/util/typeGuards.js.map +1 -1
  189. package/dist/esm/util/utils.d.ts +3 -3
  190. package/dist/esm/util/utils.js +1 -1
  191. package/dist/esm/util/utils.js.map +1 -1
  192. package/dist/react-native/ConnectionContextBase.js +1 -1
  193. package/dist/react-native/ConnectionContextBase.js.map +1 -1
  194. package/dist/react-native/amqpAnnotatedMessage.d.ts +1 -1
  195. package/dist/react-native/amqpAnnotatedMessage.js +1 -2
  196. package/dist/react-native/amqpAnnotatedMessage.js.map +1 -1
  197. package/dist/react-native/auth/token.js +1 -1
  198. package/dist/react-native/auth/token.js.map +1 -1
  199. package/dist/react-native/auth/tokenProvider.d.ts +1 -1
  200. package/dist/react-native/auth/tokenProvider.js +2 -2
  201. package/dist/react-native/auth/tokenProvider.js.map +1 -1
  202. package/dist/react-native/cbs.d.ts +3 -3
  203. package/dist/react-native/cbs.js +2 -2
  204. package/dist/react-native/cbs.js.map +1 -1
  205. package/dist/react-native/connectionConfig/connectionConfig.d.ts +1 -1
  206. package/dist/react-native/connectionConfig/connectionConfig.js +29 -10
  207. package/dist/react-native/connectionConfig/connectionConfig.js.map +1 -1
  208. package/dist/react-native/errors.d.ts +3 -1
  209. package/dist/react-native/errors.js +3 -1
  210. package/dist/react-native/errors.js.map +1 -1
  211. package/dist/react-native/index.d.ts +0 -1
  212. package/dist/react-native/index.js +1 -2
  213. package/dist/react-native/index.js.map +1 -1
  214. package/dist/react-native/internals.js +1 -1
  215. package/dist/react-native/internals.js.map +1 -1
  216. package/dist/react-native/log.js +1 -1
  217. package/dist/react-native/log.js.map +1 -1
  218. package/dist/react-native/messageHeader.d.ts +1 -1
  219. package/dist/react-native/messageHeader.js +1 -1
  220. package/dist/react-native/messageHeader.js.map +1 -1
  221. package/dist/react-native/messageProperties.d.ts +1 -2
  222. package/dist/react-native/messageProperties.js +1 -1
  223. package/dist/react-native/messageProperties.js.map +1 -1
  224. package/dist/react-native/requestResponseLink.d.ts +2 -2
  225. package/dist/react-native/requestResponseLink.js +3 -3
  226. package/dist/react-native/requestResponseLink.js.map +1 -1
  227. package/dist/react-native/retry.d.ts +1 -1
  228. package/dist/react-native/retry.js +5 -12
  229. package/dist/react-native/retry.js.map +1 -1
  230. package/dist/react-native/util/checkNetworkConnection-react-native.mjs.map +1 -0
  231. package/dist/react-native/util/checkNetworkConnection.common.d.ts +6 -0
  232. package/dist/react-native/util/checkNetworkConnection.common.js +10 -0
  233. package/dist/react-native/util/checkNetworkConnection.common.js.map +1 -0
  234. package/dist/react-native/util/checkNetworkConnection.d.ts +2 -6
  235. package/dist/react-native/util/checkNetworkConnection.js +3 -27
  236. package/dist/react-native/util/constants.d.ts +0 -1
  237. package/dist/react-native/util/constants.js +1 -2
  238. package/dist/react-native/util/constants.js.map +1 -1
  239. package/dist/react-native/util/hmacSha256-react-native.mjs.map +1 -0
  240. package/dist/react-native/util/hmacSha256.common.d.ts +2 -0
  241. package/dist/react-native/util/hmacSha256.common.js +11 -0
  242. package/dist/react-native/util/hmacSha256.common.js.map +1 -0
  243. package/dist/react-native/util/hmacSha256.d.ts +2 -2
  244. package/dist/react-native/util/hmacSha256.js +3 -7
  245. package/dist/react-native/util/lock.d.ts +1 -1
  246. package/dist/react-native/util/lock.js +1 -1
  247. package/dist/react-native/util/lock.js.map +1 -1
  248. package/dist/react-native/util/runtimeInfo-react-native.mjs.map +1 -1
  249. package/dist/react-native/util/runtimeInfo.js +2 -2
  250. package/dist/react-native/util/typeGuards.d.ts +1 -1
  251. package/dist/react-native/util/typeGuards.js +1 -1
  252. package/dist/react-native/util/typeGuards.js.map +1 -1
  253. package/dist/react-native/util/utils.d.ts +3 -3
  254. package/dist/react-native/util/utils.js +1 -1
  255. package/dist/react-native/util/utils.js.map +1 -1
  256. package/package.json +29 -33
  257. package/dist/browser/ConnectionContextBase.d.ts.map +0 -1
  258. package/dist/browser/amqpAnnotatedMessage.d.ts.map +0 -1
  259. package/dist/browser/auth/token.d.ts.map +0 -1
  260. package/dist/browser/auth/tokenProvider.d.ts.map +0 -1
  261. package/dist/browser/cbs.d.ts.map +0 -1
  262. package/dist/browser/connectionConfig/connectionConfig.d.ts.map +0 -1
  263. package/dist/browser/errors.d.ts.map +0 -1
  264. package/dist/browser/index.d.ts.map +0 -1
  265. package/dist/browser/internals.d.ts.map +0 -1
  266. package/dist/browser/log.d.ts.map +0 -1
  267. package/dist/browser/messageHeader.d.ts.map +0 -1
  268. package/dist/browser/messageProperties.d.ts.map +0 -1
  269. package/dist/browser/requestResponseLink.d.ts.map +0 -1
  270. package/dist/browser/retry.d.ts.map +0 -1
  271. package/dist/browser/util/checkNetworkConnection-browser.d.mts.map +0 -1
  272. package/dist/browser/util/constants.d.ts.map +0 -1
  273. package/dist/browser/util/hmacSha256-browser.d.mts.map +0 -1
  274. package/dist/browser/util/lock.d.ts.map +0 -1
  275. package/dist/browser/util/runtimeInfo-browser.d.mts.map +0 -1
  276. package/dist/browser/util/typeGuards.d.ts.map +0 -1
  277. package/dist/browser/util/utils.d.ts.map +0 -1
  278. package/dist/commonjs/ConnectionContextBase.d.ts.map +0 -1
  279. package/dist/commonjs/amqpAnnotatedMessage.d.ts.map +0 -1
  280. package/dist/commonjs/auth/token.d.ts.map +0 -1
  281. package/dist/commonjs/auth/tokenProvider.d.ts.map +0 -1
  282. package/dist/commonjs/cbs.d.ts.map +0 -1
  283. package/dist/commonjs/connectionConfig/connectionConfig.d.ts.map +0 -1
  284. package/dist/commonjs/errors.d.ts.map +0 -1
  285. package/dist/commonjs/index.d.ts.map +0 -1
  286. package/dist/commonjs/internals.d.ts.map +0 -1
  287. package/dist/commonjs/log.d.ts.map +0 -1
  288. package/dist/commonjs/messageHeader.d.ts.map +0 -1
  289. package/dist/commonjs/messageProperties.d.ts.map +0 -1
  290. package/dist/commonjs/requestResponseLink.d.ts.map +0 -1
  291. package/dist/commonjs/retry.d.ts.map +0 -1
  292. package/dist/commonjs/util/checkNetworkConnection.d.ts.map +0 -1
  293. package/dist/commonjs/util/constants.d.ts.map +0 -1
  294. package/dist/commonjs/util/hmacSha256.d.ts.map +0 -1
  295. package/dist/commonjs/util/lock.d.ts.map +0 -1
  296. package/dist/commonjs/util/runtimeInfo.d.ts.map +0 -1
  297. package/dist/commonjs/util/typeGuards.d.ts.map +0 -1
  298. package/dist/commonjs/util/utils.d.ts.map +0 -1
  299. package/dist/core-amqp.d.ts +0 -1521
  300. package/dist/esm/ConnectionContextBase.d.ts.map +0 -1
  301. package/dist/esm/amqpAnnotatedMessage.d.ts.map +0 -1
  302. package/dist/esm/auth/token.d.ts.map +0 -1
  303. package/dist/esm/auth/tokenProvider.d.ts.map +0 -1
  304. package/dist/esm/cbs.d.ts.map +0 -1
  305. package/dist/esm/connectionConfig/connectionConfig.d.ts.map +0 -1
  306. package/dist/esm/errors.d.ts.map +0 -1
  307. package/dist/esm/index.d.ts.map +0 -1
  308. package/dist/esm/internals.d.ts.map +0 -1
  309. package/dist/esm/log.d.ts.map +0 -1
  310. package/dist/esm/messageHeader.d.ts.map +0 -1
  311. package/dist/esm/messageProperties.d.ts.map +0 -1
  312. package/dist/esm/requestResponseLink.d.ts.map +0 -1
  313. package/dist/esm/retry.d.ts.map +0 -1
  314. package/dist/esm/util/checkNetworkConnection.d.ts.map +0 -1
  315. package/dist/esm/util/constants.d.ts.map +0 -1
  316. package/dist/esm/util/hmacSha256.d.ts.map +0 -1
  317. package/dist/esm/util/lock.d.ts.map +0 -1
  318. package/dist/esm/util/runtimeInfo.d.ts.map +0 -1
  319. package/dist/esm/util/typeGuards.d.ts.map +0 -1
  320. package/dist/esm/util/utils.d.ts.map +0 -1
  321. package/dist/react-native/ConnectionContextBase.d.ts.map +0 -1
  322. package/dist/react-native/amqpAnnotatedMessage.d.ts.map +0 -1
  323. package/dist/react-native/auth/token.d.ts.map +0 -1
  324. package/dist/react-native/auth/tokenProvider.d.ts.map +0 -1
  325. package/dist/react-native/cbs.d.ts.map +0 -1
  326. package/dist/react-native/connectionConfig/connectionConfig.d.ts.map +0 -1
  327. package/dist/react-native/errors.d.ts.map +0 -1
  328. package/dist/react-native/index.d.ts.map +0 -1
  329. package/dist/react-native/internals.d.ts.map +0 -1
  330. package/dist/react-native/log.d.ts.map +0 -1
  331. package/dist/react-native/messageHeader.d.ts.map +0 -1
  332. package/dist/react-native/messageProperties.d.ts.map +0 -1
  333. package/dist/react-native/requestResponseLink.d.ts.map +0 -1
  334. package/dist/react-native/retry.d.ts.map +0 -1
  335. package/dist/react-native/util/checkNetworkConnection.d.ts.map +0 -1
  336. package/dist/react-native/util/checkNetworkConnection.js.map +0 -1
  337. package/dist/react-native/util/constants.d.ts.map +0 -1
  338. package/dist/react-native/util/hmacSha256.d.ts.map +0 -1
  339. package/dist/react-native/util/hmacSha256.js.map +0 -1
  340. package/dist/react-native/util/lock.d.ts.map +0 -1
  341. package/dist/react-native/util/runtimeInfo-react-native.d.mts.map +0 -1
  342. package/dist/react-native/util/typeGuards.d.ts.map +0 -1
  343. package/dist/react-native/util/utils.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmacSha256.common.js","sourceRoot":"","sources":["../../../src/util/hmacSha256.common.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,gCAmBC;AAnBM,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,MAAc;IAC1D,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAqB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IAEhF,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAC3D,KAAK,EACL,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EACf,SAAS,EACT,KAAK,EACL,CAAC,MAAM,EAAE,QAAQ,CAAC,CACnB,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACnD,SAAS,EACT,YAAY,EACZ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CACnB,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEvE,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport async function signString(key: string, toSign: string): Promise<string> {\n const enc = new TextEncoder();\n const algorithm: HmacImportParams = { name: \"HMAC\", hash: { name: \"SHA-256\" } };\n\n const extractedKey = await globalThis.crypto.subtle.importKey(\n \"raw\",\n enc.encode(key),\n algorithm,\n false,\n [\"sign\", \"verify\"],\n );\n const signature = await globalThis.crypto.subtle.sign(\n algorithm,\n extractedKey,\n enc.encode(toSign),\n );\n const digest = btoa(String.fromCharCode(...new Uint8Array(signature)));\n\n return encodeURIComponent(digest);\n}\n"]}
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
  // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT license.
3
+ // Licensed under the MIT License.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.signString = void 0;
5
+ exports.signString = signString;
6
6
  const node_crypto_1 = require("node:crypto");
7
7
  async function signString(key, toSign) {
8
8
  const hmac = (0, node_crypto_1.createHmac)("sha256", key).update(toSign).digest("base64");
9
9
  return encodeURIComponent(hmac);
10
10
  }
11
- exports.signString = signString;
12
11
  //# sourceMappingURL=hmacSha256.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hmacSha256.js","sourceRoot":"","sources":["../../../src/util/hmacSha256.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,6CAAyC;AAElC,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,MAAc;IAC1D,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvE,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAHD,gCAGC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createHmac } from \"node:crypto\";\n\nexport async function signString(key: string, toSign: string): Promise<string> {\n const hmac = createHmac(\"sha256\", key).update(toSign).digest(\"base64\");\n return encodeURIComponent(hmac);\n}\n"]}
1
+ {"version":3,"file":"hmacSha256.js","sourceRoot":"","sources":["../../../src/util/hmacSha256.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAIlC,gCAGC;AALD,6CAAyC;AAElC,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,MAAc;IAC1D,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvE,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createHmac } from \"node:crypto\";\n\nexport async function signString(key: string, toSign: string): Promise<string> {\n const hmac = createHmac(\"sha256\", key).update(toSign).digest(\"base64\");\n return encodeURIComponent(hmac);\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { AbortSignalLike } from "@azure/abort-controller";
1
+ import type { AbortSignalLike } from "@azure/abort-controller";
2
2
  /**
3
3
  * Describes the properties that must be provided while acquiring a lock.
4
4
  */
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT license.
3
+ // Licensed under the MIT License.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.CancellableAsyncLockImpl = void 0;
6
6
  const abort_controller_1 = require("@azure/abort-controller");
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/util/lock.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortError, AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationTimeoutError } from \"rhea-promise\";\nimport { StandardAbortMessage } from \"./constants.js\";\nimport { logger } from \"../log.js\";\n\n/**\n * Describes the properties that must be provided while acquiring a lock.\n */\nexport interface AcquireLockProperties {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel lock acquisition.\n * This only applies to the acquisition of a lock. Once the lock is acquired, the task is invoked and `acquire`\n * can no longer be cancelled.\n * This does not cancel running the task passed to `acquire()` if the lock has been acquired,\n * but will prevent it from running if cancelled before the task is invoked.\n */\n abortSignal: AbortSignalLike | undefined;\n /**\n * The allowed amount of time in milliseconds to acquire a lock.\n * If a lock isn't acquired within this time, the promise returned\n * by `acquire()` will be rejected with an Error.\n */\n timeoutInMs: number | undefined;\n}\n\n/**\n * Describes the components related to a specific task.\n * @internal\n */\ninterface TaskDetails {\n abortListener?: () => void;\n abortSignal?: AbortSignalLike;\n resolve: (value: unknown) => void;\n reject: (reason: Error) => void;\n task: (...args: any[]) => Promise<unknown>;\n tid?: ReturnType<typeof setTimeout>;\n}\n\n/**\n * CancellableAsyncLock provides a mechanism for forcing tasks using the same\n * 'key' to be executed serially.\n *\n * Pending tasks can be manually cancelled via an abortSignal or automatically\n * cancelled by reach a provided timeout value.\n */\nexport interface CancellableAsyncLock {\n /**\n * Returns a promise that resolves to the value returned by the provided task function.\n * Only 1 task can be invoked at a time for a given `key` value.\n *\n * An acquire call can be cancelled via an `abortSignal`.\n * If cancelled, the promise will be rejected with an `AbortError`.\n *\n * `acquireTimeoutInMs` can also be provided to properties.\n * If the timeout is reached before the provided `task` is invoked,\n * then the promise will be rejected with an Error stating the task\n * timed out waiting to acquire a lock.\n *\n * @param key - All `acquire` calls are grouped by the provided `key`.\n * @param task - The function to invoke once the lock has been acquired.\n * @param properties - Additional properties to control the behavior of `acquire`.\n */\n acquire<T = void>(\n key: string,\n task: (...args: any[]) => Promise<T>,\n properties: AcquireLockProperties,\n ): Promise<T>;\n}\n\n/**\n * This class is used to coordinate executing tasks that should not be run in parallel.\n * @internal\n */\nexport class CancellableAsyncLockImpl {\n private _keyMap = new Map<string, TaskDetails[]>();\n private _executionRunningSet = new Set<string>();\n /**\n * Returns a promise that resolves to the value returned by the provided task function.\n * Only 1 task can be invoked at a time for a given `key` value.\n *\n * An acquire call can be cancelled via an `abortSignal`.\n * If cancelled, the promise will be rejected with an `AbortError`.\n *\n * `acquireTimeoutInMs` can also be provided to properties.\n * If the timeout is reached before the provided `task` is invoked,\n * then the promise will be rejected with an Error stating the task\n * timed out waiting to acquire a lock.\n *\n * @param key - All `acquire` calls are grouped by the provided `key`.\n * @param task - The function to invoke once the lock has been acquired.\n * @param properties - Additional properties to control the behavior of `acquire`.\n */\n acquire<T = void>(\n key: string,\n task: (...args: any[]) => Promise<T>,\n properties: AcquireLockProperties,\n ): Promise<T> {\n const { abortSignal, timeoutInMs } = properties;\n // Fast exit if the operation is already cancelled.\n if (abortSignal?.aborted) {\n return Promise.reject(new AbortError(StandardAbortMessage));\n }\n\n // Ensure we've got a task queue for the given key.\n const taskQueue = this._keyMap.get(key) ?? [];\n this._keyMap.set(key, taskQueue);\n\n // This method will return a promise that will be fulfilled outside this function.\n const { promise, rejecter, resolver } = getPromiseParts();\n\n const taskDetails: TaskDetails = {\n reject: rejecter,\n resolve: resolver,\n task,\n };\n\n // Handle timeouts by removing the task from the queue when hit.\n if (typeof timeoutInMs === \"number\") {\n const tid = setTimeout(() => {\n this._removeTaskDetails(key, taskDetails);\n rejecter(\n new OperationTimeoutError(`The task timed out waiting to acquire a lock for ${key}`),\n );\n }, timeoutInMs);\n taskDetails.tid = tid;\n }\n\n // Handle cancellation by removing the task from the queue when cancelled.\n if (abortSignal) {\n const abortListener = (): void => {\n this._removeTaskDetails(key, taskDetails);\n rejecter(new AbortError(StandardAbortMessage));\n };\n abortSignal.addEventListener(\"abort\", abortListener);\n taskDetails.abortSignal = abortSignal;\n taskDetails.abortListener = abortListener;\n }\n\n // Enqueue the task!\n taskQueue.push(taskDetails);\n logger.verbose(\n `Called acquire() for lock \"${key}\". Lock \"${key}\" has ${taskQueue.length} pending tasks.`,\n );\n\n // Start a loop to iterate over the task queue.\n // This will run asynchronously and won't allow\n // more than 1 concurrent execution per key at a time.\n this._execute(key);\n\n return promise as Promise<T>;\n }\n\n /**\n * Iterates over all the pending tasks for a given `key` serially.\n *\n * Note: If the pending tasks are already being iterated by an early\n * _execute invocation, this returns immediately.\n * @returns\n */\n private async _execute(key: string): Promise<void> {\n // If the key already exists in the set, then exit because\n // tasks are already being processed.\n if (this._executionRunningSet.has(key)) {\n return;\n }\n\n const taskQueue = this._keyMap.get(key);\n // If the queue is empty, exit early!\n if (!taskQueue || !taskQueue.length) {\n return;\n }\n\n // Add the key to the set so we can tell the\n // task queue is already being processed.\n this._executionRunningSet.add(key);\n while (taskQueue.length) {\n // Remove tasks from the front of the queue.\n // Order matters!\n const taskDetails = taskQueue.shift();\n if (!taskDetails) {\n continue;\n }\n\n try {\n logger.verbose(`Acquired lock for \"${key}\", invoking task.`);\n cleanupTaskDetails(taskDetails);\n const value = await taskDetails.task();\n taskDetails.resolve(value);\n } catch (err: any) {\n taskDetails.reject(err);\n }\n logger.verbose(\n `Task completed for lock \"${key}\". Lock \"${key}\" has ${taskQueue.length} pending tasks.`,\n );\n }\n\n // Indicate that the task queue for the key is empty\n // and we're done processing it.\n this._executionRunningSet.delete(key);\n // clean up the key map\n this._keyMap.delete(key);\n }\n\n private _removeTaskDetails(key: string, taskDetails: TaskDetails): void {\n const taskQueue = this._keyMap.get(key);\n if (!taskQueue || !taskQueue.length) {\n // The task is already gone from the queue, so our work here is done!\n return;\n }\n\n const index = taskQueue.indexOf(taskDetails);\n if (index !== -1) {\n const [details] = taskQueue.splice(index, 1);\n // Cleanup the task rejection code paths.\n cleanupTaskDetails(details);\n }\n }\n}\n\n/**\n * @internal\n * Returns a promise and the promise's resolve and reject methods.\n */\nfunction getPromiseParts(): {\n promise: Promise<unknown>;\n resolver: (value: unknown) => void;\n rejecter: (reason: Error) => void;\n} {\n let resolver: (value: unknown) => void;\n let rejecter: (reason: Error) => void;\n\n const promise = new Promise<unknown>((resolve, reject) => {\n resolver = resolve;\n rejecter = reject;\n });\n\n return {\n promise,\n resolver: resolver!,\n rejecter: rejecter!,\n };\n}\n\n/**\n * @internal\n * Removes any abort listener or pending timeout from a task.\n */\nfunction cleanupTaskDetails(taskDetails: TaskDetails): void {\n // Cleanup the task rejection code paths.\n if (taskDetails.tid) clearTimeout(taskDetails.tid);\n if (taskDetails.abortSignal && taskDetails.abortListener) {\n taskDetails.abortSignal.removeEventListener(\"abort\", taskDetails.abortListener);\n }\n}\n"]}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/util/lock.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { OperationTimeoutError } from \"rhea-promise\";\nimport { StandardAbortMessage } from \"./constants.js\";\nimport { logger } from \"../log.js\";\n\n/**\n * Describes the properties that must be provided while acquiring a lock.\n */\nexport interface AcquireLockProperties {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel lock acquisition.\n * This only applies to the acquisition of a lock. Once the lock is acquired, the task is invoked and `acquire`\n * can no longer be cancelled.\n * This does not cancel running the task passed to `acquire()` if the lock has been acquired,\n * but will prevent it from running if cancelled before the task is invoked.\n */\n abortSignal: AbortSignalLike | undefined;\n /**\n * The allowed amount of time in milliseconds to acquire a lock.\n * If a lock isn't acquired within this time, the promise returned\n * by `acquire()` will be rejected with an Error.\n */\n timeoutInMs: number | undefined;\n}\n\n/**\n * Describes the components related to a specific task.\n * @internal\n */\ninterface TaskDetails {\n abortListener?: () => void;\n abortSignal?: AbortSignalLike;\n resolve: (value: unknown) => void;\n reject: (reason: Error) => void;\n task: (...args: any[]) => Promise<unknown>;\n tid?: ReturnType<typeof setTimeout>;\n}\n\n/**\n * CancellableAsyncLock provides a mechanism for forcing tasks using the same\n * 'key' to be executed serially.\n *\n * Pending tasks can be manually cancelled via an abortSignal or automatically\n * cancelled by reach a provided timeout value.\n */\nexport interface CancellableAsyncLock {\n /**\n * Returns a promise that resolves to the value returned by the provided task function.\n * Only 1 task can be invoked at a time for a given `key` value.\n *\n * An acquire call can be cancelled via an `abortSignal`.\n * If cancelled, the promise will be rejected with an `AbortError`.\n *\n * `acquireTimeoutInMs` can also be provided to properties.\n * If the timeout is reached before the provided `task` is invoked,\n * then the promise will be rejected with an Error stating the task\n * timed out waiting to acquire a lock.\n *\n * @param key - All `acquire` calls are grouped by the provided `key`.\n * @param task - The function to invoke once the lock has been acquired.\n * @param properties - Additional properties to control the behavior of `acquire`.\n */\n acquire<T = void>(\n key: string,\n task: (...args: any[]) => Promise<T>,\n properties: AcquireLockProperties,\n ): Promise<T>;\n}\n\n/**\n * This class is used to coordinate executing tasks that should not be run in parallel.\n * @internal\n */\nexport class CancellableAsyncLockImpl {\n private _keyMap = new Map<string, TaskDetails[]>();\n private _executionRunningSet = new Set<string>();\n /**\n * Returns a promise that resolves to the value returned by the provided task function.\n * Only 1 task can be invoked at a time for a given `key` value.\n *\n * An acquire call can be cancelled via an `abortSignal`.\n * If cancelled, the promise will be rejected with an `AbortError`.\n *\n * `acquireTimeoutInMs` can also be provided to properties.\n * If the timeout is reached before the provided `task` is invoked,\n * then the promise will be rejected with an Error stating the task\n * timed out waiting to acquire a lock.\n *\n * @param key - All `acquire` calls are grouped by the provided `key`.\n * @param task - The function to invoke once the lock has been acquired.\n * @param properties - Additional properties to control the behavior of `acquire`.\n */\n acquire<T = void>(\n key: string,\n task: (...args: any[]) => Promise<T>,\n properties: AcquireLockProperties,\n ): Promise<T> {\n const { abortSignal, timeoutInMs } = properties;\n // Fast exit if the operation is already cancelled.\n if (abortSignal?.aborted) {\n return Promise.reject(new AbortError(StandardAbortMessage));\n }\n\n // Ensure we've got a task queue for the given key.\n const taskQueue = this._keyMap.get(key) ?? [];\n this._keyMap.set(key, taskQueue);\n\n // This method will return a promise that will be fulfilled outside this function.\n const { promise, rejecter, resolver } = getPromiseParts();\n\n const taskDetails: TaskDetails = {\n reject: rejecter,\n resolve: resolver,\n task,\n };\n\n // Handle timeouts by removing the task from the queue when hit.\n if (typeof timeoutInMs === \"number\") {\n const tid = setTimeout(() => {\n this._removeTaskDetails(key, taskDetails);\n rejecter(\n new OperationTimeoutError(`The task timed out waiting to acquire a lock for ${key}`),\n );\n }, timeoutInMs);\n taskDetails.tid = tid;\n }\n\n // Handle cancellation by removing the task from the queue when cancelled.\n if (abortSignal) {\n const abortListener = (): void => {\n this._removeTaskDetails(key, taskDetails);\n rejecter(new AbortError(StandardAbortMessage));\n };\n abortSignal.addEventListener(\"abort\", abortListener);\n taskDetails.abortSignal = abortSignal;\n taskDetails.abortListener = abortListener;\n }\n\n // Enqueue the task!\n taskQueue.push(taskDetails);\n logger.verbose(\n `Called acquire() for lock \"${key}\". Lock \"${key}\" has ${taskQueue.length} pending tasks.`,\n );\n\n // Start a loop to iterate over the task queue.\n // This will run asynchronously and won't allow\n // more than 1 concurrent execution per key at a time.\n this._execute(key);\n\n return promise as Promise<T>;\n }\n\n /**\n * Iterates over all the pending tasks for a given `key` serially.\n *\n * Note: If the pending tasks are already being iterated by an early\n * _execute invocation, this returns immediately.\n * @returns\n */\n private async _execute(key: string): Promise<void> {\n // If the key already exists in the set, then exit because\n // tasks are already being processed.\n if (this._executionRunningSet.has(key)) {\n return;\n }\n\n const taskQueue = this._keyMap.get(key);\n // If the queue is empty, exit early!\n if (!taskQueue || !taskQueue.length) {\n return;\n }\n\n // Add the key to the set so we can tell the\n // task queue is already being processed.\n this._executionRunningSet.add(key);\n while (taskQueue.length) {\n // Remove tasks from the front of the queue.\n // Order matters!\n const taskDetails = taskQueue.shift();\n if (!taskDetails) {\n continue;\n }\n\n try {\n logger.verbose(`Acquired lock for \"${key}\", invoking task.`);\n cleanupTaskDetails(taskDetails);\n const value = await taskDetails.task();\n taskDetails.resolve(value);\n } catch (err: any) {\n taskDetails.reject(err);\n }\n logger.verbose(\n `Task completed for lock \"${key}\". Lock \"${key}\" has ${taskQueue.length} pending tasks.`,\n );\n }\n\n // Indicate that the task queue for the key is empty\n // and we're done processing it.\n this._executionRunningSet.delete(key);\n // clean up the key map\n this._keyMap.delete(key);\n }\n\n private _removeTaskDetails(key: string, taskDetails: TaskDetails): void {\n const taskQueue = this._keyMap.get(key);\n if (!taskQueue || !taskQueue.length) {\n // The task is already gone from the queue, so our work here is done!\n return;\n }\n\n const index = taskQueue.indexOf(taskDetails);\n if (index !== -1) {\n const [details] = taskQueue.splice(index, 1);\n // Cleanup the task rejection code paths.\n cleanupTaskDetails(details);\n }\n }\n}\n\n/**\n * @internal\n * Returns a promise and the promise's resolve and reject methods.\n */\nfunction getPromiseParts(): {\n promise: Promise<unknown>;\n resolver: (value: unknown) => void;\n rejecter: (reason: Error) => void;\n} {\n let resolver: (value: unknown) => void;\n let rejecter: (reason: Error) => void;\n\n const promise = new Promise<unknown>((resolve, reject) => {\n resolver = resolve;\n rejecter = reject;\n });\n\n return {\n promise,\n resolver: resolver!,\n rejecter: rejecter!,\n };\n}\n\n/**\n * @internal\n * Removes any abort listener or pending timeout from a task.\n */\nfunction cleanupTaskDetails(taskDetails: TaskDetails): void {\n // Cleanup the task rejection code paths.\n if (taskDetails.tid) clearTimeout(taskDetails.tid);\n if (taskDetails.abortSignal && taskDetails.abortListener) {\n taskDetails.abortSignal.removeEventListener(\"abort\", taskDetails.abortListener);\n }\n}\n"]}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT license.
3
+ // Licensed under the MIT License.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.getFrameworkInfo = exports.getPlatformInfo = void 0;
5
+ exports.getPlatformInfo = getPlatformInfo;
6
+ exports.getFrameworkInfo = getFrameworkInfo;
6
7
  const tslib_1 = require("tslib");
7
8
  const os = tslib_1.__importStar(require("node:os"));
8
9
  /**
@@ -12,7 +13,6 @@ const os = tslib_1.__importStar(require("node:os"));
12
13
  function getPlatformInfo() {
13
14
  return `(${os.arch()}-${os.type()}-${os.release()})`;
14
15
  }
15
- exports.getPlatformInfo = getPlatformInfo;
16
16
  /**
17
17
  * Returns information about Node.js this function is being run on.
18
18
  * @internal
@@ -20,5 +20,4 @@ exports.getPlatformInfo = getPlatformInfo;
20
20
  function getFrameworkInfo() {
21
21
  return `Node/${process.version}`;
22
22
  }
23
- exports.getFrameworkInfo = getFrameworkInfo;
24
23
  //# sourceMappingURL=runtimeInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeInfo.js","sourceRoot":"","sources":["../../../src/util/runtimeInfo.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,oDAA8B;AAE9B;;;GAGG;AACH,SAAgB,eAAe;IAC7B,OAAO,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC;AACvD,CAAC;AAFD,0CAEC;AAED;;;GAGG;AACH,SAAgB,gBAAgB;IAC9B,OAAO,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;AACnC,CAAC;AAFD,4CAEC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as os from \"node:os\";\n\n/**\n * Returns information about the platform this function is being run on.\n * @internal\n */\nexport function getPlatformInfo(): string {\n return `(${os.arch()}-${os.type()}-${os.release()})`;\n}\n\n/**\n * Returns information about Node.js this function is being run on.\n * @internal\n */\nexport function getFrameworkInfo(): string {\n return `Node/${process.version}`;\n}\n"]}
1
+ {"version":3,"file":"runtimeInfo.js","sourceRoot":"","sources":["../../../src/util/runtimeInfo.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAQlC,0CAEC;AAMD,4CAEC;;AAhBD,oDAA8B;AAE9B;;;GAGG;AACH,SAAgB,eAAe;IAC7B,OAAO,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB;IAC9B,OAAO,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;AACnC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as os from \"node:os\";\n\n/**\n * Returns information about the platform this function is being run on.\n * @internal\n */\nexport function getPlatformInfo(): string {\n return `(${os.arch()}-${os.type()}-${os.release()})`;\n}\n\n/**\n * Returns information about Node.js this function is being run on.\n * @internal\n */\nexport function getFrameworkInfo(): string {\n return `Node/${process.version}`;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { SasTokenProvider } from "../auth/tokenProvider.js";
1
+ import type { SasTokenProvider } from "../auth/tokenProvider.js";
2
2
  /**
3
3
  * Typeguard that checks if the input is a SasTokenProvider.
4
4
  * @param thing - Any object.
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT license.
3
+ // Licensed under the MIT License.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.isSasTokenProvider = void 0;
5
+ exports.isSasTokenProvider = isSasTokenProvider;
6
6
  const core_util_1 = require("@azure/core-util");
7
7
  /**
8
8
  * Typeguard that checks if the input is a SasTokenProvider.
@@ -12,5 +12,4 @@ const core_util_1 = require("@azure/core-util");
12
12
  function isSasTokenProvider(thing) {
13
13
  return (0, core_util_1.isObjectWithProperties)(thing, ["isSasTokenProvider"]) && thing.isSasTokenProvider === true;
14
14
  }
15
- exports.isSasTokenProvider = isSasTokenProvider;
16
15
  //# sourceMappingURL=typeGuards.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../src/util/typeGuards.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAGlC,gDAA0D;AAE1D;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,OAAO,IAAA,kCAAsB,EAAC,KAAK,EAAE,CAAC,oBAAoB,CAAC,CAAC,IAAI,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;AACpG,CAAC;AAFD,gDAEC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { SasTokenProvider } from \"../auth/tokenProvider.js\";\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Typeguard that checks if the input is a SasTokenProvider.\n * @param thing - Any object.\n * @hidden\n */\nexport function isSasTokenProvider(thing: unknown): thing is SasTokenProvider {\n return isObjectWithProperties(thing, [\"isSasTokenProvider\"]) && thing.isSasTokenProvider === true;\n}\n"]}
1
+ {"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../src/util/typeGuards.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAUlC,gDAEC;AATD,gDAA0D;AAE1D;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,OAAO,IAAA,kCAAsB,EAAC,KAAK,EAAE,CAAC,oBAAoB,CAAC,CAAC,IAAI,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;AACpG,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { SasTokenProvider } from \"../auth/tokenProvider.js\";\nimport { isObjectWithProperties } from \"@azure/core-util\";\n\n/**\n * Typeguard that checks if the input is a SasTokenProvider.\n * @param thing - Any object.\n * @hidden\n */\nexport function isSasTokenProvider(thing: unknown): thing is SasTokenProvider {\n return isObjectWithProperties(thing, [\"isSasTokenProvider\"]) && thing.isSasTokenProvider === true;\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { CancellableAsyncLock } from "./lock.js";
2
- import { AbortSignalLike } from "@azure/abort-controller";
3
- import { WebSocketImpl } from "rhea-promise";
1
+ import type { CancellableAsyncLock } from "./lock.js";
2
+ import type { AbortSignalLike } from "@azure/abort-controller";
3
+ import type { WebSocketImpl } from "rhea-promise";
4
4
  /**
5
5
  * @internal
6
6
  *
@@ -1,8 +1,16 @@
1
1
  "use strict";
2
2
  // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT license.
3
+ // Licensed under the MIT License.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.isNumber = exports.isString = exports.isIotHubConnectionString = exports.executePromisesSequentially = exports.randomNumberFromInterval = exports.isLoopbackAddress = exports.delay = exports.Timeout = exports.defaultCancellableLock = exports.parseConnectionString = void 0;
5
+ exports.Timeout = exports.defaultCancellableLock = void 0;
6
+ exports.parseConnectionString = parseConnectionString;
7
+ exports.delay = delay;
8
+ exports.isLoopbackAddress = isLoopbackAddress;
9
+ exports.randomNumberFromInterval = randomNumberFromInterval;
10
+ exports.executePromisesSequentially = executePromisesSequentially;
11
+ exports.isIotHubConnectionString = isIotHubConnectionString;
12
+ exports.isString = isString;
13
+ exports.isNumber = isNumber;
6
14
  const lock_js_1 = require("./lock.js");
7
15
  const core_util_1 = require("@azure/core-util");
8
16
  /**
@@ -41,7 +49,6 @@ function parseConnectionString(connectionString) {
41
49
  }
42
50
  return output;
43
51
  }
44
- exports.parseConnectionString = parseConnectionString;
45
52
  /**
46
53
  * The cancellable async lock instance.
47
54
  */
@@ -106,7 +113,6 @@ async function delay(delayInMs, abortSignal, abortErrorMsg, value) {
106
113
  return value;
107
114
  }
108
115
  }
109
- exports.delay = delay;
110
116
  /**
111
117
  * Checks if an address is localhost.
112
118
  * @param address - The address to check.
@@ -115,7 +121,6 @@ exports.delay = delay;
115
121
  function isLoopbackAddress(address) {
116
122
  return /^(.*:\/\/)?(127\.[\d.]+|[0:]+1|localhost)/.test(address.toLowerCase());
117
123
  }
118
- exports.isLoopbackAddress = isLoopbackAddress;
119
124
  /**
120
125
  * @internal
121
126
  *
@@ -126,7 +131,6 @@ exports.isLoopbackAddress = isLoopbackAddress;
126
131
  function randomNumberFromInterval(min, max) {
127
132
  return Math.floor(Math.random() * (max - min + 1) + min);
128
133
  }
129
- exports.randomNumberFromInterval = randomNumberFromInterval;
130
134
  /**
131
135
  * @internal
132
136
  *
@@ -147,7 +151,6 @@ function executePromisesSequentially(promiseFactories, kickstart) {
147
151
  });
148
152
  return result;
149
153
  }
150
- exports.executePromisesSequentially = executePromisesSequentially;
151
154
  /**
152
155
  * @internal
153
156
  *
@@ -164,19 +167,16 @@ function isIotHubConnectionString(connectionString) {
164
167
  }
165
168
  return result;
166
169
  }
167
- exports.isIotHubConnectionString = isIotHubConnectionString;
168
170
  /**
169
171
  * @internal
170
172
  */
171
173
  function isString(s) {
172
174
  return typeof s === "string";
173
175
  }
174
- exports.isString = isString;
175
176
  /**
176
177
  * @internal
177
178
  */
178
179
  function isNumber(n) {
179
180
  return typeof n === "number";
180
181
  }
181
- exports.isNumber = isNumber;
182
182
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/util/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CancellableAsyncLock, CancellableAsyncLockImpl } from \"./lock.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { WebSocketImpl } from \"rhea-promise\";\nimport { delay as wrapperDelay } from \"@azure/core-util\";\n\n/**\n * @internal\n *\n * Describes the options that can be provided to create an async lock.\n */\nexport interface AsyncLockOptions {\n /**\n * The max timeout. Default is: 0 (never timeout).\n */\n timeout?: number;\n /**\n * Maximum pending tasks. Default is: 1000.\n */\n maxPending?: number;\n /**\n * Whether lock can reenter in the same domain.\n * Default is: false.\n */\n domainReentrant?: boolean;\n /**\n * Your implementation of the promise. Default is: global promise.\n */\n Promise?: any;\n}\n\n/**\n * Options to configure the channelling of the AMQP connection over Web Sockets.\n */\nexport interface WebSocketOptions {\n /**\n * The WebSocket constructor used to create an AMQP connection over a WebSocket.\n * This option should be provided in the below scenarios:\n * - The TCP port 5671 which is that is used by the AMQP connection to Event Hubs is blocked in your environment.\n * - Your application needs to be run behind a proxy server.\n * - Your application needs to run in the browser and you want to provide your own choice of Websocket implementation\n * instead of the built-in WebSocket in the browser.\n */\n webSocket?: WebSocketImpl;\n /**\n * Options to be passed to the WebSocket constructor when the underlying `rhea` library instantiates\n * the WebSocket.\n */\n webSocketConstructorOptions?: any;\n}\n\n/**\n * Defines an object with possible properties defined in T.\n */\nexport type ParsedOutput<T> = { [P in keyof T]: T[P] };\n\n/**\n * Parses the connection string and returns an object of type T.\n *\n * Connection strings have the following syntax:\n *\n * ConnectionString ::= `Part { \";\" Part } [ \";\" ] [ WhiteSpace ]`\n * Part ::= [ PartLiteral [ \"=\" PartLiteral ] ]\n * PartLiteral ::= [ WhiteSpace ] Literal [ WhiteSpace ]\n * Literal ::= ? any sequence of characters except ; or = or WhiteSpace ?\n * WhiteSpace ::= ? all whitespace characters including `\\r` and `\\n` ?\n *\n * @param connectionString - The connection string to be parsed.\n * @returns ParsedOutput<T>.\n */\nexport function parseConnectionString<T>(connectionString: string): ParsedOutput<T> {\n const output: { [k: string]: string } = {};\n const parts = connectionString.trim().split(\";\");\n\n for (let part of parts) {\n part = part.trim();\n\n if (part === \"\") {\n // parts can be empty\n continue;\n }\n\n const splitIndex = part.indexOf(\"=\");\n if (splitIndex === -1) {\n throw new Error(\n \"Connection string malformed: each part of the connection string must have an `=` assignment.\",\n );\n }\n\n const key = part.substring(0, splitIndex).trim();\n if (key === \"\") {\n throw new Error(\"Connection string malformed: missing key for assignment\");\n }\n\n const value = part.substring(splitIndex + 1).trim();\n\n output[key] = value;\n }\n\n return output as any;\n}\n\n/**\n * The cancellable async lock instance.\n */\nexport const defaultCancellableLock: CancellableAsyncLock = new CancellableAsyncLockImpl();\n\n/**\n * @internal\n *\n * Describes a Timeout class that can wait for the specified amount of time and then resolve/reject\n * the promise with the given value.\n */\nexport class Timeout {\n private _timer?: ReturnType<typeof setTimeout>;\n\n set<T>(t: number, value?: T): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n this.clear();\n const callback: (args: any) => void = value ? () => reject(new Error(`${value}`)) : resolve;\n this._timer = setTimeout(callback, t);\n });\n }\n\n clear(): void {\n if (this._timer) {\n clearTimeout(this._timer);\n }\n }\n\n wrap<T>(promise: Promise<T>, t: number, value?: T): Promise<T> {\n const wrappedPromise = this._promiseFinally(promise, () => this.clear());\n const timer = this.set(t, value);\n return Promise.race([wrappedPromise, timer]);\n }\n\n private _promiseFinally<T>(promise: Promise<T>, fn: (...args: any[]) => void): Promise<T> {\n const success = (result: T): T => {\n fn();\n return result;\n };\n const error = (e: Error): Promise<never> => {\n fn();\n return Promise.reject(e);\n };\n return Promise.resolve(promise).then(success, error);\n }\n\n static set<T>(t: number, value?: T): Promise<T> {\n return new Timeout().set(t, value);\n }\n\n static wrap<T>(promise: Promise<T>, t: number, value?: T): Promise<T> {\n return new Timeout().wrap(promise, t, value);\n }\n}\n\n/**\n * A wrapper for setTimeout that resolves a promise after t milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param abortSignal - The abortSignal associated with containing operation.\n * @param abortErrorMsg - The abort error message associated with containing operation.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @returns - Resolved promise\n */\nexport async function delay<T>(\n delayInMs: number,\n abortSignal?: AbortSignalLike,\n abortErrorMsg?: string,\n value?: T,\n): Promise<T | void> {\n await wrapperDelay(delayInMs, {\n abortSignal: abortSignal,\n abortErrorMsg: abortErrorMsg,\n });\n if (value !== undefined) {\n return value;\n }\n}\n\n/**\n * Checks if an address is localhost.\n * @param address - The address to check.\n * @returns true if the address is localhost, false otherwise.\n */\nexport function isLoopbackAddress(address: string): boolean {\n return /^(.*:\\/\\/)?(127\\.[\\d.]+|[0:]+1|localhost)/.test(address.toLowerCase());\n}\n\n/**\n * @internal\n *\n * Generates a random number between the given interval\n * @param min - Min number of the range (inclusive).\n * @param max - Max number of the range (inclusive).\n */\nexport function randomNumberFromInterval(min: number, max: number): number {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n\n/**\n * @internal\n *\n * Type declaration for a Function type where T is the input to the function and V is the output\n * of the function.\n */\nexport type Func<T, V> = (a: T) => V;\n\n/**\n * @internal\n *\n * Executes an array of promises sequentially. Inspiration of this method is here:\n * https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html. An awesome blog on promises!\n *\n * @param promiseFactories - An array of promise factories(A function that return a promise)\n *\n * @param kickstart - Input to the first promise that is used to kickstart the promise chain.\n * If not provided then the promise chain starts with undefined.\n *\n * @returns A chain of resolved or rejected promises\n */\nexport function executePromisesSequentially(\n promiseFactories: Array<any>,\n kickstart?: unknown,\n): Promise<any> {\n let result = Promise.resolve(kickstart);\n promiseFactories.forEach((promiseFactory) => {\n result = result.then(promiseFactory);\n });\n return result;\n}\n\n/**\n * @internal\n *\n * Determines whether the given connection string is an iothub connection string.\n * @param connectionString - The connection string.\n * @returns boolean.\n */\nexport function isIotHubConnectionString(connectionString: string): boolean {\n connectionString = String(connectionString);\n\n let result: boolean = false;\n const model: any = parseConnectionString<any>(connectionString);\n if (model && model.HostName && model.SharedAccessKey && model.SharedAccessKeyName) {\n result = true;\n }\n return result;\n}\n\n/**\n * @internal\n */\nexport function isString(s: unknown): s is string {\n return typeof s === \"string\";\n}\n\n/**\n * @internal\n */\nexport function isNumber(n: unknown): n is number {\n return typeof n === \"number\";\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/util/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { CancellableAsyncLock } from \"./lock.js\";\nimport { CancellableAsyncLockImpl } from \"./lock.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { WebSocketImpl } from \"rhea-promise\";\nimport { delay as wrapperDelay } from \"@azure/core-util\";\n\n/**\n * @internal\n *\n * Describes the options that can be provided to create an async lock.\n */\nexport interface AsyncLockOptions {\n /**\n * The max timeout. Default is: 0 (never timeout).\n */\n timeout?: number;\n /**\n * Maximum pending tasks. Default is: 1000.\n */\n maxPending?: number;\n /**\n * Whether lock can reenter in the same domain.\n * Default is: false.\n */\n domainReentrant?: boolean;\n /**\n * Your implementation of the promise. Default is: global promise.\n */\n Promise?: any;\n}\n\n/**\n * Options to configure the channelling of the AMQP connection over Web Sockets.\n */\nexport interface WebSocketOptions {\n /**\n * The WebSocket constructor used to create an AMQP connection over a WebSocket.\n * This option should be provided in the below scenarios:\n * - The TCP port 5671 which is that is used by the AMQP connection to Event Hubs is blocked in your environment.\n * - Your application needs to be run behind a proxy server.\n * - Your application needs to run in the browser and you want to provide your own choice of Websocket implementation\n * instead of the built-in WebSocket in the browser.\n */\n webSocket?: WebSocketImpl;\n /**\n * Options to be passed to the WebSocket constructor when the underlying `rhea` library instantiates\n * the WebSocket.\n */\n webSocketConstructorOptions?: any;\n}\n\n/**\n * Defines an object with possible properties defined in T.\n */\nexport type ParsedOutput<T> = { [P in keyof T]: T[P] };\n\n/**\n * Parses the connection string and returns an object of type T.\n *\n * Connection strings have the following syntax:\n *\n * ConnectionString ::= `Part { \";\" Part } [ \";\" ] [ WhiteSpace ]`\n * Part ::= [ PartLiteral [ \"=\" PartLiteral ] ]\n * PartLiteral ::= [ WhiteSpace ] Literal [ WhiteSpace ]\n * Literal ::= ? any sequence of characters except ; or = or WhiteSpace ?\n * WhiteSpace ::= ? all whitespace characters including `\\r` and `\\n` ?\n *\n * @param connectionString - The connection string to be parsed.\n * @returns ParsedOutput<T>.\n */\nexport function parseConnectionString<T>(connectionString: string): ParsedOutput<T> {\n const output: { [k: string]: string } = {};\n const parts = connectionString.trim().split(\";\");\n\n for (let part of parts) {\n part = part.trim();\n\n if (part === \"\") {\n // parts can be empty\n continue;\n }\n\n const splitIndex = part.indexOf(\"=\");\n if (splitIndex === -1) {\n throw new Error(\n \"Connection string malformed: each part of the connection string must have an `=` assignment.\",\n );\n }\n\n const key = part.substring(0, splitIndex).trim();\n if (key === \"\") {\n throw new Error(\"Connection string malformed: missing key for assignment\");\n }\n\n const value = part.substring(splitIndex + 1).trim();\n\n output[key] = value;\n }\n\n return output as any;\n}\n\n/**\n * The cancellable async lock instance.\n */\nexport const defaultCancellableLock: CancellableAsyncLock = new CancellableAsyncLockImpl();\n\n/**\n * @internal\n *\n * Describes a Timeout class that can wait for the specified amount of time and then resolve/reject\n * the promise with the given value.\n */\nexport class Timeout {\n private _timer?: ReturnType<typeof setTimeout>;\n\n set<T>(t: number, value?: T): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n this.clear();\n const callback: (args: any) => void = value ? () => reject(new Error(`${value}`)) : resolve;\n this._timer = setTimeout(callback, t);\n });\n }\n\n clear(): void {\n if (this._timer) {\n clearTimeout(this._timer);\n }\n }\n\n wrap<T>(promise: Promise<T>, t: number, value?: T): Promise<T> {\n const wrappedPromise = this._promiseFinally(promise, () => this.clear());\n const timer = this.set(t, value);\n return Promise.race([wrappedPromise, timer]);\n }\n\n private _promiseFinally<T>(promise: Promise<T>, fn: (...args: any[]) => void): Promise<T> {\n const success = (result: T): T => {\n fn();\n return result;\n };\n const error = (e: Error): Promise<never> => {\n fn();\n return Promise.reject(e);\n };\n return Promise.resolve(promise).then(success, error);\n }\n\n static set<T>(t: number, value?: T): Promise<T> {\n return new Timeout().set(t, value);\n }\n\n static wrap<T>(promise: Promise<T>, t: number, value?: T): Promise<T> {\n return new Timeout().wrap(promise, t, value);\n }\n}\n\n/**\n * A wrapper for setTimeout that resolves a promise after t milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param abortSignal - The abortSignal associated with containing operation.\n * @param abortErrorMsg - The abort error message associated with containing operation.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @returns - Resolved promise\n */\nexport async function delay<T>(\n delayInMs: number,\n abortSignal?: AbortSignalLike,\n abortErrorMsg?: string,\n value?: T,\n): Promise<T | void> {\n await wrapperDelay(delayInMs, {\n abortSignal: abortSignal,\n abortErrorMsg: abortErrorMsg,\n });\n if (value !== undefined) {\n return value;\n }\n}\n\n/**\n * Checks if an address is localhost.\n * @param address - The address to check.\n * @returns true if the address is localhost, false otherwise.\n */\nexport function isLoopbackAddress(address: string): boolean {\n return /^(.*:\\/\\/)?(127\\.[\\d.]+|[0:]+1|localhost)/.test(address.toLowerCase());\n}\n\n/**\n * @internal\n *\n * Generates a random number between the given interval\n * @param min - Min number of the range (inclusive).\n * @param max - Max number of the range (inclusive).\n */\nexport function randomNumberFromInterval(min: number, max: number): number {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n\n/**\n * @internal\n *\n * Type declaration for a Function type where T is the input to the function and V is the output\n * of the function.\n */\nexport type Func<T, V> = (a: T) => V;\n\n/**\n * @internal\n *\n * Executes an array of promises sequentially. Inspiration of this method is here:\n * https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html. An awesome blog on promises!\n *\n * @param promiseFactories - An array of promise factories(A function that return a promise)\n *\n * @param kickstart - Input to the first promise that is used to kickstart the promise chain.\n * If not provided then the promise chain starts with undefined.\n *\n * @returns A chain of resolved or rejected promises\n */\nexport function executePromisesSequentially(\n promiseFactories: Array<any>,\n kickstart?: unknown,\n): Promise<any> {\n let result = Promise.resolve(kickstart);\n promiseFactories.forEach((promiseFactory) => {\n result = result.then(promiseFactory);\n });\n return result;\n}\n\n/**\n * @internal\n *\n * Determines whether the given connection string is an iothub connection string.\n * @param connectionString - The connection string.\n * @returns boolean.\n */\nexport function isIotHubConnectionString(connectionString: string): boolean {\n connectionString = String(connectionString);\n\n let result: boolean = false;\n const model: any = parseConnectionString<any>(connectionString);\n if (model && model.HostName && model.SharedAccessKey && model.SharedAccessKeyName) {\n result = true;\n }\n return result;\n}\n\n/**\n * @internal\n */\nexport function isString(s: unknown): s is string {\n return typeof s === \"string\";\n}\n\n/**\n * @internal\n */\nexport function isNumber(n: unknown): n is number {\n return typeof n === \"number\";\n}\n"]}
@@ -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 { Connection, generate_uuid, } from "rhea-promise";
4
4
  import { getFrameworkInfo, getPlatformInfo } from "./util/runtimeInfo.js";
5
5
  import { CbsClient } from "./cbs.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionContextBase.js","sourceRoot":"","sources":["../../src/ConnectionContextBase.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n AwaitableSender,\n Connection,\n type ConnectionOptions,\n type CreateAwaitableSenderOptions,\n type CreateReceiverOptions,\n type CreateSenderOptions,\n Receiver,\n Sender,\n generate_uuid,\n} from \"rhea-promise\";\nimport { getFrameworkInfo, getPlatformInfo } from \"./util/runtimeInfo.js\";\nimport { CbsClient } from \"./cbs.js\";\nimport { ConnectionConfig } from \"./connectionConfig/connectionConfig.js\";\nimport { Constants } from \"./util/constants.js\";\nimport { isNodeLike } from \"@azure/core-util\";\n\n/**\n * Provides contextual information like the underlying amqp connection, cbs session, tokenProvider,\n * Connection config, data transformer, etc.\n */\nexport interface ConnectionContextBase {\n /**\n * The EventHub connection config that is created after\n * parsing the connection string.\n */\n readonly config: ConnectionConfig;\n /**\n * The unique lock name per connection that is used to\n * acquire the lock for establishing an amqp connection per client if one does not exist.\n */\n connectionLock: string;\n /**\n * The unique lock name per connection that is used to\n * acquire the lock for negotiating cbs claim by an entity on that connection.\n */\n negotiateClaimLock: string;\n /**\n * The underlying AMQP connection.\n */\n connection: Connection;\n /**\n * The amqp connection id that uniquely identifies the\n * connection within a process.\n */\n connectionId: string;\n /**\n * Indicates whether the close() method was\n * called on the connection object.\n */\n wasConnectionCloseCalled: boolean;\n /**\n * A reference to the cbs session ($cbs endpoint) on the\n * underlying AMQP connection for the EventHub Client.\n */\n cbsSession: CbsClient;\n /**\n * Updates the context to use a new underlying AMQP connection and new cbs session.\n */\n refreshConnection: () => void;\n}\n\n/**\n * Defines the properties that need to be set while establishing the AMQP connection.\n */\nexport interface ConnectionProperties {\n /**\n * The name of the product that will be populated as the AMQP\n * connection property. Example: \"MSJSClient\".\n */\n product: string;\n /**\n * The version of the package/sdk that is making the AMQP connection.\n */\n version: string;\n /**\n * The userAgent that needs to be set as the AMQP connection\n * property. Example: `\"/js-service-bus\"` or `\"/js-event-hubs,/js-event-processor-host=1.0.0\"`.\n */\n userAgent: string;\n}\n\n/**\n * Describes the parameters that can be provided to create the base connection context.\n */\nexport interface CreateConnectionContextBaseParameters {\n /**\n * The connection config that is created by parsing the\n * connection string.\n */\n config: ConnectionConfig;\n /**\n * Properties to be provided while creating\n * the AMQP connection.\n */\n connectionProperties: ConnectionProperties;\n /**\n * Determines whether entity path should be a part of\n * the connection config. If `true` it must be present, `false` otherwise. Default value false.\n */\n isEntityPathRequired?: boolean;\n /**\n * The duration in which the promise should\n * complete (resolve/reject). If it is not completed, then the Promise will be rejected after\n * timeout occurs. Default: `60000 milliseconds`.\n */\n operationTimeoutInMs?: number;\n}\n\nconst maxListenerLimit = 1000;\n\nclass CoreAmqpConnection extends Connection {\n /**\n * Creates an amqp sender link. Max listener limit on the sender is set to 1000 because the\n * default value of 10 in NodeJS is too low.\n * @param options - Optional parameters to create a sender link.\n * @returns Promise<Sender>.\n */\n async createSender(options?: CreateSenderOptions): Promise<Sender> {\n const sender = await super.createSender(options);\n sender.setMaxListeners(maxListenerLimit);\n return sender;\n }\n\n /**\n * Creates an awaitable amqp sender. Max listener limit on the sender is set to 1000 because the\n * default value of 10 in NodeJS is too low.\n * @param options - Optional parameters to create an awaitable sender link.\n * - If `onError` and `onSessionError` handlers are not provided then the `AwaitableSender` will\n * clear the timer and reject the Promise for all the entries of inflight send operation in its\n * `deliveryDispositionMap`.\n * - If the user is handling the reconnection of sender link or the underlying connection in it's\n * app, then the `onError` and `onSessionError` handlers must be provided by the user and (s)he\n * shall be responsible of clearing the `deliveryDispositionMap` of inflight `send()` operation.\n *\n * @returns Promise<AwaitableSender>.\n */\n async createAwaitableSender(options?: CreateAwaitableSenderOptions): Promise<AwaitableSender> {\n const sender = await super.createAwaitableSender(options);\n sender.setMaxListeners(maxListenerLimit);\n return sender;\n }\n\n /**\n * Creates an amqp receiver link. Max listener limit on the sender is set to 1000 because the\n * default value of 10 in NodeJS is too low.\n * @param options - Optional parameters to create a receiver link.\n * @returns Promise<Receiver>.\n */\n async createReceiver(options?: CreateReceiverOptions): Promise<Receiver> {\n const receiver = await super.createReceiver(options);\n receiver.setMaxListeners(maxListenerLimit);\n return receiver;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- renaming constant would be a breaking change.\nexport const ConnectionContextBase = {\n /**\n * Creates the base connection context.\n * @param parameters - Parameters to be provided to create\n * the base connection context.\n */\n create(parameters: CreateConnectionContextBaseParameters): ConnectionContextBase {\n ConnectionConfig.validate(parameters.config, {\n isEntityPathRequired: parameters.isEntityPathRequired || false,\n });\n const userAgent = parameters.connectionProperties.userAgent;\n if (userAgent.length > Constants.maxUserAgentLength) {\n throw new Error(\n `The user-agent string cannot be more than ${Constants.maxUserAgentLength} characters in length.` +\n `The given user-agent string is: ${userAgent} with length: ${userAgent.length}`,\n );\n }\n\n const connectionOptions: ConnectionOptions = {\n transport: (parameters.config.useDevelopmentEmulator ? Constants.TCP : Constants.TLS) as any,\n host: parameters.config.host,\n hostname: parameters.config.amqpHostname ?? parameters.config.host,\n username: parameters.config.sharedAccessKeyName,\n port: parameters.config.port ?? (parameters.config.useDevelopmentEmulator ? 5672 : 5671),\n reconnect: false,\n properties: {\n product: parameters.connectionProperties.product,\n version: parameters.connectionProperties.version,\n \"user-agent\": userAgent,\n platform: getPlatformInfo(),\n framework: getFrameworkInfo(),\n },\n idle_time_out: Constants.defaultConnectionIdleTimeoutInMs,\n operationTimeoutInSeconds: parameters.operationTimeoutInMs\n ? parameters.operationTimeoutInMs / 1000\n : undefined,\n };\n\n if (\n parameters.config.webSocket ||\n (!isNodeLike && typeof self !== \"undefined\" && (self as any).WebSocket)\n ) {\n const socket = parameters.config.webSocket || (self as any).WebSocket;\n const host = parameters.config.host;\n const endpoint = parameters.config.webSocketEndpointPath || \"\";\n const socketOptions = parameters.config.webSocketConstructorOptions || {};\n const port = parameters.config.port ?? 443;\n\n connectionOptions.webSocketOptions = {\n webSocket: socket,\n url: `wss://${host}:${port}/${endpoint}`,\n protocol: [\"AMQPWSB10\"],\n options: socketOptions,\n };\n }\n\n const connection = new CoreAmqpConnection(connectionOptions);\n const connectionLock = `${Constants.establishConnection}-${generate_uuid()}`;\n const connectionContextBase: ConnectionContextBase = {\n wasConnectionCloseCalled: false,\n connectionLock: connectionLock,\n negotiateClaimLock: `${Constants.negotiateClaim}-${generate_uuid()}`,\n connection: connection,\n connectionId: connection.id,\n cbsSession: new CbsClient(connection, connectionLock),\n config: parameters.config,\n refreshConnection() {\n const newConnection = new CoreAmqpConnection(connectionOptions);\n const newConnectionLock = `${Constants.establishConnection}-${generate_uuid()}`;\n this.wasConnectionCloseCalled = false;\n this.connectionLock = newConnectionLock;\n this.negotiateClaimLock = `${Constants.negotiateClaim} - ${generate_uuid()}`;\n this.connection = newConnection;\n this.connectionId = newConnection.id;\n this.cbsSession = new CbsClient(newConnection, newConnectionLock);\n },\n };\n\n return connectionContextBase;\n },\n};\n"]}
1
+ {"version":3,"file":"ConnectionContextBase.js","sourceRoot":"","sources":["../../src/ConnectionContextBase.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AwaitableSender, Receiver, Sender } from \"rhea-promise\";\nimport {\n Connection,\n type ConnectionOptions,\n type CreateAwaitableSenderOptions,\n type CreateReceiverOptions,\n type CreateSenderOptions,\n generate_uuid,\n} from \"rhea-promise\";\nimport { getFrameworkInfo, getPlatformInfo } from \"./util/runtimeInfo.js\";\nimport { CbsClient } from \"./cbs.js\";\nimport { ConnectionConfig } from \"./connectionConfig/connectionConfig.js\";\nimport { Constants } from \"./util/constants.js\";\nimport { isNodeLike } from \"@azure/core-util\";\n\n/**\n * Provides contextual information like the underlying amqp connection, cbs session, tokenProvider,\n * Connection config, data transformer, etc.\n */\nexport interface ConnectionContextBase {\n /**\n * The EventHub connection config that is created after\n * parsing the connection string.\n */\n readonly config: ConnectionConfig;\n /**\n * The unique lock name per connection that is used to\n * acquire the lock for establishing an amqp connection per client if one does not exist.\n */\n connectionLock: string;\n /**\n * The unique lock name per connection that is used to\n * acquire the lock for negotiating cbs claim by an entity on that connection.\n */\n negotiateClaimLock: string;\n /**\n * The underlying AMQP connection.\n */\n connection: Connection;\n /**\n * The amqp connection id that uniquely identifies the\n * connection within a process.\n */\n connectionId: string;\n /**\n * Indicates whether the close() method was\n * called on the connection object.\n */\n wasConnectionCloseCalled: boolean;\n /**\n * A reference to the cbs session ($cbs endpoint) on the\n * underlying AMQP connection for the EventHub Client.\n */\n cbsSession: CbsClient;\n /**\n * Updates the context to use a new underlying AMQP connection and new cbs session.\n */\n refreshConnection: () => void;\n}\n\n/**\n * Defines the properties that need to be set while establishing the AMQP connection.\n */\nexport interface ConnectionProperties {\n /**\n * The name of the product that will be populated as the AMQP\n * connection property. Example: \"MSJSClient\".\n */\n product: string;\n /**\n * The version of the package/sdk that is making the AMQP connection.\n */\n version: string;\n /**\n * The userAgent that needs to be set as the AMQP connection\n * property. Example: `\"/js-service-bus\"` or `\"/js-event-hubs,/js-event-processor-host=1.0.0\"`.\n */\n userAgent: string;\n}\n\n/**\n * Describes the parameters that can be provided to create the base connection context.\n */\nexport interface CreateConnectionContextBaseParameters {\n /**\n * The connection config that is created by parsing the\n * connection string.\n */\n config: ConnectionConfig;\n /**\n * Properties to be provided while creating\n * the AMQP connection.\n */\n connectionProperties: ConnectionProperties;\n /**\n * Determines whether entity path should be a part of\n * the connection config. If `true` it must be present, `false` otherwise. Default value false.\n */\n isEntityPathRequired?: boolean;\n /**\n * The duration in which the promise should\n * complete (resolve/reject). If it is not completed, then the Promise will be rejected after\n * timeout occurs. Default: `60000 milliseconds`.\n */\n operationTimeoutInMs?: number;\n}\n\nconst maxListenerLimit = 1000;\n\nclass CoreAmqpConnection extends Connection {\n /**\n * Creates an amqp sender link. Max listener limit on the sender is set to 1000 because the\n * default value of 10 in NodeJS is too low.\n * @param options - Optional parameters to create a sender link.\n * @returns Promise<Sender>.\n */\n async createSender(options?: CreateSenderOptions): Promise<Sender> {\n const sender = await super.createSender(options);\n sender.setMaxListeners(maxListenerLimit);\n return sender;\n }\n\n /**\n * Creates an awaitable amqp sender. Max listener limit on the sender is set to 1000 because the\n * default value of 10 in NodeJS is too low.\n * @param options - Optional parameters to create an awaitable sender link.\n * - If `onError` and `onSessionError` handlers are not provided then the `AwaitableSender` will\n * clear the timer and reject the Promise for all the entries of inflight send operation in its\n * `deliveryDispositionMap`.\n * - If the user is handling the reconnection of sender link or the underlying connection in it's\n * app, then the `onError` and `onSessionError` handlers must be provided by the user and (s)he\n * shall be responsible of clearing the `deliveryDispositionMap` of inflight `send()` operation.\n *\n * @returns Promise<AwaitableSender>.\n */\n async createAwaitableSender(options?: CreateAwaitableSenderOptions): Promise<AwaitableSender> {\n const sender = await super.createAwaitableSender(options);\n sender.setMaxListeners(maxListenerLimit);\n return sender;\n }\n\n /**\n * Creates an amqp receiver link. Max listener limit on the sender is set to 1000 because the\n * default value of 10 in NodeJS is too low.\n * @param options - Optional parameters to create a receiver link.\n * @returns Promise<Receiver>.\n */\n async createReceiver(options?: CreateReceiverOptions): Promise<Receiver> {\n const receiver = await super.createReceiver(options);\n receiver.setMaxListeners(maxListenerLimit);\n return receiver;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- renaming constant would be a breaking change.\nexport const ConnectionContextBase = {\n /**\n * Creates the base connection context.\n * @param parameters - Parameters to be provided to create\n * the base connection context.\n */\n create(parameters: CreateConnectionContextBaseParameters): ConnectionContextBase {\n ConnectionConfig.validate(parameters.config, {\n isEntityPathRequired: parameters.isEntityPathRequired || false,\n });\n const userAgent = parameters.connectionProperties.userAgent;\n if (userAgent.length > Constants.maxUserAgentLength) {\n throw new Error(\n `The user-agent string cannot be more than ${Constants.maxUserAgentLength} characters in length.` +\n `The given user-agent string is: ${userAgent} with length: ${userAgent.length}`,\n );\n }\n\n const connectionOptions: ConnectionOptions = {\n transport: (parameters.config.useDevelopmentEmulator ? Constants.TCP : Constants.TLS) as any,\n host: parameters.config.host,\n hostname: parameters.config.amqpHostname ?? parameters.config.host,\n username: parameters.config.sharedAccessKeyName,\n port: parameters.config.port ?? (parameters.config.useDevelopmentEmulator ? 5672 : 5671),\n reconnect: false,\n properties: {\n product: parameters.connectionProperties.product,\n version: parameters.connectionProperties.version,\n \"user-agent\": userAgent,\n platform: getPlatformInfo(),\n framework: getFrameworkInfo(),\n },\n idle_time_out: Constants.defaultConnectionIdleTimeoutInMs,\n operationTimeoutInSeconds: parameters.operationTimeoutInMs\n ? parameters.operationTimeoutInMs / 1000\n : undefined,\n };\n\n if (\n parameters.config.webSocket ||\n (!isNodeLike && typeof self !== \"undefined\" && (self as any).WebSocket)\n ) {\n const socket = parameters.config.webSocket || (self as any).WebSocket;\n const host = parameters.config.host;\n const endpoint = parameters.config.webSocketEndpointPath || \"\";\n const socketOptions = parameters.config.webSocketConstructorOptions || {};\n const port = parameters.config.port ?? 443;\n\n connectionOptions.webSocketOptions = {\n webSocket: socket,\n url: `wss://${host}:${port}/${endpoint}`,\n protocol: [\"AMQPWSB10\"],\n options: socketOptions,\n };\n }\n\n const connection = new CoreAmqpConnection(connectionOptions);\n const connectionLock = `${Constants.establishConnection}-${generate_uuid()}`;\n const connectionContextBase: ConnectionContextBase = {\n wasConnectionCloseCalled: false,\n connectionLock: connectionLock,\n negotiateClaimLock: `${Constants.negotiateClaim}-${generate_uuid()}`,\n connection: connection,\n connectionId: connection.id,\n cbsSession: new CbsClient(connection, connectionLock),\n config: parameters.config,\n refreshConnection() {\n const newConnection = new CoreAmqpConnection(connectionOptions);\n const newConnectionLock = `${Constants.establishConnection}-${generate_uuid()}`;\n this.wasConnectionCloseCalled = false;\n this.connectionLock = newConnectionLock;\n this.negotiateClaimLock = `${Constants.negotiateClaim} - ${generate_uuid()}`;\n this.connection = newConnection;\n this.connectionId = newConnection.id;\n this.cbsSession = new CbsClient(newConnection, newConnectionLock);\n },\n };\n\n return connectionContextBase;\n },\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import { AmqpMessageHeader } from "./messageHeader.js";
2
2
  import { AmqpMessageProperties } from "./messageProperties.js";
3
- import { Message as RheaMessage } from "rhea-promise";
3
+ import type { Message as RheaMessage } from "rhea-promise";
4
4
  /**
5
5
  * Describes the AmqpAnnotatedMessage, part of the ServiceBusReceivedMessage(as `amqpAnnotatedMessage` property).
6
6
  */
@@ -1,6 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
3
- /* eslint-disable eqeqeq */
2
+ // Licensed under the MIT License.
4
3
  import { AmqpMessageHeader } from "./messageHeader.js";
5
4
  import { AmqpMessageProperties } from "./messageProperties.js";
6
5
  import { Constants } from "./util/constants.js";
@@ -1 +1 @@
1
- {"version":3,"file":"amqpAnnotatedMessage.js","sourceRoot":"","sources":["../../src/amqpAnnotatedMessage.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAyChD;;GAEG;AACH,4GAA4G;AAC5G,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC;;OAEG;IACH,eAAe,CAAC,GAAgB;QAC9B,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,GAAG,CAAC;YACpD,MAAM,EAAG,GAAW,CAAC,MAAM;YAC3B,kBAAkB,EAAE,GAAG,CAAC,mBAAmB;YAC3C,mBAAmB,EAAE,GAAG,CAAC,oBAAoB;YAC7C,qBAAqB,EAAE,GAAG,CAAC,sBAAsB;YACjD,UAAU,EAAE,qBAAqB,CAAC,yBAAyB,CAAC,GAAG,CAAC;YAChE,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC;QACF,IAAI,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAC7B,MAAM,kBAAkB,GAAG,GAAG,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;YAC9D,OAAO,CAAC,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAC9C,kBAAkB,EAClB,SAAS,CAAC,qBAAqB,CAChC,CAAC;YAEF,uEAAuE;YACvE,sEAAsE;YACtE,6DAA6D;YAC7D,6EAA6E;YAC7E,wEAAwE;YACxE,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,UAAU;oBACvB,OAAO,CAAC,UAAU,CAAC,kBAAkB,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YACxE,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IACD;;OAEG;IACH,aAAa,CAAC,GAAyB;;QACrC,MAAM,KAAK,iDACN,qBAAqB,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,GACnE,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,KAC1D,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,mBAAmB,EAAE,GAAG,CAAC,kBAAkB,EAC3C,oBAAoB,EAAE,GAAG,CAAC,mBAAmB,EAC7C,sBAAsB,EAAE,GAAG,CAAC,qBAAqB,EACjD,MAAM,EAAE,GAAG,CAAC,MAAM,GACnB,CAAC;QAEF,iGAAiG;QACjG,2FAA2F;QAC3F,8EAA8E;QAC9E,IAAI,MAAA,GAAG,CAAC,MAAM,0CAAE,UAAU,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;YAClC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;YACpD,KAAK,CAAC,aAAa,GAAG,MAAA,KAAK,CAAC,aAAa,mCAAI,IAAI,IAAI,EAAE,CAAC;YACxD,KAAK,CAAC,oBAAoB,GAAG,IAAI,IAAI,CACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAC/E,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/* eslint-disable eqeqeq */\nimport { AmqpMessageHeader } from \"./messageHeader.js\";\nimport { AmqpMessageProperties } from \"./messageProperties.js\";\nimport { Message as RheaMessage } from \"rhea-promise\";\nimport { Constants } from \"./util/constants.js\";\n\n/**\n * Describes the AmqpAnnotatedMessage, part of the ServiceBusReceivedMessage(as `amqpAnnotatedMessage` property).\n */\nexport interface AmqpAnnotatedMessage {\n /**\n * Describes the defined set of standard header properties of the message.\n */\n header?: AmqpMessageHeader;\n /**\n * Describes set of footer properties of the message.\n */\n footer?: { [key: string]: any };\n /**\n * A dictionary containing message attributes that will be held in the message header\n */\n messageAnnotations?: { [key: string]: any };\n /**\n * A dictionary used for delivery-specific\n * non-standard properties at the head of the message.\n */\n deliveryAnnotations?: { [key: string]: any };\n /**\n * A dictionary containing application specific message properties.\n */\n applicationProperties?: { [key: string]: any };\n /**\n * Describes the defined set of standard properties of the message.\n */\n properties?: AmqpMessageProperties;\n /**\n * The message body.\n */\n body: any;\n /**\n * The AMQP section where the data was decoded from.\n */\n bodyType?: \"data\" | \"sequence\" | \"value\";\n}\n\n/**\n * Describes the operations that can be performed on(or to get) the AmqpAnnotatedMessage.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- renaming constant would be a breaking change.\nexport const AmqpAnnotatedMessage = {\n /**\n * Takes RheaMessage(`Message` type from \"rhea\") and returns it in the AmqpAnnotatedMessage format.\n */\n fromRheaMessage(msg: RheaMessage): AmqpAnnotatedMessage {\n const amqpMsg = {\n header: AmqpMessageHeader.fromRheaMessageHeader(msg),\n footer: (msg as any).footer,\n messageAnnotations: msg.message_annotations,\n deliveryAnnotations: msg.delivery_annotations,\n applicationProperties: msg.application_properties,\n properties: AmqpMessageProperties.fromRheaMessageProperties(msg),\n body: msg.body,\n };\n if (msg.absolute_expiry_time) {\n const absoluteExpiryTime = msg.absolute_expiry_time.getTime();\n amqpMsg.properties.absoluteExpiryTime = Math.min(\n absoluteExpiryTime,\n Constants.maxAbsoluteExpiryTime,\n );\n\n // The TTL from the header can be at most approximately 49 days (uint32\n // max value milliseconds) due to the AMQP spec. In order to allow for\n // larger TTLs set by the user, we take the difference of the\n // absolute_expiry_time and the creation_time (if both are set). If either of\n // those properties is not set, we fall back to the TTL from the header.\n if (msg.creation_time) {\n amqpMsg.header.timeToLive =\n amqpMsg.properties.absoluteExpiryTime - msg.creation_time.getTime();\n }\n }\n\n return amqpMsg;\n },\n /**\n * Takes AmqpAnnotatedMessage and returns it in the RheaMessage(`Message` type from \"rhea\") format.\n */\n toRheaMessage(msg: AmqpAnnotatedMessage): RheaMessage {\n const rhMsg = {\n ...AmqpMessageProperties.toRheaMessageProperties(msg.properties || {}),\n ...AmqpMessageHeader.toRheaMessageHeader(msg.header || {}),\n body: msg.body,\n message_annotations: msg.messageAnnotations,\n delivery_annotations: msg.deliveryAnnotations,\n application_properties: msg.applicationProperties,\n footer: msg.footer,\n };\n\n // There is a loss of fidelity in the TTL header if larger than uint32 max value. As a workaround\n // we set the absolute_expiry_time and creation_time on the message based on the TTL. These\n // values are then used to reconstruct the accurate TTL for received messages.\n if (msg.header?.timeToLive) {\n const ttl = msg.header.timeToLive;\n rhMsg.ttl = Math.min(ttl, Constants.maxUint32Value);\n rhMsg.creation_time = rhMsg.creation_time ?? new Date();\n rhMsg.absolute_expiry_time = new Date(\n Math.min(rhMsg.creation_time.getTime() + ttl, Constants.maxAbsoluteExpiryTime),\n );\n }\n\n return rhMsg;\n },\n};\n"]}
1
+ {"version":3,"file":"amqpAnnotatedMessage.js","sourceRoot":"","sources":["../../src/amqpAnnotatedMessage.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAyChD;;GAEG;AACH,4GAA4G;AAC5G,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC;;OAEG;IACH,eAAe,CAAC,GAAgB;QAC9B,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,GAAG,CAAC;YACpD,MAAM,EAAG,GAAW,CAAC,MAAM;YAC3B,kBAAkB,EAAE,GAAG,CAAC,mBAAmB;YAC3C,mBAAmB,EAAE,GAAG,CAAC,oBAAoB;YAC7C,qBAAqB,EAAE,GAAG,CAAC,sBAAsB;YACjD,UAAU,EAAE,qBAAqB,CAAC,yBAAyB,CAAC,GAAG,CAAC;YAChE,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC;QACF,IAAI,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAC7B,MAAM,kBAAkB,GAAG,GAAG,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;YAC9D,OAAO,CAAC,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAC9C,kBAAkB,EAClB,SAAS,CAAC,qBAAqB,CAChC,CAAC;YAEF,uEAAuE;YACvE,sEAAsE;YACtE,6DAA6D;YAC7D,6EAA6E;YAC7E,wEAAwE;YACxE,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,UAAU;oBACvB,OAAO,CAAC,UAAU,CAAC,kBAAkB,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YACxE,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IACD;;OAEG;IACH,aAAa,CAAC,GAAyB;;QACrC,MAAM,KAAK,iDACN,qBAAqB,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,GACnE,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,KAC1D,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,mBAAmB,EAAE,GAAG,CAAC,kBAAkB,EAC3C,oBAAoB,EAAE,GAAG,CAAC,mBAAmB,EAC7C,sBAAsB,EAAE,GAAG,CAAC,qBAAqB,EACjD,MAAM,EAAE,GAAG,CAAC,MAAM,GACnB,CAAC;QAEF,iGAAiG;QACjG,2FAA2F;QAC3F,8EAA8E;QAC9E,IAAI,MAAA,GAAG,CAAC,MAAM,0CAAE,UAAU,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;YAClC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;YACpD,KAAK,CAAC,aAAa,GAAG,MAAA,KAAK,CAAC,aAAa,mCAAI,IAAI,IAAI,EAAE,CAAC;YACxD,KAAK,CAAC,oBAAoB,GAAG,IAAI,IAAI,CACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAC/E,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AmqpMessageHeader } from \"./messageHeader.js\";\nimport { AmqpMessageProperties } from \"./messageProperties.js\";\nimport type { Message as RheaMessage } from \"rhea-promise\";\nimport { Constants } from \"./util/constants.js\";\n\n/**\n * Describes the AmqpAnnotatedMessage, part of the ServiceBusReceivedMessage(as `amqpAnnotatedMessage` property).\n */\nexport interface AmqpAnnotatedMessage {\n /**\n * Describes the defined set of standard header properties of the message.\n */\n header?: AmqpMessageHeader;\n /**\n * Describes set of footer properties of the message.\n */\n footer?: { [key: string]: any };\n /**\n * A dictionary containing message attributes that will be held in the message header\n */\n messageAnnotations?: { [key: string]: any };\n /**\n * A dictionary used for delivery-specific\n * non-standard properties at the head of the message.\n */\n deliveryAnnotations?: { [key: string]: any };\n /**\n * A dictionary containing application specific message properties.\n */\n applicationProperties?: { [key: string]: any };\n /**\n * Describes the defined set of standard properties of the message.\n */\n properties?: AmqpMessageProperties;\n /**\n * The message body.\n */\n body: any;\n /**\n * The AMQP section where the data was decoded from.\n */\n bodyType?: \"data\" | \"sequence\" | \"value\";\n}\n\n/**\n * Describes the operations that can be performed on(or to get) the AmqpAnnotatedMessage.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- renaming constant would be a breaking change.\nexport const AmqpAnnotatedMessage = {\n /**\n * Takes RheaMessage(`Message` type from \"rhea\") and returns it in the AmqpAnnotatedMessage format.\n */\n fromRheaMessage(msg: RheaMessage): AmqpAnnotatedMessage {\n const amqpMsg = {\n header: AmqpMessageHeader.fromRheaMessageHeader(msg),\n footer: (msg as any).footer,\n messageAnnotations: msg.message_annotations,\n deliveryAnnotations: msg.delivery_annotations,\n applicationProperties: msg.application_properties,\n properties: AmqpMessageProperties.fromRheaMessageProperties(msg),\n body: msg.body,\n };\n if (msg.absolute_expiry_time) {\n const absoluteExpiryTime = msg.absolute_expiry_time.getTime();\n amqpMsg.properties.absoluteExpiryTime = Math.min(\n absoluteExpiryTime,\n Constants.maxAbsoluteExpiryTime,\n );\n\n // The TTL from the header can be at most approximately 49 days (uint32\n // max value milliseconds) due to the AMQP spec. In order to allow for\n // larger TTLs set by the user, we take the difference of the\n // absolute_expiry_time and the creation_time (if both are set). If either of\n // those properties is not set, we fall back to the TTL from the header.\n if (msg.creation_time) {\n amqpMsg.header.timeToLive =\n amqpMsg.properties.absoluteExpiryTime - msg.creation_time.getTime();\n }\n }\n\n return amqpMsg;\n },\n /**\n * Takes AmqpAnnotatedMessage and returns it in the RheaMessage(`Message` type from \"rhea\") format.\n */\n toRheaMessage(msg: AmqpAnnotatedMessage): RheaMessage {\n const rhMsg = {\n ...AmqpMessageProperties.toRheaMessageProperties(msg.properties || {}),\n ...AmqpMessageHeader.toRheaMessageHeader(msg.header || {}),\n body: msg.body,\n message_annotations: msg.messageAnnotations,\n delivery_annotations: msg.deliveryAnnotations,\n application_properties: msg.applicationProperties,\n footer: msg.footer,\n };\n\n // There is a loss of fidelity in the TTL header if larger than uint32 max value. As a workaround\n // we set the absolute_expiry_time and creation_time on the message based on the TTL. These\n // values are then used to reconstruct the accurate TTL for received messages.\n if (msg.header?.timeToLive) {\n const ttl = msg.header.timeToLive;\n rhMsg.ttl = Math.min(ttl, Constants.maxUint32Value);\n rhMsg.creation_time = rhMsg.creation_time ?? new Date();\n rhMsg.absolute_expiry_time = new Date(\n Math.min(rhMsg.creation_time.getTime() + ttl, Constants.maxAbsoluteExpiryTime),\n );\n }\n\n return rhMsg;\n },\n};\n"]}
@@ -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
  * Describes the type of supported tokens.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/auth/token.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB;;OAEG;IACH,oCAAuB,CAAA;IACvB;;OAEG;IACH,gEAAmD,CAAA;AACrD,CAAC,EATW,SAAS,KAAT,SAAS,QASpB","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Describes the type of supported tokens.\n */\nexport enum TokenType {\n /**\n * The \"jwt\" token type. Used with AADTokenCredential.\n */\n CbsTokenTypeJwt = \"jwt\",\n /**\n * The sas token type. Used with SharedKeyCredential.\n */\n CbsTokenTypeSas = \"servicebus.windows.net:sastoken\",\n}\n"]}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/auth/token.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB;;OAEG;IACH,oCAAuB,CAAA;IACvB;;OAEG;IACH,gEAAmD,CAAA;AACrD,CAAC,EATW,SAAS,KAAT,SAAS,QASpB","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Describes the type of supported tokens.\n */\nexport enum TokenType {\n /**\n * The \"jwt\" token type. Used with AADTokenCredential.\n */\n CbsTokenTypeJwt = \"jwt\",\n /**\n * The sas token type. Used with SharedKeyCredential.\n */\n CbsTokenTypeSas = \"servicebus.windows.net:sastoken\",\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { AccessToken, NamedKeyCredential, SASCredential } from "@azure/core-auth";
1
+ import type { AccessToken, NamedKeyCredential, SASCredential } from "@azure/core-auth";
2
2
  /**
3
3
  * A SasTokenProvider provides an alternative to TokenCredential for providing an `AccessToken`.
4
4
  * @hidden
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
3
- import { isNamedKeyCredential, isSASCredential, } from "@azure/core-auth";
2
+ // Licensed under the MIT License.
3
+ import { isNamedKeyCredential, isSASCredential } from "@azure/core-auth";
4
4
  import { signString } from "../util/hmacSha256.js";
5
5
  /**
6
6
  * Creates a token provider from the provided shared access data.
@@ -1 +1 @@
1
- {"version":3,"file":"tokenProvider.js","sourceRoot":"","sources":["../../../src/auth/tokenProvider.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAIL,oBAAoB,EACpB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAqBnD;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAIiB;IAEjB,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;SAAM,IAAI,qBAAqB,IAAI,IAAI,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;QACtE,OAAO,IAAI,oBAAoB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACjG,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,oBAAoB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IAC/B;;OAEG;IACH,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAOD;;;OAGG;IACH,YAAY,UAA8C;QACxD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,OAAO,WAAW,CAChB,IAAI,CAAC,WAAW,CAAC,IAAI,EACrB,IAAI,CAAC,WAAW,CAAC,GAAG,EACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EACpC,QAAQ,CACT,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS;gBACjC,kBAAkB,EAAE,CAAC;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,WAAW,CACxB,OAAe,EACf,GAAW,EACX,MAAc,EACd,QAAgB;IAEhB,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;IAE9C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAChD,OAAO;QACL,KAAK,EAAE,4BAA4B,QAAQ,QAAQ,GAAG,OAAO,MAAM,QAAQ,OAAO,EAAE;QACpF,kBAAkB,EAAE,MAAM;KAC3B,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n AccessToken,\n NamedKeyCredential,\n SASCredential,\n isNamedKeyCredential,\n isSASCredential,\n} from \"@azure/core-auth\";\nimport { signString } from \"../util/hmacSha256.js\";\n\n/**\n * A SasTokenProvider provides an alternative to TokenCredential for providing an `AccessToken`.\n * @hidden\n */\nexport interface SasTokenProvider {\n /**\n * Property used to distinguish SasTokenProvider from TokenCredential.\n */\n isSasTokenProvider: true;\n /**\n * Gets the token provided by this provider.\n *\n * This method is called automatically by Azure SDK client libraries.\n *\n * @param audience - The audience for which the token is desired.\n */\n getToken(audience: string): Promise<AccessToken>;\n}\n\n/**\n * Creates a token provider from the provided shared access data.\n * @param data - The sharedAccessKeyName/sharedAccessKey pair or the sharedAccessSignature.\n * @hidden\n */\nexport function createSasTokenProvider(\n data:\n | { sharedAccessKeyName: string; sharedAccessKey: string }\n | { sharedAccessSignature: string }\n | NamedKeyCredential\n | SASCredential,\n): SasTokenProvider {\n if (isNamedKeyCredential(data) || isSASCredential(data)) {\n return new SasTokenProviderImpl(data);\n } else if (\"sharedAccessKeyName\" in data && \"sharedAccessKey\" in data) {\n return new SasTokenProviderImpl({ name: data.sharedAccessKeyName, key: data.sharedAccessKey });\n } else {\n return new SasTokenProviderImpl({ signature: data.sharedAccessSignature });\n }\n}\n\n/**\n * A TokenProvider that generates a Sas token:\n * `SharedAccessSignature sr=<resource>&sig=<signature>&se=<expiry>&skn=<keyname>`\n *\n * @internal\n */\nexport class SasTokenProviderImpl implements SasTokenProvider {\n /**\n * Property used to distinguish TokenProvider from TokenCredential.\n */\n get isSasTokenProvider(): true {\n return true;\n }\n\n /**\n * The SASCredential containing the key name and secret key value.\n */\n private _credential: SASCredential | NamedKeyCredential;\n\n /**\n * Initializes a new instance of SasTokenProvider\n * @param credential - The source `NamedKeyCredential` or `SASCredential`.\n */\n constructor(credential: SASCredential | NamedKeyCredential) {\n this._credential = credential;\n }\n\n /**\n * Gets the sas token for the specified audience\n * @param audience - The audience for which the token is desired.\n */\n async getToken(audience: string): Promise<AccessToken> {\n if (isNamedKeyCredential(this._credential)) {\n return createToken(\n this._credential.name,\n this._credential.key,\n Math.floor(Date.now() / 1000) + 3600,\n audience,\n );\n } else {\n return {\n token: this._credential.signature,\n expiresOnTimestamp: 0,\n };\n }\n }\n}\n\n/**\n * Creates the sas token based on the provided information.\n * @param keyName - The shared access key name.\n * @param key - The shared access key.\n * @param expiry - The time period in unix time after which the token will expire.\n * @param audience - The audience for which the token is desired.\n * @internal\n */\nasync function createToken(\n keyName: string,\n key: string,\n expiry: number,\n audience: string,\n): Promise<AccessToken> {\n audience = encodeURIComponent(audience);\n keyName = encodeURIComponent(keyName);\n const stringToSign = audience + \"\\n\" + expiry;\n\n const sig = await signString(key, stringToSign);\n return {\n token: `SharedAccessSignature sr=${audience}&sig=${sig}&se=${expiry}&skn=${keyName}`,\n expiresOnTimestamp: expiry,\n };\n}\n"]}
1
+ {"version":3,"file":"tokenProvider.js","sourceRoot":"","sources":["../../../src/auth/tokenProvider.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAqBnD;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAIiB;IAEjB,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;SAAM,IAAI,qBAAqB,IAAI,IAAI,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;QACtE,OAAO,IAAI,oBAAoB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACjG,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,oBAAoB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IAC/B;;OAEG;IACH,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAOD;;;OAGG;IACH,YAAY,UAA8C;QACxD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,OAAO,WAAW,CAChB,IAAI,CAAC,WAAW,CAAC,IAAI,EACrB,IAAI,CAAC,WAAW,CAAC,GAAG,EACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EACpC,QAAQ,CACT,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS;gBACjC,kBAAkB,EAAE,CAAC;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,WAAW,CACxB,OAAe,EACf,GAAW,EACX,MAAc,EACd,QAAgB;IAEhB,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;IAE9C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAChD,OAAO;QACL,KAAK,EAAE,4BAA4B,QAAQ,QAAQ,GAAG,OAAO,MAAM,QAAQ,OAAO,EAAE;QACpF,kBAAkB,EAAE,MAAM;KAC3B,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, NamedKeyCredential, SASCredential } from \"@azure/core-auth\";\nimport { isNamedKeyCredential, isSASCredential } from \"@azure/core-auth\";\nimport { signString } from \"../util/hmacSha256.js\";\n\n/**\n * A SasTokenProvider provides an alternative to TokenCredential for providing an `AccessToken`.\n * @hidden\n */\nexport interface SasTokenProvider {\n /**\n * Property used to distinguish SasTokenProvider from TokenCredential.\n */\n isSasTokenProvider: true;\n /**\n * Gets the token provided by this provider.\n *\n * This method is called automatically by Azure SDK client libraries.\n *\n * @param audience - The audience for which the token is desired.\n */\n getToken(audience: string): Promise<AccessToken>;\n}\n\n/**\n * Creates a token provider from the provided shared access data.\n * @param data - The sharedAccessKeyName/sharedAccessKey pair or the sharedAccessSignature.\n * @hidden\n */\nexport function createSasTokenProvider(\n data:\n | { sharedAccessKeyName: string; sharedAccessKey: string }\n | { sharedAccessSignature: string }\n | NamedKeyCredential\n | SASCredential,\n): SasTokenProvider {\n if (isNamedKeyCredential(data) || isSASCredential(data)) {\n return new SasTokenProviderImpl(data);\n } else if (\"sharedAccessKeyName\" in data && \"sharedAccessKey\" in data) {\n return new SasTokenProviderImpl({ name: data.sharedAccessKeyName, key: data.sharedAccessKey });\n } else {\n return new SasTokenProviderImpl({ signature: data.sharedAccessSignature });\n }\n}\n\n/**\n * A TokenProvider that generates a Sas token:\n * `SharedAccessSignature sr=<resource>&sig=<signature>&se=<expiry>&skn=<keyname>`\n *\n * @internal\n */\nexport class SasTokenProviderImpl implements SasTokenProvider {\n /**\n * Property used to distinguish TokenProvider from TokenCredential.\n */\n get isSasTokenProvider(): true {\n return true;\n }\n\n /**\n * The SASCredential containing the key name and secret key value.\n */\n private _credential: SASCredential | NamedKeyCredential;\n\n /**\n * Initializes a new instance of SasTokenProvider\n * @param credential - The source `NamedKeyCredential` or `SASCredential`.\n */\n constructor(credential: SASCredential | NamedKeyCredential) {\n this._credential = credential;\n }\n\n /**\n * Gets the sas token for the specified audience\n * @param audience - The audience for which the token is desired.\n */\n async getToken(audience: string): Promise<AccessToken> {\n if (isNamedKeyCredential(this._credential)) {\n return createToken(\n this._credential.name,\n this._credential.key,\n Math.floor(Date.now() / 1000) + 3600,\n audience,\n );\n } else {\n return {\n token: this._credential.signature,\n expiresOnTimestamp: 0,\n };\n }\n }\n}\n\n/**\n * Creates the sas token based on the provided information.\n * @param keyName - The shared access key name.\n * @param key - The shared access key.\n * @param expiry - The time period in unix time after which the token will expire.\n * @param audience - The audience for which the token is desired.\n * @internal\n */\nasync function createToken(\n keyName: string,\n key: string,\n expiry: number,\n audience: string,\n): Promise<AccessToken> {\n audience = encodeURIComponent(audience);\n keyName = encodeURIComponent(keyName);\n const stringToSign = audience + \"\\n\" + expiry;\n\n const sig = await signString(key, stringToSign);\n return {\n token: `SharedAccessSignature sr=${audience}&sig=${sig}&se=${expiry}&skn=${keyName}`,\n expiresOnTimestamp: expiry,\n };\n}\n"]}
package/dist/esm/cbs.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { AbortSignalLike } from "@azure/abort-controller";
2
- import { Connection } from "rhea-promise";
3
- import { TokenType } from "./auth/token.js";
1
+ import type { AbortSignalLike } from "@azure/abort-controller";
2
+ import type { Connection } from "rhea-promise";
3
+ import type { TokenType } from "./auth/token.js";
4
4
  /**
5
5
  * Describes the CBS Response.
6
6
  */
package/dist/esm/cbs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { AbortError } from "@azure/abort-controller";
4
- import { ReceiverEvents, SenderEvents, generate_uuid, } from "rhea-promise";
4
+ import { ReceiverEvents, SenderEvents, generate_uuid } from "rhea-promise";
5
5
  import { logErrorStackTrace, logger } from "./log.js";
6
6
  import { Constants } from "./util/constants.js";
7
7
  import { RequestResponseLink } from "./requestResponseLink.js";