@azure/core-rest-pipeline 1.19.2-alpha.20250418.1 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/dist/browser/constants.js +1 -1
  2. package/dist/browser/constants.js.map +1 -1
  3. package/dist/browser/createPipelineFromOptions.js +2 -0
  4. package/dist/browser/createPipelineFromOptions.js.map +1 -1
  5. package/dist/browser/defaultHttpClient.d.ts +1 -1
  6. package/dist/browser/defaultHttpClient.js +21 -3
  7. package/dist/browser/defaultHttpClient.js.map +1 -0
  8. package/dist/browser/httpHeaders.js +2 -80
  9. package/dist/browser/httpHeaders.js.map +1 -1
  10. package/dist/browser/index.d.ts +1 -2
  11. package/dist/browser/index.js +1 -1
  12. package/dist/browser/index.js.map +1 -1
  13. package/dist/browser/interfaces.d.ts +11 -0
  14. package/dist/browser/interfaces.js.map +1 -1
  15. package/dist/browser/pipeline.js +2 -253
  16. package/dist/browser/pipeline.js.map +1 -1
  17. package/dist/browser/pipelineRequest.d.ts +11 -0
  18. package/dist/browser/pipelineRequest.js +5 -28
  19. package/dist/browser/pipelineRequest.js.map +1 -1
  20. package/dist/browser/policies/agentPolicy.js +3 -11
  21. package/dist/browser/policies/agentPolicy.js.map +1 -1
  22. package/dist/browser/policies/decompressResponsePolicy.d.ts +8 -4
  23. package/dist/browser/policies/decompressResponsePolicy.js +8 -7
  24. package/dist/browser/policies/decompressResponsePolicy.js.map +1 -0
  25. package/dist/browser/policies/defaultRetryPolicy.js +3 -12
  26. package/dist/browser/policies/defaultRetryPolicy.js.map +1 -1
  27. package/dist/browser/policies/exponentialRetryPolicy.js +3 -10
  28. package/dist/browser/policies/exponentialRetryPolicy.js.map +1 -1
  29. package/dist/browser/policies/formDataPolicy.js +3 -85
  30. package/dist/browser/policies/formDataPolicy.js.map +1 -1
  31. package/dist/browser/policies/logPolicy.js +3 -21
  32. package/dist/browser/policies/logPolicy.js.map +1 -1
  33. package/dist/browser/policies/multipartPolicy.js +12 -95
  34. package/dist/browser/policies/multipartPolicy.js.map +1 -1
  35. package/dist/browser/policies/proxyPolicy.d.ts +26 -2
  36. package/dist/browser/policies/proxyPolicy.js +26 -2
  37. package/dist/browser/policies/proxyPolicy.js.map +1 -0
  38. package/dist/browser/policies/redirectPolicy.js +3 -38
  39. package/dist/browser/policies/redirectPolicy.js.map +1 -1
  40. package/dist/browser/policies/retryPolicy.d.ts +59 -1
  41. package/dist/browser/policies/retryPolicy.js +5 -94
  42. package/dist/browser/policies/retryPolicy.js.map +1 -1
  43. package/dist/browser/policies/systemErrorRetryPolicy.js +3 -13
  44. package/dist/browser/policies/systemErrorRetryPolicy.js.map +1 -1
  45. package/dist/browser/policies/throttlingRetryPolicy.js +3 -11
  46. package/dist/browser/policies/throttlingRetryPolicy.js.map +1 -1
  47. package/dist/browser/policies/tlsPolicy.js +3 -11
  48. package/dist/browser/policies/tlsPolicy.js.map +1 -1
  49. package/dist/browser/policies/tracingPolicy.js +1 -1
  50. package/dist/browser/policies/tracingPolicy.js.map +1 -1
  51. package/dist/browser/policies/wrapAbortSignalLikePolicy.d.ts +10 -0
  52. package/dist/browser/policies/wrapAbortSignalLikePolicy.js +30 -0
  53. package/dist/browser/policies/wrapAbortSignalLikePolicy.js.map +1 -0
  54. package/dist/browser/restError.js +8 -27
  55. package/dist/browser/restError.js.map +1 -1
  56. package/dist/browser/util/file.d.ts +28 -2
  57. package/dist/browser/util/file.js +9 -4
  58. package/dist/browser/util/file.js.map +1 -1
  59. package/dist/browser/util/tokenCycler.js +1 -1
  60. package/dist/browser/util/tokenCycler.js.map +1 -1
  61. package/dist/browser/util/wrapAbortSignal.d.ts +12 -0
  62. package/dist/browser/util/wrapAbortSignal.js +31 -0
  63. package/dist/browser/util/wrapAbortSignal.js.map +1 -0
  64. package/dist/commonjs/constants.js +1 -1
  65. package/dist/commonjs/constants.js.map +1 -1
  66. package/dist/commonjs/createPipelineFromOptions.js +2 -0
  67. package/dist/commonjs/createPipelineFromOptions.js.map +1 -1
  68. package/dist/commonjs/defaultHttpClient.js +20 -2
  69. package/dist/commonjs/defaultHttpClient.js.map +1 -1
  70. package/dist/commonjs/httpHeaders.js +2 -80
  71. package/dist/commonjs/httpHeaders.js.map +1 -1
  72. package/dist/commonjs/index.d.ts +1 -2
  73. package/dist/commonjs/index.js.map +1 -1
  74. package/dist/commonjs/interfaces.d.ts +11 -0
  75. package/dist/commonjs/interfaces.js.map +1 -1
  76. package/dist/commonjs/pipeline.js +2 -253
  77. package/dist/commonjs/pipeline.js.map +1 -1
  78. package/dist/commonjs/pipelineRequest.d.ts +11 -0
  79. package/dist/commonjs/pipelineRequest.js +5 -28
  80. package/dist/commonjs/pipelineRequest.js.map +1 -1
  81. package/dist/commonjs/policies/agentPolicy.js +3 -11
  82. package/dist/commonjs/policies/agentPolicy.js.map +1 -1
  83. package/dist/commonjs/policies/decompressResponsePolicy.js +3 -11
  84. package/dist/commonjs/policies/decompressResponsePolicy.js.map +1 -1
  85. package/dist/commonjs/policies/defaultRetryPolicy.js +3 -12
  86. package/dist/commonjs/policies/defaultRetryPolicy.js.map +1 -1
  87. package/dist/commonjs/policies/exponentialRetryPolicy.js +3 -10
  88. package/dist/commonjs/policies/exponentialRetryPolicy.js.map +1 -1
  89. package/dist/commonjs/policies/formDataPolicy.js +3 -85
  90. package/dist/commonjs/policies/formDataPolicy.js.map +1 -1
  91. package/dist/commonjs/policies/logPolicy.js +3 -21
  92. package/dist/commonjs/policies/logPolicy.js.map +1 -1
  93. package/dist/commonjs/policies/multipartPolicy.js +12 -95
  94. package/dist/commonjs/policies/multipartPolicy.js.map +1 -1
  95. package/dist/commonjs/policies/proxyPolicy.d.ts +0 -6
  96. package/dist/commonjs/policies/proxyPolicy.js +5 -169
  97. package/dist/commonjs/policies/proxyPolicy.js.map +1 -1
  98. package/dist/commonjs/policies/redirectPolicy.js +3 -38
  99. package/dist/commonjs/policies/redirectPolicy.js.map +1 -1
  100. package/dist/commonjs/policies/retryPolicy.d.ts +59 -1
  101. package/dist/commonjs/policies/retryPolicy.js +5 -94
  102. package/dist/commonjs/policies/retryPolicy.js.map +1 -1
  103. package/dist/commonjs/policies/systemErrorRetryPolicy.js +3 -13
  104. package/dist/commonjs/policies/systemErrorRetryPolicy.js.map +1 -1
  105. package/dist/commonjs/policies/throttlingRetryPolicy.js +3 -11
  106. package/dist/commonjs/policies/throttlingRetryPolicy.js.map +1 -1
  107. package/dist/commonjs/policies/tlsPolicy.js +3 -11
  108. package/dist/commonjs/policies/tlsPolicy.js.map +1 -1
  109. package/dist/commonjs/policies/tracingPolicy.js +2 -2
  110. package/dist/commonjs/policies/tracingPolicy.js.map +1 -1
  111. package/dist/commonjs/policies/wrapAbortSignalLikePolicy.d.ts +10 -0
  112. package/dist/commonjs/policies/wrapAbortSignalLikePolicy.js +34 -0
  113. package/dist/commonjs/policies/wrapAbortSignalLikePolicy.js.map +1 -0
  114. package/dist/commonjs/restError.js +8 -27
  115. package/dist/commonjs/restError.js.map +1 -1
  116. package/dist/commonjs/tsdoc-metadata.json +1 -1
  117. package/dist/commonjs/util/file.d.ts +28 -2
  118. package/dist/commonjs/util/file.js +10 -4
  119. package/dist/commonjs/util/file.js.map +1 -1
  120. package/dist/commonjs/util/tokenCycler.js +2 -2
  121. package/dist/commonjs/util/tokenCycler.js.map +1 -1
  122. package/dist/commonjs/util/wrapAbortSignal.d.ts +12 -0
  123. package/dist/commonjs/util/wrapAbortSignal.js +34 -0
  124. package/dist/commonjs/util/wrapAbortSignal.js.map +1 -0
  125. package/dist/esm/constants.js +1 -1
  126. package/dist/esm/constants.js.map +1 -1
  127. package/dist/esm/createPipelineFromOptions.js +2 -0
  128. package/dist/esm/createPipelineFromOptions.js.map +1 -1
  129. package/dist/esm/defaultHttpClient.js +20 -2
  130. package/dist/esm/defaultHttpClient.js.map +1 -1
  131. package/dist/esm/httpHeaders.js +2 -80
  132. package/dist/esm/httpHeaders.js.map +1 -1
  133. package/dist/esm/index.d.ts +1 -2
  134. package/dist/esm/index.js +1 -1
  135. package/dist/esm/index.js.map +1 -1
  136. package/dist/esm/interfaces.d.ts +11 -0
  137. package/dist/esm/interfaces.js.map +1 -1
  138. package/dist/esm/pipeline.js +2 -253
  139. package/dist/esm/pipeline.js.map +1 -1
  140. package/dist/esm/pipelineRequest.d.ts +11 -0
  141. package/dist/esm/pipelineRequest.js +5 -28
  142. package/dist/esm/pipelineRequest.js.map +1 -1
  143. package/dist/esm/policies/agentPolicy.js +3 -11
  144. package/dist/esm/policies/agentPolicy.js.map +1 -1
  145. package/dist/esm/policies/decompressResponsePolicy.js +3 -11
  146. package/dist/esm/policies/decompressResponsePolicy.js.map +1 -1
  147. package/dist/esm/policies/defaultRetryPolicy.js +3 -12
  148. package/dist/esm/policies/defaultRetryPolicy.js.map +1 -1
  149. package/dist/esm/policies/exponentialRetryPolicy.js +3 -10
  150. package/dist/esm/policies/exponentialRetryPolicy.js.map +1 -1
  151. package/dist/esm/policies/formDataPolicy.js +3 -85
  152. package/dist/esm/policies/formDataPolicy.js.map +1 -1
  153. package/dist/esm/policies/logPolicy.js +3 -21
  154. package/dist/esm/policies/logPolicy.js.map +1 -1
  155. package/dist/esm/policies/multipartPolicy.js +12 -95
  156. package/dist/esm/policies/multipartPolicy.js.map +1 -1
  157. package/dist/esm/policies/proxyPolicy.d.ts +0 -6
  158. package/dist/esm/policies/proxyPolicy.js +4 -167
  159. package/dist/esm/policies/proxyPolicy.js.map +1 -1
  160. package/dist/esm/policies/redirectPolicy.js +3 -38
  161. package/dist/esm/policies/redirectPolicy.js.map +1 -1
  162. package/dist/esm/policies/retryPolicy.d.ts +59 -1
  163. package/dist/esm/policies/retryPolicy.js +5 -94
  164. package/dist/esm/policies/retryPolicy.js.map +1 -1
  165. package/dist/esm/policies/systemErrorRetryPolicy.js +3 -13
  166. package/dist/esm/policies/systemErrorRetryPolicy.js.map +1 -1
  167. package/dist/esm/policies/throttlingRetryPolicy.js +3 -11
  168. package/dist/esm/policies/throttlingRetryPolicy.js.map +1 -1
  169. package/dist/esm/policies/tlsPolicy.js +3 -11
  170. package/dist/esm/policies/tlsPolicy.js.map +1 -1
  171. package/dist/esm/policies/tracingPolicy.js +1 -1
  172. package/dist/esm/policies/tracingPolicy.js.map +1 -1
  173. package/dist/esm/policies/wrapAbortSignalLikePolicy.d.ts +10 -0
  174. package/dist/esm/policies/wrapAbortSignalLikePolicy.js +30 -0
  175. package/dist/esm/policies/wrapAbortSignalLikePolicy.js.map +1 -0
  176. package/dist/esm/restError.js +8 -27
  177. package/dist/esm/restError.js.map +1 -1
  178. package/dist/esm/util/file.d.ts +28 -2
  179. package/dist/esm/util/file.js +9 -4
  180. package/dist/esm/util/file.js.map +1 -1
  181. package/dist/esm/util/tokenCycler.js +1 -1
  182. package/dist/esm/util/tokenCycler.js.map +1 -1
  183. package/dist/esm/util/wrapAbortSignal.d.ts +12 -0
  184. package/dist/esm/util/wrapAbortSignal.js +31 -0
  185. package/dist/esm/util/wrapAbortSignal.js.map +1 -0
  186. package/dist/react-native/constants.js +1 -1
  187. package/dist/react-native/constants.js.map +1 -1
  188. package/dist/react-native/createPipelineFromOptions.js +2 -0
  189. package/dist/react-native/createPipelineFromOptions.js.map +1 -1
  190. package/dist/react-native/defaultHttpClient.d.ts +1 -1
  191. package/dist/react-native/defaultHttpClient.js +21 -3
  192. package/dist/react-native/defaultHttpClient.js.map +1 -0
  193. package/dist/react-native/httpHeaders.js +2 -80
  194. package/dist/react-native/httpHeaders.js.map +1 -1
  195. package/dist/react-native/index.d.ts +1 -2
  196. package/dist/react-native/index.js +1 -1
  197. package/dist/react-native/index.js.map +1 -1
  198. package/dist/react-native/interfaces.d.ts +11 -0
  199. package/dist/react-native/interfaces.js.map +1 -1
  200. package/dist/react-native/pipeline.js +2 -253
  201. package/dist/react-native/pipeline.js.map +1 -1
  202. package/dist/react-native/pipelineRequest.d.ts +11 -0
  203. package/dist/react-native/pipelineRequest.js +5 -28
  204. package/dist/react-native/pipelineRequest.js.map +1 -1
  205. package/dist/react-native/policies/agentPolicy.js +3 -11
  206. package/dist/react-native/policies/agentPolicy.js.map +1 -1
  207. package/dist/react-native/policies/decompressResponsePolicy.js +3 -11
  208. package/dist/react-native/policies/decompressResponsePolicy.js.map +1 -1
  209. package/dist/react-native/policies/defaultRetryPolicy.js +3 -12
  210. package/dist/react-native/policies/defaultRetryPolicy.js.map +1 -1
  211. package/dist/react-native/policies/exponentialRetryPolicy.js +3 -10
  212. package/dist/react-native/policies/exponentialRetryPolicy.js.map +1 -1
  213. package/dist/react-native/policies/formDataPolicy.js +3 -85
  214. package/dist/react-native/policies/formDataPolicy.js.map +1 -1
  215. package/dist/react-native/policies/logPolicy.js +3 -21
  216. package/dist/react-native/policies/logPolicy.js.map +1 -1
  217. package/dist/react-native/policies/multipartPolicy.js +12 -95
  218. package/dist/react-native/policies/multipartPolicy.js.map +1 -1
  219. package/dist/react-native/policies/proxyPolicy.d.ts +26 -2
  220. package/dist/react-native/policies/proxyPolicy.js +26 -2
  221. package/dist/react-native/policies/proxyPolicy.js.map +1 -0
  222. package/dist/react-native/policies/redirectPolicy.js +3 -38
  223. package/dist/react-native/policies/redirectPolicy.js.map +1 -1
  224. package/dist/react-native/policies/retryPolicy.d.ts +59 -1
  225. package/dist/react-native/policies/retryPolicy.js +5 -94
  226. package/dist/react-native/policies/retryPolicy.js.map +1 -1
  227. package/dist/react-native/policies/systemErrorRetryPolicy.js +3 -13
  228. package/dist/react-native/policies/systemErrorRetryPolicy.js.map +1 -1
  229. package/dist/react-native/policies/throttlingRetryPolicy.js +3 -11
  230. package/dist/react-native/policies/throttlingRetryPolicy.js.map +1 -1
  231. package/dist/react-native/policies/tlsPolicy.js +3 -11
  232. package/dist/react-native/policies/tlsPolicy.js.map +1 -1
  233. package/dist/react-native/policies/tracingPolicy.js +1 -1
  234. package/dist/react-native/policies/tracingPolicy.js.map +1 -1
  235. package/dist/react-native/policies/wrapAbortSignalLikePolicy.d.ts +10 -0
  236. package/dist/react-native/policies/wrapAbortSignalLikePolicy.js +30 -0
  237. package/dist/react-native/policies/wrapAbortSignalLikePolicy.js.map +1 -0
  238. package/dist/react-native/restError.js +8 -27
  239. package/dist/react-native/restError.js.map +1 -1
  240. package/dist/react-native/util/file.d.ts +28 -2
  241. package/dist/react-native/util/file.js +9 -4
  242. package/dist/react-native/util/file.js.map +1 -1
  243. package/dist/react-native/util/tokenCycler.js +1 -1
  244. package/dist/react-native/util/tokenCycler.js.map +1 -1
  245. package/dist/react-native/util/wrapAbortSignal.d.ts +12 -0
  246. package/dist/react-native/util/wrapAbortSignal.js +31 -0
  247. package/dist/react-native/util/wrapAbortSignal.js.map +1 -0
  248. package/package.json +5 -6
  249. package/dist/browser/accessTokenCache.d.ts +0 -40
  250. package/dist/browser/accessTokenCache.js +0 -32
  251. package/dist/browser/accessTokenCache.js.map +0 -1
  252. package/dist/browser/defaultHttpClient-browser.mjs.map +0 -1
  253. package/dist/browser/fetchHttpClient.d.ts +0 -7
  254. package/dist/browser/fetchHttpClient.js +0 -256
  255. package/dist/browser/fetchHttpClient.js.map +0 -1
  256. package/dist/browser/nodeHttpClient.d.ts +0 -9
  257. package/dist/browser/nodeHttpClient.js +0 -348
  258. package/dist/browser/nodeHttpClient.js.map +0 -1
  259. package/dist/browser/policies/decompressResponsePolicy-browser.mjs.map +0 -1
  260. package/dist/browser/policies/proxyPolicy-browser.mjs.map +0 -1
  261. package/dist/browser/policies/proxyPolicy.common.d.ts +0 -15
  262. package/dist/browser/policies/proxyPolicy.common.js +0 -24
  263. package/dist/browser/policies/proxyPolicy.common.js.map +0 -1
  264. package/dist/browser/retryStrategies/exponentialRetryStrategy.d.ts +0 -40
  265. package/dist/browser/retryStrategies/exponentialRetryStrategy.js +0 -64
  266. package/dist/browser/retryStrategies/exponentialRetryStrategy.js.map +0 -1
  267. package/dist/browser/retryStrategies/retryStrategy.d.ts +0 -61
  268. package/dist/browser/retryStrategies/retryStrategy.js +0 -4
  269. package/dist/browser/retryStrategies/retryStrategy.js.map +0 -1
  270. package/dist/browser/retryStrategies/throttlingRetryStrategy.d.ts +0 -9
  271. package/dist/browser/retryStrategies/throttlingRetryStrategy.js +0 -74
  272. package/dist/browser/retryStrategies/throttlingRetryStrategy.js.map +0 -1
  273. package/dist/browser/util/concat-browser.mjs.map +0 -1
  274. package/dist/browser/util/concat.common.d.ts +0 -18
  275. package/dist/browser/util/concat.common.js +0 -45
  276. package/dist/browser/util/concat.common.js.map +0 -1
  277. package/dist/browser/util/concat.d.ts +0 -2
  278. package/dist/browser/util/concat.js +0 -4
  279. package/dist/browser/util/helpers.d.ts +0 -21
  280. package/dist/browser/util/helpers.js +0 -58
  281. package/dist/browser/util/helpers.js.map +0 -1
  282. package/dist/browser/util/inspect-browser.mjs.map +0 -1
  283. package/dist/browser/util/inspect.common.d.ts +0 -2
  284. package/dist/browser/util/inspect.common.js +0 -4
  285. package/dist/browser/util/inspect.common.js.map +0 -1
  286. package/dist/browser/util/inspect.d.ts +0 -2
  287. package/dist/browser/util/inspect.js +0 -4
  288. package/dist/browser/util/sanitizer.d.ts +0 -30
  289. package/dist/browser/util/sanitizer.js +0 -139
  290. package/dist/browser/util/sanitizer.js.map +0 -1
  291. package/dist/browser/util/typeGuards.d.ts +0 -5
  292. package/dist/browser/util/typeGuards.js +0 -17
  293. package/dist/browser/util/typeGuards.js.map +0 -1
  294. package/dist/browser/xhrHttpClient.d.ts +0 -7
  295. package/dist/browser/xhrHttpClient.js +0 -167
  296. package/dist/browser/xhrHttpClient.js.map +0 -1
  297. package/dist/commonjs/accessTokenCache.d.ts +0 -40
  298. package/dist/commonjs/accessTokenCache.js +0 -36
  299. package/dist/commonjs/accessTokenCache.js.map +0 -1
  300. package/dist/commonjs/fetchHttpClient.d.ts +0 -7
  301. package/dist/commonjs/fetchHttpClient.js +0 -259
  302. package/dist/commonjs/fetchHttpClient.js.map +0 -1
  303. package/dist/commonjs/nodeHttpClient.d.ts +0 -9
  304. package/dist/commonjs/nodeHttpClient.js +0 -353
  305. package/dist/commonjs/nodeHttpClient.js.map +0 -1
  306. package/dist/commonjs/policies/proxyPolicy.common.d.ts +0 -15
  307. package/dist/commonjs/policies/proxyPolicy.common.js +0 -30
  308. package/dist/commonjs/policies/proxyPolicy.common.js.map +0 -1
  309. package/dist/commonjs/retryStrategies/exponentialRetryStrategy.d.ts +0 -40
  310. package/dist/commonjs/retryStrategies/exponentialRetryStrategy.js +0 -69
  311. package/dist/commonjs/retryStrategies/exponentialRetryStrategy.js.map +0 -1
  312. package/dist/commonjs/retryStrategies/retryStrategy.d.ts +0 -61
  313. package/dist/commonjs/retryStrategies/retryStrategy.js +0 -5
  314. package/dist/commonjs/retryStrategies/retryStrategy.js.map +0 -1
  315. package/dist/commonjs/retryStrategies/throttlingRetryStrategy.d.ts +0 -9
  316. package/dist/commonjs/retryStrategies/throttlingRetryStrategy.js +0 -78
  317. package/dist/commonjs/retryStrategies/throttlingRetryStrategy.js.map +0 -1
  318. package/dist/commonjs/util/concat.common.d.ts +0 -18
  319. package/dist/commonjs/util/concat.common.js +0 -48
  320. package/dist/commonjs/util/concat.common.js.map +0 -1
  321. package/dist/commonjs/util/concat.d.ts +0 -17
  322. package/dist/commonjs/util/concat.js +0 -91
  323. package/dist/commonjs/util/concat.js.map +0 -1
  324. package/dist/commonjs/util/helpers.d.ts +0 -21
  325. package/dist/commonjs/util/helpers.js +0 -62
  326. package/dist/commonjs/util/helpers.js.map +0 -1
  327. package/dist/commonjs/util/inspect.common.d.ts +0 -2
  328. package/dist/commonjs/util/inspect.common.js +0 -7
  329. package/dist/commonjs/util/inspect.common.js.map +0 -1
  330. package/dist/commonjs/util/inspect.d.ts +0 -2
  331. package/dist/commonjs/util/inspect.js +0 -8
  332. package/dist/commonjs/util/inspect.js.map +0 -1
  333. package/dist/commonjs/util/sanitizer.d.ts +0 -30
  334. package/dist/commonjs/util/sanitizer.js +0 -143
  335. package/dist/commonjs/util/sanitizer.js.map +0 -1
  336. package/dist/commonjs/util/typeGuards.d.ts +0 -5
  337. package/dist/commonjs/util/typeGuards.js +0 -23
  338. package/dist/commonjs/util/typeGuards.js.map +0 -1
  339. package/dist/commonjs/xhrHttpClient.d.ts +0 -7
  340. package/dist/commonjs/xhrHttpClient.js +0 -170
  341. package/dist/commonjs/xhrHttpClient.js.map +0 -1
  342. package/dist/esm/accessTokenCache.d.ts +0 -40
  343. package/dist/esm/accessTokenCache.js +0 -32
  344. package/dist/esm/accessTokenCache.js.map +0 -1
  345. package/dist/esm/fetchHttpClient.d.ts +0 -7
  346. package/dist/esm/fetchHttpClient.js +0 -256
  347. package/dist/esm/fetchHttpClient.js.map +0 -1
  348. package/dist/esm/nodeHttpClient.d.ts +0 -9
  349. package/dist/esm/nodeHttpClient.js +0 -348
  350. package/dist/esm/nodeHttpClient.js.map +0 -1
  351. package/dist/esm/policies/proxyPolicy.common.d.ts +0 -15
  352. package/dist/esm/policies/proxyPolicy.common.js +0 -24
  353. package/dist/esm/policies/proxyPolicy.common.js.map +0 -1
  354. package/dist/esm/retryStrategies/exponentialRetryStrategy.d.ts +0 -40
  355. package/dist/esm/retryStrategies/exponentialRetryStrategy.js +0 -64
  356. package/dist/esm/retryStrategies/exponentialRetryStrategy.js.map +0 -1
  357. package/dist/esm/retryStrategies/retryStrategy.d.ts +0 -61
  358. package/dist/esm/retryStrategies/retryStrategy.js +0 -4
  359. package/dist/esm/retryStrategies/retryStrategy.js.map +0 -1
  360. package/dist/esm/retryStrategies/throttlingRetryStrategy.d.ts +0 -9
  361. package/dist/esm/retryStrategies/throttlingRetryStrategy.js +0 -74
  362. package/dist/esm/retryStrategies/throttlingRetryStrategy.js.map +0 -1
  363. package/dist/esm/util/concat.common.d.ts +0 -18
  364. package/dist/esm/util/concat.common.js +0 -45
  365. package/dist/esm/util/concat.common.js.map +0 -1
  366. package/dist/esm/util/concat.d.ts +0 -17
  367. package/dist/esm/util/concat.js +0 -88
  368. package/dist/esm/util/concat.js.map +0 -1
  369. package/dist/esm/util/helpers.d.ts +0 -21
  370. package/dist/esm/util/helpers.js +0 -58
  371. package/dist/esm/util/helpers.js.map +0 -1
  372. package/dist/esm/util/inspect.common.d.ts +0 -2
  373. package/dist/esm/util/inspect.common.js +0 -4
  374. package/dist/esm/util/inspect.common.js.map +0 -1
  375. package/dist/esm/util/inspect.d.ts +0 -2
  376. package/dist/esm/util/inspect.js +0 -5
  377. package/dist/esm/util/inspect.js.map +0 -1
  378. package/dist/esm/util/sanitizer.d.ts +0 -30
  379. package/dist/esm/util/sanitizer.js +0 -139
  380. package/dist/esm/util/sanitizer.js.map +0 -1
  381. package/dist/esm/util/typeGuards.d.ts +0 -5
  382. package/dist/esm/util/typeGuards.js +0 -17
  383. package/dist/esm/util/typeGuards.js.map +0 -1
  384. package/dist/esm/xhrHttpClient.d.ts +0 -7
  385. package/dist/esm/xhrHttpClient.js +0 -167
  386. package/dist/esm/xhrHttpClient.js.map +0 -1
  387. package/dist/react-native/accessTokenCache.d.ts +0 -40
  388. package/dist/react-native/accessTokenCache.js +0 -32
  389. package/dist/react-native/accessTokenCache.js.map +0 -1
  390. package/dist/react-native/defaultHttpClient-react-native.mjs.map +0 -1
  391. package/dist/react-native/fetchHttpClient.d.ts +0 -7
  392. package/dist/react-native/fetchHttpClient.js +0 -256
  393. package/dist/react-native/fetchHttpClient.js.map +0 -1
  394. package/dist/react-native/nodeHttpClient.d.ts +0 -9
  395. package/dist/react-native/nodeHttpClient.js +0 -348
  396. package/dist/react-native/nodeHttpClient.js.map +0 -1
  397. package/dist/react-native/policies/proxyPolicy-react-native.mjs.map +0 -1
  398. package/dist/react-native/policies/proxyPolicy.common.d.ts +0 -15
  399. package/dist/react-native/policies/proxyPolicy.common.js +0 -24
  400. package/dist/react-native/policies/proxyPolicy.common.js.map +0 -1
  401. package/dist/react-native/retryStrategies/exponentialRetryStrategy.d.ts +0 -40
  402. package/dist/react-native/retryStrategies/exponentialRetryStrategy.js +0 -64
  403. package/dist/react-native/retryStrategies/exponentialRetryStrategy.js.map +0 -1
  404. package/dist/react-native/retryStrategies/retryStrategy.d.ts +0 -61
  405. package/dist/react-native/retryStrategies/retryStrategy.js +0 -4
  406. package/dist/react-native/retryStrategies/retryStrategy.js.map +0 -1
  407. package/dist/react-native/retryStrategies/throttlingRetryStrategy.d.ts +0 -9
  408. package/dist/react-native/retryStrategies/throttlingRetryStrategy.js +0 -74
  409. package/dist/react-native/retryStrategies/throttlingRetryStrategy.js.map +0 -1
  410. package/dist/react-native/util/concat-react-native.mjs.map +0 -1
  411. package/dist/react-native/util/concat.common.d.ts +0 -18
  412. package/dist/react-native/util/concat.common.js +0 -45
  413. package/dist/react-native/util/concat.common.js.map +0 -1
  414. package/dist/react-native/util/concat.d.ts +0 -2
  415. package/dist/react-native/util/concat.js +0 -4
  416. package/dist/react-native/util/helpers.d.ts +0 -21
  417. package/dist/react-native/util/helpers.js +0 -58
  418. package/dist/react-native/util/helpers.js.map +0 -1
  419. package/dist/react-native/util/inspect-react-native.mjs.map +0 -1
  420. package/dist/react-native/util/inspect.common.d.ts +0 -2
  421. package/dist/react-native/util/inspect.common.js +0 -4
  422. package/dist/react-native/util/inspect.common.js.map +0 -1
  423. package/dist/react-native/util/inspect.d.ts +0 -2
  424. package/dist/react-native/util/inspect.js +0 -4
  425. package/dist/react-native/util/sanitizer.d.ts +0 -30
  426. package/dist/react-native/util/sanitizer.js +0 -139
  427. package/dist/react-native/util/sanitizer.js.map +0 -1
  428. package/dist/react-native/util/typeGuards.d.ts +0 -5
  429. package/dist/react-native/util/typeGuards.js +0 -17
  430. package/dist/react-native/util/typeGuards.js.map +0 -1
  431. package/dist/react-native/xhrHttpClient.d.ts +0 -7
  432. package/dist/react-native/xhrHttpClient.js +0 -167
  433. package/dist/react-native/xhrHttpClient.js.map +0 -1
