mirror of
				https://github.com/actions/cache.git
				synced 2025-11-04 15:48:39 +08:00 
			
		
		
		
	Merge pull request #808 from actions/users/kotewar/update-actions-cache-version
Upgraded @actions/cache to 2.0.5
This commit is contained in:
		
						commit
						30f413bfed
					
				
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										22
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								README.md
									
									
									
									
									
								
							| 
						 | 
					@ -13,27 +13,9 @@ See ["Caching dependencies to speed up workflows"](https://help.github.com/githu
 | 
				
			||||||
* Added support for caching from GHES 3.5.
 | 
					* Added support for caching from GHES 3.5.
 | 
				
			||||||
* Fixed download issue for files > 2GB during restore.
 | 
					* Fixed download issue for files > 2GB during restore.
 | 
				
			||||||
* Updated the minimum runner version support from node 12 -> node 16.
 | 
					* Updated the minimum runner version support from node 12 -> node 16.
 | 
				
			||||||
 | 
					* Fixed avoiding empty cache save when no files are available for caching.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### v2
 | 
					Refer [here](https://github.com/actions/cache/blob/v2/README.md) for previous versions
 | 
				
			||||||
* Increased the cache size limit to 10 GB.
 | 
					 | 
				
			||||||
* Added support for multiple paths, [glob patterns](https://github.com/actions/toolkit/tree/main/packages/glob), and single file caches.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```yaml
 | 
					 | 
				
			||||||
- name: Cache multiple paths
 | 
					 | 
				
			||||||
  uses: actions/cache@v3
 | 
					 | 
				
			||||||
  with:
 | 
					 | 
				
			||||||
    path: |
 | 
					 | 
				
			||||||
      ~/cache
 | 
					 | 
				
			||||||
      !~/cache/exclude
 | 
					 | 
				
			||||||
    key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
* Increased performance and improved cache sizes using `zstd` compression for Linux and macOS runners
 | 
					 | 
				
			||||||
* Allowed caching for all events with a ref. See [events that trigger workflow](https://help.github.com/en/actions/reference/events-that-trigger-workflows) for info on which events do not have a `GITHUB_REF`
 | 
					 | 
				
			||||||
* Released the [`@actions/cache`](https://github.com/actions/toolkit/tree/main/packages/cache) npm package to allow other actions to utilize caching
 | 
					 | 
				
			||||||
* Added a best-effort cleanup step to delete the archive after extraction to reduce storage space
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Refer [here](https://github.com/actions/cache/blob/v1/README.md) for previous versions
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Usage
 | 
					## Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,3 +6,9 @@
 | 
				
			||||||
### 3.0.1
 | 
					### 3.0.1
 | 
				
			||||||
- Added support for caching from GHES 3.5.
 | 
					- Added support for caching from GHES 3.5.
 | 
				
			||||||
- Fixed download issue for files > 2GB during restore.
 | 
					- Fixed download issue for files > 2GB during restore.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 3.0.2
 | 
				
			||||||
 | 
					- Added support for dynamic cache size cap on GHES.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 3.0.3
 | 
				
			||||||
 | 
					- Fixed avoiding empty cache save when no files are available for caching. ([issue](https://github.com/actions/cache/issues/624))
 | 
				
			||||||
							
								
								
									
										781
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										781
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
								
							| 
						 | 
					@ -3185,8 +3185,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
const core = __importStar(__webpack_require__(470));
 | 
					const core = __importStar(__webpack_require__(470));
 | 
				
			||||||
const http_client_1 = __webpack_require__(539);
 | 
					const http_client_1 = __webpack_require__(710);
 | 
				
			||||||
const auth_1 = __webpack_require__(226);
 | 
					const auth_1 = __webpack_require__(206);
 | 
				
			||||||
const crypto = __importStar(__webpack_require__(417));
 | 
					const crypto = __importStar(__webpack_require__(417));
 | 
				
			||||||
const fs = __importStar(__webpack_require__(747));
 | 
					const fs = __importStar(__webpack_require__(747));
 | 
				
			||||||
const url_1 = __webpack_require__(835);
 | 
					const url_1 = __webpack_require__(835);
 | 
				
			||||||
| 
						 | 
					@ -4689,7 +4689,93 @@ exports.default = _default;
 | 
				
			||||||
/* 203 */,
 | 
					/* 203 */,
 | 
				
			||||||
/* 204 */,
 | 
					/* 204 */,
 | 
				
			||||||
/* 205 */,
 | 
					/* 205 */,
 | 
				
			||||||
/* 206 */,
 | 
					/* 206 */
 | 
				
			||||||
 | 
					/***/ (function(__unusedmodule, exports) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
				
			||||||
 | 
					    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
 | 
				
			||||||
 | 
					    return new (P || (P = Promise))(function (resolve, reject) {
 | 
				
			||||||
 | 
					        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
				
			||||||
 | 
					        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
				
			||||||
 | 
					        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
 | 
				
			||||||
 | 
					        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
 | 
					exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;
 | 
				
			||||||
 | 
					class BasicCredentialHandler {
 | 
				
			||||||
 | 
					    constructor(username, password) {
 | 
				
			||||||
 | 
					        this.username = username;
 | 
				
			||||||
 | 
					        this.password = password;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    prepareRequest(options) {
 | 
				
			||||||
 | 
					        if (!options.headers) {
 | 
				
			||||||
 | 
					            throw Error('The request has no headers');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // This handler cannot handle 401
 | 
				
			||||||
 | 
					    canHandleAuthentication() {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    handleAuthentication() {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            throw new Error('not implemented');
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.BasicCredentialHandler = BasicCredentialHandler;
 | 
				
			||||||
 | 
					class BearerCredentialHandler {
 | 
				
			||||||
 | 
					    constructor(token) {
 | 
				
			||||||
 | 
					        this.token = token;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // currently implements pre-authorization
 | 
				
			||||||
 | 
					    // TODO: support preAuth = false where it hooks on 401
 | 
				
			||||||
 | 
					    prepareRequest(options) {
 | 
				
			||||||
 | 
					        if (!options.headers) {
 | 
				
			||||||
 | 
					            throw Error('The request has no headers');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        options.headers['Authorization'] = `Bearer ${this.token}`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // This handler cannot handle 401
 | 
				
			||||||
 | 
					    canHandleAuthentication() {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    handleAuthentication() {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            throw new Error('not implemented');
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.BearerCredentialHandler = BearerCredentialHandler;
 | 
				
			||||||
 | 
					class PersonalAccessTokenCredentialHandler {
 | 
				
			||||||
 | 
					    constructor(token) {
 | 
				
			||||||
 | 
					        this.token = token;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // currently implements pre-authorization
 | 
				
			||||||
 | 
					    // TODO: support preAuth = false where it hooks on 401
 | 
				
			||||||
 | 
					    prepareRequest(options) {
 | 
				
			||||||
 | 
					        if (!options.headers) {
 | 
				
			||||||
 | 
					            throw Error('The request has no headers');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // This handler cannot handle 401
 | 
				
			||||||
 | 
					    canHandleAuthentication() {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    handleAuthentication() {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            throw new Error('not implemented');
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;
 | 
				
			||||||
 | 
					//# sourceMappingURL=auth.js.map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***/ }),
 | 
				
			||||||
/* 207 */
 | 
					/* 207 */
 | 
				
			||||||
/***/ (function(__unusedmodule, exports) {
 | 
					/***/ (function(__unusedmodule, exports) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5247,7 +5333,73 @@ function _default(name, version, hashfunc) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***/ }),
 | 
					/***/ }),
 | 
				
			||||||
/* 242 */,
 | 
					/* 242 */,
 | 
				
			||||||
/* 243 */,
 | 
					/* 243 */
 | 
				
			||||||
 | 
					/***/ (function(__unusedmodule, exports) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
 | 
					exports.checkBypass = exports.getProxyUrl = void 0;
 | 
				
			||||||
 | 
					function getProxyUrl(reqUrl) {
 | 
				
			||||||
 | 
					    const usingSsl = reqUrl.protocol === 'https:';
 | 
				
			||||||
 | 
					    if (checkBypass(reqUrl)) {
 | 
				
			||||||
 | 
					        return undefined;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    const proxyVar = (() => {
 | 
				
			||||||
 | 
					        if (usingSsl) {
 | 
				
			||||||
 | 
					            return process.env['https_proxy'] || process.env['HTTPS_PROXY'];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            return process.env['http_proxy'] || process.env['HTTP_PROXY'];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    })();
 | 
				
			||||||
 | 
					    if (proxyVar) {
 | 
				
			||||||
 | 
					        return new URL(proxyVar);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					        return undefined;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.getProxyUrl = getProxyUrl;
 | 
				
			||||||
 | 
					function checkBypass(reqUrl) {
 | 
				
			||||||
 | 
					    if (!reqUrl.hostname) {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';
 | 
				
			||||||
 | 
					    if (!noProxy) {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // Determine the request port
 | 
				
			||||||
 | 
					    let reqPort;
 | 
				
			||||||
 | 
					    if (reqUrl.port) {
 | 
				
			||||||
 | 
					        reqPort = Number(reqUrl.port);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else if (reqUrl.protocol === 'http:') {
 | 
				
			||||||
 | 
					        reqPort = 80;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else if (reqUrl.protocol === 'https:') {
 | 
				
			||||||
 | 
					        reqPort = 443;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // Format the request hostname and hostname with port
 | 
				
			||||||
 | 
					    const upperReqHosts = [reqUrl.hostname.toUpperCase()];
 | 
				
			||||||
 | 
					    if (typeof reqPort === 'number') {
 | 
				
			||||||
 | 
					        upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // Compare request host against noproxy
 | 
				
			||||||
 | 
					    for (const upperNoProxyItem of noProxy
 | 
				
			||||||
 | 
					        .split(',')
 | 
				
			||||||
 | 
					        .map(x => x.trim().toUpperCase())
 | 
				
			||||||
 | 
					        .filter(x => x)) {
 | 
				
			||||||
 | 
					        if (upperReqHosts.some(x => x === upperNoProxyItem)) {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.checkBypass = checkBypass;
 | 
				
			||||||
 | 
					//# sourceMappingURL=proxy.js.map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***/ }),
 | 
				
			||||||
/* 244 */,
 | 
					/* 244 */,
 | 
				
			||||||
/* 245 */
 | 
					/* 245 */
 | 
				
			||||||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
 | 
					/***/ (function(__unusedmodule, exports, __webpack_require__) {
 | 
				
			||||||
| 
						 | 
					@ -5306,7 +5458,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
const core = __importStar(__webpack_require__(470));
 | 
					const core = __importStar(__webpack_require__(470));
 | 
				
			||||||
const http_client_1 = __webpack_require__(539);
 | 
					const http_client_1 = __webpack_require__(710);
 | 
				
			||||||
const storage_blob_1 = __webpack_require__(373);
 | 
					const storage_blob_1 = __webpack_require__(373);
 | 
				
			||||||
const buffer = __importStar(__webpack_require__(293));
 | 
					const buffer = __importStar(__webpack_require__(293));
 | 
				
			||||||
const fs = __importStar(__webpack_require__(747));
 | 
					const fs = __importStar(__webpack_require__(747));
 | 
				
			||||||
| 
						 | 
					@ -46748,6 +46900,9 @@ function saveCache(paths, key, options) {
 | 
				
			||||||
        const cachePaths = yield utils.resolvePaths(paths);
 | 
					        const cachePaths = yield utils.resolvePaths(paths);
 | 
				
			||||||
        core.debug('Cache Paths:');
 | 
					        core.debug('Cache Paths:');
 | 
				
			||||||
        core.debug(`${JSON.stringify(cachePaths)}`);
 | 
					        core.debug(`${JSON.stringify(cachePaths)}`);
 | 
				
			||||||
 | 
					        if (cachePaths.length === 0) {
 | 
				
			||||||
 | 
					            throw new Error(`Path Validation Error: Path(s) specified in the action for caching do(es) not exist, hence no cache is being saved.`);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        const archiveFolder = yield utils.createTempDirectory();
 | 
					        const archiveFolder = yield utils.createTempDirectory();
 | 
				
			||||||
        const archivePath = path.join(archiveFolder, utils.getCacheFileName(compressionMethod));
 | 
					        const archivePath = path.join(archiveFolder, utils.getCacheFileName(compressionMethod));
 | 
				
			||||||
        core.debug(`Archive Path: ${archivePath}`);
 | 
					        core.debug(`Archive Path: ${archivePath}`);
 | 
				
			||||||
| 
						 | 
					@ -46933,7 +47088,617 @@ Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***/ }),
 | 
					/***/ }),
 | 
				
			||||||
/* 709 */,
 | 
					/* 709 */,
 | 
				
			||||||
/* 710 */,
 | 
					/* 710 */
 | 
				
			||||||
 | 
					/***/ (function(__unusedmodule, exports, __webpack_require__) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* eslint-disable @typescript-eslint/no-explicit-any */
 | 
				
			||||||
 | 
					var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 | 
				
			||||||
 | 
					    if (k2 === undefined) k2 = k;
 | 
				
			||||||
 | 
					    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
 | 
				
			||||||
 | 
					}) : (function(o, m, k, k2) {
 | 
				
			||||||
 | 
					    if (k2 === undefined) k2 = k;
 | 
				
			||||||
 | 
					    o[k2] = m[k];
 | 
				
			||||||
 | 
					}));
 | 
				
			||||||
 | 
					var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 | 
				
			||||||
 | 
					    Object.defineProperty(o, "default", { enumerable: true, value: v });
 | 
				
			||||||
 | 
					}) : function(o, v) {
 | 
				
			||||||
 | 
					    o["default"] = v;
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					var __importStar = (this && this.__importStar) || function (mod) {
 | 
				
			||||||
 | 
					    if (mod && mod.__esModule) return mod;
 | 
				
			||||||
 | 
					    var result = {};
 | 
				
			||||||
 | 
					    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 | 
				
			||||||
 | 
					    __setModuleDefault(result, mod);
 | 
				
			||||||
 | 
					    return result;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
				
			||||||
 | 
					    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
 | 
				
			||||||
 | 
					    return new (P || (P = Promise))(function (resolve, reject) {
 | 
				
			||||||
 | 
					        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
				
			||||||
 | 
					        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
				
			||||||
 | 
					        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
 | 
				
			||||||
 | 
					        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
 | 
					exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;
 | 
				
			||||||
 | 
					const http = __importStar(__webpack_require__(605));
 | 
				
			||||||
 | 
					const https = __importStar(__webpack_require__(211));
 | 
				
			||||||
 | 
					const pm = __importStar(__webpack_require__(243));
 | 
				
			||||||
 | 
					const tunnel = __importStar(__webpack_require__(413));
 | 
				
			||||||
 | 
					var HttpCodes;
 | 
				
			||||||
 | 
					(function (HttpCodes) {
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["OK"] = 200] = "OK";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["Gone"] = 410] = "Gone";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout";
 | 
				
			||||||
 | 
					})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));
 | 
				
			||||||
 | 
					var Headers;
 | 
				
			||||||
 | 
					(function (Headers) {
 | 
				
			||||||
 | 
					    Headers["Accept"] = "accept";
 | 
				
			||||||
 | 
					    Headers["ContentType"] = "content-type";
 | 
				
			||||||
 | 
					})(Headers = exports.Headers || (exports.Headers = {}));
 | 
				
			||||||
 | 
					var MediaTypes;
 | 
				
			||||||
 | 
					(function (MediaTypes) {
 | 
				
			||||||
 | 
					    MediaTypes["ApplicationJson"] = "application/json";
 | 
				
			||||||
 | 
					})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Returns the proxy URL, depending upon the supplied url and proxy environment variables.
 | 
				
			||||||
 | 
					 * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					function getProxyUrl(serverUrl) {
 | 
				
			||||||
 | 
					    const proxyUrl = pm.getProxyUrl(new URL(serverUrl));
 | 
				
			||||||
 | 
					    return proxyUrl ? proxyUrl.href : '';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.getProxyUrl = getProxyUrl;
 | 
				
			||||||
 | 
					const HttpRedirectCodes = [
 | 
				
			||||||
 | 
					    HttpCodes.MovedPermanently,
 | 
				
			||||||
 | 
					    HttpCodes.ResourceMoved,
 | 
				
			||||||
 | 
					    HttpCodes.SeeOther,
 | 
				
			||||||
 | 
					    HttpCodes.TemporaryRedirect,
 | 
				
			||||||
 | 
					    HttpCodes.PermanentRedirect
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					const HttpResponseRetryCodes = [
 | 
				
			||||||
 | 
					    HttpCodes.BadGateway,
 | 
				
			||||||
 | 
					    HttpCodes.ServiceUnavailable,
 | 
				
			||||||
 | 
					    HttpCodes.GatewayTimeout
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];
 | 
				
			||||||
 | 
					const ExponentialBackoffCeiling = 10;
 | 
				
			||||||
 | 
					const ExponentialBackoffTimeSlice = 5;
 | 
				
			||||||
 | 
					class HttpClientError extends Error {
 | 
				
			||||||
 | 
					    constructor(message, statusCode) {
 | 
				
			||||||
 | 
					        super(message);
 | 
				
			||||||
 | 
					        this.name = 'HttpClientError';
 | 
				
			||||||
 | 
					        this.statusCode = statusCode;
 | 
				
			||||||
 | 
					        Object.setPrototypeOf(this, HttpClientError.prototype);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.HttpClientError = HttpClientError;
 | 
				
			||||||
 | 
					class HttpClientResponse {
 | 
				
			||||||
 | 
					    constructor(message) {
 | 
				
			||||||
 | 
					        this.message = message;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    readBody() {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					                let output = Buffer.alloc(0);
 | 
				
			||||||
 | 
					                this.message.on('data', (chunk) => {
 | 
				
			||||||
 | 
					                    output = Buffer.concat([output, chunk]);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					                this.message.on('end', () => {
 | 
				
			||||||
 | 
					                    resolve(output.toString());
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					            }));
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.HttpClientResponse = HttpClientResponse;
 | 
				
			||||||
 | 
					function isHttps(requestUrl) {
 | 
				
			||||||
 | 
					    const parsedUrl = new URL(requestUrl);
 | 
				
			||||||
 | 
					    return parsedUrl.protocol === 'https:';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.isHttps = isHttps;
 | 
				
			||||||
 | 
					class HttpClient {
 | 
				
			||||||
 | 
					    constructor(userAgent, handlers, requestOptions) {
 | 
				
			||||||
 | 
					        this._ignoreSslError = false;
 | 
				
			||||||
 | 
					        this._allowRedirects = true;
 | 
				
			||||||
 | 
					        this._allowRedirectDowngrade = false;
 | 
				
			||||||
 | 
					        this._maxRedirects = 50;
 | 
				
			||||||
 | 
					        this._allowRetries = false;
 | 
				
			||||||
 | 
					        this._maxRetries = 1;
 | 
				
			||||||
 | 
					        this._keepAlive = false;
 | 
				
			||||||
 | 
					        this._disposed = false;
 | 
				
			||||||
 | 
					        this.userAgent = userAgent;
 | 
				
			||||||
 | 
					        this.handlers = handlers || [];
 | 
				
			||||||
 | 
					        this.requestOptions = requestOptions;
 | 
				
			||||||
 | 
					        if (requestOptions) {
 | 
				
			||||||
 | 
					            if (requestOptions.ignoreSslError != null) {
 | 
				
			||||||
 | 
					                this._ignoreSslError = requestOptions.ignoreSslError;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            this._socketTimeout = requestOptions.socketTimeout;
 | 
				
			||||||
 | 
					            if (requestOptions.allowRedirects != null) {
 | 
				
			||||||
 | 
					                this._allowRedirects = requestOptions.allowRedirects;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (requestOptions.allowRedirectDowngrade != null) {
 | 
				
			||||||
 | 
					                this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (requestOptions.maxRedirects != null) {
 | 
				
			||||||
 | 
					                this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (requestOptions.keepAlive != null) {
 | 
				
			||||||
 | 
					                this._keepAlive = requestOptions.keepAlive;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (requestOptions.allowRetries != null) {
 | 
				
			||||||
 | 
					                this._allowRetries = requestOptions.allowRetries;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (requestOptions.maxRetries != null) {
 | 
				
			||||||
 | 
					                this._maxRetries = requestOptions.maxRetries;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    options(requestUrl, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    get(requestUrl, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('GET', requestUrl, null, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    del(requestUrl, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('DELETE', requestUrl, null, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    post(requestUrl, data, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('POST', requestUrl, data, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    patch(requestUrl, data, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('PATCH', requestUrl, data, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    put(requestUrl, data, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('PUT', requestUrl, data, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    head(requestUrl, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('HEAD', requestUrl, null, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    sendStream(verb, requestUrl, stream, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request(verb, requestUrl, stream, additionalHeaders);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets a typed object from an endpoint
 | 
				
			||||||
 | 
					     * Be aware that not found returns a null.  Other errors (4xx, 5xx) reject the promise
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    getJson(requestUrl, additionalHeaders = {}) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            const res = yield this.get(requestUrl, additionalHeaders);
 | 
				
			||||||
 | 
					            return this._processResponse(res, this.requestOptions);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    postJson(requestUrl, obj, additionalHeaders = {}) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            const data = JSON.stringify(obj, null, 2);
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            const res = yield this.post(requestUrl, data, additionalHeaders);
 | 
				
			||||||
 | 
					            return this._processResponse(res, this.requestOptions);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    putJson(requestUrl, obj, additionalHeaders = {}) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            const data = JSON.stringify(obj, null, 2);
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            const res = yield this.put(requestUrl, data, additionalHeaders);
 | 
				
			||||||
 | 
					            return this._processResponse(res, this.requestOptions);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    patchJson(requestUrl, obj, additionalHeaders = {}) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            const data = JSON.stringify(obj, null, 2);
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            const res = yield this.patch(requestUrl, data, additionalHeaders);
 | 
				
			||||||
 | 
					            return this._processResponse(res, this.requestOptions);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Makes a raw http request.
 | 
				
			||||||
 | 
					     * All other methods such as get, post, patch, and request ultimately call this.
 | 
				
			||||||
 | 
					     * Prefer get, del, post and patch
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    request(verb, requestUrl, data, headers) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            if (this._disposed) {
 | 
				
			||||||
 | 
					                throw new Error('Client has already been disposed.');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            const parsedUrl = new URL(requestUrl);
 | 
				
			||||||
 | 
					            let info = this._prepareRequest(verb, parsedUrl, headers);
 | 
				
			||||||
 | 
					            // Only perform retries on reads since writes may not be idempotent.
 | 
				
			||||||
 | 
					            const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)
 | 
				
			||||||
 | 
					                ? this._maxRetries + 1
 | 
				
			||||||
 | 
					                : 1;
 | 
				
			||||||
 | 
					            let numTries = 0;
 | 
				
			||||||
 | 
					            let response;
 | 
				
			||||||
 | 
					            do {
 | 
				
			||||||
 | 
					                response = yield this.requestRaw(info, data);
 | 
				
			||||||
 | 
					                // Check if it's an authentication challenge
 | 
				
			||||||
 | 
					                if (response &&
 | 
				
			||||||
 | 
					                    response.message &&
 | 
				
			||||||
 | 
					                    response.message.statusCode === HttpCodes.Unauthorized) {
 | 
				
			||||||
 | 
					                    let authenticationHandler;
 | 
				
			||||||
 | 
					                    for (const handler of this.handlers) {
 | 
				
			||||||
 | 
					                        if (handler.canHandleAuthentication(response)) {
 | 
				
			||||||
 | 
					                            authenticationHandler = handler;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    if (authenticationHandler) {
 | 
				
			||||||
 | 
					                        return authenticationHandler.handleAuthentication(this, info, data);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else {
 | 
				
			||||||
 | 
					                        // We have received an unauthorized response but have no handlers to handle it.
 | 
				
			||||||
 | 
					                        // Let the response return to the caller.
 | 
				
			||||||
 | 
					                        return response;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                let redirectsRemaining = this._maxRedirects;
 | 
				
			||||||
 | 
					                while (response.message.statusCode &&
 | 
				
			||||||
 | 
					                    HttpRedirectCodes.includes(response.message.statusCode) &&
 | 
				
			||||||
 | 
					                    this._allowRedirects &&
 | 
				
			||||||
 | 
					                    redirectsRemaining > 0) {
 | 
				
			||||||
 | 
					                    const redirectUrl = response.message.headers['location'];
 | 
				
			||||||
 | 
					                    if (!redirectUrl) {
 | 
				
			||||||
 | 
					                        // if there's no location to redirect to, we won't
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    const parsedRedirectUrl = new URL(redirectUrl);
 | 
				
			||||||
 | 
					                    if (parsedUrl.protocol === 'https:' &&
 | 
				
			||||||
 | 
					                        parsedUrl.protocol !== parsedRedirectUrl.protocol &&
 | 
				
			||||||
 | 
					                        !this._allowRedirectDowngrade) {
 | 
				
			||||||
 | 
					                        throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    // we need to finish reading the response before reassigning response
 | 
				
			||||||
 | 
					                    // which will leak the open socket.
 | 
				
			||||||
 | 
					                    yield response.readBody();
 | 
				
			||||||
 | 
					                    // strip authorization header if redirected to a different hostname
 | 
				
			||||||
 | 
					                    if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {
 | 
				
			||||||
 | 
					                        for (const header in headers) {
 | 
				
			||||||
 | 
					                            // header names are case insensitive
 | 
				
			||||||
 | 
					                            if (header.toLowerCase() === 'authorization') {
 | 
				
			||||||
 | 
					                                delete headers[header];
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    // let's make the request with the new redirectUrl
 | 
				
			||||||
 | 
					                    info = this._prepareRequest(verb, parsedRedirectUrl, headers);
 | 
				
			||||||
 | 
					                    response = yield this.requestRaw(info, data);
 | 
				
			||||||
 | 
					                    redirectsRemaining--;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (!response.message.statusCode ||
 | 
				
			||||||
 | 
					                    !HttpResponseRetryCodes.includes(response.message.statusCode)) {
 | 
				
			||||||
 | 
					                    // If not a retry code, return immediately instead of retrying
 | 
				
			||||||
 | 
					                    return response;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                numTries += 1;
 | 
				
			||||||
 | 
					                if (numTries < maxTries) {
 | 
				
			||||||
 | 
					                    yield response.readBody();
 | 
				
			||||||
 | 
					                    yield this._performExponentialBackoff(numTries);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } while (numTries < maxTries);
 | 
				
			||||||
 | 
					            return response;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Needs to be called if keepAlive is set to true in request options.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    dispose() {
 | 
				
			||||||
 | 
					        if (this._agent) {
 | 
				
			||||||
 | 
					            this._agent.destroy();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        this._disposed = true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Raw request.
 | 
				
			||||||
 | 
					     * @param info
 | 
				
			||||||
 | 
					     * @param data
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    requestRaw(info, data) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return new Promise((resolve, reject) => {
 | 
				
			||||||
 | 
					                function callbackForResult(err, res) {
 | 
				
			||||||
 | 
					                    if (err) {
 | 
				
			||||||
 | 
					                        reject(err);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else if (!res) {
 | 
				
			||||||
 | 
					                        // If `err` is not passed, then `res` must be passed.
 | 
				
			||||||
 | 
					                        reject(new Error('Unknown error'));
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else {
 | 
				
			||||||
 | 
					                        resolve(res);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                this.requestRawWithCallback(info, data, callbackForResult);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Raw request with callback.
 | 
				
			||||||
 | 
					     * @param info
 | 
				
			||||||
 | 
					     * @param data
 | 
				
			||||||
 | 
					     * @param onResult
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    requestRawWithCallback(info, data, onResult) {
 | 
				
			||||||
 | 
					        if (typeof data === 'string') {
 | 
				
			||||||
 | 
					            if (!info.options.headers) {
 | 
				
			||||||
 | 
					                info.options.headers = {};
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        let callbackCalled = false;
 | 
				
			||||||
 | 
					        function handleResult(err, res) {
 | 
				
			||||||
 | 
					            if (!callbackCalled) {
 | 
				
			||||||
 | 
					                callbackCalled = true;
 | 
				
			||||||
 | 
					                onResult(err, res);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        const req = info.httpModule.request(info.options, (msg) => {
 | 
				
			||||||
 | 
					            const res = new HttpClientResponse(msg);
 | 
				
			||||||
 | 
					            handleResult(undefined, res);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        let socket;
 | 
				
			||||||
 | 
					        req.on('socket', sock => {
 | 
				
			||||||
 | 
					            socket = sock;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        // If we ever get disconnected, we want the socket to timeout eventually
 | 
				
			||||||
 | 
					        req.setTimeout(this._socketTimeout || 3 * 60000, () => {
 | 
				
			||||||
 | 
					            if (socket) {
 | 
				
			||||||
 | 
					                socket.end();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            handleResult(new Error(`Request timeout: ${info.options.path}`));
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        req.on('error', function (err) {
 | 
				
			||||||
 | 
					            // err has statusCode property
 | 
				
			||||||
 | 
					            // res should have headers
 | 
				
			||||||
 | 
					            handleResult(err);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        if (data && typeof data === 'string') {
 | 
				
			||||||
 | 
					            req.write(data, 'utf8');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (data && typeof data !== 'string') {
 | 
				
			||||||
 | 
					            data.on('close', function () {
 | 
				
			||||||
 | 
					                req.end();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					            data.pipe(req);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            req.end();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets an http agent. This function is useful when you need an http agent that handles
 | 
				
			||||||
 | 
					     * routing through a proxy server - depending upon the url and proxy environment variables.
 | 
				
			||||||
 | 
					     * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    getAgent(serverUrl) {
 | 
				
			||||||
 | 
					        const parsedUrl = new URL(serverUrl);
 | 
				
			||||||
 | 
					        return this._getAgent(parsedUrl);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _prepareRequest(method, requestUrl, headers) {
 | 
				
			||||||
 | 
					        const info = {};
 | 
				
			||||||
 | 
					        info.parsedUrl = requestUrl;
 | 
				
			||||||
 | 
					        const usingSsl = info.parsedUrl.protocol === 'https:';
 | 
				
			||||||
 | 
					        info.httpModule = usingSsl ? https : http;
 | 
				
			||||||
 | 
					        const defaultPort = usingSsl ? 443 : 80;
 | 
				
			||||||
 | 
					        info.options = {};
 | 
				
			||||||
 | 
					        info.options.host = info.parsedUrl.hostname;
 | 
				
			||||||
 | 
					        info.options.port = info.parsedUrl.port
 | 
				
			||||||
 | 
					            ? parseInt(info.parsedUrl.port)
 | 
				
			||||||
 | 
					            : defaultPort;
 | 
				
			||||||
 | 
					        info.options.path =
 | 
				
			||||||
 | 
					            (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');
 | 
				
			||||||
 | 
					        info.options.method = method;
 | 
				
			||||||
 | 
					        info.options.headers = this._mergeHeaders(headers);
 | 
				
			||||||
 | 
					        if (this.userAgent != null) {
 | 
				
			||||||
 | 
					            info.options.headers['user-agent'] = this.userAgent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        info.options.agent = this._getAgent(info.parsedUrl);
 | 
				
			||||||
 | 
					        // gives handlers an opportunity to participate
 | 
				
			||||||
 | 
					        if (this.handlers) {
 | 
				
			||||||
 | 
					            for (const handler of this.handlers) {
 | 
				
			||||||
 | 
					                handler.prepareRequest(info.options);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return info;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _mergeHeaders(headers) {
 | 
				
			||||||
 | 
					        if (this.requestOptions && this.requestOptions.headers) {
 | 
				
			||||||
 | 
					            return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return lowercaseKeys(headers || {});
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _getExistingOrDefaultHeader(additionalHeaders, header, _default) {
 | 
				
			||||||
 | 
					        let clientHeader;
 | 
				
			||||||
 | 
					        if (this.requestOptions && this.requestOptions.headers) {
 | 
				
			||||||
 | 
					            clientHeader = lowercaseKeys(this.requestOptions.headers)[header];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return additionalHeaders[header] || clientHeader || _default;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _getAgent(parsedUrl) {
 | 
				
			||||||
 | 
					        let agent;
 | 
				
			||||||
 | 
					        const proxyUrl = pm.getProxyUrl(parsedUrl);
 | 
				
			||||||
 | 
					        const useProxy = proxyUrl && proxyUrl.hostname;
 | 
				
			||||||
 | 
					        if (this._keepAlive && useProxy) {
 | 
				
			||||||
 | 
					            agent = this._proxyAgent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (this._keepAlive && !useProxy) {
 | 
				
			||||||
 | 
					            agent = this._agent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // if agent is already assigned use that agent.
 | 
				
			||||||
 | 
					        if (agent) {
 | 
				
			||||||
 | 
					            return agent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        const usingSsl = parsedUrl.protocol === 'https:';
 | 
				
			||||||
 | 
					        let maxSockets = 100;
 | 
				
			||||||
 | 
					        if (this.requestOptions) {
 | 
				
			||||||
 | 
					            maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.
 | 
				
			||||||
 | 
					        if (proxyUrl && proxyUrl.hostname) {
 | 
				
			||||||
 | 
					            const agentOptions = {
 | 
				
			||||||
 | 
					                maxSockets,
 | 
				
			||||||
 | 
					                keepAlive: this._keepAlive,
 | 
				
			||||||
 | 
					                proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {
 | 
				
			||||||
 | 
					                    proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`
 | 
				
			||||||
 | 
					                })), { host: proxyUrl.hostname, port: proxyUrl.port })
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					            let tunnelAgent;
 | 
				
			||||||
 | 
					            const overHttps = proxyUrl.protocol === 'https:';
 | 
				
			||||||
 | 
					            if (usingSsl) {
 | 
				
			||||||
 | 
					                tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            agent = tunnelAgent(agentOptions);
 | 
				
			||||||
 | 
					            this._proxyAgent = agent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // if reusing agent across request and tunneling agent isn't assigned create a new agent
 | 
				
			||||||
 | 
					        if (this._keepAlive && !agent) {
 | 
				
			||||||
 | 
					            const options = { keepAlive: this._keepAlive, maxSockets };
 | 
				
			||||||
 | 
					            agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
 | 
				
			||||||
 | 
					            this._agent = agent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // if not using private agent and tunnel agent isn't setup then use global agent
 | 
				
			||||||
 | 
					        if (!agent) {
 | 
				
			||||||
 | 
					            agent = usingSsl ? https.globalAgent : http.globalAgent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (usingSsl && this._ignoreSslError) {
 | 
				
			||||||
 | 
					            // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
 | 
				
			||||||
 | 
					            // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
 | 
				
			||||||
 | 
					            // we have to cast it to any and change it directly
 | 
				
			||||||
 | 
					            agent.options = Object.assign(agent.options || {}, {
 | 
				
			||||||
 | 
					                rejectUnauthorized: false
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return agent;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _performExponentialBackoff(retryNumber) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
 | 
				
			||||||
 | 
					            const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
 | 
				
			||||||
 | 
					            return new Promise(resolve => setTimeout(() => resolve(), ms));
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _processResponse(res, options) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					                const statusCode = res.message.statusCode || 0;
 | 
				
			||||||
 | 
					                const response = {
 | 
				
			||||||
 | 
					                    statusCode,
 | 
				
			||||||
 | 
					                    result: null,
 | 
				
			||||||
 | 
					                    headers: {}
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					                // not found leads to null obj returned
 | 
				
			||||||
 | 
					                if (statusCode === HttpCodes.NotFound) {
 | 
				
			||||||
 | 
					                    resolve(response);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                // get the result from the body
 | 
				
			||||||
 | 
					                function dateTimeDeserializer(key, value) {
 | 
				
			||||||
 | 
					                    if (typeof value === 'string') {
 | 
				
			||||||
 | 
					                        const a = new Date(value);
 | 
				
			||||||
 | 
					                        if (!isNaN(a.valueOf())) {
 | 
				
			||||||
 | 
					                            return a;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    return value;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                let obj;
 | 
				
			||||||
 | 
					                let contents;
 | 
				
			||||||
 | 
					                try {
 | 
				
			||||||
 | 
					                    contents = yield res.readBody();
 | 
				
			||||||
 | 
					                    if (contents && contents.length > 0) {
 | 
				
			||||||
 | 
					                        if (options && options.deserializeDates) {
 | 
				
			||||||
 | 
					                            obj = JSON.parse(contents, dateTimeDeserializer);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        else {
 | 
				
			||||||
 | 
					                            obj = JSON.parse(contents);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        response.result = obj;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    response.headers = res.message.headers;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                catch (err) {
 | 
				
			||||||
 | 
					                    // Invalid resource (contents not json);  leaving result obj null
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                // note that 3xx redirects are handled by the http layer.
 | 
				
			||||||
 | 
					                if (statusCode > 299) {
 | 
				
			||||||
 | 
					                    let msg;
 | 
				
			||||||
 | 
					                    // if exception/error in body, attempt to get better error
 | 
				
			||||||
 | 
					                    if (obj && obj.message) {
 | 
				
			||||||
 | 
					                        msg = obj.message;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else if (contents && contents.length > 0) {
 | 
				
			||||||
 | 
					                        // it may be the case that the exception is in the body message as string
 | 
				
			||||||
 | 
					                        msg = contents;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else {
 | 
				
			||||||
 | 
					                        msg = `Failed request: (${statusCode})`;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    const err = new HttpClientError(msg, statusCode);
 | 
				
			||||||
 | 
					                    err.result = response.result;
 | 
				
			||||||
 | 
					                    reject(err);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else {
 | 
				
			||||||
 | 
					                    resolve(response);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }));
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.HttpClient = HttpClient;
 | 
				
			||||||
 | 
					const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
 | 
				
			||||||
 | 
					//# sourceMappingURL=index.js.map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***/ }),
 | 
				
			||||||
/* 711 */,
 | 
					/* 711 */,
 | 
				
			||||||
/* 712 */,
 | 
					/* 712 */,
 | 
				
			||||||
/* 713 */,
 | 
					/* 713 */,
 | 
				
			||||||
| 
						 | 
					@ -51797,7 +52562,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
const core = __importStar(__webpack_require__(470));
 | 
					const core = __importStar(__webpack_require__(470));
 | 
				
			||||||
const http_client_1 = __webpack_require__(539);
 | 
					const http_client_1 = __webpack_require__(710);
 | 
				
			||||||
const constants_1 = __webpack_require__(931);
 | 
					const constants_1 = __webpack_require__(931);
 | 
				
			||||||
function isSuccessStatusCode(statusCode) {
 | 
					function isSuccessStatusCode(statusCode) {
 | 
				
			||||||
    if (!statusCode) {
 | 
					    if (!statusCode) {
 | 
				
			||||||
| 
						 | 
					@ -51874,7 +52639,7 @@ function retryTypedResponse(name, method, maxAttempts = constants_1.DefaultRetry
 | 
				
			||||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
					    return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
        return yield retry(name, method, (response) => response.statusCode, maxAttempts, delay, 
 | 
					        return yield retry(name, method, (response) => response.statusCode, maxAttempts, delay, 
 | 
				
			||||||
        // If the error object contains the statusCode property, extract it and return
 | 
					        // If the error object contains the statusCode property, extract it and return
 | 
				
			||||||
        // an ITypedResponse<T> so it can be processed by the retry logic.
 | 
					        // an TypedResponse<T> so it can be processed by the retry logic.
 | 
				
			||||||
        (error) => {
 | 
					        (error) => {
 | 
				
			||||||
            if (error instanceof http_client_1.HttpClientError) {
 | 
					            if (error instanceof http_client_1.HttpClientError) {
 | 
				
			||||||
                return {
 | 
					                return {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										781
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										781
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
								
							| 
						 | 
					@ -3185,8 +3185,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
const core = __importStar(__webpack_require__(470));
 | 
					const core = __importStar(__webpack_require__(470));
 | 
				
			||||||
const http_client_1 = __webpack_require__(539);
 | 
					const http_client_1 = __webpack_require__(710);
 | 
				
			||||||
const auth_1 = __webpack_require__(226);
 | 
					const auth_1 = __webpack_require__(206);
 | 
				
			||||||
const crypto = __importStar(__webpack_require__(417));
 | 
					const crypto = __importStar(__webpack_require__(417));
 | 
				
			||||||
const fs = __importStar(__webpack_require__(747));
 | 
					const fs = __importStar(__webpack_require__(747));
 | 
				
			||||||
const url_1 = __webpack_require__(835);
 | 
					const url_1 = __webpack_require__(835);
 | 
				
			||||||
| 
						 | 
					@ -4689,7 +4689,93 @@ exports.default = _default;
 | 
				
			||||||
/* 203 */,
 | 
					/* 203 */,
 | 
				
			||||||
/* 204 */,
 | 
					/* 204 */,
 | 
				
			||||||
/* 205 */,
 | 
					/* 205 */,
 | 
				
			||||||
/* 206 */,
 | 
					/* 206 */
 | 
				
			||||||
 | 
					/***/ (function(__unusedmodule, exports) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
				
			||||||
 | 
					    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
 | 
				
			||||||
 | 
					    return new (P || (P = Promise))(function (resolve, reject) {
 | 
				
			||||||
 | 
					        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
				
			||||||
 | 
					        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
				
			||||||
 | 
					        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
 | 
				
			||||||
 | 
					        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
 | 
					exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;
 | 
				
			||||||
 | 
					class BasicCredentialHandler {
 | 
				
			||||||
 | 
					    constructor(username, password) {
 | 
				
			||||||
 | 
					        this.username = username;
 | 
				
			||||||
 | 
					        this.password = password;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    prepareRequest(options) {
 | 
				
			||||||
 | 
					        if (!options.headers) {
 | 
				
			||||||
 | 
					            throw Error('The request has no headers');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // This handler cannot handle 401
 | 
				
			||||||
 | 
					    canHandleAuthentication() {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    handleAuthentication() {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            throw new Error('not implemented');
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.BasicCredentialHandler = BasicCredentialHandler;
 | 
				
			||||||
 | 
					class BearerCredentialHandler {
 | 
				
			||||||
 | 
					    constructor(token) {
 | 
				
			||||||
 | 
					        this.token = token;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // currently implements pre-authorization
 | 
				
			||||||
 | 
					    // TODO: support preAuth = false where it hooks on 401
 | 
				
			||||||
 | 
					    prepareRequest(options) {
 | 
				
			||||||
 | 
					        if (!options.headers) {
 | 
				
			||||||
 | 
					            throw Error('The request has no headers');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        options.headers['Authorization'] = `Bearer ${this.token}`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // This handler cannot handle 401
 | 
				
			||||||
 | 
					    canHandleAuthentication() {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    handleAuthentication() {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            throw new Error('not implemented');
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.BearerCredentialHandler = BearerCredentialHandler;
 | 
				
			||||||
 | 
					class PersonalAccessTokenCredentialHandler {
 | 
				
			||||||
 | 
					    constructor(token) {
 | 
				
			||||||
 | 
					        this.token = token;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // currently implements pre-authorization
 | 
				
			||||||
 | 
					    // TODO: support preAuth = false where it hooks on 401
 | 
				
			||||||
 | 
					    prepareRequest(options) {
 | 
				
			||||||
 | 
					        if (!options.headers) {
 | 
				
			||||||
 | 
					            throw Error('The request has no headers');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // This handler cannot handle 401
 | 
				
			||||||
 | 
					    canHandleAuthentication() {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    handleAuthentication() {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            throw new Error('not implemented');
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;
 | 
				
			||||||
 | 
					//# sourceMappingURL=auth.js.map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***/ }),
 | 
				
			||||||
/* 207 */
 | 
					/* 207 */
 | 
				
			||||||
/***/ (function(__unusedmodule, exports) {
 | 
					/***/ (function(__unusedmodule, exports) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5247,7 +5333,73 @@ function _default(name, version, hashfunc) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***/ }),
 | 
					/***/ }),
 | 
				
			||||||
/* 242 */,
 | 
					/* 242 */,
 | 
				
			||||||
/* 243 */,
 | 
					/* 243 */
 | 
				
			||||||
 | 
					/***/ (function(__unusedmodule, exports) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
 | 
					exports.checkBypass = exports.getProxyUrl = void 0;
 | 
				
			||||||
 | 
					function getProxyUrl(reqUrl) {
 | 
				
			||||||
 | 
					    const usingSsl = reqUrl.protocol === 'https:';
 | 
				
			||||||
 | 
					    if (checkBypass(reqUrl)) {
 | 
				
			||||||
 | 
					        return undefined;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    const proxyVar = (() => {
 | 
				
			||||||
 | 
					        if (usingSsl) {
 | 
				
			||||||
 | 
					            return process.env['https_proxy'] || process.env['HTTPS_PROXY'];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            return process.env['http_proxy'] || process.env['HTTP_PROXY'];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    })();
 | 
				
			||||||
 | 
					    if (proxyVar) {
 | 
				
			||||||
 | 
					        return new URL(proxyVar);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					        return undefined;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.getProxyUrl = getProxyUrl;
 | 
				
			||||||
 | 
					function checkBypass(reqUrl) {
 | 
				
			||||||
 | 
					    if (!reqUrl.hostname) {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';
 | 
				
			||||||
 | 
					    if (!noProxy) {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // Determine the request port
 | 
				
			||||||
 | 
					    let reqPort;
 | 
				
			||||||
 | 
					    if (reqUrl.port) {
 | 
				
			||||||
 | 
					        reqPort = Number(reqUrl.port);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else if (reqUrl.protocol === 'http:') {
 | 
				
			||||||
 | 
					        reqPort = 80;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else if (reqUrl.protocol === 'https:') {
 | 
				
			||||||
 | 
					        reqPort = 443;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // Format the request hostname and hostname with port
 | 
				
			||||||
 | 
					    const upperReqHosts = [reqUrl.hostname.toUpperCase()];
 | 
				
			||||||
 | 
					    if (typeof reqPort === 'number') {
 | 
				
			||||||
 | 
					        upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // Compare request host against noproxy
 | 
				
			||||||
 | 
					    for (const upperNoProxyItem of noProxy
 | 
				
			||||||
 | 
					        .split(',')
 | 
				
			||||||
 | 
					        .map(x => x.trim().toUpperCase())
 | 
				
			||||||
 | 
					        .filter(x => x)) {
 | 
				
			||||||
 | 
					        if (upperReqHosts.some(x => x === upperNoProxyItem)) {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.checkBypass = checkBypass;
 | 
				
			||||||
 | 
					//# sourceMappingURL=proxy.js.map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***/ }),
 | 
				
			||||||
/* 244 */,
 | 
					/* 244 */,
 | 
				
			||||||
/* 245 */
 | 
					/* 245 */
 | 
				
			||||||
/***/ (function(__unusedmodule, exports, __webpack_require__) {
 | 
					/***/ (function(__unusedmodule, exports, __webpack_require__) {
 | 
				
			||||||
| 
						 | 
					@ -5306,7 +5458,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
const core = __importStar(__webpack_require__(470));
 | 
					const core = __importStar(__webpack_require__(470));
 | 
				
			||||||
const http_client_1 = __webpack_require__(539);
 | 
					const http_client_1 = __webpack_require__(710);
 | 
				
			||||||
const storage_blob_1 = __webpack_require__(373);
 | 
					const storage_blob_1 = __webpack_require__(373);
 | 
				
			||||||
const buffer = __importStar(__webpack_require__(293));
 | 
					const buffer = __importStar(__webpack_require__(293));
 | 
				
			||||||
const fs = __importStar(__webpack_require__(747));
 | 
					const fs = __importStar(__webpack_require__(747));
 | 
				
			||||||
| 
						 | 
					@ -46846,6 +46998,9 @@ function saveCache(paths, key, options) {
 | 
				
			||||||
        const cachePaths = yield utils.resolvePaths(paths);
 | 
					        const cachePaths = yield utils.resolvePaths(paths);
 | 
				
			||||||
        core.debug('Cache Paths:');
 | 
					        core.debug('Cache Paths:');
 | 
				
			||||||
        core.debug(`${JSON.stringify(cachePaths)}`);
 | 
					        core.debug(`${JSON.stringify(cachePaths)}`);
 | 
				
			||||||
 | 
					        if (cachePaths.length === 0) {
 | 
				
			||||||
 | 
					            throw new Error(`Path Validation Error: Path(s) specified in the action for caching do(es) not exist, hence no cache is being saved.`);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        const archiveFolder = yield utils.createTempDirectory();
 | 
					        const archiveFolder = yield utils.createTempDirectory();
 | 
				
			||||||
        const archivePath = path.join(archiveFolder, utils.getCacheFileName(compressionMethod));
 | 
					        const archivePath = path.join(archiveFolder, utils.getCacheFileName(compressionMethod));
 | 
				
			||||||
        core.debug(`Archive Path: ${archivePath}`);
 | 
					        core.debug(`Archive Path: ${archivePath}`);
 | 
				
			||||||
| 
						 | 
					@ -47031,7 +47186,617 @@ Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***/ }),
 | 
					/***/ }),
 | 
				
			||||||
/* 709 */,
 | 
					/* 709 */,
 | 
				
			||||||
/* 710 */,
 | 
					/* 710 */
 | 
				
			||||||
 | 
					/***/ (function(__unusedmodule, exports, __webpack_require__) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* eslint-disable @typescript-eslint/no-explicit-any */
 | 
				
			||||||
 | 
					var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 | 
				
			||||||
 | 
					    if (k2 === undefined) k2 = k;
 | 
				
			||||||
 | 
					    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
 | 
				
			||||||
 | 
					}) : (function(o, m, k, k2) {
 | 
				
			||||||
 | 
					    if (k2 === undefined) k2 = k;
 | 
				
			||||||
 | 
					    o[k2] = m[k];
 | 
				
			||||||
 | 
					}));
 | 
				
			||||||
 | 
					var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 | 
				
			||||||
 | 
					    Object.defineProperty(o, "default", { enumerable: true, value: v });
 | 
				
			||||||
 | 
					}) : function(o, v) {
 | 
				
			||||||
 | 
					    o["default"] = v;
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					var __importStar = (this && this.__importStar) || function (mod) {
 | 
				
			||||||
 | 
					    if (mod && mod.__esModule) return mod;
 | 
				
			||||||
 | 
					    var result = {};
 | 
				
			||||||
 | 
					    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 | 
				
			||||||
 | 
					    __setModuleDefault(result, mod);
 | 
				
			||||||
 | 
					    return result;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
				
			||||||
 | 
					    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
 | 
				
			||||||
 | 
					    return new (P || (P = Promise))(function (resolve, reject) {
 | 
				
			||||||
 | 
					        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
				
			||||||
 | 
					        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
				
			||||||
 | 
					        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
 | 
				
			||||||
 | 
					        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
 | 
					exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;
 | 
				
			||||||
 | 
					const http = __importStar(__webpack_require__(605));
 | 
				
			||||||
 | 
					const https = __importStar(__webpack_require__(211));
 | 
				
			||||||
 | 
					const pm = __importStar(__webpack_require__(243));
 | 
				
			||||||
 | 
					const tunnel = __importStar(__webpack_require__(413));
 | 
				
			||||||
 | 
					var HttpCodes;
 | 
				
			||||||
 | 
					(function (HttpCodes) {
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["OK"] = 200] = "OK";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["Gone"] = 410] = "Gone";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable";
 | 
				
			||||||
 | 
					    HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout";
 | 
				
			||||||
 | 
					})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));
 | 
				
			||||||
 | 
					var Headers;
 | 
				
			||||||
 | 
					(function (Headers) {
 | 
				
			||||||
 | 
					    Headers["Accept"] = "accept";
 | 
				
			||||||
 | 
					    Headers["ContentType"] = "content-type";
 | 
				
			||||||
 | 
					})(Headers = exports.Headers || (exports.Headers = {}));
 | 
				
			||||||
 | 
					var MediaTypes;
 | 
				
			||||||
 | 
					(function (MediaTypes) {
 | 
				
			||||||
 | 
					    MediaTypes["ApplicationJson"] = "application/json";
 | 
				
			||||||
 | 
					})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Returns the proxy URL, depending upon the supplied url and proxy environment variables.
 | 
				
			||||||
 | 
					 * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					function getProxyUrl(serverUrl) {
 | 
				
			||||||
 | 
					    const proxyUrl = pm.getProxyUrl(new URL(serverUrl));
 | 
				
			||||||
 | 
					    return proxyUrl ? proxyUrl.href : '';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.getProxyUrl = getProxyUrl;
 | 
				
			||||||
 | 
					const HttpRedirectCodes = [
 | 
				
			||||||
 | 
					    HttpCodes.MovedPermanently,
 | 
				
			||||||
 | 
					    HttpCodes.ResourceMoved,
 | 
				
			||||||
 | 
					    HttpCodes.SeeOther,
 | 
				
			||||||
 | 
					    HttpCodes.TemporaryRedirect,
 | 
				
			||||||
 | 
					    HttpCodes.PermanentRedirect
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					const HttpResponseRetryCodes = [
 | 
				
			||||||
 | 
					    HttpCodes.BadGateway,
 | 
				
			||||||
 | 
					    HttpCodes.ServiceUnavailable,
 | 
				
			||||||
 | 
					    HttpCodes.GatewayTimeout
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];
 | 
				
			||||||
 | 
					const ExponentialBackoffCeiling = 10;
 | 
				
			||||||
 | 
					const ExponentialBackoffTimeSlice = 5;
 | 
				
			||||||
 | 
					class HttpClientError extends Error {
 | 
				
			||||||
 | 
					    constructor(message, statusCode) {
 | 
				
			||||||
 | 
					        super(message);
 | 
				
			||||||
 | 
					        this.name = 'HttpClientError';
 | 
				
			||||||
 | 
					        this.statusCode = statusCode;
 | 
				
			||||||
 | 
					        Object.setPrototypeOf(this, HttpClientError.prototype);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.HttpClientError = HttpClientError;
 | 
				
			||||||
 | 
					class HttpClientResponse {
 | 
				
			||||||
 | 
					    constructor(message) {
 | 
				
			||||||
 | 
					        this.message = message;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    readBody() {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					                let output = Buffer.alloc(0);
 | 
				
			||||||
 | 
					                this.message.on('data', (chunk) => {
 | 
				
			||||||
 | 
					                    output = Buffer.concat([output, chunk]);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					                this.message.on('end', () => {
 | 
				
			||||||
 | 
					                    resolve(output.toString());
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					            }));
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.HttpClientResponse = HttpClientResponse;
 | 
				
			||||||
 | 
					function isHttps(requestUrl) {
 | 
				
			||||||
 | 
					    const parsedUrl = new URL(requestUrl);
 | 
				
			||||||
 | 
					    return parsedUrl.protocol === 'https:';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.isHttps = isHttps;
 | 
				
			||||||
 | 
					class HttpClient {
 | 
				
			||||||
 | 
					    constructor(userAgent, handlers, requestOptions) {
 | 
				
			||||||
 | 
					        this._ignoreSslError = false;
 | 
				
			||||||
 | 
					        this._allowRedirects = true;
 | 
				
			||||||
 | 
					        this._allowRedirectDowngrade = false;
 | 
				
			||||||
 | 
					        this._maxRedirects = 50;
 | 
				
			||||||
 | 
					        this._allowRetries = false;
 | 
				
			||||||
 | 
					        this._maxRetries = 1;
 | 
				
			||||||
 | 
					        this._keepAlive = false;
 | 
				
			||||||
 | 
					        this._disposed = false;
 | 
				
			||||||
 | 
					        this.userAgent = userAgent;
 | 
				
			||||||
 | 
					        this.handlers = handlers || [];
 | 
				
			||||||
 | 
					        this.requestOptions = requestOptions;
 | 
				
			||||||
 | 
					        if (requestOptions) {
 | 
				
			||||||
 | 
					            if (requestOptions.ignoreSslError != null) {
 | 
				
			||||||
 | 
					                this._ignoreSslError = requestOptions.ignoreSslError;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            this._socketTimeout = requestOptions.socketTimeout;
 | 
				
			||||||
 | 
					            if (requestOptions.allowRedirects != null) {
 | 
				
			||||||
 | 
					                this._allowRedirects = requestOptions.allowRedirects;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (requestOptions.allowRedirectDowngrade != null) {
 | 
				
			||||||
 | 
					                this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (requestOptions.maxRedirects != null) {
 | 
				
			||||||
 | 
					                this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (requestOptions.keepAlive != null) {
 | 
				
			||||||
 | 
					                this._keepAlive = requestOptions.keepAlive;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (requestOptions.allowRetries != null) {
 | 
				
			||||||
 | 
					                this._allowRetries = requestOptions.allowRetries;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (requestOptions.maxRetries != null) {
 | 
				
			||||||
 | 
					                this._maxRetries = requestOptions.maxRetries;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    options(requestUrl, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    get(requestUrl, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('GET', requestUrl, null, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    del(requestUrl, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('DELETE', requestUrl, null, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    post(requestUrl, data, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('POST', requestUrl, data, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    patch(requestUrl, data, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('PATCH', requestUrl, data, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    put(requestUrl, data, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('PUT', requestUrl, data, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    head(requestUrl, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request('HEAD', requestUrl, null, additionalHeaders || {});
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    sendStream(verb, requestUrl, stream, additionalHeaders) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return this.request(verb, requestUrl, stream, additionalHeaders);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets a typed object from an endpoint
 | 
				
			||||||
 | 
					     * Be aware that not found returns a null.  Other errors (4xx, 5xx) reject the promise
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    getJson(requestUrl, additionalHeaders = {}) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            const res = yield this.get(requestUrl, additionalHeaders);
 | 
				
			||||||
 | 
					            return this._processResponse(res, this.requestOptions);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    postJson(requestUrl, obj, additionalHeaders = {}) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            const data = JSON.stringify(obj, null, 2);
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            const res = yield this.post(requestUrl, data, additionalHeaders);
 | 
				
			||||||
 | 
					            return this._processResponse(res, this.requestOptions);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    putJson(requestUrl, obj, additionalHeaders = {}) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            const data = JSON.stringify(obj, null, 2);
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            const res = yield this.put(requestUrl, data, additionalHeaders);
 | 
				
			||||||
 | 
					            return this._processResponse(res, this.requestOptions);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    patchJson(requestUrl, obj, additionalHeaders = {}) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            const data = JSON.stringify(obj, null, 2);
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
 | 
				
			||||||
 | 
					            const res = yield this.patch(requestUrl, data, additionalHeaders);
 | 
				
			||||||
 | 
					            return this._processResponse(res, this.requestOptions);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Makes a raw http request.
 | 
				
			||||||
 | 
					     * All other methods such as get, post, patch, and request ultimately call this.
 | 
				
			||||||
 | 
					     * Prefer get, del, post and patch
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    request(verb, requestUrl, data, headers) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            if (this._disposed) {
 | 
				
			||||||
 | 
					                throw new Error('Client has already been disposed.');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            const parsedUrl = new URL(requestUrl);
 | 
				
			||||||
 | 
					            let info = this._prepareRequest(verb, parsedUrl, headers);
 | 
				
			||||||
 | 
					            // Only perform retries on reads since writes may not be idempotent.
 | 
				
			||||||
 | 
					            const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)
 | 
				
			||||||
 | 
					                ? this._maxRetries + 1
 | 
				
			||||||
 | 
					                : 1;
 | 
				
			||||||
 | 
					            let numTries = 0;
 | 
				
			||||||
 | 
					            let response;
 | 
				
			||||||
 | 
					            do {
 | 
				
			||||||
 | 
					                response = yield this.requestRaw(info, data);
 | 
				
			||||||
 | 
					                // Check if it's an authentication challenge
 | 
				
			||||||
 | 
					                if (response &&
 | 
				
			||||||
 | 
					                    response.message &&
 | 
				
			||||||
 | 
					                    response.message.statusCode === HttpCodes.Unauthorized) {
 | 
				
			||||||
 | 
					                    let authenticationHandler;
 | 
				
			||||||
 | 
					                    for (const handler of this.handlers) {
 | 
				
			||||||
 | 
					                        if (handler.canHandleAuthentication(response)) {
 | 
				
			||||||
 | 
					                            authenticationHandler = handler;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    if (authenticationHandler) {
 | 
				
			||||||
 | 
					                        return authenticationHandler.handleAuthentication(this, info, data);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else {
 | 
				
			||||||
 | 
					                        // We have received an unauthorized response but have no handlers to handle it.
 | 
				
			||||||
 | 
					                        // Let the response return to the caller.
 | 
				
			||||||
 | 
					                        return response;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                let redirectsRemaining = this._maxRedirects;
 | 
				
			||||||
 | 
					                while (response.message.statusCode &&
 | 
				
			||||||
 | 
					                    HttpRedirectCodes.includes(response.message.statusCode) &&
 | 
				
			||||||
 | 
					                    this._allowRedirects &&
 | 
				
			||||||
 | 
					                    redirectsRemaining > 0) {
 | 
				
			||||||
 | 
					                    const redirectUrl = response.message.headers['location'];
 | 
				
			||||||
 | 
					                    if (!redirectUrl) {
 | 
				
			||||||
 | 
					                        // if there's no location to redirect to, we won't
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    const parsedRedirectUrl = new URL(redirectUrl);
 | 
				
			||||||
 | 
					                    if (parsedUrl.protocol === 'https:' &&
 | 
				
			||||||
 | 
					                        parsedUrl.protocol !== parsedRedirectUrl.protocol &&
 | 
				
			||||||
 | 
					                        !this._allowRedirectDowngrade) {
 | 
				
			||||||
 | 
					                        throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    // we need to finish reading the response before reassigning response
 | 
				
			||||||
 | 
					                    // which will leak the open socket.
 | 
				
			||||||
 | 
					                    yield response.readBody();
 | 
				
			||||||
 | 
					                    // strip authorization header if redirected to a different hostname
 | 
				
			||||||
 | 
					                    if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {
 | 
				
			||||||
 | 
					                        for (const header in headers) {
 | 
				
			||||||
 | 
					                            // header names are case insensitive
 | 
				
			||||||
 | 
					                            if (header.toLowerCase() === 'authorization') {
 | 
				
			||||||
 | 
					                                delete headers[header];
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    // let's make the request with the new redirectUrl
 | 
				
			||||||
 | 
					                    info = this._prepareRequest(verb, parsedRedirectUrl, headers);
 | 
				
			||||||
 | 
					                    response = yield this.requestRaw(info, data);
 | 
				
			||||||
 | 
					                    redirectsRemaining--;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (!response.message.statusCode ||
 | 
				
			||||||
 | 
					                    !HttpResponseRetryCodes.includes(response.message.statusCode)) {
 | 
				
			||||||
 | 
					                    // If not a retry code, return immediately instead of retrying
 | 
				
			||||||
 | 
					                    return response;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                numTries += 1;
 | 
				
			||||||
 | 
					                if (numTries < maxTries) {
 | 
				
			||||||
 | 
					                    yield response.readBody();
 | 
				
			||||||
 | 
					                    yield this._performExponentialBackoff(numTries);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } while (numTries < maxTries);
 | 
				
			||||||
 | 
					            return response;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Needs to be called if keepAlive is set to true in request options.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    dispose() {
 | 
				
			||||||
 | 
					        if (this._agent) {
 | 
				
			||||||
 | 
					            this._agent.destroy();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        this._disposed = true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Raw request.
 | 
				
			||||||
 | 
					     * @param info
 | 
				
			||||||
 | 
					     * @param data
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    requestRaw(info, data) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return new Promise((resolve, reject) => {
 | 
				
			||||||
 | 
					                function callbackForResult(err, res) {
 | 
				
			||||||
 | 
					                    if (err) {
 | 
				
			||||||
 | 
					                        reject(err);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else if (!res) {
 | 
				
			||||||
 | 
					                        // If `err` is not passed, then `res` must be passed.
 | 
				
			||||||
 | 
					                        reject(new Error('Unknown error'));
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else {
 | 
				
			||||||
 | 
					                        resolve(res);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                this.requestRawWithCallback(info, data, callbackForResult);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Raw request with callback.
 | 
				
			||||||
 | 
					     * @param info
 | 
				
			||||||
 | 
					     * @param data
 | 
				
			||||||
 | 
					     * @param onResult
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    requestRawWithCallback(info, data, onResult) {
 | 
				
			||||||
 | 
					        if (typeof data === 'string') {
 | 
				
			||||||
 | 
					            if (!info.options.headers) {
 | 
				
			||||||
 | 
					                info.options.headers = {};
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        let callbackCalled = false;
 | 
				
			||||||
 | 
					        function handleResult(err, res) {
 | 
				
			||||||
 | 
					            if (!callbackCalled) {
 | 
				
			||||||
 | 
					                callbackCalled = true;
 | 
				
			||||||
 | 
					                onResult(err, res);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        const req = info.httpModule.request(info.options, (msg) => {
 | 
				
			||||||
 | 
					            const res = new HttpClientResponse(msg);
 | 
				
			||||||
 | 
					            handleResult(undefined, res);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        let socket;
 | 
				
			||||||
 | 
					        req.on('socket', sock => {
 | 
				
			||||||
 | 
					            socket = sock;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        // If we ever get disconnected, we want the socket to timeout eventually
 | 
				
			||||||
 | 
					        req.setTimeout(this._socketTimeout || 3 * 60000, () => {
 | 
				
			||||||
 | 
					            if (socket) {
 | 
				
			||||||
 | 
					                socket.end();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            handleResult(new Error(`Request timeout: ${info.options.path}`));
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        req.on('error', function (err) {
 | 
				
			||||||
 | 
					            // err has statusCode property
 | 
				
			||||||
 | 
					            // res should have headers
 | 
				
			||||||
 | 
					            handleResult(err);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        if (data && typeof data === 'string') {
 | 
				
			||||||
 | 
					            req.write(data, 'utf8');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (data && typeof data !== 'string') {
 | 
				
			||||||
 | 
					            data.on('close', function () {
 | 
				
			||||||
 | 
					                req.end();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					            data.pipe(req);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            req.end();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets an http agent. This function is useful when you need an http agent that handles
 | 
				
			||||||
 | 
					     * routing through a proxy server - depending upon the url and proxy environment variables.
 | 
				
			||||||
 | 
					     * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    getAgent(serverUrl) {
 | 
				
			||||||
 | 
					        const parsedUrl = new URL(serverUrl);
 | 
				
			||||||
 | 
					        return this._getAgent(parsedUrl);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _prepareRequest(method, requestUrl, headers) {
 | 
				
			||||||
 | 
					        const info = {};
 | 
				
			||||||
 | 
					        info.parsedUrl = requestUrl;
 | 
				
			||||||
 | 
					        const usingSsl = info.parsedUrl.protocol === 'https:';
 | 
				
			||||||
 | 
					        info.httpModule = usingSsl ? https : http;
 | 
				
			||||||
 | 
					        const defaultPort = usingSsl ? 443 : 80;
 | 
				
			||||||
 | 
					        info.options = {};
 | 
				
			||||||
 | 
					        info.options.host = info.parsedUrl.hostname;
 | 
				
			||||||
 | 
					        info.options.port = info.parsedUrl.port
 | 
				
			||||||
 | 
					            ? parseInt(info.parsedUrl.port)
 | 
				
			||||||
 | 
					            : defaultPort;
 | 
				
			||||||
 | 
					        info.options.path =
 | 
				
			||||||
 | 
					            (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');
 | 
				
			||||||
 | 
					        info.options.method = method;
 | 
				
			||||||
 | 
					        info.options.headers = this._mergeHeaders(headers);
 | 
				
			||||||
 | 
					        if (this.userAgent != null) {
 | 
				
			||||||
 | 
					            info.options.headers['user-agent'] = this.userAgent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        info.options.agent = this._getAgent(info.parsedUrl);
 | 
				
			||||||
 | 
					        // gives handlers an opportunity to participate
 | 
				
			||||||
 | 
					        if (this.handlers) {
 | 
				
			||||||
 | 
					            for (const handler of this.handlers) {
 | 
				
			||||||
 | 
					                handler.prepareRequest(info.options);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return info;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _mergeHeaders(headers) {
 | 
				
			||||||
 | 
					        if (this.requestOptions && this.requestOptions.headers) {
 | 
				
			||||||
 | 
					            return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return lowercaseKeys(headers || {});
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _getExistingOrDefaultHeader(additionalHeaders, header, _default) {
 | 
				
			||||||
 | 
					        let clientHeader;
 | 
				
			||||||
 | 
					        if (this.requestOptions && this.requestOptions.headers) {
 | 
				
			||||||
 | 
					            clientHeader = lowercaseKeys(this.requestOptions.headers)[header];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return additionalHeaders[header] || clientHeader || _default;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _getAgent(parsedUrl) {
 | 
				
			||||||
 | 
					        let agent;
 | 
				
			||||||
 | 
					        const proxyUrl = pm.getProxyUrl(parsedUrl);
 | 
				
			||||||
 | 
					        const useProxy = proxyUrl && proxyUrl.hostname;
 | 
				
			||||||
 | 
					        if (this._keepAlive && useProxy) {
 | 
				
			||||||
 | 
					            agent = this._proxyAgent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (this._keepAlive && !useProxy) {
 | 
				
			||||||
 | 
					            agent = this._agent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // if agent is already assigned use that agent.
 | 
				
			||||||
 | 
					        if (agent) {
 | 
				
			||||||
 | 
					            return agent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        const usingSsl = parsedUrl.protocol === 'https:';
 | 
				
			||||||
 | 
					        let maxSockets = 100;
 | 
				
			||||||
 | 
					        if (this.requestOptions) {
 | 
				
			||||||
 | 
					            maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.
 | 
				
			||||||
 | 
					        if (proxyUrl && proxyUrl.hostname) {
 | 
				
			||||||
 | 
					            const agentOptions = {
 | 
				
			||||||
 | 
					                maxSockets,
 | 
				
			||||||
 | 
					                keepAlive: this._keepAlive,
 | 
				
			||||||
 | 
					                proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {
 | 
				
			||||||
 | 
					                    proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`
 | 
				
			||||||
 | 
					                })), { host: proxyUrl.hostname, port: proxyUrl.port })
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					            let tunnelAgent;
 | 
				
			||||||
 | 
					            const overHttps = proxyUrl.protocol === 'https:';
 | 
				
			||||||
 | 
					            if (usingSsl) {
 | 
				
			||||||
 | 
					                tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            agent = tunnelAgent(agentOptions);
 | 
				
			||||||
 | 
					            this._proxyAgent = agent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // if reusing agent across request and tunneling agent isn't assigned create a new agent
 | 
				
			||||||
 | 
					        if (this._keepAlive && !agent) {
 | 
				
			||||||
 | 
					            const options = { keepAlive: this._keepAlive, maxSockets };
 | 
				
			||||||
 | 
					            agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
 | 
				
			||||||
 | 
					            this._agent = agent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // if not using private agent and tunnel agent isn't setup then use global agent
 | 
				
			||||||
 | 
					        if (!agent) {
 | 
				
			||||||
 | 
					            agent = usingSsl ? https.globalAgent : http.globalAgent;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (usingSsl && this._ignoreSslError) {
 | 
				
			||||||
 | 
					            // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
 | 
				
			||||||
 | 
					            // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
 | 
				
			||||||
 | 
					            // we have to cast it to any and change it directly
 | 
				
			||||||
 | 
					            agent.options = Object.assign(agent.options || {}, {
 | 
				
			||||||
 | 
					                rejectUnauthorized: false
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return agent;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _performExponentialBackoff(retryNumber) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
 | 
				
			||||||
 | 
					            const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
 | 
				
			||||||
 | 
					            return new Promise(resolve => setTimeout(() => resolve(), ms));
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _processResponse(res, options) {
 | 
				
			||||||
 | 
					        return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					            return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
 | 
					                const statusCode = res.message.statusCode || 0;
 | 
				
			||||||
 | 
					                const response = {
 | 
				
			||||||
 | 
					                    statusCode,
 | 
				
			||||||
 | 
					                    result: null,
 | 
				
			||||||
 | 
					                    headers: {}
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					                // not found leads to null obj returned
 | 
				
			||||||
 | 
					                if (statusCode === HttpCodes.NotFound) {
 | 
				
			||||||
 | 
					                    resolve(response);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                // get the result from the body
 | 
				
			||||||
 | 
					                function dateTimeDeserializer(key, value) {
 | 
				
			||||||
 | 
					                    if (typeof value === 'string') {
 | 
				
			||||||
 | 
					                        const a = new Date(value);
 | 
				
			||||||
 | 
					                        if (!isNaN(a.valueOf())) {
 | 
				
			||||||
 | 
					                            return a;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    return value;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                let obj;
 | 
				
			||||||
 | 
					                let contents;
 | 
				
			||||||
 | 
					                try {
 | 
				
			||||||
 | 
					                    contents = yield res.readBody();
 | 
				
			||||||
 | 
					                    if (contents && contents.length > 0) {
 | 
				
			||||||
 | 
					                        if (options && options.deserializeDates) {
 | 
				
			||||||
 | 
					                            obj = JSON.parse(contents, dateTimeDeserializer);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        else {
 | 
				
			||||||
 | 
					                            obj = JSON.parse(contents);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        response.result = obj;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    response.headers = res.message.headers;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                catch (err) {
 | 
				
			||||||
 | 
					                    // Invalid resource (contents not json);  leaving result obj null
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                // note that 3xx redirects are handled by the http layer.
 | 
				
			||||||
 | 
					                if (statusCode > 299) {
 | 
				
			||||||
 | 
					                    let msg;
 | 
				
			||||||
 | 
					                    // if exception/error in body, attempt to get better error
 | 
				
			||||||
 | 
					                    if (obj && obj.message) {
 | 
				
			||||||
 | 
					                        msg = obj.message;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else if (contents && contents.length > 0) {
 | 
				
			||||||
 | 
					                        // it may be the case that the exception is in the body message as string
 | 
				
			||||||
 | 
					                        msg = contents;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else {
 | 
				
			||||||
 | 
					                        msg = `Failed request: (${statusCode})`;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    const err = new HttpClientError(msg, statusCode);
 | 
				
			||||||
 | 
					                    err.result = response.result;
 | 
				
			||||||
 | 
					                    reject(err);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else {
 | 
				
			||||||
 | 
					                    resolve(response);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }));
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					exports.HttpClient = HttpClient;
 | 
				
			||||||
 | 
					const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
 | 
				
			||||||
 | 
					//# sourceMappingURL=index.js.map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***/ }),
 | 
				
			||||||
/* 711 */,
 | 
					/* 711 */,
 | 
				
			||||||
/* 712 */,
 | 
					/* 712 */,
 | 
				
			||||||
/* 713 */,
 | 
					/* 713 */,
 | 
				
			||||||
| 
						 | 
					@ -51800,7 +52565,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
					Object.defineProperty(exports, "__esModule", { value: true });
 | 
				
			||||||
const core = __importStar(__webpack_require__(470));
 | 
					const core = __importStar(__webpack_require__(470));
 | 
				
			||||||
const http_client_1 = __webpack_require__(539);
 | 
					const http_client_1 = __webpack_require__(710);
 | 
				
			||||||
const constants_1 = __webpack_require__(931);
 | 
					const constants_1 = __webpack_require__(931);
 | 
				
			||||||
function isSuccessStatusCode(statusCode) {
 | 
					function isSuccessStatusCode(statusCode) {
 | 
				
			||||||
    if (!statusCode) {
 | 
					    if (!statusCode) {
 | 
				
			||||||
| 
						 | 
					@ -51877,7 +52642,7 @@ function retryTypedResponse(name, method, maxAttempts = constants_1.DefaultRetry
 | 
				
			||||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
					    return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
        return yield retry(name, method, (response) => response.statusCode, maxAttempts, delay, 
 | 
					        return yield retry(name, method, (response) => response.statusCode, maxAttempts, delay, 
 | 
				
			||||||
        // If the error object contains the statusCode property, extract it and return
 | 
					        // If the error object contains the statusCode property, extract it and return
 | 
				
			||||||
        // an ITypedResponse<T> so it can be processed by the retry logic.
 | 
					        // an TypedResponse<T> so it can be processed by the retry logic.
 | 
				
			||||||
        (error) => {
 | 
					        (error) => {
 | 
				
			||||||
            if (error instanceof http_client_1.HttpClientError) {
 | 
					            if (error instanceof http_client_1.HttpClientError) {
 | 
				
			||||||
                return {
 | 
					                return {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										40
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										40
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| 
						 | 
					@ -1,15 +1,15 @@
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  "name": "cache",
 | 
					  "name": "cache",
 | 
				
			||||||
  "version": "3.0.2",
 | 
					  "version": "3.0.3",
 | 
				
			||||||
  "lockfileVersion": 2,
 | 
					  "lockfileVersion": 2,
 | 
				
			||||||
  "requires": true,
 | 
					  "requires": true,
 | 
				
			||||||
  "packages": {
 | 
					  "packages": {
 | 
				
			||||||
    "": {
 | 
					    "": {
 | 
				
			||||||
      "name": "cache",
 | 
					      "name": "cache",
 | 
				
			||||||
      "version": "3.0.2",
 | 
					      "version": "3.0.3",
 | 
				
			||||||
      "license": "MIT",
 | 
					      "license": "MIT",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@actions/cache": "^2.0.2",
 | 
					        "@actions/cache": "^2.0.5",
 | 
				
			||||||
        "@actions/core": "^1.7.0",
 | 
					        "@actions/core": "^1.7.0",
 | 
				
			||||||
        "@actions/exec": "^1.1.1",
 | 
					        "@actions/exec": "^1.1.1",
 | 
				
			||||||
        "@actions/io": "^1.1.2"
 | 
					        "@actions/io": "^1.1.2"
 | 
				
			||||||
| 
						 | 
					@ -36,14 +36,14 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@actions/cache": {
 | 
					    "node_modules/@actions/cache": {
 | 
				
			||||||
      "version": "2.0.2",
 | 
					      "version": "2.0.5",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-2.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-2.0.5.tgz",
 | 
				
			||||||
      "integrity": "sha512-K1DCaW/OtHj5mV7hI7HEXiceX3rM4Nc0iG2hfYsrkEy6GiOeqlCC/LyICrBZIRDM6+vSrS12tg1ORl4hghomBA==",
 | 
					      "integrity": "sha512-aG06dsgcVtiuHLJsIfwrDtvzNNJQ+Iqk8DQt1IeI6gG7ezmLaSdZkHEwA/DNrm5TtOahLcgGEo2SXqbFElVMQg==",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@actions/core": "^1.2.6",
 | 
					        "@actions/core": "^1.2.6",
 | 
				
			||||||
        "@actions/exec": "^1.0.1",
 | 
					        "@actions/exec": "^1.0.1",
 | 
				
			||||||
        "@actions/glob": "^0.1.0",
 | 
					        "@actions/glob": "^0.1.0",
 | 
				
			||||||
        "@actions/http-client": "^1.0.9",
 | 
					        "@actions/http-client": "^2.0.1",
 | 
				
			||||||
        "@actions/io": "^1.0.1",
 | 
					        "@actions/io": "^1.0.1",
 | 
				
			||||||
        "@azure/ms-rest-js": "^2.6.0",
 | 
					        "@azure/ms-rest-js": "^2.6.0",
 | 
				
			||||||
        "@azure/storage-blob": "^12.8.0",
 | 
					        "@azure/storage-blob": "^12.8.0",
 | 
				
			||||||
| 
						 | 
					@ -51,6 +51,14 @@
 | 
				
			||||||
        "uuid": "^3.3.3"
 | 
					        "uuid": "^3.3.3"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/@actions/cache/node_modules/@actions/http-client": {
 | 
				
			||||||
 | 
					      "version": "2.0.1",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "tunnel": "^0.0.6"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "node_modules/@actions/core": {
 | 
					    "node_modules/@actions/core": {
 | 
				
			||||||
      "version": "1.7.0",
 | 
					      "version": "1.7.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.7.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.7.0.tgz",
 | 
				
			||||||
| 
						 | 
					@ -9525,19 +9533,29 @@
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@actions/cache": {
 | 
					    "@actions/cache": {
 | 
				
			||||||
      "version": "2.0.2",
 | 
					      "version": "2.0.5",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-2.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-2.0.5.tgz",
 | 
				
			||||||
      "integrity": "sha512-K1DCaW/OtHj5mV7hI7HEXiceX3rM4Nc0iG2hfYsrkEy6GiOeqlCC/LyICrBZIRDM6+vSrS12tg1ORl4hghomBA==",
 | 
					      "integrity": "sha512-aG06dsgcVtiuHLJsIfwrDtvzNNJQ+Iqk8DQt1IeI6gG7ezmLaSdZkHEwA/DNrm5TtOahLcgGEo2SXqbFElVMQg==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@actions/core": "^1.2.6",
 | 
					        "@actions/core": "^1.2.6",
 | 
				
			||||||
        "@actions/exec": "^1.0.1",
 | 
					        "@actions/exec": "^1.0.1",
 | 
				
			||||||
        "@actions/glob": "^0.1.0",
 | 
					        "@actions/glob": "^0.1.0",
 | 
				
			||||||
        "@actions/http-client": "^1.0.9",
 | 
					        "@actions/http-client": "^2.0.1",
 | 
				
			||||||
        "@actions/io": "^1.0.1",
 | 
					        "@actions/io": "^1.0.1",
 | 
				
			||||||
        "@azure/ms-rest-js": "^2.6.0",
 | 
					        "@azure/ms-rest-js": "^2.6.0",
 | 
				
			||||||
        "@azure/storage-blob": "^12.8.0",
 | 
					        "@azure/storage-blob": "^12.8.0",
 | 
				
			||||||
        "semver": "^6.1.0",
 | 
					        "semver": "^6.1.0",
 | 
				
			||||||
        "uuid": "^3.3.3"
 | 
					        "uuid": "^3.3.3"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "@actions/http-client": {
 | 
				
			||||||
 | 
					          "version": "2.0.1",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
 | 
				
			||||||
 | 
					          "requires": {
 | 
				
			||||||
 | 
					            "tunnel": "^0.0.6"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@actions/core": {
 | 
					    "@actions/core": {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  "name": "cache",
 | 
					  "name": "cache",
 | 
				
			||||||
  "version": "3.0.2",
 | 
					  "version": "3.0.3",
 | 
				
			||||||
  "private": true,
 | 
					  "private": true,
 | 
				
			||||||
  "description": "Cache dependencies and build outputs",
 | 
					  "description": "Cache dependencies and build outputs",
 | 
				
			||||||
  "main": "dist/restore/index.js",
 | 
					  "main": "dist/restore/index.js",
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@
 | 
				
			||||||
  "author": "GitHub",
 | 
					  "author": "GitHub",
 | 
				
			||||||
  "license": "MIT",
 | 
					  "license": "MIT",
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@actions/cache": "^2.0.2",
 | 
					    "@actions/cache": "^2.0.5",
 | 
				
			||||||
    "@actions/core": "^1.7.0",
 | 
					    "@actions/core": "^1.7.0",
 | 
				
			||||||
    "@actions/exec": "^1.1.1",
 | 
					    "@actions/exec": "^1.1.1",
 | 
				
			||||||
    "@actions/io": "^1.1.2"
 | 
					    "@actions/io": "^1.1.2"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user