@typespec/ts-http-runtime 0.3.4-alpha.20260302.3 → 0.3.4

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 (295) hide show
  1. package/dist/browser/client/sendRequest.d.ts +10 -1
  2. package/dist/browser/client/sendRequest.js +8 -2
  3. package/dist/browser/client/sendRequest.js.map +1 -1
  4. package/dist/browser/defaultHttpClient.d.ts +1 -1
  5. package/dist/browser/defaultHttpClient.js +1 -1
  6. package/dist/browser/defaultHttpClient.js.map +1 -0
  7. package/dist/browser/index.d.ts +2 -2
  8. package/dist/browser/index.js +0 -2
  9. package/dist/browser/index.js.map +1 -1
  10. package/dist/browser/logger/log.d.ts +1 -1
  11. package/dist/browser/logger/log.js +1 -1
  12. package/dist/browser/logger/log.js.map +1 -0
  13. package/dist/browser/pipelineRequest.d.ts +1 -1
  14. package/dist/browser/pipelineRequest.js.map +1 -1
  15. package/dist/browser/policies/decompressResponsePolicy.d.ts +3 -2
  16. package/dist/browser/policies/decompressResponsePolicy.js +1 -4
  17. package/dist/browser/policies/decompressResponsePolicy.js.map +1 -0
  18. package/dist/browser/policies/internal.d.ts +7 -7
  19. package/dist/browser/policies/internal.js +2 -2
  20. package/dist/browser/policies/internal.js.map +1 -1
  21. package/dist/browser/policies/proxyPolicy.common.d.ts +7 -3
  22. package/dist/browser/policies/proxyPolicy.common.js +2 -2
  23. package/dist/browser/policies/proxyPolicy.common.js.map +1 -1
  24. package/dist/browser/policies/proxyPolicy.d.ts +1 -1
  25. package/dist/browser/policies/proxyPolicy.js +1 -1
  26. package/dist/browser/policies/proxyPolicy.js.map +1 -0
  27. package/dist/browser/policies/redirectPolicy.d.ts +7 -0
  28. package/dist/browser/policies/redirectPolicy.js +13 -4
  29. package/dist/browser/policies/redirectPolicy.js.map +1 -1
  30. package/dist/browser/util/bytesEncoding.d.ts +1 -1
  31. package/dist/browser/util/bytesEncoding.js +1 -1
  32. package/dist/browser/util/bytesEncoding.js.map +1 -0
  33. package/dist/browser/util/concat.common.d.ts +1 -2
  34. package/dist/browser/util/concat.common.js.map +1 -1
  35. package/dist/browser/util/concat.d.ts +1 -1
  36. package/dist/browser/util/concat.js +1 -1
  37. package/dist/browser/util/concat.js.map +1 -0
  38. package/dist/browser/util/inspect.d.ts +1 -1
  39. package/dist/browser/util/inspect.js +1 -1
  40. package/dist/browser/util/inspect.js.map +1 -0
  41. package/dist/browser/util/sha256.d.ts +1 -1
  42. package/dist/browser/util/sha256.js +1 -1
  43. package/dist/browser/util/sha256.js.map +1 -0
  44. package/dist/browser/util/userAgentPlatform.d.ts +1 -1
  45. package/dist/browser/util/userAgentPlatform.js +1 -1
  46. package/dist/browser/util/userAgentPlatform.js.map +1 -0
  47. package/dist/browser/util/uuidUtils.d.ts +1 -1
  48. package/dist/browser/util/uuidUtils.js +1 -1
  49. package/dist/browser/util/uuidUtils.js.map +1 -0
  50. package/dist/commonjs/abort-controller/AbortError.js +30 -40
  51. package/dist/commonjs/abort-controller/AbortError.js.map +7 -1
  52. package/dist/commonjs/auth/credentials.js +36 -25
  53. package/dist/commonjs/auth/credentials.js.map +7 -1
  54. package/dist/commonjs/auth/oauth2Flows.js +15 -5
  55. package/dist/commonjs/auth/oauth2Flows.js.map +7 -1
  56. package/dist/commonjs/auth/schemes.js +15 -5
  57. package/dist/commonjs/auth/schemes.js.map +7 -1
  58. package/dist/commonjs/client/apiVersionPolicy.js +39 -25
  59. package/dist/commonjs/client/apiVersionPolicy.js.map +7 -1
  60. package/dist/commonjs/client/clientHelpers.js +62 -39
  61. package/dist/commonjs/client/clientHelpers.js.map +7 -1
  62. package/dist/commonjs/client/common.js +15 -5
  63. package/dist/commonjs/client/common.js.map +7 -1
  64. package/dist/commonjs/client/getClient.js +170 -82
  65. package/dist/commonjs/client/getClient.js.map +7 -1
  66. package/dist/commonjs/client/multipart.js +119 -110
  67. package/dist/commonjs/client/multipart.js.map +7 -1
  68. package/dist/commonjs/client/operationOptionHelpers.js +36 -21
  69. package/dist/commonjs/client/operationOptionHelpers.js.map +7 -1
  70. package/dist/commonjs/client/restError.js +44 -26
  71. package/dist/commonjs/client/restError.js.map +7 -1
  72. package/dist/commonjs/client/sendRequest.d.ts +10 -1
  73. package/dist/commonjs/client/sendRequest.js +150 -164
  74. package/dist/commonjs/client/sendRequest.js.map +7 -1
  75. package/dist/commonjs/client/urlHelpers.js +124 -131
  76. package/dist/commonjs/client/urlHelpers.js.map +7 -1
  77. package/dist/commonjs/constants.js +30 -8
  78. package/dist/commonjs/constants.js.map +7 -1
  79. package/dist/commonjs/createPipelineFromOptions.js +56 -45
  80. package/dist/commonjs/createPipelineFromOptions.js.map +7 -1
  81. package/dist/commonjs/defaultHttpClient.js +28 -11
  82. package/dist/commonjs/defaultHttpClient.js.map +7 -1
  83. package/dist/commonjs/fetchHttpClient.js +211 -256
  84. package/dist/commonjs/fetchHttpClient.js.map +7 -1
  85. package/dist/commonjs/httpHeaders.js +97 -82
  86. package/dist/commonjs/httpHeaders.js.map +7 -1
  87. package/dist/commonjs/index.d.ts +2 -2
  88. package/dist/commonjs/index.js +67 -36
  89. package/dist/commonjs/index.js.map +7 -1
  90. package/dist/commonjs/interfaces.js +15 -5
  91. package/dist/commonjs/interfaces.js.map +7 -1
  92. package/dist/commonjs/log.js +28 -8
  93. package/dist/commonjs/log.js.map +7 -1
  94. package/dist/commonjs/logger/debug.js +150 -155
  95. package/dist/commonjs/logger/debug.js.map +7 -1
  96. package/dist/commonjs/logger/internal.js +27 -8
  97. package/dist/commonjs/logger/internal.js.map +7 -1
  98. package/dist/commonjs/logger/log.common.js +39 -23
  99. package/dist/commonjs/logger/log.common.js.map +7 -1
  100. package/dist/commonjs/logger/log.js +40 -11
  101. package/dist/commonjs/logger/log.js.map +7 -1
  102. package/dist/commonjs/logger/logger.js +120 -110
  103. package/dist/commonjs/logger/logger.js.map +7 -1
  104. package/dist/commonjs/nodeHttpClient.js +313 -321
  105. package/dist/commonjs/nodeHttpClient.js.map +7 -1
  106. package/dist/commonjs/pipeline.js +190 -247
  107. package/dist/commonjs/pipeline.js.map +7 -1
  108. package/dist/commonjs/pipelineRequest.d.ts +1 -1
  109. package/dist/commonjs/pipelineRequest.js +69 -54
  110. package/dist/commonjs/pipelineRequest.js.map +7 -1
  111. package/dist/commonjs/policies/agentPolicy.js +38 -24
  112. package/dist/commonjs/policies/agentPolicy.js.map +7 -1
  113. package/dist/commonjs/policies/auth/apiKeyAuthenticationPolicy.js +45 -32
  114. package/dist/commonjs/policies/auth/apiKeyAuthenticationPolicy.js.map +7 -1
  115. package/dist/commonjs/policies/auth/basicAuthenticationPolicy.js +50 -32
  116. package/dist/commonjs/policies/auth/basicAuthenticationPolicy.js.map +7 -1
  117. package/dist/commonjs/policies/auth/bearerAuthenticationPolicy.js +47 -32
  118. package/dist/commonjs/policies/auth/bearerAuthenticationPolicy.js.map +7 -1
  119. package/dist/commonjs/policies/auth/checkInsecureConnection.js +47 -44
  120. package/dist/commonjs/policies/auth/checkInsecureConnection.js.map +7 -1
  121. package/dist/commonjs/policies/auth/oauth2AuthenticationPolicy.js +45 -32
  122. package/dist/commonjs/policies/auth/oauth2AuthenticationPolicy.js.map +7 -1
  123. package/dist/commonjs/policies/decompressResponsePolicy.js +38 -25
  124. package/dist/commonjs/policies/decompressResponsePolicy.js.map +7 -1
  125. package/dist/commonjs/policies/defaultRetryPolicy.js +39 -27
  126. package/dist/commonjs/policies/defaultRetryPolicy.js.map +7 -1
  127. package/dist/commonjs/policies/exponentialRetryPolicy.js +43 -26
  128. package/dist/commonjs/policies/exponentialRetryPolicy.js.map +7 -1
  129. package/dist/commonjs/policies/formDataPolicy.js +101 -90
  130. package/dist/commonjs/policies/formDataPolicy.js.map +7 -1
  131. package/dist/commonjs/policies/internal.d.ts +7 -7
  132. package/dist/commonjs/policies/internal.js +94 -48
  133. package/dist/commonjs/policies/internal.js.map +7 -1
  134. package/dist/commonjs/policies/logPolicy.js +49 -35
  135. package/dist/commonjs/policies/logPolicy.js.map +7 -1
  136. package/dist/commonjs/policies/multipartPolicy.js +117 -99
  137. package/dist/commonjs/policies/multipartPolicy.js.map +7 -1
  138. package/dist/commonjs/policies/proxyPolicy.common.d.ts +7 -3
  139. package/dist/commonjs/policies/proxyPolicy.common.js +38 -25
  140. package/dist/commonjs/policies/proxyPolicy.common.js.map +7 -1
  141. package/dist/commonjs/policies/proxyPolicy.js +160 -171
  142. package/dist/commonjs/policies/proxyPolicy.js.map +7 -1
  143. package/dist/commonjs/policies/redirectPolicy.d.ts +7 -0
  144. package/dist/commonjs/policies/redirectPolicy.js +62 -51
  145. package/dist/commonjs/policies/redirectPolicy.js.map +7 -1
  146. package/dist/commonjs/policies/retryPolicy.js +123 -105
  147. package/dist/commonjs/policies/retryPolicy.js.map +7 -1
  148. package/dist/commonjs/policies/systemErrorRetryPolicy.js +46 -31
  149. package/dist/commonjs/policies/systemErrorRetryPolicy.js.map +7 -1
  150. package/dist/commonjs/policies/throttlingRetryPolicy.js +38 -30
  151. package/dist/commonjs/policies/throttlingRetryPolicy.js.map +7 -1
  152. package/dist/commonjs/policies/tlsPolicy.js +38 -24
  153. package/dist/commonjs/policies/tlsPolicy.js.map +7 -1
  154. package/dist/commonjs/policies/userAgentPolicy.js +41 -28
  155. package/dist/commonjs/policies/userAgentPolicy.js.map +7 -1
  156. package/dist/commonjs/restError.js +93 -90
  157. package/dist/commonjs/restError.js.map +7 -1
  158. package/dist/commonjs/retryStrategies/exponentialRetryStrategy.js +63 -62
  159. package/dist/commonjs/retryStrategies/exponentialRetryStrategy.js.map +7 -1
  160. package/dist/commonjs/retryStrategies/retryStrategy.js +15 -5
  161. package/dist/commonjs/retryStrategies/retryStrategy.js.map +7 -1
  162. package/dist/commonjs/retryStrategies/throttlingRetryStrategy.js +58 -69
  163. package/dist/commonjs/retryStrategies/throttlingRetryStrategy.js.map +7 -1
  164. package/dist/commonjs/util/arrayBuffer.js +34 -21
  165. package/dist/commonjs/util/arrayBuffer.js.map +7 -1
  166. package/dist/commonjs/util/bytesEncoding.common.js +83 -100
  167. package/dist/commonjs/util/bytesEncoding.common.js.map +7 -1
  168. package/dist/commonjs/util/bytesEncoding.js +30 -21
  169. package/dist/commonjs/util/bytesEncoding.js.map +7 -1
  170. package/dist/commonjs/util/checkEnvironment.js +45 -44
  171. package/dist/commonjs/util/checkEnvironment.js.map +7 -1
  172. package/dist/commonjs/util/concat.common.d.ts +1 -2
  173. package/dist/commonjs/util/concat.common.js +51 -52
  174. package/dist/commonjs/util/concat.common.js.map +7 -1
  175. package/dist/commonjs/util/concat.js +70 -61
  176. package/dist/commonjs/util/concat.js.map +7 -1
  177. package/dist/commonjs/util/delay.js +31 -21
  178. package/dist/commonjs/util/delay.js.map +7 -1
  179. package/dist/commonjs/util/error.js +33 -17
  180. package/dist/commonjs/util/error.js.map +7 -1
  181. package/dist/commonjs/util/helpers.js +65 -57
  182. package/dist/commonjs/util/helpers.js.map +7 -1
  183. package/dist/commonjs/util/inspect.common.js +27 -7
  184. package/dist/commonjs/util/inspect.common.js.map +7 -1
  185. package/dist/commonjs/util/inspect.js +28 -8
  186. package/dist/commonjs/util/inspect.js.map +7 -1
  187. package/dist/commonjs/util/internal.js +67 -32
  188. package/dist/commonjs/util/internal.js.map +7 -1
  189. package/dist/commonjs/util/object.js +27 -15
  190. package/dist/commonjs/util/object.js.map +7 -1
  191. package/dist/commonjs/util/random.js +30 -22
  192. package/dist/commonjs/util/random.js.map +7 -1
  193. package/dist/commonjs/util/sanitizer.js +157 -148
  194. package/dist/commonjs/util/sanitizer.js.map +7 -1
  195. package/dist/commonjs/util/sha256.common.js +61 -45
  196. package/dist/commonjs/util/sha256.common.js.map +7 -1
  197. package/dist/commonjs/util/sha256.js +32 -22
  198. package/dist/commonjs/util/sha256.js.map +7 -1
  199. package/dist/commonjs/util/typeGuards.js +41 -21
  200. package/dist/commonjs/util/typeGuards.js.map +7 -1
  201. package/dist/commonjs/util/userAgent.js +43 -28
  202. package/dist/commonjs/util/userAgent.js.map +7 -1
  203. package/dist/commonjs/util/userAgentPlatform.js +51 -29
  204. package/dist/commonjs/util/userAgentPlatform.js.map +7 -1
  205. package/dist/commonjs/util/uuidUtils.common.js +43 -39
  206. package/dist/commonjs/util/uuidUtils.common.js.map +7 -1
  207. package/dist/commonjs/util/uuidUtils.js +27 -12
  208. package/dist/commonjs/util/uuidUtils.js.map +7 -1
  209. package/dist/commonjs/xhrHttpClient.js +171 -163
  210. package/dist/commonjs/xhrHttpClient.js.map +7 -1
  211. package/dist/esm/client/sendRequest.d.ts +10 -1
  212. package/dist/esm/client/sendRequest.js +8 -2
  213. package/dist/esm/client/sendRequest.js.map +1 -1
  214. package/dist/esm/index.d.ts +2 -2
  215. package/dist/esm/index.js +0 -2
  216. package/dist/esm/index.js.map +1 -1
  217. package/dist/esm/pipelineRequest.d.ts +1 -1
  218. package/dist/esm/pipelineRequest.js.map +1 -1
  219. package/dist/esm/policies/internal.d.ts +7 -7
  220. package/dist/esm/policies/internal.js +2 -2
  221. package/dist/esm/policies/internal.js.map +1 -1
  222. package/dist/esm/policies/proxyPolicy.common.d.ts +7 -3
  223. package/dist/esm/policies/proxyPolicy.common.js +2 -2
  224. package/dist/esm/policies/proxyPolicy.common.js.map +1 -1
  225. package/dist/esm/policies/redirectPolicy.d.ts +7 -0
  226. package/dist/esm/policies/redirectPolicy.js +13 -4
  227. package/dist/esm/policies/redirectPolicy.js.map +1 -1
  228. package/dist/esm/util/concat.common.d.ts +1 -2
  229. package/dist/esm/util/concat.common.js.map +1 -1
  230. package/dist/react-native/client/sendRequest.d.ts +10 -1
  231. package/dist/react-native/client/sendRequest.js +8 -2
  232. package/dist/react-native/client/sendRequest.js.map +1 -1
  233. package/dist/react-native/defaultHttpClient.d.ts +1 -1
  234. package/dist/react-native/defaultHttpClient.js +1 -1
  235. package/dist/react-native/defaultHttpClient.js.map +1 -0
  236. package/dist/react-native/index.d.ts +2 -2
  237. package/dist/react-native/index.js +0 -2
  238. package/dist/react-native/index.js.map +1 -1
  239. package/dist/react-native/logger/log.d.ts +1 -1
  240. package/dist/react-native/logger/log.js +1 -1
  241. package/dist/react-native/logger/log.js.map +1 -0
  242. package/dist/react-native/pipelineRequest.d.ts +1 -1
  243. package/dist/react-native/pipelineRequest.js.map +1 -1
  244. package/dist/react-native/policies/internal.d.ts +7 -7
  245. package/dist/react-native/policies/internal.js +2 -2
  246. package/dist/react-native/policies/internal.js.map +1 -1
  247. package/dist/react-native/policies/proxyPolicy.common.d.ts +7 -3
  248. package/dist/react-native/policies/proxyPolicy.common.js +2 -2
  249. package/dist/react-native/policies/proxyPolicy.common.js.map +1 -1
  250. package/dist/react-native/policies/proxyPolicy.d.ts +1 -1
  251. package/dist/react-native/policies/proxyPolicy.js +1 -1
  252. package/dist/react-native/policies/proxyPolicy.js.map +1 -0
  253. package/dist/react-native/policies/redirectPolicy.d.ts +7 -0
  254. package/dist/react-native/policies/redirectPolicy.js +13 -4
  255. package/dist/react-native/policies/redirectPolicy.js.map +1 -1
  256. package/dist/react-native/util/bytesEncoding.d.ts +1 -1
  257. package/dist/react-native/util/bytesEncoding.js +1 -1
  258. package/dist/react-native/util/bytesEncoding.js.map +1 -0
  259. package/dist/react-native/util/concat.common.d.ts +1 -2
  260. package/dist/react-native/util/concat.common.js.map +1 -1
  261. package/dist/react-native/util/concat.d.ts +1 -1
  262. package/dist/react-native/util/concat.js +1 -1
  263. package/dist/react-native/util/concat.js.map +1 -0
  264. package/dist/react-native/util/inspect.d.ts +1 -1
  265. package/dist/react-native/util/inspect.js +1 -1
  266. package/dist/react-native/util/inspect.js.map +1 -0
  267. package/dist/react-native/util/sha256.d.ts +1 -1
  268. package/dist/react-native/util/sha256.js +1 -1
  269. package/dist/react-native/util/sha256.js.map +1 -0
  270. package/dist/react-native/util/userAgentPlatform.d.ts +1 -1
  271. package/dist/react-native/util/userAgentPlatform.js +1 -1
  272. package/dist/react-native/util/userAgentPlatform.js.map +1 -0
  273. package/dist/react-native/util/uuidUtils.d.ts +1 -1
  274. package/dist/react-native/util/uuidUtils.js +1 -1
  275. package/dist/react-native/util/uuidUtils.js.map +1 -0
  276. package/package.json +3 -23
  277. package/dist/browser/defaultHttpClient-browser.mjs.map +0 -1
  278. package/dist/browser/logger/log-browser.mjs.map +0 -1
  279. package/dist/browser/policies/decompressResponsePolicy-browser.mjs.map +0 -1
  280. package/dist/browser/policies/proxyPolicy-browser.mjs.map +0 -1
  281. package/dist/browser/util/bytesEncoding-browser.mjs.map +0 -1
  282. package/dist/browser/util/concat-browser.mjs.map +0 -1
  283. package/dist/browser/util/inspect-browser.mjs.map +0 -1
  284. package/dist/browser/util/sha256-browser.mjs.map +0 -1
  285. package/dist/browser/util/userAgentPlatform-browser.mjs.map +0 -1
  286. package/dist/browser/util/uuidUtils-browser.mjs.map +0 -1
  287. package/dist/react-native/defaultHttpClient-react-native.mjs.map +0 -1
  288. package/dist/react-native/logger/log-react-native.mjs.map +0 -1
  289. package/dist/react-native/policies/proxyPolicy-react-native.mjs.map +0 -1
  290. package/dist/react-native/util/bytesEncoding-react-native.mjs.map +0 -1
  291. package/dist/react-native/util/concat-react-native.mjs.map +0 -1
  292. package/dist/react-native/util/inspect-react-native.mjs.map +0 -1
  293. package/dist/react-native/util/sha256-react-native.mjs.map +0 -1
  294. package/dist/react-native/util/userAgentPlatform-react-native.mjs.map +0 -1
  295. package/dist/react-native/util/uuidUtils-react-native.mjs.map +0 -1