@@ -1,89 +1,10 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
- import { HttpsProxyAgent } from "https-proxy-agent";
4
- import { HttpProxyAgent } from "http-proxy-agent";
5
- import { logger } from "../log.js";
6
- const HTTPS_PROXY = "HTTPS_PROXY";
7
- const HTTP_PROXY = "HTTP_PROXY";
8
- const ALL_PROXY = "ALL_PROXY";
9
- const NO_PROXY = "NO_PROXY";
3
+ import { proxyPolicy as tspProxyPolicy, proxyPolicyName as tspProxyPolicyName, getDefaultProxySettings as tspGetDefaultProxySettings, } from "@typespec/ts-http-runtime/internal/policies";
10
4
  /**
11
5
  * The programmatic identifier of the proxyPolicy.
12
6
  */
13
- export const proxyPolicyName = "proxyPolicy";
14
- /**
15
- * Stores the patterns specified in NO_PROXY environment variable.
16
- * @internal
17
- */
18
- export const globalNoProxyList = [];
19
- let noProxyListLoaded = false;
20
- /** A cache of whether a host should bypass the proxy. */
21
- const globalBypassedMap = new Map();
22
- function getEnvironmentValue(name) {
23
- if (process.env[name]) {
24
- return process.env[name];
25
- }
26
- else if (process.env[name.toLowerCase()]) {
27
- return process.env[name.toLowerCase()];
28
- }
29
- return undefined;
30
- }
31
- function loadEnvironmentProxyValue() {
32
- if (!process) {
33
- return undefined;
34
- }
35
- const httpsProxy = getEnvironmentValue(HTTPS_PROXY);
36
- const allProxy = getEnvironmentValue(ALL_PROXY);
37
- const httpProxy = getEnvironmentValue(HTTP_PROXY);
38
- return httpsProxy || allProxy || httpProxy;
39
- }
40
- /**
41
- * Check whether the host of a given `uri` matches any pattern in the no proxy list.
42
- * If there's a match, any request sent to the same host shouldn't have the proxy settings set.
43
- * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210
44
- */
45
- function isBypassed(uri, noProxyList, bypassedMap) {
46
- if (noProxyList.length === 0) {
47
- return false;
48
- }
49
- const host = new URL(uri).hostname;
50
- if (bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.has(host)) {
51
- return bypassedMap.get(host);
52
- }
53
- let isBypassedFlag = false;
54
- for (const pattern of noProxyList) {
55
- if (pattern[0] === ".") {
56
- // This should match either domain it self or any subdomain or host
57
- // .foo.com will match foo.com it self or *.foo.com
58
- if (host.endsWith(pattern)) {
59
- isBypassedFlag = true;
60
- }
61
- else {
62
- if (host.length === pattern.length - 1 && host === pattern.slice(1)) {
63
- isBypassedFlag = true;
64
- }
65
- }
66
- }
67
- else {
68
- if (host === pattern) {
69
- isBypassedFlag = true;
70
- }
71
- }
72
- }
73
- bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.set(host, isBypassedFlag);
74
- return isBypassedFlag;
75
- }
76
- export function loadNoProxy() {
77
- const noProxy = getEnvironmentValue(NO_PROXY);
78
- noProxyListLoaded = true;
79
- if (noProxy) {
80
- return noProxy
81
- .split(",")
82
- .map((item) => item.trim())
83
- .filter((item) => item.length);
84
- }
85
- return [];
86
- }
7
+ export const proxyPolicyName = tspProxyPolicyName;
87
8
  /**
88
9
  * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.
89
10
  * If no argument is given, it attempts to parse a proxy URL from the environment
@@ -92,70 +13,7 @@ export function loadNoProxy() {
92
13
  * @deprecated - Internally this method is no longer necessary when setting proxy information.
93
14
  */
