mirror of
				https://git.mirrors.martin98.com/https://github.com/actions/setup-python
				synced 2025-10-31 13:41:06 +08:00 
			
		
		
		
	Rebuild action
This commit is contained in:
		
							parent
							
								
									161c3a68f0
								
							
						
					
					
						commit
						08116500d0
					
				
							
								
								
									
										827
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										827
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							| @ -90,18 +90,17 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { | |||||||
|             checkKey(key); |             checkKey(key); | ||||||
|         } |         } | ||||||
|         const compressionMethod = yield utils.getCompressionMethod(); |         const compressionMethod = yield utils.getCompressionMethod(); | ||||||
|         let archivePath = ''; |         // path are needed to compute version
 | ||||||
|  |         const cacheEntry = yield cacheHttpClient.getCacheEntry(keys, paths, { | ||||||
|  |             compressionMethod | ||||||
|  |         }); | ||||||
|  |         if (!(cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.archiveLocation)) { | ||||||
|  |             // Cache not found
 | ||||||
|  |             return undefined; | ||||||
|  |         } | ||||||
|  |         const archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod)); | ||||||
|  |         core.debug(`Archive Path: ${archivePath}`); | ||||||
|         try { |         try { | ||||||
|             // path are needed to compute version
 |  | ||||||
|             const cacheEntry = yield cacheHttpClient.getCacheEntry(keys, paths, { |  | ||||||
|                 compressionMethod |  | ||||||
|             }); |  | ||||||
|             if (!(cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.archiveLocation)) { |  | ||||||
|                 // Cache not found
 |  | ||||||
|                 return undefined; |  | ||||||
|             } |  | ||||||
|             archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod)); |  | ||||||
|             core.debug(`Archive Path: ${archivePath}`); |  | ||||||
|             // Download the cache from the cache entry
 |             // Download the cache from the cache entry
 | ||||||