@@ -1,196 +1,185 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT License.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.globalNoProxyList = exports.proxyPolicyName = void 0;
6
- exports.loadNoProxy = loadNoProxy;
7
- exports.getDefaultProxySettings = getDefaultProxySettings;
8
- exports.proxyPolicy = proxyPolicy;
9
- const https_proxy_agent_1 = require("https-proxy-agent");
10
- const http_proxy_agent_1 = require("http-proxy-agent");
11
- const log_js_1 = require("../log.js");
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var proxyPolicy_exports = {};
19
+ __export(proxyPolicy_exports, {
20
+ getDefaultProxySettings: () => getDefaultProxySettings,
21
+ globalNoProxyList: () => globalNoProxyList,
22
+ loadNoProxy: () => loadNoProxy,
23
+ proxyPolicy: () => proxyPolicy,
24
+ proxyPolicyName: () => proxyPolicyName
25
+ });
26
+ module.exports = __toCommonJS(proxyPolicy_exports);
27
+ var import_https_proxy_agent = require("https-proxy-agent");
28
+ var import_http_proxy_agent = require("http-proxy-agent");
29
+ var import_log = require("../log.js");
12
30
  const HTTPS_PROXY = "HTTPS_PROXY";
13
31
  const HTTP_PROXY = "HTTP_PROXY";