94
15
  export function getDefaultProxySettings(proxyUrl) {
95
- if (!proxyUrl) {
96
- proxyUrl = loadEnvironmentProxyValue();
97
- if (!proxyUrl) {
98
- return undefined;
99
- }
100
- }
101
- const parsedUrl = new URL(proxyUrl);
102
- const schema = parsedUrl.protocol ? parsedUrl.protocol + "//" : "";
103
- return {
104
- host: schema + parsedUrl.hostname,
105
- port: Number.parseInt(parsedUrl.port || "80"),
106
- username: parsedUrl.username,
107
- password: parsedUrl.password,
108
- };
109
- }
110
- /**
111
- * This method attempts to parse a proxy URL from the environment
112
- * variables `HTTPS_PROXY` or `HTTP_PROXY`.
113
- */
114
- function getDefaultProxySettingsInternal() {
115
- const envProxy = loadEnvironmentProxyValue();
116
- return envProxy ? new URL(envProxy) : undefined;
117
- }
118
- function getUrlFromProxySettings(settings) {
119
- let parsedProxyUrl;
120
- try {
121
- parsedProxyUrl = new URL(settings.host);
122
- }
123
- catch (_a) {
124
- throw new Error(`Expecting a valid host string in proxy settings, but found "${settings.host}".`);
125
- }
126
- parsedProxyUrl.port = String(settings.port);
127
- if (settings.username) {
128
- parsedProxyUrl.username = settings.username;
129
- }
130
- if (settings.password) {
131
- parsedProxyUrl.password = settings.password;
132
- }
133
- return parsedProxyUrl;
134
- }
135
- function setProxyAgentOnRequest(request, cachedAgents, proxyUrl) {
136
- // Custom Agent should take precedence so if one is present
137
- // we should skip to avoid overwriting it.
138
- if (request.agent) {
139
- return;
140
- }
141
- const url = new URL(request.url);
142
- const isInsecure = url.protocol !== "https:";
143
- if (request.tlsSettings) {
144
- logger.warning("TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.");
145
- }
146
- const headers = request.headers.toJSON();
147
- if (isInsecure) {
148
- if (!cachedAgents.httpProxyAgent) {
149
- cachedAgents.httpProxyAgent = new HttpProxyAgent(proxyUrl, { headers });
150
- }
151
- request.agent = cachedAgents.httpProxyAgent;
152
- }
153
- else {
154
- if (!cachedAgents.httpsProxyAgent) {
155
- cachedAgents.httpsProxyAgent = new HttpsProxyAgent(proxyUrl, { headers });
156
- }
157
- request.agent = cachedAgents.httpsProxyAgent;
158
- }
16
+ return tspGetDefaultProxySettings(proxyUrl);
159
17
  }
