@typespec/ts-http-runtime 0.3.5-alpha.20260311.2 → 0.3.6

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 (586) hide show
  1. package/dist/browser/client/clientHelpers.js +1 -1
  2. package/dist/browser/client/clientHelpers.js.map +1 -1
  3. package/dist/browser/client/common.d.ts +3 -2
  4. package/dist/browser/client/common.js.map +1 -1
  5. package/dist/browser/client/getClient.js +1 -1
  6. package/dist/browser/client/getClient.js.map +1 -1
  7. package/dist/browser/client/multipart.js +1 -1
  8. package/dist/browser/client/multipart.js.map +1 -1
  9. package/dist/browser/client/restError.js +5 -4
  10. package/dist/browser/client/restError.js.map +1 -1
  11. package/dist/browser/client/sendRequest.js +25 -14
  12. package/dist/browser/client/sendRequest.js.map +1 -1
  13. package/dist/browser/client/urlHelpers.js +9 -3
  14. package/dist/browser/client/urlHelpers.js.map +1 -1
  15. package/dist/browser/constants.js +1 -1
  16. package/dist/browser/constants.js.map +1 -1
  17. package/dist/browser/createPipelineFromOptions.d.ts +1 -1
  18. package/dist/browser/createPipelineFromOptions.js +2 -21
  19. package/dist/browser/createPipelineFromOptions.js.map +1 -1
  20. package/dist/browser/{defaultHttpClient.d.ts → defaultHttpClient-browser.d.mts} +1 -1
  21. package/dist/browser/{defaultHttpClient.js → defaultHttpClient-browser.mjs} +1 -1
  22. package/dist/browser/defaultHttpClient-browser.mjs.map +1 -0
  23. package/dist/browser/encoding.d.ts +13 -0
  24. package/dist/browser/encoding.js +19 -0
  25. package/dist/browser/encoding.js.map +1 -0
  26. package/dist/{esm/util/checkEnvironment.d.ts → browser/env-browser.d.mts} +21 -1
  27. package/dist/{esm/util/checkEnvironment.js → browser/env-browser.mjs} +26 -12
  28. package/dist/browser/env-browser.mjs.map +1 -0
  29. package/dist/browser/fetchHttpClient.d.ts +5 -0
  30. package/dist/browser/fetchHttpClient.js.map +1 -1
  31. package/dist/browser/formData-web.d.mts +9 -0
  32. package/dist/browser/formData-web.mjs +12 -0
  33. package/dist/browser/formData-web.mjs.map +1 -0
  34. package/dist/browser/httpHeaders.js +11 -1
  35. package/dist/browser/httpHeaders.js.map +1 -1
  36. package/dist/browser/index.d.ts +3 -14
  37. package/dist/browser/index.js +2 -2
  38. package/dist/browser/index.js.map +1 -1
  39. package/dist/browser/interfaces.d.ts +15 -14
  40. package/dist/browser/interfaces.js.map +1 -1
  41. package/dist/browser/logger/debug.js +3 -2
  42. package/dist/browser/logger/debug.js.map +1 -1
  43. package/dist/{react-native/logger/log.d.ts → browser/logger/log-web.d.mts} +1 -1
  44. package/dist/browser/logger/{log.js → log-web.mjs} +1 -1
  45. package/dist/browser/logger/log-web.mjs.map +1 -0
  46. package/dist/browser/logger/logger.js +2 -2
  47. package/dist/browser/logger/logger.js.map +1 -1
  48. package/dist/browser/pipelineRequest.js +1 -1
  49. package/dist/browser/pipelineRequest.js.map +1 -1
  50. package/dist/browser/policies/auth/basicAuthenticationPolicy.js +1 -1
  51. package/dist/browser/policies/auth/basicAuthenticationPolicy.js.map +1 -1
  52. package/dist/browser/policies/auth/checkInsecureConnection.js +3 -2
  53. package/dist/browser/policies/auth/checkInsecureConnection.js.map +1 -1
  54. package/dist/browser/policies/{decompressResponsePolicy.d.ts → decompressResponsePolicy-web.d.mts} +1 -1
  55. package/dist/browser/policies/{decompressResponsePolicy.js → decompressResponsePolicy-web.mjs} +1 -1
  56. package/dist/browser/policies/decompressResponsePolicy-web.mjs.map +1 -0
  57. package/dist/browser/policies/formDataPolicy.js +5 -12
  58. package/dist/browser/policies/formDataPolicy.js.map +1 -1
  59. package/dist/browser/policies/internal.d.ts +2 -2
  60. package/dist/browser/policies/internal.js +2 -2
  61. package/dist/browser/policies/internal.js.map +1 -1
  62. package/dist/browser/policies/multipartPolicy.js +7 -3
  63. package/dist/browser/policies/multipartPolicy.js.map +1 -1
  64. package/dist/browser/policies/platformPolicies-web.d.mts +10 -0
  65. package/dist/browser/policies/platformPolicies-web.mjs +12 -0
  66. package/dist/browser/policies/platformPolicies-web.mjs.map +1 -0
  67. package/dist/browser/policies/platformPolicies.d.ts +25 -0
  68. package/dist/browser/policies/platformPolicies.js +30 -0
  69. package/dist/browser/policies/platformPolicies.js.map +1 -0
  70. package/dist/browser/policies/proxyPolicy-web.d.mts +2 -0
  71. package/dist/{react-native/policies/proxyPolicy.js → browser/policies/proxyPolicy-web.mjs} +1 -1
  72. package/dist/browser/policies/proxyPolicy-web.mjs.map +1 -0
  73. package/dist/browser/policies/retryPolicy.js +4 -3
  74. package/dist/browser/policies/retryPolicy.js.map +1 -1
  75. package/dist/browser/restError.js +1 -1
  76. package/dist/browser/restError.js.map +1 -1
  77. package/dist/browser/types-browser.d.mts +19 -0
  78. package/dist/browser/{util/concat.js → types-browser.mjs} +2 -2
  79. package/dist/browser/types-browser.mjs.map +1 -0
  80. package/dist/browser/util/bytesEncoding-web.d.mts +2 -0
  81. package/dist/{react-native/util/bytesEncoding.js → browser/util/bytesEncoding-web.mjs} +1 -1
  82. package/dist/browser/util/bytesEncoding-web.mjs.map +1 -0
  83. package/dist/browser/util/bytesEncoding.common.d.ts +4 -4
  84. package/dist/browser/util/bytesEncoding.common.js +3 -4
  85. package/dist/browser/util/bytesEncoding.common.js.map +1 -1
  86. package/dist/browser/util/concat-browser.d.mts +16 -0
  87. package/dist/{esm/util/concat.common.js → browser/util/concat-browser.mjs} +4 -11
  88. package/dist/browser/util/concat-browser.mjs.map +1 -0
  89. package/dist/browser/util/inspect-web.d.mts +2 -0
  90. package/dist/{react-native/util/inspect.js → browser/util/inspect-web.mjs} +1 -1
  91. package/dist/browser/util/inspect-web.mjs.map +1 -0
  92. package/dist/browser/util/internal.d.ts +4 -4
  93. package/dist/browser/util/internal.js +4 -4
  94. package/dist/browser/util/internal.js.map +1 -1
  95. package/dist/browser/util/sanitizer.js +3 -3
  96. package/dist/browser/util/sanitizer.js.map +1 -1
  97. package/dist/browser/util/sha256-web.d.mts +2 -0
  98. package/dist/{react-native/util/sha256.js → browser/util/sha256-web.mjs} +1 -1
  99. package/dist/browser/util/sha256-web.mjs.map +1 -0
  100. package/dist/browser/util/sha256.common.js +1 -1
  101. package/dist/browser/util/sha256.common.js.map +1 -1
  102. package/dist/browser/util/typeGuards-browser.d.mts +14 -0
  103. package/dist/browser/util/typeGuards-browser.mjs +26 -0
  104. package/dist/browser/util/typeGuards-browser.mjs.map +1 -0
  105. package/dist/browser/util/typeGuards.d.ts +5 -4
  106. package/dist/browser/util/typeGuards.js +3 -9
  107. package/dist/browser/util/typeGuards.js.map +1 -1
  108. package/dist/browser/util/userAgent.d.ts +2 -0
  109. package/dist/browser/util/userAgent.js +2 -1
  110. package/dist/browser/util/userAgent.js.map +1 -1
  111. package/dist/browser/util/userAgentPlatform-browser.d.mts +37 -0
  112. package/dist/browser/util/{userAgentPlatform.js → userAgentPlatform-browser.mjs} +10 -11
  113. package/dist/browser/util/userAgentPlatform-browser.mjs.map +1 -0
  114. package/dist/browser/util/{uuidUtils.d.ts → uuidUtils-browser.d.mts} +1 -1
  115. package/dist/browser/util/{uuidUtils.js → uuidUtils-browser.mjs} +1 -1
  116. package/dist/browser/util/uuidUtils-browser.mjs.map +1 -0
  117. package/dist/browser/util/uuidUtils.common.js +1 -1
  118. package/dist/browser/util/uuidUtils.common.js.map +1 -1
  119. package/dist/commonjs/abort-controller/AbortError.js +1 -0
  120. package/dist/commonjs/abort-controller/AbortError.js.map +1 -1
  121. package/dist/commonjs/auth/credentials.js +1 -0
  122. package/dist/commonjs/auth/credentials.js.map +1 -1
  123. package/dist/commonjs/auth/oauth2Flows.js +1 -0
  124. package/dist/commonjs/auth/oauth2Flows.js.map +1 -1
  125. package/dist/commonjs/auth/schemes.js +1 -0
  126. package/dist/commonjs/auth/schemes.js.map +1 -1
  127. package/dist/commonjs/client/apiVersionPolicy.js +1 -0
  128. package/dist/commonjs/client/apiVersionPolicy.js.map +1 -1
  129. package/dist/commonjs/client/clientHelpers.js +3 -2
  130. package/dist/commonjs/client/clientHelpers.js.map +3 -3
  131. package/dist/commonjs/client/common.d.ts +3 -2
  132. package/dist/commonjs/client/common.js +1 -0
  133. package/dist/commonjs/client/common.js.map +2 -2
  134. package/dist/commonjs/client/getClient.js +4 -3
  135. package/dist/commonjs/client/getClient.js.map +3 -3
  136. package/dist/commonjs/client/multipart.js +1 -0
  137. package/dist/commonjs/client/multipart.js.map +3 -3
  138. package/dist/commonjs/client/operationOptionHelpers.js +1 -0
  139. package/dist/commonjs/client/operationOptionHelpers.js.map +1 -1
  140. package/dist/commonjs/client/restError.js +6 -4
  141. package/dist/commonjs/client/restError.js.map +3 -3
  142. package/dist/commonjs/client/sendRequest.js +39 -10
  143. package/dist/commonjs/client/sendRequest.js.map +3 -3
  144. package/dist/commonjs/client/urlHelpers.js +7 -3
  145. package/dist/commonjs/client/urlHelpers.js.map +3 -3
  146. package/dist/commonjs/constants.js +2 -1
  147. package/dist/commonjs/constants.js.map +2 -2
  148. package/dist/commonjs/createPipelineFromOptions.d.ts +1 -1
  149. package/dist/commonjs/createPipelineFromOptions.js +3 -19
  150. package/dist/commonjs/createPipelineFromOptions.js.map +3 -3
  151. package/dist/commonjs/defaultHttpClient.js +1 -0
  152. package/dist/commonjs/defaultHttpClient.js.map +1 -1
  153. package/dist/{browser/util/checkEnvironment.d.ts → commonjs/env.d.ts} +21 -1
  154. package/dist/commonjs/env.js +67 -0
  155. package/dist/commonjs/env.js.map +7 -0
  156. package/dist/commonjs/formData.d.ts +10 -0
  157. package/dist/commonjs/{logger/log.common.js → formData.js} +18 -18
  158. package/dist/commonjs/formData.js.map +7 -0
  159. package/dist/commonjs/httpHeaders.js +5 -1
  160. package/dist/commonjs/httpHeaders.js.map +3 -3
  161. package/dist/commonjs/index.d.ts +1 -12
  162. package/dist/commonjs/index.js +3 -2
  163. package/dist/commonjs/index.js.map +3 -3
  164. package/dist/commonjs/interfaces.d.ts +15 -14
  165. package/dist/commonjs/interfaces.js +1 -0
  166. package/dist/commonjs/interfaces.js.map +2 -2
  167. package/dist/commonjs/log.js +1 -0
  168. package/dist/commonjs/log.js.map +1 -1
  169. package/dist/commonjs/logger/debug.js +3 -1
  170. package/dist/commonjs/logger/debug.js.map +3 -3
  171. package/dist/commonjs/logger/internal.js +1 -0
  172. package/dist/commonjs/logger/internal.js.map +1 -1
  173. package/dist/commonjs/logger/log.js +1 -0
  174. package/dist/commonjs/logger/log.js.map +1 -1
  175. package/dist/commonjs/logger/logger.js +3 -1
  176. package/dist/commonjs/logger/logger.js.map +3 -3
  177. package/dist/commonjs/nodeHttpClient.js +4 -1
  178. package/dist/commonjs/nodeHttpClient.js.map +3 -3
  179. package/dist/commonjs/pipeline.js +1 -0
  180. package/dist/commonjs/pipeline.js.map +1 -1
  181. package/dist/commonjs/pipelineRequest.js +3 -2
  182. package/dist/commonjs/pipelineRequest.js.map +3 -3
  183. package/dist/commonjs/policies/agentPolicy.js +1 -0
  184. package/dist/commonjs/policies/agentPolicy.js.map +1 -1
  185. package/dist/commonjs/policies/auth/apiKeyAuthenticationPolicy.js +1 -0
  186. package/dist/commonjs/policies/auth/apiKeyAuthenticationPolicy.js.map +1 -1
  187. package/dist/commonjs/policies/auth/basicAuthenticationPolicy.js +1 -0
  188. package/dist/commonjs/policies/auth/basicAuthenticationPolicy.js.map +2 -2
  189. package/dist/commonjs/policies/auth/bearerAuthenticationPolicy.js +1 -0
  190. package/dist/commonjs/policies/auth/bearerAuthenticationPolicy.js.map +1 -1
  191. package/dist/commonjs/policies/auth/checkInsecureConnection.js +4 -2
  192. package/dist/commonjs/policies/auth/checkInsecureConnection.js.map +3 -3
  193. package/dist/commonjs/policies/auth/oauth2AuthenticationPolicy.js +1 -0
  194. package/dist/commonjs/policies/auth/oauth2AuthenticationPolicy.js.map +1 -1
  195. package/dist/commonjs/policies/decompressResponsePolicy.js +1 -0
  196. package/dist/commonjs/policies/decompressResponsePolicy.js.map +1 -1
  197. package/dist/commonjs/policies/defaultRetryPolicy.js +1 -0
  198. package/dist/commonjs/policies/defaultRetryPolicy.js.map +1 -1
  199. package/dist/commonjs/policies/exponentialRetryPolicy.js +1 -0
  200. package/dist/commonjs/policies/exponentialRetryPolicy.js.map +1 -1
  201. package/dist/commonjs/policies/formDataPolicy.js +5 -11
  202. package/dist/commonjs/policies/formDataPolicy.js.map +3 -3
  203. package/dist/commonjs/policies/internal.d.ts +1 -1
  204. package/dist/commonjs/policies/internal.js +8 -7
  205. package/dist/commonjs/policies/internal.js.map +3 -3
  206. package/dist/commonjs/policies/logPolicy.js +1 -0
  207. package/dist/commonjs/policies/logPolicy.js.map +1 -1
  208. package/dist/commonjs/policies/multipartPolicy.js +3 -2
  209. package/dist/commonjs/policies/multipartPolicy.js.map +3 -3
  210. package/dist/commonjs/policies/platformPolicies.d.ts +25 -0
  211. package/dist/commonjs/policies/platformPolicies.js +43 -0
  212. package/dist/commonjs/policies/platformPolicies.js.map +7 -0
  213. package/dist/commonjs/policies/proxyPolicy.js +3 -3
  214. package/dist/commonjs/policies/proxyPolicy.js.map +3 -3
  215. package/dist/commonjs/policies/redirectPolicy.js +1 -0
  216. package/dist/commonjs/policies/redirectPolicy.js.map +1 -1
  217. package/dist/commonjs/policies/retryPolicy.js +5 -3
  218. package/dist/commonjs/policies/retryPolicy.js.map +3 -3
  219. package/dist/commonjs/policies/systemErrorRetryPolicy.js +1 -0
  220. package/dist/commonjs/policies/systemErrorRetryPolicy.js.map +1 -1
  221. package/dist/commonjs/policies/throttlingRetryPolicy.js +1 -0
  222. package/dist/commonjs/policies/throttlingRetryPolicy.js.map +1 -1
  223. package/dist/commonjs/policies/tlsPolicy.js +1 -0
  224. package/dist/commonjs/policies/tlsPolicy.js.map +1 -1
  225. package/dist/commonjs/policies/userAgentPolicy.js +1 -0
  226. package/dist/commonjs/policies/userAgentPolicy.js.map +1 -1
  227. package/dist/commonjs/restError.js +1 -0
  228. package/dist/commonjs/restError.js.map +2 -2
  229. package/dist/commonjs/retryStrategies/exponentialRetryStrategy.js +1 -0
  230. package/dist/commonjs/retryStrategies/exponentialRetryStrategy.js.map +1 -1
  231. package/dist/commonjs/retryStrategies/retryStrategy.js +1 -0
  232. package/dist/commonjs/retryStrategies/retryStrategy.js.map +1 -1
  233. package/dist/commonjs/retryStrategies/throttlingRetryStrategy.js +1 -0
  234. package/dist/commonjs/retryStrategies/throttlingRetryStrategy.js.map +1 -1
  235. package/dist/commonjs/tsdoc-metadata.json +1 -1
  236. package/dist/commonjs/types.d.ts +19 -0
  237. package/dist/commonjs/types.js +16 -0
  238. package/dist/commonjs/types.js.map +7 -0
  239. package/dist/commonjs/util/bytesEncoding.js +1 -0
  240. package/dist/commonjs/util/bytesEncoding.js.map +1 -1
  241. package/dist/commonjs/util/concat.d.ts +1 -1
  242. package/dist/commonjs/util/concat.js +1 -0
  243. package/dist/commonjs/util/concat.js.map +3 -3
  244. package/dist/commonjs/util/delay.js +1 -0
  245. package/dist/commonjs/util/delay.js.map +1 -1
  246. package/dist/commonjs/util/error.js +1 -0
  247. package/dist/commonjs/util/error.js.map +1 -1
  248. package/dist/commonjs/util/helpers.js +1 -0
  249. package/dist/commonjs/util/helpers.js.map +1 -1
  250. package/dist/commonjs/util/inspect.js +1 -0
  251. package/dist/commonjs/util/inspect.js.map +1 -1
  252. package/dist/commonjs/util/internal.d.ts +1 -1
  253. package/dist/commonjs/util/internal.js +11 -10
  254. package/dist/commonjs/util/internal.js.map +3 -3
  255. package/dist/commonjs/util/object.js +1 -0
  256. package/dist/commonjs/util/object.js.map +1 -1
  257. package/dist/commonjs/util/random.js +1 -0
  258. package/dist/commonjs/util/random.js.map +1 -1
  259. package/dist/commonjs/util/sanitizer.js +4 -3
  260. package/dist/commonjs/util/sanitizer.js.map +3 -3
  261. package/dist/commonjs/util/sha256.js +1 -0
  262. package/dist/commonjs/util/sha256.js.map +1 -1
  263. package/dist/commonjs/util/typeGuards-node.d.ts +13 -0
  264. package/dist/commonjs/util/{inspect.common.js → typeGuards-node.js} +15 -6
  265. package/dist/commonjs/util/typeGuards-node.js.map +7 -0
  266. package/dist/commonjs/util/typeGuards.d.ts +5 -4
  267. package/dist/commonjs/util/typeGuards.js +6 -12
  268. package/dist/commonjs/util/typeGuards.js.map +3 -3
  269. package/dist/commonjs/util/userAgent.d.ts +2 -0
  270. package/dist/commonjs/util/userAgent.js +8 -5
  271. package/dist/commonjs/util/userAgent.js.map +3 -3
  272. package/dist/commonjs/util/userAgentPlatform.d.ts +8 -0
  273. package/dist/commonjs/util/userAgentPlatform.js +7 -7
  274. package/dist/commonjs/util/userAgentPlatform.js.map +3 -3
  275. package/dist/commonjs/util/uuidUtils.js +1 -0
  276. package/dist/commonjs/util/uuidUtils.js.map +1 -1
  277. package/dist/esm/client/clientHelpers.js.map +1 -1
  278. package/dist/esm/client/common.d.ts +3 -2
  279. package/dist/esm/client/common.js.map +1 -1
  280. package/dist/esm/client/getClient.js +1 -1
  281. package/dist/esm/client/getClient.js.map +1 -1
  282. package/dist/esm/client/multipart.js.map +1 -1
  283. package/dist/esm/client/restError.js +5 -4
  284. package/dist/esm/client/restError.js.map +1 -1
  285. package/dist/esm/client/sendRequest.js +25 -14
  286. package/dist/esm/client/sendRequest.js.map +1 -1
  287. package/dist/esm/client/urlHelpers.js +9 -3
  288. package/dist/esm/client/urlHelpers.js.map +1 -1
  289. package/dist/esm/constants.js +1 -1
  290. package/dist/esm/constants.js.map +1 -1
  291. package/dist/esm/createPipelineFromOptions.d.ts +1 -1
  292. package/dist/esm/createPipelineFromOptions.js +2 -21
  293. package/dist/esm/createPipelineFromOptions.js.map +1 -1
  294. package/dist/{react-native/util/checkEnvironment.d.ts → esm/env.d.ts} +21 -1
  295. package/dist/esm/env.js +48 -0
  296. package/dist/esm/env.js.map +1 -0
  297. package/dist/esm/formData.d.ts +10 -0
  298. package/dist/esm/formData.js +26 -0
  299. package/dist/esm/formData.js.map +1 -0
  300. package/dist/esm/httpHeaders.js +11 -1
  301. package/dist/esm/httpHeaders.js.map +1 -1
  302. package/dist/esm/index.d.ts +1 -12
  303. package/dist/esm/index.js.map +1 -1
  304. package/dist/esm/interfaces.d.ts +15 -14
  305. package/dist/esm/interfaces.js.map +1 -1
  306. package/dist/esm/logger/debug.js +2 -1
  307. package/dist/esm/logger/debug.js.map +1 -1
  308. package/dist/esm/logger/logger.js +2 -2
  309. package/dist/esm/logger/logger.js.map +1 -1
  310. package/dist/esm/nodeHttpClient.js +3 -1
  311. package/dist/esm/nodeHttpClient.js.map +1 -1
  312. package/dist/esm/pipelineRequest.js.map +1 -1
  313. package/dist/esm/policies/auth/basicAuthenticationPolicy.js.map +1 -1
  314. package/dist/esm/policies/auth/checkInsecureConnection.js +3 -2
  315. package/dist/esm/policies/auth/checkInsecureConnection.js.map +1 -1
  316. package/dist/esm/policies/formDataPolicy.js +4 -11
  317. package/dist/esm/policies/formDataPolicy.js.map +1 -1
  318. package/dist/esm/policies/internal.d.ts +1 -1
  319. package/dist/esm/policies/internal.js +1 -1
  320. package/dist/esm/policies/internal.js.map +1 -1
  321. package/dist/esm/policies/multipartPolicy.js +4 -0
  322. package/dist/esm/policies/multipartPolicy.js.map +1 -1
  323. package/dist/esm/policies/platformPolicies.d.ts +25 -0
  324. package/dist/esm/policies/platformPolicies.js +30 -0
  325. package/dist/esm/policies/platformPolicies.js.map +1 -0
  326. package/dist/esm/policies/proxyPolicy.js +2 -3
  327. package/dist/esm/policies/proxyPolicy.js.map +1 -1
  328. package/dist/esm/policies/retryPolicy.js +4 -3
  329. package/dist/esm/policies/retryPolicy.js.map +1 -1
  330. package/dist/esm/restError.js.map +1 -1
  331. package/dist/esm/types.d.ts +19 -0
  332. package/dist/esm/types.js +4 -0
  333. package/dist/esm/types.js.map +1 -0
  334. package/dist/esm/util/concat.d.ts +1 -1
  335. package/dist/esm/util/concat.js.map +1 -1
  336. package/dist/esm/util/internal.d.ts +1 -1
  337. package/dist/esm/util/internal.js +1 -1
  338. package/dist/esm/util/internal.js.map +1 -1
  339. package/dist/esm/util/sanitizer.js +3 -3
  340. package/dist/esm/util/sanitizer.js.map +1 -1
  341. package/dist/esm/util/typeGuards-node.d.ts +13 -0
  342. package/dist/esm/util/typeGuards-node.js +20 -0
  343. package/dist/esm/util/typeGuards-node.js.map +1 -0
  344. package/dist/esm/util/typeGuards.d.ts +5 -4
  345. package/dist/esm/util/typeGuards.js +3 -9
  346. package/dist/esm/util/typeGuards.js.map +1 -1
  347. package/dist/esm/util/userAgent.d.ts +2 -0
  348. package/dist/esm/util/userAgent.js +1 -0
  349. package/dist/esm/util/userAgent.js.map +1 -1
  350. package/dist/esm/util/userAgentPlatform.d.ts +8 -0
  351. package/dist/esm/util/userAgentPlatform.js +6 -7
  352. package/dist/esm/util/userAgentPlatform.js.map +1 -1
  353. package/dist/react-native/client/clientHelpers.js +1 -1
  354. package/dist/react-native/client/clientHelpers.js.map +1 -1
  355. package/dist/react-native/client/common.d.ts +3 -2
  356. package/dist/react-native/client/common.js.map +1 -1
  357. package/dist/react-native/client/getClient.js +1 -1
  358. package/dist/react-native/client/getClient.js.map +1 -1
  359. package/dist/react-native/client/multipart.js +1 -1
  360. package/dist/react-native/client/multipart.js.map +1 -1
  361. package/dist/react-native/client/restError.js +5 -4
  362. package/dist/react-native/client/restError.js.map +1 -1
  363. package/dist/react-native/client/sendRequest.js +25 -14
  364. package/dist/react-native/client/sendRequest.js.map +1 -1
  365. package/dist/react-native/client/urlHelpers.js +9 -3
  366. package/dist/react-native/client/urlHelpers.js.map +1 -1
  367. package/dist/react-native/constants.js +1 -1
  368. package/dist/react-native/constants.js.map +1 -1
  369. package/dist/react-native/createPipelineFromOptions.d.ts +1 -1
  370. package/dist/react-native/createPipelineFromOptions.js +2 -21
  371. package/dist/react-native/createPipelineFromOptions.js.map +1 -1
  372. package/dist/react-native/{defaultHttpClient.d.ts → defaultHttpClient-react-native.d.mts} +1 -1
  373. package/dist/react-native/{defaultHttpClient.js → defaultHttpClient-react-native.mjs} +1 -1
  374. package/dist/react-native/defaultHttpClient-react-native.mjs.map +1 -0
  375. package/dist/react-native/encoding-react-native.d.mts +21 -0
  376. package/dist/react-native/encoding-react-native.mjs +25 -0
  377. package/dist/react-native/encoding-react-native.mjs.map +1 -0
  378. package/dist/{commonjs/util/checkEnvironment.d.ts → react-native/env-react-native.d.mts} +21 -1
  379. package/dist/react-native/env-react-native.mjs +50 -0
  380. package/dist/react-native/env-react-native.mjs.map +1 -0
  381. package/dist/react-native/formData-web.d.mts +9 -0
  382. package/dist/react-native/formData-web.mjs +12 -0
  383. package/dist/react-native/formData-web.mjs.map +1 -0
  384. package/dist/react-native/httpHeaders.js +11 -1
  385. package/dist/react-native/httpHeaders.js.map +1 -1
  386. package/dist/react-native/index.d.ts +3 -14
  387. package/dist/react-native/index.js +2 -2
  388. package/dist/react-native/index.js.map +1 -1
  389. package/dist/react-native/interfaces.d.ts +15 -14
  390. package/dist/react-native/interfaces.js.map +1 -1
  391. package/dist/react-native/logger/debug.js +3 -2
  392. package/dist/react-native/logger/debug.js.map +1 -1
  393. package/dist/{browser/logger/log.d.ts → react-native/logger/log-web.d.mts} +1 -1
  394. package/dist/react-native/logger/{log.js → log-web.mjs} +1 -1
  395. package/dist/react-native/logger/log-web.mjs.map +1 -0
  396. package/dist/react-native/logger/logger.js +2 -2
  397. package/dist/react-native/logger/logger.js.map +1 -1
  398. package/dist/react-native/pipelineRequest.js +1 -1
  399. package/dist/react-native/pipelineRequest.js.map +1 -1
  400. package/dist/react-native/policies/auth/basicAuthenticationPolicy.js +1 -1
  401. package/dist/react-native/policies/auth/basicAuthenticationPolicy.js.map +1 -1
  402. package/dist/react-native/policies/auth/checkInsecureConnection.js +3 -2
  403. package/dist/react-native/policies/auth/checkInsecureConnection.js.map +1 -1
  404. package/dist/react-native/policies/decompressResponsePolicy-web.d.mts +8 -0
  405. package/dist/react-native/policies/decompressResponsePolicy-web.mjs +11 -0
  406. package/dist/react-native/policies/decompressResponsePolicy-web.mjs.map +1 -0
  407. package/dist/react-native/policies/formDataPolicy.js +5 -12
  408. package/dist/react-native/policies/formDataPolicy.js.map +1 -1
  409. package/dist/react-native/policies/internal.d.ts +2 -2
  410. package/dist/react-native/policies/internal.js +2 -2
  411. package/dist/react-native/policies/internal.js.map +1 -1
  412. package/dist/react-native/policies/multipartPolicy.js +7 -3
  413. package/dist/react-native/policies/multipartPolicy.js.map +1 -1
  414. package/dist/react-native/policies/platformPolicies-web.d.mts +10 -0
  415. package/dist/react-native/policies/platformPolicies-web.mjs +12 -0
  416. package/dist/react-native/policies/platformPolicies-web.mjs.map +1 -0
  417. package/dist/react-native/policies/platformPolicies.d.ts +25 -0
  418. package/dist/react-native/policies/platformPolicies.js +30 -0
  419. package/dist/react-native/policies/platformPolicies.js.map +1 -0
  420. package/dist/react-native/policies/proxyPolicy-web.d.mts +2 -0
  421. package/dist/{browser/policies/proxyPolicy.js → react-native/policies/proxyPolicy-web.mjs} +1 -1
  422. package/dist/react-native/policies/proxyPolicy-web.mjs.map +1 -0
  423. package/dist/react-native/policies/retryPolicy.js +4 -3
  424. package/dist/react-native/policies/retryPolicy.js.map +1 -1
  425. package/dist/react-native/restError.js +1 -1
  426. package/dist/react-native/restError.js.map +1 -1
  427. package/dist/react-native/types-react-native.d.mts +19 -0
  428. package/dist/react-native/types-react-native.mjs +4 -0
  429. package/dist/react-native/types-react-native.mjs.map +1 -0
  430. package/dist/react-native/util/bytesEncoding-web.d.mts +2 -0
  431. package/dist/{browser/util/bytesEncoding.js → react-native/util/bytesEncoding-web.mjs} +1 -1
  432. package/dist/react-native/util/bytesEncoding-web.mjs.map +1 -0
  433. package/dist/react-native/util/bytesEncoding.common.d.ts +4 -4
  434. package/dist/react-native/util/bytesEncoding.common.js +3 -4
  435. package/dist/react-native/util/bytesEncoding.common.js.map +1 -1
  436. package/dist/react-native/util/concat-react-native.d.mts +42 -0
  437. package/dist/react-native/util/concat-react-native.mjs +51 -0
  438. package/dist/react-native/util/concat-react-native.mjs.map +1 -0
  439. package/dist/react-native/util/inspect-web.d.mts +2 -0
  440. package/dist/{browser/util/inspect.js → react-native/util/inspect-web.mjs} +1 -1
  441. package/dist/react-native/util/inspect-web.mjs.map +1 -0
  442. package/dist/react-native/util/internal.d.ts +4 -4
  443. package/dist/react-native/util/internal.js +4 -4
  444. package/dist/react-native/util/internal.js.map +1 -1
  445. package/dist/react-native/util/sanitizer.js +3 -3
  446. package/dist/react-native/util/sanitizer.js.map +1 -1
  447. package/dist/react-native/util/sha256-web.d.mts +2 -0
  448. package/dist/{browser/util/sha256.js → react-native/util/sha256-web.mjs} +1 -1
  449. package/dist/react-native/util/sha256-web.mjs.map +1 -0
  450. package/dist/react-native/util/sha256.common.js +1 -1
  451. package/dist/react-native/util/sha256.common.js.map +1 -1
  452. package/dist/react-native/util/typeGuards-react-native.d.mts +16 -0
  453. package/dist/react-native/util/typeGuards-react-native.mjs +34 -0
  454. package/dist/react-native/util/typeGuards-react-native.mjs.map +1 -0
  455. package/dist/react-native/util/typeGuards.d.ts +5 -4
  456. package/dist/react-native/util/typeGuards.js +3 -9
  457. package/dist/react-native/util/typeGuards.js.map +1 -1
  458. package/dist/react-native/util/userAgent.d.ts +2 -0
  459. package/dist/react-native/util/userAgent.js +2 -1
  460. package/dist/react-native/util/userAgent.js.map +1 -1
  461. package/dist/react-native/util/{userAgentPlatform.d.ts → userAgentPlatform-react-native.d.mts} +1 -1
  462. package/dist/react-native/util/{userAgentPlatform.js → userAgentPlatform-react-native.mjs} +1 -1
  463. package/dist/react-native/util/userAgentPlatform-react-native.mjs.map +1 -0
  464. package/dist/react-native/util/uuidUtils-react-native.d.mts +2 -0
  465. package/dist/react-native/util/{uuidUtils.js → uuidUtils-react-native.mjs} +1 -1
  466. package/dist/react-native/util/uuidUtils-react-native.mjs.map +1 -0
  467. package/dist/react-native/util/uuidUtils.common.js +1 -1
  468. package/dist/react-native/util/uuidUtils.common.js.map +1 -1
  469. package/package.json +102 -14
  470. package/dist/browser/defaultHttpClient.js.map +0 -1
  471. package/dist/browser/logger/log.js.map +0 -1
  472. package/dist/browser/nodeHttpClient.d.ts +0 -9
  473. package/dist/browser/nodeHttpClient.js +0 -347
  474. package/dist/browser/nodeHttpClient.js.map +0 -1
  475. package/dist/browser/policies/decompressResponsePolicy.js.map +0 -1
  476. package/dist/browser/policies/proxyPolicy.d.ts +0 -2
  477. package/dist/browser/policies/proxyPolicy.js.map +0 -1
  478. package/dist/browser/util/bytesEncoding.d.ts +0 -2
  479. package/dist/browser/util/bytesEncoding.js.map +0 -1
  480. package/dist/browser/util/checkEnvironment.js +0 -41
  481. package/dist/browser/util/checkEnvironment.js.map +0 -1
  482. package/dist/browser/util/concat.common.d.ts +0 -17
  483. package/dist/browser/util/concat.common.js +0 -58
  484. package/dist/browser/util/concat.common.js.map +0 -1
  485. package/dist/browser/util/concat.d.ts +0 -2
  486. package/dist/browser/util/concat.js.map +0 -1
  487. package/dist/browser/util/inspect.d.ts +0 -2
  488. package/dist/browser/util/inspect.js.map +0 -1
  489. package/dist/browser/util/sha256.d.ts +0 -2
  490. package/dist/browser/util/sha256.js.map +0 -1
  491. package/dist/browser/util/userAgentPlatform.d.ts +0 -9
  492. package/dist/browser/util/userAgentPlatform.js.map +0 -1
  493. package/dist/browser/util/uuidUtils.js.map +0 -1
  494. package/dist/browser/xhrHttpClient.d.ts +0 -7
  495. package/dist/browser/xhrHttpClient.js +0 -174
  496. package/dist/browser/xhrHttpClient.js.map +0 -1
  497. package/dist/commonjs/fetchHttpClient.d.ts +0 -7
  498. package/dist/commonjs/fetchHttpClient.js +0 -237
  499. package/dist/commonjs/fetchHttpClient.js.map +0 -7
  500. package/dist/commonjs/logger/log.common.d.ts +0 -2
  501. package/dist/commonjs/logger/log.common.js.map +0 -7
  502. package/dist/commonjs/policies/proxyPolicy.common.d.ts +0 -19
  503. package/dist/commonjs/policies/proxyPolicy.common.js +0 -43
  504. package/dist/commonjs/policies/proxyPolicy.common.js.map +0 -7
  505. package/dist/commonjs/util/arrayBuffer.d.ts +0 -7
  506. package/dist/commonjs/util/arrayBuffer.js +0 -36
  507. package/dist/commonjs/util/arrayBuffer.js.map +0 -7
  508. package/dist/commonjs/util/bytesEncoding.common.d.ts +0 -61
  509. package/dist/commonjs/util/bytesEncoding.common.js +0 -105
  510. package/dist/commonjs/util/bytesEncoding.common.js.map +0 -7
  511. package/dist/commonjs/util/checkEnvironment.js +0 -45
  512. package/dist/commonjs/util/checkEnvironment.js.map +0 -7
  513. package/dist/commonjs/util/concat.common.d.ts +0 -17
  514. package/dist/commonjs/util/concat.common.js +0 -60
  515. package/dist/commonjs/util/concat.common.js.map +0 -7
  516. package/dist/commonjs/util/inspect.common.d.ts +0 -2
  517. package/dist/commonjs/util/inspect.common.js.map +0 -7
  518. package/dist/commonjs/util/sha256.common.d.ts +0 -14
  519. package/dist/commonjs/util/sha256.common.js +0 -69
  520. package/dist/commonjs/util/sha256.common.js.map +0 -7
  521. package/dist/commonjs/util/uuidUtils.common.d.ts +0 -13
  522. package/dist/commonjs/util/uuidUtils.common.js +0 -48
  523. package/dist/commonjs/util/uuidUtils.common.js.map +0 -7
  524. package/dist/commonjs/xhrHttpClient.d.ts +0 -7
  525. package/dist/commonjs/xhrHttpClient.js +0 -185
  526. package/dist/commonjs/xhrHttpClient.js.map +0 -7
  527. package/dist/esm/fetchHttpClient.d.ts +0 -7
  528. package/dist/esm/fetchHttpClient.js +0 -279
  529. package/dist/esm/fetchHttpClient.js.map +0 -1
  530. package/dist/esm/logger/log.common.d.ts +0 -2
  531. package/dist/esm/logger/log.common.js +0 -23
  532. package/dist/esm/logger/log.common.js.map +0 -1
  533. package/dist/esm/policies/proxyPolicy.common.d.ts +0 -19
  534. package/dist/esm/policies/proxyPolicy.common.js +0 -24
  535. package/dist/esm/policies/proxyPolicy.common.js.map +0 -1
  536. package/dist/esm/util/arrayBuffer.d.ts +0 -7
  537. package/dist/esm/util/arrayBuffer.js +0 -20
  538. package/dist/esm/util/arrayBuffer.js.map +0 -1
  539. package/dist/esm/util/bytesEncoding.common.d.ts +0 -61
  540. package/dist/esm/util/bytesEncoding.common.js +0 -110
  541. package/dist/esm/util/bytesEncoding.common.js.map +0 -1
  542. package/dist/esm/util/checkEnvironment.js.map +0 -1
  543. package/dist/esm/util/concat.common.d.ts +0 -17
  544. package/dist/esm/util/concat.common.js.map +0 -1
  545. package/dist/esm/util/inspect.common.d.ts +0 -2
  546. package/dist/esm/util/inspect.common.js +0 -4
  547. package/dist/esm/util/inspect.common.js.map +0 -1
  548. package/dist/esm/util/sha256.common.d.ts +0 -14
  549. package/dist/esm/util/sha256.common.js +0 -49
  550. package/dist/esm/util/sha256.common.js.map +0 -1
  551. package/dist/esm/util/uuidUtils.common.d.ts +0 -13
  552. package/dist/esm/util/uuidUtils.common.js +0 -40
  553. package/dist/esm/util/uuidUtils.common.js.map +0 -1
  554. package/dist/esm/xhrHttpClient.d.ts +0 -7
  555. package/dist/esm/xhrHttpClient.js +0 -174
  556. package/dist/esm/xhrHttpClient.js.map +0 -1
  557. package/dist/react-native/defaultHttpClient.js.map +0 -1
  558. package/dist/react-native/fetchHttpClient.d.ts +0 -7
  559. package/dist/react-native/fetchHttpClient.js +0 -279
  560. package/dist/react-native/fetchHttpClient.js.map +0 -1
  561. package/dist/react-native/logger/log.js.map +0 -1
  562. package/dist/react-native/nodeHttpClient.d.ts +0 -9
  563. package/dist/react-native/nodeHttpClient.js +0 -347
  564. package/dist/react-native/nodeHttpClient.js.map +0 -1
  565. package/dist/react-native/policies/decompressResponsePolicy.d.ts +0 -11
  566. package/dist/react-native/policies/decompressResponsePolicy.js +0 -23
  567. package/dist/react-native/policies/decompressResponsePolicy.js.map +0 -1
  568. package/dist/react-native/policies/proxyPolicy.d.ts +0 -2
  569. package/dist/react-native/policies/proxyPolicy.js.map +0 -1
  570. package/dist/react-native/util/bytesEncoding.d.ts +0 -2
  571. package/dist/react-native/util/bytesEncoding.js.map +0 -1
  572. package/dist/react-native/util/checkEnvironment.js +0 -41
  573. package/dist/react-native/util/checkEnvironment.js.map +0 -1
  574. package/dist/react-native/util/concat.common.d.ts +0 -17
  575. package/dist/react-native/util/concat.common.js +0 -58
  576. package/dist/react-native/util/concat.common.js.map +0 -1
  577. package/dist/react-native/util/concat.d.ts +0 -2
  578. package/dist/react-native/util/concat.js +0 -4
  579. package/dist/react-native/util/concat.js.map +0 -1
  580. package/dist/react-native/util/inspect.d.ts +0 -2
  581. package/dist/react-native/util/inspect.js.map +0 -1
  582. package/dist/react-native/util/sha256.d.ts +0 -2
  583. package/dist/react-native/util/sha256.js.map +0 -1
  584. package/dist/react-native/util/userAgentPlatform.js.map +0 -1
  585. package/dist/react-native/util/uuidUtils.d.ts +0 -2
  586. package/dist/react-native/util/uuidUtils.js.map +0 -1