14
32
  const ALL_PROXY = "ALL_PROXY";
15
33
  const NO_PROXY = "NO_PROXY";
16
- /**
17
- * The programmatic identifier of the proxyPolicy.
18
- */
19
- exports.proxyPolicyName = "proxyPolicy";
20
- /**
21
- * Stores the patterns specified in NO_PROXY environment variable.
22
- * @internal
23
- */
24
- exports.globalNoProxyList = [];
34
+ const proxyPolicyName = "proxyPolicy";
35
+ const globalNoProxyList = [];
25
36
  let noProxyListLoaded = false;
26
- /** A cache of whether a host should bypass the proxy. */
27
- const globalBypassedMap = new Map();
37
+ const globalBypassedMap = /* @__PURE__ */ new Map();
28
38
  function getEnvironmentValue(name) {
29
- if (process.env[name]) {
30
- return process.env[name];
31
- }
32
- else if (process.env[name.toLowerCase()]) {
33
- return process.env[name.toLowerCase()];
34
- }
35
- return undefined;
39
+ if (process.env[name]) {
40
+ return process.env[name];
41
+ } else if (process.env[name.toLowerCase()]) {
42
+ return process.env[name.toLowerCase()];
43
+ }
44
+ return void 0;
36
45
  }
37
46
  function loadEnvironmentProxyValue() {
38
- if (!process) {
39
- return undefined;
40
- }
41
- const httpsProxy = getEnvironmentValue(HTTPS_PROXY);
42
- const allProxy = getEnvironmentValue(ALL_PROXY);
43
- const httpProxy = getEnvironmentValue(HTTP_PROXY);
44
- return httpsProxy || allProxy || httpProxy;
47
+ if (!process) {
48
+ return void 0;
49
+ }
50
+ const httpsProxy = getEnvironmentValue(HTTPS_PROXY);
51
+ const allProxy = getEnvironmentValue(ALL_PROXY);
52
+ const httpProxy = getEnvironmentValue(HTTP_PROXY);
53
+ return httpsProxy || allProxy || httpProxy;
45
54
  }