160
18
  /**
161
19
  * A policy that allows one to apply proxy settings to all requests.
@@ -165,27 +23,6 @@ function setProxyAgentOnRequest(request, cachedAgents, proxyUrl) {
165
23
  * @param options - additional settings, for example, custom NO_PROXY patterns
166
24
  */
167
25
  export function proxyPolicy(proxySettings, options) {
168
- if (!noProxyListLoaded) {
169
- globalNoProxyList.push(...loadNoProxy());
170
- }
171
- const defaultProxy = proxySettings
172
- ? getUrlFromProxySettings(proxySettings)
173
- : getDefaultProxySettingsInternal();
174
- const cachedAgents = {};
175
- return {
176
- name: proxyPolicyName,
177
- async sendRequest(request, next) {
178
- var _a;
179
- if (!request.proxySettings &&
180
- defaultProxy &&
181
- !isBypassed(request.url, (_a = options === null || options === void 0 ? void 0 : options.customNoProxyList) !== null && _a !== void 0 ? _a : globalNoProxyList, (options === null || options === void 0 ? void 0 : options.customNoProxyList) ? undefined : globalBypassedMap)) {
182
- setProxyAgentOnRequest(request, cachedAgents, defaultProxy);
183
- }
184
- else if (request.proxySettings) {
185
- setProxyAgentOnRequest(request, cachedAgents, getUrlFromProxySettings(request.proxySettings));
186
- }
187
- return next(request);
188
- },
189
- };
26
+ return tspProxyPolicy(proxySettings, options);
190
27
  }