|             yield cacheHttpClient.downloadCache(cacheEntry.archiveLocation, archivePath, options); |             yield cacheHttpClient.downloadCache(cacheEntry.archiveLocation, archivePath, options); | ||||||
|             if (core.isDebug()) { |             if (core.isDebug()) { | ||||||
| @ -111,17 +110,6 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { | |||||||
|             core.info(`Cache Size: ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B)`); |             core.info(`Cache Size: ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B)`); | ||||||
|             yield tar_1.extractTar(archivePath, compressionMethod); |             yield tar_1.extractTar(archivePath, compressionMethod); | ||||||
|             core.info('Cache restored successfully'); |             core.info('Cache restored successfully'); | ||||||
|             return cacheEntry.cacheKey; |  | ||||||
|         } |  | ||||||
|         catch (error) { |  | ||||||
|             const typedError = error; |  | ||||||
|             if (typedError.name === ValidationError.name) { |  | ||||||
|                 throw error; |  | ||||||
|             } |  | ||||||
|             else { |  | ||||||
|                 // Supress all non-validation cache related errors because caching should be optional
 |  | ||||||
|                 core.warning(`Failed to restore: ${error.message}`); |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|         finally { |         finally { | ||||||
|             // Try to delete the archive to save space
 |             // Try to delete the archive to save space
 | ||||||
| @ -132,7 +120,7 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { | |||||||
|                 core.debug(`Failed to delete archive: ${error}`); |                 core.debug(`Failed to delete archive: ${error}`); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         return undefined; |         return cacheEntry.cacheKey; | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| exports.restoreCache = restoreCache; | exports.restoreCache = restoreCache; | ||||||
| @ -150,13 +138,10 @@ function saveCache(paths, key, options) { | |||||||
|         checkPaths(paths); |         checkPaths(paths); | ||||||
|         checkKey(key); |         checkKey(key); | ||||||
|         const compressionMethod = yield utils.getCompressionMethod(); |         const compressionMethod = yield utils.getCompressionMethod(); | ||||||
|         let cacheId = -1; |         let cacheId = null; | ||||||
|         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}`); | ||||||
| @ -189,18 +174,6 @@ function saveCache(paths, key, options) { | |||||||
|             core.debug(`Saving Cache (ID: ${cacheId})`); |             core.debug(`Saving Cache (ID: ${cacheId})`); | ||||||
|             yield cacheHttpClient.saveCache(cacheId, archivePath, options); |             yield cacheHttpClient.saveCache(cacheId, archivePath, options); | ||||||
|         } |         } | ||||||
|         catch (error) { |  | ||||||
|             const typedError = error; |  | ||||||
|             if (typedError.name === ValidationError.name) { |  | ||||||
|                 throw error; |  | ||||||
|             } |  | ||||||
|             else if (typedError.name === ReserveCacheError.name) { |  | ||||||
|                 core.info(`Failed to save: ${typedError.message}`); |  | ||||||
|             } |  | ||||||
|             else { |  | ||||||
|                 core.warning(`Failed to save: ${typedError.message}`); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         finally { |         finally { | ||||||
|             // Try to delete the archive to save space
 |             // Try to delete the archive to save space
 | ||||||
|             try { |             try { | ||||||
| @ -674,7 +647,7 @@ var __importStar = (this && this.__importStar) || function (mod) { | |||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||||
| const core = __importStar(__nccwpck_require__(2186)); | const core = __importStar(__nccwpck_require__(2186)); | ||||||
| const http_client_1 = __nccwpck_require__(1825); | const http_client_1 = __nccwpck_require__(9925); | ||||||
| const storage_blob_1 = __nccwpck_require__(4100); | const storage_blob_1 = __nccwpck_require__(4100); | ||||||
| const buffer = __importStar(__nccwpck_require__(4300)); | const buffer = __importStar(__nccwpck_require__(4300)); | ||||||
| const fs = __importStar(__nccwpck_require__(7147)); | const fs = __importStar(__nccwpck_require__(7147)); | ||||||
| @ -912,7 +885,7 @@ var __importStar = (this && this.__importStar) || function (mod) { | |||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||||
| const core = __importStar(__nccwpck_require__(2186)); | const core = __importStar(__nccwpck_require__(2186)); | ||||||
| const http_client_1 = __nccwpck_require__(1825); | const http_client_1 = __nccwpck_require__(9925); | ||||||
| const constants_1 = __nccwpck_require__(8840); | const constants_1 = __nccwpck_require__(8840); | ||||||
| function isSuccessStatusCode(statusCode) { | function isSuccessStatusCode(statusCode) { | ||||||
|     if (!statusCode) { |     if (!statusCode) { | ||||||
| @ -989,7 +962,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 TypedResponse<T> so it can be processed by the retry logic.
 |         // an ITypedResponse<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 { | ||||||
| @ -1147,8 +1120,6 @@ function createTar(archiveFolder, sourceDirectories, compressionMethod) { | |||||||
|             ...getCompressionProgram(), |             ...getCompressionProgram(), | ||||||
|             '-cf', |             '-cf', | ||||||
|             cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), |             cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), | ||||||
|             '--exclude', |  | ||||||
|             cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), |  | ||||||
|             '-P', |             '-P', | ||||||
|             '-C', |             '-C', | ||||||
|             workingDirectory.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), |             workingDirectory.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), | ||||||
| @ -2321,774 +2292,6 @@ exports.SearchState = SearchState; | |||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 2001: |  | ||||||
| /***/ (function(__unused_webpack_module, 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
 |  | ||||||
| 
 |  | ||||||
| /***/ }), |  | ||||||
| 
 |  | ||||||
| /***/ 1825: |  | ||||||
| /***/ (function(__unused_webpack_module, exports, __nccwpck_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(__nccwpck_require__(3685)); |  | ||||||
| const https = __importStar(__nccwpck_require__(5687)); |  | ||||||
| const pm = __importStar(__nccwpck_require__(4977)); |  | ||||||
| const tunnel = __importStar(__nccwpck_require__(4294)); |  | ||||||
| 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
 |  | ||||||
| 
 |  | ||||||
| /***/ }), |  | ||||||
| 
 |  | ||||||
| /***/ 4977: |  | ||||||
| /***/ ((__unused_webpack_module, 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
 |  | ||||||
| 
 |  | ||||||
| /***/ }), |  | ||||||
| 
 |  | ||||||
| /***/ 3771: | /***/ 3771: | ||||||
| /***/ ((module, exports) => { | /***/ ((module, exports) => { | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										61
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										61
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @ -90,18 +90,17 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { | |||||||
|             checkKey(key); |             checkKey(key); | ||||||
|         } |         } | ||||||
|         const compressionMethod = yield utils.getCompressionMethod(); |         const compressionMethod = yield utils.getCompressionMethod(); | ||||||
|         let archivePath = ''; |         // path are needed to compute version
 | ||||||
|  |         const cacheEntry = yield cacheHttpClient.getCacheEntry(keys, paths, { | ||||||
|  |             compressionMethod | ||||||
|  |         }); | ||||||
|  |         if (!(cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.archiveLocation)) { | ||||||
|  |             // Cache not found
 | ||||||
|  |             return undefined; | ||||||
|  |         } | ||||||
|  |         const archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod)); | ||||||
|  |         core.debug(`Archive Path: ${archivePath}`); | ||||||
|         try { |         try { | ||||||
|             // path are needed to compute version
 |  | ||||||
|             const cacheEntry = yield cacheHttpClient.getCacheEntry(keys, paths, { |  | ||||||
|                 compressionMethod |  | ||||||
|             }); |  | ||||||
|             if (!(cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.archiveLocation)) { |  | ||||||
|                 // Cache not found
 |  | ||||||
|                 return undefined; |  | ||||||
|             } |  | ||||||
|             archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod)); |  | ||||||
|             core.debug(`Archive Path: ${archivePath}`); |  | ||||||
|             // Download the cache from the cache entry
 |             // Download the cache from the cache entry
 | ||||||
|             yield cacheHttpClient.downloadCache(cacheEntry.archiveLocation, archivePath, options); |             yield cacheHttpClient.downloadCache(cacheEntry.archiveLocation, archivePath, options); | ||||||
|             if (core.isDebug()) { |             if (core.isDebug()) { | ||||||
| @ -111,17 +110,6 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { | |||||||
|             core.info(`Cache Size: ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B)`); |             core.info(`Cache Size: ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B)`); | ||||||
|             yield tar_1.extractTar(archivePath, compressionMethod); |             yield tar_1.extractTar(archivePath, compressionMethod); | ||||||
|             core.info('Cache restored successfully'); |             core.info('Cache restored successfully'); | ||||||
|             return cacheEntry.cacheKey; |  | ||||||
|         } |  | ||||||
|         catch (error) { |  | ||||||
|             const typedError = error; |  | ||||||
|             if (typedError.name === ValidationError.name) { |  | ||||||
|                 throw error; |  | ||||||
|             } |  | ||||||
|             else { |  | ||||||
|                 // Supress all non-validation cache related errors because caching should be optional
 |  | ||||||
|                 core.warning(`Failed to restore: ${error.message}`); |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|         finally { |         finally { | ||||||
|             // Try to delete the archive to save space
 |             // Try to delete the archive to save space
 | ||||||
| @ -132,7 +120,7 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { | |||||||
|                 core.debug(`Failed to delete archive: ${error}`); |                 core.debug(`Failed to delete archive: ${error}`); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         return undefined; |         return cacheEntry.cacheKey; | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| exports.restoreCache = restoreCache; | exports.restoreCache = restoreCache; | ||||||
| @ -150,13 +138,10 @@ function saveCache(paths, key, options) { | |||||||
|         checkPaths(paths); |         checkPaths(paths); | ||||||
|         checkKey(key); |         checkKey(key); | ||||||
|         const compressionMethod = yield utils.getCompressionMethod(); |         const compressionMethod = yield utils.getCompressionMethod(); | ||||||
|         let cacheId = -1; |         let cacheId = null; | ||||||
|         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}`); | ||||||
| @ -189,18 +174,6 @@ function saveCache(paths, key, options) { | |||||||
|             core.debug(`Saving Cache (ID: ${cacheId})`); |             core.debug(`Saving Cache (ID: ${cacheId})`); | ||||||
|             yield cacheHttpClient.saveCache(cacheId, archivePath, options); |             yield cacheHttpClient.saveCache(cacheId, archivePath, options); | ||||||
|         } |         } | ||||||
|         catch (error) { |  | ||||||
|             const typedError = error; |  | ||||||
|             if (typedError.name === ValidationError.name) { |  | ||||||
|                 throw error; |  | ||||||
|             } |  | ||||||
|             else if (typedError.name === ReserveCacheError.name) { |  | ||||||
|                 core.info(`Failed to save: ${typedError.message}`); |  | ||||||
|             } |  | ||||||
|             else { |  | ||||||
|                 core.warning(`Failed to save: ${typedError.message}`); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         finally { |         finally { | ||||||
|             // Try to delete the archive to save space
 |             // Try to delete the archive to save space
 | ||||||
|             try { |             try { | ||||||
| @ -241,8 +214,8 @@ var __importStar = (this && this.__importStar) || function (mod) { | |||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||||
| const core = __importStar(__nccwpck_require__(2186)); | const core = __importStar(__nccwpck_require__(2186)); | ||||||
| const http_client_1 = __nccwpck_require__(1825); | const http_client_1 = __nccwpck_require__(9925); | ||||||
| const auth_1 = __nccwpck_require__(2001); | const auth_1 = __nccwpck_require__(3702); | ||||||
| const crypto = __importStar(__nccwpck_require__(6113)); | const crypto = __importStar(__nccwpck_require__(6113)); | ||||||
| const fs = __importStar(__nccwpck_require__(7147)); | const fs = __importStar(__nccwpck_require__(7147)); | ||||||
| const url_1 = __nccwpck_require__(7310); | const url_1 = __nccwpck_require__(7310); | ||||||
| @ -674,7 +647,7 @@ var __importStar = (this && this.__importStar) || function (mod) { | |||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||||
| const core = __importStar(__nccwpck_require__(2186)); | const core = __importStar(__nccwpck_require__(2186)); | ||||||
| const http_client_1 = __nccwpck_require__(1825); | const http_client_1 = __nccwpck_require__(9925); | ||||||
| const storage_blob_1 = __nccwpck_require__(4100); | const storage_blob_1 = __nccwpck_require__(4100); | ||||||
| const buffer = __importStar(__nccwpck_require__(4300)); | const buffer = __importStar(__nccwpck_require__(4300)); | ||||||
| const fs = __importStar(__nccwpck_require__(7147)); | const fs = __importStar(__nccwpck_require__(7147)); | ||||||
| @ -989,7 +962,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 TypedResponse<T> so it can be processed by the retry logic.
 |         // an ITypedResponse<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 { | ||||||
| @ -1147,8 +1120,6 @@ function createTar(archiveFolder, sourceDirectories, compressionMethod) { | |||||||
|             ...getCompressionProgram(), |             ...getCompressionProgram(), | ||||||
|             '-cf', |             '-cf', | ||||||
|             cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), |             cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), | ||||||
|             '--exclude', |  | ||||||
|             cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), |  | ||||||
|             '-P', |             '-P', | ||||||
|             '-C', |             '-C', | ||||||
|             workingDirectory.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), |             workingDirectory.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 IvanZosimov
						IvanZosimov