46
- /**
47
- * Check whether the host of a given `uri` matches any pattern in the no proxy list.
48
- * If there's a match, any request sent to the same host shouldn't have the proxy settings set.
49
- * 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
50
- */
51
55
  function isBypassed(uri, noProxyList, bypassedMap) {
52
- if (noProxyList.length === 0) {
53
- return false;
54
- }
55
- const host = new URL(uri).hostname;
56
- if (bypassedMap?.has(host)) {
57
- return bypassedMap.get(host);
58
- }
59
- let isBypassedFlag = false;
60
- for (const pattern of noProxyList) {
61
- if (pattern[0] === ".") {
62
- // This should match either domain it self or any subdomain or host
63
- // .foo.com will match foo.com it self or *.foo.com
64
- if (host.endsWith(pattern)) {
65
- isBypassedFlag = true;
66
- }
67
- else {
68
- if (host.length === pattern.length - 1 && host === pattern.slice(1)) {
69
- isBypassedFlag = true;
70
- }
71
- }
72
- }
73
- else {
74
- if (host === pattern) {
75
- isBypassedFlag = true;
76
- }
56
+ if (noProxyList.length === 0) {
57
+ return false;
58
+ }
59
+ const host = new URL(uri).hostname;
60
+ if (bypassedMap?.has(host)) {
61
+ return bypassedMap.get(host);
62
+ }
63
+ let isBypassedFlag = false;
64
+ for (const pattern of noProxyList) {
65
+ if (pattern[0] === ".") {
66
+ if (host.endsWith(pattern)) {
67
+ isBypassedFlag = true;
68
+ } else {
69
+ if (host.length === pattern.length - 1 && host === pattern.slice(1)) {
70
+ isBypassedFlag = true;
77
71
  }
78
- }
79
- bypassedMap?.set(host, isBypassedFlag);
80
- return isBypassedFlag;
72
+ }
73
+ } else {
74
+ if (host === pattern) {
75
+ isBypassedFlag = true;
76
+ }
77
+ }
78
+ }
79
+ bypassedMap?.set(host, isBypassedFlag);
80
+ return isBypassedFlag;
81
81
  }
82
82
  function loadNoProxy() {
83
- const noProxy = getEnvironmentValue(NO_PROXY);
84
- noProxyListLoaded = true;
85
- if (noProxy) {
86
- return noProxy
87
- .split(",")
88
- .map((item) => item.trim())
89
- .filter((item) => item.length);
90
- }
91
- return [];
83
+ const noProxy = getEnvironmentValue(NO_PROXY);
84
+ noProxyListLoaded = true;
85
+ if (noProxy) {
86
+ return noProxy.split(",").map((item) => item.trim()).filter((item) => item.length);
87
+ }
88
+ return [];
92
89
  }
93
- /**
94
- * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.
95
- * If no argument is given, it attempts to parse a proxy URL from the environment
96
- * variables `HTTPS_PROXY` or `HTTP_PROXY`.
97
- * @param proxyUrl - The url of the proxy to use. May contain authentication information.
98
- * @deprecated - Internally this method is no longer necessary when setting proxy information.
99
- */
100
90
  function getDefaultProxySettings(proxyUrl) {
91
+ if (!proxyUrl) {
92
+ proxyUrl = loadEnvironmentProxyValue();
101
93
  if (!proxyUrl) {
102
- proxyUrl = loadEnvironmentProxyValue();
103
- if (!proxyUrl) {
104
- return undefined;
105
- }
106
- }
107
- const parsedUrl = new URL(proxyUrl);
108
- const schema = parsedUrl.protocol ? parsedUrl.protocol + "//" : "";
109
- return {
110
- host: schema + parsedUrl.hostname,
111
- port: Number.parseInt(parsedUrl.port || "80"),
112
- username: parsedUrl.username,
113
- password: parsedUrl.password,
114
- };
94
+ return void 0;
95
+ }
96
+ }
97
+ const parsedUrl = new URL(proxyUrl);
98
+ const schema = parsedUrl.protocol ? parsedUrl.protocol + "//" : "";
99
+ return {
100
+ host: schema + parsedUrl.hostname,
101
+ port: Number.parseInt(parsedUrl.port || "80"),
102
+ username: parsedUrl.username,
103
+ password: parsedUrl.password
104
+ };
115
105
  }