191
28
  //# sourceMappingURL=proxyPolicy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxyPolicy.js","sourceRoot":"","sources":["../../../src/policies/proxyPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type * as http from \"http\";\nimport type * as https from \"https\";\nimport { HttpsProxyAgent } from \"https-proxy-agent\";\nimport { HttpProxyAgent } from \"http-proxy-agent\";\nimport type {\n PipelineRequest,\n PipelineResponse,\n ProxySettings,\n SendRequest,\n} from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { logger } from \"../log.js\";\n\nconst HTTPS_PROXY = \"HTTPS_PROXY\";\nconst HTTP_PROXY = \"HTTP_PROXY\";\nconst ALL_PROXY = \"ALL_PROXY\";\nconst NO_PROXY = \"NO_PROXY\";\n\n/**\n * The programmatic identifier of the proxyPolicy.\n */\nexport const proxyPolicyName = \"proxyPolicy\";\n\n/**\n * Stores the patterns specified in NO_PROXY environment variable.\n * @internal\n */\nexport const globalNoProxyList: string[] = [];\nlet noProxyListLoaded: boolean = false;\n\n/** A cache of whether a host should bypass the proxy. */\nconst globalBypassedMap: Map<string, boolean> = new Map();\n\nfunction getEnvironmentValue(name: string): string | undefined {\n if (process.env[name]) {\n return process.env[name];\n } else if (process.env[name.toLowerCase()]) {\n return process.env[name.toLowerCase()];\n }\n return undefined;\n}\n\nfunction loadEnvironmentProxyValue(): string | undefined {\n if (!process) {\n return undefined;\n }\n\n const httpsProxy = getEnvironmentValue(HTTPS_PROXY);\n const allProxy = getEnvironmentValue(ALL_PROXY);\n const httpProxy = getEnvironmentValue(HTTP_PROXY);\n\n return httpsProxy || allProxy || httpProxy;\n}\n\n/**\n * Check whether the host of a given `uri` matches any pattern in the no proxy list.\n * If there's a match, any request sent to the same host shouldn't have the proxy settings set.\n * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210\n */\nfunction isBypassed(\n uri: string,\n noProxyList: string[],\n bypassedMap?: Map<string, boolean>,\n): boolean | undefined {\n if (noProxyList.length === 0) {\n return false;\n }\n const host = new URL(uri).hostname;\n if (bypassedMap?.has(host)) {\n return bypassedMap.get(host);\n }\n let isBypassedFlag = false;\n for (const pattern of noProxyList) {\n if (pattern[0] === \".\") {\n // This should match either domain it self or any subdomain or host\n // .foo.com will match foo.com it self or *.foo.com\n if (host.endsWith(pattern)) {\n isBypassedFlag = true;\n } else {\n if (host.length === pattern.length - 1 && host === pattern.slice(1)) {\n isBypassedFlag = true;\n }\n }\n } else {\n if (host === pattern) {\n isBypassedFlag = true;\n }\n }\n }\n bypassedMap?.set(host, isBypassedFlag);\n return isBypassedFlag;\n}\n\nexport function loadNoProxy(): string[] {\n const noProxy = getEnvironmentValue(NO_PROXY);\n noProxyListLoaded = true;\n if (noProxy) {\n return noProxy\n .split(\",\")\n .map((item) => item.trim())\n .filter((item) => item.length);\n }\n\n return [];\n}\n\n/**\n * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.\n * If no argument is given, it attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n * @param proxyUrl - The url of the proxy to use. May contain authentication information.\n * @deprecated - Internally this method is no longer necessary when setting proxy information.\n */\nexport function getDefaultProxySettings(proxyUrl?: string): ProxySettings | undefined {\n if (!proxyUrl) {\n proxyUrl = loadEnvironmentProxyValue();\n if (!proxyUrl) {\n return undefined;\n }\n }\n\n const parsedUrl = new URL(proxyUrl);\n const schema = parsedUrl.protocol ? parsedUrl.protocol + \"//\" : \"\";\n return {\n host: schema + parsedUrl.hostname,\n port: Number.parseInt(parsedUrl.port || \"80\"),\n username: parsedUrl.username,\n password: parsedUrl.password,\n };\n}\n\n/**\n * This method attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n */\nfunction getDefaultProxySettingsInternal(): URL | undefined {\n const envProxy = loadEnvironmentProxyValue();\n return envProxy ? new URL(envProxy) : undefined;\n}\n\nfunction getUrlFromProxySettings(settings: ProxySettings): URL {\n let parsedProxyUrl: URL;\n try {\n parsedProxyUrl = new URL(settings.host);\n } catch {\n throw new Error(\n `Expecting a valid host string in proxy settings, but found \"${settings.host}\".`,\n );\n }\n\n parsedProxyUrl.port = String(settings.port);\n if (settings.username) {\n parsedProxyUrl.username = settings.username;\n }\n if (settings.password) {\n parsedProxyUrl.password = settings.password;\n }\n\n return parsedProxyUrl;\n}\n\nfunction setProxyAgentOnRequest(\n request: PipelineRequest,\n cachedAgents: CachedAgents,\n proxyUrl: URL,\n): void {\n // Custom Agent should take precedence so if one is present\n // we should skip to avoid overwriting it.\n if (request.agent) {\n return;\n }\n\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (request.tlsSettings) {\n logger.warning(\n \"TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.\",\n );\n }\n\n const headers = request.headers.toJSON();\n\n if (isInsecure) {\n if (!cachedAgents.httpProxyAgent) {\n cachedAgents.httpProxyAgent = new HttpProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpProxyAgent;\n } else {\n if (!cachedAgents.httpsProxyAgent) {\n cachedAgents.httpsProxyAgent = new HttpsProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpsProxyAgent;\n }\n}\n\ninterface CachedAgents {\n httpsProxyAgent?: https.Agent;\n httpProxyAgent?: http.Agent;\n}\n\n/**\n * A policy that allows one to apply proxy settings to all requests.\n * If not passed static settings, they will be retrieved from the HTTPS_PROXY\n * or HTTP_PROXY environment variables.\n * @param proxySettings - ProxySettings to use on each request.\n * @param options - additional settings, for example, custom NO_PROXY patterns\n */\nexport function proxyPolicy(\n proxySettings?: ProxySettings,\n options?: {\n /** a list of patterns to override those loaded from NO_PROXY environment variable. */\n customNoProxyList?: string[];\n },\n): PipelinePolicy {\n if (!noProxyListLoaded) {\n globalNoProxyList.push(...loadNoProxy());\n }\n\n const defaultProxy = proxySettings\n ? getUrlFromProxySettings(proxySettings)\n : getDefaultProxySettingsInternal();\n\n const cachedAgents: CachedAgents = {};\n\n return {\n name: proxyPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {\n if (\n !request.proxySettings &&\n defaultProxy &&\n !isBypassed(\n request.url,\n options?.customNoProxyList ?? globalNoProxyList,\n options?.customNoProxyList ? undefined : globalBypassedMap,\n )\n ) {\n setProxyAgentOnRequest(request, cachedAgents, defaultProxy);\n } else if (request.proxySettings) {\n setProxyAgentOnRequest(\n request,\n cachedAgents,\n getUrlFromProxySettings(request.proxySettings),\n );\n }\n return next(request);\n },\n };\n}\n"]}
