mirror of
				https://github.com/actions/setup-node.git
				synced 2025-11-04 13:29:12 +08:00 
			
		
		
		
	Merge pull request #526 from IvanZosimov/CacheVersionUpdate
Add support for the @actions/cache library 3.0.0
This commit is contained in:
		
							
								
								
									
										2
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@actions/cache"
 | 
			
		||||
version: 2.0.2
 | 
			
		||||
version: 3.0.0
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Actions cache lib
 | 
			
		||||
homepage: https://github.com/actions/toolkit/tree/main/packages/cache
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								.licenses/npm/@actions/http-client-2.0.1.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/@actions/http-client-2.0.1.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@actions/http-client"
 | 
			
		||||
version: 2.0.1
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Actions Http Client
 | 
			
		||||
homepage: https://github.com/actions/toolkit/tree/main/packages/http-client
 | 
			
		||||
license: mit
 | 
			
		||||
licenses:
 | 
			
		||||
- sources: LICENSE
 | 
			
		||||
  text: |
 | 
			
		||||
    Actions Http Client for Node.js
 | 
			
		||||
 | 
			
		||||
    Copyright (c) GitHub, Inc.
 | 
			
		||||
 | 
			
		||||
    All rights reserved.
 | 
			
		||||
 | 
			
		||||
    MIT License
 | 
			
		||||
 | 
			
		||||
    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
 | 
			
		||||
    associated documentation files (the "Software"), to deal in the Software without restriction,
 | 
			
		||||
    including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
    and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
 | 
			
		||||
    subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
    THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 | 
			
		||||
    LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 | 
			
		||||
    NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 | 
			
		||||
    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 | 
			
		||||
    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
notices: []
 | 
			
		||||