116
- /**
117
- * This method attempts to parse a proxy URL from the environment
118
- * variables `HTTPS_PROXY` or `HTTP_PROXY`.
119
- */
120
106
  function getDefaultProxySettingsInternal() {
121
- const envProxy = loadEnvironmentProxyValue();
122
- return envProxy ? new URL(envProxy) : undefined;
107
+ const envProxy = loadEnvironmentProxyValue();
108
+ return envProxy ? new URL(envProxy) : void 0;
123
109
  }
124
110
  function getUrlFromProxySettings(settings) {
125
- let parsedProxyUrl;
126
- try {
127
- parsedProxyUrl = new URL(settings.host);
128
- }
129
- catch {
130
- throw new Error(`Expecting a valid host string in proxy settings, but found "${settings.host}".`);
131
- }
132
- parsedProxyUrl.port = String(settings.port);
133
- if (settings.username) {
134
- parsedProxyUrl.username = settings.username;
135
- }
136
- if (settings.password) {
137
- parsedProxyUrl.password = settings.password;
138
- }
139
- return parsedProxyUrl;
111
+ let parsedProxyUrl;
112
+ try {
113
+ parsedProxyUrl = new URL(settings.host);
114
+ } catch {
115
+ throw new Error(
116
+ `Expecting a valid host string in proxy settings, but found "${settings.host}".`
117
+ );
118
+ }
119
+ parsedProxyUrl.port = String(settings.port);
120
+ if (settings.username) {
121
+ parsedProxyUrl.username = settings.username;
122
+ }
123
+ if (settings.password) {
124
+ parsedProxyUrl.password = settings.password;
125
+ }
126
+ return parsedProxyUrl;
140
127
  }