1
+ {"version":3,"file":"proxyPolicy.js","sourceRoot":"","sources":["../../../src/policies/proxyPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EACL,WAAW,IAAI,cAAc,EAC7B,eAAe,IAAI,kBAAkB,EACrC,uBAAuB,IAAI,0BAA0B,GACtD,MAAM,6CAA6C,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAiB;IACvD,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,aAA6B,EAC7B,OAGC;IAED,OAAO,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ProxySettings } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\nimport {\n proxyPolicy as tspProxyPolicy,\n proxyPolicyName as tspProxyPolicyName,\n getDefaultProxySettings as tspGetDefaultProxySettings,\n} from \"@typespec/ts-http-runtime/internal/policies\";\n\n/**\n * The programmatic identifier of the proxyPolicy.\n */\nexport const proxyPolicyName = tspProxyPolicyName;\n\n/**\n * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.\n * If no argument is given, it attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n * @param proxyUrl - The url of the proxy to use. May contain authentication information.\n * @deprecated - Internally this method is no longer necessary when setting proxy information.\n */\nexport function getDefaultProxySettings(proxyUrl?: string): ProxySettings | undefined {\n return tspGetDefaultProxySettings(proxyUrl);\n}\n\n/**\n * A policy that allows one to apply proxy settings to all requests.\n * If not passed static settings, they will be retrieved from the HTTPS_PROXY\n * or HTTP_PROXY environment variables.\n * @param proxySettings - ProxySettings to use on each request.\n * @param options - additional settings, for example, custom NO_PROXY patterns\n */\nexport function proxyPolicy(\n proxySettings?: ProxySettings,\n options?: {\n /** a list of patterns to override those loaded from NO_PROXY environment variable. */\n customNoProxyList?: string[];\n },\n): PipelinePolicy {\n return tspProxyPolicy(proxySettings, options);\n}\n"]}
@@ -1,13 +1,10 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
+ import { redirectPolicyName as tspRedirectPolicyName, redirectPolicy as tspRedirectPolicy, } from "@typespec/ts-http-runtime/internal/policies";
3
4
  /**
4
5
  * The programmatic identifier of the redirectPolicy.
5
6
  */
6
- export const redirectPolicyName = "redirectPolicy";
7
- /**
8
- * Methods that are allowed to follow redirects 301 and 302
9
- */
10
- const allowedRedirect = ["GET", "HEAD"];
7
+ export const redirectPolicyName = tspRedirectPolicyName;
11
8
  /**
12
9
  * A policy to follow Location headers from the server in order
13
10
  * to support server-side redirection.
@@ -15,38 +12,6 @@ const allowedRedirect = ["GET", "HEAD"];
15
12
  * @param options - Options to control policy behavior.
16
13
  */
17
14
  export function redirectPolicy(options = {}) {
18
- const { maxRetries = 20 } = options;
19
- return {
20
- name: redirectPolicyName,
21
- async sendRequest(request, next) {
22
- const response = await next(request);
23
- return handleRedirect(next, response, maxRetries);
24
- },
25
- };
26
- }
27
- async function handleRedirect(next, response, maxRetries, currentRetries = 0) {
28
- const { request, status, headers } = response;
29
- const locationHeader = headers.get("location");
30
- if (locationHeader &&
31
- (status === 300 ||
32
- (status === 301 && allowedRedirect.includes(request.method)) ||
33
- (status === 302 && allowedRedirect.includes(request.method)) ||
34
- (status === 303 && request.method === "POST") ||
35
- status === 307) &&
36
- currentRetries < maxRetries) {
37
- const url = new URL(locationHeader, request.url);
38
- request.url = url.toString();
39
- // POST request with Status code 303 should be converted into a
40
- // redirected GET request if the redirect url is present in the location header
41
- if (status === 303) {
42
- request.method = "GET";
43
- request.headers.delete("Content-Length");
44
- delete request.body;
45
- }
46
- request.headers.delete("Authorization");
47
- const res = await next(request);
48
- return handleRedirect(next, res, maxRetries, currentRetries + 1);
49
- }
50
- return response;
15
+ return tspRedirectPolicy(options);
51
16
  }
52
17
  //# sourceMappingURL=redirectPolicy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redirectPolicy.js","sourceRoot":"","sources":["../../../src/policies/redirectPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAaxC;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,UAAiC,EAAE;IAChE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACpC,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,IAAiB,EACjB,QAA0B,EAC1B,UAAkB,EAClB,iBAAyB,CAAC;IAE1B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC9C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,IACE,cAAc;QACd,CAAC,MAAM,KAAK,GAAG;YACb,CAAC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;YAC7C,MAAM,KAAK,GAAG,CAAC;QACjB,cAAc,GAAG,UAAU,EAC3B,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE7B,+DAA+D;QAC/D,+EAA+E;QAC/E,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;YACvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAExC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexport const redirectPolicyName = \"redirectPolicy\";\n\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectPolicyOptions {\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nexport function redirectPolicy(options: RedirectPolicyOptions = {}): PipelinePolicy {\n const { maxRetries = 20 } = options;\n return {\n name: redirectPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {\n const response = await next(request);\n return handleRedirect(next, response, maxRetries);\n },\n };\n}\n\nasync function handleRedirect(\n next: SendRequest,\n response: PipelineResponse,\n maxRetries: number,\n currentRetries: number = 0,\n): Promise<PipelineResponse> {\n const { request, status, headers } = response;\n const locationHeader = headers.get(\"location\");\n if (\n locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n currentRetries < maxRetries\n ) {\n const url = new URL(locationHeader, request.url);\n request.url = url.toString();\n\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n request.headers.delete(\"Content-Length\");\n delete request.body;\n }\n\n request.headers.delete(\"Authorization\");\n\n const res = await next(request);\n return handleRedirect(next, res, maxRetries, currentRetries + 1);\n }\n\n return response;\n}\n"]}
1
+ {"version":3,"file":"redirectPolicy.js","sourceRoot":"","sources":["../../../src/policies/redirectPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EACL,kBAAkB,IAAI,qBAAqB,EAC3C,cAAc,IAAI,iBAAiB,GACpC,MAAM,6CAA6C,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAaxD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,UAAiC,EAAE;IAChE,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\nimport {\n redirectPolicyName as tspRedirectPolicyName,\n redirectPolicy as tspRedirectPolicy,\n} from \"@typespec/ts-http-runtime/internal/policies\";\n\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexport const redirectPolicyName = tspRedirectPolicyName;\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectPolicyOptions {\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nexport function redirectPolicy(options: RedirectPolicyOptions = {}): PipelinePolicy {\n return tspRedirectPolicy(options);\n}\n"]}
@@ -1,6 +1,64 @@
1
1
  import type { PipelinePolicy } from "../pipeline.js";
2
2
  import { type AzureLogger } from "@azure/logger";
3
- import type { RetryStrategy } from "../retryStrategies/retryStrategy.js";
3
+ import type { PipelineResponse } from "../interfaces.js";
4
+ import type { RestError } from "../restError.js";
5
+ /**
6
+ * Information provided to the retry strategy about the current progress of the retry policy.
7
+ */
8
+ export interface RetryInformation {
9
+ /**
10
+ * A {@link PipelineResponse}, if the last retry attempt succeeded.
11
+ */
12
+ response?: PipelineResponse;
13
+ /**
14
+ * A {@link RestError}, if the last retry attempt failed.
15
+ */
16
+ responseError?: RestError;
17
+ /**
18
+ * Total number of retries so far.
19
+ */
20
+ retryCount: number;
21
+ }
22
+ /**
23
+ * Properties that can modify the behavior of the retry policy.
24
+ */
25
+ export interface RetryModifiers {
26
+ /**
27
+ * If true, allows skipping the current strategy from running on the retry policy.
28
+ */
29
+ skipStrategy?: boolean;
30
+ /**
31
+ * Indicates to retry against this URL.
32
+ */
33
+ redirectTo?: string;
34
+ /**
35
+ * Controls whether to retry in a given number of milliseconds.
36
+ * If provided, a new retry will be attempted.
37
+ */
38
+ retryAfterInMs?: number;
39
+ /**
40
+ * Indicates to throw this error instead of retrying.
41
+ */
42
+ errorToThrow?: RestError;
43
+ }
44
+ /**
45
+ * A retry strategy is intended to define whether to retry or not, and how to retry.
46
+ */
47
+ export interface RetryStrategy {
48
+ /**
49
+ * Name of the retry strategy. Used for logging.
50
+ */
51
+ name: string;
52
+ /**
53
+ * Logger. If it's not provided, a default logger for all retry strategies is used.
54
+ */
55
+ logger?: AzureLogger;
56
+ /**
57
+ * Function that determines how to proceed with the subsequent requests.
58
+ * @param state - Retry state
59
+ */
60
+ retry(state: RetryInformation): RetryModifiers;
61
+ }
4
62
  /**
5
63
  * Options to the {@link retryPolicy}
6
64
  */
