@actions/http-client 1.0.11 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,44 @@
1
+ /// <reference types="node" />
2
+ import * as http from 'http';
3
+ import * as https from 'https';
4
+ import { HttpClientResponse } from './index';
5
+ export interface HttpClient {
6
+ options(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
7
+ get(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
8
+ del(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
9
+ post(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
10
+ patch(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
11
+ put(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
12
+ sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
13
+ request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: http.OutgoingHttpHeaders): Promise<HttpClientResponse>;
14
+ requestRaw(info: RequestInfo, data: string | NodeJS.ReadableStream): Promise<HttpClientResponse>;
15
+ requestRawWithCallback(info: RequestInfo, data: string | NodeJS.ReadableStream, onResult: (err?: Error, res?: HttpClientResponse) => void): void;
16
+ }
17
+ export interface RequestHandler {
18
+ prepareRequest(options: http.RequestOptions): void;
19
+ canHandleAuthentication(response: HttpClientResponse): boolean;
20
+ handleAuthentication(httpClient: HttpClient, requestInfo: RequestInfo, data: string | NodeJS.ReadableStream | null): Promise<HttpClientResponse>;
21
+ }
22
+ export interface RequestInfo {
23
+ options: http.RequestOptions;
24
+ parsedUrl: URL;
25
+ httpModule: typeof http | typeof https;
26
+ }
27
+ export interface RequestOptions {
28
+ headers?: http.OutgoingHttpHeaders;
29
+ socketTimeout?: number;
30
+ ignoreSslError?: boolean;
31
+ allowRedirects?: boolean;
32
+ allowRedirectDowngrade?: boolean;
33
+ maxRedirects?: number;
34
+ maxSockets?: number;
35
+ keepAlive?: boolean;
36
+ deserializeDates?: boolean;
37
+ allowRetries?: boolean;
38
+ maxRetries?: number;
39
+ }
40
+ export interface TypedResponse<T> {
41
+ statusCode: number;
42
+ result: T | null;
43
+ headers: http.IncomingHttpHeaders;
44
+ }
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":""}
File without changes
@@ -1,29 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkBypass = exports.getProxyUrl = void 0;
3
4
  function getProxyUrl(reqUrl) {
4
- let usingSsl = reqUrl.protocol === 'https:';
5
- let proxyUrl;
5
+ const usingSsl = reqUrl.protocol === 'https:';
6
6
  if (checkBypass(reqUrl)) {
7
- return proxyUrl;
7
+ return undefined;
8
8
  }
9
- let proxyVar;
10
- if (usingSsl) {
11
- proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY'];
9
+ const proxyVar = (() => {
10
+ if (usingSsl) {
11
+ return process.env['https_proxy'] || process.env['HTTPS_PROXY'];
12
+ }
13
+ else {
14
+ return process.env['http_proxy'] || process.env['HTTP_PROXY'];
15
+ }
16
+ })();
17
+ if (proxyVar) {
18
+ return new URL(proxyVar);
12
19
  }
13
20
  else {
14
- proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY'];
15
- }
16
- if (proxyVar) {
17
- proxyUrl = new URL(proxyVar);
21
+ return undefined;
18
22
  }
19
- return proxyUrl;
20
23
  }
21
24
  exports.getProxyUrl = getProxyUrl;
22
25
  function checkBypass(reqUrl) {
23
26
  if (!reqUrl.hostname) {
24
27
  return false;
25
28
  }
26
- let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';
29
+ const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';
27
30
  if (!noProxy) {
28
31
  return false;
29
32
  }
@@ -39,12 +42,12 @@ function checkBypass(reqUrl) {
39
42
  reqPort = 443;
40
43
  }
41
44
  // Format the request hostname and hostname with port
42
- let upperReqHosts = [reqUrl.hostname.toUpperCase()];
45
+ const upperReqHosts = [reqUrl.hostname.toUpperCase()];
43
46
  if (typeof reqPort === 'number') {
44
47
  upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
45
48
  }
46
49
  // Compare request host against noproxy
47
- for (let upperNoProxyItem of noProxy
50
+ for (const upperNoProxyItem of noProxy
48
51
  .split(',')
49
52
  .map(x => x.trim().toUpperCase())
50
53
  .filter(x => x)) {
@@ -55,3 +58,4 @@ function checkBypass(reqUrl) {
55
58
  return false;
56
59
  }
57
60
  exports.checkBypass = checkBypass;
61
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":";;;AAAA,SAAgB,WAAW,CAAC,MAAW;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAA;IAE7C,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;QACvB,OAAO,SAAS,CAAA;KACjB;IAED,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI,QAAQ,EAAE;YACZ,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;SAChE;aAAM;YACL,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;SAC9D;IACH,CAAC,CAAC,EAAE,CAAA;IAEJ,IAAI,QAAQ,EAAE;QACZ,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;KACzB;SAAM;QACL,OAAO,SAAS,CAAA;KACjB;AACH,CAAC;AApBD,kCAoBC;AAED,SAAgB,WAAW,CAAC,MAAW;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QACpB,OAAO,KAAK,CAAA;KACb;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;IACxE,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,KAAK,CAAA;KACb;IAED,6BAA6B;IAC7B,IAAI,OAA2B,CAAA;IAC/B,IAAI,MAAM,CAAC,IAAI,EAAE;QACf,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;KAC9B;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE;QACtC,OAAO,GAAG,EAAE,CAAA;KACb;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE;QACvC,OAAO,GAAG,GAAG,CAAA;KACd;IAED,qDAAqD;IACrD,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IACrD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAA;KACrD;IAED,uCAAuC;IACvC,KAAK,MAAM,gBAAgB,IAAI,OAAO;SACnC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACjB,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,EAAE;YACnD,OAAO,IAAI,CAAA;SACZ;KACF;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AArCD,kCAqCC"}
package/package.json CHANGED
@@ -1,39 +1,46 @@
1
1
  {
2
2
  "name": "@actions/http-client",
3
- "version": "1.0.11",
3
+ "version": "2.0.0",
4
4
  "description": "Actions Http Client",
5
- "main": "index.js",
6
- "scripts": {
7
- "build": "rm -Rf ./_out && tsc && cp package*.json ./_out && cp *.md ./_out && cp LICENSE ./_out && cp actions.png ./_out",
8
- "test": "jest",
9
- "format": "prettier --write *.ts && prettier --write **/*.ts",
10
- "format-check": "prettier --check *.ts && prettier --check **/*.ts",
11
- "audit-check": "npm audit --audit-level=moderate"
5
+ "keywords": [
6
+ "github",
7
+ "actions",
8
+ "http"
9
+ ],
10
+ "homepage": "https://github.com/actions/toolkit/tree/main/packages/http-client",
11
+ "license": "MIT",
12
+ "main": "lib/index.js",
13
+ "types": "lib/index.d.ts",
14
+ "directories": {
15
+ "lib": "lib",
16
+ "test": "__tests__"
17
+ },
18
+ "files": [
19
+ "lib",
20
+ "!.DS_Store"
21
+ ],
22
+ "publishConfig": {
23
+ "access": "public"
12
24
  },
13
25
  "repository": {
14
26
  "type": "git",
15
- "url": "git+https://github.com/actions/http-client.git"
27
+ "url": "git+https://github.com/actions/toolkit.git",
28
+ "directory": "packages/github"
29
+ },
30
+ "scripts": {
31
+ "audit-moderate": "npm install && npm audit --json --audit-level=moderate > audit.json",
32
+ "test": "echo \"Error: run tests from root\" && exit 1",
33
+ "build": "tsc",
34
+ "format": "prettier --write **/*.ts",
35
+ "format-check": "prettier --check **/*.ts",
36
+ "tsc": "tsc"
16
37
  },
17
- "keywords": [
18
- "Actions",
19
- "Http"
20
- ],
21
- "author": "GitHub, Inc.",
22
- "license": "MIT",
23
38
  "bugs": {
24
- "url": "https://github.com/actions/http-client/issues"
39
+ "url": "https://github.com/actions/toolkit/issues"
25
40
  },
26
- "homepage": "https://github.com/actions/http-client#readme",
27
41
  "devDependencies": {
28
- "@types/jest": "^25.1.4",
29
- "@types/node": "^12.12.31",
30
- "jest": "^25.1.0",
31
- "prettier": "^2.0.4",
42
+ "@types/tunnel": "0.0.3",
32
43
  "proxy": "^1.0.1",
33
- "ts-jest": "^25.2.1",
34
- "typescript": "^3.8.3"
35
- },
36
- "dependencies": {
37
44
  "tunnel": "0.0.6"
38
45
  }
39
46
  }
package/RELEASES.md DELETED
@@ -1,26 +0,0 @@
1
- ## Releases
2
-
3
- ## 1.0.10
4
-
5
- Contains a bug fix where proxy is defined without a user and password. see [PR here](https://github.com/actions/http-client/pull/42)
6
-
7
- ## 1.0.9
8
- Throw HttpClientError instead of a generic Error from the \<verb>Json() helper methods when the server responds with a non-successful status code.
9
-
10
- ## 1.0.8
11
- Fixed security issue where a redirect (e.g. 302) to another domain would pass headers. The fix was to strip the authorization header if the hostname was different. More [details in PR #27](https://github.com/actions/http-client/pull/27)
12
-
13
- ## 1.0.7
14
- Update NPM dependencies and add 429 to the list of HttpCodes
15
-
16
- ## 1.0.6
17
- Automatically sends Content-Type and Accept application/json headers for \<verb>Json() helper methods if not set in the client or parameters.
18
-
19
- ## 1.0.5
20
- Adds \<verb>Json() helper methods for json over http scenarios.
21
-
22
- ## 1.0.4
23
- Started to add \<verb>Json() helper methods. Do not use this release for that. Use >= 1.0.5 since there was an issue with types.
24
-
25
- ## 1.0.1 to 1.0.3
26
- Adds proxy support.
package/actions.png DELETED
Binary file
package/auth.d.ts DELETED
@@ -1,23 +0,0 @@
1
- import ifm = require('./interfaces');
2
- export declare class BasicCredentialHandler implements ifm.IRequestHandler {
3
- username: string;
4
- password: string;
5
- constructor(username: string, password: string);
6
- prepareRequest(options: any): void;
7
- canHandleAuthentication(response: ifm.IHttpClientResponse): boolean;
8
- handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise<ifm.IHttpClientResponse>;
9
- }
10
- export declare class BearerCredentialHandler implements ifm.IRequestHandler {
11
- token: string;
12
- constructor(token: string);
13
- prepareRequest(options: any): void;
14
- canHandleAuthentication(response: ifm.IHttpClientResponse): boolean;
15
- handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise<ifm.IHttpClientResponse>;
16
- }
17
- export declare class PersonalAccessTokenCredentialHandler implements ifm.IRequestHandler {
18
- token: string;
19
- constructor(token: string);
20
- prepareRequest(options: any): void;
21
- canHandleAuthentication(response: ifm.IHttpClientResponse): boolean;
22
- handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise<ifm.IHttpClientResponse>;
23
- }
package/auth.js DELETED
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class BasicCredentialHandler {
4
- constructor(username, password) {
5
- this.username = username;
6
- this.password = password;
7
- }
8
- prepareRequest(options) {
9
- options.headers['Authorization'] =
10
- 'Basic ' +
11
- Buffer.from(this.username + ':' + this.password).toString('base64');
12
- }
13
- // This handler cannot handle 401
14
- canHandleAuthentication(response) {
15
- return false;
16
- }
17
- handleAuthentication(httpClient, requestInfo, objs) {
18
- return null;
19
- }
20
- }
21
- exports.BasicCredentialHandler = BasicCredentialHandler;
22
- class BearerCredentialHandler {
23
- constructor(token) {
24
- this.token = token;
25
- }
26
- // currently implements pre-authorization
27
- // TODO: support preAuth = false where it hooks on 401
28
- prepareRequest(options) {
29
- options.headers['Authorization'] = 'Bearer ' + this.token;
30
- }
31
- // This handler cannot handle 401
32
- canHandleAuthentication(response) {
33
- return false;
34
- }
35
- handleAuthentication(httpClient, requestInfo, objs) {
36
- return null;
37
- }
38
- }
39
- exports.BearerCredentialHandler = BearerCredentialHandler;
40
- class PersonalAccessTokenCredentialHandler {
41
- constructor(token) {
42
- this.token = token;
43
- }
44
- // currently implements pre-authorization
45
- // TODO: support preAuth = false where it hooks on 401
46
- prepareRequest(options) {
47
- options.headers['Authorization'] =
48
- 'Basic ' + Buffer.from('PAT:' + this.token).toString('base64');
49
- }
50
- // This handler cannot handle 401
51
- canHandleAuthentication(response) {
52
- return false;
53
- }
54
- handleAuthentication(httpClient, requestInfo, objs) {
55
- return null;
56
- }
57
- }
58
- exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;