@@ -26,3 +26,4 @@ const logger = (0, import_logger.createClientLogger)("ts-http-runtime");
26
26
  0 && (module.exports = {
27
27
  logger
28
28
  });
29
+ //# sourceMappingURL=log.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/log.ts"],
3
+ "sources": ["../../src/log.ts"],
4
4
  "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"./logger/logger.js\";\nexport const logger = createClientLogger(\"ts-http-runtime\");\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAAmC;AAC5B,MAAM,aAAS,kCAAmB,iBAAiB;",
6
6
  "names": []
@@ -21,7 +21,8 @@ __export(debug_exports, {
21
21
  });
22
22
  module.exports = __toCommonJS(debug_exports);
23
23
  var import_log = require("./log.js");
24
- const debugEnvVariable = typeof process !== "undefined" && process.env && process.env.DEBUG || void 0;
24
+ var import_env = require("../env.js");
25
+ const debugEnvVariable = (0, import_env.getEnvironmentVariable)("DEBUG");
25
26
  let enabledString;
26
27
  let enabledNamespaces = [];
27
28
  let skippedNamespaces = [];
@@ -180,3 +181,4 @@ function extend(namespace) {
180
181
  return newDebugger;
181
182
  }
182
183
  var debug_default = debugObj;
184
+ //# sourceMappingURL=debug.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/logger/debug.ts"],
4
- "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { log } from \"./log.js\";\n\n/**\n * A simple mechanism for enabling logging.\n * Intended to mimic the publicly available `debug` package.\n */\nexport interface Debug {\n /**\n * Creates a new logger with the given namespace.\n */\n (namespace: string): Debugger;\n /**\n * The default log method (defaults to console)\n */\n log: (...args: any[]) => void;\n /**\n * Enables a particular set of namespaces.\n * To enable multiple separate them with commas, e.g. \"info,debug\".\n * Supports wildcards, e.g. \"typeSpecRuntime:*\"\n * Supports skip syntax, e.g. \"typeSpecRuntime:*,-typeSpecRuntime:storage:*\" will enable\n * everything under typeSpecRuntime except for things under typeSpecRuntime:storage.\n */\n enable: (namespaces: string) => void;\n /**\n * Checks if a particular namespace is enabled.\n */\n enabled: (namespace: string) => boolean;\n /**\n * Disables all logging, returns what was previously enabled.\n */\n disable: () => string;\n}\n\n/**\n * A log function that can be dynamically enabled and redirected.\n */\nexport interface Debugger {\n /**\n * Logs the given arguments to the `log` method.\n */\n (...args: any[]): void;\n /**\n * True if this logger is active and logging.\n */\n enabled: boolean;\n /**\n * Used to cleanup/remove this logger.\n */\n destroy: () => boolean;\n /**\n * The current log method. Can be overridden to redirect output.\n */\n log: (...args: any[]) => void;\n /**\n * The namespace of this logger.\n */\n namespace: string;\n /**\n * Extends this logger with a child namespace.\n * Namespaces are separated with a ':' character.\n */\n extend: (namespace: string) => Debugger;\n}\n\nconst debugEnvVariable =\n (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\n\nlet enabledString: string | undefined;\nlet enabledNamespaces: string[] = [];\nlet skippedNamespaces: string[] = [];\nconst debuggers: Debugger[] = [];\n\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\n\nconst debugObj: Debug = Object.assign(\n (namespace: string): Debugger => {\n return createDebugger(namespace);\n },\n {\n enable,\n enabled,\n disable,\n log,\n },\n);\n\nfunction enable(namespaces: string): void {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim());\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(ns.substring(1));\n } else {\n enabledNamespaces.push(ns);\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\n\nfunction enabled(namespace: string): boolean {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n\n for (const skipped of skippedNamespaces) {\n if (namespaceMatches(namespace, skipped)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (namespaceMatches(namespace, enabledNamespace)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Given a namespace, check if it matches a pattern.\n * Patterns only have a single wildcard character which is *.\n * The behavior of * is that it matches zero or more other characters.\n */\nfunction namespaceMatches(namespace: string, patternToMatch: string): boolean {\n // simple case, no pattern matching required\n if (patternToMatch.indexOf(\"*\") === -1) {\n return namespace === patternToMatch;\n }\n\n let pattern = patternToMatch;\n\n // normalize successive * if needed\n if (patternToMatch.indexOf(\"**\") !== -1) {\n const patternParts = [];\n let lastCharacter = \"\";\n for (const character of patternToMatch) {\n if (character === \"*\" && lastCharacter === \"*\") {\n continue;\n } else {\n lastCharacter = character;\n patternParts.push(character);\n }\n }\n pattern = patternParts.join(\"\");\n }\n\n let namespaceIndex = 0;\n let patternIndex = 0;\n const patternLength = pattern.length;\n const namespaceLength = namespace.length;\n let lastWildcard = -1;\n let lastWildcardNamespace = -1;\n\n while (namespaceIndex < namespaceLength && patternIndex < patternLength) {\n if (pattern[patternIndex] === \"*\") {\n lastWildcard = patternIndex;\n patternIndex++;\n if (patternIndex === patternLength) {\n // if wildcard is the last character, it will match the remaining namespace string\n return true;\n }\n // now we let the wildcard eat characters until we match the next literal in the pattern\n while (namespace[namespaceIndex] !== pattern[patternIndex]) {\n namespaceIndex++;\n // reached the end of the namespace without a match\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n }\n\n // now that we have a match, let's try to continue on\n // however, it's possible we could find a later match\n // so keep a reference in case we have to backtrack\n lastWildcardNamespace = namespaceIndex;\n namespaceIndex++;\n patternIndex++;\n continue;\n } else if (pattern[patternIndex] === namespace[namespaceIndex]) {\n // simple case: literal pattern matches so keep going\n patternIndex++;\n namespaceIndex++;\n } else if (lastWildcard >= 0) {\n // special case: we don't have a literal match, but there is a previous wildcard\n // which we can backtrack to and try having the wildcard eat the match instead\n patternIndex = lastWildcard + 1;\n namespaceIndex = lastWildcardNamespace + 1;\n // we've reached the end of the namespace without a match\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n // similar to the previous logic, let's keep going until we find the next literal match\n while (namespace[namespaceIndex] !== pattern[patternIndex]) {\n namespaceIndex++;\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n }\n lastWildcardNamespace = namespaceIndex;\n namespaceIndex++;\n patternIndex++;\n continue;\n } else {\n return false;\n }\n }\n\n const namespaceDone = namespaceIndex === namespace.length;\n const patternDone = patternIndex === pattern.length;\n // this is to detect the case of an unneeded final wildcard\n // e.g. the pattern `ab*` should match the string `ab`\n const trailingWildCard = patternIndex === pattern.length - 1 && pattern[patternIndex] === \"*\";\n return namespaceDone && (patternDone || trailingWildCard);\n}\n\nfunction disable(): string {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\n\nfunction createDebugger(namespace: string): Debugger {\n const newDebugger: Debugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n\n function debug(...args: any[]): void {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n\n debuggers.push(newDebugger);\n\n return newDebugger;\n}\n\nfunction destroy(this: Debugger): boolean {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\n\nfunction extend(this: Debugger, namespace: string): Debugger {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\n\nexport default debugObj;\n"],
5
- "mappings": "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",
3
+ "sources": ["../../../src/logger/debug.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { log } from \"#platform/log\";\nimport { getEnvironmentVariable } from \"#platform/env\";\n\n/**\n * A simple mechanism for enabling logging.\n * Intended to mimic the publicly available `debug` package.\n */\nexport interface Debug {\n /**\n * Creates a new logger with the given namespace.\n */\n (namespace: string): Debugger;\n /**\n * The default log method (defaults to console)\n */\n log: (...args: any[]) => void;\n /**\n * Enables a particular set of namespaces.\n * To enable multiple separate them with commas, e.g. \"info,debug\".\n * Supports wildcards, e.g. \"typeSpecRuntime:*\"\n * Supports skip syntax, e.g. \"typeSpecRuntime:*,-typeSpecRuntime:storage:*\" will enable\n * everything under typeSpecRuntime except for things under typeSpecRuntime:storage.\n */\n enable: (namespaces: string) => void;\n /**\n * Checks if a particular namespace is enabled.\n */\n enabled: (namespace: string) => boolean;\n /**\n * Disables all logging, returns what was previously enabled.\n */\n disable: () => string;\n}\n\n/**\n * A log function that can be dynamically enabled and redirected.\n */\nexport interface Debugger {\n /**\n * Logs the given arguments to the `log` method.\n */\n (...args: any[]): void;\n /**\n * True if this logger is active and logging.\n */\n enabled: boolean;\n /**\n * Used to cleanup/remove this logger.\n */\n destroy: () => boolean;\n /**\n * The current log method. Can be overridden to redirect output.\n */\n log: (...args: any[]) => void;\n /**\n * The namespace of this logger.\n */\n namespace: string;\n /**\n * Extends this logger with a child namespace.\n * Namespaces are separated with a ':' character.\n */\n extend: (namespace: string) => Debugger;\n}\n\nconst debugEnvVariable = getEnvironmentVariable(\"DEBUG\");\n\nlet enabledString: string | undefined;\nlet enabledNamespaces: string[] = [];\nlet skippedNamespaces: string[] = [];\nconst debuggers: Debugger[] = [];\n\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\n\nconst debugObj: Debug = Object.assign(\n (namespace: string): Debugger => {\n return createDebugger(namespace);\n },\n {\n enable,\n enabled,\n disable,\n log,\n },\n);\n\nfunction enable(namespaces: string): void {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim());\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(ns.substring(1));\n } else {\n enabledNamespaces.push(ns);\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\n\nfunction enabled(namespace: string): boolean {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n\n for (const skipped of skippedNamespaces) {\n if (namespaceMatches(namespace, skipped)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (namespaceMatches(namespace, enabledNamespace)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Given a namespace, check if it matches a pattern.\n * Patterns only have a single wildcard character which is *.\n * The behavior of * is that it matches zero or more other characters.\n */\nfunction namespaceMatches(namespace: string, patternToMatch: string): boolean {\n // simple case, no pattern matching required\n if (patternToMatch.indexOf(\"*\") === -1) {\n return namespace === patternToMatch;\n }\n\n let pattern = patternToMatch;\n\n // normalize successive * if needed\n if (patternToMatch.indexOf(\"**\") !== -1) {\n const patternParts = [];\n let lastCharacter = \"\";\n for (const character of patternToMatch) {\n if (character === \"*\" && lastCharacter === \"*\") {\n continue;\n } else {\n lastCharacter = character;\n patternParts.push(character);\n }\n }\n pattern = patternParts.join(\"\");\n }\n\n let namespaceIndex = 0;\n let patternIndex = 0;\n const patternLength = pattern.length;\n const namespaceLength = namespace.length;\n let lastWildcard = -1;\n let lastWildcardNamespace = -1;\n\n while (namespaceIndex < namespaceLength && patternIndex < patternLength) {\n if (pattern[patternIndex] === \"*\") {\n lastWildcard = patternIndex;\n patternIndex++;\n if (patternIndex === patternLength) {\n // if wildcard is the last character, it will match the remaining namespace string\n return true;\n }\n // now we let the wildcard eat characters until we match the next literal in the pattern\n while (namespace[namespaceIndex] !== pattern[patternIndex]) {\n namespaceIndex++;\n // reached the end of the namespace without a match\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n }\n\n // now that we have a match, let's try to continue on\n // however, it's possible we could find a later match\n // so keep a reference in case we have to backtrack\n lastWildcardNamespace = namespaceIndex;\n namespaceIndex++;\n patternIndex++;\n continue;\n } else if (pattern[patternIndex] === namespace[namespaceIndex]) {\n // simple case: literal pattern matches so keep going\n patternIndex++;\n namespaceIndex++;\n } else if (lastWildcard >= 0) {\n // special case: we don't have a literal match, but there is a previous wildcard\n // which we can backtrack to and try having the wildcard eat the match instead\n patternIndex = lastWildcard + 1;\n namespaceIndex = lastWildcardNamespace + 1;\n // we've reached the end of the namespace without a match\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n // similar to the previous logic, let's keep going until we find the next literal match\n while (namespace[namespaceIndex] !== pattern[patternIndex]) {\n namespaceIndex++;\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n }\n lastWildcardNamespace = namespaceIndex;\n namespaceIndex++;\n patternIndex++;\n continue;\n } else {\n return false;\n }\n }\n\n const namespaceDone = namespaceIndex === namespace.length;\n const patternDone = patternIndex === pattern.length;\n // this is to detect the case of an unneeded final wildcard\n // e.g. the pattern `ab*` should match the string `ab`\n const trailingWildCard = patternIndex === pattern.length - 1 && pattern[patternIndex] === \"*\";\n return namespaceDone && (patternDone || trailingWildCard);\n}\n\nfunction disable(): string {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\n\nfunction createDebugger(namespace: string): Debugger {\n const newDebugger: Debugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n\n function debug(...args: any[]): void {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n\n debuggers.push(newDebugger);\n\n return newDebugger;\n}\n\nfunction destroy(this: Debugger): boolean {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\n\nfunction extend(this: Debugger, namespace: string): Debugger {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\n\nexport default debugObj;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -25,3 +25,4 @@ var import_logger = require("./logger.js");
25
25
  0 && (module.exports = {
26
26
  createLoggerContext
27
27
  });
28
+ //# sourceMappingURL=internal.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/logger/internal.ts"],
3
+ "sources": ["../../../src/logger/internal.ts"],
4
4
  "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport {\n createLoggerContext,\n type CreateLoggerContextOptions,\n type LoggerContext,\n} from \"./logger.js\";\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAIO;",
6
6
  "names": []
@@ -40,3 +40,4 @@ function log(message, ...args) {
40
40
  0 && (module.exports = {
41
41
  log
42
42
  });
43
+ //# sourceMappingURL=log.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/logger/log.ts"],
3
+ "sources": ["../../../src/logger/log.ts"],
4
4
  "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { EOL } from \"node:os\";\nimport util from \"node:util\";\nimport process from \"node:process\";\n\nexport function log(message: unknown, ...args: any[]): void {\n process.stderr.write(`${util.format(message, ...args)}${EOL}`);\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAoB;AACpB,uBAAiB;AACjB,0BAAoB;AAEb,SAAS,IAAI,YAAqB,MAAmB;AAC1D,sBAAAA,QAAQ,OAAO,MAAM,GAAG,iBAAAC,QAAK,OAAO,SAAS,GAAG,IAAI,CAAC,GAAG,kBAAG,EAAE;AAC/D;",
6
6
  "names": ["process", "util"]
@@ -35,6 +35,7 @@ __export(logger_exports, {
35
35
  });
36
36
  module.exports = __toCommonJS(logger_exports);
37
37
  var import_debug = __toESM(require("./debug.js"));
38
+ var import_env = require("../env.js");
38
39
  const TYPESPEC_RUNTIME_LOG_LEVELS = ["verbose", "info", "warning", "error"];
39
40
  const levelMap = {
40
41
  verbose: 400,
@@ -52,7 +53,7 @@ function isTypeSpecRuntimeLogLevel(level) {
52
53
  }
53
54
  function createLoggerContext(options) {
54
55
  const registeredLoggers = /* @__PURE__ */ new Set();
55
- const logLevelFromEnv = typeof process !== "undefined" && process.env && process.env[options.logLevelEnvVarName] || void 0;
56
+ const logLevelFromEnv = (0, import_env.getEnvironmentVariable)(options.logLevelEnvVarName);
56
57
  let logLevel;
57
58
  const clientLogger = (0, import_debug.default)(options.namespace);
58
59
  clientLogger.log = (...args) => {
@@ -141,3 +142,4 @@ function createClientLogger(namespace) {
141
142
  getLogLevel,
142
143
  setLogLevel
143
144
  });
145
+ //# sourceMappingURL=logger.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/logger/logger.ts"],
4
- "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport debug from \"./debug.js\";\n\nimport type { Debugger } from \"./debug.js\";\nexport type { Debugger };\n\n/**\n * The log levels supported by the logger.\n * The log levels in order of most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport type TypeSpecRuntimeLogLevel = \"verbose\" | \"info\" | \"warning\" | \"error\";\n\n/**\n * A TypeSpecRuntimeClientLogger is a function that can log to an appropriate severity level.\n */\nexport type TypeSpecRuntimeClientLogger = Debugger;\n\n/**\n * Defines the methods available on the SDK-facing logger.\n */\nexport interface TypeSpecRuntimeLogger {\n /**\n * Used for failures the program is unlikely to recover from,\n * such as Out of Memory.\n */\n error: Debugger;\n /**\n * Used when a function fails to perform its intended task.\n * Usually this means the function will throw an exception.\n * Not used for self-healing events (e.g. automatic retry)\n */\n warning: Debugger;\n /**\n * Used when a function operates normally.\n */\n info: Debugger;\n /**\n * Used for detailed troubleshooting scenarios. This is\n * intended for use by developers / system administrators\n * for diagnosing specific failures.\n */\n verbose: Debugger;\n}\n\n/**\n * todo doc\n */\nexport interface LoggerContext {\n /**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\n setLogLevel(logLevel?: TypeSpecRuntimeLogLevel): void;\n\n /**\n * Retrieves the currently specified log level.\n */\n getLogLevel(): TypeSpecRuntimeLogLevel | undefined;\n\n /**\n * Creates a logger for use by the SDKs that inherits from `TypeSpecRuntimeLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\n createClientLogger(namespace: string): TypeSpecRuntimeLogger;\n\n /**\n * The TypeSpecRuntimeClientLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\n logger: TypeSpecRuntimeClientLogger;\n}\n\n/**\n * Option for creating a TypeSpecRuntimeLoggerContext.\n */\nexport interface CreateLoggerContextOptions {\n /**\n * The name of the environment variable to check for the log level.\n */\n logLevelEnvVarName: string;\n\n /**\n * The namespace of the logger.\n */\n namespace: string;\n}\n\nconst TYPESPEC_RUNTIME_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\n\ntype DebuggerWithLogLevel = Debugger & { level: TypeSpecRuntimeLogLevel };\n\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\n\nfunction patchLogMethod(\n parent: TypeSpecRuntimeClientLogger,\n child: TypeSpecRuntimeClientLogger | DebuggerWithLogLevel,\n): void {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\n\nfunction isTypeSpecRuntimeLogLevel(level: string): level is TypeSpecRuntimeLogLevel {\n return TYPESPEC_RUNTIME_LOG_LEVELS.includes(level as any);\n}\n\n/**\n * Creates a logger context base on the provided options.\n * @param options - The options for creating a logger context.\n * @returns The logger context.\n */\nexport function createLoggerContext(options: CreateLoggerContextOptions): LoggerContext {\n const registeredLoggers = new Set<DebuggerWithLogLevel>();\n const logLevelFromEnv =\n (typeof process !== \"undefined\" && process.env && process.env[options.logLevelEnvVarName]) ||\n undefined;\n\n let logLevel: TypeSpecRuntimeLogLevel | undefined;\n\n const clientLogger: TypeSpecRuntimeClientLogger = debug(options.namespace);\n clientLogger.log = (...args) => {\n debug.log(...args);\n };\n\n function contextSetLogLevel(level?: TypeSpecRuntimeLogLevel): void {\n if (level && !isTypeSpecRuntimeLogLevel(level)) {\n throw new Error(\n `Unknown log level '${level}'. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(\",\")}`,\n );\n }\n logLevel = level;\n\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n\n debug.enable(enabledNamespaces.join(\",\"));\n }\n\n if (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isTypeSpecRuntimeLogLevel(logLevelFromEnv)) {\n contextSetLogLevel(logLevelFromEnv);\n } else {\n console.error(\n `${options.logLevelEnvVarName} set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(\n \", \",\n )}.`,\n );\n }\n }\n\n function shouldEnable(logger: DebuggerWithLogLevel): boolean {\n return Boolean(logLevel && levelMap[logger.level] <= levelMap[logLevel]);\n }\n\n function createLogger(\n parent: TypeSpecRuntimeClientLogger,\n level: TypeSpecRuntimeLogLevel,\n ): DebuggerWithLogLevel {\n const logger: DebuggerWithLogLevel = Object.assign(parent.extend(level), {\n level,\n });\n\n patchLogMethod(parent, logger);\n\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug.disable();\n debug.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n\n registeredLoggers.add(logger);\n\n return logger;\n }\n\n function contextGetLogLevel(): TypeSpecRuntimeLogLevel | undefined {\n return logLevel;\n }\n\n function contextCreateClientLogger(namespace: string): TypeSpecRuntimeLogger {\n const clientRootLogger: TypeSpecRuntimeClientLogger = clientLogger.extend(namespace);\n patchLogMethod(clientLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n }\n\n return {\n setLogLevel: contextSetLogLevel,\n getLogLevel: contextGetLogLevel,\n createClientLogger: contextCreateClientLogger,\n logger: clientLogger,\n };\n}\n\nconst context = createLoggerContext({\n logLevelEnvVarName: \"TYPESPEC_RUNTIME_LOG_LEVEL\",\n namespace: \"typeSpecRuntime\",\n});\n\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TypeSpecRuntimeLogger: TypeSpecRuntimeClientLogger = context.logger;\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function setLogLevel(logLevel?: TypeSpecRuntimeLogLevel): void {\n context.setLogLevel(logLevel);\n}\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel(): TypeSpecRuntimeLogLevel | undefined {\n return context.getLogLevel();\n}\n\n/**\n * Creates a logger for use by the SDKs that inherits from `TypeSpecRuntimeLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace: string): TypeSpecRuntimeLogger {\n return context.createClientLogger(namespace);\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../../../src/logger/logger.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport debug from \"./debug.js\";\nimport { getEnvironmentVariable } from \"#platform/env\";\n\nimport type { Debugger } from \"./debug.js\";\nexport type { Debugger };\n\n/**\n * The log levels supported by the logger.\n * The log levels in order of most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport type TypeSpecRuntimeLogLevel = \"verbose\" | \"info\" | \"warning\" | \"error\";\n\n/**\n * A TypeSpecRuntimeClientLogger is a function that can log to an appropriate severity level.\n */\nexport type TypeSpecRuntimeClientLogger = Debugger;\n\n/**\n * Defines the methods available on the SDK-facing logger.\n */\nexport interface TypeSpecRuntimeLogger {\n /**\n * Used for failures the program is unlikely to recover from,\n * such as Out of Memory.\n */\n error: Debugger;\n /**\n * Used when a function fails to perform its intended task.\n * Usually this means the function will throw an exception.\n * Not used for self-healing events (e.g. automatic retry)\n */\n warning: Debugger;\n /**\n * Used when a function operates normally.\n */\n info: Debugger;\n /**\n * Used for detailed troubleshooting scenarios. This is\n * intended for use by developers / system administrators\n * for diagnosing specific failures.\n */\n verbose: Debugger;\n}\n\n/**\n * todo doc\n */\nexport interface LoggerContext {\n /**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\n setLogLevel(logLevel?: TypeSpecRuntimeLogLevel): void;\n\n /**\n * Retrieves the currently specified log level.\n */\n getLogLevel(): TypeSpecRuntimeLogLevel | undefined;\n\n /**\n * Creates a logger for use by the SDKs that inherits from `TypeSpecRuntimeLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\n createClientLogger(namespace: string): TypeSpecRuntimeLogger;\n\n /**\n * The TypeSpecRuntimeClientLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\n logger: TypeSpecRuntimeClientLogger;\n}\n\n/**\n * Option for creating a TypeSpecRuntimeLoggerContext.\n */\nexport interface CreateLoggerContextOptions {\n /**\n * The name of the environment variable to check for the log level.\n */\n logLevelEnvVarName: string;\n\n /**\n * The namespace of the logger.\n */\n namespace: string;\n}\n\nconst TYPESPEC_RUNTIME_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\n\ntype DebuggerWithLogLevel = Debugger & { level: TypeSpecRuntimeLogLevel };\n\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\n\nfunction patchLogMethod(\n parent: TypeSpecRuntimeClientLogger,\n child: TypeSpecRuntimeClientLogger | DebuggerWithLogLevel,\n): void {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\n\nfunction isTypeSpecRuntimeLogLevel(level: string): level is TypeSpecRuntimeLogLevel {\n return TYPESPEC_RUNTIME_LOG_LEVELS.includes(level);\n}\n\n/**\n * Creates a logger context base on the provided options.\n * @param options - The options for creating a logger context.\n * @returns The logger context.\n */\nexport function createLoggerContext(options: CreateLoggerContextOptions): LoggerContext {\n const registeredLoggers = new Set<DebuggerWithLogLevel>();\n const logLevelFromEnv = getEnvironmentVariable(options.logLevelEnvVarName);\n\n let logLevel: TypeSpecRuntimeLogLevel | undefined;\n\n const clientLogger: TypeSpecRuntimeClientLogger = debug(options.namespace);\n clientLogger.log = (...args) => {\n debug.log(...args);\n };\n\n function contextSetLogLevel(level?: TypeSpecRuntimeLogLevel): void {\n if (level && !isTypeSpecRuntimeLogLevel(level)) {\n throw new Error(\n `Unknown log level '${level}'. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(\",\")}`,\n );\n }\n logLevel = level;\n\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n\n debug.enable(enabledNamespaces.join(\",\"));\n }\n\n if (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isTypeSpecRuntimeLogLevel(logLevelFromEnv)) {\n contextSetLogLevel(logLevelFromEnv);\n } else {\n console.error(\n `${options.logLevelEnvVarName} set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(\n \", \",\n )}.`,\n );\n }\n }\n\n function shouldEnable(logger: DebuggerWithLogLevel): boolean {\n return Boolean(logLevel && levelMap[logger.level] <= levelMap[logLevel]);\n }\n\n function createLogger(\n parent: TypeSpecRuntimeClientLogger,\n level: TypeSpecRuntimeLogLevel,\n ): DebuggerWithLogLevel {\n const logger: DebuggerWithLogLevel = Object.assign(parent.extend(level), {\n level,\n });\n\n patchLogMethod(parent, logger);\n\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug.disable();\n debug.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n\n registeredLoggers.add(logger);\n\n return logger;\n }\n\n function contextGetLogLevel(): TypeSpecRuntimeLogLevel | undefined {\n return logLevel;\n }\n\n function contextCreateClientLogger(namespace: string): TypeSpecRuntimeLogger {\n const clientRootLogger: TypeSpecRuntimeClientLogger = clientLogger.extend(namespace);\n patchLogMethod(clientLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n }\n\n return {\n setLogLevel: contextSetLogLevel,\n getLogLevel: contextGetLogLevel,\n createClientLogger: contextCreateClientLogger,\n logger: clientLogger,\n };\n}\n\nconst context = createLoggerContext({\n logLevelEnvVarName: \"TYPESPEC_RUNTIME_LOG_LEVEL\",\n namespace: \"typeSpecRuntime\",\n});\n\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TypeSpecRuntimeLogger: TypeSpecRuntimeClientLogger = context.logger;\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function setLogLevel(logLevel?: TypeSpecRuntimeLogLevel): void {\n context.setLogLevel(logLevel);\n}\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel(): TypeSpecRuntimeLogLevel | undefined {\n return context.getLogLevel();\n}\n\n/**\n * Creates a logger for use by the SDKs that inherits from `TypeSpecRuntimeLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace: string): TypeSpecRuntimeLogger {\n return context.createClientLogger(namespace);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["debug"]
7
7
  }
@@ -225,7 +225,9 @@ class NodeHttpClient {
225
225
  if (typeof body === "string" || Buffer.isBuffer(body)) {
226
226
  req.end(body);
227
227
  } else if (isArrayBuffer(body)) {
228
- req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));
228
+ req.end(
229
+ ArrayBuffer.isView(body) ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : Buffer.from(body)
230
+ );
229
231
  } else {
230
232
  import_log.logger.error("Unrecognized body type", body);
231
233
  reject(new import_restError.RestError("Unrecognized body type"));
@@ -342,3 +344,4 @@ function createNodeHttpClient() {
342
344
  createNodeHttpClient,
343
345
  getBodyLength
344
346
  });
347
+ //# sourceMappingURL=nodeHttpClient.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/nodeHttpClient.ts"],
4
- "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport http from \"node:http\";\nimport https from \"node:https\";\nimport zlib from \"node:zlib\";\nimport { Transform } from \"node:stream\";\nimport { AbortError } from \"./abort-controller/AbortError.js\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport type { IncomingMessage } from \"node:http\";\nimport { logger } from \"./log.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\n\nconst DEFAULT_TLS_SETTINGS = {};\n\nfunction isReadableStream(body: any): body is NodeJS.ReadableStream {\n return body && typeof body.pipe === \"function\";\n}\n\nfunction isStreamComplete(stream: NodeJS.ReadableStream): Promise<void> {\n if (stream.readable === false) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n const handler = (): void => {\n resolve();\n stream.removeListener(\"close\", handler);\n stream.removeListener(\"end\", handler);\n stream.removeListener(\"error\", handler);\n };\n\n stream.on(\"close\", handler);\n stream.on(\"end\", handler);\n stream.on(\"error\", handler);\n });\n}\n\nfunction isArrayBuffer(body: any): body is ArrayBuffer | ArrayBufferView {\n return body && typeof body.byteLength === \"number\";\n}\n\nclass ReportTransform extends Transform {\n private loadedBytes = 0;\n private progressCallback: (progress: TransferProgressEvent) => void;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n _transform(chunk: string | Buffer, _encoding: string, callback: Function): void {\n this.push(chunk);\n this.loadedBytes += chunk.length;\n try {\n this.progressCallback({ loadedBytes: this.loadedBytes });\n callback();\n } catch (e: any) {\n callback(e);\n }\n }\n\n constructor(progressCallback: (progress: TransferProgressEvent) => void) {\n super();\n this.progressCallback = progressCallback;\n }\n}\n\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient implements HttpClient {\n private cachedHttpAgent?: http.Agent;\n private cachedHttpsAgents: WeakMap<TlsSettings, https.Agent> = new WeakMap();\n\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise<PipelineResponse> {\n const abortController = new AbortController();\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted. Request has already been canceled.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n }\n\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n if (request.timeout > 0) {\n timeoutId = setTimeout(() => {\n const sanitizer = new Sanitizer();\n logger.info(`request to '${sanitizer.sanitizeUrl(request.url)}' timed out. canceling...`);\n abortController.abort();\n }, request.timeout);\n }\n\n const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n const shouldDecompress =\n acceptEncoding?.includes(\"gzip\") || acceptEncoding?.includes(\"deflate\");\n\n let body = typeof request.body === \"function\" ? request.body() : request.body;\n if (body && !request.headers.has(\"Content-Length\")) {\n const bodyLength = getBodyLength(body);\n if (bodyLength !== null) {\n request.headers.set(\"Content-Length\", bodyLength);\n }\n }\n\n let responseStream: NodeJS.ReadableStream | undefined;\n try {\n if (body && request.onUploadProgress) {\n const onUploadProgress = request.onUploadProgress;\n const uploadReportStream = new ReportTransform(onUploadProgress);\n uploadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in upload progress\", e);\n });\n if (isReadableStream(body)) {\n body.pipe(uploadReportStream);\n } else {\n uploadReportStream.end(body);\n }\n\n body = uploadReportStream;\n }\n\n const res = await this.makeRequest(request, abortController, body);\n\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n\n const headers = getResponseHeaders(res);\n\n const status = res.statusCode ?? 0;\n const response: PipelineResponse = {\n status,\n headers,\n request,\n };\n\n // Responses to HEAD must not have a body.\n // If they do return a body, that body must be ignored.\n if (request.method === \"HEAD\") {\n // call resume() and not destroy() to avoid closing the socket\n // and losing keep alive\n res.resume();\n return response;\n }\n\n responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n\n const onDownloadProgress = request.onDownloadProgress;\n if (onDownloadProgress) {\n const downloadReportStream = new ReportTransform(onDownloadProgress);\n downloadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in download progress\", e);\n });\n responseStream.pipe(downloadReportStream);\n responseStream = downloadReportStream;\n }\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n response.readableStreamBody = responseStream;\n } else {\n response.bodyAsText = await streamToText(responseStream);\n }\n\n return response;\n } finally {\n // clean up event listener\n if (request.abortSignal && abortListener) {\n let uploadStreamDone = Promise.resolve();\n if (isReadableStream(body)) {\n uploadStreamDone = isStreamComplete(body);\n }\n let downloadStreamDone = Promise.resolve();\n if (isReadableStream(responseStream)) {\n downloadStreamDone = isStreamComplete(responseStream);\n }\n Promise.all([uploadStreamDone, downloadStreamDone])\n .then(() => {\n // eslint-disable-next-line promise/always-return\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n })\n .catch((e) => {\n logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n });\n }\n }\n }\n\n private makeRequest(\n request: PipelineRequest,\n abortController: AbortController,\n body?: RequestBodyType,\n ): Promise<http.IncomingMessage> {\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const agent = (request.agent as http.Agent) ?? this.getOrCreateAgent(request, isInsecure);\n const options: http.RequestOptions = {\n agent,\n hostname: url.hostname,\n path: `${url.pathname}${url.search}`,\n port: url.port,\n method: request.method,\n headers: request.headers.toJSON({ preserveCase: true }),\n ...request.requestOverrides,\n };\n\n return new Promise<http.IncomingMessage>((resolve, reject) => {\n const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve);\n\n req.once(\"error\", (err: Error & { code?: string }) => {\n reject(\n new RestError(err.message, { code: err.code ?? RestError.REQUEST_SEND_ERROR, request }),\n );\n });\n\n abortController.signal.addEventListener(\"abort\", () => {\n const abortError = new AbortError(\n \"The operation was aborted. Rejecting from abort signal callback while making request.\",\n );\n req.destroy(abortError);\n reject(abortError);\n });\n if (body && isReadableStream(body)) {\n body.pipe(req);\n } else if (body) {\n if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n req.end(body);\n } else if (isArrayBuffer(body)) {\n req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));\n } else {\n logger.error(\"Unrecognized body type\", body);\n reject(new RestError(\"Unrecognized body type\"));\n }\n } else {\n // streams don't like \"undefined\" being passed as data\n req.end();\n }\n });\n }\n\n private getOrCreateAgent(request: PipelineRequest, isInsecure: boolean): http.Agent {\n const disableKeepAlive = request.disableKeepAlive;\n\n // Handle Insecure requests first\n if (isInsecure) {\n if (disableKeepAlive) {\n // keepAlive:false is the default so we don't need a custom Agent\n return http.globalAgent;\n }\n\n if (!this.cachedHttpAgent) {\n // If there is no cached agent create a new one and cache it.\n this.cachedHttpAgent = new http.Agent({ keepAlive: true });\n }\n return this.cachedHttpAgent;\n } else {\n if (disableKeepAlive && !request.tlsSettings) {\n // When there are no tlsSettings and keepAlive is false\n // we don't need a custom agent\n return https.globalAgent;\n }\n\n // We use the tlsSettings to index cached clients\n const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS;\n\n // Get the cached agent or create a new one with the\n // provided values for keepAlive and tlsSettings\n let agent = this.cachedHttpsAgents.get(tlsSettings);\n\n if (agent && agent.options.keepAlive === !disableKeepAlive) {\n return agent;\n }\n\n logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n agent = new https.Agent({\n // keepAlive is true if disableKeepAlive is false.\n keepAlive: !disableKeepAlive,\n // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options.\n ...tlsSettings,\n });\n\n this.cachedHttpsAgents.set(tlsSettings, agent);\n return agent;\n }\n }\n}\n\nfunction getResponseHeaders(res: IncomingMessage): HttpHeaders {\n const headers = createHttpHeaders();\n for (const header of Object.keys(res.headers)) {\n const value = res.headers[header];\n if (Array.isArray(value)) {\n if (value.length > 0) {\n headers.set(header, value[0]);\n }\n } else if (value) {\n headers.set(header, value);\n }\n }\n return headers;\n}\n\nfunction getDecodedResponseStream(\n stream: IncomingMessage,\n headers: HttpHeaders,\n): NodeJS.ReadableStream {\n const contentEncoding = headers.get(\"Content-Encoding\");\n if (contentEncoding === \"gzip\") {\n const unzip = zlib.createGunzip();\n stream.pipe(unzip);\n return unzip;\n } else if (contentEncoding === \"deflate\") {\n const inflate = zlib.createInflate();\n stream.pipe(inflate);\n return inflate;\n }\n\n return stream;\n}\n\nfunction streamToText(stream: NodeJS.ReadableStream): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const buffer: Buffer[] = [];\n\n stream.on(\"data\", (chunk) => {\n if (Buffer.isBuffer(chunk)) {\n buffer.push(chunk);\n } else {\n buffer.push(Buffer.from(chunk));\n }\n });\n stream.on(\"end\", () => {\n resolve(Buffer.concat(buffer).toString(\"utf8\"));\n });\n stream.on(\"error\", (e) => {\n if (e && e?.name === \"AbortError\") {\n reject(e);\n } else {\n reject(\n new RestError(`Error reading response as text: ${e.message}`, {\n code: RestError.PARSE_ERROR,\n }),\n );\n }\n });\n });\n}\n\n/** @internal */\nexport function getBodyLength(body: RequestBodyType): number | null {\n if (!body) {\n return 0;\n } else if (Buffer.isBuffer(body)) {\n return body.length;\n } else if (isReadableStream(body)) {\n return null;\n } else if (isArrayBuffer(body)) {\n return body.byteLength;\n } else if (typeof body === \"string\") {\n return Buffer.from(body).length;\n } else {\n return null;\n }\n}\n\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nexport function createNodeHttpClient(): HttpClient {\n return new NodeHttpClient();\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../../src/nodeHttpClient.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport http from \"node:http\";\nimport https from \"node:https\";\nimport zlib from \"node:zlib\";\nimport { Transform } from \"node:stream\";\nimport { AbortError } from \"./abort-controller/AbortError.js\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport type { IncomingMessage } from \"node:http\";\nimport { logger } from \"./log.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\n\nconst DEFAULT_TLS_SETTINGS = {};\n\nfunction isReadableStream(body: any): body is NodeJS.ReadableStream {\n return body && typeof body.pipe === \"function\";\n}\n\nfunction isStreamComplete(stream: NodeJS.ReadableStream): Promise<void> {\n if (stream.readable === false) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n const handler = (): void => {\n resolve();\n stream.removeListener(\"close\", handler);\n stream.removeListener(\"end\", handler);\n stream.removeListener(\"error\", handler);\n };\n\n stream.on(\"close\", handler);\n stream.on(\"end\", handler);\n stream.on(\"error\", handler);\n });\n}\n\nfunction isArrayBuffer(body: any): body is ArrayBuffer | ArrayBufferView {\n return body && typeof body.byteLength === \"number\";\n}\n\nclass ReportTransform extends Transform {\n private loadedBytes = 0;\n private progressCallback: (progress: TransferProgressEvent) => void;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n _transform(chunk: string | Buffer, _encoding: string, callback: Function): void {\n this.push(chunk);\n this.loadedBytes += chunk.length;\n try {\n this.progressCallback({ loadedBytes: this.loadedBytes });\n callback();\n } catch (e: any) {\n callback(e);\n }\n }\n\n constructor(progressCallback: (progress: TransferProgressEvent) => void) {\n super();\n this.progressCallback = progressCallback;\n }\n}\n\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient implements HttpClient {\n private cachedHttpAgent?: http.Agent;\n private cachedHttpsAgents: WeakMap<TlsSettings, https.Agent> = new WeakMap();\n\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise<PipelineResponse> {\n const abortController = new AbortController();\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted. Request has already been canceled.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n }\n\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n if (request.timeout > 0) {\n timeoutId = setTimeout(() => {\n const sanitizer = new Sanitizer();\n logger.info(`request to '${sanitizer.sanitizeUrl(request.url)}' timed out. canceling...`);\n abortController.abort();\n }, request.timeout);\n }\n\n const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n const shouldDecompress =\n acceptEncoding?.includes(\"gzip\") || acceptEncoding?.includes(\"deflate\");\n\n let body = typeof request.body === \"function\" ? request.body() : request.body;\n if (body && !request.headers.has(\"Content-Length\")) {\n const bodyLength = getBodyLength(body);\n if (bodyLength !== null) {\n request.headers.set(\"Content-Length\", bodyLength);\n }\n }\n\n let responseStream: NodeJS.ReadableStream | undefined;\n try {\n if (body && request.onUploadProgress) {\n const onUploadProgress = request.onUploadProgress;\n const uploadReportStream = new ReportTransform(onUploadProgress);\n uploadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in upload progress\", e);\n });\n if (isReadableStream(body)) {\n body.pipe(uploadReportStream);\n } else {\n uploadReportStream.end(body);\n }\n\n body = uploadReportStream;\n }\n\n const res = await this.makeRequest(request, abortController, body);\n\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n\n const headers = getResponseHeaders(res);\n\n const status = res.statusCode ?? 0;\n const response: PipelineResponse = {\n status,\n headers,\n request,\n };\n\n // Responses to HEAD must not have a body.\n // If they do return a body, that body must be ignored.\n if (request.method === \"HEAD\") {\n // call resume() and not destroy() to avoid closing the socket\n // and losing keep alive\n res.resume();\n return response;\n }\n\n responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n\n const onDownloadProgress = request.onDownloadProgress;\n if (onDownloadProgress) {\n const downloadReportStream = new ReportTransform(onDownloadProgress);\n downloadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in download progress\", e);\n });\n responseStream.pipe(downloadReportStream);\n responseStream = downloadReportStream;\n }\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n response.readableStreamBody = responseStream;\n } else {\n response.bodyAsText = await streamToText(responseStream);\n }\n\n return response;\n } finally {\n // clean up event listener\n if (request.abortSignal && abortListener) {\n let uploadStreamDone = Promise.resolve();\n if (isReadableStream(body)) {\n uploadStreamDone = isStreamComplete(body);\n }\n let downloadStreamDone = Promise.resolve();\n if (isReadableStream(responseStream)) {\n downloadStreamDone = isStreamComplete(responseStream);\n }\n Promise.all([uploadStreamDone, downloadStreamDone])\n .then(() => {\n // eslint-disable-next-line promise/always-return\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n })\n .catch((e) => {\n logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n });\n }\n }\n }\n\n private makeRequest(\n request: PipelineRequest,\n abortController: AbortController,\n body?: RequestBodyType,\n ): Promise<http.IncomingMessage> {\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const agent = (request.agent as http.Agent) ?? this.getOrCreateAgent(request, isInsecure);\n const options: http.RequestOptions = {\n agent,\n hostname: url.hostname,\n path: `${url.pathname}${url.search}`,\n port: url.port,\n method: request.method,\n headers: request.headers.toJSON({ preserveCase: true }),\n ...request.requestOverrides,\n };\n\n return new Promise<http.IncomingMessage>((resolve, reject) => {\n const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve);\n\n req.once(\"error\", (err: Error & { code?: string }) => {\n reject(\n new RestError(err.message, { code: err.code ?? RestError.REQUEST_SEND_ERROR, request }),\n );\n });\n\n abortController.signal.addEventListener(\"abort\", () => {\n const abortError = new AbortError(\n \"The operation was aborted. Rejecting from abort signal callback while making request.\",\n );\n req.destroy(abortError);\n reject(abortError);\n });\n if (body && isReadableStream(body)) {\n body.pipe(req);\n } else if (body) {\n if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n req.end(body);\n } else if (isArrayBuffer(body)) {\n req.end(\n ArrayBuffer.isView(body)\n ? Buffer.from(body.buffer, body.byteOffset, body.byteLength)\n : Buffer.from(body),\n );\n } else {\n logger.error(\"Unrecognized body type\", body);\n reject(new RestError(\"Unrecognized body type\"));\n }\n } else {\n // streams don't like \"undefined\" being passed as data\n req.end();\n }\n });\n }\n\n private getOrCreateAgent(request: PipelineRequest, isInsecure: boolean): http.Agent {\n const disableKeepAlive = request.disableKeepAlive;\n\n // Handle Insecure requests first\n if (isInsecure) {\n if (disableKeepAlive) {\n // keepAlive:false is the default so we don't need a custom Agent\n return http.globalAgent;\n }\n\n if (!this.cachedHttpAgent) {\n // If there is no cached agent create a new one and cache it.\n this.cachedHttpAgent = new http.Agent({ keepAlive: true });\n }\n return this.cachedHttpAgent;\n } else {\n if (disableKeepAlive && !request.tlsSettings) {\n // When there are no tlsSettings and keepAlive is false\n // we don't need a custom agent\n return https.globalAgent;\n }\n\n // We use the tlsSettings to index cached clients\n const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS;\n\n // Get the cached agent or create a new one with the\n // provided values for keepAlive and tlsSettings\n let agent = this.cachedHttpsAgents.get(tlsSettings);\n\n if (agent && agent.options.keepAlive === !disableKeepAlive) {\n return agent;\n }\n\n logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n agent = new https.Agent({\n // keepAlive is true if disableKeepAlive is false.\n keepAlive: !disableKeepAlive,\n // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options.\n ...tlsSettings,\n });\n\n this.cachedHttpsAgents.set(tlsSettings, agent);\n return agent;\n }\n }\n}\n\nfunction getResponseHeaders(res: IncomingMessage): HttpHeaders {\n const headers = createHttpHeaders();\n for (const header of Object.keys(res.headers)) {\n const value = res.headers[header];\n if (Array.isArray(value)) {\n if (value.length > 0) {\n headers.set(header, value[0]);\n }\n } else if (value) {\n headers.set(header, value);\n }\n }\n return headers;\n}\n\nfunction getDecodedResponseStream(\n stream: IncomingMessage,\n headers: HttpHeaders,\n): NodeJS.ReadableStream {\n const contentEncoding = headers.get(\"Content-Encoding\");\n if (contentEncoding === \"gzip\") {\n const unzip = zlib.createGunzip();\n stream.pipe(unzip);\n return unzip;\n } else if (contentEncoding === \"deflate\") {\n const inflate = zlib.createInflate();\n stream.pipe(inflate);\n return inflate;\n }\n\n return stream;\n}\n\nfunction streamToText(stream: NodeJS.ReadableStream): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const buffer: Buffer[] = [];\n\n stream.on(\"data\", (chunk) => {\n if (Buffer.isBuffer(chunk)) {\n buffer.push(chunk);\n } else {\n buffer.push(Buffer.from(chunk));\n }\n });\n stream.on(\"end\", () => {\n resolve(Buffer.concat(buffer).toString(\"utf8\"));\n });\n stream.on(\"error\", (e) => {\n if (e && e?.name === \"AbortError\") {\n reject(e);\n } else {\n reject(\n new RestError(`Error reading response as text: ${e.message}`, {\n code: RestError.PARSE_ERROR,\n }),\n );\n }\n });\n });\n}\n\n/** @internal */\nexport function getBodyLength(body: RequestBodyType): number | null {\n if (!body) {\n return 0;\n } else if (Buffer.isBuffer(body)) {\n return body.length;\n } else if (isReadableStream(body)) {\n return null;\n } else if (isArrayBuffer(body)) {\n return body.byteLength;\n } else if (typeof body === \"string\") {\n return Buffer.from(body).length;\n } else {\n return null;\n }\n}\n\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nexport function createNodeHttpClient(): HttpClient {\n return new NodeHttpClient();\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["http", "https", "zlib"]
7
7
  }
@@ -206,3 +206,4 @@ function createEmptyPipeline() {
206
206
  0 && (module.exports = {
207
207
  createEmptyPipeline
208
208
  });
209
+ //# sourceMappingURL=pipeline.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/pipeline.ts"],
3
+ "sources": ["../../src/pipeline.ts"],
4
4
  "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, PipelineRequest, PipelineResponse, SendRequest } from \"./interfaces.js\";\n\n/**\n * Policies are executed in phases.\n * The execution order is:\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n */\nexport type PipelinePhase = \"Deserialize\" | \"Serialize\" | \"Retry\" | \"Sign\";\n\nconst ValidPhaseNames = new Set<PipelinePhase>([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n\n/**\n * Options when adding a policy to the pipeline.\n * Used to express dependencies on other policies.\n */\nexport interface AddPolicyOptions {\n /**\n * Policies that this policy must come before.\n */\n beforePolicies?: string[];\n /**\n * Policies that this policy must come after.\n */\n afterPolicies?: string[];\n /**\n * The phase that this policy must come after.\n */\n afterPhase?: PipelinePhase;\n /**\n * The phase this policy belongs to.\n */\n phase?: PipelinePhase;\n}\n\n/**\n * A pipeline policy manipulates a request as it travels through the pipeline.\n * It is conceptually a middleware that is allowed to modify the request before\n * it is made as well as the response when it is received.\n */\nexport interface PipelinePolicy {\n /**\n * The policy name. Must be a unique string in the pipeline.\n */\n name: string;\n /**\n * The main method to implement that manipulates a request/response.\n * @param request - The request being performed.\n * @param next - The next policy in the pipeline. Must be called to continue the pipeline.\n */\n sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse>;\n}\n\n/**\n * Represents a pipeline for making a HTTP request to a URL.\n * Pipelines can have multiple policies to manage manipulating each request\n * before and after it is made to the server.\n */\nexport interface Pipeline {\n /**\n * Add a new policy to the pipeline.\n * @param policy - A policy that manipulates a request.\n * @param options - A set of options for when the policy should run.\n */\n addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): void;\n /**\n * Remove a policy from the pipeline.\n * @param options - Options that let you specify which policies to remove.\n */\n removePolicy(options: { name?: string; phase?: PipelinePhase }): PipelinePolicy[];\n /**\n * Uses the pipeline to make a HTTP request.\n * @param httpClient - The HttpClient that actually performs the request.\n * @param request - The request to be made.\n */\n sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise<PipelineResponse>;\n /**\n * Returns the current set of policies in the pipeline in the order in which\n * they will be applied to the request. Later in the list is closer to when\n * the request is performed.\n */\n getOrderedPolicies(): PipelinePolicy[];\n /**\n * Duplicates this pipeline to allow for modifying an existing one without mutating it.\n */\n clone(): Pipeline;\n}\n\ninterface PipelineDescriptor {\n policy: PipelinePolicy;\n options: AddPolicyOptions;\n}\n\ninterface PolicyGraphNode {\n policy: PipelinePolicy;\n dependsOn: Set<PolicyGraphNode>;\n dependants: Set<PolicyGraphNode>;\n afterPhase?: Phase;\n}\n\ninterface Phase {\n name: PipelinePhase | \"None\";\n policies: Set<PolicyGraphNode>;\n hasRun: boolean;\n hasAfterPolicies: boolean;\n}\n\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline implements Pipeline {\n private _policies: PipelineDescriptor[] = [];\n private _orderedPolicies?: PipelinePolicy[];\n\n private constructor(policies?: PipelineDescriptor[]) {\n this._policies = policies?.slice(0) ?? [];\n this._orderedPolicies = undefined;\n }\n\n public addPolicy(policy: PipelinePolicy, options: AddPolicyOptions = {}): void {\n if (options.phase && options.afterPhase) {\n throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n }\n if (options.phase && !ValidPhaseNames.has(options.phase)) {\n throw new Error(`Invalid phase name: ${options.phase}`);\n }\n if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n }\n this._policies.push({\n policy,\n options,\n });\n this._orderedPolicies = undefined;\n }\n\n public removePolicy(options: { name?: string; phase?: string }): PipelinePolicy[] {\n const removedPolicies: PipelinePolicy[] = [];\n\n this._policies = this._policies.filter((policyDescriptor) => {\n if (\n (options.name && policyDescriptor.policy.name === options.name) ||\n (options.phase && policyDescriptor.options.phase === options.phase)\n ) {\n removedPolicies.push(policyDescriptor.policy);\n return false;\n } else {\n return true;\n }\n });\n this._orderedPolicies = undefined;\n\n return removedPolicies;\n }\n\n public sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise<PipelineResponse> {\n const policies = this.getOrderedPolicies();\n\n const pipeline = policies.reduceRight<SendRequest>(\n (next, policy) => {\n return (req: PipelineRequest) => {\n return policy.sendRequest(req, next);\n };\n },\n (req: PipelineRequest) => httpClient.sendRequest(req),\n );\n\n return pipeline(request);\n }\n\n public getOrderedPolicies(): PipelinePolicy[] {\n if (!this._orderedPolicies) {\n this._orderedPolicies = this.orderPolicies();\n }\n return this._orderedPolicies;\n }\n\n public clone(): Pipeline {\n return new HttpPipeline(this._policies);\n }\n\n public static create(): Pipeline {\n return new HttpPipeline();\n }\n\n private orderPolicies(): PipelinePolicy[] {\n /**\n * The goal of this method is to reliably order pipeline policies\n * based on their declared requirements when they were added.\n *\n * Order is first determined by phase:\n *\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n *\n * Within each phase, policies are executed in the order\n * they were added unless they were specified to execute\n * before/after other policies or after a particular phase.\n *\n * To determine the final order, we will walk the policy list\n * in phase order multiple times until all dependencies are\n * satisfied.\n *\n * `afterPolicies` are the set of policies that must be\n * executed before a given policy. This requirement is\n * considered satisfied when each of the listed policies\n * have been scheduled.\n *\n * `beforePolicies` are the set of policies that must be\n * executed after a given policy. Since this dependency\n * can be expressed by converting it into a equivalent\n * `afterPolicies` declarations, they are normalized\n * into that form for simplicity.\n *\n * An `afterPhase` dependency is considered satisfied when all\n * policies in that phase have scheduled.\n *\n */\n const result: PipelinePolicy[] = [];\n\n // Track all policies we know about.\n const policyMap: Map<string, PolicyGraphNode> = new Map<string, PolicyGraphNode>();\n\n function createPhase(name: PipelinePhase | \"None\"): Phase {\n return {\n name,\n policies: new Set<PolicyGraphNode>(),\n hasRun: false,\n hasAfterPolicies: false,\n };\n }\n\n // Track policies for each phase.\n const serializePhase = createPhase(\"Serialize\");\n const noPhase = createPhase(\"None\");\n const deserializePhase = createPhase(\"Deserialize\");\n const retryPhase = createPhase(\"Retry\");\n const signPhase = createPhase(\"Sign\");\n\n // a list of phases in order\n const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n\n // Small helper function to map phase name to each Phase\n function getPhase(phase: PipelinePhase | undefined): Phase {\n if (phase === \"Retry\") {\n return retryPhase;\n } else if (phase === \"Serialize\") {\n return serializePhase;\n } else if (phase === \"Deserialize\") {\n return deserializePhase;\n } else if (phase === \"Sign\") {\n return signPhase;\n } else {\n return noPhase;\n }\n }\n\n // First walk each policy and create a node to track metadata.\n for (const descriptor of this._policies) {\n const policy = descriptor.policy;\n const options = descriptor.options;\n const policyName = policy.name;\n if (policyMap.has(policyName)) {\n throw new Error(\"Duplicate policy names not allowed in pipeline\");\n }\n const node: PolicyGraphNode = {\n policy,\n dependsOn: new Set<PolicyGraphNode>(),\n dependants: new Set<PolicyGraphNode>(),\n };\n if (options.afterPhase) {\n node.afterPhase = getPhase(options.afterPhase);\n node.afterPhase.hasAfterPolicies = true;\n }\n policyMap.set(policyName, node);\n const phase = getPhase(options.phase);\n phase.policies.add(node);\n }\n\n // Now that each policy has a node, connect dependency references.\n for (const descriptor of this._policies) {\n const { policy, options } = descriptor;\n const policyName = policy.name;\n const node = policyMap.get(policyName);\n if (!node) {\n throw new Error(`Missing node for policy ${policyName}`);\n }\n\n if (options.afterPolicies) {\n for (const afterPolicyName of options.afterPolicies) {\n const afterNode = policyMap.get(afterPolicyName);\n if (afterNode) {\n // Linking in both directions helps later\n // when we want to notify dependants.\n node.dependsOn.add(afterNode);\n afterNode.dependants.add(node);\n }\n }\n }\n if (options.beforePolicies) {\n for (const beforePolicyName of options.beforePolicies) {\n const beforeNode = policyMap.get(beforePolicyName);\n if (beforeNode) {\n // To execute before another node, make it\n // depend on the current node.\n beforeNode.dependsOn.add(node);\n node.dependants.add(beforeNode);\n }\n }\n }\n }\n\n function walkPhase(phase: Phase): void {\n phase.hasRun = true;\n // Sets iterate in insertion order\n for (const node of phase.policies) {\n if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n // If this node is waiting on a phase to complete,\n // we need to skip it for now.\n // Even if the phase is empty, we should wait for it\n // to be walked to avoid re-ordering policies.\n continue;\n }\n if (node.dependsOn.size === 0) {\n // If there's nothing else we're waiting for, we can\n // add this policy to the result list.\n result.push(node.policy);\n // Notify anything that depends on this policy that\n // the policy has been scheduled.\n for (const dependant of node.dependants) {\n dependant.dependsOn.delete(node);\n }\n policyMap.delete(node.policy.name);\n phase.policies.delete(node);\n }\n }\n }\n\n function walkPhases(): void {\n for (const phase of orderedPhases) {\n walkPhase(phase);\n // if the phase isn't complete\n if (phase.policies.size > 0 && phase !== noPhase) {\n if (!noPhase.hasRun) {\n // Try running noPhase to see if that unblocks this phase next tick.\n // This can happen if a phase that happens before noPhase\n // is waiting on a noPhase policy to complete.\n walkPhase(noPhase);\n }\n // Don't proceed to the next phase until this phase finishes.\n return;\n }\n\n if (phase.hasAfterPolicies) {\n // Run any policies unblocked by this phase\n walkPhase(noPhase);\n }\n }\n }\n\n // Iterate until we've put every node in the result list.\n let iteration = 0;\n while (policyMap.size > 0) {\n iteration++;\n const initialResultLength = result.length;\n // Keep walking each phase in order until we can order every node.\n walkPhases();\n // The result list *should* get at least one larger each time\n // after the first full pass.\n // Otherwise, we're going to loop forever.\n if (result.length <= initialResultLength && iteration > 1) {\n throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n }\n }\n\n return result;\n }\n}\n\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nexport function createEmptyPipeline(): Pipeline {\n return HttpPipeline.create();\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
@@ -21,7 +21,7 @@ __export(pipelineRequest_exports, {
21
21
  });
22
22
  module.exports = __toCommonJS(pipelineRequest_exports);
23
23
  var import_httpHeaders = require("./httpHeaders.js");
24
- var import_uuidUtils = require("./util/uuidUtils.js");
24
+ var import_uuid = require("./util/uuidUtils.js");
25
25
  class PipelineRequestImpl {
26
26
  url;
27
27
  method;
@@ -57,7 +57,7 @@ class PipelineRequestImpl {
57
57
  this.abortSignal = options.abortSignal;
58
58
  this.onUploadProgress = options.onUploadProgress;
59
59
  this.onDownloadProgress = options.onDownloadProgress;
60
- this.requestId = options.requestId || (0, import_uuidUtils.randomUUID)();
60
+ this.requestId = options.requestId || (0, import_uuid.randomUUID)();
61
61
  this.allowInsecureConnection = options.allowInsecureConnection ?? false;
62
62
  this.enableBrowserStreams = options.enableBrowserStreams ?? false;
63
63
  this.requestOverrides = options.requestOverrides;
@@ -71,3 +71,4 @@ function createPipelineRequest(options) {
71
71
  0 && (module.exports = {
72
72
  createPipelineRequest
73
73
  });
74
+ //# sourceMappingURL=pipelineRequest.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/pipelineRequest.ts"],
4
- "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n FormDataMap,\n HttpHeaders,\n HttpMethods,\n MultipartRequestBody,\n PipelineRequest,\n ProxySettings,\n RequestBodyType,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { randomUUID } from \"./util/uuidUtils.js\";\nimport type { AuthScheme } from \"./auth/schemes.js\";\n\n/**\n * Settings to initialize a request.\n * Almost equivalent to Partial<PipelineRequest>, but url is mandatory.\n */\nexport interface PipelineRequestOptions {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method?: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers?: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout?: number;\n\n /**\n * If credentials (cookies) should be sent along during an XHR.\n * Defaults to false.\n */\n withCredentials?: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId?: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set<number>;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable use of the Streams API. If this option is set and streaming is used\n * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of\n * `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignal;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n\n /**\n * List of authentication schemes used for this specific request.\n * These schemes define how the request will be authenticated.\n *\n * If values are provided, these schemes override the client level authentication schemes.\n * If an empty array is provided, it explicitly specifies no authentication for the request.\n * If not provided at the request level, the client level authentication schemes will be used.\n */\n authSchemes?: AuthScheme[];\n\n /**\n * Additional options to set on the request. This provides a way to override\n * existing ones or provide request properties that are not declared.\n *\n * For possible valid properties, see\n * - NodeJS https.request options: https://nodejs.org/api/http.html#httprequestoptions-callback\n * - Browser RequestInit: https://developer.mozilla.org/en-US/docs/Web/API/RequestInit\n *\n * WARNING: Options specified here will override any properties of same names when request is sent by {@link HttpClient}.\n */\n requestOverrides?: Record<string, unknown>;\n}\n\nclass PipelineRequestImpl implements PipelineRequest {\n public url: string;\n public method: HttpMethods;\n public headers: HttpHeaders;\n public timeout: number;\n public withCredentials: boolean;\n public body?: RequestBodyType;\n public multipartBody?: MultipartRequestBody;\n public formData?: FormDataMap;\n public streamResponseStatusCodes?: Set<number>;\n public enableBrowserStreams: boolean;\n\n public proxySettings?: ProxySettings;\n public disableKeepAlive: boolean;\n public abortSignal?: AbortSignal;\n public requestId: string;\n public allowInsecureConnection?: boolean;\n public onUploadProgress?: (progress: TransferProgressEvent) => void;\n public onDownloadProgress?: (progress: TransferProgressEvent) => void;\n public requestOverrides?: Record<string, unknown>;\n public authSchemes?: AuthScheme[];\n\n constructor(options: PipelineRequestOptions) {\n this.url = options.url;\n this.body = options.body;\n this.headers = options.headers ?? createHttpHeaders();\n this.method = options.method ?? \"GET\";\n this.timeout = options.timeout ?? 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = options.disableKeepAlive ?? false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = options.withCredentials ?? false;\n this.abortSignal = options.abortSignal;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || randomUUID();\n this.allowInsecureConnection = options.allowInsecureConnection ?? false;\n this.enableBrowserStreams = options.enableBrowserStreams ?? false;\n this.requestOverrides = options.requestOverrides;\n this.authSchemes = options.authSchemes;\n }\n}\n\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nexport function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest {\n return new PipelineRequestImpl(options);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA,yBAAkC;AAClC,uBAA2B;AAyH3B,MAAM,oBAA+C;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEP,YAAY,SAAiC;AAC3C,SAAK,MAAM,QAAQ;AACnB,SAAK,OAAO,QAAQ;AACpB,SAAK,UAAU,QAAQ,eAAW,sCAAkB;AACpD,SAAK,SAAS,QAAQ,UAAU;AAChC,SAAK,UAAU,QAAQ,WAAW;AAClC,SAAK,gBAAgB,QAAQ;AAC7B,SAAK,WAAW,QAAQ;AACxB,SAAK,mBAAmB,QAAQ,oBAAoB;AACpD,SAAK,gBAAgB,QAAQ;AAC7B,SAAK,4BAA4B,QAAQ;AACzC,SAAK,kBAAkB,QAAQ,mBAAmB;AAClD,SAAK,cAAc,QAAQ;AAC3B,SAAK,mBAAmB,QAAQ;AAChC,SAAK,qBAAqB,QAAQ;AAClC,SAAK,YAAY,QAAQ,iBAAa,6BAAW;AACjD,SAAK,0BAA0B,QAAQ,2BAA2B;AAClE,SAAK,uBAAuB,QAAQ,wBAAwB;AAC5D,SAAK,mBAAmB,QAAQ;AAChC,SAAK,cAAc,QAAQ;AAAA,EAC7B;AACF;AAOO,SAAS,sBAAsB,SAAkD;AACtF,SAAO,IAAI,oBAAoB,OAAO;AACxC;",
3
+ "sources": ["../../src/pipelineRequest.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n FormDataMap,\n HttpHeaders,\n HttpMethods,\n MultipartRequestBody,\n PipelineRequest,\n ProxySettings,\n RequestBodyType,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { randomUUID } from \"#platform/uuid\";\nimport type { AuthScheme } from \"./auth/schemes.js\";\n\n/**\n * Settings to initialize a request.\n * Almost equivalent to Partial<PipelineRequest>, but url is mandatory.\n */\nexport interface PipelineRequestOptions {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method?: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers?: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout?: number;\n\n /**\n * If credentials (cookies) should be sent along during an XHR.\n * Defaults to false.\n */\n withCredentials?: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId?: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set<number>;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable use of the Streams API. If this option is set and streaming is used\n * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of\n * `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignal;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n\n /**\n * List of authentication schemes used for this specific request.\n * These schemes define how the request will be authenticated.\n *\n * If values are provided, these schemes override the client level authentication schemes.\n * If an empty array is provided, it explicitly specifies no authentication for the request.\n * If not provided at the request level, the client level authentication schemes will be used.\n */\n authSchemes?: AuthScheme[];\n\n /**\n * Additional options to set on the request. This provides a way to override\n * existing ones or provide request properties that are not declared.\n *\n * For possible valid properties, see\n * - NodeJS https.request options: https://nodejs.org/api/http.html#httprequestoptions-callback\n * - Browser RequestInit: https://developer.mozilla.org/en-US/docs/Web/API/RequestInit\n *\n * WARNING: Options specified here will override any properties of same names when request is sent by {@link HttpClient}.\n */\n requestOverrides?: Record<string, unknown>;\n}\n\nclass PipelineRequestImpl implements PipelineRequest {\n public url: string;\n public method: HttpMethods;\n public headers: HttpHeaders;\n public timeout: number;\n public withCredentials: boolean;\n public body?: RequestBodyType;\n public multipartBody?: MultipartRequestBody;\n public formData?: FormDataMap;\n public streamResponseStatusCodes?: Set<number>;\n public enableBrowserStreams: boolean;\n\n public proxySettings?: ProxySettings;\n public disableKeepAlive: boolean;\n public abortSignal?: AbortSignal;\n public requestId: string;\n public allowInsecureConnection?: boolean;\n public onUploadProgress?: (progress: TransferProgressEvent) => void;\n public onDownloadProgress?: (progress: TransferProgressEvent) => void;\n public requestOverrides?: Record<string, unknown>;\n public authSchemes?: AuthScheme[];\n\n constructor(options: PipelineRequestOptions) {\n this.url = options.url;\n this.body = options.body;\n this.headers = options.headers ?? createHttpHeaders();\n this.method = options.method ?? \"GET\";\n this.timeout = options.timeout ?? 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = options.disableKeepAlive ?? false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = options.withCredentials ?? false;\n this.abortSignal = options.abortSignal;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || randomUUID();\n this.allowInsecureConnection = options.allowInsecureConnection ?? false;\n this.enableBrowserStreams = options.enableBrowserStreams ?? false;\n this.requestOverrides = options.requestOverrides;\n this.authSchemes = options.authSchemes;\n }\n}\n\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nexport function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest {\n return new PipelineRequestImpl(options);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA,yBAAkC;AAClC,kBAA2B;AAyH3B,MAAM,oBAA+C;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEP,YAAY,SAAiC;AAC3C,SAAK,MAAM,QAAQ;AACnB,SAAK,OAAO,QAAQ;AACpB,SAAK,UAAU,QAAQ,eAAW,sCAAkB;AACpD,SAAK,SAAS,QAAQ,UAAU;AAChC,SAAK,UAAU,QAAQ,WAAW;AAClC,SAAK,gBAAgB,QAAQ;AAC7B,SAAK,WAAW,QAAQ;AACxB,SAAK,mBAAmB,QAAQ,oBAAoB;AACpD,SAAK,gBAAgB,QAAQ;AAC7B,SAAK,4BAA4B,QAAQ;AACzC,SAAK,kBAAkB,QAAQ,mBAAmB;AAClD,SAAK,cAAc,QAAQ;AAC3B,SAAK,mBAAmB,QAAQ;AAChC,SAAK,qBAAqB,QAAQ;AAClC,SAAK,YAAY,QAAQ,iBAAa,wBAAW;AACjD,SAAK,0BAA0B,QAAQ,2BAA2B;AAClE,SAAK,uBAAuB,QAAQ,wBAAwB;AAC5D,SAAK,mBAAmB,QAAQ;AAChC,SAAK,cAAc,QAAQ;AAAA,EAC7B;AACF;AAOO,SAAS,sBAAsB,SAAkD;AACtF,SAAO,IAAI,oBAAoB,OAAO;AACxC;",
6
6
  "names": []
7
7
  }
@@ -38,3 +38,4 @@ function agentPolicy(agent) {
38
38
  agentPolicy,
39
39
  agentPolicyName
40
40
  });
41
+ //# sourceMappingURL=agentPolicy.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/policies/agentPolicy.ts"],
3
+ "sources": ["../../../src/policies/agentPolicy.ts"],
4
4
  "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { Agent } from \"../interfaces.js\";\n\n/**\n * Name of the Agent Policy\n */\nexport const agentPolicyName = \"agentPolicy\";\n\n/**\n * Gets a pipeline policy that sets http.agent\n */\nexport function agentPolicy(agent?: Agent): PipelinePolicy {\n return {\n name: agentPolicyName,\n sendRequest: async (req, next) => {\n // Users may define an agent on the request, honor it over the client level one\n if (!req.agent) {\n req.agent = agent;\n }\n return next(req);\n },\n };\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASO,MAAM,kBAAkB;AAKxB,SAAS,YAAY,OAA+B;AACzD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,aAAa,OAAO,KAAK,SAAS;AAEhC,UAAI,CAAC,IAAI,OAAO;AACd,YAAI,QAAQ;AAAA,MACd;AACA,aAAO,KAAK,GAAG;AAAA,IACjB;AAAA,EACF;AACF;",
6
6
  "names": []
@@ -45,3 +45,4 @@ function apiKeyAuthenticationPolicy(options) {
45
45
  apiKeyAuthenticationPolicy,
46
46
  apiKeyAuthenticationPolicyName
47
47
  });
48
+ //# sourceMappingURL=apiKeyAuthenticationPolicy.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/policies/auth/apiKeyAuthenticationPolicy.ts"],
3
+ "sources": ["../../../../src/policies/auth/apiKeyAuthenticationPolicy.ts"],
4
4
  "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ApiKeyCredential } from \"../../auth/credentials.js\";\nimport type { AuthScheme } from \"../../auth/schemes.js\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../../interfaces.js\";\nimport type { PipelinePolicy } from \"../../pipeline.js\";\nimport { ensureSecureConnection } from \"./checkInsecureConnection.js\";\n\n/**\n * Name of the API Key Authentication Policy\n */\nexport const apiKeyAuthenticationPolicyName = \"apiKeyAuthenticationPolicy\";\n\n/**\n * Options for configuring the API key authentication policy\n */\nexport interface ApiKeyAuthenticationPolicyOptions {\n /**\n * The credential used to authenticate requests\n */\n credential: ApiKeyCredential;\n /**\n * Optional authentication schemes to use. If `authSchemes` is provided in both request and policy options, the request options will take precedence.\n */\n authSchemes?: AuthScheme[];\n /**\n * Allows for connecting to HTTP endpoints instead of enforcing HTTPS.\n * CAUTION: Never use this option in production.\n */\n allowInsecureConnection?: boolean;\n}\n\n/**\n * Gets a pipeline policy that adds API key authentication to requests\n */\nexport function apiKeyAuthenticationPolicy(\n options: ApiKeyAuthenticationPolicyOptions,\n): PipelinePolicy {\n return {\n name: apiKeyAuthenticationPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {\n // Ensure allowInsecureConnection is explicitly set when sending request to non-https URLs\n ensureSecureConnection(request, options);\n\n const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === \"apiKey\");\n\n // Skip adding authentication header if no API key authentication scheme is found\n if (!scheme) {\n return next(request);\n }\n if (scheme.apiKeyLocation !== \"header\") {\n throw new Error(`Unsupported API key location: ${scheme.apiKeyLocation}`);\n }\n\n request.headers.set(scheme.name, options.credential.key);\n return next(request);\n },\n };\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,qCAAuC;AAKhC,MAAM,iCAAiC;AAwBvC,SAAS,2BACd,SACgB;AAChB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,YAAY,SAA0B,MAA8C;AAExF,iEAAuB,SAAS,OAAO;AAEvC,YAAM,UAAU,QAAQ,eAAe,QAAQ,cAAc,KAAK,CAAC,MAAM,EAAE,SAAS,QAAQ;AAG5F,UAAI,CAAC,QAAQ;AACX,eAAO,KAAK,OAAO;AAAA,MACrB;AACA,UAAI,OAAO,mBAAmB,UAAU;AACtC,cAAM,IAAI,MAAM,iCAAiC,OAAO,cAAc,EAAE;AAAA,MAC1E;AAEA,cAAQ,QAAQ,IAAI,OAAO,MAAM,QAAQ,WAAW,GAAG;AACvD,aAAO,KAAK,OAAO;AAAA,IACrB;AAAA,EACF;AACF;",
6
6
  "names": []
@@ -50,3 +50,4 @@ function basicAuthenticationPolicy(options) {
50
50
  basicAuthenticationPolicy,
51
51
  basicAuthenticationPolicyName
52
52
  });
53
+ //# sourceMappingURL=basicAuthenticationPolicy.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/policies/auth/basicAuthenticationPolicy.ts"],
4
- "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { BasicCredential } from \"../../auth/credentials.js\";\nimport type { AuthScheme } from \"../../auth/schemes.js\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../../interfaces.js\";\nimport type { PipelinePolicy } from \"../../pipeline.js\";\nimport { stringToUint8Array, uint8ArrayToString } from \"../../util/bytesEncoding.js\";\nimport { ensureSecureConnection } from \"./checkInsecureConnection.js\";\n\n/**\n * Name of the Basic Authentication Policy\n */\nexport const basicAuthenticationPolicyName = \"bearerAuthenticationPolicy\";\n\n/**\n * Options for configuring the basic authentication policy\n */\nexport interface BasicAuthenticationPolicyOptions {\n /**\n * The credential used to authenticate requests\n */\n credential: BasicCredential;\n /**\n * Optional authentication schemes to use. If not provided, schemes from the request will be used.\n */\n authSchemes?: AuthScheme[];\n /**\n * Allows for connecting to HTTP endpoints instead of enforcing HTTPS.\n * CAUTION: Never use this option in production.\n */\n allowInsecureConnection?: boolean;\n}\n\n/**\n * Gets a pipeline policy that adds basic authentication to requests\n */\nexport function basicAuthenticationPolicy(\n options: BasicAuthenticationPolicyOptions,\n): PipelinePolicy {\n return {\n name: basicAuthenticationPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {\n // Ensure allowInsecureConnection is explicitly set when sending request to non-https URLs\n ensureSecureConnection(request, options);\n\n const scheme = (request.authSchemes ?? options.authSchemes)?.find(\n (x) => x.kind === \"http\" && x.scheme === \"basic\",\n );\n\n // Skip adding authentication header if no basic authentication scheme is found\n if (!scheme) {\n return next(request);\n }\n\n const { username, password } = options.credential;\n const headerValue = uint8ArrayToString(\n stringToUint8Array(`${username}:${password}`, \"utf-8\"),\n \"base64\",\n );\n request.headers.set(\"Authorization\", `Basic ${headerValue}`);\n return next(request);\n },\n };\n}\n"],
3
+ "sources": ["../../../../src/policies/auth/basicAuthenticationPolicy.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { BasicCredential } from \"../../auth/credentials.js\";\nimport type { AuthScheme } from \"../../auth/schemes.js\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../../interfaces.js\";\nimport type { PipelinePolicy } from \"../../pipeline.js\";\nimport { stringToUint8Array, uint8ArrayToString } from \"#platform/bytesEncoding\";\nimport { ensureSecureConnection } from \"./checkInsecureConnection.js\";\n\n/**\n * Name of the Basic Authentication Policy\n */\nexport const basicAuthenticationPolicyName = \"bearerAuthenticationPolicy\";\n\n/**\n * Options for configuring the basic authentication policy\n */\nexport interface BasicAuthenticationPolicyOptions {\n /**\n * The credential used to authenticate requests\n */\n credential: BasicCredential;\n /**\n * Optional authentication schemes to use. If not provided, schemes from the request will be used.\n */\n authSchemes?: AuthScheme[];\n /**\n * Allows for connecting to HTTP endpoints instead of enforcing HTTPS.\n * CAUTION: Never use this option in production.\n */\n allowInsecureConnection?: boolean;\n}\n\n/**\n * Gets a pipeline policy that adds basic authentication to requests\n */\nexport function basicAuthenticationPolicy(\n options: BasicAuthenticationPolicyOptions,\n): PipelinePolicy {\n return {\n name: basicAuthenticationPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {\n // Ensure allowInsecureConnection is explicitly set when sending request to non-https URLs\n ensureSecureConnection(request, options);\n\n const scheme = (request.authSchemes ?? options.authSchemes)?.find(\n (x) => x.kind === \"http\" && x.scheme === \"basic\",\n );\n\n // Skip adding authentication header if no basic authentication scheme is found\n if (!scheme) {\n return next(request);\n }\n\n const { username, password } = options.credential;\n const headerValue = uint8ArrayToString(\n stringToUint8Array(`${username}:${password}`, \"utf-8\"),\n \"base64\",\n );\n request.headers.set(\"Authorization\", `Basic ${headerValue}`);\n return next(request);\n },\n };\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,2BAAuD;AACvD,qCAAuC;AAKhC,MAAM,gCAAgC;AAwBtC,SAAS,0BACd,SACgB;AAChB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,YAAY,SAA0B,MAA8C;AAExF,iEAAuB,SAAS,OAAO;AAEvC,YAAM,UAAU,QAAQ,eAAe,QAAQ,cAAc;AAAA,QAC3D,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,WAAW;AAAA,MAC3C;AAGA,UAAI,CAAC,QAAQ;AACX,eAAO,KAAK,OAAO;AAAA,MACrB;AAEA,YAAM,EAAE,UAAU,SAAS,IAAI,QAAQ;AACvC,YAAM,kBAAc;AAAA,YAClB,yCAAmB,GAAG,QAAQ,IAAI,QAAQ,IAAI,OAAO;AAAA,QACrD;AAAA,MACF;AACA,cAAQ,QAAQ,IAAI,iBAAiB,SAAS,WAAW,EAAE;AAC3D,aAAO,KAAK,OAAO;AAAA,IACrB;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -47,3 +47,4 @@ function bearerAuthenticationPolicy(options) {
47
47
  bearerAuthenticationPolicy,
48
48
  bearerAuthenticationPolicyName
49
49
  });