@@ -1,105 +1,16 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
- import { delay } from "../util/helpers.js";
4
3
  import { createClientLogger } from "@azure/logger";
5
- import { AbortError } from "@azure/abort-controller";
6
4
  import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js";
5
+ import { retryPolicy as tspRetryPolicy, } from "@typespec/ts-http-runtime/internal/policies";
7
6
  const retryPolicyLogger = createClientLogger("core-rest-pipeline retryPolicy");
8
- /**
9
- * The programmatic identifier of the retryPolicy.
10
- */
11
- const retryPolicyName = "retryPolicy";
12
7
  /**
13
8
  * retryPolicy is a generic policy to enable retrying requests when certain conditions are met
14
9
  */
15
10
  export function retryPolicy(strategies, options = { maxRetries: DEFAULT_RETRY_POLICY_COUNT }) {
16
- const logger = options.logger || retryPolicyLogger;
17
- return {
18
- name: retryPolicyName,
19
- async sendRequest(request, next) {
20
- var _a, _b;
21
- let response;
22
- let responseError;
23
- let retryCount = -1;
24
- retryRequest: while (true) {
25
- retryCount += 1;
26
- response = undefined;
27
- responseError = undefined;
28
- try {
29
- logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);
30
- response = await next(request);
31
- logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);
32
- }
33
- catch (e) {
34
- logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);
35
- // RestErrors are valid targets for the retry strategies.
36
- // If none of the retry strategies can work with them, they will be thrown later in this policy.
37
- // If the received error is not a RestError, it is immediately thrown.
38
- responseError = e;
39
- if (!e || responseError.name !== "RestError") {
40
- throw e;
41
- }
42
- response = responseError.response;
43
- }
44
- if ((_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
45
- logger.error(`Retry ${retryCount}: Request aborted.`);
46
- const abortError = new AbortError();
47
- throw abortError;
48
- }
49
- if (retryCount >= ((_b = options.maxRetries) !== null && _b !== void 0 ? _b : DEFAULT_RETRY_POLICY_COUNT)) {
50
- logger.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`);
51
- if (responseError) {
52
- throw responseError;
53
- }
54
- else if (response) {
55
- return response;
56
- }
57
- else {
58
- throw new Error("Maximum retries reached with no response or error to throw");
59
- }
60
- }
61
- logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);
62
- strategiesLoop: for (const strategy of strategies) {
63
- const strategyLogger = strategy.logger || retryPolicyLogger;
64
- strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);
65
- const modifiers = strategy.retry({
66
- retryCount,
67
- response,
68
- responseError,
69
- });
70
- if (modifiers.skipStrategy) {
71
- strategyLogger.info(`Retry ${retryCount}: Skipped.`);
72
- continue strategiesLoop;
73
- }
74
- const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;
75
- if (errorToThrow) {
76
- strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`, errorToThrow);
77
- throw errorToThrow;
78
- }
79
- if (retryAfterInMs || retryAfterInMs === 0) {
80
- strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`);
81
- await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });
82
- continue retryRequest;
83
- }
84
- if (redirectTo) {
85
- strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`);
86
- request.url = redirectTo;
87
- continue retryRequest;
88
- }
89
- }
90
- if (responseError) {
91
- logger.info(`None of the retry strategies could work with the received error. Throwing it.`);
92
- throw responseError;
93
- }
94
- if (response) {
95
- logger.info(`None of the retry strategies could work with the received response. Returning it.`);
96
- return response;
97
- }
98
- // If all the retries skip and there's no response,
99
- // we're still in the retry loop, so a new request will be sent
100
- // until `maxRetries` is reached.
101
- }
102
- },
103
- };
11
+ // Cast is required since the TSP runtime retry strategy type is slightly different
12
+ // very deep down (using real AbortSignal vs. AbortSignalLike in RestError).
13
+ // In practice the difference doesn't actually matter.
14
+ return tspRetryPolicy(strategies, Object.assign({ logger: retryPolicyLogger }, options));
104
15
  }
105
16
  //# sourceMappingURL=retryPolicy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retryPolicy.js","sourceRoot":"","sources":["../../../src/policies/retryPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { delay } from \"../util/helpers.js\";\nimport { type AzureLogger, createClientLogger } from \"@azure/logger\";\nimport type { RetryStrategy } from \"../retryStrategies/retryStrategy.js\";\nimport type { RestError } from \"../restError.js\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n\n/**\n * Options to the {@link retryPolicy}\n */\nexport interface RetryPolicyOptions {\n /**\n * Maximum number of retries. If not specified, it will limit to 3 retries.\n */\n maxRetries?: number;\n /**\n * Logger. If it's not provided, a default logger is used.\n */\n logger?: AzureLogger;\n}\n\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nexport function retryPolicy(\n strategies: RetryStrategy[],\n options: RetryPolicyOptions = { maxRetries: DEFAULT_RETRY_POLICY_COUNT },\n): PipelinePolicy {\n const logger = options.logger || retryPolicyLogger;\n return {\n name: retryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {\n let response: PipelineResponse | undefined;\n let responseError: RestError | undefined;\n let retryCount = -1;\n\n retryRequest: while (true) {\n retryCount += 1;\n response = undefined;\n responseError = undefined;\n\n try {\n logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n response = await next(request);\n logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n } catch (e: any) {\n logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n\n // RestErrors are valid targets for the retry strategies.\n // If none of the retry strategies can work with them, they will be thrown later in this policy.\n // If the received error is not a RestError, it is immediately thrown.\n responseError = e as RestError;\n if (!e || responseError.name !== \"RestError\") {\n throw e;\n }\n\n response = responseError.response;\n }\n\n if (request.abortSignal?.aborted) {\n logger.error(`Retry ${retryCount}: Request aborted.`);\n const abortError = new AbortError();\n throw abortError;\n }\n\n if (retryCount >= (options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT)) {\n logger.info(\n `Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`,\n );\n if (responseError) {\n throw responseError;\n } else if (response) {\n return response;\n } else {\n throw new Error(\"Maximum retries reached with no response or error to throw\");\n }\n }\n\n logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n\n strategiesLoop: for (const strategy of strategies) {\n const strategyLogger = strategy.logger || retryPolicyLogger;\n strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n\n const modifiers = strategy.retry({\n retryCount,\n response,\n responseError,\n });\n\n if (modifiers.skipStrategy) {\n strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n continue strategiesLoop;\n }\n\n const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n\n if (errorToThrow) {\n strategyLogger.error(\n `Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`,\n errorToThrow,\n );\n throw errorToThrow;\n }\n\n if (retryAfterInMs || retryAfterInMs === 0) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`,\n );\n await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n continue retryRequest;\n }\n\n if (redirectTo) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`,\n );\n request.url = redirectTo;\n continue retryRequest;\n }\n }\n\n if (responseError) {\n logger.info(\n `None of the retry strategies could work with the received error. Throwing it.`,\n );\n throw responseError;\n }\n if (response) {\n logger.info(\n `None of the retry strategies could work with the received response. Returning it.`,\n );\n return response;\n }\n\n // If all the retries skip and there's no response,\n // we're still in the retry loop, so a new request will be sent\n // until `maxRetries` is reached.\n }\n },\n };\n}\n"]}
1
+ {"version":3,"file":"retryPolicy.js","sourceRoot":"","sources":["../../../src/policies/retryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAoB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EACL,WAAW,IAAI,cAAc,GAE9B,MAAM,6CAA6C,CAAC;AAIrD,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,gCAAgC,CAAC,CAAC;AA4E/E;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,UAA2B,EAC3B,UAA8B,EAAE,UAAU,EAAE,0BAA0B,EAAE;IAExE,mFAAmF;IACnF,4EAA4E;IAC5E,sDAAsD;IACtD,OAAO,cAAc,CAAC,UAAgC,kBACpD,MAAM,EAAE,iBAAiB,IACtB,OAAO,EACV,CAAC;AACL,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { type AzureLogger, createClientLogger } from \"@azure/logger\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\nimport {\n retryPolicy as tspRetryPolicy,\n type RetryStrategy as TspRetryStrategy,\n} from \"@typespec/ts-http-runtime/internal/policies\";\nimport type { PipelineResponse } from \"../interfaces.js\";\nimport type { RestError } from \"../restError.js\";\n\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n\n/**\n * Information provided to the retry strategy about the current progress of the retry policy.\n */\nexport interface RetryInformation {\n /**\n * A {@link PipelineResponse}, if the last retry attempt succeeded.\n */\n response?: PipelineResponse;\n /**\n * A {@link RestError}, if the last retry attempt failed.\n */\n responseError?: RestError;\n /**\n * Total number of retries so far.\n */\n retryCount: number;\n}\n\n/**\n * Properties that can modify the behavior of the retry policy.\n */\nexport interface RetryModifiers {\n /**\n * If true, allows skipping the current strategy from running on the retry policy.\n */\n skipStrategy?: boolean;\n /**\n * Indicates to retry against this URL.\n */\n redirectTo?: string;\n /**\n * Controls whether to retry in a given number of milliseconds.\n * If provided, a new retry will be attempted.\n */\n retryAfterInMs?: number;\n /**\n * Indicates to throw this error instead of retrying.\n */\n errorToThrow?: RestError;\n}\n\n/**\n * A retry strategy is intended to define whether to retry or not, and how to retry.\n */\nexport interface RetryStrategy {\n /**\n * Name of the retry strategy. Used for logging.\n */\n name: string;\n /**\n * Logger. If it's not provided, a default logger for all retry strategies is used.\n */\n logger?: AzureLogger;\n /**\n * Function that determines how to proceed with the subsequent requests.\n * @param state - Retry state\n */\n retry(state: RetryInformation): RetryModifiers;\n}\n\n/**\n * Options to the {@link retryPolicy}\n */\nexport interface RetryPolicyOptions {\n /**\n * Maximum number of retries. If not specified, it will limit to 3 retries.\n */\n maxRetries?: number;\n /**\n * Logger. If it's not provided, a default logger is used.\n */\n logger?: AzureLogger;\n}\n\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nexport function retryPolicy(\n strategies: RetryStrategy[],\n options: RetryPolicyOptions = { maxRetries: DEFAULT_RETRY_POLICY_COUNT },\n): PipelinePolicy {\n // Cast is required since the TSP runtime retry strategy type is slightly different\n // very deep down (using real AbortSignal vs. AbortSignalLike in RestError).\n // In practice the difference doesn't actually matter.\n return tspRetryPolicy(strategies as TspRetryStrategy[], {\n logger: retryPolicyLogger,\n ...options,\n });\n}\n"]}
@@ -1,12 +1,10 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
- import { exponentialRetryStrategy } from "../retryStrategies/exponentialRetryStrategy.js";
4
- import { retryPolicy } from "./retryPolicy.js";
5
- import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js";
3
+ import { systemErrorRetryPolicy as tspSystemErrorRetryPolicy, systemErrorRetryPolicyName as tspSystemErrorRetryPolicyName, } from "@typespec/ts-http-runtime/internal/policies";
6
4
  /**
7
5
  * Name of the {@link systemErrorRetryPolicy}
8
6
  */