141
128
  function setProxyAgentOnRequest(request, cachedAgents, proxyUrl) {
142
- // Custom Agent should take precedence so if one is present
143
- // we should skip to avoid overwriting it.
144
- if (request.agent) {
145
- return;
146
- }
147
- const url = new URL(request.url);
148
- const isInsecure = url.protocol !== "https:";
149
- if (request.tlsSettings) {
150
- log_js_1.logger.warning("TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.");
151
- }
152
- const headers = request.headers.toJSON();
153
- if (isInsecure) {
154
- if (!cachedAgents.httpProxyAgent) {
155
- cachedAgents.httpProxyAgent = new http_proxy_agent_1.HttpProxyAgent(proxyUrl, { headers });
156
- }
157
- request.agent = cachedAgents.httpProxyAgent;
158
- }
159
- else {
160
- if (!cachedAgents.httpsProxyAgent) {
161
- cachedAgents.httpsProxyAgent = new https_proxy_agent_1.HttpsProxyAgent(proxyUrl, { headers });
162
- }
163
- request.agent = cachedAgents.httpsProxyAgent;
164
- }
129
+ if (request.agent) {
130
+ return;
131
+ }
132
+ const url = new URL(request.url);
133
+ const isInsecure = url.protocol !== "https:";
134
+ if (request.tlsSettings) {
135
+ import_log.logger.warning(
136
+ "TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored."
137
+ );
138
+ }
139
+ const headers = request.headers.toJSON();
140
+ if (isInsecure) {
141
+ if (!cachedAgents.httpProxyAgent) {
142
+ cachedAgents.httpProxyAgent = new import_http_proxy_agent.HttpProxyAgent(proxyUrl, { headers });
143
+ }
144
+ request.agent = cachedAgents.httpProxyAgent;
145
+ } else {
146
+ if (!cachedAgents.httpsProxyAgent) {
147
+ cachedAgents.httpsProxyAgent = new import_https_proxy_agent.HttpsProxyAgent(proxyUrl, { headers });
148
+ }
149
+ request.agent = cachedAgents.httpsProxyAgent;
150
+ }
165
151
  }