50
+ //# sourceMappingURL=bearerAuthenticationPolicy.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/policies/auth/bearerAuthenticationPolicy.ts"],
3
+ "sources": ["../../../../src/policies/auth/bearerAuthenticationPolicy.ts"],
4
4
  "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { BearerTokenCredential } from \"../../auth/credentials.js\";\nimport type { AuthScheme } from \"../../auth/schemes.js\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../../interfaces.js\";\nimport type { PipelinePolicy } from \"../../pipeline.js\";\nimport { ensureSecureConnection } from \"./checkInsecureConnection.js\";\n\n/**\n * Name of the Bearer Authentication Policy\n */\nexport const bearerAuthenticationPolicyName = \"bearerAuthenticationPolicy\";\n\n/**\n * Options for configuring the bearer authentication policy\n */\nexport interface BearerAuthenticationPolicyOptions {\n /**\n * The BearerTokenCredential implementation that can supply the bearer token.\n */\n credential: BearerTokenCredential;\n /**\n * Optional authentication schemes to use. If not provided, schemes from the request will be used.\n */\n authSchemes?: AuthScheme[];\n /**\n * Allows for connecting to HTTP endpoints instead of enforcing HTTPS.\n * CAUTION: Never use this option in production.\n */\n allowInsecureConnection?: boolean;\n}\n\n/**\n * Gets a pipeline policy that adds bearer token authentication to requests\n */\nexport function bearerAuthenticationPolicy(\n options: BearerAuthenticationPolicyOptions,\n): PipelinePolicy {\n return {\n name: bearerAuthenticationPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {\n // Ensure allowInsecureConnection is explicitly set when sending request to non-https URLs\n ensureSecureConnection(request, options);\n\n const scheme = (request.authSchemes ?? options.authSchemes)?.find(\n (x) => x.kind === \"http\" && x.scheme === \"bearer\",\n );\n\n // Skip adding authentication header if no bearer authentication scheme is found\n if (!scheme) {\n return next(request);\n }\n\n const token = await options.credential.getBearerToken({\n abortSignal: request.abortSignal,\n });\n request.headers.set(\"Authorization\", `Bearer ${token}`);\n return next(request);\n },\n };\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,qCAAuC;AAKhC,MAAM,iCAAiC;AAwBvC,SAAS,2BACd,SACgB;AAChB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,YAAY,SAA0B,MAA8C;AAExF,iEAAuB,SAAS,OAAO;AAEvC,YAAM,UAAU,QAAQ,eAAe,QAAQ,cAAc;AAAA,QAC3D,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,WAAW;AAAA,MAC3C;AAGA,UAAI,CAAC,QAAQ;AACX,eAAO,KAAK,OAAO;AAAA,MACrB;AAEA,YAAM,QAAQ,MAAM,QAAQ,WAAW,eAAe;AAAA,QACpD,aAAa,QAAQ;AAAA,MACvB,CAAC;AACD,cAAQ,QAAQ,IAAI,iBAAiB,UAAU,KAAK,EAAE;AACtD,aAAO,KAAK,OAAO;AAAA,IACrB;AAAA,EACF;AACF;",