9
- export const systemErrorRetryPolicyName = "systemErrorRetryPolicy";
7
+ export const systemErrorRetryPolicyName = tspSystemErrorRetryPolicyName;
10
8
  /**
11
9
  * A retry policy that specifically seeks to handle errors in the
12
10
  * underlying transport layer (e.g. DNS lookup failures) rather than
@@ -14,14 +12,6 @@ export const systemErrorRetryPolicyName = "systemErrorRetryPolicy";
14
12
  * @param options - Options that customize the policy.
15
13
  */
16
14
  export function systemErrorRetryPolicy(options = {}) {
17
- var _a;
18
- return {
19
- name: systemErrorRetryPolicyName,
20
- sendRequest: retryPolicy([
21
- exponentialRetryStrategy(Object.assign(Object.assign({}, options), { ignoreHttpStatusCodes: true })),
22
- ], {
23
- maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT,
24
- }).sendRequest,
25
- };
15
+ return tspSystemErrorRetryPolicy(options);
26
16
  }
27
17
  //# sourceMappingURL=systemErrorRetryPolicy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"systemErrorRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/systemErrorRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAyBnE;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAyC,EAAE;;IAE3C,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,WAAW,CACtB;YACE,wBAAwB,iCACnB,OAAO,KACV,qBAAqB,EAAE,IAAI,IAC3B;SACH,EACD;YACE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;SAC7D,CACF,CAAC,WAAW;KACd,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link systemErrorRetryPolicy}\n */\nexport const systemErrorRetryPolicyName = \"systemErrorRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface SystemErrorRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * A retry policy that specifically seeks to handle errors in the\n * underlying transport layer (e.g. DNS lookup failures) rather than\n * retryable error codes from the server itself.\n * @param options - Options that customize the policy.\n */\nexport function systemErrorRetryPolicy(\n options: SystemErrorRetryPolicyOptions = {},\n): PipelinePolicy {\n return {\n name: systemErrorRetryPolicyName,\n sendRequest: retryPolicy(\n [\n exponentialRetryStrategy({\n ...options,\n ignoreHttpStatusCodes: true,\n }),\n ],\n {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n },\n ).sendRequest,\n };\n}\n"]}
1
+ {"version":3,"file":"systemErrorRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/systemErrorRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EACL,sBAAsB,IAAI,yBAAyB,EACnD,0BAA0B,IAAI,6BAA6B,GAC5D,MAAM,6CAA6C,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,6BAA6B,CAAC;AAyBxE;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAyC,EAAE;IAE3C,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\nimport {\n systemErrorRetryPolicy as tspSystemErrorRetryPolicy,\n systemErrorRetryPolicyName as tspSystemErrorRetryPolicyName,\n} from \"@typespec/ts-http-runtime/internal/policies\";\n\n/**\n * Name of the {@link systemErrorRetryPolicy}\n */\nexport const systemErrorRetryPolicyName = tspSystemErrorRetryPolicyName;\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface SystemErrorRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * A retry policy that specifically seeks to handle errors in the\n * underlying transport layer (e.g. DNS lookup failures) rather than\n * retryable error codes from the server itself.\n * @param options - Options that customize the policy.\n */\nexport function systemErrorRetryPolicy(\n options: SystemErrorRetryPolicyOptions = {},\n): PipelinePolicy {\n return tspSystemErrorRetryPolicy(options);\n}\n"]}
@@ -1,12 +1,10 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
- import { throttlingRetryStrategy } from "../retryStrategies/throttlingRetryStrategy.js";
4
- import { retryPolicy } from "./retryPolicy.js";
5
- import { DEFAULT_RETRY_POLICY_COUNT } from "../constants.js";
3
+ import { throttlingRetryPolicyName as tspThrottlingRetryPolicyName, throttlingRetryPolicy as tspThrottlingRetryPolicy, } from "@typespec/ts-http-runtime/internal/policies";
6
4
  /**
7
5
  * Name of the {@link throttlingRetryPolicy}
8
6
  */
9
- export const throttlingRetryPolicyName = "throttlingRetryPolicy";
7
+ export const throttlingRetryPolicyName = tspThrottlingRetryPolicyName;
10
8
  /**
11
9
  * A policy that retries when the server sends a 429 response with a Retry-After header.
12
10
  *
@@ -18,12 +16,6 @@ export const throttlingRetryPolicyName = "throttlingRetryPolicy";
18
16
  * @param options - Options that configure retry logic.
19
17
  */
20
18
  export function throttlingRetryPolicy(options = {}) {
21
- var _a;
22
- return {
23
- name: throttlingRetryPolicyName,
24
- sendRequest: retryPolicy([throttlingRetryStrategy()], {
25
- maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT,
26
- }).sendRequest,
27
- };
19
+ return tspThrottlingRetryPolicy(options);
28
20
  }
29
21
  //# sourceMappingURL=throttlingRetryPolicy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"throttlingRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/throttlingRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAYjE;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAwC,EAAE;;IAC9E,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,WAAW,CAAC,CAAC,uBAAuB,EAAE,CAAC,EAAE;YACpD,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,0BAA0B;SAC7D,CAAC,CAAC,WAAW;KACf,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link throttlingRetryPolicy}\n */\nexport const throttlingRetryPolicyName = \"throttlingRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface ThrottlingRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy that retries when the server sends a 429 response with a Retry-After header.\n *\n * To learn more, please refer to\n * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,\n * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and\n * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n *\n * @param options - Options that configure retry logic.\n */\nexport function throttlingRetryPolicy(options: ThrottlingRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: throttlingRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy()], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n"]}
1
+ {"version":3,"file":"throttlingRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/throttlingRetryPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EACL,yBAAyB,IAAI,4BAA4B,EACzD,qBAAqB,IAAI,wBAAwB,GAClD,MAAM,6CAA6C,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAA4B,CAAC;AAYtE;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAwC,EAAE;IAC9E,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\nimport {\n throttlingRetryPolicyName as tspThrottlingRetryPolicyName,\n throttlingRetryPolicy as tspThrottlingRetryPolicy,\n} from \"@typespec/ts-http-runtime/internal/policies\";\n\n/**\n * Name of the {@link throttlingRetryPolicy}\n */\nexport const throttlingRetryPolicyName = tspThrottlingRetryPolicyName;\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface ThrottlingRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy that retries when the server sends a 429 response with a Retry-After header.\n *\n * To learn more, please refer to\n * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,\n * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and\n * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n *\n * @param options - Options that configure retry logic.\n */\nexport function throttlingRetryPolicy(options: ThrottlingRetryPolicyOptions = {}): PipelinePolicy {\n return tspThrottlingRetryPolicy(options);\n}\n"]}
@@ -1,22 +1,14 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
+ import { tlsPolicy as tspTlsPolicy, tlsPolicyName as tspTlsPolicyName, } from "@typespec/ts-http-runtime/internal/policies";
3
4
  /**
4
5
  * Name of the TLS Policy
5
6
  */
6
- export const tlsPolicyName = "tlsPolicy";
7
+ export const tlsPolicyName = tspTlsPolicyName;
7
8
  /**
8
9
  * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.
9
10
  */
10
11
  export function tlsPolicy(tlsSettings) {
11
- return {
12
- name: tlsPolicyName,
13
- sendRequest: async (req, next) => {
14
- // Users may define a request tlsSettings, honor those over the client level one
15
- if (!req.tlsSettings) {
16
- req.tlsSettings = tlsSettings;
17
- }
18
- return next(req);
19
- },
20
- };
12
+ return tspTlsPolicy(tlsSettings);
21
13
  }
22
14
  //# sourceMappingURL=tlsPolicy.js.map