166
- /**
167
- * A policy that allows one to apply proxy settings to all requests.
168
- * If not passed static settings, they will be retrieved from the HTTPS_PROXY
169
- * or HTTP_PROXY environment variables.
170
- * @param proxySettings - ProxySettings to use on each request.
171
- * @param options - additional settings, for example, custom NO_PROXY patterns
172
- */
173
152
  function proxyPolicy(proxySettings, options) {
174
- if (!noProxyListLoaded) {
175
- exports.globalNoProxyList.push(...loadNoProxy());
176
- }
177
- const defaultProxy = proxySettings
178
- ? getUrlFromProxySettings(proxySettings)
179
- : getDefaultProxySettingsInternal();
180
- const cachedAgents = {};
181
- return {
182
- name: exports.proxyPolicyName,
183
- async sendRequest(request, next) {
184
- if (!request.proxySettings &&
185
- defaultProxy &&
186
- !isBypassed(request.url, options?.customNoProxyList ?? exports.globalNoProxyList, options?.customNoProxyList ? undefined : globalBypassedMap)) {
187
- setProxyAgentOnRequest(request, cachedAgents, defaultProxy);
188
- }
189
- else if (request.proxySettings) {
190
- setProxyAgentOnRequest(request, cachedAgents, getUrlFromProxySettings(request.proxySettings));
191
- }
192
- return next(request);
193
- },
194
- };
153
+ if (!noProxyListLoaded) {
154
+ globalNoProxyList.push(...loadNoProxy());
155
+ }
156
+ const defaultProxy = proxySettings ? getUrlFromProxySettings(proxySettings) : getDefaultProxySettingsInternal();
157
+ const cachedAgents = {};
158
+ return {
159
+ name: proxyPolicyName,
160
+ async sendRequest(request, next) {
161
+ if (!request.proxySettings && defaultProxy && !isBypassed(
162
+ request.url,
163
+ options?.customNoProxyList ?? globalNoProxyList,
164
+ options?.customNoProxyList ? void 0 : globalBypassedMap
165
+ )) {
166
+ setProxyAgentOnRequest(request, cachedAgents, defaultProxy);
167
+ } else if (request.proxySettings) {
168
+ setProxyAgentOnRequest(
169
+ request,
170
+ cachedAgents,
171
+ getUrlFromProxySettings(request.proxySettings)
172
+ );
173
+ }
174
+ return next(request);
175
+ }
176
+ };
195
177
  }
196
- //# sourceMappingURL=proxyPolicy.js.map
178
+ // Annotate the CommonJS export names for ESM import in node:
179
+ 0 && (module.exports = {
180
+ getDefaultProxySettings,
181
+ globalNoProxyList,
182
+ loadNoProxy,
183
+ proxyPolicy,
184
+ proxyPolicyName
185
+ });
@@ -1 +1,7 @@
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
+ {
2
+ "version": 3,
3
+ "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/policies/proxyPolicy.ts"],
4
+ "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"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -12,6 +12,13 @@ export interface RedirectPolicyOptions {
12
12
  * failing. Defaults to 20.
13
13
  */
14
14
  maxRetries?: number;
15
+ /**
16
+ * Whether to follow redirects to a different origin (scheme + host + port).
17
+ * When false (the default), cross-origin redirects are not followed and the
18
+ * redirect response is returned directly to the caller.
19
+ * Defaults to false.
20
+ */
21
+ allowCrossOriginRedirects?: boolean;
15
22
  }
16
23
  /**
17
24
  * A policy to follow Location headers from the server in order
@@ -1,56 +1,67 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT License.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.redirectPolicyName = void 0;
6
- exports.redirectPolicy = redirectPolicy;
7
- /**
8
- * The programmatic identifier of the redirectPolicy.
9
- */
10
- exports.redirectPolicyName = "redirectPolicy";
11
- /**
12
- * Methods that are allowed to follow redirects 301 and 302
13
- */
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var redirectPolicy_exports = {};
19
+ __export(redirectPolicy_exports, {
20
+ redirectPolicy: () => redirectPolicy,
21
+ redirectPolicyName: () => redirectPolicyName
22
+ });
23
+ module.exports = __toCommonJS(redirectPolicy_exports);
24
+ var import_log = require("../log.js");
25
+ const redirectPolicyName = "redirectPolicy";
14
26
  const allowedRedirect = ["GET", "HEAD"];
15
- /**
16
- * A policy to follow Location headers from the server in order
17
- * to support server-side redirection.
18
- * In the browser, this policy is not used.
19
- * @param options - Options to control policy behavior.
20
- */
21
27
  function redirectPolicy(options = {}) {
22
- const { maxRetries = 20 } = options;
23
- return {
24
- name: exports.redirectPolicyName,
25
- async sendRequest(request, next) {
26
- const response = await next(request);
27
- return handleRedirect(next, response, maxRetries);
28
- },
29
- };
28
+ const { maxRetries = 20, allowCrossOriginRedirects = false } = options;
29
+ return {
30
+ name: redirectPolicyName,
31
+ async sendRequest(request, next) {
32
+ const response = await next(request);
33
+ return handleRedirect(next, response, maxRetries, allowCrossOriginRedirects);
34
+ }
35
+ };
30
36
  }
