@serenity-js/rest 3.33.1 → 3.34.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/lib/io/AxiosRequestConfigDefaults.d.ts +1 -0
  3. package/lib/io/AxiosRequestConfigDefaults.d.ts.map +1 -1
  4. package/lib/io/EnvironmentVariables.d.ts +9 -0
  5. package/lib/io/EnvironmentVariables.d.ts.map +1 -0
  6. package/lib/io/EnvironmentVariables.js +39 -0
  7. package/lib/io/EnvironmentVariables.js.map +1 -0
  8. package/lib/io/ProxyAgent.d.ts +1 -3
  9. package/lib/io/ProxyAgent.d.ts.map +1 -1
  10. package/lib/io/ProxyAgent.js +1 -2
  11. package/lib/io/ProxyAgent.js.map +1 -1
  12. package/lib/io/ProxyBypass.d.ts +6 -0
  13. package/lib/io/ProxyBypass.d.ts.map +1 -0
  14. package/lib/io/ProxyBypass.js +70 -0
  15. package/lib/io/ProxyBypass.js.map +1 -0
  16. package/lib/io/createAxios.d.ts.map +1 -1
  17. package/lib/io/createAxios.js +2 -2
  18. package/lib/io/createAxios.js.map +1 -1
  19. package/lib/io/proxy.d.ts +14 -0
  20. package/lib/io/proxy.d.ts.map +1 -0
  21. package/lib/io/proxy.js +104 -0
  22. package/lib/io/proxy.js.map +1 -0
  23. package/lib/screenplay/abilities/CallAnApi.d.ts +59 -15
  24. package/lib/screenplay/abilities/CallAnApi.d.ts.map +1 -1
  25. package/lib/screenplay/abilities/CallAnApi.js +74 -28
  26. package/lib/screenplay/abilities/CallAnApi.js.map +1 -1
  27. package/package.json +6 -7
  28. package/src/io/AxiosRequestConfigDefaults.ts +1 -0
  29. package/src/io/EnvironmentVariables.ts +39 -0
  30. package/src/io/ProxyAgent.ts +2 -5
  31. package/src/io/ProxyBypass.ts +83 -0
  32. package/src/io/createAxios.ts +1 -1
  33. package/src/io/proxy.ts +91 -0
  34. package/src/screenplay/abilities/CallAnApi.ts +74 -30
  35. package/lib/io/axiosProxyOverridesFor.d.ts +0 -11
  36. package/lib/io/axiosProxyOverridesFor.d.ts.map +0 -1
  37. package/lib/io/axiosProxyOverridesFor.js +0 -34
  38. package/lib/io/axiosProxyOverridesFor.js.map +0 -1
  39. package/lib/screenplay/abilities/proxy/ProxyAgent.d.ts +0 -54
  40. package/lib/screenplay/abilities/proxy/ProxyAgent.d.ts.map +0 -1
  41. package/lib/screenplay/abilities/proxy/ProxyAgent.js +0 -121
  42. package/lib/screenplay/abilities/proxy/ProxyAgent.js.map +0 -1
  43. package/lib/screenplay/abilities/proxy/axiosProxyOverridesFor.d.ts +0 -11
  44. package/lib/screenplay/abilities/proxy/axiosProxyOverridesFor.d.ts.map +0 -1
  45. package/lib/screenplay/abilities/proxy/axiosProxyOverridesFor.js +0 -34
  46. package/lib/screenplay/abilities/proxy/axiosProxyOverridesFor.js.map +0 -1
  47. package/lib/screenplay/abilities/proxy/createUrl.d.ts +0 -9
  48. package/lib/screenplay/abilities/proxy/createUrl.d.ts.map +0 -1
  49. package/lib/screenplay/abilities/proxy/createUrl.js +0 -29
  50. package/lib/screenplay/abilities/proxy/createUrl.js.map +0 -1
  51. package/lib/screenplay/abilities/proxy/index.d.ts +0 -2
  52. package/lib/screenplay/abilities/proxy/index.d.ts.map +0 -1
  53. package/lib/screenplay/abilities/proxy/index.js +0 -18
  54. package/lib/screenplay/abilities/proxy/index.js.map +0 -1
  55. package/src/io/axiosProxyOverridesFor.ts +0 -39
  56. package/src/screenplay/abilities/proxy/ProxyAgent.ts +0 -129
  57. package/src/screenplay/abilities/proxy/axiosProxyOverridesFor.ts +0 -39
  58. package/src/screenplay/abilities/proxy/createUrl.ts +0 -39
  59. package/src/screenplay/abilities/proxy/index.ts +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,33 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.34.1](https://github.com/serenity-js/serenity-js/compare/v3.34.0...v3.34.1) (2025-08-20)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **deps:** update dependency tiny-types to v1.24.1 ([14c705a](https://github.com/serenity-js/serenity-js/commit/14c705a83bd7b38dec34529fbb7875168dbc7f3c))
12
+
13
+
14
+
15
+
16
+
17
+ # [3.34.0](https://github.com/serenity-js/serenity-js/compare/v3.33.1...v3.34.0) (2025-08-01)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **deps:** update dependency typescript to v5.9.2 ([8a40483](https://github.com/serenity-js/serenity-js/commit/8a40483203534445d93c5be6f4d8a747055fd79e))
23
+
24
+
25
+ ### Features
26
+
27
+ * **rest:** support for bypassing proxy for selected urls ([ab1f41a](https://github.com/serenity-js/serenity-js/commit/ab1f41a98f121b4fc95e7a0fbea2c2393bba032d))
28
+
29
+
30
+
31
+
32
+
6
33
  ## [3.33.1](https://github.com/serenity-js/serenity-js/compare/v3.33.0...v3.33.1) (2025-07-28)
7
34
 
8
35
  **Note:** Version bump only for package @serenity-js/rest
@@ -7,6 +7,7 @@ export type AxiosRequestConfigProxyDefaults = {
7
7
  password: string;
8
8
  };
9
9
  protocol?: string;
10
+ bypass?: string;
10
11
  };
11
12
  export type AxiosRequestConfigDefaults<Data = any> = Omit<CreateAxiosDefaults<Data>, 'proxy'> & {
12
13
  proxy?: AxiosRequestConfigProxyDefaults | false;
@@ -1 +1 @@
1
- {"version":3,"file":"AxiosRequestConfigDefaults.d.ts","sourceRoot":"","sources":["../../src/io/AxiosRequestConfigDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,MAAM,MAAM,+BAA+B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAA;AAED,MAAM,MAAM,0BAA0B,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5F,KAAK,CAAC,EAAE,+BAA+B,GAAG,KAAK,CAAC;CACnD,CAAA"}
1
+ {"version":3,"file":"AxiosRequestConfigDefaults.d.ts","sourceRoot":"","sources":["../../src/io/AxiosRequestConfigDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,MAAM,MAAM,+BAA+B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAA;AAED,MAAM,MAAM,0BAA0B,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5F,KAAK,CAAC,EAAE,+BAA+B,GAAG,KAAK,CAAC;CACnD,CAAA"}
@@ -0,0 +1,9 @@
1
+ export declare class EnvironmentVariables {
2
+ private readonly env;
3
+ constructor(env?: NodeJS.ProcessEnv);
4
+ isSet(name: string): boolean;
5
+ get(name: string): string | undefined;
6
+ find(name: string): string | undefined;
7
+ findFirst(...names: string[]): string | undefined;
8
+ }
9
+ //# sourceMappingURL=EnvironmentVariables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentVariables.d.ts","sourceRoot":"","sources":["../../src/io/EnvironmentVariables.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAoB;IACjB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,GAAE,MAAM,CAAC,UAAwB;IAGjE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI5B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIrC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAgBtC,SAAS,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS;CAUpD"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnvironmentVariables = void 0;
4
+ class EnvironmentVariables {
5
+ env;
6
+ constructor(env = process.env) {
7
+ this.env = env;
8
+ }
9
+ isSet(name) {
10
+ return this.env[name] !== undefined;
11
+ }
12
+ get(name) {
13
+ return this.env[name];
14
+ }
15
+ find(name) {
16
+ const candidateNames = [
17
+ name,
18
+ name.toLocaleUpperCase(),
19
+ name.toLocaleLowerCase(),
20
+ ];
21
+ for (const variableName of candidateNames) {
22
+ if (this.isSet(variableName)) {
23
+ return this.get(variableName);
24
+ }
25
+ }
26
+ return undefined;
27
+ }
28
+ findFirst(...names) {
29
+ for (const name of names) {
30
+ const found = this.find(name);
31
+ if (found) {
32
+ return found;
33
+ }
34
+ }
35
+ return undefined;
36
+ }
37
+ }
38
+ exports.EnvironmentVariables = EnvironmentVariables;
39
+ //# sourceMappingURL=EnvironmentVariables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentVariables.js","sourceRoot":"","sources":["../../src/io/EnvironmentVariables.ts"],"names":[],"mappings":";;;AAAA,MAAa,oBAAoB;IACA;IAA7B,YAA6B,MAAyB,OAAO,CAAC,GAAG;QAApC,QAAG,GAAH,GAAG,CAAiC;IACjE,CAAC;IAED,KAAK,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IACxC,CAAC;IAED,GAAG,CAAC,IAAY;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,IAAY;QACb,MAAM,cAAc,GAAG;YACnB,IAAI;YACJ,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,iBAAiB,EAAE;SAC3B,CAAC;QAEF,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,GAAG,KAAe;QACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAtCD,oDAsCC"}
@@ -18,9 +18,7 @@ export type ProxyAgentOptions = HttpProxyAgentOptions<''> & HttpsProxyAgentOptio
18
18
  */
19
19
  httpsAgent?: http.Agent;
20
20
  /**
21
- * A callback for dynamic provision of proxy for url.
22
- * Defaults to standard proxy environment variables,
23
- * see https://www.npmjs.com/package/proxy-from-env for details
21
+ * A callback to dynamically determine the proxy to use for the given URL.
24
22
  */
25
23
  getProxyForUrl?: GetProxyForUrlCallback;
26
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyAgent.d.ts","sourceRoot":"","sources":["../../src/io/ProxyAgent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAYjF,KAAK,sBAAsB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GACzB,qBAAqB,CAAC,EAAE,CAAC,GACzB,sBAAsB,CAAC,EAAE,CAAC,GAAG;IACzB;;;;OAIG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,sBAAsB,CAAC;CAC3C,CAAC;AAEN;;;;;;;;;GASG;AACH,qBAAa,UAAW,SAAQ,KAAK;IAmBrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAjBzC,OAAO,CAAC,MAAM,CAAC,WAAW,CAGxB;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAGnB;IAEH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;gBAE3B,YAAY,EAAE,iBAAiB;IAO7C,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IA4BnG,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,eAAe;IAId,OAAO,IAAI,IAAI;CAI3B"}
1
+ {"version":3,"file":"ProxyAgent.d.ts","sourceRoot":"","sources":["../../src/io/ProxyAgent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAWjF,KAAK,sBAAsB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GACzB,qBAAqB,CAAC,EAAE,CAAC,GACzB,sBAAsB,CAAC,EAAE,CAAC,GAAG;IACzB;;;;OAIG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;IACxB;;OAEG;IACH,cAAc,CAAC,EAAE,sBAAsB,CAAC;CAC3C,CAAC;AAEN;;;;;;;;;GASG;AACH,qBAAa,UAAW,SAAQ,KAAK;IAmBrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAjBzC,OAAO,CAAC,MAAM,CAAC,WAAW,CAGxB;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAGnB;IAEH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;gBAE3B,YAAY,EAAE,iBAAiB;IAO7C,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IA4BnG,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,eAAe;IAId,OAAO,IAAI,IAAI;CAI3B"}
@@ -41,7 +41,6 @@ const http_proxy_agent_1 = require("http-proxy-agent");
41
41
  const https = __importStar(require("https"));
42
42
  const https_proxy_agent_1 = require("https-proxy-agent");
43
43
  const lru_cache_1 = require("lru-cache");
44
- const proxy_from_env_1 = require("proxy-from-env");
45
44
  const protocols = [
46
45
  ...http_proxy_agent_1.HttpProxyAgent.protocols,
47
46
  ];
@@ -76,7 +75,7 @@ class ProxyAgent extends agent_base_1.Agent {
76
75
  this.agentOptions = agentOptions;
77
76
  this.httpAgent = agentOptions?.httpAgent || new http.Agent(agentOptions);
78
77
  this.httpsAgent = agentOptions?.httpsAgent || new https.Agent(agentOptions);
79
- this.getProxyForUrl = agentOptions?.getProxyForUrl || proxy_from_env_1.getProxyForUrl;
78
+ this.getProxyForUrl = agentOptions?.getProxyForUrl;
80
79
  }
81
80
  async connect(request, options) {
82
81
  const { secureEndpoint } = options;
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyAgent.js","sourceRoot":"","sources":["../../src/io/ProxyAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProxyAgent.js","sourceRoot":"","sources":["../../src/io/ProxyAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { URL } from 'node:url';
2
+ export declare abstract class ProxyBypass {
3
+ static create(value: string | undefined): ProxyBypass;
4
+ abstract matches(url: URL): boolean;
5
+ }
6
+ //# sourceMappingURL=ProxyBypass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProxyBypass.d.ts","sourceRoot":"","sources":["../../src/io/ProxyBypass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAIpC,8BAAsB,WAAW;IAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW;IAYrD,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;CACtC"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProxyBypass = void 0;
4
+ const createUrl_1 = require("./createUrl");
5
+ class ProxyBypass {
6
+ static create(value) {
7
+ if (value === undefined || value === '') {
8
+ return new BypassNone();
9
+ }
10
+ if (value === '*') {
11
+ return new BypassAll();
12
+ }
13
+ return new BypassMatching(value);
14
+ }
15
+ }
16
+ exports.ProxyBypass = ProxyBypass;
17
+ class BypassNone extends ProxyBypass {
18
+ matches(url_) {
19
+ return false;
20
+ }
21
+ }
22
+ class BypassAll extends ProxyBypass {
23
+ matches(url_) {
24
+ return true;
25
+ }
26
+ }
27
+ class BypassHostnamePattern extends ProxyBypass {
28
+ hostname;
29
+ port;
30
+ static template = /^((?<hostname>[^:]+)(:(?<port>\d+))?)$/;
31
+ static defaultPorts = {
32
+ 'ftp:': '21',
33
+ 'gopher:': '70',
34
+ 'http:': '80',
35
+ 'https:': '443',
36
+ 'ws:': '80',
37
+ 'wss:': '443',
38
+ };
39
+ static create(patternConfig) {
40
+ const { hostname, port } = this.template.exec(patternConfig)?.groups || {};
41
+ return new BypassHostnamePattern(hostname, port);
42
+ }
43
+ constructor(hostname, port) {
44
+ super();
45
+ this.hostname = hostname;
46
+ this.port = port;
47
+ }
48
+ matches(url) {
49
+ const urlPort = url.port || BypassHostnamePattern.defaultPorts[url.protocol];
50
+ return url.hostname.endsWith(this.hostname)
51
+ && (this.port ? urlPort === this.port : true);
52
+ }
53
+ }
54
+ class BypassMatching extends ProxyBypass {
55
+ patterns;
56
+ constructor(value) {
57
+ super();
58
+ this.patterns = value.split(',').map(patternConfig => BypassHostnamePattern.create(patternConfig.trim()));
59
+ }
60
+ matches(url) {
61
+ const normalisedUrl = (0, createUrl_1.createUrl)(url);
62
+ for (const pattern of this.patterns) {
63
+ if (pattern.matches(normalisedUrl)) {
64
+ return true;
65
+ }
66
+ }
67
+ return false;
68
+ }
69
+ }
70
+ //# sourceMappingURL=ProxyBypass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProxyBypass.js","sourceRoot":"","sources":["../../src/io/ProxyBypass.ts"],"names":[],"mappings":";;;AAEA,2CAAwC;AAExC,MAAsB,WAAW;IAC7B,MAAM,CAAC,MAAM,CAAC,KAAyB;QACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACtC,OAAO,IAAI,UAAU,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO,IAAI,SAAS,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;CAGJ;AAdD,kCAcC;AAED,MAAM,UAAW,SAAQ,WAAW;IAChC,OAAO,CAAC,IAAS;QACb,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AAED,MAAM,SAAU,SAAQ,WAAW;IAC/B,OAAO,CAAC,IAAS;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,MAAM,qBAAsB,SAAQ,WAAW;IAiBN;IAAmC;IAhBhE,MAAM,CAAU,QAAQ,GAAG,wCAAwC,CAAC;IACpE,MAAM,CAAC,YAAY,GAAG;QAC1B,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,KAAK;KAChB,CAAC;IAEF,MAAM,CAAC,MAAM,CAAC,aAAqB;QAC/B,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;QAE3E,OAAO,IAAI,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,YAAqC,QAAgB,EAAmB,IAAwB;QAC5F,KAAK,EAAE,CAAC;QADyB,aAAQ,GAAR,QAAQ,CAAQ;QAAmB,SAAI,GAAJ,IAAI,CAAoB;IAEhG,CAAC;IAED,OAAO,CAAC,GAAQ;QACZ,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,qBAAqB,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAE5E,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;eACpC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;;AAGL,MAAM,cAAe,SAAQ,WAAW;IAEnB,QAAQ,CAA0B;IAEnD,YAAY,KAAa;QACrB,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9G,CAAC;IAED,OAAO,CAAC,GAAQ;QACZ,MAAM,aAAa,GAAG,IAAA,qBAAS,EAAC,GAAG,CAAC,CAAC;QAErC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"createAxios.d.ts","sourceRoot":"","sources":["../../src/io/createAxios.ts"],"names":[],"mappings":"AACA,OAAc,EAAS,KAAK,aAAa,EAA2B,MAAM,OAAO,CAAC;AAGlF,OAAO,KAAK,EAAE,0BAA0B,EAAmC,MAAM,8BAA8B,CAAC;AAEhH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,qBAAqB,GAAE,aAAa,GAAG,0BAA+B,GAAG,aAAa,CAoBjH"}
1
+ {"version":3,"file":"createAxios.d.ts","sourceRoot":"","sources":["../../src/io/createAxios.ts"],"names":[],"mappings":"AACA,OAAc,EAAS,KAAK,aAAa,EAA2B,MAAM,OAAO,CAAC;AAElF,OAAO,KAAK,EAAE,0BAA0B,EAAmC,MAAM,8BAA8B,CAAC;AAGhH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,qBAAqB,GAAE,aAAa,GAAG,0BAA+B,GAAG,aAAa,CAoBjH"}
@@ -36,7 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.createAxios = createAxios;
37
37
  const core_1 = require("@serenity-js/core");
38
38
  const axios_1 = __importStar(require("axios"));
39
- const axiosProxyOverridesFor_1 = require("./axiosProxyOverridesFor");
39
+ const proxy_1 = require("./proxy");
40
40
  /**
41
41
  * Creates an Axios instance with desired configuration and proxy support.
42
42
  *
@@ -53,7 +53,7 @@ function createAxios(axiosInstanceOrConfig = {}) {
53
53
  const proxyConfig = axiosInstanceGiven
54
54
  ? axiosInstanceOrConfig.defaults.proxy
55
55
  : axiosInstanceOrConfig.proxy;
56
- const proxyOverrides = (0, axiosProxyOverridesFor_1.axiosProxyOverridesFor)({
56
+ const proxyOverrides = (0, proxy_1.axiosProxyOverridesFor)({
57
57
  ...axiosInstance.defaults,
58
58
  proxy: proxyConfig || undefined,
59
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"createAxios.js","sourceRoot":"","sources":["../../src/io/createAxios.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,kCAoBC;AA/BD,4CAA6C;AAC7C,+CAAkF;AAElF,qEAAkE;AAGlE;;;;GAIG;AACH,SAAgB,WAAW,CAAC,wBAAoE,EAAE;IAC9F,MAAM,kBAAkB,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,kBAAkB;QACpC,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC;YACX,OAAO,EAAE,eAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE;YAChD,GAAG,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC;SAC1C,CAAC,CAAC;IAEP,MAAM,WAAW,GAAwD,kBAAkB;QACvF,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK;QACtC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC;IAElC,MAAM,cAAc,GAAG,IAAA,+CAAsB,EAAC;QAC1C,GAAG,aAAa,CAAC,QAAQ;QACzB,KAAK,EAAE,WAAW,IAAI,SAAS;KAClC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,eAAe,CAAC,qBAA0B;IAC/C,OAAO,qBAAqB;WACrB,CAAC,qBAAqB,YAAY,aAAK,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,aAAa,CAAa,aAA4B,EAAE,SAAmC;IAChG,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IAC3C,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAED,SAAS,IAAI,CAAsC,MAAS,EAAE,GAAM;IAChE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAC5C,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"createAxios.js","sourceRoot":"","sources":["../../src/io/createAxios.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,kCAoBC;AA/BD,4CAA6C;AAC7C,+CAAkF;AAGlF,mCAAiD;AAEjD;;;;GAIG;AACH,SAAgB,WAAW,CAAC,wBAAoE,EAAE;IAC9F,MAAM,kBAAkB,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,kBAAkB;QACpC,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC;YACX,OAAO,EAAE,eAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE;YAChD,GAAG,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC;SAC1C,CAAC,CAAC;IAEP,MAAM,WAAW,GAAwD,kBAAkB;QACvF,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK;QACtC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC;IAElC,MAAM,cAAc,GAAG,IAAA,8BAAsB,EAAC;QAC1C,GAAG,aAAa,CAAC,QAAQ;QACzB,KAAK,EAAE,WAAW,IAAI,SAAS;KAClC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,eAAe,CAAC,qBAA0B;IAC/C,OAAO,qBAAqB;WACrB,CAAC,qBAAqB,YAAY,aAAK,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,aAAa,CAAa,aAA4B,EAAE,SAAmC;IAChG,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IAC3C,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAED,SAAS,IAAI,CAAsC,MAAS,EAAE,GAAM;IAChE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAC5C,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type * as http from 'node:http';
2
+ import type { AxiosRequestConfigDefaults, AxiosRequestConfigProxyDefaults } from './AxiosRequestConfigDefaults';
3
+ import { EnvironmentVariables } from './EnvironmentVariables';
4
+ /**
5
+ * @param options
6
+ */
7
+ export declare function axiosProxyOverridesFor<Data = any>(options: AxiosRequestConfigDefaults<Data>): {
8
+ proxy: false;
9
+ httpAgent: http.Agent;
10
+ httpsAgent: http.Agent;
11
+ };
12
+ export declare function createGetProxyForUrlFromConfig(proxyOptions: AxiosRequestConfigProxyDefaults): (url: string) => string | undefined;
13
+ export declare function createGetProxyForUrlFromEnvironmentVariables(env: EnvironmentVariables): (url: string) => string | undefined;
14
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/io/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAC;AAKvC,OAAO,KAAK,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAEhH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,0BAA0B,CAAC,IAAI,CAAC,GAAG;IAC3F,KAAK,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;IAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAA;CAC9D,CAiBA;AAED,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,+BAA+B,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAYjI;AAED,wBAAgB,4CAA4C,CAAC,GAAG,EAAE,oBAAoB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAiB3H"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.axiosProxyOverridesFor = axiosProxyOverridesFor;
37
+ exports.createGetProxyForUrlFromConfig = createGetProxyForUrlFromConfig;
38
+ exports.createGetProxyForUrlFromEnvironmentVariables = createGetProxyForUrlFromEnvironmentVariables;
39
+ const process = __importStar(require("node:process"));
40
+ const tiny_types_1 = require("tiny-types");
41
+ const createUrl_1 = require("./createUrl");
42
+ const EnvironmentVariables_1 = require("./EnvironmentVariables");
43
+ const ProxyAgent_1 = require("./ProxyAgent");
44
+ const ProxyBypass_1 = require("./ProxyBypass");
45
+ /**
46
+ * @param options
47
+ */
48
+ function axiosProxyOverridesFor(options) {
49
+ const agent = new ProxyAgent_1.ProxyAgent({
50
+ httpAgent: options.httpAgent,
51
+ httpsAgent: options.httpsAgent,
52
+ // if there's a specific proxy override configured, use it
53
+ // if not - detect proxy automatically based on the env variables
54
+ getProxyForUrl: options.proxy
55
+ ? createGetProxyForUrlFromConfig(options.proxy)
56
+ : createGetProxyForUrlFromEnvironmentVariables(new EnvironmentVariables_1.EnvironmentVariables(process.env)),
57
+ });
58
+ return {
59
+ proxy: false,
60
+ httpAgent: agent,
61
+ httpsAgent: agent,
62
+ };
63
+ }
64
+ function createGetProxyForUrlFromConfig(proxyOptions) {
65
+ const proxyBypass = ProxyBypass_1.ProxyBypass.create(proxyOptions?.bypass);
66
+ return createGetProxyForUrl(proxyBypass, (url) => {
67
+ return (0, createUrl_1.createUrl)({
68
+ username: proxyOptions.auth?.username,
69
+ password: proxyOptions.auth?.password,
70
+ protocol: proxyOptions.protocol,
71
+ hostname: (0, tiny_types_1.ensure)('proxy.host', proxyOptions?.host, (0, tiny_types_1.isDefined)()),
72
+ port: proxyOptions.port ? Number(proxyOptions.port) : undefined,
73
+ }).toString();
74
+ });
75
+ }
76
+ function createGetProxyForUrlFromEnvironmentVariables(env) {
77
+ const proxyBypass = ProxyBypass_1.ProxyBypass.create(env.findFirst('npm_config_no_proxy', 'no_proxy'));
78
+ return createGetProxyForUrl(proxyBypass, (url) => {
79
+ const protocolName = url.protocol.replace(/:$/, '');
80
+ const proxyUrl = env.findFirst(`npm_config_${protocolName}_proxy`, `${protocolName}_proxy`, 'npm_config_proxy', 'all_proxy');
81
+ return proxyUrl || undefined;
82
+ });
83
+ }
84
+ function createGetProxyForUrl(bypass, getProxy) {
85
+ return function getProxyForUrl(urlValue) {
86
+ if (!isValidUrl(urlValue)) {
87
+ return undefined;
88
+ }
89
+ const url = new URL(urlValue);
90
+ return bypass.matches(url)
91
+ ? undefined
92
+ : getProxy(url);
93
+ };
94
+ }
95
+ function isValidUrl(url) {
96
+ try {
97
+ new URL(url);
98
+ return true;
99
+ }
100
+ catch {
101
+ return false;
102
+ }
103
+ }
104
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/io/proxy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,wDAmBC;AAED,wEAYC;AAED,oGAiBC;AAjED,sDAAwC;AAExC,2CAA+C;AAG/C,2CAAwC;AACxC,iEAA8D;AAC9D,6CAA0C;AAC1C,+CAA4C;AAE5C;;GAEG;AACH,SAAgB,sBAAsB,CAAa,OAAyC;IAGxF,MAAM,KAAK,GAAG,IAAI,uBAAU,CAAC;QACzB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAE9B,0DAA0D;QAC1D,iEAAiE;QACjE,cAAc,EAAE,OAAO,CAAC,KAAK;YACzB,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,KAAK,CAAC;YAC/C,CAAC,CAAC,4CAA4C,CAAC,IAAI,2CAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC5F,CAAC,CAAC;IAEH,OAAO;QACH,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,KAAK;KACpB,CAAC;AACN,CAAC;AAED,SAAgB,8BAA8B,CAAC,YAA6C;IACxF,MAAM,WAAW,GAAG,yBAAW,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAE7D,OAAO,oBAAoB,CAAC,WAAW,EAAE,CAAC,GAAQ,EAAU,EAAE;QAC1D,OAAO,IAAA,qBAAS,EAAC;YACb,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,QAAQ;YACrC,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,QAAQ;YACrC,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,QAAQ,EAAE,IAAA,mBAAM,EAAC,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,IAAA,sBAAS,GAAE,CAAC;YAC/D,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAClE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAgB,4CAA4C,CAAC,GAAyB;IAClF,MAAM,WAAW,GAAG,yBAAW,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAChD,qBAAqB,EACrB,UAAU,CACb,CAAC,CAAC;IAEH,OAAO,oBAAoB,CAAC,WAAW,EAAE,CAAC,GAAQ,EAAU,EAAE;QAC1D,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAC1B,cAAe,YAAa,QAAQ,EACpC,GAAI,YAAa,QAAQ,EACzB,kBAAkB,EAClB,WAAW,CACd,CAAC;QAEF,OAAO,QAAQ,IAAI,SAAS,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAmB,EAAE,QAA8B;IAC7E,OAAO,SAAS,cAAc,CAAC,QAAgB;QAC3C,IAAI,CAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE9B,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YACtB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC;AACN,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC3B,IAAI,CAAC;QACD,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC"}
@@ -7,12 +7,6 @@ import type { AxiosRequestConfigDefaults } from '../../io';
7
7
  * the [actor](https://serenity-js.org/api/core/class/Actor/) to [send](https://serenity-js.org/api/rest/class/Send/)
8
8
  * [HTTP requests](https://serenity-js.org/api/rest/class/HTTPRequest/) to HTTP APIs.
9
9
  *
10
- * `CallAnApi` uses [`proxy-from-env`](https://www.npmjs.com/package/proxy-from-env) and an approach
11
- * described in ["Node.js Axios behind corporate proxies"](https://janmolak.com/node-js-axios-behind-corporate-proxies-8b17a6f31f9d)
12
- * to automatically detect proxy server configuration based
13
- * on your [environment variables](https://www.npmjs.com/package/proxy-from-env#environment-variables).
14
- * You can override this configuration if needed.
15
- *
16
10
  * ## Configuring the ability to call an API
17
11
  *
18
12
  * The easiest way to configure the ability to `CallAnApi` is to provide the `baseURL` of your HTTP API,
@@ -33,6 +27,12 @@ import type { AxiosRequestConfigDefaults } from '../../io';
33
27
  * )
34
28
  * ```
35
29
  *
30
+ * Please note that the following Serenity/JS test runner adapters already provide the ability to `CallAnApi` as part of their default configuration,
31
+ * so you don't need to configure it yourself:
32
+ * - [Playwright Test](https://serenity-js.org/handbook/test-runners/playwright-test/)
33
+ * - [WebdriverIO](https://serenity-js.org/handbook/test-runners/webdriverio/)
34
+ * - [Protractor](https://serenity-js.org/handbook/test-runners/protractor/)
35
+ *
36
36
  * ### Resolving relative URLs
37
37
  *
38
38
  * Serenity/JS resolves request URLs using Node.js [WHATWG URL API](https://nodejs.org/api/url.html#new-urlinput-base).
@@ -91,12 +91,34 @@ import type { AxiosRequestConfigDefaults } from '../../io';
91
91
  * )
92
92
  * ```
93
93
  *
94
- * ### Working with proxy servers
94
+ * ## Working with proxy servers
95
+ *
96
+ * `CallAnApi` uses an approach described in ["Node.js Axios behind corporate proxies"](https://janmolak.com/node-js-axios-behind-corporate-proxies-8b17a6f31f9d)
97
+ * to automatically detect proxy server configuration based on your environment variables.
98
+ *
99
+ * You can override this default proxy detection mechanism by providing your own proxy configuration object.
100
+ *
101
+ * ### Automatic proxy support
102
+ *
103
+ * When the URL you're sending the request to uses the HTTP protocol, Serenity/JS will automatically detect your proxy configuration based on the following environment variables:
104
+ * - `npm_config_http_proxy`
105
+ * - `http_proxy` and `HTTP_PROXY`
106
+ * - `npm_config_proxy`
107
+ * - `all_proxy`
108
+ *
109
+ * Similarly, when the request target URL uses the HTTPS protocol, the following environment variables are used instead:
110
+ * - `npm_config_https_proxy`
111
+ * - `https_proxy` and `HTTPS_PROXY`
112
+ * - `npm_config_proxy`
113
+ * - `all_proxy`
95
114
  *
96
- * `CallAnApi` uses [`proxy-from-env`](https://www.npmjs.com/package/proxy-from-env) to automatically
97
- * detect proxy server configuration based on your [environment variables](https://www.npmjs.com/package/proxy-from-env#environment-variables).
115
+ * Proxy configuration is ignored for both HTTP and HTTPS target URLs matching the proxy bypass rules defined in the following environment variables:
116
+ * - `npm_config_no_proxy`
117
+ * - `no_proxy` and `NO_PROXY`
98
118
  *
99
- * This default behaviour can be overridden by providing explicit proxy configuration:
119
+ * ### Custom proxy configuration
120
+ *
121
+ * To override the automatic proxy detection based on the environment variables, provide a proxy configuration object:
100
122
  *
101
123
  * ```ts
102
124
  * import { actorCalled } from '@serenity-js/core'
@@ -111,10 +133,11 @@ import type { AxiosRequestConfigDefaults } from '../../io';
111
133
  * protocol: 'http',
112
134
  * host: 'proxy.example.org',
113
135
  * port: 9000,
114
- * auth: { // `auth` is optional
136
+ * auth: { // optional
115
137
  * username: 'proxy-username',
116
138
  * password: 'proxy-password',
117
- * }
139
+ * },
140
+ * bypass: 'status.example.org, internal.example.org' // optional
118
141
  * }
119
142
  * // ... other configuration options
120
143
  * })
@@ -125,10 +148,31 @@ import type { AxiosRequestConfigDefaults } from '../../io';
125
148
  * )
126
149
  * ```
127
150
  *
128
- * Please note that Serenity/JS uses [proxy-agents](https://github.com/TooTallNate/proxy-agents)
151
+ * Note that Serenity/JS uses [proxy-agents](https://github.com/TooTallNate/proxy-agents)
129
152
  * and the approach described in ["Node.js Axios behind corporate proxies"](https://janmolak.com/node-js-axios-behind-corporate-proxies-8b17a6f31f9d)
130
153
  * to work around [limited proxy support capabilities](https://github.com/axios/axios/issues?q=is%3Aissue+is%3Aopen+proxy) in Axios itself.
131
154
  *
155
+ * ### Bypassing proxy configuration
156
+ *
157
+ * To bypass the proxy configuration for specific hostnames and IP addresses, you can either:
158
+ * - provide the `bypass` property in the proxy configuration object, or
159
+ * - use the `no_proxy` environment variable.
160
+ *
161
+ * The value of the `bypass` property or the `no_proxy` environment variable should be a comma-separated list of hostnames and IP addresses
162
+ * that should not be routed through the proxy server, for example: `.com, .serenity-js.org, .domain.com`.
163
+ *
164
+ * Note that setting the `bypass` property to `example.org` makes the requests to following URLs bypass the proxy server:
165
+ * - `api.example.org`
166
+ * - `sub.sub.example.org`
167
+ * - `example.org`
168
+ * - `my-example.org`
169
+ *
170
+ * :::info
171
+ * Serenity/JS doesn't currently support `bypass` rules expressed using CIDR notation, like `192.168.17.0/24`.
172
+ * Instead, it uses a simple comma-separated list of hostnames and IP addresses.
173
+ * If you need support for CIDR notation, please [raise an issue](https://github.com/serenity-js/serenity-js/issues).
174
+ * :::
175
+ *
132
176
  * ### Using Axios instance with proxy support
133
177
  *
134
178
  * To have full control over the Axios instance used by the ability to `CallAnApi`, you can create it yourself
@@ -143,7 +187,7 @@ import type { AxiosRequestConfigDefaults } from '../../io';
143
187
  *
144
188
  * import axiosRetry from 'axios-retry'
145
189
  *
146
- * const instance = createAxios({ baseURL 'https://api.example.org/' })
190
+ * const instance = createAxios({ baseURL: 'https://api.example.org/' })
147
191
  * axiosRetry(instance, { retries: 3 })
148
192
  *
149
193
  * await actorCalled('Apisitt')
@@ -170,7 +214,7 @@ import type { AxiosRequestConfigDefaults } from '../../io';
170
214
  * import { axiosCreate } from '@serenity-js/rest'
171
215
  * import axiosRetry from 'axios-retry'
172
216
  *
173
- * const instance = axiosCreate({ baseURL 'https://api.example.org/' })
217
+ * const instance = axiosCreate({ baseURL: 'https://api.example.org/' })
174
218
  * axiosRetry(instance, { retries: 3 })
175
219
  *
176
220
  * await actorCalled('Apisitt')
@@ -1 +1 @@
1
- {"version":3,"file":"CallAnApi.d.ts","sourceRoot":"","sources":["../../../src/screenplay/abilities/CallAnApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EACH,OAAO,EAGP,KAAK,iBAAiB,EAEzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACH,KAAK,aAAa,EAElB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACrB,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,0BAA0B,EAAmC,MAAM,UAAU,CAAC;AAG5F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqTG;AACH,qBAAa,SAAU,SAAQ,OAAO;IA+CtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IA7C1C,OAAO,CAAC,YAAY,CAAgB;IAEpC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAQ3C;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,aAAa,GAAG,0BAA0B,GAAG,SAAS;IAI1F;;;;;;OAMG;gBAC0B,aAAa,EAAE,aAAa;IAIzD;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI;IAI7D;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IA+BjE;;;;;;;;OAQG;IACH,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM;IAQ9C;;;;;;;;OAQG;IACH,eAAe,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,CAAC,GAAG,CAAC;IAQtE,MAAM,IAAI,iBAAiB;CAkB9B"}
1
+ {"version":3,"file":"CallAnApi.d.ts","sourceRoot":"","sources":["../../../src/screenplay/abilities/CallAnApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EACH,OAAO,EAGP,KAAK,iBAAiB,EAEzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACH,KAAK,aAAa,EAElB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACrB,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,0BAA0B,EAAmC,MAAM,UAAU,CAAC;AAG5F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiWG;AACH,qBAAa,SAAU,SAAQ,OAAO;IA+CtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IA7C1C,OAAO,CAAC,YAAY,CAAgB;IAEpC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAQ3C;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,aAAa,GAAG,0BAA0B,GAAG,SAAS;IAI1F;;;;;;OAMG;gBAC0B,aAAa,EAAE,aAAa;IAIzD;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI;IAI7D;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IA+BjE;;;;;;;;OAQG;IACH,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM;IAQ9C;;;;;;;;OAQG;IACH,eAAe,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,CAAC,GAAG,CAAC;IAQtE,MAAM,IAAI,iBAAiB;CAkB9B"}