6
6
  "names": []
@@ -21,6 +21,7 @@ __export(checkInsecureConnection_exports, {
21
21
  });
22
22
  module.exports = __toCommonJS(checkInsecureConnection_exports);
23
23
  var import_log = require("../../log.js");
24
+ var import_env = require("../../env.js");
24
25
  let insecureConnectionWarningEmmitted = false;
25
26
  function allowInsecureConnection(request, options) {
26
27
  if (options.allowInsecureConnection && request.allowInsecureConnection) {
@@ -34,9 +35,9 @@ function allowInsecureConnection(request, options) {
34
35
  function emitInsecureConnectionWarning() {
35
36
  const warning = "Sending token over insecure transport. Assume any token issued is compromised.";
36
37
  import_log.logger.warning(warning);
37
- if (typeof process?.emitWarning === "function" && !insecureConnectionWarningEmmitted) {
38
+ if (!insecureConnectionWarningEmmitted) {
38
39
  insecureConnectionWarningEmmitted = true;
39
- process.emitWarning(warning);
40
+ (0, import_env.emitNodeWarning)(warning);
40
41
  }
41
42
  }
42
43
  function ensureSecureConnection(request, options) {
@@ -54,3 +55,4 @@ function ensureSecureConnection(request, options) {
54
55
  0 && (module.exports = {
55
56
  ensureSecureConnection
56
57
  });
58
+ //# sourceMappingURL=checkInsecureConnection.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/policies/auth/checkInsecureConnection.ts"],
4
- "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest } from \"../../interfaces.js\";\nimport { logger } from \"../../log.js\";\n\n// Ensure the warining is only emitted once\nlet insecureConnectionWarningEmmitted = false;\n\n/**\n * Checks if the request is allowed to be sent over an insecure connection.\n *\n * A request is allowed to be sent over an insecure connection when:\n * - The `allowInsecureConnection` option is set to `true`.\n * - The request has the `allowInsecureConnection` property set to `true`.\n * - The request is being sent to `localhost` or `127.0.0.1`\n */\nfunction allowInsecureConnection(\n request: PipelineRequest,\n options: { allowInsecureConnection?: boolean },\n): boolean {\n if (options.allowInsecureConnection && request.allowInsecureConnection) {\n const url = new URL(request.url);\n if (url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\") {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Logs a warning about sending a token over an insecure connection.\n *\n * This function will emit a node warning once, but log the warning every time.\n */\nfunction emitInsecureConnectionWarning(): void {\n const warning = \"Sending token over insecure transport. Assume any token issued is compromised.\";\n\n logger.warning(warning);\n\n if (typeof process?.emitWarning === \"function\" && !insecureConnectionWarningEmmitted) {\n insecureConnectionWarningEmmitted = true;\n process.emitWarning(warning);\n }\n}\n\n/**\n * Ensures that authentication is only allowed over HTTPS unless explicitly allowed.\n * Throws an error if the connection is not secure and not explicitly allowed.\n */\nexport function ensureSecureConnection(\n request: PipelineRequest,\n options: { allowInsecureConnection?: boolean },\n): void {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n if (allowInsecureConnection(request, options)) {\n emitInsecureConnectionWarning();\n } else {\n throw new Error(\n \"Authentication is not permitted for non-TLS protected (non-https) URLs when allowInsecureConnection is false.\",\n );\n }\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,iBAAuB;AAGvB,IAAI,oCAAoC;AAUxC,SAAS,wBACP,SACA,SACS;AACT,MAAI,QAAQ,2BAA2B,QAAQ,yBAAyB;AACtE,UAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,QAAI,IAAI,aAAa,eAAe,IAAI,aAAa,aAAa;AAChE,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAOA,SAAS,gCAAsC;AAC7C,QAAM,UAAU;AAEhB,oBAAO,QAAQ,OAAO;AAEtB,MAAI,OAAO,SAAS,gBAAgB,cAAc,CAAC,mCAAmC;AACpF,wCAAoC;AACpC,YAAQ,YAAY,OAAO;AAAA,EAC7B;AACF;AAMO,SAAS,uBACd,SACA,SACM;AACN,MAAI,CAAC,QAAQ,IAAI,YAAY,EAAE,WAAW,UAAU,GAAG;AACrD,QAAI,wBAAwB,SAAS,OAAO,GAAG;AAC7C,oCAA8B;AAAA,IAChC,OAAO;AACL,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
3
+ "sources": ["../../../../src/policies/auth/checkInsecureConnection.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest } from \"../../interfaces.js\";\nimport { logger } from \"../../log.js\";\nimport { emitNodeWarning } from \"#platform/env\";\n\n// Ensure the warining is only emitted once\nlet insecureConnectionWarningEmmitted = false;\n\n/**\n * Checks if the request is allowed to be sent over an insecure connection.\n *\n * A request is allowed to be sent over an insecure connection when:\n * - The `allowInsecureConnection` option is set to `true`.\n * - The request has the `allowInsecureConnection` property set to `true`.\n * - The request is being sent to `localhost` or `127.0.0.1`\n */\nfunction allowInsecureConnection(\n request: PipelineRequest,\n options: { allowInsecureConnection?: boolean },\n): boolean {\n if (options.allowInsecureConnection && request.allowInsecureConnection) {\n const url = new URL(request.url);\n if (url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\") {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Logs a warning about sending a token over an insecure connection.\n *\n * This function will emit a node warning once, but log the warning every time.\n */\nfunction emitInsecureConnectionWarning(): void {\n const warning = \"Sending token over insecure transport. Assume any token issued is compromised.\";\n\n logger.warning(warning);\n\n if (!insecureConnectionWarningEmmitted) {\n insecureConnectionWarningEmmitted = true;\n emitNodeWarning(warning);\n }\n}\n\n/**\n * Ensures that authentication is only allowed over HTTPS unless explicitly allowed.\n * Throws an error if the connection is not secure and not explicitly allowed.\n */\nexport function ensureSecureConnection(\n request: PipelineRequest,\n options: { allowInsecureConnection?: boolean },\n): void {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n if (allowInsecureConnection(request, options)) {\n emitInsecureConnectionWarning();\n } else {\n throw new Error(\n \"Authentication is not permitted for non-TLS protected (non-https) URLs when allowInsecureConnection is false.\",\n );\n }\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,iBAAuB;AACvB,iBAAgC;AAGhC,IAAI,oCAAoC;AAUxC,SAAS,wBACP,SACA,SACS;AACT,MAAI,QAAQ,2BAA2B,QAAQ,yBAAyB;AACtE,UAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,QAAI,IAAI,aAAa,eAAe,IAAI,aAAa,aAAa;AAChE,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAOA,SAAS,gCAAsC;AAC7C,QAAM,UAAU;AAEhB,oBAAO,QAAQ,OAAO;AAEtB,MAAI,CAAC,mCAAmC;AACtC,wCAAoC;AACpC,oCAAgB,OAAO;AAAA,EACzB;AACF;AAMO,SAAS,uBACd,SACA,SACM;AACN,MAAI,CAAC,QAAQ,IAAI,YAAY,EAAE,WAAW,UAAU,GAAG;AACrD,QAAI,wBAAwB,SAAS,OAAO,GAAG;AAC7C,oCAA8B;AAAA,IAChC,OAAO;AACL,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -45,3 +45,4 @@ function oauth2AuthenticationPolicy(options) {
45
45
  oauth2AuthenticationPolicy,
46
46
  oauth2AuthenticationPolicyName
47
47
  });
48
+ //# sourceMappingURL=oauth2AuthenticationPolicy.js.map