31
- async function handleRedirect(next, response, maxRetries, currentRetries = 0) {
32
- const { request, status, headers } = response;
33
- const locationHeader = headers.get("location");
34
- if (locationHeader &&
35
- (status === 300 ||
36
- (status === 301 && allowedRedirect.includes(request.method)) ||
37
- (status === 302 && allowedRedirect.includes(request.method)) ||
38
- (status === 303 && request.method === "POST") ||
39
- status === 307) &&
40
- currentRetries < maxRetries) {
41
- const url = new URL(locationHeader, request.url);
42
- request.url = url.toString();
43
- // POST request with Status code 303 should be converted into a
44
- // redirected GET request if the redirect url is present in the location header
45
- if (status === 303) {
46
- request.method = "GET";
47
- request.headers.delete("Content-Length");
48
- delete request.body;
49
- }
50
- request.headers.delete("Authorization");
51
- const res = await next(request);
52
- return handleRedirect(next, res, maxRetries, currentRetries + 1);
37
+ async function handleRedirect(next, response, maxRetries, allowCrossOriginRedirects, currentRetries = 0) {
38
+ const { request, status, headers } = response;
39
+ const locationHeader = headers.get("location");
40
+ if (locationHeader && (status === 300 || status === 301 && allowedRedirect.includes(request.method) || status === 302 && allowedRedirect.includes(request.method) || status === 303 && request.method === "POST" || status === 307) && currentRetries < maxRetries) {
41
+ const url = new URL(locationHeader, request.url);
42
+ if (!allowCrossOriginRedirects) {
43
+ const originalUrl = new URL(request.url);
44
+ if (url.origin !== originalUrl.origin) {
45
+ import_log.logger.verbose(
46
+ `Skipping cross-origin redirect from ${originalUrl.origin} to ${url.origin}.`
47
+ );
48
+ return response;
49
+ }
50
+ }
51
+ request.url = url.toString();
52
+ if (status === 303) {
53
+ request.method = "GET";
54
+ request.headers.delete("Content-Length");
55
+ delete request.body;
53
56
  }
54
- return response;
57
+ request.headers.delete("Authorization");
58
+ const res = await next(request);
59
+ return handleRedirect(next, res, maxRetries, allowCrossOriginRedirects, currentRetries + 1);
60
+ }
61
+ return response;
55
62
  }
56
- //# sourceMappingURL=redirectPolicy.js.map
63
+ // Annotate the CommonJS export names for ESM import in node:
64
+ 0 && (module.exports = {
65
+ redirectPolicy,
66
+ redirectPolicyName
67
+ });
@@ -1 +1,7 @@
1
- {"version":3,"file":"redirectPolicy.js","sourceRoot":"","sources":["../../../src/policies/redirectPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAgClC,wCASC;AApCD;;GAEG;AACU,QAAA,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAaxC;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,UAAiC,EAAE;IAChE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACpC,OAAO;QACL,IAAI,EAAE,0BAAkB;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
+ {
2
+ "version": 3,
3
+ "sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/policies/redirectPolicy.ts"],
4
+ "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 { logger } from \"../log.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 * Whether to follow redirects to a different origin (scheme + host + port).\n * When false (the default), cross-origin redirects are not followed and the\n * redirect response is returned directly to the caller.\n * Defaults to false.\n */\n allowCrossOriginRedirects?: boolean;\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, allowCrossOriginRedirects = false } = 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, allowCrossOriginRedirects);\n },\n };\n}\n\nasync function handleRedirect(\n next: SendRequest,\n response: PipelineResponse,\n maxRetries: number,\n allowCrossOriginRedirects: boolean,\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\n // Only follow redirects to the same origin by default.\n if (!allowCrossOriginRedirects) {\n const originalUrl = new URL(request.url);\n if (url.origin !== originalUrl.origin) {\n logger.verbose(\n `Skipping cross-origin redirect from ${originalUrl.origin} to ${url.origin}.`,\n );\n return response;\n }\n }\n\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, allowCrossOriginRedirects, currentRetries + 1);\n }\n\n return response;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,iBAAuB;AAKhB,MAAM,qBAAqB;AAKlC,MAAM,kBAAkB,CAAC,OAAO,MAAM;AA0B/B,SAAS,eAAe,UAAiC,CAAC,GAAmB;AAClF,QAAM,EAAE,aAAa,IAAI,4BAA4B,MAAM,IAAI;AAC/D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,YAAY,SAA0B,MAA8C;AACxF,YAAM,WAAW,MAAM,KAAK,OAAO;AACnC,aAAO,eAAe,MAAM,UAAU,YAAY,yBAAyB;AAAA,IAC7E;AAAA,EACF;AACF;AAEA,eAAe,eACb,MACA,UACA,YACA,2BACA,iBAAyB,GACE;AAC3B,QAAM,EAAE,SAAS,QAAQ,QAAQ,IAAI;AACrC,QAAM,iBAAiB,QAAQ,IAAI,UAAU;AAC7C,MACE,mBACC,WAAW,OACT,WAAW,OAAO,gBAAgB,SAAS,QAAQ,MAAM,KACzD,WAAW,OAAO,gBAAgB,SAAS,QAAQ,MAAM,KACzD,WAAW,OAAO,QAAQ,WAAW,UACtC,WAAW,QACb,iBAAiB,YACjB;AACA,UAAM,MAAM,IAAI,IAAI,gBAAgB,QAAQ,GAAG;AAG/C,QAAI,CAAC,2BAA2B;AAC9B,YAAM,cAAc,IAAI,IAAI,QAAQ,GAAG;AACvC,UAAI,IAAI,WAAW,YAAY,QAAQ;AACrC,0BAAO;AAAA,UACL,uCAAuC,YAAY,MAAM,OAAO,IAAI,MAAM;AAAA,QAC5E;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,YAAQ,MAAM,IAAI,SAAS;AAI3B,QAAI,WAAW,KAAK;AAClB,cAAQ,SAAS;AACjB,cAAQ,QAAQ,OAAO,gBAAgB;AACvC,aAAO,QAAQ;AAAA,IACjB;AAEA,YAAQ,QAAQ,OAAO,eAAe;AAEtC,UAAM,MAAM,MAAM,KAAK,OAAO;AAC9B,WAAO,eAAe,MAAM,KAAK,YAAY,2BAA2B,iBAAiB,CAAC;AAAA,EAC5F;AAEA,SAAO;AACT;",
6
+ "names": []
7
+ }