@@ -294,6 +294,63 @@ describe('run', () => {
 | 
			
		||||
      );
 | 
			
		||||
      expect(setFailedSpy).not.toHaveBeenCalled();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('save with -1 cacheId , should not fail workflow', async () => {
 | 
			
		||||
      inputs['cache'] = 'npm';
 | 
			
		||||
      getStateSpy.mockImplementation((name: string) => {
 | 
			
		||||
        if (name === State.CacheMatchedKey) {
 | 
			
		||||
          return npmFileHash;
 | 
			
		||||
        } else {
 | 
			
		||||
          return yarnFileHash;
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
      getCommandOutputSpy.mockImplementationOnce(() => `${commonPath}/npm`);
 | 
			
		||||
      saveCacheSpy.mockImplementation(() => {
 | 
			
		||||
        return -1;
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      await run();
 | 
			
		||||
 | 
			
		||||
      expect(getInputSpy).toHaveBeenCalled();
 | 
			
		||||
      expect(getStateSpy).toHaveBeenCalledTimes(2);
 | 
			
		||||
      expect(getCommandOutputSpy).toHaveBeenCalledTimes(1);
 | 
			
		||||
      expect(debugSpy).toHaveBeenCalledWith(`npm path is ${commonPath}/npm`);
 | 
			
		||||
      expect(infoSpy).not.toHaveBeenCalledWith(
 | 
			
		||||
        `Cache hit occurred on the primary key ${npmFileHash}, not saving cache.`
 | 
			
		||||
      );
 | 
			
		||||
      expect(saveCacheSpy).toHaveBeenCalled();
 | 
			
		||||
      expect(infoSpy).not.toHaveBeenLastCalledWith(
 | 
			
		||||
        `Cache saved with the key: ${yarnFileHash}`
 | 
			
		||||
      );
 | 
			
		||||
      expect(setFailedSpy).not.toHaveBeenCalled();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('saves with error from toolkit, should fail workflow', async () => {
 | 
			
		||||
      inputs['cache'] = 'npm';
 | 
			
		||||
      getStateSpy.mockImplementation((name: string) => {
 | 
			
		||||
        if (name === State.CacheMatchedKey) {
 | 
			
		||||
          return npmFileHash;
 | 
			
		||||
        } else {
 | 
			
		||||
          return yarnFileHash;
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
      getCommandOutputSpy.mockImplementationOnce(() => `${commonPath}/npm`);
 | 
			
		||||
      saveCacheSpy.mockImplementation(() => {
 | 
			
		||||
        throw new cache.ValidationError('Validation failed');
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      await run();
 | 
			
		||||
 | 
			
		||||
      expect(getInputSpy).toHaveBeenCalled();
 | 
			
		||||
      expect(getStateSpy).toHaveBeenCalledTimes(2);
 | 
			
		||||
      expect(getCommandOutputSpy).toHaveBeenCalledTimes(1);
 | 
			
		||||
      expect(debugSpy).toHaveBeenCalledWith(`npm path is ${commonPath}/npm`);
 | 
			
		||||
      expect(infoSpy).not.toHaveBeenCalledWith(
 | 
			
		||||
        `Cache hit occurred on the primary key ${npmFileHash}, not saving cache.`
 | 
			
		||||
      );
 | 
			
		||||
      expect(saveCacheSpy).toHaveBeenCalled();
 | 
			
		||||
      expect(setFailedSpy).toHaveBeenCalled();
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  afterEach(() => {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										833
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										833
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							@@ -90,6 +90,8 @@ function restoreCache(paths, primaryKey, restoreKeys, options) {
 | 
			
		||||
            checkKey(key);
 | 
			
		||||
        }
 | 
			
		||||
        const compressionMethod = yield utils.getCompressionMethod();
 | 
			
		||||
        let archivePath = '';
 | 
			
		||||
        try {
 | 
			
		||||
            // path are needed to compute version
 | 
			
		||||
            const cacheEntry = yield cacheHttpClient.getCacheEntry(keys, paths, {
 | 
			
		||||
                compressionMethod
 | 
			
		||||
@@ -98,9 +100,8 @@ function restoreCache(paths, primaryKey, restoreKeys, options) {
 | 
			
		||||
                // Cache not found
 | 
			
		||||
                return undefined;
 | 
			
		||||
            }
 | 
			
		||||
        const archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod));
 | 
			
		||||
            archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod));
 | 
			
		||||
            core.debug(`Archive Path: ${archivePath}`);
 | 
			
		||||
        try {
 | 
			
		||||
            // Download the cache from the cache entry
 | 
			
		||||
            yield cacheHttpClient.downloadCache(cacheEntry.archiveLocation, archivePath, options);
 | 
			
		||||
            if (core.isDebug()) {
 | 
			
		||||
@@ -110,6 +111,17 @@ function restoreCache(paths, primaryKey, restoreKeys, options) {
 | 
			
		||||
            core.info(`Cache Size: ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B)`);
 | 
			
		||||
            yield tar_1.extractTar(archivePath, compressionMethod);
 | 
			
		||||
            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 {
 | 
			
		||||
            // Try to delete the archive to save space
 | 
			
		||||
@@ -120,7 +132,7 @@ function restoreCache(paths, primaryKey, restoreKeys, options) {
 | 
			
		||||
                core.debug(`Failed to delete archive: ${error}`);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return cacheEntry.cacheKey;
 | 
			
		||||
        return undefined;
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.restoreCache = restoreCache;
 | 
			
		||||
@@ -138,10 +150,13 @@ function saveCache(paths, key, options) {
 | 
			
		||||
        checkPaths(paths);
 | 
			
		||||
        checkKey(key);
 | 
			
		||||
        const compressionMethod = yield utils.getCompressionMethod();
 | 
			
		||||
        let cacheId = null;
 | 
			
		||||
        let cacheId = -1;
 | 
			
		||||
        const cachePaths = yield utils.resolvePaths(paths);
 | 
			
		||||
        core.debug('Cache Paths:');
 | 
			
		||||
        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 archivePath = path.join(archiveFolder, utils.getCacheFileName(compressionMethod));
 | 
			
		||||
        core.debug(`Archive Path: ${archivePath}`);
 | 
			
		||||
@@ -174,6 +189,18 @@ function saveCache(paths, key, options) {
 | 
			
		||||
            core.debug(`Saving Cache (ID: ${cacheId})`);
 | 
			
		||||
            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 {
 | 
			
		||||
            // Try to delete the archive to save space
 | 
			
		||||
            try {
 | 
			
		||||
@@ -214,8 +241,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
 | 
			
		||||
const core = __importStar(__nccwpck_require__(2186));
 | 
			
		||||
const http_client_1 = __nccwpck_require__(9925);
 | 
			
		||||
const auth_1 = __nccwpck_require__(3702);
 | 
			
		||||
const http_client_1 = __nccwpck_require__(1825);
 | 
			
		||||
const auth_1 = __nccwpck_require__(2001);
 | 
			
		||||
const crypto = __importStar(__nccwpck_require__(6113));
 | 
			
		||||
const fs = __importStar(__nccwpck_require__(7147));
 | 
			
		||||
const url_1 = __nccwpck_require__(7310);
 | 
			
		||||
@@ -647,7 +674,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
 | 
			
		||||
const core = __importStar(__nccwpck_require__(2186));
 | 
			
		||||
const http_client_1 = __nccwpck_require__(9925);
 | 
			
		||||
const http_client_1 = __nccwpck_require__(1825);
 | 
			
		||||
const storage_blob_1 = __nccwpck_require__(4100);
 | 
			
		||||
const buffer = __importStar(__nccwpck_require__(4300));
 | 
			
		||||
const fs = __importStar(__nccwpck_require__(7147));
 | 
			
		||||
@@ -885,7 +912,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
 | 
			
		||||
const core = __importStar(__nccwpck_require__(2186));
 | 
			
		||||
const http_client_1 = __nccwpck_require__(9925);
 | 
			
		||||
const http_client_1 = __nccwpck_require__(1825);
 | 
			
		||||
const constants_1 = __nccwpck_require__(8840);
 | 
			
		||||
function isSuccessStatusCode(statusCode) {
 | 
			
		||||
    if (!statusCode) {
 | 
			
		||||
@@ -962,7 +989,7 @@ function retryTypedResponse(name, method, maxAttempts = constants_1.DefaultRetry
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        return yield retry(name, method, (response) => response.statusCode, maxAttempts, delay, 
 | 
			
		||||
        // 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) => {
 | 
			
		||||
            if (error instanceof http_client_1.HttpClientError) {
 | 
			
		||||
                return {
 | 
			
		||||
@@ -1120,6 +1147,8 @@ function createTar(archiveFolder, sourceDirectories, compressionMethod) {
 | 
			
		||||
            ...getCompressionProgram(),
 | 
			
		||||
            '-cf',
 | 
			
		||||
            cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
 | 
			
		||||
            '--exclude',
 | 
			
		||||
            cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
 | 
			
		||||
            '-P',
 | 
			
		||||
            '-C',
 | 
			
		||||
            workingDirectory.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
 | 
			
		||||
@@ -2292,6 +2321,774 @@ 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
 | 
			
		||||
 | 
			
		||||
/***/ }),
 | 
			
		||||
 | 
			
		||||
/***/ 4138:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
@@ -59091,21 +59888,11 @@ const cachePackages = (packageManager) => __awaiter(void 0, void 0, void 0, func
 | 
			
		||||
        core.info(`Cache hit occurred on the primary key ${primaryKey}, not saving cache.`);
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    try {
 | 
			
		||||
        yield cache.saveCache([cachePath], primaryKey);
 | 
			
		||||
    const cacheId = yield cache.saveCache([cachePath], primaryKey);
 | 
			
		||||
    if (cacheId == -1) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    core.info(`Cache saved with the key: ${primaryKey}`);
 | 
			
		||||
    }
 | 
			
		||||
    catch (error) {
 | 
			
		||||
        if (error.name === cache.ValidationError.name) {
 | 
			
		||||
            throw error;
 | 
			
		||||
        }
 | 
			
		||||
        else if (error.name === cache.ReserveCacheError.name) {
 | 
			
		||||
            core.info(error.message);
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            core.warning(`${error.message}`);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
run();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										815
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										815
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							@@ -90,6 +90,8 @@ function restoreCache(paths, primaryKey, restoreKeys, options) {
 | 
			
		||||
            checkKey(key);
 | 
			
		||||
        }
 | 
			
		||||
        const compressionMethod = yield utils.getCompressionMethod();
 | 
			
		||||
        let archivePath = '';
 | 
			
		||||
        try {
 | 
			
		||||
            // path are needed to compute version
 | 
			
		||||
            const cacheEntry = yield cacheHttpClient.getCacheEntry(keys, paths, {
 | 
			
		||||
                compressionMethod
 | 
			
		||||
@@ -98,9 +100,8 @@ function restoreCache(paths, primaryKey, restoreKeys, options) {
 | 
			
		||||
                // Cache not found
 | 
			
		||||
                return undefined;
 | 
			
		||||
            }
 | 
			
		||||
        const archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod));
 | 
			
		||||
            archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod));
 | 
			
		||||
            core.debug(`Archive Path: ${archivePath}`);
 | 
			
		||||
        try {
 | 
			
		||||
            // Download the cache from the cache entry
 | 
			
		||||
            yield cacheHttpClient.downloadCache(cacheEntry.archiveLocation, archivePath, options);
 | 
			
		||||
            if (core.isDebug()) {
 | 
			
		||||
@@ -110,6 +111,17 @@ function restoreCache(paths, primaryKey, restoreKeys, options) {
 | 
			
		||||
            core.info(`Cache Size: ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B)`);
 | 
			
		||||
            yield tar_1.extractTar(archivePath, compressionMethod);
 | 
			
		||||
            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 {
 | 
			
		||||
            // Try to delete the archive to save space
 | 
			
		||||
@@ -120,7 +132,7 @@ function restoreCache(paths, primaryKey, restoreKeys, options) {
 | 
			
		||||
                core.debug(`Failed to delete archive: ${error}`);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return cacheEntry.cacheKey;
 | 
			
		||||
        return undefined;
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.restoreCache = restoreCache;
 | 
			
		||||
@@ -138,10 +150,13 @@ function saveCache(paths, key, options) {
 | 
			
		||||
        checkPaths(paths);
 | 
			
		||||
        checkKey(key);
 | 
			
		||||
        const compressionMethod = yield utils.getCompressionMethod();
 | 
			
		||||
        let cacheId = null;
 | 
			
		||||
        let cacheId = -1;
 | 
			
		||||
        const cachePaths = yield utils.resolvePaths(paths);
 | 
			
		||||
        core.debug('Cache Paths:');
 | 
			
		||||
        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 archivePath = path.join(archiveFolder, utils.getCacheFileName(compressionMethod));
 | 
			
		||||
        core.debug(`Archive Path: ${archivePath}`);
 | 
			
		||||
@@ -174,6 +189,18 @@ function saveCache(paths, key, options) {
 | 
			
		||||
            core.debug(`Saving Cache (ID: ${cacheId})`);
 | 
			
		||||
            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 {
 | 
			
		||||
            // Try to delete the archive to save space
 | 
			
		||||
            try {
 | 
			
		||||
@@ -214,8 +241,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
 | 
			
		||||
const core = __importStar(__nccwpck_require__(2186));
 | 
			
		||||
const http_client_1 = __nccwpck_require__(9925);
 | 
			
		||||
const auth_1 = __nccwpck_require__(3702);
 | 
			
		||||
const http_client_1 = __nccwpck_require__(1825);
 | 
			
		||||
const auth_1 = __nccwpck_require__(5936);
 | 
			
		||||
const crypto = __importStar(__nccwpck_require__(6113));
 | 
			
		||||
const fs = __importStar(__nccwpck_require__(7147));
 | 
			
		||||
const url_1 = __nccwpck_require__(7310);
 | 
			
		||||
@@ -647,7 +674,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
 | 
			
		||||
const core = __importStar(__nccwpck_require__(2186));
 | 
			
		||||
const http_client_1 = __nccwpck_require__(9925);
 | 
			
		||||
const http_client_1 = __nccwpck_require__(1825);
 | 
			
		||||
const storage_blob_1 = __nccwpck_require__(4100);
 | 
			
		||||
const buffer = __importStar(__nccwpck_require__(4300));
 | 
			
		||||
const fs = __importStar(__nccwpck_require__(7147));
 | 
			
		||||
@@ -885,7 +912,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
 | 
			
		||||
const core = __importStar(__nccwpck_require__(2186));
 | 
			
		||||
const http_client_1 = __nccwpck_require__(9925);
 | 
			
		||||
const http_client_1 = __nccwpck_require__(1825);
 | 
			
		||||
const constants_1 = __nccwpck_require__(8840);
 | 
			
		||||
function isSuccessStatusCode(statusCode) {
 | 
			
		||||
    if (!statusCode) {
 | 
			
		||||
@@ -962,7 +989,7 @@ function retryTypedResponse(name, method, maxAttempts = constants_1.DefaultRetry
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        return yield retry(name, method, (response) => response.statusCode, maxAttempts, delay, 
 | 
			
		||||
        // 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) => {
 | 
			
		||||
            if (error instanceof http_client_1.HttpClientError) {
 | 
			
		||||
                return {
 | 
			
		||||
@@ -1120,6 +1147,8 @@ function createTar(archiveFolder, sourceDirectories, compressionMethod) {
 | 
			
		||||
            ...getCompressionProgram(),
 | 
			
		||||
            '-cf',
 | 
			
		||||
            cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
 | 
			
		||||
            '--exclude',
 | 
			
		||||
            cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
 | 
			
		||||
            '-P',
 | 
			
		||||
            '-C',
 | 
			
		||||
            workingDirectory.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
 | 
			
		||||
@@ -2292,6 +2321,774 @@ exports.SearchState = SearchState;
 | 
			
		||||
 | 
			
		||||
/***/ }),
 | 
			
		||||
 | 
			
		||||
/***/ 5936:
 | 
			
		||||
/***/ (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
 | 
			
		||||
 | 
			
		||||
/***/ }),
 | 
			
		||||
 | 
			
		||||
/***/ 4138:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										34
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										34
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -9,7 +9,7 @@
 | 
			
		||||
      "version": "3.1.1",
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@actions/cache": "^2.0.2",
 | 
			
		||||
        "@actions/cache": "^3.0.0",
 | 
			
		||||
        "@actions/core": "^1.6.0",
 | 
			
		||||
        "@actions/exec": "^1.1.0",
 | 
			
		||||
        "@actions/github": "^1.1.0",
 | 
			
		||||
@@ -32,14 +32,14 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@actions/cache": {
 | 
			
		||||
      "version": "2.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-2.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-K1DCaW/OtHj5mV7hI7HEXiceX3rM4Nc0iG2hfYsrkEy6GiOeqlCC/LyICrBZIRDM6+vSrS12tg1ORl4hghomBA==",
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-GL9CT1Fnu+pqs8TTB621q8Xa8Cilw2n9MwvbgMedetH7L1q2n6jY61gzbwGbKgtVbp3gVJ12aNMi4osSGXx3KQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@actions/core": "^1.2.6",
 | 
			
		||||
        "@actions/exec": "^1.0.1",
 | 
			
		||||
        "@actions/glob": "^0.1.0",
 | 
			
		||||
        "@actions/http-client": "^1.0.9",
 | 
			
		||||
        "@actions/http-client": "^2.0.1",
 | 
			
		||||
        "@actions/io": "^1.0.1",
 | 
			
		||||
        "@azure/ms-rest-js": "^2.6.0",
 | 
			
		||||
        "@azure/storage-blob": "^12.8.0",
 | 
			
		||||
@@ -56,6 +56,14 @@
 | 
			
		||||
        "minimatch": "^3.0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "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/cache/node_modules/uuid": {
 | 
			
		||||
      "version": "3.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
 | 
			
		||||
@@ -5079,14 +5087,14 @@
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@actions/cache": {
 | 
			
		||||
      "version": "2.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-2.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-K1DCaW/OtHj5mV7hI7HEXiceX3rM4Nc0iG2hfYsrkEy6GiOeqlCC/LyICrBZIRDM6+vSrS12tg1ORl4hghomBA==",
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-3.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-GL9CT1Fnu+pqs8TTB621q8Xa8Cilw2n9MwvbgMedetH7L1q2n6jY61gzbwGbKgtVbp3gVJ12aNMi4osSGXx3KQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@actions/core": "^1.2.6",
 | 
			
		||||
        "@actions/exec": "^1.0.1",
 | 
			
		||||
        "@actions/glob": "^0.1.0",
 | 
			
		||||
        "@actions/http-client": "^1.0.9",
 | 
			
		||||
        "@actions/http-client": "^2.0.1",
 | 
			
		||||
        "@actions/io": "^1.0.1",
 | 
			
		||||
        "@azure/ms-rest-js": "^2.6.0",
 | 
			
		||||
        "@azure/storage-blob": "^12.8.0",
 | 
			
		||||
@@ -5103,6 +5111,14 @@
 | 
			
		||||
            "minimatch": "^3.0.4"
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "@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"
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "uuid": {
 | 
			
		||||
          "version": "3.4.0",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
    "build": "ncc build -o dist/setup src/setup-node.ts && ncc build -o dist/cache-save src/cache-save.ts",
 | 
			
		||||
    "format": "prettier --write **/*.ts",
 | 
			
		||||
    "format-check": "prettier --check **/*.ts",
 | 
			
		||||
    "test": "jest",
 | 
			
		||||
    "test": "jest --coverage",
 | 
			
		||||
    "pre-checkin": "npm run format && npm run build && npm test"
 | 
			
		||||
  },
 | 
			
		||||
  "repository": {
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
  "author": "GitHub",
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@actions/cache": "^2.0.2",
 | 
			
		||||
    "@actions/cache": "^3.0.0",
 | 
			
		||||
    "@actions/core": "^1.6.0",
 | 
			
		||||
    "@actions/exec": "^1.1.0",
 | 
			
		||||
    "@actions/github": "^1.1.0",
 | 
			
		||||
 
 | 
			
		||||
@@ -49,18 +49,12 @@ const cachePackages = async (packageManager: string) => {
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  try {
 | 
			
		||||
    await cache.saveCache([cachePath], primaryKey);
 | 
			
		||||
  const cacheId = await cache.saveCache([cachePath], primaryKey);
 | 
			
		||||
  if (cacheId == -1) {
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  core.info(`Cache saved with the key: ${primaryKey}`);
 | 
			
		||||
  } catch (error) {
 | 
			
		||||
    if (error.name === cache.ValidationError.name) {
 | 
			
		||||
      throw error;
 | 
			
		||||
    } else if (error.name === cache.ReserveCacheError.name) {
 | 
			
		||||
      core.info(error.message);
 | 
			
		||||
    } else {
 | 
			
		||||
      core.warning(`${error.message}`);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
run();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user